diff -Nru crash-5.1.6/.rh_rpm_package crash-6.1.6/.rh_rpm_package --- crash-5.1.6/.rh_rpm_package 2011-06-07 14:38:07.000000000 +0000 +++ crash-6.1.6/.rh_rpm_package 2013-04-04 14:41:43.000000000 +0000 @@ -1 +1 @@ -5.1.6 +6.1.6 diff -Nru crash-5.1.6/=unpacked-tar1=/ChangeLog crash-6.1.6/=unpacked-tar1=/ChangeLog --- crash-5.1.6/=unpacked-tar1=/ChangeLog 2009-09-16 00:45:55.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/ChangeLog 2011-08-19 15:51:10.000000000 +0000 @@ -1,3 +1,1038 @@ +2011-08-19 Joel Brobecker + + * src-release (GDB_SUPPORT_DIRS): Add 'cpu'. + +2011-05-17 Joseph Myers + + * configure.ac (avr-*-*): Add comment about why libssp is disabled. + (microblaze*): Don't disable libssp. + * configure: Regenerate. + +2011-05-17 Joseph Myers + + * configure.ac: Remove code setting CONFIG_SHELL, config_shell and + moveifchange. + * configure: Regenerate. + * Makefile.tpl: Use @SHELL@ not @config_shell@. + * Makefile.in: Regenerate. + +2011-05-17 Joseph Myers + + * configure.ac (*-*-sysv4*): Don't enable libgomp. + (alpha*-*-*vms*, i[[34567]]86-*-sco3.2v5*, mn10300-*-*, + powerpc-*-chorusos*, powerpc*-*-eabi*, powerpc*-*-sysv*, + powerpc*-*-kaos*, s390x-ibm-tpf*, sparc64-*-elf*, v850*-*-*, + xtensa*-*-elf*, *-*-beos*, *-*-elf*, *-*-netware*, *-*-rtems*, + *-*-sysv[[45]]*, *-*-vxworks*, *-wrs-windiss): Remove + md_exec_prefix cases. + * configure: Regenerate. + +2011-05-17 Joseph Myers + + * configure.ac: Separate cases disabling target-libssp, + target-libiberty, target-libstdc++-v3 and Fortran from general + case over targets. + * configure: Regenerate. + +2011-05-17 Joseph Myers + + * configure.ac (*-*-chorusos): Don't disable libgcj. + (*-*-freebsd[[12]] | *-*-freebsd[[12]].* | *-*-freebsd*aout*): + Remove case. + (*-*-kaos*): Don't disable GCC libraries, zlib or fastjar. + (arm-*-coff): Don't disable libgcj. + (arm*-*-linux-gnueabi): Remove useless assignment. + (arm-*-riscix*): Don't disable libgcj. + (bfin-*-*): Don't enable target-bsp and target-cygmon depending on + configuration. + (c4x-*-* | tic4x-*-*): Don't disable GCC libraries. + (c54x*-*-*): Remove case. + (tic54x-*-*): Don't disable GCC or GCC libraries. + (cris-*-* | crisv32-*-*): Don't handle *-*-aout. Change *-*-elf + to *. + (d10v-*-*): Don't disable GCC libraries. + (d30v-*-*): Don't disable libgcj. + (h8500-*-*): Don't disable GCC libraries. + (i960-*-*): Don't disable libgcj. + (i[[3456789]]86-*-linux*): Don't handle *-*-*libc1*. + (i[[3456789]]86-*-sco3.2v5*, i[[3456789]]86-*-sco*, + i[[3456789]]86-*-sysv4*, i[[3456789]]86-*-beos*): Don't disable + libgcj. + (m68k-*-coff*): Remove case. + (mmix-*-*): Don't disable libgloss on host. + (mn10200-*-*, mn10300-*-*): Remove cases. + (powerpc*-*-winnt* | powerpc*-*-pe*, powerpcle-*-solaris*, + powerpc-*-beos*, m68k-apollo-*, mips*-*-irix5*, mips*-*-bsd*): + Don't disable libgcj. + (romp-*-*): Remove case. + (sparclite-*-*, sparc-*-sunos4*): Don't disable libgcj. + (sparc-*-solaris2.[[0-6]] | sparc-*-solaris2.[[0-6]].*): Remove + case. + (v810-*-*): Don't disable GCC libraries. + (v850*-*-*, vax-*-vms, xtensa*-*-*): Remove cases. + (ip2k-*-*): Don't disable GCC libraries. + * configure: Regenerate. + +2011-03-28 Joseph Myers + + * configure.ac (i[[3456789]]86-*-msdosdjgpp*): Don't disable + libffi on host. + (x86_64-*-mingw*, i[[3456789]]86-*-mingw32*): Don't disable newlib + on host. + (c54x*-*-* | tic54x-*-*): Don't disable newlib on host. + * configure: Regenerate. + +2011-03-26 John Marino + + * configure.ac: Add support for *-*-dragonfly* + * configure: Regenerate. + +2011-03-25 Joseph Myers + + * configure.ac (native_only): Remove. + (i[[3456789]]86-*-msdosdjgpp*): Don't disable expect dejagnu + send-pr uudecode guile gnuserv on host. + (x86_64-*-mingw*): Don't disable expect dejagnu autoconf automake + send-pr rcs guile perl texinfo libtool on host. + (i[[3456789]]86-*-mingw32*): Don't disable expect dejagnu autoconf + automake send-pr rcs guile perl texinfo libtool on host. + (*-*-cygwin*, *-*-netbsd*): Remove host cases. + (*-*-kaos*): Don't disable target-examples target-gperf on target. + (alpha*-dec-osf*): Don't disable fileutils on target. + (sh*-*-pe|mips*-*-pe|*arm-wince-pe): Don't disable target-examples + texinfo send-pr expect dejagnu on target. + (arm-*-elf* | arm*-*-eabi*, arm*-*-linux-gnueabi): Don't disable + target-qthreads on target. + (hppa*-hp-hpux11*, hppa*-*-*): Don't disable shellutils on target. + (ia64*-*-elf*, ia64*-*-*vms*): Don't disable mmalloc on target. + (i[[3456789]]86-w64-mingw*, i[[3456789]]86-*-mingw*, + x86_64-*-mingw*): Don't disable expect on target. + (*-*-cygwin*): Don't disable target-gperf on target. + (powerpc*-*-winnt* | powerpc*-*-pe*): Don't disable make expect + gnuserv on target. + (powerpcle-*-solaris*): Don't disable make expect gnuserv on + target. + * configure: Regenerate. + +2011-03-25 Joseph Myers + + * configure.ac (target_tools): Remove target-groff. + (native_only): Remove target-groff. + (hppa*64*-*-*): Don't disable byacc. + (i[[3456789]]86-*-mingw32*): Remove commented-out noconfigdirs + setting. + (*-*-kaos*): Don't skip target-librx and target-groff. + (*-*-netware*): Don't skip target-libmudflap. + (*-*-tpf*): Don't skip target-libmudflap. + (sh*-*-pe|mips*-*-pe|*arm-wince-pe): Don't condition configured + directories on the host. + (ia64*-*-*vms*): Don't skip tix. + (sh-*-* | sh64-*-*): Don't condition skipped directories on the + host. + * configure: Regenerate. + +2011-03-24 Paolo Bonzini + + * configure.ac: Remove references to mt-mep, mt-netware, + mt-wince. + * Makefile.def: Add all-utils soft dependencies. + * Makefile.tpl: Remove GDB_NLM_DEPS. + * configure: Regenerate. + * Makefile.in: Regenerate. + +2011-03-24 Paolo Bonzini + + Sync from GCC: + + 2011-03-24 Paolo Bonzini + + * configure.ac: Do not include mh-x86omitfp. + * configure: Regenerate. + + 2011-03-24 Paolo Bonzini + + * configure.ac: Remove empty cases. + * configure: Regenerate. + + 2011-03-24 Paolo Bonzini + + * Makefile.def: Add dependency from termcap to gdb. + * Makefile.in: Regenerate. + + 2011-03-24 Paolo Bonzini + + * configure.ac: Remove all mentions of mh-sysv4 and mh-solaris. + * configure: Regenerate. + * Makefile.def: Remove all mentions of X11_FLAGS_TO_PASS. + * Makefile.tpl: Likewise. + * Makefile.in: Regenerate. + + 2011-03-24 Paolo Bonzini + + * configure.ac: Remove all mentions of tentative_cc. + * configure: Regenerate. + + 2011-03-16 Jack Howarth + + PR lto/48086 + * configure.ac: Re-enable LTO on *-apple-darwin9. + * configure: Regenerate. + +2011-03-24 Joseph Myers + + * configure.ac (i[[3456789]]86-*-vsta, i[[3456789]]86-*-go32*, + i[[3456789]]86-*-beos*, powerpc-*-beos*, m68k-hp-hpux*, + m68k-apollo-sysv*, m68k-apollo-bsd*, m88k-dg-dgux*, + m88k-harris-cxux*, m88k-motorola-sysv*, mips*-dec-ultrix*, + mips*-nec-sysv4*, mips*-sgi-irix4*, mips*-*-sysv4*, mips*-*-sysv*, + i370-ibm-opened*, i[[3456789]]86-*-sysv5*, i[[3456789]]86-*-dgux*, + i[[3456789]]86-ncr-sysv4.3*, i[[3456789]]86-ncr-sysv4*, + i[[3456789]]86-*-sco3.2v5*, i[[3456789]]86-*-sco*, + i[[3456789]]86-*-udk*, vax-*-ultrix2*, m68k-sun-sunos*, + hppa*-*-hiux*, *-*-hiux*, rs6000-*-lynxos*, *-*-sysv4*, + *-*-rhapsody*): Remove host cases. + * configure: Regenerate. + +2011-03-24 Joseph Myers + + * configure.ac (ppc*-*-pe): Remove host case. + (strongarm-*-coff | xscale-*-coff, strongarm-*-elf* | + xscale-*-elf*, thumb-*-coff, thumb-*-elf, thumb-*-pe, ep9312-*-elf + | ep9312-*-coff, parisc*64*-*-linux*, ppc*-*-pe): Remove target + cases. + * configure: Regenerate. + +2011-03-24 Joseph Myers + + * config.sub: Update to version 2011-03-23. + +2011-03-22 Joseph Myers + + * configure.ac (arm-semi-aof, crx-*-*, parisc*-*-linux*, + i370-*-opened*, i[[3456789]]86-moss-msdos | i[[3456789]]86-*-moss* + | i[[3456789]]86-*-uwin*, mcore-*-pe*): Remove empty cases. + * configure: Regenerate. + +2011-03-22 Joseph Myers + + * config-ml.in: Don't handle arc-*-elf*. + * configure.ac (arc-*-*, crx-*-*, i[[3456789]]86-*-pe, + m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*, mcore-*-pe*): Don't + handle GCC libraries. + * configure: Regenerate. + +2011-03-21 Rainer Orth + + PR bootstrap/48120: + * configure.ac (pwllib): Use LIBS instead of LDFLAGS. + Add -lstdc++ -lm to LIBS. + * configure: Regenerate. + +2011-03-18 David Edelsohn + + * config.guess: Update to version 2011-02-02 + * config.sub: Update to version 2011-02-24 + +2011-03-03 Sebastian Pop + + * configure.ac: Adjust test of with_ppl. + * configure: Regenerated. + +2011-03-02 Sebastian Pop + + * configure.ac: Add -lpwl to ppllibs. + * config/cloog.m4: Add -lisl to clooglibs. + * configure: Regenerated. + +2011-02-13 Ralf Wildenhues + + Import from Libtool and gnulib: + + 2011-01-27 Gerald Pfeifer + + Prepare for supporting FreeBSD 10. + * config.rpath: Remove handling of freebsd1* which soon would + match FreeBSD 10.0. + + 2011-01-20 Gerald Pfeifer (tiny change) + + Remove support for FreeBSD 1.x. + * libtool.m4 (_LT_LINKER_SHLIBS) + (_LT_SYS_DYNAMIC_LINKER): Remove handling of freebsd1* which + soon would incorrectly match FreeBSD 10.0. + +2011-02-12 Ralf Wildenhues + + PR binutils/12283 + * MAINTAINERS (mkinstalldirs): Comes from Automake. + (move-if-change): Comes from gnulib. + * move-if-change: Import version from gnulib. + +2011-02-12 Ralf Wildenhues + + Sync from GCC: + + 2011-02-12 Alexandre Oliva + + PR lto/47225 + * Makefile.def (lto-plugin): Double dash for enable-shared. + (configure-gcc): Depend on all-lto-plugin. + * Makefile.in: Rebuilt. + + 2011-02-11 Ralf Wildenhues + + * configure.ac: Remove extra bracket. + * configure: Regenerate. + + 2011-02-06 Kai Tietz + + PR lto/47225 + * Makefile.def: Add dependency for install-gcc + on install-lto-plugin. + * Makfile.in: Regenerated + + 2011-01-25 Jakub Jelinek + + * configure.ac: If with_ppl is no, move setting with_cloog=no + after CLOOG_REQUESTED check. + * configure: Regenerated. + + 2011-01-25 Sebastian Pop + + * configure.ac: Call AC_MSG_ERROR when PPL 0.11 is not present and + CLooG has been requested. + * configure: Regenerated. + + 2011-01-25 Sebastian Pop + + * configure: Regenerated. + * configure.ac: Check for version 0.11 (or later revision) of PPL. + + 2011-01-25 Tobias Grosser + + * configure: Regenerated. + * configure.ac: Use CLOOG_CHECK_VERSION(0,16,1). + + 2011-01-07 Jan Hubicka + + PR lto/47225 + * Makefile.in: Regenerate. + * Makefile.def (lto-plugin): Always pass enable-shared to the plugin + configure. + +2011-01-31 Alexandre Oliva + + PR libgcj/44341 + * configure.ac: Discard --with-* flags for host when configuring + target libraries for cross build. + * configure: Rebuilt. + +2011-01-21 Andreas Schwab + + Sync from GCC: + + 2011-01-21 Andreas Schwab + + * configure.ac: Use AS_HELP_STRING throughout. + * configure: Regenerate. + + 2011-01-18 Jie Zhang + + * configure.ac (bfin-*-*): Remove gdb from noconfigdirs. + * configure: Regenerate. + +2010-12-10 John David Anglin + + * ltmain.sh (relink): Use absolute path when hardcoding with -L. + +2011-01-13 Joel Brobecker + + * configure.ac: Remove readline, mmalloc, and gdb from noconfigdirs + for ia64-hpux. + * configure: Regenerate. + +2011-01-02 Ralf Wildenhues + + Sync from GCC: + 2010-12-22 Hariharan Sandanagobalane + + * configure.ac: (picochip): Disable libiberty. + * configure: Regenerate. + +2010-12-18 Jeff Johnston + + * COPYING.LIBGLOSS: Remove the GPL for fr30 target. + +2010-12-10 Ian Lance Taylor + + PR bootstrap/46819 + * configure.ac: For --disable-libgcj clear libgcj_saved. + * configure: Rebuild. + +2010-12-10 Tobias Burnus + + PR fortran/46540 + * configure.ac: Add --disable-libquadmath and + --disable-libquadmath-support. + * configure: Regenerate. + +2010-12-10 Tristan Gingold + + * src-release (ETC_SUPPORT): add gnu-oids.texi + +2010-12-03 Hans-Peter Nilsson + + PR libffi/46792 + * configure.ac (cris-*-elf, crisv32-*-elf): Disable target-libffi. + * configure: Regenerate. + +2010-12-02 Ian Lance Taylor + + * configure.ac: Always set default for poststage1_ldflags to + -static-libstdc++ -static-libgcc. + +2010-12-02 Jeff Johnston + + * COPYING.NEWLIB: Add National Semiconductor notice. + +2010-11-29 Andreas Schwab + + * configure.ac: Move comment to remove extra space in last argument + of GCC_TARGET_TOOL. + +2010-11-26 Alexandre Oliva + + PR other/46026 + * configure.ac (CXX_FOR_TARGET): Add -funconfigured-libstdc++-v3. + * Makefile.def (CXX_FOR_TARGET): Removed from flags_to_pass. + * Makefile.tpl (CXX_FOR_TARGET_FLAG_TO_PASS): New. + (BASE_FLAGS_TO_PASS): Use it. + * configure: Rebuilt. + * Makefile.in: Rebuilt. + +2010-11-23 H.J. Lu + + PR binutils/12258 + * configure.ac: Correct comments for --enable-gold/--enable-ld. + Properly check default linker. + * configure: Regnerated. + +2010-11-23 Matthias Klose + + * configure.ac: For --enable-gold, handle value `default' instead of + `both*'. New configure option --{en,dis}able-ld. + * configure: Regenerate. + +2010-11-20 Ian Lance Taylor + + * configure.ac: Only disable a language library if no language needs + it. Don't let --disable-libgcj uncondtionally disable libffi. + * configure: Rebuild. + +2010-11-20 Paolo Bonzini + + * configure: Regenerate. + +2010-11-20 Ralf Wildenhues + + PR other/46202 + * configure.ac: Fix just-built in-tree STRIP name to be + binutils/strip-new. + * configure: Regenerate. + * Makefile.def (install-strip-gcc, install-strip-binutils) + (install-strip-opcodes, install-strip-ld, install-strip-itcl) + (install-strip-sid): Mirror dependencies on non-strip variants + of these targets on the respective -strip prerequisites. + * Makefile.tpl (install-strip, install-strip-host) + (install-strip-target): New targets. + (install-strip-[+module+], install-strip-target-[+module+]): + New targets. + * Makefile.in: Regenerate. + +2010-11-19 Ian Lance Taylor + Ralf Wildenhues + + * configure.ac: Add target-libgo to target_libraries. Set + and substitute GOC_FOR_BUILD and GOC_FOR_TARGET. + * Makefile.tpl (BUILD_EXPORTS): Add GOC and GOCFLAGS. + (HOST_EXPORTS): Add GOC. + (BASE_TARGET_EXPORTS): Add GOC. + (GOC_FOR_BUILD, GOCFLAGS, GOC_FOR_TARGET): New variables. + (GOCFLAGS_FOR_TARGET): New variable. + (EXTRA_HOST_FLAGS): Add GOC. + (EXTRA_TARGET_FLAGS): Add GOC and GOCFLAGS. + * Makefile.def (target_modules): Add libgo. + (flags_to_pass): Add GOC_FOR_TARGET and GOCFLAGS_FOR_TARGET. + (dependencies): Add dependency from configure-target-libgo to + configure-target-libffi and all-target-libstdc++-v3. Add + dependencies from all-target-libgo to all-target-libffi. + (languages): Add go. + * configure: Rebuild. + * Makefile.in: Rebuild. + +2010-11-19 Ian Lance Taylor + + * config-ml.in: Add Go support: treat GOC and GOCFLAGS like other + compiler/flag environment variables. + +2010-11-18 Ian Lance Taylor + + * configure.ac: Check for lang_requires_boot_languages in + config-lang.in files. + * configure: Rebuild. + +2010-11-17 Mike Frysinger + + * .gitignore: New file. + +2010-11-16 Francois-Xavier Coudert + Tobias Burnus + + PR fortran/32049 + * Makefile.def: Add libquadmath; build it with language=fortran. + * configure.ac: Add libquadmath. + * Makefile.tpl: Handle multiple libs in check-[+language+]. + * Makefile.in: Regenerate. + * configure: Regenerate. + +2010-11-15 Andreas Schwab + + * configure.ac: Fix spelling in option names. + * configure: Regenerated. + +2010-11-13 Georg-Johann Lay + + PR bootstrap/39622 + * configure.ac (FLAGS_FOR_TARGET): Add include-fixed path. + * configure: Regenerated. + +2010-11-12 Tobias Grosser + + * config/cloog.m4: Add -enable-cloog-backend=(isl|ppl|ppl-legacy) to + define the cloog backend to use. Furthermore, only pass the ppllibs to + the configure checks, if necessary. + * configure: Regenerate. + +2010-11-12 Tobias Grosser + + * config/cloog.m4: Use CLooG predefined macro to check for CLooG PPL. + * configure: regenerate + +2010-11-12 Tobias Grosser + + * config/cloog.m4: Fix typo. verison -> version. + * configure: Regenerate. + +2010-11-12 Tobias Grosser + + * config/cloog.m4: Pass ppl libraries to the CLooG version check. + * configure: Regenerate. + +2010-11-11 Andreas Simbuerger + + * configure.ac: Support official CLooG.org versions. + * configure: Regenerate. + * config/cloog.m4: New. + +2010-11-05 Michael Eager + + * COPYING.LIBGLOSS: Correct typo in microblaze. + * COPYING.NEWLIB: Same. + +2010-11-04 Iain Sandoe + + * configure.ac (*-*-darwin*): Use mh-darwin for all Darwin variants. + * configure: Regenerate. + +2010-11-03 Ian Lance Taylor + Dave Korn + + PR lto/46273 + * configure.ac: Remove libelf tests. Build lto-plugin on ELF always + and on other supported platforms whenever LTO is enabled. + * configure: Rebuild. + +2010-11-02 Alan Modra + + PR binutils/12110 + * configure.ac: Error when source path contains spaces. + * configure: Regenerate. + +2010-10-20 Ian Lance Taylor + + * Makefile.def (target_modules): Set lib_path to src/.libs for + libstdc++-v3 module. + * Makefile.tpl: Fix typo in TARGET_LIB_PATH comment. + * Makefile.in: Rebuild. + +2010-10-08 Bernd Schmidt + Joseph Myers + + * COPYING.LIBGLOSS: Add National Semiconductor and CodeSourcery + notices. + * COPYING.NEWLIB: Add Texas Instruments notice. + +2010-10-07 Dave Korn + + * configure.ac (build_lto_plugin): New shell variable. + (--enable-lto): Turn on by default for all non-ELF platforms that + have had LTO support added so far. Set build_lto_plugin appropriately + for both ELF and non-ELF. + (configdirs): Add lto-plugin or not based on build_lto_plugin. + * configure: Regenerate. + +2010-10-02 Ralf Wildenhues + + PR bootstrap/45326 + PR bootstrap/45174 + * configure.ac: Honor initial values of $build_configargs, + $host_configargs, $target_configargs. Mark the precious, so + environment settings get recorded. + * configure: Regenerate. + +2010-10-02 Ralf Wildenhues + + Sync from GCC: + + 2010-09-30 Michael Eager + + * configure.ac (microblaze): Add target-libssp to noconfigdirs. + * configure: Regenerate. + + 2010-09-21 Iain Sandoe + + * configure.ac (enable-lto): Add Darwin to the list of supported lto + targets and amend comment. + * configure: Regenerate. + + 2010-09-03 Jack Howarth + + * configure.ac: Enable LTO by default on Darwin. + * configure: Regenerate. + + 2010-07-23 Marc Glisse + + PR bootstrap/44455 + * configure.ac (extra_mpfr_configure_flags): Copy from + extra_mpc_gmp_configure_flags. + * configure: Re-generated. + +2010-09-30 Ralf Wildenhues + + Sync from GCC: + + PR bootstrap/45796 + * Makefile.def (info-gcc, dvi-gcc, pdf-gcc, html-gcc): + Depend on all-build-libiberty. + * Makefile.in: Regenerate. + +2010-09-27 Ralf Wildenhues + + Sync from GCC: + + PR bootstrap/44621 + * configure.ac: Fix unportable shell quoting. + * configure: Regenerate. + +2010-07-26 Naveen.H.S + + * configure.ac: Support all v850 targets. + * configure: Regenerate. + +2010-07-17 Jack Howarth + + PR target/44862 + * Makefile.tpl (POSTSTAGE1_CXX_EXPORT): + Provide -B option to allow for link spec %s substitutions for + libstdc++.a on darwin. + * Makefile.in: Regenerate. + +2010-06-10 Alexandre Oliva + + * Makefile.def (configure-gcc): Depend on all-libelf. + * Makefile.in: Rebuild. + +2010-06-01 Ralf Wildenhues + + * config.sub, config.guess: Update from upstream sources. + +2010-06-01 Ralf Wildenhues + + Sync from GCC: + + 2010-05-05 Sebastian Pop + * configure.ac: Allow all the versions greater than 0.10 of PPL. + * configure: Regenerated. + + 2010-04-20 Eric Botcazou + * configure.ac (BUILD_CONFIG): Redirect output to /dev/null. + * configure: Regenerate. + + 2010-04-17 Ralf Corspius + * configure.ac (*-*-rtems*): Add target-libiberty to $skipdirs. + * configure: Regenerate. + + 2010-04-16 Rainer Orth + * configure.ac: Check for elf_getshdrstrndx or elf_getshstrndx + separately. + * configure: Regenerate. + + 2010-04-13 Steve Ellcey + * configure: Regenerate after change to elf.m4. + + 2010-04-02 Sebastian Pop + * configure.ac: Add brackets around AC_TRY_COMPILE alternative. + * configure: Regenerated. + + 2010-04-02 Sebastian Pop + * configure.ac: Print "buggy but acceptable" when CLooG + revision is less than 9. + * configure: Regenerated. + +2010-05-26 Dave Korn + + Merge from gcc: + + 2010-05-18 Steven Bosscher + * configure.ac (--enable-lto): All *-apple-darwin* now support LTO. + * configure: Regenerate. + + 2010-05-07 Steven Bosscher + * configure.ac (--enable-lto): Add x86_64-apple-darwin* as + a platform that supports LTO. + * configure: Regenerate. + + 2010-04-27 Dave Korn + PR lto/42776 + * configure.ac (--enable-lto): Refactor handling so libelf tests + are only performed inside then-clause of ACX_ELF_TARGET_IFELSE, + and allow LTO to be explicitly enabled on non-ELF platforms that + are known to support it inside else-clause. + * configure: Regenerate. + +2010-04-27 Roland McGrath + H.J. Lu + + * configure.ac (--enable-gold): Support both, both/gold and + both/bfd to add gold to configdirs without removing ld. + * configure: Regenerated. + + * Makefile.def: Add install-gold dependency to install-ld. + * Makefile.in: Regenerated. + +2010-04-14 Tristan Gingold + + * configure.ac (alpha*-*-*vms*): Remove ld from noconfigdirs. + * configure: Regenerate. + +2010-04-08 Ralf Wildenhues + + Merge from gcc: + PR bootstrap/43615 + PR bootstrap/43328 + Revert: + 2010-03-31 Ralf Wildenhues + * configure.ac: Do not pass --enable-multilib nor + --disable-multilib in baseargs. Accept explicitly passed + --enable_multilib. + * configure: Regenerate. + +2010-03-31 Ralf Wildenhues + + PR bootstrap/43328 + * configure.ac: Do not pass --enable-multilib nor + --disable-multilib in baseargs. Accept explicitly passed + --enable_multilib. + * configure: Regenerate. + +2010-03-23 Joseph Myers + + * configure.ac (tic6x-*-*): New case. + * configure: Regenerate. + +2010-03-23 Joseph Myers + + Merge from gcc: + 2010-03-19 Jack Howarth + PR ada/42554 + * configure.ac: Only pass -c to ranlib for darwin9 and earlier. + * configure: Regenerate. + +2010-03-23 Joseph Myers + + * config.sub: Update to version 2010-03-22. + * config.guess: Update to version 2009-12-30. + +2010-03-14 Joseph Myers + + Merge from gcc: + 2010-01-11 Richard Guenther + PR lto/41569 + * Makefile.def (all-lto-plugin): Depend on all-gcc. + * Makefile.in: Regenerated. + +2010-03-01 Rainer Orth + + PR libstdc++/32499 + * configure.ac (RANLIB): Default to true. + (STRIP): Likewise. + (RANLIB_FOR_TARGET): Remove superfluous : argument. + * configure: Regenerate. + +2010-02-17 Nick Clifton + + PR 11238 + * Makefile.tpl (local-distclean): Also remove config.cache files in + sub-directories as there may not be Makefiles present in the + sub-directories. + * Makefile.tpl: Use "-exec rm {}" rather than "-delete" to delete + the config.cache files found by the find command. + + * Makefile.in: Regenerate. + * configure.ac: Revert previous delta. + * configure: Regenerate. + +2010-02-15 Nick Clifton + + PR 11238 + * configure.ac: Delete config.cache files in sub-directories when + deleting Makefiles. + * configure: Regenerate. + +2010-02-15 Nick Clifton + + * configure.ac: Sync from gcc. + * configure: Regenerate. + +2010-01-31 Kaveh R. Ghazi + + Sync from gcc: + * configure.ac: Add "recommended" version checks for GMP/MPC. + Update recommended GMP/MPFR/MPC versions. + * configure: Regenerate. + +2010-01-25 Joern Rennecke + + gcc PR libstdc++/36101, gcc PR libstdc++/42813 + * configure.ac (bootstrap_target_libs): Make inclusion of + target-libgomp conditional on libgomb being in target_configdirs. + * configure: Regenerate. + +2010-01-23 Joern Rennecke + + gcc PR libstdc++/36101, gcc PR libstdc++/42813 + * configure.ac (bootstrap_target_libs): Include target-libgomp. + * configure: Regenerate. + +2010-01-22 Joern Rennecke + + gcc PR libstdc++/36101, gcc PR libstdc++/42813 + * configure.ac (target_configdirs): Substitute. + * Makefile.def: Bootstrap target module libgomp. + Add dependency of all-target-libstdc++-v3 on configure-target-libgomp. + * Makefile.tpl (TARGET_CONFIGDIRS): New makefile variable. + (BASE_TARGET_EXPORTS): Export TARGET_CONFIGDIRS. + * configure, Makefile.in: Regenerate. + +2009-12-09 Ralf Wildenhues + + * libtool.m4: Sync from git Libtool. + * ltmain.sh: Likewise. + * ltoptions.m4: Likewise. + * ltversion.m4: Likewise. + * lt~obsolete.m4: Likewise. + +2010-01-07 Kaveh R. Ghazi + Francois-Xavier Coudert + + PR bootstrap/42424 + * configure.ac: Include libtool m4 files. + (_LT_CHECK_OBJDIR): Call it. + (extra_mpc_mpfr_configure_flags, extra_mpc_gmp_configure_flags, + gmplibs, ppllibs, clooglibs): Use $lt_cv_objdir. + + * configure: Regenerate. + +2010-01-07 Ralf Wildenhues + + PR bootstrap/41818 + * Makefile.tpl (BASE_TARGET_EXPORTS): Only add TARGET_LIB_PATH + to $(RPATH_ENVVAR) if bootstrapping. Fix typo in comment. + * Makefile.in: Regenerate. + +2009-12-18 Ben Elliston + + * config.sub, config.guess: Update from upstream sources. + +2009-12-17 Jeff Johnston + + * COPYING.NEWLIB: Update copyright date. + * COPYING.LIBGLOSS: Ditto. + +2009-12-07 Kaveh R. Ghazi + + PR middle-end/30447 + PR middle-end/30789 + PR other/40302 + + * configure.ac: Require MPC. + * configure: Regenerate. + + * configure.ac: Update minimum MPC version to 0.8. + * configure: Regenerate. + +2009-11-20 Paolo Bonzini + + * config.guess: Sync with upstream and gcc. + * config.sub: Sync with upstream and gcc. + +2009-11-16 Alexandre Oliva + + * Makefile.def: Restore host and target settings for gmp. + * Makefile.in: Rebuild. + +2009-11-16 Alexandre Oliva + + * configure.ac: Add libelf to host_libs. Enable in-tree configury + of ppl and cloog. Fix in-tree configury of libelf, skip tests. + Fix portability of test of C++ as bootstrap language. Add + ppl/src/ppl-config.o to the bootstrap compare exclusion list. + * configure: Rebuild. + * Makefile.def: Drop host and target settings from gmp, mpfr, ppl, + and cloog. Fix in-tree ppl configuration. Introduce libelf + in-tree building. + * Makefile.tpl (POSTSTAGE1_CXX_EXPORT): New. + (POSTSTAGE1_HOST_EXPORTS): Use it. + (STAGE[+id+]_CXXFLAGS): New. + (BASE_FLAGS_TO_PASS): Pass it down. + (configure-stage[+id+]-[+prefix+][+module+]): Use it. Add + extra_exports. + (all-stage[+id+]-[+prefix+][+module+]): Likewise. + (configure-[+prefix+][+module+], all-[+prefix+][+module+]): Add + extra_exports. + * Makefile.in: Rebuild. + +2009-11-06 Ozkan Sezer + + * configure.ac (FLAGS_FOR_TARGET): Add -L and -isystem + paths for *-w64-mingw* and x86_64-*mingw*. + * configure: Regenerated. + +2009-10-30 Kai Tietz + + * configure.ac: Disable target-winsup & co for + x86_64-*-mingw* and *-w64-mingw* targets. + * configure: Regenerated. + +2009-10-23 Rainer Orth + + * configure.ac (CLooG test): Use = with test. + * configure: Regenerate. + +2009-10-22 Richard Guenther + + * configure.ac: Do not set LIBS for ppl/cloog checks. Disable + cloog if the ppl version check failed. Move flags saving + before setting in libelf check. + * configure: Regenerate. + +2009-10-21 Richard Guenther + + * configure.ac: Adjust the ppl and cloog configure to work as + documented. Disable cloog if ppl was disabled. Omit the version + checks if they were disabled. + * configure: Re-generate. + +2009-10-13 Ralf Wildenhues + + * configure.ac: Add 'lto' to enable_languages, not + new_enable_languages, and only if not already present. + * configure: Regenerate. + +2009-10-06 Ian Lance Taylor + + * Makefile.def: check-gold depends upon all-gas. + * Makefile.in: Rebuild. + +2009-10-03 2009-02-05 Rafael Avila de Espindola + + * Makefile.def: all-lto-plugin depends on all-libiberty. + set bootstrap=true for lto-plugin. + Add lto-plugin. + * Makefile.in: Regenerate. + * configure.ac (host_libs): Add lto-plugin. + * configure: Regenerate. + +2009-10-03 Diego Novillo + + * Makefile.tpl (HOST_EXPORTS): Add LIBELFLIBS and LIBELFINC. + (HOST_LIBELFLIBS): Define. + (HOST_LIBELFINC): Define. + * Makefile.in: Regenerate. + * configure.ac: Add --enable-lto. + Add --with-libelf, --with-libelf-include and --with-libelf-lib. + If --enable-lto is used, add 'lto' to new_enable_languages. + If --enable-lto is used and gold is enabled, add + lto-plugin to configdirs. + * configure: Regenerate. + +2009-10-03 Simon Baldwin + + * configure.ac: If --with-system-zlib, suppress local zlib and + pass --with-system-zlib to subdir configure scripts. + * configure: Regenerate. + +2009-10-01 Loren J. Rittle + Paolo Bonzini + + * Makefile.tpl (POSTSTAGE1_HOST_EXPORTS): Use $$s rather than + $(srcdir). + * Makefile.in: Rebuilt. + +2009-09-29 Paolo Bonzini + + Sync from gcc: + 2009-09-26 Kaveh R. Ghazi + + * configure.ac: Update minimum MPC version to 0.7. + * configure: Regenerate. + +2009-09-25 Nick Clifton + + * configure.ac: Pass any --cache-file=/dev/null option on to + subconfigures. + * configure: Regenerate. + +2009-09-23 Nick Clifton + + * config.sub, config.guess: Update from upstream sources. + +2009-09-22 Loren J. Rittle + + * Makefile.tpl (POSTSTAGE1_HOST_EXPORTS): Remove stray $$r/. + * Makefile.in: Rebuilt. + +2009-09-22 Ralf Wildenhues + + PR bootstrap/32272 + * configure.ac: Error out if $srcdir isn't '.' but contains + host-${host_noncanonical}. + * configure: Regenerate. + +2009-09-21 Ralf Wildenhues + + * configure.ac: If bootstrapping a combined tree with + --enable-gold, require c++ in stage1_languages. + * configure: Regenerate. + + * configure.ac: Also add target_libs of stage1_languages to + bootstrap_target_libs. + * configure: Regenerate. + + * configure.ac: Diagnose --enable-build-with-cxx bootstrap + with --enable-languages not containing c++. + * configure: Regenerate. + 2009-09-16 Jie Zhang * configure.ac: Disable java and boehm-gc for bfin-*-*. diff -Nru crash-5.1.6/=unpacked-tar1=/MAINTAINERS crash-6.1.6/=unpacked-tar1=/MAINTAINERS --- crash-5.1.6/=unpacked-tar1=/MAINTAINERS 2009-08-19 02:53:50.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/MAINTAINERS 2011-02-12 15:47:02.000000000 +0000 @@ -38,7 +38,7 @@ binutils@sourceware.org gdb-patches@sourceware.org -depcomp +depcomp; mkinstalldirs Send bug reports and patches to bug-automake@gnu.org. gdb/; readline/; sim/; GDB's part of include/ @@ -69,12 +69,8 @@ sources or submitted to the master file maintainer and brought in via a merge. -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. +move-if-change + Send bug reports and patches to bug-gnulib@gnu.org. symlink-tree gcc: http://gcc.gnu.org diff -Nru crash-5.1.6/=unpacked-tar1=/Makefile.def crash-6.1.6/=unpacked-tar1=/Makefile.def --- crash-5.1.6/=unpacked-tar1=/Makefile.def 2009-09-02 07:05:01.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/Makefile.def 2011-03-24 17:50:31.000000000 +0000 @@ -4,7 +4,7 @@ // Makefile.in is generated from Makefile.tpl by 'autogen Makefile.def'. // This file was originally written by Nathanael Nerode. // -// Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +// Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 // Free Software Foundation // // This file is free software; you can redistribute it and/or modify @@ -62,27 +62,30 @@ host_modules= { module= gettext; }; host_modules= { module= gmp; lib_path=.libs; bootstrap=true; extra_configure_flags='--disable-shared'; - no_install= true; + no_install= true; + // none-*-* disables asm optimizations, bootstrap-testing + // the compiler more thoroughly. host="none-${host_vendor}-${host_os}"; - target="none-${host_vendor}-${host_os}"; }; + // gmp's configure will complain if given anything + // different from host for target. + target="none-${host_vendor}-${host_os}"; }; host_modules= { module= mpfr; lib_path=.libs; bootstrap=true; extra_configure_flags='--disable-shared @extra_mpfr_configure_flags@'; - no_install= true; - host="none-${host_vendor}-${host_os}"; - target="none-${host_vendor}-${host_os}"; }; + no_install= true; }; host_modules= { module= mpc; lib_path=.libs; bootstrap=true; extra_configure_flags='--disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@'; no_install= true; }; -host_modules= { module= ppl; lib_path=.libs; bootstrap=true; +host_modules= { module= ppl; lib_path=src/.libs; bootstrap=true; extra_configure_flags='--disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/'; - no_install= true; - host="none-${host_vendor}-${host_os}"; - target="none-${host_vendor}-${host_os}"; }; + no_install= true; }; host_modules= { module= cloog; lib_path=.libs; bootstrap=true; - extra_configure_flags='--disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp'; - no_install= true; - host="none-${host_vendor}-${host_os}"; - target="none-${host_vendor}-${host_os}"; }; + extra_configure_flags='--disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-bits=gmp --with-ppl'; + extra_exports='CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; '; + extra_make_flags='CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"'; + no_install= true; }; +host_modules= { module= libelf; lib_path=.libs; bootstrap=true; + extra_configure_flags='--disable-shared'; + no_install= true; }; host_modules= { module= gnuserv; }; host_modules= { module= gold; bootstrap=true; }; host_modules= { module= gprof; }; @@ -97,7 +100,8 @@ host_modules= { module= libcpp; bootstrap=true; }; host_modules= { module= libdecnumber; bootstrap=true; }; host_modules= { module= libgui; }; -host_modules= { module= libiberty; bootstrap=true; }; +host_modules= { module= libiberty; bootstrap=true; + extra_configure_flags='@extra_host_libiberty_configure_flags@';}; // We abuse missing to avoid installing anything for libiconv. host_modules= { module= libiconv; extra_configure_flags='--disable-shared'; @@ -130,10 +134,10 @@ host_modules= { module= wdiff; }; host_modules= { module= zip; no_check_cross=true; }; host_modules= { module= zlib; no_install=true; no_check=true; bootstrap=true; }; -host_modules= { module= gdb; extra_make_flags="$(X11_FLAGS_TO_PASS)"; }; -host_modules= { module= expect; extra_make_flags="$(X11_FLAGS_TO_PASS)"; }; -host_modules= { module= guile; extra_make_flags="$(X11_FLAGS_TO_PASS)"; }; -host_modules= { module= tk; extra_make_flags="$(X11_FLAGS_TO_PASS)"; }; +host_modules= { module= gdb; }; +host_modules= { module= expect; }; +host_modules= { module= guile; }; +host_modules= { module= tk; }; host_modules= { module= libtermcap; no_check=true; missing=mostlyclean; missing=clean; @@ -141,17 +145,21 @@ missing=maintainer-clean; }; host_modules= { module= utils; no_check=true; }; host_modules= { module= gnattools; }; +host_modules= { module= lto-plugin; bootstrap=true; + extra_configure_flags=--enable-shared; }; target_modules = { module= libstdc++-v3; bootstrap=true; - lib_path=.libs; + lib_path=src/.libs; raw_cxx=true; }; target_modules = { module= libmudflap; lib_path=.libs; }; target_modules = { module= libssp; lib_path=.libs; }; target_modules = { module= newlib; }; target_modules = { module= libgcc; bootstrap=true; no_check=true; }; +target_modules = { module= libquadmath; }; target_modules = { module= libgfortran; }; target_modules = { module= libobjc; }; +target_modules = { module= libgo; }; target_modules = { module= libtermcap; no_check=true; missing=mostlyclean; missing=clean; @@ -169,7 +177,7 @@ target_modules = { module= qthreads; }; target_modules = { module= rda; }; target_modules = { module= libada; }; -target_modules = { module= libgomp; lib_path=.libs; }; +target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; // These are (some of) the make targets to be done in each subdirectory. // Not all; these are the ones which don't have special options. @@ -275,12 +283,13 @@ flags_to_pass = { flag= CC_FOR_TARGET ; }; flags_to_pass = { flag= CFLAGS_FOR_TARGET ; }; flags_to_pass = { flag= CPPFLAGS_FOR_TARGET ; }; -flags_to_pass = { flag= CXX_FOR_TARGET ; }; flags_to_pass = { flag= CXXFLAGS_FOR_TARGET ; }; flags_to_pass = { flag= DLLTOOL_FOR_TARGET ; }; flags_to_pass = { flag= FLAGS_FOR_TARGET ; }; flags_to_pass = { flag= GCJ_FOR_TARGET ; }; flags_to_pass = { flag= GFORTRAN_FOR_TARGET ; }; +flags_to_pass = { flag= GOC_FOR_TARGET ; }; +flags_to_pass = { flag= GOCFLAGS_FOR_TARGET ; }; flags_to_pass = { flag= LD_FOR_TARGET ; }; flags_to_pass = { flag= LIPO_FOR_TARGET ; }; flags_to_pass = { flag= LDFLAGS_FOR_TARGET ; }; @@ -313,10 +322,12 @@ // Host modules specific to gcc. dependencies = { module=configure-gcc; on=configure-intl; }; +dependencies = { module=configure-gcc; on=all-lto-plugin; }; dependencies = { module=configure-gcc; on=all-binutils; }; dependencies = { module=configure-gcc; on=all-gas; }; dependencies = { module=configure-gcc; on=all-ld; }; dependencies = { module=configure-gcc; on=all-gold; }; +dependencies = { module=configure-gcc; on=all-libelf; }; dependencies = { module=all-gcc; on=all-libiberty; hard=true; }; dependencies = { module=all-gcc; on=all-gmp; }; dependencies = { module=all-gcc; on=all-intl; }; @@ -335,7 +346,14 @@ dependencies = { module=all-gcc; on=all-libdecnumber; hard=true; }; dependencies = { module=all-gcc; on=all-libiberty; }; dependencies = { module=all-gcc; on=all-fixincludes; }; +dependencies = { module=all-gcc; on=all-lto-plugin; }; +dependencies = { module=info-gcc; on=all-build-libiberty; }; +dependencies = { module=dvi-gcc; on=all-build-libiberty; }; +dependencies = { module=pdf-gcc; on=all-build-libiberty; }; +dependencies = { module=html-gcc; on=all-build-libiberty; }; dependencies = { module=install-gcc ; on=install-fixincludes; }; +dependencies = { module=install-gcc ; on=install-lto-plugin; }; +dependencies = { module=install-strip-gcc ; on=install-strip-fixincludes; }; dependencies = { module=configure-libcpp; on=configure-libiberty; hard=true; }; dependencies = { module=configure-libcpp; on=configure-intl; }; @@ -346,6 +364,10 @@ dependencies = { module=all-gnattools; on=all-target-libada; }; +dependencies = { module=all-lto-plugin; on=all-libiberty; }; + +dependencies = { module=all-utils; on=all-libiberty; }; + dependencies = { module=configure-mpfr; on=all-gmp; }; dependencies = { module=configure-mpc; on=all-mpfr; }; dependencies = { module=configure-ppl; on=all-gmp; }; @@ -367,6 +389,7 @@ dependencies = { module=all-gdb; on=all-build-byacc; }; dependencies = { module=all-gdb; on=all-sim; }; dependencies = { module=all-gdb; on=all-libdecnumber; }; +dependencies = { module=all-gdb; on=all-libtermcap; }; dependencies = { module=configure-libgui; on=configure-tcl; }; dependencies = { module=configure-libgui; on=configure-tk; }; @@ -395,9 +418,11 @@ // binutils might be on PATH, and they might need the shared opcodes // library. dependencies = { module=install-binutils; on=install-opcodes; }; +dependencies = { module=install-strip-binutils; on=install-strip-opcodes; }; // libopcodes depends on libbfd dependencies = { module=install-opcodes; on=install-bfd; }; +dependencies = { module=install-strip-opcodes; on=install-strip-bfd; }; dependencies = { module=configure-gas; on=configure-intl; }; dependencies = { module=all-gas; on=all-libiberty; }; @@ -417,6 +442,8 @@ dependencies = { module=all-ld; on=all-build-byacc; }; dependencies = { module=all-ld; on=all-build-flex; }; dependencies = { module=all-ld; on=all-intl; }; +dependencies = { module=install-ld; on=install-gold; }; +dependencies = { module=install-strip-ld; on=install-strip-gold; }; dependencies = { module=configure-gold; on=configure-intl; }; dependencies = { module=all-gold; on=all-libiberty; }; dependencies = { module=all-gold; on=all-intl; }; @@ -424,6 +451,7 @@ dependencies = { module=all-gold; on=all-build-bison; }; dependencies = { module=all-gold; on=all-build-byacc; }; dependencies = { module=check-gold; on=all-binutils; }; +dependencies = { module=check-gold; on=all-gas; }; dependencies = { module=configure-opcodes; on=configure-intl; }; dependencies = { module=all-opcodes; on=all-bfd; }; @@ -446,6 +474,7 @@ dependencies = { module=all-itcl; on=all-tcl; }; dependencies = { module=all-itcl; on=all-tk; }; dependencies = { module=install-itcl; on=install-tcl; }; +dependencies = { module=install-strip-itcl; on=install-strip-tcl; }; dependencies = { module=configure-tk; on=configure-tcl; }; dependencies = { module=all-tk; on=all-tcl; }; @@ -456,7 +485,9 @@ dependencies = { module=all-sid; on=all-tcl; }; dependencies = { module=all-sid; on=all-tk; }; dependencies = { module=install-sid; on=install-tcl; }; +dependencies = { module=install-strip-sid; on=install-strip-tcl; }; dependencies = { module=install-sid; on=install-tk; }; +dependencies = { module=install-strip-sid; on=install-strip-tk; }; dependencies = { module=configure-sim; on=configure-intl; }; dependencies = { module=all-sim; on=all-intl; }; @@ -524,6 +555,9 @@ dependencies = { module=configure-target-fastjar; on=configure-target-zlib; }; dependencies = { module=all-target-fastjar; on=all-target-zlib; }; dependencies = { module=all-target-fastjar; on=all-target-libiberty; }; +dependencies = { module=configure-target-libgo; on=configure-target-libffi; }; +dependencies = { module=configure-target-libgo; on=all-target-libstdc++-v3; }; +dependencies = { module=all-target-libgo; on=all-target-libffi; }; dependencies = { module=configure-target-libjava; on=configure-target-zlib; }; dependencies = { module=configure-target-libjava; on=configure-target-boehm-gc; }; dependencies = { module=configure-target-libjava; on=configure-target-qthreads; }; @@ -538,6 +572,10 @@ dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; }; dependencies = { module=all-target-libstdc++-v3; on=all-target-libiberty; }; dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; }; +// parallel_list.o and parallel_settings.o depend on omp.h, which is +// generated by the libgomp configure. Unfortunately, due to the use of +// recursive make, we can't be that specific. +dependencies = { module=all-target-libstdc++-v3; on=configure-target-libgomp; }; // Target modules in the 'src' repository. lang_env_dependencies = { module=examples; }; @@ -553,11 +591,13 @@ dependencies = { module=configure-target-libiberty; on=all-ld; }; dependencies = { module=configure-target-newlib; on=all-binutils; }; dependencies = { module=configure-target-newlib; on=all-ld; }; +dependencies = { module=configure-target-libgfortran; on=all-target-libquadmath; }; languages = { language=c; gcc-check-target=check-gcc; }; languages = { language=c++; gcc-check-target=check-c++; lib-check-target=check-target-libstdc++-v3; }; languages = { language=fortran; gcc-check-target=check-fortran; + lib-check-target=check-target-libquadmath; lib-check-target=check-target-libgfortran; }; languages = { language=java; gcc-check-target=check-java; lib-check-target=check-target-libjava; }; @@ -566,6 +606,8 @@ languages = { language=objc; gcc-check-target=check-objc; lib-check-target=check-target-libobjc; }; languages = { language=obj-c++; gcc-check-target=check-obj-c++; }; +languages = { language=go; gcc-check-target=check-go; + lib-check-target=check-target-libgo; }; // Toplevel bootstrap bootstrap_stage = { id=1 ; }; diff -Nru crash-5.1.6/=unpacked-tar1=/Makefile.in crash-6.1.6/=unpacked-tar1=/Makefile.in --- crash-5.1.6/=unpacked-tar1=/Makefile.in 2009-10-06 16:38:07.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/Makefile.in 2011-09-04 17:53:53.000000000 +0000 @@ -3,7 +3,7 @@ # # Makefile for directory with subdirs to build. # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation # # This file is free software; you can redistribute it and/or modify @@ -100,8 +100,6 @@ tooldir = @tooldir@ build_tooldir = @build_tooldir@ -GDB_NLM_DEPS = - # This is the name of the environment variable used for the path to # the libraries. RPATH_ENVVAR = @RPATH_ENVVAR@ @@ -157,6 +155,8 @@ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \ GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \ GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \ + GOC="$(GOC_FOR_BUILD)"; export GOC; \ + GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \ DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ LD="$(LD_FOR_BUILD)"; export LD; \ LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ @@ -173,6 +173,7 @@ # This is the list of directories to built for the host system. SUBDIRS = @configdirs@ +TARGET_CONFIGDIRS = @target_configdirs@ # This is set by the configure script to the arguments to use when configuring # directories built for the host system. HOST_CONFIGARGS = @host_configargs@ @@ -192,6 +193,7 @@ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ GCJ="$(GCJ)"; export GCJ; \ GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ + GOC="$(GOC)"; export GOC; \ AR="$(AR)"; export AR; \ AS="$(AS)"; export AS; \ CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ @@ -219,11 +221,29 @@ PPLINC="$(HOST_PPLINC)"; export PPLINC; \ CLOOGLIBS="$(HOST_CLOOGLIBS)"; export CLOOGLIBS; \ CLOOGINC="$(HOST_CLOOGINC)"; export CLOOGINC; \ + LIBELFLIBS="$(HOST_LIBELFLIBS)" ; export LIBELFLIBS; \ + LIBELFINC="$(HOST_LIBELFINC)" ; export LIBELFINC; \ @if gcc-bootstrap $(RPATH_ENVVAR)=`echo "$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \ @endif gcc-bootstrap $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); +POSTSTAGE1_CXX_EXPORT = \ + CXX='$(CXX)'; export CXX; \ + CXX_FOR_BUILD='$(CXX_FOR_BUILD)'; export CXX_FOR_BUILD; +@if target-libstdc++-v3-bootstrap +# Override the above if we're bootstrapping C++. +POSTSTAGE1_CXX_EXPORT = \ + CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ + -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \ + -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ + -I$$s/libstdc++-v3/libsupc++ \ + -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \ + CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD; +@endif target-libstdc++-v3-bootstrap + # Similar, for later GCC stages. POSTSTAGE1_HOST_EXPORTS = \ $(HOST_EXPORTS) \ @@ -231,13 +251,7 @@ -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \ $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ - CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ - -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \ - -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ - -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ - -I$$r/$(srcdir)/libstdc++-v3/libsupc++ \ - -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \ - CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD; \ + $(POSTSTAGE1_CXX_EXPORT) \ GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind"; export GNATBIND; \ LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)"; export LDFLAGS; \ HOST_LIBS="$(POSTSTAGE1_LIBS)"; export HOST_LIBS; @@ -248,7 +262,7 @@ # directories built for the target. TARGET_CONFIGARGS = @target_configargs@ --with-target-subdir="$(TARGET_SUBDIR)" # This is the list of variables to export in the environment when -# configuring subdirectories for the host system. +# configuring subdirectories for the target system. BASE_TARGET_EXPORTS = \ $(BASE_EXPORTS) \ AR="$(AR_FOR_TARGET)"; export AR; \ @@ -260,6 +274,7 @@ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ GCJ="$(GCJ_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GCJ; \ GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ + GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ @@ -270,7 +285,11 @@ STRIP="$(STRIP_FOR_TARGET)"; export STRIP; \ WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \ WINDMC="$(WINDMC_FOR_TARGET)"; export WINDMC; \ - $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); +@if gcc-bootstrap + $(RPATH_ENVVAR)=`echo "$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \ +@endif gcc-bootstrap + $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \ + TARGET_CONFIGDIRS="$(TARGET_CONFIGDIRS)"; export TARGET_CONFIGDIRS; RAW_CXX_TARGET_EXPORTS = \ $(BASE_TARGET_EXPORTS) \ @@ -293,11 +312,15 @@ HOST_CLOOGLIBS = @clooglibs@ HOST_CLOOGINC = @clooginc@ +# Where to find libelf +HOST_LIBELFLIBS = @libelflibs@ +HOST_LIBELFINC = @libelfinc@ + # ---------------------------------------------- # Programs producing files for the BUILD machine # ---------------------------------------------- -SHELL = @config_shell@ +SHELL = @SHELL@ # pwd command to use. Allow user to override default by setting PWDCMD in # the environment to account for automounters. The make variable must not @@ -318,6 +341,7 @@ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ GCJ_FOR_BUILD = @GCJ_FOR_BUILD@ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ +GOC_FOR_BUILD = @GOC_FOR_BUILD@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LD_FOR_BUILD = @LD_FOR_BUILD@ NM_FOR_BUILD = @NM_FOR_BUILD@ @@ -380,6 +404,7 @@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates +GOCFLAGS = $(CFLAGS) TFLAGS = @@ -392,31 +417,61 @@ # Defaults for stage 1; some are overridden below. STAGE1_CFLAGS = $(STAGE_CFLAGS) +STAGE1_CXXFLAGS = $(CXXFLAGS) +@if target-libstdc++-v3-bootstrap +# Override the above if we're bootstrapping C++. +STAGE1_CXXFLAGS = $(STAGE1_CFLAGS) +@endif target-libstdc++-v3-bootstrap STAGE1_TFLAGS = $(STAGE_TFLAGS) STAGE1_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # Defaults for stage 2; some are overridden below. STAGE2_CFLAGS = $(STAGE_CFLAGS) +STAGE2_CXXFLAGS = $(CXXFLAGS) +@if target-libstdc++-v3-bootstrap +# Override the above if we're bootstrapping C++. +STAGE2_CXXFLAGS = $(STAGE2_CFLAGS) +@endif target-libstdc++-v3-bootstrap STAGE2_TFLAGS = $(STAGE_TFLAGS) STAGE2_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # Defaults for stage 3; some are overridden below. STAGE3_CFLAGS = $(STAGE_CFLAGS) +STAGE3_CXXFLAGS = $(CXXFLAGS) +@if target-libstdc++-v3-bootstrap +# Override the above if we're bootstrapping C++. +STAGE3_CXXFLAGS = $(STAGE3_CFLAGS) +@endif target-libstdc++-v3-bootstrap STAGE3_TFLAGS = $(STAGE_TFLAGS) STAGE3_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # Defaults for stage 4; some are overridden below. STAGE4_CFLAGS = $(STAGE_CFLAGS) +STAGE4_CXXFLAGS = $(CXXFLAGS) +@if target-libstdc++-v3-bootstrap +# Override the above if we're bootstrapping C++. +STAGE4_CXXFLAGS = $(STAGE4_CFLAGS) +@endif target-libstdc++-v3-bootstrap STAGE4_TFLAGS = $(STAGE_TFLAGS) STAGE4_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # Defaults for stage profile; some are overridden below. STAGEprofile_CFLAGS = $(STAGE_CFLAGS) +STAGEprofile_CXXFLAGS = $(CXXFLAGS) +@if target-libstdc++-v3-bootstrap +# Override the above if we're bootstrapping C++. +STAGEprofile_CXXFLAGS = $(STAGEprofile_CFLAGS) +@endif target-libstdc++-v3-bootstrap STAGEprofile_TFLAGS = $(STAGE_TFLAGS) STAGEprofile_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) # Defaults for stage feedback; some are overridden below. STAGEfeedback_CFLAGS = $(STAGE_CFLAGS) +STAGEfeedback_CXXFLAGS = $(CXXFLAGS) +@if target-libstdc++-v3-bootstrap +# Override the above if we're bootstrapping C++. +STAGEfeedback_CXXFLAGS = $(STAGEfeedback_CFLAGS) +@endif target-libstdc++-v3-bootstrap STAGEfeedback_TFLAGS = $(STAGE_TFLAGS) STAGEfeedback_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) @@ -428,8 +483,8 @@ # overrideable (for a bootstrap build stage1 also builds gcc.info). STAGE1_CFLAGS = @stage1_cflags@ -STAGE1_CHECKING=@stage1_checking@ -STAGE1_LANGUAGES=@stage1_languages@ +STAGE1_CHECKING = @stage1_checking@ +STAGE1_LANGUAGES = @stage1_languages@ # * We force-disable intermodule optimizations, even if # --enable-intermodule was passed, since the installed compiler # probably can't handle them. Luckily, autoconf always respects @@ -465,6 +520,7 @@ RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ +GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@ DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ LD_FOR_TARGET=@LD_FOR_TARGET@ @@ -486,6 +542,7 @@ LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates LDFLAGS_FOR_TARGET = +GOCFLAGS_FOR_TARGET = -O2 -g FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ @@ -509,11 +566,11 @@ ### # This is the list of directories that may be needed in RPATH_ENVVAR -# so that prorgams built for the target machine work. +# so that programs built for the target machine work. TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libmudflap)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(HOST_LIB_PATH_gcc) @if target-libstdc++-v3 -TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/.libs: +TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: @endif target-libstdc++-v3 @if target-libmudflap @@ -532,7 +589,7 @@ # This is the list of directories that may be needed in RPATH_ENVVAR # so that programs built for the host machine work. -HOST_LIB_PATH = $(HOST_LIB_PATH_bfd)$(HOST_LIB_PATH_opcodes)$(HOST_LIB_PATH_gmp)$(HOST_LIB_PATH_mpfr)$(HOST_LIB_PATH_mpc)$(HOST_LIB_PATH_ppl)$(HOST_LIB_PATH_cloog) +HOST_LIB_PATH = $(HOST_LIB_PATH_bfd)$(HOST_LIB_PATH_opcodes)$(HOST_LIB_PATH_gmp)$(HOST_LIB_PATH_mpfr)$(HOST_LIB_PATH_mpc)$(HOST_LIB_PATH_ppl)$(HOST_LIB_PATH_cloog)$(HOST_LIB_PATH_libelf) # Define HOST_LIB_PATH_gcc here, for the sake of TARGET_LIB_PATH, ouch @if gcc @@ -567,7 +624,7 @@ @if ppl HOST_LIB_PATH_ppl = \ - $$r/$(HOST_SUBDIR)/ppl/.libs:$$r/$(HOST_SUBDIR)/prev-ppl/.libs: + $$r/$(HOST_SUBDIR)/ppl/src/.libs:$$r/$(HOST_SUBDIR)/prev-ppl/src/.libs: @endif ppl @if cloog @@ -575,6 +632,31 @@ $$r/$(HOST_SUBDIR)/cloog/.libs:$$r/$(HOST_SUBDIR)/prev-cloog/.libs: @endif cloog +@if libelf +HOST_LIB_PATH_libelf = \ + $$r/$(HOST_SUBDIR)/libelf/.libs:$$r/$(HOST_SUBDIR)/prev-libelf/.libs: +@endif libelf + + +CXX_FOR_TARGET_FLAG_TO_PASS = \ + "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" +@if target-libstdc++-v3 +# CXX_FOR_TARGET is tricky to get right for target libs that require a +# functional C++ compiler. When we recurse, if we expand +# CXX_FOR_TARGET before configuring libstdc++-v3, we won't get +# libstdc++ include flags from the script. Instead, we get an +# -funconfigured-* word, so that we'll get errors if this invalid C++ +# command line is used for anything, but also so that we can use the +# word to decide whether or not to pass on this CXX_FOR_TARGET. If we +# don't pass it on, sub-make will use the default definition, that +# re-expands it at the time of use, so we'll get it right when we need +# it. One potential exception is the expansion of CXX_FOR_TARGET +# passed down as part of CXX within TARGET_FLAGS, but this wouldn't +# really work, for C++ host programs can't depend on the current-stage +# C++ target library. +CXX_FOR_TARGET_FLAG_TO_PASS = \ + $(shell if echo "$(CXX_FOR_TARGET)" | grep " -funconfigured-" > /dev/null; then :; else echo '"CXX_FOR_TARGET=$(CXX_FOR_TARGET)"'; fi) +@endif target-libstdc++-v3 # Flags to pass down to all sub-makes. BASE_FLAGS_TO_PASS = \ @@ -643,12 +725,13 @@ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ "CPPFLAGS_FOR_TARGET=$(CPPFLAGS_FOR_TARGET)" \ - "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \ "CXXFLAGS_FOR_TARGET=$(CXXFLAGS_FOR_TARGET)" \ "DLLTOOL_FOR_TARGET=$(DLLTOOL_FOR_TARGET)" \ "FLAGS_FOR_TARGET=$(FLAGS_FOR_TARGET)" \ "GCJ_FOR_TARGET=$(GCJ_FOR_TARGET)" \ "GFORTRAN_FOR_TARGET=$(GFORTRAN_FOR_TARGET)" \ + "GOC_FOR_TARGET=$(GOC_FOR_TARGET)" \ + "GOCFLAGS_FOR_TARGET=$(GOCFLAGS_FOR_TARGET)" \ "LD_FOR_TARGET=$(LD_FOR_TARGET)" \ "LIPO_FOR_TARGET=$(LIPO_FOR_TARGET)" \ "LDFLAGS_FOR_TARGET=$(LDFLAGS_FOR_TARGET)" \ @@ -664,17 +747,24 @@ "`echo 'LANGUAGES=$(LANGUAGES)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \ "LEAN=$(LEAN)" \ "STAGE1_CFLAGS=$(STAGE1_CFLAGS)" \ + "STAGE1_CXXFLAGS=$(STAGE1_CXXFLAGS)" \ "STAGE1_TFLAGS=$(STAGE1_TFLAGS)" \ "STAGE2_CFLAGS=$(STAGE2_CFLAGS)" \ + "STAGE2_CXXFLAGS=$(STAGE2_CXXFLAGS)" \ "STAGE2_TFLAGS=$(STAGE2_TFLAGS)" \ "STAGE3_CFLAGS=$(STAGE3_CFLAGS)" \ + "STAGE3_CXXFLAGS=$(STAGE3_CXXFLAGS)" \ "STAGE3_TFLAGS=$(STAGE3_TFLAGS)" \ "STAGE4_CFLAGS=$(STAGE4_CFLAGS)" \ + "STAGE4_CXXFLAGS=$(STAGE4_CXXFLAGS)" \ "STAGE4_TFLAGS=$(STAGE4_TFLAGS)" \ "STAGEprofile_CFLAGS=$(STAGEprofile_CFLAGS)" \ + "STAGEprofile_CXXFLAGS=$(STAGEprofile_CXXFLAGS)" \ "STAGEprofile_TFLAGS=$(STAGEprofile_TFLAGS)" \ "STAGEfeedback_CFLAGS=$(STAGEfeedback_CFLAGS)" \ + "STAGEfeedback_CXXFLAGS=$(STAGEfeedback_CXXFLAGS)" \ "STAGEfeedback_TFLAGS=$(STAGEfeedback_TFLAGS)" \ + $(CXX_FOR_TARGET_FLAG_TO_PASS) \ "TFLAGS=$(TFLAGS)" \ "CONFIG_SHELL=$(SHELL)" \ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" @@ -692,6 +782,7 @@ 'DLLTOOL=$(DLLTOOL)' \ 'GCJ=$(GCJ)' \ 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ 'LD=$(LD)' \ 'LIPO=$(LIPO)' \ 'NM=$(NM)' \ @@ -703,26 +794,14 @@ FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) -# Flags that are concerned with the location of the X11 include files -# and library files -# -# NOTE: until the top-level is getting the values via autoconf, it only -# causes problems to have this top-level Makefile overriding the autoconf-set -# values in child directories. Only variables that don't conflict with -# autoconf'ed ones should be passed by X11_FLAGS_TO_PASS for now. -# -X11_FLAGS_TO_PASS = \ - 'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \ - 'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)' - # Flags to pass to stage2 and later makes. POSTSTAGE1_FLAGS_TO_PASS = \ CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ GNATBIND="$${GNATBIND}" \ - LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)" \ - HOST_LIBS="$(POSTSTAGE1_LIBS)" \ + LDFLAGS="$${LDFLAGS}" \ + HOST_LIBS="$${HOST_LIBS}" \ "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" # Flags to pass down to makes which are built with the target environment. @@ -740,6 +819,8 @@ 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ 'GCJ=$$(GCJ_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ 'LD=$(COMPILER_LD_FOR_TARGET)' \ 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ @@ -809,6 +890,7 @@ maybe-configure-mpc \ maybe-configure-ppl \ maybe-configure-cloog \ + maybe-configure-libelf \ maybe-configure-gnuserv \ maybe-configure-gold \ maybe-configure-gprof \ @@ -854,7 +936,8 @@ maybe-configure-tk \ maybe-configure-libtermcap \ maybe-configure-utils \ - maybe-configure-gnattools + maybe-configure-gnattools \ + maybe-configure-lto-plugin .PHONY: configure-target configure-target: \ maybe-configure-target-libstdc++-v3 \ @@ -862,8 +945,10 @@ maybe-configure-target-libssp \ maybe-configure-target-newlib \ maybe-configure-target-libgcc \ + maybe-configure-target-libquadmath \ maybe-configure-target-libgfortran \ maybe-configure-target-libobjc \ + maybe-configure-target-libgo \ maybe-configure-target-libtermcap \ maybe-configure-target-winsup \ maybe-configure-target-libgloss \ @@ -966,6 +1051,9 @@ @if cloog-no-bootstrap all-host: maybe-all-cloog @endif cloog-no-bootstrap +@if libelf-no-bootstrap +all-host: maybe-all-libelf +@endif libelf-no-bootstrap all-host: maybe-all-gnuserv @if gold-no-bootstrap all-host: maybe-all-gold @@ -1026,6 +1114,9 @@ all-host: maybe-all-libtermcap all-host: maybe-all-utils all-host: maybe-all-gnattools +@if lto-plugin-no-bootstrap +all-host: maybe-all-lto-plugin +@endif lto-plugin-no-bootstrap .PHONY: all-target @@ -1038,8 +1129,10 @@ @if target-libgcc-no-bootstrap all-target: maybe-all-target-libgcc @endif target-libgcc-no-bootstrap +all-target: maybe-all-target-libquadmath all-target: maybe-all-target-libgfortran all-target: maybe-all-target-libobjc +all-target: maybe-all-target-libgo all-target: maybe-all-target-libtermcap all-target: maybe-all-target-winsup all-target: maybe-all-target-libgloss @@ -1053,7 +1146,9 @@ all-target: maybe-all-target-qthreads all-target: maybe-all-target-rda all-target: maybe-all-target-libada +@if target-libgomp-no-bootstrap all-target: maybe-all-target-libgomp +@endif target-libgomp-no-bootstrap # Do a target for all the subdirectories. A ``make do-X'' will do a # ``make X'' in all subdirectories (because, in general, there is a @@ -1101,6 +1196,7 @@ info-host: maybe-info-mpc info-host: maybe-info-ppl info-host: maybe-info-cloog +info-host: maybe-info-libelf info-host: maybe-info-gnuserv info-host: maybe-info-gold info-host: maybe-info-gprof @@ -1147,6 +1243,7 @@ info-host: maybe-info-libtermcap info-host: maybe-info-utils info-host: maybe-info-gnattools +info-host: maybe-info-lto-plugin .PHONY: info-target @@ -1155,8 +1252,10 @@ info-target: maybe-info-target-libssp info-target: maybe-info-target-newlib info-target: maybe-info-target-libgcc +info-target: maybe-info-target-libquadmath info-target: maybe-info-target-libgfortran info-target: maybe-info-target-libobjc +info-target: maybe-info-target-libgo info-target: maybe-info-target-libtermcap info-target: maybe-info-target-winsup info-target: maybe-info-target-libgloss @@ -1213,6 +1312,7 @@ dvi-host: maybe-dvi-mpc dvi-host: maybe-dvi-ppl dvi-host: maybe-dvi-cloog +dvi-host: maybe-dvi-libelf dvi-host: maybe-dvi-gnuserv dvi-host: maybe-dvi-gold dvi-host: maybe-dvi-gprof @@ -1259,6 +1359,7 @@ dvi-host: maybe-dvi-libtermcap dvi-host: maybe-dvi-utils dvi-host: maybe-dvi-gnattools +dvi-host: maybe-dvi-lto-plugin .PHONY: dvi-target @@ -1267,8 +1368,10 @@ dvi-target: maybe-dvi-target-libssp dvi-target: maybe-dvi-target-newlib dvi-target: maybe-dvi-target-libgcc +dvi-target: maybe-dvi-target-libquadmath dvi-target: maybe-dvi-target-libgfortran dvi-target: maybe-dvi-target-libobjc +dvi-target: maybe-dvi-target-libgo dvi-target: maybe-dvi-target-libtermcap dvi-target: maybe-dvi-target-winsup dvi-target: maybe-dvi-target-libgloss @@ -1325,6 +1428,7 @@ pdf-host: maybe-pdf-mpc pdf-host: maybe-pdf-ppl pdf-host: maybe-pdf-cloog +pdf-host: maybe-pdf-libelf pdf-host: maybe-pdf-gnuserv pdf-host: maybe-pdf-gold pdf-host: maybe-pdf-gprof @@ -1371,6 +1475,7 @@ pdf-host: maybe-pdf-libtermcap pdf-host: maybe-pdf-utils pdf-host: maybe-pdf-gnattools +pdf-host: maybe-pdf-lto-plugin .PHONY: pdf-target @@ -1379,8 +1484,10 @@ pdf-target: maybe-pdf-target-libssp pdf-target: maybe-pdf-target-newlib pdf-target: maybe-pdf-target-libgcc +pdf-target: maybe-pdf-target-libquadmath pdf-target: maybe-pdf-target-libgfortran pdf-target: maybe-pdf-target-libobjc +pdf-target: maybe-pdf-target-libgo pdf-target: maybe-pdf-target-libtermcap pdf-target: maybe-pdf-target-winsup pdf-target: maybe-pdf-target-libgloss @@ -1437,6 +1544,7 @@ html-host: maybe-html-mpc html-host: maybe-html-ppl html-host: maybe-html-cloog +html-host: maybe-html-libelf html-host: maybe-html-gnuserv html-host: maybe-html-gold html-host: maybe-html-gprof @@ -1483,6 +1591,7 @@ html-host: maybe-html-libtermcap html-host: maybe-html-utils html-host: maybe-html-gnattools +html-host: maybe-html-lto-plugin .PHONY: html-target @@ -1491,8 +1600,10 @@ html-target: maybe-html-target-libssp html-target: maybe-html-target-newlib html-target: maybe-html-target-libgcc +html-target: maybe-html-target-libquadmath html-target: maybe-html-target-libgfortran html-target: maybe-html-target-libobjc +html-target: maybe-html-target-libgo html-target: maybe-html-target-libtermcap html-target: maybe-html-target-winsup html-target: maybe-html-target-libgloss @@ -1549,6 +1660,7 @@ TAGS-host: maybe-TAGS-mpc TAGS-host: maybe-TAGS-ppl TAGS-host: maybe-TAGS-cloog +TAGS-host: maybe-TAGS-libelf TAGS-host: maybe-TAGS-gnuserv TAGS-host: maybe-TAGS-gold TAGS-host: maybe-TAGS-gprof @@ -1595,6 +1707,7 @@ TAGS-host: maybe-TAGS-libtermcap TAGS-host: maybe-TAGS-utils TAGS-host: maybe-TAGS-gnattools +TAGS-host: maybe-TAGS-lto-plugin .PHONY: TAGS-target @@ -1603,8 +1716,10 @@ TAGS-target: maybe-TAGS-target-libssp TAGS-target: maybe-TAGS-target-newlib TAGS-target: maybe-TAGS-target-libgcc +TAGS-target: maybe-TAGS-target-libquadmath TAGS-target: maybe-TAGS-target-libgfortran TAGS-target: maybe-TAGS-target-libobjc +TAGS-target: maybe-TAGS-target-libgo TAGS-target: maybe-TAGS-target-libtermcap TAGS-target: maybe-TAGS-target-winsup TAGS-target: maybe-TAGS-target-libgloss @@ -1661,6 +1776,7 @@ install-info-host: maybe-install-info-mpc install-info-host: maybe-install-info-ppl install-info-host: maybe-install-info-cloog +install-info-host: maybe-install-info-libelf install-info-host: maybe-install-info-gnuserv install-info-host: maybe-install-info-gold install-info-host: maybe-install-info-gprof @@ -1707,6 +1823,7 @@ install-info-host: maybe-install-info-libtermcap install-info-host: maybe-install-info-utils install-info-host: maybe-install-info-gnattools +install-info-host: maybe-install-info-lto-plugin .PHONY: install-info-target @@ -1715,8 +1832,10 @@ install-info-target: maybe-install-info-target-libssp install-info-target: maybe-install-info-target-newlib install-info-target: maybe-install-info-target-libgcc +install-info-target: maybe-install-info-target-libquadmath install-info-target: maybe-install-info-target-libgfortran install-info-target: maybe-install-info-target-libobjc +install-info-target: maybe-install-info-target-libgo install-info-target: maybe-install-info-target-libtermcap install-info-target: maybe-install-info-target-winsup install-info-target: maybe-install-info-target-libgloss @@ -1773,6 +1892,7 @@ install-pdf-host: maybe-install-pdf-mpc install-pdf-host: maybe-install-pdf-ppl install-pdf-host: maybe-install-pdf-cloog +install-pdf-host: maybe-install-pdf-libelf install-pdf-host: maybe-install-pdf-gnuserv install-pdf-host: maybe-install-pdf-gold install-pdf-host: maybe-install-pdf-gprof @@ -1819,6 +1939,7 @@ install-pdf-host: maybe-install-pdf-libtermcap install-pdf-host: maybe-install-pdf-utils install-pdf-host: maybe-install-pdf-gnattools +install-pdf-host: maybe-install-pdf-lto-plugin .PHONY: install-pdf-target @@ -1827,8 +1948,10 @@ install-pdf-target: maybe-install-pdf-target-libssp install-pdf-target: maybe-install-pdf-target-newlib install-pdf-target: maybe-install-pdf-target-libgcc +install-pdf-target: maybe-install-pdf-target-libquadmath install-pdf-target: maybe-install-pdf-target-libgfortran install-pdf-target: maybe-install-pdf-target-libobjc +install-pdf-target: maybe-install-pdf-target-libgo install-pdf-target: maybe-install-pdf-target-libtermcap install-pdf-target: maybe-install-pdf-target-winsup install-pdf-target: maybe-install-pdf-target-libgloss @@ -1885,6 +2008,7 @@ install-html-host: maybe-install-html-mpc install-html-host: maybe-install-html-ppl install-html-host: maybe-install-html-cloog +install-html-host: maybe-install-html-libelf install-html-host: maybe-install-html-gnuserv install-html-host: maybe-install-html-gold install-html-host: maybe-install-html-gprof @@ -1931,6 +2055,7 @@ install-html-host: maybe-install-html-libtermcap install-html-host: maybe-install-html-utils install-html-host: maybe-install-html-gnattools +install-html-host: maybe-install-html-lto-plugin .PHONY: install-html-target @@ -1939,8 +2064,10 @@ install-html-target: maybe-install-html-target-libssp install-html-target: maybe-install-html-target-newlib install-html-target: maybe-install-html-target-libgcc +install-html-target: maybe-install-html-target-libquadmath install-html-target: maybe-install-html-target-libgfortran install-html-target: maybe-install-html-target-libobjc +install-html-target: maybe-install-html-target-libgo install-html-target: maybe-install-html-target-libtermcap install-html-target: maybe-install-html-target-winsup install-html-target: maybe-install-html-target-libgloss @@ -1997,6 +2124,7 @@ installcheck-host: maybe-installcheck-mpc installcheck-host: maybe-installcheck-ppl installcheck-host: maybe-installcheck-cloog +installcheck-host: maybe-installcheck-libelf installcheck-host: maybe-installcheck-gnuserv installcheck-host: maybe-installcheck-gold installcheck-host: maybe-installcheck-gprof @@ -2043,6 +2171,7 @@ installcheck-host: maybe-installcheck-libtermcap installcheck-host: maybe-installcheck-utils installcheck-host: maybe-installcheck-gnattools +installcheck-host: maybe-installcheck-lto-plugin .PHONY: installcheck-target @@ -2051,8 +2180,10 @@ installcheck-target: maybe-installcheck-target-libssp installcheck-target: maybe-installcheck-target-newlib installcheck-target: maybe-installcheck-target-libgcc +installcheck-target: maybe-installcheck-target-libquadmath installcheck-target: maybe-installcheck-target-libgfortran installcheck-target: maybe-installcheck-target-libobjc +installcheck-target: maybe-installcheck-target-libgo installcheck-target: maybe-installcheck-target-libtermcap installcheck-target: maybe-installcheck-target-winsup installcheck-target: maybe-installcheck-target-libgloss @@ -2109,6 +2240,7 @@ mostlyclean-host: maybe-mostlyclean-mpc mostlyclean-host: maybe-mostlyclean-ppl mostlyclean-host: maybe-mostlyclean-cloog +mostlyclean-host: maybe-mostlyclean-libelf mostlyclean-host: maybe-mostlyclean-gnuserv mostlyclean-host: maybe-mostlyclean-gold mostlyclean-host: maybe-mostlyclean-gprof @@ -2155,6 +2287,7 @@ mostlyclean-host: maybe-mostlyclean-libtermcap mostlyclean-host: maybe-mostlyclean-utils mostlyclean-host: maybe-mostlyclean-gnattools +mostlyclean-host: maybe-mostlyclean-lto-plugin .PHONY: mostlyclean-target @@ -2163,8 +2296,10 @@ mostlyclean-target: maybe-mostlyclean-target-libssp mostlyclean-target: maybe-mostlyclean-target-newlib mostlyclean-target: maybe-mostlyclean-target-libgcc +mostlyclean-target: maybe-mostlyclean-target-libquadmath mostlyclean-target: maybe-mostlyclean-target-libgfortran mostlyclean-target: maybe-mostlyclean-target-libobjc +mostlyclean-target: maybe-mostlyclean-target-libgo mostlyclean-target: maybe-mostlyclean-target-libtermcap mostlyclean-target: maybe-mostlyclean-target-winsup mostlyclean-target: maybe-mostlyclean-target-libgloss @@ -2221,6 +2356,7 @@ clean-host: maybe-clean-mpc clean-host: maybe-clean-ppl clean-host: maybe-clean-cloog +clean-host: maybe-clean-libelf clean-host: maybe-clean-gnuserv clean-host: maybe-clean-gold clean-host: maybe-clean-gprof @@ -2267,6 +2403,7 @@ clean-host: maybe-clean-libtermcap clean-host: maybe-clean-utils clean-host: maybe-clean-gnattools +clean-host: maybe-clean-lto-plugin .PHONY: clean-target @@ -2275,8 +2412,10 @@ clean-target: maybe-clean-target-libssp clean-target: maybe-clean-target-newlib clean-target: maybe-clean-target-libgcc +clean-target: maybe-clean-target-libquadmath clean-target: maybe-clean-target-libgfortran clean-target: maybe-clean-target-libobjc +clean-target: maybe-clean-target-libgo clean-target: maybe-clean-target-libtermcap clean-target: maybe-clean-target-winsup clean-target: maybe-clean-target-libgloss @@ -2333,6 +2472,7 @@ distclean-host: maybe-distclean-mpc distclean-host: maybe-distclean-ppl distclean-host: maybe-distclean-cloog +distclean-host: maybe-distclean-libelf distclean-host: maybe-distclean-gnuserv distclean-host: maybe-distclean-gold distclean-host: maybe-distclean-gprof @@ -2379,6 +2519,7 @@ distclean-host: maybe-distclean-libtermcap distclean-host: maybe-distclean-utils distclean-host: maybe-distclean-gnattools +distclean-host: maybe-distclean-lto-plugin .PHONY: distclean-target @@ -2387,8 +2528,10 @@ distclean-target: maybe-distclean-target-libssp distclean-target: maybe-distclean-target-newlib distclean-target: maybe-distclean-target-libgcc +distclean-target: maybe-distclean-target-libquadmath distclean-target: maybe-distclean-target-libgfortran distclean-target: maybe-distclean-target-libobjc +distclean-target: maybe-distclean-target-libgo distclean-target: maybe-distclean-target-libtermcap distclean-target: maybe-distclean-target-winsup distclean-target: maybe-distclean-target-libgloss @@ -2445,6 +2588,7 @@ maintainer-clean-host: maybe-maintainer-clean-mpc maintainer-clean-host: maybe-maintainer-clean-ppl maintainer-clean-host: maybe-maintainer-clean-cloog +maintainer-clean-host: maybe-maintainer-clean-libelf maintainer-clean-host: maybe-maintainer-clean-gnuserv maintainer-clean-host: maybe-maintainer-clean-gold maintainer-clean-host: maybe-maintainer-clean-gprof @@ -2491,6 +2635,7 @@ maintainer-clean-host: maybe-maintainer-clean-libtermcap maintainer-clean-host: maybe-maintainer-clean-utils maintainer-clean-host: maybe-maintainer-clean-gnattools +maintainer-clean-host: maybe-maintainer-clean-lto-plugin .PHONY: maintainer-clean-target @@ -2499,8 +2644,10 @@ maintainer-clean-target: maybe-maintainer-clean-target-libssp maintainer-clean-target: maybe-maintainer-clean-target-newlib maintainer-clean-target: maybe-maintainer-clean-target-libgcc +maintainer-clean-target: maybe-maintainer-clean-target-libquadmath maintainer-clean-target: maybe-maintainer-clean-target-libgfortran maintainer-clean-target: maybe-maintainer-clean-target-libobjc +maintainer-clean-target: maybe-maintainer-clean-target-libgo maintainer-clean-target: maybe-maintainer-clean-target-libtermcap maintainer-clean-target: maybe-maintainer-clean-target-winsup maintainer-clean-target: maybe-maintainer-clean-target-libgloss @@ -2561,6 +2708,7 @@ -rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null -rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null + -find . -name config.cache -exec rm -f {} \; \; 2>/dev/null local-maintainer-clean: @echo "This command is intended for maintainers to use;" @@ -2611,6 +2759,7 @@ maybe-check-mpc \ maybe-check-ppl \ maybe-check-cloog \ + maybe-check-libelf \ maybe-check-gnuserv \ maybe-check-gold \ maybe-check-gprof \ @@ -2656,7 +2805,8 @@ maybe-check-tk \ maybe-check-libtermcap \ maybe-check-utils \ - maybe-check-gnattools + maybe-check-gnattools \ + maybe-check-lto-plugin .PHONY: check-target check-target: \ @@ -2665,8 +2815,10 @@ maybe-check-target-libssp \ maybe-check-target-newlib \ maybe-check-target-libgcc \ + maybe-check-target-libquadmath \ maybe-check-target-libgfortran \ maybe-check-target-libobjc \ + maybe-check-target-libgo \ maybe-check-target-libtermcap \ maybe-check-target-winsup \ maybe-check-target-libgloss \ @@ -2749,6 +2901,7 @@ maybe-install-mpc \ maybe-install-ppl \ maybe-install-cloog \ + maybe-install-libelf \ maybe-install-gnuserv \ maybe-install-gold \ maybe-install-gprof \ @@ -2794,7 +2947,8 @@ maybe-install-tk \ maybe-install-libtermcap \ maybe-install-utils \ - maybe-install-gnattools + maybe-install-gnattools \ + maybe-install-lto-plugin .PHONY: install-host install-host: \ @@ -2828,6 +2982,7 @@ maybe-install-mpc \ maybe-install-ppl \ maybe-install-cloog \ + maybe-install-libelf \ maybe-install-gnuserv \ maybe-install-gold \ maybe-install-gprof \ @@ -2873,7 +3028,8 @@ maybe-install-tk \ maybe-install-libtermcap \ maybe-install-utils \ - maybe-install-gnattools + maybe-install-gnattools \ + maybe-install-lto-plugin .PHONY: install-target install-target: \ @@ -2882,8 +3038,10 @@ maybe-install-target-libssp \ maybe-install-target-newlib \ maybe-install-target-libgcc \ + maybe-install-target-libquadmath \ maybe-install-target-libgfortran \ maybe-install-target-libobjc \ + maybe-install-target-libgo \ maybe-install-target-libtermcap \ maybe-install-target-winsup \ maybe-install-target-libgloss \ @@ -2920,6 +3078,121 @@ install-no-fixedincludes: installdirs install-host-nogcc \ install-target gcc-no-fixedincludes +.PHONY: install-strip +install-strip: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(MAKE) $(RECURSE_FLAGS_TO_PASS) installdirs install-strip-host install-strip-target + +.PHONY: install-strip-host +install-strip-host: \ + maybe-install-strip-ash \ + maybe-install-strip-autoconf \ + maybe-install-strip-automake \ + maybe-install-strip-bash \ + maybe-install-strip-bfd \ + maybe-install-strip-opcodes \ + maybe-install-strip-binutils \ + maybe-install-strip-bison \ + maybe-install-strip-byacc \ + maybe-install-strip-bzip2 \ + maybe-install-strip-cgen \ + maybe-install-strip-dejagnu \ + maybe-install-strip-diff \ + maybe-install-strip-dosutils \ + maybe-install-strip-etc \ + maybe-install-strip-fastjar \ + maybe-install-strip-fileutils \ + maybe-install-strip-findutils \ + maybe-install-strip-find \ + maybe-install-strip-fixincludes \ + maybe-install-strip-flex \ + maybe-install-strip-gas \ + maybe-install-strip-gcc \ + maybe-install-strip-gawk \ + maybe-install-strip-gettext \ + maybe-install-strip-gmp \ + maybe-install-strip-mpfr \ + maybe-install-strip-mpc \ + maybe-install-strip-ppl \ + maybe-install-strip-cloog \ + maybe-install-strip-libelf \ + maybe-install-strip-gnuserv \ + maybe-install-strip-gold \ + maybe-install-strip-gprof \ + maybe-install-strip-gzip \ + maybe-install-strip-hello \ + maybe-install-strip-indent \ + maybe-install-strip-intl \ + maybe-install-strip-tcl \ + maybe-install-strip-itcl \ + maybe-install-strip-ld \ + maybe-install-strip-libcpp \ + maybe-install-strip-libdecnumber \ + maybe-install-strip-libgui \ + maybe-install-strip-libiberty \ + maybe-install-strip-libiconv \ + maybe-install-strip-libtool \ + maybe-install-strip-m4 \ + maybe-install-strip-make \ + maybe-install-strip-mmalloc \ + maybe-install-strip-patch \ + maybe-install-strip-perl \ + maybe-install-strip-prms \ + maybe-install-strip-rcs \ + maybe-install-strip-readline \ + maybe-install-strip-release \ + maybe-install-strip-recode \ + maybe-install-strip-sed \ + maybe-install-strip-send-pr \ + maybe-install-strip-shellutils \ + maybe-install-strip-sid \ + maybe-install-strip-sim \ + maybe-install-strip-tar \ + maybe-install-strip-texinfo \ + maybe-install-strip-textutils \ + maybe-install-strip-time \ + maybe-install-strip-uudecode \ + maybe-install-strip-wdiff \ + maybe-install-strip-zip \ + maybe-install-strip-zlib \ + maybe-install-strip-gdb \ + maybe-install-strip-expect \ + maybe-install-strip-guile \ + maybe-install-strip-tk \ + maybe-install-strip-libtermcap \ + maybe-install-strip-utils \ + maybe-install-strip-gnattools \ + maybe-install-strip-lto-plugin + +.PHONY: install-strip-target +install-strip-target: \ + maybe-install-strip-target-libstdc++-v3 \ + maybe-install-strip-target-libmudflap \ + maybe-install-strip-target-libssp \ + maybe-install-strip-target-newlib \ + maybe-install-strip-target-libgcc \ + maybe-install-strip-target-libquadmath \ + maybe-install-strip-target-libgfortran \ + maybe-install-strip-target-libobjc \ + maybe-install-strip-target-libgo \ + maybe-install-strip-target-libtermcap \ + maybe-install-strip-target-winsup \ + maybe-install-strip-target-libgloss \ + maybe-install-strip-target-libiberty \ + maybe-install-strip-target-gperf \ + maybe-install-strip-target-examples \ + maybe-install-strip-target-libffi \ + maybe-install-strip-target-libjava \ + maybe-install-strip-target-zlib \ + maybe-install-strip-target-boehm-gc \ + maybe-install-strip-target-qthreads \ + maybe-install-strip-target-rda \ + maybe-install-strip-target-libada \ + maybe-install-strip-target-libgomp + + ### other supporting targets MAKEDIRS= \ @@ -2976,7 +3249,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(BUILD_SUBDIR)/libiberty/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/libiberty ; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ echo Configuring in $(BUILD_SUBDIR)/libiberty; \ cd "$(BUILD_SUBDIR)/libiberty" || exit 1; \ case $(srcdir) in \ @@ -3009,7 +3282,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ (cd $(BUILD_SUBDIR)/libiberty && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ $(TARGET-build-libiberty)) @@ -3032,7 +3305,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(BUILD_SUBDIR)/bison/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/bison ; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ echo Configuring in $(BUILD_SUBDIR)/bison; \ cd "$(BUILD_SUBDIR)/bison" || exit 1; \ case $(srcdir) in \ @@ -3065,7 +3338,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ (cd $(BUILD_SUBDIR)/bison && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ $(TARGET-build-bison)) @@ -3088,7 +3361,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(BUILD_SUBDIR)/byacc/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/byacc ; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ echo Configuring in $(BUILD_SUBDIR)/byacc; \ cd "$(BUILD_SUBDIR)/byacc" || exit 1; \ case $(srcdir) in \ @@ -3121,7 +3394,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ (cd $(BUILD_SUBDIR)/byacc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ $(TARGET-build-byacc)) @@ -3144,7 +3417,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(BUILD_SUBDIR)/flex/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/flex ; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ echo Configuring in $(BUILD_SUBDIR)/flex; \ cd "$(BUILD_SUBDIR)/flex" || exit 1; \ case $(srcdir) in \ @@ -3177,7 +3450,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ (cd $(BUILD_SUBDIR)/flex && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ $(TARGET-build-flex)) @@ -3200,7 +3473,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(BUILD_SUBDIR)/m4/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/m4 ; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ echo Configuring in $(BUILD_SUBDIR)/m4; \ cd "$(BUILD_SUBDIR)/m4" || exit 1; \ case $(srcdir) in \ @@ -3233,7 +3506,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ (cd $(BUILD_SUBDIR)/m4 && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ $(TARGET-build-m4)) @@ -3256,7 +3529,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(BUILD_SUBDIR)/texinfo/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/texinfo ; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ echo Configuring in $(BUILD_SUBDIR)/texinfo; \ cd "$(BUILD_SUBDIR)/texinfo" || exit 1; \ case $(srcdir) in \ @@ -3289,7 +3562,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ (cd $(BUILD_SUBDIR)/texinfo && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ $(TARGET-build-texinfo)) @@ -3312,7 +3585,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(BUILD_SUBDIR)/fixincludes/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/fixincludes ; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ echo Configuring in $(BUILD_SUBDIR)/fixincludes; \ cd "$(BUILD_SUBDIR)/fixincludes" || exit 1; \ case $(srcdir) in \ @@ -3345,7 +3618,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(BUILD_EXPORTS) \ + $(BUILD_EXPORTS) \ (cd $(BUILD_SUBDIR)/fixincludes && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ $(TARGET-build-fixincludes)) @@ -3373,7 +3646,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/ash/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ash ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/ash; \ cd "$(HOST_SUBDIR)/ash" || exit 1; \ case $(srcdir) in \ @@ -3405,7 +3678,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/ash && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-ash)) @@ -3444,6 +3717,21 @@ @endif ash +.PHONY: install-strip-ash maybe-install-strip-ash +maybe-install-strip-ash: +@if ash +maybe-install-strip-ash: install-strip-ash + +install-strip-ash: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/ash && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif ash + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-ash info-ash @@ -3798,7 +4086,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/autoconf/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/autoconf ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/autoconf; \ cd "$(HOST_SUBDIR)/autoconf" || exit 1; \ case $(srcdir) in \ @@ -3830,7 +4118,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/autoconf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-autoconf)) @@ -3869,6 +4157,21 @@ @endif autoconf +.PHONY: install-strip-autoconf maybe-install-strip-autoconf +maybe-install-strip-autoconf: +@if autoconf +maybe-install-strip-autoconf: install-strip-autoconf + +install-strip-autoconf: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/autoconf && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif autoconf + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-autoconf info-autoconf @@ -4223,7 +4526,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/automake/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/automake ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/automake; \ cd "$(HOST_SUBDIR)/automake" || exit 1; \ case $(srcdir) in \ @@ -4255,7 +4558,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/automake && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-automake)) @@ -4294,6 +4597,21 @@ @endif automake +.PHONY: install-strip-automake maybe-install-strip-automake +maybe-install-strip-automake: +@if automake +maybe-install-strip-automake: install-strip-automake + +install-strip-automake: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/automake && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif automake + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-automake info-automake @@ -4648,7 +4966,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/bash/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bash ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/bash; \ cd "$(HOST_SUBDIR)/bash" || exit 1; \ case $(srcdir) in \ @@ -4680,7 +4998,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/bash && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-bash)) @@ -4719,6 +5037,21 @@ @endif bash +.PHONY: install-strip-bash maybe-install-strip-bash +maybe-install-strip-bash: +@if bash +maybe-install-strip-bash: install-strip-bash + +install-strip-bash: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/bash && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif bash + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-bash info-bash @@ -5072,7 +5405,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/bfd; \ cd "$(HOST_SUBDIR)/bfd" || exit 1; \ case $(srcdir) in \ @@ -5103,8 +5436,8 @@ test ! -f $(HOST_SUBDIR)/bfd/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/bfd ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ cd $(HOST_SUBDIR)/bfd || exit 1; \ @@ -5135,8 +5468,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/bfd ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ cd $(HOST_SUBDIR)/bfd || exit 1; \ @@ -5168,8 +5501,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/bfd ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ cd $(HOST_SUBDIR)/bfd || exit 1; \ @@ -5201,8 +5534,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/bfd ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ cd $(HOST_SUBDIR)/bfd || exit 1; \ @@ -5234,8 +5567,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/bfd ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ cd $(HOST_SUBDIR)/bfd || exit 1; \ @@ -5267,8 +5600,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/bfd ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bfd ; \ cd $(HOST_SUBDIR)/bfd || exit 1; \ @@ -5301,7 +5634,7 @@ all-bfd: configure-bfd @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/bfd && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-bfd)) @@ -5322,11 +5655,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/bfd && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -5364,11 +5697,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/bfd && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -5407,11 +5740,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/bfd && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -5450,11 +5783,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/bfd && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -5493,11 +5826,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/bfd && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -5536,11 +5869,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/bfd && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -5598,6 +5931,21 @@ @endif bfd +.PHONY: install-strip-bfd maybe-install-strip-bfd +maybe-install-strip-bfd: +@if bfd +maybe-install-strip-bfd: install-strip-bfd + +install-strip-bfd: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/bfd && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif bfd + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-bfd info-bfd @@ -5938,7 +6286,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/opcodes; \ cd "$(HOST_SUBDIR)/opcodes" || exit 1; \ case $(srcdir) in \ @@ -5969,8 +6317,8 @@ test ! -f $(HOST_SUBDIR)/opcodes/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/opcodes ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ cd $(HOST_SUBDIR)/opcodes || exit 1; \ @@ -6001,8 +6349,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/opcodes ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ cd $(HOST_SUBDIR)/opcodes || exit 1; \ @@ -6034,8 +6382,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/opcodes ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ cd $(HOST_SUBDIR)/opcodes || exit 1; \ @@ -6067,8 +6415,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/opcodes ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ cd $(HOST_SUBDIR)/opcodes || exit 1; \ @@ -6100,8 +6448,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/opcodes ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ cd $(HOST_SUBDIR)/opcodes || exit 1; \ @@ -6133,8 +6481,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/opcodes ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/opcodes ; \ cd $(HOST_SUBDIR)/opcodes || exit 1; \ @@ -6167,7 +6515,7 @@ all-opcodes: configure-opcodes @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/opcodes && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-opcodes)) @@ -6188,11 +6536,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/opcodes && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -6230,11 +6578,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/opcodes && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -6273,11 +6621,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/opcodes && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -6316,11 +6664,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/opcodes && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -6359,11 +6707,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/opcodes && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -6402,11 +6750,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/opcodes && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -6464,6 +6812,21 @@ @endif opcodes +.PHONY: install-strip-opcodes maybe-install-strip-opcodes +maybe-install-strip-opcodes: +@if opcodes +maybe-install-strip-opcodes: install-strip-opcodes + +install-strip-opcodes: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/opcodes && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif opcodes + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-opcodes info-opcodes @@ -6804,7 +7167,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/binutils; \ cd "$(HOST_SUBDIR)/binutils" || exit 1; \ case $(srcdir) in \ @@ -6835,8 +7198,8 @@ test ! -f $(HOST_SUBDIR)/binutils/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/binutils ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ cd $(HOST_SUBDIR)/binutils || exit 1; \ @@ -6867,8 +7230,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/binutils ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ cd $(HOST_SUBDIR)/binutils || exit 1; \ @@ -6900,8 +7263,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/binutils ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ cd $(HOST_SUBDIR)/binutils || exit 1; \ @@ -6933,8 +7296,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/binutils ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ cd $(HOST_SUBDIR)/binutils || exit 1; \ @@ -6966,8 +7329,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/binutils ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ cd $(HOST_SUBDIR)/binutils || exit 1; \ @@ -6999,8 +7362,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/binutils ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/binutils ; \ cd $(HOST_SUBDIR)/binutils || exit 1; \ @@ -7033,7 +7396,7 @@ all-binutils: configure-binutils @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/binutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-binutils)) @@ -7054,11 +7417,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/binutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -7096,11 +7459,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/binutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -7139,11 +7502,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/binutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -7182,11 +7545,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/binutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -7225,11 +7588,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/binutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -7268,11 +7631,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/binutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -7330,6 +7693,21 @@ @endif binutils +.PHONY: install-strip-binutils maybe-install-strip-binutils +maybe-install-strip-binutils: +@if binutils +maybe-install-strip-binutils: install-strip-binutils + +install-strip-binutils: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/binutils && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif binutils + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-binutils info-binutils @@ -7671,7 +8049,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/bison/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bison ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/bison; \ cd "$(HOST_SUBDIR)/bison" || exit 1; \ case $(srcdir) in \ @@ -7703,7 +8081,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/bison && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-bison)) @@ -7745,6 +8123,21 @@ @endif bison +.PHONY: install-strip-bison maybe-install-strip-bison +maybe-install-strip-bison: +@if bison +maybe-install-strip-bison: install-strip-bison + +install-strip-bison: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/bison && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif bison + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-bison info-bison @@ -8099,7 +8492,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/byacc/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/byacc ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/byacc; \ cd "$(HOST_SUBDIR)/byacc" || exit 1; \ case $(srcdir) in \ @@ -8131,7 +8524,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/byacc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-byacc)) @@ -8173,6 +8566,21 @@ @endif byacc +.PHONY: install-strip-byacc maybe-install-strip-byacc +maybe-install-strip-byacc: +@if byacc +maybe-install-strip-byacc: install-strip-byacc + +install-strip-byacc: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/byacc && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif byacc + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-byacc info-byacc @@ -8527,7 +8935,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/bzip2/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/bzip2 ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/bzip2; \ cd "$(HOST_SUBDIR)/bzip2" || exit 1; \ case $(srcdir) in \ @@ -8559,7 +8967,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/bzip2 && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-bzip2)) @@ -8598,6 +9006,21 @@ @endif bzip2 +.PHONY: install-strip-bzip2 maybe-install-strip-bzip2 +maybe-install-strip-bzip2: +@if bzip2 +maybe-install-strip-bzip2: install-strip-bzip2 + +install-strip-bzip2: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/bzip2 && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif bzip2 + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-bzip2 info-bzip2 @@ -8952,7 +9375,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/cgen/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cgen ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/cgen; \ cd "$(HOST_SUBDIR)/cgen" || exit 1; \ case $(srcdir) in \ @@ -8984,7 +9407,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/cgen && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-cgen)) @@ -9023,6 +9446,21 @@ @endif cgen +.PHONY: install-strip-cgen maybe-install-strip-cgen +maybe-install-strip-cgen: +@if cgen +maybe-install-strip-cgen: install-strip-cgen + +install-strip-cgen: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/cgen && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif cgen + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-cgen info-cgen @@ -9377,7 +9815,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/dejagnu/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/dejagnu ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/dejagnu; \ cd "$(HOST_SUBDIR)/dejagnu" || exit 1; \ case $(srcdir) in \ @@ -9409,7 +9847,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/dejagnu && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-dejagnu)) @@ -9448,6 +9886,21 @@ @endif dejagnu +.PHONY: install-strip-dejagnu maybe-install-strip-dejagnu +maybe-install-strip-dejagnu: +@if dejagnu +maybe-install-strip-dejagnu: install-strip-dejagnu + +install-strip-dejagnu: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/dejagnu && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif dejagnu + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-dejagnu info-dejagnu @@ -9802,7 +10255,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/diff/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/diff ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/diff; \ cd "$(HOST_SUBDIR)/diff" || exit 1; \ case $(srcdir) in \ @@ -9834,7 +10287,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/diff && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-diff)) @@ -9873,6 +10326,21 @@ @endif diff +.PHONY: install-strip-diff maybe-install-strip-diff +maybe-install-strip-diff: +@if diff +maybe-install-strip-diff: install-strip-diff + +install-strip-diff: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/diff && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif diff + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-diff info-diff @@ -10227,7 +10695,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/dosutils/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/dosutils ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/dosutils; \ cd "$(HOST_SUBDIR)/dosutils" || exit 1; \ case $(srcdir) in \ @@ -10259,7 +10727,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/dosutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-dosutils)) @@ -10292,6 +10760,21 @@ @endif dosutils +.PHONY: install-strip-dosutils maybe-install-strip-dosutils +maybe-install-strip-dosutils: +@if dosutils +maybe-install-strip-dosutils: install-strip-dosutils + +install-strip-dosutils: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/dosutils && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif dosutils + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-dosutils info-dosutils @@ -10646,7 +11129,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/etc/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/etc ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/etc; \ cd "$(HOST_SUBDIR)/etc" || exit 1; \ case $(srcdir) in \ @@ -10678,7 +11161,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/etc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-etc)) @@ -10717,6 +11200,21 @@ @endif etc +.PHONY: install-strip-etc maybe-install-strip-etc +maybe-install-strip-etc: +@if etc +maybe-install-strip-etc: install-strip-etc + +install-strip-etc: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/etc && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif etc + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-etc info-etc @@ -11071,7 +11569,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/fastjar/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fastjar ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/fastjar; \ cd "$(HOST_SUBDIR)/fastjar" || exit 1; \ case $(srcdir) in \ @@ -11103,7 +11601,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/fastjar && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-fastjar)) @@ -11145,6 +11643,21 @@ @endif fastjar +.PHONY: install-strip-fastjar maybe-install-strip-fastjar +maybe-install-strip-fastjar: +@if fastjar +maybe-install-strip-fastjar: install-strip-fastjar + +install-strip-fastjar: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/fastjar && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif fastjar + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-fastjar info-fastjar @@ -11499,7 +12012,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/fileutils/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fileutils ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/fileutils; \ cd "$(HOST_SUBDIR)/fileutils" || exit 1; \ case $(srcdir) in \ @@ -11531,7 +12044,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/fileutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-fileutils)) @@ -11570,6 +12083,21 @@ @endif fileutils +.PHONY: install-strip-fileutils maybe-install-strip-fileutils +maybe-install-strip-fileutils: +@if fileutils +maybe-install-strip-fileutils: install-strip-fileutils + +install-strip-fileutils: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/fileutils && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif fileutils + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-fileutils info-fileutils @@ -11924,7 +12452,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/findutils/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/findutils ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/findutils; \ cd "$(HOST_SUBDIR)/findutils" || exit 1; \ case $(srcdir) in \ @@ -11956,7 +12484,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/findutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-findutils)) @@ -11995,6 +12523,21 @@ @endif findutils +.PHONY: install-strip-findutils maybe-install-strip-findutils +maybe-install-strip-findutils: +@if findutils +maybe-install-strip-findutils: install-strip-findutils + +install-strip-findutils: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/findutils && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif findutils + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-findutils info-findutils @@ -12349,7 +12892,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/find/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/find ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/find; \ cd "$(HOST_SUBDIR)/find" || exit 1; \ case $(srcdir) in \ @@ -12381,7 +12924,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/find && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-find)) @@ -12420,6 +12963,21 @@ @endif find +.PHONY: install-strip-find maybe-install-strip-find +maybe-install-strip-find: +@if find +maybe-install-strip-find: install-strip-find + +install-strip-find: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/find && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif find + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-find info-find @@ -12774,7 +13332,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/fixincludes/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/fixincludes; \ cd "$(HOST_SUBDIR)/fixincludes" || exit 1; \ case $(srcdir) in \ @@ -12806,7 +13364,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/fixincludes && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-fixincludes)) @@ -12845,6 +13403,21 @@ @endif fixincludes +.PHONY: install-strip-fixincludes maybe-install-strip-fixincludes +maybe-install-strip-fixincludes: +@if fixincludes +maybe-install-strip-fixincludes: install-strip-fixincludes + +install-strip-fixincludes: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif fixincludes + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-fixincludes info-fixincludes @@ -13183,7 +13756,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/flex/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/flex ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/flex; \ cd "$(HOST_SUBDIR)/flex" || exit 1; \ case $(srcdir) in \ @@ -13215,7 +13788,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/flex && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-flex)) @@ -13257,6 +13830,21 @@ @endif flex +.PHONY: install-strip-flex maybe-install-strip-flex +maybe-install-strip-flex: +@if flex +maybe-install-strip-flex: install-strip-flex + +install-strip-flex: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/flex && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif flex + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-flex info-flex @@ -13610,7 +14198,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/gas; \ cd "$(HOST_SUBDIR)/gas" || exit 1; \ case $(srcdir) in \ @@ -13641,8 +14229,8 @@ test ! -f $(HOST_SUBDIR)/gas/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/gas ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ cd $(HOST_SUBDIR)/gas || exit 1; \ @@ -13673,8 +14261,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/gas ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ cd $(HOST_SUBDIR)/gas || exit 1; \ @@ -13706,8 +14294,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/gas ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ cd $(HOST_SUBDIR)/gas || exit 1; \ @@ -13739,8 +14327,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/gas ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ cd $(HOST_SUBDIR)/gas || exit 1; \ @@ -13772,8 +14360,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/gas ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ cd $(HOST_SUBDIR)/gas || exit 1; \ @@ -13805,8 +14393,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/gas ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gas ; \ cd $(HOST_SUBDIR)/gas || exit 1; \ @@ -13839,7 +14427,7 @@ all-gas: configure-gas @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gas && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-gas)) @@ -13860,11 +14448,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gas && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -13902,11 +14490,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gas && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -13945,11 +14533,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gas && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -13988,11 +14576,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gas && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -14031,11 +14619,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gas && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -14074,11 +14662,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gas && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -14136,6 +14724,21 @@ @endif gas +.PHONY: install-strip-gas maybe-install-strip-gas +maybe-install-strip-gas: +@if gas +maybe-install-strip-gas: install-strip-gas + +install-strip-gas: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gas && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif gas + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-gas info-gas @@ -14476,7 +15079,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/gcc; \ cd "$(HOST_SUBDIR)/gcc" || exit 1; \ case $(srcdir) in \ @@ -14507,8 +15110,8 @@ test ! -f $(HOST_SUBDIR)/gcc/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/gcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ cd $(HOST_SUBDIR)/gcc || exit 1; \ @@ -14539,8 +15142,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/gcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ cd $(HOST_SUBDIR)/gcc || exit 1; \ @@ -14572,8 +15175,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/gcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ cd $(HOST_SUBDIR)/gcc || exit 1; \ @@ -14605,8 +15208,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/gcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ cd $(HOST_SUBDIR)/gcc || exit 1; \ @@ -14638,8 +15241,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/gcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ cd $(HOST_SUBDIR)/gcc || exit 1; \ @@ -14671,8 +15274,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/gcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gcc ; \ cd $(HOST_SUBDIR)/gcc || exit 1; \ @@ -14705,7 +15308,7 @@ all-gcc: configure-gcc @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) \ $(TARGET-gcc)) @@ -14726,11 +15329,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -14768,11 +15371,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -14811,11 +15414,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -14854,11 +15457,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -14897,11 +15500,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -14940,11 +15543,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -15002,6 +15605,21 @@ @endif gcc +.PHONY: install-strip-gcc maybe-install-strip-gcc +maybe-install-strip-gcc: +@if gcc +maybe-install-strip-gcc: install-strip-gcc + +install-strip-gcc: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gcc && \ + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) install-strip) + +@endif gcc + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-gcc info-gcc @@ -15343,7 +15961,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/gawk/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gawk ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/gawk; \ cd "$(HOST_SUBDIR)/gawk" || exit 1; \ case $(srcdir) in \ @@ -15375,7 +15993,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gawk && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-gawk)) @@ -15414,6 +16032,21 @@ @endif gawk +.PHONY: install-strip-gawk maybe-install-strip-gawk +maybe-install-strip-gawk: +@if gawk +maybe-install-strip-gawk: install-strip-gawk + +install-strip-gawk: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gawk && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif gawk + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-gawk info-gawk @@ -15768,7 +16401,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/gettext/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gettext ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/gettext; \ cd "$(HOST_SUBDIR)/gettext" || exit 1; \ case $(srcdir) in \ @@ -15800,7 +16433,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gettext && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-gettext)) @@ -15839,6 +16472,21 @@ @endif gettext +.PHONY: install-strip-gettext maybe-install-strip-gettext +maybe-install-strip-gettext: +@if gettext +maybe-install-strip-gettext: install-strip-gettext + +install-strip-gettext: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gettext && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif gettext + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-gettext info-gettext @@ -16192,7 +16840,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/gmp; \ cd "$(HOST_SUBDIR)/gmp" || exit 1; \ case $(srcdir) in \ @@ -16223,8 +16871,8 @@ test ! -f $(HOST_SUBDIR)/gmp/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/gmp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ cd $(HOST_SUBDIR)/gmp || exit 1; \ @@ -16256,8 +16904,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/gmp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ cd $(HOST_SUBDIR)/gmp || exit 1; \ @@ -16290,8 +16938,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/gmp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ cd $(HOST_SUBDIR)/gmp || exit 1; \ @@ -16324,8 +16972,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/gmp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ cd $(HOST_SUBDIR)/gmp || exit 1; \ @@ -16358,8 +17006,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/gmp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ cd $(HOST_SUBDIR)/gmp || exit 1; \ @@ -16392,8 +17040,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/gmp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gmp ; \ cd $(HOST_SUBDIR)/gmp || exit 1; \ @@ -16427,7 +17075,7 @@ all-gmp: configure-gmp @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gmp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-gmp)) @@ -16448,11 +17096,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gmp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -16490,11 +17138,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gmp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -16533,11 +17181,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gmp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -16576,11 +17224,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gmp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -16619,11 +17267,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gmp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -16662,11 +17310,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gmp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -16718,6 +17366,15 @@ @endif gmp +.PHONY: install-strip-gmp maybe-install-strip-gmp +maybe-install-strip-gmp: +@if gmp +maybe-install-strip-gmp: install-strip-gmp + +install-strip-gmp: + +@endif gmp + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-gmp info-gmp @@ -17058,7 +17715,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/mpfr; \ cd "$(HOST_SUBDIR)/mpfr" || exit 1; \ case $(srcdir) in \ @@ -17069,8 +17726,8 @@ srcdiroption="--srcdir=$${topdir}/mpfr"; \ libsrcdir="$$s/mpfr"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} --disable-shared @extra_mpfr_configure_flags@ \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} --disable-shared @extra_mpfr_configure_flags@ \ || exit 1 @endif mpfr @@ -17089,8 +17746,8 @@ test ! -f $(HOST_SUBDIR)/mpfr/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/mpfr ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ cd $(HOST_SUBDIR)/mpfr || exit 1; \ @@ -17102,8 +17759,8 @@ srcdiroption="--srcdir=$${topdir}/mpfr"; \ libsrcdir="$$s/mpfr"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ $(STAGE1_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @endif mpfr-bootstrap @@ -17122,8 +17779,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/mpfr ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ cd $(HOST_SUBDIR)/mpfr || exit 1; \ @@ -17135,8 +17792,8 @@ srcdiroption="--srcdir=$${topdir}/mpfr"; \ libsrcdir="$$s/mpfr"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @@ -17156,8 +17813,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/mpfr ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ cd $(HOST_SUBDIR)/mpfr || exit 1; \ @@ -17169,8 +17826,8 @@ srcdiroption="--srcdir=$${topdir}/mpfr"; \ libsrcdir="$$s/mpfr"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @@ -17190,8 +17847,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/mpfr ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ cd $(HOST_SUBDIR)/mpfr || exit 1; \ @@ -17203,8 +17860,8 @@ srcdiroption="--srcdir=$${topdir}/mpfr"; \ libsrcdir="$$s/mpfr"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @@ -17224,8 +17881,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/mpfr ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ cd $(HOST_SUBDIR)/mpfr || exit 1; \ @@ -17237,8 +17894,8 @@ srcdiroption="--srcdir=$${topdir}/mpfr"; \ libsrcdir="$$s/mpfr"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @@ -17258,8 +17915,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/mpfr ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpfr ; \ cd $(HOST_SUBDIR)/mpfr || exit 1; \ @@ -17271,8 +17928,8 @@ srcdiroption="--srcdir=$${topdir}/mpfr"; \ libsrcdir="$$s/mpfr"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @@ -17293,7 +17950,7 @@ all-mpfr: configure-mpfr @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/mpfr && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-mpfr)) @@ -17314,11 +17971,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpfr && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -17356,11 +18013,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpfr && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -17399,11 +18056,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpfr && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -17442,11 +18099,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpfr && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -17485,11 +18142,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpfr && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -17528,11 +18185,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpfr && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -17584,6 +18241,15 @@ @endif mpfr +.PHONY: install-strip-mpfr maybe-install-strip-mpfr +maybe-install-strip-mpfr: +@if mpfr +maybe-install-strip-mpfr: install-strip-mpfr + +install-strip-mpfr: + +@endif mpfr + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-mpfr info-mpfr @@ -17924,7 +18590,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/mpc; \ cd "$(HOST_SUBDIR)/mpc" || exit 1; \ case $(srcdir) in \ @@ -17955,8 +18621,8 @@ test ! -f $(HOST_SUBDIR)/mpc/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/mpc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ cd $(HOST_SUBDIR)/mpc || exit 1; \ @@ -17988,8 +18654,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/mpc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ cd $(HOST_SUBDIR)/mpc || exit 1; \ @@ -18022,8 +18688,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/mpc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ cd $(HOST_SUBDIR)/mpc || exit 1; \ @@ -18056,8 +18722,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/mpc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ cd $(HOST_SUBDIR)/mpc || exit 1; \ @@ -18090,8 +18756,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/mpc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ cd $(HOST_SUBDIR)/mpc || exit 1; \ @@ -18124,8 +18790,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/mpc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mpc ; \ cd $(HOST_SUBDIR)/mpc || exit 1; \ @@ -18159,7 +18825,7 @@ all-mpc: configure-mpc @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/mpc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-mpc)) @@ -18180,11 +18846,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -18222,11 +18888,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -18265,11 +18931,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -18308,11 +18974,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -18351,11 +19017,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -18394,11 +19060,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/mpc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -18450,6 +19116,15 @@ @endif mpc +.PHONY: install-strip-mpc maybe-install-strip-mpc +maybe-install-strip-mpc: +@if mpc +maybe-install-strip-mpc: install-strip-mpc + +install-strip-mpc: + +@endif mpc + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-mpc info-mpc @@ -18790,7 +19465,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/ppl/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/ppl; \ cd "$(HOST_SUBDIR)/ppl" || exit 1; \ case $(srcdir) in \ @@ -18801,8 +19476,8 @@ srcdiroption="--srcdir=$${topdir}/ppl"; \ libsrcdir="$$s/ppl"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ \ || exit 1 @endif ppl @@ -18821,8 +19496,8 @@ test ! -f $(HOST_SUBDIR)/ppl/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/ppl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ cd $(HOST_SUBDIR)/ppl || exit 1; \ @@ -18834,8 +19509,8 @@ srcdiroption="--srcdir=$${topdir}/ppl"; \ libsrcdir="$$s/ppl"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ $(STAGE1_CONFIGURE_FLAGS) \ --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ @endif ppl-bootstrap @@ -18854,8 +19529,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/ppl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ cd $(HOST_SUBDIR)/ppl || exit 1; \ @@ -18867,8 +19542,8 @@ srcdiroption="--srcdir=$${topdir}/ppl"; \ libsrcdir="$$s/ppl"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ @@ -18888,8 +19563,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/ppl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ cd $(HOST_SUBDIR)/ppl || exit 1; \ @@ -18901,8 +19576,8 @@ srcdiroption="--srcdir=$${topdir}/ppl"; \ libsrcdir="$$s/ppl"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ @@ -18922,8 +19597,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/ppl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ cd $(HOST_SUBDIR)/ppl || exit 1; \ @@ -18935,8 +19610,8 @@ srcdiroption="--srcdir=$${topdir}/ppl"; \ libsrcdir="$$s/ppl"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ @@ -18956,8 +19631,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/ppl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ cd $(HOST_SUBDIR)/ppl || exit 1; \ @@ -18969,8 +19644,8 @@ srcdiroption="--srcdir=$${topdir}/ppl"; \ libsrcdir="$$s/ppl"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ @@ -18990,8 +19665,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/ppl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ppl ; \ cd $(HOST_SUBDIR)/ppl || exit 1; \ @@ -19003,8 +19678,8 @@ srcdiroption="--srcdir=$${topdir}/ppl"; \ libsrcdir="$$s/ppl"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ --disable-shared --with-libgmp-prefix=$$r/$(HOST_SUBDIR)/gmp/ --with-libgmpxx-prefix=$$r/$(HOST_SUBDIR)/gmp/ @@ -19025,7 +19700,7 @@ all-ppl: configure-ppl @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/ppl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-ppl)) @@ -19046,11 +19721,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ppl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -19088,11 +19763,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ppl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -19131,11 +19806,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ppl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -19174,11 +19849,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ppl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -19217,11 +19892,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ppl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -19260,11 +19935,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ppl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -19316,6 +19991,15 @@ @endif ppl +.PHONY: install-strip-ppl maybe-install-strip-ppl +maybe-install-strip-ppl: +@if ppl +maybe-install-strip-ppl: install-strip-ppl + +install-strip-ppl: + +@endif ppl + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-ppl info-ppl @@ -19656,7 +20340,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ echo Configuring in $(HOST_SUBDIR)/cloog; \ cd "$(HOST_SUBDIR)/cloog" || exit 1; \ case $(srcdir) in \ @@ -19667,8 +20351,8 @@ srcdiroption="--srcdir=$${topdir}/cloog"; \ libsrcdir="$$s/cloog"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-bits=gmp --with-ppl \ || exit 1 @endif cloog @@ -19687,8 +20371,8 @@ test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/cloog ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ cd $(HOST_SUBDIR)/cloog || exit 1; \ @@ -19700,10 +20384,10 @@ srcdiroption="--srcdir=$${topdir}/cloog"; \ libsrcdir="$$s/cloog"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ $(STAGE1_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp + --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-bits=gmp --with-ppl @endif cloog-bootstrap .PHONY: configure-stage2-cloog maybe-configure-stage2-cloog @@ -19720,8 +20404,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/cloog ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ cd $(HOST_SUBDIR)/cloog || exit 1; \ @@ -19733,11 +20417,11 @@ srcdiroption="--srcdir=$${topdir}/cloog"; \ libsrcdir="$$s/cloog"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp + --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-bits=gmp --with-ppl @endif cloog-bootstrap .PHONY: configure-stage3-cloog maybe-configure-stage3-cloog @@ -19754,8 +20438,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/cloog ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ cd $(HOST_SUBDIR)/cloog || exit 1; \ @@ -19767,11 +20451,11 @@ srcdiroption="--srcdir=$${topdir}/cloog"; \ libsrcdir="$$s/cloog"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp + --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-bits=gmp --with-ppl @endif cloog-bootstrap .PHONY: configure-stage4-cloog maybe-configure-stage4-cloog @@ -19788,8 +20472,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/cloog ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ cd $(HOST_SUBDIR)/cloog || exit 1; \ @@ -19801,11 +20485,11 @@ srcdiroption="--srcdir=$${topdir}/cloog"; \ libsrcdir="$$s/cloog"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp + --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-bits=gmp --with-ppl @endif cloog-bootstrap .PHONY: configure-stageprofile-cloog maybe-configure-stageprofile-cloog @@ -19822,8 +20506,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/cloog ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ cd $(HOST_SUBDIR)/cloog || exit 1; \ @@ -19835,11 +20519,11 @@ srcdiroption="--srcdir=$${topdir}/cloog"; \ libsrcdir="$$s/cloog"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp + --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-bits=gmp --with-ppl @endif cloog-bootstrap .PHONY: configure-stagefeedback-cloog maybe-configure-stagefeedback-cloog @@ -19856,8 +20540,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/cloog ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ cd $(HOST_SUBDIR)/cloog || exit 1; \ @@ -19869,11 +20553,11 @@ srcdiroption="--srcdir=$${topdir}/cloog"; \ libsrcdir="$$s/cloog"; \ $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-ppl=$$r/$(HOST_SUBDIR)/ppl/ --with-bits=gmp + --disable-shared --with-gmp-library=$$r/$(HOST_SUBDIR)/gmp/.libs --with-gmp-include=$$r/$(HOST_SUBDIR)/gmp --with-bits=gmp --with-ppl @endif cloog-bootstrap @@ -19891,9 +20575,9 @@ all-cloog: configure-cloog @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" \ $(TARGET-cloog)) @endif cloog @@ -19912,16 +20596,16 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) \ + $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" \ TFLAGS="$(STAGE1_TFLAGS)" \ $(TARGET-stage1-cloog) @@ -19936,7 +20620,7 @@ fi; \ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(EXTRA_HOST_FLAGS) \ - clean + CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" clean @endif cloog-bootstrap @@ -19954,16 +20638,16 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" \ TFLAGS="$(STAGE2_TFLAGS)" \ $(TARGET-stage2-cloog) @@ -19979,7 +20663,7 @@ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(EXTRA_HOST_FLAGS) \ $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean + CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" clean @endif cloog-bootstrap @@ -19997,16 +20681,16 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" \ TFLAGS="$(STAGE3_TFLAGS)" \ $(TARGET-stage3-cloog) @@ -20022,7 +20706,7 @@ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(EXTRA_HOST_FLAGS) \ $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean + CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" clean @endif cloog-bootstrap @@ -20040,16 +20724,16 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" \ TFLAGS="$(STAGE4_TFLAGS)" \ $(TARGET-stage4-cloog) @@ -20065,7 +20749,7 @@ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(EXTRA_HOST_FLAGS) \ $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean + CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" clean @endif cloog-bootstrap @@ -20083,16 +20767,16 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" \ TFLAGS="$(STAGEprofile_TFLAGS)" \ $(TARGET-stageprofile-cloog) @@ -20108,7 +20792,7 @@ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(EXTRA_HOST_FLAGS) \ $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean + CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" clean @endif cloog-bootstrap @@ -20126,16 +20810,16 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}"; export CPPFLAGS; LDFLAGS="$$LDFLAGS ${HOST_PPLLIBS}"; export LDFLAGS; \ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" \ TFLAGS="$(STAGEfeedback_TFLAGS)" \ $(TARGET-stagefeedback-cloog) @@ -20151,7 +20835,7 @@ cd $(HOST_SUBDIR)/cloog && \ $(MAKE) $(EXTRA_HOST_FLAGS) \ $(POSTSTAGE1_FLAGS_TO_PASS) \ - clean + CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" clean @endif cloog-bootstrap @@ -20169,7 +20853,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS" check) @endif cloog @@ -20182,6 +20866,15 @@ @endif cloog +.PHONY: install-strip-cloog maybe-install-strip-cloog +maybe-install-strip-cloog: +@if cloog +maybe-install-strip-cloog: install-strip-cloog + +install-strip-cloog: + +@endif cloog + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-cloog info-cloog @@ -20195,7 +20888,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing info in cloog" ; \ @@ -20220,7 +20913,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing dvi in cloog" ; \ @@ -20245,7 +20938,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing pdf in cloog" ; \ @@ -20270,7 +20963,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing html in cloog" ; \ @@ -20295,7 +20988,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing TAGS in cloog" ; \ @@ -20321,7 +21014,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-info in cloog" ; \ @@ -20347,7 +21040,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-pdf in cloog" ; \ @@ -20373,7 +21066,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-html in cloog" ; \ @@ -20398,7 +21091,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing installcheck in cloog" ; \ @@ -20422,7 +21115,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing mostlyclean in cloog" ; \ @@ -20446,7 +21139,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing clean in cloog" ; \ @@ -20470,7 +21163,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing distclean in cloog" ; \ @@ -20494,7 +21187,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) ; do \ + for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="${CPPFLAGS} ${HOST_PPLINC}" LDFLAGS="$$LDFLAGS"; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing maintainer-clean in cloog" ; \ @@ -20510,109 +21203,571 @@ -.PHONY: configure-gnuserv maybe-configure-gnuserv -maybe-configure-gnuserv: +.PHONY: configure-libelf maybe-configure-libelf +maybe-configure-libelf: @if gcc-bootstrap -configure-gnuserv: stage_current +configure-libelf: stage_current @endif gcc-bootstrap -@if gnuserv -maybe-configure-gnuserv: configure-gnuserv -configure-gnuserv: - @: $(MAKE); $(unstage) +@if libelf +maybe-configure-libelf: configure-libelf +configure-libelf: @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gnuserv/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gnuserv ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gnuserv; \ - cd "$(HOST_SUBDIR)/gnuserv" || exit 1; \ + test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf ; \ + $(HOST_EXPORTS) \ + echo Configuring in $(HOST_SUBDIR)/libelf; \ + cd "$(HOST_SUBDIR)/libelf" || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gnuserv/ | \ + *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gnuserv"; \ - libsrcdir="$$s/gnuserv"; \ + srcdiroption="--srcdir=$${topdir}/libelf"; \ + libsrcdir="$$s/libelf"; \ $(SHELL) $${libsrcdir}/configure \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} $${srcdiroption} --disable-shared \ || exit 1 -@endif gnuserv +@endif libelf + +.PHONY: configure-stage1-libelf maybe-configure-stage1-libelf +maybe-configure-stage1-libelf: +@if libelf-bootstrap +maybe-configure-stage1-libelf: configure-stage1-libelf +configure-stage1-libelf: + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 1 in $(HOST_SUBDIR)/libelf ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf ; \ + cd $(HOST_SUBDIR)/libelf || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libelf"; \ + libsrcdir="$$s/libelf"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) \ + --disable-shared +@endif libelf-bootstrap + +.PHONY: configure-stage2-libelf maybe-configure-stage2-libelf +maybe-configure-stage2-libelf: +@if libelf-bootstrap +maybe-configure-stage2-libelf: configure-stage2-libelf +configure-stage2-libelf: + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 2 in $(HOST_SUBDIR)/libelf ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf ; \ + cd $(HOST_SUBDIR)/libelf || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libelf"; \ + libsrcdir="$$s/libelf"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ + --disable-shared +@endif libelf-bootstrap +.PHONY: configure-stage3-libelf maybe-configure-stage3-libelf +maybe-configure-stage3-libelf: +@if libelf-bootstrap +maybe-configure-stage3-libelf: configure-stage3-libelf +configure-stage3-libelf: + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 3 in $(HOST_SUBDIR)/libelf ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf ; \ + cd $(HOST_SUBDIR)/libelf || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libelf"; \ + libsrcdir="$$s/libelf"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ + --disable-shared +@endif libelf-bootstrap +.PHONY: configure-stage4-libelf maybe-configure-stage4-libelf +maybe-configure-stage4-libelf: +@if libelf-bootstrap +maybe-configure-stage4-libelf: configure-stage4-libelf +configure-stage4-libelf: + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 4 in $(HOST_SUBDIR)/libelf ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf ; \ + cd $(HOST_SUBDIR)/libelf || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libelf"; \ + libsrcdir="$$s/libelf"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ + --disable-shared +@endif libelf-bootstrap -.PHONY: all-gnuserv maybe-all-gnuserv -maybe-all-gnuserv: +.PHONY: configure-stageprofile-libelf maybe-configure-stageprofile-libelf +maybe-configure-stageprofile-libelf: +@if libelf-bootstrap +maybe-configure-stageprofile-libelf: configure-stageprofile-libelf +configure-stageprofile-libelf: + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage profile in $(HOST_SUBDIR)/libelf ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf ; \ + cd $(HOST_SUBDIR)/libelf || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libelf"; \ + libsrcdir="$$s/libelf"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ + --disable-shared +@endif libelf-bootstrap + +.PHONY: configure-stagefeedback-libelf maybe-configure-stagefeedback-libelf +maybe-configure-stagefeedback-libelf: +@if libelf-bootstrap +maybe-configure-stagefeedback-libelf: configure-stagefeedback-libelf +configure-stagefeedback-libelf: + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage feedback in $(HOST_SUBDIR)/libelf ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf ; \ + cd $(HOST_SUBDIR)/libelf || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libelf"; \ + libsrcdir="$$s/libelf"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ + --disable-shared +@endif libelf-bootstrap + + + + + +.PHONY: all-libelf maybe-all-libelf +maybe-all-libelf: @if gcc-bootstrap -all-gnuserv: stage_current +all-libelf: stage_current @endif gcc-bootstrap -@if gnuserv -TARGET-gnuserv=all -maybe-all-gnuserv: all-gnuserv -all-gnuserv: configure-gnuserv - @: $(MAKE); $(unstage) +@if libelf +TARGET-libelf=all +maybe-all-libelf: all-libelf +all-libelf: configure-libelf @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gnuserv && \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ - $(TARGET-gnuserv)) -@endif gnuserv + $(TARGET-libelf)) +@endif libelf +.PHONY: all-stage1-libelf maybe-all-stage1-libelf +.PHONY: clean-stage1-libelf maybe-clean-stage1-libelf +maybe-all-stage1-libelf: +maybe-clean-stage1-libelf: +@if libelf-bootstrap +maybe-all-stage1-libelf: all-stage1-libelf +all-stage1: all-stage1-libelf +TARGET-stage1-libelf = $(TARGET-libelf) +all-stage1-libelf: configure-stage1-libelf + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + $(HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ + LIBCFLAGS="$(LIBCFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) \ + TFLAGS="$(STAGE1_TFLAGS)" \ + $(TARGET-stage1-libelf) -.PHONY: check-gnuserv maybe-check-gnuserv -maybe-check-gnuserv: -@if gnuserv -maybe-check-gnuserv: check-gnuserv +maybe-clean-stage1-libelf: clean-stage1-libelf +clean-stage1: clean-stage1-libelf +clean-stage1-libelf: + @if [ $(current_stage) = stage1 ]; then \ + [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage1-libelf/Makefile ] || exit 0; \ + $(MAKE) stage1-start; \ + fi; \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + clean +@endif libelf-bootstrap -check-gnuserv: - @: $(MAKE); $(unstage) + +.PHONY: all-stage2-libelf maybe-all-stage2-libelf +.PHONY: clean-stage2-libelf maybe-clean-stage2-libelf +maybe-all-stage2-libelf: +maybe-clean-stage2-libelf: +@if libelf-bootstrap +maybe-all-stage2-libelf: all-stage2-libelf +all-stage2: all-stage2-libelf +TARGET-stage2-libelf = $(TARGET-libelf) +all-stage2-libelf: configure-stage2-libelf + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE2_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE2_TFLAGS)" \ + $(TARGET-stage2-libelf) -@endif gnuserv +maybe-clean-stage2-libelf: clean-stage2-libelf +clean-stage2: clean-stage2-libelf +clean-stage2-libelf: + @if [ $(current_stage) = stage2 ]; then \ + [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage2-libelf/Makefile ] || exit 0; \ + $(MAKE) stage2-start; \ + fi; \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(POSTSTAGE1_FLAGS_TO_PASS) \ + clean +@endif libelf-bootstrap -.PHONY: install-gnuserv maybe-install-gnuserv -maybe-install-gnuserv: -@if gnuserv -maybe-install-gnuserv: install-gnuserv -install-gnuserv: installdirs +.PHONY: all-stage3-libelf maybe-all-stage3-libelf +.PHONY: clean-stage3-libelf maybe-clean-stage3-libelf +maybe-all-stage3-libelf: +maybe-clean-stage3-libelf: +@if libelf-bootstrap +maybe-all-stage3-libelf: all-stage3-libelf +all-stage3: all-stage3-libelf +TARGET-stage3-libelf = $(TARGET-libelf) +all-stage3-libelf: configure-stage3-libelf + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE3_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE3_TFLAGS)" \ + $(TARGET-stage3-libelf) + +maybe-clean-stage3-libelf: clean-stage3-libelf +clean-stage3: clean-stage3-libelf +clean-stage3-libelf: + @if [ $(current_stage) = stage3 ]; then \ + [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage3-libelf/Makefile ] || exit 0; \ + $(MAKE) stage3-start; \ + fi; \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(POSTSTAGE1_FLAGS_TO_PASS) \ + clean +@endif libelf-bootstrap + + +.PHONY: all-stage4-libelf maybe-all-stage4-libelf +.PHONY: clean-stage4-libelf maybe-clean-stage4-libelf +maybe-all-stage4-libelf: +maybe-clean-stage4-libelf: +@if libelf-bootstrap +maybe-all-stage4-libelf: all-stage4-libelf +all-stage4: all-stage4-libelf +TARGET-stage4-libelf = $(TARGET-libelf) +all-stage4-libelf: configure-stage4-libelf + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE4_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE4_TFLAGS)" \ + $(TARGET-stage4-libelf) + +maybe-clean-stage4-libelf: clean-stage4-libelf +clean-stage4: clean-stage4-libelf +clean-stage4-libelf: + @if [ $(current_stage) = stage4 ]; then \ + [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage4-libelf/Makefile ] || exit 0; \ + $(MAKE) stage4-start; \ + fi; \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(POSTSTAGE1_FLAGS_TO_PASS) \ + clean +@endif libelf-bootstrap + + +.PHONY: all-stageprofile-libelf maybe-all-stageprofile-libelf +.PHONY: clean-stageprofile-libelf maybe-clean-stageprofile-libelf +maybe-all-stageprofile-libelf: +maybe-clean-stageprofile-libelf: +@if libelf-bootstrap +maybe-all-stageprofile-libelf: all-stageprofile-libelf +all-stageprofile: all-stageprofile-libelf +TARGET-stageprofile-libelf = $(TARGET-libelf) +all-stageprofile-libelf: configure-stageprofile-libelf + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGEprofile_TFLAGS)" \ + $(TARGET-stageprofile-libelf) + +maybe-clean-stageprofile-libelf: clean-stageprofile-libelf +clean-stageprofile: clean-stageprofile-libelf +clean-stageprofile-libelf: + @if [ $(current_stage) = stageprofile ]; then \ + [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stageprofile-libelf/Makefile ] || exit 0; \ + $(MAKE) stageprofile-start; \ + fi; \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(POSTSTAGE1_FLAGS_TO_PASS) \ + clean +@endif libelf-bootstrap + + +.PHONY: all-stagefeedback-libelf maybe-all-stagefeedback-libelf +.PHONY: clean-stagefeedback-libelf maybe-clean-stagefeedback-libelf +maybe-all-stagefeedback-libelf: +maybe-clean-stagefeedback-libelf: +@if libelf-bootstrap +maybe-all-stagefeedback-libelf: all-stagefeedback-libelf +all-stagefeedback: all-stagefeedback-libelf +TARGET-stagefeedback-libelf = $(TARGET-libelf) +all-stagefeedback-libelf: configure-stagefeedback-libelf + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGEfeedback_TFLAGS)" \ + $(TARGET-stagefeedback-libelf) + +maybe-clean-stagefeedback-libelf: clean-stagefeedback-libelf +clean-stagefeedback: clean-stagefeedback-libelf +clean-stagefeedback-libelf: + @if [ $(current_stage) = stagefeedback ]; then \ + [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stagefeedback-libelf/Makefile ] || exit 0; \ + $(MAKE) stagefeedback-start; \ + fi; \ + cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(POSTSTAGE1_FLAGS_TO_PASS) \ + clean +@endif libelf-bootstrap + + + + + +.PHONY: check-libelf maybe-check-libelf +maybe-check-libelf: +@if libelf +maybe-check-libelf: check-libelf + +check-libelf: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/gnuserv && \ - $(MAKE) $(FLAGS_TO_PASS) install) + (cd $(HOST_SUBDIR)/libelf && \ + $(MAKE) $(FLAGS_TO_PASS) check) -@endif gnuserv +@endif libelf + +.PHONY: install-libelf maybe-install-libelf +maybe-install-libelf: +@if libelf +maybe-install-libelf: install-libelf + +install-libelf: + +@endif libelf + +.PHONY: install-strip-libelf maybe-install-strip-libelf +maybe-install-strip-libelf: +@if libelf +maybe-install-strip-libelf: install-strip-libelf + +install-strip-libelf: + +@endif libelf # Other targets (info, dvi, pdf, etc.) -.PHONY: maybe-info-gnuserv info-gnuserv -maybe-info-gnuserv: -@if gnuserv -maybe-info-gnuserv: info-gnuserv +.PHONY: maybe-info-libelf info-libelf +maybe-info-libelf: +@if libelf +maybe-info-libelf: info-libelf -info-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +info-libelf: \ + configure-libelf + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing info in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing info in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20620,25 +21775,24 @@ info) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-dvi-gnuserv dvi-gnuserv -maybe-dvi-gnuserv: -@if gnuserv -maybe-dvi-gnuserv: dvi-gnuserv +.PHONY: maybe-dvi-libelf dvi-libelf +maybe-dvi-libelf: +@if libelf +maybe-dvi-libelf: dvi-libelf -dvi-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +dvi-libelf: \ + configure-libelf + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing dvi in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing dvi in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20646,25 +21800,24 @@ dvi) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-pdf-gnuserv pdf-gnuserv -maybe-pdf-gnuserv: -@if gnuserv -maybe-pdf-gnuserv: pdf-gnuserv +.PHONY: maybe-pdf-libelf pdf-libelf +maybe-pdf-libelf: +@if libelf +maybe-pdf-libelf: pdf-libelf -pdf-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +pdf-libelf: \ + configure-libelf + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing pdf in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing pdf in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20672,25 +21825,24 @@ pdf) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-html-gnuserv html-gnuserv -maybe-html-gnuserv: -@if gnuserv -maybe-html-gnuserv: html-gnuserv +.PHONY: maybe-html-libelf html-libelf +maybe-html-libelf: +@if libelf +maybe-html-libelf: html-libelf -html-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +html-libelf: \ + configure-libelf + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing html in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing html in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20698,25 +21850,24 @@ html) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-TAGS-gnuserv TAGS-gnuserv -maybe-TAGS-gnuserv: -@if gnuserv -maybe-TAGS-gnuserv: TAGS-gnuserv +.PHONY: maybe-TAGS-libelf TAGS-libelf +maybe-TAGS-libelf: +@if libelf +maybe-TAGS-libelf: TAGS-libelf -TAGS-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +TAGS-libelf: \ + configure-libelf + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing TAGS in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing TAGS in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20724,26 +21875,25 @@ TAGS) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-install-info-gnuserv install-info-gnuserv -maybe-install-info-gnuserv: -@if gnuserv -maybe-install-info-gnuserv: install-info-gnuserv +.PHONY: maybe-install-info-libelf install-info-libelf +maybe-install-info-libelf: +@if libelf +maybe-install-info-libelf: install-info-libelf -install-info-gnuserv: \ - configure-gnuserv \ - info-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +install-info-libelf: \ + configure-libelf \ + info-libelf + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing install-info in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing install-info in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20751,26 +21901,25 @@ install-info) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-install-pdf-gnuserv install-pdf-gnuserv -maybe-install-pdf-gnuserv: -@if gnuserv -maybe-install-pdf-gnuserv: install-pdf-gnuserv +.PHONY: maybe-install-pdf-libelf install-pdf-libelf +maybe-install-pdf-libelf: +@if libelf +maybe-install-pdf-libelf: install-pdf-libelf -install-pdf-gnuserv: \ - configure-gnuserv \ - pdf-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +install-pdf-libelf: \ + configure-libelf \ + pdf-libelf + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing install-pdf in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing install-pdf in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20778,26 +21927,25 @@ install-pdf) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-install-html-gnuserv install-html-gnuserv -maybe-install-html-gnuserv: -@if gnuserv -maybe-install-html-gnuserv: install-html-gnuserv +.PHONY: maybe-install-html-libelf install-html-libelf +maybe-install-html-libelf: +@if libelf +maybe-install-html-libelf: install-html-libelf -install-html-gnuserv: \ - configure-gnuserv \ - html-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +install-html-libelf: \ + configure-libelf \ + html-libelf + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing install-html in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing install-html in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20805,25 +21953,24 @@ install-html) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-installcheck-gnuserv installcheck-gnuserv -maybe-installcheck-gnuserv: -@if gnuserv -maybe-installcheck-gnuserv: installcheck-gnuserv +.PHONY: maybe-installcheck-libelf installcheck-libelf +maybe-installcheck-libelf: +@if libelf +maybe-installcheck-libelf: installcheck-libelf -installcheck-gnuserv: \ - configure-gnuserv - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +installcheck-libelf: \ + configure-libelf + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing installcheck in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing installcheck in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20831,24 +21978,23 @@ installcheck) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-mostlyclean-gnuserv mostlyclean-gnuserv -maybe-mostlyclean-gnuserv: -@if gnuserv -maybe-mostlyclean-gnuserv: mostlyclean-gnuserv +.PHONY: maybe-mostlyclean-libelf mostlyclean-libelf +maybe-mostlyclean-libelf: +@if libelf +maybe-mostlyclean-libelf: mostlyclean-libelf -mostlyclean-gnuserv: - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +mostlyclean-libelf: + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing mostlyclean in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing mostlyclean in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20856,24 +22002,23 @@ mostlyclean) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-clean-gnuserv clean-gnuserv -maybe-clean-gnuserv: -@if gnuserv -maybe-clean-gnuserv: clean-gnuserv +.PHONY: maybe-clean-libelf clean-libelf +maybe-clean-libelf: +@if libelf +maybe-clean-libelf: clean-libelf -clean-gnuserv: - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +clean-libelf: + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing clean in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing clean in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20881,24 +22026,23 @@ clean) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-distclean-gnuserv distclean-gnuserv -maybe-distclean-gnuserv: -@if gnuserv -maybe-distclean-gnuserv: distclean-gnuserv +.PHONY: maybe-distclean-libelf distclean-libelf +maybe-distclean-libelf: +@if libelf +maybe-distclean-libelf: distclean-libelf -distclean-gnuserv: - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +distclean-libelf: + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing distclean in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing distclean in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20906,24 +22050,23 @@ distclean) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: maybe-maintainer-clean-gnuserv maintainer-clean-gnuserv -maybe-maintainer-clean-gnuserv: -@if gnuserv -maybe-maintainer-clean-gnuserv: maintainer-clean-gnuserv +.PHONY: maybe-maintainer-clean-libelf maintainer-clean-libelf +maybe-maintainer-clean-libelf: +@if libelf +maybe-maintainer-clean-libelf: maintainer-clean-libelf -maintainer-clean-gnuserv: - @: $(MAKE); $(unstage) - @[ -f ./gnuserv/Makefile ] || exit 0; \ +maintainer-clean-libelf: + @[ -f ./libelf/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing maintainer-clean in gnuserv" ; \ - (cd $(HOST_SUBDIR)/gnuserv && \ + echo "Doing maintainer-clean in libelf" ; \ + (cd $(HOST_SUBDIR)/libelf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -20931,57 +22074,497 @@ maintainer-clean) \ || exit 1 -@endif gnuserv +@endif libelf -.PHONY: configure-gold maybe-configure-gold -maybe-configure-gold: +.PHONY: configure-gnuserv maybe-configure-gnuserv +maybe-configure-gnuserv: @if gcc-bootstrap -configure-gold: stage_current +configure-gnuserv: stage_current @endif gcc-bootstrap -@if gold -maybe-configure-gold: configure-gold -configure-gold: +@if gnuserv +maybe-configure-gnuserv: configure-gnuserv +configure-gnuserv: + @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ - $(HOST_EXPORTS) \ - echo Configuring in $(HOST_SUBDIR)/gold; \ - cd "$(HOST_SUBDIR)/gold" || exit 1; \ + test ! -f $(HOST_SUBDIR)/gnuserv/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gnuserv ; \ + $(HOST_EXPORTS) \ + echo Configuring in $(HOST_SUBDIR)/gnuserv; \ + cd "$(HOST_SUBDIR)/gnuserv" || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ + *) topdir=`echo $(HOST_SUBDIR)/gnuserv/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ + srcdiroption="--srcdir=$${topdir}/gnuserv"; \ + libsrcdir="$$s/gnuserv"; \ $(SHELL) $${libsrcdir}/configure \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ --target=${target_alias} $${srcdiroption} \ || exit 1 -@endif gold +@endif gnuserv -.PHONY: configure-stage1-gold maybe-configure-stage1-gold -maybe-configure-stage1-gold: -@if gold-bootstrap -maybe-configure-stage1-gold: configure-stage1-gold -configure-stage1-gold: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/gold ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ + + +.PHONY: all-gnuserv maybe-all-gnuserv +maybe-all-gnuserv: +@if gcc-bootstrap +all-gnuserv: stage_current +@endif gcc-bootstrap +@if gnuserv +TARGET-gnuserv=all +maybe-all-gnuserv: all-gnuserv +all-gnuserv: configure-gnuserv + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ + $(TARGET-gnuserv)) +@endif gnuserv + + + + +.PHONY: check-gnuserv maybe-check-gnuserv +maybe-check-gnuserv: +@if gnuserv +maybe-check-gnuserv: check-gnuserv + +check-gnuserv: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(FLAGS_TO_PASS) check) + +@endif gnuserv + +.PHONY: install-gnuserv maybe-install-gnuserv +maybe-install-gnuserv: +@if gnuserv +maybe-install-gnuserv: install-gnuserv + +install-gnuserv: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(FLAGS_TO_PASS) install) + +@endif gnuserv + +.PHONY: install-strip-gnuserv maybe-install-strip-gnuserv +maybe-install-strip-gnuserv: +@if gnuserv +maybe-install-strip-gnuserv: install-strip-gnuserv + +install-strip-gnuserv: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif gnuserv + +# Other targets (info, dvi, pdf, etc.) + +.PHONY: maybe-info-gnuserv info-gnuserv +maybe-info-gnuserv: +@if gnuserv +maybe-info-gnuserv: info-gnuserv + +info-gnuserv: \ + configure-gnuserv + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing info in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + info) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-dvi-gnuserv dvi-gnuserv +maybe-dvi-gnuserv: +@if gnuserv +maybe-dvi-gnuserv: dvi-gnuserv + +dvi-gnuserv: \ + configure-gnuserv + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing dvi in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + dvi) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-pdf-gnuserv pdf-gnuserv +maybe-pdf-gnuserv: +@if gnuserv +maybe-pdf-gnuserv: pdf-gnuserv + +pdf-gnuserv: \ + configure-gnuserv + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing pdf in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + pdf) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-html-gnuserv html-gnuserv +maybe-html-gnuserv: +@if gnuserv +maybe-html-gnuserv: html-gnuserv + +html-gnuserv: \ + configure-gnuserv + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing html in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + html) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-TAGS-gnuserv TAGS-gnuserv +maybe-TAGS-gnuserv: +@if gnuserv +maybe-TAGS-gnuserv: TAGS-gnuserv + +TAGS-gnuserv: \ + configure-gnuserv + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing TAGS in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + TAGS) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-install-info-gnuserv install-info-gnuserv +maybe-install-info-gnuserv: +@if gnuserv +maybe-install-info-gnuserv: install-info-gnuserv + +install-info-gnuserv: \ + configure-gnuserv \ + info-gnuserv + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing install-info in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-info) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-install-pdf-gnuserv install-pdf-gnuserv +maybe-install-pdf-gnuserv: +@if gnuserv +maybe-install-pdf-gnuserv: install-pdf-gnuserv + +install-pdf-gnuserv: \ + configure-gnuserv \ + pdf-gnuserv + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing install-pdf in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-pdf) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-install-html-gnuserv install-html-gnuserv +maybe-install-html-gnuserv: +@if gnuserv +maybe-install-html-gnuserv: install-html-gnuserv + +install-html-gnuserv: \ + configure-gnuserv \ + html-gnuserv + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing install-html in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-html) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-installcheck-gnuserv installcheck-gnuserv +maybe-installcheck-gnuserv: +@if gnuserv +maybe-installcheck-gnuserv: installcheck-gnuserv + +installcheck-gnuserv: \ + configure-gnuserv + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing installcheck in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + installcheck) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-mostlyclean-gnuserv mostlyclean-gnuserv +maybe-mostlyclean-gnuserv: +@if gnuserv +maybe-mostlyclean-gnuserv: mostlyclean-gnuserv + +mostlyclean-gnuserv: + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing mostlyclean in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + mostlyclean) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-clean-gnuserv clean-gnuserv +maybe-clean-gnuserv: +@if gnuserv +maybe-clean-gnuserv: clean-gnuserv + +clean-gnuserv: + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing clean in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + clean) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-distclean-gnuserv distclean-gnuserv +maybe-distclean-gnuserv: +@if gnuserv +maybe-distclean-gnuserv: distclean-gnuserv + +distclean-gnuserv: + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing distclean in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + distclean) \ + || exit 1 + +@endif gnuserv + +.PHONY: maybe-maintainer-clean-gnuserv maintainer-clean-gnuserv +maybe-maintainer-clean-gnuserv: +@if gnuserv +maybe-maintainer-clean-gnuserv: maintainer-clean-gnuserv + +maintainer-clean-gnuserv: + @: $(MAKE); $(unstage) + @[ -f ./gnuserv/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing maintainer-clean in gnuserv" ; \ + (cd $(HOST_SUBDIR)/gnuserv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + maintainer-clean) \ + || exit 1 + +@endif gnuserv + + + +.PHONY: configure-gold maybe-configure-gold +maybe-configure-gold: +@if gcc-bootstrap +configure-gold: stage_current +@endif gcc-bootstrap +@if gold +maybe-configure-gold: configure-gold +configure-gold: + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ + $(HOST_EXPORTS) \ + echo Configuring in $(HOST_SUBDIR)/gold; \ + cd "$(HOST_SUBDIR)/gold" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/gold"; \ + libsrcdir="$$s/gold"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + || exit 1 +@endif gold + + + +.PHONY: configure-stage1-gold maybe-configure-stage1-gold +maybe-configure-stage1-gold: +@if gold-bootstrap +maybe-configure-stage1-gold: configure-stage1-gold +configure-stage1-gold: + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/gold/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 1 in $(HOST_SUBDIR)/gold ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ cd $(HOST_SUBDIR)/gold || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ @@ -21010,8 +22593,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/gold ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ cd $(HOST_SUBDIR)/gold || exit 1; \ @@ -21043,8 +22626,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/gold ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ cd $(HOST_SUBDIR)/gold || exit 1; \ @@ -21076,8 +22659,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/gold ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ cd $(HOST_SUBDIR)/gold || exit 1; \ @@ -21109,8 +22692,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/gold ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ cd $(HOST_SUBDIR)/gold || exit 1; \ @@ -21142,8 +22725,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/gold ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gold ; \ cd $(HOST_SUBDIR)/gold || exit 1; \ @@ -21176,7 +22759,7 @@ all-gold: configure-gold @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gold && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-gold)) @@ -21197,11 +22780,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gold && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -21239,11 +22822,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gold && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -21282,11 +22865,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gold && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -21325,11 +22908,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gold && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -21368,11 +22951,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gold && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -21411,11 +22994,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/gold && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -21473,6 +23056,21 @@ @endif gold +.PHONY: install-strip-gold maybe-install-strip-gold +maybe-install-strip-gold: +@if gold +maybe-install-strip-gold: install-strip-gold + +install-strip-gold: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gold && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif gold + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-gold info-gold @@ -21814,7 +23412,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/gprof/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gprof ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/gprof; \ cd "$(HOST_SUBDIR)/gprof" || exit 1; \ case $(srcdir) in \ @@ -21846,7 +23444,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gprof && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-gprof)) @@ -21885,6 +23483,21 @@ @endif gprof +.PHONY: install-strip-gprof maybe-install-strip-gprof +maybe-install-strip-gprof: +@if gprof +maybe-install-strip-gprof: install-strip-gprof + +install-strip-gprof: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gprof && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif gprof + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-gprof info-gprof @@ -22239,7 +23852,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/gzip/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gzip ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/gzip; \ cd "$(HOST_SUBDIR)/gzip" || exit 1; \ case $(srcdir) in \ @@ -22271,7 +23884,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gzip && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-gzip)) @@ -22310,6 +23923,21 @@ @endif gzip +.PHONY: install-strip-gzip maybe-install-strip-gzip +maybe-install-strip-gzip: +@if gzip +maybe-install-strip-gzip: install-strip-gzip + +install-strip-gzip: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gzip && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif gzip + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-gzip info-gzip @@ -22664,7 +24292,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/hello/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/hello ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/hello; \ cd "$(HOST_SUBDIR)/hello" || exit 1; \ case $(srcdir) in \ @@ -22696,7 +24324,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/hello && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-hello)) @@ -22735,6 +24363,21 @@ @endif hello +.PHONY: install-strip-hello maybe-install-strip-hello +maybe-install-strip-hello: +@if hello +maybe-install-strip-hello: install-strip-hello + +install-strip-hello: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/hello && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif hello + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-hello info-hello @@ -23089,7 +24732,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/indent/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/indent ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/indent; \ cd "$(HOST_SUBDIR)/indent" || exit 1; \ case $(srcdir) in \ @@ -23121,7 +24764,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/indent && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-indent)) @@ -23160,6 +24803,21 @@ @endif indent +.PHONY: install-strip-indent maybe-install-strip-indent +maybe-install-strip-indent: +@if indent +maybe-install-strip-indent: install-strip-indent + +install-strip-indent: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/indent && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif indent + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-indent info-indent @@ -23513,7 +25171,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/intl; \ cd "$(HOST_SUBDIR)/intl" || exit 1; \ case $(srcdir) in \ @@ -23544,8 +25202,8 @@ test ! -f $(HOST_SUBDIR)/intl/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/intl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ cd $(HOST_SUBDIR)/intl || exit 1; \ @@ -23576,8 +25234,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/intl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ cd $(HOST_SUBDIR)/intl || exit 1; \ @@ -23609,8 +25267,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/intl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ cd $(HOST_SUBDIR)/intl || exit 1; \ @@ -23642,8 +25300,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/intl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ cd $(HOST_SUBDIR)/intl || exit 1; \ @@ -23675,8 +25333,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/intl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ cd $(HOST_SUBDIR)/intl || exit 1; \ @@ -23708,8 +25366,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/intl ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/intl ; \ cd $(HOST_SUBDIR)/intl || exit 1; \ @@ -23742,7 +25400,7 @@ all-intl: configure-intl @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/intl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-intl)) @@ -23763,11 +25421,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/intl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -23805,11 +25463,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/intl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -23848,11 +25506,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/intl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -23891,11 +25549,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/intl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -23934,11 +25592,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/intl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -23977,11 +25635,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/intl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -24039,6 +25697,21 @@ @endif intl +.PHONY: install-strip-intl maybe-install-strip-intl +maybe-install-strip-intl: +@if intl +maybe-install-strip-intl: install-strip-intl + +install-strip-intl: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/intl && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif intl + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-intl info-intl @@ -24380,7 +26053,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/tcl/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/tcl ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/tcl; \ cd "$(HOST_SUBDIR)/tcl" || exit 1; \ case $(srcdir) in \ @@ -24412,7 +26085,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/tcl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-tcl)) @@ -24451,6 +26124,21 @@ @endif tcl +.PHONY: install-strip-tcl maybe-install-strip-tcl +maybe-install-strip-tcl: +@if tcl +maybe-install-strip-tcl: install-strip-tcl + +install-strip-tcl: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/tcl && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif tcl + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-tcl info-tcl @@ -24790,7 +26478,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/itcl/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/itcl ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/itcl; \ cd "$(HOST_SUBDIR)/itcl" || exit 1; \ case $(srcdir) in \ @@ -24822,7 +26510,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/itcl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-itcl)) @@ -24861,6 +26549,21 @@ @endif itcl +.PHONY: install-strip-itcl maybe-install-strip-itcl +maybe-install-strip-itcl: +@if itcl +maybe-install-strip-itcl: install-strip-itcl + +install-strip-itcl: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/itcl && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif itcl + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-itcl info-itcl @@ -25214,7 +26917,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/ld; \ cd "$(HOST_SUBDIR)/ld" || exit 1; \ case $(srcdir) in \ @@ -25245,8 +26948,8 @@ test ! -f $(HOST_SUBDIR)/ld/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/ld ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ cd $(HOST_SUBDIR)/ld || exit 1; \ @@ -25277,8 +26980,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/ld ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ cd $(HOST_SUBDIR)/ld || exit 1; \ @@ -25310,8 +27013,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/ld ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ cd $(HOST_SUBDIR)/ld || exit 1; \ @@ -25343,8 +27046,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/ld ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ cd $(HOST_SUBDIR)/ld || exit 1; \ @@ -25376,8 +27079,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/ld ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ cd $(HOST_SUBDIR)/ld || exit 1; \ @@ -25409,8 +27112,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/ld ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/ld ; \ cd $(HOST_SUBDIR)/ld || exit 1; \ @@ -25443,7 +27146,7 @@ all-ld: configure-ld @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/ld && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-ld)) @@ -25464,11 +27167,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ld && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -25506,11 +27209,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ld && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -25549,11 +27252,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ld && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -25592,11 +27295,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ld && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -25635,11 +27338,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ld && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -25678,11 +27381,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/ld && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -25740,6 +27443,21 @@ @endif ld +.PHONY: install-strip-ld maybe-install-strip-ld +maybe-install-strip-ld: +@if ld +maybe-install-strip-ld: install-strip-ld + +install-strip-ld: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/ld && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif ld + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-ld info-ld @@ -26080,7 +27798,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/libcpp; \ cd "$(HOST_SUBDIR)/libcpp" || exit 1; \ case $(srcdir) in \ @@ -26111,8 +27829,8 @@ test ! -f $(HOST_SUBDIR)/libcpp/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/libcpp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ cd $(HOST_SUBDIR)/libcpp || exit 1; \ @@ -26143,8 +27861,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/libcpp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ cd $(HOST_SUBDIR)/libcpp || exit 1; \ @@ -26176,8 +27894,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/libcpp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ cd $(HOST_SUBDIR)/libcpp || exit 1; \ @@ -26209,8 +27927,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/libcpp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ cd $(HOST_SUBDIR)/libcpp || exit 1; \ @@ -26242,8 +27960,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/libcpp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ cd $(HOST_SUBDIR)/libcpp || exit 1; \ @@ -26275,8 +27993,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/libcpp ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcpp ; \ cd $(HOST_SUBDIR)/libcpp || exit 1; \ @@ -26309,7 +28027,7 @@ all-libcpp: configure-libcpp @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libcpp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-libcpp)) @@ -26330,11 +28048,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libcpp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -26372,11 +28090,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libcpp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -26415,11 +28133,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libcpp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -26458,11 +28176,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libcpp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -26501,11 +28219,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libcpp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -26544,11 +28262,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libcpp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -26606,6 +28324,21 @@ @endif libcpp +.PHONY: install-strip-libcpp maybe-install-strip-libcpp +maybe-install-strip-libcpp: +@if libcpp +maybe-install-strip-libcpp: install-strip-libcpp + +install-strip-libcpp: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libcpp && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif libcpp + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-libcpp info-libcpp @@ -26946,7 +28679,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/libdecnumber; \ cd "$(HOST_SUBDIR)/libdecnumber" || exit 1; \ case $(srcdir) in \ @@ -26977,8 +28710,8 @@ test ! -f $(HOST_SUBDIR)/libdecnumber/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/libdecnumber ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ @@ -27009,8 +28742,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/libdecnumber ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ @@ -27042,8 +28775,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/libdecnumber ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ @@ -27075,8 +28808,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/libdecnumber ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ @@ -27108,8 +28841,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/libdecnumber ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ @@ -27141,8 +28874,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/libdecnumber ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libdecnumber ; \ cd $(HOST_SUBDIR)/libdecnumber || exit 1; \ @@ -27175,7 +28908,7 @@ all-libdecnumber: configure-libdecnumber @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libdecnumber && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-libdecnumber)) @@ -27196,11 +28929,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libdecnumber && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -27238,11 +28971,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libdecnumber && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -27281,11 +29014,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libdecnumber && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -27324,11 +29057,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libdecnumber && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -27367,11 +29100,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libdecnumber && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -27410,11 +29143,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libdecnumber && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -27472,6 +29205,21 @@ @endif libdecnumber +.PHONY: install-strip-libdecnumber maybe-install-strip-libdecnumber +maybe-install-strip-libdecnumber: +@if libdecnumber +maybe-install-strip-libdecnumber: install-strip-libdecnumber + +install-strip-libdecnumber: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libdecnumber && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif libdecnumber + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-libdecnumber info-libdecnumber @@ -27813,7 +29561,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/libgui/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgui ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/libgui; \ cd "$(HOST_SUBDIR)/libgui" || exit 1; \ case $(srcdir) in \ @@ -27845,7 +29593,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libgui && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-libgui)) @@ -27884,6 +29632,21 @@ @endif libgui +.PHONY: install-strip-libgui maybe-install-strip-libgui +maybe-install-strip-libgui: +@if libgui +maybe-install-strip-libgui: install-strip-libgui + +install-strip-libgui: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libgui && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif libgui + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-libgui info-libgui @@ -28237,7 +30000,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/libiberty; \ cd "$(HOST_SUBDIR)/libiberty" || exit 1; \ case $(srcdir) in \ @@ -28249,7 +30012,7 @@ libsrcdir="$$s/libiberty"; \ $(SHELL) $${libsrcdir}/configure \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} $${srcdiroption} @extra_host_libiberty_configure_flags@ \ || exit 1 @endif libiberty @@ -28268,8 +30031,8 @@ test ! -f $(HOST_SUBDIR)/libiberty/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/libiberty ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ cd $(HOST_SUBDIR)/libiberty || exit 1; \ @@ -28283,7 +30046,8 @@ $(SHELL) $${libsrcdir}/configure \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) + $(STAGE1_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap .PHONY: configure-stage2-libiberty maybe-configure-stage2-libiberty @@ -28300,8 +30064,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/libiberty ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ cd $(HOST_SUBDIR)/libiberty || exit 1; \ @@ -28316,7 +30080,8 @@ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) + $(STAGE2_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap .PHONY: configure-stage3-libiberty maybe-configure-stage3-libiberty @@ -28333,8 +30098,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/libiberty ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ cd $(HOST_SUBDIR)/libiberty || exit 1; \ @@ -28349,7 +30114,8 @@ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) + $(STAGE3_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap .PHONY: configure-stage4-libiberty maybe-configure-stage4-libiberty @@ -28366,8 +30132,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/libiberty ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ cd $(HOST_SUBDIR)/libiberty || exit 1; \ @@ -28382,7 +30148,8 @@ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) + $(STAGE4_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap .PHONY: configure-stageprofile-libiberty maybe-configure-stageprofile-libiberty @@ -28399,8 +30166,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/libiberty ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ cd $(HOST_SUBDIR)/libiberty || exit 1; \ @@ -28415,7 +30182,8 @@ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) + $(STAGEprofile_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap .PHONY: configure-stagefeedback-libiberty maybe-configure-stagefeedback-libiberty @@ -28432,8 +30200,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/libiberty ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty ; \ cd $(HOST_SUBDIR)/libiberty || exit 1; \ @@ -28448,7 +30216,8 @@ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ --target=${target_alias} $${srcdiroption} \ --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) + $(STAGEfeedback_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap @@ -28466,7 +30235,7 @@ all-libiberty: configure-libiberty @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libiberty && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-libiberty)) @@ -28487,11 +30256,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libiberty && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -28529,11 +30298,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libiberty && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -28572,11 +30341,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libiberty && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -28615,11 +30384,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libiberty && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -28658,11 +30427,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libiberty && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -28701,11 +30470,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/libiberty && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -28763,6 +30532,21 @@ @endif libiberty +.PHONY: install-strip-libiberty maybe-install-strip-libiberty +maybe-install-strip-libiberty: +@if libiberty +maybe-install-strip-libiberty: install-strip-libiberty + +install-strip-libiberty: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libiberty && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif libiberty + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-libiberty info-libiberty @@ -29104,7 +30888,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/libiconv/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/libiconv; \ cd "$(HOST_SUBDIR)/libiconv" || exit 1; \ case $(srcdir) in \ @@ -29136,7 +30920,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libiconv && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-libiconv)) @@ -29169,6 +30953,15 @@ @endif libiconv +.PHONY: install-strip-libiconv maybe-install-strip-libiconv +maybe-install-strip-libiconv: +@if libiconv +maybe-install-strip-libiconv: install-strip-libiconv + +install-strip-libiconv: + +@endif libiconv + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-libiconv info-libiconv @@ -29472,7 +31265,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/libtool/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libtool ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/libtool; \ cd "$(HOST_SUBDIR)/libtool" || exit 1; \ case $(srcdir) in \ @@ -29504,7 +31297,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libtool && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-libtool)) @@ -29543,6 +31336,21 @@ @endif libtool +.PHONY: install-strip-libtool maybe-install-strip-libtool +maybe-install-strip-libtool: +@if libtool +maybe-install-strip-libtool: install-strip-libtool + +install-strip-libtool: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libtool && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif libtool + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-libtool info-libtool @@ -29897,7 +31705,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/m4/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/m4 ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/m4; \ cd "$(HOST_SUBDIR)/m4" || exit 1; \ case $(srcdir) in \ @@ -29929,7 +31737,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/m4 && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-m4)) @@ -29968,6 +31776,21 @@ @endif m4 +.PHONY: install-strip-m4 maybe-install-strip-m4 +maybe-install-strip-m4: +@if m4 +maybe-install-strip-m4: install-strip-m4 + +install-strip-m4: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/m4 && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif m4 + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-m4 info-m4 @@ -30322,7 +32145,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/make/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/make ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/make; \ cd "$(HOST_SUBDIR)/make" || exit 1; \ case $(srcdir) in \ @@ -30354,7 +32177,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/make && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-make)) @@ -30393,6 +32216,21 @@ @endif make +.PHONY: install-strip-make maybe-install-strip-make +maybe-install-strip-make: +@if make +maybe-install-strip-make: install-strip-make + +install-strip-make: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/make && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif make + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-make info-make @@ -30747,7 +32585,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/mmalloc/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/mmalloc ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/mmalloc; \ cd "$(HOST_SUBDIR)/mmalloc" || exit 1; \ case $(srcdir) in \ @@ -30779,7 +32617,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/mmalloc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-mmalloc)) @@ -30812,6 +32650,21 @@ @endif mmalloc +.PHONY: install-strip-mmalloc maybe-install-strip-mmalloc +maybe-install-strip-mmalloc: +@if mmalloc +maybe-install-strip-mmalloc: install-strip-mmalloc + +install-strip-mmalloc: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/mmalloc && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif mmalloc + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-mmalloc info-mmalloc @@ -31166,7 +33019,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/patch/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/patch ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/patch; \ cd "$(HOST_SUBDIR)/patch" || exit 1; \ case $(srcdir) in \ @@ -31198,7 +33051,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/patch && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-patch)) @@ -31237,6 +33090,21 @@ @endif patch +.PHONY: install-strip-patch maybe-install-strip-patch +maybe-install-strip-patch: +@if patch +maybe-install-strip-patch: install-strip-patch + +install-strip-patch: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/patch && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif patch + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-patch info-patch @@ -31591,7 +33459,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/perl/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/perl ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/perl; \ cd "$(HOST_SUBDIR)/perl" || exit 1; \ case $(srcdir) in \ @@ -31623,7 +33491,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/perl && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-perl)) @@ -31662,6 +33530,21 @@ @endif perl +.PHONY: install-strip-perl maybe-install-strip-perl +maybe-install-strip-perl: +@if perl +maybe-install-strip-perl: install-strip-perl + +install-strip-perl: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/perl && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif perl + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-perl info-perl @@ -32016,7 +33899,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/prms/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/prms ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/prms; \ cd "$(HOST_SUBDIR)/prms" || exit 1; \ case $(srcdir) in \ @@ -32048,7 +33931,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/prms && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-prms)) @@ -32087,6 +33970,21 @@ @endif prms +.PHONY: install-strip-prms maybe-install-strip-prms +maybe-install-strip-prms: +@if prms +maybe-install-strip-prms: install-strip-prms + +install-strip-prms: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/prms && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif prms + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-prms info-prms @@ -32441,7 +34339,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/rcs/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/rcs ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/rcs; \ cd "$(HOST_SUBDIR)/rcs" || exit 1; \ case $(srcdir) in \ @@ -32473,7 +34371,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/rcs && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-rcs)) @@ -32512,6 +34410,21 @@ @endif rcs +.PHONY: install-strip-rcs maybe-install-strip-rcs +maybe-install-strip-rcs: +@if rcs +maybe-install-strip-rcs: install-strip-rcs + +install-strip-rcs: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/rcs && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif rcs + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-rcs info-rcs @@ -32866,7 +34779,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/readline/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/readline ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/readline; \ cd "$(HOST_SUBDIR)/readline" || exit 1; \ case $(srcdir) in \ @@ -32898,7 +34811,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/readline && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-readline)) @@ -32937,6 +34850,21 @@ @endif readline +.PHONY: install-strip-readline maybe-install-strip-readline +maybe-install-strip-readline: +@if readline +maybe-install-strip-readline: install-strip-readline + +install-strip-readline: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/readline && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif readline + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-readline info-readline @@ -33291,7 +35219,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/release/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/release ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/release; \ cd "$(HOST_SUBDIR)/release" || exit 1; \ case $(srcdir) in \ @@ -33323,7 +35251,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/release && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-release)) @@ -33350,6 +35278,15 @@ @endif release +.PHONY: install-strip-release maybe-install-strip-release +maybe-install-strip-release: +@if release +maybe-install-strip-release: install-strip-release + +install-strip-release: + +@endif release + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-release info-release @@ -33704,7 +35641,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/recode/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/recode ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/recode; \ cd "$(HOST_SUBDIR)/recode" || exit 1; \ case $(srcdir) in \ @@ -33736,7 +35673,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/recode && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-recode)) @@ -33775,6 +35712,21 @@ @endif recode +.PHONY: install-strip-recode maybe-install-strip-recode +maybe-install-strip-recode: +@if recode +maybe-install-strip-recode: install-strip-recode + +install-strip-recode: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/recode && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif recode + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-recode info-recode @@ -34129,7 +36081,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/sed/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/sed ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/sed; \ cd "$(HOST_SUBDIR)/sed" || exit 1; \ case $(srcdir) in \ @@ -34161,7 +36113,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/sed && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-sed)) @@ -34200,6 +36152,21 @@ @endif sed +.PHONY: install-strip-sed maybe-install-strip-sed +maybe-install-strip-sed: +@if sed +maybe-install-strip-sed: install-strip-sed + +install-strip-sed: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/sed && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif sed + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-sed info-sed @@ -34554,7 +36521,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/send-pr/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/send-pr ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/send-pr; \ cd "$(HOST_SUBDIR)/send-pr" || exit 1; \ case $(srcdir) in \ @@ -34586,7 +36553,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/send-pr && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-send-pr)) @@ -34625,6 +36592,21 @@ @endif send-pr +.PHONY: install-strip-send-pr maybe-install-strip-send-pr +maybe-install-strip-send-pr: +@if send-pr +maybe-install-strip-send-pr: install-strip-send-pr + +install-strip-send-pr: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/send-pr && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif send-pr + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-send-pr info-send-pr @@ -34979,7 +36961,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/shellutils/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/shellutils ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/shellutils; \ cd "$(HOST_SUBDIR)/shellutils" || exit 1; \ case $(srcdir) in \ @@ -35011,7 +36993,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/shellutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-shellutils)) @@ -35050,6 +37032,21 @@ @endif shellutils +.PHONY: install-strip-shellutils maybe-install-strip-shellutils +maybe-install-strip-shellutils: +@if shellutils +maybe-install-strip-shellutils: install-strip-shellutils + +install-strip-shellutils: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/shellutils && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif shellutils + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-shellutils info-shellutils @@ -35404,7 +37401,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/sid/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/sid ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/sid; \ cd "$(HOST_SUBDIR)/sid" || exit 1; \ case $(srcdir) in \ @@ -35436,7 +37433,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/sid && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-sid)) @@ -35475,6 +37472,21 @@ @endif sid +.PHONY: install-strip-sid maybe-install-strip-sid +maybe-install-strip-sid: +@if sid +maybe-install-strip-sid: install-strip-sid + +install-strip-sid: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/sid && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif sid + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-sid info-sid @@ -35829,7 +37841,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/sim/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/sim ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/sim; \ cd "$(HOST_SUBDIR)/sim" || exit 1; \ case $(srcdir) in \ @@ -35861,7 +37873,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/sim && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-sim)) @@ -35900,6 +37912,21 @@ @endif sim +.PHONY: install-strip-sim maybe-install-strip-sim +maybe-install-strip-sim: +@if sim +maybe-install-strip-sim: install-strip-sim + +install-strip-sim: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/sim && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif sim + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-sim info-sim @@ -36254,7 +38281,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/tar/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/tar ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/tar; \ cd "$(HOST_SUBDIR)/tar" || exit 1; \ case $(srcdir) in \ @@ -36286,7 +38313,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/tar && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-tar)) @@ -36325,6 +38352,21 @@ @endif tar +.PHONY: install-strip-tar maybe-install-strip-tar +maybe-install-strip-tar: +@if tar +maybe-install-strip-tar: install-strip-tar + +install-strip-tar: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/tar && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif tar + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-tar info-tar @@ -36679,7 +38721,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/texinfo/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/texinfo ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/texinfo; \ cd "$(HOST_SUBDIR)/texinfo" || exit 1; \ case $(srcdir) in \ @@ -36711,7 +38753,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/texinfo && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-texinfo)) @@ -36744,6 +38786,15 @@ @endif texinfo +.PHONY: install-strip-texinfo maybe-install-strip-texinfo +maybe-install-strip-texinfo: +@if texinfo +maybe-install-strip-texinfo: install-strip-texinfo + +install-strip-texinfo: + +@endif texinfo + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-texinfo info-texinfo @@ -37098,7 +39149,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/textutils/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/textutils ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/textutils; \ cd "$(HOST_SUBDIR)/textutils" || exit 1; \ case $(srcdir) in \ @@ -37130,7 +39181,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/textutils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-textutils)) @@ -37169,6 +39220,21 @@ @endif textutils +.PHONY: install-strip-textutils maybe-install-strip-textutils +maybe-install-strip-textutils: +@if textutils +maybe-install-strip-textutils: install-strip-textutils + +install-strip-textutils: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/textutils && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif textutils + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-textutils info-textutils @@ -37523,7 +39589,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/time/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/time ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/time; \ cd "$(HOST_SUBDIR)/time" || exit 1; \ case $(srcdir) in \ @@ -37555,7 +39621,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/time && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-time)) @@ -37594,6 +39660,21 @@ @endif time +.PHONY: install-strip-time maybe-install-strip-time +maybe-install-strip-time: +@if time +maybe-install-strip-time: install-strip-time + +install-strip-time: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/time && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif time + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-time info-time @@ -37948,7 +40029,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/uudecode/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/uudecode ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/uudecode; \ cd "$(HOST_SUBDIR)/uudecode" || exit 1; \ case $(srcdir) in \ @@ -37980,7 +40061,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/uudecode && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-uudecode)) @@ -38019,6 +40100,21 @@ @endif uudecode +.PHONY: install-strip-uudecode maybe-install-strip-uudecode +maybe-install-strip-uudecode: +@if uudecode +maybe-install-strip-uudecode: install-strip-uudecode + +install-strip-uudecode: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/uudecode && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif uudecode + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-uudecode info-uudecode @@ -38373,7 +40469,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/wdiff/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/wdiff ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/wdiff; \ cd "$(HOST_SUBDIR)/wdiff" || exit 1; \ case $(srcdir) in \ @@ -38405,7 +40501,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/wdiff && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-wdiff)) @@ -38444,6 +40540,21 @@ @endif wdiff +.PHONY: install-strip-wdiff maybe-install-strip-wdiff +maybe-install-strip-wdiff: +@if wdiff +maybe-install-strip-wdiff: install-strip-wdiff + +install-strip-wdiff: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/wdiff && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif wdiff + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-wdiff info-wdiff @@ -38798,7 +40909,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/zip/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zip ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/zip; \ cd "$(HOST_SUBDIR)/zip" || exit 1; \ case $(srcdir) in \ @@ -38830,7 +40941,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/zip && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-zip)) @@ -38872,6 +40983,21 @@ @endif zip +.PHONY: install-strip-zip maybe-install-strip-zip +maybe-install-strip-zip: +@if zip +maybe-install-strip-zip: install-strip-zip + +install-strip-zip: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/zip && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif zip + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-zip info-zip @@ -39225,7 +41351,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/zlib; \ cd "$(HOST_SUBDIR)/zlib" || exit 1; \ case $(srcdir) in \ @@ -39256,8 +41382,8 @@ test ! -f $(HOST_SUBDIR)/zlib/Makefile || exit 0; \ $(HOST_EXPORTS) \ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(HOST_SUBDIR)/zlib ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ cd $(HOST_SUBDIR)/zlib || exit 1; \ @@ -39288,8 +41414,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(HOST_SUBDIR)/zlib ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ cd $(HOST_SUBDIR)/zlib || exit 1; \ @@ -39321,8 +41447,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(HOST_SUBDIR)/zlib ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ cd $(HOST_SUBDIR)/zlib || exit 1; \ @@ -39354,8 +41480,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(HOST_SUBDIR)/zlib ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ cd $(HOST_SUBDIR)/zlib || exit 1; \ @@ -39387,8 +41513,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage profile in $(HOST_SUBDIR)/zlib ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ cd $(HOST_SUBDIR)/zlib || exit 1; \ @@ -39420,8 +41546,8 @@ $(HOST_EXPORTS) \ $(POSTSTAGE1_HOST_EXPORTS) \ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(HOST_SUBDIR)/zlib ; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/zlib ; \ cd $(HOST_SUBDIR)/zlib || exit 1; \ @@ -39454,7 +41580,7 @@ all-zlib: configure-zlib @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/zlib && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-zlib)) @@ -39475,11 +41601,11 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ cd $(HOST_SUBDIR)/zlib && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE1_CFLAGS)" \ - CXXFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ LIBCFLAGS="$(LIBCFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -39517,11 +41643,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/zlib && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE2_CFLAGS)" \ - CXXFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ LIBCFLAGS="$(STAGE2_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -39560,11 +41686,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/zlib && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE3_CFLAGS)" \ - CXXFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ LIBCFLAGS="$(STAGE3_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -39603,11 +41729,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/zlib && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGE4_CFLAGS)" \ - CXXFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ LIBCFLAGS="$(STAGE4_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -39646,11 +41772,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/zlib && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEprofile_CFLAGS)" \ - CXXFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -39689,11 +41815,11 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ cd $(HOST_SUBDIR)/zlib && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(STAGEfeedback_CFLAGS)" \ - CXXFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ @@ -39739,6 +41865,15 @@ @endif zlib +.PHONY: install-strip-zlib maybe-install-strip-zlib +maybe-install-strip-zlib: +@if zlib +maybe-install-strip-zlib: install-strip-zlib + +install-strip-zlib: + +@endif zlib + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-zlib info-zlib @@ -40080,7 +42215,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/gdb/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gdb ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/gdb; \ cd "$(HOST_SUBDIR)/gdb" || exit 1; \ case $(srcdir) in \ @@ -40112,9 +42247,9 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-gdb)) @endif gdb @@ -40132,7 +42267,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) check) @endif gdb @@ -40147,7 +42282,22 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gdb && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) + $(MAKE) $(FLAGS_TO_PASS) install) + +@endif gdb + +.PHONY: install-strip-gdb maybe-install-strip-gdb +maybe-install-strip-gdb: +@if gdb +maybe-install-strip-gdb: install-strip-gdb + +install-strip-gdb: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gdb && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) @endif gdb @@ -40165,7 +42315,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing info in gdb" ; \ @@ -40191,7 +42341,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing dvi in gdb" ; \ @@ -40217,7 +42367,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing pdf in gdb" ; \ @@ -40243,7 +42393,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing html in gdb" ; \ @@ -40269,7 +42419,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing TAGS in gdb" ; \ @@ -40296,7 +42446,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-info in gdb" ; \ @@ -40323,7 +42473,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-pdf in gdb" ; \ @@ -40350,7 +42500,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-html in gdb" ; \ @@ -40376,7 +42526,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing installcheck in gdb" ; \ @@ -40401,7 +42551,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing mostlyclean in gdb" ; \ @@ -40426,7 +42576,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing clean in gdb" ; \ @@ -40451,7 +42601,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing distclean in gdb" ; \ @@ -40476,7 +42626,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing maintainer-clean in gdb" ; \ @@ -40505,7 +42655,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/expect/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/expect ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/expect; \ cd "$(HOST_SUBDIR)/expect" || exit 1; \ case $(srcdir) in \ @@ -40537,9 +42687,9 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-expect)) @endif expect @@ -40557,7 +42707,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) check) @endif expect @@ -40572,7 +42722,22 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/expect && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) + $(MAKE) $(FLAGS_TO_PASS) install) + +@endif expect + +.PHONY: install-strip-expect maybe-install-strip-expect +maybe-install-strip-expect: +@if expect +maybe-install-strip-expect: install-strip-expect + +install-strip-expect: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/expect && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) @endif expect @@ -40590,7 +42755,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing info in expect" ; \ @@ -40616,7 +42781,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing dvi in expect" ; \ @@ -40642,7 +42807,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing pdf in expect" ; \ @@ -40668,7 +42833,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing html in expect" ; \ @@ -40694,7 +42859,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing TAGS in expect" ; \ @@ -40721,7 +42886,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-info in expect" ; \ @@ -40748,7 +42913,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-pdf in expect" ; \ @@ -40775,7 +42940,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-html in expect" ; \ @@ -40801,7 +42966,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing installcheck in expect" ; \ @@ -40826,7 +42991,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing mostlyclean in expect" ; \ @@ -40851,7 +43016,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing clean in expect" ; \ @@ -40876,7 +43041,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing distclean in expect" ; \ @@ -40901,7 +43066,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing maintainer-clean in expect" ; \ @@ -40930,7 +43095,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/guile/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/guile ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/guile; \ cd "$(HOST_SUBDIR)/guile" || exit 1; \ case $(srcdir) in \ @@ -40962,9 +43127,9 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-guile)) @endif guile @@ -40982,7 +43147,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) check) @endif guile @@ -40997,7 +43162,22 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/guile && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) + $(MAKE) $(FLAGS_TO_PASS) install) + +@endif guile + +.PHONY: install-strip-guile maybe-install-strip-guile +maybe-install-strip-guile: +@if guile +maybe-install-strip-guile: install-strip-guile + +install-strip-guile: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/guile && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) @endif guile @@ -41015,7 +43195,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing info in guile" ; \ @@ -41041,7 +43221,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing dvi in guile" ; \ @@ -41067,7 +43247,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing pdf in guile" ; \ @@ -41093,7 +43273,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing html in guile" ; \ @@ -41119,7 +43299,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing TAGS in guile" ; \ @@ -41146,7 +43326,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-info in guile" ; \ @@ -41173,7 +43353,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-pdf in guile" ; \ @@ -41200,7 +43380,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-html in guile" ; \ @@ -41226,7 +43406,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing installcheck in guile" ; \ @@ -41251,7 +43431,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing mostlyclean in guile" ; \ @@ -41276,7 +43456,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing clean in guile" ; \ @@ -41301,7 +43481,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing distclean in guile" ; \ @@ -41326,7 +43506,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing maintainer-clean in guile" ; \ @@ -41355,7 +43535,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/tk/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/tk ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/tk; \ cd "$(HOST_SUBDIR)/tk" || exit 1; \ case $(srcdir) in \ @@ -41387,9 +43567,9 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS) \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-tk)) @endif tk @@ -41407,7 +43587,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) check) @endif tk @@ -41422,7 +43602,22 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/tk && \ - $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install) + $(MAKE) $(FLAGS_TO_PASS) install) + +@endif tk + +.PHONY: install-strip-tk maybe-install-strip-tk +maybe-install-strip-tk: +@if tk +maybe-install-strip-tk: install-strip-tk + +install-strip-tk: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/tk && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) @endif tk @@ -41440,7 +43635,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing info in tk" ; \ @@ -41466,7 +43661,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing dvi in tk" ; \ @@ -41492,7 +43687,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing pdf in tk" ; \ @@ -41518,7 +43713,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing html in tk" ; \ @@ -41544,7 +43739,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing TAGS in tk" ; \ @@ -41571,7 +43766,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-info in tk" ; \ @@ -41598,7 +43793,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-pdf in tk" ; \ @@ -41625,7 +43820,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-html in tk" ; \ @@ -41651,7 +43846,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing installcheck in tk" ; \ @@ -41676,7 +43871,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing mostlyclean in tk" ; \ @@ -41701,7 +43896,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing clean in tk" ; \ @@ -41726,7 +43921,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing distclean in tk" ; \ @@ -41751,7 +43946,7 @@ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) $(X11_FLAGS_TO_PASS); do \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing maintainer-clean in tk" ; \ @@ -41780,7 +43975,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/libtermcap/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libtermcap ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/libtermcap; \ cd "$(HOST_SUBDIR)/libtermcap" || exit 1; \ case $(srcdir) in \ @@ -41812,7 +44007,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libtermcap && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-libtermcap)) @@ -41845,6 +44040,21 @@ @endif libtermcap +.PHONY: install-strip-libtermcap maybe-install-strip-libtermcap +maybe-install-strip-libtermcap: +@if libtermcap +maybe-install-strip-libtermcap: install-strip-libtermcap + +install-strip-libtermcap: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libtermcap && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif libtermcap + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-libtermcap info-libtermcap @@ -42139,7 +44349,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/utils/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/utils ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/utils; \ cd "$(HOST_SUBDIR)/utils" || exit 1; \ case $(srcdir) in \ @@ -42171,7 +44381,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/utils && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-utils)) @@ -42204,6 +44414,21 @@ @endif utils +.PHONY: install-strip-utils maybe-install-strip-utils +maybe-install-strip-utils: +@if utils +maybe-install-strip-utils: install-strip-utils + +install-strip-utils: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/utils && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif utils + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-utils info-utils @@ -42558,7 +44783,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/gnattools/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gnattools ; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ echo Configuring in $(HOST_SUBDIR)/gnattools; \ cd "$(HOST_SUBDIR)/gnattools" || exit 1; \ case $(srcdir) in \ @@ -42590,7 +44815,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gnattools && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ $(TARGET-gnattools)) @@ -42629,6 +44854,21 @@ @endif gnattools +.PHONY: install-strip-gnattools maybe-install-strip-gnattools +maybe-install-strip-gnattools: +@if gnattools +maybe-install-strip-gnattools: install-strip-gnattools + +install-strip-gnattools: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gnattools && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif gnattools + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-gnattools info-gnattools @@ -42840,25 +45080,916 @@ install-html) \ || exit 1 -@endif gnattools +@endif gnattools + +.PHONY: maybe-installcheck-gnattools installcheck-gnattools +maybe-installcheck-gnattools: +@if gnattools +maybe-installcheck-gnattools: installcheck-gnattools + +installcheck-gnattools: \ + configure-gnattools + @: $(MAKE); $(unstage) + @[ -f ./gnattools/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing installcheck in gnattools" ; \ + (cd $(HOST_SUBDIR)/gnattools && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + installcheck) \ + || exit 1 + +@endif gnattools + +.PHONY: maybe-mostlyclean-gnattools mostlyclean-gnattools +maybe-mostlyclean-gnattools: +@if gnattools +maybe-mostlyclean-gnattools: mostlyclean-gnattools + +mostlyclean-gnattools: + @: $(MAKE); $(unstage) + @[ -f ./gnattools/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing mostlyclean in gnattools" ; \ + (cd $(HOST_SUBDIR)/gnattools && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + mostlyclean) \ + || exit 1 + +@endif gnattools + +.PHONY: maybe-clean-gnattools clean-gnattools +maybe-clean-gnattools: +@if gnattools +maybe-clean-gnattools: clean-gnattools + +clean-gnattools: + @: $(MAKE); $(unstage) + @[ -f ./gnattools/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing clean in gnattools" ; \ + (cd $(HOST_SUBDIR)/gnattools && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + clean) \ + || exit 1 + +@endif gnattools + +.PHONY: maybe-distclean-gnattools distclean-gnattools +maybe-distclean-gnattools: +@if gnattools +maybe-distclean-gnattools: distclean-gnattools + +distclean-gnattools: + @: $(MAKE); $(unstage) + @[ -f ./gnattools/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing distclean in gnattools" ; \ + (cd $(HOST_SUBDIR)/gnattools && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + distclean) \ + || exit 1 + +@endif gnattools + +.PHONY: maybe-maintainer-clean-gnattools maintainer-clean-gnattools +maybe-maintainer-clean-gnattools: +@if gnattools +maybe-maintainer-clean-gnattools: maintainer-clean-gnattools + +maintainer-clean-gnattools: + @: $(MAKE); $(unstage) + @[ -f ./gnattools/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing maintainer-clean in gnattools" ; \ + (cd $(HOST_SUBDIR)/gnattools && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + maintainer-clean) \ + || exit 1 + +@endif gnattools + + + +.PHONY: configure-lto-plugin maybe-configure-lto-plugin +maybe-configure-lto-plugin: +@if gcc-bootstrap +configure-lto-plugin: stage_current +@endif gcc-bootstrap +@if lto-plugin +maybe-configure-lto-plugin: configure-lto-plugin +configure-lto-plugin: + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + test ! -f $(HOST_SUBDIR)/lto-plugin/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin ; \ + $(HOST_EXPORTS) \ + echo Configuring in $(HOST_SUBDIR)/lto-plugin; \ + cd "$(HOST_SUBDIR)/lto-plugin" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/lto-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/lto-plugin"; \ + libsrcdir="$$s/lto-plugin"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} --enable-shared \ + || exit 1 +@endif lto-plugin + + + +.PHONY: configure-stage1-lto-plugin maybe-configure-stage1-lto-plugin +maybe-configure-stage1-lto-plugin: +@if lto-plugin-bootstrap +maybe-configure-stage1-lto-plugin: configure-stage1-lto-plugin +configure-stage1-lto-plugin: + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/lto-plugin/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 1 in $(HOST_SUBDIR)/lto-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin ; \ + cd $(HOST_SUBDIR)/lto-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/lto-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/lto-plugin"; \ + libsrcdir="$$s/lto-plugin"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) \ + --enable-shared +@endif lto-plugin-bootstrap + +.PHONY: configure-stage2-lto-plugin maybe-configure-stage2-lto-plugin +maybe-configure-stage2-lto-plugin: +@if lto-plugin-bootstrap +maybe-configure-stage2-lto-plugin: configure-stage2-lto-plugin +configure-stage2-lto-plugin: + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/lto-plugin/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 2 in $(HOST_SUBDIR)/lto-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin ; \ + cd $(HOST_SUBDIR)/lto-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/lto-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/lto-plugin"; \ + libsrcdir="$$s/lto-plugin"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ + --enable-shared +@endif lto-plugin-bootstrap + +.PHONY: configure-stage3-lto-plugin maybe-configure-stage3-lto-plugin +maybe-configure-stage3-lto-plugin: +@if lto-plugin-bootstrap +maybe-configure-stage3-lto-plugin: configure-stage3-lto-plugin +configure-stage3-lto-plugin: + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/lto-plugin/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 3 in $(HOST_SUBDIR)/lto-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin ; \ + cd $(HOST_SUBDIR)/lto-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/lto-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/lto-plugin"; \ + libsrcdir="$$s/lto-plugin"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ + --enable-shared +@endif lto-plugin-bootstrap + +.PHONY: configure-stage4-lto-plugin maybe-configure-stage4-lto-plugin +maybe-configure-stage4-lto-plugin: +@if lto-plugin-bootstrap +maybe-configure-stage4-lto-plugin: configure-stage4-lto-plugin +configure-stage4-lto-plugin: + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/lto-plugin/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 4 in $(HOST_SUBDIR)/lto-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin ; \ + cd $(HOST_SUBDIR)/lto-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/lto-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/lto-plugin"; \ + libsrcdir="$$s/lto-plugin"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ + --enable-shared +@endif lto-plugin-bootstrap + +.PHONY: configure-stageprofile-lto-plugin maybe-configure-stageprofile-lto-plugin +maybe-configure-stageprofile-lto-plugin: +@if lto-plugin-bootstrap +maybe-configure-stageprofile-lto-plugin: configure-stageprofile-lto-plugin +configure-stageprofile-lto-plugin: + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/lto-plugin/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage profile in $(HOST_SUBDIR)/lto-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin ; \ + cd $(HOST_SUBDIR)/lto-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/lto-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/lto-plugin"; \ + libsrcdir="$$s/lto-plugin"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ + --enable-shared +@endif lto-plugin-bootstrap + +.PHONY: configure-stagefeedback-lto-plugin maybe-configure-stagefeedback-lto-plugin +maybe-configure-stagefeedback-lto-plugin: +@if lto-plugin-bootstrap +maybe-configure-stagefeedback-lto-plugin: configure-stagefeedback-lto-plugin +configure-stagefeedback-lto-plugin: + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/lto-plugin/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage feedback in $(HOST_SUBDIR)/lto-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/lto-plugin ; \ + cd $(HOST_SUBDIR)/lto-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/lto-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/lto-plugin"; \ + libsrcdir="$$s/lto-plugin"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ + --enable-shared +@endif lto-plugin-bootstrap + + + + + +.PHONY: all-lto-plugin maybe-all-lto-plugin +maybe-all-lto-plugin: +@if gcc-bootstrap +all-lto-plugin: stage_current +@endif gcc-bootstrap +@if lto-plugin +TARGET-lto-plugin=all +maybe-all-lto-plugin: all-lto-plugin +all-lto-plugin: configure-lto-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ + $(TARGET-lto-plugin)) +@endif lto-plugin + + + +.PHONY: all-stage1-lto-plugin maybe-all-stage1-lto-plugin +.PHONY: clean-stage1-lto-plugin maybe-clean-stage1-lto-plugin +maybe-all-stage1-lto-plugin: +maybe-clean-stage1-lto-plugin: +@if lto-plugin-bootstrap +maybe-all-stage1-lto-plugin: all-stage1-lto-plugin +all-stage1: all-stage1-lto-plugin +TARGET-stage1-lto-plugin = $(TARGET-lto-plugin) +all-stage1-lto-plugin: configure-stage1-lto-plugin + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + $(HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ + LIBCFLAGS="$(LIBCFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) \ + TFLAGS="$(STAGE1_TFLAGS)" \ + $(TARGET-stage1-lto-plugin) + +maybe-clean-stage1-lto-plugin: clean-stage1-lto-plugin +clean-stage1: clean-stage1-lto-plugin +clean-stage1-lto-plugin: + @if [ $(current_stage) = stage1 ]; then \ + [ -f $(HOST_SUBDIR)/lto-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage1-lto-plugin/Makefile ] || exit 0; \ + $(MAKE) stage1-start; \ + fi; \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + clean +@endif lto-plugin-bootstrap + + +.PHONY: all-stage2-lto-plugin maybe-all-stage2-lto-plugin +.PHONY: clean-stage2-lto-plugin maybe-clean-stage2-lto-plugin +maybe-all-stage2-lto-plugin: +maybe-clean-stage2-lto-plugin: +@if lto-plugin-bootstrap +maybe-all-stage2-lto-plugin: all-stage2-lto-plugin +all-stage2: all-stage2-lto-plugin +TARGET-stage2-lto-plugin = $(TARGET-lto-plugin) +all-stage2-lto-plugin: configure-stage2-lto-plugin + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE2_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE2_TFLAGS)" \ + $(TARGET-stage2-lto-plugin) + +maybe-clean-stage2-lto-plugin: clean-stage2-lto-plugin +clean-stage2: clean-stage2-lto-plugin +clean-stage2-lto-plugin: + @if [ $(current_stage) = stage2 ]; then \ + [ -f $(HOST_SUBDIR)/lto-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage2-lto-plugin/Makefile ] || exit 0; \ + $(MAKE) stage2-start; \ + fi; \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(POSTSTAGE1_FLAGS_TO_PASS) \ + clean +@endif lto-plugin-bootstrap + + +.PHONY: all-stage3-lto-plugin maybe-all-stage3-lto-plugin +.PHONY: clean-stage3-lto-plugin maybe-clean-stage3-lto-plugin +maybe-all-stage3-lto-plugin: +maybe-clean-stage3-lto-plugin: +@if lto-plugin-bootstrap +maybe-all-stage3-lto-plugin: all-stage3-lto-plugin +all-stage3: all-stage3-lto-plugin +TARGET-stage3-lto-plugin = $(TARGET-lto-plugin) +all-stage3-lto-plugin: configure-stage3-lto-plugin + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE3_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE3_TFLAGS)" \ + $(TARGET-stage3-lto-plugin) + +maybe-clean-stage3-lto-plugin: clean-stage3-lto-plugin +clean-stage3: clean-stage3-lto-plugin +clean-stage3-lto-plugin: + @if [ $(current_stage) = stage3 ]; then \ + [ -f $(HOST_SUBDIR)/lto-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage3-lto-plugin/Makefile ] || exit 0; \ + $(MAKE) stage3-start; \ + fi; \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(POSTSTAGE1_FLAGS_TO_PASS) \ + clean +@endif lto-plugin-bootstrap + + +.PHONY: all-stage4-lto-plugin maybe-all-stage4-lto-plugin +.PHONY: clean-stage4-lto-plugin maybe-clean-stage4-lto-plugin +maybe-all-stage4-lto-plugin: +maybe-clean-stage4-lto-plugin: +@if lto-plugin-bootstrap +maybe-all-stage4-lto-plugin: all-stage4-lto-plugin +all-stage4: all-stage4-lto-plugin +TARGET-stage4-lto-plugin = $(TARGET-lto-plugin) +all-stage4-lto-plugin: configure-stage4-lto-plugin + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE4_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE4_TFLAGS)" \ + $(TARGET-stage4-lto-plugin) + +maybe-clean-stage4-lto-plugin: clean-stage4-lto-plugin +clean-stage4: clean-stage4-lto-plugin +clean-stage4-lto-plugin: + @if [ $(current_stage) = stage4 ]; then \ + [ -f $(HOST_SUBDIR)/lto-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage4-lto-plugin/Makefile ] || exit 0; \ + $(MAKE) stage4-start; \ + fi; \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(POSTSTAGE1_FLAGS_TO_PASS) \ + clean +@endif lto-plugin-bootstrap + + +.PHONY: all-stageprofile-lto-plugin maybe-all-stageprofile-lto-plugin +.PHONY: clean-stageprofile-lto-plugin maybe-clean-stageprofile-lto-plugin +maybe-all-stageprofile-lto-plugin: +maybe-clean-stageprofile-lto-plugin: +@if lto-plugin-bootstrap +maybe-all-stageprofile-lto-plugin: all-stageprofile-lto-plugin +all-stageprofile: all-stageprofile-lto-plugin +TARGET-stageprofile-lto-plugin = $(TARGET-lto-plugin) +all-stageprofile-lto-plugin: configure-stageprofile-lto-plugin + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGEprofile_TFLAGS)" \ + $(TARGET-stageprofile-lto-plugin) + +maybe-clean-stageprofile-lto-plugin: clean-stageprofile-lto-plugin +clean-stageprofile: clean-stageprofile-lto-plugin +clean-stageprofile-lto-plugin: + @if [ $(current_stage) = stageprofile ]; then \ + [ -f $(HOST_SUBDIR)/lto-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stageprofile-lto-plugin/Makefile ] || exit 0; \ + $(MAKE) stageprofile-start; \ + fi; \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(POSTSTAGE1_FLAGS_TO_PASS) \ + clean +@endif lto-plugin-bootstrap + + +.PHONY: all-stagefeedback-lto-plugin maybe-all-stagefeedback-lto-plugin +.PHONY: clean-stagefeedback-lto-plugin maybe-clean-stagefeedback-lto-plugin +maybe-all-stagefeedback-lto-plugin: +maybe-clean-stagefeedback-lto-plugin: +@if lto-plugin-bootstrap +maybe-all-stagefeedback-lto-plugin: all-stagefeedback-lto-plugin +all-stagefeedback: all-stagefeedback-lto-plugin +TARGET-stagefeedback-lto-plugin = $(TARGET-lto-plugin) +all-stagefeedback-lto-plugin: configure-stagefeedback-lto-plugin + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGEfeedback_TFLAGS)" \ + $(TARGET-stagefeedback-lto-plugin) + +maybe-clean-stagefeedback-lto-plugin: clean-stagefeedback-lto-plugin +clean-stagefeedback: clean-stagefeedback-lto-plugin +clean-stagefeedback-lto-plugin: + @if [ $(current_stage) = stagefeedback ]; then \ + [ -f $(HOST_SUBDIR)/lto-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stagefeedback-lto-plugin/Makefile ] || exit 0; \ + $(MAKE) stagefeedback-start; \ + fi; \ + cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(POSTSTAGE1_FLAGS_TO_PASS) \ + clean +@endif lto-plugin-bootstrap + + + + + +.PHONY: check-lto-plugin maybe-check-lto-plugin +maybe-check-lto-plugin: +@if lto-plugin +maybe-check-lto-plugin: check-lto-plugin + +check-lto-plugin: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(FLAGS_TO_PASS) check) + +@endif lto-plugin + +.PHONY: install-lto-plugin maybe-install-lto-plugin +maybe-install-lto-plugin: +@if lto-plugin +maybe-install-lto-plugin: install-lto-plugin + +install-lto-plugin: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(FLAGS_TO_PASS) install) + +@endif lto-plugin + +.PHONY: install-strip-lto-plugin maybe-install-strip-lto-plugin +maybe-install-strip-lto-plugin: +@if lto-plugin +maybe-install-strip-lto-plugin: install-strip-lto-plugin + +install-strip-lto-plugin: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif lto-plugin + +# Other targets (info, dvi, pdf, etc.) + +.PHONY: maybe-info-lto-plugin info-lto-plugin +maybe-info-lto-plugin: +@if lto-plugin +maybe-info-lto-plugin: info-lto-plugin + +info-lto-plugin: \ + configure-lto-plugin + @[ -f ./lto-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing info in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + info) \ + || exit 1 + +@endif lto-plugin + +.PHONY: maybe-dvi-lto-plugin dvi-lto-plugin +maybe-dvi-lto-plugin: +@if lto-plugin +maybe-dvi-lto-plugin: dvi-lto-plugin + +dvi-lto-plugin: \ + configure-lto-plugin + @[ -f ./lto-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing dvi in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + dvi) \ + || exit 1 + +@endif lto-plugin + +.PHONY: maybe-pdf-lto-plugin pdf-lto-plugin +maybe-pdf-lto-plugin: +@if lto-plugin +maybe-pdf-lto-plugin: pdf-lto-plugin + +pdf-lto-plugin: \ + configure-lto-plugin + @[ -f ./lto-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing pdf in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + pdf) \ + || exit 1 + +@endif lto-plugin + +.PHONY: maybe-html-lto-plugin html-lto-plugin +maybe-html-lto-plugin: +@if lto-plugin +maybe-html-lto-plugin: html-lto-plugin + +html-lto-plugin: \ + configure-lto-plugin + @[ -f ./lto-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing html in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + html) \ + || exit 1 + +@endif lto-plugin + +.PHONY: maybe-TAGS-lto-plugin TAGS-lto-plugin +maybe-TAGS-lto-plugin: +@if lto-plugin +maybe-TAGS-lto-plugin: TAGS-lto-plugin + +TAGS-lto-plugin: \ + configure-lto-plugin + @[ -f ./lto-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing TAGS in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + TAGS) \ + || exit 1 + +@endif lto-plugin + +.PHONY: maybe-install-info-lto-plugin install-info-lto-plugin +maybe-install-info-lto-plugin: +@if lto-plugin +maybe-install-info-lto-plugin: install-info-lto-plugin + +install-info-lto-plugin: \ + configure-lto-plugin \ + info-lto-plugin + @[ -f ./lto-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing install-info in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-info) \ + || exit 1 + +@endif lto-plugin + +.PHONY: maybe-install-pdf-lto-plugin install-pdf-lto-plugin +maybe-install-pdf-lto-plugin: +@if lto-plugin +maybe-install-pdf-lto-plugin: install-pdf-lto-plugin + +install-pdf-lto-plugin: \ + configure-lto-plugin \ + pdf-lto-plugin + @[ -f ./lto-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing install-pdf in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-pdf) \ + || exit 1 + +@endif lto-plugin + +.PHONY: maybe-install-html-lto-plugin install-html-lto-plugin +maybe-install-html-lto-plugin: +@if lto-plugin +maybe-install-html-lto-plugin: install-html-lto-plugin + +install-html-lto-plugin: \ + configure-lto-plugin \ + html-lto-plugin + @[ -f ./lto-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing install-html in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-html) \ + || exit 1 + +@endif lto-plugin -.PHONY: maybe-installcheck-gnattools installcheck-gnattools -maybe-installcheck-gnattools: -@if gnattools -maybe-installcheck-gnattools: installcheck-gnattools +.PHONY: maybe-installcheck-lto-plugin installcheck-lto-plugin +maybe-installcheck-lto-plugin: +@if lto-plugin +maybe-installcheck-lto-plugin: installcheck-lto-plugin -installcheck-gnattools: \ - configure-gnattools - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ +installcheck-lto-plugin: \ + configure-lto-plugin + @[ -f ./lto-plugin/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing installcheck in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ + echo "Doing installcheck in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -42866,24 +45997,23 @@ installcheck) \ || exit 1 -@endif gnattools +@endif lto-plugin -.PHONY: maybe-mostlyclean-gnattools mostlyclean-gnattools -maybe-mostlyclean-gnattools: -@if gnattools -maybe-mostlyclean-gnattools: mostlyclean-gnattools +.PHONY: maybe-mostlyclean-lto-plugin mostlyclean-lto-plugin +maybe-mostlyclean-lto-plugin: +@if lto-plugin +maybe-mostlyclean-lto-plugin: mostlyclean-lto-plugin -mostlyclean-gnattools: - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ +mostlyclean-lto-plugin: + @[ -f ./lto-plugin/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing mostlyclean in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ + echo "Doing mostlyclean in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -42891,24 +46021,23 @@ mostlyclean) \ || exit 1 -@endif gnattools +@endif lto-plugin -.PHONY: maybe-clean-gnattools clean-gnattools -maybe-clean-gnattools: -@if gnattools -maybe-clean-gnattools: clean-gnattools +.PHONY: maybe-clean-lto-plugin clean-lto-plugin +maybe-clean-lto-plugin: +@if lto-plugin +maybe-clean-lto-plugin: clean-lto-plugin -clean-gnattools: - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ +clean-lto-plugin: + @[ -f ./lto-plugin/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing clean in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ + echo "Doing clean in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -42916,24 +46045,23 @@ clean) \ || exit 1 -@endif gnattools +@endif lto-plugin -.PHONY: maybe-distclean-gnattools distclean-gnattools -maybe-distclean-gnattools: -@if gnattools -maybe-distclean-gnattools: distclean-gnattools +.PHONY: maybe-distclean-lto-plugin distclean-lto-plugin +maybe-distclean-lto-plugin: +@if lto-plugin +maybe-distclean-lto-plugin: distclean-lto-plugin -distclean-gnattools: - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ +distclean-lto-plugin: + @[ -f ./lto-plugin/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing distclean in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ + echo "Doing distclean in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -42941,24 +46069,23 @@ distclean) \ || exit 1 -@endif gnattools +@endif lto-plugin -.PHONY: maybe-maintainer-clean-gnattools maintainer-clean-gnattools -maybe-maintainer-clean-gnattools: -@if gnattools -maybe-maintainer-clean-gnattools: maintainer-clean-gnattools +.PHONY: maybe-maintainer-clean-lto-plugin maintainer-clean-lto-plugin +maybe-maintainer-clean-lto-plugin: +@if lto-plugin +maybe-maintainer-clean-lto-plugin: maintainer-clean-lto-plugin -maintainer-clean-gnattools: - @: $(MAKE); $(unstage) - @[ -f ./gnattools/Makefile ] || exit 0; \ +maintainer-clean-lto-plugin: + @[ -f ./lto-plugin/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ for flag in $(EXTRA_HOST_FLAGS) ; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - echo "Doing maintainer-clean in gnattools" ; \ - (cd $(HOST_SUBDIR)/gnattools && \ + echo "Doing maintainer-clean in lto-plugin" ; \ + (cd $(HOST_SUBDIR)/lto-plugin && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -42966,7 +46093,7 @@ maintainer-clean) \ || exit 1 -@endif gnattools +@endif lto-plugin @@ -43002,7 +46129,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(RAW_CXX_TARGET_EXPORTS) \ + $(RAW_CXX_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libstdc++-v3; \ cd "$(TARGET_SUBDIR)/libstdc++-v3" || exit 1; \ case $(srcdir) in \ @@ -43047,7 +46174,7 @@ $(RAW_CXX_TARGET_EXPORTS) \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ @@ -43091,7 +46218,7 @@ \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ @@ -43136,7 +46263,7 @@ \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ @@ -43181,7 +46308,7 @@ \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(TARGET_SUBDIR)/libstdc++-v3 ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ @@ -43226,7 +46353,7 @@ \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage profile in $(TARGET_SUBDIR)/libstdc++-v3 ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ @@ -43271,7 +46398,7 @@ \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(TARGET_SUBDIR)/libstdc++-v3 ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ @@ -43304,7 +46431,7 @@ all-target-libstdc++-v3: configure-target-libstdc++-v3 @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ + $(RAW_CXX_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ $(TARGET-target-libstdc++-v3)) @@ -43325,7 +46452,7 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ + $(RAW_CXX_TARGET_EXPORTS) \ cd $(TARGET_SUBDIR)/libstdc++-v3 && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -43367,7 +46494,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(RAW_CXX_TARGET_EXPORTS) \ - \ + \ cd $(TARGET_SUBDIR)/libstdc++-v3 && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -43410,7 +46537,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(RAW_CXX_TARGET_EXPORTS) \ - \ + \ cd $(TARGET_SUBDIR)/libstdc++-v3 && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -43453,7 +46580,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(RAW_CXX_TARGET_EXPORTS) \ - \ + \ cd $(TARGET_SUBDIR)/libstdc++-v3 && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -43496,7 +46623,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(RAW_CXX_TARGET_EXPORTS) \ - \ + \ cd $(TARGET_SUBDIR)/libstdc++-v3 && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -43539,7 +46666,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(RAW_CXX_TARGET_EXPORTS) \ - \ + \ cd $(TARGET_SUBDIR)/libstdc++-v3 && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -43602,6 +46729,21 @@ @endif target-libstdc++-v3 +.PHONY: install-strip-target-libstdc++-v3 maybe-install-strip-target-libstdc++-v3 +maybe-install-strip-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-install-strip-target-libstdc++-v3: install-strip-target-libstdc++-v3 + +install-strip-target-libstdc++-v3: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libstdc++-v3 + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libstdc++-v3 info-target-libstdc++-v3 @@ -43971,7 +47113,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libmudflap/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmudflap ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libmudflap; \ cd "$(TARGET_SUBDIR)/libmudflap" || exit 1; \ case $(srcdir) in \ @@ -44004,7 +47146,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libmudflap && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libmudflap)) @@ -44044,6 +47186,21 @@ @endif target-libmudflap +.PHONY: install-strip-target-libmudflap maybe-install-strip-target-libmudflap +maybe-install-strip-target-libmudflap: +@if target-libmudflap +maybe-install-strip-target-libmudflap: install-strip-target-libmudflap + +install-strip-target-libmudflap: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libmudflap && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libmudflap + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libmudflap info-target-libmudflap @@ -44413,7 +47570,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libssp/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libssp ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libssp; \ cd "$(TARGET_SUBDIR)/libssp" || exit 1; \ case $(srcdir) in \ @@ -44446,7 +47603,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libssp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libssp)) @@ -44486,6 +47643,21 @@ @endif target-libssp +.PHONY: install-strip-target-libssp maybe-install-strip-target-libssp +maybe-install-strip-target-libssp: +@if target-libssp +maybe-install-strip-target-libssp: install-strip-target-libssp + +install-strip-target-libssp: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libssp && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libssp + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libssp info-target-libssp @@ -44855,7 +48027,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/newlib/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/newlib ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/newlib; \ cd "$(TARGET_SUBDIR)/newlib" || exit 1; \ case $(srcdir) in \ @@ -44888,7 +48060,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/newlib && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-newlib)) @@ -44928,6 +48100,21 @@ @endif target-newlib +.PHONY: install-strip-target-newlib maybe-install-strip-target-newlib +maybe-install-strip-target-newlib: +@if target-newlib +maybe-install-strip-target-newlib: install-strip-target-newlib + +install-strip-target-newlib: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/newlib && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-newlib + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-newlib info-target-newlib @@ -45296,7 +48483,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libgcc/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libgcc; \ cd "$(TARGET_SUBDIR)/libgcc" || exit 1; \ case $(srcdir) in \ @@ -45341,7 +48528,7 @@ $(NORMAL_TARGET_EXPORTS) \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage 1 in $(TARGET_SUBDIR)/libgcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ cd $(TARGET_SUBDIR)/libgcc || exit 1; \ @@ -45385,7 +48572,7 @@ \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage 2 in $(TARGET_SUBDIR)/libgcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ cd $(TARGET_SUBDIR)/libgcc || exit 1; \ @@ -45430,7 +48617,7 @@ \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage 3 in $(TARGET_SUBDIR)/libgcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ cd $(TARGET_SUBDIR)/libgcc || exit 1; \ @@ -45475,7 +48662,7 @@ \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage 4 in $(TARGET_SUBDIR)/libgcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ cd $(TARGET_SUBDIR)/libgcc || exit 1; \ @@ -45520,7 +48707,7 @@ \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage profile in $(TARGET_SUBDIR)/libgcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ cd $(TARGET_SUBDIR)/libgcc || exit 1; \ @@ -45565,7 +48752,7 @@ \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ echo Configuring stage feedback in $(TARGET_SUBDIR)/libgcc ; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgcc ; \ cd $(TARGET_SUBDIR)/libgcc || exit 1; \ @@ -45598,7 +48785,7 @@ all-target-libgcc: configure-target-libgcc @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libgcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libgcc)) @@ -45619,7 +48806,7 @@ @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ cd $(TARGET_SUBDIR)/libgcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -45661,7 +48848,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ $(NORMAL_TARGET_EXPORTS) \ - \ + \ cd $(TARGET_SUBDIR)/libgcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -45704,7 +48891,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ $(NORMAL_TARGET_EXPORTS) \ - \ + \ cd $(TARGET_SUBDIR)/libgcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -45747,7 +48934,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(NORMAL_TARGET_EXPORTS) \ - \ + \ cd $(TARGET_SUBDIR)/libgcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -45790,7 +48977,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(NORMAL_TARGET_EXPORTS) \ - \ + \ cd $(TARGET_SUBDIR)/libgcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -45833,7 +49020,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(NORMAL_TARGET_EXPORTS) \ - \ + \ cd $(TARGET_SUBDIR)/libgcc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ @@ -45855,61 +49042,533 @@ [ -f $(TARGET_SUBDIR)/stagefeedback-libgcc/Makefile ] || exit 0; \ $(MAKE) stagefeedback-start; \ fi; \ - cd $(TARGET_SUBDIR)/libgcc && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) \ - \ - clean -@endif target-libgcc-bootstrap + cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) \ + \ + clean +@endif target-libgcc-bootstrap + + + + + + +.PHONY: check-target-libgcc maybe-check-target-libgcc +maybe-check-target-libgcc: +@if target-libgcc +maybe-check-target-libgcc: check-target-libgcc + +# Dummy target for uncheckable module. +check-target-libgcc: + +@endif target-libgcc + +.PHONY: install-target-libgcc maybe-install-target-libgcc +maybe-install-target-libgcc: +@if target-libgcc +maybe-install-target-libgcc: install-target-libgcc + +install-target-libgcc: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install) + +@endif target-libgcc + +.PHONY: install-strip-target-libgcc maybe-install-strip-target-libgcc +maybe-install-strip-target-libgcc: +@if target-libgcc +maybe-install-strip-target-libgcc: install-strip-target-libgcc + +install-strip-target-libgcc: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libgcc + +# Other targets (info, dvi, pdf, etc.) + +.PHONY: maybe-info-target-libgcc info-target-libgcc +maybe-info-target-libgcc: +@if target-libgcc +maybe-info-target-libgcc: info-target-libgcc + +info-target-libgcc: \ + configure-target-libgcc + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing info in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + info) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-dvi-target-libgcc dvi-target-libgcc +maybe-dvi-target-libgcc: +@if target-libgcc +maybe-dvi-target-libgcc: dvi-target-libgcc + +dvi-target-libgcc: \ + configure-target-libgcc + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing dvi in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + dvi) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-pdf-target-libgcc pdf-target-libgcc +maybe-pdf-target-libgcc: +@if target-libgcc +maybe-pdf-target-libgcc: pdf-target-libgcc + +pdf-target-libgcc: \ + configure-target-libgcc + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing pdf in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + pdf) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-html-target-libgcc html-target-libgcc +maybe-html-target-libgcc: +@if target-libgcc +maybe-html-target-libgcc: html-target-libgcc + +html-target-libgcc: \ + configure-target-libgcc + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing html in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + html) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-TAGS-target-libgcc TAGS-target-libgcc +maybe-TAGS-target-libgcc: +@if target-libgcc +maybe-TAGS-target-libgcc: TAGS-target-libgcc + +TAGS-target-libgcc: \ + configure-target-libgcc + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing TAGS in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + TAGS) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-install-info-target-libgcc install-info-target-libgcc +maybe-install-info-target-libgcc: +@if target-libgcc +maybe-install-info-target-libgcc: install-info-target-libgcc + +install-info-target-libgcc: \ + configure-target-libgcc \ + info-target-libgcc + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-info in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-info) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-install-pdf-target-libgcc install-pdf-target-libgcc +maybe-install-pdf-target-libgcc: +@if target-libgcc +maybe-install-pdf-target-libgcc: install-pdf-target-libgcc + +install-pdf-target-libgcc: \ + configure-target-libgcc \ + pdf-target-libgcc + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-pdf in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-pdf) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-install-html-target-libgcc install-html-target-libgcc +maybe-install-html-target-libgcc: +@if target-libgcc +maybe-install-html-target-libgcc: install-html-target-libgcc + +install-html-target-libgcc: \ + configure-target-libgcc \ + html-target-libgcc + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-html in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-html) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-installcheck-target-libgcc installcheck-target-libgcc +maybe-installcheck-target-libgcc: +@if target-libgcc +maybe-installcheck-target-libgcc: installcheck-target-libgcc + +installcheck-target-libgcc: \ + configure-target-libgcc + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing installcheck in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + installcheck) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-mostlyclean-target-libgcc mostlyclean-target-libgcc +maybe-mostlyclean-target-libgcc: +@if target-libgcc +maybe-mostlyclean-target-libgcc: mostlyclean-target-libgcc + +mostlyclean-target-libgcc: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + mostlyclean) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-clean-target-libgcc clean-target-libgcc +maybe-clean-target-libgcc: +@if target-libgcc +maybe-clean-target-libgcc: clean-target-libgcc + +clean-target-libgcc: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing clean in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + clean) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-distclean-target-libgcc distclean-target-libgcc +maybe-distclean-target-libgcc: +@if target-libgcc +maybe-distclean-target-libgcc: distclean-target-libgcc + +distclean-target-libgcc: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing distclean in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + distclean) \ + || exit 1 + +@endif target-libgcc + +.PHONY: maybe-maintainer-clean-target-libgcc maintainer-clean-target-libgcc +maybe-maintainer-clean-target-libgcc: +@if target-libgcc +maybe-maintainer-clean-target-libgcc: maintainer-clean-target-libgcc + +maintainer-clean-target-libgcc: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgcc" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgcc && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + maintainer-clean) \ + || exit 1 + +@endif target-libgcc + + + + + +.PHONY: configure-target-libquadmath maybe-configure-target-libquadmath +maybe-configure-target-libquadmath: +@if gcc-bootstrap +configure-target-libquadmath: stage_current +@endif gcc-bootstrap +@if target-libquadmath +maybe-configure-target-libquadmath: configure-target-libquadmath +configure-target-libquadmath: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libquadmath..."; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libquadmath ; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libquadmath/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libquadmath/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libquadmath/multilib.tmp $(TARGET_SUBDIR)/libquadmath/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libquadmath/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libquadmath/Makefile; \ + mv $(TARGET_SUBDIR)/libquadmath/multilib.tmp $(TARGET_SUBDIR)/libquadmath/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libquadmath/multilib.tmp $(TARGET_SUBDIR)/libquadmath/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libquadmath/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libquadmath ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo Configuring in $(TARGET_SUBDIR)/libquadmath; \ + cd "$(TARGET_SUBDIR)/libquadmath" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libquadmath/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libquadmath"; \ + libsrcdir="$$s/libquadmath"; \ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + || exit 1 +@endif target-libquadmath +.PHONY: all-target-libquadmath maybe-all-target-libquadmath +maybe-all-target-libquadmath: +@if gcc-bootstrap +all-target-libquadmath: stage_current +@endif gcc-bootstrap +@if target-libquadmath +TARGET-target-libquadmath=all +maybe-all-target-libquadmath: all-target-libquadmath +all-target-libquadmath: configure-target-libquadmath + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libquadmath && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ + $(TARGET-target-libquadmath)) +@endif target-libquadmath -.PHONY: check-target-libgcc maybe-check-target-libgcc -maybe-check-target-libgcc: -@if target-libgcc -maybe-check-target-libgcc: check-target-libgcc -# Dummy target for uncheckable module. -check-target-libgcc: -@endif target-libgcc -.PHONY: install-target-libgcc maybe-install-target-libgcc -maybe-install-target-libgcc: -@if target-libgcc -maybe-install-target-libgcc: install-target-libgcc -install-target-libgcc: installdirs +.PHONY: check-target-libquadmath maybe-check-target-libquadmath +maybe-check-target-libquadmath: +@if target-libquadmath +maybe-check-target-libquadmath: check-target-libquadmath + +check-target-libquadmath: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) check) + +@endif target-libquadmath + +.PHONY: install-target-libquadmath maybe-install-target-libquadmath +maybe-install-target-libquadmath: +@if target-libquadmath +maybe-install-target-libquadmath: install-target-libquadmath + +install-target-libquadmath: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) -@endif target-libgcc +@endif target-libquadmath + +.PHONY: install-strip-target-libquadmath maybe-install-strip-target-libquadmath +maybe-install-strip-target-libquadmath: +@if target-libquadmath +maybe-install-strip-target-libquadmath: install-strip-target-libquadmath + +install-strip-target-libquadmath: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libquadmath && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libquadmath # Other targets (info, dvi, pdf, etc.) -.PHONY: maybe-info-target-libgcc info-target-libgcc -maybe-info-target-libgcc: -@if target-libgcc -maybe-info-target-libgcc: info-target-libgcc +.PHONY: maybe-info-target-libquadmath info-target-libquadmath +maybe-info-target-libquadmath: +@if target-libquadmath +maybe-info-target-libquadmath: info-target-libquadmath -info-target-libgcc: \ - configure-target-libgcc +info-target-libquadmath: \ + configure-target-libquadmath @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing info in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -45917,25 +49576,25 @@ info) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-dvi-target-libgcc dvi-target-libgcc -maybe-dvi-target-libgcc: -@if target-libgcc -maybe-dvi-target-libgcc: dvi-target-libgcc +.PHONY: maybe-dvi-target-libquadmath dvi-target-libquadmath +maybe-dvi-target-libquadmath: +@if target-libquadmath +maybe-dvi-target-libquadmath: dvi-target-libquadmath -dvi-target-libgcc: \ - configure-target-libgcc +dvi-target-libquadmath: \ + configure-target-libquadmath @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing dvi in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -45943,25 +49602,25 @@ dvi) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-pdf-target-libgcc pdf-target-libgcc -maybe-pdf-target-libgcc: -@if target-libgcc -maybe-pdf-target-libgcc: pdf-target-libgcc +.PHONY: maybe-pdf-target-libquadmath pdf-target-libquadmath +maybe-pdf-target-libquadmath: +@if target-libquadmath +maybe-pdf-target-libquadmath: pdf-target-libquadmath -pdf-target-libgcc: \ - configure-target-libgcc +pdf-target-libquadmath: \ + configure-target-libquadmath @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing pdf in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -45969,25 +49628,25 @@ pdf) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-html-target-libgcc html-target-libgcc -maybe-html-target-libgcc: -@if target-libgcc -maybe-html-target-libgcc: html-target-libgcc +.PHONY: maybe-html-target-libquadmath html-target-libquadmath +maybe-html-target-libquadmath: +@if target-libquadmath +maybe-html-target-libquadmath: html-target-libquadmath -html-target-libgcc: \ - configure-target-libgcc +html-target-libquadmath: \ + configure-target-libquadmath @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing html in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -45995,25 +49654,25 @@ html) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-TAGS-target-libgcc TAGS-target-libgcc -maybe-TAGS-target-libgcc: -@if target-libgcc -maybe-TAGS-target-libgcc: TAGS-target-libgcc +.PHONY: maybe-TAGS-target-libquadmath TAGS-target-libquadmath +maybe-TAGS-target-libquadmath: +@if target-libquadmath +maybe-TAGS-target-libquadmath: TAGS-target-libquadmath -TAGS-target-libgcc: \ - configure-target-libgcc +TAGS-target-libquadmath: \ + configure-target-libquadmath @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing TAGS in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -46021,26 +49680,26 @@ TAGS) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-install-info-target-libgcc install-info-target-libgcc -maybe-install-info-target-libgcc: -@if target-libgcc -maybe-install-info-target-libgcc: install-info-target-libgcc +.PHONY: maybe-install-info-target-libquadmath install-info-target-libquadmath +maybe-install-info-target-libquadmath: +@if target-libquadmath +maybe-install-info-target-libquadmath: install-info-target-libquadmath -install-info-target-libgcc: \ - configure-target-libgcc \ - info-target-libgcc +install-info-target-libquadmath: \ + configure-target-libquadmath \ + info-target-libquadmath @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing install-info in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -46048,26 +49707,26 @@ install-info) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-install-pdf-target-libgcc install-pdf-target-libgcc -maybe-install-pdf-target-libgcc: -@if target-libgcc -maybe-install-pdf-target-libgcc: install-pdf-target-libgcc +.PHONY: maybe-install-pdf-target-libquadmath install-pdf-target-libquadmath +maybe-install-pdf-target-libquadmath: +@if target-libquadmath +maybe-install-pdf-target-libquadmath: install-pdf-target-libquadmath -install-pdf-target-libgcc: \ - configure-target-libgcc \ - pdf-target-libgcc +install-pdf-target-libquadmath: \ + configure-target-libquadmath \ + pdf-target-libquadmath @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing install-pdf in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -46075,26 +49734,26 @@ install-pdf) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-install-html-target-libgcc install-html-target-libgcc -maybe-install-html-target-libgcc: -@if target-libgcc -maybe-install-html-target-libgcc: install-html-target-libgcc +.PHONY: maybe-install-html-target-libquadmath install-html-target-libquadmath +maybe-install-html-target-libquadmath: +@if target-libquadmath +maybe-install-html-target-libquadmath: install-html-target-libquadmath -install-html-target-libgcc: \ - configure-target-libgcc \ - html-target-libgcc +install-html-target-libquadmath: \ + configure-target-libquadmath \ + html-target-libquadmath @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing install-html in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -46102,25 +49761,25 @@ install-html) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-installcheck-target-libgcc installcheck-target-libgcc -maybe-installcheck-target-libgcc: -@if target-libgcc -maybe-installcheck-target-libgcc: installcheck-target-libgcc +.PHONY: maybe-installcheck-target-libquadmath installcheck-target-libquadmath +maybe-installcheck-target-libquadmath: +@if target-libquadmath +maybe-installcheck-target-libquadmath: installcheck-target-libquadmath -installcheck-target-libgcc: \ - configure-target-libgcc +installcheck-target-libquadmath: \ + configure-target-libquadmath @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing installcheck in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -46128,24 +49787,24 @@ installcheck) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-mostlyclean-target-libgcc mostlyclean-target-libgcc -maybe-mostlyclean-target-libgcc: -@if target-libgcc -maybe-mostlyclean-target-libgcc: mostlyclean-target-libgcc +.PHONY: maybe-mostlyclean-target-libquadmath mostlyclean-target-libquadmath +maybe-mostlyclean-target-libquadmath: +@if target-libquadmath +maybe-mostlyclean-target-libquadmath: mostlyclean-target-libquadmath -mostlyclean-target-libgcc: +mostlyclean-target-libquadmath: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing mostlyclean in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -46153,24 +49812,24 @@ mostlyclean) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-clean-target-libgcc clean-target-libgcc -maybe-clean-target-libgcc: -@if target-libgcc -maybe-clean-target-libgcc: clean-target-libgcc +.PHONY: maybe-clean-target-libquadmath clean-target-libquadmath +maybe-clean-target-libquadmath: +@if target-libquadmath +maybe-clean-target-libquadmath: clean-target-libquadmath -clean-target-libgcc: +clean-target-libquadmath: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing clean in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -46178,24 +49837,24 @@ clean) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-distclean-target-libgcc distclean-target-libgcc -maybe-distclean-target-libgcc: -@if target-libgcc -maybe-distclean-target-libgcc: distclean-target-libgcc +.PHONY: maybe-distclean-target-libquadmath distclean-target-libquadmath +maybe-distclean-target-libquadmath: +@if target-libquadmath +maybe-distclean-target-libquadmath: distclean-target-libquadmath -distclean-target-libgcc: +distclean-target-libquadmath: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing distclean in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -46203,24 +49862,24 @@ distclean) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath -.PHONY: maybe-maintainer-clean-target-libgcc maintainer-clean-target-libgcc -maybe-maintainer-clean-target-libgcc: -@if target-libgcc -maybe-maintainer-clean-target-libgcc: maintainer-clean-target-libgcc +.PHONY: maybe-maintainer-clean-target-libquadmath maintainer-clean-target-libquadmath +maybe-maintainer-clean-target-libquadmath: +@if target-libquadmath +maybe-maintainer-clean-target-libquadmath: maintainer-clean-target-libquadmath -maintainer-clean-target-libgcc: +maintainer-clean-target-libquadmath: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libgcc/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libquadmath/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgcc" ; \ + echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libquadmath" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libgcc && \ + (cd $(TARGET_SUBDIR)/libquadmath && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -46228,7 +49887,7 @@ maintainer-clean) \ || exit 1 -@endif target-libgcc +@endif target-libquadmath @@ -46260,7 +49919,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libgfortran/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgfortran ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libgfortran; \ cd "$(TARGET_SUBDIR)/libgfortran" || exit 1; \ case $(srcdir) in \ @@ -46293,7 +49952,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libgfortran && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libgfortran)) @@ -46333,6 +49992,21 @@ @endif target-libgfortran +.PHONY: install-strip-target-libgfortran maybe-install-strip-target-libgfortran +maybe-install-strip-target-libgfortran: +@if target-libgfortran +maybe-install-strip-target-libgfortran: install-strip-target-libgfortran + +install-strip-target-libgfortran: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libgfortran && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libgfortran + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libgfortran info-target-libgfortran @@ -46702,7 +50376,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libobjc/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libobjc ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libobjc; \ cd "$(TARGET_SUBDIR)/libobjc" || exit 1; \ case $(srcdir) in \ @@ -46735,7 +50409,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libobjc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libobjc)) @@ -46775,6 +50449,21 @@ @endif target-libobjc +.PHONY: install-strip-target-libobjc maybe-install-strip-target-libobjc +maybe-install-strip-target-libobjc: +@if target-libobjc +maybe-install-strip-target-libobjc: install-strip-target-libobjc + +install-strip-target-libobjc: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libobjc && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libobjc + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libobjc info-target-libobjc @@ -47118,6 +50807,463 @@ +.PHONY: configure-target-libgo maybe-configure-target-libgo +maybe-configure-target-libgo: +@if gcc-bootstrap +configure-target-libgo: stage_current +@endif gcc-bootstrap +@if target-libgo +maybe-configure-target-libgo: configure-target-libgo +configure-target-libgo: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libgo..."; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgo ; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgo/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libgo/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libgo/multilib.tmp $(TARGET_SUBDIR)/libgo/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libgo/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libgo/Makefile; \ + mv $(TARGET_SUBDIR)/libgo/multilib.tmp $(TARGET_SUBDIR)/libgo/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libgo/multilib.tmp $(TARGET_SUBDIR)/libgo/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libgo/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgo ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo Configuring in $(TARGET_SUBDIR)/libgo; \ + cd "$(TARGET_SUBDIR)/libgo" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libgo/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libgo"; \ + libsrcdir="$$s/libgo"; \ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + || exit 1 +@endif target-libgo + + + + + +.PHONY: all-target-libgo maybe-all-target-libgo +maybe-all-target-libgo: +@if gcc-bootstrap +all-target-libgo: stage_current +@endif gcc-bootstrap +@if target-libgo +TARGET-target-libgo=all +maybe-all-target-libgo: all-target-libgo +all-target-libgo: configure-target-libgo + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ + $(TARGET-target-libgo)) +@endif target-libgo + + + + + +.PHONY: check-target-libgo maybe-check-target-libgo +maybe-check-target-libgo: +@if target-libgo +maybe-check-target-libgo: check-target-libgo + +check-target-libgo: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) check) + +@endif target-libgo + +.PHONY: install-target-libgo maybe-install-target-libgo +maybe-install-target-libgo: +@if target-libgo +maybe-install-target-libgo: install-target-libgo + +install-target-libgo: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install) + +@endif target-libgo + +.PHONY: install-strip-target-libgo maybe-install-strip-target-libgo +maybe-install-strip-target-libgo: +@if target-libgo +maybe-install-strip-target-libgo: install-strip-target-libgo + +install-strip-target-libgo: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libgo + +# Other targets (info, dvi, pdf, etc.) + +.PHONY: maybe-info-target-libgo info-target-libgo +maybe-info-target-libgo: +@if target-libgo +maybe-info-target-libgo: info-target-libgo + +info-target-libgo: \ + configure-target-libgo + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing info in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + info) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-dvi-target-libgo dvi-target-libgo +maybe-dvi-target-libgo: +@if target-libgo +maybe-dvi-target-libgo: dvi-target-libgo + +dvi-target-libgo: \ + configure-target-libgo + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing dvi in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + dvi) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-pdf-target-libgo pdf-target-libgo +maybe-pdf-target-libgo: +@if target-libgo +maybe-pdf-target-libgo: pdf-target-libgo + +pdf-target-libgo: \ + configure-target-libgo + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing pdf in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + pdf) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-html-target-libgo html-target-libgo +maybe-html-target-libgo: +@if target-libgo +maybe-html-target-libgo: html-target-libgo + +html-target-libgo: \ + configure-target-libgo + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing html in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + html) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-TAGS-target-libgo TAGS-target-libgo +maybe-TAGS-target-libgo: +@if target-libgo +maybe-TAGS-target-libgo: TAGS-target-libgo + +TAGS-target-libgo: \ + configure-target-libgo + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing TAGS in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + TAGS) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-install-info-target-libgo install-info-target-libgo +maybe-install-info-target-libgo: +@if target-libgo +maybe-install-info-target-libgo: install-info-target-libgo + +install-info-target-libgo: \ + configure-target-libgo \ + info-target-libgo + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-info in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-info) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-install-pdf-target-libgo install-pdf-target-libgo +maybe-install-pdf-target-libgo: +@if target-libgo +maybe-install-pdf-target-libgo: install-pdf-target-libgo + +install-pdf-target-libgo: \ + configure-target-libgo \ + pdf-target-libgo + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-pdf in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-pdf) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-install-html-target-libgo install-html-target-libgo +maybe-install-html-target-libgo: +@if target-libgo +maybe-install-html-target-libgo: install-html-target-libgo + +install-html-target-libgo: \ + configure-target-libgo \ + html-target-libgo + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-html in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + install-html) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-installcheck-target-libgo installcheck-target-libgo +maybe-installcheck-target-libgo: +@if target-libgo +maybe-installcheck-target-libgo: installcheck-target-libgo + +installcheck-target-libgo: \ + configure-target-libgo + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing installcheck in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + installcheck) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-mostlyclean-target-libgo mostlyclean-target-libgo +maybe-mostlyclean-target-libgo: +@if target-libgo +maybe-mostlyclean-target-libgo: mostlyclean-target-libgo + +mostlyclean-target-libgo: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + mostlyclean) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-clean-target-libgo clean-target-libgo +maybe-clean-target-libgo: +@if target-libgo +maybe-clean-target-libgo: clean-target-libgo + +clean-target-libgo: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing clean in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + clean) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-distclean-target-libgo distclean-target-libgo +maybe-distclean-target-libgo: +@if target-libgo +maybe-distclean-target-libgo: distclean-target-libgo + +distclean-target-libgo: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing distclean in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + distclean) \ + || exit 1 + +@endif target-libgo + +.PHONY: maybe-maintainer-clean-target-libgo maintainer-clean-target-libgo +maybe-maintainer-clean-target-libgo: +@if target-libgo +maybe-maintainer-clean-target-libgo: maintainer-clean-target-libgo + +maintainer-clean-target-libgo: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libgo/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgo" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libgo && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ + "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ + maintainer-clean) \ + || exit 1 + +@endif target-libgo + + + + + .PHONY: configure-target-libtermcap maybe-configure-target-libtermcap maybe-configure-target-libtermcap: @if gcc-bootstrap @@ -47144,7 +51290,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libtermcap/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libtermcap ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libtermcap; \ cd "$(TARGET_SUBDIR)/libtermcap" || exit 1; \ case $(srcdir) in \ @@ -47177,7 +51323,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libtermcap && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libtermcap)) @@ -47212,6 +51358,21 @@ @endif target-libtermcap +.PHONY: install-strip-target-libtermcap maybe-install-strip-target-libtermcap +maybe-install-strip-target-libtermcap: +@if target-libtermcap +maybe-install-strip-target-libtermcap: install-strip-target-libtermcap + +install-strip-target-libtermcap: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libtermcap && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libtermcap + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libtermcap info-target-libtermcap @@ -47521,7 +51682,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/winsup/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/winsup ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/winsup; \ cd "$(TARGET_SUBDIR)/winsup" || exit 1; \ case $(srcdir) in \ @@ -47554,7 +51715,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/winsup && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-winsup)) @@ -47594,6 +51755,21 @@ @endif target-winsup +.PHONY: install-strip-target-winsup maybe-install-strip-target-winsup +maybe-install-strip-target-winsup: +@if target-winsup +maybe-install-strip-target-winsup: install-strip-target-winsup + +install-strip-target-winsup: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/winsup && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-winsup + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-winsup info-target-winsup @@ -47963,7 +52139,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libgloss/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgloss ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libgloss; \ cd "$(TARGET_SUBDIR)/libgloss" || exit 1; \ case $(srcdir) in \ @@ -47996,7 +52172,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libgloss && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libgloss)) @@ -48019,15 +52195,30 @@ .PHONY: install-target-libgloss maybe-install-target-libgloss maybe-install-target-libgloss: @if target-libgloss -maybe-install-target-libgloss: install-target-libgloss +maybe-install-target-libgloss: install-target-libgloss + +install-target-libgloss: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libgloss && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install) + +@endif target-libgloss + +.PHONY: install-strip-target-libgloss maybe-install-strip-target-libgloss +maybe-install-strip-target-libgloss: +@if target-libgloss +maybe-install-strip-target-libgloss: install-strip-target-libgloss -install-target-libgloss: installdirs +install-strip-target-libgloss: installdirs @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libgloss && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) @endif target-libgloss @@ -48400,7 +52591,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libiberty/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libiberty; \ cd "$(TARGET_SUBDIR)/libiberty" || exit 1; \ case $(srcdir) in \ @@ -48433,7 +52624,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libiberty && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libiberty)) @@ -48473,6 +52664,21 @@ @endif target-libiberty +.PHONY: install-strip-target-libiberty maybe-install-strip-target-libiberty +maybe-install-strip-target-libiberty: +@if target-libiberty +maybe-install-strip-target-libiberty: install-strip-target-libiberty + +install-strip-target-libiberty: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libiberty && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libiberty + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libiberty info-target-libiberty @@ -48842,7 +53048,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/gperf/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/gperf ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/gperf; \ cd "$(TARGET_SUBDIR)/gperf" || exit 1; \ case $(srcdir) in \ @@ -48875,7 +53081,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/gperf && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-gperf)) @@ -48915,6 +53121,21 @@ @endif target-gperf +.PHONY: install-strip-target-gperf maybe-install-strip-target-gperf +maybe-install-strip-target-gperf: +@if target-gperf +maybe-install-strip-target-gperf: install-strip-target-gperf + +install-strip-target-gperf: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/gperf && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-gperf + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-gperf info-target-gperf @@ -49284,7 +53505,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/examples/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/examples ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/examples; \ cd "$(TARGET_SUBDIR)/examples" || exit 1; \ case $(srcdir) in \ @@ -49317,7 +53538,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/examples && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-examples)) @@ -49347,6 +53568,16 @@ @endif target-examples +.PHONY: install-strip-target-examples maybe-install-strip-target-examples +maybe-install-strip-target-examples: +@if target-examples +maybe-install-strip-target-examples: install-strip-target-examples + +# Dummy target for uninstallable. +install-strip-target-examples: + +@endif target-examples + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-examples info-target-examples @@ -49716,7 +53947,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libffi/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libffi ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libffi; \ cd "$(TARGET_SUBDIR)/libffi" || exit 1; \ case $(srcdir) in \ @@ -49749,7 +53980,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libffi && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libffi)) @@ -49789,6 +54020,21 @@ @endif target-libffi +.PHONY: install-strip-target-libffi maybe-install-strip-target-libffi +maybe-install-strip-target-libffi: +@if target-libffi +maybe-install-strip-target-libffi: install-strip-target-libffi + +install-strip-target-libffi: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libffi && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libffi + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libffi info-target-libffi @@ -50158,7 +54404,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libjava/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libjava ; \ - $(RAW_CXX_TARGET_EXPORTS) \ + $(RAW_CXX_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libjava; \ cd "$(TARGET_SUBDIR)/libjava" || exit 1; \ case $(srcdir) in \ @@ -50191,7 +54437,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ + $(RAW_CXX_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libjava && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ $(TARGET-target-libjava)) @@ -50231,6 +54477,21 @@ @endif target-libjava +.PHONY: install-strip-target-libjava maybe-install-strip-target-libjava +maybe-install-strip-target-libjava: +@if target-libjava +maybe-install-strip-target-libjava: install-strip-target-libjava + +install-strip-target-libjava: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libjava && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libjava + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libjava info-target-libjava @@ -50600,7 +54861,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/zlib/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/zlib ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/zlib; \ cd "$(TARGET_SUBDIR)/zlib" || exit 1; \ case $(srcdir) in \ @@ -50633,7 +54894,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/zlib && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-zlib)) @@ -50673,6 +54934,21 @@ @endif target-zlib +.PHONY: install-strip-target-zlib maybe-install-strip-target-zlib +maybe-install-strip-target-zlib: +@if target-zlib +maybe-install-strip-target-zlib: install-strip-target-zlib + +install-strip-target-zlib: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/zlib && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-zlib + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-zlib info-target-zlib @@ -51042,7 +55318,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/boehm-gc/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/boehm-gc ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/boehm-gc; \ cd "$(TARGET_SUBDIR)/boehm-gc" || exit 1; \ case $(srcdir) in \ @@ -51075,7 +55351,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/boehm-gc && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-boehm-gc)) @@ -51115,6 +55391,21 @@ @endif target-boehm-gc +.PHONY: install-strip-target-boehm-gc maybe-install-strip-target-boehm-gc +maybe-install-strip-target-boehm-gc: +@if target-boehm-gc +maybe-install-strip-target-boehm-gc: install-strip-target-boehm-gc + +install-strip-target-boehm-gc: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/boehm-gc && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-boehm-gc + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-boehm-gc info-target-boehm-gc @@ -51484,7 +55775,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/qthreads/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/qthreads ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/qthreads; \ cd "$(TARGET_SUBDIR)/qthreads" || exit 1; \ case $(srcdir) in \ @@ -51517,7 +55808,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/qthreads && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-qthreads)) @@ -51557,6 +55848,21 @@ @endif target-qthreads +.PHONY: install-strip-target-qthreads maybe-install-strip-target-qthreads +maybe-install-strip-target-qthreads: +@if target-qthreads +maybe-install-strip-target-qthreads: install-strip-target-qthreads + +install-strip-target-qthreads: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/qthreads && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-qthreads + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-qthreads info-target-qthreads @@ -51926,7 +56232,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/rda/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/rda ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/rda; \ cd "$(TARGET_SUBDIR)/rda" || exit 1; \ case $(srcdir) in \ @@ -51959,7 +56265,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/rda && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-rda)) @@ -51999,6 +56305,21 @@ @endif target-rda +.PHONY: install-strip-target-rda maybe-install-strip-target-rda +maybe-install-strip-target-rda: +@if target-rda +maybe-install-strip-target-rda: install-strip-target-rda + +install-strip-target-rda: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/rda && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-rda + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-rda info-target-rda @@ -52368,7 +56689,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libada/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libada ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libada; \ cd "$(TARGET_SUBDIR)/libada" || exit 1; \ case $(srcdir) in \ @@ -52401,7 +56722,7 @@ @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libada && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libada)) @@ -52441,6 +56762,21 @@ @endif target-libada +.PHONY: install-strip-target-libada maybe-install-strip-target-libada +maybe-install-strip-target-libada: +@if target-libada +maybe-install-strip-target-libada: install-strip-target-libada + +install-strip-target-libada: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libada && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libada + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libada info-target-libada @@ -52792,7 +57128,6 @@ @if target-libgomp maybe-configure-target-libgomp: configure-target-libgomp configure-target-libgomp: - @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ echo "Checking multilib configuration for libgomp..."; \ @@ -52810,7 +57145,7 @@ fi; \ test ! -f $(TARGET_SUBDIR)/libgomp/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp ; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ echo Configuring in $(TARGET_SUBDIR)/libgomp; \ cd "$(TARGET_SUBDIR)/libgomp" || exit 1; \ case $(srcdir) in \ @@ -52829,6 +57164,276 @@ +.PHONY: configure-stage1-target-libgomp maybe-configure-stage1-target-libgomp +maybe-configure-stage1-target-libgomp: +@if target-libgomp-bootstrap +maybe-configure-stage1-target-libgomp: configure-stage1-target-libgomp +configure-stage1-target-libgomp: + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + echo "Checking multilib configuration for libgomp..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgomp/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libgomp/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libgomp/Makefile; \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libgomp/Makefile || exit 0; \ + $(NORMAL_TARGET_EXPORTS) \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + echo Configuring stage 1 in $(TARGET_SUBDIR)/libgomp ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp ; \ + cd $(TARGET_SUBDIR)/libgomp || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libgomp"; \ + libsrcdir="$$s/libgomp"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) +@endif target-libgomp-bootstrap + +.PHONY: configure-stage2-target-libgomp maybe-configure-stage2-target-libgomp +maybe-configure-stage2-target-libgomp: +@if target-libgomp-bootstrap +maybe-configure-stage2-target-libgomp: configure-stage2-target-libgomp +configure-stage2-target-libgomp: + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + echo "Checking multilib configuration for libgomp..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgomp/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libgomp/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libgomp/Makefile; \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libgomp/Makefile || exit 0; \ + $(NORMAL_TARGET_EXPORTS) \ + \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + echo Configuring stage 2 in $(TARGET_SUBDIR)/libgomp ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp ; \ + cd $(TARGET_SUBDIR)/libgomp || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libgomp"; \ + libsrcdir="$$s/libgomp"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) +@endif target-libgomp-bootstrap + +.PHONY: configure-stage3-target-libgomp maybe-configure-stage3-target-libgomp +maybe-configure-stage3-target-libgomp: +@if target-libgomp-bootstrap +maybe-configure-stage3-target-libgomp: configure-stage3-target-libgomp +configure-stage3-target-libgomp: + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + echo "Checking multilib configuration for libgomp..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgomp/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libgomp/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libgomp/Makefile; \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libgomp/Makefile || exit 0; \ + $(NORMAL_TARGET_EXPORTS) \ + \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + echo Configuring stage 3 in $(TARGET_SUBDIR)/libgomp ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp ; \ + cd $(TARGET_SUBDIR)/libgomp || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libgomp"; \ + libsrcdir="$$s/libgomp"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) +@endif target-libgomp-bootstrap + +.PHONY: configure-stage4-target-libgomp maybe-configure-stage4-target-libgomp +maybe-configure-stage4-target-libgomp: +@if target-libgomp-bootstrap +maybe-configure-stage4-target-libgomp: configure-stage4-target-libgomp +configure-stage4-target-libgomp: + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + echo "Checking multilib configuration for libgomp..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgomp/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libgomp/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libgomp/Makefile; \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libgomp/Makefile || exit 0; \ + $(NORMAL_TARGET_EXPORTS) \ + \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + echo Configuring stage 4 in $(TARGET_SUBDIR)/libgomp ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp ; \ + cd $(TARGET_SUBDIR)/libgomp || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libgomp"; \ + libsrcdir="$$s/libgomp"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) +@endif target-libgomp-bootstrap + +.PHONY: configure-stageprofile-target-libgomp maybe-configure-stageprofile-target-libgomp +maybe-configure-stageprofile-target-libgomp: +@if target-libgomp-bootstrap +maybe-configure-stageprofile-target-libgomp: configure-stageprofile-target-libgomp +configure-stageprofile-target-libgomp: + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + echo "Checking multilib configuration for libgomp..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgomp/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libgomp/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libgomp/Makefile; \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libgomp/Makefile || exit 0; \ + $(NORMAL_TARGET_EXPORTS) \ + \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + echo Configuring stage profile in $(TARGET_SUBDIR)/libgomp ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp ; \ + cd $(TARGET_SUBDIR)/libgomp || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libgomp"; \ + libsrcdir="$$s/libgomp"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) +@endif target-libgomp-bootstrap + +.PHONY: configure-stagefeedback-target-libgomp maybe-configure-stagefeedback-target-libgomp +maybe-configure-stagefeedback-target-libgomp: +@if target-libgomp-bootstrap +maybe-configure-stagefeedback-target-libgomp: configure-stagefeedback-target-libgomp +configure-stagefeedback-target-libgomp: + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + echo "Checking multilib configuration for libgomp..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgomp/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libgomp/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libgomp/Makefile; \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libgomp/multilib.tmp $(TARGET_SUBDIR)/libgomp/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libgomp/Makefile || exit 0; \ + $(NORMAL_TARGET_EXPORTS) \ + \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS; \ + echo Configuring stage feedback in $(TARGET_SUBDIR)/libgomp ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgomp ; \ + cd $(TARGET_SUBDIR)/libgomp || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/libgomp"; \ + libsrcdir="$$s/libgomp"; \ + $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) +@endif target-libgomp-bootstrap + + + .PHONY: all-target-libgomp maybe-all-target-libgomp @@ -52840,10 +57445,9 @@ TARGET-target-libgomp=all maybe-all-target-libgomp: all-target-libgomp all-target-libgomp: configure-target-libgomp - @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ (cd $(TARGET_SUBDIR)/libgomp && \ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ $(TARGET-target-libgomp)) @@ -52851,6 +57455,264 @@ +.PHONY: all-stage1-target-libgomp maybe-all-stage1-target-libgomp +.PHONY: clean-stage1-target-libgomp maybe-clean-stage1-target-libgomp +maybe-all-stage1-target-libgomp: +maybe-clean-stage1-target-libgomp: +@if target-libgomp-bootstrap +maybe-all-stage1-target-libgomp: all-stage1-target-libgomp +all-stage1: all-stage1-target-libgomp +TARGET-stage1-target-libgomp = $(TARGET-target-libgomp) +all-stage1-target-libgomp: configure-stage1-target-libgomp + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + $(NORMAL_TARGET_EXPORTS) \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_TARGET_FLAGS) \ + TFLAGS="$(STAGE1_TFLAGS)" \ + $(TARGET-stage1-target-libgomp) + +maybe-clean-stage1-target-libgomp: clean-stage1-target-libgomp +clean-stage1: clean-stage1-target-libgomp +clean-stage1-target-libgomp: + @if [ $(current_stage) = stage1 ]; then \ + [ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage1-libgomp/Makefile ] || exit 0; \ + $(MAKE) stage1-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) \ + clean +@endif target-libgomp-bootstrap + + +.PHONY: all-stage2-target-libgomp maybe-all-stage2-target-libgomp +.PHONY: clean-stage2-target-libgomp maybe-clean-stage2-target-libgomp +maybe-all-stage2-target-libgomp: +maybe-clean-stage2-target-libgomp: +@if target-libgomp-bootstrap +maybe-all-stage2-target-libgomp: all-stage2-target-libgomp +all-stage2: all-stage2-target-libgomp +TARGET-stage2-target-libgomp = $(TARGET-target-libgomp) +all-stage2-target-libgomp: configure-stage2-target-libgomp + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + $(NORMAL_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_TARGET_FLAGS) \ + TFLAGS="$(STAGE2_TFLAGS)" \ + $(TARGET-stage2-target-libgomp) + +maybe-clean-stage2-target-libgomp: clean-stage2-target-libgomp +clean-stage2: clean-stage2-target-libgomp +clean-stage2-target-libgomp: + @if [ $(current_stage) = stage2 ]; then \ + [ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage2-libgomp/Makefile ] || exit 0; \ + $(MAKE) stage2-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) \ + \ + clean +@endif target-libgomp-bootstrap + + +.PHONY: all-stage3-target-libgomp maybe-all-stage3-target-libgomp +.PHONY: clean-stage3-target-libgomp maybe-clean-stage3-target-libgomp +maybe-all-stage3-target-libgomp: +maybe-clean-stage3-target-libgomp: +@if target-libgomp-bootstrap +maybe-all-stage3-target-libgomp: all-stage3-target-libgomp +all-stage3: all-stage3-target-libgomp +TARGET-stage3-target-libgomp = $(TARGET-target-libgomp) +all-stage3-target-libgomp: configure-stage3-target-libgomp + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + $(NORMAL_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_TARGET_FLAGS) \ + TFLAGS="$(STAGE3_TFLAGS)" \ + $(TARGET-stage3-target-libgomp) + +maybe-clean-stage3-target-libgomp: clean-stage3-target-libgomp +clean-stage3: clean-stage3-target-libgomp +clean-stage3-target-libgomp: + @if [ $(current_stage) = stage3 ]; then \ + [ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage3-libgomp/Makefile ] || exit 0; \ + $(MAKE) stage3-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) \ + \ + clean +@endif target-libgomp-bootstrap + + +.PHONY: all-stage4-target-libgomp maybe-all-stage4-target-libgomp +.PHONY: clean-stage4-target-libgomp maybe-clean-stage4-target-libgomp +maybe-all-stage4-target-libgomp: +maybe-clean-stage4-target-libgomp: +@if target-libgomp-bootstrap +maybe-all-stage4-target-libgomp: all-stage4-target-libgomp +all-stage4: all-stage4-target-libgomp +TARGET-stage4-target-libgomp = $(TARGET-target-libgomp) +all-stage4-target-libgomp: configure-stage4-target-libgomp + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + $(NORMAL_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_TARGET_FLAGS) \ + TFLAGS="$(STAGE4_TFLAGS)" \ + $(TARGET-stage4-target-libgomp) + +maybe-clean-stage4-target-libgomp: clean-stage4-target-libgomp +clean-stage4: clean-stage4-target-libgomp +clean-stage4-target-libgomp: + @if [ $(current_stage) = stage4 ]; then \ + [ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage4-libgomp/Makefile ] || exit 0; \ + $(MAKE) stage4-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) \ + \ + clean +@endif target-libgomp-bootstrap + + +.PHONY: all-stageprofile-target-libgomp maybe-all-stageprofile-target-libgomp +.PHONY: clean-stageprofile-target-libgomp maybe-clean-stageprofile-target-libgomp +maybe-all-stageprofile-target-libgomp: +maybe-clean-stageprofile-target-libgomp: +@if target-libgomp-bootstrap +maybe-all-stageprofile-target-libgomp: all-stageprofile-target-libgomp +all-stageprofile: all-stageprofile-target-libgomp +TARGET-stageprofile-target-libgomp = $(TARGET-target-libgomp) +all-stageprofile-target-libgomp: configure-stageprofile-target-libgomp + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + $(NORMAL_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_TARGET_FLAGS) \ + TFLAGS="$(STAGEprofile_TFLAGS)" \ + $(TARGET-stageprofile-target-libgomp) + +maybe-clean-stageprofile-target-libgomp: clean-stageprofile-target-libgomp +clean-stageprofile: clean-stageprofile-target-libgomp +clean-stageprofile-target-libgomp: + @if [ $(current_stage) = stageprofile ]; then \ + [ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stageprofile-libgomp/Makefile ] || exit 0; \ + $(MAKE) stageprofile-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) \ + \ + clean +@endif target-libgomp-bootstrap + + +.PHONY: all-stagefeedback-target-libgomp maybe-all-stagefeedback-target-libgomp +.PHONY: clean-stagefeedback-target-libgomp maybe-clean-stagefeedback-target-libgomp +maybe-all-stagefeedback-target-libgomp: +maybe-clean-stagefeedback-target-libgomp: +@if target-libgomp-bootstrap +maybe-all-stagefeedback-target-libgomp: all-stagefeedback-target-libgomp +all-stagefeedback: all-stagefeedback-target-libgomp +TARGET-stagefeedback-target-libgomp = $(TARGET-target-libgomp) +all-stagefeedback-target-libgomp: configure-stagefeedback-target-libgomp + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + $(NORMAL_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_TARGET_FLAGS) \ + TFLAGS="$(STAGEfeedback_TFLAGS)" \ + $(TARGET-stagefeedback-target-libgomp) + +maybe-clean-stagefeedback-target-libgomp: clean-stagefeedback-target-libgomp +clean-stagefeedback: clean-stagefeedback-target-libgomp +clean-stagefeedback-target-libgomp: + @if [ $(current_stage) = stagefeedback ]; then \ + [ -f $(TARGET_SUBDIR)/libgomp/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stagefeedback-libgomp/Makefile ] || exit 0; \ + $(MAKE) stagefeedback-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) \ + \ + clean +@endif target-libgomp-bootstrap + + + + .PHONY: check-target-libgomp maybe-check-target-libgomp @@ -52883,6 +57745,21 @@ @endif target-libgomp +.PHONY: install-strip-target-libgomp maybe-install-strip-target-libgomp +maybe-install-strip-target-libgomp: +@if target-libgomp +maybe-install-strip-target-libgomp: install-strip-target-libgomp + +install-strip-target-libgomp: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libgomp && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-libgomp + # Other targets (info, dvi, pdf, etc.) .PHONY: maybe-info-target-libgomp info-target-libgomp @@ -53266,7 +58143,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-fortran); -check-fortran: check-gcc-fortran check-target-libgfortran +check-fortran: check-gcc-fortran check-target-libquadmath check-target-libgfortran .PHONY: check-gcc-java check-java check-gcc-java: @@ -53300,6 +58177,14 @@ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-obj-c++); check-obj-c++: check-gcc-obj-c++ +.PHONY: check-gcc-go check-go +check-gcc-go: + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-go); +check-go: check-gcc-go check-target-libgo + # Install the gcc headers files, but not the fixed include files, # which Cygnus is not allowed to distribute. This rule is very @@ -53431,6 +58316,11 @@ mkdir stage1-cloog; \ mv stage1-cloog cloog @endif cloog +@if libelf + @cd $(HOST_SUBDIR); [ -d stage1-libelf ] || \ + mkdir stage1-libelf; \ + mv stage1-libelf libelf +@endif libelf @if gold @cd $(HOST_SUBDIR); [ -d stage1-gold ] || \ mkdir stage1-gold; \ @@ -53466,6 +58356,11 @@ mkdir stage1-zlib; \ mv stage1-zlib zlib @endif zlib +@if lto-plugin + @cd $(HOST_SUBDIR); [ -d stage1-lto-plugin ] || \ + mkdir stage1-lto-plugin; \ + mv stage1-lto-plugin lto-plugin +@endif lto-plugin @[ -d stage1-$(TARGET_SUBDIR) ] || \ mkdir stage1-$(TARGET_SUBDIR); \ mv stage1-$(TARGET_SUBDIR) $(TARGET_SUBDIR) @@ -53521,6 +58416,11 @@ cd $(HOST_SUBDIR); mv cloog stage1-cloog ; \ fi @endif cloog +@if libelf + @if test -d $(HOST_SUBDIR)/libelf ; then \ + cd $(HOST_SUBDIR); mv libelf stage1-libelf ; \ + fi +@endif libelf @if gold @if test -d $(HOST_SUBDIR)/gold ; then \ cd $(HOST_SUBDIR); mv gold stage1-gold ; \ @@ -53556,6 +58456,11 @@ cd $(HOST_SUBDIR); mv zlib stage1-zlib ; \ fi @endif zlib +@if lto-plugin + @if test -d $(HOST_SUBDIR)/lto-plugin ; then \ + cd $(HOST_SUBDIR); mv lto-plugin stage1-lto-plugin ; \ + fi +@endif lto-plugin @if test -d $(TARGET_SUBDIR) ; then \ mv $(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR) ; \ fi @@ -53664,6 +58569,12 @@ mv stage2-cloog cloog ; \ mv stage1-cloog prev-cloog || test -f stage1-lean @endif cloog +@if libelf + @cd $(HOST_SUBDIR); [ -d stage2-libelf ] || \ + mkdir stage2-libelf; \ + mv stage2-libelf libelf ; \ + mv stage1-libelf prev-libelf || test -f stage1-lean +@endif libelf @if gold @cd $(HOST_SUBDIR); [ -d stage2-gold ] || \ mkdir stage2-gold; \ @@ -53706,6 +58617,12 @@ mv stage2-zlib zlib ; \ mv stage1-zlib prev-zlib || test -f stage1-lean @endif zlib +@if lto-plugin + @cd $(HOST_SUBDIR); [ -d stage2-lto-plugin ] || \ + mkdir stage2-lto-plugin; \ + mv stage2-lto-plugin lto-plugin ; \ + mv stage1-lto-plugin prev-lto-plugin || test -f stage1-lean +@endif lto-plugin @[ -d stage2-$(TARGET_SUBDIR) ] || \ mkdir stage2-$(TARGET_SUBDIR); \ mv stage2-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \ @@ -53772,6 +58689,12 @@ mv prev-cloog stage1-cloog ; : ; \ fi @endif cloog +@if libelf + @if test -d $(HOST_SUBDIR)/libelf ; then \ + cd $(HOST_SUBDIR); mv libelf stage2-libelf ; \ + mv prev-libelf stage1-libelf ; : ; \ + fi +@endif libelf @if gold @if test -d $(HOST_SUBDIR)/gold ; then \ cd $(HOST_SUBDIR); mv gold stage2-gold ; \ @@ -53814,6 +58737,12 @@ mv prev-zlib stage1-zlib ; : ; \ fi @endif zlib +@if lto-plugin + @if test -d $(HOST_SUBDIR)/lto-plugin ; then \ + cd $(HOST_SUBDIR); mv lto-plugin stage2-lto-plugin ; \ + mv prev-lto-plugin stage1-lto-plugin ; : ; \ + fi +@endif lto-plugin @if test -d $(TARGET_SUBDIR) ; then \ mv $(TARGET_SUBDIR) stage2-$(TARGET_SUBDIR) ; \ mv prev-$(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR) ; : ; \ @@ -53946,6 +58875,12 @@ mv stage3-cloog cloog ; \ mv stage2-cloog prev-cloog || test -f stage2-lean @endif cloog +@if libelf + @cd $(HOST_SUBDIR); [ -d stage3-libelf ] || \ + mkdir stage3-libelf; \ + mv stage3-libelf libelf ; \ + mv stage2-libelf prev-libelf || test -f stage2-lean +@endif libelf @if gold @cd $(HOST_SUBDIR); [ -d stage3-gold ] || \ mkdir stage3-gold; \ @@ -53988,6 +58923,12 @@ mv stage3-zlib zlib ; \ mv stage2-zlib prev-zlib || test -f stage2-lean @endif zlib +@if lto-plugin + @cd $(HOST_SUBDIR); [ -d stage3-lto-plugin ] || \ + mkdir stage3-lto-plugin; \ + mv stage3-lto-plugin lto-plugin ; \ + mv stage2-lto-plugin prev-lto-plugin || test -f stage2-lean +@endif lto-plugin @[ -d stage3-$(TARGET_SUBDIR) ] || \ mkdir stage3-$(TARGET_SUBDIR); \ mv stage3-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \ @@ -54054,6 +58995,12 @@ mv prev-cloog stage2-cloog ; : ; \ fi @endif cloog +@if libelf + @if test -d $(HOST_SUBDIR)/libelf ; then \ + cd $(HOST_SUBDIR); mv libelf stage3-libelf ; \ + mv prev-libelf stage2-libelf ; : ; \ + fi +@endif libelf @if gold @if test -d $(HOST_SUBDIR)/gold ; then \ cd $(HOST_SUBDIR); mv gold stage3-gold ; \ @@ -54096,6 +59043,12 @@ mv prev-zlib stage2-zlib ; : ; \ fi @endif zlib +@if lto-plugin + @if test -d $(HOST_SUBDIR)/lto-plugin ; then \ + cd $(HOST_SUBDIR); mv lto-plugin stage3-lto-plugin ; \ + mv prev-lto-plugin stage2-lto-plugin ; : ; \ + fi +@endif lto-plugin @if test -d $(TARGET_SUBDIR) ; then \ mv $(TARGET_SUBDIR) stage3-$(TARGET_SUBDIR) ; \ mv prev-$(TARGET_SUBDIR) stage2-$(TARGET_SUBDIR) ; : ; \ @@ -54284,6 +59237,12 @@ mv stage4-cloog cloog ; \ mv stage3-cloog prev-cloog || test -f stage3-lean @endif cloog +@if libelf + @cd $(HOST_SUBDIR); [ -d stage4-libelf ] || \ + mkdir stage4-libelf; \ + mv stage4-libelf libelf ; \ + mv stage3-libelf prev-libelf || test -f stage3-lean +@endif libelf @if gold @cd $(HOST_SUBDIR); [ -d stage4-gold ] || \ mkdir stage4-gold; \ @@ -54326,6 +59285,12 @@ mv stage4-zlib zlib ; \ mv stage3-zlib prev-zlib || test -f stage3-lean @endif zlib +@if lto-plugin + @cd $(HOST_SUBDIR); [ -d stage4-lto-plugin ] || \ + mkdir stage4-lto-plugin; \ + mv stage4-lto-plugin lto-plugin ; \ + mv stage3-lto-plugin prev-lto-plugin || test -f stage3-lean +@endif lto-plugin @[ -d stage4-$(TARGET_SUBDIR) ] || \ mkdir stage4-$(TARGET_SUBDIR); \ mv stage4-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \ @@ -54392,6 +59357,12 @@ mv prev-cloog stage3-cloog ; : ; \ fi @endif cloog +@if libelf + @if test -d $(HOST_SUBDIR)/libelf ; then \ + cd $(HOST_SUBDIR); mv libelf stage4-libelf ; \ + mv prev-libelf stage3-libelf ; : ; \ + fi +@endif libelf @if gold @if test -d $(HOST_SUBDIR)/gold ; then \ cd $(HOST_SUBDIR); mv gold stage4-gold ; \ @@ -54434,6 +59405,12 @@ mv prev-zlib stage3-zlib ; : ; \ fi @endif zlib +@if lto-plugin + @if test -d $(HOST_SUBDIR)/lto-plugin ; then \ + cd $(HOST_SUBDIR); mv lto-plugin stage4-lto-plugin ; \ + mv prev-lto-plugin stage3-lto-plugin ; : ; \ + fi +@endif lto-plugin @if test -d $(TARGET_SUBDIR) ; then \ mv $(TARGET_SUBDIR) stage4-$(TARGET_SUBDIR) ; \ mv prev-$(TARGET_SUBDIR) stage3-$(TARGET_SUBDIR) ; : ; \ @@ -54610,6 +59587,12 @@ mv stageprofile-cloog cloog ; \ mv stage1-cloog prev-cloog || test -f stage1-lean @endif cloog +@if libelf + @cd $(HOST_SUBDIR); [ -d stageprofile-libelf ] || \ + mkdir stageprofile-libelf; \ + mv stageprofile-libelf libelf ; \ + mv stage1-libelf prev-libelf || test -f stage1-lean +@endif libelf @if gold @cd $(HOST_SUBDIR); [ -d stageprofile-gold ] || \ mkdir stageprofile-gold; \ @@ -54652,6 +59635,12 @@ mv stageprofile-zlib zlib ; \ mv stage1-zlib prev-zlib || test -f stage1-lean @endif zlib +@if lto-plugin + @cd $(HOST_SUBDIR); [ -d stageprofile-lto-plugin ] || \ + mkdir stageprofile-lto-plugin; \ + mv stageprofile-lto-plugin lto-plugin ; \ + mv stage1-lto-plugin prev-lto-plugin || test -f stage1-lean +@endif lto-plugin @[ -d stageprofile-$(TARGET_SUBDIR) ] || \ mkdir stageprofile-$(TARGET_SUBDIR); \ mv stageprofile-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \ @@ -54718,6 +59707,12 @@ mv prev-cloog stage1-cloog ; : ; \ fi @endif cloog +@if libelf + @if test -d $(HOST_SUBDIR)/libelf ; then \ + cd $(HOST_SUBDIR); mv libelf stageprofile-libelf ; \ + mv prev-libelf stage1-libelf ; : ; \ + fi +@endif libelf @if gold @if test -d $(HOST_SUBDIR)/gold ; then \ cd $(HOST_SUBDIR); mv gold stageprofile-gold ; \ @@ -54760,6 +59755,12 @@ mv prev-zlib stage1-zlib ; : ; \ fi @endif zlib +@if lto-plugin + @if test -d $(HOST_SUBDIR)/lto-plugin ; then \ + cd $(HOST_SUBDIR); mv lto-plugin stageprofile-lto-plugin ; \ + mv prev-lto-plugin stage1-lto-plugin ; : ; \ + fi +@endif lto-plugin @if test -d $(TARGET_SUBDIR) ; then \ mv $(TARGET_SUBDIR) stageprofile-$(TARGET_SUBDIR) ; \ mv prev-$(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR) ; : ; \ @@ -54869,6 +59870,12 @@ mv stagefeedback-cloog cloog ; \ mv stageprofile-cloog prev-cloog || test -f stageprofile-lean @endif cloog +@if libelf + @cd $(HOST_SUBDIR); [ -d stagefeedback-libelf ] || \ + mkdir stagefeedback-libelf; \ + mv stagefeedback-libelf libelf ; \ + mv stageprofile-libelf prev-libelf || test -f stageprofile-lean +@endif libelf @if gold @cd $(HOST_SUBDIR); [ -d stagefeedback-gold ] || \ mkdir stagefeedback-gold; \ @@ -54911,6 +59918,12 @@ mv stagefeedback-zlib zlib ; \ mv stageprofile-zlib prev-zlib || test -f stageprofile-lean @endif zlib +@if lto-plugin + @cd $(HOST_SUBDIR); [ -d stagefeedback-lto-plugin ] || \ + mkdir stagefeedback-lto-plugin; \ + mv stagefeedback-lto-plugin lto-plugin ; \ + mv stageprofile-lto-plugin prev-lto-plugin || test -f stageprofile-lean +@endif lto-plugin @[ -d stagefeedback-$(TARGET_SUBDIR) ] || \ mkdir stagefeedback-$(TARGET_SUBDIR); \ mv stagefeedback-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \ @@ -54977,6 +59990,12 @@ mv prev-cloog stageprofile-cloog ; : ; \ fi @endif cloog +@if libelf + @if test -d $(HOST_SUBDIR)/libelf ; then \ + cd $(HOST_SUBDIR); mv libelf stagefeedback-libelf ; \ + mv prev-libelf stageprofile-libelf ; : ; \ + fi +@endif libelf @if gold @if test -d $(HOST_SUBDIR)/gold ; then \ cd $(HOST_SUBDIR); mv gold stagefeedback-gold ; \ @@ -55019,6 +60038,12 @@ mv prev-zlib stageprofile-zlib ; : ; \ fi @endif zlib +@if lto-plugin + @if test -d $(HOST_SUBDIR)/lto-plugin ; then \ + cd $(HOST_SUBDIR); mv lto-plugin stagefeedback-lto-plugin ; \ + mv prev-lto-plugin stageprofile-lto-plugin ; : ; \ + fi +@endif lto-plugin @if test -d $(TARGET_SUBDIR) ; then \ mv $(TARGET_SUBDIR) stagefeedback-$(TARGET_SUBDIR) ; \ mv prev-$(TARGET_SUBDIR) stageprofile-$(TARGET_SUBDIR) ; : ; \ @@ -55141,8 +60166,10 @@ configure-stage4-target-libgcc: maybe-all-stage4-gcc configure-stageprofile-target-libgcc: maybe-all-stageprofile-gcc configure-stagefeedback-target-libgcc: maybe-all-stagefeedback-gcc +configure-target-libquadmath: stage_last configure-target-libgfortran: stage_last configure-target-libobjc: stage_last +configure-target-libgo: stage_last configure-target-libtermcap: stage_last configure-target-winsup: stage_last configure-target-libgloss: stage_last @@ -55156,7 +60183,12 @@ configure-target-qthreads: stage_last configure-target-rda: stage_last configure-target-libada: stage_last -configure-target-libgomp: stage_last +configure-stage1-target-libgomp: maybe-all-stage1-gcc +configure-stage2-target-libgomp: maybe-all-stage2-gcc +configure-stage3-target-libgomp: maybe-all-stage3-gcc +configure-stage4-target-libgomp: maybe-all-stage4-gcc +configure-stageprofile-target-libgomp: maybe-all-stageprofile-gcc +configure-stagefeedback-target-libgomp: maybe-all-stagefeedback-gcc @endif gcc-bootstrap @if gcc-no-bootstrap @@ -55165,8 +60197,10 @@ configure-target-libssp: maybe-all-gcc configure-target-newlib: maybe-all-gcc configure-target-libgcc: maybe-all-gcc +configure-target-libquadmath: maybe-all-gcc configure-target-libgfortran: maybe-all-gcc configure-target-libobjc: maybe-all-gcc +configure-target-libgo: maybe-all-gcc configure-target-libtermcap: maybe-all-gcc configure-target-winsup: maybe-all-gcc configure-target-libgloss: maybe-all-gcc @@ -55218,6 +60252,14 @@ configure-stage4-gcc: maybe-configure-stage4-intl configure-stageprofile-gcc: maybe-configure-stageprofile-intl configure-stagefeedback-gcc: maybe-configure-stagefeedback-intl +configure-gcc: maybe-all-lto-plugin + +configure-stage1-gcc: maybe-all-stage1-lto-plugin +configure-stage2-gcc: maybe-all-stage2-lto-plugin +configure-stage3-gcc: maybe-all-stage3-lto-plugin +configure-stage4-gcc: maybe-all-stage4-lto-plugin +configure-stageprofile-gcc: maybe-all-stageprofile-lto-plugin +configure-stagefeedback-gcc: maybe-all-stagefeedback-lto-plugin configure-gcc: maybe-all-binutils configure-stage1-gcc: maybe-all-stage1-binutils @@ -55250,6 +60292,14 @@ configure-stage4-gcc: maybe-all-stage4-gold configure-stageprofile-gcc: maybe-all-stageprofile-gold configure-stagefeedback-gcc: maybe-all-stagefeedback-gold +configure-gcc: maybe-all-libelf + +configure-stage1-gcc: maybe-all-stage1-libelf +configure-stage2-gcc: maybe-all-stage2-libelf +configure-stage3-gcc: maybe-all-stage3-libelf +configure-stage4-gcc: maybe-all-stage4-libelf +configure-stageprofile-gcc: maybe-all-stageprofile-libelf +configure-stagefeedback-gcc: maybe-all-stagefeedback-libelf all-gcc: all-libiberty all-stage1-gcc: all-stage1-libiberty @@ -55387,7 +60437,49 @@ all-stageprofile-gcc: maybe-all-stageprofile-libiberty all-stagefeedback-gcc: maybe-all-stagefeedback-libiberty all-gcc: maybe-all-fixincludes +all-gcc: maybe-all-lto-plugin + +all-stage1-gcc: maybe-all-stage1-lto-plugin +all-stage2-gcc: maybe-all-stage2-lto-plugin +all-stage3-gcc: maybe-all-stage3-lto-plugin +all-stage4-gcc: maybe-all-stage4-lto-plugin +all-stageprofile-gcc: maybe-all-stageprofile-lto-plugin +all-stagefeedback-gcc: maybe-all-stagefeedback-lto-plugin +info-gcc: maybe-all-build-libiberty + +info-stage1-gcc: maybe-all-build-libiberty +info-stage2-gcc: maybe-all-build-libiberty +info-stage3-gcc: maybe-all-build-libiberty +info-stage4-gcc: maybe-all-build-libiberty +info-stageprofile-gcc: maybe-all-build-libiberty +info-stagefeedback-gcc: maybe-all-build-libiberty +dvi-gcc: maybe-all-build-libiberty + +dvi-stage1-gcc: maybe-all-build-libiberty +dvi-stage2-gcc: maybe-all-build-libiberty +dvi-stage3-gcc: maybe-all-build-libiberty +dvi-stage4-gcc: maybe-all-build-libiberty +dvi-stageprofile-gcc: maybe-all-build-libiberty +dvi-stagefeedback-gcc: maybe-all-build-libiberty +pdf-gcc: maybe-all-build-libiberty + +pdf-stage1-gcc: maybe-all-build-libiberty +pdf-stage2-gcc: maybe-all-build-libiberty +pdf-stage3-gcc: maybe-all-build-libiberty +pdf-stage4-gcc: maybe-all-build-libiberty +pdf-stageprofile-gcc: maybe-all-build-libiberty +pdf-stagefeedback-gcc: maybe-all-build-libiberty +html-gcc: maybe-all-build-libiberty + +html-stage1-gcc: maybe-all-build-libiberty +html-stage2-gcc: maybe-all-build-libiberty +html-stage3-gcc: maybe-all-build-libiberty +html-stage4-gcc: maybe-all-build-libiberty +html-stageprofile-gcc: maybe-all-build-libiberty +html-stagefeedback-gcc: maybe-all-build-libiberty install-gcc: maybe-install-fixincludes +install-gcc: maybe-install-lto-plugin +install-strip-gcc: maybe-install-strip-fixincludes configure-libcpp: configure-libiberty configure-stage1-libcpp: configure-stage1-libiberty @@ -55422,6 +60514,15 @@ all-stagefeedback-libcpp: maybe-all-stagefeedback-intl all-fixincludes: maybe-all-libiberty all-gnattools: maybe-all-target-libada +all-lto-plugin: maybe-all-libiberty + +all-stage1-lto-plugin: maybe-all-stage1-libiberty +all-stage2-lto-plugin: maybe-all-stage2-libiberty +all-stage3-lto-plugin: maybe-all-stage3-libiberty +all-stage4-lto-plugin: maybe-all-stage4-libiberty +all-stageprofile-lto-plugin: maybe-all-stageprofile-libiberty +all-stagefeedback-lto-plugin: maybe-all-stagefeedback-libiberty +all-utils: maybe-all-libiberty configure-mpfr: maybe-all-gmp configure-stage1-mpfr: maybe-all-stage1-gmp @@ -55474,6 +60575,7 @@ all-gdb: maybe-all-build-byacc all-gdb: maybe-all-sim all-gdb: maybe-all-libdecnumber +all-gdb: maybe-all-libtermcap configure-libgui: maybe-configure-tcl configure-libgui: maybe-configure-tk all-libgui: maybe-all-tcl @@ -55592,7 +60694,9 @@ all-stageprofile-binutils: maybe-all-stageprofile-intl all-stagefeedback-binutils: maybe-all-stagefeedback-intl install-binutils: maybe-install-opcodes +install-strip-binutils: maybe-install-strip-opcodes install-opcodes: maybe-install-bfd +install-strip-opcodes: maybe-install-strip-bfd configure-gas: maybe-configure-intl configure-stage1-gas: maybe-configure-stage1-intl @@ -55702,6 +60806,8 @@ all-stage4-ld: maybe-all-stage4-intl all-stageprofile-ld: maybe-all-stageprofile-intl all-stagefeedback-ld: maybe-all-stagefeedback-intl +install-ld: maybe-install-gold +install-strip-ld: maybe-install-strip-gold configure-gold: maybe-configure-intl configure-stage1-gold: maybe-configure-stage1-intl @@ -55758,6 +60864,14 @@ check-stage4-gold: maybe-all-stage4-binutils check-stageprofile-gold: maybe-all-stageprofile-binutils check-stagefeedback-gold: maybe-all-stagefeedback-binutils +check-gold: maybe-all-gas + +check-stage1-gold: maybe-all-stage1-gas +check-stage2-gold: maybe-all-stage2-gas +check-stage3-gold: maybe-all-stage3-gas +check-stage4-gold: maybe-all-stage4-gas +check-stageprofile-gold: maybe-all-stageprofile-gas +check-stagefeedback-gold: maybe-all-stagefeedback-gas configure-opcodes: maybe-configure-intl configure-stage1-opcodes: maybe-configure-stage1-intl @@ -55802,6 +60916,7 @@ all-itcl: maybe-all-tcl all-itcl: maybe-all-tk install-itcl: maybe-install-tcl +install-strip-itcl: maybe-install-strip-tcl configure-tk: maybe-configure-tcl all-tk: maybe-all-tcl all-sid: maybe-all-libiberty @@ -55810,7 +60925,9 @@ all-sid: maybe-all-tcl all-sid: maybe-all-tk install-sid: maybe-install-tcl +install-strip-sid: maybe-install-strip-tcl install-sid: maybe-install-tk +install-strip-sid: maybe-install-strip-tk configure-sim: maybe-configure-intl all-sim: maybe-all-intl all-sim: maybe-all-libiberty @@ -55859,6 +60976,9 @@ configure-target-fastjar: maybe-configure-target-zlib all-target-fastjar: maybe-all-target-zlib all-target-fastjar: maybe-all-target-libiberty +configure-target-libgo: maybe-configure-target-libffi +configure-target-libgo: maybe-all-target-libstdc++-v3 +all-target-libgo: maybe-all-target-libffi configure-target-libjava: maybe-configure-target-zlib configure-target-libjava: maybe-configure-target-boehm-gc configure-target-libjava: maybe-configure-target-qthreads @@ -55873,6 +60993,21 @@ all-target-libobjc: maybe-all-target-boehm-gc all-target-libstdc++-v3: maybe-all-target-libiberty configure-target-libstdc++-v3: maybe-configure-target-libgomp + +configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp +configure-stage2-target-libstdc++-v3: maybe-configure-stage2-target-libgomp +configure-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp +configure-stage4-target-libstdc++-v3: maybe-configure-stage4-target-libgomp +configure-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp +configure-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp +all-target-libstdc++-v3: maybe-configure-target-libgomp + +all-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp +all-stage2-target-libstdc++-v3: maybe-configure-stage2-target-libgomp +all-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp +all-stage4-target-libstdc++-v3: maybe-configure-stage4-target-libgomp +all-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp +all-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp all-target-libgloss: maybe-all-target-newlib all-target-winsup: maybe-all-target-libiberty all-target-winsup: maybe-all-target-libtermcap @@ -55880,6 +61015,7 @@ configure-target-libiberty: maybe-all-ld configure-target-newlib: maybe-all-binutils configure-target-newlib: maybe-all-ld +configure-target-libgfortran: maybe-all-target-libquadmath # Dependencies for target modules on other target modules are @@ -55894,6 +61030,12 @@ configure-stage4-target-libstdc++-v3: maybe-all-stage4-target-libgcc configure-stageprofile-target-libstdc++-v3: maybe-all-stageprofile-target-libgcc configure-stagefeedback-target-libstdc++-v3: maybe-all-stagefeedback-target-libgcc +configure-stage1-target-libgomp: maybe-all-stage1-target-libgcc +configure-stage2-target-libgomp: maybe-all-stage2-target-libgcc +configure-stage3-target-libgomp: maybe-all-stage3-target-libgcc +configure-stage4-target-libgomp: maybe-all-stage4-target-libgcc +configure-stageprofile-target-libgomp: maybe-all-stageprofile-target-libgcc +configure-stagefeedback-target-libgomp: maybe-all-stagefeedback-target-libgcc @endif gcc-bootstrap @if gcc-no-bootstrap @@ -55901,8 +61043,10 @@ configure-target-libmudflap: maybe-all-target-libgcc configure-target-libssp: maybe-all-target-libgcc configure-target-newlib: maybe-all-target-libgcc +configure-target-libquadmath: maybe-all-target-libgcc configure-target-libgfortran: maybe-all-target-libgcc configure-target-libobjc: maybe-all-target-libgcc +configure-target-libgo: maybe-all-target-libgcc configure-target-libtermcap: maybe-all-target-libgcc configure-target-winsup: maybe-all-target-libgcc configure-target-libgloss: maybe-all-target-libgcc @@ -55928,10 +61072,14 @@ +configure-target-libquadmath: maybe-all-target-newlib maybe-all-target-libgloss + configure-target-libgfortran: maybe-all-target-newlib maybe-all-target-libgloss configure-target-libobjc: maybe-all-target-newlib maybe-all-target-libgloss +configure-target-libgo: maybe-all-target-newlib maybe-all-target-libgloss + configure-target-libtermcap: maybe-all-target-newlib maybe-all-target-libgloss configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss diff -Nru crash-5.1.6/=unpacked-tar1=/Makefile.tpl crash-6.1.6/=unpacked-tar1=/Makefile.tpl --- crash-5.1.6/=unpacked-tar1=/Makefile.tpl 2009-09-07 00:44:07.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/Makefile.tpl 2011-05-17 21:24:52.000000000 +0000 @@ -6,7 +6,7 @@ # # Makefile for directory with subdirs to build. # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation # # This file is free software; you can redistribute it and/or modify @@ -103,8 +103,6 @@ tooldir = @tooldir@ build_tooldir = @build_tooldir@ -GDB_NLM_DEPS = - # This is the name of the environment variable used for the path to # the libraries. RPATH_ENVVAR = @RPATH_ENVVAR@ @@ -160,6 +158,8 @@ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \ GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \ GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \ + GOC="$(GOC_FOR_BUILD)"; export GOC; \ + GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \ DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ LD="$(LD_FOR_BUILD)"; export LD; \ LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ @@ -176,6 +176,7 @@ # This is the list of directories to built for the host system. SUBDIRS = @configdirs@ +TARGET_CONFIGDIRS = @target_configdirs@ # This is set by the configure script to the arguments to use when configuring # directories built for the host system. HOST_CONFIGARGS = @host_configargs@ @@ -195,6 +196,7 @@ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ GCJ="$(GCJ)"; export GCJ; \ GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ + GOC="$(GOC)"; export GOC; \ AR="$(AR)"; export AR; \ AS="$(AS)"; export AS; \ CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ @@ -222,11 +224,29 @@ PPLINC="$(HOST_PPLINC)"; export PPLINC; \ CLOOGLIBS="$(HOST_CLOOGLIBS)"; export CLOOGLIBS; \ CLOOGINC="$(HOST_CLOOGINC)"; export CLOOGINC; \ + LIBELFLIBS="$(HOST_LIBELFLIBS)" ; export LIBELFLIBS; \ + LIBELFINC="$(HOST_LIBELFINC)" ; export LIBELFINC; \ @if gcc-bootstrap $(RPATH_ENVVAR)=`echo "$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \ @endif gcc-bootstrap $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); +POSTSTAGE1_CXX_EXPORT = \ + CXX='$(CXX)'; export CXX; \ + CXX_FOR_BUILD='$(CXX_FOR_BUILD)'; export CXX_FOR_BUILD; +@if target-libstdc++-v3-bootstrap +# Override the above if we're bootstrapping C++. +POSTSTAGE1_CXX_EXPORT = \ + CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ + -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \ + -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ + -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ + -I$$s/libstdc++-v3/libsupc++ \ + -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \ + CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD; +@endif target-libstdc++-v3-bootstrap + # Similar, for later GCC stages. POSTSTAGE1_HOST_EXPORTS = \ $(HOST_EXPORTS) \ @@ -234,13 +254,7 @@ -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \ $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ - CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/g++$(exeext) \ - -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \ - -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ - -I$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ - -I$$r/$(srcdir)/libstdc++-v3/libsupc++ \ - -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs"; export CXX; \ - CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD; \ + $(POSTSTAGE1_CXX_EXPORT) \ GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind"; export GNATBIND; \ LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)"; export LDFLAGS; \ HOST_LIBS="$(POSTSTAGE1_LIBS)"; export HOST_LIBS; @@ -251,7 +265,7 @@ # directories built for the target. TARGET_CONFIGARGS = @target_configargs@ --with-target-subdir="$(TARGET_SUBDIR)" # This is the list of variables to export in the environment when -# configuring subdirectories for the host system. +# configuring subdirectories for the target system. BASE_TARGET_EXPORTS = \ $(BASE_EXPORTS) \ AR="$(AR_FOR_TARGET)"; export AR; \ @@ -263,6 +277,7 @@ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ GCJ="$(GCJ_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GCJ; \ GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ + GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ @@ -273,7 +288,11 @@ STRIP="$(STRIP_FOR_TARGET)"; export STRIP; \ WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \ WINDMC="$(WINDMC_FOR_TARGET)"; export WINDMC; \ - $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); +@if gcc-bootstrap + $(RPATH_ENVVAR)=`echo "$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \ +@endif gcc-bootstrap + $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \ + TARGET_CONFIGDIRS="$(TARGET_CONFIGDIRS)"; export TARGET_CONFIGDIRS; RAW_CXX_TARGET_EXPORTS = \ $(BASE_TARGET_EXPORTS) \ @@ -296,11 +315,15 @@ HOST_CLOOGLIBS = @clooglibs@ HOST_CLOOGINC = @clooginc@ +# Where to find libelf +HOST_LIBELFLIBS = @libelflibs@ +HOST_LIBELFINC = @libelfinc@ + # ---------------------------------------------- # Programs producing files for the BUILD machine # ---------------------------------------------- -SHELL = @config_shell@ +SHELL = @SHELL@ # pwd command to use. Allow user to override default by setting PWDCMD in # the environment to account for automounters. The make variable must not @@ -321,6 +344,7 @@ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ GCJ_FOR_BUILD = @GCJ_FOR_BUILD@ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ +GOC_FOR_BUILD = @GOC_FOR_BUILD@ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ LD_FOR_BUILD = @LD_FOR_BUILD@ NM_FOR_BUILD = @NM_FOR_BUILD@ @@ -383,6 +407,7 @@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates +GOCFLAGS = $(CFLAGS) TFLAGS = @@ -395,6 +420,11 @@ [+ FOR bootstrap-stage +] # Defaults for stage [+id+]; some are overridden below. STAGE[+id+]_CFLAGS = $(STAGE_CFLAGS) +STAGE[+id+]_CXXFLAGS = $(CXXFLAGS) +@if target-libstdc++-v3-bootstrap +# Override the above if we're bootstrapping C++. +STAGE[+id+]_CXXFLAGS = $(STAGE[+id+]_CFLAGS) +@endif target-libstdc++-v3-bootstrap STAGE[+id+]_TFLAGS = $(STAGE_TFLAGS) STAGE[+id+]_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) [+ ENDFOR bootstrap-stage +] @@ -406,8 +436,8 @@ # overrideable (for a bootstrap build stage1 also builds gcc.info). STAGE1_CFLAGS = @stage1_cflags@ -STAGE1_CHECKING=@stage1_checking@ -STAGE1_LANGUAGES=@stage1_languages@ +STAGE1_CHECKING = @stage1_checking@ +STAGE1_LANGUAGES = @stage1_languages@ # * We force-disable intermodule optimizations, even if # --enable-intermodule was passed, since the installed compiler # probably can't handle them. Luckily, autoconf always respects @@ -443,6 +473,7 @@ RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ +GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@ DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ LD_FOR_TARGET=@LD_FOR_TARGET@ @@ -464,6 +495,7 @@ LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates LDFLAGS_FOR_TARGET = +GOCFLAGS_FOR_TARGET = -O2 -g FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ @@ -487,7 +519,7 @@ ### # This is the list of directories that may be needed in RPATH_ENVVAR -# so that prorgams built for the target machine work. +# so that programs built for the target machine work. TARGET_LIB_PATH = [+ FOR target_modules +][+ IF lib_path +]$(TARGET_LIB_PATH_[+module+])[+ ENDIF lib_path +][+ ENDFOR target_modules +]$(HOST_LIB_PATH_gcc) @@ -517,12 +549,34 @@ @endif [+module+] [+ ENDIF lib_path +][+ ENDFOR host_modules +] +CXX_FOR_TARGET_FLAG_TO_PASS = \ + "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" +@if target-libstdc++-v3 +# CXX_FOR_TARGET is tricky to get right for target libs that require a +# functional C++ compiler. When we recurse, if we expand +# CXX_FOR_TARGET before configuring libstdc++-v3, we won't get +# libstdc++ include flags from the script. Instead, we get an +# -funconfigured-* word, so that we'll get errors if this invalid C++ +# command line is used for anything, but also so that we can use the +# word to decide whether or not to pass on this CXX_FOR_TARGET. If we +# don't pass it on, sub-make will use the default definition, that +# re-expands it at the time of use, so we'll get it right when we need +# it. One potential exception is the expansion of CXX_FOR_TARGET +# passed down as part of CXX within TARGET_FLAGS, but this wouldn't +# really work, for C++ host programs can't depend on the current-stage +# C++ target library. +CXX_FOR_TARGET_FLAG_TO_PASS = \ + $(shell if echo "$(CXX_FOR_TARGET)" | grep " -funconfigured-" > /dev/null; then :; else echo '"CXX_FOR_TARGET=$(CXX_FOR_TARGET)"'; fi) +@endif target-libstdc++-v3 + # Flags to pass down to all sub-makes. BASE_FLAGS_TO_PASS =[+ FOR flags_to_pass +][+ IF optional +] \ "`echo '[+flag+]=$([+flag+])' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"[+ ELSE optional +] \ "[+flag+]=$([+flag+])"[+ ENDIF optional+][+ ENDFOR flags_to_pass +][+ FOR bootstrap-stage +] \ "STAGE[+id+]_CFLAGS=$(STAGE[+id+]_CFLAGS)" \ + "STAGE[+id+]_CXXFLAGS=$(STAGE[+id+]_CXXFLAGS)" \ "STAGE[+id+]_TFLAGS=$(STAGE[+id+]_TFLAGS)"[+ ENDFOR bootstrap-stage +] \ + $(CXX_FOR_TARGET_FLAG_TO_PASS) \ "TFLAGS=$(TFLAGS)" \ "CONFIG_SHELL=$(SHELL)" \ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" @@ -540,6 +594,7 @@ 'DLLTOOL=$(DLLTOOL)' \ 'GCJ=$(GCJ)' \ 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ 'LD=$(LD)' \ 'LIPO=$(LIPO)' \ 'NM=$(NM)' \ @@ -551,26 +606,14 @@ FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) -# Flags that are concerned with the location of the X11 include files -# and library files -# -# NOTE: until the top-level is getting the values via autoconf, it only -# causes problems to have this top-level Makefile overriding the autoconf-set -# values in child directories. Only variables that don't conflict with -# autoconf'ed ones should be passed by X11_FLAGS_TO_PASS for now. -# -X11_FLAGS_TO_PASS = \ - 'X11_EXTRA_CFLAGS=$(X11_EXTRA_CFLAGS)' \ - 'X11_EXTRA_LIBS=$(X11_EXTRA_LIBS)' - # Flags to pass to stage2 and later makes. POSTSTAGE1_FLAGS_TO_PASS = \ CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ GNATBIND="$${GNATBIND}" \ - LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)" \ - HOST_LIBS="$(POSTSTAGE1_LIBS)" \ + LDFLAGS="$${LDFLAGS}" \ + HOST_LIBS="$${HOST_LIBS}" \ "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" # Flags to pass down to makes which are built with the target environment. @@ -588,6 +631,8 @@ 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ 'GCJ=$$(GCJ_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ 'LD=$(COMPILER_LD_FOR_TARGET)' \ 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ @@ -745,6 +790,7 @@ -rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null -rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null + -find . -name config.cache -exec rm -f {} \; \; 2>/dev/null local-maintainer-clean: @echo "This command is intended for maintainers to use;" @@ -850,6 +896,26 @@ install-no-fixedincludes: installdirs install-host-nogcc \ install-target gcc-no-fixedincludes +.PHONY: install-strip +install-strip: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(MAKE) $(RECURSE_FLAGS_TO_PASS) installdirs install-strip-host install-strip-target + +.PHONY: install-strip-host +install-strip-host: [+ + FOR host_modules +] \ + maybe-install-strip-[+module+][+ + ENDFOR host_modules +] + +.PHONY: install-strip-target +install-strip-target: [+ + FOR target_modules +] \ + maybe-install-strip-target-[+module+][+ + ENDFOR target_modules +] + + ### other supporting targets MAKEDIRS= \ @@ -912,7 +978,7 @@ fi; \ [+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \ $(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \ - [+exports+] \ + [+exports+] [+extra_exports+] \ echo Configuring in [+subdir+]/[+module+]; \ cd "[+subdir+]/[+module+]" || exit 1; \ case $(srcdir) in \ @@ -961,9 +1027,10 @@ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;[+ ELSE prefix +] \ CFLAGS="$(STAGE[+id+]_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE[+id+]_CFLAGS)"; export CXXFLAGS;[+ IF prev +] \ + CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"; export CXXFLAGS;[+ IF prev +] \ LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \ - LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +]; export LIBCFLAGS;[+ ENDIF prefix +] \ + LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +]; export LIBCFLAGS;[+ + ENDIF prefix +] [+extra_exports+] \ echo Configuring stage [+id+] in [+subdir+]/[+module+] ; \ $(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \ cd [+subdir+]/[+module+] || exit 1; \ @@ -999,7 +1066,7 @@ @: $(MAKE); $(unstage)[+ ENDIF bootstrap +] @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - [+exports+] \ + [+exports+] [+extra_exports+] \ (cd [+subdir+]/[+module+] && \ $(MAKE) $(BASE_FLAGS_TO_PASS) [+args+] [+extra_make_flags+] \ $(TARGET-[+prefix+][+module+])) @@ -1021,14 +1088,14 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ [+exports+][+ IF prev +] \ - [+poststage1_exports+][+ ENDIF prev +] \ + [+poststage1_exports+][+ ENDIF prev +] [+extra_exports+] \ cd [+subdir+]/[+module+] && \ $(MAKE) $(BASE_FLAGS_TO_PASS)[+ IF prefix +] \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"[+ ELSE prefix +] \ CFLAGS="$(STAGE[+id+]_CFLAGS)" \ - CXXFLAGS="$(STAGE[+id+]_CFLAGS)"[+ IF prev +] \ + CXXFLAGS="$(STAGE[+id+]_CXXFLAGS)"[+ IF prev +] \ LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \ LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +][+ ENDIF prefix +] \ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ @@ -1134,6 +1201,23 @@ [+ ENDIF no_install +] @endif [+module+] +.PHONY: install-strip-[+module+] maybe-install-strip-[+module+] +maybe-install-strip-[+module+]: +@if [+module+] +maybe-install-strip-[+module+]: install-strip-[+module+] +[+ IF no_install +] +install-strip-[+module+]: +[+ ELSE install +] +install-strip-[+module+]: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/[+module+] && \ + $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] install-strip) +[+ ENDIF no_install +] +@endif [+module+] + # Other targets (info, dvi, pdf, etc.) [+ FOR recursive_targets +] .PHONY: maybe-[+make_target+]-[+module+] [+make_target+]-[+module+] @@ -1246,6 +1330,28 @@ [+ ENDIF no_install +] @endif target-[+module+] +.PHONY: install-strip-target-[+module+] maybe-install-strip-target-[+module+] +maybe-install-strip-target-[+module+]: +@if target-[+module+] +maybe-install-strip-target-[+module+]: install-strip-target-[+module+] +[+ IF no_install +] +# Dummy target for uninstallable. +install-strip-target-[+module+]: +[+ ELSE install +] +install-strip-target-[+module+]: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \[+ +IF raw_cxx +] + $(RAW_CXX_TARGET_EXPORTS) \[+ +ELSE normal_cxx +] + $(NORMAL_TARGET_EXPORTS) \[+ +ENDIF raw_cxx +] + (cd $(TARGET_SUBDIR)/[+module+] && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) [+extra_make_flags+] install-strip) +[+ ENDIF no_install +] +@endif target-[+module+] + # Other targets (info, dvi, pdf, etc.) [+ FOR recursive_targets +] .PHONY: maybe-[+make_target+]-target-[+module+] [+make_target+]-target-[+module+] @@ -1311,7 +1417,7 @@ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) [+gcc-check-target+]); -check-[+language+]: check-gcc-[+language+][+ IF lib-check-target +] [+ lib-check-target +][+ ENDIF lib-check-target +] +check-[+language+]: check-gcc-[+language+][+ FOR lib-check-target +] [+ lib-check-target +][+ ENDFOR lib-check-target +] [+ ENDFOR languages +] # Install the gcc headers files, but not the fixed include files, diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/.gitignore crash-6.1.6/=unpacked-tar1=/bfd/.gitignore --- crash-5.1.6/=unpacked-tar1=/bfd/.gitignore 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/.gitignore 2010-12-09 09:03:12.000000000 +0000 @@ -0,0 +1,40 @@ +/bfd-in3.h +/bfd.h +/bfd_stdint.h +/bfdver.h +/elf32-ia64.c +/elf32-target.h +/elf64-ia64.c +/elf64-target.h +/libtool-soversion +/ofiles +/peigen.c +/pepigen.c +/pex64igen.c +/stmp-bfd-h +/targmatch.h + +/doc/aoutx.texi +/doc/archive.texi +/doc/archures.texi +/doc/bfdio.texi +/doc/bfdt.texi +/doc/bfdver.texi +/doc/bfdwin.texi +/doc/cache.texi +/doc/chew +/doc/coffcode.texi +/doc/core.texi +/doc/elf.texi +/doc/elfcode.texi +/doc/format.texi +/doc/hash.texi +/doc/init.texi +/doc/libbfd.texi +/doc/linker.texi +/doc/mmo.texi +/doc/opncls.texi +/doc/reloc.texi +/doc/section.texi +/doc/syms.texi +/doc/targets.texi diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/ChangeLog crash-6.1.6/=unpacked-tar1=/bfd/ChangeLog --- crash-5.1.6/=unpacked-tar1=/bfd/ChangeLog 2009-09-16 13:30:31.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/ChangeLog 2011-08-18 20:39:20.000000000 +0000 @@ -1,4397 +1,634 @@ -2009-09-16 Tristan Gingold - - * mach-o.h (bfd_mach_o_filetype): Add new constants from darwin10. - Reindent. - * mach-o.c (bfd_mach_o_cpu_name): Reindent. - (bfd_mach_o_filetype_name): Complete with new constants. Reindent. - (bfd_mach_o_print_private_header): Use fputs instead of fprintf - when possible to avoid warnings. - (bfd_mach_o_print_section_map): Ditto. - (bfd_mach_o_section_get_entry_size): New function. - (bfd_mach_o_section_get_nbr_indirect): Simplify using the newly - added function. - (bfd_mach_o_print_dysymtab): Print address of indirect symbols. - -2009-09-14 Nick Clifton - - * po/fi.po: Updated Finnish translation. - -2009-09-11 Nick Clifton - - * po/bfd.pot: Updated by the Translation project. - -2009-09-11 Philippe De Muyter - - * binary.c (binary_object_p): Remove bfd_external_binary_architecture - hack. objcopy `-B' (`--binary-architecture') option is now handled - in a generic way. - -2009-09-11 Nick Clifton - - * rs6000-core.c (read_hdr): Fix typo in recent C++ compatibility - changes. - -2009-09-11 Jie Zhang - - * elf32-bfin.c (bfinfdpic_relocs_info_find): Just return - NULL if `ht' is NULL. - -2009-09-09 Martin Thuresson - - Update soruces to compile cleanly with -Wc++-compat: - * aoutx.h: Add casts. - * archive.c: Add casts. - * archive64.c: Add casts. - * archures.c: Add casts. - * bfd-in2.h: Regenerated. - * bfd.c: Add casts. (enum bfd_direction): Move out to top level. - * bfdio.c: Add casts. - * binary.c: Add casts. - * cache.c (cache_bseek,cache_bread_1,cache_bwrite): Updated - parameter to use enum value instead of int. - * coffcode.h: Add casts. - * coffgen.c: Add casts. - * cofflink.c: Add casts. - * compress.c: Add casts. - * dwarf1.c: Add casts. - * dwarf2.c: Add casts. (struct dwarf2_debug): Rename member bfd to - bfd_ptr. Update code to use new name. - * elf-attrs.c: Add casts. - * elf-bfd.h (elf_link_virtual_table_entry): Gives name to - anonymous struct. (union gotplt_union, struct - elf_link_virtual_table_entry): Move to top level. - * elf-eh-frame.c: Add casts. - * elf-strtab.c: Add casts. - * elf.c: Add casts. (_bfd_elm_make_Section_from_phdr): Change - argument name from typename to type_name. - * elf32-i386.c: Add casts. - * elf64-x86-64.c: Add casts. - * elfcode.h: Add casts. - * elfcore.h: Add casts. - * elflink.c: Add casts. - * format.c: Add casts. - * hash.c: Add casts. - * ihex.c: Add casts. - * libaout.h (enum aout_subformat, enum aout_magic): Move to top - level. - * libbfd.c: Add casts. - * linker.c: Add casts. - * merge.c: Add casts. - * opncls.c: Add casts. - * peXXigen.c: Add casts. - * peicode.h: Add casts. - * reloc.c: Add casts. - * section.c: Add casts. - * simple.c: Add casts. - * srec.c: Add casts. - * stabs.c: Add casts. - * syms.c: Add casts. - * targets.c: Add casts. - * tekhex.c: Add casts. - * verilog.c: Add casts. +2011-08-05 Mark Kettenis -2009-09-09 Paolo Bonzini + * netbsd-core.c (netbsd_core_vec): Init match_priority field. - * configure: Regenerate. - -2009-09-09 Daniel Jacobowitz - - * elf32-arm.c (elf32_arm_final_link_relocate): Set sym_flags - for the mode of target PLT entries. - (allocate_dynrelocs): Only adjust symbol type if setting its - value. - -2009-09-09 Paolo Bonzini - - * configure: Regenerate. - -2009-09-09 Nick Clifton - - PR 10478: - * elf.c (bfd_section_from_shdr): Do not reject sparc binaries with - section headers containing sh_link values of SHN_BEFORE or - SHN_AFTER. - * elfcode.h (elf_object_p): Likewise. - -2009-09-09 Tristan Gingold - - Handle DYLD_INFO introduced by Darwin10. - * mach-o.h (bfd_mach_o_load_command_type): Add - BFD_MACH_O_LC_DYLD_INFO. - (bfd_mach_o_dyld_info_command): New type. - (bfd_mach_o_load_command): Add dyld_info field. - * mach-o.c (bfd_mach_o_scan_read_str): Reduce size of buf. - (bfd_mach_o_scan_read_dyld_info): New function. - (bfd_mach_o_scan_read_command): Handle BFD_MACH_O_LC_DYLD_INFO. - (bfd_mach_o_bfd_print_private_bfd_data): Ditto. - (bfd_mach_o_load_command_name): AddB FD_MACH_O_LC_DYLD_INFO. - (bfd_mach_o_print_dyld_info): New function. - -2009-09-09 M R Swami Reddy - - * elf32-cr16.c (elf32_cr16_relocate_section): Add code to discard the - linkonce or linker script discarded section. - -2009-09-09 Alan Modra - - * elf32-xtensa.c (elf_xtensa_relax_section): Delete -r check. - -2009-09-07 Andreas Schwab - - * elf32-m68k.c (rtype_to_howto): If the reloc index is out of - range call the bfd error hander and use R_68K_NONE instead. - -2009-09-07 Tristan Gingold - - * po/SRC-POTFILES.in: Regenerate. - * po/bfd.pot: Regenerate. - - * bfd.m4 (BFD_HAVE_TIME_TYPE_MEMBER, - BFD_HAVE_SYS_STAT_TYPE_MEMBER): Moved to gas/acinclude.m4 - * configure.in: Move tests for tm_gmtoff, st_mtim.tv_sec and - st_mtim.tv_nsec to gas/configure.in - (bfd_elf64_ia64_vms_vec): Remove vmsutil.lo - * configure: Regenerate. - * config.in: Regenerate. - * vmsutil.c: Moved to gas/config/te-vms.c - * vmsutil.h: Removed. - * Makefile.am (BFD32_BACKENDS_CFILES): Remove vmsutil.c - (BFD32_BACKENDS): Remove vmsutil.lo - * Makefile.in: Regenerate. - -2009-09-05 Eli Zaretskii - - * coffcode.h: Include libiberty.h. - -2009-09-05 Martin Thuresson - - * coff-arm.c (coff_arm_relocate_section) - (record_thumb_to_arm_glue, bfd_arm_process_before_allocation): - Change member name class to symbol_class. - * coff-i960.c (coff_i960_relocate_section) Rename variable - class to class_val. Change member name class to symbol_class. - * coff-rs6000.c (_bfd_xcoff_swap_aux_in) - (_bfd_xcoff_swap_aux_out): Rename arguments class to in_class. - * coff-stgo32.c (adjust_aux_in_post) - (adjust_aux_out_pre, adjust_aux_out_post): Rename arguments class - to in_class. - * coff64-rs6000.c (_bfd_xcoff64_swap_aux_in) - (_bfd_xcoff64_swap_aux_out): Rename arguments class to in_class. - * coffcode.h (coff_pointerize_aux_hook): Rename variable class - to n_sclass. - * coffgen.c (coff_write_symbol, coff_pointerize_aux): Rename - variables named class to n_sclass. (coff_write_symbols): Rename - variable class to sym_class. (bfd_coff_set_symbol_class): Rename - argument class to symbol_class. - * cofflink.c (_bfd_coff_link_hash_newfunc) - (coff_link_add_symbols, _bfd_coff_link_input_bfd) - (_bfd_coff_write_global_sym, _bfd_coff_generic_relocate_section): - Update code to use renamed members. - * coffswap.h (coff_swap_aux_in, coff_swap_aux_out): Rename - argument class to in_class. - * libcoff-in.h (struct coff_link_hash_entry, struct - coff_debug_merge_type) Renamed members class to symbol_class and - type_class. - * libcoff.h Regenerated. - * peXXigen.c: (_bfd_XXi_swap_aux_in, _bfd_XXi_swap_aux_out): - Rename argument class to in_class. - * pef.c (bfd_pef_parse_imported_symbol): Update code to use - renamed members. - * pef.h (struct bfd_pef_imported_symbol): Changed name of - member class to symbol_class. - -2009-09-04 H.J. Lu - - * configure: Regenerated. - -2009-09-04 Tristan Gingold - - * configure.in: Bump version to 2.20.51 - -2009-09-04 Alan Modra - - * elf32-spu.c (spu_elf_relocate_section): Correct 2009-07-24 logic. - -2009-09-04 Jie Zhang - - * elf32-bfin.c (elf32_bfinfdpic_create_dynamic_sections): Always - create .rela.bss. - (elf32_bfinfdpic_size_dynamic_sections): Set SEC_EXCLUDE flag - for empty .rela.bss and .rel.plt sections. - -2009-09-03 Adam Nemet - - * elfxx-mips.c (mips_elf_calculate_relocation): Don't relocate - R_MIPS_JALR unless symbol resolves locally. - -2009-09-03 Adam Nemet - - * elfxx-mips.c (_bfd_mips_elf_check_relocs): Don't set - has_static_relocs for R_MIPS_JALR. - -2009-09-03 Maciej W. Rozycki - - * elf64-mips.c (mips_elf64_howto_table_rela): Add support for - R_MIPS_TLS_DTPMOD64 and R_MIPS_TLS_TPREL64, replacing the - respective stubs. - -2009-09-01 H.J. Lu - - * elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Declare - plt earlier. - -2009-09-01 Tristan Gingold - - * makefile.vms: Ported to Itanium VMS. Remove useless variable and - dependencies. Reindent. - * configure.com: Ported to Itanium VMS. Now generates a build.com - to build without make. Add messages but make edit silent. - * hosts/alphavms.h: Add a prototype for stpcpy. - * vms.c: Add a missing include for Alpha VMS. - * elfxx-ia64.c (ELF_OSABI): Define for OpenVMS. - -2009-08-31 Jan Beulich - - * elf-bfd.h (bfd_elf_get_default_section_type): Declare. - * elf.c (bfd_elf_get_default_section_type): New. - (elf_fake_sections): Use bfd_elf_get_default_section_type. - -2009-08-30 H.J. Lu - - * elf32-i386.c (elf_i386_finish_dynamic_symbol): Revert the - accidental checkin. - * elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Likwise. - -2009-08-30 Alan Modra - - PR ld/10569 - * bfd.c (bfd_emul_get_maxpagesize): Don't abort. - (bfd_emul_get_commonpagesize): Likewise. - -2009-08-29 Martin Thuresson - - * elf32-arm.c (struct stub_def): Rename member template to - template_sequence. (arm_build_one_stub, - find_stub_size_and_template, arm_size_one_stub, arm_map_one_stub): - Rename variable template to template_sequence. - * elfxx-ia64.c (elfNN_ia64_relax_br, elfNN_ia64_relax_brl): - Rename variable template to template_val. - * aoutx.h (NAME (aout, make_empty_symbol)): Rename variable - new to new_symbol. - * coffgen.c (coff_make_empty_symbol) - (coff_bfd_make_debug_symbol): Rename variable new to new_symbol. - * cpu-ia64-opc.c (ext_reg, ins_imms_scaled): Rename variable - new to new_insn. - * ecoff.c (_bfd_ecoff_make_empty_symbol): Rename variable new - to new_symbol. - * elf32-m68k.c (elf_m68k_get_got_entry_type): Rename argument - new to new_reloc. - * hash.c (bfd_hash_lookup): Rename variable new to new_string. - * ieee.c (ieee_make_empty_symbol): Rename variable new to - new_symbol. - * linker.c (bfd_new_link_order): Rename variable new to - new_lo. - * mach-o.c (bfd_mach_o_sizeof_headers): Rename variable new to - symbol. - * oasys.c (oasys_make_empty_symbol): Rename variable new to - new_symbol_type. - * pdp11.c (NAME (aout, make_empty_symbol)): Rename variable - new to new_symbol_type. - * plugin.c (bfd_plugin_make_empty_symbol): Rename variable new - to new_symbol. - * rs6000-core.c (CoreHdr, VmInfo): Rename union member new to - new_dump. - (read_hdr, rs6000coff_core_p) - (rs6000coff_core_file_matches_executable_p) - (rs6000coff_core_file_failing_command) - (rs6000coff_core_file_failing_signal): Updated function to use new - union member name. - * som.c (som_make_empty_symbol): Rename variable new to - new_symbol_type. - * syms.c (_bfd_generic_make_empty_symbol): Rename variable new - to new_symbol. - * tekhex.c (first_phase, tekhex_make_empty_symbol): Rename - variable new to new_symbol. - -2009-08-27 Ralf Wildenhues - - * acinclude.m4 (AM_INSTALL_LIBBFD): Call AM_SUBST_NOTMAKE for - bfdlibdir and bfdincludedir. - * Makefile.am (bfdlibdir, bfdincludedir): Move definition ... - [INSTALL_LIBBFD]: ... here, ... - [INSTALL_LIBBFD]: ... and empty overrides here. - [!INSTALL_LIBBFD]: (rpath_bfdlibdir): New variable. - [!INSTALL_LIBBFD] (libbfd_la_LDFLAGS): Use it. - * Makefile.in: Regenerate. - * configure: Regenerate. - -2009-08-26 Maxim Kuvyrkov - - * elf32-m68k.c: Rewrite initialization of GOT entries for TLS - relocations. Rewrite output of dynamic TLS relocations. - (DTP_OFFSET, TP_OFFSET): New constants. - (dtpoff_base): Update. - (tpoff): Rename to tpoff_base, update. - (elf_m68k_init_got_entry_static, elf_m68k_init_got_entry_local_shared): - New functions. Move code from elf_m68k_relocate_section here. - (elf_m68k_relocate_section): Update. - (elf_m68k_finish_dynamic_symbol): Fix handling of local TLS symbols. - -2009-08-26 Maxim Kuvyrkov - - * elf32-m68k.c (elf_m68k_copy_indirect_symbol): Propagate - non_got_ref value. - (elf_m68k_check_relocs): Handle dynamic TLS relocations. - Handle non_got_ref field. - (elf_m68k_adjust_dynamic_symbol): Handle non_got_ref field. - -2009-08-26 Alan Modra - - PR ld/10518 - * linker.c (bfd_find_version_for_sym): Revert warning. - -2009-08-26 Alan Modra - - PR ld/10518 - * linker.c (bfd_find_version_for_sym): Override a "*" match by any - other wildcard match. Warn on multiple wildcard matches. - -2009-08-22 Ralf Wildenhues - - * Makefile.am (libbfd_la_LDFLAGS): Initialize early, to allow - appending. - [INSTALL_LIBBFD] (bfdlib_LTLIBRARIES, bfdinclude_HEADERS): Set - only in this condition. - [!INSTALL_LIBBFD] (noinst_LTLIBRARIES, libbfd_la_LDFLAGS): New, - to build but not install libbfd.la in this condition. - (install-bfdlibLTLIBRARIES, uninstall-bfdlibLTLIBRARIES) - (install_libbfd, install_libbfd): Remove. - * Makefile.in: Regenerate. - * doc/Makefile.am (AM_CPPFLAGS): Renamed from ... - (INCLUDES): ... this. - ($(MKDOC)): Adjust. - * doc/Makefile.in: Regenerate. - - * Makefile.am (AUTOMAKE_OPTIONS): Remove cygnus, instead use - no-dist and foreign. - (EXTRA_libbfd_la_SOURCES): New, list $(CFILES) to allow - dependency tracking to work for them. - (targets.lo, archures.lo, dwarf.lo): Rewrite to - use automake dependency tracking mechanism. - (MKDEP, DEP, DEP1, dep.sed, dep, dep-in, dep-am): Remove. - (mkdep section): Remove. - (BUILT_SOURCES): New, list $(BUILD_HFILES). - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in, po/bfd.pot: Regenerate. - - * Makefile.am (datarootdir, docdir, htmldor, pdfdir) - (install-pdf, install-pdf-recursive, install-html) - (install-html-recursive): Remove. - * Makefile.in: Regenerate. - - * Makefile.in: Regenerate. - * aclocal.m4: Likewise. - * config.in: Likewise. - * configure: Likewise. - -2009-08-21 Daniel Gutson - - * elf32-arm.c (arch_has_thumb2_nop): New function. - (arch_has_arm_nop): New function. - (elf32_arm_final_link_relocate): NOP opcodes changed. - -2009-08-16 Doug Evans - - * opncls.c (bfd_close): Until BFD_IN_MEMORY has an iovec, - at least don't leak memory. - -2009-08-13 DJ Delorie - - * elf32-m32c.c (m32c_elf_relax_delete_bytes): Adjust symbol sizes - if needed. - -2009-08-12 Nick Clifton - - * po/fi.po: Updated Finnish translation. - -2009-08-11 Bernd Schmidt - - Merge some FRV FDPIC changes into the Blackfin code. - * elf32-bfin.c (struct bfinfdpic_elf_link_hash_table): Add pointer to - summary reloc information. - (bfinfdpic_dynamic_got_plt_info): New. - (_bfin_create_got_section): Create the PLT section here. - (elf32_bfinfdpic_create_dynamic_sections): Not here. - (_bfinfdpic_count_nontls_entries): Move out of... - (_bfinfdpic_count_got_plt_entries): ... here. - (_bfinfdpic_count_relocs_fixups): Likewise. - (_bfinfdpic_reset_got_plt_entries): New. - (_bfinfdpic_size_got_plt): Move out of... - (elf32_bfinfdpic_size_dynamic_sections): ... here. - (bfinfdpic_relocate_section): Be careful not to call - _bfinfdpic_add_rofixup or _bfinfdpic_add_dyn_reloc for deleted relocs. - (bfinfdpic_check_discarded_relocs, bfinfdpic_elf_discard_info): - New functions. - (elf_backend_discard_info): Define for FD-PIC. - -2009-08-11 Alan Modra - - * elflink.c: Add FIXMEs for some places that require octets_per_byte - adjustments. - * elf-eh-frame.c: Likewise. - * merge.c: Likewise. - -2009-08-11 Alan Modra - - * configure.in: Remove elf-ifunc.lo from common ELF files. Add - to x86 and x86_64 configurations. - * configure: Regenerate. - -2009-08-10 Jan Kratochvil - - Stop using bfd_usrdata in libbfd. - * coff-stgo32.c (bfd_coff_go32stub): Remove. - (stub_bytes, comment): Replace STUBSIZE by GO32_STUBSIZE. - (adjust_filehdr_in_post): Declare the abfd parameter as unused. - Replace STUBSIZE by GO32_STUBSIZE. Save now the stub in - filehdr_dst->u.go32.stub. New comment with the reason. - (adjust_filehdr_out_pre): Replace STUBSIZE by GO32_STUBSIZE. - Substitute the removed macro bfd_coff_go32stub. - (adjust_filehdr_out_post, adjust_scnhdr_in_post, adjust_scnhdr_out_pre) - (adjust_scnhdr_out_post, adjust_aux_in_post, adjust_aux_out_pre) - (adjust_aux_out_post): Replace STUBSIZE by GO32_STUBSIZE. - (create_go32_stub, go32_stubbed_coff_bfd_copy_private_bfd_data): - Replace STUBSIZE by GO32_STUBSIZE. Substitute the removed macro - bfd_coff_go32stub. - * coffcode.h (coff_mkobject_hook): Initialize coff->go32stub. - * libcoff-in.h (coff_data_type): New field go32stub. - * libcoff.h: Regenerated. - -2009-08-10 Jan Kratochvil - - Fix go32 stub preservation by objcopy. - * coff-stgo32.c (adjust_filehdr_in_post): Use bfd_malloc. - (go32_stubbed_coff_bfd_copy_private_bfd_data): Optionally allocate OBFD - go32stub. - -2009-08-10 Nathan Sidwell - - * elf32-arm.c (elf32_arm_size_stubs): Don't die on undefined local - symbols. - (elf32_arm_final_link_relocate): Treat local undefined symbols the - same as global undefined symbols. - (elf32_arm_relocate_section): Give an error for local undefined - non-weak symbols, unless the reloc will not use the symbol. - -2009-08-10 Nathan Sidwell - - * elf32-ppc.c (shared_stub_entry, stub_entry): Use r12, not r11. - (ppc_elf_relax_section): Use symbol index to distinguish - relocatable stubs. - -2009-08-10 Alan Modra - - * elf32-ppc.c (ppc_elf_relax_section): Ignore non-code sections. - -2009-08-10 Alan Modra - - * elflink.c (_bfd_elf_adjust_dynamic_symbol): Don't clear plt - info for STT_GNU_IFUNC. - * elf32-ppc.c (ppc_elf_check_relocs): Count a needed plt entry - on got refs in case the symbol turns out to be ifunc. - (ppc_elf_gc_sweep_hook): Similarly. - (ppc_elf_adjust_dynamic_symbol): Adjust assertion. - (allocate_dynrelocs): Don't specially allocate got relocs for ifunc. - (ppc_elf_size_dynamic_sections): Likewise. - (ppc_elf_relocate_section): Likewise. - -2009-08-09 Bernd Schmidt - - From Mike Frysinger - * elf32-bfin.c (bfin_howto_table, bfin_reloc_map, bfin_check_relocs, - bfin_final_link_relocate, bfin_relocate_section, bfin_gc_sweep_hook, - _bfinfdpic_emit_got_relocs_plt_entries, bfinfdpic_relocate_section, - bfinfdpic_gc_sweep_hook, bfinfdpic_check_relocs, - bfin_finish_dynamic_symbol, bfd_bfin_elf32_create_embedded_relocs): - Adjust to match the renamed reloc definitions. - -2009-08-08 Alan Modra - - PR 10494 - * elf.c (_bfd_elf_make_section_from_shdr): When setting up section - LMAs, use ELF_IS_SECTION_IN_SEGMENT to match sections with headers. - -2009-08-07 Tom Tromey - - * elf32-microblaze.c (microblaze_elf_check_relocs): Avoid strict - aliasing error. - -2009-08-06 Michael Eager - - * Makefile.am: Add cpu-microblaze.{lo,c}, elf32-microblaze.{lo,c}. - * Makefile.in: Regenerate. - * archures.c: Add bfd_arch_microblaze. - * bfd-in2.h: Regenerate. - * config.bfd: Add microblaze target. - * configure.in: Add bfd_elf32_microblaze_vec target. - * configure: Regenerate. - * cpu-microblaze.c: New. - * elf32-microblaze.c: New. - * libbfd-in.h: Add prototype _bfd_dwarf2_fixup_section_debug_loc(). - * libbfd.h: Regenerate. - * reloc.c: Add MICROBLAZE relocations. - * section.c: Add struct relax_table and relax_count to section. - * targets.c: Add bfd_elf32_microblaze_vec. - -2009-08-06 Jakub Jelinek - Alan Modra - - PR binutils/10492 - * elf.c (sym_is_global): Return true even for BSF_GNU_UNIQUE - symbols. - * elf32-mips.c (mips_elf_sym_is_global): Likewise. - * elfn32-mips.c (mips_elf_sym_is_global): Likewise. - -2009-08-06 Nathan Sidwell +2011-05-17 Tristan Gingold - * elf32-arm.c (elf32_arm_size_stubs): Call layout_sections_again - at least once when fixing cortex-a8. + * elfxx-ia64.c: include bfd_stdint.h -2009-08-05 Chao-ying Fu - - * elf32-mips.c (mips_reloc_map): Add BFD_RELOC_MIPS_JALR. - * elfxx-mips.c (JAL_TO_BAL_P): New define to transform JAL to BAL - for CPUs. It is true for RM9000. - (JALR_TO_BAL_P): New define to transform JALR to BAL. It is true - for all CPUs. - (mips_elf_perform_relocation): Use JAL_TO_BAL_P and JALR_TO_BAL_P - to guard the transformation. - -2009-08-05 Trevor Smigiel - - * elf32-spu.h (spu_elf_params): Add member emit_fixups. - (spu_elf_size_sections): Declare prototype. - * elf32-spu.c (spu_link_hash_table): Add member sfixup. - (FIXUP_RECORD_SIZE, FIXUP_GET, FIXUP_PUT): New macros. - (spu_elf_emit_fixup): New function. - (spu_elf_relocate_section): Emit fixup for each SPU_ADDR32. - (spu_elf_size_sections): New function. - -2009-08-05 Nathan Sidwell - - * elf32-arm.c (elf32_arm_stub_type): Add arm_stub_a8_veneer_lwm. - (arm_build_one_stub): Build a8 veneers as a separate pass. - (cortex_a8_erratum_scan): Add prev_num_a8_fixes and stub_changed_p - parameters. Use them to check if we create a different a8 fixup - than the previous pass. - (elf32_arm_size_stubs): Move scope of stub_changed and - prev_num_a8_fixes into main loop. - (elf32_arm_build_stubs): Build a8 veneers in a second pass. - -2009-08-04 Alan Modra - - * elf32-ppc.c (ppc_elf_relax_section): Correct conditions under - which find_plt_ent is called. Delete redundant code. - -2009-08-03 H.J. Lu - - PR binutils/10363 - * elf.c (bfd_elf_string_from_elf_section): Return NULL on - invalid string offset. - -2009-08-03 H.J. Lu - - PR ld/10433 - * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Set got - to htab->init_got_offset and plt to htab->init_plt_offset - when discarding space for dynamic relocations. - -2009-08-03 Alan Modra - - * elf32-ppc.c (struct plt_entry): Revise comments. - (ppc_elf_check_relocs): Don't create needless plt_entry info - for non-pie executables. Don't test info->pie when info->shared - already covers that case. - (ppc_elf_gc_sweep_hook): Adjust for above change. - (add_stub_sym): Don't test info->pie when info->shared tested. - (allocate_dynrelocs, ppc_elf_size_dynamic_sections): Likewise. - (write_glink_stub, ppc_elf_finish_dynamic_symbol): Likewise. - (ppc_elf_relax_section): Adjust find_plt_ent arguments. - (ppc_elf_relocate_section): Likewise. - -2009-08-03 Alan Modra - - * elf32-ppc.c (ppc_elf_check_relocs): Always add a plt ref count - for local ifunc symbols in non-pie executables, regardless of - reloc type. Don't specially create ifunc dyn relocs. Tidy ifunc - code so that it's obvious that we only do anything special for - local ifunc syms. - (ppc_elf_gc_sweep_hook): Adjust to suit check_relocs changes. - (allocate_dynrelocs): Correct comment for syms defined in plt. - Don't specially allocate ifunc dyn relocs. - (ppc_elf_relax_section): Relax branches to ifunc plt entries too. - (ppc_elf_relocate_section): Set "relocation" value for ifunc - syms in non-pie executables. No specially allocated dyn relocs - for ifunc to write. Allow for local sym on R_PPC_RELAX32_PLT. - (ppc_elf_finish_dynamic_symbol): Set value of ifunc symbols in - a non-pie executable. - -2009-08-02 H.J. Lu - Jakub Jelinek - - PR ld/6443 - * elf32-i386.c (elf_i386_tls_transition): Check executable - instead of shared for TLS when building PIE. - (elf_i386_check_relocs): Likewise. - (elf_i386_allocate_dynrelocs): Likewise. - (elf_i386_relocate_section): Likewise. - - * elf64-x86-64.c (elf64_x86_64_tls_transition): Check executable - instead of shared for TLS when building PIE. - (elf64_x86_64_check_relocs): Likewise. - (elf64_x86_64_allocate_dynrelocs): Likewise. - (elf64_x86_64_relocate_section): Likewise. - -2009-07-31 Anthony Green - - * config.bfd (targ_cpu): Add moxie-uclinux support. - -2009-07-31 Hans-Peter Nilsson - - * linker.c (fix_syms): Consider SEC_LOAD when choosing section. - -2009-07-30 Alan Modra - - * elf32-ppc.c (ppc_elf_check_relocs): Always set up sections - used by indirect function support. Count dynamic relocs for - ifunc syms. - (ppc_elf_adjust_dynamic_symbol): Tweak for ifunc. - (allocate_dynrelocs): Allocate all non-dynamic ifunc plt entries - in iplt and their relocs in reliplt. Don't make ifunc syms - dynamic. Allocate got entry relocs for non-dynamic ifunc in - reliplt. Handle other dynamic relocs for ifunc. - (ppc_elf_size_dynamic_sections): Alloc dyn relocs for static - ifunc in reliplt, likewise relocs for got against local ifunc. - Typo fix on reliplt size adjust. - (ppc_elf_relocate_section): Don't use plt scheme of allocating - relocs 1-1 with entries for iplt, instead just add using - reloc_count. Write got relocs and dyn relocs for ifunc to reliplt. - Error on invalid ifunc dyn relocs. - (ppc_elf_finish_dynamic_symbol): Adjust for non-dynamic ifunc plt - in iplt/reliplt. - * elf64-ppc.c (ppc64_elf_howto_raw): Add R_PPC64_JMP_IREL, - R_PPC64_REL16, R_PPC64_REL16_LO, R_PPC64_REL16_HI, R_PPC64_REL16_HA. - (ppc64_elf_reloc_type_lookup): Handle new relocs. - (ppc64_elf_check_relocs): Likewise. Count dyn relocs for ifunc. - (allocate_dynrelocs): As for elf32-ppc.c above. - (ppc64_elf_size_dynamic_sections): Likewise. - (ppc_build_one_stub): Put non-dynamic ifunc plt call stubs in iplt, - and their relocs in reliplt. Use R_PPC64_JMP_IREL. - (ppc_size_one_stub): Similarly. - (ppc64_elf_relocate_section): As for elf32-ppc.c above. Handle new - relocs too. - (ppc64_elf_finish_dynamic_symbol): As for elf32-ppc.c above. - -2009-07-29 Hans-Peter Nilsson - - * elf64-mmix.c (mmix_elf_relax_section): Revert 2009-05-27 - change. Add note to head comment. - -2009-07-28 Jan Beulich - - * archive.c (get_extended_arelt_filename): Remove redundant - range check on index. - -2009-07-27 Doug Kwan - - * elf32-arm.c (stub_hash_newfunc): Initialize field output_name. - -2009-07-27 H.J. Lu - - * archures.c bfd_*_arch): Sorted. - (bfd_archures_list): Likewise. - -2009-07-27 M R Swami Reddy - - * elf32-cr16.c (elf_cr16_final_link_relocate): Add code to handle - to R_cr16_NUM32 relocation. - -2009-07-26 Michael Eager - - * archures.c: Add bfd_mach_ppc_405 - * bfd-in2.h: Same. - -2009-07-25 H.J. Lu - - * cpu-i386.c (bfd_x86_64_arch): Fix comment typos. - * cpu-l1om.c (bfd_l1om_arch): Likewise. - -2009-07-25 H.J. Lu - - * archures.c (bfd_architecture): Add bfd_arch_l1om. - (bfd_l1om_arch): New. - (bfd_archures_list): Add &bfd_l1om_arch. - * bfd-in2.h: Regenerated. - - * config.bfd (targ64_selvecs): Add bfd_elf64_l1om_vec if - bfd_elf64_x86_64_vec is supported. Add bfd_elf64_l1om_freebsd_vec - if bfd_elf64_x86_64_freebsd_vec is supported. - (targ_selvecs): Likewise. - - * configure.in: Support bfd_elf64_l1om_vec and - bfd_elf64_l1om_freebsd_vec. - * configure: Regenerated. - - * cpu-l1om.c: New. - - * elf64-x86-64.c (elf64_l1om_elf_object_p): New. - (bfd_elf64_l1om_vec): Likewise. - (bfd_elf64_l1om_freebsd_vec): Likewise. - - * Makefile.am (ALL_MACHINES): Add cpu-l1om.lo. - (ALL_MACHINES_CFILES): Add cpu-l1om.c. - * Makefile.in: Regenerated. - - * targets.c (bfd_elf64_l1om_vec): New. - (bfd_elf64_l1om_freebsd_vec): Likewise. - (_bfd_target_vector): Add bfd_elf64_l1om_vec and - bfd_elf64_l1om_freebsd_vec. +2011-03-31 Jan Kratochvil + + * elf32-tic6x.c (elf32_tic6x_relocate_section): Remove unused variable + dynobj and its initialization. + +2011-03-31 Tristan Gingold + + * makefile.vms (DEFS): Add HAVE_bfd_elf64_ia64_vms_vec. + * configure.com: Set BFD_HOST_64BIT_LONG_LONG and + BFD_HOST_LONG_LONG to 1. + +2011-03-31 Tristan Gingold + + * vms-alpha.c (vms_get_remaining_object_record): Fix dec-c warning. + (_bfd_vms_write_etir): Ditto. + (_bfd_vms_slurp_etir): Avoid to use intptr_t + * configure.com: Generate bfd_stdint.h + +2011-03-31 Bernd Schmidt + + * elf32-tic6x.h (struct elf32_tic6x_params): New. + (elf32_tic6x_setup): Declare. + * elf32-tic6x.c: Include . + (ELF_DYNAMIC_LINKER, DEFAULT_STACK_SIZE, PLT_ENTRY_SIZE): Define. + (struct elf32_tic6x_link_hash_table, struct elf32_link_hash_entry): + New structures. + (elf32_tic6x_link_hash_table, is_tic6x_elf): New macros. + (tic6x_elf_scom_section, tic6x_elf_scom_symbol, + tic6x_elf_scom_symbol_ptr): New static variables. + (elf32_tic6x_howto_table, elf32_tic6x_howto_table_rel, + elf32_tic6x_reloc_map): Add R_C6000_JUMP_SLOT, R_C6000_EHTYPE, + R_C6000_PCR_H16 and R_C6000_PCR_L16. + (elf32_tic6x_link_hash_newfunc, elf32_tic6x_link_hash_table_create, + elf32_tic6x_link_hash_table_free, elf32_tic6x_setup, + elf32_tic6x_using_dsbt, elf32_tic6x_install_rela, + elf32_tic6x_create_dynamic_sections, elf32_tic6x_make_got_dynreloc, + elf32_tic6x_finish_dynamic_symbol, elf32_tic6x_gc_sweep_hook, + elf32_tic6x_adjust_dynamic_symbol): New static functions. + (elf32_tic6x_relocate_section): For R_C6000_PCR_S21, convert branches + to weak symbols as required by the ABI. + Handle GOT and DSBT_INDEX relocs, and copy relocs to the output file + as needed when generating DSBT output. + (elf32_tic6x_check_relocs, elf32_tic6x_add_symbol_hook, + elf32_tic6x_symbol_processing, elf32_tic6x_section_from_bfd_section, + elf32_tic6x_allocate_dynrelocs, elf32_tic6x_size_dynamic_sections, + elf32_tic6x_always_size_sections, elf32_tic6x_modify_program_headers, + elf32_tic6x_finish_dynamic_sections, elf32_tic6x_plt_sym_val, + elf32_tic6x_copy_private_data, elf32_tic6x_link_omit_section_dynsym): + New static functions. + (ELF_MAXPAGESIZE): Define to 0x1000. + (bfd_elf32_bfd_copy_private_bfd_data, + bfd_elf32_bfd_link_hash_table_create, + bfd_elf32_bfd_link_hash_table_free, elf_backend_can_refcount, + elf_backend_want_got_plt, elf_backend_want_dynbss, + elf_backend_plt_readonly, elf_backend_got_header_size, + elf_backend_gc_sweep_hook, elf_backend_modify_program_headers, + elf_backend_create_dynamic_sections, elf_backend_adjust_dynamic_symbol, + elf_backend_check_relocs, elf_backend_add_symbol_hook, + elf_backend_symbol_processing, elf_backend_link_output_symbol_hook, + elf_backend_section_from_bfd_section, + elf_backend_finish_dynamic_symbol, elf_backend_always_size_sections, + elf32_tic6x_size_dynamic_sections, elf_backend_finish_dynamic_sections, + elf_backend_omit_section_dynsym, elf_backend_plt_sym_val): Define. + + * bfd/reloc.c (BFD_RELOC_C6000_JUMP_SLOT, BFD_RELOC_C6000_EHTYPE, + BFD_RELOC_C6000_PCR_H16, BFD_RELOC_C6000_PCR_S16): Add. + * bfd/bfd-in2.h: Regenerate. + * bfd/libbfd.h: Regenerate. + * config.bfd: Accept tic6x-*-* instead of tic6x-*-elf. -2009-07-24 Trevor Smigiel - Alan Modra +2011-03-31 Tristan Gingold - * reloc.c (BFD_RELOC_SPU_ADD_PIC): Define. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * elf32-spu.c (elf_howto_table): Add entries SPU_ADD_PIC. - (spu_elf_bfd_to_reloc_type): Handle SPU_ADD_PIC. - (spu_elf_relocate_section): Patch instructions marked by SPU_ADD_PIC. - -2009-07-23 H.J. Lu - - PR ld/10434 - * elf64-x86-64.c (elf64_x86_64_check_relocs): Check executable - instead of shared for R_X86_64_TPOFF32. - (elf64_x86_64_relocate_section): Likewise. - -2009-07-23 Ulrich Drepper - - * elf-bfd.h (struct elf_link_hash_entry): Add unique_global field. - * elf.c (swap_out_syms): Set binding to STB_GNU_UNIQUE for symbols - with the BSF_GNU_UNIQUE flag bit set. - * elfcode.h (elf_slurp_symbol_table): Set the BSF_GNU_UNIQUE flag - for symbols with STB_GNU_UNIQUE binding. - * elflink.c (_bfd_elf_merge_symbol): Set unique_global for symbols - with the STB_GNU_UNIQUE binding. - (elf_link_add_object_symbols): Set the BSF_GNU_UNIQUE flag for - symbols with STB_GNU_UNIQUE binding. Set STB_GNU_UNIQUE for - symbols with the unique_global field set. - (elf_link_output_extsym): Set unique_global field for symbols with - the STB_GNU_UNIQUE binding. - * syms.c (struct bfd_symbol): Define BSF_GNU_UNIQUE flag bit. - (bfd_print_symbol_vandf): Print a 'u' character for BSF_GNU_UNIQUE - symbols. - (bfd_decode_symclass): Return a 'u' character for BSF_GNU_UNIQUE - symbols. - * bfd-in2.h: Regenerate. - -2009-07-22 H.J. Lu - - * elflink.c (elf_link_output_extsym): Revert the last change. - -2009-07-22 H.J. Lu - - PR ld/10433 - * elflink.c (elf_link_output_extsym): Special case ifunc syms - when ref_regular, not def_regular. - -2009-07-21 H.J. Lu + * coffcode.h (coff_slurp_symbol_table): Silently discard C_NULL + entry on xcoff when value is C_NULL_VALUE. - PR ld/10426 - * elflink.c (elf_link_add_object_symbols): Turn an IFUNC symbol - from a DSO into a normal FUNC symbol. - (elf_link_output_extsym): Turn an undefined IFUNC symbol into - a normal FUNC symbol. +2011-03-31 Tristan Gingold -2009-07-17 Chao-ying Fu - - * elfxx-mips.c (LOAD_INTERLOCKS_P): New define. - (_bfd_mips_elf_size_dynamic_sections): For CPUs without load - interlocking, the last PLT entry needs a nop in the branch delay slot. - (_bfd_mips_elf_finish_dynamic_symbol): For CPUs with load itnerlocking, - output the last two PLT entries in reverse order. - -2009-07-16 H.J. Lu - - * elf32-i386.c (elf_i386_relocate_section): Don't get local - STT_GNU_IFUNC symbol for relocatable link. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - -2009-07-10 H.J. Lu - - * bfdio.c (bfd_iovec): Add comments for bmmap. - * bfd-in2.h: Regenerated. - -2009-07-10 H.J. Lu - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerated. - -2009-07-10 Doug Kwan + * libcoff-in.h (exec_hdr): Remove. + * libcoff.h: Regenerate. - * elf32-arm.c (stub_hash_newfunc): Initialize fields - target_addend and orig_insn. +2011-03-30 Nick Clifton -2009-07-10 Tom Tromey + * po/da.po: Updated Danish translation. - * Makefile.am (dwarf2.lo): Use dwarf2.h, not elf/dwarf2.h. - (elf-eh-frame.lo): Likewise. - (elf32-bfin.lo): Likewise. - (elf32-frv.lo): Likewise. - (elf32-xc16x.lo): Likewise. - * Makefile.in: Rebuild. - * dwarf2.c: Included dwarf.h, not elf/dwarf2.h. - * elf-eh-frame.c: Likewise. - * elf32-bfin.c: Likewise. - * elf32-frv.c: Likewise. - * elf32-xc16x.c: Likewise. +2011-03-29 Richard Henderson -2009-07-10 Julian Brown + * elf64-alpha.c (elf64_alpha_gc_mark_hook): New. + (elf64_alpha_gc_sweep_hook): New. + (elf_backend_gc_mark_hook, elf_backend_gc_sweep_hook): New. + (elf_backend_can_gc_sections): New. + +2011-03-26 John Marino + + * config.bfd: Add x86_64-*-dragonfly*, fix i386-*-dragonfly*. + * configure.in: Delete unused bfd_elf32_i386_dragonfly_vec. + * configure: Regenerate. + +2011-03-25 Michael Snyder + + * coffcode.h (coff_set_alignment_hook): Check return of bfd_seek. + +2011-03-25 Tristan Gingold + + * vms-alpha.c (_bfd_vms_find_nearest_dst_line): Allow the use + of find_nearest_line on object files. + +2011-03-25 Tristan Gingold + + * vms-alpha.c (evax_section_flags): Make $CODE$ section read-only. + Minor reordering. + (alpha_vms_create_eisd_for_section): Make code sections read-only. + +2011-03-24 Alan Modra + + * elf32-ppc.c (ppc_elf_tls_optimize): Catch more cases where + old-style __tls_get_addr calls without marker relocs don't match + their arg setup insn one for one. If such mismatches are found + report the reloc and don't do any tls optimization. + * elf64-ppc.c (ppc64_elf_tls_optimize): Likewise. + +2011-03-22 Eric B. Weddington + + * bfd-in2.h: Regenerate. + +2011-03-22 Eric B. Weddington + + * archures.c: Add AVR XMEGA architecture information. + * cpu-avr.c (arch_info_struct): Likewise. + * elf32-avr.c (bfd_elf_avr_final_write_processing): Likewise. + (elf32_avr_object_p): Likewise. + +2011-03-14 Richard Sandiford + + * reloc.c (BFD_RELOC_ARM_IRELATIVE): New relocation. + * bfd-in2.h: Regenerate. + * elf32-arm.c (elf32_arm_howto_table_2): Rename existing definition + to elf32_arm_howto_table_3 and replace with a single R_ARM_IRELATIVE + entry. + (elf32_arm_howto_from_type): Update accordingly. + (elf32_arm_reloc_map): Map BFD_RELOC_ARM_IRELATIVE to R_ARM_IRELATIVE. + (elf32_arm_reloc_name_lookup): Handle elf32_arm_howto_table_3. + (arm_plt_info): New structure, split out from elf32_arm_link_hash_entry + with an extra noncall_refcount field. + (arm_local_iplt_info): New structure. + (elf_arm_obj_tdata): Add local_iplt. + (elf32_arm_local_iplt): New accessor macro. + (elf32_arm_link_hash_entry): Replace plt_thumb_refcount, + plt_maybe_thumb_refcount and plt_got_offset with an arm_plt_info. + Change tls_type to a bitfield and add is_iplt. + (elf32_arm_link_hash_newfunc): Update accordingly. + (elf32_arm_allocate_local_sym_info): New function. + (elf32_arm_create_local_iplt): Likewise. + (elf32_arm_get_plt_info): Likewise. + (elf32_arm_plt_needs_thumb_stub_p): Likewise. + (elf32_arm_get_local_dynreloc_list): Likewise. + (create_ifunc_sections): Likewise. + (elf32_arm_copy_indirect_symbol): Update after the changes to + elf32_arm_link_hash_entry. Assert the is_iplt has not yet been set. + (arm_type_of_stub): Add an st_type argument. Use elf32_arm_get_plt_info + to get PLT information. Assert that all STT_GNU_IFUNC references + are turned into PLT references. + (arm_build_one_stub): Pass the symbol type to + elf32_arm_final_link_relocate. + (elf32_arm_size_stubs): Pass the symbol type to arm_type_of_stub. + (elf32_arm_allocate_irelocs): New function. + (elf32_arm_add_dynreloc): In static objects, use .rel.iplt for + all R_ARM_IRELATIVE. + (elf32_arm_allocate_plt_entry): New function. + (elf32_arm_populate_plt_entry): Likewise. + (elf32_arm_final_link_relocate): Add an st_type parameter. + Set srelgot to null for static objects. Use separate variables + to record which st_value and st_type should be used when generating + a dynamic relocation. Use elf32_arm_get_plt_info to find the + symbol's PLT information, setting has_iplt_entry, splt, + plt_offset and gotplt_offset accordingly. Check whether + STT_GNU_IFUNC symbols should resolve to an .iplt entry, and change + the relocation target accordingly. Broaden assert to include + .iplts. Don't set sreloc for static relocations. Assert that + we only generate dynamic R_ARM_RELATIVE relocations for R_ARM_ABS32 + and R_ARM_ABS32_NOI. Generate R_ARM_IRELATIVE relocations instead + of R_ARM_RELATIVE relocations if the target is an STT_GNU_IFUNC + symbol. Pass the symbol type to arm_type_of_stub. Conditionally + resolve GOT references to the .igot.plt entry. + (elf32_arm_relocate_section): Update the call to + elf32_arm_final_link_relocate. + (elf32_arm_gc_sweep_hook): Use elf32_arm_get_plt_info to get PLT + information. Treat R_ARM_REL32 and R_ARM_REL32_NOI as call + relocations in shared libraries and relocatable executables. + Count non-call PLT references. Use elf32_arm_get_local_dynreloc_list + to get the list of dynamic relocations for a local symbol. + (elf32_arm_check_relocs): Always create ifunc sections. Set isym + at the same time as setting h. Use elf32_arm_allocate_local_sym_info + to allocate local symbol information. Treat R_ARM_REL32 and + R_ARM_REL32_NOI as call relocations in shared libraries and + relocatable executables. Record PLT information for local + STT_GNU_IFUNC functions as well as global functions. Count + non-call PLT references. Use elf32_arm_get_local_dynreloc_list + to get the list of dynamic relocations for a local symbol. + (elf32_arm_adjust_dynamic_symbol): Handle STT_GNU_IFUNC symbols. + Don't remove STT_GNU_IFUNC PLTs unless all references have been + removed. Update after the changes to elf32_arm_link_hash_entry. + (allocate_dynrelocs_for_symbol): Decide whether STT_GNU_IFUNC PLT + entries should live in .plt or .iplt. Check whether the .igot.plt + and .got entries can be combined. Use elf32_arm_allocate_plt_entry + to allocate .plt and .(i)got.plt entries. Detect which .got + entries will need R_ARM_IRELATIVE relocations and use + elf32_arm_allocate_irelocs to allocate them. Likewise other + non-.got dynamic relocations. + (elf32_arm_size_dynamic_sections): Allocate .iplt, .igot.plt + and dynamic relocations for local STT_GNU_IFUNC symbols. + Check whether the .igot.plt and .got entries can be combined. + Detect which .got entries will need R_ARM_IRELATIVE relocations + and use elf32_arm_allocate_irelocs to allocate them. Use stashed + section pointers intead of strcmp checks. Handle iplt and igotplt. + (elf32_arm_finish_dynamic_symbol): Use elf32_arm_populate_plt_entry + to fill in .plt, .got.plt and .rel(a).plt entries. Point + STT_GNU_IFUNC symbols at an .iplt entry if non-call relocations + resolve to it. + (elf32_arm_output_plt_map_1): New function, split out from + elf32_arm_output_plt_map. Handle .iplt entries. Use + elf32_arm_plt_needs_thumb_stub_p. + (elf32_arm_output_plt_map): Call it. + (elf32_arm_output_arch_local_syms): Add mapping symbols for + local .iplt entries. + (elf32_arm_swap_symbol_in): Handle Thumb STT_GNU_IFUNC symbols. + (elf32_arm_swap_symbol_out): Likewise. + (elf32_arm_add_symbol_hook): New function. + (elf_backend_add_symbol_hook): Define for all targets. + +2011-03-14 Richard Sandiford + + * elf-bfd.h (elf_link_hash_entry): Add target_internal. + * elf.c (swap_out_syms): Set st_target_internal for each + Elf_Internal_Sym. + * elfcode.h (elf_swap_symbol_in): Likewise. + * elf32-i370.c (i370_elf_finish_dynamic_sections): Likewise. + * elf32-sh-symbian.c (sh_symbian_relocate_section): Likewise. + * elf64-sparc.c (elf64_sparc_output_arch_syms): Likewise. + * elfxx-sparc.c (_bfd_sparc_elf_size_dynamic_sections): Likewise. + * elflink.c (elf_link_output_extsym): Likewise. + (bfd_elf_final_link): Likewise. + (elf_link_add_object_symbols): Copy st_target_internal + to the hash table if we see a definition. + (_bfd_elf_copy_link_hash_symbol_type): Copy target_internal. + * elf32-arm.c (elf32_arm_stub_hash_entry): Replace st_type with + a branch_type field. + (a8_erratum_fix, a8_erratum_reloc): Likewise. + (arm_type_of_stub): Replace actual_st_type with an + actual_branch_type parameter. + (arm_build_one_stub): Use branch types rather than st_types to + determine the type of branch. + (cortex_a8_erratum_scan): Likewise. + (elf32_arm_size_stubs): Likewise. + (bfd_elf32_arm_process_before_allocation): Likewise. + (allocate_dynrelocs_for_symbol): Likewise. + (elf32_arm_finish_dynamic_sections): Likewise. + (elf32_arm_final_link_relocate): Replace sym_flags parameter with + a branch_type parameter. + (elf32_arm_relocate_section): Update call accordingly. + (elf32_arm_adjust_dynamic_symbol): Don't check STT_ARM_TFUNC. + (elf32_arm_output_map_sym): Initialize st_target_internal. + (elf32_arm_output_stub_sym): Likewise. + (elf32_arm_symbol_processing): Delete. + (elf32_arm_swap_symbol_in): Convert STT_ARM_TFUNCs into STT_FUNCs. + Use st_target_internal to record the branch type. + (elf32_arm_swap_symbol_out): Use st_target_internal to test for + Thumb functions. + (elf32_arm_is_function_type): Delete. + (elf_backend_symbol_processing): Likewise. + (elf_backend_is_function_type): Likewise. - * elf32-arm.c (arm_build_one_stub): Use the hash entry of the - symbol a stub entry is derived from, not the entry for the stub - itself, in call to elf32_arm_final_link_relocate. - -2009-07-10 H.J. Lu - - * elf.c (_bfd_elf_get_synthetic_symtab): Remove leading zeros - when reporting addends. - -2009-07-10 Alan Modra - - * elf32-spu.c (spu_elf_size_stubs): Do set up soft-icache manager - data even when no stubs. - (spu_elf_place_overlay_data, spu_elf_build_stubs): Adjust. - -2009-07-10 Alan Modra - - * elf32-ppc.c (ppc_elf_howto_raw): Add R_PPC_IRELATIVE. - (ppc_elf_get_synthetic_symtab): Report addend. - (PLT_IFUNC): Define. - (struct ppc_elf_link_hash_table): Add iplt and reliplt. - (ppc_elf_create_glink): New function. - (ppc_elf_create_dynamic_sections): Use it. - (ppc_elf_add_symbol_hook): Set has_ifunc_symbols. - (update_local_sym_info): Allocate space for local_plt array. - Don't bump local_got_refcounts for PLT_IFUNC. Return local_plt - entry pointer. - (is_branch_reloc): New function. - (ppc_elf_check_relocs): Handle STT_GNU_IFUNC symbols. - (ppc_elf_gc_sweep_hook): Likewise. - (ppc_elf_adjust_dynamic_symbol): Likewise. - (allocate_dynrelocs): Likewise. - (ppc_elf_size_dynamic_sections): Likewise. - (ppc_elf_relocate_section): Likewise. - (branch_reloc_hash_match): Use is_branch_reloc. - (ppc_elf_tls_optimize): Adjust for local_plt. - (write_glink_stub): New function, extracted from.. - (ppc_elf_finish_dynamic_symbol): ..here. Handle STT_GNU_IFUNC. - (ppc_elf_finish_dynamic_sections): Only write plt resolver and - branch table when dynamic. - (elf_backend_post_process_headers): Define. - * elf64-ppc.c (elf_backend_post_process_headers): Define. - (ppc64_elf_howto_raw): Add R_PPC64_IRELATIVE. - (ppc64_elf_get_synthetic_symtab): Report addend. - (struct ppc_stub_hash_entry): Add plt_ent. - (PLT_IFUNC): Define. - (struct ppc_link_hash_table): Add iplt and reliplt. - (create_linkage_sections): Make .iplt and .rela.iplt sections. - (ppc64_elf_add_symbol_hook): Set has_ifunc_symbols. - (update_local_sym_info): Allocate space for local_plt array. - Don't bump local_got_ents for PLT_IFUNC. Return local_plt - entry pointer. - (update_plt_info): Pass pointer to plt_entry rather than sym hash, - and don't change hash flags here. - (is_branch_reloc): New function. - (ppc64_elf_check_relocs): Handle STT_GNU_IFUNC. - (ppc64_elf_gc_sweep_hook): Likewise. - (ppc64_elf_adjust_dynamic_symbol): Likewise. - (allocate_dynrelocs): Likewise. - (ppc64_elf_size_dynamic_sections): Likewise. - (ppc_build_one_stub, ppc_size_one_stub): Likewise. - (ppc64_elf_size_stubs): Likewise. - (ppc64_elf_relocate_section): Likewise. - (get_sym_h): Adjust for local_plt. - (branch_reloc_hash_match): Use is_branch_reloc. - (ppc_type_of_stub): Pass plt_entry pointer and handle ifunc. - (ppc64_elf_toc): Ignore SEC_EXCLUDE sections. - -2009-07-10 Alan Modra - - * elf.c (_bfd_elf_get_synthetic_symtab): Report addends. - -2009-07-10 Alan Modra - - * elf-bfd.h (struct elf_link_hash_entry): Clarify ref_regular - and ref_regular_nonweak comment. - * elflink.c (elf_link_output_extsym): Special case ifunc syms - when def_regular, not ref_regular. - (elf_link_add_object_symbols): Don't set needs_plt on ifunc syms,.. - * elf32-i386.c (elf_i386_check_relocs): ..set it here instead.. - * elf64-x86-64.c (elf64_x86_64_check_relocs): ..and here. - -2009-07-09 Alan Modra - - * elf32-spu.c (mark_functions_via_relocs): Init broken_cycle field - of malloc'd struct call_info. - (pasted_function): Likewise, priority too. - -2009-07-07 Alan Modra - - * elf32-spu.c (spu_elf_auto_overlay): Take into account section - alignment when packing sections into overlays. - -2009-07-03 Cary Coutant - - * dwarf2.c (decode_line_info): Ignore DW_LNE_set_discriminator. - -2009-07-03 Dave Korn - - * coffcode.h (sec_to_styp_flags): Partially revert (functional - changes only) earlier patch:- - - 2009-06-25 Kai Tietz - - * coffcode.h (sec_to_styp_flags): Set discardable for .reloc and - give .debug and .reloc data characteristics. - (DOT_RELOC): New define for .reloc section string. - (coff_write_object_contents): Use DOT_RELOC instead of string. - -2009-07-02 Tom Tromey - - * aoutx.h (aout_get_external_symbols): Declare 'amt' locally. - * bfdwin.c (bfd_free_window): Cast to unsigned long. - -2009-07-01 Nick Clifton - - * elf-m10300.c: Remove trailing white space. - * reloc.c: Likewise. - -2009-07-01 Douglas B Rupp - - * bfd.m4 (BFD_HAVE_TIME_TYPE_MEMBER, - BFD_HAVE_SYS_STAT_TYPE_MEMBER): New config functions. - * configure.in: Use them. - * configure: Regenerate. - * config.in: Regenerate. - * vmsutil.c: Include sysdep.h, remove ansidecl.h. - #define _BSD_SOURCE. Add comments. - (vms_file_stats_name): Calculate creation date based on available - runtime data. Return 1 for version instead of 0. - -2009-07-01 Nick Clifton - - PR 10072 - * elf32-arm.c (elf32_arm_final_link_relocate): Add code to handle - to R_ARM_THM_PC8 relocation. - -2009-06-29 Nick Clifton - - * elf-m10300.c (mn10300_elf_relax_section): Allow for the - different uses of the relocations addend when a symbol is in a - merged section. - -2009-06-27 H.J. Lu - - PR ld/10337 - * elf.c (bfd_section_from_shdr): Don't change sh_link for - SHT_REL/SHT_RELA sections on executable nor shared library. - Treat SHT_REL/SHT_RELA sections with sh_link set to SHN_UNDEF - as a normal section. - -2009-06-25 Nick Clifton - - * elf-m10300.c (mn10300_elf_relax_section): Handle non-section - symbols with SEC_MERGE flag. - -2009-06-25 Kai Tietz - - * coffcode.h (sec_to_styp_flags): Set discardable for .reloc and - give .debug and .reloc data characteristics. - (DOT_RELOC): New define for .reloc section string. - (coff_write_object_contents): Use DOT_RELOC instead of string. - -2009-06-25 Tristan Gingold - - * mach-o-target.c (bfd_mach_o_get_dynamic_symtab_upper_bound) - (bfd_mach_o_canonicalize_dynamic_symtab) - (bfd_mach_o_get_synthetic_symtab): Defines. - (TARGET_NAME_BACKEND): Add bfd_mach_o_print_thread entry. - (TARGET_NAME): Use Mach-O specific functions for dynamic. - - * mach-o-i386.c (bfd_mach_o_i386_swap_reloc_in): Fix howto indexes - for scattered relocations. - (bfd_mach_o_i386_print_thread): New function. - (bfd_mach_o_print_thread): Define. - - * mach-o.c (text_section_names_xlat): Add an entry for __const. - (bfd_mach_o_canonicalize_one_reloc, bfd_mach_o_canonicalize_relocs): - New functions extracted from ... - (bfd_mach_o_canonicalize_reloc): ... This. Simplified. - (bfd_mach_o_get_dynamic_reloc_upper_bound): New function. - (bfd_mach_o_canonicalize_dynamic_reloc): New function. - (bfd_mach_o_i386_flavour_string): Adjusted after enum renaming. - (bfd_mach_o_ppc_flavour_string): Reindentation. Add 64 bits cases. - (bfd_mach_o_scan_read_dylinker): Do not create a section anymore. - Set name_str field. - (bfd_mach_o_scan_read_dylib): Ditto. - (bfd_mach_o_scan_read_thread): Set mdata at declaration. Add comments, - reindent. - (bfd_mach_o_scan_read_dysymtab): Set mdata at declaration. Correctly - decode isym and flags on little endian targets. Set dysymtab field. - (bfd_mach_o_scan_start_address): Adjust for enum names. - (bfd_mach_o_lookup_section): Do not look for segments anymore. - (bfd_mach_o_print_section): Display bfd section name. - (bfd_mach_o_print_segment): Display none if no name. - (bfd_mach_o_print_dysymtab): Display next index for local, external - and undefined symbols. - (bfd_mach_o_bfd_print_private_bfd_data): Adjust code by using name_str. - Display dylinker name. Display thread and unixthread commands content. - (bfd_mach_o_print_thread): New macro. - - * mach-o.h (bfd_mach_o_mach_header_magic): Align numbers. - (bfd_mach_o_ppc_thread_flavour): Ditto. - (bfd_mach_o_i386_thread_flavour): Ditto. - (BFD_MACH_O_PPC_THREAD_STATE_NONE): New enum. - (BFD_MACH_O_x86_THREAD_STATE_NONE): Replaces - BFD_MACH_O_THREAD_STATE_NONE. - (bfd_mach_o_segment_command): Remove segment field. - (bfd_mach_o_thread_flavour): Field offset is now unsigned long. - (bfd_mach_o_dylinker_command): Remove section field, add name_str. - (bfd_mach_o_prebound_dylib_command): Ditto. - (bfd_mach_o_dylib_command): Ditto. - (bfd_mach_o_prebound_dylib_command): Remove section field. - (mach_o_data_struct): Add dysymtab field. - (bfd_mach_o_backend_data): Add _bfd_mach_o_print_thread field. - (bfd_mach_o_get_reloc_upper_bound, bfd_mach_o_canonicalize_reloc) - (bfd_mach_o_build_commands): Remove parameter names and attributes. - (bfd_mach_o_get_dynamic_reloc_upper_bound) - (bfd_mach_o_canonicalize_dynamic_reloc): New prototypes. - -2009-06-25 Rafael Avila de Espindola - - * plugin.c (load_plugin): Use stat and S_ISREG instead of the d_type - field of struct dirent. - -2009-06-23 Tristan Gingold - - * vms.c (vms_get_synthetic_symtab): Remove duplicate definition - of this macro. Fix indentation. - -2009-06-22 Christophe Lyon - - * elf32-arm.c (elf32_arm_size_stubs): Use PLT address as - destination for defined dynamic symbols when deciding whether to - insert a stub or not. - (allocate_dynrelocs): Make sure functions are not marked as Thumb - when actually accessed through a PLT, even when generating a - shared lib. - -2009-06-22 Tristan Gingold - - * mach-o.c (bfd_mach_o_canonicalize_reloc): Append a sentinel to - the relocs array. - -2009-06-22 Alan Modra - - * elf32-ppc.c (ppc_elf_check_relocs): Handle R_PPC_RELAX* in switch. - * elf32-v850.c (v850_elf_relocate_section): Warning fix. - -2009-06-22 Alan Modra - - * elf64-ppc.c (ppc64_elf_edit_opd): Avoid gcc warning. - -2009-06-19 H.J. Lu - - * elflink.c (elf_link_add_object_symbols): Avoid warning - from -Wjump-misses-init in gcc 4.5.0. - -2009-06-19 H.J. Lu - - * elf32-i386.c (elf_i386_check_relocs): Properly check local - symbol on error. - * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. - -2009-06-19 H.J. Lu - - * elf32-i386.c (elf_i386_tls_transition): Add a parameter, - r_symndx. Report local symbol name on error. - (elf_i386_check_relocs): Updated. Report local symbol name on - error. - (elf_i386_gc_sweep_hook): Updated. - (elf_i386_relocate_section): Likewise. +2011-03-14 Richard Sandiford - * elf64-x86-64.c (elf64_x86_64_tls_transition): Add a parameter, - r_symndx. Report local symbol name on error. - (elf64_x86_64_check_relocs): Updated. Report local symbol name - on error. - (elf64_x86_64_gc_sweep_hook): Updated. - (elf64_x86_64_relocate_section): Likewise. - -2009-06-19 Tristan Gingold - - * mach-o.c (bfd_mach_o_print_private_header): Fix format character. - -2009-06-19 Tristan Gingold - - * mach-o.c (bfd_mach_o_scan_read_symtab_symbols): Add prototype. - (bfd_mach_o_version): Use bfd_mach_o_get_data instead of direct access. - (bfd_mach_o_valid): Ditto. - (bfd_mach_o_wide_p): Ditto. - (bfd_mach_o_canonicalize_reloc): Ditto. - (bfd_mach_o_build_commands): Ditto. - (bfd_mach_o_scan_read_thread): Ditto. - (bfd_mach_o_flatten_sections): Ditto. - (bfd_mach_o_scan_start_address): Ditto. - (bfd_mach_o_lookup_section): Ditto. - (bfd_mach_o_core_fetch_environment): Ditto. - (bfd_mach_o_write_contents): Ditto. Handle reexport_dylib. - (bfd_mach_o_scan_write_relocs): Adjust for bfd_mach_o_get_data. - (bfd_mach_o_scan_write_symtab): Ditto. - Use macros instead of hard-coded values. - (bfd_mach_o_scan_read_symtab_symbol): Make the function static. - Use bfd_mach_o_get_data instead of direct access. Use macros - instead of hard-coded values. - (bfd_mach_o_scan_read_symtab_strtab): Make the function static. - Remove sym argument and get section from mdata. - Move code into the else branch. - (bfd_mach_o_scan_read_symtab_symbols): Make the function static. - Remove sym argument and get section from mdata. Adjust code. - (bfd_mach_o_scan_read_dylib): Move assertion into the created - switch (which replaces consecutive if statements). - (bfd_mach_o_scan_read_dysymtab): Rename seg to cmd. Load - module table, table of content, indirect symbols and external - referenced symbols. - (bfd_mach_o_scan_read_symtab): Renames seg to symtab. Set symtab - field. - (bfd_mach_o_scan_read_linkedit): New function. - (bfd_mach_o_scan_read_str): Ditto. - (bfd_mach_o_count_symbols): Simplify the code by using the symtab - field of mdata. - (bfd_mach_o_get_symtab_upper_bound): Remove check as - bfd_mach_o_count_symbols never returns an error. - (bfd_mach_o_canonicalize_symtab): Simplify the code by using the - symtab field (there might be only one symtab). - (bfd_mach_o_scan_read_command): Handle reexported dylib. - Handle sub frameworks, sub umbrella, sub library and sub client. - Read code signature and segment split info commands. - (bfd_mach_o_scan): Reindent. - (bfd_mach_o_xlat_name): New type. - (bfd_mach_o_print_flags): New function. - (bfd_mach_o_get_name): Ditto. - (bfd_mach_o_cpu_name): New variable. - (bfd_mach_o_filetype_name, bfd_mach_o_header_flags_name) - (bfd_mach_o_section_type_name) - (bfd_mach_o_section_attribute_name) - (bfd_mach_o_load_command_name): New variables. - (bfd_mach_o_print_private_header): New function. - (bfd_mach_o_print_section_map): New function extracted from - bfd_mach_o_print_private_bfd_data. - (bfd_mach_o_print_section): Ditto. Print more infos. - (bfd_mach_o_print_segment): Ditto. - (bfd_mach_o_print_dysymtab): Ditto. - (bfd_mach_o_bfd_print_private_bfd_data): Reworked. Handle - load weak dylib, reexport dylib and id dylib. - Handle code signature and segment_split info. - Handle sub frameworks, sub umbrella, sub library and sub client. - (bfd_mach_o_section_get_nbr_indirect): New function. - - * mach-o.h (BFD_MACH_O_REFERENCE_MASK): New macro. Add comment. - (bfd_mach_o_header_flags): New enum to define header flags. - (bfd_mach_o_section_attribute): New enum to replace ... - (BFD_MACH_O_S_ATTR_LOC_RELOC, BFD_MACH_O_S_ATTR_EXT_RELOC, - BFD_MACH_O_S_ATTR_SOME_INSTRUCTIONS, BFD_MACH_O_S_ATTR_DEBUG, - BFD_MACH_O_S_SELF_MODIFYING_CODE, BFD_MACH_O_S_ATTR_LIVE_SUPPORT, - BFD_MACH_O_S_ATTR_NO_DEAD_STRIP, BFD_MACH_O_S_ATTR_STRIP_STATIC_SYMS, - BFD_MACH_O_S_ATTR_NO_TOC, BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS): ... - these removed macros. - (BFD_MACH_O_NLIST_SIZE, BFD_MACH_O_NLIST_64_SIZE): New macros. - (bfd_mach_o_dylib_module): New type. - (BFD_MACH_O_DYLIB_MODULE_SIZE, BFD_MACH_O_DYLIB_MODULE_64_SIZE): New - macros. - (bfd_mach_o_dylib_table_of_content): New type. - (BFD_MACH_O_TABLE_OF_CONTENT_SIZE): New macro. - (bfd_mach_o_dylib_reference): New type. - (BFD_MACH_O_REFERENCE_SIZE): New macro. - (bfd_mach_o_dysymtab_command): Add fields for loaded and decoded - modules, toc, references and indirect syms. - (BFD_MACH_O_INDIRECT_SYMBOL_SIZE): New macro. - (bfd_mach_o_dylinker_command): Remove cmd and cmdsize fields (were - unused). Add comment. - (bfd_mach_o_dylib_command): Ditto. - (bfd_mach_o_prebound_dylib_command): Ditto. - (bfd_mach_o_linkedit_command): New type. - (bfd_mach_o_str_command): New type. - (bfd_mach_o_load_command): Add linkedit and str fields. - (mach_o_data_struct): Add symtab field. - (bfd_get_mach_o_data): Renamed to ... - (bfd_mach_o_get_data): ... this new macro. - (bfd_mach_o_scan_read_symtab_symbol, - bfd_mach_o_scan_read_symtab_strtab, - bfd_mach_o_scan_read_symtab_symbols): Prototypes removed. - - * mach-o-i386.c (bfd_mach_o_i386_mkobject): Use bfd_mach_o_get_data - instead of direct access. - -2009-06-19 Alan Modra - - * elf32-ppc.c (ppc_elf_check_relocs): Allow local symbols for - R_PPC_PLTREL24 relocs. - (ppc_elf_relocate_section): Likewise. - -2009-06-19 Alan Modra - - * elf32-ppc.c (find_plt_ent): Pass pointer to plist rather than - pointer to sym hash. Update all uses. - (update_plt_info): Likewise. Don't check addend here. - -2009-06-18 H.J. Lu - - * elf32-i386.c (elf_i386_check_relocs): Remove isymbuf and use - bfd_sym_from_r_symndx. - * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. - -2009-06-18 Alan Modra - - * elf-bfd.h (struct sym_sec_cache): Delete. - (struct sym_cache): New. - (bfd_section_from_r_symndx): Delete prototype. - (bfd_sym_from_r_symndx): Define prototype. - * elf.c (bfd_section_from_r_symndx): Delete, replace with.. - (bfd_sym_from_r_symndx): ..new function. - * elf32-arm.c: Update all uses of struct sym_sec_cache and - bfd_section_from_r_symndx to new struct and function. - * elf32-bfin.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-m32r.c: Likewise. - * elf32-m68hc1x.c: Likewise. - * elf32-m68hc1x.h: Likewise. - * elf32-m68k.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-sh.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-x86-64.c: Likewise. - * elfxx-sparc.c: Likewise. - * elfxx-sparc.h: Likewise. + * elf32-arm.c (elf32_arm_check_relocs): Always assign a dynobj. + (elf32_arm_finish_dynamic_sections): Move sgot != NULL assertion + into the PLT block. -2009-06-18 H.J. Lu +2011-03-14 Richard Sandiford - * elf32-i386.c (elf_i386_check_relocs): Cache or free isymbuf. - * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. + * elf32-arm.c (elf32_arm_check_relocs): Use call_reloc_p, + may_need_local_target_p and may_become_dynamic_p to classify + the relocation type. Don't check info->symbolic or h->def_regular + when deciding whether to record a potential dynamic reloc. + Don't treat potential dynamic relocs as PLT references. + (elf32_arm_gc_sweep_hook): Update to match. Assert that we don't + try to make the PLT reference count go negative. -2009-06-18 Nick Clifton +2011-03-14 Richard Sandiford - * elflink.c (elf_link_sort_relocs): Return early if there are no - relocs to sort. + * elf32-arm.c (elf32_arm_final_link_relocate): Always fill in the + GOT entry here, rather than leaving it to finish_dynamic_symbol. + Only create a dynamic relocation for local references if + info->shared. + (allocate_dynrelocs_for_symbol): Update dynamic relocation + allocation accordingly. + (elf32_arm_finish_dynamic_symbol): Don't initialise the GOT entry here. -2009-06-18 Dave Korn +2011-03-14 Richard Sandiford - Merge cegcc and mingw32ce target name changes from - CeGCC project: + * elf32-arm.c (elf32_arm_allocate_dynrelocs): New function. + (elf32_arm_add_dynreloc): Likewise. + (elf32_arm_adjust_dynamic_symbol): Use elf32_arm_allocate_dynrelocs + to allocate dynamic relocations. + (elf32_arm_size_dynamic_sections): Likewise. + (allocate_dynrelocs): Likewise. Rename to + allocate_dynrelocs_for_symbol. + (elf32_arm_final_link_relocate): Use elf32_arm_add_dynreloc to + create dynamic relocations. + (elf32_arm_finish_dynamic_symbol): Likewise. - 2007-12-25 Pedro Alves +2011-03-12 H.J. Lu - * config.bfd: Add arm*-*-cegcc* target. + * elf64-x86-64.c (elf_x86_64_check_tls_transition): Supprt TLS + x32 GD->IE and GD->LE transitions. + (elf_x86_64_relocate_section): Supprt TLS x32 GD->IE, GD->LE + and LD->LE transitions. - 2007-12-17 Pedro Alves +2011-03-10 Alan Modra - * config.bfd: Add arm-*-mingw32ce* target. + * elf64-ppc.c (ppc64_elf_relocate_section): Provide section/offset + for LO_DS error message and correct multiple. -2009-06-17 H.J. Lu +2011-03-10 Alan Modra - * elf-bfd.h (_bfd_elf_allocate_ifunc_dyn_relocs): New. - * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Likewise. - * elf32-i386.c (elf_i386_allocate_dynrelocs): Use it. - * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Likewise. + * elf64-ppc.c (bfd_elf64_bfd_link_just_syms): Define. + (ppc64_elf_link_just_syms): New function. + (opd_entry_value): Don't assume big-endian host. + (get_r2off): New function. + (ppc_build_one_stub, ppc_size_one_stub): Use it here. -2009-06-17 H.J. Lu +2011-03-06 Michael Snyder - * elf-bfd.h (_bfd_elf_create_ifunc_dyn_reloc): New. - * elf-ifunc.c (_bfd_elf_create_ifunc_dyn_reloc): Likewise. - * elf32-i386.c (elf_i386_check_relocs): Use it. - * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. + * compress.c (bfd_compress_section_contents): Check for out of mem. -2009-06-17 H.J. Lu + * elf64-x86-64.c (elf_x86_64_relocate_section): Document + that case statement falls through intentionally. - * elf-bfd.h (elf_dyn_relocs): New. + * elf32-i386.c (elf_i386_relocate_section): Document fall through. - * elf32-i386.c (elf_i386_dyn_relocs): Removed. - (elf_i386_link_hash_entry): Replace elf_i386_dyn_relocs with - elf_dyn_relocs. - (elf_i386_copy_indirect_symbol): Likewise. - (elf_i386_check_relocs): Likewise. - (elf_i386_gc_sweep_hook): Likewise. - (elf_i386_allocate_dynrelocs): Likewise. - (elf_i386_readonly_dynrelocs): Likewise. - (elf_i386_size_dynamic_sections): Likewise. +2011-03-04 Alan Modra - * elf64-x86-64.c (elf64_x86_64_dyn_relocs): Removed. - (elf64_x86_64_link_hash_entry): Replace elf64_x86_64_dyn_relocs - with elf_dyn_relocs. - (elf64_x86_64_copy_indirect_symbol): Updated. - (elf64_x86_64_check_relocs): Likewise. - (elf64_x86_64_gc_sweep_hook): Likewise. - (elf64_x86_64_adjust_dynamic_symbol): Likewise. - (elf64_x86_64_allocate_dynrelocs): Likewise. - (elf64_x86_64_readonly_dynrelocs): Likewise. - (elf64_x86_64_size_dynamic_sections): Likewise. + * archive.c (bsd_write_armap): Don't call stat in deterministic + mode, and don't use st_mtime if stat returns error. -2009-06-17 H.J. Lu +2011-03-03 Michael Snyder - * elf32-arm.c (create_got_section): Get existing .rela.got - section. - * elf32-hppa.c (elf32_hppa_create_dynamic_sections): Likewise. - * elf32-lm32.c (create_got_section): Likewise. - * elf32-m32r.c (create_got_section): Likewise. - * elf32-ppc.c (ppc_elf_create_got): Likewise. - * elf32-s390.c (create_got_section): Likewise. - * elf32-sh.c (create_got_section): Likewise. - * elf32-xtensa.c (elf_xtensa_create_dynamic_sections): Likewise. - * elf64-s390.c (create_got_section): Likewise. - * elfxx-sparc.c (create_got_section): Likewise. + * elf64-x86-64.c (elf_x86_64_relocate_section): Remove dead code. - * elflink.c (_bfd_elf_create_got_section): Properly initialize - the GOT size. + * coff-x86_64.c (coff_amd64_rtype_to_howto): Fencepost error. -2009-06-16 H.J. Lu + * aoutx.h (aout_final_link): Use sizeof int not sizeof int*. + (aout_link_write_other_symbol): Missing break statement. - * elf-bfd.h (ELF_LOCAL_SYMBOL_HASH): New. + * dwarf2.c (scan_unit_for_symbols): Stop memory leak. - * elf32-i386.c (elf_i386_local_hash): Removed. - (elf_i386_local_htab_hash): Use ELF_LOCAL_SYMBOL_HASH. - (elf_i386_get_local_sym_hash): Likewise. + * archive.c (_bfd_slurp_extended_name_table): Fail if bfd_seek fails. - * elf64-x86-64.c (elf64_x86_64_local_hash): Removed. - (elf64_x86_64_local_htab_hash): Use ELF_LOCAL_SYMBOL_HASH. - (elf64_x86_64_get_local_sym_hash): Likewise. - * elfxx-ia64.c (elfNN_ia64_local_htab_hash): Likewise. - (get_local_sym_hash): Likewise. +2011-03-03 H.J. Lu -2009-06-16 H.J. Lu + * elf64-x86-64.c (elf_x86_64_check_tls_transition): Supprt TLS + x32 IE->LE transition. + (elf_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_link_hash_table): Remove got_sec, - rel_got_sec and plt_sec. - (elfNN_ia64_relax_section): Updated. - (elfNN_ia64_create_dynamic_sections): Likewise. - (get_got): Likewise. - (allocate_dynrel_entries): Likewise. - (elfNN_ia64_size_dynamic_sections): Likewise. - (set_got_entry): Likewise. - (elfNN_ia64_choose_gp): Likewise. - (elfNN_ia64_relocate_section): Likewise. - (elfNN_ia64_finish_dynamic_symbol): Likewise. - (elfNN_ia64_finish_dynamic_sections): Likewise. +2011-03-02 Bernd Schmidt -2009-06-16 Ulrich Weigand + * elflink.c (is_reloc_section): Remove function. + (get_dynamic_reloc_section_name): Construct string manually. - * elf32-spu.c (needs_ovl_stub): Respect .brinfo lrlive bits - also for calls. +2011-02-28 Kai Tietz -2009-06-16 H.J. Lu + * archive.c (_bfd_find_nested_archive): Use filename_(n)cmp. + (adjust_relative_path): Likewise. + (_bfd_construct_extended_name_table): Likewise. + * corefile.c (generic_core_file_matches_executable_p): Likewise. + * elf32-bfin.c (bfinfdpic_relocate_section): Likewise. + * elf32-frv.c (elf32_frv_relocate_section): Likewise. + * elf32-spu.c (sort_bfds): Likewise. + (spu_elf_auto_overlay): Likewise. + * syms.c (_bfd_stab_section_find_nearest_line): Likewise. + * xcofflink.c (xcoff_set_import_path): Likewise. + * xtensa-isa.c (xtensa_regfile_lookup): Likewise. + (xtensa_regfile_lookup_shortname): Likewise. - * configure.in (elf): Add elf-ifunc.lo. +2011-02-28 Alan Modra - * configure: Regenerated. - * Makefile.in: Likewise. + PR 12513 + * archive.c (bfd_slurp_bsd_armap_f2): Sanity check parsed_size and + stringsize. Properly sanity check symdef_count. Remove redundant + bfd_release. - * elf-bfd.h (elf_link_hash_table): Add sgot, sgotplt, - srelgot, splt, srelplt, igotplt, iplt, irelplt and irelifunc. +2011-02-25 Rafael Ãvila de Espíndola - * elf32-i386.c (elf_i386_link_hash_table): Remove sgot, - sgotplt, srelgot, splt, srelplt, igotplt, iplt, irelplt and - irelifunc. - (elf_i386_link_hash_table_create): Likewise. - (elf_i386_create_dynamic_sections): Likewise. - (elf_i386_check_relocs): Likewise. - (elf_i386_allocate_dynrelocs): Likewise. - (elf_i386_size_dynamic_sections): Likewise. - (elf_i386_relocate_section): Likewise. - (elf_i386_finish_dynamic_symbol): Likewise. - (elf_i386_finish_dynamic_sections): Likewise. - (elf_i386_create_got_section): Removed. + * plugin.c (bfd_plugin_object_p): Correctly set the filesize + and handle claim_file seeking. Only try to load the plugin once. - * elf64-x86-64.c (elf64_x86_64_link_hash_table): Remove sgot, - sgotplt, srelgot, splt, srelplt, igotplt, iplt, irelplt and - irelifunc. - (elf64_x86_64_compute_jump_table_size): Updated. - (elf64_x86_64_link_hash_table_create): Likewise. - (elf64_x86_64_create_dynamic_sections): Likewise. - (elf64_x86_64_check_relocs): Likewise. - (elf64_x86_64_allocate_dynrelocs): Likewise. - (elf64_x86_64_size_dynamic_sections): Likewise. - (elf64_x86_64_relocate_section): Likewise. - (elf64_x86_64_finish_dynamic_symbol): Likewise. - (elf64_x86_64_finish_dynamic_sections): Likewise. - (elf64_x86_64_create_got_section): Removed. +2011-02-22 Andreas Schwab - * elflink.c (_bfd_elf_create_got_section): Use log_file_align - for pointer alignment. Set up section pointers. - (_bfd_elf_create_dynamic_sections): Likewise. - (_bfd_elf_create_ifunc_sections): Moved to ... - * elf-ifunc.c: Here. New. + * elf32-m68k.c (elf_m68k_finish_dynamic_symbol): For a TLS_GD + relocation read the value from the second GOT slot. - * Makefile.am (BFD32_BACKENDS): Add elf-ifunc.lo. - (BFD32_BACKENDS_CFILES): Add elf-ifunc.c. - Run "make dep-am". +2011-02-15 Tristan Gingold -2009-06-16 Doug Kwan + * vms-alpha.c (alpha_vms_link_add_archive_symbols): Add a comment. - * elf32-arm.c (cortex_a8_erratum_scan): Change type of offset - to bfd_signed_vma. Cast constant operands which are used in - offset related expressions to bfd_signed_vma type as appropriate. +2011-02-15 Alan Modra -2009-06-16 Maciej W. Rozycki + * elf64-ppc.c (ppc64_elf_edit_toc): Reinstate second read of + toc relocs. Fuss over free(NULL). - * elf32-vax.c (elf_vax_plt_sym_val): New function. - (elf_backend_plt_sym_val): Define. +2011-02-14 Mike Frysinger -2009-06-16 Maciej W. Rozycki + * elflink.c (bfd_elf_size_dynamic_sections): Add + bfd_get_symbol_leading_char to the start of newname. - * elf32-vax.c (elf_vax_reloc_type_class): New function. - (elf_backend_reloc_type_class): Define. +2011-02-13 Ralf Wildenhues -2009-06-16 Maciej W. Rozycki + * configure: Regenerate. - * elf32-vax.c (elf_vax_relocate_section): For symbol references - from an executable to a shared library treat R_VAX_PC32 - relocations as R_VAX_PLT32 ones. +2011-02-09 Alan Modra -2009-06-16 Maciej W. Rozycki + * elf64-ppc.c (ppc64_elf_edit_toc): Don't free toc relocs until + we are done. When optimising large toc, check that a global + symbol on a toc reloc is defined in a kept section. - * elf32-vax.c (elf_vax_instantiate_got_entries): Skip local - symbols in GOT space calculation. - (elf_vax_relocate_section): Adjust accordingly. +2011-02-08 Nick Clifton -2009-06-16 Maciej W. Rozycki + PR binutils/12467 + * elf.c (assign_file_positions_for_load_sections): Set the program + header offset and entry size to zero if there are no program + headers. - * elf32-vax.c (elf_vax_plt_entry): Set the entry mask to - include . +2011-02-08 Alan Modra -2009-06-16 Maciej W. Rozycki + * elf64-ppc.c (ppc64_elf_edit_toc): Don't segfault on NULL + local_syms when looking for local symbols in .toc. - * elf32-vax.c (elf_vax_check_relocs): Handle the visibility - attribute. - (elf_vax_relocate_section): Likewise. +2011-02-01 Alan Modra -2009-06-15 H.J. Lu + * elf64-ppc.c (ppc64_elf_next_input_section): Use elf_gp value + for toc pointer on any section having makes_toc_func_call set. + (check_pasted_section): Ensure pasted .init/.fini fragments use + the same toc if any has makes_toc_func_call set. - * elf32-i386.c (elf_i386_allocate_dynrelocs): Update comments. - * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Likewise. +2011-01-28 Joseph Myers -2009-06-15 H.J. Lu + * elf32-ppc.c (ppc_elf_link_hash_newfunc): Initialize has_sda_refs + field. - * elf32-i386.c (elf_i386_check_relocs): Reformat. - * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. +2011-01-22 Richard Sandiford -2009-06-15 H.J. Lu + * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Ignore + common sections too. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerated. +2011-01-18 H.J. Lu -2009-06-15 H.J. Lu + * elf64-x86-64.c (elf_backend_want_plt_sym): Redefine to 0 after + Solaris target. - * elf32-i386.c (elf_i386_allocate_dynrelocs): Fix a typo. - * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Likewise. +2011-01-18 Pierre Muller -2009-06-15 Nick Clifton + Fix compilation for mingw64. + * coffcode.h (coff_slurp_symbol_table): Add intptr_t intermediate + typecast to avoid warning. + * elf32-rx.c: Add "bfd_stdint.h" include required for int32_t type + usage. + * elfxx-ia64.c (elfNN_ia64_relax_br): Use intptr_t typeacast instead + of long for pointer to avoid warning. + (elfNN_ia64_relax_brl): Idem. + (elfNN_ia64_install_value): Idem. + * vms-alpha.c (_bfd_vms_slurp_etir): Idem. - * po/ru.po: New Russian translation. - * configure.in (ALL_LINGUAS): Add ru. - * configure: Regenerate. +2011-01-17 Richard Sandiford -2009-06-14 H.J. Lu + * elf32-arm.c (elf32_arm_check_relocs): Check needs_plt rather than + h->needs_plt when deciding whether to record a possible dynamic reloc. - * elf32-i386.c: Remove duplicated comments. +2011-01-17 Richard Sandiford -2009-06-14 H.J. Lu + * elf32-arm.c (elf32_arm_gc_sweep_hook): Remove all registered + dynamic relocs for the removed section. - PR ld/10270 - * elf32-i386.c (elf_i386_allocate_dynrelocs): Disallow - dynamic IFUNC pointer in non-shared object. Use .got.plt - for IFUNC definition in PIE. - (elf_i386_allocate_dynrelocs): Resolve IFUNC definition in - PIE locally. +2011-01-15 H.J. Lu - * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Disallow - dynamic IFUNC pointer in non-shared object. Use .got.plt - for IFUNC definition in PIE. - (elf64_x86_64_relocate_section): Resolve IFUNC definition in - PIE locally. + * elf64-x86-64.c (elf_x86_64_check_relocs): Check invalid x32 + relocations. -2009-06-13 H.J. Lu +2011-01-14 H.J. Lu - * elf32-i386.c (elf_i386_check_relocs): Properly report - local symbol for unhandled relocation against STT_GNU_IFUNC - symbol. - (elf_i386_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. - (elf64_x86_64_relocate_section): Likewise. - -2009-06-13 H.J. Lu - - PR ld/10269 - * elf32-i386.c: Include "objalloc.h" and "hashtab.h". - (elf_i386_link_hash_table): Add loc_hash_table and - loc_hash_memory. - (elf_i386_local_hash): New. - (elf_i386_local_htab_hash): Likewise. - (elf_i386_local_htab_eq): Likewise. - (elf_i386_get_local_sym_hash): Likewise. - (elf_i386_link_hash_table_free): Likewise. - (elf_i386_allocate_local_dynrelocs): Likewise. - (elf_i386_finish_local_dynamic_symbol): Likewise. - (bfd_elf64_bfd_link_hash_table_free): Likewise. - (elf_i386_link_hash_table_create): Create loc_hash_table and - loc_hash_memory. - (elf_i386_check_relocs): Handle local STT_GNU_IFUNC symbols. - (elf_i386_size_dynamic_sections): Likewise. - (elf_i386_relocate_section): Likewise. - (elf_i386_finish_dynamic_sections): Likewise. - (elf_i386_finish_dynamic_symbol): Check _DYNAMIC only if sym - isn't NULL. - - * elf64-x86-64.c: Include "objalloc.h" and "hashtab.h". - (elf64_x86_64_link_hash_table): Add loc_hash_table and - loc_hash_memory. - (elf64_x86_64_local_hash): New. - (elf64_x86_64_local_htab_hash): Likewise. - (elf64_x86_64_local_htab_eq): Likewise. - (elf64_x86_64_get_local_sym_hash): Likewise. - (elf64_x86_64_link_hash_table_free): Likewise. - (elf64_x86_64_allocate_local_dynrelocs): Likewise. - (elf64_x86_64_finish_local_dynamic_symbol): Likewise. - (bfd_elf64_bfd_link_hash_table_free): Likewise. - (elf64_x86_64_link_hash_table_create): Create loc_hash_table - and loc_hash_memory. - (elf64_x86_64_check_relocs): Handle local STT_GNU_IFUNC - symbols. - (elf64_x86_64_size_dynamic_sections): Likewise. - (elf64_x86_64_relocate_section): Likewise. - (elf64_x86_64_finish_dynamic_sections): Likewise. - (elf64_x86_64_finish_dynamic_symbol): Check _DYNAMIC only if - sym isn't NULL. - -2009-06-10 Philip Blundell - - * elf32-arm.c (elf32_arm_fix_exidx_coverage): Avoid crash if - elf_sec->this_hdr == NULL. - -2009-06-12 Tristan Gingold - - * reloc.c: Add BFD_RELOC_MACH_O_SECTDIFF and BFD_RELOC_MACH_O_PAIR. - * bfd-in2.h: Regenerated. - * libbfd.h: Regenerated. - - * mach-o.c (FILE_ALIGN): New macro. - (bfd_mach_o_canonicalize_symtab): Adjust for bfd_mach_o_asymbol. - (bfd_mach_o_print_symbol): Ditto. - (bfd_mach_o_scan_write_thread): Adjust type of variable offset. - (bfd_mach_o_get_reloc_upper_bound): New function. - (bfd_mach_o_canonicalize_reloc): Ditto. - (bfd_mach_o_scan_write_relocs): Ditto. - (bfd_mach_o_scan_write_section_32): Remove offset argument. - (bfd_mach_o_scan_write_section_64): Ditto. - (bfd_mach_o_scan_write_segment_32): Write relocs. Fix size of data - written for load command. Do not compute section file offset. - (bfd_mach_o_scan_write_segment_64): Ditto. - (bfd_mach_o_scan_write_symtab): Compute file offset first. - Adjust for bfd_mach_o_asymbol. Move code to convert from BFD to - Mach-O to ... - (bfd_mach_o_mangle_symbols): ... this new function. - (bfd_mach_o_write_contents): Be sure to have load commands built. - Call bfd_mach_o_mangle_symbols. - (bfd_mach_o_build_commands): Adjust for filelen field. - Use FILE_ALIGN macro. Clear section file offset if section is empty. - Do not set symtab file offset anymore here. - (bfd_mach_o_make_empty_symbol): Allocate a bfd_mach_o_asymbol. - (bfd_mach_o_make_bfd_section): Set SEC_RELOC if has reloc. - Set reloc_count and rel_filepos section fields. - (bfd_mach_o_scan_read_section_32): Type of argument offset is now - unsigned int. - (bfd_mach_o_scan_read_section_64): Ditto. - (bfd_mach_o_scan_read_section): Ditto. - (bfd_mach_o_scan_read_symtab_symbol): Typr of argument s is now - bfd_mach_o_asymbol. Use unsigned int for file offset type. - (bfd_mach_o_scan_read_symtab_symbol): Adjust for bfd_mach_o_asymbol. - Handle weak-ref symbols. - (bfd_mach_o_scan_read_symtab_symbols): Adjust for bfd_mach_o_asymbol. - (bfd_mach_o_scan_read_dysymtab_symbol): Ditto. - (bfd_mach_o_scan): Remove assignment to removed field. - (bfd_mach_o_mkobject_init): Ditto. - (bfd_mach_o_bfd_print_private_bfd_data): Adjust printf formatter. - (bfd_mach_o_bfd_reloc_type_lookup): New macro. - (bfd_mach_o_bfd_reloc_name_lookup): Ditto. - (bfd_mach_o_swap_reloc_in): Ditto. - (bfd_mach_o_swap_reloc_out): Ditto. - - * mach-o.h (BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_NON_LAZY) - (BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_LAZY) - (BFD_MACH_O_REFERENCE_FLAG_DEFINED) - (BFD_MACH_O_REFERENCE_FLAG_PRIVATE_DEFINED) - (BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY) - (BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY) - (BFD_MACH_O_REFERENCED_DYNAMICALLY, BFD_MACH_O_N_DESC_DISCARDED) - (BFD_MACH_O_N_NO_DEAD_STRIP, BFD_MACH_O_N_WEAK_REF) - (BFD_MACH_O_N_WEAK_DEF): New macros. - Add comments. - (bfd_mach_o_section_type): Add new enumeration values. - (BFD_MACH_O_S_SELF_MODIFYING_CODE) - (BFD_MACH_O_S_ATTR_LIVE_SUPPORT) - (BFD_MACH_O_S_ATTR_NO_DEAD_STRIP) - (BFD_MACH_O_S_ATTR_STRIP_STATIC_SYMS, BFD_MACH_O_S_ATTR_NO_TOC): New - macros. - (BFD_MACH_O_GENERIC_RELOC_VANILLA) - (BFD_MACH_O_GENERIC_RELOC_PAIR) - (BFD_MACH_O_GENERIC_RELOC_SECTDIFF) - (BFD_MACH_O_GENERIC_RELOC_PB_LA_PTR) - (BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF): Ditto. - (BFD_MACH_O_RELENT_SIZE): Ditto. - (BFD_MACH_O_R_PCREL, BFD_MACH_O_GET_R_LENGTH) - (BFD_MACH_O_R_EXTERN, BFD_MACH_O_GET_R_TYPE) - (BFD_MACH_O_GET_R_SYMBOLNUM, BFD_MACH_O_SET_R_LENGTH) - (BFD_MACH_O_SET_R_TYPE, BFD_MACH_O_SET_R_SYMBOLNUM): Ditto. - (BFD_MACH_O_SR_SCATTERED, BFD_MACH_O_SR_PCREL) - (BFD_MACH_O_GET_SR_LENGTH, BFD_MACH_O_GET_SR_TYPE) - (BFD_MACH_O_GET_SR_ADDRESS, BFD_MACH_O_SET_SR_LENGTH) - (BFD_MACH_O_SET_SR_TYPE, BFD_MACH_O_SET_SR_ADDRESS): Ditto. - (bfd_mach_o_reloc_info): New struct. - (bfd_mach_o_asymbol): New struct. - (bfd_mach_o_symtab_command): The symbols field is now of type - bfd_mach_o_asymbol. - (bfd_mach_o_load_command): The offset and len fields are now of type - unsigned int. - (mach_o_data_struct): Remove symbols, nsymbols and ibfd fields. - Add a filelen field. Add comments. - (bfd_mach_o_backend_data): New struct. - (bfd_mach_o_get_backend_data): New macro. - (bfd_mach_o_scan_read_symtab_symbol): Parameter symbol now of type - bfd_mach_o_asymbol. - (bfd_mach_o_scan_read_dysymtab_symbol): Ditto. - (bfd_mach_o_get_reloc_upper_bound): New prototype. - (bfd_mach_o_canonicalize_reloc): Ditto. - - * mach-o-target.c (bfd_mach_o_bfd_is_local_label_name): Remove - duplicated macro. Now defined to _bfd_generic_is_local_label. - (TARGET_NAME_BACKEND): New macro... - (TARGET_NAME_BACKEND): ... used to name a new variable. - (TARGET_NAME): Define relocs table using bfd_mach_o, reference - Mach-O backend data. - - * mach-o-i386.c (i386_howto_table): New variable. - (bfd_mach_o_i386_swap_reloc_in): New function. - (bfd_mach_o_i386_swap_reloc_out): Ditto. - (bfd_mach_o_i386_bfd_reloc_type_lookup): Ditto. - (bfd_mach_o_i386_bfd_reloc_name_lookup): Ditto. - (bfd_mach_o_swap_reloc_in, bfd_mach_o_swap_reloc_out): New macros. - (bfd_mach_o_bfd_reloc_type_lookup) - (bfd_mach_o_bfd_reloc_name_lookup): Ditto. - -2009-06-11 Eric Paris - Nick Clifton - - * opncls.c (_maybe_make_executable): New function. Gives execute - permission to an executable bfd that was opened for writing - provided that it is a regular file. Replaces common code found in... - (bfd_close): here and ... - (bfd_close_all_done): here. + * elf64-x86-64.c (elf_x86_64_link_hash_table): Add pointer_r_type. + (elf_x86_64_link_hash_table_create): Set pointer_r_type. + (elf_x86_64_check_relocs): Handle R_X86_64_32 like R_X86_64_64 + for ILP32. Remove ABI_64_P PIC check for R_X86_64_8, + R_X86_64_16, R_X86_64_32 and R_X86_64_32S. + (elf_x86_64_relocate_section): Handle R_X86_64_32 like R_X86_64_64 + for ILP32. -2009-06-11 Anthony Green +2011-01-14 Alan Modra - * reloc.c: Add BFD_RELOC_MOXIE_10_PCREL. - * bfd-in2.h: Rebuilt. + * bfd.c (bfd_perror): Flush stdout before and stderr after printing + error. + (_bfd_default_error_handler): Likewise. + * elf.c (print_segment_map): Likewise. + * libbfd.c (warn_deprecated): Likewise. + * som.c (som_sizeof_headers): No need to do so here. + * coff-i860.c: Replace use of printf for error messages with + _bfd_error_handler. + * coff-ppc.c: Likewise. + * coff-sh.c: Likewise. + * elf32-bfin.c: Likewise. + * elf32-dlx.c: Likewise. + * elf32-mep.c: Likewise. + * elf32-v850.c: Likewise. + * mach-o.c: Likewise. + * pef.c: Likewise. + +2011-01-13 H.J. Lu + + * elf64-x86-64.c (elf_x86_64_link_hash_table): Remove + swap_reloca_out. + (elf_x86_64_link_hash_table_create): Don't set swap_reloca_out. + (elf_x86_64_check_relocs): Align relocation section to 4 byte + for 32bit. + (elf_x86_64_gc_sweep_hook): Replace ELF64_ST_TYPE with + ELF_ST_TYPE. + (elf_x86_64_finish_dynamic_symbol): Updated. + (elf_x86_64_finish_dynamic_sections): Don't use + Elf64_External_Dyn, bfd_elf64_swap_dyn_in, nor + bfd_elf64_swap_dyn_out. + +2011-01-14 J. Park + + PR ld/12339 + * elf32-arm.c (allocate_dynrelocs): Don't set up eh before + following bfd_link_hash_warning symbol link. + +2011-01-10 Nathan Sidwell + Glauber de Oliveira Costa + + * reloc.c (BFD_RELOC_ARM_TLS_GOTDESC, BFD_RELOC_ARM_TLS_CALL, + BFD_RELOC_ARM_THM_TLS_CALL, BFD_RELOC_ARM_TLS_DESCSEQ, + BFD_RELOC_ARM_THM_TLS_DESCSEQ, BFD_RELOC_ARM_TLS_DESC): New + relocations. * libbfd.h: Rebuilt. - * elf32-moxie.c (moxie_elf_howto_table): Add R_MOXIE_PCREL10 - relocation support. - (moxie_reloc_map): Ditto. - Clean up copyright notice. - -2009-06-10 Paul Pluzhnikov - - * bfd-in2.h: bfd_mmap prototype. - * bfdio.c (bfd_mmap): New function. - * libbfd.h (bfd_iovec): Add bmmap. - * cache.c (cache_bmmap): New function. - (cache_iovec): Initialize bmmap member. - * opencls.c (opncls_bmmap): New function. - (opncls_iovec): Initialize bmmap member. - -2009-06-09 Tristan Gingold - - * mach-o.h (bfd_mach_o_symtab_command): Remove stabs_segment - and stabstr_segment fields. - (mach_o_be_vec, mach_o_le_vec): Removed - (bfd_mach_o_version): New prototype. - - * mach-o.c (bfd_mach_o_version): Make this function public. - (mach_o_wide_p): New function. - (bfd_mach_o_wide_p): Ditto. - (bfd_mach_o_convert_section_name_to_bfd): Add prefix only for - weird names. - (bfd_mach_o_convert_section_name_to_mach_o): Fix typo in comment. - Search in the list only if the name starts with a dot. - (bfd_mach_o_write_header): Use mach_o_wide_p instead of hard-coded - test. Check bfd_seek status. - (bfd_mach_o_scan_write_thread): Check bfd_seek status. - (bfd_mach_o_scan_write_section_32): Ditto. - (bfd_mach_o_scan_write_section_64): Ditto. - (bfd_mach_o_scan_write_section): Removed. - (bfd_mach_o_scan_write_segment): Split into ... - (bfd_mach_o_scan_write_segment_32): ... this and ... - (bfd_mach_o_scan_write_segment_64): ... this. Check bfd_seek status. - (bfd_mach_o_scan_write_symtab_symbols): Moved into ... - (bfd_mach_o_scan_write_symtab): ... this. Write symtab from BFD - symbol table. Now returns a boolean. - (bfd_mach_o_write_contents): Set filetype. Check bfd_seek status. - Adjust for status type. - (bfd_mach_o_build_commands): Use mach_o_wide_p instead of hard-coded - test. Write symbol table. Numbers the sections. - (bfd_mach_o_read_header): Check bfd_seek status. - Use mach_o_wide_p instead of hard-coded test. - (bfd_mach_o_scan_read_section_32): Check bfd_seek status. - (bfd_mach_o_scan_read_section_64): Ditto. - (bfd_mach_o_scan_read_symtab_symbol): Ditto. Check bfd_seek status. - Use BFD_MACH_O_N_TYPE instead of hard-coded value. Correctly - handled common symbols. - (bfd_mach_o_scan_read_symtab_strtab): Check bfd_seek status. - (bfd_mach_o_scan_read_dysymtab_symbol): Ditto. - (bfd_mach_o_scan_read_dylinker): Ditto. - (bfd_mach_o_scan_read_dylib): Ditto. - (bfd_mach_o_scan_read_thread): Ditto. - (bfd_mach_o_scan_read_symtab): Ditto. - Do not create a section for the stabs. - (bfd_mach_o_scan_read_uuid): Check bfd_seek status. - (bfd_mach_o_scan_read_segment): Ditto. - (bfd_mach_o_scan_read_command): Ditto. - (bfd_mach_o_scan_start_address): Ditto. - (bfd_mach_o_scan): Use mach_o_wide_p instead of hard-coded test. - (bfd_mach_o_archive_p): Check bfd_seek status. - (bfd_mach_o_core_fetch_environment): Ditto. - - * mach-o-i386.c (bfd_mach_o_i386_mkobject): Don't set filetype. - -2009-06-06 H.J. Lu - - * elf32-i386.c (elf_i386_link_hash_table): Add irelifunc. - (elf_i386_link_hash_table_create): Initialize irelifunc. - (elf_i386_check_relocs): Updated. Set up irelifunc for - shared objects. - (elf_i386_allocate_dynrelocs): Use irelifunc for dynamic - relocation for non-GOT reference of STT_GNU_IFUNC symbol in - shared objects. - (elf_i386_relocate_section): Likewise. - - * elf64-x86-64.c (elf64_x86_64_link_hash_table): Add irelifunc. - (elf64_x86_64_link_hash_table_create): Initialize irelifunc. - (elf64_x86_64_check_relocs): Updated. Set up irelifunc for - shared objects. - (elf64_x86_64_allocate_dynrelocs): Use irelifunc for dynamic - relocation for non-GOT reference of STT_GNU_IFUNC symbol in - shared objects. - (elf64_x86_64_relocate_section): Likewise. - - * elf-bfd.h (_bfd_elf_create_static_ifunc_sections): Renamed to - ... - (_bfd_elf_create_ifunc_sections): This. - - * elflink.c (_bfd_elf_create_static_ifunc_sections): Renamed to - ... - (_bfd_elf_create_ifunc_sections): This. Create .rel[a].ifunc - for shared objects. - -2009-06-06 H.J. Lu - - * elf32-i386.c (elf_i386_check_relocs): Make room for dynamic - relocation for R_386_32 against STT_GNU_IFUNC symbol when - building shared object. Check info->executable instead of - !info->shared when setting non_got_ref. - (elf_i386_allocate_dynrelocs): Allocate dynamic relocation - for non-GOT reference of STT_GNU_IFUNC symbol in shared - object. Allocate GOT relocation agsinst STT_GNU_IFUNC - symbol if needed. - (elf_i386_relocate_section): Output dynamic relocation for - R_386_32 against STT_GNU_IFUNC symbol to get the real - function address when building shared object. - (elf_i386_finish_dynamic_symbol): Output R_386_GLOB_DAT - relocation for STT_GNU_IFUNC symbol in shared object. - - * elf64-x86-64.c (elf64_x86_64_check_relocs): Make room for - dynamic relocation for R_X86_64_64 against STT_GNU_IFUNC - symbol when building shared object. Check info->executable - instead of !info->shared when setting non_got_ref. - (elf64_x86_64_allocate_dynrelocs): Allocate dynamic relocation - for non-GOT reference of STT_GNU_IFUNC symbol in shared - library. Allocate GOT relocation agsinst STT_GNU_IFUNC symbol - if needed. - (elf64_x86_64_relocate_section): Output dynamic relocation - for R_X86_64_64 against STT_GNU_IFUNC symbol to get the real - function address when building shared object. - (elf64_x86_64_finish_dynamic_symbol): Output R_X86_64_GLOB_DAT - relocation for STT_GNU_IFUNC symbol in shared object. - -2009-06-06 Jan Kratochvil - - * Makefile.am: Run "make dep-am". - (BFD32_BACKENDS): Add mach-o-i386.lo. - (BFD32_BACKENDS_CFILES): Add mach-o-i386.c. - * Makefile.in: Regenerate. - -2009-06-06 Alan Modra - - * elf32-spu.c (spu_elf_relocate_section): Match overlay number - when looking for soft-icache stubs. - -2009-06-05 Tristan Gingold - - * mach-o.h: Update copyright year. - (bfd_mach_o_mach_header_magic): New enum. - (bfd_mach_o_cpu_subtype): Now an enum. - (BFD_MACH_O_HEADER_SIZE, BFD_MACH_O_HEADER_64_SIZE): New macros. - (BFD_MACH_O_SECTION_SIZE, BFD_MACH_O_SECTION_64_SIZE): Ditto. - (BFD_MACH_O_LC_SEGMENT_SIZE, BFD_MACH_O_LC_SEGMENT_64_SIZE): Ditto. - (bfd_mach_o_load_command): Field type_required is now a boolean. - Reindent prototypes. - (bfd_mach_o_object_p, bfd_mach_o_core_p): Remove. - (bfd_mach_o_bfd_copy_private_symbol_data): Add a prototype. - (bfd_mach_o_bfd_copy_private_section_data): Ditto. - (bfd_mach_o_bfd_copy_private_bfd_data): Ditto. - (bfd_mach_o_get_symtab_upper_bound): Ditto. - (bfd_mach_o_canonicalize_symtab): Ditto. - (bfd_mach_o_get_symbol_info): Ditto. - (bfd_mach_o_print_symbol): Ditto. - (bfd_mach_o_bfd_print_private_bfd_data): Ditto. - (bfd_mach_o_make_empty_symbol): Ditto. - (bfd_mach_o_write_contents): Ditto. - - * mach-o.c (bfd_mach_o_object_p, bfd_mach_o_core_p, - bfd_mach_o_mkobject): Defines. - (bfd_mach_o_valid): Returns FALSE/TRUE instead of 0/1. - Do not check with target vector but with flavour. - (struct mach_o_section_name_xlat): New declaration. - (dwarf_section_names_xlat): Ditto. - (text_section_names_xlat): Ditto. - (data_section_names_xlat): Ditto. - (struct mach_o_segment_name_xlat): Ditto. - (segsec_names_xlat): Ditto. - (bfd_mach_o_convert_section_name_to_bfd): New function. - (bfd_mach_o_convert_section_name_to_mach_o): Ditto. - (bfd_mach_o_bfd_copy_private_symbol_data): Make it public. - (bfd_mach_o_bfd_copy_private_section_data): Ditto. - (bfd_mach_o_bfd_copy_private_bfd_data): Ditto. - Accept any input and output flavour. Do not share private data - anymore. - (bfd_mach_o_count_symbols): Add a comment. - (bfd_mach_o_get_symtab_upper_bound): Make it public. - (bfd_mach_o_canonicalize_symtab): Ditto. - (bfd_mach_o_get_symbol_info): Ditto. - (bfd_mach_o_print_symbol): Ditto. - (bfd_mach_o_write_header): Now returns a boolean instead of an int. - Use constants instead of hard-coded values. - (bfd_mach_o_scan_write_section_32): Use constants instead of hard-coded - values. - (bfd_mach_o_scan_write_section_64): Ditto. - (bfd_mach_o_scan_write_segment): Ditto. - Do not copy sections anymore. - (bfd_mach_o_write_contents): Make it public. - Remove dead code. Rewrite typeflag assignment. - (bfd_mach_o_build_commands): New function. - (bfd_mach_o_set_section_contents): Ditto. - (bfd_mach_o_make_empty_symbol): Make it public. - (bfd_mach_o_read_header): Make it static. - Convert to bfd_boolean. - Use constants instead of hard-coded values. - (bfd_mach_o_make_bfd_section): Call - bfd_mach_o_convert_section_name_to_bfd to create name. - (bfd_mach_o_scan_read_section_32): Use constants instead of hard-coded - values. - (bfd_mach_o_scan_read_section_64): Ditto. - (bfd_mach_o_scan_read_segment): Do not create a bfd section for - a segment anymore. Use constants instead of hard-coded values. - (bfd_mach_o_scan_read_command): Fix style. - (bfd_mach_o_scan): Use constants instead of hard-coded values. - Get rid of BFD_IO_FUNCS. - (bfd_mach_o_mkobject_init): Renamed from bfd_mach_o_mkobject. - (bfd_mach_o_header_p): Created from bfd_mach_o_object_p. - (bfd_mach_o_gen_object_p): New function, replaces bfd_mach_o_object_p. - (bfd_mach_o_object_p): Removed. - (bfd_mach_o_gen_core_p): New function, replaces ... - (bfd_mach_o_core_p): ... deleted. - (bfd_mach_o_bfd_print_private_bfd_data): Make it public. - - * mach-o-i386.c: New file. - * config.bfd: Use mach_o_i386_vec as targ_defvec for ix86-darwin. - * configure.in (TDEFINES): Add mach_o_i386_vec. - * configure: Regenerated. - * targets.c: Add mach_o_i386_vec. - - * mach-o.c: Update copyright years. - (BFD_IO_FUNCS): Remove (was not used). - (bfd_mach_o_mkarchive, bfd_mach_o_read_ar_hdr, bfd_mach_o_slurp_armap - bfd_mach_o_slurp_extended_name_table, - bfd_mach_o_construct_extended_name_table, - bfd_mach_o_truncate_arname, bfd_mach_o_write_armap, - bfd_mach_o_get_elt_at_index, bfd_mach_o_generic_stat_arch_elt, - bfd_mach_o_update_armap_timestamp, bfd_mach_o_close_and_cleanup, - bfd_mach_o_bfd_free_cached_info, bfd_mach_o_new_section_hook, - bfd_mach_o_get_section_contents_in_window, - bfd_mach_o_bfd_is_local_label_name, - bfd_mach_o_bfd_is_target_special_symbol, - bfd_mach_o_bfd_is_local_label_name, bfd_mach_o_get_lineno, - bfd_mach_o_find_nearest_line, bfd_mach_o_find_inliner_info, - bfd_mach_o_bfd_make_debug_symbol, bfd_mach_o_read_minisymbols, - bfd_mach_o_minisymbol_to_symbol, - bfd_mach_o_bfd_get_relocated_section_contents, - bfd_mach_o_bfd_relax_section, bfd_mach_o_bfd_link_hash_table_create, - bfd_mach_o_bfd_link_hash_table_free, bfd_mach_o_bfd_link_add_symbols, - bfd_mach_o_bfd_link_just_syms, bfd_mach_o_bfd_final_link, - bfd_mach_o_bfd_link_split_section, bfd_mach_o_set_arch_mach, - bfd_mach_o_bfd_merge_private_bfd_data, - bfd_mach_o_bfd_set_private_flags, bfd_mach_o_get_section_contents, - bfd_mach_o_bfd_gc_sections, bfd_mach_o_bfd_merge_sections, - bfd_mach_o_bfd_is_group_section, bfd_mach_o_bfd_discard_group, - bfd_mach_o_section_already_linked, bfd_mach_o_bfd_define_common_symbol, - bfd_mach_o_bfd_copy_private_header_data, - bfd_mach_o_core_file_matches_executable_p): Move these defines ... - * mach-o-target.c: ... here. - Update copyright years. - -2009-06-04 Alan Modra - - * dep-in.sed: Don't use \n in replacement part of s command. - * Makefile.am (DEP1): LC_ALL for uniq. - Run "make dep-am". - * Makefile.in: Regenerate. - -2009-06-03 H.J. Lu - - * elf32-i386.c (elf_i386_allocate_dynrelocs): Remove check of - h->plt.refcount > 0 on STT_GNU_IFUNC symbol. - * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Likewise. - -2009-06-03 H.J. Lu - - * elf32-i386.c (elf_i386_allocate_dynrelocs): Allocate - GOT entry for STT_GNU_IFUNC symbol with pointer equality. - (elf_i386_relocate_section): Adjust R_386_GOT32 relocation - against STT_GNU_IFUNC symbols for static executables. - (elf_i386_finish_dynamic_symbol): Load GOT entry with - PLT entry for STT_GNU_IFUNC symbol with pointer equality. - - * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Allocate - GOT entry for STT_GNU_IFUNC symbol with pointer equality. - (elf64_x86_64_finish_dynamic_symbol): Load GOT entry with - PLT entry for STT_GNU_IFUNC symbol with pointer equality. - -2009-06-02 Richard Sandiford - - * coff-rs6000.c (xcoff_ppc_relocate_section): Allow undefined - symbols to be left unimported when linking statically. - * xcofflink.c (xcoff_link_add_symbols): Ignore global linkage - code when linking statically. - -2009-06-02 H.J. Lu - - * elf32-i386.c (elf_i386_check_relocs): Increment - got.refcount for R_386_GOT32/R_386_GOTOFF relocations - against STT_GNU_IFUNC symbol. - (elf_i386_allocate_dynrelocs): Set got.refcount to 0 if - local STT_GNU_IFUNC definition is used. - (elf_i386_relocate_section): Handle got.offset != -1 for - R_386_GOT32/R_386_GOTOFF relocations against STT_GNU_IFUNC + * bfd-in2.h: Rebuilt. + * elf32-arm.c (elf32_arm_howto_table_1): Add new relocations. + (elf32_arm_reloc_map): Likewise. + (tls_trampoline, dl_tlsdesc_lazy_trampoline): New PLT templates. + (elf32_arm_stub_long_branch_any_tls_pic, + elf32_arm_stub_long_branch_v4t_thumb_tls_pic): New stub templates. + (DEF_STUBS): Add new stubs. + (struct_elf_arm_obj_data): Add local_tlsdesc_gotent field. + (elf32_arm_local_tlsdesc_gotent): New. + (GOT_TLS_GDESC): New mask. + (GOT_TLS_GD_ANY): Define. + (struct elf32_arm_link_hash_entry): Add tlsdesc_got field. + (elf32_arm_compute_jump_table_size): New. + (struct elf32_arm_link_hash_table): Add next_tls_desc_index, + num_tls_desc, dt_tlsdesc_plt, dt_tlsdesc_got, tls_trampoline, + sgotplt_jump_table_size fields. + (elf32_arm_link_hash_newfunc): Initialize tlsdesc_got field. + (elf32_arm_link_hash_table_create): Initialize new fields. + (arm_type_of_stub): Check TLS desc relocs too. + (elf32_arm_stub_name): TLS desc relocs can be shared. + (elf32_arm_tls_transition): Determine relaxation. + (arm_stub_required_alignment): Add tls stubs. + (elf32_arm_size_stubs): Likewise. + (elf32_arm_tls_relax): Perform TLS relaxing. + (elf32_arm_final_link_relocate): Process TLS DESC relocations. + (IS_ARM_TLS_GNU_RELOC): New. + (IS_ARM_TLS_RELOC): Use it. + (elf32_arm_relocate_section): Perform TLS relaxing. + (elf32_arm_check_relocs): Anticipate TLS relaxing, process tls + desc relocations. + (allocate_dynrelocs): Allocate tls desc relcoations. + (elf32_arm_output_arch_local_syms): Emit tls trampoline mapping + symbols. + (elf32_arm_size_dynamic_sections): Allocate tls trampolines and + got slots. + (elf32_arm_always_size_sections): New. Create _TLS_MODULE_BASE symbol. + (elf32_arm_finish_dynamic_symbol): Adjust. + (arm_put_trampoline): New. + (elf32_arm_finish_dynamic_sections): Emit new dynamic tags and tls + trampolines. + (elf_backend_always_size_sections): Define. - * elf64-x86-64.c (elf64_x86_64_check_relocs): Increment - got.refcount for R_X86_64_GOTPCREL/R_X86_64_GOTPCREL64 - relocations against STT_GNU_IFUNC symbol. - (elf64_x86_64_allocate_dynrelocs): Set got.refcount to 0 if - local STT_GNU_IFUNC definition is used. - (elf64_x86_64_relocate_section): Handle got.offset != -1 - for R_X86_64_GOTPCREL/R_X86_64_GOTPCREL64 relocations against - STT_GNU_IFUNC symbol. - -2009-06-01 H.J. Lu - - PR ld/10205 - * elf32-i386.c (elf_howto_table): Add R_386_IRELATIVE. - (elf_i386_reloc_type_lookup): Likewise. - (R_386_tls): Removed. - (R_386_irelative): New. - (R_386_vt_offset): Updated. - (elf_i386_rtype_to_howto): Likewise. - (elf_i386_link_hash_table): Add igotplt, iplt and irelplt. - (elf_i386_link_hash_table_create): Initialize igotplt, - iplt and irelplt. - (elf_i386_check_relocs): Handle STT_GNU_IFUNC symbol first. - (elf_i386_adjust_dynamic_symbol): Likewise. - (elf_i386_allocate_dynrelocs): Likewise. - (elf_i386_relocate_section): Likewise. - (elf_i386_size_dynamic_sections): Set up .iplt and .igot.plt - sections. - (elf_i386_finish_dynamic_symbol): When building a static - executable, use .iplt, .igot.plt and .rel.iplt sections for - STT_GNU_IFUNC symbols. Generate R_386_IRELATIVE relocation for - locally defined STT_GNU_IFUNC symbol. - - * elf64-x86-64.c (x86_64_elf_howto): Add R_X86_64_IRELATIVE. - (x86_64_reloc_map): Likewise. - (R_X86_64_standard): Updated. - (elf64_x86_64_link_hash_table): Add igotplt, iplt and irelplt. - (elf64_x86_64_link_hash_table_create): Initialize igotplt, - iplt and irelplt. - (elf64_x86_64_check_relocs): Handle STT_GNU_IFUNC symbol first. - (elf64_x86_64_adjust_dynamic_symbol): Likewise. - (elf64_x86_64_allocate_dynrelocs): Likewise. - (elf64_x86_64_relocate_section): Likewise. - (elf64_x86_64_size_dynamic_sections): Set up .iplt and .igot.plt - sections. - (elf64_x86_64_finish_dynamic_symbol): When building a static - executable, use .iplt, .igot.plt and .rela.iplt sections for - STT_GNU_IFUNC symbols. Generate R_X86_64_IRELATIVE relocation - for locally defined STT_GNU_IFUNC symbol. - - * reloc.c (BFD_RELOC_386_IRELATIVE): New. - (BFD_RELOC_X86_64_IRELATIVE): Likewise. - - * bfd-in2.h: Regenerated. - * libbfd.h: Likewise. - -2009-06-01 H.J. Lu - - * elf-bfd.h (struct bfd_elf_section_data): Remove indirect_relocs. - (_bfd_elf_make_ifunc_reloc_section): Removed. - (_bfd_elf_is_ifunc_symbol): Likewise. - (_bfd_elf_create_static_ifunc_sections): New. - - * elflink.c (_bfd_elf_adjust_dynamic_symbol): Move STT_GNU_IFUNC - symbol check to ... - (elf_link_add_object_symbols): Here. - (_bfd_elf_link_hash_hide_symbol): Don't clean plt on - STT_GNU_IFUNC symbol. - (elf_link_output_extsym): Call elf_backend_finish_dynamic_symbol - if a STT_GNU_IFUNC symbol is referenced in a non-shared object. - (IFUNC_INFIX): Removed. - (get_ifunc_reloc_section_name): Likewise. - (_bfd_elf_make_ifunc_reloc_section): Likewise. - (_bfd_elf_is_ifunc_symbol): Likewise. - (_bfd_elf_create_static_ifunc_sections): New. - -2009-05-29 H.J. Lu - - * elf32-i386.c (link_hash_newfunc): Add elf_i386_ prefix. - (create_got_section): Likewise. - (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - (set_tls_module_base): Likewise. - (dtpoff_base): Likewise. - (tpoff): Likewise. - (elf_i386_link_hash_table_create): Updated. - (elf_i386_create_dynamic_sections): Likewise. - (elf_i386_check_relocs): Likewise. - (elf_i386_size_dynamic_sections): Likewise. - (elf_i386_relocate_section): Likewise. - - * elf64-x86-64.c (link_hash_newfunc): Add elf64_x86_64_ prefix. - (create_got_section): Likewise. - (allocate_dynrelocs): Likewise. - (readonly_dynrelocs): Likewise. - (set_tls_module_base): Likewise. - (dtpoff_base): Likewise. - (tpoff): Likewise. - (elf64_x86_64_link_hash_table_create): Updated. - (elf64_x86_64_create_dynamic_sections): Likewise. - (elf64_x86_64_check_relocs): Likewise. - (elf64_x86_64_size_dynamic_sections): Likewise. - (elf64_x86_64_relocate_section): Likewise. - -2009-05-28 Nick Clifton - - * targets.c (_bfd_target_vector): Only include plugin target in - all-targets build if BFD_SUPPORTS_PLUGINS is non-zero. - -2009-05-28 Ulrich Weigand - - * elf32-spu.c (struct call_info): New member broken_cycle. - (remove_cycle): Instead of physically removing call_info structures - to break call graph cycles, mark them using the broken_cycle flag. - (mark_overlay_section): Respect broken_cycle flag. - (unmark_overlay_section): Likewise. - (collect_lib_sections): Likewise. - (collect_overlays): Likewise. - (sum_stack): Likewise. - -2009-05-28 Ulrich Weigand - - * elf32-spu.c (insert_callee): Accumulate incoming callee->count. - (mark_functions_via_relocs): Initialize callee->count to 1. - (pasted_function): Likewise. - (spu_elf_auto_overlay): Honor call counts when determining number - of stubs required in software i-cache mode. - -2009-05-27 Rafael Avila de Espindola - - * plugin.c (program_name): Remove. - (plugin_program_name): New. - (bfd_plugin_set_program_name): New. - (try_load_plugin): Use plugin_program_name. - * plugin.h (bfd_plugin_set_program_name): New. - -2009-05-27 Rafael Avila de Espindola - - * aclocal.m4: Include ../config/plugins.m4. - * configure.in: Use AC_PLUGINS. - * configure: Regenerate. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2009-05-27 Nathan Sidwell - - * elf32-ppc.c (ppc_elf_relax_section): Work with a partial - link. - * bout.c (b_out_bfd_relax_section): Reject relocatable links. - * elf32-m10300.c (mn10300_elf_relax_section): Likewise. - * elf32-avr.c (elf32_avr_relax_section): Likewise. - * elf32-frv.c (elf32_avr_relax_section): Likewise. - * elf32-xtensa.c (elf_xtensa_relax_section): Likewise. - * elf64-mmix.c (mmix_elf_relax_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. - * elfxx-sparc.c (_bfd_sparc_elf_relax_section): Likewise. - * reloc.c (bfd_generic_relax_section): Likewise. - * reloc16.c (bfd_coff_reloc16_relax_section): Likewise. - * vms.c (vms_bfd_relax_section): Likewise. - -2009-05-26 H.J. Lu - - * elf-bfd.h (_bfd_elf_is_ifunc_symbol): New. - - * elf32-i386.c (is_indirect_symbol): Renamed to ... - * elflink.c (_bfd_elf_is_ifunc_symbol): This. - - * elf32-i386.c (allocate_dynrelocs): Updated. - (elf_i386_relocate_section): Likewise. - * elf64-x86-64.c (allocate_dynrelocs): Likewise. - (elf64_x86_64_relocate_section): Likewise. - - * elf64-x86-64.c (is_indirect_symbol): Removed. - -2009-05-26 Nick Clifton - - * po/id.po: Updated Indonesian translation. - -2009-05-26 Rafael Avila de Espindola - - * Makefile.am: Run "make dep-am". - (AM_CPPFLAGS): New. - (LIBDL): New. - (ALL_MACHINES): Add cpu-plugin.lo. - (ALL_MACHINES_CFILES): Add cpu-plugin.c. - (BFD32_BACKENDS): Add plugin.lo. - (BFD32_BACKENDS_CFILES): Add plugin.c. - (libbfd_la_LIBADD): Add LIBDL - * archures.c (bfd_architecture): Add bfd_arch_plugin. - (bfd_plugin_arch): Declare. - * bfd-in.h (BFD_SUPPORTS_PLUGINS): New. - * bfd.c (bfd): Add plugin_data. - * config.bfd: Handle the plugin target. - * configure.in: Check for --enable-plugins. - (LT_INIT): Use the dlopen option. - * cpu-plugin.c: New. - * plugin.c: New. - * plugin.h: New. - * targets.c (plugin_vec): Declare. - (_bfd_target_vector): Add plugin_vec. - * Makefile.in: Regenerate. - * bfd-in2.h: Regenerate. - * configure: Regenerate. - -2009-05-26 Alan Modra - - * dep-in.sed: Don't modify .o to .lo here. Output one filename - per line with all lines having continuation backslash. Prefix - first line with "A", following lines with "B". - * Makefile.am (DEP): Don't use dep.sed here. - (DEP1): Run $MKDEP on single files, modify .o to .lo here. Use - dep.sed here on dependencies, sort and uniq. - * Makefile.in: Regenerate. - -2009-05-25 Tristan Gingold - - * makefile.vms: Add verilog.obj to object list OBJS. - -2009-05-24 Alan Modra - - * bfdio.c (bfd_seek): Formatting. Ensure newly allocated memory - for BFD_IN_MEMORY is cleared. - (bfd_bwrite): Zero excess memory allocated. - -2009-05-22 Julian Brown - - * elf32-arm.c (THUMB16_BCOND_INSN, THUMB32_INSN, THUMB32_B_INSN): New - macros. - (elf32_arm_stub_a8_veneer_b_cond, elf32_arm_stub_a8_veneer_b) - (elf32_arm_stub_a8_veneer_blx): New stub sequences. - (elf32_arm_stub_type): Add arm_stub_a8_veneer_b_cond, - arm_stub_a8_veneer_b and arm_stub_a8_veneer_blx. - (elf32_arm_stub_hash_entry): Add target_addend, orig_insn fields. - (a8_erratum_fix, a8_erratum_reloc): New structs. - (elf32_arm_link_hash_table): Add a8_erratum_fixes, - num_a8_erratum_fixes, fix_cortex_a8 fields. - (elf32_arm_link_hash_table_create): Zero fix_cortex_a8. - (elf32_arm_add_stub): Split into two parts, creating... - (elf32_arm_create_or_find_stub_sec): New function. - (elf32_arm_final_link_relocate): Add forward declaration. - (arm_build_one_stub): Add support for THUMB32_TYPE, Thumb-2 - relocations, multiple relocations per stub. - (find_stub_size_and_template): New (using parts of arm_size_one_stub). - (arm_size_one_stub): Use find_stub_size_and_template. - (a8_reloc_compare): New. - (find_thumb_glue): Add forward declaration. - (cortex_a8_erratum_scan): New. - (elf32_arm_size_stubs): Add Cortex-A8 erratum workaround support. - (bfd_elf32_arm_set_cortex_a8_fix): New. - (bfd_elf32_arm_set_target_relocs): Add fix_cortex_a8 argument. - (arm_map_one_stub): Add THUMB32_TYPE support. - (a8_branch_to_stub_data): New. - (make_branch_to_a8_stub): New. - (elf32_arm_write_section): Add Cortex-A8 erratum workaround support. - * bfd-in.h (bfd_elf32_arm_set_cortex_a8_fix): New. - (bfd_elf32_arm_set_target_relocs): Add argument for controlling - Cortex-A8 erratum workaround. - * bfd-in2.h: Regenerate. - -2009-05-22 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - -2009-05-21 Alan Modra - - * elflink.c (elf_link_input_bfd): Correct *pindex change in last - commit. - -2009-05-21 Alan Modra - - * elf-bfd.h (struct elf_backend_data - ): Return an int. - * elf64-ppc.c (ppc64_elf_output_symbol_hook): Return 2 to drop - symbols on deleted .opd entries. - * elflink.c (elf_link_output_sym): Return without outputting sym - if output_symbol_hook returns 2. - (elf_link_output_extsym): Don't assign h->indx when symbol discarded. - Abort if we must not discard sym. - (elf_link_input_bfd): Similarly, don't set finfo->indices for - local syms. - (bfd_elf_final_link): Adjust elf_link_output_sym calls. - * elf-vxworks.c (elf_vxworks_link_output_symbol_hook): Adjust for - elf_backend_link_output_symbol_hook return type change. - * elf32-arm.c (output_arch_syminfo): Likewise. - (elf32_arm_output_map_sym, elf32_arm_output_stub_sym): Likewise. - (elf32_arm_output_arch_local_syms): Likewise. - * elf32-cr16c.c (elf32_cr16c_link_output_symbol_hook): Likewise. - * elf32-score.c (s3_bfd_score_elf_link_output_symbol_hook): Likewise. - (bfd_score_elf_link_output_symbol_hook): Likewise. - * elf32-score.h (s7_bfd_score_elf_link_output_symbol_hook): Likewise. - * elf32-score7.c (s7_bfd_score_elf_link_output_symbol_hook): Likewise. - * elf32-sh64.c (sh64_elf_link_output_symbol_hook): Likewise. - * elf32-spu.c (spu_elf_output_symbol_hook): Likewise. - * elf32-v850.c (v850_elf_link_output_symbol_hook): Likewise. - * elf64-hppa.c (elf64_hppa_link_output_symbol_hook): Likewise. - * elf64-mmix.c (mmix_elf_link_output_symbol_hook): Likewise. - * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): Likewise. - * elf64-sparc.c (elf64_sparc_output_arch_syms): Likewise. - * elfxx-mips.c (_bfd_mips_elf_link_output_symbol_hook): Likewise. - * elfxx-mips.h (_bfd_mips_elf_link_output_symbol_hook): Likewise. - -2009-05-21 Alan Modra - - * elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Don't segfault on - out of range .opd symbols. - -2009-05-21 Dave Korn - - * coffgen.c (coff_print_symbol): Use bfd_fprintf_vma, not - fprintf_vma directly. - * peXXigen.c (pe_print_edata): Likewise. - (pe_print_pdata): Likewise. - (_bfd_XX_print_ce_compressed_pdata): Likewise. - (_bfd_XX_print_private_bfd_data_common): Likewise. - -2009-05-19 Dave Korn - - * cofflink.c (process_embedded_commands): Ignore "-aligncomm". - -2009-05-15 Andrew Stubbs - Paul Brook - - * elf32-arm.c (elf32_arm_fix_exidx_coverage): Don't attempt to - fix discarded sections. - -2009-05-14 Ulrich Weigand - - * elf32-spu.c (mark_overlay_section): Move .init and .fini - sections into the software icache. - -2009-05-14 Ulrich Weigand - - * elf32-spu.c (build_stub): Always build "compact" sofware - i-cache stubs. - -2009-05-14 Ulrich Weigand - - * elf32-spu.c (struct spu_link_hash_table): Add fromelem_size_log2. - (spu_elf_setup): Initialize it. - (spu_elf_size_stubs): Move .ovtab into .bss for software i-cache. - Update to new-sytle cache manager data structures. - (spu_elf_build_stubs): Generate new-style cache manager data - structures and symbols. - (spu_elf_auto_overlay): Update size computation. - -2009-05-14 Ulrich Weigand - - * elf32-spu.c (spu_elf_modify_segment_map): Move all PF_OVERLAY - segments first amongst the program headers. - -2009-05-14 Ulrich Weigand - - * elf32-spu.c (spu_elf_relocate_section): Only encode overlay index - into addresses for relocation types that look at high bits. Remove - special handling of relocation overflow warnings. - -2009-05-14 Ulrich Weigand - - * elf32-spu.c (mark_functions_via_relocs): Handle cycles in the - control flow graph between fragments of a function. - -2009-05-14 Ulrich Weigand - - * elf32-spu.c (spu_elf_size_stubs): Even in software i-cache mode, - generate only a 16-byte .toe section. - (spu_elf_build_stubs, spu_elf_auto_overlay): Likewise. - -2009-05-14 Alan Modra - - * elf32-spu.c (spu_elf_size_stubs): Split out section placement to.. - (spu_elf_place_overlay_data): ..here. New function. - * elf32-spu.h (spu_elf_place_overlay_data): Declare. - -2009-05-13 Andrew Jenner - - * elf32-arm.c: Move sysdep.h to start of file. - -2009-05-11 Ulrich Weigand - - * elf32-spu.c (spu_elf_find_overlays): Don't use .ovl.init lma as - start of overlays. - (spu_elf_build_stubs): Don't define __icache_tagbase. Define - __icache_tag_array and __icache_tag_array_size. - -2009-05-11 Masaki Muranaka - - * elf32-bfin.c (bfin_bfd_reloc_type_lookup): Remove unnecessary - ATTRIBUTE_UNUSED. - (bfinfdpic_link_omit_section_dynsym): Likewise. - (elf32_bfinfdpic_finish_dynamic_sections): Likewise. - -2009-05-05 Paul Brook - - * bfd-in.h (elf32_arm_fix_exidx_coverage): Add prototype. - * bfd-in2.h: Regenerate. - * elf32-arm.c (arm_unwind_edit_type, arm_unwind_table_edit): Define. - (_arm_elf_section_data): Add text and exidx fields. - (add_unwind_table_edit, get_arm_elf_section_data, adjust_exidx_size, - insert_cantunwind_after, elf32_arm_fix_exidx_coverage, offset_prel31, - copy_exidx_entry): New functions. - (elf32_arm_write_section): Fixup .ARM.exidx contents. - -2009-05-05 Christophe lyon - - * elf32-arm.c (DEF_STUBS): New helper define. - (DEF_STUB): Likewise. - (stub_def): New type. - (stub_definitions): New array, containing stub template pointers - and sizes. - (arm_size_one_stub): Make use of stub_definitions. - -2009-05-04 Dave Korn - - * elflink.c (find_version_for_sym): Remove from here, ... - * linker.c (bfd_find_version_for_sym): ... rename, replace - here, make public and update all callers. - * bfd-in2.h: Regenerate. - -2009-04-30 Nick Clifton - - * elf-bfd.h (struct bfd_elf_section_data): Add indirect_relocs - section pointer. - (struct elf_obj_data): Add has_ifunc_symbols boolean. - * elf.c (swap_out_syms): Convert BSF_GNU_INDIRECT_FUNCTION flags - into a STT_GNU_IFUNC symbol type. - (_bfd_elf_is_function_type): Accept STT_GNU_IFUNC as a function - type. - (_bfd_elf_set_osabi): Set the osasbi field to ELFOSABI_LINUX if - the binary contains ifunc symbols. - * elfcode.h (elf_slurp_symbol_table): Translate the STT_GNU_IFUNC - symbol type into a BSF_GNU_INDIRECT_FUNCTION flag. - * elf32-i386.c (is_indirect_function): New function. - (elf_i386_check_relocs): Create an ifunc output section. - (allocate_dynrelocs): Create dynamic relocs in the ifunc output - section if necessary. - (elf_i386_relocate_section): Emit a reloc against an ifunc symbol - if necessary. - (elf_i386_add_symbol_hook): New function. Set the - has_ifunc_symbols field of the elf_obj_data structure if an ifunc - symbol is encountered. - (elf_backend_post_process_headers): Define. - (elf_backend_add_symbol_hook): Define. - (elf_i386_post_process_headers): Rename to - elf_i388_fbsd_post_process_headers. - * elf64-x86_64.c (IS_X86_64_PCREL_TYPE): New macro. - (is_indirect_function): New function. - (elf64_x86_64_check_relocs): Create an ifunc output section. - (allocate_dynrelocs): Create dynamic relocs in the ifunc output - section if necessary. - (elf64_x86_64_relocate_section): Emit a reloc against an ifunc - symbol if necessary. - (elf_i386_add_symbol_hook): Set the has_ifunc_symbols field of the - elf_obj_data structure if an ifunc symbol is encountered. - (elf_backend_post_process_headers): Define. - * elflink.c (_bfd_elf_adjust_dynamic_symbol): Always create a PLT - if we have ifunc symbols to handle. - (get_ifunc_reloc_section_name): New function. Computes the name - for an ifunc section. - (_bfd_elf_make_ifunc_reloc_section): New function. Creates a - section to hold ifunc relocs. - * syms.c (BSF_GNU_INDIRECT_FUNCTION): Define. - (bfd_print_symbol_vandf): Handle ifunc symbols. - (bfd_decode_symclass): Likewise. - * bfd-in2.h: Regenerate. - -2009-04-30 Joseph Myers - - * elf32-arm.c (elf32_arm_check_relocs): Give errors for absolute - MOVW and MOVT relocations in a shared library link. - -2009-04-27 Anthony Green - - * verilog.c: New file. - * Makefile.am (BFD32_LIBS): Add verilog.c. - (BFD32_LIBS_CFILES): Add verilog.c. - (verilog.lo): New build rule. - * Makefile.in: Rebuilt. - * targets.c: Add verilog support. - * bfd.c (tdata union): Add Verilog private data field. - * bfd-in2.h: Regenerate. - -2009-04-27 H.J. Lu - - * peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Don't - copy pe_opthdr. - -2009-04-23 Matthias Klose - - * peXXigen.c (_bfd_XXi_swap_sym_in): Initialize `name'. - -2009-04-22 Christophe Lyon +2011-01-06 H.J. Lu - PR9743 - * elf32-arm.c (arm_type_of_stub): Handle R_ARM_THM_JUMP24, - R_ARM_JUMP24 and R_ARM_PLT32 relocations. - (elf32_arm_size_stubs): Likewise. - (record_thumb_to_arm_glue): Deleted unused function. - (bfd_elf32_arm_process_before_allocation): No longer handle - R_ARM_THM_JUMP24, R_ARM_JUMP24 and R_ARM_PLT32 relocations here. - (elf32_arm_final_link_relocate): Handle R_ARM_THM_JUMP24, - R_ARM_JUMP24 and R_ARM_PLT32 relocations. - -2009-04-21 Daniel Jacobowitz - - * elf32-arm.c (INTERWORK_FLAG): Check BFD_LINKER_CREATED. - (elf32_arm_write_section): Declare early. - (elf32_arm_size_stubs): Skip non-stub sections in the stub BFD. - (arm_allocate_glue_section_space): Exclude empty sections. - (ARM_GLUE_SECTION_FLAGS): Add SEC_LINKER_CREATED. - (bfd_elf32_arm_add_glue_sections_to_bfd): Do not skip the stub - BFD. - (elf32_arm_output_glue_section, elf32_arm_final_link): New. - (elf32_arm_merge_eabi_attributes): Skip the stub BFD. - (elf32_arm_size_dynamic_sections): Allocate interworking - sections here. - (bfd_elf32_bfd_final_link): Define. - -2009-04-21 H.J. Lu - - * coff-ia64.c (COFF_PAGE_SIZE): Changed to 8K. - - * coffcode.h (coff_compute_section_file_positions): Clear - D_PAGED if PE section alignment is smaller than COFF_PAGE_SIZE. - - * libcoff-in.h (pe_tdata): Remove force_minimum_alignment and - force_minimum_alignment. - - * libcoff.h: Regenerated. - - * pei-ia64.c (PEI_TARGET_SUBSYSTEM): Removed. - (PEI_FORCE_MINIMUM_ALIGNMENT): Likewise. - - * peicode.h (pe_mkobject): Don't set force_minimum_alignment - nor target_subsystem. - - * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Don't check - force_minimum_alignment nor target_subsystem. - -2009-04-21 Kai Tietz - - * coff-x86_64.c (PEI_HEADERS): Protect includes. - (bfd_pe_print_pdata): Remove #ifdef PE variation. - * pei-x86_64.c (PEI_HEADERS): Define to prevent double - include in coff-x86_64.c of headers. - (PDATA_ROW_SIZE): New define. - (pex_regs[]): New static array. - (pex64_get_runtime_function): New static function. - (pex64_get_unwind_info): Likewise. - (pex64_get_scope_entry): Likewise. - (pex64_xdata_print_uwd_codes): Likewise. - (pex64_get_section_by_rva): Likewise. - (pex64_dump_xdata): Likewise. - (pex64_bfd_print_pdata): Likewise. - (bfd_pe_print_pdata): Define as pex64_bfd_print_pdata. - * peXXigen.c (_bfd_pex64_print_pdata): Removed implementation. - * libpei.h (_bfd_pex64_print_pdata): Removed declaration. - -2009-04-19 Peter O'Gorman - Alan Modra - Dave Korn - - * peXXigen.c (_bfd_XXi_swap_sym_in): Fix name handling w.r.t - long names and non-NUL-terminated strings. - -2009-04-17 H.J. Lu - - * bfd-in2.h: Regenerated. - -2009-04-17 H.J. Lu - - * peXXigen.c (_bfd_XX_print_private_bfd_data_common): Replace - IMAGE_SUBSYSTEM_EFI_ROM with IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER. - -2009-04-17 H.J. Lu - - PR binutils/10074 - * coffcode.h (bfd_pei_p): New. - - * config.bfd: Remove bfd_efi_bsdrv_ia32_vec, - bfd_efi_rtdrv_ia32_vec, bfd_efi_bsdrv_x86_64_vec, - bfd_efi_rtdrv_x86_64_vec, bfd_efi_bsdrv_ia64_vec and - bfd_efi_rtdrv_ia64_vec. Replace bfd_efi_app_ia32_vec, - bfd_efi_app_x86_64_vec and bfd_efi_app_ia64_vec with - i386pei_vec, x86_64pei_vec and bfd_pei_ia64_vec, respectively. - - * configure.in: Remove bfd_efi_bsdrv_ia32_vec, - bfd_efi_rtdrv_ia32_vec, bfd_efi_bsdrv_x86_64_vec, - bfd_efi_rtdrv_x86_64_vec, - bfd_efi_bsdrv_ia64_vec and bfd_efi_rtdrv_ia64_vec. Replace - bfd_efi_ia64_vec with bfd_pei_ia64_vec. - * targets.c: Likewise. - - * configure: Regenerated. - * libcoff.h: Likewise. - * Makefile.in: Likewise. - - * efi-app-ia32.c: Removed. - * efi-app-x86_64.c: Likewise. - * efi-bsdrv-ia32.c: Likewise. - * efi-bsdrv-ia64.c: Likewise. - * efi-bsdrv-x86_64.c: Likewise. - * efi-rtdrv-ia32.c: Likewise. - * efi-rtdrv-ia64.c: Likewise. - * efi-rtdrv-x86_64.c: Likewise. - * efi-rtdrv-ia32.c: Likewise. - - * efi-app-ia64.c: Moved to ... - * pei-ia64.c: This. - (TARGET_SYM): Set to bfd_pei_ia64_vec. - (TARGET_NAME): Set to pei-ia64. - - * libpei.h (bfd_target_pei_p): Removed. - (bfd_target_pei_arch): Likewise. - (bfd_target_efi_app_p): Likewise. - (bfd_target_efi_app_arch): Likewise. - (bfd_target_efi_bsdrv_p): Likewise. - (bfd_target_efi_bsdrv_arch): Likewise. - (bfd_target_efi_rtdrv_p): Likewise. - (bfd_target_efi_rtdrv_arch): Likewise. - (bfd_pe_executable_p): Likewise. - - * Makefile.am (BFD32_BACKENDS): Remove efi-app-ia32.lo, - efi-bsdrv-ia32.lo and efi-rtdrv-ia32.lo. - (BFD32_BACKENDS_CFILES): Remove efi-app-ia32.c, efi-bsdrv-ia32.c - and efi-rtdrv-ia32.c. - (BFD64_BACKENDS): Remove efi-app-ia64.lo, efi-bsdrv-ia64.lo, - efi-rtdrv-ia64.lo, efi-app-x86_64.lo, efi-bsdrv-x86_64.lo and - efi-rtdrv-x86_64.lo. Add pei-ia64.lo. - (BFD64_BACKENDS_CFILES): Remove efi-app-ia64.c, efi-bsdrv-ia64.c, - efi-rtdrv-ia64.c, efi-app-x86_64.c, efi-bsdrv-x86_64.c and - efi-rtdrv-x86_64.c. Add pei-ia64.c. - (efi-app-ia64.lo): Removed. - (efi-bsdrv-ia32.lo): Likewise. - (efi-rtdrv-ia32.lo): Likewise. - (efi-app-ia64.lo): Likewise. - (efi-bsdrv-ia64.lo): Likewise. - (efi-rtdrv-ia64.lo): Likewise. - (efi-app-x86_64.lo): Likewise. - (efi-bsdrv-x86_64.lo): Likewise. - (efi-rtdrv-x86_64.lo): Likewise. - (pei-ia64.lo): New. - - * peicode.h (coff_swap_scnhdr_in): Replace bfd_pe_executable_p - with bfd_pei_p. - (arch_type): Removed. - (pe_arch): Likewise. - (pe_bfd_object_p): Just return coff_object_p. + * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Optimized. - * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Replace - bfd_pe_executable_p with bfd_pei_p. +2011-01-06 H.J. Lu -2009-04-17 Christophe Lyon + PR ld/12366 + PR ld/12371 + * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Properly + handle symbols marked with regular reference, but not non-GOT + reference when building shared library. - * elf32-arm.c (elf32_arm_size_stubs): Handle long branches through - PLT entries to an undefined symbol when generating a shared + * elf32-i386.c (elf_i386_gc_sweep_hook): Properly handle + local and global STT_GNU_IFUNC symols when building shared library. + * elf64-x86-64.c (elf_x86_64_gc_sweep_hook): Likewise. -2009-04-17 Nick Clifton - - PR 9909 - * coffcode.h (handle_COMDAT): Allow for external COMDAT symbols. - -2009-04-16 Richard Sandiford - - * aout-adobe.c (aout_32_bfd_define_common_symbol): Define. - * aout-target.h (MY_bfd_define_common_symbol): Likewise. - * aout-tic30.c (MY_bfd_define_common_symbol): Likewise. - * binary.c (binary_bfd_define_common_symbol): Likewise. - * bout.c (b_out_bfd_define_common_symbol): Likewise. - * coff-alpha.c (_bfd_ecoff_bfd_define_common_symbol): Likewise. - * coff-mips.c (_bfd_ecoff_bfd_define_common_symbol): Likewise. - * coffcode.h (coff_bfd_define_common_symbol): Likewise. - * elfxx-target.h (bfd_elfNN_bfd_define_common_symbol): Likewise. - * i386msdos.c (msdos_bfd_define_common_symbol): Likewise. - * i386os9k.c (os9k_bfd_define_common_symbol): Likewise. - * ieee.c (ieee_bfd_define_common_symbol): Likewise. - * ihex.c (ihex_bfd_define_common_symbol): Likewise. - * libbfd-in.h (_bfd_nolink_bfd_define_common_symbol): Likewise. - * mach-o.c (bfd_mach_o_bfd_define_common_symbol): Likewise. - * mmo.c (mmo_bfd_define_common_symbol): Likewise. - * nlm-target.h (nlm_bfd_define_common_symbol): Likewise. - * oasys.c (oasys_bfd_define_common_symbol): Likewise. - * pef.c (bfd_pef_bfd_define_common_symbol): Likewise. - * ppcboot.c (ppcboot_bfd_define_common_symbol): Likewise. - * som.c (som_bfd_define_common_symbol): Likewise. - * srec.c (srec_bfd_define_common_symbol): Likewise. - * tekhex.c (tekhex_bfd_define_common_symbol): Likewise. - * versados.c (versados_bfd_define_common_symbol): Likewise. - * vms.c (vms_bfd_define_common_symbol): Likewise. - * xcoff-target.h (_bfd_xcoff_bfd_define_common_symbol): Likewise. - * xsym.c (bfd_sym_bfd_define_common_symbol): Likewise. - * coff-rs6000.c (rs6000coff_vec): Add _bfd_xcoff_define_common_symbol. - (pmac_xcoff_vec): Likewise. - * coff64-rs6000.c (rs6000coff64_vec): Likewise. - (aix5coff64_vec): Likewise. - * linker.c (bfd_generic_define_common_symbol): New function. - * targets.c (BFD_JUMP_TABLE_LINK): Add NAME##_bfd_define_common_symbol. - (_bfd_define_common_symbol): New field. - * libcoff-in.h (_bfd_xcoff_define_common_symbol): Declare. - * xcofflink.c (_bfd_xcoff_define_common_symbol): New function. - (xcoff_build_ldsyms): Don't set XCOFF_DEF_REGULAR for common - symbols here. - * bfd-in2.h: Regenerate. - * libbfd.h: Likewise. - * libcoff.h: Likewise. - -2009-04-15 Anthony Green - - * targets.c: Add moxie support. - * Makefile.am: Ditto. - * Makefile.in: Rebuilt. - * cpu-moxie.c, elf32-moxie.c: New files. - * archures.c: Add moxie support. - * configure.in: Add moxie support. - * configure: Rebuilt. - * config.bfd, archures.c: Add moxie support. - * bfd-in2.h: Rebuilt. - -2009-04-15 Christophe Lyon - - * elf32-arm.c (elf32_arm_final_link_relocate): Don't convert ARM - branch to an undef weak symbol into a jump to next instruction if - a PLT entry will be created. - -2009-04-14 Dave Korn - - * coffgen.c (make_a_section_from_file): Set the backend long - section names enable if long section names found on input. - * coffcode.h: Extend long section names documentation to match. - -2009-04-08 H.J. Lu - - * elflink.c (elf_link_add_object_symbols): Warn alternate ELF - machine code. - -2009-04-07 DJ Delorie - - * archures.c: Add bfd_mach_mep_c5. - * bfd-in2.h: Likewise. - * cpu-mep.c: Add bfd_c5_arch. - * elf32-mep.c: Support it. - -2009-04-07 H.J. Lu - - * elflink.c (_bfd_elf_section_already_linked): Add `\n' for - info->callbacks->einfo. - * linker.c (_bfd_generic_section_already_linked): Likewise. - -2009-04-06 DJ Delorie - - * elf32-h8300.c (elf32_h8_relax_section): Relax MOVA opcodes. - -2009-04-06 H.J. Lu +2011-01-05 DJ Delorie - * coff-x86_64.c (bfd_pe_print_pdata): Defined to - _bfd_pex64_print_pdata only if PE is defined. - - * libpei.h (_bfd_pep_print_x64_pdata): Renamed to ... - (_bfd_pex64_print_pdata): This. - - * peXXigen.c (_bfd_pep_print_x64_pdata): Renamed to ... - (_bfd_pex64_print_pdata): This. Defined only if COFF_WITH_pex64 - is defined. - -2009-04-05 Kai Tietz - - * coff-x86_64.c (bfd_pe_print_pdata): Define as - _bfd_pep_print_x64_pdata. - * libpei.h (_bfd_pep_print_x64_pdata): Add prototype. - * peXXigen.c (_bfd_pep_print_x64_pdata): New. - -2009-04-02 Sterling Augustine - - * elf32-xtensa.c (relax_property_section): Always set r_offset - to zero. - -2009-04-02 Christophe Lyon - - * elf32-arm.c (elf32_arm_stub_long_branch_v4t_thumb_thumb, - elf32_arm_stub_long_branch_v4t_thumb_thumb_pic): Two new long - branch stubs. - (elf32_arm_stub_type): New enum values for the two new stubs. - (arm_type_of_stub): Make use of the two new stubs. - (arm_size_one_stub): Handle the two new stubs. - -2009-04-01 Matt Thomas - - * elf32-vax.c (elf_vax_check_relocs): Do not put relocations against - hidden symbols into the GOT or PLT.GOT. - (elf_vax_relocate_section): Do not emit a PCREL reloc - into a shared object if it is against a hidden symbol. - -2009-04-01 Richard Sandiford - - * xcofflink.c (xcoff_archive_info): Add contains_shared_object_p - and know_contains_shared_object_p. - (xcoff_archive_contains_shared_object_p): Add an "info" parameter. - Cache the result in the archive_info table. - (xcoff_auto_export_p): Add an "info" parameter and update the - call to xcoff_archive_contains_shared_object_p. - (xcoff_mark_auto_exports): Update accordingly. - (xcoff_post_gc_symbol): Likewise. - -2009-04-01 Richard Sandiford - - * xcofflink.c (bfd_link_input_bfd): Treat __rtinit as C_HIDEXT - rather than C_EXT. - -2009-04-01 Richard Sandiford - - * coff-rs6000.c (member_layout): New structure. - (archive_iterator): Likewise. - (member_layout_init): New function. - (archive_iterator_begin): Likewise. - (archive_iterator_next): Likewise. - (xcoff_write_armap_old): Use the new iterator functions. - (do_shared_object_padding): Delete. - (xcoff_write_armap_big): Use the new iterator functions. Simplify - handling of arch_info. - (xcoff_write_archive_contents_old): Allocate arelt_data in the - first loop rather than the second. Allocate a member header if - there isn't one, then work out the stat information and length - in the first loop too. Use the new iterators for the second loop. - (xcoff_write_archive_contents_big): Likewise. - -2009-04-01 Richard Sandiford - - * bfd-in.h (bfd_xcoff_split_import_path): Declare. - (bfd_xcoff_set_archive_import_path): Likewise. + * reloc.c: Add BFD_RELOC_RX_OP_NEG. + * libbfd.h: Regenerate. * bfd-in2.h: Regenerate. - * xcofflink.c: Include libiberty.h. - (xcoff_archive_info): New structure. - (xcoff_archive_info_hash): New function. - (xcoff_archive_info_eq): Likewise. - (xcoff_get_archive_info): Likewise. - (_bfd_xcoff_bfd_link_hash_table_create): Initialize archive_info. - (bfd_xcoff_split_import_path): New function. - (bfd_xcoff_set_archive_import_path): Likewise. - (xcoff_set_import_path): Move earlier in file. - (xcoff_link_add_dynamic_symbols): Set the import path of a non-archive - object to the the directory part of the bfd's filename. Get the - import path and filename of an archive object from the archive's - xcoff_tdata, initializing it if necessary. Update use of - import_file_id. - (bfd_link_input_bfd): Update use of import_file_id. - (xcoff_write_global_symbol): Likewise. - -2009-04-01 Richard Sandiford - - * xcofflink.c (xcoff_link_hash_table): Moved from include/coff/xcoff.h. - -2009-04-01 Richard Sandiford - - * xcofflink.c (xcoff_link_create_extra_sections): Don't create - a .loader section for relocatable links. - (xcoff_need_ldrel_p): New function. - (xcoff_mark): Use it. - (bfd_xcoff_link_count_reloc): Only count loader relocs if there's - a loader section. - (xcoff_build_ldsym): New function, split out from... - (xcoff_build_ldsyms): ...here. Rename to... - (xcoff_post_gc_symbol): ...this. Only export symbols, and only - call xcoff_build_ldsym, if there's a loader section. - (xcoff_build_loader_section): New function, extracted verbatim from... - (bfd_xcoff_size_dynamic_sections): ...here. Only call it if - there's a loader section. Only add an __rtinit loader symbol - if there's a loader section. Update after above name change. - (xcoff_symbol_section, xcoff_create_ldrel): New functions. - (bfd_link_input_bfd): Use xcoff_need_ldrel_p, xcoff_symbol_section - and xcoff_create_ldrel. - (xcoff_write_global_symbol): Use xcoff_create_ldrel. - (xcoff_reloc_link_order): Likewise, but only call it if there's - a loader section. Use xcoff_symbol_section. - (_bfd_xcoff_bfd_final_link): Only use fdinfo.ldrel and fdinfo.ldsym - if there's a loader section. - -2009-04-01 Richard Sandiford - - * xcofflink.c (bfd_link_input_bfd): Fix buffer overrun. - -2009-04-01 Christophe Lyon - - * elf32-arm.c (group_sections): Rewrite loops for better - readability. - -2009-03-30 DJ Delorie - - * elflink.c (elf_link_input_bfd): Don't try to resolve complex - relocs when doing a relocatable link. - -2009-03-28 Mark Mitchell - - * coff-arm.c (coff_arm_merge_private_bfd_data): Use "error:", not - "ERROR:", in error messages. - * cpu-arm.c (bfd_arm_merge_machines): Likewise. - * elf-attrs.c (_bfd_elf_merge_object_attributes): Likewise. - * elf32-arm.c (tag_cpu_arch_combine): Likewise. - (elf32_arm_merge_eabi_attributes): Likewise. - (elf32_arm_merge_private_bfd_data): Likewise. - -2009-03-27 Nick Clifton - - * section.c (bfd_get_section_contents): Detect and handle the case - where a section has the SEC_IN_MEMORY flag set but no actual - contents allocated. - -2009-03-26 Alan Modra - - PR 6494 - * elf.c (copy_elf_program_header): Do not check that PT_GNU_RELRO - p_filesz and p_memsz are equal. Use p_memsz as the segment size. - (assign_file_positions_for_non_load_sections): Zap PT_GNU_RELRO - if we don't find matching PT_LOAD when copying. - -2009-03-25 M R Swami Reddy - - * elf32-crx.c (crx_elf_howto_table): Zero the src_mask field of - the reloc descriptions. - -2009-03-25 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section) - : Handle COMMON symbols. - : Ditto. + * elf32-rx.c: Add it to the list, corresponding to R_RX_OPneg. -2009-03-24 H.J. Lu +2011-01-03 H.J. Lu - * cpu-i386.c (bfd_x86_64_arch_intel_syntax): Make it static. + * cpu-i386.c (bfd_i386_compatible): New. + (bfd_x64_32_arch_intel_syntax): Replace bfd_default_compatible + with bfd_i386_compatible. + (bfd_x86_64_arch_intel_syntax): Likewise. (bfd_i386_arch_intel_syntax): Likewise. (i8086_arch): Likewise. + (bfd_x64_32_arch): Likewise. (bfd_x86_64_arch): Likewise. + (bfd_i386_arch): Likewise. -2009-03-24 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section): : Allow use of non-local - symbols for non-allocated sections. Don't check whether to - generate R_CRIS_DTPMOD for non-allocated sections. - (cris_elf_gc_sweep_hook) : Don't - handle relocation GC:ing if applied to non-allocated section. - (cris_elf_check_relocs): Similar. - - * elf32-cris.c (cris_elf_relocate_section) - : Don't include the TLS size - when emitting a known TP offset in the GOT. - -2009-03-23 Alan Modra - - * elf64-ppc.c (synthetic_opd): Delete. - (compare_symbols): Look for .opd name rather than section match. - (ppc64_elf_get_synthetic_symtab): Likewise. - -2009-03-21 Alan Modra - - * elf32-ppc.c (is_pic_glink_stub): Delete. - (is_nonpic_glink_stub): New function. - (ppc_elf_get_synthetic_symtab): Check for last non-pic stub rather - than first pic one. - (struct ppc_elf_link_hash_table ): Comment fix. - -2009-03-20 Martin Schwidefsky - Andreas Krebbel - - * elf32-s390.c (elf_s390_check_relocs): Use the SYMBOL_* - macros for visibilty and locality checks. - (elf_s390_adjust_dynamic_symbol): Likewise. - (allocate_dynrelocs): Likewise. - (elf_s390_relocate_section): Likewise. - (elf_s390_finish_dynamic_symbol): Likewise. - * elf64-s390.c (elf_s390_check_relocs): Likewise. - (elf_s390_adjust_dynamic_symbol): Likewise. - (allocate_dynrelocs): Likewise. - (elf_s390_relocate_section): Likewise. - (elf_s390_finish_dynamic_symbol): Likewise. - -2009-03-19 Kai Tietz - - * bfd-in2.h: Regenerated. - * coffcode.h (sec_to_styp_flags): For pe-coff add SEC_READONLY - for debugging sections and map memory read/write dependent on - SEC_COFF_NOREAD. - (styp_to_sec_flags): Set SEC_COFF_NOREAD for sections - without memory read flags set. - * section.c: Add SEC_COFF_NOREAD to section flags. - -2009-03-19 Andreas Schwab - - * elf32-hppa.c (final_link_relocate): Cast bfd_vma values to long - for format string. - -2009-03-19 Alan Modra - - * elf32-spu.c (spu_elf_find_overlays): Separate error return from - "no overlays" return. If there are overlays, create overlay - manager entry symbols here, so that.. - (spu_elf_build_stubs): ..we don't need to set them up here. - Simplify entry symbol tests. - * elf32-spu.h (spu_elf_find_overlays): Update prototype. - -2009-03-18 Mark Kettenis - - * elf.c (elfcore_grok_openbsd_procinfo) - (elfcore_grok_openbsd_note): New functions. - (elf_parse_notes): Handle notes from OpenBSD ELF core files. - -2009-03-18 Alan Modra - - * vms-hdr.c: Don't include alloca.h. - * elf32-m68hc1x.c: Include alloca-conf.h. - * xsym.c: Likewise. - * elf64-hppa.c: Likewise. Remove existing #if's handling alloca. - * som.c: Likewise. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2009-03-17 Daniel Jacobowitz - - * elf32-arm.c (elf32_arm_check_relocs): Correct symbian_p test. - -2009-03-17 Alan Modra - - * elf32-spu.h (struct spu_elf_params): ovly_flavour now only 1 bit. - Add compact_stub. - (emum _ovly_flavour): Delete ovly_compact, ovly_none. - * elf32-spu.c (struct spu_link_hash_table): Replace ovly_load and - ovly_return fields with ovly_entry[2]. Adjust all users. - (spu_elf_find_overlays): Set ovly_entry[1] from __icache_call_handler - when soft-icache. - (spu_elf_build_stubs): Likewise. - (ovl_stub_size): Change arg to spu_elf_params pointer. Adjust for - ovly_flavour changes. Update all callers. - (ovl_stub_size_log2): New function. - (build_stub): Handle compact icache stubs. Use different manager - entry point for stubs in non-icache area. - (spu_elf_size_stubs): Don't allocate space for indirect branch - descriptors. - (spu_elf_build_stubs): And don't built them. - -2009-03-16 Andrew Stubbs - - * dwarf2.c (read_section): Always use rawsize, if available. - -2009-03-16 Alan Modra - - * simple.c (bfd_simple_get_relocated_section_contents): Use larger - of rawsize and size for buffer. - -2009-03-15 Ulrich Weigand - - * elf32-spu.c (spu_elf_check_vma): Do not reset auto_overlay - parameter just because fixed sections fit into local store. - (spu_elf_auto_overlay): Do not declare as "noreturn". Skip - generating overlays if fixed sections plus reserved stack - and heap space fit into local store. - -2009-03-15 Alan Modra - - * elf32-spu.c (build_stub): Correct icache set_id. - (spu_elf_relocate_section): Likewise. - -2009-03-14 Richard Sandiford - - * xcofflink.c (xcoff_link_check_archive_element): Only free the - symbol table if it was created by the current call. - -2009-03-14 Richard Sandiford - - * xcofflink.c (xcoff_build_ldsyms): Give imported descriptors - class XMC_DS rather than XMC_UA. - -2009-03-14 Richard Sandiford - - * bfd-in.h (bfd_xcoff_size_dynamic_sections): Replace the - bfd_boolean export_defineds parameter with an unsigned int - auto_export_flags parameter. - * bfd-in2.h: Regenerate. - * xcofflink.c (xcoff_archive_contains_shared_object_p): New function, - split out from xcoff_build_ldsyms. - (xcoff_covered_by_expall_p): New function. - (xcoff_auto_export_p): New function, split out from xcoff_build_ldsyms - but with extra code to handle -bexpfull and -bexpall. - (xcoff_mark_auto_exports): New function. - (xcoff_build_ldsyms): Use xcoff_auto_export_p to decide whether - a function should be automatically exported. - (bfd_xcoff_size_dynamic_sections): Replace the export_defineds - parameter with an auto_export_flags parameter. Update ldinfo - accordingly. Use xcoff_mark_auto_exports to mark all automatically- - exported symbols. - -2009-03-14 Richard Sandiford - - * xcofflink.c (xcoff_mark_symbol_by_name): New function. - (bfd_xcoff_size_dynamic_sections): Use it to mark the entry, - init and fini functions. Do garbage collection for objects - without an entry point too. - -2009-03-14 Richard Sandiford - - * coffcode.h (coff_pointerize_aux_hook): Update CSECT_SYM_P to - check whether a symbol has csect information. - (coff_print_aux): Likewise. - * coff-rs6000.c (_bfd_xcoff_swap_aux_in): Handle auxillary csect - information for C_AIX_WEAKEXT too. - (_bfd_xcoff_swap_aux_out): Likewise. - (xcoff_reloc_type_br): Handle defweak symbols too. - * coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Handle auxillary csect - information for C_AIX_WEAKEXT too. - (_bfd_xcoff64_swap_aux_out): Likewise. - (xcoff64_reloc_type_br): Handle defweak symbols too. - * coffgen.c (coff_print_symbol): Handle auxillary function - information for C_AIX_WEAKEXT too. - * xcofflink.c (_bfd_xcoff_canonicalize_dynamic_symtab): Set BSF_WEAK - instead of BSF_GLOBAL if the L_WEAK flag is set. - (xcoff_dynamic_definition_p): New function. - (xcoff_link_add_dynamic_symbols): Use it to decide whether ldsym - defines h. Don't change h if ldsym isn't the definition. Otherwise, - always take the symbol class from the ldsym. Use weak bfd symbol - types for weak ldsyms. - (xcoff_link_add_symbols): Use CSECT_SYM_P and EXTERN_SYM_P. - Fix the check for whether a definition is from a shared object. - Allow redefinitions of weak symbols. - (xcoff_link_check_ar_symbols): Use EXTERN_SYM_P. - (xcoff_keep_symbol_p): Likewise. - (bfd_xcoff_size_dynamic_sections): Use CSECT_SYM_P. - (xcoff_link_input_bfd): Use CSECT_SYM_P and EXTERN_SYM_P. - Add .loader entries for C_AIX_WEAKEXT as well as C_EXT symbols, - but mark them as L_WEAK. - (xcoff_write_global_symbol): Treat weak symbols as C_AIX_WEAKEXT - instead of C_EXT if C_AIX_WEAKEXT == C_WEAKEXT. - -2009-03-14 Richard Sandiford - - * xcofflink.c (xcoff_mark): When walking the relocations, - only mark the target symbol or the target section, not both. - (xcoff_final_definition_p): New function. - (xcoff_keep_symbol_p): Use it to check whether an external XCOFF - symbol is a valid definition of the associated output symbol. - Use XCOFF_ALLOCATED to stop the same hash table entry having - two output symbols. - (bfd_xcoff_size_dynamic_sections): Set XCOFF_ALLOCATED when - keeping a symbol. - (xcoff_link_input_bfd): Use xcoff_final_definition_p. - -2009-03-14 Richard Sandiford - - * xcofflink.c (bfd_xcoff_import_symbol): Treat imported absolute - symbols as XMC_XO. - -2009-03-14 Richard Sandiford - - * libcoff-in.h (xcoff_tdata): Add a lineno_counts field. - * libcoff.h: Regenerate. - * xcofflink.c (xcoff_link_add_symbols): Record per-symbol - line-number counts in the bfd's lineno_counts field. - Don't keep per-csect line-number counts. - (xcoff_sweep): Don't update per-csect line-number counts. - (bfd_xcoff_size_dynamic_sections): Count the number of line-number - entries in each output section. - (xcoff_link_input_bfd): Get the number of line numbers from - the bfd's lineno_counts field, rather than recalculating it - from scratch. Fix the range check when updating C_BINCL and - C_EINCL symbols. - (_bfd_xcoff_bfd_final_link): Don't count the output line numbers - here. Don't expect csects to have line-number counts. - -2009-03-14 Richard Sandiford - - * libcoff-in.h (xcoff_tdata): Change debug_indices to a signed long. - * libcoff.h: Regenerate. - * xcofflink.c (xcoff_keep_symbol_p): New function, using the - "skip" logic from xcoff_link_input_bfd. - (bfd_xcoff_size_dynamic_sections): Explicitly skip dynamic - objects in a dynamic link, rather than checking whether csectpp - is null. Always allocate debug_index for other objects, - and always go through the loop. Update the type of debug_index - after the change above. Read the auxillary csect information - and use xcoff_keep_symbol_p to decide whether a symbol should - be kept. Set its debug_index to -2 if not. - (xcoff_link_input_bfd): Update the type of debug_index after - the change above and always expect it to be nonnull. Use it to - test whether a symbol should be stripped, rather than making the - decision here. Postpone all symbol creation to the second pass. - -2009-03-14 Richard Sandiford - - * xcofflink.c: (xcoff_mark_symbol): Mark the TOC section when - creating a descriptor. - (xcoff_sweep): Don't mark toc_section unless it's needed. - (bfd_xcoff_size_dynamic_sections): Skip the toc_section - when marking every bfd. - (xcoff_link_input_bfd): Skip all TOC anchors. - (xcoff_toc_section_p, xcoff_find_tc0): New functions. - (_bfd_xcoff_bfd_final_link): Don't set the output bfd's TOC anchor - to -1; call xcoff_find_tc0 instead. - -2009-03-14 Richard Sandiford - - * libcoff-in.h (xcoff_section_tdata): Update commentary. - * libcoff.h: Regenerate. - * xcofflink.c (xcoff_link_add_symbols): Set the csect of XTY_ER - symbols to bfd_und_section_ptr or bfd_abs_section_ptr, rather than - the previous symbol's csect. Treat last_symndx as an inclusive value - and simplify its handling. - (xcoff_mark): Treat last_symndx as an inclusive value. Only mark - symbols with the right csect. Don't mark rsec when processing - relocations against undefined or absolute sections. - (bfd_xcoff_size_dynamic_sections): Don't check the SEC_MARK flag - of bfd_und_section_ptr. - (xcoff_link_input_bfd): Likewise. - -2009-03-14 Richard Sandiford - - * coff-rs6000.c (xcoff_ppc_relocate_section): Report relocations - against undefined symbols if the symbol's XCOFF_WAS_UNDEFINED - flag is set. Assert that all undefined symbols are either - imported or defined by a dynamic object. - * coff64-rs6000.c (xcoff64_ppc_relocate_section): Likewise. - * xcofflink.c (xcoff_link_add_symbols): Extend function-symbol - handling to all relocations. Only set XCOFF_CALLED for function - symbols. - (xcoff_find_function): New function, split out from... - (bfd_xcoff_export_symbol) ...here. - (xcoff_set_import_path): New function, split out from... - (bfd_xcoff_import_symbol): ...here. Remove assertion for old - meaning of XCOFF_CALLED. - (xcoff_mark_symbol): If we mark an undefined and unimported - symbol, find some way of defining it. If the symbol is a function - descriptor, fill in its definition automatically. If the symbol - is a function, mark its descriptor and allocate room for global - linkage code. Otherwise mark the symbol as implicitly imported. - Move the code for creating function descriptors from... - (xcoff_build_ldsyms): ...here. Use XCOFF_WAS_UNDEFINED to - check for symbols that were implicitly defined. - (xcoff_mark): Don't count any dynamic relocations against - function symbols. - (bfd_xcoff_size_dynamic_sections): Save the rtld parameter - in the xcoff link info. - (xcoff_link_input_bfd): Remove handling of undefined and - unexported symbols. - -2009-03-14 Richard Sandiford - - * coff-rs6000.c (xcoff_reloc_type_br): Make the branch absolute - if the target is absolute. Fix comment typo. - (xcoff_ppc_relocate_section): Remove FIXME. - * coff64-rs6000.c (xcoff64_reloc_type_br): Make the branch absolute - if the target is absolute. - -2009-03-14 Richard Sandiford - - * xcofflink.c (xcoff_mark, xcoff_link_input_bfd): Don't copy - R_POS and R_NEG relocations against absolute symbols to the - .loader section. - -2009-03-14 Richard Sandiford - - * coff64-rs6000.c (xcoff64_write_object_contents): Set the cputype - to 2 for bfd_mach_ppc_620. - -2009-03-14 Richard Sandiford - - * config.bfd: Treat AIX 6+ in the same way as AIX 5. - * configure.in: Likewise. - * configure: Regenerate. - -2009-03-13 H.J. Lu - - PR binutils/9945 - * elf.c (assign_section_numbers): Generate symbol table if there - is any relocation in output. - (_bfd_elf_compute_section_file_positions): Likewise. - -2009-03-13 Nick Clifton - - PR 9934 - * elf-bfd.h (NUM_SHDR_ENTRIES): Cope with an empty section. - * elflink.c (elf_link_read_relocs_from_section): Use - NUM_SHDR_ENTRIES. Gracefully handle the case where there are - relocs but no symbol table. - * elf32-arm.c (elf32_arm_check_relocs): Likewise. - -2009-03-12 H.J. Lu - - PR ld/9938 - * elf32-i386.c (elf_i386_check_tls_transition): Use strncmp - to check ___tls_get_addr. - - * elf64-x86-64.c (elf64_x86_64_check_tls_transition): Use - strncmp to check __tls_get_addr. - -2009-03-12 Andrew Stubbs - - * dwarf2.c (read_section): Always check the offset, even when the - section has been read before. - -2009-03-11 H.J. Lu - - * elf32-i386.c (elf_i386_check_tls_transition): Fix a typo in - comments. - -2009-03-11 Chris Demetriou - - * bfd.c (BFD_DETERMINISTIC_OUTPUT): New flag. - * bfd-in2.h: Regenerate. - * archive.c (bfd_ar_hdr_from_filesystem): If BFD_DETERMINISTIC_OUTPUT - flag is set, use 0 for uid, gid, and timestamp, and use 0644 for file - mode. - (bsd_write_armap): Likewise. - (_bfd_archive_bsd_update_armap_timestamp): If BFD_DETERMINISTIC_OUTPUT - flag is set, do nothing. - (coff_write_armap): If BFD_DETERMINISTIC_OUTPUT flag is set, use 0 - for timestamp. - -2009-03-11 Ulrich Weigand - - * elf32-spu.c (find_function_stack_adjust): Handle sf instruction - used to update stack pointer. - -2009-03-07 John David Anglin - - PR binutils/9921 - * som.c (som_bfd_derive_misc_symbol_info): Set symbol type ST_ABSOLUTE - for unknown symbols in absolute section. - -2009-03-06 Nick Clifton - - * po/es.po: Updated Spanish translation. - -2009-03-05 Christophe Lyon - - * elf32-arm.c (group_sections): Take next section size into - account before accepting to group it. - -2009-03-05 Christophe Lyon - - * elf32-arm.c (arm_type_of_stub): Handle long branches targetting - PLT entries. - (elf32_arm_final_link_relocate): Likewise. - -2009-03-05 Moritz Kroll - - PR 9923 - * peXXigen.c (_bfd_XXi_final_link_postscript): Check h->root.type. - -2009-03-04 Alan Modra - - * reloc.c (BFD_RELOC_PPC_TLSGD, BFD_RELOC_PPC_TLSLD): New. - * section.c (struct bfd_section): Add has_tls_get_addr_call. - (BFD_FAKE_SECTION): Init new flag. - * ecoff.c (bfd_debug_section): Likewise. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * elf32-ppc.c (ppc_elf_howto_raw): Add R_PPC_TLSGD and R_PPC_TLSLD. - (ppc_elf_reloc_type_lookup): Handle new relocs. - (ppc_elf_check_relocs): Set has_tls_get_addr_call on finding such - without marker relocs. - (ppc_elf_tls_optimize): Allow out-of-order __tls_get_addr relocs - if section has no old-style calls. - (ppc_elf_relocate_section): Set tls_mask for non-tls relocs too. - Don't try to optimize new-style __tls_get_addr call when handling - arg setup relocs. Instead do so for R_PPC_TLSGD and R_PPC_TLSLD - relocs. - * elf64-ppc.c (ppc64_elf_howto_raw): Add R_PPC64_TLSGD, R_PPC64_TLSLD. - (ppc64_elf_reloc_type_lookup): Handle new relocs. - (ppc64_elf_check_relocs): Set has_tls_get_addr_call on finding such - without marker relocs. - (ppc64_elf_tls_optimize): Allow out-of-order __tls_get_addr relocs - if section has no old-style calls. Set toc_ref for new relocs as - appropriate. - (ppc64_elf_relocate_section): Set tls_mask for non-tls relocs too. - Don't try to optimize new-style __tls_get_addr call when handling - arg setup relocs. Instead do so for R_PPC_TLSGD and R_PPC_TLSLD - relocs. - -2009-03-04 Alan Modra - - PR 6768 - * configure.in: Test for ld --as-needed support. Link shared - libbfd against libm. - * configure: Regenerate. - -2009-03-03 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - -2009-03-02 Qinwei - - * elf32-score7.c: New file. - * elf32-score.h: New file. - * elf32-score.c: Add code to support score 7. Set score7 as the - default. - * cpu-score.c: Add score7 architecure. - (compatibile): New function. - * Makefile.am: Add rules for building elf32-score7 object. - * Makefile.in: Regenerate. - * configure.in: Add elf32-score7 object to score vectors. - * configure: Regenerate. - * reloc.c: Add score7 relocs. - * archures.c: Add score3 and score7 machine numbers. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - -2009-03-01 Ralf Wildenhues - - * configure: Regenerate. - -2009-03-01 John David Anglin - - * elf32-hppa.c (hppa32_elf_local_refcounts): New function. - (elf32_hppa_check_relocs): Use it. - - * elf_hppa_add_symbol_hook (elf_hppa_add_symbol_hook): Move to - elf64-hppa.c. - (elf_hppa_unmark_useless_dynamic_symbols): Likewise. - (elf_hppa_remark_useless_dynamic_symbols): Likewise. - (elf_hppa_is_dynamic_loader_symbol): Likewise. - (elf_hppa_record_segment_addrs): Likewise. - (elf_hppa_final_link): Likewise. - (elf_hppa_relocate_insn): Likewise. - (elf_hppa_final_link_relocate): Likewise. - (elf64_hppa_relocate_section): Likewise. - * elf64-hppa.c: Insert above. - -2009-02-28 John David Anglin - - * elf-hppa.h (elf_hppa_final_link): Use elf_hppa_final_link. - (elf_hppa_final_link_relocate ): Rewrite eliminating dynamic hash table. - (elf_hppa_relocate_section): Likewise. - * elf64-hppa.c (struct elf64_hppa_link_hash_entry): Change to derive - from struct elf_link_hash_entry. Add count field. - (struct elf64_hppa_dyn_hash_table): Delete. - (struct elf64_hppa_link_hash_table): Delete dyn_hash_table field. - (elf64_hppa_hash_table): Rename to hppa_link_hash_table. - (hppa_elf_hash_entry, eh_name): Define. - (elf64_hppa_new_dyn_hash_entry): Delete. - (elf64_hppa_dyn_hash_lookup): Delete. - (elf64_hppa_dyn_hash_traverse): Delete. - (get_dyn_name): Delete. - (elf64_hppa_finalize_opd): Use struct elf_link_hash_entry * instead - of struct elf64_hppa_dyn_hash_entry *. - (elf64_hppa_finalize_dlt, llocate_global_data_dlt, - allocate_global_data_plt, allocate_global_data_stub, - allocate_global_data_opd, count_dyn_reloc, allocate_dynrel_entries): - Likewise. - (hppa64_link_hash_newfunc): New. - (elf64_hppa_hash_table_create): Rework. - (count_dyn_reloc): Likewise. - (hppa64_elf_local_refcounts): New. - (elf64_hppa_check_relocs): Rework using standard technique for recording - local DLT, PLT and OPD reference counts. - (elf64_hppa_dynamic_symbol_p): Revise using "eh" for struct - elf_link_hash_entry *. - (elf64_hppa_mark_exported_functions, allocate_global_data_dlt, - allocate_global_data_plt, allocate_global_data_stub, - allocate_global_data_opd, allocate_dynrel_entries, - elf64_hppa_adjust_dynamic_symbol, - elf64_hppa_mark_milli_and_exported_functions): Likewise. - (elf64_hppa_create_dynamic_sections, elf64_hppa_size_dynamic_sections): - Use hppa_link_hash_table. Rework. - (elf64_hppa_link_output_symbol_hook): Rework. - (elf64_hppa_finish_dynamic_symbol, elf64_hppa_finalize_opd, - elf64_hppa_finalize_dlt, elf64_hppa_finalize_dynreloc, - elf64_hppa_finish_dynamic_sections): Likewise. - -2009-02-26 Christophe Lyon - - * elf32-arm.c (stub_reloc_type): Removed. - (insn_sequence): Renamed reloc_type field to r_type. - (elf32_arm_stub_long_branch_v4t_arm_thumb_pic): New stub. - (elf32_arm_stub_long_branch_v4t_thumb_arm_pic): Likewise. - (elf32_arm_stub_long_branch_thumb_only_pic): Likewise. - (elf32_arm_stub_type): Add new enum entries for the new stubs. - (arm_stub_is_thumb): Catch new stubs. - (arm_type_of_stub): Handle new stubs. - (arm_size_one_stub): Use ARRAY_SIZE. Handle new stubs. - (bfd_elf32_arm_process_before_allocation): Remove useless - condition. - -2009-02-25 H.J. Lu - - * elf.c (elf_find_function): Use is_function_type to check - function symbol. - -2009-02-24 Sterling Augustine - - * xtensa-modules.c: Revert to previous version 1.11 due - to inadvertant commit. - -2009-02-24 Sterling Augustine - - * elf32-xtensa.c (text_action_add): Separate test for action - type. Break if saved action is ta_widen_insn at same offset. - -2009-02-24 Daniel Jacobowitz - - * elf32-arm.c (elf32_arm_stub_long_branch_any_any_pic): Rename - to elf32_arm_stub_long_branch_any_arm_pic. - (elf32_arm_stub_long_branch_any_thumb_pic): New. - (enum elf32_arm_stub_type, arm_type_of_stub) - (arm_size_one_stub): Handle any to ARM PIC and any to Thumb PIC - separately. - -2009-02-24 Joseph Myers - - * elf32-arm.c (PREV_SEC): Update comment. - (group_sections): Rename argument to stubs_always_after_branch. - Reverse the list and place stubs at the end of input sections. - Undefine NEXT_SEC. - (elf32_arm_size_stubs): Update to use stubs_always_after_branch. - -2009-02-23 Daniel Jacobowitz - - * elf32-arm.c (arm_build_one_stub): Initialize stub_reloc_offset. - Fix formatting. - (arm_size_one_stub): Remove unnecessary break. - (arm_map_one_stub): Fix formatting. Return after BFD_FAIL. - -2009-02-23 Christophe Lyon - - * elf32-arm.c (stub_insn_type): New type. - (stub_reloc_type): Likewise. - (insn_sequence): Likewise. - (elf32_arm_stub_long_branch_any_any): Encode using insn_sequence. - (elf32_arm_stub_long_branch_v4t_arm_thumb): Likewise. - (elf32_arm_stub_long_branch_thumb_only): Likewise. - (elf32_arm_stub_long_branch_v4t_thumb_arm): Likewise. - (elf32_arm_stub_short_branch_v4t_thumb_arm): Likewise. - (elf32_arm_stub_long_branch_any_any_pic): Likewise. - (elf32_arm_stub_hash_entry): Add new helper fields. - (stub_hash_newfunc): Initialize these new fields. - (arm_build_one_stub): Encode Arm and Thumb instructions separately - to take endianness into account. - (arm_size_one_stub): Compute size of stubs using insn_sequence. - (arm_map_one_stub): Code is now more generic, thanks to - insn_sequence. - -2009-02-23 Christophe Lyon - - * elf32-arm.c (elf32_arm_stub_long_branch_thumb_only): Fix stub - code. - (elf32_arm_stub_long_branch_v4t_thumb_arm): Likewise. - (arm_type_of_stub): Use Thumb-only long branch stub (non-PIC) when - BLX is not available. Fix typo in warning message. Add comments - and improve formatting. - (arm_build_one_stub): Adjust to new - elf32_arm_stub_long_branch_v4t_thumb_arm stub. - (arm_map_one_stub): Likewise. - -2009-02-23 Tristan Gingold - Eric Botcazou - Douglas B Rupp - - * vms.h: Update copyright year, fix comments, reorder declarations. - (_bfd_save_vms_section): Remove the prototype. - (EGPS_S_V_NO_SHIFT): New constant. - (bfd_vms_set_section_flags): New prototype. - (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New - constants. - (EGSY_S_W_FLAGS): Ditto. - (EGSY_S_V_QUAD_VAL): Ditto. - (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. - (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, - EGST_S_B_NAMLNG): Ditto. - (ESRF_S_B_NAMLNG): Ditto. - (ETIR_S_C_HEADER_SIZE): Ditto. - (EGPS_S_V_ALLOC_64BIT): Ditto. - (DST_S_C_EPILOG): Ditto. - (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. - (DST_S_C_SRC_INCRLNUM_B): Ditto. - (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. - (DST_S_L_PCLINE_UNSLONG): Ditto. - (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto - (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto - (DST_S_C_SOURCE_HEADER_SIZE): Ditto. - (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. - (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. - (DST_S_B_SRC_UNSBYTE): Ditto. - (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. - Add prototypes. - (vms_section, vms_reloc): Remove types. - (hdr_struc): Replaced by ... - (hdr_struct): ... new type. - (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. - (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. - (EMH_DATE_LENGTH): Ditto. - (eom_struc): Replaced by ... - (eom_struct): ... new type. - (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. - (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. - (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. - (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. - (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. - (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. - (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. - (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. - (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. - (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. - (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. - (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. - (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. - (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. - (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. - (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. - (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. - (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) - (DBG_S_C_DMT_PSECT_SIZE): Ditto. - (enum file_type_enum): New type. - (struct location_struct): Removed. - (struct fileinfo, struct srecinfo, struct lineinfo): New types. - (struct funcinfo, struct module): Ditto. - (struct vms_private_data_struct): Update fields. - (struct vms_section_data_struct): New type. - - * vms.c: Update copyright year, fix comments, - Fix includes for DECC, add prototypes. - (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove - some initializers. - Use flavour to set is_vax, location_stack is removed. - (struct pair): Declare. - (fill_section_ptr): Initialize variables at declaration. - Add guard to set SECTION_SYM flag, handlde und section. - (vms_fixup_sections): Use struct pair for fill_section_ptr argument. - (_bfd_vms_slurp_object_records): New function, replaces previous - vms_object_p. - (vms_slurp_module): New function. - (vms_slurp_image): Ditto. - (vms_object_p): Complete rewrite. - (vms_mkobject): Use is_vax field to slect architecture. - (free_reloc_stream): New function. - (vms_convert_to_var): Ditto. - (vms_convert_to_var_1): Ditto. - (vms_convert_to_var_unix_filename): Ditto. - (vms_close_and_cleanup): Call free_reloc_stream, convert file to - VAR format on VMS. - (vms_new_section_hook): Set alignment to 0, allocate private data. - (vms_get_section_contents): Load content. - (vms_get_symbol_info): Handle undefined section. - (vms_find_nearest_line): Handle. - (alloc_reloc_stream): New function. - (vms_slurp_reloc_table): Ditto. - (vms_get_reloc_upper_bound): Make it real. - (vms_canonicalize_reloc): Do the real work. - (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, - ALPHA_R_BOH. - (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. - (vms_set_arch_mach): Check arch. - (vms_set_section_contents): Copy the content after allocation. - (vms_alpha_vec): Update object flags. - - * vms-tir.c: Update copyright year, fix comments, - add prototypes for new functions. - (dst_define_location): New function. - (dst_restore_location): New function. - (dst_retrieve_location): New function. - (dst_check_allocation): New function. - (image_dump): Call dst_check_allocation. - (image_write_b): Ditto. - (image_write_w): Ditto. - (image_write_l): Ditto. - (image_write_q): Ditto. - (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, - STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, - CTL_STKDL. - Call error handler instead of abort if name is not known. - (etir_sta): Add quarter_relocs argument and set it. - Fix cast. - (etir_sto): Ditto. - (etir_opr): Ditto, return FALSE in case of error. - (etir_ctl): Add quarter_relocs argument and set it, fix cast. - Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. - (etir_stc): Add quarter_relocs argument and set it, fix cast. - Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. - Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. - Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. - Return FALSE in case of error. - (tir_sta): Change sign of psect. - (tir_ctl): Ditto. - (tir_cmd): Fix cast. Makes tir_table static const. - (etir_cmd): Add quarter_relocs argument, makes etir_table const, - add argument to explain. - (analyze_etir): Initialize maxptr, add quarter_relocs - declaration, move some declarations into inner scopes. - Handle quarter_relocs and STO_IMM. - (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. - (_bfd_vms_slurp_relocs): New function. - (_bfd_vms_decode_relocs): New function. - (sto_imm): Rewritten. - (start_first_etbt_record): New function. - (start_another_etbt_record): Ditto. - (etir_output_check): Ditto. - (defer_reloc_p): Ditto. - (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to - a for-loop. Correctly deals with contents, deals with .vmsdebug, - rewritte relocations handling. - (_bfd_vms_write_tbt): Removed. - (_bfd_vms_write_dbg): Ditto. - - * vms-misc.c: Update copyright year, Fix comments. - (_bfd_vms_get_header_values): Use 'size' instead of 'length'. - (maybe_adjust_record_pointer_for_object): New function. - (_bfd_vms_get_first_record): New function, replaces ... - (_bfd_vms_get_record): .. removed. - (_bfd_vms_get_object_record): New function. - (_bfd_vms_get_object_record): New function. - (vms_get_remaining_object_record): New function, replaces ... - (_bfd_vms_get_next_record): ... removed. - (add_new_contents): Removed. - (_bfd_save_vms_section): Removed. - (_bfd_get_vms_section): Removed. - (_bfd_vms_output_flush): Write in VAR format. - (new_symbol): Don't make UND section. - - * vms-hdr.c: Update copyright year, update list of record handled. - (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. - (_bfd_vms_write_hdr): Strip vms and unix patches, - add comments, truncate module name at 31 characters, - use constants instead of hard-coded value, - write BFD version instead of a fixed string. - (_bfd_vms_slurp_ihd): New function. - (_bfd_vms_slurp_isd): Ditto. - (_bfd_vms_slurp_ihs): Ditto. - (new_module): Ditto. - (parse_module): Ditto - (build_module_list): Ditto. - (module_find_nearest_line): Ditto. - (_bfd_vms_find_nearest_dst_line): Ditto. - (vms_slurp_debug): Ditto. - (_bfd_vms_slurp_dbg): Ditto. - (_bfd_vms_slurp_tbt): Ditto. - (_bfd_vms_write_dbg): Ditto. - (_bfd_vms_write_tbt): Ditto. - - * vms-gsd.c: Update copyright year, update list of records handled. - (EVAX_LITERALS_NAME): New macro. - (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. - (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. - (register_universal_symbol): New function and prototype. - (_bfd_vms_slurp_gsd): Fix indentations and casts, - improve debug messages, - use constants instead of hard-coded value, - fix missing endianness conversion, - handle global symbol (SYMG). - (bfd_vms_set_section_flags): New function. - (_bfd_vms_write_gsd): Don't write .vmsdebug section, - handle section literals, - fix indentation, - handle section bfd and vms flags, - don't output LIB$INITIALIZE symbol, - fix handling of weak symbols, - fix evax vs vax procedure descriptor, - handle absolute symbols. - - * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, - BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. - - * makefile.vms (DEFS): Fix flags for VMS. - - * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. - - * bfd-in2.h: Regenerated. - * libbfd.h: Regenerated. - -2009-02-20 Cary Coutant - - * vmsutil.c (vms_file_stats_name): Fix incorrect use of st_mtime - in struct stat. - -2009-18-02 Dave Korn - - PR gas/7059 - * coffcode.h (coff_write_object_contents): Don't let the string - table offset overflow the s_name field when using long section names. - -2009-18-02 Dave Korn - - * coff-alpha.c (alpha_ecoff_backend_data): Initialise fields which - control long section name handling with ECOFF_NO_LONG_SECTION_NAMES. - * coff-mips.c (mips_ecoff_backend_data): Likewise. - * coff-rs6000.c (bfd_xcoff_backend_data): Initialise fields which - control long section name handling with XCOFF_NO_LONG_SECTION_NAMES. - (bfd_pmac_xcoff_backend_data): Likewise. - * coff64-rs6000.c (bfd_xcoff_backend_data): Likewise. - (bfd_xcoff_aix5_backend_data): Likewise. - (xcoff64_write_object_contents): Delete unused long_section_names - local variable. - * coff-sh.c (bfd_coff_small_swap_table): Initialise long section - name members using COFF_DEFAULT_LONG_SECTION_NAMES and make entire - struct non-const. - * coffcode.h (documentation): Update to describe long section names. - (COFFLONGSECTIONCATHELPER): New helper macro. - (BLANKOR1TOODD): Likewise. - (COFF_ENABLE_LONG_SECTION_NAMES): Likewise. - (COFF_LONG_SECTION_NAMES_SETTER): Likewise. - (COFF_DEFAULT_LONG_SECTION_NAMES): Likewise. - (bfd_coff_set_long_section_names_allowed): New function. - (bfd_coff_set_long_section_names_disallowed): Likewise. - (struct bfd_coff_backend_data): Add new backend hook function - pointer _bfd_coff_set_long_section_names. - (bfd_coff_set_long_section_names): New backend hook. - (coff_write_object_contents): Only generate long section names if - bfd_coff_long_section_names() indicates they are currently enabled. - (bfd_coff_std_swap_table): Make non-const, and initialise long - section name fields using COFF_DEFAULT_LONG_SECTION_NAMES. - (ticoff0_swap_table): Likewise to both. - (ticoff1_swap_table): Again, likewise to both. - * coffgen.c (make_a_section_from_file): Allow long section names - as inputs even if not currently allowed for outputs. - * ecoff.c (_bfd_ecoff_no_long_sections): New function. - * efi-app-ia32.c (COFF_LONG_SECTION_NAMES): Define to 0, not blank. - * efi-app-ia64.c (COFF_LONG_SECTION_NAMES): Likewise. - * efi-app-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. - * efi-bsdrv-ia32.c (COFF_LONG_SECTION_NAMES): Likewise. - * efi-bsdrv-ia64.c (COFF_LONG_SECTION_NAMES): Likewise. - * efi-bsdrv-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. - * efi-rtdrv-ia32.c (COFF_LONG_SECTION_NAMES): Likewise. - * efi-rtdrv-ia64.c (COFF_LONG_SECTION_NAMES): Likewise. - * efi-rtdrv-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. - * pei-arm.c (COFF_LONG_SECTION_NAMES): Likewise. - * pei-i386.c (COFF_LONG_SECTION_NAMES): Likewise. - * pei-mcore.c (COFF_LONG_SECTION_NAMES): Likewise. - * pei-mips.c (COFF_LONG_SECTION_NAMES): Likewise. - * pei-ppc.c (COFF_LONG_SECTION_NAMES): Likewise. - * pei-sh.c (COFF_LONG_SECTION_NAMES): Likewise. - * pei-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. - * libcoff-in.h: Update copyright year to cause updated copyright - year in generated libcoff.h, and fix typo. - * libcoff.h: Regenerated. - * libecoff.h (ECOFF_NO_LONG_SECTION_NAMES): New macro. - (_bfd_ecoff_no_long_sections): Add prototype. - * libxcoff.h (XCOFF_NO_LONG_SECTION_NAMES): New macro. - * pe-mips.c (COFF_LONG_SECTION_NAMES): Define empty if not already - defined by an including .c file. - * ticoff.h (ticoff0_swap_table): Make non-const, and initialise - long section name fields using COFF_DEFAULT_LONG_SECTION_NAMES. - (ticoff1_swap_table): Likewise to both. - -2009-02-18 Christophe Lyon - - * elf32-arm.c (arm_build_one_stub): Fix relocation target for pic - stub. Catch default case error. - (arm_map_one_stub): Add missing Thumb mapping symbol. - -2009-02-18 Bjoern Haase - - PR 9841 - * elf32-avr.c: Handle case where no local symbos exist correctly. - -2009-02-16 Christophe Lyon - - bfd/ - * elf32-arm.c (arm_long_branch_stub, - arm_thumb_v4t_long_branch_stub, - arm_thumb_thumb_long_branch_stub, - arm_thumb_arm_v4t_long_branch_stub, - arm_thumb_arm_v4t_short_branch_stub, - arm_pic_long_branch_stub): - Renamed to elf32_arm_stub_long_branch_any_any, - elf32_arm_stub_long_branch_v4t_arm_thumb, - elf32_arm_stub_long_branch_thumb_only, - elf32_arm_stub_long_branch_v4t_thumb_arm, - elf32_arm_stub_short_branch_v4t_thumb_arm, - elf32_arm_stub_long_branch_any_any_pic. - (arm_stub_long_branch, arm_thumb_v4t_stub_long_branch, - arm_thumb_thumb_stub_long_branch, - arm_thumb_arm_v4t_stub_long_branch, - arm_thumb_arm_v4t_stub_short_branch, arm_stub_pic_long_branch): - Renamed to arm_stub_long_branch_any_any, - arm_stub_long_branch_v4t_arm_thumb, - arm_stub_long_branch_thumb_only, - arm_stub_long_branch_v4t_thumb_arm, - arm_stub_short_branch_v4t_thumb_arm, - arm_stub_long_branch_any_any_pic. - -2009-02-15 John David Anglin - - * elf-hppa.h (elf_hppa_final_link_relocate): Correct addend value used - in branch offset check. - -2009-02-15 Alan Modra - - * elf64-ppc.c (struct _ppc64_elf_section_data): Delete t_symndx, - add toc.symndx and toc.add. - (ppc64_elf_check_relocs): Don't set htab->tls_get_addr here. - Set up toc.add. - (get_tls_mask): Add toc_addend param, set from toc.add. Adjust all - callers. - (ppc64_elf_tls_setup): Set htab->tls_get_addr and tls_get_addr_fd. - (branch_reloc_hash_match): New function, extracted from.. - (ppc64_elf_tls_optimize): ..here. - (ppc64_elf_relocate_section): Properly set addends when optimizing - tls sequences. Avoid unnecessary reading and writing of insns. - Only redo reloc when symbol changed. Bypass symbol checks when - using tlsld_got. - * elf32-ppc.c (ppc_elf_tls_setup): Correct comment. - (branch_reloc_hash_match): New function, extracted from.. - (ppc_elf_tls_optimize): ..here. - (ppc_elf_relocate_section): Avoid unnecessary reading of insns. - Don't clear addend on zapped __tls_get_addr reloc. - -2009-02-12 Nick Clifton - - PR 9827 - * elflink.c (bfd_elf_final_link): When counting the relocations, - if the header size has not been set yet then assume that it will - match the output section's reloc type. - -2009-02-12 Nathan Sidwell - - * elf32-mips.c (mips_elf_final_gp): Don't add 0x4000 offset for - relocatable link. - -2009-02-09 Alan Modra - - * elf32-spu.c (spu_elf_find_overlays): Call bfd_set_error on errors. - (find_function): Likewise. - (pasted_function): Don't error if no prior function found. - (discover_functions): Revert 2008-12-10 change. Extend first - function range to start of section. - -2009-02-08 John David Anglin - - * elf64-hppa.c: Remove PARAMS macro. Replace PTR with void *. Convert - functions to C90. - * elf64-hppa.h: Likewise. - -2009-02-06 Joseph Myers - - * elfxx-mips.c (_bfd_mips_elf_section_processing): Remove special - .sbss handling. - -2009-02-04 Alan Modra - - * elf32-spu.c (spu_elf_build_stubs): Define __icache_neg_log2_linesize. - Define __icache_ptr_handler*, not __icache_ptr___icache_bi_handler*. - -2009-02-03 Sandip Matte - - * aoutx.h (NAME (aout, machine_type)): Handle bfd_mach_mips_xlr. - * archures.c (bfd_mach_mips_xlr): Define. - * bfd-in2.h: Regenerate. - * cpu-mips.c (I_xlr): Define. - (arch_info_struct): Add XLR entry. - * elfxx-mips.c (_bfd_elf_mips_mach): Handle E_MIPS_MACH_XLR. - (mips_set_isa_flags): Handle bfd_mach_mips_xlr - (mips_mach_extensions): Add XLR entry. - -2009-02-03 Eric B. Weddington - - * elf32-avr.c (avr_final_link_relocate): Allow avr25 to wraparound. - -2009-02-03 Carlos O'Donell - - * configure.in: AC_SUBST pdfdir. - * Makefile.am: Add install-pdf, install-pdf-am - and install-pdf-recursive targets. Define pdfdir. - * doc/Makefile.am: Define pdf__strip_dir. Add - install-pdf and install-pdf-am targets. - * po/Make-in: Add install-pdf target. - * configure: Regenerate. - * Makefile.in: Regenerate - * doc/Makefile.in: Regenerate. - -2009-02-03 Maxim Kuvyrkov - - * bfd-in2.h: Regenerate. - * elf32-m68k.c: Handle 2-slot GOT entries. Rename variables and - fields from n_entries to n_slots where appropriate, update comments. - (HOWTO): Add TLS relocations. - (reloc_map): Map BFD_RELOC_68K_TLS_* to R_68K_TLS_*. - (enum elf_m68k_got_offset_size): New enum. - (struct elf_m68k_got_entry.type): Move field to ... - (struct elf_m68k_got_entry_key): ... here. Update all uses. - (elf_m68k_reloc_got_type, elf_m68k_reloc_got_offset_size): New static - functions. - (elf_m68k_reloc_got_n_entries, elf_m68k_reloc_tls_p): New static - functions. - (struct elf_m68k_got): merge rel_8o_n_entries and rel_8o_16o_n_entries - fields into n_entries array. Update comments. - (elf_m68k_init_got): Simplify, update all uses. - (elf_m68k_init_got_entry_key): Handle R_68K_TLS_LDM32 reloc, update. - (ELF_M68K_REL_8O_MAX_N_ENTRIES_IN_GOT): Adjust to handle 2-slot - GOT entries; update name, update all uses. - (ELF_M68K_REL_8O_16O_MAX_N_ENTRIES_IN_GOT): Ditto. - (elf_m68k_get_got_entry): Update. - (elf_m68k_update_got_entry_type): Rewrite to handle TLS GOT entries, - simplify. - (elf_m68k_remove_got_entry_type): Simplify. - (elf_m68k_add_entry_to_got, elf_m68k_can_merge_gots_1): Update. - (elf_m68k_can_merge_gots): Update. - (elf_m68k_merge_gots_1, elf_m68k_merge_gots): Update. - (struct elf_m68k_finalize_got_offsets_arg): Rewrite to handle 2-slot - GOT entries, simplify. - (elf_m68k_finalize_got_offsets_1, elf_m68k_finalize_got_offsets): Same. - (struct elf_m68k_partition_multi_got_arg): Add slots_relas_diff - field, remove obsoleted local_n_entries field. - (elf_m68k_partition_multi_got_2): New static function. - (elf_m68k_partition_multi_got_1, elf_m68k_partition_multi_got): Use it; - update. - (elf_m68k_remove_got_entry_type): Update. - (elf_m68k_install_rela, dtpoff_base, tpoff): New static functions. - (elf_m68k_check_relocs): Handle TLS relocations. Remove unnecessary - update of sgot->size and srelgot->size. - (elf_m68k_gc_sweep_hook): Update. - (elf_m68k_install_rela, dtpoff_base, tpoff): New static functions. - (elf_m68k_relocate_section, elf_m68k_finish_dynamic_symbol): Handle - TLS relocations. - * reloc.c (BFD_RELOC_68K_TLS_*): Declare TLS relocations. - * libbfd.h (bfd_reloc_code_real_names): Add BFD_RELOC_68K_TLS_*. - -2009-02-02 DJ Delorie - - * elf32-mep.c (config_names): Regenerate configuration. - -2009-02-02 Alan Modra - - * elf-bfd.h (bfd_elf_get_str_section): Don't declare. - (bfd_elf_find_section, _sh_elf_set_mach_from_flags): Likewise. - * elf.c (bfd_elf_get_str_section): Make static. - (bfd_elf_find_section): Delete. - * libbfd.h: Regenerate. - -2009-02-01 Jan Kratochvil - - * elf-eh-frame.c (REQUIRE_CLEARED_RELOCS) Remove. - (_bfd_elf_parse_eh_frame): Do not check relocations for removed FDEs. - -2009-01-31 Alan Modra - - * elflink.c (on_needed_list): New function. - (elf_link_add_object_symbols): Link in --as-needed libs if they - satisfy undefined symbols in other libs. - -2009-01-30 Julian Brown - - * elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Skip BFDs with - EXEC_P or DYNAMIC flags, and skip sections which are being linked - with --just-symbols (-R). - -2009-01-29 Adam Nemet - - * dwarf2.c (read_rangelist): Use read_address to read low_pc and - high_pc in order to properly sign-extend VMAs. - -2009-01-29 Daniel Jacobowitz - Mark Shinwell - Catherine Moore - - * elf-attrs.c, elflink.c, elfxx-mips.c: Correct typos in comments. - -2009-01-28 Catherine Moore - - * elf32-arm.c (elf32_arm_check_relocs): Set SEC_ALLOC and - SEC_LOAD for dynamic relocation sections. - -2009-01-27 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section): Use elf_hash_table - (info)->tls_size, not elf_hash_table (info)->tls_sec->size for - the size of local TLS data. - -2009-01-27 Andreas Schwab - - * mach-o.c (bfd_mach_o_archive_p): Restrict the number of - architectures in the archive. - -2009-01-27 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section) - : Correct relocation value. - - * elf32-cris.c (cris_elf_relocate_section) - : Don't call BFD_ASSERT for weak undefined - symbols with non-default visibility. - -2009-01-26 Nathan Sidwell - - * elf32-ppc.c (ppc_elf_relax_section): Add space for relocs - describing the trampolines. - (ppc_elf_relocate_section): Update relocs to describe the - trampolines. - -2009-01-25 John David Anglin - - * elf-hppa.h (elf_hppa_final_link_relocate): Add check to ensure that - branch targets can be reached for R_PARISC_PCREL22F, R_PARISC_PCREL17F - and R_PARISC_PCREL12F relocations. - -2009-01-24 Alan Modra - - PR 6022 - * elflink.c (find_version_for_sym): New function split out from, - but without export_dynamic test, .. - (_bfd_elf_link_assign_sym_version): ..here. - (_bfd_elf_export_symbol): Use it. - -2009-01-23 Alan Modra - - * elf-bfd.h (struct elf_assign_sym_version_info): Delete. - (struct elf_info_failed, struct elf_find_verdep_info): Move to.. - * elflink.c: ..here, somewhat modified. - * elf-bfd.h (_bfd_elf_add_default_symbol, _bfd_elf_export_symbol, - _bfd_elf_link_find_version_dependencies, - _bfd_elf_link_assign_sym_version, _bfd_elf_link_size_reloc_section, - _bfd_elf_fix_symbol_flags, _bfd_elf_adjust_dynamic_symbol, - _bfd_elf_link_sec_merge_syms, bfd_elf_link_mark_dynamic_symbol): Don't - declare.. - * elflink.c: ..and make static here. - (_bfd_elf_link_find_version_dependencies): Adjust for removal - of output_bfd from struct elf_find_verdep_info. - (_bfd_elf_link_assign_sym_version): Similarly adjust to use - struct elf_info_failed. - (bfd_elf_size_dynamic_sections): Adjust. - -2009-01-22 Alan Modra - - PR 6832 - * dwarf2.c (find_line): Don't update stash->sec_info_ptr until - after comp_unit_find_line call. - -2009-01-21 Nick Clifton - - PR 9769 - * vmsutil.c (vms_file_stats_name): Remove use of unsupported - tm_gmtoff field in struct tm. - -2009-01-21 Alan Modra - - * elf32-spu.h (struct spu_elf_params): Add non_ia_text. - * elf32-spu.c (mark_overlay_section): Only include .text.ia.* - sections in soft-icache lines unless non_ia_text. Don't add - rodata if doing so would exceed line size. - -2009-01-19 Hans-Peter Nilsson - - * elf32-cris.c (elf_cris_copy_indirect_symbol): For other symbol - types than bfd_link_hash_indirect, before early return, call - _bfd_elf_link_hash_copy_indirect. - -2009-01-19 Andrew Stubbs - - * elf-attrs.c (vendor_set_obj_attr_contents): Support tag ordering. - * elf-bfd.h (elf_backend_data): Add obj_attrs_order. - * elf32-arm.c (elf32_arm_obj_attrs_order): New function. - (elf_backend_obj_attrs_order): New define. - * elfxx-target.h (elf_backend_obj_attrs_order): New define. - (elfNN_bed): Add elf_backend_obj_attrs_order. - -2009-01-19 Andrew Stubbs - - * elf-attrs.c (is_default_attr): Substitute magic numbers with macros. - (obj_attr_size): Likewise. - (write_obj_attribute): Likewise. - (_bfd_elf_copy_obj_attributes): Likewise. - (_bfd_elf_parse_attributes): Likewise. - * elf-bfd.h (ATTR_TYPE_FLAG_INT_VAL): New define. - (ATTR_TYPE_FLAG_STR_VAL, ATTR_TYPE_FLAG_NO_DEFAULT): New defines. - (ATTR_TYPE_HAS_INT_VAL, ATTR_TYPE_HAS_STR_VAL): New defines. - (ATTR_TYPE_HAS_NO_DEFAULT): New define. - * elf32-arm.c (elf32_arm_obj_attrs_arg_type): Replace magic numbers - with macros. - -2009-01-19 Andrew Stubbs - - * elf-attrs.c (is_default_attr): Support defaultless attributes. - (bfd_elf_add_obj_attr_int): Get type from _bfd_elf_obj_attrs_arg_type. - (bfd_elf_add_obj_attr_string): Likewise. - (bfd_elf_add_obj_attr_int_string): Likewise. - (_bfd_elf_parse_attributes): Allow for unknown flag bits in type. - * elf-bfd.h (struct obj_attribute): Document new flag bit. - * elf32-arm.c (elf32_arm_obj_attrs_arg_type): Specify that - Tag_nodefaults has no default value. - (elf32_arm_merge_eabi_attributes): Modify the Tag_nodefaults - comment to reflect the new state. - -2009-01-19 Alan Modra - - PR 9695 - * pdp11.c (N_BADMAG): True for anything but OMAGIC, NMAGIC, ZMAGIC. - (some_aout_object_p): Delete dead code handling QMAGIC and BMAGIC. - (adjust_z_magix): Delete dead code handling QMAGIC. - -2009-01-16 Kai Tietz - - * coffcode.h (styp_to_sec_flags): Correct interpretation of - IMAGE_SCN_MEM_DISCARDABLE. - -2009-01-16 Alan Modra - - * Makefile.am (libbfd_la_LIBADD, libbfd_la_LDFLAGS): Substitute - SHARED_LIBADD and SHARED_LDFLAGS rather than WIN32LIBADD, WIN32LDFLAGS. - * configure.in (commonbfdlib): Delete. - (SHARED_LDFLAGS): Rename from WIN32LDFLAGS/ - (SHARED_LIBADD): Rename from WIN32LIBADD. Add pic libiberty if such - is available, not just for linux. - * po/SRC-POTFILES.in: Regenerate. - * Makefile.in: Regenerate. - * configure: Regenerate. - -2009-01-15 Andrew Stubbs - Julian Brown - - * elf-bfd.h (NUM_KNOWN_OBJ_ATTRIBUTES): Set to 71 to include all known - ARM attributes in ABI 2.07. - * elf32-arm.c (get_secondary_compatible_arch): New function. - (set_secondary_compatible_arch): New function. - (tag_cpu_arch_combine): New function. - (elf32_arm_copy_one_eabi_other_attribute): Delete function. - (elf32_arm_copy_eabi_other_attribute_list): Delete function. - (elf32_arm_merge_eabi_attributes): Rename order_312 to order_021 to - make it fit with order_01243. - Add support for Tag_also_compatible_with, - Tag_CPU_unaligned_access, Tag_T2EE_use, Tag_Virtualization_use, - Tag_MPextension_use, Tag_nodefaults and Tag_conformance. - Improve/tidy up support for Tag_CPU_raw_name, Tag_CPU_name, - Tag_CPU_arch, Tag_ABI_HardFP_use, Tag_VFP_HP_extension, - Tag_ABI_FP_denormal, Tag_ABI_PCS_GOT_use, Tag_ABI_align8_needed, - Tag_VFP_arch and Tag_ABI_FP_16bit_format. - Rework the way unknown attributes are handled. - Defer errors until all attributes have been processed. - -2009-01-15 Andrew Stubbs - - * elf-attrs.c (bfd_elf_add_obj_attr_compat): Rename to - bfd_elf_add_obj_attr_int_string. - Read Tag_compatibility from its new location in the attribute array, - rather than the attribute list. - (_bfd_elf_copy_obj_attributes): bfd_elf_add_obj_attr_compat -> - bfd_elf_add_obj_attr_int_string. - (_bfd_elf_parse_attributes): Likewise. - (_bfd_elf_merge_object_attributes): There's now only one - Tag_compatibility, and it's in the array, not the list. - * elf-bfd.h (NUM_KNOWN_OBJ_ATTRIBUTES): Set to 33 to include - Tag_compatibility. - (bfd_elf_add_obj_attr_compat): Rename to - bfd_elf_add_obj_attr_int_string. - (bfd_elf_add_proc_attr_compat): Rename to - bfd_elf_add_proc_attr_int_string. - * elf32-arm.c (elf32_arm_merge_eabi_attributes): Explicitly don't handle - Tag_compatibility. - -2009-01-15 Douglas B Rupp - - * Makefile.am (BFD32_BACKENDS): Add new object vmsutil.lo - (BFD32_BACKENDS_CFILES): Add new file vmsutil.c - (vmsutil.lo): Add dependency rule. - * Makefile.in: Regenerate. - * config.bfd (ia64*-*-*vms*): Add case. - * configure.in (bfd_elf64_ia64_vms_vec): Add case. - * configure: Regenerate. - * vmsutil.c: New file. - * vmsutil.h: New file. - * elf-bfd.h (struct bfd_elf_special_section): Change type of - attr to bfd_vma. - * elfxx-ia64.c (elfNN_vms_post_process_headers, - elfNN_vms_section_processing, elfNN_vms_final_write_processing, - elfNN_vms_close_and_cleanup, elfNN_vms_section_from_shdr, - elfNN_vms_object_p): New functions - * targets.c (bfd_elf64_ia64_vms_vec): New target. - -2009-01-14 H.J. Lu - - PR ld/9727 - * elflink.c (elf_gc_sweep): Exclude the group section if the - first member of the section group is excluded. - -2009-01-14 Alan Modra - - PR 9735 - * syms.c (_bfd_stab_section_find_nearest_line): Don't free - saved filename, use bfd_alloc rather than bfd_malloc for it. - -2009-01-13 Alan Modra - - * elf32-spu.c (spu_elf_build_stubs): Make __icache_base absolute. - -2009-01-13 Alan Modra - - * elf32-spu.c (remove_cycles): Always set call->max_depth. - -2009-01-12 Alan Modra - - * elf32-spu.c (spu_elf_auto_overlay): Correct vma mask. - -2009-01-12 Alan Modra - - * elf32-spu.c (struct spu_link_hash_table): Add init, line_size_log2, - num_lines_log2. - (struct got_entry): Add br_addr. - (struct call_info): Add priority. - (struct function_info): Add lr_store and sp_adjust. - (spu_elf_setup): Init line_size_log2 and num_lines_log2. - (spu_elf_find_overlays): For soft-icache, mark any section within cache - area as an overlay, and check that no other overlays exist. Look up - icache overlay manager entry sym. - (BRA_STUBS, BRA, BRASL): Define. - (enum _stub_type): Replace ovl_stub with call_ovl_stub and br*_ovl_stub. - (needs_ovl_stub): Adjust for soft-icache. Return priority encoded - in branch insn. - (count_stub, build_stub): Support soft-icache. - (build_spuear_stubs, process_stubs): Adjust build_stub call. - (spu_elf_size_stubs): Size soft-icache stubs. - (overlay_index): New function. - (spu_elf_build_stubs): Make static. Support soft-icache. - (spu_elf_check_vma): Don't turn off auto_overlay if soft-icache. - (find_function_stack_adjust): Save lr store and stack adjust insn - offsets. - (maybe_insert_function): Adjust find_function_stack_adjust call. - (mark_functions_via_relocs): Retrieve priority. - (remove_cycles): Only warn about pruned arcs when stack_analysis. - (sort_calls): Sort by priority first. - (mark_overlay_section): Ignore .ovl.init. - (sum_stack): Only print when stack_analysis. - (print_one_overlay_section): New function, extracted from.. - (spu_elf_auto_overlay): ..here. Support soft-icache overlays. - (spu_elf_stack_analysis): Only print when htab->stack_analysis. - (spu_elf_final_link): Call spu_elf_stack_analysis for lrlive - analysis. Call spu_elf_build_stubs. - (spu_elf_relocate_section): For soft-icache encode overlay index - into addresses. - (spu_elf_output_symbol_hook): Support soft-icache. - (spu_elf_modify_program_headers: Likewise. - - * elf32-spu.h (struct spu_elf_params): Add lrlive_analysis. Rename - num_regions to num_lines. Add line_size and max_branch. - (enum _ovly_flavour): Add ovly_soft_icache. - (spu_elf_build_stubs): Delete. - -2009-01-11 Jan Kratochvil - - * elflink.c (_bfd_elf_section_already_linked): Handle g++-3.4 - relocations in `.gnu.linkonce.r.*' referencing its `.gnu.linkonce.t.*'. - -2009-01-07 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_relocate_section) - : For a symbol defined in - the program, the known offset starts at the negative size of the - TLS section. - : - Similar. - -2009-01-05 Joel Sherrill - - * config.bfd: Add lm32-*-rtems*. - -2009-01-03 H.J. Lu - - * coff-ppc.c: Add 2009 to Copyright. - * elf32-cris.c: Likewise. - * elflink.c: Likewise. - -2009-01-03 Hans-Peter Nilsson - - * elf32-cris.c (elf_cris_finish_dynamic_symbol): Rename - gotplt_index to rela_plt_index. Adjust for R_CRIS_DTPMOD entry. - -2009-01-02 H.J. Lu - - PR ld/9679 - * elflink.c (elf_merge_st_other): New. - (_bfd_elf_merge_symbol): Use it on skipped weak definitions and - hide them if needed. - (elf_link_add_object_symbols): Updated. - -2009-01-02 H.J. Lu - - PR ld/9676 - * elflink.c (elf_link_add_object_symbols): Update def_dynamic, - ref_dynamic and dynamic_def fields when setting def_regular - to 1. - -2009-01-02 Curtis Mackie - - PR 9682 - * coff-ppc.c (dump_toc): Fix up calls to fprintf without a string - literal. - -For older changes see ChangeLog-2008 +For older changes see ChangeLog-2010 Local Variables: mode: change-log diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/ChangeLog-2009 crash-6.1.6/=unpacked-tar1=/bfd/ChangeLog-2009 --- crash-5.1.6/=unpacked-tar1=/bfd/ChangeLog-2009 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/ChangeLog-2009 2010-01-01 18:06:06.000000000 +0000 @@ -0,0 +1,5154 @@ +2009-12-31 Cary Coutant + + * dwarf2.c (struct line_sequence): New struct. + (struct line_info_table): Add num_sequences, remove last_line, + add sequences. + (add_line_info): Add new sequences as necessary. + (compare_sequences): New function. + (sort_line_sequences): New function. + (decode_line_info): Initialize new fields in line table. + Call sort_line_sequences. + (lookup_address_in_line_info_table): Binary search for proper + sequence. + +2009-12-28 Daniel Gutson + + * elf32-arm.c (elf32_arm_final_link_relocate): limits + fixed. + +2009-12-28 Daniel Gutson + + * elf-attrs.c (_bfd_elf_merge_object_attributes): Error + message rephrased. + +2009-12-21 Alan Modra + + * elf64-ppc.c: Delete my email address. + +2009-12-18 Ulrich Weigand + + * elf.c (elfcore_grok_s390_high_gprs): New function. + (elfcore_grok_note): Handle NT_S390_HIGH_GPRS notes. + (elfcore_write_s390_high_gprs): New function. + (elfcore_write_register_note): Call it. + +2009-12-17 Alan Modra + + PR ld/11088 + * elf32-ppc.c (update_plt_info): Clear sec here when addend is + less than 32768.. + (ppc_elf_check_relocs): ..rather than doing so here. Ignore new + relax relocs. + (ppc_elf_gc_sweep_hook): Don't segfault when symbol hiding has + removed plt_entry records. + (ppc_elf_tls_setup): Handle PIE calls to __tls_get_addr correctly. + (ppc_elf_tls_optimize): Likewise. Also dec __tls_get_addr refcount + when optimizing code using new tlsgd and tlsld marker relocs. + (ppc_elf_relax_section): Differentiate relaxed PLTREL24 relocs + from ADDR24 relocs using plt or glink. Don't clear the addend + for R_PPC_RELAX_PLTREL24. + (ppc_elf_relocate_section): Correctly handle addends on relaxed + PLTREL24 relocs. + +2009-12-17 Alan Modra + + PR ld/11088 + * elf64-ppc.c (ppc64_elf_gc_sweep_hook): Don't abort if symbol + hiding has nulled out plt.plist. + +2009-12-15 H.J. Lu + + * opncls.c (bfd_opnr_iovec): Replace _XXX with XXX_P in + parameters. + + * tekhex.c (pass_over): Replace eof with is_eof. + +2009-12-15 Tristan Gingold + + * mach-o.h (bfd_mach_o_uuid_command): Remove section field. + * mach-o.c (bfd_mach_o_scan_read_uuid): Do not create a section + from this command. + +2009-12-15 Tristan Gingold + + * mach-o.c (struct mach_o_section_name_xlat): Add flags field. + (dwarf_section_names_xlat): Add section flags. + (text_section_names_xlat): Ditto. + (data_section_names_xlat): Ditto. + (bfd_mach_o_convert_section_name_to_bfd): Now return name and section + flags by reference. + (bfd_mach_o_make_bfd_section): Use section flags when know, otherwise + try to guess. + +2009-12-14 Doug Kwan + + * opncls.c (bfd_opnr_iovec): Rename parameters to avoid shawdowed + variable warnings. + * bfd-in2.h: Regnenerate. + +2009-12-12 Nick Clifton + + * coff-arm.c (coff_arm_rtype_to_howto): Fix shadowed variable + warning. + +2009-12-11 Tristan Gingold + + * som.c (bfd_som_set_subsection_attributes) + (bfd_section_from_som_symbol, som_reloc_queue_fix): Fix shadowed + variable warnings. + * cache.c (close_one): Likewise. + +2009-12-11 Nick Clifton + + * warning.m4 (GCC_WARN_CFLAGS): Add -Wshadow. + * configure: Regenerate. + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + * aout-arm.c: Fix shadowed variable warnings. + * aout-tic30.c: Likewise. + * aoutx.h: Likewise. + * archive.c: Likewise. + * coff-alpha.c: Likewise. + * coff-i386.c: Likewise. + * coff-x86_64.c: Likewise. + * coffgen.c: Likewise. + * dwarf2.c: Likewise. + * ecoff.c: Likewise. + * elf-eh-frame.c: Likewise. + * elf-m10300.c: Likewise. + * elf.c: Likewise. + * elf32-arm.c: Likewise. + * elf32-avr.c: Likewise. + * elf32-bfin.c: Likewise. + * elf32-cr16.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-ip2k.c: Likewise. + * elf32-lm32.c: Likewise. + * elf32-m68hc1x.c: Likewise. + * elf32-microblaze.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-rx.c: Likewise. + * elf32-score.c: Likewise. + * elf32-score7.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-spu.c: Likewise. + * elf32-v850.c: Likewise. + * elf32-xtensa.c: Likewise. + * elf64-hppa.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-x86-64.c: Likewise. + * elflink.c: Likewise. + * elfxx-ia64.c: Likewise. + * elfxx-mips.c: Likewise. + * elfxx-sparc.c: Likewise. + * hash.c: Likewise. + * ieee.c: Likewise. + * libbfd.c: Likewise. + * mach-o.c: Likewise. + * merge.c: Likewise. + * nlm32-sparc.c: Likewise. + * oasys.c: Likewise. + * opncls.c: Likewise. + * pdp11.c: Likewise. + * peXXigen.c: Likewise. + * pef.c: Likewise. + * versados.c: Likewise. + * vms-gsd.c: Likewise. + * vms-hdr.c: Likewise. + * vms-tir.c: Likewise. + * vms.c: Likewise. + * xcofflink.c: Likewise. + * xsym.c: Likewise. + * xtensa-isa.c: Likewise. + +2009-12-10 Maciej W. Rozycki + + * elfxx-mips.c (mips_elf_calculate_relocation): Correct handling + of undefined symbols. + +2009-12-09 Daniel Jacobowitz + + * elf32-arm.c (elf32_arm_next_input_section): Skip sections without + SEC_CODE. + +2009-12-08 Alan Modra + + * elf.c (write_zeros): New function. + (assign_file_positions_for_load_sections): Allocate file space for + NOBITS sections that are followed by PROGBITS sections in a segment. + +2009-12-03 Tristan Gingold + + * mach-o.c (bfd_mach_o_make_bfd_section): Force debug flags for + all sections of the __DWARF segment. + +2009-12-03 Alan Modra + + PR ld/11047 + * elf32-ppc.c (ppc_elf_relocate_section): Delete __tls_get_addr + symbol reference from relocs belonging to calls that are + optimized away. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + +2009-12-02 Jerker Bäck + + PR binutils/11017 + * coff-i386.h (COFF_PAGE_SIZE): Definition moved to coff/i386.h + +2009-11-30 Joseph Myers + + * configure: Regenerate. + +2009-11-26 Per Øyvind Karlsen + + * plugin.c (bfd_plugin_bfd_copy_link_hash_symbol_type): Define. + +2009-11-24 Joel Brobecker + + * acinclude.m4: Add include of ../config/zlib.m4. + * configure.in: AM_ZLIB to check for zlib support. + * configure: Regenerate. + +2009-11-23 Paul Brook + + * libbfd-in.h (_bfd_generic_copy_link_hash_symbol_type): Add + prototype. + * elf-bfd.h (_bfd_elf_copy_link_hash_symbol_type): Add prototype. + * linker.c (_bfd_generic_copy_link_hash_symbol_type): New function. + * elflink.c (_bfd_elf_copy_link_hash_symbol_type): New function. + * targets.c (BFD_JUMP_TABLE_LINK, struct bfd_target): Add + _copy_link_hash_symbol_type. + * coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Add + _bfd_generic_copy_link_hash_symbol_type. + * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Add + _bfd_generic_copy_link_hash_symbol_type. + * aout-adobe.c (aout_32_bfd_copy_link_hash_symbol_type): Define. + * aout-target.h (MY_bfd_copy_link_hash_symbol_type): Define. + * aout-tic30.c (MY_bfd_copy_link_hash_symbol_type): Define. + * binary.c (binary_bfd_copy_link_hash_symbol_type): Define. + * bout.c (b_out_bfd_copy_link_hash_symbol_type): Define. + * coffcode.h (coff_bfd_copy_link_hash_symbol_type): Define. + * elfxx-target.h (bfd_elfNN_bfd_copy_link_hash_symbol_type): Define. + * i386msdos.c (msdos_bfd_copy_link_hash_symbol_type): Define. + * i386os9k.c (os9k_bfd_copy_link_hash_symbol_type): Define. + * ieee.c (ieee_bfd_copy_link_hash_symbol_type): Define. + * ihex.c (ihex_bfd_copy_link_hash_symbol_type): Define. + * libecoff.h (_bfd_ecoff_bfd_copy_link_hash_symbol_type): Define. + * mach-o.c (bfd_mach_o_bfd_copy_link_hash_symbol_type): Define. + * mmo.c (mmo_bfd_copy_link_hash_symbol_type): Define. + * nlm-target.h (nlm_bfd_copy_link_hash_symbol_type): Define. + * oasys.c (oasys_bfd_copy_link_hash_symbol_type): Define. + * pef.c (bfd_pef_bfd_copy_link_hash_symbol_type): Define. + * ppcboot.c (ppcboot_bfd_copy_link_hash_symbol_type): Define. + * som.c (som_bfd_copy_link_hash_symbol_type): Define. + * srec.c (srec_bfd_copy_link_hash_symbol_type): Define. + * tekhex.c (tekhex_bfd_copy_link_hash_symbol_type): Define. + * versados.c (versados_bfd_copy_link_hash_symbol_type): Define. + * vms.c (vms_bfd_copy_link_hash_symbol_type): Define. + * xsym.c (bfd_sym_bfd_copy_link_hash_symbol_type): Define. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2009-11-19 Tristan Gingold + + * coff-rs6000.c (rs6000coff_vec): Use generic routines instead of + hard-coded casts. + (pmac_xcoff_vec): Ditto. + * coff64-rs6000.c (rs6000coff64_vec): Ditto. + (aix5coff64_vec): Ditto. + +2009-11-18 Alan Modra + + * bfd-in.h (_bfd_elf_ppc_at_tls_transform): Declare. + * bfd-in2.h: Regenerate. + * elf64-ppc.c (ppc64_elf_relocate_section): Move code for R_PPC64_TLS + insn optimisation to.. + * elf32-ppc.c (_bfd_elf_ppc_at_tls_transform): ..here. New function. + (ppc_elf_relocate_section): Use it. + +2009-11-18 Alan Modra + + * targets.c: Don't include alloca-conf.h. + (bfd_get_target_info): Don't use alloca. + +2009-11-17 H.J. Lu + + PR ld/10955 + * elfxx-ia64.c (elfNN_ia64_update_short_info): Also skip ABS + sections. + +2009-11-17 H.J. Lu + + PR ld/10955 + * elfxx-ia64.c (elfNN_ia64_link_hash_table): Update comments. + (elfNN_ia64_update_short_info): Remove "->output_section" from + ia64_info->max_short_sec and ia64_info->min_short_sec. + (elfNN_ia64_choose_gp): Likewise. + (elfNN_ia64_relax_section): Pass tsec->output_section to + elfNN_ia64_update_short_info. + +2009-11-17 H.J. Lu + + PR ld/10955 + * elfxx-ia64.c (elfNN_ia64_link_hash_table): Add max_short_sec, + max_short_offset, min_short_sec and min_short_offset. + (elfNN_ia64_update_short_info): New. + (elfNN_ia64_relax_section): Update max_short_sec, + max_short_offset, min_short_sec and min_short_offset. + (elfNN_ia64_choose_gp): Use min_short_sec/max_short_sec if + they are set. + +2009-11-17 Paul Brook + Daniel Jacobowitz + + * elf32-arm.c (using_thumb_only, arch_has_arm_nop, + arch_has_thumb2_nop): Handle TAG_CPU_ARCH_V7E_M. + (tag_cpu_arch_combine): Ditto. Correct MAX_TAG_CPU_ARCH test. + +2009-11-17 Ulrich Weigand + + * elf32-spu.c (struct spu_link_hash_table): Remove overlay_fixed, + reserved, and extra_stack_space members. + (spu_elf_auto_overlay): Use auto_overlay_fixed, auto_overlay_reserved, + and extra_stack_space members of htab->params instead. + +2009-11-17 Tristan Gingold + + * targets.c: Include alloca-conf.h + +2009-11-16 Kai Tietz + + * targets.c (bfd_get_target_info): New function. + (_bfd_find_arch_match): New function. + * bfd-in2.h: Regenerated. + +2009-11-12 Nick Clifton + + * po/ru.po: Updates Russian translation. + +2009-11-11 Nick Clifton + + * po/id.po: Updated Indonesian translation. + +2009-11-11 Jan Kratochvil + + * configure.in: Call ACX_LARGEFILE. Stop calling AC_PLUGINS, + AC_SYS_LARGEFILE and checking the Solaris largefile exception. + * aclocal.m4: Regenerate. + * configure: Regenerate. + +2009-11-09 H.J. Lu + + PR ld/10911 + * elflink.c (elf_link_output_extsym): Don't return on + STT_GNU_IFUNC symbol when stripping. + +2009-11-08 John David Anglin + + * elf32-hppa.c (elf32_hppa_final_link): Don't sort unwind information + in a relocatable link. + * elf64-hppa.c (elf_hppa_final_link): Likewise. + +2009-11-05 Nick Clifton + + * elflink.c (elf_link_add_object_symbols): Improve error + message generated when a symbol is left unresolved because a + --no-add-needed command line option has prevented the + inclusion of the DSO defining it. + +2009-11-03 Alan Modra + Ulrich Weigand + + * elf32-spu.c (mark_functions_via_relocs): Handle non-branch relocs + (jump tables or other references to code labels) as well. + +2009-11-02 Paul Brook + + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Handle VFPv4 + attributes. + +2009-11-02 Alan Modra + + * elflink.c (elf_link_add_object_symbols): Don't force debug + symbols local. + +2009-10-29 Johan Kristell + + * elf32-cris.c (cris_elf_plt_sym_val): New function. + (elf_backend_plt_sym_val): Define. + +2009-10-27 Kai Tietz + + * peXXigen.c (bfdver.h): Add include. + (LINKER_VERSION): Do calculation based on BFD_VERSION. + +2009-10-25 Maciej W. Rozycki + + * elf32-vax.c (elf_vax_relocate_section): Correct assertion. + +2009-10-25 Maciej W. Rozycki + + * elf32-vax.c (elf_vax_plt_entry): Fix formatting. + +2009-10-25 Maciej W. Rozycki + + * elf32-vax.c (elf_vax_relocate_section): Fix a typo. + +2009-10-23 Kai Tietz + + * coff-x86_64.c (coff_amd64_rtype_to_howto): Subtract offset + of R_AMD64_PCRLONG_ relocations from addend. + +2009-10-23 Alan Modra + + * plugin.c: Produce empty object if not BFD_SUPPORTS_PLUGINS. + +2009-10-20 Alan Modra + + PR binutils/10802 + * opncls.c (_maybe_make_executable): Make DYNAMIC files executable. + +2009-10-19 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section) : + Don't subtract the size of the TLS block for non-shared objects + from the relocation. + +2009-10-17 Arnold Metselaar + + * coff-z80.c (z80coff_vec): Allow sections to be of type + SEC_CODE or SEC_DATA + +2009-10-16 Alan Modra + + PR binutils/10785 + * coff-alpha.c (alpha_ecoff_get_elt_at_filepos): Don't bfd_alloc + bim and bim->buffer. bfd_malloc instead. + * peicode.h (pe_ILF_build_a_bfd): Similarly. + (ILF_DATA_SIZE): Don't include bim. + * opncls.c (bfd_close): Test bim->buffer non-NULL before freeing. + +2009-10-14 Alan Modra + + * aoutx.h (aout_link_check_ar_symbols): Typo fix. + +2009-10-13 H.J. Lu + + PR binutils/10763 + * elf32-i386.c (elf_i386_finish_dynamic_symbol): Declare plt + earlier. + +2009-10-13 Alan Modra + + * elflink.c (_bfd_elf_merge_symbol): Revert previous patch. + +2009-10-12 Roland McGrath + + * elflink.c (elf_link_add_object_symbols, _bfd_elf_merge_symbol): + Fix %s that should be %B in several message formats. + +2009-10-10 Alan Modra + + * cofflink.c (_bfd_coff_link_input_bfd): Skip section symbols for + excluded output sections. + +2009-10-09 Tristan Gingold + + * mach-o.c (bfd_mach_o_read_command): Handle BFD_MACH_O_LC_RPATH. + (bfd_mach_o_bfd_print_private_bfd_data): Ditto. + +2009-10-09 Tristan Gingold + + * mach-o.c (bfd_mach_o_scan_read_symtab_symbols): Rename to + bfd_mach_o_read_symtab_symbols. + (bfd_mach_o_scan_write_thread): Rename to bfd_mach_o_write_thread. + (bfd_mach_o_scan_write_relocs): Rename to bfd_mach_o_write_relocs. + (bfd_mach_o_scan_write_section_32): Rename to + bfd_mach_o_write_section_32. + (bfd_mach_o_scan_write_section_64): Rename to + bfd_mach_o_write_section_64. + (bfd_mach_o_scan_write_segment_32): Rename to + bfd_mach_o_write_segment_32. + (bfd_mach_o_scan_write_segment_64): Rename to + bfd_mach_o_write_segment_64. + (bfd_mach_o_scan_write_symtab): Rename to bfd_mach_o_write_symtab. + (bfd_mach_o_scan_read_section_32): Rename to + bfd_mach_o_read_section_32. + (bfd_mach_o_scan_read_section_64): Rename to + bfd_mach_o_read_section_64. + (bfd_mach_o_scan_read_section): Rename to bfd_mach_o_read_section. + (bfd_mach_o_scan_read_symtab_strtab): Rename to + bfd_mach_o_read_symtab_strtab. + (bfd_mach_o_scan_read_symtab_symbol): Rename to + bfd_mach_o_read_symtab_symbol. + (bfd_mach_o_scan_read_dysymtab_symbol): Rename to + bfd_mach_o_read_dysymtab_symbol. + (bfd_mach_o_scan_read_dylinker): Rename to bfd_mach_o_read_dylinker. + (bfd_mach_o_scan_read_dylib): Rename to bfd_mach_o_read_dylib. + (bfd_mach_o_scan_read_prebound_dylib): Rename to + bfd_mach_o_read_prebound_dylib. + (bfd_mach_o_scan_read_thread): Rename to bfd_mach_o_read_thread. + (bfd_mach_o_scan_read_dysymtab): Rename to bfd_mach_o_read_dysymtab. + (bfd_mach_o_scan_read_symtab): Rename to bfd_mach_o_read_symtab. + (bfd_mach_o_scan_read_uuid): Rename to bfd_mach_o_read_uuid. + (bfd_mach_o_scan_read_linkedit): Rename to bfd_mach_o_read_linkedit. + (bfd_mach_o_scan_read_str): Rename to bfd_mach_o_read_str. + (bfd_mach_o_scan_read_dyld_info): Rename to bfd_mach_o_read_dyld_info. + (bfd_mach_o_scan_read_segment): Rename to bfd_mach_o_read_segment. + (bfd_mach_o_scan_read_segment_32): Rename to + bfd_mach_o_read_segment_32. + (bfd_mach_o_scan_read_segment_64): Rename to + bfd_mach_o_read_segment_64. + (bfd_mach_o_scan_read_command): Rename to bfd_mach_o_read_command. + * mach-o.h (bfd_mach_o_scan_read_dysymtab_symbol): Rename to + bfd_mach_o_read_dysymtab_symbol. + +2009-10-09 Tristan Gingold + + * mach-o.c (bfd_mach_o_section_get_entry_size): Moved. + (bfd_mach_o_section_get_nbr_indirect): Ditto. + (bfd_mach_o_get_synthetic_symtab): New function. + (bfd_mach_o_print_private_header): Print the number of commands + in decimal. + * mach-o.h (bfd_mach_o_get_synthetic_symtab): Add prototype. + * mach-o-target.c: Do not defined bfd_mach_o_get_synthetic_symtab. + +2009-10-08 Tristan Gingold + + * config.bfd: Add bfd_mach_o_i386_vec in x86_64-darwin targ_selvecs. + +2009-10-06 H.J. Lu + + * bfd-in2.h: Regenerated. + +2009-10-02 Alan Modra + + * aout-cris.c (N_SHARED_LIB): Don't define. + * hp300bsd.c (N_SHARED_LIB): Don't define. + * i386bsd.c (N_SHARED_LIB): Don't define. + * i386linux.c (N_SHARED_LIB): Don't define. + * i386lynx.c (N_SHARED_LIB): Don't define. + * m68klinux.c (N_SHARED_LIB): Don't define. + * m88kmach3.c (N_SHARED_LIB): Don't define. + * mipsbsd.c (N_SHARED_LIB): Don't define. + * newsos3.c (N_SHARED_LIB): Don't define. + * pc532-mach.c (N_SHARED_LIB): Don't define. + * pdp11.c (N_SHARED_LIB): Don't define. + * sparclinux.c (N_SHARED_LIB): Don't define. + * vaxbsd.c (N_SHARED_LIB): Don't define. + +2009-10-01 Dave Korn + + * cofflink.c (_bfd_coff_generic_relocate_section): Look for the aux + symbol for a weak undef in the auxbfd, not the input bfd. + +2009-10-01 Ulrich Weigand + + * elf32-spu.c (spu_elf_auto_overlay): Insert icache linker script + after .toe instead of before .text section. Set the LMA of all + overlay sections to their icache IA address. + (spu_elf_find_overlays): Determine icache set id without reference + to the LMA. + +2009-09-30 Tristan Gingold + + * configure.com: Use hosts/alphavms.h on both alpha and ia64 VMS. + +2009-09-29 H.J. Lu + + * elf64-x86-64.c (elf64_x86_64_append_rela): New. + (elf64_x86_64_relocate_section): Use it. + (elf64_x86_64_finish_dynamic_symbol): Likewise. + +2009-09-29 DJ Delorie + + * Makefile.am (ALL_MACHINES): Add cpu-rx.lo. + (ALL_MACHINES_CFILES): Add cpu-rx.c. + (BFD32_BACKENDS): Add elf32-rx.lo. + (BFD32_BACKENDS_CFILES): Add elf32-rx.c. + * archures.c (bfd_architecture): Add bfd_arch_rx and bfd_mach_rx. + Export bfd_rx_arch. + (bfd_archures_list): Add bfd_rx_arch. + * config.bfd: Add entry for rx-*-elf. + * configure.in: Add entries for bfd_elf32_rx_le_vec and + bfd_elf32_rx_be_vec. + * reloc.c: Add RX relocations. + * targets.c: Add RX target vectors. + * Makefile.in: Regenerate. + * bfd-in2.h: Regenerate. + * configure: Regenerate. + * libbfd.h: Regenerate. + * cpu-rx.c: New file. + * elf32-rx.c: New file. + +2009-09-29 M R Swami Reddy + + * elf32-cr16.c (elf32_cr16_relocate_section): Removed + info->relocatable to fix the ld/testsuites/ld-elf/linkonce1 test case. + +2009-09-28 Nick Clifton + + PR 10478: Accepting Solaris binaries. + * elf.c (bfd_section_from_shdr): Allow SHN_BEFORE and SHN_AFTER + section link values in x86 binaries. + * elfcode.h (elf_object_p): Likewise. + +2009-09-28 Philippe De Muyter + + * elf32-m68k.c (elf_m68k_final_write_processing): New function. + (elf_backend_final_write_processing): Macro defined as above function. + +2009-09-25 Martin Thuresson + + Update sources to make alpha and arm targets compile cleanly with + -Wc++-compat: + * ecoff.c: Add casts. + * ecofflink.c: Add casts. + * elf64-alpha.c: Add casts. + (struct alpha_elf_got_entry, struct alpha_elf_reloc_entry): Move + to top level. + (SKIP_HOWTO): Use enum name. + * elf32-arm.c: Add casts. + (elf32_arm_vxworks_bed): Update code to avoid multiple + declarations. + (struct map_stub): Move to top level. + +2009-09-24 H.J. Lu + + PR ld/10630 + * elflink.c (elf_link_output_extsym): Turn off visibility on + local symbol. + (bfd_elf_final_link): Turn off visibility on dynamic local + symbol. + +2009-09-24 Alan Modra + + PR binutils/10654 + * dwarf2.c (lookup_address_in_line_info_table): Remove workaround + for invalid location lists generated by gcc-2.95 and Intel 6.0 C++. + Remove "function" parm, adjust caller. + +2009-09-23 Matt Rice + + * bfd-in.h (bfd_elf_size_dynamic_sections): Add audit and depaudit + arguments. + * elflink.c (bfd_elf_size_dynamic_sections): Generate DT_AUDIT, + DT_DEPAUDIT from audit/depaudit arguments. + (elf_finalize_dynstr): Finalize DT_AUDIT and DT_DEPAUDIT strtab entries. + (elf_link_add_object_symbols): Set dt_audit target data when finding a + DT_AUDIT. + * bfd-in2.h: Regenerate. + * bfd-elf.h: Add dt_audit to elf_obj_tdata, and elf_dt_audit macro. + +2009-09-23 Jie Zhang + + * elf32-bfin.c (_bfinfdpic_size_got_plt): Make sure empty + .rel.plt and .plt sections are removed. + (elf32_bfinfdpic_size_dynamic_sections): Remove empty .dynbss + section. Remove the duplicated removing of empty .rel.plt + section. + +2009-09-21 Richard Sandiford + + * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Extend previous + patch to handle the new personality relaxation. + +2009-09-21 Richard Sandiford + + * elf-eh-frame.c (make_pc_relative): New function. + (_bfd_elf_write_section_eh_frame): Use it. + +2009-09-21 Alan Modra + + * elf32-ppc.c (TLS_GET_ADDR_GLINK_SIZE): Define. + (ADD_3_12_2, BEQLR, CMPWI_11_0, LWZ_11_3, LWZ_12_3): Define. + (MR_0_3, MR_3_0): Define. + (struct ppc_elf_link_hash_table): Add no_tls_get_addr_opt. + (ppc_elf_select_plt_layout): Save emit_stub_syms param earlier. + (ppc_elf_tls_setup): Add no_tls_get_addr_opt param and save to hash + table. Check for presense of __tls_get_addr_opt + (allocate_dynrelocs): Increase glink entry size for __tls_get_addr. + (ppc_elf_size_dynamic_sections): Add DT_PPC_TLS_OPT tag. + (write_glink_stub): Add param p. + (ppc_elf_relocate_section): Adjust write_glink_stub call. + (ppc_elf_finish_dynamic_symbol): Emit special glink call stub for + __tls_get_addr. + * elf32-ppc.h (ppc_elf_tls_setup): Update prototype. + * elf64-ppc.c (struct ppc_link_hash_table): Add no_tls_get_addr_opt. + (ppc64_elf_tls_setup): Add no_tls_get_addr_opt param and save to hash + table. Check for presense of __tls_get_addr_opt. + (ppc64_elf_size_dynamic_sections): Add DT_PPC64_TLS_OPT tag. + (LD_R11_0R3, LD_R12_0R3, MR_R0_R3, CMPDI_R11_0, ADD_R3_R12_R13, + BEQLR, MR_R3_R0, MFLR_R11, STD_R11_0R1, BCTRL, LD_R11_0R1, + LD_R2_0R1, MTLR_R11): Define. + (build_tls_get_addr_stub): New function. + (ppc_build_one_stub): Call it. + (ppc_size_one_stub): Add extra size for __tls_get_addr stub. + (ppc64_elf_relocate_section): Don't change nop to ld 2,40(1) for + __tls_get_addr plt call. + * elf64-ppc.h (ppc64_elf_tls_setup): Update prototype. + +2009-09-19 Richard Sandiford + + * elf-bfd.h (eh_cie_fde): Add personality_offset and + make_per_encoding_relative to the CIE structure. Add a padding field. + * elf-eh-frame.c (_bfd_elf_eh_frame_section_offset): Use 0x70 + rather than 0xf0 when masking out the base address encoding + Record the offset of personality data from the start of the CIE. + Remove a repeated elf_backend_can_make_relative_eh_frame check. + (find_merged_cie): Take an info argument. If the personality + binds locally, try converting an absolute personality into + a local one. + (_bfd_elf_discard_section_eh_frame): Use 0x70 rather than 0xf0 + when masking out the base address encoding. Update the call to + find_merged_cie. + (_bfd_elf_eh_frame_section_offset): Discard relocations against + the personality data if we are converting into PC-relative form. + (_bfd_elf_write_section_eh_frame): Use 0x70 rather than 0xf0 + when masking out the base address encoding. Handle + make_per_encoding_relative. + +2009-09-18 Alan Modra + + PR ld/10406 + * elf32-ppc.c (ppc_elf_howto_raw): Make R_PPC_EMB_SDAI16 and + R_PPC_EMB_SDA2I16 complain_overflow_signed. + (create_sdata_sym): Pass info rather than htab. + Update all callers. Ensure symbols are hidden. + (ppc_elf_check_relocs): Allow SDAREL16 when shared. + (ppc_elf_size_dynamic_sections): When shared, equate _SDA_BASE_ to + _GLOBAL_OFFSET_TABLE_. + (elf_finish_pointer_linker_section): Don't assume that sdata base + symbol is always at 0x8000 offset. Don't subtract the addend here. + (is_static_defined): New function. + (ppc_elf_relocate_section): Verify symbol base used in SDA relocs + is statically defined. Clear addend for EMB_SDAI16 and EMB_SDA2I16 + relocs. Downgrade error on unexpected section for EMB_SDA2REL + reloc symbols to a warning. + +2009-09-18 Nick Clifton + + * po/es.po: Updated Spanish translation. + * po/vi.po: Updated Vietnamese translation. + +2009-09-18 Alan Modra + + * elf64-ppc.c (follow_link, elf_follow_link, ppc_follow_link): New + functions. Use throughout. + (ppc64_elf_copy_indirect_symbol): Set direct symbol "oh" field + from indirect symbol. + (lookup_fdh): Rename from get_fdh. Follow indirect sym links. + (add_symbol_adjust): Simplify. + (defined_code_entry, defined_func_desc): New functions. + (ppc64_elf_gc_keep): Follow indirect sym links. Use defined_code_entry. + (ppc64_elf_gc_mark_dynamic_ref): Use defined_func_desc and + defined_code_entry to follow indirect sym links. + (ppc64_elf_gc_mark_hook, func_desc_adjust): Likewise. + (ppc_type_of_stub): Follow indirect sym links. + (toc_adjusting_stub_needed): Likewise. + (ppc_build_one_stub): Likewise. Make undefined dot-symbols weak + rather than defining them at stub. + (ppc64_elf_relocate_section): Rewrite call test to avoid multiple + assignments in test. + +2009-09-16 Tristan Gingold + + * mach-o.h (bfd_mach_o_filetype): Add new constants from darwin10. + Reindent. + * mach-o.c (bfd_mach_o_cpu_name): Reindent. + (bfd_mach_o_filetype_name): Complete with new constants. Reindent. + (bfd_mach_o_print_private_header): Use fputs instead of fprintf + when possible to avoid warnings. + (bfd_mach_o_print_section_map): Ditto. + (bfd_mach_o_section_get_entry_size): New function. + (bfd_mach_o_section_get_nbr_indirect): Simplify using the newly + added function. + (bfd_mach_o_print_dysymtab): Print address of indirect symbols. + +2009-09-14 Nick Clifton + + * po/fi.po: Updated Finnish translation. + +2009-09-11 Nick Clifton + + * po/bfd.pot: Updated by the Translation project. + +2009-09-11 Philippe De Muyter + + * binary.c (binary_object_p): Remove bfd_external_binary_architecture + hack. objcopy `-B' (`--binary-architecture') option is now handled + in a generic way. + +2009-09-11 Nick Clifton + + * rs6000-core.c (read_hdr): Fix typo in recent C++ compatibility + changes. + +2009-09-11 Jie Zhang + + * elf32-bfin.c (bfinfdpic_relocs_info_find): Just return + NULL if `ht' is NULL. + +2009-09-09 Martin Thuresson + + Update sources to compile cleanly with -Wc++-compat: + * aoutx.h: Add casts. + * archive.c: Add casts. + * archive64.c: Add casts. + * archures.c: Add casts. + * bfd-in2.h: Regenerated. + * bfd.c: Add casts. (enum bfd_direction): Move out to top level. + * bfdio.c: Add casts. + * binary.c: Add casts. + * cache.c (cache_bseek,cache_bread_1,cache_bwrite): Updated + parameter to use enum value instead of int. + * coffcode.h: Add casts. + * coffgen.c: Add casts. + * cofflink.c: Add casts. + * compress.c: Add casts. + * dwarf1.c: Add casts. + * dwarf2.c: Add casts. (struct dwarf2_debug): Rename member bfd to + bfd_ptr. Update code to use new name. + * elf-attrs.c: Add casts. + * elf-bfd.h (elf_link_virtual_table_entry): Gives name to + anonymous struct. (union gotplt_union, struct + elf_link_virtual_table_entry): Move to top level. + * elf-eh-frame.c: Add casts. + * elf-strtab.c: Add casts. + * elf.c: Add casts. (_bfd_elm_make_Section_from_phdr): Change + argument name from typename to type_name. + * elf32-i386.c: Add casts. + * elf64-x86-64.c: Add casts. + * elfcode.h: Add casts. + * elfcore.h: Add casts. + * elflink.c: Add casts. + * format.c: Add casts. + * hash.c: Add casts. + * ihex.c: Add casts. + * libaout.h (enum aout_subformat, enum aout_magic): Move to top + level. + * libbfd.c: Add casts. + * linker.c: Add casts. + * merge.c: Add casts. + * opncls.c: Add casts. + * peXXigen.c: Add casts. + * peicode.h: Add casts. + * reloc.c: Add casts. + * section.c: Add casts. + * simple.c: Add casts. + * srec.c: Add casts. + * stabs.c: Add casts. + * syms.c: Add casts. + * targets.c: Add casts. + * tekhex.c: Add casts. + * verilog.c: Add casts. + +2009-09-09 Paolo Bonzini + + * configure: Regenerate. + +2009-09-09 Daniel Jacobowitz + + * elf32-arm.c (elf32_arm_final_link_relocate): Set sym_flags + for the mode of target PLT entries. + (allocate_dynrelocs): Only adjust symbol type if setting its + value. + +2009-09-09 Paolo Bonzini + + * configure: Regenerate. + +2009-09-09 Nick Clifton + + PR 10478: + * elf.c (bfd_section_from_shdr): Do not reject sparc binaries with + section headers containing sh_link values of SHN_BEFORE or + SHN_AFTER. + * elfcode.h (elf_object_p): Likewise. + +2009-09-09 Tristan Gingold + + Handle DYLD_INFO introduced by Darwin10. + * mach-o.h (bfd_mach_o_load_command_type): Add + BFD_MACH_O_LC_DYLD_INFO. + (bfd_mach_o_dyld_info_command): New type. + (bfd_mach_o_load_command): Add dyld_info field. + * mach-o.c (bfd_mach_o_scan_read_str): Reduce size of buf. + (bfd_mach_o_scan_read_dyld_info): New function. + (bfd_mach_o_scan_read_command): Handle BFD_MACH_O_LC_DYLD_INFO. + (bfd_mach_o_bfd_print_private_bfd_data): Ditto. + (bfd_mach_o_load_command_name): AddB FD_MACH_O_LC_DYLD_INFO. + (bfd_mach_o_print_dyld_info): New function. + +2009-09-09 M R Swami Reddy + + * elf32-cr16.c (elf32_cr16_relocate_section): Add code to discard the + linkonce or linker script discarded section. + +2009-09-09 Alan Modra + + * elf32-xtensa.c (elf_xtensa_relax_section): Delete -r check. + +2009-09-07 Andreas Schwab + + * elf32-m68k.c (rtype_to_howto): If the reloc index is out of + range call the bfd error hander and use R_68K_NONE instead. + +2009-09-07 Tristan Gingold + + * po/SRC-POTFILES.in: Regenerate. + * po/bfd.pot: Regenerate. + + * bfd.m4 (BFD_HAVE_TIME_TYPE_MEMBER, + BFD_HAVE_SYS_STAT_TYPE_MEMBER): Moved to gas/acinclude.m4 + * configure.in: Move tests for tm_gmtoff, st_mtim.tv_sec and + st_mtim.tv_nsec to gas/configure.in + (bfd_elf64_ia64_vms_vec): Remove vmsutil.lo + * configure: Regenerate. + * config.in: Regenerate. + * vmsutil.c: Moved to gas/config/te-vms.c + * vmsutil.h: Removed. + * Makefile.am (BFD32_BACKENDS_CFILES): Remove vmsutil.c + (BFD32_BACKENDS): Remove vmsutil.lo + * Makefile.in: Regenerate. + +2009-09-05 Eli Zaretskii + + * coffcode.h: Include libiberty.h. + +2009-09-05 Martin Thuresson + + * coff-arm.c (coff_arm_relocate_section) + (record_thumb_to_arm_glue, bfd_arm_process_before_allocation): + Change member name class to symbol_class. + * coff-i960.c (coff_i960_relocate_section) Rename variable + class to class_val. Change member name class to symbol_class. + * coff-rs6000.c (_bfd_xcoff_swap_aux_in) + (_bfd_xcoff_swap_aux_out): Rename arguments class to in_class. + * coff-stgo32.c (adjust_aux_in_post) + (adjust_aux_out_pre, adjust_aux_out_post): Rename arguments class + to in_class. + * coff64-rs6000.c (_bfd_xcoff64_swap_aux_in) + (_bfd_xcoff64_swap_aux_out): Rename arguments class to in_class. + * coffcode.h (coff_pointerize_aux_hook): Rename variable class + to n_sclass. + * coffgen.c (coff_write_symbol, coff_pointerize_aux): Rename + variables named class to n_sclass. (coff_write_symbols): Rename + variable class to sym_class. (bfd_coff_set_symbol_class): Rename + argument class to symbol_class. + * cofflink.c (_bfd_coff_link_hash_newfunc) + (coff_link_add_symbols, _bfd_coff_link_input_bfd) + (_bfd_coff_write_global_sym, _bfd_coff_generic_relocate_section): + Update code to use renamed members. + * coffswap.h (coff_swap_aux_in, coff_swap_aux_out): Rename + argument class to in_class. + * libcoff-in.h (struct coff_link_hash_entry, struct + coff_debug_merge_type) Renamed members class to symbol_class and + type_class. + * libcoff.h Regenerated. + * peXXigen.c: (_bfd_XXi_swap_aux_in, _bfd_XXi_swap_aux_out): + Rename argument class to in_class. + * pef.c (bfd_pef_parse_imported_symbol): Update code to use + renamed members. + * pef.h (struct bfd_pef_imported_symbol): Changed name of + member class to symbol_class. + +2009-09-04 H.J. Lu + + * configure: Regenerated. + +2009-09-04 Tristan Gingold + + * configure.in: Bump version to 2.20.51 + +2009-09-04 Alan Modra + + * elf32-spu.c (spu_elf_relocate_section): Correct 2009-07-24 logic. + +2009-09-04 Jie Zhang + + * elf32-bfin.c (elf32_bfinfdpic_create_dynamic_sections): Always + create .rela.bss. + (elf32_bfinfdpic_size_dynamic_sections): Set SEC_EXCLUDE flag + for empty .rela.bss and .rel.plt sections. + +2009-09-03 Adam Nemet + + * elfxx-mips.c (mips_elf_calculate_relocation): Don't relocate + R_MIPS_JALR unless symbol resolves locally. + +2009-09-03 Adam Nemet + + * elfxx-mips.c (_bfd_mips_elf_check_relocs): Don't set + has_static_relocs for R_MIPS_JALR. + +2009-09-03 Maciej W. Rozycki + + * elf64-mips.c (mips_elf64_howto_table_rela): Add support for + R_MIPS_TLS_DTPMOD64 and R_MIPS_TLS_TPREL64, replacing the + respective stubs. + +2009-09-01 H.J. Lu + + * elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Declare + plt earlier. + +2009-09-01 Tristan Gingold + + * makefile.vms: Ported to Itanium VMS. Remove useless variable and + dependencies. Reindent. + * configure.com: Ported to Itanium VMS. Now generates a build.com + to build without make. Add messages but make edit silent. + * hosts/alphavms.h: Add a prototype for stpcpy. + * vms.c: Add a missing include for Alpha VMS. + * elfxx-ia64.c (ELF_OSABI): Define for OpenVMS. + +2009-08-31 Jan Beulich + + * elf-bfd.h (bfd_elf_get_default_section_type): Declare. + * elf.c (bfd_elf_get_default_section_type): New. + (elf_fake_sections): Use bfd_elf_get_default_section_type. + +2009-08-30 H.J. Lu + + * elf32-i386.c (elf_i386_finish_dynamic_symbol): Revert the + accidental checkin. + * elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Likwise. + +2009-08-30 Alan Modra + + PR ld/10569 + * bfd.c (bfd_emul_get_maxpagesize): Don't abort. + (bfd_emul_get_commonpagesize): Likewise. + +2009-08-29 Martin Thuresson + + * elf32-arm.c (struct stub_def): Rename member template to + template_sequence. (arm_build_one_stub, + find_stub_size_and_template, arm_size_one_stub, arm_map_one_stub): + Rename variable template to template_sequence. + * elfxx-ia64.c (elfNN_ia64_relax_br, elfNN_ia64_relax_brl): + Rename variable template to template_val. + * aoutx.h (NAME (aout, make_empty_symbol)): Rename variable + new to new_symbol. + * coffgen.c (coff_make_empty_symbol) + (coff_bfd_make_debug_symbol): Rename variable new to new_symbol. + * cpu-ia64-opc.c (ext_reg, ins_imms_scaled): Rename variable + new to new_insn. + * ecoff.c (_bfd_ecoff_make_empty_symbol): Rename variable new + to new_symbol. + * elf32-m68k.c (elf_m68k_get_got_entry_type): Rename argument + new to new_reloc. + * hash.c (bfd_hash_lookup): Rename variable new to new_string. + * ieee.c (ieee_make_empty_symbol): Rename variable new to + new_symbol. + * linker.c (bfd_new_link_order): Rename variable new to + new_lo. + * mach-o.c (bfd_mach_o_sizeof_headers): Rename variable new to + symbol. + * oasys.c (oasys_make_empty_symbol): Rename variable new to + new_symbol_type. + * pdp11.c (NAME (aout, make_empty_symbol)): Rename variable + new to new_symbol_type. + * plugin.c (bfd_plugin_make_empty_symbol): Rename variable new + to new_symbol. + * rs6000-core.c (CoreHdr, VmInfo): Rename union member new to + new_dump. + (read_hdr, rs6000coff_core_p) + (rs6000coff_core_file_matches_executable_p) + (rs6000coff_core_file_failing_command) + (rs6000coff_core_file_failing_signal): Updated function to use new + union member name. + * som.c (som_make_empty_symbol): Rename variable new to + new_symbol_type. + * syms.c (_bfd_generic_make_empty_symbol): Rename variable new + to new_symbol. + * tekhex.c (first_phase, tekhex_make_empty_symbol): Rename + variable new to new_symbol. + +2009-08-27 Ralf Wildenhues + + * acinclude.m4 (AM_INSTALL_LIBBFD): Call AM_SUBST_NOTMAKE for + bfdlibdir and bfdincludedir. + * Makefile.am (bfdlibdir, bfdincludedir): Move definition ... + [INSTALL_LIBBFD]: ... here, ... + [INSTALL_LIBBFD]: ... and empty overrides here. + [!INSTALL_LIBBFD]: (rpath_bfdlibdir): New variable. + [!INSTALL_LIBBFD] (libbfd_la_LDFLAGS): Use it. + * Makefile.in: Regenerate. + * configure: Regenerate. + +2009-08-26 Maxim Kuvyrkov + + * elf32-m68k.c: Rewrite initialization of GOT entries for TLS + relocations. Rewrite output of dynamic TLS relocations. + (DTP_OFFSET, TP_OFFSET): New constants. + (dtpoff_base): Update. + (tpoff): Rename to tpoff_base, update. + (elf_m68k_init_got_entry_static, elf_m68k_init_got_entry_local_shared): + New functions. Move code from elf_m68k_relocate_section here. + (elf_m68k_relocate_section): Update. + (elf_m68k_finish_dynamic_symbol): Fix handling of local TLS symbols. + +2009-08-26 Maxim Kuvyrkov + + * elf32-m68k.c (elf_m68k_copy_indirect_symbol): Propagate + non_got_ref value. + (elf_m68k_check_relocs): Handle dynamic TLS relocations. + Handle non_got_ref field. + (elf_m68k_adjust_dynamic_symbol): Handle non_got_ref field. + +2009-08-26 Alan Modra + + PR ld/10518 + * linker.c (bfd_find_version_for_sym): Revert warning. + +2009-08-26 Alan Modra + + PR ld/10518 + * linker.c (bfd_find_version_for_sym): Override a "*" match by any + other wildcard match. Warn on multiple wildcard matches. + +2009-08-22 Ralf Wildenhues + + * Makefile.am (libbfd_la_LDFLAGS): Initialize early, to allow + appending. + [INSTALL_LIBBFD] (bfdlib_LTLIBRARIES, bfdinclude_HEADERS): Set + only in this condition. + [!INSTALL_LIBBFD] (noinst_LTLIBRARIES, libbfd_la_LDFLAGS): New, + to build but not install libbfd.la in this condition. + (install-bfdlibLTLIBRARIES, uninstall-bfdlibLTLIBRARIES) + (install_libbfd, install_libbfd): Remove. + * Makefile.in: Regenerate. + * doc/Makefile.am (AM_CPPFLAGS): Renamed from ... + (INCLUDES): ... this. + ($(MKDOC)): Adjust. + * doc/Makefile.in: Regenerate. + + * Makefile.am (AUTOMAKE_OPTIONS): Remove cygnus, instead use + no-dist and foreign. + (EXTRA_libbfd_la_SOURCES): New, list $(CFILES) to allow + dependency tracking to work for them. + (targets.lo, archures.lo, dwarf.lo): Rewrite to + use automake dependency tracking mechanism. + (MKDEP, DEP, DEP1, dep.sed, dep, dep-in, dep-am): Remove. + (mkdep section): Remove. + (BUILT_SOURCES): New, list $(BUILD_HFILES). + * Makefile.in: Regenerate. + * po/SRC-POTFILES.in, po/bfd.pot: Regenerate. + + * Makefile.am (datarootdir, docdir, htmldor, pdfdir) + (install-pdf, install-pdf-recursive, install-html) + (install-html-recursive): Remove. + * Makefile.in: Regenerate. + + * Makefile.in: Regenerate. + * aclocal.m4: Likewise. + * config.in: Likewise. + * configure: Likewise. + +2009-08-21 Daniel Gutson + + * elf32-arm.c (arch_has_thumb2_nop): New function. + (arch_has_arm_nop): New function. + (elf32_arm_final_link_relocate): NOP opcodes changed. + +2009-08-16 Doug Evans + + * opncls.c (bfd_close): Until BFD_IN_MEMORY has an iovec, + at least don't leak memory. + +2009-08-13 DJ Delorie + + * elf32-m32c.c (m32c_elf_relax_delete_bytes): Adjust symbol sizes + if needed. + +2009-08-12 Nick Clifton + + * po/fi.po: Updated Finnish translation. + +2009-08-11 Bernd Schmidt + + Merge some FRV FDPIC changes into the Blackfin code. + * elf32-bfin.c (struct bfinfdpic_elf_link_hash_table): Add pointer to + summary reloc information. + (bfinfdpic_dynamic_got_plt_info): New. + (_bfin_create_got_section): Create the PLT section here. + (elf32_bfinfdpic_create_dynamic_sections): Not here. + (_bfinfdpic_count_nontls_entries): Move out of... + (_bfinfdpic_count_got_plt_entries): ... here. + (_bfinfdpic_count_relocs_fixups): Likewise. + (_bfinfdpic_reset_got_plt_entries): New. + (_bfinfdpic_size_got_plt): Move out of... + (elf32_bfinfdpic_size_dynamic_sections): ... here. + (bfinfdpic_relocate_section): Be careful not to call + _bfinfdpic_add_rofixup or _bfinfdpic_add_dyn_reloc for deleted relocs. + (bfinfdpic_check_discarded_relocs, bfinfdpic_elf_discard_info): + New functions. + (elf_backend_discard_info): Define for FD-PIC. + +2009-08-11 Alan Modra + + * elflink.c: Add FIXMEs for some places that require octets_per_byte + adjustments. + * elf-eh-frame.c: Likewise. + * merge.c: Likewise. + +2009-08-11 Alan Modra + + * configure.in: Remove elf-ifunc.lo from common ELF files. Add + to x86 and x86_64 configurations. + * configure: Regenerate. + +2009-08-10 Jan Kratochvil + + Stop using bfd_usrdata in libbfd. + * coff-stgo32.c (bfd_coff_go32stub): Remove. + (stub_bytes, comment): Replace STUBSIZE by GO32_STUBSIZE. + (adjust_filehdr_in_post): Declare the abfd parameter as unused. + Replace STUBSIZE by GO32_STUBSIZE. Save now the stub in + filehdr_dst->u.go32.stub. New comment with the reason. + (adjust_filehdr_out_pre): Replace STUBSIZE by GO32_STUBSIZE. + Substitute the removed macro bfd_coff_go32stub. + (adjust_filehdr_out_post, adjust_scnhdr_in_post, adjust_scnhdr_out_pre) + (adjust_scnhdr_out_post, adjust_aux_in_post, adjust_aux_out_pre) + (adjust_aux_out_post): Replace STUBSIZE by GO32_STUBSIZE. + (create_go32_stub, go32_stubbed_coff_bfd_copy_private_bfd_data): + Replace STUBSIZE by GO32_STUBSIZE. Substitute the removed macro + bfd_coff_go32stub. + * coffcode.h (coff_mkobject_hook): Initialize coff->go32stub. + * libcoff-in.h (coff_data_type): New field go32stub. + * libcoff.h: Regenerated. + +2009-08-10 Jan Kratochvil + + Fix go32 stub preservation by objcopy. + * coff-stgo32.c (adjust_filehdr_in_post): Use bfd_malloc. + (go32_stubbed_coff_bfd_copy_private_bfd_data): Optionally allocate OBFD + go32stub. + +2009-08-10 Nathan Sidwell + + * elf32-arm.c (elf32_arm_size_stubs): Don't die on undefined local + symbols. + (elf32_arm_final_link_relocate): Treat local undefined symbols the + same as global undefined symbols. + (elf32_arm_relocate_section): Give an error for local undefined + non-weak symbols, unless the reloc will not use the symbol. + +2009-08-10 Nathan Sidwell + + * elf32-ppc.c (shared_stub_entry, stub_entry): Use r12, not r11. + (ppc_elf_relax_section): Use symbol index to distinguish + relocatable stubs. + +2009-08-10 Alan Modra + + * elf32-ppc.c (ppc_elf_relax_section): Ignore non-code sections. + +2009-08-10 Alan Modra + + * elflink.c (_bfd_elf_adjust_dynamic_symbol): Don't clear plt + info for STT_GNU_IFUNC. + * elf32-ppc.c (ppc_elf_check_relocs): Count a needed plt entry + on got refs in case the symbol turns out to be ifunc. + (ppc_elf_gc_sweep_hook): Similarly. + (ppc_elf_adjust_dynamic_symbol): Adjust assertion. + (allocate_dynrelocs): Don't specially allocate got relocs for ifunc. + (ppc_elf_size_dynamic_sections): Likewise. + (ppc_elf_relocate_section): Likewise. + +2009-08-09 Bernd Schmidt + + From Mike Frysinger + * elf32-bfin.c (bfin_howto_table, bfin_reloc_map, bfin_check_relocs, + bfin_final_link_relocate, bfin_relocate_section, bfin_gc_sweep_hook, + _bfinfdpic_emit_got_relocs_plt_entries, bfinfdpic_relocate_section, + bfinfdpic_gc_sweep_hook, bfinfdpic_check_relocs, + bfin_finish_dynamic_symbol, bfd_bfin_elf32_create_embedded_relocs): + Adjust to match the renamed reloc definitions. + +2009-08-08 Alan Modra + + PR 10494 + * elf.c (_bfd_elf_make_section_from_shdr): When setting up section + LMAs, use ELF_IS_SECTION_IN_SEGMENT to match sections with headers. + +2009-08-07 Tom Tromey + + * elf32-microblaze.c (microblaze_elf_check_relocs): Avoid strict + aliasing error. + +2009-08-06 Michael Eager + + * Makefile.am: Add cpu-microblaze.{lo,c}, elf32-microblaze.{lo,c}. + * Makefile.in: Regenerate. + * archures.c: Add bfd_arch_microblaze. + * bfd-in2.h: Regenerate. + * config.bfd: Add microblaze target. + * configure.in: Add bfd_elf32_microblaze_vec target. + * configure: Regenerate. + * cpu-microblaze.c: New. + * elf32-microblaze.c: New. + * libbfd-in.h: Add prototype _bfd_dwarf2_fixup_section_debug_loc(). + * libbfd.h: Regenerate. + * reloc.c: Add MICROBLAZE relocations. + * section.c: Add struct relax_table and relax_count to section. + * targets.c: Add bfd_elf32_microblaze_vec. + +2009-08-06 Jakub Jelinek + Alan Modra + + PR binutils/10492 + * elf.c (sym_is_global): Return true even for BSF_GNU_UNIQUE + symbols. + * elf32-mips.c (mips_elf_sym_is_global): Likewise. + * elfn32-mips.c (mips_elf_sym_is_global): Likewise. + +2009-08-06 Nathan Sidwell + + * elf32-arm.c (elf32_arm_size_stubs): Call layout_sections_again + at least once when fixing cortex-a8. + +2009-08-05 Chao-ying Fu + + * elf32-mips.c (mips_reloc_map): Add BFD_RELOC_MIPS_JALR. + * elfxx-mips.c (JAL_TO_BAL_P): New define to transform JAL to BAL + for CPUs. It is true for RM9000. + (JALR_TO_BAL_P): New define to transform JALR to BAL. It is true + for all CPUs. + (mips_elf_perform_relocation): Use JAL_TO_BAL_P and JALR_TO_BAL_P + to guard the transformation. + +2009-08-05 Trevor Smigiel + + * elf32-spu.h (spu_elf_params): Add member emit_fixups. + (spu_elf_size_sections): Declare prototype. + * elf32-spu.c (spu_link_hash_table): Add member sfixup. + (FIXUP_RECORD_SIZE, FIXUP_GET, FIXUP_PUT): New macros. + (spu_elf_emit_fixup): New function. + (spu_elf_relocate_section): Emit fixup for each SPU_ADDR32. + (spu_elf_size_sections): New function. + +2009-08-05 Nathan Sidwell + + * elf32-arm.c (elf32_arm_stub_type): Add arm_stub_a8_veneer_lwm. + (arm_build_one_stub): Build a8 veneers as a separate pass. + (cortex_a8_erratum_scan): Add prev_num_a8_fixes and stub_changed_p + parameters. Use them to check if we create a different a8 fixup + than the previous pass. + (elf32_arm_size_stubs): Move scope of stub_changed and + prev_num_a8_fixes into main loop. + (elf32_arm_build_stubs): Build a8 veneers in a second pass. + +2009-08-04 Alan Modra + + * elf32-ppc.c (ppc_elf_relax_section): Correct conditions under + which find_plt_ent is called. Delete redundant code. + +2009-08-03 H.J. Lu + + PR binutils/10363 + * elf.c (bfd_elf_string_from_elf_section): Return NULL on + invalid string offset. + +2009-08-03 H.J. Lu + + PR ld/10433 + * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Set got + to htab->init_got_offset and plt to htab->init_plt_offset + when discarding space for dynamic relocations. + +2009-08-03 Alan Modra + + * elf32-ppc.c (struct plt_entry): Revise comments. + (ppc_elf_check_relocs): Don't create needless plt_entry info + for non-pie executables. Don't test info->pie when info->shared + already covers that case. + (ppc_elf_gc_sweep_hook): Adjust for above change. + (add_stub_sym): Don't test info->pie when info->shared tested. + (allocate_dynrelocs, ppc_elf_size_dynamic_sections): Likewise. + (write_glink_stub, ppc_elf_finish_dynamic_symbol): Likewise. + (ppc_elf_relax_section): Adjust find_plt_ent arguments. + (ppc_elf_relocate_section): Likewise. + +2009-08-03 Alan Modra + + * elf32-ppc.c (ppc_elf_check_relocs): Always add a plt ref count + for local ifunc symbols in non-pie executables, regardless of + reloc type. Don't specially create ifunc dyn relocs. Tidy ifunc + code so that it's obvious that we only do anything special for + local ifunc syms. + (ppc_elf_gc_sweep_hook): Adjust to suit check_relocs changes. + (allocate_dynrelocs): Correct comment for syms defined in plt. + Don't specially allocate ifunc dyn relocs. + (ppc_elf_relax_section): Relax branches to ifunc plt entries too. + (ppc_elf_relocate_section): Set "relocation" value for ifunc + syms in non-pie executables. No specially allocated dyn relocs + for ifunc to write. Allow for local sym on R_PPC_RELAX32_PLT. + (ppc_elf_finish_dynamic_symbol): Set value of ifunc symbols in + a non-pie executable. + +2009-08-02 H.J. Lu + Jakub Jelinek + + PR ld/6443 + * elf32-i386.c (elf_i386_tls_transition): Check executable + instead of shared for TLS when building PIE. + (elf_i386_check_relocs): Likewise. + (elf_i386_allocate_dynrelocs): Likewise. + (elf_i386_relocate_section): Likewise. + + * elf64-x86-64.c (elf64_x86_64_tls_transition): Check executable + instead of shared for TLS when building PIE. + (elf64_x86_64_check_relocs): Likewise. + (elf64_x86_64_allocate_dynrelocs): Likewise. + (elf64_x86_64_relocate_section): Likewise. + +2009-07-31 Anthony Green + + * config.bfd (targ_cpu): Add moxie-uclinux support. + +2009-07-31 Hans-Peter Nilsson + + * linker.c (fix_syms): Consider SEC_LOAD when choosing section. + +2009-07-30 Alan Modra + + * elf32-ppc.c (ppc_elf_check_relocs): Always set up sections + used by indirect function support. Count dynamic relocs for + ifunc syms. + (ppc_elf_adjust_dynamic_symbol): Tweak for ifunc. + (allocate_dynrelocs): Allocate all non-dynamic ifunc plt entries + in iplt and their relocs in reliplt. Don't make ifunc syms + dynamic. Allocate got entry relocs for non-dynamic ifunc in + reliplt. Handle other dynamic relocs for ifunc. + (ppc_elf_size_dynamic_sections): Alloc dyn relocs for static + ifunc in reliplt, likewise relocs for got against local ifunc. + Typo fix on reliplt size adjust. + (ppc_elf_relocate_section): Don't use plt scheme of allocating + relocs 1-1 with entries for iplt, instead just add using + reloc_count. Write got relocs and dyn relocs for ifunc to reliplt. + Error on invalid ifunc dyn relocs. + (ppc_elf_finish_dynamic_symbol): Adjust for non-dynamic ifunc plt + in iplt/reliplt. + * elf64-ppc.c (ppc64_elf_howto_raw): Add R_PPC64_JMP_IREL, + R_PPC64_REL16, R_PPC64_REL16_LO, R_PPC64_REL16_HI, R_PPC64_REL16_HA. + (ppc64_elf_reloc_type_lookup): Handle new relocs. + (ppc64_elf_check_relocs): Likewise. Count dyn relocs for ifunc. + (allocate_dynrelocs): As for elf32-ppc.c above. + (ppc64_elf_size_dynamic_sections): Likewise. + (ppc_build_one_stub): Put non-dynamic ifunc plt call stubs in iplt, + and their relocs in reliplt. Use R_PPC64_JMP_IREL. + (ppc_size_one_stub): Similarly. + (ppc64_elf_relocate_section): As for elf32-ppc.c above. Handle new + relocs too. + (ppc64_elf_finish_dynamic_symbol): As for elf32-ppc.c above. + +2009-07-29 Hans-Peter Nilsson + + * elf64-mmix.c (mmix_elf_relax_section): Revert 2009-05-27 + change. Add note to head comment. + +2009-07-28 Jan Beulich + + * archive.c (get_extended_arelt_filename): Remove redundant + range check on index. + +2009-07-27 Doug Kwan + + * elf32-arm.c (stub_hash_newfunc): Initialize field output_name. + +2009-07-27 H.J. Lu + + * archures.c bfd_*_arch): Sorted. + (bfd_archures_list): Likewise. + +2009-07-27 M R Swami Reddy + + * elf32-cr16.c (elf_cr16_final_link_relocate): Add code to handle + to R_cr16_NUM32 relocation. + +2009-07-26 Michael Eager + + * archures.c: Add bfd_mach_ppc_405 + * bfd-in2.h: Same. + +2009-07-25 H.J. Lu + + * cpu-i386.c (bfd_x86_64_arch): Fix comment typos. + * cpu-l1om.c (bfd_l1om_arch): Likewise. + +2009-07-25 H.J. Lu + + * archures.c (bfd_architecture): Add bfd_arch_l1om. + (bfd_l1om_arch): New. + (bfd_archures_list): Add &bfd_l1om_arch. + * bfd-in2.h: Regenerated. + + * config.bfd (targ64_selvecs): Add bfd_elf64_l1om_vec if + bfd_elf64_x86_64_vec is supported. Add bfd_elf64_l1om_freebsd_vec + if bfd_elf64_x86_64_freebsd_vec is supported. + (targ_selvecs): Likewise. + + * configure.in: Support bfd_elf64_l1om_vec and + bfd_elf64_l1om_freebsd_vec. + * configure: Regenerated. + + * cpu-l1om.c: New. + + * elf64-x86-64.c (elf64_l1om_elf_object_p): New. + (bfd_elf64_l1om_vec): Likewise. + (bfd_elf64_l1om_freebsd_vec): Likewise. + + * Makefile.am (ALL_MACHINES): Add cpu-l1om.lo. + (ALL_MACHINES_CFILES): Add cpu-l1om.c. + * Makefile.in: Regenerated. + + * targets.c (bfd_elf64_l1om_vec): New. + (bfd_elf64_l1om_freebsd_vec): Likewise. + (_bfd_target_vector): Add bfd_elf64_l1om_vec and + bfd_elf64_l1om_freebsd_vec. + +2009-07-24 Trevor Smigiel + Alan Modra + + * reloc.c (BFD_RELOC_SPU_ADD_PIC): Define. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elf32-spu.c (elf_howto_table): Add entries SPU_ADD_PIC. + (spu_elf_bfd_to_reloc_type): Handle SPU_ADD_PIC. + (spu_elf_relocate_section): Patch instructions marked by SPU_ADD_PIC. + +2009-07-23 H.J. Lu + + PR ld/10434 + * elf64-x86-64.c (elf64_x86_64_check_relocs): Check executable + instead of shared for R_X86_64_TPOFF32. + (elf64_x86_64_relocate_section): Likewise. + +2009-07-23 Ulrich Drepper + + * elf-bfd.h (struct elf_link_hash_entry): Add unique_global field. + * elf.c (swap_out_syms): Set binding to STB_GNU_UNIQUE for symbols + with the BSF_GNU_UNIQUE flag bit set. + * elfcode.h (elf_slurp_symbol_table): Set the BSF_GNU_UNIQUE flag + for symbols with STB_GNU_UNIQUE binding. + * elflink.c (_bfd_elf_merge_symbol): Set unique_global for symbols + with the STB_GNU_UNIQUE binding. + (elf_link_add_object_symbols): Set the BSF_GNU_UNIQUE flag for + symbols with STB_GNU_UNIQUE binding. Set STB_GNU_UNIQUE for + symbols with the unique_global field set. + (elf_link_output_extsym): Set unique_global field for symbols with + the STB_GNU_UNIQUE binding. + * syms.c (struct bfd_symbol): Define BSF_GNU_UNIQUE flag bit. + (bfd_print_symbol_vandf): Print a 'u' character for BSF_GNU_UNIQUE + symbols. + (bfd_decode_symclass): Return a 'u' character for BSF_GNU_UNIQUE + symbols. + * bfd-in2.h: Regenerate. + +2009-07-22 H.J. Lu + + * elflink.c (elf_link_output_extsym): Revert the last change. + +2009-07-22 H.J. Lu + + PR ld/10433 + * elflink.c (elf_link_output_extsym): Special case ifunc syms + when ref_regular, not def_regular. + +2009-07-21 H.J. Lu + + PR ld/10426 + * elflink.c (elf_link_add_object_symbols): Turn an IFUNC symbol + from a DSO into a normal FUNC symbol. + (elf_link_output_extsym): Turn an undefined IFUNC symbol into + a normal FUNC symbol. + +2009-07-17 Chao-ying Fu + + * elfxx-mips.c (LOAD_INTERLOCKS_P): New define. + (_bfd_mips_elf_size_dynamic_sections): For CPUs without load + interlocking, the last PLT entry needs a nop in the branch delay slot. + (_bfd_mips_elf_finish_dynamic_symbol): For CPUs with load itnerlocking, + output the last two PLT entries in reverse order. + +2009-07-16 H.J. Lu + + * elf32-i386.c (elf_i386_relocate_section): Don't get local + STT_GNU_IFUNC symbol for relocatable link. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + +2009-07-10 H.J. Lu + + * bfdio.c (bfd_iovec): Add comments for bmmap. + * bfd-in2.h: Regenerated. + +2009-07-10 H.J. Lu + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerated. + +2009-07-10 Doug Kwan + + * elf32-arm.c (stub_hash_newfunc): Initialize fields + target_addend and orig_insn. + +2009-07-10 Tom Tromey + + * Makefile.am (dwarf2.lo): Use dwarf2.h, not elf/dwarf2.h. + (elf-eh-frame.lo): Likewise. + (elf32-bfin.lo): Likewise. + (elf32-frv.lo): Likewise. + (elf32-xc16x.lo): Likewise. + * Makefile.in: Rebuild. + * dwarf2.c: Included dwarf.h, not elf/dwarf2.h. + * elf-eh-frame.c: Likewise. + * elf32-bfin.c: Likewise. + * elf32-frv.c: Likewise. + * elf32-xc16x.c: Likewise. + +2009-07-10 Julian Brown + + * elf32-arm.c (arm_build_one_stub): Use the hash entry of the + symbol a stub entry is derived from, not the entry for the stub + itself, in call to elf32_arm_final_link_relocate. + +2009-07-10 H.J. Lu + + * elf.c (_bfd_elf_get_synthetic_symtab): Remove leading zeros + when reporting addends. + +2009-07-10 Alan Modra + + * elf32-spu.c (spu_elf_size_stubs): Do set up soft-icache manager + data even when no stubs. + (spu_elf_place_overlay_data, spu_elf_build_stubs): Adjust. + +2009-07-10 Alan Modra + + * elf32-ppc.c (ppc_elf_howto_raw): Add R_PPC_IRELATIVE. + (ppc_elf_get_synthetic_symtab): Report addend. + (PLT_IFUNC): Define. + (struct ppc_elf_link_hash_table): Add iplt and reliplt. + (ppc_elf_create_glink): New function. + (ppc_elf_create_dynamic_sections): Use it. + (ppc_elf_add_symbol_hook): Set has_ifunc_symbols. + (update_local_sym_info): Allocate space for local_plt array. + Don't bump local_got_refcounts for PLT_IFUNC. Return local_plt + entry pointer. + (is_branch_reloc): New function. + (ppc_elf_check_relocs): Handle STT_GNU_IFUNC symbols. + (ppc_elf_gc_sweep_hook): Likewise. + (ppc_elf_adjust_dynamic_symbol): Likewise. + (allocate_dynrelocs): Likewise. + (ppc_elf_size_dynamic_sections): Likewise. + (ppc_elf_relocate_section): Likewise. + (branch_reloc_hash_match): Use is_branch_reloc. + (ppc_elf_tls_optimize): Adjust for local_plt. + (write_glink_stub): New function, extracted from.. + (ppc_elf_finish_dynamic_symbol): ..here. Handle STT_GNU_IFUNC. + (ppc_elf_finish_dynamic_sections): Only write plt resolver and + branch table when dynamic. + (elf_backend_post_process_headers): Define. + * elf64-ppc.c (elf_backend_post_process_headers): Define. + (ppc64_elf_howto_raw): Add R_PPC64_IRELATIVE. + (ppc64_elf_get_synthetic_symtab): Report addend. + (struct ppc_stub_hash_entry): Add plt_ent. + (PLT_IFUNC): Define. + (struct ppc_link_hash_table): Add iplt and reliplt. + (create_linkage_sections): Make .iplt and .rela.iplt sections. + (ppc64_elf_add_symbol_hook): Set has_ifunc_symbols. + (update_local_sym_info): Allocate space for local_plt array. + Don't bump local_got_ents for PLT_IFUNC. Return local_plt + entry pointer. + (update_plt_info): Pass pointer to plt_entry rather than sym hash, + and don't change hash flags here. + (is_branch_reloc): New function. + (ppc64_elf_check_relocs): Handle STT_GNU_IFUNC. + (ppc64_elf_gc_sweep_hook): Likewise. + (ppc64_elf_adjust_dynamic_symbol): Likewise. + (allocate_dynrelocs): Likewise. + (ppc64_elf_size_dynamic_sections): Likewise. + (ppc_build_one_stub, ppc_size_one_stub): Likewise. + (ppc64_elf_size_stubs): Likewise. + (ppc64_elf_relocate_section): Likewise. + (get_sym_h): Adjust for local_plt. + (branch_reloc_hash_match): Use is_branch_reloc. + (ppc_type_of_stub): Pass plt_entry pointer and handle ifunc. + (ppc64_elf_toc): Ignore SEC_EXCLUDE sections. + +2009-07-10 Alan Modra + + * elf.c (_bfd_elf_get_synthetic_symtab): Report addends. + +2009-07-10 Alan Modra + + * elf-bfd.h (struct elf_link_hash_entry): Clarify ref_regular + and ref_regular_nonweak comment. + * elflink.c (elf_link_output_extsym): Special case ifunc syms + when def_regular, not ref_regular. + (elf_link_add_object_symbols): Don't set needs_plt on ifunc syms,.. + * elf32-i386.c (elf_i386_check_relocs): ..set it here instead.. + * elf64-x86-64.c (elf64_x86_64_check_relocs): ..and here. + +2009-07-09 Alan Modra + + * elf32-spu.c (mark_functions_via_relocs): Init broken_cycle field + of malloc'd struct call_info. + (pasted_function): Likewise, priority too. + +2009-07-07 Alan Modra + + * elf32-spu.c (spu_elf_auto_overlay): Take into account section + alignment when packing sections into overlays. + +2009-07-03 Cary Coutant + + * dwarf2.c (decode_line_info): Ignore DW_LNE_set_discriminator. + +2009-07-03 Dave Korn + + * coffcode.h (sec_to_styp_flags): Partially revert (functional + changes only) earlier patch:- + +2009-06-25 Kai Tietz + + * coffcode.h (sec_to_styp_flags): Set discardable for .reloc and + give .debug and .reloc data characteristics. + (DOT_RELOC): New define for .reloc section string. + (coff_write_object_contents): Use DOT_RELOC instead of string. + +2009-07-02 Tom Tromey + + * aoutx.h (aout_get_external_symbols): Declare 'amt' locally. + * bfdwin.c (bfd_free_window): Cast to unsigned long. + +2009-07-01 Nick Clifton + + * elf-m10300.c: Remove trailing white space. + * reloc.c: Likewise. + +2009-07-01 Douglas B Rupp + + * bfd.m4 (BFD_HAVE_TIME_TYPE_MEMBER, + BFD_HAVE_SYS_STAT_TYPE_MEMBER): New config functions. + * configure.in: Use them. + * configure: Regenerate. + * config.in: Regenerate. + * vmsutil.c: Include sysdep.h, remove ansidecl.h. + #define _BSD_SOURCE. Add comments. + (vms_file_stats_name): Calculate creation date based on available + runtime data. Return 1 for version instead of 0. + +2009-07-01 Nick Clifton + + PR 10072 + * elf32-arm.c (elf32_arm_final_link_relocate): Add code to handle + to R_ARM_THM_PC8 relocation. + +2009-06-29 Nick Clifton + + * elf-m10300.c (mn10300_elf_relax_section): Allow for the + different uses of the relocations addend when a symbol is in a + merged section. + +2009-06-27 H.J. Lu + + PR ld/10337 + * elf.c (bfd_section_from_shdr): Don't change sh_link for + SHT_REL/SHT_RELA sections on executable nor shared library. + Treat SHT_REL/SHT_RELA sections with sh_link set to SHN_UNDEF + as a normal section. + +2009-06-25 Nick Clifton + + * elf-m10300.c (mn10300_elf_relax_section): Handle non-section + symbols with SEC_MERGE flag. + +2009-06-25 Kai Tietz + + * coffcode.h (sec_to_styp_flags): Set discardable for .reloc and + give .debug and .reloc data characteristics. + (DOT_RELOC): New define for .reloc section string. + (coff_write_object_contents): Use DOT_RELOC instead of string. + +2009-06-25 Tristan Gingold + + * mach-o-target.c (bfd_mach_o_get_dynamic_symtab_upper_bound) + (bfd_mach_o_canonicalize_dynamic_symtab) + (bfd_mach_o_get_synthetic_symtab): Defines. + (TARGET_NAME_BACKEND): Add bfd_mach_o_print_thread entry. + (TARGET_NAME): Use Mach-O specific functions for dynamic. + + * mach-o-i386.c (bfd_mach_o_i386_swap_reloc_in): Fix howto indexes + for scattered relocations. + (bfd_mach_o_i386_print_thread): New function. + (bfd_mach_o_print_thread): Define. + + * mach-o.c (text_section_names_xlat): Add an entry for __const. + (bfd_mach_o_canonicalize_one_reloc, bfd_mach_o_canonicalize_relocs): + New functions extracted from ... + (bfd_mach_o_canonicalize_reloc): ... This. Simplified. + (bfd_mach_o_get_dynamic_reloc_upper_bound): New function. + (bfd_mach_o_canonicalize_dynamic_reloc): New function. + (bfd_mach_o_i386_flavour_string): Adjusted after enum renaming. + (bfd_mach_o_ppc_flavour_string): Reindentation. Add 64 bits cases. + (bfd_mach_o_scan_read_dylinker): Do not create a section anymore. + Set name_str field. + (bfd_mach_o_scan_read_dylib): Ditto. + (bfd_mach_o_scan_read_thread): Set mdata at declaration. Add comments, + reindent. + (bfd_mach_o_scan_read_dysymtab): Set mdata at declaration. Correctly + decode isym and flags on little endian targets. Set dysymtab field. + (bfd_mach_o_scan_start_address): Adjust for enum names. + (bfd_mach_o_lookup_section): Do not look for segments anymore. + (bfd_mach_o_print_section): Display bfd section name. + (bfd_mach_o_print_segment): Display none if no name. + (bfd_mach_o_print_dysymtab): Display next index for local, external + and undefined symbols. + (bfd_mach_o_bfd_print_private_bfd_data): Adjust code by using name_str. + Display dylinker name. Display thread and unixthread commands content. + (bfd_mach_o_print_thread): New macro. + + * mach-o.h (bfd_mach_o_mach_header_magic): Align numbers. + (bfd_mach_o_ppc_thread_flavour): Ditto. + (bfd_mach_o_i386_thread_flavour): Ditto. + (BFD_MACH_O_PPC_THREAD_STATE_NONE): New enum. + (BFD_MACH_O_x86_THREAD_STATE_NONE): Replaces + BFD_MACH_O_THREAD_STATE_NONE. + (bfd_mach_o_segment_command): Remove segment field. + (bfd_mach_o_thread_flavour): Field offset is now unsigned long. + (bfd_mach_o_dylinker_command): Remove section field, add name_str. + (bfd_mach_o_prebound_dylib_command): Ditto. + (bfd_mach_o_dylib_command): Ditto. + (bfd_mach_o_prebound_dylib_command): Remove section field. + (mach_o_data_struct): Add dysymtab field. + (bfd_mach_o_backend_data): Add _bfd_mach_o_print_thread field. + (bfd_mach_o_get_reloc_upper_bound, bfd_mach_o_canonicalize_reloc) + (bfd_mach_o_build_commands): Remove parameter names and attributes. + (bfd_mach_o_get_dynamic_reloc_upper_bound) + (bfd_mach_o_canonicalize_dynamic_reloc): New prototypes. + +2009-06-25 Rafael Avila de Espindola + + * plugin.c (load_plugin): Use stat and S_ISREG instead of the d_type + field of struct dirent. + +2009-06-23 Tristan Gingold + + * vms.c (vms_get_synthetic_symtab): Remove duplicate definition + of this macro. Fix indentation. + +2009-06-22 Christophe Lyon + + * elf32-arm.c (elf32_arm_size_stubs): Use PLT address as + destination for defined dynamic symbols when deciding whether to + insert a stub or not. + (allocate_dynrelocs): Make sure functions are not marked as Thumb + when actually accessed through a PLT, even when generating a + shared lib. + +2009-06-22 Tristan Gingold + + * mach-o.c (bfd_mach_o_canonicalize_reloc): Append a sentinel to + the relocs array. + +2009-06-22 Alan Modra + + * elf32-ppc.c (ppc_elf_check_relocs): Handle R_PPC_RELAX* in switch. + * elf32-v850.c (v850_elf_relocate_section): Warning fix. + +2009-06-22 Alan Modra + + * elf64-ppc.c (ppc64_elf_edit_opd): Avoid gcc warning. + +2009-06-19 H.J. Lu + + * elflink.c (elf_link_add_object_symbols): Avoid warning + from -Wjump-misses-init in gcc 4.5.0. + +2009-06-19 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Properly check local + symbol on error. + * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. + +2009-06-19 H.J. Lu + + * elf32-i386.c (elf_i386_tls_transition): Add a parameter, + r_symndx. Report local symbol name on error. + (elf_i386_check_relocs): Updated. Report local symbol name on + error. + (elf_i386_gc_sweep_hook): Updated. + (elf_i386_relocate_section): Likewise. + + * elf64-x86-64.c (elf64_x86_64_tls_transition): Add a parameter, + r_symndx. Report local symbol name on error. + (elf64_x86_64_check_relocs): Updated. Report local symbol name + on error. + (elf64_x86_64_gc_sweep_hook): Updated. + (elf64_x86_64_relocate_section): Likewise. + +2009-06-19 Tristan Gingold + + * mach-o.c (bfd_mach_o_print_private_header): Fix format character. + +2009-06-19 Tristan Gingold + + * mach-o.c (bfd_mach_o_scan_read_symtab_symbols): Add prototype. + (bfd_mach_o_version): Use bfd_mach_o_get_data instead of direct access. + (bfd_mach_o_valid): Ditto. + (bfd_mach_o_wide_p): Ditto. + (bfd_mach_o_canonicalize_reloc): Ditto. + (bfd_mach_o_build_commands): Ditto. + (bfd_mach_o_scan_read_thread): Ditto. + (bfd_mach_o_flatten_sections): Ditto. + (bfd_mach_o_scan_start_address): Ditto. + (bfd_mach_o_lookup_section): Ditto. + (bfd_mach_o_core_fetch_environment): Ditto. + (bfd_mach_o_write_contents): Ditto. Handle reexport_dylib. + (bfd_mach_o_scan_write_relocs): Adjust for bfd_mach_o_get_data. + (bfd_mach_o_scan_write_symtab): Ditto. + Use macros instead of hard-coded values. + (bfd_mach_o_scan_read_symtab_symbol): Make the function static. + Use bfd_mach_o_get_data instead of direct access. Use macros + instead of hard-coded values. + (bfd_mach_o_scan_read_symtab_strtab): Make the function static. + Remove sym argument and get section from mdata. + Move code into the else branch. + (bfd_mach_o_scan_read_symtab_symbols): Make the function static. + Remove sym argument and get section from mdata. Adjust code. + (bfd_mach_o_scan_read_dylib): Move assertion into the created + switch (which replaces consecutive if statements). + (bfd_mach_o_scan_read_dysymtab): Rename seg to cmd. Load + module table, table of content, indirect symbols and external + referenced symbols. + (bfd_mach_o_scan_read_symtab): Renames seg to symtab. Set symtab + field. + (bfd_mach_o_scan_read_linkedit): New function. + (bfd_mach_o_scan_read_str): Ditto. + (bfd_mach_o_count_symbols): Simplify the code by using the symtab + field of mdata. + (bfd_mach_o_get_symtab_upper_bound): Remove check as + bfd_mach_o_count_symbols never returns an error. + (bfd_mach_o_canonicalize_symtab): Simplify the code by using the + symtab field (there might be only one symtab). + (bfd_mach_o_scan_read_command): Handle reexported dylib. + Handle sub frameworks, sub umbrella, sub library and sub client. + Read code signature and segment split info commands. + (bfd_mach_o_scan): Reindent. + (bfd_mach_o_xlat_name): New type. + (bfd_mach_o_print_flags): New function. + (bfd_mach_o_get_name): Ditto. + (bfd_mach_o_cpu_name): New variable. + (bfd_mach_o_filetype_name, bfd_mach_o_header_flags_name) + (bfd_mach_o_section_type_name) + (bfd_mach_o_section_attribute_name) + (bfd_mach_o_load_command_name): New variables. + (bfd_mach_o_print_private_header): New function. + (bfd_mach_o_print_section_map): New function extracted from + bfd_mach_o_print_private_bfd_data. + (bfd_mach_o_print_section): Ditto. Print more infos. + (bfd_mach_o_print_segment): Ditto. + (bfd_mach_o_print_dysymtab): Ditto. + (bfd_mach_o_bfd_print_private_bfd_data): Reworked. Handle + load weak dylib, reexport dylib and id dylib. + Handle code signature and segment_split info. + Handle sub frameworks, sub umbrella, sub library and sub client. + (bfd_mach_o_section_get_nbr_indirect): New function. + + * mach-o.h (BFD_MACH_O_REFERENCE_MASK): New macro. Add comment. + (bfd_mach_o_header_flags): New enum to define header flags. + (bfd_mach_o_section_attribute): New enum to replace ... + (BFD_MACH_O_S_ATTR_LOC_RELOC, BFD_MACH_O_S_ATTR_EXT_RELOC, + BFD_MACH_O_S_ATTR_SOME_INSTRUCTIONS, BFD_MACH_O_S_ATTR_DEBUG, + BFD_MACH_O_S_SELF_MODIFYING_CODE, BFD_MACH_O_S_ATTR_LIVE_SUPPORT, + BFD_MACH_O_S_ATTR_NO_DEAD_STRIP, BFD_MACH_O_S_ATTR_STRIP_STATIC_SYMS, + BFD_MACH_O_S_ATTR_NO_TOC, BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS): ... + these removed macros. + (BFD_MACH_O_NLIST_SIZE, BFD_MACH_O_NLIST_64_SIZE): New macros. + (bfd_mach_o_dylib_module): New type. + (BFD_MACH_O_DYLIB_MODULE_SIZE, BFD_MACH_O_DYLIB_MODULE_64_SIZE): New + macros. + (bfd_mach_o_dylib_table_of_content): New type. + (BFD_MACH_O_TABLE_OF_CONTENT_SIZE): New macro. + (bfd_mach_o_dylib_reference): New type. + (BFD_MACH_O_REFERENCE_SIZE): New macro. + (bfd_mach_o_dysymtab_command): Add fields for loaded and decoded + modules, toc, references and indirect syms. + (BFD_MACH_O_INDIRECT_SYMBOL_SIZE): New macro. + (bfd_mach_o_dylinker_command): Remove cmd and cmdsize fields (were + unused). Add comment. + (bfd_mach_o_dylib_command): Ditto. + (bfd_mach_o_prebound_dylib_command): Ditto. + (bfd_mach_o_linkedit_command): New type. + (bfd_mach_o_str_command): New type. + (bfd_mach_o_load_command): Add linkedit and str fields. + (mach_o_data_struct): Add symtab field. + (bfd_get_mach_o_data): Renamed to ... + (bfd_mach_o_get_data): ... this new macro. + (bfd_mach_o_scan_read_symtab_symbol, + bfd_mach_o_scan_read_symtab_strtab, + bfd_mach_o_scan_read_symtab_symbols): Prototypes removed. + + * mach-o-i386.c (bfd_mach_o_i386_mkobject): Use bfd_mach_o_get_data + instead of direct access. + +2009-06-19 Alan Modra + + * elf32-ppc.c (ppc_elf_check_relocs): Allow local symbols for + R_PPC_PLTREL24 relocs. + (ppc_elf_relocate_section): Likewise. + +2009-06-19 Alan Modra + + * elf32-ppc.c (find_plt_ent): Pass pointer to plist rather than + pointer to sym hash. Update all uses. + (update_plt_info): Likewise. Don't check addend here. + +2009-06-18 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Remove isymbuf and use + bfd_sym_from_r_symndx. + * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. + +2009-06-18 Alan Modra + + * elf-bfd.h (struct sym_sec_cache): Delete. + (struct sym_cache): New. + (bfd_section_from_r_symndx): Delete prototype. + (bfd_sym_from_r_symndx): Define prototype. + * elf.c (bfd_section_from_r_symndx): Delete, replace with.. + (bfd_sym_from_r_symndx): ..new function. + * elf32-arm.c: Update all uses of struct sym_sec_cache and + bfd_section_from_r_symndx to new struct and function. + * elf32-bfin.c: Likewise. + * elf32-hppa.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-m32r.c: Likewise. + * elf32-m68hc1x.c: Likewise. + * elf32-m68hc1x.h: Likewise. + * elf32-m68k.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-s390.c: Likewise. + * elf32-sh.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-s390.c: Likewise. + * elf64-x86-64.c: Likewise. + * elfxx-sparc.c: Likewise. + * elfxx-sparc.h: Likewise. + +2009-06-18 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Cache or free isymbuf. + * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. + +2009-06-18 Nick Clifton + + * elflink.c (elf_link_sort_relocs): Return early if there are no + relocs to sort. + +2009-06-18 Dave Korn + + Merge cegcc and mingw32ce target name changes from + CeGCC project: + + 2007-12-25 Pedro Alves + + * config.bfd: Add arm*-*-cegcc* target. + + 2007-12-17 Pedro Alves + + * config.bfd: Add arm-*-mingw32ce* target. + +2009-06-17 H.J. Lu + + * elf-bfd.h (_bfd_elf_allocate_ifunc_dyn_relocs): New. + * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Likewise. + * elf32-i386.c (elf_i386_allocate_dynrelocs): Use it. + * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Likewise. + +2009-06-17 H.J. Lu + + * elf-bfd.h (_bfd_elf_create_ifunc_dyn_reloc): New. + * elf-ifunc.c (_bfd_elf_create_ifunc_dyn_reloc): Likewise. + * elf32-i386.c (elf_i386_check_relocs): Use it. + * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. + +2009-06-17 H.J. Lu + + * elf-bfd.h (elf_dyn_relocs): New. + + * elf32-i386.c (elf_i386_dyn_relocs): Removed. + (elf_i386_link_hash_entry): Replace elf_i386_dyn_relocs with + elf_dyn_relocs. + (elf_i386_copy_indirect_symbol): Likewise. + (elf_i386_check_relocs): Likewise. + (elf_i386_gc_sweep_hook): Likewise. + (elf_i386_allocate_dynrelocs): Likewise. + (elf_i386_readonly_dynrelocs): Likewise. + (elf_i386_size_dynamic_sections): Likewise. + + * elf64-x86-64.c (elf64_x86_64_dyn_relocs): Removed. + (elf64_x86_64_link_hash_entry): Replace elf64_x86_64_dyn_relocs + with elf_dyn_relocs. + (elf64_x86_64_copy_indirect_symbol): Updated. + (elf64_x86_64_check_relocs): Likewise. + (elf64_x86_64_gc_sweep_hook): Likewise. + (elf64_x86_64_adjust_dynamic_symbol): Likewise. + (elf64_x86_64_allocate_dynrelocs): Likewise. + (elf64_x86_64_readonly_dynrelocs): Likewise. + (elf64_x86_64_size_dynamic_sections): Likewise. + +2009-06-17 H.J. Lu + + * elf32-arm.c (create_got_section): Get existing .rela.got + section. + * elf32-hppa.c (elf32_hppa_create_dynamic_sections): Likewise. + * elf32-lm32.c (create_got_section): Likewise. + * elf32-m32r.c (create_got_section): Likewise. + * elf32-ppc.c (ppc_elf_create_got): Likewise. + * elf32-s390.c (create_got_section): Likewise. + * elf32-sh.c (create_got_section): Likewise. + * elf32-xtensa.c (elf_xtensa_create_dynamic_sections): Likewise. + * elf64-s390.c (create_got_section): Likewise. + * elfxx-sparc.c (create_got_section): Likewise. + + * elflink.c (_bfd_elf_create_got_section): Properly initialize + the GOT size. + +2009-06-16 H.J. Lu + + * elf-bfd.h (ELF_LOCAL_SYMBOL_HASH): New. + + * elf32-i386.c (elf_i386_local_hash): Removed. + (elf_i386_local_htab_hash): Use ELF_LOCAL_SYMBOL_HASH. + (elf_i386_get_local_sym_hash): Likewise. + + * elf64-x86-64.c (elf64_x86_64_local_hash): Removed. + (elf64_x86_64_local_htab_hash): Use ELF_LOCAL_SYMBOL_HASH. + (elf64_x86_64_get_local_sym_hash): Likewise. + * elfxx-ia64.c (elfNN_ia64_local_htab_hash): Likewise. + (get_local_sym_hash): Likewise. + +2009-06-16 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_link_hash_table): Remove got_sec, + rel_got_sec and plt_sec. + (elfNN_ia64_relax_section): Updated. + (elfNN_ia64_create_dynamic_sections): Likewise. + (get_got): Likewise. + (allocate_dynrel_entries): Likewise. + (elfNN_ia64_size_dynamic_sections): Likewise. + (set_got_entry): Likewise. + (elfNN_ia64_choose_gp): Likewise. + (elfNN_ia64_relocate_section): Likewise. + (elfNN_ia64_finish_dynamic_symbol): Likewise. + (elfNN_ia64_finish_dynamic_sections): Likewise. + +2009-06-16 Ulrich Weigand + + * elf32-spu.c (needs_ovl_stub): Respect .brinfo lrlive bits + also for calls. + +2009-06-16 H.J. Lu + + * configure.in (elf): Add elf-ifunc.lo. + + * configure: Regenerated. + * Makefile.in: Likewise. + + * elf-bfd.h (elf_link_hash_table): Add sgot, sgotplt, + srelgot, splt, srelplt, igotplt, iplt, irelplt and irelifunc. + + * elf32-i386.c (elf_i386_link_hash_table): Remove sgot, + sgotplt, srelgot, splt, srelplt, igotplt, iplt, irelplt and + irelifunc. + (elf_i386_link_hash_table_create): Likewise. + (elf_i386_create_dynamic_sections): Likewise. + (elf_i386_check_relocs): Likewise. + (elf_i386_allocate_dynrelocs): Likewise. + (elf_i386_size_dynamic_sections): Likewise. + (elf_i386_relocate_section): Likewise. + (elf_i386_finish_dynamic_symbol): Likewise. + (elf_i386_finish_dynamic_sections): Likewise. + (elf_i386_create_got_section): Removed. + + * elf64-x86-64.c (elf64_x86_64_link_hash_table): Remove sgot, + sgotplt, srelgot, splt, srelplt, igotplt, iplt, irelplt and + irelifunc. + (elf64_x86_64_compute_jump_table_size): Updated. + (elf64_x86_64_link_hash_table_create): Likewise. + (elf64_x86_64_create_dynamic_sections): Likewise. + (elf64_x86_64_check_relocs): Likewise. + (elf64_x86_64_allocate_dynrelocs): Likewise. + (elf64_x86_64_size_dynamic_sections): Likewise. + (elf64_x86_64_relocate_section): Likewise. + (elf64_x86_64_finish_dynamic_symbol): Likewise. + (elf64_x86_64_finish_dynamic_sections): Likewise. + (elf64_x86_64_create_got_section): Removed. + + * elflink.c (_bfd_elf_create_got_section): Use log_file_align + for pointer alignment. Set up section pointers. + (_bfd_elf_create_dynamic_sections): Likewise. + (_bfd_elf_create_ifunc_sections): Moved to ... + * elf-ifunc.c: Here. New. + + * Makefile.am (BFD32_BACKENDS): Add elf-ifunc.lo. + (BFD32_BACKENDS_CFILES): Add elf-ifunc.c. + Run "make dep-am". + +2009-06-16 Doug Kwan + + * elf32-arm.c (cortex_a8_erratum_scan): Change type of offset + to bfd_signed_vma. Cast constant operands which are used in + offset related expressions to bfd_signed_vma type as appropriate. + +2009-06-16 Maciej W. Rozycki + + * elf32-vax.c (elf_vax_plt_sym_val): New function. + (elf_backend_plt_sym_val): Define. + +2009-06-16 Maciej W. Rozycki + + * elf32-vax.c (elf_vax_reloc_type_class): New function. + (elf_backend_reloc_type_class): Define. + +2009-06-16 Maciej W. Rozycki + + * elf32-vax.c (elf_vax_relocate_section): For symbol references + from an executable to a shared library treat R_VAX_PC32 + relocations as R_VAX_PLT32 ones. + +2009-06-16 Maciej W. Rozycki + + * elf32-vax.c (elf_vax_instantiate_got_entries): Skip local + symbols in GOT space calculation. + (elf_vax_relocate_section): Adjust accordingly. + +2009-06-16 Maciej W. Rozycki + + * elf32-vax.c (elf_vax_plt_entry): Set the entry mask to + include . + +2009-06-16 Maciej W. Rozycki + + * elf32-vax.c (elf_vax_check_relocs): Handle the visibility + attribute. + (elf_vax_relocate_section): Likewise. + +2009-06-15 H.J. Lu + + * elf32-i386.c (elf_i386_allocate_dynrelocs): Update comments. + * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Likewise. + +2009-06-15 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Reformat. + * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. + +2009-06-15 H.J. Lu + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerated. + +2009-06-15 H.J. Lu + + * elf32-i386.c (elf_i386_allocate_dynrelocs): Fix a typo. + * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Likewise. + +2009-06-15 Nick Clifton + + * po/ru.po: New Russian translation. + * configure.in (ALL_LINGUAS): Add ru. + * configure: Regenerate. + +2009-06-14 H.J. Lu + + * elf32-i386.c: Remove duplicated comments. + +2009-06-14 H.J. Lu + + PR ld/10270 + * elf32-i386.c (elf_i386_allocate_dynrelocs): Disallow + dynamic IFUNC pointer in non-shared object. Use .got.plt + for IFUNC definition in PIE. + (elf_i386_allocate_dynrelocs): Resolve IFUNC definition in + PIE locally. + + * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Disallow + dynamic IFUNC pointer in non-shared object. Use .got.plt + for IFUNC definition in PIE. + (elf64_x86_64_relocate_section): Resolve IFUNC definition in + PIE locally. + +2009-06-13 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Properly report + local symbol for unhandled relocation against STT_GNU_IFUNC + symbol. + (elf_i386_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_check_relocs): Likewise. + (elf64_x86_64_relocate_section): Likewise. + +2009-06-13 H.J. Lu + + PR ld/10269 + * elf32-i386.c: Include "objalloc.h" and "hashtab.h". + (elf_i386_link_hash_table): Add loc_hash_table and + loc_hash_memory. + (elf_i386_local_hash): New. + (elf_i386_local_htab_hash): Likewise. + (elf_i386_local_htab_eq): Likewise. + (elf_i386_get_local_sym_hash): Likewise. + (elf_i386_link_hash_table_free): Likewise. + (elf_i386_allocate_local_dynrelocs): Likewise. + (elf_i386_finish_local_dynamic_symbol): Likewise. + (bfd_elf64_bfd_link_hash_table_free): Likewise. + (elf_i386_link_hash_table_create): Create loc_hash_table and + loc_hash_memory. + (elf_i386_check_relocs): Handle local STT_GNU_IFUNC symbols. + (elf_i386_size_dynamic_sections): Likewise. + (elf_i386_relocate_section): Likewise. + (elf_i386_finish_dynamic_sections): Likewise. + (elf_i386_finish_dynamic_symbol): Check _DYNAMIC only if sym + isn't NULL. + + * elf64-x86-64.c: Include "objalloc.h" and "hashtab.h". + (elf64_x86_64_link_hash_table): Add loc_hash_table and + loc_hash_memory. + (elf64_x86_64_local_hash): New. + (elf64_x86_64_local_htab_hash): Likewise. + (elf64_x86_64_local_htab_eq): Likewise. + (elf64_x86_64_get_local_sym_hash): Likewise. + (elf64_x86_64_link_hash_table_free): Likewise. + (elf64_x86_64_allocate_local_dynrelocs): Likewise. + (elf64_x86_64_finish_local_dynamic_symbol): Likewise. + (bfd_elf64_bfd_link_hash_table_free): Likewise. + (elf64_x86_64_link_hash_table_create): Create loc_hash_table + and loc_hash_memory. + (elf64_x86_64_check_relocs): Handle local STT_GNU_IFUNC + symbols. + (elf64_x86_64_size_dynamic_sections): Likewise. + (elf64_x86_64_relocate_section): Likewise. + (elf64_x86_64_finish_dynamic_sections): Likewise. + (elf64_x86_64_finish_dynamic_symbol): Check _DYNAMIC only if + sym isn't NULL. + +2009-06-10 Philip Blundell + + * elf32-arm.c (elf32_arm_fix_exidx_coverage): Avoid crash if + elf_sec->this_hdr == NULL. + +2009-06-12 Tristan Gingold + + * reloc.c: Add BFD_RELOC_MACH_O_SECTDIFF and BFD_RELOC_MACH_O_PAIR. + * bfd-in2.h: Regenerated. + * libbfd.h: Regenerated. + + * mach-o.c (FILE_ALIGN): New macro. + (bfd_mach_o_canonicalize_symtab): Adjust for bfd_mach_o_asymbol. + (bfd_mach_o_print_symbol): Ditto. + (bfd_mach_o_scan_write_thread): Adjust type of variable offset. + (bfd_mach_o_get_reloc_upper_bound): New function. + (bfd_mach_o_canonicalize_reloc): Ditto. + (bfd_mach_o_scan_write_relocs): Ditto. + (bfd_mach_o_scan_write_section_32): Remove offset argument. + (bfd_mach_o_scan_write_section_64): Ditto. + (bfd_mach_o_scan_write_segment_32): Write relocs. Fix size of data + written for load command. Do not compute section file offset. + (bfd_mach_o_scan_write_segment_64): Ditto. + (bfd_mach_o_scan_write_symtab): Compute file offset first. + Adjust for bfd_mach_o_asymbol. Move code to convert from BFD to + Mach-O to ... + (bfd_mach_o_mangle_symbols): ... this new function. + (bfd_mach_o_write_contents): Be sure to have load commands built. + Call bfd_mach_o_mangle_symbols. + (bfd_mach_o_build_commands): Adjust for filelen field. + Use FILE_ALIGN macro. Clear section file offset if section is empty. + Do not set symtab file offset anymore here. + (bfd_mach_o_make_empty_symbol): Allocate a bfd_mach_o_asymbol. + (bfd_mach_o_make_bfd_section): Set SEC_RELOC if has reloc. + Set reloc_count and rel_filepos section fields. + (bfd_mach_o_scan_read_section_32): Type of argument offset is now + unsigned int. + (bfd_mach_o_scan_read_section_64): Ditto. + (bfd_mach_o_scan_read_section): Ditto. + (bfd_mach_o_scan_read_symtab_symbol): Typr of argument s is now + bfd_mach_o_asymbol. Use unsigned int for file offset type. + (bfd_mach_o_scan_read_symtab_symbol): Adjust for bfd_mach_o_asymbol. + Handle weak-ref symbols. + (bfd_mach_o_scan_read_symtab_symbols): Adjust for bfd_mach_o_asymbol. + (bfd_mach_o_scan_read_dysymtab_symbol): Ditto. + (bfd_mach_o_scan): Remove assignment to removed field. + (bfd_mach_o_mkobject_init): Ditto. + (bfd_mach_o_bfd_print_private_bfd_data): Adjust printf formatter. + (bfd_mach_o_bfd_reloc_type_lookup): New macro. + (bfd_mach_o_bfd_reloc_name_lookup): Ditto. + (bfd_mach_o_swap_reloc_in): Ditto. + (bfd_mach_o_swap_reloc_out): Ditto. + + * mach-o.h (BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_NON_LAZY) + (BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_LAZY) + (BFD_MACH_O_REFERENCE_FLAG_DEFINED) + (BFD_MACH_O_REFERENCE_FLAG_PRIVATE_DEFINED) + (BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY) + (BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY) + (BFD_MACH_O_REFERENCED_DYNAMICALLY, BFD_MACH_O_N_DESC_DISCARDED) + (BFD_MACH_O_N_NO_DEAD_STRIP, BFD_MACH_O_N_WEAK_REF) + (BFD_MACH_O_N_WEAK_DEF): New macros. + Add comments. + (bfd_mach_o_section_type): Add new enumeration values. + (BFD_MACH_O_S_SELF_MODIFYING_CODE) + (BFD_MACH_O_S_ATTR_LIVE_SUPPORT) + (BFD_MACH_O_S_ATTR_NO_DEAD_STRIP) + (BFD_MACH_O_S_ATTR_STRIP_STATIC_SYMS, BFD_MACH_O_S_ATTR_NO_TOC): New + macros. + (BFD_MACH_O_GENERIC_RELOC_VANILLA) + (BFD_MACH_O_GENERIC_RELOC_PAIR) + (BFD_MACH_O_GENERIC_RELOC_SECTDIFF) + (BFD_MACH_O_GENERIC_RELOC_PB_LA_PTR) + (BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF): Ditto. + (BFD_MACH_O_RELENT_SIZE): Ditto. + (BFD_MACH_O_R_PCREL, BFD_MACH_O_GET_R_LENGTH) + (BFD_MACH_O_R_EXTERN, BFD_MACH_O_GET_R_TYPE) + (BFD_MACH_O_GET_R_SYMBOLNUM, BFD_MACH_O_SET_R_LENGTH) + (BFD_MACH_O_SET_R_TYPE, BFD_MACH_O_SET_R_SYMBOLNUM): Ditto. + (BFD_MACH_O_SR_SCATTERED, BFD_MACH_O_SR_PCREL) + (BFD_MACH_O_GET_SR_LENGTH, BFD_MACH_O_GET_SR_TYPE) + (BFD_MACH_O_GET_SR_ADDRESS, BFD_MACH_O_SET_SR_LENGTH) + (BFD_MACH_O_SET_SR_TYPE, BFD_MACH_O_SET_SR_ADDRESS): Ditto. + (bfd_mach_o_reloc_info): New struct. + (bfd_mach_o_asymbol): New struct. + (bfd_mach_o_symtab_command): The symbols field is now of type + bfd_mach_o_asymbol. + (bfd_mach_o_load_command): The offset and len fields are now of type + unsigned int. + (mach_o_data_struct): Remove symbols, nsymbols and ibfd fields. + Add a filelen field. Add comments. + (bfd_mach_o_backend_data): New struct. + (bfd_mach_o_get_backend_data): New macro. + (bfd_mach_o_scan_read_symtab_symbol): Parameter symbol now of type + bfd_mach_o_asymbol. + (bfd_mach_o_scan_read_dysymtab_symbol): Ditto. + (bfd_mach_o_get_reloc_upper_bound): New prototype. + (bfd_mach_o_canonicalize_reloc): Ditto. + + * mach-o-target.c (bfd_mach_o_bfd_is_local_label_name): Remove + duplicated macro. Now defined to _bfd_generic_is_local_label. + (TARGET_NAME_BACKEND): New macro... + (TARGET_NAME_BACKEND): ... used to name a new variable. + (TARGET_NAME): Define relocs table using bfd_mach_o, reference + Mach-O backend data. + + * mach-o-i386.c (i386_howto_table): New variable. + (bfd_mach_o_i386_swap_reloc_in): New function. + (bfd_mach_o_i386_swap_reloc_out): Ditto. + (bfd_mach_o_i386_bfd_reloc_type_lookup): Ditto. + (bfd_mach_o_i386_bfd_reloc_name_lookup): Ditto. + (bfd_mach_o_swap_reloc_in, bfd_mach_o_swap_reloc_out): New macros. + (bfd_mach_o_bfd_reloc_type_lookup) + (bfd_mach_o_bfd_reloc_name_lookup): Ditto. + +2009-06-11 Eric Paris + Nick Clifton + + * opncls.c (_maybe_make_executable): New function. Gives execute + permission to an executable bfd that was opened for writing + provided that it is a regular file. Replaces common code found in... + (bfd_close): here and ... + (bfd_close_all_done): here. + +2009-06-11 Anthony Green + + * reloc.c: Add BFD_RELOC_MOXIE_10_PCREL. + * bfd-in2.h: Rebuilt. + * libbfd.h: Rebuilt. + * elf32-moxie.c (moxie_elf_howto_table): Add R_MOXIE_PCREL10 + relocation support. + (moxie_reloc_map): Ditto. + Clean up copyright notice. + +2009-06-10 Paul Pluzhnikov + + * bfd-in2.h: bfd_mmap prototype. + * bfdio.c (bfd_mmap): New function. + * libbfd.h (bfd_iovec): Add bmmap. + * cache.c (cache_bmmap): New function. + (cache_iovec): Initialize bmmap member. + * opencls.c (opncls_bmmap): New function. + (opncls_iovec): Initialize bmmap member. + +2009-06-09 Tristan Gingold + + * mach-o.h (bfd_mach_o_symtab_command): Remove stabs_segment + and stabstr_segment fields. + (mach_o_be_vec, mach_o_le_vec): Removed + (bfd_mach_o_version): New prototype. + + * mach-o.c (bfd_mach_o_version): Make this function public. + (mach_o_wide_p): New function. + (bfd_mach_o_wide_p): Ditto. + (bfd_mach_o_convert_section_name_to_bfd): Add prefix only for + weird names. + (bfd_mach_o_convert_section_name_to_mach_o): Fix typo in comment. + Search in the list only if the name starts with a dot. + (bfd_mach_o_write_header): Use mach_o_wide_p instead of hard-coded + test. Check bfd_seek status. + (bfd_mach_o_scan_write_thread): Check bfd_seek status. + (bfd_mach_o_scan_write_section_32): Ditto. + (bfd_mach_o_scan_write_section_64): Ditto. + (bfd_mach_o_scan_write_section): Removed. + (bfd_mach_o_scan_write_segment): Split into ... + (bfd_mach_o_scan_write_segment_32): ... this and ... + (bfd_mach_o_scan_write_segment_64): ... this. Check bfd_seek status. + (bfd_mach_o_scan_write_symtab_symbols): Moved into ... + (bfd_mach_o_scan_write_symtab): ... this. Write symtab from BFD + symbol table. Now returns a boolean. + (bfd_mach_o_write_contents): Set filetype. Check bfd_seek status. + Adjust for status type. + (bfd_mach_o_build_commands): Use mach_o_wide_p instead of hard-coded + test. Write symbol table. Numbers the sections. + (bfd_mach_o_read_header): Check bfd_seek status. + Use mach_o_wide_p instead of hard-coded test. + (bfd_mach_o_scan_read_section_32): Check bfd_seek status. + (bfd_mach_o_scan_read_section_64): Ditto. + (bfd_mach_o_scan_read_symtab_symbol): Ditto. Check bfd_seek status. + Use BFD_MACH_O_N_TYPE instead of hard-coded value. Correctly + handled common symbols. + (bfd_mach_o_scan_read_symtab_strtab): Check bfd_seek status. + (bfd_mach_o_scan_read_dysymtab_symbol): Ditto. + (bfd_mach_o_scan_read_dylinker): Ditto. + (bfd_mach_o_scan_read_dylib): Ditto. + (bfd_mach_o_scan_read_thread): Ditto. + (bfd_mach_o_scan_read_symtab): Ditto. + Do not create a section for the stabs. + (bfd_mach_o_scan_read_uuid): Check bfd_seek status. + (bfd_mach_o_scan_read_segment): Ditto. + (bfd_mach_o_scan_read_command): Ditto. + (bfd_mach_o_scan_start_address): Ditto. + (bfd_mach_o_scan): Use mach_o_wide_p instead of hard-coded test. + (bfd_mach_o_archive_p): Check bfd_seek status. + (bfd_mach_o_core_fetch_environment): Ditto. + + * mach-o-i386.c (bfd_mach_o_i386_mkobject): Don't set filetype. + +2009-06-06 H.J. Lu + + * elf32-i386.c (elf_i386_link_hash_table): Add irelifunc. + (elf_i386_link_hash_table_create): Initialize irelifunc. + (elf_i386_check_relocs): Updated. Set up irelifunc for + shared objects. + (elf_i386_allocate_dynrelocs): Use irelifunc for dynamic + relocation for non-GOT reference of STT_GNU_IFUNC symbol in + shared objects. + (elf_i386_relocate_section): Likewise. + + * elf64-x86-64.c (elf64_x86_64_link_hash_table): Add irelifunc. + (elf64_x86_64_link_hash_table_create): Initialize irelifunc. + (elf64_x86_64_check_relocs): Updated. Set up irelifunc for + shared objects. + (elf64_x86_64_allocate_dynrelocs): Use irelifunc for dynamic + relocation for non-GOT reference of STT_GNU_IFUNC symbol in + shared objects. + (elf64_x86_64_relocate_section): Likewise. + + * elf-bfd.h (_bfd_elf_create_static_ifunc_sections): Renamed to + ... + (_bfd_elf_create_ifunc_sections): This. + + * elflink.c (_bfd_elf_create_static_ifunc_sections): Renamed to + ... + (_bfd_elf_create_ifunc_sections): This. Create .rel[a].ifunc + for shared objects. + +2009-06-06 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Make room for dynamic + relocation for R_386_32 against STT_GNU_IFUNC symbol when + building shared object. Check info->executable instead of + !info->shared when setting non_got_ref. + (elf_i386_allocate_dynrelocs): Allocate dynamic relocation + for non-GOT reference of STT_GNU_IFUNC symbol in shared + object. Allocate GOT relocation agsinst STT_GNU_IFUNC + symbol if needed. + (elf_i386_relocate_section): Output dynamic relocation for + R_386_32 against STT_GNU_IFUNC symbol to get the real + function address when building shared object. + (elf_i386_finish_dynamic_symbol): Output R_386_GLOB_DAT + relocation for STT_GNU_IFUNC symbol in shared object. + + * elf64-x86-64.c (elf64_x86_64_check_relocs): Make room for + dynamic relocation for R_X86_64_64 against STT_GNU_IFUNC + symbol when building shared object. Check info->executable + instead of !info->shared when setting non_got_ref. + (elf64_x86_64_allocate_dynrelocs): Allocate dynamic relocation + for non-GOT reference of STT_GNU_IFUNC symbol in shared + library. Allocate GOT relocation agsinst STT_GNU_IFUNC symbol + if needed. + (elf64_x86_64_relocate_section): Output dynamic relocation + for R_X86_64_64 against STT_GNU_IFUNC symbol to get the real + function address when building shared object. + (elf64_x86_64_finish_dynamic_symbol): Output R_X86_64_GLOB_DAT + relocation for STT_GNU_IFUNC symbol in shared object. + +2009-06-06 Jan Kratochvil + + * Makefile.am: Run "make dep-am". + (BFD32_BACKENDS): Add mach-o-i386.lo. + (BFD32_BACKENDS_CFILES): Add mach-o-i386.c. + * Makefile.in: Regenerate. + +2009-06-06 Alan Modra + + * elf32-spu.c (spu_elf_relocate_section): Match overlay number + when looking for soft-icache stubs. + +2009-06-05 Tristan Gingold + + * mach-o.h: Update copyright year. + (bfd_mach_o_mach_header_magic): New enum. + (bfd_mach_o_cpu_subtype): Now an enum. + (BFD_MACH_O_HEADER_SIZE, BFD_MACH_O_HEADER_64_SIZE): New macros. + (BFD_MACH_O_SECTION_SIZE, BFD_MACH_O_SECTION_64_SIZE): Ditto. + (BFD_MACH_O_LC_SEGMENT_SIZE, BFD_MACH_O_LC_SEGMENT_64_SIZE): Ditto. + (bfd_mach_o_load_command): Field type_required is now a boolean. + Reindent prototypes. + (bfd_mach_o_object_p, bfd_mach_o_core_p): Remove. + (bfd_mach_o_bfd_copy_private_symbol_data): Add a prototype. + (bfd_mach_o_bfd_copy_private_section_data): Ditto. + (bfd_mach_o_bfd_copy_private_bfd_data): Ditto. + (bfd_mach_o_get_symtab_upper_bound): Ditto. + (bfd_mach_o_canonicalize_symtab): Ditto. + (bfd_mach_o_get_symbol_info): Ditto. + (bfd_mach_o_print_symbol): Ditto. + (bfd_mach_o_bfd_print_private_bfd_data): Ditto. + (bfd_mach_o_make_empty_symbol): Ditto. + (bfd_mach_o_write_contents): Ditto. + + * mach-o.c (bfd_mach_o_object_p, bfd_mach_o_core_p, + bfd_mach_o_mkobject): Defines. + (bfd_mach_o_valid): Returns FALSE/TRUE instead of 0/1. + Do not check with target vector but with flavour. + (struct mach_o_section_name_xlat): New declaration. + (dwarf_section_names_xlat): Ditto. + (text_section_names_xlat): Ditto. + (data_section_names_xlat): Ditto. + (struct mach_o_segment_name_xlat): Ditto. + (segsec_names_xlat): Ditto. + (bfd_mach_o_convert_section_name_to_bfd): New function. + (bfd_mach_o_convert_section_name_to_mach_o): Ditto. + (bfd_mach_o_bfd_copy_private_symbol_data): Make it public. + (bfd_mach_o_bfd_copy_private_section_data): Ditto. + (bfd_mach_o_bfd_copy_private_bfd_data): Ditto. + Accept any input and output flavour. Do not share private data + anymore. + (bfd_mach_o_count_symbols): Add a comment. + (bfd_mach_o_get_symtab_upper_bound): Make it public. + (bfd_mach_o_canonicalize_symtab): Ditto. + (bfd_mach_o_get_symbol_info): Ditto. + (bfd_mach_o_print_symbol): Ditto. + (bfd_mach_o_write_header): Now returns a boolean instead of an int. + Use constants instead of hard-coded values. + (bfd_mach_o_scan_write_section_32): Use constants instead of hard-coded + values. + (bfd_mach_o_scan_write_section_64): Ditto. + (bfd_mach_o_scan_write_segment): Ditto. + Do not copy sections anymore. + (bfd_mach_o_write_contents): Make it public. + Remove dead code. Rewrite typeflag assignment. + (bfd_mach_o_build_commands): New function. + (bfd_mach_o_set_section_contents): Ditto. + (bfd_mach_o_make_empty_symbol): Make it public. + (bfd_mach_o_read_header): Make it static. + Convert to bfd_boolean. + Use constants instead of hard-coded values. + (bfd_mach_o_make_bfd_section): Call + bfd_mach_o_convert_section_name_to_bfd to create name. + (bfd_mach_o_scan_read_section_32): Use constants instead of hard-coded + values. + (bfd_mach_o_scan_read_section_64): Ditto. + (bfd_mach_o_scan_read_segment): Do not create a bfd section for + a segment anymore. Use constants instead of hard-coded values. + (bfd_mach_o_scan_read_command): Fix style. + (bfd_mach_o_scan): Use constants instead of hard-coded values. + Get rid of BFD_IO_FUNCS. + (bfd_mach_o_mkobject_init): Renamed from bfd_mach_o_mkobject. + (bfd_mach_o_header_p): Created from bfd_mach_o_object_p. + (bfd_mach_o_gen_object_p): New function, replaces bfd_mach_o_object_p. + (bfd_mach_o_object_p): Removed. + (bfd_mach_o_gen_core_p): New function, replaces ... + (bfd_mach_o_core_p): ... deleted. + (bfd_mach_o_bfd_print_private_bfd_data): Make it public. + + * mach-o-i386.c: New file. + * config.bfd: Use mach_o_i386_vec as targ_defvec for ix86-darwin. + * configure.in (TDEFINES): Add mach_o_i386_vec. + * configure: Regenerated. + * targets.c: Add mach_o_i386_vec. + + * mach-o.c: Update copyright years. + (BFD_IO_FUNCS): Remove (was not used). + (bfd_mach_o_mkarchive, bfd_mach_o_read_ar_hdr, bfd_mach_o_slurp_armap + bfd_mach_o_slurp_extended_name_table, + bfd_mach_o_construct_extended_name_table, + bfd_mach_o_truncate_arname, bfd_mach_o_write_armap, + bfd_mach_o_get_elt_at_index, bfd_mach_o_generic_stat_arch_elt, + bfd_mach_o_update_armap_timestamp, bfd_mach_o_close_and_cleanup, + bfd_mach_o_bfd_free_cached_info, bfd_mach_o_new_section_hook, + bfd_mach_o_get_section_contents_in_window, + bfd_mach_o_bfd_is_local_label_name, + bfd_mach_o_bfd_is_target_special_symbol, + bfd_mach_o_bfd_is_local_label_name, bfd_mach_o_get_lineno, + bfd_mach_o_find_nearest_line, bfd_mach_o_find_inliner_info, + bfd_mach_o_bfd_make_debug_symbol, bfd_mach_o_read_minisymbols, + bfd_mach_o_minisymbol_to_symbol, + bfd_mach_o_bfd_get_relocated_section_contents, + bfd_mach_o_bfd_relax_section, bfd_mach_o_bfd_link_hash_table_create, + bfd_mach_o_bfd_link_hash_table_free, bfd_mach_o_bfd_link_add_symbols, + bfd_mach_o_bfd_link_just_syms, bfd_mach_o_bfd_final_link, + bfd_mach_o_bfd_link_split_section, bfd_mach_o_set_arch_mach, + bfd_mach_o_bfd_merge_private_bfd_data, + bfd_mach_o_bfd_set_private_flags, bfd_mach_o_get_section_contents, + bfd_mach_o_bfd_gc_sections, bfd_mach_o_bfd_merge_sections, + bfd_mach_o_bfd_is_group_section, bfd_mach_o_bfd_discard_group, + bfd_mach_o_section_already_linked, bfd_mach_o_bfd_define_common_symbol, + bfd_mach_o_bfd_copy_private_header_data, + bfd_mach_o_core_file_matches_executable_p): Move these defines ... + * mach-o-target.c: ... here. + Update copyright years. + +2009-06-04 Alan Modra + + * dep-in.sed: Don't use \n in replacement part of s command. + * Makefile.am (DEP1): LC_ALL for uniq. + Run "make dep-am". + * Makefile.in: Regenerate. + +2009-06-03 H.J. Lu + + * elf32-i386.c (elf_i386_allocate_dynrelocs): Remove check of + h->plt.refcount > 0 on STT_GNU_IFUNC symbol. + * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Likewise. + +2009-06-03 H.J. Lu + + * elf32-i386.c (elf_i386_allocate_dynrelocs): Allocate + GOT entry for STT_GNU_IFUNC symbol with pointer equality. + (elf_i386_relocate_section): Adjust R_386_GOT32 relocation + against STT_GNU_IFUNC symbols for static executables. + (elf_i386_finish_dynamic_symbol): Load GOT entry with + PLT entry for STT_GNU_IFUNC symbol with pointer equality. + + * elf64-x86-64.c (elf64_x86_64_allocate_dynrelocs): Allocate + GOT entry for STT_GNU_IFUNC symbol with pointer equality. + (elf64_x86_64_finish_dynamic_symbol): Load GOT entry with + PLT entry for STT_GNU_IFUNC symbol with pointer equality. + +2009-06-02 Richard Sandiford + + * coff-rs6000.c (xcoff_ppc_relocate_section): Allow undefined + symbols to be left unimported when linking statically. + * xcofflink.c (xcoff_link_add_symbols): Ignore global linkage + code when linking statically. + +2009-06-02 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Increment + got.refcount for R_386_GOT32/R_386_GOTOFF relocations + against STT_GNU_IFUNC symbol. + (elf_i386_allocate_dynrelocs): Set got.refcount to 0 if + local STT_GNU_IFUNC definition is used. + (elf_i386_relocate_section): Handle got.offset != -1 for + R_386_GOT32/R_386_GOTOFF relocations against STT_GNU_IFUNC + symbol. + + * elf64-x86-64.c (elf64_x86_64_check_relocs): Increment + got.refcount for R_X86_64_GOTPCREL/R_X86_64_GOTPCREL64 + relocations against STT_GNU_IFUNC symbol. + (elf64_x86_64_allocate_dynrelocs): Set got.refcount to 0 if + local STT_GNU_IFUNC definition is used. + (elf64_x86_64_relocate_section): Handle got.offset != -1 + for R_X86_64_GOTPCREL/R_X86_64_GOTPCREL64 relocations against + STT_GNU_IFUNC symbol. + +2009-06-01 H.J. Lu + + PR ld/10205 + * elf32-i386.c (elf_howto_table): Add R_386_IRELATIVE. + (elf_i386_reloc_type_lookup): Likewise. + (R_386_tls): Removed. + (R_386_irelative): New. + (R_386_vt_offset): Updated. + (elf_i386_rtype_to_howto): Likewise. + (elf_i386_link_hash_table): Add igotplt, iplt and irelplt. + (elf_i386_link_hash_table_create): Initialize igotplt, + iplt and irelplt. + (elf_i386_check_relocs): Handle STT_GNU_IFUNC symbol first. + (elf_i386_adjust_dynamic_symbol): Likewise. + (elf_i386_allocate_dynrelocs): Likewise. + (elf_i386_relocate_section): Likewise. + (elf_i386_size_dynamic_sections): Set up .iplt and .igot.plt + sections. + (elf_i386_finish_dynamic_symbol): When building a static + executable, use .iplt, .igot.plt and .rel.iplt sections for + STT_GNU_IFUNC symbols. Generate R_386_IRELATIVE relocation for + locally defined STT_GNU_IFUNC symbol. + + * elf64-x86-64.c (x86_64_elf_howto): Add R_X86_64_IRELATIVE. + (x86_64_reloc_map): Likewise. + (R_X86_64_standard): Updated. + (elf64_x86_64_link_hash_table): Add igotplt, iplt and irelplt. + (elf64_x86_64_link_hash_table_create): Initialize igotplt, + iplt and irelplt. + (elf64_x86_64_check_relocs): Handle STT_GNU_IFUNC symbol first. + (elf64_x86_64_adjust_dynamic_symbol): Likewise. + (elf64_x86_64_allocate_dynrelocs): Likewise. + (elf64_x86_64_relocate_section): Likewise. + (elf64_x86_64_size_dynamic_sections): Set up .iplt and .igot.plt + sections. + (elf64_x86_64_finish_dynamic_symbol): When building a static + executable, use .iplt, .igot.plt and .rela.iplt sections for + STT_GNU_IFUNC symbols. Generate R_X86_64_IRELATIVE relocation + for locally defined STT_GNU_IFUNC symbol. + + * reloc.c (BFD_RELOC_386_IRELATIVE): New. + (BFD_RELOC_X86_64_IRELATIVE): Likewise. + + * bfd-in2.h: Regenerated. + * libbfd.h: Likewise. + +2009-06-01 H.J. Lu + + * elf-bfd.h (struct bfd_elf_section_data): Remove indirect_relocs. + (_bfd_elf_make_ifunc_reloc_section): Removed. + (_bfd_elf_is_ifunc_symbol): Likewise. + (_bfd_elf_create_static_ifunc_sections): New. + + * elflink.c (_bfd_elf_adjust_dynamic_symbol): Move STT_GNU_IFUNC + symbol check to ... + (elf_link_add_object_symbols): Here. + (_bfd_elf_link_hash_hide_symbol): Don't clean plt on + STT_GNU_IFUNC symbol. + (elf_link_output_extsym): Call elf_backend_finish_dynamic_symbol + if a STT_GNU_IFUNC symbol is referenced in a non-shared object. + (IFUNC_INFIX): Removed. + (get_ifunc_reloc_section_name): Likewise. + (_bfd_elf_make_ifunc_reloc_section): Likewise. + (_bfd_elf_is_ifunc_symbol): Likewise. + (_bfd_elf_create_static_ifunc_sections): New. + +2009-05-29 H.J. Lu + + * elf32-i386.c (link_hash_newfunc): Add elf_i386_ prefix. + (create_got_section): Likewise. + (allocate_dynrelocs): Likewise. + (readonly_dynrelocs): Likewise. + (set_tls_module_base): Likewise. + (dtpoff_base): Likewise. + (tpoff): Likewise. + (elf_i386_link_hash_table_create): Updated. + (elf_i386_create_dynamic_sections): Likewise. + (elf_i386_check_relocs): Likewise. + (elf_i386_size_dynamic_sections): Likewise. + (elf_i386_relocate_section): Likewise. + + * elf64-x86-64.c (link_hash_newfunc): Add elf64_x86_64_ prefix. + (create_got_section): Likewise. + (allocate_dynrelocs): Likewise. + (readonly_dynrelocs): Likewise. + (set_tls_module_base): Likewise. + (dtpoff_base): Likewise. + (tpoff): Likewise. + (elf64_x86_64_link_hash_table_create): Updated. + (elf64_x86_64_create_dynamic_sections): Likewise. + (elf64_x86_64_check_relocs): Likewise. + (elf64_x86_64_size_dynamic_sections): Likewise. + (elf64_x86_64_relocate_section): Likewise. + +2009-05-28 Nick Clifton + + * targets.c (_bfd_target_vector): Only include plugin target in + all-targets build if BFD_SUPPORTS_PLUGINS is non-zero. + +2009-05-28 Ulrich Weigand + + * elf32-spu.c (struct call_info): New member broken_cycle. + (remove_cycle): Instead of physically removing call_info structures + to break call graph cycles, mark them using the broken_cycle flag. + (mark_overlay_section): Respect broken_cycle flag. + (unmark_overlay_section): Likewise. + (collect_lib_sections): Likewise. + (collect_overlays): Likewise. + (sum_stack): Likewise. + +2009-05-28 Ulrich Weigand + + * elf32-spu.c (insert_callee): Accumulate incoming callee->count. + (mark_functions_via_relocs): Initialize callee->count to 1. + (pasted_function): Likewise. + (spu_elf_auto_overlay): Honor call counts when determining number + of stubs required in software i-cache mode. + +2009-05-27 Rafael Avila de Espindola + + * plugin.c (program_name): Remove. + (plugin_program_name): New. + (bfd_plugin_set_program_name): New. + (try_load_plugin): Use plugin_program_name. + * plugin.h (bfd_plugin_set_program_name): New. + +2009-05-27 Rafael Avila de Espindola + + * aclocal.m4: Include ../config/plugins.m4. + * configure.in: Use AC_PLUGINS. + * configure: Regenerate. + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + +2009-05-27 Nathan Sidwell + + * elf32-ppc.c (ppc_elf_relax_section): Work with a partial + link. + * bout.c (b_out_bfd_relax_section): Reject relocatable links. + * elf32-m10300.c (mn10300_elf_relax_section): Likewise. + * elf32-avr.c (elf32_avr_relax_section): Likewise. + * elf32-frv.c (elf32_avr_relax_section): Likewise. + * elf32-xtensa.c (elf_xtensa_relax_section): Likewise. + * elf64-mmix.c (mmix_elf_relax_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. + * elfxx-sparc.c (_bfd_sparc_elf_relax_section): Likewise. + * reloc.c (bfd_generic_relax_section): Likewise. + * reloc16.c (bfd_coff_reloc16_relax_section): Likewise. + * vms.c (vms_bfd_relax_section): Likewise. + +2009-05-26 H.J. Lu + + * elf-bfd.h (_bfd_elf_is_ifunc_symbol): New. + + * elf32-i386.c (is_indirect_symbol): Renamed to ... + * elflink.c (_bfd_elf_is_ifunc_symbol): This. + + * elf32-i386.c (allocate_dynrelocs): Updated. + (elf_i386_relocate_section): Likewise. + * elf64-x86-64.c (allocate_dynrelocs): Likewise. + (elf64_x86_64_relocate_section): Likewise. + + * elf64-x86-64.c (is_indirect_symbol): Removed. + +2009-05-26 Nick Clifton + + * po/id.po: Updated Indonesian translation. + +2009-05-26 Rafael Avila de Espindola + + * Makefile.am: Run "make dep-am". + (AM_CPPFLAGS): New. + (LIBDL): New. + (ALL_MACHINES): Add cpu-plugin.lo. + (ALL_MACHINES_CFILES): Add cpu-plugin.c. + (BFD32_BACKENDS): Add plugin.lo. + (BFD32_BACKENDS_CFILES): Add plugin.c. + (libbfd_la_LIBADD): Add LIBDL + * archures.c (bfd_architecture): Add bfd_arch_plugin. + (bfd_plugin_arch): Declare. + * bfd-in.h (BFD_SUPPORTS_PLUGINS): New. + * bfd.c (bfd): Add plugin_data. + * config.bfd: Handle the plugin target. + * configure.in: Check for --enable-plugins. + (LT_INIT): Use the dlopen option. + * cpu-plugin.c: New. + * plugin.c: New. + * plugin.h: New. + * targets.c (plugin_vec): Declare. + (_bfd_target_vector): Add plugin_vec. + * Makefile.in: Regenerate. + * bfd-in2.h: Regenerate. + * configure: Regenerate. + +2009-05-26 Alan Modra + + * dep-in.sed: Don't modify .o to .lo here. Output one filename + per line with all lines having continuation backslash. Prefix + first line with "A", following lines with "B". + * Makefile.am (DEP): Don't use dep.sed here. + (DEP1): Run $MKDEP on single files, modify .o to .lo here. Use + dep.sed here on dependencies, sort and uniq. + * Makefile.in: Regenerate. + +2009-05-25 Tristan Gingold + + * makefile.vms: Add verilog.obj to object list OBJS. + +2009-05-24 Alan Modra + + * bfdio.c (bfd_seek): Formatting. Ensure newly allocated memory + for BFD_IN_MEMORY is cleared. + (bfd_bwrite): Zero excess memory allocated. + +2009-05-22 Julian Brown + + * elf32-arm.c (THUMB16_BCOND_INSN, THUMB32_INSN, THUMB32_B_INSN): New + macros. + (elf32_arm_stub_a8_veneer_b_cond, elf32_arm_stub_a8_veneer_b) + (elf32_arm_stub_a8_veneer_blx): New stub sequences. + (elf32_arm_stub_type): Add arm_stub_a8_veneer_b_cond, + arm_stub_a8_veneer_b and arm_stub_a8_veneer_blx. + (elf32_arm_stub_hash_entry): Add target_addend, orig_insn fields. + (a8_erratum_fix, a8_erratum_reloc): New structs. + (elf32_arm_link_hash_table): Add a8_erratum_fixes, + num_a8_erratum_fixes, fix_cortex_a8 fields. + (elf32_arm_link_hash_table_create): Zero fix_cortex_a8. + (elf32_arm_add_stub): Split into two parts, creating... + (elf32_arm_create_or_find_stub_sec): New function. + (elf32_arm_final_link_relocate): Add forward declaration. + (arm_build_one_stub): Add support for THUMB32_TYPE, Thumb-2 + relocations, multiple relocations per stub. + (find_stub_size_and_template): New (using parts of arm_size_one_stub). + (arm_size_one_stub): Use find_stub_size_and_template. + (a8_reloc_compare): New. + (find_thumb_glue): Add forward declaration. + (cortex_a8_erratum_scan): New. + (elf32_arm_size_stubs): Add Cortex-A8 erratum workaround support. + (bfd_elf32_arm_set_cortex_a8_fix): New. + (bfd_elf32_arm_set_target_relocs): Add fix_cortex_a8 argument. + (arm_map_one_stub): Add THUMB32_TYPE support. + (a8_branch_to_stub_data): New. + (make_branch_to_a8_stub): New. + (elf32_arm_write_section): Add Cortex-A8 erratum workaround support. + * bfd-in.h (bfd_elf32_arm_set_cortex_a8_fix): New. + (bfd_elf32_arm_set_target_relocs): Add argument for controlling + Cortex-A8 erratum workaround. + * bfd-in2.h: Regenerate. + +2009-05-22 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + +2009-05-21 Alan Modra + + * elflink.c (elf_link_input_bfd): Correct *pindex change in last + commit. + +2009-05-21 Alan Modra + + * elf-bfd.h (struct elf_backend_data + ): Return an int. + * elf64-ppc.c (ppc64_elf_output_symbol_hook): Return 2 to drop + symbols on deleted .opd entries. + * elflink.c (elf_link_output_sym): Return without outputting sym + if output_symbol_hook returns 2. + (elf_link_output_extsym): Don't assign h->indx when symbol discarded. + Abort if we must not discard sym. + (elf_link_input_bfd): Similarly, don't set finfo->indices for + local syms. + (bfd_elf_final_link): Adjust elf_link_output_sym calls. + * elf-vxworks.c (elf_vxworks_link_output_symbol_hook): Adjust for + elf_backend_link_output_symbol_hook return type change. + * elf32-arm.c (output_arch_syminfo): Likewise. + (elf32_arm_output_map_sym, elf32_arm_output_stub_sym): Likewise. + (elf32_arm_output_arch_local_syms): Likewise. + * elf32-cr16c.c (elf32_cr16c_link_output_symbol_hook): Likewise. + * elf32-score.c (s3_bfd_score_elf_link_output_symbol_hook): Likewise. + (bfd_score_elf_link_output_symbol_hook): Likewise. + * elf32-score.h (s7_bfd_score_elf_link_output_symbol_hook): Likewise. + * elf32-score7.c (s7_bfd_score_elf_link_output_symbol_hook): Likewise. + * elf32-sh64.c (sh64_elf_link_output_symbol_hook): Likewise. + * elf32-spu.c (spu_elf_output_symbol_hook): Likewise. + * elf32-v850.c (v850_elf_link_output_symbol_hook): Likewise. + * elf64-hppa.c (elf64_hppa_link_output_symbol_hook): Likewise. + * elf64-mmix.c (mmix_elf_link_output_symbol_hook): Likewise. + * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): Likewise. + * elf64-sparc.c (elf64_sparc_output_arch_syms): Likewise. + * elfxx-mips.c (_bfd_mips_elf_link_output_symbol_hook): Likewise. + * elfxx-mips.h (_bfd_mips_elf_link_output_symbol_hook): Likewise. + +2009-05-21 Alan Modra + + * elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Don't segfault on + out of range .opd symbols. + +2009-05-21 Dave Korn + + * coffgen.c (coff_print_symbol): Use bfd_fprintf_vma, not + fprintf_vma directly. + * peXXigen.c (pe_print_edata): Likewise. + (pe_print_pdata): Likewise. + (_bfd_XX_print_ce_compressed_pdata): Likewise. + (_bfd_XX_print_private_bfd_data_common): Likewise. + +2009-05-19 Dave Korn + + * cofflink.c (process_embedded_commands): Ignore "-aligncomm". + +2009-05-15 Andrew Stubbs + Paul Brook + + * elf32-arm.c (elf32_arm_fix_exidx_coverage): Don't attempt to + fix discarded sections. + +2009-05-14 Ulrich Weigand + + * elf32-spu.c (mark_overlay_section): Move .init and .fini + sections into the software icache. + +2009-05-14 Ulrich Weigand + + * elf32-spu.c (build_stub): Always build "compact" sofware + i-cache stubs. + +2009-05-14 Ulrich Weigand + + * elf32-spu.c (struct spu_link_hash_table): Add fromelem_size_log2. + (spu_elf_setup): Initialize it. + (spu_elf_size_stubs): Move .ovtab into .bss for software i-cache. + Update to new-sytle cache manager data structures. + (spu_elf_build_stubs): Generate new-style cache manager data + structures and symbols. + (spu_elf_auto_overlay): Update size computation. + +2009-05-14 Ulrich Weigand + + * elf32-spu.c (spu_elf_modify_segment_map): Move all PF_OVERLAY + segments first amongst the program headers. + +2009-05-14 Ulrich Weigand + + * elf32-spu.c (spu_elf_relocate_section): Only encode overlay index + into addresses for relocation types that look at high bits. Remove + special handling of relocation overflow warnings. + +2009-05-14 Ulrich Weigand + + * elf32-spu.c (mark_functions_via_relocs): Handle cycles in the + control flow graph between fragments of a function. + +2009-05-14 Ulrich Weigand + + * elf32-spu.c (spu_elf_size_stubs): Even in software i-cache mode, + generate only a 16-byte .toe section. + (spu_elf_build_stubs, spu_elf_auto_overlay): Likewise. + +2009-05-14 Alan Modra + + * elf32-spu.c (spu_elf_size_stubs): Split out section placement to.. + (spu_elf_place_overlay_data): ..here. New function. + * elf32-spu.h (spu_elf_place_overlay_data): Declare. + +2009-05-13 Andrew Jenner + + * elf32-arm.c: Move sysdep.h to start of file. + +2009-05-11 Ulrich Weigand + + * elf32-spu.c (spu_elf_find_overlays): Don't use .ovl.init lma as + start of overlays. + (spu_elf_build_stubs): Don't define __icache_tagbase. Define + __icache_tag_array and __icache_tag_array_size. + +2009-05-11 Masaki Muranaka + + * elf32-bfin.c (bfin_bfd_reloc_type_lookup): Remove unnecessary + ATTRIBUTE_UNUSED. + (bfinfdpic_link_omit_section_dynsym): Likewise. + (elf32_bfinfdpic_finish_dynamic_sections): Likewise. + +2009-05-05 Paul Brook + + * bfd-in.h (elf32_arm_fix_exidx_coverage): Add prototype. + * bfd-in2.h: Regenerate. + * elf32-arm.c (arm_unwind_edit_type, arm_unwind_table_edit): Define. + (_arm_elf_section_data): Add text and exidx fields. + (add_unwind_table_edit, get_arm_elf_section_data, adjust_exidx_size, + insert_cantunwind_after, elf32_arm_fix_exidx_coverage, offset_prel31, + copy_exidx_entry): New functions. + (elf32_arm_write_section): Fixup .ARM.exidx contents. + +2009-05-05 Christophe lyon + + * elf32-arm.c (DEF_STUBS): New helper define. + (DEF_STUB): Likewise. + (stub_def): New type. + (stub_definitions): New array, containing stub template pointers + and sizes. + (arm_size_one_stub): Make use of stub_definitions. + +2009-05-04 Dave Korn + + * elflink.c (find_version_for_sym): Remove from here, ... + * linker.c (bfd_find_version_for_sym): ... rename, replace + here, make public and update all callers. + * bfd-in2.h: Regenerate. + +2009-04-30 Nick Clifton + + * elf-bfd.h (struct bfd_elf_section_data): Add indirect_relocs + section pointer. + (struct elf_obj_data): Add has_ifunc_symbols boolean. + * elf.c (swap_out_syms): Convert BSF_GNU_INDIRECT_FUNCTION flags + into a STT_GNU_IFUNC symbol type. + (_bfd_elf_is_function_type): Accept STT_GNU_IFUNC as a function + type. + (_bfd_elf_set_osabi): Set the osasbi field to ELFOSABI_LINUX if + the binary contains ifunc symbols. + * elfcode.h (elf_slurp_symbol_table): Translate the STT_GNU_IFUNC + symbol type into a BSF_GNU_INDIRECT_FUNCTION flag. + * elf32-i386.c (is_indirect_function): New function. + (elf_i386_check_relocs): Create an ifunc output section. + (allocate_dynrelocs): Create dynamic relocs in the ifunc output + section if necessary. + (elf_i386_relocate_section): Emit a reloc against an ifunc symbol + if necessary. + (elf_i386_add_symbol_hook): New function. Set the + has_ifunc_symbols field of the elf_obj_data structure if an ifunc + symbol is encountered. + (elf_backend_post_process_headers): Define. + (elf_backend_add_symbol_hook): Define. + (elf_i386_post_process_headers): Rename to + elf_i388_fbsd_post_process_headers. + * elf64-x86_64.c (IS_X86_64_PCREL_TYPE): New macro. + (is_indirect_function): New function. + (elf64_x86_64_check_relocs): Create an ifunc output section. + (allocate_dynrelocs): Create dynamic relocs in the ifunc output + section if necessary. + (elf64_x86_64_relocate_section): Emit a reloc against an ifunc + symbol if necessary. + (elf_i386_add_symbol_hook): Set the has_ifunc_symbols field of the + elf_obj_data structure if an ifunc symbol is encountered. + (elf_backend_post_process_headers): Define. + * elflink.c (_bfd_elf_adjust_dynamic_symbol): Always create a PLT + if we have ifunc symbols to handle. + (get_ifunc_reloc_section_name): New function. Computes the name + for an ifunc section. + (_bfd_elf_make_ifunc_reloc_section): New function. Creates a + section to hold ifunc relocs. + * syms.c (BSF_GNU_INDIRECT_FUNCTION): Define. + (bfd_print_symbol_vandf): Handle ifunc symbols. + (bfd_decode_symclass): Likewise. + * bfd-in2.h: Regenerate. + +2009-04-30 Joseph Myers + + * elf32-arm.c (elf32_arm_check_relocs): Give errors for absolute + MOVW and MOVT relocations in a shared library link. + +2009-04-27 Anthony Green + + * verilog.c: New file. + * Makefile.am (BFD32_LIBS): Add verilog.c. + (BFD32_LIBS_CFILES): Add verilog.c. + (verilog.lo): New build rule. + * Makefile.in: Rebuilt. + * targets.c: Add verilog support. + * bfd.c (tdata union): Add Verilog private data field. + * bfd-in2.h: Regenerate. + +2009-04-27 H.J. Lu + + * peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Don't + copy pe_opthdr. + +2009-04-23 Matthias Klose + + * peXXigen.c (_bfd_XXi_swap_sym_in): Initialize `name'. + +2009-04-22 Christophe Lyon + + PR9743 + * elf32-arm.c (arm_type_of_stub): Handle R_ARM_THM_JUMP24, + R_ARM_JUMP24 and R_ARM_PLT32 relocations. + (elf32_arm_size_stubs): Likewise. + (record_thumb_to_arm_glue): Deleted unused function. + (bfd_elf32_arm_process_before_allocation): No longer handle + R_ARM_THM_JUMP24, R_ARM_JUMP24 and R_ARM_PLT32 relocations here. + (elf32_arm_final_link_relocate): Handle R_ARM_THM_JUMP24, + R_ARM_JUMP24 and R_ARM_PLT32 relocations. + +2009-04-21 Daniel Jacobowitz + + * elf32-arm.c (INTERWORK_FLAG): Check BFD_LINKER_CREATED. + (elf32_arm_write_section): Declare early. + (elf32_arm_size_stubs): Skip non-stub sections in the stub BFD. + (arm_allocate_glue_section_space): Exclude empty sections. + (ARM_GLUE_SECTION_FLAGS): Add SEC_LINKER_CREATED. + (bfd_elf32_arm_add_glue_sections_to_bfd): Do not skip the stub + BFD. + (elf32_arm_output_glue_section, elf32_arm_final_link): New. + (elf32_arm_merge_eabi_attributes): Skip the stub BFD. + (elf32_arm_size_dynamic_sections): Allocate interworking + sections here. + (bfd_elf32_bfd_final_link): Define. + +2009-04-21 H.J. Lu + + * coff-ia64.c (COFF_PAGE_SIZE): Changed to 8K. + + * coffcode.h (coff_compute_section_file_positions): Clear + D_PAGED if PE section alignment is smaller than COFF_PAGE_SIZE. + + * libcoff-in.h (pe_tdata): Remove force_minimum_alignment and + force_minimum_alignment. + + * libcoff.h: Regenerated. + + * pei-ia64.c (PEI_TARGET_SUBSYSTEM): Removed. + (PEI_FORCE_MINIMUM_ALIGNMENT): Likewise. + + * peicode.h (pe_mkobject): Don't set force_minimum_alignment + nor target_subsystem. + + * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Don't check + force_minimum_alignment nor target_subsystem. + +2009-04-21 Kai Tietz + + * coff-x86_64.c (PEI_HEADERS): Protect includes. + (bfd_pe_print_pdata): Remove #ifdef PE variation. + * pei-x86_64.c (PEI_HEADERS): Define to prevent double + include in coff-x86_64.c of headers. + (PDATA_ROW_SIZE): New define. + (pex_regs[]): New static array. + (pex64_get_runtime_function): New static function. + (pex64_get_unwind_info): Likewise. + (pex64_get_scope_entry): Likewise. + (pex64_xdata_print_uwd_codes): Likewise. + (pex64_get_section_by_rva): Likewise. + (pex64_dump_xdata): Likewise. + (pex64_bfd_print_pdata): Likewise. + (bfd_pe_print_pdata): Define as pex64_bfd_print_pdata. + * peXXigen.c (_bfd_pex64_print_pdata): Removed implementation. + * libpei.h (_bfd_pex64_print_pdata): Removed declaration. + +2009-04-19 Peter O'Gorman + Alan Modra + Dave Korn + + * peXXigen.c (_bfd_XXi_swap_sym_in): Fix name handling w.r.t + long names and non-NUL-terminated strings. + +2009-04-17 H.J. Lu + + * bfd-in2.h: Regenerated. + +2009-04-17 H.J. Lu + + * peXXigen.c (_bfd_XX_print_private_bfd_data_common): Replace + IMAGE_SUBSYSTEM_EFI_ROM with IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER. + +2009-04-17 H.J. Lu + + PR binutils/10074 + * coffcode.h (bfd_pei_p): New. + + * config.bfd: Remove bfd_efi_bsdrv_ia32_vec, + bfd_efi_rtdrv_ia32_vec, bfd_efi_bsdrv_x86_64_vec, + bfd_efi_rtdrv_x86_64_vec, bfd_efi_bsdrv_ia64_vec and + bfd_efi_rtdrv_ia64_vec. Replace bfd_efi_app_ia32_vec, + bfd_efi_app_x86_64_vec and bfd_efi_app_ia64_vec with + i386pei_vec, x86_64pei_vec and bfd_pei_ia64_vec, respectively. + + * configure.in: Remove bfd_efi_bsdrv_ia32_vec, + bfd_efi_rtdrv_ia32_vec, bfd_efi_bsdrv_x86_64_vec, + bfd_efi_rtdrv_x86_64_vec, + bfd_efi_bsdrv_ia64_vec and bfd_efi_rtdrv_ia64_vec. Replace + bfd_efi_ia64_vec with bfd_pei_ia64_vec. + * targets.c: Likewise. + + * configure: Regenerated. + * libcoff.h: Likewise. + * Makefile.in: Likewise. + + * efi-app-ia32.c: Removed. + * efi-app-x86_64.c: Likewise. + * efi-bsdrv-ia32.c: Likewise. + * efi-bsdrv-ia64.c: Likewise. + * efi-bsdrv-x86_64.c: Likewise. + * efi-rtdrv-ia32.c: Likewise. + * efi-rtdrv-ia64.c: Likewise. + * efi-rtdrv-x86_64.c: Likewise. + * efi-rtdrv-ia32.c: Likewise. + + * efi-app-ia64.c: Moved to ... + * pei-ia64.c: This. + (TARGET_SYM): Set to bfd_pei_ia64_vec. + (TARGET_NAME): Set to pei-ia64. + + * libpei.h (bfd_target_pei_p): Removed. + (bfd_target_pei_arch): Likewise. + (bfd_target_efi_app_p): Likewise. + (bfd_target_efi_app_arch): Likewise. + (bfd_target_efi_bsdrv_p): Likewise. + (bfd_target_efi_bsdrv_arch): Likewise. + (bfd_target_efi_rtdrv_p): Likewise. + (bfd_target_efi_rtdrv_arch): Likewise. + (bfd_pe_executable_p): Likewise. + + * Makefile.am (BFD32_BACKENDS): Remove efi-app-ia32.lo, + efi-bsdrv-ia32.lo and efi-rtdrv-ia32.lo. + (BFD32_BACKENDS_CFILES): Remove efi-app-ia32.c, efi-bsdrv-ia32.c + and efi-rtdrv-ia32.c. + (BFD64_BACKENDS): Remove efi-app-ia64.lo, efi-bsdrv-ia64.lo, + efi-rtdrv-ia64.lo, efi-app-x86_64.lo, efi-bsdrv-x86_64.lo and + efi-rtdrv-x86_64.lo. Add pei-ia64.lo. + (BFD64_BACKENDS_CFILES): Remove efi-app-ia64.c, efi-bsdrv-ia64.c, + efi-rtdrv-ia64.c, efi-app-x86_64.c, efi-bsdrv-x86_64.c and + efi-rtdrv-x86_64.c. Add pei-ia64.c. + (efi-app-ia64.lo): Removed. + (efi-bsdrv-ia32.lo): Likewise. + (efi-rtdrv-ia32.lo): Likewise. + (efi-app-ia64.lo): Likewise. + (efi-bsdrv-ia64.lo): Likewise. + (efi-rtdrv-ia64.lo): Likewise. + (efi-app-x86_64.lo): Likewise. + (efi-bsdrv-x86_64.lo): Likewise. + (efi-rtdrv-x86_64.lo): Likewise. + (pei-ia64.lo): New. + + * peicode.h (coff_swap_scnhdr_in): Replace bfd_pe_executable_p + with bfd_pei_p. + (arch_type): Removed. + (pe_arch): Likewise. + (pe_bfd_object_p): Just return coff_object_p. + + * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Replace + bfd_pe_executable_p with bfd_pei_p. + +2009-04-17 Christophe Lyon + + * elf32-arm.c (elf32_arm_size_stubs): Handle long branches through + PLT entries to an undefined symbol when generating a shared + library. + +2009-04-17 Nick Clifton + + PR 9909 + * coffcode.h (handle_COMDAT): Allow for external COMDAT symbols. + +2009-04-16 Richard Sandiford + + * aout-adobe.c (aout_32_bfd_define_common_symbol): Define. + * aout-target.h (MY_bfd_define_common_symbol): Likewise. + * aout-tic30.c (MY_bfd_define_common_symbol): Likewise. + * binary.c (binary_bfd_define_common_symbol): Likewise. + * bout.c (b_out_bfd_define_common_symbol): Likewise. + * coff-alpha.c (_bfd_ecoff_bfd_define_common_symbol): Likewise. + * coff-mips.c (_bfd_ecoff_bfd_define_common_symbol): Likewise. + * coffcode.h (coff_bfd_define_common_symbol): Likewise. + * elfxx-target.h (bfd_elfNN_bfd_define_common_symbol): Likewise. + * i386msdos.c (msdos_bfd_define_common_symbol): Likewise. + * i386os9k.c (os9k_bfd_define_common_symbol): Likewise. + * ieee.c (ieee_bfd_define_common_symbol): Likewise. + * ihex.c (ihex_bfd_define_common_symbol): Likewise. + * libbfd-in.h (_bfd_nolink_bfd_define_common_symbol): Likewise. + * mach-o.c (bfd_mach_o_bfd_define_common_symbol): Likewise. + * mmo.c (mmo_bfd_define_common_symbol): Likewise. + * nlm-target.h (nlm_bfd_define_common_symbol): Likewise. + * oasys.c (oasys_bfd_define_common_symbol): Likewise. + * pef.c (bfd_pef_bfd_define_common_symbol): Likewise. + * ppcboot.c (ppcboot_bfd_define_common_symbol): Likewise. + * som.c (som_bfd_define_common_symbol): Likewise. + * srec.c (srec_bfd_define_common_symbol): Likewise. + * tekhex.c (tekhex_bfd_define_common_symbol): Likewise. + * versados.c (versados_bfd_define_common_symbol): Likewise. + * vms.c (vms_bfd_define_common_symbol): Likewise. + * xcoff-target.h (_bfd_xcoff_bfd_define_common_symbol): Likewise. + * xsym.c (bfd_sym_bfd_define_common_symbol): Likewise. + * coff-rs6000.c (rs6000coff_vec): Add _bfd_xcoff_define_common_symbol. + (pmac_xcoff_vec): Likewise. + * coff64-rs6000.c (rs6000coff64_vec): Likewise. + (aix5coff64_vec): Likewise. + * linker.c (bfd_generic_define_common_symbol): New function. + * targets.c (BFD_JUMP_TABLE_LINK): Add NAME##_bfd_define_common_symbol. + (_bfd_define_common_symbol): New field. + * libcoff-in.h (_bfd_xcoff_define_common_symbol): Declare. + * xcofflink.c (_bfd_xcoff_define_common_symbol): New function. + (xcoff_build_ldsyms): Don't set XCOFF_DEF_REGULAR for common + symbols here. + * bfd-in2.h: Regenerate. + * libbfd.h: Likewise. + * libcoff.h: Likewise. + +2009-04-15 Anthony Green + + * targets.c: Add moxie support. + * Makefile.am: Ditto. + * Makefile.in: Rebuilt. + * cpu-moxie.c, elf32-moxie.c: New files. + * archures.c: Add moxie support. + * configure.in: Add moxie support. + * configure: Rebuilt. + * config.bfd, archures.c: Add moxie support. + * bfd-in2.h: Rebuilt. + +2009-04-15 Christophe Lyon + + * elf32-arm.c (elf32_arm_final_link_relocate): Don't convert ARM + branch to an undef weak symbol into a jump to next instruction if + a PLT entry will be created. + +2009-04-14 Dave Korn + + * coffgen.c (make_a_section_from_file): Set the backend long + section names enable if long section names found on input. + * coffcode.h: Extend long section names documentation to match. + +2009-04-08 H.J. Lu + + * elflink.c (elf_link_add_object_symbols): Warn alternate ELF + machine code. + +2009-04-07 DJ Delorie + + * archures.c: Add bfd_mach_mep_c5. + * bfd-in2.h: Likewise. + * cpu-mep.c: Add bfd_c5_arch. + * elf32-mep.c: Support it. + +2009-04-07 H.J. Lu + + * elflink.c (_bfd_elf_section_already_linked): Add `\n' for + info->callbacks->einfo. + * linker.c (_bfd_generic_section_already_linked): Likewise. + +2009-04-06 DJ Delorie + + * elf32-h8300.c (elf32_h8_relax_section): Relax MOVA opcodes. + +2009-04-06 H.J. Lu + + * coff-x86_64.c (bfd_pe_print_pdata): Defined to + _bfd_pex64_print_pdata only if PE is defined. + + * libpei.h (_bfd_pep_print_x64_pdata): Renamed to ... + (_bfd_pex64_print_pdata): This. + + * peXXigen.c (_bfd_pep_print_x64_pdata): Renamed to ... + (_bfd_pex64_print_pdata): This. Defined only if COFF_WITH_pex64 + is defined. + +2009-04-05 Kai Tietz + + * coff-x86_64.c (bfd_pe_print_pdata): Define as + _bfd_pep_print_x64_pdata. + * libpei.h (_bfd_pep_print_x64_pdata): Add prototype. + * peXXigen.c (_bfd_pep_print_x64_pdata): New. + +2009-04-02 Sterling Augustine + + * elf32-xtensa.c (relax_property_section): Always set r_offset + to zero. + +2009-04-02 Christophe Lyon + + * elf32-arm.c (elf32_arm_stub_long_branch_v4t_thumb_thumb, + elf32_arm_stub_long_branch_v4t_thumb_thumb_pic): Two new long + branch stubs. + (elf32_arm_stub_type): New enum values for the two new stubs. + (arm_type_of_stub): Make use of the two new stubs. + (arm_size_one_stub): Handle the two new stubs. + +2009-04-01 Matt Thomas + + * elf32-vax.c (elf_vax_check_relocs): Do not put relocations against + hidden symbols into the GOT or PLT.GOT. + (elf_vax_relocate_section): Do not emit a PCREL reloc + into a shared object if it is against a hidden symbol. + +2009-04-01 Richard Sandiford + + * xcofflink.c (xcoff_archive_info): Add contains_shared_object_p + and know_contains_shared_object_p. + (xcoff_archive_contains_shared_object_p): Add an "info" parameter. + Cache the result in the archive_info table. + (xcoff_auto_export_p): Add an "info" parameter and update the + call to xcoff_archive_contains_shared_object_p. + (xcoff_mark_auto_exports): Update accordingly. + (xcoff_post_gc_symbol): Likewise. + +2009-04-01 Richard Sandiford + + * xcofflink.c (bfd_link_input_bfd): Treat __rtinit as C_HIDEXT + rather than C_EXT. + +2009-04-01 Richard Sandiford + + * coff-rs6000.c (member_layout): New structure. + (archive_iterator): Likewise. + (member_layout_init): New function. + (archive_iterator_begin): Likewise. + (archive_iterator_next): Likewise. + (xcoff_write_armap_old): Use the new iterator functions. + (do_shared_object_padding): Delete. + (xcoff_write_armap_big): Use the new iterator functions. Simplify + handling of arch_info. + (xcoff_write_archive_contents_old): Allocate arelt_data in the + first loop rather than the second. Allocate a member header if + there isn't one, then work out the stat information and length + in the first loop too. Use the new iterators for the second loop. + (xcoff_write_archive_contents_big): Likewise. + +2009-04-01 Richard Sandiford + + * bfd-in.h (bfd_xcoff_split_import_path): Declare. + (bfd_xcoff_set_archive_import_path): Likewise. + * bfd-in2.h: Regenerate. + * xcofflink.c: Include libiberty.h. + (xcoff_archive_info): New structure. + (xcoff_archive_info_hash): New function. + (xcoff_archive_info_eq): Likewise. + (xcoff_get_archive_info): Likewise. + (_bfd_xcoff_bfd_link_hash_table_create): Initialize archive_info. + (bfd_xcoff_split_import_path): New function. + (bfd_xcoff_set_archive_import_path): Likewise. + (xcoff_set_import_path): Move earlier in file. + (xcoff_link_add_dynamic_symbols): Set the import path of a non-archive + object to the the directory part of the bfd's filename. Get the + import path and filename of an archive object from the archive's + xcoff_tdata, initializing it if necessary. Update use of + import_file_id. + (bfd_link_input_bfd): Update use of import_file_id. + (xcoff_write_global_symbol): Likewise. + +2009-04-01 Richard Sandiford + + * xcofflink.c (xcoff_link_hash_table): Moved from include/coff/xcoff.h. + +2009-04-01 Richard Sandiford + + * xcofflink.c (xcoff_link_create_extra_sections): Don't create + a .loader section for relocatable links. + (xcoff_need_ldrel_p): New function. + (xcoff_mark): Use it. + (bfd_xcoff_link_count_reloc): Only count loader relocs if there's + a loader section. + (xcoff_build_ldsym): New function, split out from... + (xcoff_build_ldsyms): ...here. Rename to... + (xcoff_post_gc_symbol): ...this. Only export symbols, and only + call xcoff_build_ldsym, if there's a loader section. + (xcoff_build_loader_section): New function, extracted verbatim from... + (bfd_xcoff_size_dynamic_sections): ...here. Only call it if + there's a loader section. Only add an __rtinit loader symbol + if there's a loader section. Update after above name change. + (xcoff_symbol_section, xcoff_create_ldrel): New functions. + (bfd_link_input_bfd): Use xcoff_need_ldrel_p, xcoff_symbol_section + and xcoff_create_ldrel. + (xcoff_write_global_symbol): Use xcoff_create_ldrel. + (xcoff_reloc_link_order): Likewise, but only call it if there's + a loader section. Use xcoff_symbol_section. + (_bfd_xcoff_bfd_final_link): Only use fdinfo.ldrel and fdinfo.ldsym + if there's a loader section. + +2009-04-01 Richard Sandiford + + * xcofflink.c (bfd_link_input_bfd): Fix buffer overrun. + +2009-04-01 Christophe Lyon + + * elf32-arm.c (group_sections): Rewrite loops for better + readability. + +2009-03-30 DJ Delorie + + * elflink.c (elf_link_input_bfd): Don't try to resolve complex + relocs when doing a relocatable link. + +2009-03-28 Mark Mitchell + + * coff-arm.c (coff_arm_merge_private_bfd_data): Use "error:", not + "ERROR:", in error messages. + * cpu-arm.c (bfd_arm_merge_machines): Likewise. + * elf-attrs.c (_bfd_elf_merge_object_attributes): Likewise. + * elf32-arm.c (tag_cpu_arch_combine): Likewise. + (elf32_arm_merge_eabi_attributes): Likewise. + (elf32_arm_merge_private_bfd_data): Likewise. + +2009-03-27 Nick Clifton + + * section.c (bfd_get_section_contents): Detect and handle the case + where a section has the SEC_IN_MEMORY flag set but no actual + contents allocated. + +2009-03-26 Alan Modra + + PR 6494 + * elf.c (copy_elf_program_header): Do not check that PT_GNU_RELRO + p_filesz and p_memsz are equal. Use p_memsz as the segment size. + (assign_file_positions_for_non_load_sections): Zap PT_GNU_RELRO + if we don't find matching PT_LOAD when copying. + +2009-03-25 M R Swami Reddy + + * elf32-crx.c (crx_elf_howto_table): Zero the src_mask field of + the reloc descriptions. + +2009-03-25 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section) + : Handle COMMON symbols. + : Ditto. + +2009-03-24 H.J. Lu + + * cpu-i386.c (bfd_x86_64_arch_intel_syntax): Make it static. + (bfd_i386_arch_intel_syntax): Likewise. + (i8086_arch): Likewise. + (bfd_x86_64_arch): Likewise. + +2009-03-24 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section): : Allow use of non-local + symbols for non-allocated sections. Don't check whether to + generate R_CRIS_DTPMOD for non-allocated sections. + (cris_elf_gc_sweep_hook) : Don't + handle relocation GC:ing if applied to non-allocated section. + (cris_elf_check_relocs): Similar. + + * elf32-cris.c (cris_elf_relocate_section) + : Don't include the TLS size + when emitting a known TP offset in the GOT. + +2009-03-23 Alan Modra + + * elf64-ppc.c (synthetic_opd): Delete. + (compare_symbols): Look for .opd name rather than section match. + (ppc64_elf_get_synthetic_symtab): Likewise. + +2009-03-21 Alan Modra + + * elf32-ppc.c (is_pic_glink_stub): Delete. + (is_nonpic_glink_stub): New function. + (ppc_elf_get_synthetic_symtab): Check for last non-pic stub rather + than first pic one. + (struct ppc_elf_link_hash_table ): Comment fix. + +2009-03-20 Martin Schwidefsky + Andreas Krebbel + + * elf32-s390.c (elf_s390_check_relocs): Use the SYMBOL_* + macros for visibilty and locality checks. + (elf_s390_adjust_dynamic_symbol): Likewise. + (allocate_dynrelocs): Likewise. + (elf_s390_relocate_section): Likewise. + (elf_s390_finish_dynamic_symbol): Likewise. + * elf64-s390.c (elf_s390_check_relocs): Likewise. + (elf_s390_adjust_dynamic_symbol): Likewise. + (allocate_dynrelocs): Likewise. + (elf_s390_relocate_section): Likewise. + (elf_s390_finish_dynamic_symbol): Likewise. + +2009-03-19 Kai Tietz + + * bfd-in2.h: Regenerated. + * coffcode.h (sec_to_styp_flags): For pe-coff add SEC_READONLY + for debugging sections and map memory read/write dependent on + SEC_COFF_NOREAD. + (styp_to_sec_flags): Set SEC_COFF_NOREAD for sections + without memory read flags set. + * section.c: Add SEC_COFF_NOREAD to section flags. + +2009-03-19 Andreas Schwab + + * elf32-hppa.c (final_link_relocate): Cast bfd_vma values to long + for format string. + +2009-03-19 Alan Modra + + * elf32-spu.c (spu_elf_find_overlays): Separate error return from + "no overlays" return. If there are overlays, create overlay + manager entry symbols here, so that.. + (spu_elf_build_stubs): ..we don't need to set them up here. + Simplify entry symbol tests. + * elf32-spu.h (spu_elf_find_overlays): Update prototype. + +2009-03-18 Mark Kettenis + + * elf.c (elfcore_grok_openbsd_procinfo) + (elfcore_grok_openbsd_note): New functions. + (elf_parse_notes): Handle notes from OpenBSD ELF core files. + +2009-03-18 Alan Modra + + * vms-hdr.c: Don't include alloca.h. + * elf32-m68hc1x.c: Include alloca-conf.h. + * xsym.c: Likewise. + * elf64-hppa.c: Likewise. Remove existing #if's handling alloca. + * som.c: Likewise. + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2009-03-17 Daniel Jacobowitz + + * elf32-arm.c (elf32_arm_check_relocs): Correct symbian_p test. + +2009-03-17 Alan Modra + + * elf32-spu.h (struct spu_elf_params): ovly_flavour now only 1 bit. + Add compact_stub. + (emum _ovly_flavour): Delete ovly_compact, ovly_none. + * elf32-spu.c (struct spu_link_hash_table): Replace ovly_load and + ovly_return fields with ovly_entry[2]. Adjust all users. + (spu_elf_find_overlays): Set ovly_entry[1] from __icache_call_handler + when soft-icache. + (spu_elf_build_stubs): Likewise. + (ovl_stub_size): Change arg to spu_elf_params pointer. Adjust for + ovly_flavour changes. Update all callers. + (ovl_stub_size_log2): New function. + (build_stub): Handle compact icache stubs. Use different manager + entry point for stubs in non-icache area. + (spu_elf_size_stubs): Don't allocate space for indirect branch + descriptors. + (spu_elf_build_stubs): And don't built them. + +2009-03-16 Andrew Stubbs + + * dwarf2.c (read_section): Always use rawsize, if available. + +2009-03-16 Alan Modra + + * simple.c (bfd_simple_get_relocated_section_contents): Use larger + of rawsize and size for buffer. + +2009-03-15 Ulrich Weigand + + * elf32-spu.c (spu_elf_check_vma): Do not reset auto_overlay + parameter just because fixed sections fit into local store. + (spu_elf_auto_overlay): Do not declare as "noreturn". Skip + generating overlays if fixed sections plus reserved stack + and heap space fit into local store. + +2009-03-15 Alan Modra + + * elf32-spu.c (build_stub): Correct icache set_id. + (spu_elf_relocate_section): Likewise. + +2009-03-14 Richard Sandiford + + * xcofflink.c (xcoff_link_check_archive_element): Only free the + symbol table if it was created by the current call. + +2009-03-14 Richard Sandiford + + * xcofflink.c (xcoff_build_ldsyms): Give imported descriptors + class XMC_DS rather than XMC_UA. + +2009-03-14 Richard Sandiford + + * bfd-in.h (bfd_xcoff_size_dynamic_sections): Replace the + bfd_boolean export_defineds parameter with an unsigned int + auto_export_flags parameter. + * bfd-in2.h: Regenerate. + * xcofflink.c (xcoff_archive_contains_shared_object_p): New function, + split out from xcoff_build_ldsyms. + (xcoff_covered_by_expall_p): New function. + (xcoff_auto_export_p): New function, split out from xcoff_build_ldsyms + but with extra code to handle -bexpfull and -bexpall. + (xcoff_mark_auto_exports): New function. + (xcoff_build_ldsyms): Use xcoff_auto_export_p to decide whether + a function should be automatically exported. + (bfd_xcoff_size_dynamic_sections): Replace the export_defineds + parameter with an auto_export_flags parameter. Update ldinfo + accordingly. Use xcoff_mark_auto_exports to mark all automatically- + exported symbols. + +2009-03-14 Richard Sandiford + + * xcofflink.c (xcoff_mark_symbol_by_name): New function. + (bfd_xcoff_size_dynamic_sections): Use it to mark the entry, + init and fini functions. Do garbage collection for objects + without an entry point too. + +2009-03-14 Richard Sandiford + + * coffcode.h (coff_pointerize_aux_hook): Update CSECT_SYM_P to + check whether a symbol has csect information. + (coff_print_aux): Likewise. + * coff-rs6000.c (_bfd_xcoff_swap_aux_in): Handle auxillary csect + information for C_AIX_WEAKEXT too. + (_bfd_xcoff_swap_aux_out): Likewise. + (xcoff_reloc_type_br): Handle defweak symbols too. + * coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Handle auxillary csect + information for C_AIX_WEAKEXT too. + (_bfd_xcoff64_swap_aux_out): Likewise. + (xcoff64_reloc_type_br): Handle defweak symbols too. + * coffgen.c (coff_print_symbol): Handle auxillary function + information for C_AIX_WEAKEXT too. + * xcofflink.c (_bfd_xcoff_canonicalize_dynamic_symtab): Set BSF_WEAK + instead of BSF_GLOBAL if the L_WEAK flag is set. + (xcoff_dynamic_definition_p): New function. + (xcoff_link_add_dynamic_symbols): Use it to decide whether ldsym + defines h. Don't change h if ldsym isn't the definition. Otherwise, + always take the symbol class from the ldsym. Use weak bfd symbol + types for weak ldsyms. + (xcoff_link_add_symbols): Use CSECT_SYM_P and EXTERN_SYM_P. + Fix the check for whether a definition is from a shared object. + Allow redefinitions of weak symbols. + (xcoff_link_check_ar_symbols): Use EXTERN_SYM_P. + (xcoff_keep_symbol_p): Likewise. + (bfd_xcoff_size_dynamic_sections): Use CSECT_SYM_P. + (xcoff_link_input_bfd): Use CSECT_SYM_P and EXTERN_SYM_P. + Add .loader entries for C_AIX_WEAKEXT as well as C_EXT symbols, + but mark them as L_WEAK. + (xcoff_write_global_symbol): Treat weak symbols as C_AIX_WEAKEXT + instead of C_EXT if C_AIX_WEAKEXT == C_WEAKEXT. + +2009-03-14 Richard Sandiford + + * xcofflink.c (xcoff_mark): When walking the relocations, + only mark the target symbol or the target section, not both. + (xcoff_final_definition_p): New function. + (xcoff_keep_symbol_p): Use it to check whether an external XCOFF + symbol is a valid definition of the associated output symbol. + Use XCOFF_ALLOCATED to stop the same hash table entry having + two output symbols. + (bfd_xcoff_size_dynamic_sections): Set XCOFF_ALLOCATED when + keeping a symbol. + (xcoff_link_input_bfd): Use xcoff_final_definition_p. + +2009-03-14 Richard Sandiford + + * xcofflink.c (bfd_xcoff_import_symbol): Treat imported absolute + symbols as XMC_XO. + +2009-03-14 Richard Sandiford + + * libcoff-in.h (xcoff_tdata): Add a lineno_counts field. + * libcoff.h: Regenerate. + * xcofflink.c (xcoff_link_add_symbols): Record per-symbol + line-number counts in the bfd's lineno_counts field. + Don't keep per-csect line-number counts. + (xcoff_sweep): Don't update per-csect line-number counts. + (bfd_xcoff_size_dynamic_sections): Count the number of line-number + entries in each output section. + (xcoff_link_input_bfd): Get the number of line numbers from + the bfd's lineno_counts field, rather than recalculating it + from scratch. Fix the range check when updating C_BINCL and + C_EINCL symbols. + (_bfd_xcoff_bfd_final_link): Don't count the output line numbers + here. Don't expect csects to have line-number counts. + +2009-03-14 Richard Sandiford + + * libcoff-in.h (xcoff_tdata): Change debug_indices to a signed long. + * libcoff.h: Regenerate. + * xcofflink.c (xcoff_keep_symbol_p): New function, using the + "skip" logic from xcoff_link_input_bfd. + (bfd_xcoff_size_dynamic_sections): Explicitly skip dynamic + objects in a dynamic link, rather than checking whether csectpp + is null. Always allocate debug_index for other objects, + and always go through the loop. Update the type of debug_index + after the change above. Read the auxillary csect information + and use xcoff_keep_symbol_p to decide whether a symbol should + be kept. Set its debug_index to -2 if not. + (xcoff_link_input_bfd): Update the type of debug_index after + the change above and always expect it to be nonnull. Use it to + test whether a symbol should be stripped, rather than making the + decision here. Postpone all symbol creation to the second pass. + +2009-03-14 Richard Sandiford + + * xcofflink.c: (xcoff_mark_symbol): Mark the TOC section when + creating a descriptor. + (xcoff_sweep): Don't mark toc_section unless it's needed. + (bfd_xcoff_size_dynamic_sections): Skip the toc_section + when marking every bfd. + (xcoff_link_input_bfd): Skip all TOC anchors. + (xcoff_toc_section_p, xcoff_find_tc0): New functions. + (_bfd_xcoff_bfd_final_link): Don't set the output bfd's TOC anchor + to -1; call xcoff_find_tc0 instead. + +2009-03-14 Richard Sandiford + + * libcoff-in.h (xcoff_section_tdata): Update commentary. + * libcoff.h: Regenerate. + * xcofflink.c (xcoff_link_add_symbols): Set the csect of XTY_ER + symbols to bfd_und_section_ptr or bfd_abs_section_ptr, rather than + the previous symbol's csect. Treat last_symndx as an inclusive value + and simplify its handling. + (xcoff_mark): Treat last_symndx as an inclusive value. Only mark + symbols with the right csect. Don't mark rsec when processing + relocations against undefined or absolute sections. + (bfd_xcoff_size_dynamic_sections): Don't check the SEC_MARK flag + of bfd_und_section_ptr. + (xcoff_link_input_bfd): Likewise. + +2009-03-14 Richard Sandiford + + * coff-rs6000.c (xcoff_ppc_relocate_section): Report relocations + against undefined symbols if the symbol's XCOFF_WAS_UNDEFINED + flag is set. Assert that all undefined symbols are either + imported or defined by a dynamic object. + * coff64-rs6000.c (xcoff64_ppc_relocate_section): Likewise. + * xcofflink.c (xcoff_link_add_symbols): Extend function-symbol + handling to all relocations. Only set XCOFF_CALLED for function + symbols. + (xcoff_find_function): New function, split out from... + (bfd_xcoff_export_symbol) ...here. + (xcoff_set_import_path): New function, split out from... + (bfd_xcoff_import_symbol): ...here. Remove assertion for old + meaning of XCOFF_CALLED. + (xcoff_mark_symbol): If we mark an undefined and unimported + symbol, find some way of defining it. If the symbol is a function + descriptor, fill in its definition automatically. If the symbol + is a function, mark its descriptor and allocate room for global + linkage code. Otherwise mark the symbol as implicitly imported. + Move the code for creating function descriptors from... + (xcoff_build_ldsyms): ...here. Use XCOFF_WAS_UNDEFINED to + check for symbols that were implicitly defined. + (xcoff_mark): Don't count any dynamic relocations against + function symbols. + (bfd_xcoff_size_dynamic_sections): Save the rtld parameter + in the xcoff link info. + (xcoff_link_input_bfd): Remove handling of undefined and + unexported symbols. + +2009-03-14 Richard Sandiford + + * coff-rs6000.c (xcoff_reloc_type_br): Make the branch absolute + if the target is absolute. Fix comment typo. + (xcoff_ppc_relocate_section): Remove FIXME. + * coff64-rs6000.c (xcoff64_reloc_type_br): Make the branch absolute + if the target is absolute. + +2009-03-14 Richard Sandiford + + * xcofflink.c (xcoff_mark, xcoff_link_input_bfd): Don't copy + R_POS and R_NEG relocations against absolute symbols to the + .loader section. + +2009-03-14 Richard Sandiford + + * coff64-rs6000.c (xcoff64_write_object_contents): Set the cputype + to 2 for bfd_mach_ppc_620. + +2009-03-14 Richard Sandiford + + * config.bfd: Treat AIX 6+ in the same way as AIX 5. + * configure.in: Likewise. + * configure: Regenerate. + +2009-03-13 H.J. Lu + + PR binutils/9945 + * elf.c (assign_section_numbers): Generate symbol table if there + is any relocation in output. + (_bfd_elf_compute_section_file_positions): Likewise. + +2009-03-13 Nick Clifton + + PR 9934 + * elf-bfd.h (NUM_SHDR_ENTRIES): Cope with an empty section. + * elflink.c (elf_link_read_relocs_from_section): Use + NUM_SHDR_ENTRIES. Gracefully handle the case where there are + relocs but no symbol table. + * elf32-arm.c (elf32_arm_check_relocs): Likewise. + +2009-03-12 H.J. Lu + + PR ld/9938 + * elf32-i386.c (elf_i386_check_tls_transition): Use strncmp + to check ___tls_get_addr. + + * elf64-x86-64.c (elf64_x86_64_check_tls_transition): Use + strncmp to check __tls_get_addr. + +2009-03-12 Andrew Stubbs + + * dwarf2.c (read_section): Always check the offset, even when the + section has been read before. + +2009-03-11 H.J. Lu + + * elf32-i386.c (elf_i386_check_tls_transition): Fix a typo in + comments. + +2009-03-11 Chris Demetriou + + * bfd.c (BFD_DETERMINISTIC_OUTPUT): New flag. + * bfd-in2.h: Regenerate. + * archive.c (bfd_ar_hdr_from_filesystem): If BFD_DETERMINISTIC_OUTPUT + flag is set, use 0 for uid, gid, and timestamp, and use 0644 for file + mode. + (bsd_write_armap): Likewise. + (_bfd_archive_bsd_update_armap_timestamp): If BFD_DETERMINISTIC_OUTPUT + flag is set, do nothing. + (coff_write_armap): If BFD_DETERMINISTIC_OUTPUT flag is set, use 0 + for timestamp. + +2009-03-11 Ulrich Weigand + + * elf32-spu.c (find_function_stack_adjust): Handle sf instruction + used to update stack pointer. + +2009-03-07 John David Anglin + + PR binutils/9921 + * som.c (som_bfd_derive_misc_symbol_info): Set symbol type ST_ABSOLUTE + for unknown symbols in absolute section. + +2009-03-06 Nick Clifton + + * po/es.po: Updated Spanish translation. + +2009-03-05 Christophe Lyon + + * elf32-arm.c (group_sections): Take next section size into + account before accepting to group it. + +2009-03-05 Christophe Lyon + + * elf32-arm.c (arm_type_of_stub): Handle long branches targetting + PLT entries. + (elf32_arm_final_link_relocate): Likewise. + +2009-03-05 Moritz Kroll + + PR 9923 + * peXXigen.c (_bfd_XXi_final_link_postscript): Check h->root.type. + +2009-03-04 Alan Modra + + * reloc.c (BFD_RELOC_PPC_TLSGD, BFD_RELOC_PPC_TLSLD): New. + * section.c (struct bfd_section): Add has_tls_get_addr_call. + (BFD_FAKE_SECTION): Init new flag. + * ecoff.c (bfd_debug_section): Likewise. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elf32-ppc.c (ppc_elf_howto_raw): Add R_PPC_TLSGD and R_PPC_TLSLD. + (ppc_elf_reloc_type_lookup): Handle new relocs. + (ppc_elf_check_relocs): Set has_tls_get_addr_call on finding such + without marker relocs. + (ppc_elf_tls_optimize): Allow out-of-order __tls_get_addr relocs + if section has no old-style calls. + (ppc_elf_relocate_section): Set tls_mask for non-tls relocs too. + Don't try to optimize new-style __tls_get_addr call when handling + arg setup relocs. Instead do so for R_PPC_TLSGD and R_PPC_TLSLD + relocs. + * elf64-ppc.c (ppc64_elf_howto_raw): Add R_PPC64_TLSGD, R_PPC64_TLSLD. + (ppc64_elf_reloc_type_lookup): Handle new relocs. + (ppc64_elf_check_relocs): Set has_tls_get_addr_call on finding such + without marker relocs. + (ppc64_elf_tls_optimize): Allow out-of-order __tls_get_addr relocs + if section has no old-style calls. Set toc_ref for new relocs as + appropriate. + (ppc64_elf_relocate_section): Set tls_mask for non-tls relocs too. + Don't try to optimize new-style __tls_get_addr call when handling + arg setup relocs. Instead do so for R_PPC_TLSGD and R_PPC_TLSLD + relocs. + +2009-03-04 Alan Modra + + PR 6768 + * configure.in: Test for ld --as-needed support. Link shared + libbfd against libm. + * configure: Regenerate. + +2009-03-03 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2009-03-02 Qinwei + + * elf32-score7.c: New file. + * elf32-score.h: New file. + * elf32-score.c: Add code to support score 7. Set score7 as the + default. + * cpu-score.c: Add score7 architecure. + (compatibile): New function. + * Makefile.am: Add rules for building elf32-score7 object. + * Makefile.in: Regenerate. + * configure.in: Add elf32-score7 object to score vectors. + * configure: Regenerate. + * reloc.c: Add score7 relocs. + * archures.c: Add score3 and score7 machine numbers. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2009-03-01 Ralf Wildenhues + + * configure: Regenerate. + +2009-03-01 John David Anglin + + * elf32-hppa.c (hppa32_elf_local_refcounts): New function. + (elf32_hppa_check_relocs): Use it. + + * elf_hppa_add_symbol_hook (elf_hppa_add_symbol_hook): Move to + elf64-hppa.c. + (elf_hppa_unmark_useless_dynamic_symbols): Likewise. + (elf_hppa_remark_useless_dynamic_symbols): Likewise. + (elf_hppa_is_dynamic_loader_symbol): Likewise. + (elf_hppa_record_segment_addrs): Likewise. + (elf_hppa_final_link): Likewise. + (elf_hppa_relocate_insn): Likewise. + (elf_hppa_final_link_relocate): Likewise. + (elf64_hppa_relocate_section): Likewise. + * elf64-hppa.c: Insert above. + +2009-02-28 John David Anglin + + * elf-hppa.h (elf_hppa_final_link): Use elf_hppa_final_link. + (elf_hppa_final_link_relocate ): Rewrite eliminating dynamic hash table. + (elf_hppa_relocate_section): Likewise. + * elf64-hppa.c (struct elf64_hppa_link_hash_entry): Change to derive + from struct elf_link_hash_entry. Add count field. + (struct elf64_hppa_dyn_hash_table): Delete. + (struct elf64_hppa_link_hash_table): Delete dyn_hash_table field. + (elf64_hppa_hash_table): Rename to hppa_link_hash_table. + (hppa_elf_hash_entry, eh_name): Define. + (elf64_hppa_new_dyn_hash_entry): Delete. + (elf64_hppa_dyn_hash_lookup): Delete. + (elf64_hppa_dyn_hash_traverse): Delete. + (get_dyn_name): Delete. + (elf64_hppa_finalize_opd): Use struct elf_link_hash_entry * instead + of struct elf64_hppa_dyn_hash_entry *. + (elf64_hppa_finalize_dlt, llocate_global_data_dlt, + allocate_global_data_plt, allocate_global_data_stub, + allocate_global_data_opd, count_dyn_reloc, allocate_dynrel_entries): + Likewise. + (hppa64_link_hash_newfunc): New. + (elf64_hppa_hash_table_create): Rework. + (count_dyn_reloc): Likewise. + (hppa64_elf_local_refcounts): New. + (elf64_hppa_check_relocs): Rework using standard technique for recording + local DLT, PLT and OPD reference counts. + (elf64_hppa_dynamic_symbol_p): Revise using "eh" for struct + elf_link_hash_entry *. + (elf64_hppa_mark_exported_functions, allocate_global_data_dlt, + allocate_global_data_plt, allocate_global_data_stub, + allocate_global_data_opd, allocate_dynrel_entries, + elf64_hppa_adjust_dynamic_symbol, + elf64_hppa_mark_milli_and_exported_functions): Likewise. + (elf64_hppa_create_dynamic_sections, elf64_hppa_size_dynamic_sections): + Use hppa_link_hash_table. Rework. + (elf64_hppa_link_output_symbol_hook): Rework. + (elf64_hppa_finish_dynamic_symbol, elf64_hppa_finalize_opd, + elf64_hppa_finalize_dlt, elf64_hppa_finalize_dynreloc, + elf64_hppa_finish_dynamic_sections): Likewise. + +2009-02-26 Christophe Lyon + + * elf32-arm.c (stub_reloc_type): Removed. + (insn_sequence): Renamed reloc_type field to r_type. + (elf32_arm_stub_long_branch_v4t_arm_thumb_pic): New stub. + (elf32_arm_stub_long_branch_v4t_thumb_arm_pic): Likewise. + (elf32_arm_stub_long_branch_thumb_only_pic): Likewise. + (elf32_arm_stub_type): Add new enum entries for the new stubs. + (arm_stub_is_thumb): Catch new stubs. + (arm_type_of_stub): Handle new stubs. + (arm_size_one_stub): Use ARRAY_SIZE. Handle new stubs. + (bfd_elf32_arm_process_before_allocation): Remove useless + condition. + +2009-02-25 H.J. Lu + + * elf.c (elf_find_function): Use is_function_type to check + function symbol. + +2009-02-24 Sterling Augustine + + * xtensa-modules.c: Revert to previous version 1.11 due + to inadvertant commit. + +2009-02-24 Sterling Augustine + + * elf32-xtensa.c (text_action_add): Separate test for action + type. Break if saved action is ta_widen_insn at same offset. + +2009-02-24 Daniel Jacobowitz + + * elf32-arm.c (elf32_arm_stub_long_branch_any_any_pic): Rename + to elf32_arm_stub_long_branch_any_arm_pic. + (elf32_arm_stub_long_branch_any_thumb_pic): New. + (enum elf32_arm_stub_type, arm_type_of_stub) + (arm_size_one_stub): Handle any to ARM PIC and any to Thumb PIC + separately. + +2009-02-24 Joseph Myers + + * elf32-arm.c (PREV_SEC): Update comment. + (group_sections): Rename argument to stubs_always_after_branch. + Reverse the list and place stubs at the end of input sections. + Undefine NEXT_SEC. + (elf32_arm_size_stubs): Update to use stubs_always_after_branch. + +2009-02-23 Daniel Jacobowitz + + * elf32-arm.c (arm_build_one_stub): Initialize stub_reloc_offset. + Fix formatting. + (arm_size_one_stub): Remove unnecessary break. + (arm_map_one_stub): Fix formatting. Return after BFD_FAIL. + +2009-02-23 Christophe Lyon + + * elf32-arm.c (stub_insn_type): New type. + (stub_reloc_type): Likewise. + (insn_sequence): Likewise. + (elf32_arm_stub_long_branch_any_any): Encode using insn_sequence. + (elf32_arm_stub_long_branch_v4t_arm_thumb): Likewise. + (elf32_arm_stub_long_branch_thumb_only): Likewise. + (elf32_arm_stub_long_branch_v4t_thumb_arm): Likewise. + (elf32_arm_stub_short_branch_v4t_thumb_arm): Likewise. + (elf32_arm_stub_long_branch_any_any_pic): Likewise. + (elf32_arm_stub_hash_entry): Add new helper fields. + (stub_hash_newfunc): Initialize these new fields. + (arm_build_one_stub): Encode Arm and Thumb instructions separately + to take endianness into account. + (arm_size_one_stub): Compute size of stubs using insn_sequence. + (arm_map_one_stub): Code is now more generic, thanks to + insn_sequence. + +2009-02-23 Christophe Lyon + + * elf32-arm.c (elf32_arm_stub_long_branch_thumb_only): Fix stub + code. + (elf32_arm_stub_long_branch_v4t_thumb_arm): Likewise. + (arm_type_of_stub): Use Thumb-only long branch stub (non-PIC) when + BLX is not available. Fix typo in warning message. Add comments + and improve formatting. + (arm_build_one_stub): Adjust to new + elf32_arm_stub_long_branch_v4t_thumb_arm stub. + (arm_map_one_stub): Likewise. + +2009-02-23 Tristan Gingold + Eric Botcazou + Douglas B Rupp + + * vms.h: Update copyright year, fix comments, reorder declarations. + (_bfd_save_vms_section): Remove the prototype. + (EGPS_S_V_NO_SHIFT): New constant. + (bfd_vms_set_section_flags): New prototype. + (EGPS_S_B_ALIGN, EGPS_S_W_FLAGS, EGPS_S_L_ALLOC, EGPS_S_B_NAMLNG): New + constants. + (EGSY_S_W_FLAGS): Ditto. + (EGSY_S_V_QUAD_VAL): Ditto. + (ESDF_S_L_VALUE, ESDF_S_L_PSINDX, ESDF_S_B_NAMLNG): Ditto. + (EGST_S_W_FLAGS, EGST_S_Q_LP_1, EGST_S_Q_LP_2, EGST_S_L_PSINDX, + EGST_S_B_NAMLNG): Ditto. + (ESRF_S_B_NAMLNG): Ditto. + (ETIR_S_C_HEADER_SIZE): Ditto. + (EGPS_S_V_ALLOC_64BIT): Ditto. + (DST_S_C_EPILOG): Ditto. + (DST_S_C_SRC_SETLNUM_L, DST_S_C_SRC_SETLNUM_W) : Ditto. + (DST_S_C_SRC_INCRLNUM_B): Ditto. + (DST_S_B_PCLINE_UNSBYTE, DST_S_W_PCLINE_UNSWORD): Ditto. + (DST_S_L_PCLINE_UNSLONG): Ditto. + (DST_S_B_MODBEG_NAME, DST_S_L_RTNBEG_ADDRESS) : Ditto + (DST_S_B_RTNBEG_NAME, DST_S_L_RTNEND_SIZE): Ditto + (DST_S_C_SOURCE_HEADER_SIZE): Ditto. + (DST_S_B_SRC_DF_LENGTH, DST_S_W_SRC_DF_FILEID): Ditto. + (DST_S_B_SRC_DF_FILENAME, DST_S_B_SRC_UNSBYTE): Ditto. + (DST_S_B_SRC_UNSBYTE): Ditto. + (DST_S_W_SRC_UNSWORD, DST_S_L_SRC_UNSLONG): Ditto. + Add prototypes. + (vms_section, vms_reloc): Remove types. + (hdr_struc): Replaced by ... + (hdr_struct): ... new type. + (EMH_S_W_HDRTYP, EMH_S_B_STRLVL, EMH_S_L_ARCH1): New constants. + (EMH_S_L_ARCH2, EMH_S_L_RECSIZ, EMH_S_B_NAMLNG): Ditto. + (EMH_DATE_LENGTH): Ditto. + (eom_struc): Replaced by ... + (eom_struct): ... new type. + (EEOM_S_L_TOTAL_LPS, EEOM_S_W_COMCOD, EEOM_S_B_TFRFLG): New constants. + (EEOM_S_L_PSINDX, EEOM_S_L_TFRADR): Ditto. + (EIHD_S_K_MAJORID, EIHD_S_K_MINORID, EIHD_S_K_EXE): Ditto. + (EIHD_S_L_SIZE, EIHD_S_L_ISDOFF, EIHD_S_L_SYMDBGOFF): Ditto. + (EIHD_S_Q_SYMVVA, EIHD_S_L_IMGTYPE): Ditto. + (EISD_S_L_EISDSIZE, EISD_S_L_SECSIZE, EISD_S_Q_VIR_ADDR): Ditto. + (EISD_S_L_FLAGS, EISD_S_L_VBN, EISD_S_R_CONTROL): Ditto. + (EISD_S_L_IDENT, EISD_S_T_GBLNAM): Ditto. + (EISD_S_M_GBL, EISD_S_M_CRF, EISD_S_M_DZRO, EISD_S_M_WRT): Ditto. + (EISD_S_M_INITALCODE, EISD_S_M_BASED, EISD_S_M_FIXUPVEC): Ditto. + (EISD_S_M_RESIDENT, EISD_S_M_VECTOR, EISD_S_M_PROTECT): Ditto. + (EISD_S_M_LASTCLU, EISD_S_M_EXE, EISD_S_M_NONSHRADR): Ditto. + (EISD_S_M_QUAD_LENGTH, EISD_S_M_ALLOC_64BIT): Ditto. + (EIHS_S_L_DSTVBN, EIHS_S_L_DSTSIZE, EIHS_S_L_GSTVBN): Ditto. + (EIHS_S_L_GSTSIZE, EIHS_S_L_DMTVBN, EIHS_S_L_DMTBYTES): Ditto. + (DBG_S_L_DMT_MODBEG, DBG_S_L_DST_SIZE): Ditto. + (DBG_S_W_DMT_PSECT_COUNT, DBG_S_C_DMT_HEADER_SIZE): Ditto. + (DBG_S_L_DMT_PSECT_START, DBG_S_L_DMT_PSECT_LENGTH) + (DBG_S_C_DMT_PSECT_SIZE): Ditto. + (enum file_type_enum): New type. + (struct location_struct): Removed. + (struct fileinfo, struct srecinfo, struct lineinfo): New types. + (struct funcinfo, struct module): Ditto. + (struct vms_private_data_struct): Update fields. + (struct vms_section_data_struct): New type. + + * vms.c: Update copyright year, fix comments, + Fix includes for DECC, add prototypes. + (vms_initialize): Use bfd_alloc instead of bfd_zalloc and remove + some initializers. + Use flavour to set is_vax, location_stack is removed. + (struct pair): Declare. + (fill_section_ptr): Initialize variables at declaration. + Add guard to set SECTION_SYM flag, handlde und section. + (vms_fixup_sections): Use struct pair for fill_section_ptr argument. + (_bfd_vms_slurp_object_records): New function, replaces previous + vms_object_p. + (vms_slurp_module): New function. + (vms_slurp_image): Ditto. + (vms_object_p): Complete rewrite. + (vms_mkobject): Use is_vax field to slect architecture. + (free_reloc_stream): New function. + (vms_convert_to_var): Ditto. + (vms_convert_to_var_1): Ditto. + (vms_convert_to_var_unix_filename): Ditto. + (vms_close_and_cleanup): Call free_reloc_stream, convert file to + VAR format on VMS. + (vms_new_section_hook): Set alignment to 0, allocate private data. + (vms_get_section_contents): Load content. + (vms_get_symbol_info): Handle undefined section. + (vms_find_nearest_line): Handle. + (alloc_reloc_stream): New function. + (vms_slurp_reloc_table): Ditto. + (vms_get_reloc_upper_bound): Make it real. + (vms_canonicalize_reloc): Do the real work. + (alpha_howto_table): Add ALPHA_R_NOP, ALPHA_R_BSR, ALPHA_R_LDA, + ALPHA_R_BOH. + (vms_bfd_reloc_type_lookup): Handle NOP, BSR, LDA and BOH. + (vms_set_arch_mach): Check arch. + (vms_set_section_contents): Copy the content after allocation. + (vms_alpha_vec): Update object flags. + + * vms-tir.c: Update copyright year, fix comments, + add prototypes for new functions. + (dst_define_location): New function. + (dst_restore_location): New function. + (dst_retrieve_location): New function. + (dst_check_allocation): New function. + (image_dump): Call dst_check_allocation. + (image_write_b): Ditto. + (image_write_w): Ditto. + (image_write_l): Ditto. + (image_write_q): Ditto. + (cmd_name): Handle STA_LW, STA_QW, STO_OFF, STO_IMM, STO_IMMR, STO_LW, + STO_QW, OPR_ADD, CTL_SETRB, STC_LP_PSB, CTL_DFLOC, CTL_STLOC, + CTL_STKDL. + Call error handler instead of abort if name is not known. + (etir_sta): Add quarter_relocs argument and set it. + Fix cast. + (etir_sto): Ditto. + (etir_opr): Ditto, return FALSE in case of error. + (etir_ctl): Add quarter_relocs argument and set it, fix cast. + Fix CTL_DFLOC, CTL_STLOC, CTL_STKDL. + (etir_stc): Add quarter_relocs argument and set it, fix cast. + Fix STC_LP, STC_LP_PSB, STC_GBL and STC_CGA. + Handle STC_LP_PSB, STC_BSR_GBL, STC_LDA_GBL, STC_BOH_GBL. + Move STC_NOP_PS, STC_BSR_PS, STC_LDA_PS, STC_BOH_PS, STC_NBH_PS. + Return FALSE in case of error. + (tir_sta): Change sign of psect. + (tir_ctl): Ditto. + (tir_cmd): Fix cast. Makes tir_table static const. + (etir_cmd): Add quarter_relocs argument, makes etir_table const, + add argument to explain. + (analyze_etir): Initialize maxptr, add quarter_relocs + declaration, move some declarations into inner scopes. + Handle quarter_relocs and STO_IMM. + (_bfd_vms_slurp_tir): Use constant instead of hard-coded values. + (_bfd_vms_slurp_relocs): New function. + (_bfd_vms_decode_relocs): New function. + (sto_imm): Rewritten. + (start_first_etbt_record): New function. + (start_another_etbt_record): Ditto. + (etir_output_check): Ditto. + (defer_reloc_p): Ditto. + (_bfd_vms_write_tir): Remove nextoffset, convert a while-loop to + a for-loop. Correctly deals with contents, deals with .vmsdebug, + rewritte relocations handling. + (_bfd_vms_write_tbt): Removed. + (_bfd_vms_write_dbg): Ditto. + + * vms-misc.c: Update copyright year, Fix comments. + (_bfd_vms_get_header_values): Use 'size' instead of 'length'. + (maybe_adjust_record_pointer_for_object): New function. + (_bfd_vms_get_first_record): New function, replaces ... + (_bfd_vms_get_record): .. removed. + (_bfd_vms_get_object_record): New function. + (_bfd_vms_get_object_record): New function. + (vms_get_remaining_object_record): New function, replaces ... + (_bfd_vms_get_next_record): ... removed. + (add_new_contents): Removed. + (_bfd_save_vms_section): Removed. + (_bfd_get_vms_section): Removed. + (_bfd_vms_output_flush): Write in VAR format. + (new_symbol): Don't make UND section. + + * vms-hdr.c: Update copyright year, update list of record handled. + (_bfd_vms_slurp_hdr): rec_length renamed to rec_size. + (_bfd_vms_write_hdr): Strip vms and unix patches, + add comments, truncate module name at 31 characters, + use constants instead of hard-coded value, + write BFD version instead of a fixed string. + (_bfd_vms_slurp_ihd): New function. + (_bfd_vms_slurp_isd): Ditto. + (_bfd_vms_slurp_ihs): Ditto. + (new_module): Ditto. + (parse_module): Ditto + (build_module_list): Ditto. + (module_find_nearest_line): Ditto. + (_bfd_vms_find_nearest_dst_line): Ditto. + (vms_slurp_debug): Ditto. + (_bfd_vms_slurp_dbg): Ditto. + (_bfd_vms_slurp_tbt): Ditto. + (_bfd_vms_write_dbg): Ditto. + (_bfd_vms_write_tbt): Ditto. + + * vms-gsd.c: Update copyright year, update list of records handled. + (EVAX_LITERALS_NAME): New macro. + (evax_section_flags): Add an entry for EVAX_LITERALS_NAME. + (gpsflagdesc, gsyflagdesc): Moved out of _bfd_vms_slurp_gsd. + (register_universal_symbol): New function and prototype. + (_bfd_vms_slurp_gsd): Fix indentations and casts, + improve debug messages, + use constants instead of hard-coded value, + fix missing endianness conversion, + handle global symbol (SYMG). + (bfd_vms_set_section_flags): New function. + (_bfd_vms_write_gsd): Don't write .vmsdebug section, + handle section literals, + fix indentation, + handle section bfd and vms flags, + don't output LIB$INITIALIZE symbol, + fix handling of weak symbols, + fix evax vs vax procedure descriptor, + handle absolute symbols. + + * reloc.c (BFD_RELOC_ALPHA_NOP, BFD_RELOC_ALPHA_BSR, + BFD_RELOC_ALPHA_LDA, BFD_RELOC_ALPHA_BOH): New relocations. + + * makefile.vms (DEFS): Fix flags for VMS. + + * bfdio.c (real_fopen): Handle multiple VMS fopen attributes. + + * bfd-in2.h: Regenerated. + * libbfd.h: Regenerated. + +2009-02-20 Cary Coutant + + * vmsutil.c (vms_file_stats_name): Fix incorrect use of st_mtime + in struct stat. + +2009-18-02 Dave Korn + + PR gas/7059 + * coffcode.h (coff_write_object_contents): Don't let the string + table offset overflow the s_name field when using long section names. + +2009-18-02 Dave Korn + + * coff-alpha.c (alpha_ecoff_backend_data): Initialise fields which + control long section name handling with ECOFF_NO_LONG_SECTION_NAMES. + * coff-mips.c (mips_ecoff_backend_data): Likewise. + * coff-rs6000.c (bfd_xcoff_backend_data): Initialise fields which + control long section name handling with XCOFF_NO_LONG_SECTION_NAMES. + (bfd_pmac_xcoff_backend_data): Likewise. + * coff64-rs6000.c (bfd_xcoff_backend_data): Likewise. + (bfd_xcoff_aix5_backend_data): Likewise. + (xcoff64_write_object_contents): Delete unused long_section_names + local variable. + * coff-sh.c (bfd_coff_small_swap_table): Initialise long section + name members using COFF_DEFAULT_LONG_SECTION_NAMES and make entire + struct non-const. + * coffcode.h (documentation): Update to describe long section names. + (COFFLONGSECTIONCATHELPER): New helper macro. + (BLANKOR1TOODD): Likewise. + (COFF_ENABLE_LONG_SECTION_NAMES): Likewise. + (COFF_LONG_SECTION_NAMES_SETTER): Likewise. + (COFF_DEFAULT_LONG_SECTION_NAMES): Likewise. + (bfd_coff_set_long_section_names_allowed): New function. + (bfd_coff_set_long_section_names_disallowed): Likewise. + (struct bfd_coff_backend_data): Add new backend hook function + pointer _bfd_coff_set_long_section_names. + (bfd_coff_set_long_section_names): New backend hook. + (coff_write_object_contents): Only generate long section names if + bfd_coff_long_section_names() indicates they are currently enabled. + (bfd_coff_std_swap_table): Make non-const, and initialise long + section name fields using COFF_DEFAULT_LONG_SECTION_NAMES. + (ticoff0_swap_table): Likewise to both. + (ticoff1_swap_table): Again, likewise to both. + * coffgen.c (make_a_section_from_file): Allow long section names + as inputs even if not currently allowed for outputs. + * ecoff.c (_bfd_ecoff_no_long_sections): New function. + * efi-app-ia32.c (COFF_LONG_SECTION_NAMES): Define to 0, not blank. + * efi-app-ia64.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-app-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-bsdrv-ia32.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-bsdrv-ia64.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-bsdrv-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-rtdrv-ia32.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-rtdrv-ia64.c (COFF_LONG_SECTION_NAMES): Likewise. + * efi-rtdrv-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-arm.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-i386.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-mcore.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-mips.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-ppc.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-sh.c (COFF_LONG_SECTION_NAMES): Likewise. + * pei-x86_64.c (COFF_LONG_SECTION_NAMES): Likewise. + * libcoff-in.h: Update copyright year to cause updated copyright + year in generated libcoff.h, and fix typo. + * libcoff.h: Regenerated. + * libecoff.h (ECOFF_NO_LONG_SECTION_NAMES): New macro. + (_bfd_ecoff_no_long_sections): Add prototype. + * libxcoff.h (XCOFF_NO_LONG_SECTION_NAMES): New macro. + * pe-mips.c (COFF_LONG_SECTION_NAMES): Define empty if not already + defined by an including .c file. + * ticoff.h (ticoff0_swap_table): Make non-const, and initialise + long section name fields using COFF_DEFAULT_LONG_SECTION_NAMES. + (ticoff1_swap_table): Likewise to both. + +2009-02-18 Christophe Lyon + + * elf32-arm.c (arm_build_one_stub): Fix relocation target for pic + stub. Catch default case error. + (arm_map_one_stub): Add missing Thumb mapping symbol. + +2009-02-18 Bjoern Haase + + PR 9841 + * elf32-avr.c: Handle case where no local symbos exist correctly. + +2009-02-16 Christophe Lyon + + bfd/ + * elf32-arm.c (arm_long_branch_stub, + arm_thumb_v4t_long_branch_stub, + arm_thumb_thumb_long_branch_stub, + arm_thumb_arm_v4t_long_branch_stub, + arm_thumb_arm_v4t_short_branch_stub, + arm_pic_long_branch_stub): + Renamed to elf32_arm_stub_long_branch_any_any, + elf32_arm_stub_long_branch_v4t_arm_thumb, + elf32_arm_stub_long_branch_thumb_only, + elf32_arm_stub_long_branch_v4t_thumb_arm, + elf32_arm_stub_short_branch_v4t_thumb_arm, + elf32_arm_stub_long_branch_any_any_pic. + (arm_stub_long_branch, arm_thumb_v4t_stub_long_branch, + arm_thumb_thumb_stub_long_branch, + arm_thumb_arm_v4t_stub_long_branch, + arm_thumb_arm_v4t_stub_short_branch, arm_stub_pic_long_branch): + Renamed to arm_stub_long_branch_any_any, + arm_stub_long_branch_v4t_arm_thumb, + arm_stub_long_branch_thumb_only, + arm_stub_long_branch_v4t_thumb_arm, + arm_stub_short_branch_v4t_thumb_arm, + arm_stub_long_branch_any_any_pic. + +2009-02-15 John David Anglin + + * elf-hppa.h (elf_hppa_final_link_relocate): Correct addend value used + in branch offset check. + +2009-02-15 Alan Modra + + * elf64-ppc.c (struct _ppc64_elf_section_data): Delete t_symndx, + add toc.symndx and toc.add. + (ppc64_elf_check_relocs): Don't set htab->tls_get_addr here. + Set up toc.add. + (get_tls_mask): Add toc_addend param, set from toc.add. Adjust all + callers. + (ppc64_elf_tls_setup): Set htab->tls_get_addr and tls_get_addr_fd. + (branch_reloc_hash_match): New function, extracted from.. + (ppc64_elf_tls_optimize): ..here. + (ppc64_elf_relocate_section): Properly set addends when optimizing + tls sequences. Avoid unnecessary reading and writing of insns. + Only redo reloc when symbol changed. Bypass symbol checks when + using tlsld_got. + * elf32-ppc.c (ppc_elf_tls_setup): Correct comment. + (branch_reloc_hash_match): New function, extracted from.. + (ppc_elf_tls_optimize): ..here. + (ppc_elf_relocate_section): Avoid unnecessary reading of insns. + Don't clear addend on zapped __tls_get_addr reloc. + +2009-02-12 Nick Clifton + + PR 9827 + * elflink.c (bfd_elf_final_link): When counting the relocations, + if the header size has not been set yet then assume that it will + match the output section's reloc type. + +2009-02-12 Nathan Sidwell + + * elf32-mips.c (mips_elf_final_gp): Don't add 0x4000 offset for + relocatable link. + +2009-02-09 Alan Modra + + * elf32-spu.c (spu_elf_find_overlays): Call bfd_set_error on errors. + (find_function): Likewise. + (pasted_function): Don't error if no prior function found. + (discover_functions): Revert 2008-12-10 change. Extend first + function range to start of section. + +2009-02-08 John David Anglin + + * elf64-hppa.c: Remove PARAMS macro. Replace PTR with void *. Convert + functions to C90. + * elf64-hppa.h: Likewise. + +2009-02-06 Joseph Myers + + * elfxx-mips.c (_bfd_mips_elf_section_processing): Remove special + .sbss handling. + +2009-02-04 Alan Modra + + * elf32-spu.c (spu_elf_build_stubs): Define __icache_neg_log2_linesize. + Define __icache_ptr_handler*, not __icache_ptr___icache_bi_handler*. + +2009-02-03 Sandip Matte + + * aoutx.h (NAME (aout, machine_type)): Handle bfd_mach_mips_xlr. + * archures.c (bfd_mach_mips_xlr): Define. + * bfd-in2.h: Regenerate. + * cpu-mips.c (I_xlr): Define. + (arch_info_struct): Add XLR entry. + * elfxx-mips.c (_bfd_elf_mips_mach): Handle E_MIPS_MACH_XLR. + (mips_set_isa_flags): Handle bfd_mach_mips_xlr + (mips_mach_extensions): Add XLR entry. + +2009-02-03 Eric B. Weddington + + * elf32-avr.c (avr_final_link_relocate): Allow avr25 to wraparound. + +2009-02-03 Carlos O'Donell + + * configure.in: AC_SUBST pdfdir. + * Makefile.am: Add install-pdf, install-pdf-am + and install-pdf-recursive targets. Define pdfdir. + * doc/Makefile.am: Define pdf__strip_dir. Add + install-pdf and install-pdf-am targets. + * po/Make-in: Add install-pdf target. + * configure: Regenerate. + * Makefile.in: Regenerate + * doc/Makefile.in: Regenerate. + +2009-02-03 Maxim Kuvyrkov + + * bfd-in2.h: Regenerate. + * elf32-m68k.c: Handle 2-slot GOT entries. Rename variables and + fields from n_entries to n_slots where appropriate, update comments. + (HOWTO): Add TLS relocations. + (reloc_map): Map BFD_RELOC_68K_TLS_* to R_68K_TLS_*. + (enum elf_m68k_got_offset_size): New enum. + (struct elf_m68k_got_entry.type): Move field to ... + (struct elf_m68k_got_entry_key): ... here. Update all uses. + (elf_m68k_reloc_got_type, elf_m68k_reloc_got_offset_size): New static + functions. + (elf_m68k_reloc_got_n_entries, elf_m68k_reloc_tls_p): New static + functions. + (struct elf_m68k_got): merge rel_8o_n_entries and rel_8o_16o_n_entries + fields into n_entries array. Update comments. + (elf_m68k_init_got): Simplify, update all uses. + (elf_m68k_init_got_entry_key): Handle R_68K_TLS_LDM32 reloc, update. + (ELF_M68K_REL_8O_MAX_N_ENTRIES_IN_GOT): Adjust to handle 2-slot + GOT entries; update name, update all uses. + (ELF_M68K_REL_8O_16O_MAX_N_ENTRIES_IN_GOT): Ditto. + (elf_m68k_get_got_entry): Update. + (elf_m68k_update_got_entry_type): Rewrite to handle TLS GOT entries, + simplify. + (elf_m68k_remove_got_entry_type): Simplify. + (elf_m68k_add_entry_to_got, elf_m68k_can_merge_gots_1): Update. + (elf_m68k_can_merge_gots): Update. + (elf_m68k_merge_gots_1, elf_m68k_merge_gots): Update. + (struct elf_m68k_finalize_got_offsets_arg): Rewrite to handle 2-slot + GOT entries, simplify. + (elf_m68k_finalize_got_offsets_1, elf_m68k_finalize_got_offsets): Same. + (struct elf_m68k_partition_multi_got_arg): Add slots_relas_diff + field, remove obsoleted local_n_entries field. + (elf_m68k_partition_multi_got_2): New static function. + (elf_m68k_partition_multi_got_1, elf_m68k_partition_multi_got): Use it; + update. + (elf_m68k_remove_got_entry_type): Update. + (elf_m68k_install_rela, dtpoff_base, tpoff): New static functions. + (elf_m68k_check_relocs): Handle TLS relocations. Remove unnecessary + update of sgot->size and srelgot->size. + (elf_m68k_gc_sweep_hook): Update. + (elf_m68k_install_rela, dtpoff_base, tpoff): New static functions. + (elf_m68k_relocate_section, elf_m68k_finish_dynamic_symbol): Handle + TLS relocations. + * reloc.c (BFD_RELOC_68K_TLS_*): Declare TLS relocations. + * libbfd.h (bfd_reloc_code_real_names): Add BFD_RELOC_68K_TLS_*. + +2009-02-02 DJ Delorie + + * elf32-mep.c (config_names): Regenerate configuration. + +2009-02-02 Alan Modra + + * elf-bfd.h (bfd_elf_get_str_section): Don't declare. + (bfd_elf_find_section, _sh_elf_set_mach_from_flags): Likewise. + * elf.c (bfd_elf_get_str_section): Make static. + (bfd_elf_find_section): Delete. + * libbfd.h: Regenerate. + +2009-02-01 Jan Kratochvil + + * elf-eh-frame.c (REQUIRE_CLEARED_RELOCS) Remove. + (_bfd_elf_parse_eh_frame): Do not check relocations for removed FDEs. + +2009-01-31 Alan Modra + + * elflink.c (on_needed_list): New function. + (elf_link_add_object_symbols): Link in --as-needed libs if they + satisfy undefined symbols in other libs. + +2009-01-30 Julian Brown + + * elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Skip BFDs with + EXEC_P or DYNAMIC flags, and skip sections which are being linked + with --just-symbols (-R). + +2009-01-29 Adam Nemet + + * dwarf2.c (read_rangelist): Use read_address to read low_pc and + high_pc in order to properly sign-extend VMAs. + +2009-01-29 Daniel Jacobowitz + Mark Shinwell + Catherine Moore + + * elf-attrs.c, elflink.c, elfxx-mips.c: Correct typos in comments. + +2009-01-28 Catherine Moore + + * elf32-arm.c (elf32_arm_check_relocs): Set SEC_ALLOC and + SEC_LOAD for dynamic relocation sections. + +2009-01-27 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section): Use elf_hash_table + (info)->tls_size, not elf_hash_table (info)->tls_sec->size for + the size of local TLS data. + +2009-01-27 Andreas Schwab + + * mach-o.c (bfd_mach_o_archive_p): Restrict the number of + architectures in the archive. + +2009-01-27 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section) + : Correct relocation value. + + * elf32-cris.c (cris_elf_relocate_section) + : Don't call BFD_ASSERT for weak undefined + symbols with non-default visibility. + +2009-01-26 Nathan Sidwell + + * elf32-ppc.c (ppc_elf_relax_section): Add space for relocs + describing the trampolines. + (ppc_elf_relocate_section): Update relocs to describe the + trampolines. + +2009-01-25 John David Anglin + + * elf-hppa.h (elf_hppa_final_link_relocate): Add check to ensure that + branch targets can be reached for R_PARISC_PCREL22F, R_PARISC_PCREL17F + and R_PARISC_PCREL12F relocations. + +2009-01-24 Alan Modra + + PR 6022 + * elflink.c (find_version_for_sym): New function split out from, + but without export_dynamic test, .. + (_bfd_elf_link_assign_sym_version): ..here. + (_bfd_elf_export_symbol): Use it. + +2009-01-23 Alan Modra + + * elf-bfd.h (struct elf_assign_sym_version_info): Delete. + (struct elf_info_failed, struct elf_find_verdep_info): Move to.. + * elflink.c: ..here, somewhat modified. + * elf-bfd.h (_bfd_elf_add_default_symbol, _bfd_elf_export_symbol, + _bfd_elf_link_find_version_dependencies, + _bfd_elf_link_assign_sym_version, _bfd_elf_link_size_reloc_section, + _bfd_elf_fix_symbol_flags, _bfd_elf_adjust_dynamic_symbol, + _bfd_elf_link_sec_merge_syms, bfd_elf_link_mark_dynamic_symbol): Don't + declare.. + * elflink.c: ..and make static here. + (_bfd_elf_link_find_version_dependencies): Adjust for removal + of output_bfd from struct elf_find_verdep_info. + (_bfd_elf_link_assign_sym_version): Similarly adjust to use + struct elf_info_failed. + (bfd_elf_size_dynamic_sections): Adjust. + +2009-01-22 Alan Modra + + PR 6832 + * dwarf2.c (find_line): Don't update stash->sec_info_ptr until + after comp_unit_find_line call. + +2009-01-21 Nick Clifton + + PR 9769 + * vmsutil.c (vms_file_stats_name): Remove use of unsupported + tm_gmtoff field in struct tm. + +2009-01-21 Alan Modra + + * elf32-spu.h (struct spu_elf_params): Add non_ia_text. + * elf32-spu.c (mark_overlay_section): Only include .text.ia.* + sections in soft-icache lines unless non_ia_text. Don't add + rodata if doing so would exceed line size. + +2009-01-19 Hans-Peter Nilsson + + * elf32-cris.c (elf_cris_copy_indirect_symbol): For other symbol + types than bfd_link_hash_indirect, before early return, call + _bfd_elf_link_hash_copy_indirect. + +2009-01-19 Andrew Stubbs + + * elf-attrs.c (vendor_set_obj_attr_contents): Support tag ordering. + * elf-bfd.h (elf_backend_data): Add obj_attrs_order. + * elf32-arm.c (elf32_arm_obj_attrs_order): New function. + (elf_backend_obj_attrs_order): New define. + * elfxx-target.h (elf_backend_obj_attrs_order): New define. + (elfNN_bed): Add elf_backend_obj_attrs_order. + +2009-01-19 Andrew Stubbs + + * elf-attrs.c (is_default_attr): Substitute magic numbers with macros. + (obj_attr_size): Likewise. + (write_obj_attribute): Likewise. + (_bfd_elf_copy_obj_attributes): Likewise. + (_bfd_elf_parse_attributes): Likewise. + * elf-bfd.h (ATTR_TYPE_FLAG_INT_VAL): New define. + (ATTR_TYPE_FLAG_STR_VAL, ATTR_TYPE_FLAG_NO_DEFAULT): New defines. + (ATTR_TYPE_HAS_INT_VAL, ATTR_TYPE_HAS_STR_VAL): New defines. + (ATTR_TYPE_HAS_NO_DEFAULT): New define. + * elf32-arm.c (elf32_arm_obj_attrs_arg_type): Replace magic numbers + with macros. + +2009-01-19 Andrew Stubbs + + * elf-attrs.c (is_default_attr): Support defaultless attributes. + (bfd_elf_add_obj_attr_int): Get type from _bfd_elf_obj_attrs_arg_type. + (bfd_elf_add_obj_attr_string): Likewise. + (bfd_elf_add_obj_attr_int_string): Likewise. + (_bfd_elf_parse_attributes): Allow for unknown flag bits in type. + * elf-bfd.h (struct obj_attribute): Document new flag bit. + * elf32-arm.c (elf32_arm_obj_attrs_arg_type): Specify that + Tag_nodefaults has no default value. + (elf32_arm_merge_eabi_attributes): Modify the Tag_nodefaults + comment to reflect the new state. + +2009-01-19 Alan Modra + + PR 9695 + * pdp11.c (N_BADMAG): True for anything but OMAGIC, NMAGIC, ZMAGIC. + (some_aout_object_p): Delete dead code handling QMAGIC and BMAGIC. + (adjust_z_magix): Delete dead code handling QMAGIC. + +2009-01-16 Kai Tietz + + * coffcode.h (styp_to_sec_flags): Correct interpretation of + IMAGE_SCN_MEM_DISCARDABLE. + +2009-01-16 Alan Modra + + * Makefile.am (libbfd_la_LIBADD, libbfd_la_LDFLAGS): Substitute + SHARED_LIBADD and SHARED_LDFLAGS rather than WIN32LIBADD, WIN32LDFLAGS. + * configure.in (commonbfdlib): Delete. + (SHARED_LDFLAGS): Rename from WIN32LDFLAGS/ + (SHARED_LIBADD): Rename from WIN32LIBADD. Add pic libiberty if such + is available, not just for linux. + * po/SRC-POTFILES.in: Regenerate. + * Makefile.in: Regenerate. + * configure: Regenerate. + +2009-01-15 Andrew Stubbs + Julian Brown + + * elf-bfd.h (NUM_KNOWN_OBJ_ATTRIBUTES): Set to 71 to include all known + ARM attributes in ABI 2.07. + * elf32-arm.c (get_secondary_compatible_arch): New function. + (set_secondary_compatible_arch): New function. + (tag_cpu_arch_combine): New function. + (elf32_arm_copy_one_eabi_other_attribute): Delete function. + (elf32_arm_copy_eabi_other_attribute_list): Delete function. + (elf32_arm_merge_eabi_attributes): Rename order_312 to order_021 to + make it fit with order_01243. + Add support for Tag_also_compatible_with, + Tag_CPU_unaligned_access, Tag_T2EE_use, Tag_Virtualization_use, + Tag_MPextension_use, Tag_nodefaults and Tag_conformance. + Improve/tidy up support for Tag_CPU_raw_name, Tag_CPU_name, + Tag_CPU_arch, Tag_ABI_HardFP_use, Tag_VFP_HP_extension, + Tag_ABI_FP_denormal, Tag_ABI_PCS_GOT_use, Tag_ABI_align8_needed, + Tag_VFP_arch and Tag_ABI_FP_16bit_format. + Rework the way unknown attributes are handled. + Defer errors until all attributes have been processed. + +2009-01-15 Andrew Stubbs + + * elf-attrs.c (bfd_elf_add_obj_attr_compat): Rename to + bfd_elf_add_obj_attr_int_string. + Read Tag_compatibility from its new location in the attribute array, + rather than the attribute list. + (_bfd_elf_copy_obj_attributes): bfd_elf_add_obj_attr_compat -> + bfd_elf_add_obj_attr_int_string. + (_bfd_elf_parse_attributes): Likewise. + (_bfd_elf_merge_object_attributes): There's now only one + Tag_compatibility, and it's in the array, not the list. + * elf-bfd.h (NUM_KNOWN_OBJ_ATTRIBUTES): Set to 33 to include + Tag_compatibility. + (bfd_elf_add_obj_attr_compat): Rename to + bfd_elf_add_obj_attr_int_string. + (bfd_elf_add_proc_attr_compat): Rename to + bfd_elf_add_proc_attr_int_string. + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Explicitly don't handle + Tag_compatibility. + +2009-01-15 Douglas B Rupp + + * Makefile.am (BFD32_BACKENDS): Add new object vmsutil.lo + (BFD32_BACKENDS_CFILES): Add new file vmsutil.c + (vmsutil.lo): Add dependency rule. + * Makefile.in: Regenerate. + * config.bfd (ia64*-*-*vms*): Add case. + * configure.in (bfd_elf64_ia64_vms_vec): Add case. + * configure: Regenerate. + * vmsutil.c: New file. + * vmsutil.h: New file. + * elf-bfd.h (struct bfd_elf_special_section): Change type of + attr to bfd_vma. + * elfxx-ia64.c (elfNN_vms_post_process_headers, + elfNN_vms_section_processing, elfNN_vms_final_write_processing, + elfNN_vms_close_and_cleanup, elfNN_vms_section_from_shdr, + elfNN_vms_object_p): New functions + * targets.c (bfd_elf64_ia64_vms_vec): New target. + +2009-01-14 H.J. Lu + + PR ld/9727 + * elflink.c (elf_gc_sweep): Exclude the group section if the + first member of the section group is excluded. + +2009-01-14 Alan Modra + + PR 9735 + * syms.c (_bfd_stab_section_find_nearest_line): Don't free + saved filename, use bfd_alloc rather than bfd_malloc for it. + +2009-01-13 Alan Modra + + * elf32-spu.c (spu_elf_build_stubs): Make __icache_base absolute. + +2009-01-13 Alan Modra + + * elf32-spu.c (remove_cycles): Always set call->max_depth. + +2009-01-12 Alan Modra + + * elf32-spu.c (spu_elf_auto_overlay): Correct vma mask. + +2009-01-12 Alan Modra + + * elf32-spu.c (struct spu_link_hash_table): Add init, line_size_log2, + num_lines_log2. + (struct got_entry): Add br_addr. + (struct call_info): Add priority. + (struct function_info): Add lr_store and sp_adjust. + (spu_elf_setup): Init line_size_log2 and num_lines_log2. + (spu_elf_find_overlays): For soft-icache, mark any section within cache + area as an overlay, and check that no other overlays exist. Look up + icache overlay manager entry sym. + (BRA_STUBS, BRA, BRASL): Define. + (enum _stub_type): Replace ovl_stub with call_ovl_stub and br*_ovl_stub. + (needs_ovl_stub): Adjust for soft-icache. Return priority encoded + in branch insn. + (count_stub, build_stub): Support soft-icache. + (build_spuear_stubs, process_stubs): Adjust build_stub call. + (spu_elf_size_stubs): Size soft-icache stubs. + (overlay_index): New function. + (spu_elf_build_stubs): Make static. Support soft-icache. + (spu_elf_check_vma): Don't turn off auto_overlay if soft-icache. + (find_function_stack_adjust): Save lr store and stack adjust insn + offsets. + (maybe_insert_function): Adjust find_function_stack_adjust call. + (mark_functions_via_relocs): Retrieve priority. + (remove_cycles): Only warn about pruned arcs when stack_analysis. + (sort_calls): Sort by priority first. + (mark_overlay_section): Ignore .ovl.init. + (sum_stack): Only print when stack_analysis. + (print_one_overlay_section): New function, extracted from.. + (spu_elf_auto_overlay): ..here. Support soft-icache overlays. + (spu_elf_stack_analysis): Only print when htab->stack_analysis. + (spu_elf_final_link): Call spu_elf_stack_analysis for lrlive + analysis. Call spu_elf_build_stubs. + (spu_elf_relocate_section): For soft-icache encode overlay index + into addresses. + (spu_elf_output_symbol_hook): Support soft-icache. + (spu_elf_modify_program_headers: Likewise. + + * elf32-spu.h (struct spu_elf_params): Add lrlive_analysis. Rename + num_regions to num_lines. Add line_size and max_branch. + (enum _ovly_flavour): Add ovly_soft_icache. + (spu_elf_build_stubs): Delete. + +2009-01-11 Jan Kratochvil + + * elflink.c (_bfd_elf_section_already_linked): Handle g++-3.4 + relocations in `.gnu.linkonce.r.*' referencing its `.gnu.linkonce.t.*'. + +2009-01-07 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section) + : For a symbol defined in + the program, the known offset starts at the negative size of the + TLS section. + : + Similar. + +2009-01-05 Joel Sherrill + + * config.bfd: Add lm32-*-rtems*. + +2009-01-03 H.J. Lu + + * coff-ppc.c: Add 2009 to Copyright. + * elf32-cris.c: Likewise. + * elflink.c: Likewise. + +2009-01-03 Hans-Peter Nilsson + + * elf32-cris.c (elf_cris_finish_dynamic_symbol): Rename + gotplt_index to rela_plt_index. Adjust for R_CRIS_DTPMOD entry. + +2009-01-02 H.J. Lu + + PR ld/9679 + * elflink.c (elf_merge_st_other): New. + (_bfd_elf_merge_symbol): Use it on skipped weak definitions and + hide them if needed. + (elf_link_add_object_symbols): Updated. + +2009-01-02 H.J. Lu + + PR ld/9676 + * elflink.c (elf_link_add_object_symbols): Update def_dynamic, + ref_dynamic and dynamic_def fields when setting def_regular + to 1. + +2009-01-02 Curtis Mackie + + PR 9682 + * coff-ppc.c (dump_toc): Fix up calls to fprintf without a string + literal. + +For older changes see ChangeLog-2008 + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/ChangeLog-2010 crash-6.1.6/=unpacked-tar1=/bfd/ChangeLog-2010 --- crash-5.1.6/=unpacked-tar1=/bfd/ChangeLog-2010 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/ChangeLog-2010 2011-01-01 16:43:51.000000000 +0000 @@ -0,0 +1,3562 @@ +2010-12-31 Robert Millan + + * config.bfd: Recognize mips-freebsd and mips-kfreebsd-gnu. + * configure.host: Likewise. + * configure.in: Support for `bfd_elf32_ntradbigmips_freebsd_vec', + `bfd_elf32_ntradlittlemips_freebsd_vec', + `bfd_elf32_tradbigmips_freebsd_vec', + `bfd_elf32_tradlittlemips_freebsd_vec', + `bfd_elf64_tradbigmips_freebsd_vec' and + `bfd_elf64_tradlittlemips_freebsd_vec'. + * configure: Regenerate. + * elf32-mips.c: New target for FreeBSD support + (same as traditional MIPS but overrides ELF_OSABI + with ELFOSABI_FREEBSD). + * elf64-mips.c: Likewise. + * elfn32-mips.c: Likewise. + * targets.c (_bfd_target_vector): Add + `bfd_elf32_ntradbigmips_freebsd_vec', + `bfd_elf32_ntradlittlemips_freebsd_vec', + `bfd_elf32_tradbigmips_freebsd_vec', + `bfd_elf32_tradlittlemips_freebsd_vec', + `bfd_elf64_tradbigmips_freebsd_vec' and + `bfd_elf64_tradlittlemips_freebsd_vec'. + +2010-12-30 H.J. Lu + + * elfcode.h (NAME(elf,r_info)): New. + (NAME(elf,r_sym)): Likewise. + + * elflink.c (elf64_r_info): Removed. + (elf32_r_info): Likewise. + (elf64_r_sym): Likewise. + (elf32_r_sym): Likewise. + +2010-12-30 H.J. Lu + + * elf64-x86-64.c (elf_x86_64_relocs_compatible): New. + (elf_backend_relocs_compatible): Defined to + elf_x86_64_relocs_compatible. + +2010-12-30 H.J. Lu + + * archures.c (bfd_mach_x64_32): New. + (bfd_mach_x64_32_intel_syntax): Likewise. + * bfd-in2.h: Regenerated. + + * config.bfd (targ64_selvecs): Add bfd_elf32_x86_64_vec for + i[3-7]86-*-linux-*. + (targ_selvecs): Add bfd_elf32_x86_64_vec for x86_64-*-linux-*. + + * configure.in: Support bfd_elf32_x86_64_vec. + * configure: Regenerated. + + * cpu-i386.c (bfd_x64_32_arch_intel_syntax): New. + (bfd_x64_32_arch): Likewise. + + * elf-bfd.h (elf_append_rela): New prototype. + (elf_append_rel): Likewise. + (elf64_r_info): Likewise. + (elf32_r_info): Likewise. + (elf64_r_sym): Likewise. + (elf32_r_sym): Likewise. + + * elf64-x86-64.c (ABI_64_P): New. + (elf_x86_64_info_to_howto): Replace ELF64_R_TYPE with + ELF32_R_TYPE. Replace ELF64_ST_TYPE with ELF_ST_TYPE. + (elf_x86_64_check_tls_transition):Likewise. + (elf_x86_64_check_relocs): Likewise. + (elf_x86_64_gc_mark_hook):Likewise. + (elf_x86_64_gc_sweep_hook): Likewise. + (elf_x86_64_relocate_section): Likewise. + (elf_x86_64_reloc_type_class): Likewise. + (ELF_DYNAMIC_INTERPRETER): Renamed to ... + (ELF64_DYNAMIC_INTERPRETER): This. + (ELF32_DYNAMIC_INTERPRETER): New. + (elf_x86_64_link_hash_table): Add r_info, r_sym, swap_reloca_out, + dynamic_interpreter and dynamic_interpreter_size. + (elf_x86_64_get_local_sym_hash): Replace ELF64_R_SYM with + htab->r_sym. Replace ELF64_R_INFO with htab->r_info. + (elf_x86_64_get_local_sym_hash): Likewise. + (elf_x86_64_check_tls_transition):Likewise. + (elf_x86_64_check_relocs): Likewise. + (elf_x86_64_gc_mark_hook):Likewise. + (elf_x86_64_gc_sweep_hook): Likewise. + (elf_x86_64_relocate_section): Likewise. + (elf_x86_64_finish_dynamic_symbol): Likewise. + (elf_x86_64_finish_local_dynamic_symbol): Likewise. + (elf_x86_64_link_hash_table_create): Initialize r_info, r_sym, + swap_reloca_out, dynamic_interpreter and dynamic_interpreter_size. + (elf_x86_64_check_relocs): Check ABI_64_P when requesting for + PIC. + (elf_x86_64_relocate_section): Likewise. + (elf64_x86_64_adjust_dynamic_symbol): Replace sizeof + (Elf64_External_Rela) with bed->s->sizeof_rela. + (elf64_x86_64_allocate_dynrelocs): Likewise. + (elf64_x86_64_size_dynamic_sections): Likewise. + (elf64_x86_64_finish_dynamic_symbol): Likewise. + (elf64_x86_64_append_rela): Removed. + (elf32_x86_64_elf_object_p): New. + Add bfd_elf32_x86_64_vec. + + * elf64-x86-64.c (elf64_x86_64_xxx): Renamed to ... + (elf_x86_64_xxx): This. + + * elflink.c (bfd_elf_final_link): Check ELF file class on error. + (elf_append_rela): New. + (elf_append_rel): Likewise. + (elf64_r_info): Likewise. + (elf32_r_info): Likewise. + (elf64_r_sym): Likewise. + (elf32_r_sym): Likewise. + + * targets.c (bfd_elf32_x86_64_vec): New. + (_bfd_target_vector): Add bfd_elf32_x86_64_vec. + +2010-12-24 Alan Modra + + * compress.c (decompress_contents): Style. + (bfd_get_full_section_contents): Do not decompress directly into + caller buffer or directly return cached section contents. + Check malloc return for compressed_buffer. + +2010-12-21 Kai Tietz + + * peXXigen.c (_bfd_XXi_final_link_postscript): Use + bfd_get_symbol_leading_char to determine "_tls_used" name. + +2010-12-21 Pierre Muller + + * peXXigen.c (_bfd_XXi_final_link_postscript): Use correct size + for windows 64-bit TLS table size. + +2010-12-16 DJ Delorie + + * reloc.c (BFD_RELOC_RX_ABS16_REV): Add. + (BFD_RELOC_RX_ABS32_REV): Add. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elf32-rx.c (rx_reloc_map): Add them. + +2010-12-15 H.J. Lu + + * elf.c (_bfd_elf_new_section_hook): Special handling for + .init_array/.fini_array output sections. + +2010-12-13 Alan Modra + + * aoutx.h (aout_link_check_ar_symbols): Formatting. + * cofflink.c (coff_link_check_ar_symbols): Likewise. + * elflink.c (elf_link_add_archive_symbols): Likewise. + * pdp11.c (aout_link_check_ar_symbols): Likewise. + * xcofflink.c (xcoff_link_check_dynamic_ar_symbols, + xcoff_link_check_dynamic_ar_symbols): Likewise. + + * aoutx.h (aout_link_check_archive_element): Simplify code dealing + with add_archive_element substitute BFD. + * cofflink.c (coff_link_check_archive_element): Likewise. + * ecoff.c (ecoff_link_check_archive_element): Likewise. + (ecoff_link_add_archive_symbols): Likewise. + * linker.c (generic_link_check_archive_element): Likewise. + * pdp11.c (aout_link_check_archive_element): Likewise. + * vms-alpha.c (alpha_vms_link_add_archive_symbols): Likewise. + * xcofflink.c (xcoff_link_check_archive_element): Likewise. + + * aoutx.h (aout_link_check_archive_element): Free symbols from old + bfd if !keep_memory. + * cofflink.c (coff_link_check_archive_element): Likewise. + * pdp11.c (aout_link_check_archive_element): Likewise. + * xcofflink.c (xcoff_link_check_archive_element): Likewise. + +2010-12-13 Alan Modra + + * plugin.c (bfd_plugin_mkobject): Delete. + (plugin_vec): Use bfd_false instead. + +2010-12-12 H.J. Lu + + * elflink.c (elf_link_add_archive_symbols): Remove subsbfd. + +2010-12-12 H.J. Lu + + * elf.c (special_sections_g): Add ".gnu.lto_". + +2010-12-10 Alan Modra + + * config.bfd: Configure rs6000-*-aix* as for powerpc-*-aix*. + Add aix5coff64_vec to powerpc ELF entries. + +2010-12-09 Mike Frysinger + + * .gitignore: New file. + +2010-12-06 Dmitry Gorbachev + + PR ld/12288 + * plugin.c (message): Add putchar for the trailing `\n'. + +2010-12-04 Mike Frysinger + + * Makefile.am (!INSTALL_LIBBFD/bfdinclude_HEADERS): Set to nothing. + (PLUGINS/bfdinclude_HEADERS): Append plugin-api.h. + * Makefile.in: Regenerated. + +2010-12-04 Alan Modra + + PR ld/12277 + * elflink.c (elf_link_output_extsym): Set bfd_error on symbol + and section errors. Allow better translation of error messages. + +2010-12-02 Richard Sandiford + + * elf32-arm.c (elf32_arm_link_hash_table): Remove sgot, sgotplt, + srelgot, splt, srelplt. + (create_got_section, elf32_arm_link_hash_table_create): Don't set them. + (elf32_arm_create_dynamic_sections): Likewise. Use htab->root + fields instead. + (arm_type_of_stub): Use the root fields instead of the removed ones. + (cortex_a8_erratum_scan, elf32_arm_size_stubs): Likewise. + (bfd_elf32_arm_process_before_allocation): Likewise. + (elf32_arm_check_relocs, allocate_dynrelocs): Likewise. + (elf32_arm_size_dynamic_sections): Likewise. + (elf32_arm_output_arch_local_syms): Likewise. + (elf32_arm_final_link_relocate): Set sgot, splt and srelgot from the + htab fields instead of looking them up by name. Consistently use + these local variables instead of htab fields. + (elf32_arm_finish_dynamic_symbol): Likewise sgot, splt and srel. + Use srelbss instead of looking it up by name. + (elf32_arm_finish_dynamic_sections): Use sgotplt, splt and srelplt + instead of looking up the symbols by name. Use the root fields + instead of the removed ones. + +2010-12-02 Richard Sandiford + + * elf32-arm.c (elf32_arm_relocs_copied): Delete. + (elf32_arm_link_hash_entry): Replace relocs_copied with dyn_relocs. + (elf32_arm_link_hash_newfunc): Update accordingly. + (elf32_arm_copy_indirect_symbol, elf32_arm_gc_sweep_hook): Likewise. + (elf32_arm_check_relocs, allocate_dynrelocs): Likewise. + (elf32_arm_readonly_dynrelocs): Likewise. + (elf32_arm_size_dynamic_sections): Likewise. + +2010-12-02 Paul Koning + + * pdp11.c (aout_link_add_symbols): Ignore debug symbols. + +2010-11-30 Joel Sherrill + + * config.bfd: Add sparc64-rtems. + +2010-11-25 Alan Modra + + * po/es.po: Update. + * po/fi.po: Update. + * po/fr.po: Update. + * po/ja.po: Update. + * po/zh_CN.po: Update. + +2010-11-24 Joel Brobecker + + * Makefile.am (OPTIONAL_BACKENDS): Add rs6000-core.lo. + (OPTIONAL_BACKENDS_CFILES): Add rs6000-core.c. + * Makefile.in: Regenerate. + +2010-11-24 Alan Modra + + PR ld/12253 + * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Correct + DW_EH_PE_datarel handling. Truncate .eh_frame_hdr address to + ptr_size. + +2010-11-23 Mingming Sun + + * elfxx-mips.c (mips_set_isa_flags): Move bfd_mach_loongson_3a + after bfd_mach_mips_sb1. + +2010-11-17 Tristan Gingold + + * vms-lib.c (vms_write_index): Add comments. + Partially revert previous patch. Free blocks later. + +2010-11-17 Nick Clifton + + PR ld/12161 + * elf32-avr.c (elf32_avr_check_relocs): Delete. + (elf_backend_check_relocs): Delete. + +2010-11-16 Jie Zhang + + * elf32-bfin.c (elf32_bfin_code_in_l1): New variable. + (elf32_bfin_data_in_l1): New variable. + (elf32_bfin_final_write_processing): New. + (elf_backend_final_write_processing): Define. + +2010-11-15 Mike Frysinger + + PR binutils/12177 + * elf32-bfin.c (_bfin_create_got_section): Drop unused flags code. + +2010-11-12 H.J. Lu + + * archive.c (_bfd_get_elt_at_filepos): Copy BFD_COMPRESS and + BFD_DECOMPRESS. + (bfd_openr_next_archived_file): Revert the last change. + +2010-11-11 Mingming Sun + + * archures.c (bfd_mach_mips_loongson_3a): Defined. + * bfd-in2.h (bfd_mach_mips_loongson_3a): Defined. + * cpu-mips.c (I_loongson_3a): New add. + (arch_info_struct): Add loongson_3a. + * elfxx-mips.c (_bfd_elf_mips_mach): Add loongson_3a. + (mips_set_isa_flags): Add loongson_3a. + (mips_mach_extensions): Add loongson_3a in MIPS64 extensions. + +2010-11-10 Richard Sandiford + + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Remove unused + variables. + +2010-11-10 Nick Clifton + + * po/ja.po: Updated Japanese translation. + * po/ru.po: Updated Russian translation. + +2010-11-08 Nick Clifton + + * po/ja.po: Updated Japanese translation. + +2010-11-08 Alan Modra + + * hash.c (bfd_hash_hash): Extract from.. + (bfd_hash_lookup): ..here. + (bfd_hash_rename): New function. + * section.c (bfd_rename_section): New function. + * bfd-in.h (bfd_hash_rename): Declare. + * bfd-in2.h: Regenerate. + * elf.c (_bfd_elf_make_section_from_shdr): Rename input sections + when compressing or decompressing. Don't assert name match. + * elf64-hppa.c (get_reloc_section): Don't assert name match. + * elfxx-ia64.c (get_reloc_section): Likewise. + +2010-11-05 Joseph Myers + + * elf32-tic6x.c (elf32_tic6x_obj_attrs_handle_unknown): New. + (elf32_tic6x_merge_attributes): Use + _bfd_elf_merge_unknown_attribute_low and + _bfd_elf_merge_unknown_attribute_list. + (elf_backend_obj_attrs_handle_unknown): Define. + +2010-11-05 Joseph Myers + + * elf-attrs.c (_bfd_elf_merge_unknown_attribute_low, + _bfd_elf_merge_unknown_attribute_list): Correct test for matching + string attributes. + +2010-11-05 Tristan Gingold + + * po/bfd.pot: Regenerate + +2010-11-05 Tristan Gingold + + * configure.in: Bump version to 2.21.51 + * configure: Regenerate. + +2010-11-04 Maciej W. Rozycki + + PR ld/10144 + * elfxx-mips.c (_bfd_mips_elf_check_relocs) + [R_MIPS_32, R_MIPS_REL32, R_MIPS_64]: Ignore relocs from + SEC_DEBUGGING sections. + +2010-11-04 Tristan Gingold + + * vms-lib.c (vms_write_index): Fix thinko: reverse the loop. + Use bfd_zmalloc instead of bfd_malloc. Fix comment. + +2010-11-04 Kai Tietz + + * coffcode.h (GNU_LINKONCE_WT): New. + (sec_to_styp_flags): Add handling of new debug + section. + (styp_to_sec_flags): Likewise. + +2010-11-04 Tristan Gingold + + * makefile.vms (CFLAGS): Make badalias warnings informational. + * vms-lib.c (vms_lib_bread): Avoid arithmetic on void pointer. + +2010-11-04 Joseph Myers + + * elf-attrs.c (_bfd_elf_merge_unknown_attribute_low, + _bfd_elf_merge_unknown_attribute_list): New. + * elf-bfd.h (struct elf_backend_data): Add + obj_attrs_handle_unknown. + (_bfd_elf_merge_unknown_attribute_low, + _bfd_elf_merge_unknown_attribute_list): Declare. + * elf32-arm.c (elf32_arm_obj_attrs_handle_unknown): New. Split + out from elf32_arm_merge_eabi_attributes. + (elf32_arm_merge_eabi_attributes): Use + _bfd_elf_merge_unknown_attribute_low and + _bfd_elf_merge_unknown_attribute_list. + (elf_backend_obj_attrs_handle_unknown): Define. + * elfxx-target.h (elf_backend_obj_attrs_handle_unknown): Define. + (elfNN_bed): Update initializer. + +2010-11-02 H.J. Lu + + * bfd.c (BFD_FLAGS_FOR_BFD_USE_MASK): New. + * bfd-in2.h: Regenerated. + +2010-11-02 Joseph Myers + + * elf32-tic6x.c (elf32_tic6x_obj_attrs_arg_type): Except for + Tag_ABI_compatibility, treat odd tags as strings and even ones as + integers. + (elf32_tic6x_obj_attrs_order, elf32_tic6x_tag_to_array_alignment, + elf32_tic6x_array_alignment_to_tag): New. + (elf32_tic6x_merge_attributes): Handle more attributes. Set type + for merged attributes. + (elf_backend_obj_attrs_order): Define. + +2010-10-29 Maciej W. Rozycki + + * elfxx-mips.c (mips_elf_calculate_relocation): Fix a typo. + +2010-10-29 Pawel Sikora + + PR binutils/12075 + * compress.c (bfd_compress_section_contents): Use uLong on + compressed_size. + +2010-10-29 Joseph Myers + + * elf32-tic6x.c (elf32_tic6x_obj_attrs_arg_type): Check + Tag_ABI_compatibility not Tag_compatibility. + (elf32_tic6x_merge_attributes): Update compatibility attribute + name in comment. Return FALSE if merging common attributes fails. + +2010-10-29 Nick Clifton + + PR bintils/6962 + * coffcode.h (handle_COMDAT): Only check the base type when + looking for a section symbol. + +2010-10-29 H.J. Lu + Cary Coutant + + * archive.c (bfd_openr_next_archived_file): Copy BFD_COMPRESS + and BFD_DECOMPRESS. + + * bfd.c (BFD_COMPRESS): New. + (BFD_DECOMPRESS): Likewise. + (BFD_FLAGS_SAVED): Likewise. + (bfd_preserve_save): Replace BFD_IN_MEMORY with BFD_FLAGS_SAVED. + + * compress.c (bfd_uncompress_section_contents): Removed. + (get_uncompressed_size): New. + (decompress_contents): Likewise. + (bfd_compress_section_contents): Likewise. + (bfd_get_full_section_contents): Likewise. + (bfd_is_section_compressed): Likewise. + (bfd_init_section_decompress_status): Likewise. + (bfd_init_section_compress_status): Likewise. + + * dwarf2.c (dwarf_debug_sections): New. + (dwarf_debug_section_enum): Likewise. + (read_section): Remove section_name and compressed_section_name. + Add dwarf_debug_section_enum. Try compressed debug section. + (read_indirect_string): Updated. + (read_abbrevs): Likewise. + (decode_line_info): Likewise. + (read_debug_ranges): Likewise. + (find_line): Updated. + + * ecoff.c (bfd_debug_section): Add compress_status and + compressed_size. + + * elf.c (_bfd_elf_make_section_from_shdr): Call + bfd_is_section_compressed to check if a DWARF debug section is + compressed. Call bfd_init_section_compress_status or + bfd_init_section_decompress_status if needed. + + * elflink.c (elf_link_input_bfd): Replace bfd_get_section_contents + with bfd_get_full_section_contents. + * merge.c (_bfd_add_merge_section): Likewise. + * reloc.c (bfd_generic_get_relocated_section_contents): Likewise. + * simple.c (bfd_simple_get_relocated_section_contents): Likewise. + + * elfxx-target.h (TARGET_BIG_SYM): Allow BFD_COMPRESS and + BFD_DECOMPRESS. + (TARGET_LITTLE_SYM): Likewise. + + * libbfd-in.h (dwarf_debug_section): New. + (dwarf_debug_sections): Likewise. + + * libbfd.c (_bfd_generic_get_section_contents): Issue an error + when getting contents on compressed/decompressed section. + + * section.c (COMPRESS_SECTION_NONE): New. + (COMPRESS_SECTION_DONE): Likewise. + (DECOMPRESS_SECTION_SIZED): Likewise. + (BFD_FAKE_SECTION): Add compress_status and compressed_size. + (bfd_malloc_and_get_section): Replace bfd_get_section_contents + with bfd_get_full_section_contents. + + * bfd-in2.h: Regenerated. + * libbfd.h: Likewise. + +2010-10-29 Bernd Schmidt + Joseph Myers + + * elf32-tic6x.c (elf32_tic6x_merge_attributes): Check for mismatch + of DSBT attributes. + +2010-10-25 Daniel Jacobowitz + + * elf-bfd.h (RELOC_AGAINST_DISCARDED_SECTION): Always call + _bfd_clear_contents. Pass it the input section. + * libbfd-in.h (_bfd_clear_contents): Add input_section argument. + * libbfd.h: Regenerate. + * reloc.c (_bfd_clear_contents): Take input_section argument. + Use non-zero for .debug_ranges. + (bfd_generic_get_relocated_section_conten): Update _bfd_clear_contents + call. + + * elf32-arm.c (elf32_arm_relocate_section): Use + RELOC_AGAINST_DISCARDED_SECTION. + * elf-m10200.c (mn10200_elf_relocate_section): Likewise. + * elf-m10300.c (mn10300_elf_relocate_section): Likewise. + * elf32-arm.c (elf32_arm_relocate_section): Likewise. + * elf32-avr.c (elf32_avr_relocate_section): Likewise. + * elf32-bfin.c (bfin_relocate_section): Likewise. + (bfinfdpic_relocate_section): Likewise. + * elf32-cr16.c (elf32_cr16_relocate_section): Likewise. + * elf32-cr16c.c (elf32_cr16c_relocate_section): Likewise. + * elf32-cris.c (cris_elf_relocate_section): Likewise. + * elf32-crx.c (elf32_crx_relocate_section): Likewise. + * elf32-d10v.c (elf32_d10v_relocate_section): Likewise. + * elf32-fr30.c (fr30_elf_relocate_section): Likewise. + * elf32-frv.c (elf32_frv_relocate_section): Likewise. + * elf32-h8300.c (elf32_h8_relocate_section): Likewise. + * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. + * elf32-i370.c (i370_elf_relocate_section): Likewise. + * elf32-i860.c (elf32_i860_relocate_section): Likewise. + * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. + * elf32-iq2000.c (iq2000_elf_relocate_section): Likewise. + * elf32-lm32.c (lm32_elf_relocate_section): Likewise. + * elf32-m32c.c (m32c_elf_relocate_section): Likewise. + * elf32-m32r.c (m32r_elf_relocate_section): Likewise. + * elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-mcore.c (mcore_elf_relocate_section): Likewise. + * elf32-mep.c (mep_elf_relocate_section): Likewise. + * elf32-moxie.c (moxie_elf_relocate_section): Likewise. + * elf32-msp430.c (elf32_msp430_relocate_section): Likewise. + * elf32-mt.c (mt_elf_relocate_section): Likewise. + * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-rx.c (rx_elf_relocate_section): Likewise. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-score.c (s3_bfd_score_elf_relocate_section): Likewise. + * elf32-score7.c (s7_bfd_score_elf_relocate_section): Likewise. + * elf32-sh.c (sh_elf_relocate_section): Likewise. + * elf32-spu.c (spu_elf_relocate_section): Likewise. + * elf32-tic6x.c (elf32_tic6x_relocate_section): Likewise. + * elf32-v850.c (v850_elf_relocate_section): Likewise. + * elf32-vax.c (elf_vax_relocate_section): Likewise. + * elf32-xc16x.c (elf32_xc16x_relocate_section): Likewise. + * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise. + * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section_r): Likewise. + (elf64_alpha_relocate_section): Likewise. + * elf64-hppa.c (elf64_hppa_relocate_section): Likewise. + * elf64-mmix.c (mmix_elf_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-sh64.c (sh_elf64_relocate_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. + * elfxx-mips.c (_bfd_mips_elf_relocate_section): Likewise. + * elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Likewise. + +2010-10-25 Nathan Sidwell + + * elf32-tic6x.c: Add attribution. + +2010-10-25 Alan Modra + + * elf32-arm.c (find_stub_size_and_template): Avoid uninitialized + var warning at -O3. + +2010-10-25 Alan Modra + + * opncls.c (bfd_alloc, bfd_zalloc): Don't mark internal. + * libbfd-in.h (bfd_alloc, bfd_zalloc): Don't declare here. + * libbfd.h: Regenerate + * bfd-in2.h: Regenerate. + +2010-10-25 Alan Modra + + * opncls.c (_bfd_id_counter): Rename to bfd_id_counter. + (bfd_reserved_id_counter, bfd_use_reserved_id): New vars. + (_bfd_new_bfd): Use negative id when bfd_use_reserved_id. + (bfd_create): Doc fix. + * bfd-in2.h: Regenerate. + +2010-10-22 Rainer Orth + + * elfxx-sparc.c (tpoff): Define bed, static_tls_size. + Consider static_tls_alignment. + + * elf32-sparc.c (TARGET_BIG_SYM): Redefine to + bfd_elf32_sparc_sol2_vec. + (TARGET_BIG_NAME): Redefine to elf32-sparc-sol2. + (elf32_bed): Redefine to elf32_sparc_sol2_bed. + (elf_backend_static_tls_alignment): Redefine to 8. + Include elf32-target.h. + (elf_backend_static_tls_alignment): Undef again for VxWorks. + + * elf64-sparc.c (TARGET_BIG_SYM): Redefine to + bfd_elf64_sparc_sol2_vec. + (TARGET_BIG_NAME): Redefine to elf64-sparc-sol2. + (ELF_OSABI): Undef. + (elf64_bed): Redefine to elf64_sparc_sol2_bed. + (elf_backend_static_tls_alignment): Redefine to 16. + Include elf64-target.h. + + * config.bfd (sparc-*-solaris2.[0-6]): Split from sparc-*-elf*. + Set targ_defvec to bfd_elf32_sparc_sol2_vec. + [BFD64] (sparc-*-solaris2*): Set targ_defvec to + bfd_elf32_sparc_sol2_vec. + Replace bfd_elf64_sparc_vec by bfd_elf64_sparc_sol2_vec in + targ_selvecs. + + * configure.in: Handle bfd_elf32_sparc_sol2_vec, + bfd_elf64_sparc_sol2_vec. + * configure: Regenerate. + + * targets.c (bfd_elf32_sparc_sol2_vec): Declare. + (bfd_elf64_sparc_sol2_vec): Declare. + (_bfd_target_vector): Add bfd_elf32_sparc_sol2_vec, + bfd_elf64_sparc_sol2_vec. + +2010-10-21 Joseph Myers + + * elf32-tic6x.c (elf32_tic6x_merge_arch_attributes): Update for + attribute renaming. + (elf_backend_obj_attrs_section): Change to ".c6xabi.attributes". + +2010-10-21 Rainer Orth + + * elf-bfd.h (struct elf_backend_data): New member + static_tls_alignment. + * elfxx-target.h (elf_backend_static_tls_alignment): Provide + default. + (elfNN_bed): Initialize static_tls_alignment. + * elflink.c (bfd_elf_final_link): Don't round end of TLS section + if static TLS has special alignment requirements. + * elf32-i386.c (elf_i386_tpoff): Define bed, static_tls_size. + Consider static_tls_alignment. + (elf_backend_static_tls_alignment): Redefine for Solaris 2. + Undef again for VxWorks. + * elf64-x86-64.c (elf64_x86_64_tpoff): Define bed, + static_tls_size. + Consider static_tls_alignment. + (elf_backend_static_tls_alignment): Redefine for Solaris 2. + Undef again for Intel L1OM. + +2010-10-14 Dave Korn + + Apply LD plugin patch series (part 6/6). + * aoutx.h (aout_link_check_ar_symbols): Take new "subsbfd" reference + parameter and pass it when invoking add_archive_element callback. + (aout_link_check_archive_element): Handle substitute bfd if it + was set during add_archive_element callback in the above. + * cofflink.c (coff_link_check_ar_symbols): Take new "subsbfd" reference + parameter and pass it when invoking add_archive_element callback. + (coff_link_check_archive_element): Handle substitute bfd if it + was set during add_archive_element callback in the above. + * ecoff.c (read_ext_syms_and_strs): New function holds symbol-reading + code factored-out from ecoff_link_check_archive_element. + (reread_ext_syms_and_strs): Clear old symbols and call it. + (ecoff_link_check_archive_element): Use the above. Handle substitute + BFD if one is set by add_archive_element callback. + (ecoff_link_add_archive_symbols): Likewise allow bfd substitution. + * elflink.c (elf_link_add_archive_symbols): Likewise. + * linker.c (generic_link_check_archive_element): Likewise. + * pdp11.c (aout_link_check_ar_symbols): Take new "subsbfd" reference + parameter and pass it when invoking add_archive_element callback. + (aout_link_check_archive_element): Handle substitute bfd if it was + set during add_archive_element callback in the above. + * vms-alpha.c (alpha_vms_link_add_archive_symbols): Handle substitute + BFD if one is set by add_archive_element callback. + * xcofflink.c (xcoff_link_check_dynamic_ar_symbols): Take new "subsbfd" + reference parameter and pass it when invoking add_archive_element + callback. + (xcoff_link_check_ar_symbols): Likewise. + (xcoff_link_check_archive_element): Handle bfd substitution if it was + set by callback in the above. + +2010-10-11 Alan Modra + + * elf32-frv.c (elf32_frv_relocate_section): Set "name" for global syms. + (elf32_frvfdpic_finish_dynamic_sections): Don't crash on + __ROFIXUP_END__ defined in shared lib. + +2010-10-11 Thomas Schwinge + + * elf32-arm.c (elf32_arm_final_link_relocate) + (elf32_arm_relocate_section): Handle relocations against STN_UNDEF. + +2010-10-11 Dave Korn + + * elflink.c (_bfd_elf_link_output_relocs): Delete unused variable + "output_rel_hdr". + +2010-10-09 John Tytgat + + * reloc.c (BFD_RELOC_ARM_HVC): Add. + * libbfd.h: Regenerate. + +2010-10-08 Kai Tietz + + * pei-x86_64.c (find_next_xdata_or_end): Removed. + (pex64_dump_xdata): Remove arguments stop, onaline, + and pdata. New argument endx. Print term "none" + instead of misleading "CFA". + (sort_xdata_arr): New function. + (pex64_bfd_print_pdata): Use binary search/sort for unwind-RVAs + instead of searching quadratic. + +2010-10-08 Pierre Muller + Alan Modra + + Fix build with -DDEBUG=7 + * elf.c (_bfd_elf_symbol_from_bfd_symbol): Remove call + to deleted function elf_symbol_flags. Add typecast to avoid warning. + * elf32-rx.c (dump_symbol) : Rename to.. + (rx_dump_symbol): ..this to avoid link errors. + * elflink.c (elf_link_input_bfd): Add typecast to avoid warnings. + (bfd_elf_perform_complex_relocation): Likewise. + * elf32-xtensa.c (print_action_list): Likewise. + +2010-10-06 Nathan Sidwell + + * elf32-arm.c (elf32_arm_stub_long_branch_any_arm_pic, + elf32_arm_stub_long_branch_any_arm_pic): Use a consistent name for + ip/r12. + (arm_type_of_stub): Remove superfluous braces. + +2010-10-04 Bernd Schmidt + + * elf-bfd.h (struct bfd_elf_section_reloc_data): New structure. + (struct bfd_elf_section_data): New members REL and RELA; delete + members REL_HDR, REL_HDR2, REL_COUNT, REL_COUNT2, REL_IDX, + REL_IDX2, REL_HASHES. + (_bfd_elf_init_reloc_shdr): Adjust declaration. + (_bfd_elf_single_rel_hdr): Declare. + (RELOC_AGAINST_DISCARDED_SECTION): Use it. + * elf.c (bfd_section_from_shdr): Adjusted to match changes in + data structures. + (_bfd_elf_init_reloc_shdr): New arg RELDATA. Remove arg REL_HDR. + All callers changed. Allocate memory for the Elf_Internal_Shdr + structure. + (_bfd_elf_single_rel_hdr): New function. + (struct fake_section_arg): New structure. + (elf_fake_section): Expect to see a pointer to it in the third + argument. If doing a relocatable link, allocate both REL and RELA + sections as needed. + (assign_section_numbers): Adjusted to match changes in + data structures. + (_bfd_elf_compute_section_file_positions): Call elf_fake_sections + with a struct fake_section_args argument. + * elfcode.h (elf_write_relocs): Adjusted to match changes in + data structures. + (elf_slurp_reloc_table): Likewise. + * elflink.c (_bfd_elf_link_read_relocs): Likewise. + (_bfd_elf_link_size_reloc_section): Remove arg REL_HDR, replace with + RELDATA. Remove argument O. All callers changed. Remove code to + discover the right rel_hdr and count. + (_bfd_elf_link_output_relocs): Adjusted to match changes in + data structures. + (elf_link_adjust_relocs): Remove args REL_HDR, COUNT and REL_HASH; + replace with RELDATA. All callers changed. + (elf_link_input_bfd): Correctly generate rel_hash data when both + REL and RELA sections are present. + (elf_reloc_link_order): Adjusted to match changes in + data structures. + (bfd_elf_final_link): Simplify code to count relocs. Free the + hashes array for both REL and RELA. + (get_dynamic_reloc_section_name): Use _bfd_elf_single_reloc_hdr + * elf32-m32r.c (m32r_elf_fake_sections, elf_backend_fake_sections): + Delete. + * elf32-tic6x.c (elf32_tic6x_fake_sections, elf_backend_fake_sections): + Delete. + (elf32_tic6x_rel_relocation_p): Adjusted to match changes in + data structures. + * elf32-microblaze.c (microblaze_elf_check_relocs): Use + _bfd_elf_single_rel_hdr. + * elf32-ppc.c (ppc_elf_relax_section): Likewise. + * elf32-spu.c (spu_elf_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-hppa.c (get_reloc_section): Likewise. + * elf64-mips.c (mips_elf64_slurp_reloc_table): Adjusted to match + changes in data structures. + (mips_elf64_write_relocs): Use _bfd_elf_single_rel_hdr. + * elf64-ppc.c (ppc64_elf_edit_opd): Likewise. + (ppc64_elf_edit_toc): Likewise. + (get_relocs): Adjusted to match changes in data structures. + Allocate an Elf_Internal_Shdr structure if necessary. + (ppc64_elf_finish_dynamic_sections): Use _bfd_elf_single_rel_hdr. + * elf64-sparc.c (elf64_sparc_slurp_reloc_table): Adjusted to match + changes in data structures. + * elfxx-ia64.c (get_reloc_section): Use _bfd_elf_single_rel_hdr. + * elfxx-mips.c (MIPS_RELOC_RELA_P): Remove macro. + (mips_elf_rel_relocation_p): Adjusted to match changes in data + structures. + (_bfd_mips_elf_relocate_section): Use mips_elf_rel_relocation_p rather + than MIPS_RELOC_RELOCA_P. + * elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Use + _bfd_elf_single_rel_hdr. + (_bfd_sparc_elf_relocate_section): Likewise. + +2010-10-01 Thomas Schwinge + + * elf32-arm.c (elf32_arm_size_stubs): Don't choke on local symbols in + SHN_UNDEF, SHN_ABS, SHN_COMMON. + +2010-09-30 H.J. Lu + + PR ld/11812 + * elf32-i386.c (elf_i386_size_dynamic_sections): Don't + allocate .got.plt section if there are no GOT nor PLT + entries and there is no refeence to _GLOBAL_OFFSET_TABLE_. + * elf64-x86-64.c (elf64_x86_64_size_dynamic_sections): Li.kewise. + + * elflink.c (_bfd_elf_define_linkage_sym): Clear non_elf. + +2010-09-27 Ralf Wildenhues + + * configure: Regenerate. + +2010-09-24 Thomas Schwinge + + * elf32-arm.c, elf32-cris.c, elf32-hppa.c, elf32-i370.c, elf32-m32r.c, + elf32-m68k.c, elf32-microblaze.c, elf32-ppc.c, elf32-score.c, + elf32-score7.c, elf32-sh.c, elf32-vax.c, elf32-xtensa.c, elf64-alpha.c, + elf64-hppa.c, elf64-mips.c, elf64-ppc.c, elf64-sparc.c, elfcode.h, + elflink.c, elfxx-ia64.c, elfxx-mips.c: Use STN_UNDEF when referring to + the zero symbol index. + + * elflink.c (bfd_elf_reloc_symbol_deleted_p): Compare the symbol index + to STN_UNDEF, not SHN_UNDEF. + +2010-09-23 Bernd Schmidt + + * elf32-tic6x.c (elf32_tic6x_fake_sections): New function. + (elf_backend_fake_sections): Define. + +2010-09-23 Matthew Gretton-Dann + + * bfd-in2.h (BFD_RELOC_ARM_HVC): New enum value. + +2010-09-23 Alan Modra + + * cpu-d10v.c: Make bits_per_address 18 for all arch_info entries. + +2010-09-23 Alan Modra + + * elf.c (_bfd_elf_init_private_section_data): Allow for SEC_RELOC + difference between input and output section. + +2010-09-22 Kai Tietz + + * coffcode.h (sec_to_styp_flags): Adjust debug + sections to be conform to pe-coff specification + and avoid marking them as excluded. + (styp_to_sec_flags): Doing reverse mapping. + + * peXXigen.c (_bfd_XXi_final_link_postscript): Add handling for + setting IAT directory entry. + +2010-09-20 Richard Henderson + + * elf64-alpha.c (elf64_alpha_howto_table): Use bfd_elf_generic_reloc. + +2010-09-19 Richard Sandiford + + * elfxx-mips.c (mips_elf_link_hash_entry): Add got_only_for_calls. + (mips_elf_link_hash_newfunc): Initialize it. + (mips_elf_record_global_got_symbol): Add a for_call parameter. + (mips_elf_count_got_symbols): Check SYMBOL_CALLS_LOCAL rather + than SYMBOL_REFERENCES_LOCAL if the GOT entry is only used for calls. + Try to remove .got entries in favour of .got.plt entries on VxWorks. + (_bfd_mips_elf_check_relocs): Do not try to avoid allocating + a global GOT entry for VxWorks calls. Update uses of + mips_elf_record_global_got_symbol. + (allocate_dynrelocs): Set got_only_for_calls to false if the GOT + entry is used for dynamic relocations. + +2010-09-19 Richard Sandiford + + * elfxx-mips.c (mips_got_entry): Adjust commentary. + (mips_elf_create_local_got_entry): If given a symbol, check that it + has been assigned to the local part of the GOT. + (mips_elf_count_got_symbols): Take the bfd_link_info as argument + instead of the master GOT. Put all locally-binding symbols in + the local area. + (mips_elf_make_got_per_bfd): Use global_got_area to decide whether + a symbol lives in the local or global area. + (mips_elf_local_relocation_p): Remove check_forced argument and + retain only the !check_forced behavior. + (mips_elf_calculate_relocation): Adjust call accordingly. + Use global_got_area to decide whether an output relocation + should be local or global. Explicitly decay R_MIPS_GOT_PAGE + into R_MIPS_GOT_DISP where appropriate. Fix selection of + local vs. global semantics for R_MIPS*_26. Remove redundant + reevaluation of what is stored in was_local_p. + (mips_elf_create_dynamic_relocation): Use global_got_area to decide + whether the relocation should be against a global or local symbol. + (mips_elf_lay_out_got): Update the GOT traversal after the above + change to mips_elf_count_got_symbols. + (mips_elf_adjust_addend): Adjust call to mips_elf_local_relocation_p. + (_bfd_mips_elf_relocate_section): Likewise. + (_bfd_mips_elf_finish_dynamic_symbol): Use global_got_area to decide + whether the symbol has a global got entry. + (_bfd_mips_vxworks_finish_dynamic_symbol): Likewise. + +2010-09-19 Richard Sandiford + + * elfxx-mips.c (allocate_dynrelocs): Don't add relocation symbols + to the global GOT on VxWorks. + +2010-09-19 Richard Sandiford + + * elfxx-mips.c (_bfd_mips_elf_check_relocs): On VxWorks, + exclude __GOTT_BASE__ and __GOTT_INDEX__ from the warning + about HI/LO relocations in shared objects. + +2010-09-16 Alan Modra + + * elf32-spu.c (spu_elf_size_sections): Omit fixups for non-alloc + sections. + (spu_elf_create_sections): Mark .fixup with SEC_LINKER_CREATED and + set dynobj. + (spu_elf_finish_dynamic_sections): New function. + (elf_backend_finish_dynamic_sections): Define. + +2010-09-16 Alan Modra + + * elf.c (bfd_elf_get_default_section_type): Don't test SEC_NEVER_LOAD. + * elflink.c (elf_link_input_bfd): Likewise. + +2010-09-15 Kai Tietz + + * pei-x86_64.c (pex64_get_unwind_info): Reorgnized. + (pex64_get_scope_entry): Removed. + (find_next_xdata_or_end): New helper. + (pex64_dump_xdata): Reworked. + (pex64_bfd_print_pdata): Add checking for + valid pdata sorting and values. Reworked + output. + +2010-09-15 H.J. Lu + + PR binutils/12004 + * plugin.c (bfd_plugin_object_p): Handle NULL iostream. + +2010-09-14 Kai Tietz + + * pe-x86_64.c (COFF_SECTION_ALIGNMENT_ENTRIES): Make + .rdata, .data, and .text partial matched section names. + * pei-x86_64.c: Likewise. + + * peXXigen.c (sort_x64_pdata): New helper. + (_bfd_XXi_final_link_postscript): Do pdata sorting. + +2010-09-09 H.J. Lu + + PR ld/11998 + * elf.c (assign_file_positions_for_load_sections): Don't warn + zero LMA adjustment. + +2010-09-09 Bernd Schmidt + + * elflink.c (bfd_elf_final_link): Correct calculation of + max_external_reloc_size. + +2010-09-07 Alan Modra + Marcus Brinkmann + + * peXXigen.c: Whitespace. + (pe_print_idata): Correct section limit calculations. Tidy array + indexing. + (_bfd_XX_print_ce_compressed_pdata): Don't leak memory. + +2010-09-02 Richard Henderson + + * config.bfd (x86_64-*-mingw*): Select 32-bit pei vectors too. + +2010-09-01 Pedro Alves + + * netbsd-core.c (netbsd_core_core_file_pid): Renamed to ... + (netbsd_core_file_pid): ... this. + +2010-09-01 Tristan Gingold + + * coffcode.h (coff_slurp_line_table): Add a cast. + (coff_slurp_reloc_table): Ditto. + +2010-08-30 Gunther Nikl + + * cisco-core.c (cisco_core_file_pid): Define. + +2010-08-30 Alan Modra + + PR binutils/11953 + * elf.c (copy_elf_program_header): Calculate map->header_size + from lowest_section, not first_section. Validate program + header p_paddr against section lma. Find lowest_section in + second loop over headers. + +2010-08-28 Alan Modra + + * elflink.c (_bfd_elf_dynamic_symbol_p): Rename param. Make + common syms local. + (_bfd_elf_symbol_refs_local_p): Expand comment. + (elf_link_output_extsym): Fix style nit. + +2010-08-26 Nathan Sidwell + + * elf32-arm.c (elf32_arm_final_link): Process stub sections + exactly once. + +2010-08-25 H.J. Lu + + PR ld/11939 + * elflink.c (elf_link_add_object_symbols): Don't set + unique_global for non-ELF hash link table. + +2010-08-25 H.J. Lu + + PR ld/11944 + * elf-bfd.h (elf_backend_data): Add target_id. + (bfd_elf_make_generic_object): Renamed to ... + (bfd_elf_make_object): This. + + * elf.c (bfd_elf_make_generic_object): Removed. + (bfd_elf_make_object): New. + (bfd_elf_mkcorefile): Really treat it as an object file. + + * elf-m10300.c (ELF_TARGET_ID): New. + * elf32-arm.c (ELF_TARGET_ID): Likewise. + * elf32-bfin.c (ELF_TARGET_ID): Likewise. + * elf32-cris.c (ELF_TARGET_ID): Likewise. + * elf32-frv.c (ELF_TARGET_ID): Likewise. + * elf32-i386.c (ELF_TARGET_ID): Likewise. + * elf32-lm32.c (ELF_TARGET_ID): Likewise. + * elf32-m32r.c (ELF_TARGET_ID): Likewise. + * elf32-m68hc11.c (ELF_TARGET_ID): Likewise. + * elf32-m68hc12.c (ELF_TARGET_ID): Likewise. + * elf32-m68k.c (ELF_TARGET_ID): Likewise. + * elf32-microblaze.c (ELF_TARGET_ID): Likewise. + * elf32-ppc.c (ELF_TARGET_ID): Likewise. + * elf32-s390.c (ELF_TARGET_ID): Likewise. + * elf32-sh.c (ELF_TARGET_ID): Likewise. + * elf32-sparc.c (ELF_TARGET_ID): Likewise. + * elf32-spu.c (ELF_TARGET_ID): Likewise. + * elf32-tic6x.c (ELF_TARGET_ID): Likewise. + * elf32-xtensa.c (ELF_TARGET_ID): Likewise. + * elf64-alpha.c (ELF_TARGET_ID): Likewise. + * elf64-hppa.c (ELF_TARGET_ID): Likewise. + * elf64-ppc.c (ELF_TARGET_ID): Likewise. + * elf64-s390.c (ELF_TARGET_ID): Likewise. + * elf64-x86-64.c (ELF_TARGET_ID): Likewise. + * elfxx-ia64.c (ELF_TARGET_ID): Likewise. + + * elf32-hppa.c (elf32_hppa_mkobject): Removed. + (bfd_elf32_mkobject): Likewise. + (ELF_TARGET_ID): New. + + * elf32-mips.c (ELF_TARGET_ID): New. + (bfd_elf32_mkobject): Removed. + + * elf64-mips.c (ELF_TARGET_ID): New. + (bfd_elf64_mkobject): Removed. + + * elfn32-mips.c (ELF_TARGET_ID): New. + (bfd_elf32_mkobject): Removed. + + * elfxx-mips.c (_bfd_mips_elf_mkobject): Removed. + * elfxx-mips.h (_bfd_mips_elf_mkobject): Likewise. + + * elfxx-target.h (bfd_elfNN_mkobject): Default to + bfd_elf_make_object. + (ELF_TARGET_ID): New. Default to GENERIC_ELF_DATA. + (elfNN_bed): Initialize target_id. + +2010-08-25 Julian Brown + + * elf32-arm.c (arm_stub_required_alignment): New. + (arm_build_one_stub): Use above to partition stubs. + (make_branch_to_a8_stub): Use arm_stub_a8_veneer_lwm not + arm_stub_a8_veneer_b_cond. + +2010-08-25 Alan Modra + + * aout-arm.c (MY(bfd_reloc_type_lookup)): Use bfd_arch_bits_per_address. + * aout-ns32k.c (MY(bfd_reloc_type_lookup)): Likewise. + * aoutx.h (NAME(aout,reloc_type_lookup)): Likewise. + * coff-arm.c (coff_arm_reloc_type_lookup): Likewise. + * elf-hppa.h (elf_hppa_reloc_final_type): Likewise. + * reloc.c (bfd_default_reloc_type_lookup): Likewise. + * riscix.c (riscix_reloc_type_lookup): Likewise. + +2010-08-25 Alan Modra + + * elf.c (_bfd_elf_map_sections_to_segments): Don't load program + headers if any loaded section wraps the address space. Simplify + ~(m-1) to -m. Use lma rather than vma when determining whether + note sections are adjacent. + +2010-08-22 H.J. Lu + + PR ld/11933 + * elflink.c (elf_link_add_object_symbols): Don't check relocation + if input ELF object ID doesn't match output. + +2010-08-21 Ralf Wildenhues + + * configure: Regenerate. + +2010-08-20 H.J. Lu + + * merge.c (sec_merge_emit): Revert the last checkin. + +2010-08-20 Maciej W. Rozycki + + * elf32-sh.c (sh_elf_relocate_section): Handle non-ELF output + BFD. + +2010-08-20 Maciej W. Rozycki + + * elf32-m68k.c (bfd_elf_m68k_set_target_options): Don't set GOT + options unless an m68k hash table has been found. + +2010-08-20 Nick Clifton + + * merge.c (sec_merge_emit): Do not zero pad sections that do not + have an alignment. + +2010-08-18 Pedro Alves + + PR corefile/8210 + + * bfd-in2.h: Regenerate. + * corefile.c (bfd_core_file_pid): New. + + * targets.c (BFD_JUMP_TABLE_CORE): Add NAME##_core_file_pid. + (struct bfd_target) <_core_file_pid>: New. + + * libbfd-in.h (_bfd_nocore_core_file_pid): Declare. + * libbfd.c (_bfd_nocore_core_file_pid): New. + + * elf-bfd.h (bfd_elf32_core_file_pid, bfd_elf64_core_file_pid): + Declare. + * elfcode.h (elf_core_file_pid): New define. + * elfcore.h (elf_core_file_pid): New function. + + * elf.c (elfcore_make_pid): Rewrite. + (elfcore_grok_prstatus): Only set core_pid if not set yet. + (elfcore_grok_prstatus) [!HAVE_PRSTATUS_T_PR_WHO]: Fallback to + getting the lwpid from prstat.pr_pid. + + * elf64-x86-64.c (elf64_x86_64_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + (elf64_x86_64_grok_psinfo): Extract the the main process's PID, + and store it in elf_tdata's core_pid field. + * elf32-i386.c (elf_i386_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + (elf_i386_grok_psinfo): Extract the the main process's PID, and + store it in elf_tdata's core_pid field. + + * elf32-am33lin.c (elf32_am33lin_grok_prstatus): Write the LWPID + to elf_tdata's core_lwpid instead of to core_pid. + * elf32-arm.c (elf32_arm_nabi_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf32-cris.c (cris_elf_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf32-frv.c (elf32_frv_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf32-hppa.c (elf32_hppa_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf32-mips.c (elf32_mips_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf32-ppc.c (ppc_elf_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf32-s390.c (elf_s390_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf32-score.c (s3_bfd_score_elf_grok_prstatus): Write the LWPID + to elf_tdata's core_lwpid instead of to core_pid. + * elf32-score7.c (s7_bfd_score_elf_grok_prstatus): Write the LWPID + to elf_tdata's core_lwpid instead of to core_pid. + * elf32-sh.c (elf32_shlin_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf32-xtensa.c (elf_xtensa_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf64-hppa.c (elf64_hppa_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf64-mips.c (elf64_mips_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elf64-ppc.c (ppc64_elf_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + * elfn32-mips.c (elf32_mips_grok_prstatus): Write the LWPID to + elf_tdata's core_lwpid instead of to core_pid. + + * plugin.c (bfd_plugin_core_file_pid): New function. + * aout-target.h (MY_core_file_pid): Define. + * aout-tic30.c (MY_core_file_pid, MY_core_file_p): New defines. + * coff-rs6000.c (coff_core_file_pid): New define. + (rs6000coff_vec, pmac_xcoff_vec): Use BFD_JUMP_TABLE_CORE. + * coff64-rs6000.c (coff_core_file_pid): New define. + (rs6000coff64_vec): Use BFD_JUMP_TABLE_CORE. + (xcoff64_core_file_pid): New define. + (aix5coff64_vec): Use BFD_JUMP_TABLE_CORE. + * mach-o-target.c (bfd_mach_o_core_file_pid): New define. + * aix386-core.c (aix386_core_file_pid): New define. + * hppabsd-core.c (hppabsd_core_core_file_pid): New define. + * hpux-core.c (hpux_core_core_file_pid): New define. + * irix-core.c (irix_core_core_file_pid): New define. + * lynx-core.c (lynx_core_file_pid): New define. + * osf-core.c (osf_core_core_file_pid): New define. + * ptrace-core.c (ptrace_unix_core_file_pid): New define. + * sco5-core.c (sco5_core_file_pid): New define. + * xcoff-target.h (coff_core_file_pid): New define. + * netbsd-core.c (netbsd_core_core_file_pid): New define. + +2010-08-13 H.J. Lu + + PR ld/11913 + * elf32-i386.c (elf_i386_finish_dynamic_sections): Check if + .got.plt section is discarded. + * elf64-x86-64.c (elf64_x86_64_finish_dynamic_sections): Likewise. + +2010-08-13 Nathan Sidwell + + * elf32-m69k.c (elf32_m68k_print_private_bfd_data): Detect EMAC_B + variant. + +2010-08-12 H.J. Lu + + PR binutils/11909 + * Makefile.am (coff-tic4x.lo): New. Disable -Werror. + (coff-tic54x.lo): Likewise. + * Makefile.in: Regenerated. + +2010-08-12 Todd Veldhuizen + + PR ld/11843 + * elflink.c (compute_bucket_count): Avoid futile long searches for + the best bucket size. + +2010-08-09 Richard Henderson + + PR ld/11891 + * elf64-alpha.c (elf64_alpha_relax_tls_get_addr): Disallow relaxing + to tlshi/lo until pos0 and pos1 are adjacent. Use the destination + register from the tldgd insn. + +2010-08-09 Catherine Moore + + * elfxx-mips.c (mips_elf_perform_relocation): Improve + interlinking error message. + +2010-08-06 Alan Modra + + * elf64-ppc.c (ha_reloc_match): Allow matches to other than r2. + (ppc64_elf_relocate_section): Nop out high part insn of large toc + code sequence when the high part of offset is zero. + +2010-08-04 Tristan Gingold + + * vms-alpha.c (alpha_vms_build_fixups): Write the EICP. + (alpha_vms_bfd_final_link): Explicitly forbid relocatable links. + Clear the SEC_RELOC flag. + +2010-08-04 Tristan Gingold + + * vms-alpha.c (alpha_vms_create_eisd_for_section): Make writable + sections with relocs. + (alpha_vms_add_fixup_lp): Set SEC_RELOC flag. + (alpha_vms_add_fixup_ca): Ditto. + (alpha_vms_add_fixup_qr): Ditto. + Add comments. + +2010-08-04 Tristan Gingold + + * vms-alpha.c (alpha_vms_create_eisd_for_section): Do not make + CODE sections writable. + +2010-08-04 Tristan Gingold + + * vms-alpha.c (alpha_vms_add_lw_fixup): Renamed to ... + (alpha_vms_add_fixup_lr): ... this for consistency. + (alpha_vms_add_qw_fixup): Removed. + Fix some comments. + (vms_get_symbol_info): Adjust type for unknown sections. + +2010-08-04 Tristan Gingold + + * vms-alpha.c (_bfd_vms_slurp_egsd): Use the canonical absolute + section for any absolute section. Remove some debugging code. + +2010-08-03 DJ Delorie + + * elf32-m32c.c (ELF_MAXPAGESIZE): Change page size to 256 bytes. + +2010-08-03 Tristan Gingold + + * vms-misc.c (vms_convert_to_var): Make it static. + (_bfd_vms_convert_to_var_unix_filename): Make it public. + +2010-08-03 Tristan Gingold + + * makefile.vms (OBJS): Update list. + +2010-08-03 Tristan Gingold + + * vms-alpha.c (_bfd_vms_slurp_egsd): Do not set SEC_HAS_CONTENTS + nor SEC_RELOC for empty sections. + +2010-08-03 Tristan Gingold + + * vms-alpha.c (evax_section_flags): Fix flags for absolute + section. Remove useless parenthesis. + +2010-08-03 Tristan Gingold + + * vms-lib.c (vms_lib_bread_raw): Change type of BUF argument. + (vms_lib_bread, vms_lib_bopen): Adjust. + +2010-08-02 Alan Modra + + PR 11866 + * elf.c (assign_file_positions_for_load_sections): Use p_vaddr to + calculate off_adjust rather than first section vma. + +2010-07-30 H.J. Lu + + * elflink.c (compute_bucket_count): Add ATTRIBUTE_UNUSED to info. + +2010-07-30 Anthony Green + + * config.bfd (targ_cpu): Add moxie-*-rtems support. + +2010-07-29 Alan Modra + + * elf64-ppc.c (ppc64_elf_edit_toc): Always adjust local syms in + .toc section, even when none are used in relocs. + +2010-07-27 Maciej W. Rozycki + + * elfxx-mips.h: Include "elf/mips.h". + (gprel16_reloc_p): New static inline function. + * elfxx-mips.c (_bfd_mips_elf_check_relocs) + [R_MIPS16_GOT16, R_MIPS_GOT16, R_MIPS_GOT_HI16, R_MIPS_GOT_LO16]: + Use got16_reloc_p. + (_bfd_mips_elf_relocate_section)[bfd_reloc_overflow]: Use + gprel16_reloc_p. + * elf32-mips.c (mips_info_to_howto_rel): Likewise. + * elfn32-mips.c (mips_info_to_howto_rel): Likewise. + +2010-07-27 Maciej W. Rozycki + + * elf64-mips.c (mips_elf64_howto_table_rela) + [R_MIPS_TLS_DTPMOD64]: Clear partial_inplace. + [R_MIPS_TLS_DTPREL64, R_MIPS_TLS_GD, R_MIPS_TLS_LDM]: Likewise. + [R_MIPS_TLS_DTPREL_HI16, R_MIPS_TLS_DTPREL_LO16]: Likewise. + [R_MIPS_TLS_GOTTPREL, R_MIPS_TLS_TPREL64]: Likewise. + [R_MIPS_TLS_TPREL_HI16, R_MIPS_TLS_TPREL_LO16]: Likewise. + * elfn32-mips.c (elf_mips_howto_table_rela) + [R_MIPS_TLS_DTPMOD32]: Likewise. + [R_MIPS_TLS_DTPREL32, R_MIPS_TLS_GD, R_MIPS_TLS_LDM]: Likewise. + [R_MIPS_TLS_DTPREL_HI16, R_MIPS_TLS_DTPREL_LO16]: Likewise. + [R_MIPS_TLS_GOTTPREL, R_MIPS_TLS_TPREL32]: Likewise. + [R_MIPS_TLS_TPREL_HI16, R_MIPS_TLS_TPREL_LO16]: Likewise. + +2010-07-23 Naveen.H.S + Ina Pandit + + * archures.c (DESCRIPTION): Define bfd_mach_v850e2 and + bfd_mach_v850e2v3. + * reloc.c (bfd_architecture): Define bfd_mach_v850e2 and + bfd_mach_v850e2v3. + (BFD_RELOC_V850_16_PCREL, BFD_RELOC_V850_17_PCREL, + BFD_RELOC_V850_22_PCREL, BFD_RELOC_V850_23, + BFD_RELOC_V850_32_PCREL, BFD_RELOC_V850_32_ABS, + BFD_RELOC_V850_16_SPLIT_OFFSET, BFD_RELOC_V850_16_S1, + BFD_RELOC_V850_LO16_SPLIT_OFFSET, BFD_RELOC_V850_SDA_15_16_OFFSET, + BFD_RELOC_V850_ZDA_16_16_OFFSET, BFD_RELOC_V850_CALLT_15_16_OFFSET, + BFD_RELOC_V850_32_GOTPCREL, BFD_RELOC_V850_16_GOT, + BFD_RELOC_V850_32_GOT, BFD_RELOC_V850_22_PLT_PCREL, + BFD_RELOC_V850_32_PLT_PCREL, BFD_RELOC_V850_COPY, + BFD_RELOC_V850_GLOB_DAT, BFD_RELOC_V850_JMP_SLOT, + BFD_RELOC_V850_RELATIVE, BFD_RELOC_V850_16_GOTOFF, + BFD_RELOC_V850_32_GOTOFF, BFD_RELOC_V850_CODE, + BFD_RELOC_V850_DATA): New relocations for V850 target. + * config.bfd: Match all v850 targets. + * cpu-v850.c (arch_info_struct): Define V850e2 and V850e2v3. + * elf32-v850.c (v850_elf_check_relocs): Check the newly added + relocations. + (v850_elf_perform_relocation ): Update the newly added + relocations. + (v850_elf_howto_t): Update the specifications of added + relocations. + (v850_elf_reloc_map): Update the relocation mappings. + (v850_elf_final_link_relocate): Maps added relocation into the + appropriate howto structure. + (v850_elf_object_p): Add support for V850E2 and V850E2V3. + (v850_elf_final_write_processing): Likewise. + (v850_elf_merge_private_bfd_data): Likewise. + (v850_elf_print_private_bfd_data): Likewise. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + +2010-07-23 Alan Modra + + * archive.c (_bfd_archive_bsd44_construct_extended_name_table): + Correct format specifier. + +2010-07-22 Alan Modra + + * ecoff.c: Don't include aout/ranlib.h. + (_bfd_ecoff_slurp_armap): Use correct struct for ardata->symdefs. + (_bfd_ecoff_write_armap): Output ar_date and ar_size using + _bfd_ar_spacepad. + +2010-07-22 Alan Modra + + * aoutx.h (some_aout_object_p): Don't set EXEC_P for files with + relocs. + +2010-07-20 Alan Modra + + * elf.c (assign_file_positions_for_load_sections): Check that + zero size sections are allocated in segments too. + (assign_file_positions_for_non_load_sections): Warn if zero + size alloc sections are found here. + (copy_elf_program_header): Don't drop zero size sections from + segment map. + (copy_private_bfd_data): Check for changes in zero size sections. + +2010-07-17 Alan Modra + + * elf.c (_bfd_elf_map_sections_to_segments): Force new segment + for sections with overlapping LMAs. + (assign_file_positions_for_load_sections): Catch overlap for + sections that wrap around the address space. Replace a + warning that duplicates ld's --check-sections error with a + warning that lma has been adjusted for overlapping sections. + +2010-07-14 Cary Coutant + + PR ld/11817 + * dwarf2.c (read_section): Revert patch for compressed debug sections. + (find_line): Likewise. + (read_and_uncompress_section): Remove. + +2010-07-13 H.J. Lu + + PR ld/11812 + * elf32-i386.c (elf_i386_size_dynamic_sections): Don't + allocate .got.plt section if there are no GOT nor PLT + entries. + * elf64-x86-64.c (elf64_x86_64_size_dynamic_sections): Likewise. + +2010-07-13 H.J. Lu + + PR ld/11791 + * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Support + garbage collection against STT_GNU_IFUNC symbols. + + * elf32-i386.c (elf_i386_get_local_sym_hash): Don't set + elf.plt.offset/elf.got.offset to -1. + (elf_i386_tls_transition): Skip TLS transition for functions. + (elf_i386_gc_sweep_hook): Support STT_GNU_IFUNC symbols. + + * elf64-x86-64.c (elf64_x86_64_get_local_sym_hash): Don't set + elf.plt.offset/elf.got.offset to -1. + (elf64_x86_64_tls_transition): Skip TLS transition for functions. + (elf64_x86_64_gc_sweep_hook): Support STT_GNU_IFUNC symbols. + +2010-07-12 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Re-indent. + (elf_i386_relocate_section): Likewise. + +2010-07-06 H.J. Lu + + * dwarf2.c (add_line_info): Initialize prev_line. + +2010-07-06 Alan Modra + + * elf32-ppc.c (ppc_elf_relax_section): Insert branch around + trampolines only for .init and .fini sections. + +2010-07-05 Alan Modra + + * elf32-ppc.c: Formatting. + (ppc_elf_finish_dynamic_sections): Don't make plt_entry var static. + +2010-07-03 Cary Coutant + + * compress.c (bfd_uncompress_section_contents): Add ATTRIBUTE_UNUSED. + * dwarf2.c (read_and_uncompress_section): New function. + (read_section): Call it. + (find_line): Likewise. + +2010-07-01 Alan Modra + + * elf64-ppc.c (ppc64_elf_edit_toc): Use SYMBOL_CALLS_LOCAL rather + than SYMBOL_REFERENCES_LOCAL. + (ppc64_elf_relocate_section): Likewise. + +2010-07-01 Alan Modra + + * elf64-ppc.c (ppc64_elf_edit_toc): Keep toc entries for ifuncs. + +2010-06-29 Alan Modra + + * cpu-maxq.c: Delete file. + * coff-maxq.c: Delete file. + * Makefile.am: Remove references to maxq. + * archures.c: Likewise. + * coffcode.h: Likewise. + * configure.in: Likewise. + * targets.c: Likewise. + * config.bfd: Move maxq from obsolete to removed. + * Makefile.in: Regenerate. + * bfd-in2.h: Regenerate. + * configure: Regenerate. + * libbfd.h: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + +2010-06-28 Alan Modra + + * compress.c (bfd_uncompress_section_contents): Use ATTRIBUTE_UNUSED + to silence gcc warning. + +2010-06-27 Alan Modra + + * elf64-ppc.c (get_tls_mask): Don't segfault on NULL elf_section_data. + (group_sections): Likewise. + +2010-06-27 Alan Modra + + * bout.c (aligncode): Delete set but unused variables. + * coff-mcore.c (coff_mcore_relocate_section): Likewise. + * coff-ppc.c (ppc_record_toc_entry): Likewise. + (coff_ppc_relocate_section): Likewise. + * coff-rs6000.c (xcoff_complain_overflow_bitfield_func): Likewise. + * elf-m10200.c (mn10200_elf_relax_delete_bytes): Likewise. + * elf-m10300.c (mn10300_elf_final_link_relocate): Likewise. + (mn10300_elf_relax_section): Likewise. + * elf32-arm.c (arm_build_one_stub, arm_size_one_stub): Likewise. + (record_vfp11_erratum_veneer): Likewise. + (bfd_elf32_arm_vfp11_erratum_scan): Likewise. + (elf32_arm_final_link_relocate): Likewise. + (elf32_arm_check_relocs, arm_map_one_stub): Likewise. + * elf32-avr.c (elf32_avr_relax_delete_bytes): Likewise. + (elf32_avr_relax_section): Likewise. + (avr_mark_stub_not_to_be_necessary): Likewise. + * elf32-bfin.c (_bfin_create_got_section): Likewise. + * elf32-cr16.c (cr16_elf_final_link_relocate): Likewise. + (elf32_cr16_relax_delete_bytes): Likewise. + * elf32-cr16c.c (cr16c_elf_final_link_relocate): Likewise. + * elf32-cris.c (elf_cris_finish_dynamic_symbol): Likewise. + * elf32-crx.c (elf32_crx_relax_delete_bytes): Likewise. + * elf32-h8300.c (elf32_h8_relax_section): Likewise. + (elf32_h8_relax_delete_bytes): Likewise. + * elf32-hppa.c (elf32_hppa_check_relocs): Likewise. + * elf32-i370.c (i370_elf_check_relocs): Likewise. + (elf_relocate_section): Likewise. + * elf32-ip2k.c (adjust_all_relocations): Likewise. + (ip2k_elf_relax_section): Likewise. + * elf32-lm32.c (lm32_elf_relocate_section): Likewise. + (lm32_elf_check_relocs): Likewise. + (lm32_elf_finish_dynamic_sections): Likewise. + (lm32_elf_finish_dynamic_symbol): Likewise. + * elf32-m32c.c (m32c_offset_for_reloc): Likewise. + (m32c_elf_relax_delete_bytes): Likewise. + * elf32-m32r.c (m32r_elf_finish_dynamic_symbol): Likewise. + (m32r_elf_finish_dynamic_sections): Likewise. + (m32r_elf_check_relocs, m32r_elf_fake_sections): Likewise. + * elf32-m68hc11.c (m68hc11_elf_relax_section): Likewise. + * elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_gc_sweep_hook): Likewise. + * elf32-microblaze.c (microblaze_elf_relocate_section): Likewise. + (microblaze_elf_check_relocs): Likewise. + (microblaze_elf_finish_dynamic_symbol): Likewise. + * elf32-msp430.c (msp430_elf_relax_delete_bytes): Likewise. + * elf32-ppc.c (ppc_elf_tls_optimize): Likewise. + * elf32-rx.c (rx_elf_relocate_section): Likewise. + (elf32_rx_relax_delete_bytes, rx_offset_for_reloc): Likewise. + (elf32_rx_relax_section): Likewise. + * elf32-score.c (score_elf_got_offset_from_index): Likewise. + (score_elf_final_link_relocate): Likewise. + (s3_bfd_score_elf_relocate_section): Likewise. + * elf32-score7.c (score_elf_got_offset_from_index): Likewise. + (s7_bfd_score_elf_relocate_section): Likewise. + * elf32-sh.c (sh_elf_check_relocs): Likewise. + * elf32-spu.c (spu_elf_relocate_section): Likewise. + * elf32-v850.c (v850_elf_check_relocs): Likewise. + (find_remembered_hi16s_reloc): Likewise. + * elf32-vax.c (elf32_vax_merge_private_bfd_data): Likewise. + (elf_vax_relocate_section): Likewise. + * elf32-xc16x.c (elf32_xc16x_relocate_section): Likewise. + * elf32-xtensa.c (xlate_offset_with_removed_text): Likewise. + (move_literal): Likewise. + * elf64-hppa.c (elf64_hppa_section_from_shdr): Likewise. + (elf64_hppa_check_relocs): Likewise. + (elf64_hppa_finish_dynamic_symbol): Likewise. + (elf64_hppa_relocate_section): Likewise. + * elf64-mmix.c (mmix_elf_reloc, mmix_elf_relax_section): Likewise. + * elf64-ppc.c (ppc64_elf_check_relocs): Likewise. + (ppc64_elf_edit_opd, ppc64_elf_edit_toc): Likewise. + * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Likewise. + (elfNN_vms_section_from_shdr): Likewise. + * elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Likewise. + (_bfd_sparc_elf_relocate_section): Likewise. + * hp300hpux.c (slurp_symbol_table): Likewise. + * i386lynx.c (swap_std_reloc_out, swap_std_reloc_in): Likewise. + * mach-o.c (bfd_mach_o_write_thread): Likewise. + * mmo.c (mmo_scan, mmo_write_symbols_and_terminator): Likewise. + * nlm32-sparc.c (nlm_sparc_read_reloc): Likewise. + * pdp11.c (pdp11_aout_link_input_section): Likewise. + (aout_link_input_section, aout_link_input_bfd): Likewise. + * pe-mips.c (mips_swap_reloc_out): Likewise. + (coff_pe_mips_relocate_section): Likewise. + * som.c (som_bfd_ar_write_symbol_stuff): Likewise. + * vms-alpha.c (_bfd_vms_slurp_egsd): Likewise. + * xsym.c (bfd_sym_fetch_type_information_table_ent): Likewise. + + * coff-i860.c (i860_reloc_processing): Avoid set but unused warning. + * coffcode.h (coff_compute_section_file_positions): Likewise. + (coff_slurp_reloc_table): Likewise. + * cpu-arm.c (arm_check_note): Likewise. + * elf-bfd.h (RELOC_FOR_GLOBAL_SYMBOL): Likewise. + * elf32-avr.c (elf32_avr_relocate_section): Likewise. + * elf32-bfin.c (elf32_bfin_merge_private_bfd_data): Likewise. + * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise. + * elf32-moxie.c (moxie_elf_relocate_section): Likewise. + * elf32-msp430.c (elf32_msp430_relocate_section): Likewise. + * elf32-sh64.c (_bfd_sh_align_load_span): Likewise. + * ieee.c (parse_expression): Likewise. + (ieee_slurp_external_symbols, drop_int): Likewise. + * peXXigen.c (pe_print_pdata): Likewise. + * versados.c (process_esd): Likewise. + +2010-06-25 Tristan Gingold + + * vms-alpha.c (_bfd_vms_write_egsd): Check absolute section with + its flags. Create an absolute section if needed. + +2010-06-25 Tristan Gingold + + * vms-alpha.c (_bfd_vms_write_egsd): Set target_index field of + sections. Mark .vmsdebug section as SEC_DEBUGGING. Do not create + dummy psect anymore. Adjust. + (_bfd_vms_write_eeom): Adjust (use target_index instead of index) + (_bfd_vms_write_etir): Ditto. + (start_etir_or_etbt_record): Test for SEC_DEBUGGING instead of + section name. Adjust. + +2010-06-25 Tristan Gingold + + * vms-alpha.c (alpha_vms_write_exec): Set linktime field. + +2010-06-25 Alan Modra + + * elf64-ppc.c (toc_skip_enum): Define. + (ppc64_elf_edit_toc): Use two low bits of skip array as markers. + Optimize largetoc sequences. + (adjust_toc_syms): Update for skip array change. + (ppc64_elf_relocate_section): Handle R_PPC64_LO_DS_OPT. + +2010-06-25 Alan Modra + + * elf64-ppc.c (is_static_defined): New function. + (get_tls_mask, ppc_type_of_stub): Use it here. + (ppc64_elf_edit_opd): Ensure we only attempt to edit ppc64 input. + (ppc64_elf_tls_setup): Typo fix. + (adjust_toc_syms): Correctly handle symbols defined past the end + of the toc. Move syms on removed entries to next entry rather + than to start of toc. + (ppc64_elf_edit_toc): Likewise. Ensure we only attempt to + edit ppc64 input. Allocate one extra word in skip array. + Honour info->keep_memory when reading relocs if we can. + Adjust toc relocs after adjusting symbols. + +2010-06-23 Nathan Sidwell + + * archive64.c (bfd_elf64_archive_write_armap): Fix buffer overrun + when scaning map. + +2010-06-17 Tristan Gingold + + * Makefile.am (BFD32_BACKENDS_CFILES): Move vms-alpha.c to ... + (BFD64_BACKENDS_CFILES): ... here. + (BFD32_BACKENDS): Move vms-alpha.lo to ... + (BFD64_BACKENDS): ... here. + * Makefile.in: Regenerate. + +2010-06-15 Joseph Myers + + * elf-bfd.h (LEAST_KNOWN_OBJ_ATTRIBUTE): Decrease to 2. + * elf32-tic6x.c (elf32_tic6x_obj_attrs_arg_type, + elf32_tic6x_merge_arch_attributes, elf32_tic6x_merge_attributes, + elf32_tic6x_merge_private_bfd_data): New. + (bfd_elf32_bfd_merge_private_bfd_data, + elf_backend_obj_attrs_arg_type, elf_backend_obj_attrs_section, + elf_backend_obj_attrs_section_type, elf_backend_obj_attrs_vendor): + Define. + * elf32-tic6x.h (elf32_tic6x_merge_arch_attributes): Declare. + +2010-06-15 Joseph Myers + + * elf-bfd.h (LEAST_KNOWN_OBJ_ATTRIBUTE): Define. + (struct elf_backend_data): Update comment on obj_attrs_order. + * elf-attrs.c (vendor_obj_attr_size, vendor_set_obj_attr_contents, + _bfd_elf_copy_obj_attributes): Use LEAST_KNOWN_OBJ_ATTRIBUTE + instead of hardcoded 4. + * elf32-arm.c (elf32_arm_obj_attrs_order): Use + LEAST_KNOWN_OBJ_ATTRIBUTE and LEAST_KNOWN_OBJ_ATTRIBUTE + 1 + instead of hardcoded 4 and 5. + (elf32_arm_merge_eabi_attributes): Use LEAST_KNOWN_OBJ_ATTRIBUTE + instead of hardcoded 4. + +2010-06-14 Kevin Buettner + + * elf32-h8300.c (elf_symbol_leading_char): Define. + +2010-06-11 Jan Kratochvil + + * vms-alpha.c (_bfd_vms_write_egsd): Make sname const. + +2010-06-11 Tristan Gingold + + * vms-alpha.c (_bfd_vms_slurp_egsd): Always set vma of absolute + sections to 0. + +2010-06-11 Tristan Gingold + + * vms-alpha.c (evax_bfd_print_etir): Handle ETIR__C_STO_GBL_LW. + +2010-06-11 Tristan Gingold + + * vms-misc.c (_bfd_vms_output_counted): Make VALUE argument const. + Adjust cast. + (_bfd_vms_output_dump): Make DATA argument const, adjust cast. + * vms.h (_bfd_vms_output_counted, _bfd_vms_output_dump): Adjust. + * vms-alpha.c (evax_section_flags): Make it const. + (vms_secflag_by_name): Remove unused ABFD argument. + Make SECTION_FLAGS and NAME arguments const. Clarify comment. + (vms_esecflag_by_name): Make SECTION_FLAGS and NAME arguments const. + (_bfd_vms_slurp_egsd): Adjust call to vms_secflag_by_name. + (_bfd_vms_write_egsd): Remove useless cast. + +2010-06-10 Tristan Gingold + + * config.bfd: Remove #if/#endif so that som can be compiled on any + host. + * targets.c (_bfd_target_vector): Remove #if/#endif so that som + can be used on any host. + +2010-06-10 Tristan Gingold + + * som.c: Can now be compiled on any host. + Include bfd headers instead of system one. + (som_compute_checksum): Parameter is now a pointer to a + som_external_header structure. Adjust. + (struct section_to_type): Field section is now const. + (R_DLT_REL, R_AUX_UNWIND, R_SEC_STMT): Removed conditional + definition. + (R_LONG_PCREL_MODE, R_N0SEL, R_N1SEL, R_LINETAB): Ditto. + (R_LINETAB_ESC, R_LTP_OVERRIDE, R_COMMENT): Ditto. + (som_swap_clock_in, som_swap_clock_out): New functions. + (som_swap_header_in, som_swap_header_out): Likewise. + (som_swap_space_dictionary_in): Likewise. + (som_swap_space_dictionary_out): Likewise. + (som_swap_subspace_dictionary_in): Likewise. + (som_swap_subspace_dictionary_record_out): Likewise. + (som_swap_aux_id_in, som_swap_aux_id_out): Likewise. + (som_swap_string_auxhdr_out): Likewise. + (som_swap_compilation_unit_out): Likewise. + (som_swap_exec_auxhdr_in): Likewise. + (som_swap_exec_auxhdr_out): Likewise. + (som_swap_lst_header_in): Likewise. + (som_object_setup): Adjust parameter type using bfd types. + (setup_sections): Likewise. Ditto for object file types. + Use intermediate variables for external representation and use the + swap functions to convert. + (som_object_p): Ditto. Remove #ifdef/#endif on always defined + macros. + (som_prep_headers): Likewise. + (som_write_symbol_strings): Likewise. + (som_begin_writing): Likewise. + (som_finish_writing): Likewise. + (som_build_and_write_symbol_table): Likewise. + (bfd_section_from_som_symbol): Likewise. + (som_slurp_symbol_table): Likewise. + (som_bfd_print_private_bfd_data): Likewise. + (bfd_som_attach_aux_hdr): Likewise. Clear the padding. + (bfd_som_attach_compilation_unit): Likewise. + (som_bfd_count_ar_symbols): Likewise. + (som_bfd_fill_in_ar_symbols): Likewise. + (som_slurp_armap): Likewise. + (som_bfd_ar_write_symbol_stuff): Likewise. + (som_write_armap): Likewise. Use _bfd_ar_spacepad instead of + sprintf to write header fields. + * som.h: Include bfd headers instead of system one. + (FILE_HDR_SIZE, AUX_HDR_SIZE): Removed. + (struct somdata): Use bfd structures instead of system ones. + (struct som_section_data_struct): Likewise. + (struct som_subspace_dictionary_record): Removed (now in + include/som/internal.h) + +2010-06-10 Tristan Gingold + + * targets.c (bfd_target_list): Remove hp/ux compiler work-around + as bfd requires an ANSI-C compiler. + +2010-06-09 Tristan Gingold + + * bfdio.c (bfd_bread): Fix the code to prevent reading past the + end of archive members. + +2010-06-08 Tristan Gingold + + * som.c (som_bfd_free_cached_info): Do not free relocations as + they were allocated with bfd_zalloc. + +2010-06-08 Tristan Gingold + + * vms-lib.c (_bfd_vms_lib_write_archive_contents): Increment + for the first block. + +2010-06-08 Tristan Gingold + + * vms-lib.c (_bfd_vms_lib_ia64_mkarchive): New function. + * libbfd-in.h (_bfd_vms_lib_ia64_mkarchive): Declare. + * libbfd.h: Regenerate. + * elfxx-ia64.c (bfd_elfNN_write_archive_contents): Redefine for VMS. + (bfd_elfNN_mkarchive): Ditto. + +2010-06-02 Tristan Gingold + + * vms-alpha.c (alpha_vms_bfd_final_link): Fix 64bit constant. + +2010-06-01 Ralf Wildenhues + + * configure: Regenerate. + +2010-06-01 Tristan Gingold + + * vms-alpha.c (struct vms_private_data_struct): Add + transfer_address field. Remove unused dst_info field. + (alpha_vms_write_exec): Use transfer_address. + (_bfd_vms_write_egsd): Add a comment about LIB$INITIALIZE. + (alpha_vms_bfd_final_link): Set transfer_address. + +2010-05-31 Tristan Gingold + + * vms-lib.c (credat_lo, credat_hi): New fields. + (vms_read_block): Adjust comments. + (vms_write_block): New function. + (_bfd_vms_lib_archive_p): Decode majorid once. Replace some + hard-coded values with constants. Set credat_lo and credat_hi. + (_bfd_vms_lib_mkarchive): Add argument kind. + Set ver, mhd_size and type according to kind. + (_bfd_vms_lib_alpha_mkarchive): New function. + (struct lib_index): Renamed from struct vms_index + (lib_index_cmp): Renamed from vms_index_cmp. Adjusted. + (get_idxlen): Type of idx argument adjusted. Add is_elfidx + argument and handle it. + (vms_write_index): Adjust argument idx. Handle elf indexes. + (_bfd_vms_lib_build_map): Adjust type of arguments modules and res. + (_bfd_vms_lib_write_archive_contents): Add is_elfidx variable and + use it. Handle elf indexes. Set credat. + * libbfd-in.h (_bfd_vms_lib_mkarchive): Renamed to ... + (_bfd_vms_lib_alpha_mkarchive): ... this. + * libbfd.h: Regenerated. + * vms-alpha.c (vms_alpha_vec): Adjust after previous renaming. + +2010-05-28 Sterling Augustine + + * elf32-xtensa.c (elf_xtensa_relocate_section): Add a large amount + of code to change the bits in the instructions to match the changes + in the relocations. Declare dest_addr and sym_sec to help. + +2010-05-28 Jan Kratochvil + + Workaround GCC PR middle-end/4210. + * vms-misc.c (vms_time_t_to_vms_time): Use ternary operator for val[2] + and val[3]. + +2010-05-27 Tristan Gingold + + * vms-misc.c: Define __NEW_STARLET. Remove trailing spaces. + (VMS_TIME_FACTOR, VMS_TIME_OFFSET): New macros. + (vms_time_to_time_t): Use them instead of local const. + (vms_time_t_to_vms_time): New function. + (vms_get_time): Likewise. + (vms_raw_get_time): Likewise. + * vms.h (vms_time_t_to_vms_time): New declaration. + (vms_get_time): Likewise. + (vms_raw_get_time): Likewise. + +2010-05-26 Tristan Gingold + + * vms-alpha.c: Update comments. + (alpha_vms_write_exec): Set lnkflags. Write the GST. + (alpha_vms_link_output_symbol): New function. + (alpha_vms_bfd_final_link): Generate the VMS symbol table. + Set dst_section private field. + (alpha_vms_bfd_final_link): Remove code that set dst_section. + +2010-05-26 Tristan Gingold + + * bfdio.c: Declare and define _bfd_memory_iovec. + (bfd_bread): Move code for BFD_IN_MEMORY... + (bfd_bwrite): ... Ditto ... + (bfd_tell): ... Ditto ... + (bfd_flush): ... Ditto ... + (bfd_stat): ... Ditto ... + (bfd_seek): ... Ditto ... + (bfd_get_size): ... Ditto ... + (bfd_mmap): ... Ditto ... + (memory_bread): ... to these new functions. + (memory_bwrite): Ditto. + (memory_btell): Ditto. + (memory_bseek): Ditto. + (memory_bflush): Ditto. + (memory_bstat): Ditto. + (memory_bmmap): Ditto. + (memory_bclose): New function. + * peicode.h (pe_ILF_build_a_bfd): Use BFD_IN_MEMORY. + * xcofflink.c (bfd_xcoff_link_generate_rtinit): Ditto. + * opncls.c (bfd_close): Do not handle BFD_IN_MEMORY case. + (bfd_make_writable): Use _bfd_memory_iovec. + * elfcode.h (bfd_from_remote_memory): Use _bfd_memory_iovec. + * coff-alpha.c (alpha_ecoff_get_elt_at_filepos): Use + _bfd_memory_iovec. + (alpha_ecoff_openr_next_archived_file): Use proxy_origin + instead of origin. + * libbfd.h: Regenerate. + +2010-05-25 Daniel Jacobowitz + Joseph Myers + Andrew Stubbs + + * config.bfd (sh-*-uclinux* | sh[12]-*-uclinux*): Add + bfd_elf32_shl_vec, and FDPIC vectors to targ_selvecs. + * configure.in: Handle FDPIC vectors. + * elf32-sh-relocs.h: Add FDPIC and movi20 relocations. + * elf32-sh.c (DEFAULT_STACK_SIZE): Define. + (SYMBOL_FUNCDESC_LOCAL): Define. Use it instead of + SYMBOL_REFERENCES_LOCAL for function descriptors. + (fdpic_object_p): New. + (sh_reloc_map): Add FDPIC and movi20 relocations. + (sh_elf_info_to_howto, sh_elf_relocate_section): Handle new invalid + range. + (struct elf_sh_plt_info): Add got20 and short_plt. Update all + definitions. + (FDPIC_PLT_ENTRY_SIZE, FDPIC_PLT_LAZY_OFFSET): Define. + (fdpic_sh_plt_entry_be, fdpic_sh_plt_entry_le, fdpic_sh_plts): New. + (FDPIC_SH2A_PLT_ENTRY_SIZE, FDPIC_SH2A_PLT_LAZY_OFFSET): Define. + (fdpic_sh2a_plt_entry_be, fdpic_sh2a_plt_entry_le) + (fdpic_sh2a_short_plt_be, fdpic_sh2a_short_plt_le, fdpic_sh2a_plts): + New. + (get_plt_info): Handle FDPIC. + (MAX_SHORT_PLT): Define. + (get_plt_index, get_plt_offset): Handle short_plt. + (union gotref): New. + (struct elf_sh_link_hash_entry): Add funcdesc, rename tls_type to + got_type and adjust all uses. Add GOT_FUNCDESC. + (struct sh_elf_obj_tdata): Add local_funcdesc. Rename + local_got_tls_type to local_got_type. + (sh_elf_local_got_type): Renamed from sh_elf_local_got_tls_type. All + users changed. + (sh_elf_local_funcdesc): Define. + (struct elf_sh_link_hash_table): Add sfuncdesc, srelfuncdesc, fdpic_p, + and srofixup. + (sh_elf_link_hash_newfunc): Initialize new fields. + (sh_elf_link_hash_table_create): Set fdpic_p. + (sh_elf_omit_section_dynsym): New. + (create_got_section): Create .got.funcdesc, .rela.got.funcdesc + and .rofixup. + (allocate_dynrelocs): Allocate local function descriptors and space + for R_SH_FUNCDESC-related relocations, and for rofixups. + Handle GOT_FUNCDESC. Create fixups. Handle GOT entries which + require function descriptors. + (sh_elf_always_size_sections): Handle PT_GNU_STACK and __stacksize. + (sh_elf_modify_program_headers): New. + (sh_elf_size_dynamic_sections): Allocate function descriptors for + local symbols. Allocate .got.funcdesc contents. Allocate rofixups. + Handle local GOT entries of type GOT_FUNCDESC. Create fixups for + local GOT entries. Ensure that FDPIC libraries always have a PLTGOT + entry in the .dynamic section. + (sh_elf_add_dyn_reloc, sh_elf_got_offset, sh_elf_initialize_funcdesc) + (sh_elf_add_rofixup, sh_elf_osec_to_segment) + (sh_elf_osec_readonly_p, install_movi20_field): New functions. + (sh_elf_relocate_section): Handle new relocations, R_SH_FUNCDESC, + R_SH_GOTFUNCDESC and R_SH_GOTOFFFUNCDESC. Use sh_elf_got_offset + and .got.plt throughout to find _GLOBAL_OFFSET_TABLE_. Add rofixup + read-only section warnings. Handle undefined weak symbols. Generate + fixups for R_SH_DIR32 and GOT entries. Check for cross-segment + relocations and clear EF_SH_PIC. Handle 20-bit relocations. + Always generate R_SH_DIR32 for FDPIC instead of R_SH_RELATIVE. + (sh_elf_gc_sweep_hook): Handle R_SH_FUNCDESC, R_SH_GOTOFF20, + R_SH_GOTFUNCDESC, R_SH_GOTFUNCDESC20, and R_SH_GOTOFFFUNCDESC. + Handle 20-bit relocations. + (sh_elf_copy_indirect_symbol): Copy function descriptor reference + counts. + (sh_elf_check_relocs): Handle new relocations. Make symbols + dynamic for FDPIC relocs. Account for rofixups. Error for FDPIC + symbol mismatches. Allocate a GOT for R_SH_DIR32. Allocate fixups + for R_SH_DIR32. + (sh_elf_copy_private_data): Copy PT_GNU_STACK size. + (sh_elf_merge_private_data): Copy initial flags. Do not clobber + non-mach flags. Set EF_SH_PIC for FDPIC. Reject FDPIC mismatches. + (sh_elf_finish_dynamic_symbol): Do not handle got_funcdesc entries + here. Rename sgot to sgotplt and srel to srelplt. Handle short_plt, + FDPIC descriptors, and got20. Create R_SH_FUNCDESC_VALUE for FDPIC. + Use install_movi20_field. Rename srel to srelgot. Always generate + R_SH_DIR32 for FDPIC instead of R_SH_RELATIVE. + (sh_elf_finish_dynamic_sections): Fill in the GOT pointer in rofixup. + Do not fill in reserved GOT entries for FDPIC. Correct DT_PLTGOT. + Rename sgot to sgotplt. Assert that the right number of rofixups + and dynamic relocations were allocated. + (sh_elf_use_relative_eh_frame, sh_elf_encode_eh_address): New. + (elf_backend_omit_section_dynsym): Use sh_elf_omit_section_dynsym. + (elf_backend_can_make_relative_eh_frame) + (elf_backend_can_make_lsda_relative_eh_frame) + (elf_backend_encode_eh_address): Define. + (TARGET_BIG_SYM, TARGET_BIG_NAME, TARGET_LITTLE_SYM) + (TARGET_LITTLE_NAME, elf_backend_modify_program_headers, elf32_bed): + Redefine for FDPIC vector. + * reloc.c: Add SH FDPIC and movi20 relocations. + * targets.c (_bfd_target_vector): Add FDPIC vectors. + * configure, bfd-in2.h, libbfd.h: Regenerated. + +2010-05-25 Jay Krell + + PR ld/11624 + * archive.c (_bfd_calloc_wrapper): New function. + (_bfd_add_bfd_to_archive_cache): Use it. + + * configure.in: Add alpha*-*-*vms* to list of natives. + * configure: Regenerate. + + * vms-misc.c: Define globalref if necessary. + (vms_convert_to_var_unix_filename): Rename to + _bfd_vms_convert_to_var_unix_filename and export. + * vms.h: Add prototype for _bfd_vms_convert_to_var_unix_filename. + * vms-alpha.c (vms_close_and_cleanup): Update invocation of + vms_convert_to_var_unix_filename. + +2010-05-24 Tristan Gingold + + * vms-alpha.c (add_symbol_entry): New function extrated from ... + (add_symbol): ... adjusted. + +2010-05-24 Tristan Gingold + + * vms-alpha.c (_bfd_vms_slurp_egsd): Fix indentation. + (alpha_vms_write_exec): Add a comment. + (_bfd_vms_write_egsd): Ditto. + (alpha_vms_convert_symbol): Remove a blank line. + +2010-05-21 Tristan Gingold + + * vms-alpha.c (_bfd_vms_slurp_eihs): Do not create a bfd section + for the GST. + +2010-05-21 Tristan Gingold + + * vms-alpha.c (_bfd_vms_slurp_eisd): Set SEC_HAS_CONTENTS and + SEC_LOAD if isect has data. + (vms_get_symbol_info): Refine the condition for 'T' type. + +2010-05-18 Tristan Gingold + + * vms-alpha.c (_bfd_vms_write_emh): New function. + (_bfd_vms_write_lmn): New function. + (_bfd_vms_write_eeom): Moved. + (hash_string): Likewise. + (_bfd_vms_length_hash_symbol): Likewise. + (_bfd_vms_write_ehdr): Code moved to _bfd_vms_write_emh + and _bfd_vms_write_lmn, and call these functions. + +2010-05-18 Tristan Gingold + + * vms-alpha.c (evax_bfd_print_dst): Handle INCR_LINUM_L. + Add details in the messages. + (evax_bfd_print_image): Change message. + +2010-05-18 H.J. Lu + + PR gas/11600 + * elf.c (_bfd_elf_make_section_from_shdr): Handle SHF_EXCLUDE + (elf_fake_sections): Likewise. + + * elf32-i370.c (i370_elf_section_from_shdr): Don't handle + SHF_EXCLUDE here. + * elf32-ppc.c (ppc_elf_fake_sections): Likewise. + +2010-05-17 Tristan Gingold + + * vms-alpha.c: Include esgps.h and eidc.h. + (_bfd_vms_slurp_egsd): Ignore SPSC and IDC sub-records. + (evax_bfd_print_egsd_flags): New function, extracted from ... + (evax_bfd_print_egsd): ..., calls evax_bfd_print_egsd_flags. Handles + EGSD__C_SPSC and EGSD__C_IDC. + +2010-05-14 Tristan Gingold + + * vms-alpha.c (alpha_vms_object_p): Accept header size of 0. + (_bfd_vms_get_object_record): Handle align byte only in the + foreign case. + +2010-05-14 Tristan Gingold + + * vms-lib.c (_bfd_vms_lib_ia64_archive_p): New function. + * libbfd-in.h (_bfd_vms_lib_ia64_archive_p): Add prototype. + * libbfd.h: Regenerate. + * configure.in (havevecs): Define HAVE_all_vecs when + --enable-targets=all is set. Use AC_SUBST on it. + (tdefaults): Do not add havevecs. + (bfd_elf64_ia64_vms_vec): Add vms-lib.lo and vms-misc.lo + * configure: Regenerate. + * Makefile.am (HAVEVECS): New variable. + (INCLUDES): Add HAVEVECS. + * Makefile.in: Regenerate. + * elfxx-ia64.c (INCLUDE_IA64_VMS): New macro, defined if vms + target is selected. Add #ifdef/#endif around vms specific code. + (bfd_elfNN_archive_p, bfd_elfNN_archive_slurp_armap, + bfd_elfNN_archive_slurp_extended_name_table, + bfd_elfNN_archive_construct_extended_name_table, + bfd_elfNN_archive_truncate_arname, + bfd_elfNN_archive_write_armap, + bfd_elfNN_archive_read_ar_hdr, + bfd_elfNN_archive_write_ar_hdr, + bfd_elfNN_archive_openr_next_archived_file, + bfd_elfNN_archive_get_elt_at_index, + bfd_elfNN_archive_generic_stat_arch_elt, + bfd_elfNN_archive_update_armap_timestamp): Define to use vms archives. + +2010-05-11 Jie Zhang + + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Merge + Tag_ABI_HardFP_use correctly. + +2010-05-11 Alan Modra + + * coffcode.h (coff_write_object_contents): Enclose all occurrences + of hasdebug and is_reloc_section in #ifdef COFF_IMAGE_WITH_PE. + +2010-05-07 Daniel Jacobowitz + + * elf32-arm.c (struct a8_erratum_reloc): Add hash member. Move + sym_name to improve packing. + (cortex_a8_erratum_scan): Check for PLT entries. + (elf32_arm_size_stubs): Save the target symbol for a8 relocs. + +2010-05-07 Tristan Gingold + + * Makefile.in: Regenerate with automake 1.11.1. + * aclocal.m4: Ditto. + +2010-05-05 Nick Clifton + + * po/es.po: Updated Spanish translation. + +2010-05-03 Tristan Gingold + + * vms-lib.c (vms_lib_bopen): Fix the size threshold to read + selective_search flag. + Add comments. + * vms-alpha.c (alpha_vms_bfd_final_link): Create the DMT section + before output_has_begun is set. + +2010-05-03 Tristan Gingold + + * vms-alpha.c: Add comments. + (struct vms_private_data_struct): Remove image_autoextend field. + (dst_check_allocation): Removed. + (image_write): Remove call to dst_check_allocation. + (vms_slurp_debug): Do not set image_autoextend. Adjust section + size. + (_bfd_vms_slurp_object_records): Remove useless new_type variable. + (alpha_vms_write_exec): Use dst_section to get the dst section. + Write the dmt section. + (evax_bfd_print_image): Also print the dst size in hexa. Fix typo. + (alpha_vms_read_sections_content): Do not set image_autoextend. + (alpha_vms_bfd_final_link): Generate the dst. + +2010-05-03 Tristan Gingold + + * vms-lib.c (_bfd_vms_lib_archive_p): Adjust for a possible empty + next array. + (vms_lib_dcx): Adjust for the above change. + +2010-04-30 H.J. Lu + + PR ld/11542 + * elf-bfd.h (RELOC_AGAINST_DISCARDED_SECTION): New. + + * elf32-i386.c (elf_i386_relocate_section): Use it. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + +2010-04-30 Tristan Gingold + + * vms-lib.c (vms_read_block): New function. + (vms_traverse_index): Use vms_read_block. Handle long key names. + +2010-04-30 Tristan Gingold + + * vms-lib.c (struct lib_tdata): Field artdata added, fields nbr_syms + and syms removed. + (struct carsym_mem): New structure. + (vms_add_index): New function. + (vms_add_indexes_from_list): New function. + (vms_traverse_index): Parameter carsym changed to carsym_mem. + Code adjusted to handle elfidx. + (vms_lib_read_index): Adjusted for vms_traverse_index changes. + Parameter NBREL is now a pointer. + (_bfd_vms_lib_archive_p): Adjust for above change. Handle ia64 + archives. + (_bfd_vms_lib_mkarchive): Adjusted for changes in struct lib_tdata. + (_bfd_vms_lib_find_symbol): Ditto. + (vms_lib_bopen): Fix two typos: return FALSE in case of error, + check MHD id. + (_bfd_vms_lib_get_module): New function. + (_bfd_vms_lib_get_elt_at_index): Rewritten using the above + function. + (_bfd_vms_lib_openr_next_archived_file): Use _bfd_vms_lib_get_module. + (_bfd_vms_lib_generic_stat_arch_elt): Handle ia64 archives. + (vms_write_index): Adjust for structure renamed. + * vms-alpha.c (alpha_vms_link_add_archive_symbols): Adjust for + changes of _bfd_vms_lib_find_symbol. + +2010-04-28 Kai Tietz + + * config.bfd: Correct accidential reverted patch + about vax*-*-*vms*. + +2010-04-27 Kai Tietz + + * pe-x86_64.c (TARGET_UNDERSCORE): Set value dependent + to USE_MINGW64_LEADING_UNDERSCORES. + * pei-x86_64.c (TARGET_UNDERSCORE): Likewise. + * config.bfd: Change underscoring default for x64 mingw + to false. + * coffcode.h (coff_write_relocs): Add check that dereferenced + sym_ptr_ptr isn't NULL. + * config.in (USE_MINGW64_LEADING_UNDERSCORES): New. + * configure: Regenerated. + * configure.in: Add option '--enable-leading-mingw64-underscores' + and define config.in variable USE_MINGW64_LEADING_UNDERSCORES. + +2010-04-27 Nick Clifton + + PR binutils/11512 + * coffgen.c (coff_find_nearest_line): Incldue the section address + of function name symbols in address comparisons. + +2010-04-27 Nick Clifton + + * po/fr.po: Updated French translation. + +2010-04-23 Alan Modra + + * elf.c: Replace use of ELF_IS_SECTION_IN_SEGMENT and + ELF_IS_SECTION_IN_SEGMENT_FILE with ELF_SECTION_IN_SEGMENT + throughout file. + (assign_file_positions_for_load_sections): Modify section in + segment warning to ignore overlay vmas. + * elf32-spu.c (spu_elf_object_p): Replace use of + ELF_IS_SECTION_IN_SEGMENT_MEMORY with ELF_SECTION_IN_SEGMENT. + +2010-04-22 Nick Clifton + + * po/bfd.pot: Updated by the Translation project. + * po/vi.po: Updated Vietnamese translation. + +2010-04-22 Alan Modra + + * elf.c (assign_file_positions_for_load_sections): Revert 2008-05-29 + change. Tidy. Don't error on sections not allocated in segment. + +2010-04-15 Andrew Haley + + * bfd-in.h (elf32_arm_fix_exidx_coverage): Add new flag: + merge_exidx_entries. + * bfd-in2.h: Likewise. + * elf32-arm.c (elf32_arm_fix_exidx_coverage): Likewise. Use it to + control merging of exidx entries. + +2010-04-20 Joseph Myers + + * elf32-tic6x.h: New. + * elf-bfd.h (enum elf_target_id): Define TIC6X_ELF_DATA. + * elf32-tic6x.c (struct elf32_tic6x_obj_tdata, elf32_tic6x_tdata, + elf32_tic6x_howto_table_rel, elf32_tic6x_info_to_howto_rel, + elf32_tic6x_set_use_rela_p, elf32_tic6x_mkobject, + elf32_tic6x_new_section_hook, elf32_tic6x_rel_relocation_p, + bfd_elf32_mkobject, bfd_elf32_new_section_hook): New. + (elf32_tic6x_reloc_type_lookup, elf32_tic6x_reloc_name_lookup, + elf32_tic6x_relocate_section): Handle REL relocations. + (elf_info_to_howto_rel): Define to elf32_tic6x_info_to_howto_rel. + +2010-04-20 Jakub Jelinek + + * dwarf2.c (find_abstract_instance_name, scan_unit_for_symbols): Treat + DW_AT_linkage_name the same as DW_AT_MIPS_linkage_name. + +2010-04-19 Nick Clifton + + * archive64.c (bfd_elf64_archive_slurp_armap): Remove unused + arhdrpos variable. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Add unused + attribute to warned variable. Remove unused val, type and type2 + variables. + +2010-04-16 Andreas Schwab + + * vms-alpha.c (alpha_vms_link_add_object_symbols): Avoid breaking + strict-aliasing rules. + +2010-04-16 Tristan Gingold + + * vms-alpha.c (_bfd_vms_slurp_eihd): Fix typo. + (_bfd_vms_get_object_record): Always assume there is a pad byte + for alignment. + + * vms-lib.c: Add a few comments. + +2010-04-15 Matthew Gretton-Dann + + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Support additions to + attributes in v2.08 of the ABI. + +2010-04-15 Alan Modra + + * config.bfd (vax*-*-*vms*): Delete. + +2010-04-14 Tristan Gingold + + * Makefile.am (BFD32_BACKENDS): Remove vms-gsd.lo, vms-hdr.lo, + vms-tir.lo, vms.lo and add vms-alpha.lo + (BFD32_BACKENDS_CFILES): Remove vms-gsd.c, vms-hdr.c, + vms-tir.c, vms.c and add vms-alpha.c + * Makefile.in: Regenerate. + * configure.in (TDEFINES): Adjust file list for vms_alpha_vec. + Remove vms_vax_vec. + * configure: Regenerate. + * targets.c (vms_vax_vec): Remove the declaration. + (_bfd_target_vector): Remove vms_vax_vec. + * vms-alpha.c: New file. + * vms-gsd.c: Removed, rewritten in vms-alpha.c + * vms-hdr.c: Ditto. + * vms-tir.c: Ditto. + * vms.c: Ditto. + * vms-misc.c: Fix indentation and comments. Replace most of + #if VMS_DEBUG/vms_debug with vms_debug2. + (_bfd_vms_hash_newfunc): Moved to vms-alpha.c + (hash_string): Ditto. + (_bfd_vms_length_hash_symbol): Ditto. + (maybe_adjust_record_pointer_for_object): Ditto. + (_bfd_vms_get_object_record): Ditto. + (vms_get_remaining_object_record): Ditto. + (_bfd_vms_push): Ditto. + (_bfd_vms_pop): Ditto. + (_bfd_vms_get_header_values): Removed. + (_bfd_vms_get_first_record): Removed. + (vms_get_remaining_image_record): Removed. + (new_symbol): Removed. + (_bfd_vms_enter_symbol): Removed. + (_bfd_vms_save_sized_string): Use memcpy instead of strncpy. + (_bfd_vms_output_begin): Remove rechead parameter. Replace bfd + parameter with struct vms_rec_wr. + (_bfd_vms_output_push): Removed and replaced by ... + (_bfd_vms_output_begin_subrec): ... new function. + (_bfd_vms_output_alignment): Replace bfd parameter with + struct vms_rec_wr, and adjust. + (_bfd_vms_output_check): Ditto + (_bfd_vms_output_byte): Ditto. + (_bfd_vms_output_short): Ditto. + (_bfd_vms_output_long): Ditto. + (_bfd_vms_output_quad): Ditto. + (_bfd_vms_output_counted): Ditto. + (_bfd_vms_output_dump): Ditto. + (_bfd_vms_output_fill): Ditto. + (_bfd_vms_output_pop): Removed and replaced by ... + (_bfd_vms_output_end_subrec): ... new function. + (_bfd_vms_output_flush): Removed. + (_bfd_vms_output_align): New function. + (_bfd_vms_output_end): Add recwr parameter. Adjust for this new + parameter. + (vms_convert_to_var): New function imported from vms.c + (vms_convert_to_var_1): Ditto. + (vms_convert_to_var_unix_filename): Ditto. + (vms_get_module_name): Ditto. + (get_vms_time_string): Ditto. + (vms_time_to_time_t): Ditto. + (vms_rawtime_to_time_t): Ditto. + * vms.h: All macros for the VMS file format are now in include/vms. + Prototypes for vms.c, vms-gsd.c, vms-misc.c, vms-hdr.c, vms-tir.c + have been removed. + (struct vms_symbol_struct, struct stack_struct): Moved to vms-alpha.c + (struct fileinfo, struct srecinfo, struct lineinfo): Ditto. + (struct funcinfo, struct vms_private_data_struct): Ditto. + (struct vms_section_data_struct): Ditto. + (struct vms_rec_rd, stryct vms_rec_wr): New declarations. + (vms_get_module_name, get_vms_time_string): New declarations. + (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. + (_bfd_vms_output_begin_subrec, _bfd_vms_output_end_subrec): Ditto. + (_bfd_vms_save_sized_string, _bfd_vms_save_counted_string): Adjusted. + (_bfd_vms_output_begin, _bfd_vms_output_alignment): Ditto. + (_bfd_vms_output_end,_bfd_vms_output_check): Ditto. + (_bfd_vms_output_byte, _bfd_vms_output_short): Ditto. + (_bfd_vms_output_long, _bfd_vms_output_quad): Ditto. + (_bfd_vms_output_counted, _bfd_vms_output_dump): Ditto. + (_bfd_vms_output_fill): Ditto. + (bfd_vms_set_section_flags): Ditto. + +2010-04-14 Matthew Gretton-Dann + + * elflink.c (_bfd_elf_merge_symbol): Tighten up the test for early + exit due to merging the same weak symbol to test that the symbols are + actually weak. + +2010-04-13 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Correct NOP location + when optimizing high got_tlsgd/ld insns. + +2010-04-10 H.J. Lu + + * hosts/x86-64linux.h (HAVE_PRPSINFO32_T): Undefine before + define. + (HAVE_PRSTATUS32_T): Likewise. + +2010-04-10 H.J. Lu + + PR corefiles/11467 + * configure.in (CORE_HEADER): New. Set to hosts/x86-64linux.h + for x86_64-*-linux*. + * config.in: Regenerated. + * configure: Likewise. + + * elf.c: Include CORE_HEADER if it is defined. + +2010-04-10 H.J. Lu + Jan Kratochvil + + * hosts/x86-64linux.h: New. + +2010-04-09 Nick Clifton + + * aoutx.h (aout_link_input_bfd): Remove unused variable sym_count. + * elf-eh-frame.c (_bfd_elf_eh_frame_section_offset): Remove unused + variables htab and hdr_info and mark info parameter as unused. + * elf.c (prep_headers): Remove unused variable i_phdrp. + (_bfd_elf_write_object_contents): Remove unused variable i_ehdrp. + * elf32-i386.c (elf_i386_relocate_section): Mark variabled warned + as unused. + * peXXigen.c (pe_print_reloc): Remove unused variable datasize. + * verilog.c (verilog_write_section): Remove unused variable + address. + +2010-04-07 Alan Modra + + * warning.m4 (GCC_WARN_CFLAGS): Only add -Wshadow for gcc-4 and above. + * configure: Regenerate. + +2010-04-06 H.J. Lu + + PR ld/11434 + * elf-bfd.h (SYMBOLIC_BIND): Don't bind unique symbol locally. + +2010-04-06 Tristan Gingold + + * vms-lib.c (_bfd_vms_lib_write_archive_contents): Fix idd flags. + +2010-04-05 Jakub Jelinek + + * elf-eh-frame.c (_bfd_elf_parse_eh_frame): Handle CIE version 4 + provided that it has the expected address size and zero segment + length. + + * dwarf2.c (struct line_head): Add maximum_ops_per_insn field. + (struct line_info): Add op_index field, change end_sequence type to + unsigned char. + (new_line_sorts_after): For the same address compare op_index. + (add_line_info): Add op_index argument, store it into the structure. + (decode_line_info): Complain about unknown versions of .debug_line. + Initialize maximum_ops_per_insn. Add op_index state register and + track it. + +2010-04-01 Nathan Sidwell + + * elf32-ppc.c (apuinfo_set): New static var. + (ppc_elf_begin_write_processing): Set it here, always create an + APUinfo section if there were any in the inputs. + (ppc_elf_write_section): Check apuinfo_set. + (ppc_elf_final_write_processing): Likewise. + +2010-04-01 Tristan Gingold + + * vms.h: Include time.h. Add prototypes for vms_get_module_name, + vms_time_to_time_t and vms_rawtime_to_time_t. + * vms.c (vms_alpha_vec): Add archives support. + * vms-misc.c: Include safe-ctype.h + (vms_get_module_name): New function. + (vms_time_to_time_t, vms_rawtime_to_time_t): Ditto. + * vms-hdr.c (_bfd_vms_write_hdr): Put module name creation to the + vms_get_module_name function. Use this function. + * targets.c: Declare vms_lib_txt_vec. Add it to _bfd_target_vector. + * libbfd-in.h: Add prototype for _bfd_append_relative_path. + Add prototypes for vms-lib.c + * libbfd.h: Regenerate. + * configure.in (TDEFINES): Add an entry for vms_lib_txt_vec. Add + vms-lib.lo to vms_alpha_vec. + * config.bfd (targ_cpu): Add targ_selvecs for alpha*-*-*vms*. + * configure: Regenerate. + * bfd.c: Add selective_search field. + * bfd-in2.h: Regenerate. + * archive.c (append_relative_path): Rename to + _bfd_append_relative_path and make it public. + (_bfd_get_elt_at_filepos): Adjust for above renaming. + * Makefile.am (BFD32_BACKENDS): Add vms-lib.lo + (BFD32_BACKENDS_CFILES): Add vms-lib.c + * Makefile.in: Regenerate. + +2010-04-01 Jakub Jelinek + + * dwarf2.c (read_attribute_value): Handle CU version 4 + for DW_FORM_ref_addr, handle DW_FORM_sec_offset, DW_FORM_exprloc + and DW_FORM_flag_present. For unknown form value return NULL. + (scan_unit_for_symbols): For DW_AT_location handle DW_FORM_exprloc + like DW_FORM_block. + (parse_comp_unit): Allow CU version 4. + +2010-04-01 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section): Correct first argument + to _bfd_elf_get_dynamic_reloc_section. + (elf_cris_discard_excess_dso_dynamics): Ditto. + +2010-03-31 Kai Tietz + + * coff-i386.c (in_reloc_p): Check also for R_SECREL32. + * coff-x86_64.c (in_reloc_p): Check also for R_AMD64_SECREL. + +2010-03-31 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Nop out optimized + TPREL16_HI and TPREL16_HA insns. + +2010-03-31 Hans-Peter Nilsson + + PR ld/11458 + * elf32-cris.c (elf_cris_copy_indirect_symbol): Remove invalid + assert of empty pcrel_relocs_copied on the direct symbol. Instead + of moving the list from the indirect symbol to the direct symbol, + merge into any existing list. + (cris_elf_check_relocs): Store the original section in the + pcrel_relocs_copied list, not the relocation section. + (elf_cris_discard_excess_dso_dynamics): Adjust accordingly to find + the relocation section, for reducing its size. Change the + BFD_ASSERT into a check for the section being read-only, and only + emit warnings and TEXTREL marker when there's an entry for a + read-only section. + +2010-03-29 Daniel Jacobowitz + + * elf32-arm.c (using_thumb_only): Handle v6-M. + +2010-03-26 Alan Modra + + * elf32-ppc.c (ppc_elf_howto_raw ): Not pc-relative. + * bfd-in.h (elf_discarded_section): Clarify comment. + * reloc.c (struct reloc_howto_struct ): Likewise. + * bfd-in2.h: Regenerate. + +2010-03-26 Matt Rice + + * archive.c (_bfd_compute_and_write_armap): Allow symbols flagged + as unique in the armap. + +2010-03-26 Alan Modra + + PR ld/11375 + * elf64-ppc.c (ppc64_elf_relocate_section): Always look up a + possible stub on branches. + +2010-03-25 Joseph Myers + + * Makefile.am (ALL_MACHINES): Add cpu-tic6x.lo. + (ALL_MACHINES_CFILES): Add cpu-tic6x.c. + (BFD32_BACKENDS): Add elf32-tic6x.lo. + (BFD32_BACKENDS_CFILES): Add elf32-tic6x.c. + * Makefile.in: Regenerate. + * archures.c (bfd_arch_tic6x, bfd_tic6x_arch): New. + (bfd_archures_list): Update. + * config.bfd (tic6x-*-elf): New. + * configure.in (bfd_elf32_tic6x_be_vec, bfd_elf32_tic6x_le_vec): + New. + * configure: Regenerate. + * cpu-tic6x.c, elf32-tic6x.c: New. + * reloc.c (BFD_RELOC_C6000_PCR_S21, BFD_RELOC_C6000_PCR_S12, + BFD_RELOC_C6000_PCR_S10, BFD_RELOC_C6000_PCR_S7, + BFD_RELOC_C6000_ABS_S16, BFD_RELOC_C6000_ABS_L16, + BFD_RELOC_C6000_ABS_H16, BFD_RELOC_C6000_SBR_U15_B, + BFD_RELOC_C6000_SBR_U15_H, BFD_RELOC_C6000_SBR_U15_W, + BFD_RELOC_C6000_SBR_S16, BFD_RELOC_C6000_SBR_L16_B, + BFD_RELOC_C6000_SBR_L16_H, BFD_RELOC_C6000_SBR_L16_W, + BFD_RELOC_C6000_SBR_H16_B, BFD_RELOC_C6000_SBR_H16_H, + BFD_RELOC_C6000_SBR_H16_W, BFD_RELOC_C6000_SBR_GOT_U15_W, + BFD_RELOC_C6000_SBR_GOT_L16_W, BFD_RELOC_C6000_SBR_GOT_H16_W, + BFD_RELOC_C6000_DSBT_INDEX, BFD_RELOC_C6000_PREL31, + BFD_RELOC_C6000_COPY, BFD_RELOC_C6000_ALIGN, + BFD_RELOC_C6000_FPHEAD, BFD_RELOC_C6000_NOCMP): New. + * targets.c (bfd_elf32_tic6x_be_vec, bfd_elf32_tic6x_le_vec): New. + (_bfd_target_vector): Update. + * bfd-in2.h, libbfd.h: Regenerate. + +2010-03-24 H.J. Lu + + * aout-target.h: Update copyright year. + * aout-tic30.c: Likewise. + * coff-alpha.c: Likewise. + * coff-rs6000.c: Likewise. + * coff64-rs6000.c: Likewise. + * elf64-mips.c: Likewise. + * ieee.c: Likewise. + * libecoff.h: Likewise. + * mach-o-target.c: Likewise. + * mach-o.c: Likewise. + * oasys.c: Likewise. + * targets.c: Likewise. + +2010-03-24 H.J. Lu + + * libbfd-in.h: Update copyright year. + +2010-03-21 H.J. Lu + + PR ld/11413 + * elflink.c (_bfd_elf_add_default_symbol): Check !executable + instead of shared. + +2010-03-19 Jie Zhang + + * elf32-arm.c (struct section_list): Remove. + (section_list): Remove typedef. + (record_section_with_arm_elf_section_data): Remove. + (find_arm_elf_section_entry): Remove. + (get_arm_elf_section_data): Use is_arm_elf. + (unrecord_section_with_arm_elf_section_data): Remove. + (elf32_arm_new_section_hook): Don't call + record_section_with_arm_elf_section_data. + (elf32_arm_write_section): Set mapcount to -1 when + the map has been used. Don't call + unrecord_section_with_arm_elf_section_data. + (unrecord_section_via_map_over_sections): Remove. + (elf32_arm_close_and_cleanup): Remove. + (elf32_arm_bfd_free_cached_info): Remove. + (bfd_elf32_close_and_cleanup): Don't define. + (bfd_elf32_bfd_free_cached_info): Don't define. + +2010-03-18 H.J. Lu + + PR binutils/11396 + * libcoff-in.h (pe_tdata): Add dont_strip_reloc. + * libcoff.h: Regenerated. + + * peXXigen.c (_bfd_XXi_only_swap_filehdr_out): Clear F_RELFLG + if dont_strip_reloc is set. + (_bfd_XX_bfd_copy_private_bfd_data_common): Set + dont_strip_reloc on output if there is no .reloc and + IMAGE_FILE_RELOCS_STRIPPED isn't set in input. + +2010-03-18 Wei Guozhi + + PR gas/11323 + * elf32-arm.c (elf32_arm_reloc_map): Map BFD_RELOC_ARM_GOT_PREL to + R_ARM_GOT_PREL. + * reloc.c (BFD_RELOC_ARM_GOT_PREL): New ARM relocation. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2010-03-17 H.J. Lu + + * reloc.c (BFD_RELOC_SPU_PIC18): Removed. + (BFD_RELOC_SPU_STUB): Likewise. + +2010-03-17 Jie Zhang + + * elf.c (assign_file_positions_for_load_sections): Avoid + overflow. + +2010-03-17 Alan Modra + + PR binutils/11382 + * plugin.c (bfd_plugin_object_p): Pass iostream to fileno using + proper type. + +2010-03-17 Alan Modra + + * elf32-arm.c (cortex_a8_erratum_scan): Warning fix. + +2010-03-16 Alan Modra + + * elf64-ppc.c (struct ppc_link_hash_table): Add do_toc_opt. + (ppc64_elf_edit_toc): Set it here. + (ha_reloc_match): New function. + (ppc64_elf_relocate_section): Optimize bigtoc insn sequences. + +2010-03-15 Alan Modra + + * elf64-ppc.c (ppc64_elf_has_small_toc_reloc): New function. + * elf64-ppc.h (ppc64_elf_has_small_toc_reloc): Declare. + +2010-03-14 Alan Modra + + PR ld/11378 + * elf64-ppc.h (ppc64_elf_check_init_fini): Declare. + * elf64-ppc.c (call_check_done): Define. + (ppc64_elf_add_symbol_hook): Substitute bfd_get_section_name macro. + (ppc64_elf_check_relocs, ppc64_elf_size_dynamic_sections): Likewise. + (ppc64_elf_finish_multitoc_partition): Remove unnecessary check. + (toc_adjusting_stub_needed): Use call_check_done rather than toc_off. + Simplify return logic. Iterate over all .init and .fini fragments + by recursion. Set makes_toc_func_call here.. + (ppc64_elf_next_input_section): ..rather than here. + (check_pasted_section, ppc64_elf_check_init_fini): New functions. + +2010-03-13 Alan Modra + + PR ld/11375 + * elf64-ppc.c (ppc_type_of_stub): Always set *hash to the + function descriptor symbol if there is one, not just for plt stubs. + (ppc64_elf_relocate_section): Use fdh on all ppc_get_stub_entry calls. + +2010-03-05 Rainer Orth + + * elflink.c (bfd_elf_size_dynamic_sections): Don't emit base + version twice. + Skip it when constructing def.vd_next. + + * elf32-i386.c (TARGET_LITTLE_SYM): Redefine to + bfd_elf32_i386_sol2_vec. + (TARGET_LITTLE_NAME): Redefine to elf32-i386-sol2. + (elf32_bed): Redefine to elf32_i386_sol2_bed. + (elf_backend_want_plt_sym): Redefine to 1. + + * elf64-x86-64.c (TARGET_LITTLE_SYM): Redefine to + bfd_elf64_x86_64_sol2_vec. + (TARGET_LITTLE_NAME): Redefine to elf64-x86-64-sol2. + (elf64_bed): Redefine to elf64_x86_64_sol2_bed. + (elf_backend_want_plt_sym): Redefine to 1. + + * config.bfd (i[3-7]86-*-solaris2*): Set targ_defvec to + bfd_elf32_i386_sol2_vec. + Replace bfd_elf64_x86_64_vec by bfd_elf64_x86_64_sol2_vec in + targ64_selvecs. + (x86_64-*-solaris2*): Set targ_defvec to bfd_elf32_i386_sol2_vec. + Replace bfd_elf64_x86_64_vec by bfd_elf64_x86_64_sol2_vec in + targ_selvecs. + + * configure.in: Handle bfd_elf32_i386_sol2_vec, + bfd_elf64_x86_64_sol2_vec. + * configure: Regenerate. + + * targets.c (bfd_elf32_i386_sol2_vec): Declare. + (bfd_elf64_x86_64_sol2_vec): Declare. + (_bfd_target_vector): Add bfd_elf32_i386_sol2_vec, + bfd_elf64_x86_64_sol2_vec. + +2010-03-04 Daniel Jacobowitz + + * elf32-arm.c (elf32_arm_output_arch_local_syms): Skip non-program + sections. + +2010-03-04 Alan Modra + + PR 11302 + * dwarf2.c (read_abbrevs): Return NULL on alloc failures. + (read_attribute_value, decode_line_info): Likewise. + (add_line_info, read_rangelist): Return FALSE on alloc failures. + (arange_add, sort_line_sequences): Likewise. + (find_abstract_instance_name): Handle failures from called funcs. + (scan_unit_for_symbols, parse_comp_unit, decode_line_info): Likewise. + (find_line): Realloc to a temp, and handle alloc fail. + +2010-03-03 Daniel Jacobowitz + + * elf32-arm.c (elf32_arm_output_arch_local_syms): Do not add + a mapping symbol to an empty section. + +2010-03-02 Matthew Gretton-Dann + + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Add a check of the + return value from the call to _bfd_elf_merge_object_attributes. + +2010-03-02 Christophe Lyon + Alan Modra + + * elf32-arm.c (a8_erratum_fix): Add st_type field to record the + destination mode of the a8 stub. + (elf32_arm_link_hash_table): Add top_id field. + (elf32_arm_link_hash_table_create): Initialize top_id. + (arm_type_of_stub): Update prototype, st_type can now be updated + by this function. Actual destination address in case of PLT is + computed here, to help factorizing code. + (elf32_arm_stub_name): Update prototype, use stub_type additional + parameter to build stub name. + (elf32_arm_get_stub_entry): Update prototype, use stub_type + additional parameter to build stub entry. + (arm_build_one_stub): Use bfd_put_16/bfd_put_32 instead of + put_thumb_insn/put_arm_insn as BE8 encoding is now handled later. + Call elf32_arm_final_link_relocate to process all in-stub + relocations. + (elf32_arm_setup_section_lists): Update top_id. + (cortex_a8_erratum_scan): Record stub destination mode. + (elf32_arm_size_stubs): Update call to arm_type_of_stub according + to new prototype. + (elf32_arm_final_link_relocate): Enable processing of in-stub + REL32 relocations. Rely on arm_type_of_stub to detect if a stub is + needed, enabling code factorization. + (elf32_arm_final_link): Process stub sections. + (elf32_arm_output_map_sym): Add entry to code/data map. + +2010-03-01 David S. Miller + + * elfxx-sparc.c (_bfd_sparc_elf_check_relocs): When STT_GNU_IFUNC and + h->def_regular, set h->ref_regular. + (allocate_dynrelocs): Only force output of STT_GNU_IFUNC plt entries + and dynamic relocations if h->ref_regular. + + * elfxx-sparc.c (struct elf_reloc_map): Delete. + (sparc_reloc_map): Delete. + (_bfd_sparc_elf_reloc_type_lookup): Explicitly handle each + relocation type in switch statements. + +2010-02-25 Alan Modra + + PR ld/11304 + * elf.c (_bfd_elf_init_private_section_data): Rename need_group + to final_link and invert. For final link allow some flags to + differ. Don't specially allow flags to be all zero. + +2010-02-24 Alan Modra + + PR binutils/10858 + * elfxx-mips.c (mips_elf_create_dynamic_relocation): Ise + SYMBOL_REFERENCES_LOCAL to exclude entries from the dynamic symbol + table. + +2010-02-23 Andrew Zabolotny + + PR binutils/11297 + * elf32-avr.c (elf_avr_howto_table): Add R_AVR_8. + (avr_reloc_map): Map BFD_RELOC_8 to R_AVR_8. + +2010-02-22 Alan Modra + + * reloc.c (bfd_check_overflow): When forming addrmask, shift + fieldmask left by rightshift. + (_bfd_relocate_contents): Likewise. Use rightshift addrmask in all + overflow checks. + +2010-02-20 H.J. Lu + + * elf64-x86-64.c (elf64_x86_64_add_symbol_hook): Don't check + STT_GNU_IFUNC on large common symbol. + +2010-02-18 H.J. Lu + + * elf32-i386.c (elf_i386_add_symbol_hook): Don't set + has_ifunc_symbols if the symbol comes from a shared library. + * elf32-ppc.c (ppc_elf_add_symbol_hook): Likewise. + * elf32-sparc.c (elf32_sparc_add_symbol_hook): Likewise. + * elf64-ppc.c (ppc64_elf_add_symbol_hook): Likewise. + * elf64-sparc.c (elf64_sparc_add_symbol_hook): Likewise. + * elf64-x86-64.c (elf64_x86_64_add_symbol_hook): Likewise. + +2010-02-19 Alan Modra + + * elf.c (_bfd_elf_fixup_group_sections): New function, split out from.. + (_bfd_elf_copy_private_header_data): ..here. + * elflink.c (_bfd_elf_size_group_sections): New function. + (bfd_elf_size_dynamic_sections): Call it. + * elf-bfd.h (_bfd_elf_size_group_sections): Declare. + (_bfd_elf_fixup_group_sections): Declare. + +2010-02-18 Matthew Gretton-Dann + + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Add support for + merging Tag_DIV_use, Tag_MPextension_use, and + Tag_MPextension_use_legacy tags. + +2010-02-18 Alan Modra + + * elf.c (bfd_elf_set_group_contents): Revert accidental 2009-01-15 + commit. Don't write zeros for removed group members. + (_bfd_elf_copy_private_header_data): Adjust size of group section + when group members are removed by objcopy. + +2010-02-15 Dave Korn + + PR binutils/11280 + * configure.host (*-*-solaris2.11): Add host define to select + valid default code page for windres/windmc on solaris. + +2010-02-15 Nick Clifton + + * po/vi.po: Updated Vietnamese translation. + +2010-02-12 Daniel Gutson + + * elf32-arm.c (elf32_arm_output_arch_local_syms): add + missing mapping symbol to data only sections. + +2010-02-11 David S. Miller + + * elfxx-sparc.c (_bfd_sparc_elf_check_relocs): For R_SPARC_GOTDATA_OP_HIX22 + and R_SPARC_GOTDATA_OP_LOX10, only bump the GOT refcount for global + symbols. + (_bfd_sparc_elf_gc_sweep_hook): Likewise only decrement the GOT count for + these relocs on global symbols. + (gdopoff): New. + (_bfd_sparc_elf_relocate_section): Perform GOTDATA optimizations on + local symbol references which are not STT_GNU_IFUNC. Handle + relocation of them like R_SPARC_HIX22 and R_SPARC_LOX10 respectively, + and deal with negative vs. non-negative values properly. + +2010-02-09 Tristan Gingold + + * mach-o.c (bfd_mach_o_canonicalize_one_reloc): Adjust addend for + non-external relocation. + +2010-02-09 Alan Modra + + * elf64-ppc.c (merge_got_entries): Move earlier in file. + (allocate_dynrelocs): Merge got entries here if not doing multi-toc. + (ppc64_elf_size_dynamic_sections): Similarly merge tlsld_got. + (ppc64_elf_layout_multitoc): Don't resize if we have already + merged got entries. + +2010-02-09 Michael Holzheu + + * elf-bfd.h (elfcore_write_s390_timer, elfcore_write_s390_todcmp, + elfcore_write_s390_todpreg, elfcore_write_s390_ctrs, + elfcore_write_s390_prefix): New. + * elf.c (elfcore_write_s390_timer, elfcore_write_s390_todcmp, + elfcore_write_s390_todpreg, elfcore_write_s390_ctrs, + elfcore_write_s390_prefix): New. + (elfcore_grok_note): Handle NT_S390_TIMER, NT_S390_TODCMP, + NT_S390_TODPREG, NT_S390_CTRS and NT_S390_PREFIX. + (elfcore_write_register_note): Handle .reg-s390-timer, + .reg-s390-todcmp, .reg-s390-todpreg, .reg-s390-ctrs, + .reg-s390-prefix section. + +2010-02-09 Alan Modra + + * elf64-ppc.c (struct got_entry): Make tls_type and is_indirect + unsigned char. Update variables and code using them throughout file. + (struct ppc_link_hash_entry): Likewise for tls_mask. + + * elf64-ppc.c (ppc64_elf_layout_multitoc): Don't merge local got ents. + + * elf64-ppc.c (has_small_toc_reloc): Don't define. + (makes_toc_func_call, call_check_in_progress): Shuffle flags. + (struct ppc64_elf_obj_tdata): Add has_small_toc_reloc. Update + code setting the flag. + (ppc64_elf_next_toc_section): Group big-toc sections in + 0x80008000 chunks. + +2010-02-08 David S. Miller + + * elfxx-sparc.h (struct _bfd_sparc_elf_link_hash_table): Remove sgot, + srelgot, splt, srelplt, and sgotplt members in favor of generic copies. + + * elfxx-sparc.c (create_got_section): Delete. + (_bfd_sparc_elf_create_dynamic_sections): Don't call, the dynamic + section creator does that work for us. Use ->elf.foo instead of + ->foo where applicable. + (_bfd_sparc_elf_check_relocs): Use ->elf.foo instead of ->foo + where applicable. + (allocate_dynrelocs): Likewise. + (_bfd_sparc_elf_size_dynamic_sections): Likewise. + (_bfd_sparc_elf_relocate_section): Likewise. + (sparc_vxworks_build_plt_entry): Likewise. + (_bfd_sparc_elf_finish_dynamic_symbol): Likewise. + (sparc_finish_dyn): Likewise. + (sparc_vxworks_finish_exec_plt): Likewise. + (sparc_vxworks_finish_shared_plt): Likewise. + (_bfd_sparc_elf_finish_dynamic_sections): Likewise. + + * elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Use the SYMBOL_* + macros for visibilty and locality checks. + (_bfd_sparc_elf_adjust_dynamic_symbol): Likewise. + (allocate_dynrelocs): Likewise. + (_bfd_sparc_elf_relocate_section): Likewise. + (_bfd_sparc_elf_finish_dynamic_symbol):Likewise. + + * elfxx-sparc.c (_bfd_sparc_elf_finish_dynamic_symbol): Remove set + but never used local var 'dynobj'. + + * elfxx-sparc.c (_bfd_sparc_elf_adjust_dynamic_symbol): Handle + nocopyreloc. + + * reloc.c (BFD_RELOC_SPARC_JMP_IREL): New. + (BFD_RELOC_SPARC_IRELATIVE): Likewise. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + + * elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Add loc_hash_table + and loc_hash_memory. + (_bfd_sparc_elf_link_hash_table_free): Declare. + * elf32-sparc.c (elf32_sparc_add_symbol_hook): New. + (elf_backend_add_symbol_hook, elf_backend_post_process_headers, + bfd_elf32_bfd_link_hash_table_free): Define. + * elf64-sparc.c (elf64_sparc_add_symbol_hook): Set + has_ifunc_symbols if STT_GNU_IFUNC. + (bfd_elf64_bfd_link_hash_table_free): Define. + (elf_backend_post_process_headers): Define always. + * elfxx-sparc.c (sparc_jmp_irel_howto, sparc_irelative_howto): New. + (sparc_reloc_map): Add entries for new IFUNC relocs. + (_bfd_sparc_elf_reloc_type_lookup): Handle new IFUNC relocs. + (_bfd_sparc_elf_info_to_howto_ptr): Likewise. + (elf_sparc_local_htab_hash, elf_sparc_local_htab_eq, + elf_sparc_get_local_sym_hash): New. + (_bfd_sparc_elf_create_dynamic_sections): Move PLT ops initialization + from here... + (_bfd_sparc_elf_link_hash_table_create): ... to here. Allocate + local hash table. + (_bfd_sparc_elf_link_hash_table_free): New. + (create_ifunc_sections): New. + (_bfd_sparc_elf_check_relocs): Unconditionally assign htab->elf.dynobj + and call create_ifunc_sections(). For local STT_GNU_IFUNC symbols + cons up a fake local hash table entry for it. Unconditionally add + a PLT refcount for STT_GNU_IFUNC symbols when h->def_regular. Count + dyn relocs for ifunc. + (_bfd_sparc_elf_adjust_dynamic_symbol): Handle ifunc. + (allocate_dynrelocs): Unconditionally emit a PLT entry when + STT_GNU_IFUNC and h->def_regular. Count GOT dyn relocs for ifunc. + (allocate_local_dynrelocs): New function. + (_bfd_sparc_elf_size_dynamic_sections): Invoke it over the local hash + table. Emit dynamic relocs to irelplt when not shared. Treat iplt + like splt. + (_bfd_sparc_elf_relocate_section): Handle ifunc relocations by hand. + (_bfd_sparc_elf_finish_dynamic_symbol): Adjust for non-dynamic ifunc + plt in iplt/irelplt. + +2010-02-08 Richard Sandiford + + * xcofflink.c (_bfd_xcoff_bfd_final_link): When calculating + max_contents_size, only consider sections whose contents must + be swapped in. + +2010-02-09 Alan Modra + + * elf64-ppc.c (allocate_dynrelocs): Remove unused got structs here.. + (ppc64_elf_size_dynamic_sections): ..and here.. + (merge_got_entries): ..rather than here. + +2010-02-09 Alan Modra + + * elf64-ppc.c (struct ppc_link_hash_table): Add do_multi_toc. + (has_small_toc_reloc): Define. + (ppc64_elf_check_relocs): Set the above flags. + (ppc64_elf_edit_opd): Delete obfd param. + (ppc64_elf_tls_optimize): Likewise. + (ppc64_elf_edit_toc): Likewise. + (ppc64_elf_tls_setup): Likewise. Add no_multi_toc param. + * elf64-ppc.h: Update prototypes. + +2010-02-08 Alan Modra + + * section.c (struct bfd_section): Delete has_tls_reloc, + has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, reloc_done. + Add sec_flg0 thru sec_flg5. + (BFD_FAKE_SECTION): Update for changed flags. + * ecoff.c (bfd_debug_section): Likewise. + * elf32-ppc.c (has_tls_reloc, has_tls_get_addr_call): Define. + * elf64-ppc.c (has_tls_reloc, has_tls_get_addr_call): Define. + (has_toc_reloc, makes_toc_func_call, call_check_in_progress): Update. + * elf32-xtensa.c (reloc_done): Define. + * elfxx-ia64.c (skip_relax_pass_0, skip_relax_pass_1): Update. + * bfd-in2.h: Regenerate. + +2010-02-08 Tristan Gingold + + * mach-o.c (bfd_mach_o_canonicalize_one_reloc): Set reloc.r_extern + for non-scattered relocations. + +2010-02-08 Nathan Sidwell + + * elf32-ppc.c (ppc_elf_begin_write_processing): Allow empty + apuinfo sections, only scan input sections once and reuse the + buffer. + +2010-02-08 Philipp Tomsich + + * archures.c (bfd_mach_ppc_titan): Define. + * bfd-in2.h: Regenerate. + * cpu-powerpc.c (bfd_powerpc_archs): Add titan entry. + +2010-02-08 Alan Modra + + * elf32-ppc.c (ppc_elf_check_relocs): Remove dead ifunc code. + +2010-02-05 Sterling Augustine + + * elf.c (assign_file_positions_for_load_sections) Update lma of + section if necessary. Fixes Bugzilla 11219. + +2010-02-05 H.J. Lu + + * elf32-i386.c: Remove trailing white spaces. + * elf64-x86-64.c: Likewise. + +2010-02-03 Nick Clifton + + * elf-bfd.h (emum elf_object_id): Rename to elf_target_id. Add + entries for other architectures. + (struct elf_link_hash_table): Add hash_table_id field. + (elf_hash_table_id): New accessor macro. + * elflink.c (_bfd_elf_link_hash_table_init): Add target_id + parameter. + * elf-m10300.c (elf32_mn10300_hash_table): Check table id before + returning cast pointer. + (elf32_mn10300_link_hash_table_create): Identify new table as + containing MN10300 extensions. + (mn10300_elf_relax_section): Check pointer returned by + elf32_mn10300_hash_table. + * elf32-arm.c: Likewise, except using ARM extensions. + * elf32-avr.c: Likewise, except using AVR extensions. + * elf32-bfin.c: Likewise, except using BFIN extensions. + * elf32-cris.c: Likewise, except using CRIS extensions. + * elf32-frv.c: Likewise, except using FRV extensions. + * elf32-hppa.c: Likewise, except using HPPA32 extensions. + * elf32-i386.c: Likewise, except using I386 extensions. + * elf32-lm32.c: Likewise, except using LM32 extensions. + * elf32-m32r.c: Likewise, except using M32RM extensions. + * elf32-m68hc11.c: Likewise, except using M68HC11 extensions. + * elf32-m68hc1x.c: Likewise, except using M68HC11 extensions. + * elf32-m68hc1x.h: Likewise, except using M68HC11 extensions. + * elf32-m68k.c: Likewise, except using M68K extensions. + * elf32-microblaze.c: Likewise, except using MICROBLAZE extensions. + * elf32-ppc.c: Likewise, except using PPC32 extensions. + * elf32-s390.c: Likewise, except using S390 extensions. + * elf32-sh.c: Likewise, except using SH extensions. + * elf32-spu.c: Likewise, except using SPU extensions. + * elf32-xtensa.c: Likewise, except using XTENSA extensions. + * elf64-alpha.c: Likewise, except using ALPHA extensions. + * elf64-hppa.c: Likewise, except using HPPA64 extensions. + * elf64-ppc.c: Likewise, except using PPC64 extensions. + * elf64-s390.c: Likewise, except using S390 extensions. + * elf64-x86-64.c: Likewise, except using X86_64 extensions. + * elfxx-ia64.c: Likewise, except using IA64 extensions. + * elfxx-mips.c: Likewise, except using MIPS extensions. + * elfxx-sparc.c: Likewise, except using SPARC extensions. + * elfxx-sparc.h: Likewise, except using SPARC extensions. + * elf32-cr16.c (struct elf32_cr16_link_hash_table): Delete + redundant structure. + (elf32_cr16_hash_table): Delete unused macro. + (elf32_cr16_link_hash_traverse): Delete unused macro. + * elf32-score.c: Likewise. + * elf32-score7.c: Likewise. + * elf32-vax.c: Likewise. + * elf64-sh64.c: Likewise. + +2010-02-03 Alan Modra + + * elf64-ppc.c (struct plt_entry): Move earlier in file. + (struct got_entry): Likewise. Add is_indirect and got.ent fields. + (struct ppc64_elf_obj_tdata): Change tlsld_got to be a struct got_entry. + Update all uses. + (struct ppc_link_hash_table): Add got_reli_size and second_toc_pass. + Remove no_multi_toc. + (update_local_sym_info, ppc64_elf_check_relocs): Clear is_indirect + when allocating a new struct got_entry. + (allocate_got): New function, extracted from.. + (allocate_dynrelocs): ..here. Abort on got entry in non-ppc64 bfd. + (ppc64_elf_size_dynamic_sections): Track got relocs allocated in + .reliplt by got_reli_size. Set owner on ppc64_tlsld_got entries. + (ppc64_elf_setup_section_lists): Remove output_bfd param and + no_multi_toc, add add_stub_section and layout_sections_again. Stash + new params in htab. Extract some code to.. + (ppc64_elf_start_multitoc_partition): ..here. New function. + (ppc64_elf_next_toc_section): Check for linker script errors. Handle + second pass toc scan. + (merge_got_entries, merge_global_got, reallocate_got): New functions. + (ppc64_elf_reinit_toc): Rename to.. + (ppc64_elf_finish_multitoc_partition): ..this. + (ppc64_elf_layout_multitoc): New function. + (ppc64_elf_size_stubs): Delete output_bfd, add_stub_section and + layout_sections_again params. + (ppc64_elf_relocate_section): Handle indirect got entries. + * elf64-ppc.h: Update prototypes. Declare new functions. + +2010-02-02 H.J. Lu + + * elf-bfd.h (elfcore_write_xstatereg): New. + + * elf.c (elfcore_grok_xstatereg): New. + (elfcore_write_xstatereg): Likewise. + (elfcore_grok_note): Handle NT_X86_XSTATE. + (elfcore_write_register_note): Handle .reg-xstate section. + +2010-02-01 Tristan Gingold + + * som.c (som_write_ar_hdr): Define this macro. + +2010-01-30 John David Anglin + + * elf32-hppa.c (final_link_relocate): Convert R_PARISC_TLS_GD21L, + R_PARISC_TLS_LDM21L and R_PARISC_TLS_IE21L relocations that use the + linkage table pointer to use the global table pointer if not doing + a shared link. + +2010-01-29 Joel Brobecker + + * elf.c (elfcore_grok_lwpstatus): Do not overwrite the core signal + if it has already been set. + +2010-01-27 Tristan Gingold + + * vms.h: Remove trailing spaces. + (struct hdr_struct): Remove unused hdr_c_cpr field. + (enum file_format_enum): Add comments. + * vms.c (vms_bfd_print_private_bfd_data): New function that + replaces the macro. + Remove trailing spaces. + * vms-misc.c: Improve comments. + (_bfd_vms_get_object_record): Also handle files without pads. + * vms-hdr.c (_bfd_vms_write_dbg): Fix format string. + * vms-gsd.c (struct flagdescstruct): Make name field const. + (gsyflagdesc): Fix typo. + +2010-01-27 Alan Modra + + PR ld/11217 + * elf64-ppc.c (struct ppc_link_hash_table): Add toc_bfd, toc_first_sec. + (ppc64_elf_setup_section_lists): Init them. + (ppc64_elf_next_toc_section): Don't partition multi-toc between .got + and .toc on the same input file. + (ppc64_elf_relocate_section): Correct GOT entry offset. + +2010-01-26 Tristan Gingold + + * targets.c (BFD_JUMP_TABLE_ARCHIVE): Add initializer for write_ar_hdr. + (bfd_target): Add _bfd_write_ar_hdr_fn field. + * archive.c (is_bsd44_extended_name): New macro. + (_bfd_generic_read_ar_hdr_mag): Use it. Add extra_size. + (bfd_slurp_armap): Also check for "__.SYMDEF" as a BSD4.4 extended + name. + (_bfd_archive_bsd44_construct_extended_name_table): New function. + (_bfd_generic_write_ar_hdr): Ditto. + (_bfd_bsd44_write_ar_hdr): Ditto. + (_bfd_write_archive_contents): Call _bfd_write_ar_hdr. + (bsd_write_armap): Adjust firstreal computation. + * libbfd-in.h (struct areltdata): Add extra_size field. + (_bfd_generic_write_ar_hdr): Add prototype. + (_bfd_bsd44_write_ar_hdr): Ditto. + (_bfd_write_ar_hdr): Define. + (_bfd_noarchive_write_ar_hdr): Ditto. + (_bfd_archive_bsd_write_ar_hdr): Ditto. + (_bfd_archive_coff_write_ar_hdr): Ditto. + (_bfd_archive_bsd44_slurp_armap): Ditto. + (_bfd_archive_bsd44_slurp_extended_name_table): Ditto. + (_bfd_archive_bsd44_construct_extended_name_table): New prototype. + (_bfd_archive_bsd44_truncate_arname): Ditto. + (_bfd_archive_bsd44_write_armap): Ditto. + (_bfd_archive_bsd44_read_ar_hdr): Ditto. + (_bfd_archive_bsd44_write_ar_hdr): Ditto. + (_bfd_archive_bsd44_openr_next_archived_file): Ditto. + (_bfd_archive_bsd44_get_elt_at_index): Ditto. + (_bfd_archive_bsd44_generic_stat_arch_elt): Ditto. + (_bfd_archive_bsd44_update_armap_timestamp): Ditto. + * libbfd.h: Regenerate. + * oasys.c (oasys_write_ar_hdr): Define. + * libecoff.h (_bfd_ecoff_write_ar_hdr): Define. + * ieee.c (ieee_write_ar_hdr): Define. + * elf64-mips.c (bfd_elf64_archive_write_ar_hdr): Define. + * coff-rs6000.c (rs6000coff_vec): Adjust for write_ar_hdr field. + (bfd_pmac_xcoff_backend_data): Ditto. + * coff64-rs6000.c (rs6000coff64_vec): Ditto. + (bfd_xcoff_aix5_backend_data): Ditto. + * coff-alpha.c (alpha_ecoff_write_ar_hdr): Define. + * aout-target.h (MY_write_ar_hdr): Define it if not defined. + * aout-tic30.c (MY_write_ar_hdr): Ditto. + * mach-o-target.c (TARGET_NAME): Use _bfd_archive_bsd44 archive. + (bfd_mach_o_mkarchive, bfd_mach_o_read_ar_hdr) + (bfd_mach_o_slurp_armap, bfd_mach_o_slurp_extended_name_table) + (bfd_mach_o_construct_extended_name_table) + (bfd_mach_o_truncate_arname, bfd_mach_o_write_armap) + (bfd_mach_o_get_elt_at_index, bfd_mach_o_generic_stat_arch_elt) + (bfd_mach_o_update_armap_timestamp): Moved to mach-o.c + * mach-o.c (bfd_mach_o_mkarchive, bfd_mach_o_read_ar_hdr) + (bfd_mach_o_slurp_armap, bfd_mach_o_slurp_extended_name_table) + (bfd_mach_o_construct_extended_name_table) + (bfd_mach_o_truncate_arname, bfd_mach_o_write_armap) + (bfd_mach_o_get_elt_at_index, bfd_mach_o_generic_stat_arch_elt) + (bfd_mach_o_update_armap_timestamp): Moved from mach-o-target.c + * bfd-in2.h: Regenerate. + +2010-01-26 Alan Modra + H.J. Lu + + PR ld/11218 + * elflink.c (elf_link_output_extsym): Do not ignore undefined + symbols with ref_regular set when gc_sections is active. + +2010-01-25 Alan Modra + + PR ld/11217 + * elf64-ppc.c (ppc64_elf_tls_optimize): Optimize tls sequences + with relocations against undefined weak symbols. + (ppc64_elf_relocate_section): Don't optimize calls to undefined + weak functions if the symbol is dynamic. + (ppc64_elf_relocate_section): Edit tprel tls sequences. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + (_bfd_elf_ppc_at_tprel_transform): New function. + * bfd-in.h (_bfd_elf_ppc_at_tprel_transform): Declare. + * bfd-in2.h: Regenerate. + +2010-01-23 Richard Sandiford + + * coff-rs6000.c (xcoff_howto_table): Change size to 0 and bitsize to 1. + (_bfd_xcoff_reloc_type_lookup): Handle BFD_RELOC_NONE. + * coff64-rs6000.c (xcoff64_howto_table): Change size to 0 and + bitsize to 1. + (xcoff64_reloc_type_lookup): Handle BFD_RELOC_NONE. + +2010-01-21 Nick Clifton + + * elflink.c (elf_link_add_object_symbols): Look up name of + undefined symbol both before and after versioning has been + applied. Do not bother with symbols that are weakly undefined. + +2010-01-21 Andreas Krebbel + + * elf32-s390.c (elf32_s390_merge_private_bfd_data): New function. + (bfd_elf32_bfd_merge_private_bfd_data): New macro definition. + +2010-01-19 Cary Coutant + + * dwarf2.c (read_attribute_value): Add DW_FORM_ref_sig8. + +2010-01-19 Daisuke Hatayama + Alan Modra + + * elfcode.h (elf_swap_ehdr_out): Handle e_phnum > 0xffff. + (elf_object_p): Read e_phnum extension. + (elf_write_shdrs_and_ehdr): Write e_phnum extension. + * elfcore.h (elf_core_file_p): Read e_phnum extension. Sanity check + that we can read last program header. + +2010-01-19 Matthew Gretton-Dann + + * elf32-arm.c (elf32_arm_howto_table_1): Correct bitsize of + R_ARM_THM_CALL entry. + (elf32_arm_final_link_relocate): Correct calculation of + reloc_signed_max when doing a R_ARM_THM_CALL, R_ARM_THM_XPC22, + or R_ARM_THM_JUMP24 relocation. + +2010-01-18 Alan Modra + + PR 11168 + * coffcode.h (coff_compute_section_file_positions): Move Rs6000COFF_C + block past vars in COFF_IMAGE_WITH_PE block. Report error on more + than 32k sections. + +2010-01-15 Jan Kratochvil + + Fix compilation warning on gcc-3.4. + * vms-tir.c (start_etir_record, sto_imm): Rename the prototype + parameter index to sec_index according to the function definition. + +2010-01-13 Chao-ying Fu + + * elfxx-mips.c (JR_TO_B_P): New define to transform JR to B. + It is true for all CPUs. + (jal_reloc_p): New function. + (mips_elf_calculate_relocation): Rename require_jalxp to + cross_mode_jump_p. + Update comment for CROSS_MODE_JUMP_P. + Set up cross_mode_jump_p based on the mode change. + (mips_elf_perform_relocation): Rename require_jalx to cross_mode_jump_p. + Update comment for CROSS_MODE_JUMP_P. + Test cross_mode_jump_p and jal_reloc_p to turn jal to jalx. + Use !cross_mode_jump_p to guard conversion. + Convert "jr t9" to "b", if possible. + (_bfd_mips_elf_relocate_section): Rename require_jalx to + cross_mode_jump_p. + Pass &cross_mode_jump_p to call mips_elf_calculate_relocation. + Pass cross_mode_jump_p to call mips_elf_perform_relocation. + +2010-01-13 Nick Clifton + + * cpu-m32c.c (m32c_scan): New function. Ensures that a scan for + "m32c" returns the m32c arch_info_struct and not the m16c + arch_info_struct. + (arch_info_struct): Use the new scan function. + (bfd_m32c_arch): Likewise. + +2010-01-13 Tristan Gingold + + * config.bfd: Remove duplicated target vector for i386-*-darwin. + Appends new arch instead of overriding. + Use mach_o_x86_64_vec for x86_64-*-darwin. + * configure.in: Add mach_o_x86_64_vec. + * configure: Regenerate. + * targets.c: Declare mach_o_x86_64_vec, add it to _bfd_target_vector. + * Makefile.am (BFD64_BACKENDS): Add mach-o-x86-64.lo + (BFD64_BACKENDS_CFILES): Add mach-o-x86-64.c + * Makefile.in: Regenerate. + * mach-o-x86-64.c: New file. + +2010-01-13 Tristan Gingold + + * reloc.c: Add MACH_O_X86_64 relocations. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2010-01-13 Tristan Gingold + + * archive.c (normalize): Use lbasename. + (bfd_bsd_truncate_arname): Ditto. + (bfd_gnu_truncate_arname): Ditto. + +2010-01-12 Tristan Gingold + + * makefile.vms (CFLAGS): Turns warnings into informational messages. + +2010-01-11 Tristan Gingold + + * mach-o.h: Add x86-64 relocation types. + +2010-01-11 Tristan Gingold + + * mach-o.h (bfd_mach_o_backend_data): Add arch field. + (bfd_mach_o_set_arch_mach): New prototype. + * mach-o.c (bfd_mach_o_mkobject): Define with bfd_mach_o_gen_mkobject. + (bfd_mach_o_set_arch_mach): New function. + (bfd_mach_o_gen_mkobject): New function. + Set TARGET_ARCHITECTURE for the generic back-ends. + * mach-o-target.c (bfd_mach_o_set_arch_mach): Remove define. + Check that TARGET_ARCHITECTURE is defined. + Add TARGET_ARCHITECTURE in TARGET_NAME_BACKEND structure. + * mach-o-i386.c (TARGET_ARCHITECTURE): Define. + +2010-01-11 Tristan Gingold + + * archive.c (bfd_slurp_armap): Also check for Mach-O sorted armap. + +2010-01-11 Nick Clifton + + * elf32-v850.c (v850_elf_perform_relocation): Fix overflow + handling of R_V850_HI16_S relocation. + +2010-01-11 Alan Modra + + PR 11103 + * dwarf1.c (parse_die): Correct FORM_STRING data pointer increment. + +2010-01-11 Alan Modra + + PR 6832 + * dwarf2.c (struct comp_unit): Add sec_info_ptr. + (find_abstract_instance_name): Use it. + (parse_comp_unit): Set it. + +2010-01-09 Ralf Wildenhues + + * Makefile.in: Regenerate. + * configure: Regenerate. + +2010-01-08 Tristan Gingold + + * archive.c: Remove bfd_special_undocumented_glue. + +2010-01-08 Alan Modra + + PR ld/11133 + * elf32-cr16.c (elf32_cr16_gc_mark_hook): Call _bfd_elf_gc_mark_hook. + * elf32-microblaze.c (microblaze_elf_gc_mark_hook): Likewise. + * elf64-ppc.c (ppc64_elf_gc_mark_hook): Likewise. + +2010-01-07 H.J. Lu + + PR ld/11138 + * elflink.c (elf_link_check_versioned_symbol): Don't abort if + a symbol referenced by DSO is is defined in a non-shared object + and forced local. + +2010-01-07 H.J. Lu + + PR ld/11133 + * elflink.c (_bfd_elf_gc_mark_hook): Check section XXX for + undefined __start_XXX/__stop_XXX in all input files and set + SEC_KEEP. + +2010-01-07 H.J. Lu + + PR ld/11143 + * elflink.c (elf_gc_sweep): Keep SHT_NOTE section. + +2010-01-04 Daniel Gutson + + * bfd.m4 (BFD_HAVE_SYS_PROCFS_TYPE): Define _STRUCTURE_PROC + before including procfs.h. + (BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): Likewise. + * configure.in: Added autoconf probe for the pr_fpreg member. + * configure: Regenerated. + * config.in: Regenerated. + * elf.c: Define _STRUCTURE_PROC before including procfs.h. + +2010-01-04 Joel Brobecker + + Fix -Wshadow warnings in dwarf2.c (seen on alpha-tru64). + * dwarf2.c (concat_filename): Rename dirname with dir_name + to void shadowing the dirname function. + Rename subdirname with subdir_name to stay consistent with + the new dir_name variable name. + +2010-01-04 Edmar Wienskoski + + * archures.c: Add bfd_mach_ppc_e500mc64. + * bfd-in2.h: Regenerate. + * cpu-powerpc.c (bfd_powerpc_archs): Add entry for + bfd_mach_ppc_e500mc64. + +2010-01-01 Joel Brobecker + + Fix -Wshadow warnings (seen on ppc-aix) + * xcofflink.c: Replace finfo by flinfo throughout. + +For older changes see ChangeLog-2009 + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/Makefile.am crash-6.1.6/=unpacked-tar1=/bfd/Makefile.am --- crash-5.1.6/=unpacked-tar1=/bfd/Makefile.am 2009-09-07 09:15:27.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/Makefile.am 2010-12-04 13:00:35.000000000 +0000 @@ -23,6 +23,7 @@ # Empty these so that the respective installation directories will not be created. bfdlibdir = bfdincludedir = +bfdinclude_HEADERS = rpath_bfdlibdir = @bfdlibdir@ noinst_LTLIBRARIES = libbfd.la libbfd_la_LDFLAGS += -rpath $(rpath_bfdlibdir) @@ -33,6 +34,7 @@ AM_CFLAGS = $(WARN_CFLAGS) AM_CPPFLAGS = -DBINDIR='"$(bindir)"' if PLUGINS +bfdinclude_HEADERS += $(INCDIR)/plugin-api.h LIBDL = -ldl endif @@ -103,7 +105,6 @@ cpu-m68hc12.lo \ cpu-m68k.lo \ cpu-m88k.lo \ - cpu-maxq.lo \ cpu-mcore.lo \ cpu-mep.lo \ cpu-microblaze.lo \ @@ -120,6 +121,7 @@ cpu-plugin.lo \ cpu-powerpc.lo \ cpu-rs6000.lo \ + cpu-rx.lo \ cpu-s390.lo \ cpu-score.lo \ cpu-sh.lo \ @@ -128,6 +130,7 @@ cpu-tic30.lo \ cpu-tic4x.lo \ cpu-tic54x.lo \ + cpu-tic6x.lo \ cpu-tic80.lo \ cpu-v850.lo \ cpu-vax.lo \ @@ -174,7 +177,6 @@ cpu-m68hc12.c \ cpu-m68k.c \ cpu-m88k.c \ - cpu-maxq.c \ cpu-mcore.c \ cpu-mep.c \ cpu-microblaze.c \ @@ -191,6 +193,7 @@ cpu-plugin.c \ cpu-powerpc.c \ cpu-rs6000.c \ + cpu-rx.c \ cpu-s390.c \ cpu-score.c \ cpu-sh.c \ @@ -199,6 +202,7 @@ cpu-tic30.c \ cpu-tic4x.c \ cpu-tic54x.c \ + cpu-tic6x.c \ cpu-tic80.c \ cpu-v850.c \ cpu-vax.c \ @@ -236,7 +240,6 @@ coff-i960.lo \ coff-m68k.lo \ coff-m88k.lo \ - coff-maxq.lo \ coff-mips.lo \ coff-or32.lo \ coff-rs6000.lo \ @@ -307,6 +310,7 @@ elf32-or32.lo \ elf32-pj.lo \ elf32-ppc.lo \ + elf32-rx.lo \ elf32-s390.lo \ elf32-sh-symbian.lo \ elf32-sh.lo \ @@ -314,6 +318,7 @@ elf32-sh64.lo \ elf32-sparc.lo \ elf32-spu.lo \ + elf32-tic6x.lo \ elf32-v850.lo \ elf32-vax.lo \ elf32-xc16x.lo \ @@ -385,11 +390,8 @@ vaxbsd.lo \ vaxnetbsd.lo \ versados.lo \ - vms-gsd.lo \ - vms-hdr.lo \ + vms-lib.lo \ vms-misc.lo \ - vms-tir.lo \ - vms.lo \ xcofflink.lo \ xsym.lo \ xtensa-isa.lo \ @@ -419,7 +421,6 @@ coff-i960.c \ coff-m68k.c \ coff-m88k.c \ - coff-maxq.c \ coff-mips.c \ coff-or32.c \ coff-rs6000.c \ @@ -490,6 +491,7 @@ elf32-or32.c \ elf32-pj.c \ elf32-ppc.c \ + elf32-rx.c \ elf32-s390.c \ elf32-sh-symbian.c \ elf32-sh.c \ @@ -497,6 +499,7 @@ elf32-sh64.c \ elf32-sparc.c \ elf32-spu.c \ + elf32-tic6x.c \ elf32-v850.c \ elf32-vax.c \ elf32-xc16x.c \ @@ -567,11 +570,8 @@ vaxbsd.c \ vaxnetbsd.c \ versados.c \ - vms-gsd.c \ - vms-hdr.c \ + vms-lib.c \ vms-misc.c \ - vms-tir.c \ - vms.c \ xcofflink.c \ xsym.c \ xtensa-isa.c \ @@ -605,6 +605,7 @@ elf64-x86-64.lo \ elf64.lo \ elfn32-mips.lo \ + mach-o-x86-64.lo \ mmo.lo \ nlm32-alpha.lo \ nlm64.lo \ @@ -612,7 +613,8 @@ pei-ia64.lo \ pei-x86_64.lo \ pepigen.lo \ - pex64igen.lo + pex64igen.lo \ + vms-alpha.lo BFD64_BACKENDS_CFILES = \ aix5ppc-core.c \ @@ -635,12 +637,14 @@ elf64-x86-64.c \ elf64.c \ elfn32-mips.c \ + mach-o-x86-64.c \ mmo.c \ nlm32-alpha.c \ nlm64.c \ pe-x86_64.c \ pei-ia64.c \ - pei-x86_64.c + pei-x86_64.c \ + vms-alpha.c OPTIONAL_BACKENDS = \ aix386-core.lo \ @@ -649,6 +653,7 @@ irix-core.lo \ lynx-core.lo \ osf-core.lo \ + rs6000-core.lo \ sco5-core.lo \ trad-core.lo @@ -659,6 +664,7 @@ irix-core.c \ lynx-core.c \ osf-core.c \ + rs6000-core.c \ sco5-core.c \ trad-core.c @@ -676,8 +682,10 @@ BFD_BACKENDS = @bfd_backends@ BFD_MACHINES = @bfd_machines@ TDEFAULTS = @tdefaults@ +HAVEVECS = @havevecs@ -INCLUDES = @HDEFINES@ @COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) @INCINTL@ +INCLUDES = @HDEFINES@ @COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) \ + $(HAVEVECS) @INCINTL@ # C source files that correspond to .o's. SOURCE_CFILES = \ @@ -956,3 +964,19 @@ -e "s,@report_bugs_to@,$$report_bugs_to," \ < $(srcdir)/version.h > $@; \ echo "$${bfd_soversion}" > libtool-soversion + +# Disable -Werror, if it has been enabled, since coffswap.h won't +# compile with gcc 4.5 and above. +coff-tic4x.lo: coff-tic4x.c +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR) +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< $(NO_WERROR) + +coff-tic54x.lo: coff-tic54x.c +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR) +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< $(NO_WERROR) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/Makefile.in crash-6.1.6/=unpacked-tar1=/bfd/Makefile.in --- crash-5.1.6/=unpacked-tar1=/bfd/Makefile.in 2009-09-07 09:15:27.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/Makefile.in 2010-12-04 13:00:35.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11 from Makefile.am. +# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -38,6 +38,7 @@ host_triplet = @host@ target_triplet = @target@ @INSTALL_LIBBFD_FALSE@am__append_1 = -rpath $(rpath_bfdlibdir) +@PLUGINS_TRUE@am__append_2 = $(INCDIR)/plugin-api.h subdir = . DIST_COMMON = README ChangeLog $(srcdir)/Makefile.in \ $(srcdir)/Makefile.am $(top_srcdir)/configure \ @@ -49,6 +50,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/gettext-sister.m4 \ + $(top_srcdir)/../config/largefile.m4 \ $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/nls.m4 \ $(top_srcdir)/../config/override.m4 \ @@ -59,7 +61,8 @@ $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ $(top_srcdir)/bfd.m4 $(top_srcdir)/warning.m4 \ - $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in + $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/zlib.m4 \ + $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ @@ -134,8 +137,8 @@ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive -am__bfdinclude_HEADERS_DIST = bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/bfdlink.h +am__bfdinclude_HEADERS_DIST = $(INCDIR)/plugin-api.h bfd.h \ + $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/bfdlink.h HEADERS = $(bfdinclude_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive @@ -275,6 +278,7 @@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ +havevecs = @havevecs@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ @@ -289,7 +293,6 @@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ @@ -325,7 +328,10 @@ libbfd_la_LDFLAGS = $(am__append_1) -release `cat libtool-soversion` \ @SHARED_LDFLAGS@ $(am__empty) @INSTALL_LIBBFD_TRUE@bfdlib_LTLIBRARIES = libbfd.la -@INSTALL_LIBBFD_TRUE@bfdinclude_HEADERS = $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/bfdlink.h +@INSTALL_LIBBFD_FALSE@bfdinclude_HEADERS = $(am__append_2) +@INSTALL_LIBBFD_TRUE@bfdinclude_HEADERS = $(BFD_H) \ +@INSTALL_LIBBFD_TRUE@ $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ +@INSTALL_LIBBFD_TRUE@ $(INCDIR)/bfdlink.h $(am__append_2) @INSTALL_LIBBFD_FALSE@rpath_bfdlibdir = @bfdlibdir@ @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libbfd.la AM_CFLAGS = $(WARN_CFLAGS) @@ -398,7 +404,6 @@ cpu-m68hc12.lo \ cpu-m68k.lo \ cpu-m88k.lo \ - cpu-maxq.lo \ cpu-mcore.lo \ cpu-mep.lo \ cpu-microblaze.lo \ @@ -415,6 +420,7 @@ cpu-plugin.lo \ cpu-powerpc.lo \ cpu-rs6000.lo \ + cpu-rx.lo \ cpu-s390.lo \ cpu-score.lo \ cpu-sh.lo \ @@ -423,6 +429,7 @@ cpu-tic30.lo \ cpu-tic4x.lo \ cpu-tic54x.lo \ + cpu-tic6x.lo \ cpu-tic80.lo \ cpu-v850.lo \ cpu-vax.lo \ @@ -469,7 +476,6 @@ cpu-m68hc12.c \ cpu-m68k.c \ cpu-m88k.c \ - cpu-maxq.c \ cpu-mcore.c \ cpu-mep.c \ cpu-microblaze.c \ @@ -486,6 +492,7 @@ cpu-plugin.c \ cpu-powerpc.c \ cpu-rs6000.c \ + cpu-rx.c \ cpu-s390.c \ cpu-score.c \ cpu-sh.c \ @@ -494,6 +501,7 @@ cpu-tic30.c \ cpu-tic4x.c \ cpu-tic54x.c \ + cpu-tic6x.c \ cpu-tic80.c \ cpu-v850.c \ cpu-vax.c \ @@ -532,7 +540,6 @@ coff-i960.lo \ coff-m68k.lo \ coff-m88k.lo \ - coff-maxq.lo \ coff-mips.lo \ coff-or32.lo \ coff-rs6000.lo \ @@ -603,6 +610,7 @@ elf32-or32.lo \ elf32-pj.lo \ elf32-ppc.lo \ + elf32-rx.lo \ elf32-s390.lo \ elf32-sh-symbian.lo \ elf32-sh.lo \ @@ -610,6 +618,7 @@ elf32-sh64.lo \ elf32-sparc.lo \ elf32-spu.lo \ + elf32-tic6x.lo \ elf32-v850.lo \ elf32-vax.lo \ elf32-xc16x.lo \ @@ -681,11 +690,8 @@ vaxbsd.lo \ vaxnetbsd.lo \ versados.lo \ - vms-gsd.lo \ - vms-hdr.lo \ + vms-lib.lo \ vms-misc.lo \ - vms-tir.lo \ - vms.lo \ xcofflink.lo \ xsym.lo \ xtensa-isa.lo \ @@ -715,7 +721,6 @@ coff-i960.c \ coff-m68k.c \ coff-m88k.c \ - coff-maxq.c \ coff-mips.c \ coff-or32.c \ coff-rs6000.c \ @@ -786,6 +791,7 @@ elf32-or32.c \ elf32-pj.c \ elf32-ppc.c \ + elf32-rx.c \ elf32-s390.c \ elf32-sh-symbian.c \ elf32-sh.c \ @@ -793,6 +799,7 @@ elf32-sh64.c \ elf32-sparc.c \ elf32-spu.c \ + elf32-tic6x.c \ elf32-v850.c \ elf32-vax.c \ elf32-xc16x.c \ @@ -863,11 +870,8 @@ vaxbsd.c \ vaxnetbsd.c \ versados.c \ - vms-gsd.c \ - vms-hdr.c \ + vms-lib.c \ vms-misc.c \ - vms-tir.c \ - vms.c \ xcofflink.c \ xsym.c \ xtensa-isa.c \ @@ -902,6 +906,7 @@ elf64-x86-64.lo \ elf64.lo \ elfn32-mips.lo \ + mach-o-x86-64.lo \ mmo.lo \ nlm32-alpha.lo \ nlm64.lo \ @@ -909,7 +914,8 @@ pei-ia64.lo \ pei-x86_64.lo \ pepigen.lo \ - pex64igen.lo + pex64igen.lo \ + vms-alpha.lo BFD64_BACKENDS_CFILES = \ aix5ppc-core.c \ @@ -932,12 +938,14 @@ elf64-x86-64.c \ elf64.c \ elfn32-mips.c \ + mach-o-x86-64.c \ mmo.c \ nlm32-alpha.c \ nlm64.c \ pe-x86_64.c \ pei-ia64.c \ - pei-x86_64.c + pei-x86_64.c \ + vms-alpha.c OPTIONAL_BACKENDS = \ aix386-core.lo \ @@ -946,6 +954,7 @@ irix-core.lo \ lynx-core.lo \ osf-core.lo \ + rs6000-core.lo \ sco5-core.lo \ trad-core.lo @@ -956,6 +965,7 @@ irix-core.c \ lynx-core.c \ osf-core.c \ + rs6000-core.c \ sco5-core.c \ trad-core.c @@ -975,7 +985,10 @@ BFD_BACKENDS = @bfd_backends@ BFD_MACHINES = @bfd_machines@ TDEFAULTS = @tdefaults@ -INCLUDES = @HDEFINES@ @COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) @INCINTL@ +HAVEVECS = @havevecs@ +INCLUDES = @HDEFINES@ @COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) \ + $(HAVEVECS) @INCINTL@ + # C source files that correspond to .o's. SOURCE_CFILES = \ @@ -1197,7 +1210,6 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-i960.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-m68k.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-m88k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-maxq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-mips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-or32.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coff-rs6000.Plo@am__quote@ @@ -1254,7 +1266,6 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m68hc12.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m68k.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m88k.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-maxq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mcore.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mep.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-microblaze.Plo@am__quote@ @@ -1271,6 +1282,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-plugin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-powerpc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-rs6000.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-rx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-s390.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-score.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-sh.Plo@am__quote@ @@ -1279,6 +1291,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic30.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic4x.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic54x.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic6x.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-tic80.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-v850.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-vax.Plo@am__quote@ @@ -1345,6 +1358,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-or32.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-pj.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-ppc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-rx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-s390.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-score.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-score7.Plo@am__quote@ @@ -1354,6 +1368,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-sh64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-sparc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-spu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-tic6x.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-v850.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-vax.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-xc16x.Plo@am__quote@ @@ -1406,6 +1421,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m88kmach3.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m88kopenbsd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o-i386.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o-x86-64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mach-o.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/merge.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mipsbsd.Plo@am__quote@ @@ -1450,6 +1466,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc16.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/riscix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rs6000-core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sco5-core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/section.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Plo@am__quote@ @@ -1470,11 +1487,9 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vaxnetbsd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/verilog.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/versados.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-gsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-hdr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-alpha.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-lib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-misc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms-tir.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vms.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xcofflink.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xsym.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xtensa-isa.Plo@am__quote@ @@ -1537,7 +1552,7 @@ # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): - @failcom='exit 1'; \ + @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ @@ -1562,7 +1577,7 @@ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ + @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ @@ -1982,6 +1997,22 @@ < $(srcdir)/version.h > $@; \ echo "$${bfd_soversion}" > libtool-soversion +# Disable -Werror, if it has been enabled, since coffswap.h won't +# compile with gcc 4.5 and above. +coff-tic4x.lo: coff-tic4x.c +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR) +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< $(NO_WERROR) + +coff-tic54x.lo: coff-tic54x.c +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR) +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< $(NO_WERROR) + # 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 -Nru crash-5.1.6/=unpacked-tar1=/bfd/acinclude.m4 crash-6.1.6/=unpacked-tar1=/bfd/acinclude.m4 --- crash-5.1.6/=unpacked-tar1=/bfd/acinclude.m4 2009-08-27 05:24:42.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/acinclude.m4 2009-11-24 22:47:19.000000000 +0000 @@ -1,3 +1,5 @@ +sinclude([../config/zlib.m4]) + dnl See whether we need to use fopen-bin.h rather than fopen-same.h. AC_DEFUN([BFD_BINARY_FOPEN], [AC_REQUIRE([AC_CANONICAL_TARGET]) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/aclocal.m4 crash-6.1.6/=unpacked-tar1=/bfd/aclocal.m4 --- crash-5.1.6/=unpacked-tar1=/bfd/aclocal.m4 2009-08-22 16:56:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/aclocal.m4 2010-05-07 12:28:44.000000000 +0000 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.11 -*- Autoconf -*- +# generated automatically by aclocal 1.11.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. @@ -34,7 +34,7 @@ [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11], [], +m4_if([$1], [1.11.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -50,7 +50,7 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11])dnl +[AM_AUTOMAKE_VERSION([1.11.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -971,6 +971,7 @@ m4_include([../config/acx.m4]) m4_include([../config/depstand.m4]) m4_include([../config/gettext-sister.m4]) +m4_include([../config/largefile.m4]) m4_include([../config/lead-dot.m4]) m4_include([../config/nls.m4]) m4_include([../config/override.m4]) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/aix386-core.c crash-6.1.6/=unpacked-tar1=/bfd/aix386-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/aix386-core.c 2009-09-02 07:18:35.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/aix386-core.c 2010-08-18 12:24:04.000000000 +0000 @@ -211,6 +211,8 @@ #define aix386_core_file_matches_executable_p generic_core_file_matches_executable_p +#define aix386_core_file_pid _bfd_nocore_core_file_pid + /* If somebody calls any byte-swapping routines, shoot them. */ static void diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/aout-adobe.c crash-6.1.6/=unpacked-tar1=/bfd/aout-adobe.c --- crash-5.1.6/=unpacked-tar1=/bfd/aout-adobe.c 2009-09-02 07:18:35.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/aout-adobe.c 2009-11-23 14:41:28.000000000 +0000 @@ -468,6 +468,8 @@ #define aout_32_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols #define aout_32_bfd_link_just_syms _bfd_generic_link_just_syms +#define aout_32_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define aout_32_bfd_final_link _bfd_generic_final_link #define aout_32_bfd_link_split_section _bfd_generic_link_split_section diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/aout-arm.c crash-6.1.6/=unpacked-tar1=/bfd/aout-arm.c --- crash-5.1.6/=unpacked-tar1=/bfd/aout-arm.c 2007-07-03 14:26:39.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/aout-arm.c 2010-08-25 07:02:40.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for raw ARM a.out binaries. Copyright 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, - 2007 Free Software Foundation, Inc. + 2007, 2009, 2010 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) This file is part of BFD, the Binary File Descriptor library. @@ -102,7 +102,7 @@ unsigned int r_length; unsigned int r_pcrel_done; unsigned int r_neg; - int index; + int howto_index; *r_pcrel = 0; if (bfd_header_big_endian (abfd)) @@ -127,11 +127,11 @@ r_length = ((rel->r_type[0] & RELOC_STD_BITS_LENGTH_LITTLE) >> RELOC_STD_BITS_LENGTH_SH_LITTLE); } - index = r_length + 4 * r_pcrel_done + 8 * r_neg; - if (index == 3) + howto_index = r_length + 4 * r_pcrel_done + 8 * r_neg; + if (howto_index == 3) *r_pcrel = 1; - return MY (howto_table) + index; + return MY (howto_table) + howto_index; } #define MY_reloc_howto(BFD, REL, IN, EX, PC) \ @@ -296,7 +296,7 @@ #define ASTD(i,j) case i: return & MY (howto_table)[j] if (code == BFD_RELOC_CTOR) - switch (bfd_get_arch_info (abfd)->bits_per_address) + switch (bfd_arch_bits_per_address (abfd)) { case 32: code = BFD_RELOC_32; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/aout-cris.c crash-6.1.6/=unpacked-tar1=/bfd/aout-cris.c --- crash-5.1.6/=unpacked-tar1=/bfd/aout-cris.c 2007-07-03 14:26:39.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/aout-cris.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD backend for CRIS a.out binaries. - Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2007 + Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc. Contributed by Axis Communications AB. Written by Hans-Peter Nilsson. @@ -57,11 +57,6 @@ #define TARGET_PAGE_SIZE SEGMENT_SIZE #define TARGETNAME "a.out-cris" -/* N_SHARED_LIB gets this reasonable default as of 1999-07-12, but we - have to work with 2.9.1. Note that N_SHARED_LIB is used in a - SUN-specific context, not applicable to CRIS. */ -#define N_SHARED_LIB(x) 0 - /* The definition here seems not used; just provided as a convention. */ #define DEFAULT_ARCH bfd_arch_cris diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/aout-ns32k.c crash-6.1.6/=unpacked-tar1=/bfd/aout-ns32k.c --- crash-5.1.6/=unpacked-tar1=/bfd/aout-ns32k.c 2009-09-02 07:18:35.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/aout-ns32k.c 2010-08-25 07:02:40.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for ns32k a.out-ish binaries. Copyright 1990, 1991, 1992, 1994, 1995, 1996, 1998, 1999, 2000, 2001, - 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. + 2002, 2003, 2005, 2006, 2007, 2010 Free Software Foundation, Inc. Contributed by Ian Dall (idall@eleceng.adelaide.edu.au). This file is part of BFD, the Binary File Descriptor library. @@ -214,7 +214,7 @@ BFD_ASSERT (ext == 0); if (code == BFD_RELOC_CTOR) - switch (bfd_get_arch_info (abfd)->bits_per_address) + switch (bfd_arch_bits_per_address (abfd)) { case 32: code = BFD_RELOC_32; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/aout-target.h crash-6.1.6/=unpacked-tar1=/bfd/aout-target.h --- crash-5.1.6/=unpacked-tar1=/bfd/aout-target.h 2009-09-02 07:18:35.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/aout-target.h 2010-08-18 12:24:04.000000000 +0000 @@ -1,6 +1,6 @@ /* Define a target vector and some small routines for a variant of a.out. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -380,6 +380,9 @@ #ifndef MY_read_ar_hdr #define MY_read_ar_hdr _bfd_generic_read_ar_hdr #endif +#ifndef MY_write_ar_hdr +#define MY_write_ar_hdr _bfd_generic_write_ar_hdr +#endif #ifndef MY_truncate_arname #define MY_truncate_arname bfd_bsd_truncate_arname #endif @@ -398,6 +401,9 @@ #define MY_core_file_matches_executable_p \ _bfd_nocore_core_file_matches_executable_p #endif +#ifndef MY_core_file_pid +#define MY_core_file_pid _bfd_nocore_core_file_pid +#endif #ifndef MY_core_file_p #define MY_core_file_p _bfd_dummy_target #endif @@ -523,6 +529,10 @@ #ifndef MY_bfd_link_just_syms #define MY_bfd_link_just_syms _bfd_generic_link_just_syms #endif +#ifndef MY_bfd_copy_link_hash_symbol_type +#define MY_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type +#endif #ifndef MY_bfd_link_split_section #define MY_bfd_link_split_section _bfd_generic_link_split_section #endif diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/aout-tic30.c crash-6.1.6/=unpacked-tar1=/bfd/aout-tic30.c --- crash-5.1.6/=unpacked-tar1=/bfd/aout-tic30.c 2009-09-02 07:18:35.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/aout-tic30.c 2010-08-18 12:24:04.000000000 +0000 @@ -1,5 +1,6 @@ /* BFD back-end for TMS320C30 a.out binaries. - Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009 + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, + 2010 Free Software Foundation, Inc. Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au) @@ -296,7 +297,7 @@ { unsigned int r_length; unsigned int r_pcrel_done; - int index; + int howto_index; *r_pcrel = 0; if (bfd_header_big_endian (abfd)) @@ -313,8 +314,8 @@ r_pcrel_done = (0 != (relocs->r_type[0] & RELOC_STD_BITS_PCREL_LITTLE)); r_length = ((relocs->r_type[0] & RELOC_STD_BITS_LENGTH_LITTLE) >> RELOC_STD_BITS_LENGTH_SH_LITTLE); } - index = r_length + 4 * r_pcrel_done; - return tic30_aout_howto_table + index; + howto_index = r_length + 4 * r_pcrel_done; + return tic30_aout_howto_table + howto_index; } /* These macros will get 24-bit values from the bfd definition. @@ -837,6 +838,9 @@ #ifndef MY_read_ar_hdr #define MY_read_ar_hdr _bfd_generic_read_ar_hdr #endif +#ifndef MY_write_ar_hdr +#define MY_write_ar_hdr _bfd_generic_write_ar_hdr +#endif #ifndef MY_truncate_arname #define MY_truncate_arname bfd_bsd_truncate_arname #endif @@ -855,6 +859,9 @@ #define MY_core_file_matches_executable_p \ _bfd_nocore_core_file_matches_executable_p #endif +#ifndef MY_core_file_pid +#define MY_core_file_pid _bfd_nocore_core_file_pid +#endif #ifndef MY_core_file_p #define MY_core_file_p _bfd_dummy_target #endif @@ -980,6 +987,10 @@ #ifndef MY_bfd_link_just_syms #define MY_bfd_link_just_syms _bfd_generic_link_just_syms #endif +#ifndef MY_bfd_copy_link_hash_symbol_type +#define MY_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type +#endif #ifndef MY_bfd_link_split_section #define MY_bfd_link_split_section _bfd_generic_link_split_section #endif diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/aoutx.h crash-6.1.6/=unpacked-tar1=/bfd/aoutx.h --- crash-5.1.6/=unpacked-tar1=/bfd/aoutx.h 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/aoutx.h 2011-03-03 23:47:21.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD semi-generic back-end for a.out binaries. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -269,7 +269,7 @@ int ext = obj_reloc_entry_size (abfd) == RELOC_EXT_SIZE; if (code == BFD_RELOC_CTOR) - switch (bfd_get_arch_info (abfd)->bits_per_address) + switch (bfd_arch_bits_per_address (abfd)) { case 32: code = BFD_RELOC_32; @@ -629,7 +629,9 @@ if (execp->a_entry != 0 || (execp->a_entry >= obj_textsec (abfd)->vma && execp->a_entry < (obj_textsec (abfd)->vma - + obj_textsec (abfd)->size))) + + obj_textsec (abfd)->size) + && execp->a_trsize == 0 + && execp->a_drsize == 0)) abfd->flags |= EXEC_P; #ifdef STAT_FOR_EXEC else @@ -1808,7 +1810,7 @@ bfd_boolean copy) { bfd_boolean hash; - bfd_size_type index; + bfd_size_type str_index; /* An index of 0 always means the empty string. */ if (str == 0 || *str == '\0') @@ -1820,14 +1822,14 @@ if ((abfd->flags & BFD_TRADITIONAL_FORMAT) != 0) hash = FALSE; - index = _bfd_stringtab_add (tab, str, hash, copy); + str_index = _bfd_stringtab_add (tab, str, hash, copy); - if (index != (bfd_size_type) -1) + if (str_index != (bfd_size_type) -1) /* Add BYTES_IN_WORD to the return value to account for the space taken up by the string table size. */ - index += BYTES_IN_WORD; + str_index += BYTES_IN_WORD; - return index; + return str_index; } /* Write out a strtab. ABFD is already at the right location in the @@ -3208,7 +3210,8 @@ static bfd_boolean aout_link_check_ar_symbols (bfd *abfd, struct bfd_link_info *info, - bfd_boolean *pneeded) + bfd_boolean *pneeded, + bfd **subsbfd) { struct external_nlist *p; struct external_nlist *pend; @@ -3284,7 +3287,7 @@ { int skip = 0; - switch (info->common_skip_ar_aymbols) + switch (info->common_skip_ar_symbols) { case bfd_link_common_skip_text: skip = (type == (N_TEXT | N_EXT)); @@ -3302,7 +3305,8 @@ continue; } - if (! (*info->callbacks->add_archive_element) (info, abfd, name)) + if (!(*info->callbacks + ->add_archive_element) (info, abfd, name, subsbfd)) return FALSE; *pneeded = TRUE; return TRUE; @@ -3329,9 +3333,8 @@ outside BFD. We assume that we should link in the object file. This is done for the -u option in the linker. */ - if (! (*info->callbacks->add_archive_element) (info, - abfd, - name)) + if (!(*info->callbacks + ->add_archive_element) (info, abfd, name, subsbfd)) return FALSE; *pneeded = TRUE; return TRUE; @@ -3340,8 +3343,8 @@ symbol. It is already on the undefs list. */ h->type = bfd_link_hash_common; h->u.c.p = (struct bfd_link_hash_common_entry *) - bfd_hash_allocate (&info->hash->table, - sizeof (struct bfd_link_hash_common_entry)); + bfd_hash_allocate (&info->hash->table, + sizeof (struct bfd_link_hash_common_entry)); if (h->u.c.p == NULL) return FALSE; @@ -3379,7 +3382,8 @@ it if the current link symbol is common. */ if (h->type == bfd_link_hash_undefined) { - if (! (*info->callbacks->add_archive_element) (info, abfd, name)) + if (!(*info->callbacks + ->add_archive_element) (info, abfd, name, subsbfd)) return FALSE; *pneeded = TRUE; return TRUE; @@ -3400,21 +3404,36 @@ struct bfd_link_info *info, bfd_boolean *pneeded) { - if (! aout_get_external_symbols (abfd)) + bfd *oldbfd; + bfd_boolean needed; + + if (!aout_get_external_symbols (abfd)) return FALSE; - if (! aout_link_check_ar_symbols (abfd, info, pneeded)) + oldbfd = abfd; + if (!aout_link_check_ar_symbols (abfd, info, pneeded, &abfd)) return FALSE; - if (*pneeded) + needed = *pneeded; + if (needed) { - if (! aout_link_add_symbols (abfd, info)) + /* Potentially, the add_archive_element hook may have set a + substitute BFD for us. */ + if (abfd != oldbfd) + { + if (!info->keep_memory + && !aout_link_free_symbols (oldbfd)) + return FALSE; + if (!aout_get_external_symbols (abfd)) + return FALSE; + } + if (!aout_link_add_symbols (abfd, info)) return FALSE; } - if (! info->keep_memory || ! *pneeded) + if (!info->keep_memory || !needed) { - if (! aout_link_free_symbols (abfd)) + if (!aout_link_free_symbols (abfd)) return FALSE; } @@ -3618,6 +3637,7 @@ case bfd_link_hash_undefweak: type = N_WEAKU; val = 0; + break; case bfd_link_hash_indirect: /* We ignore these symbols, since the indirected symbol is already in the hash table. */ @@ -5233,8 +5253,6 @@ static bfd_boolean aout_link_input_bfd (struct aout_final_link_info *finfo, bfd *input_bfd) { - bfd_size_type sym_count; - BFD_ASSERT (bfd_get_format (input_bfd) == bfd_object); /* If this is a dynamic object, it may need special handling. */ @@ -5248,8 +5266,6 @@ if (! aout_get_external_symbols (input_bfd)) return FALSE; - sym_count = obj_aout_external_sym_count (input_bfd); - /* Write out the symbols and get a map of the new indices. The map is placed into finfo->symbol_map. */ if (! aout_link_write_symbols (finfo, input_bfd)) @@ -5433,7 +5449,7 @@ /* Allocate buffers to hold section contents and relocs. */ aout_info.contents = (bfd_byte *) bfd_malloc (max_contents_size); aout_info.relocs = bfd_malloc (max_relocs_size); - aout_info.symbol_map = (int *) bfd_malloc (max_sym_count * sizeof (int *)); + aout_info.symbol_map = (int *) bfd_malloc (max_sym_count * sizeof (int)); aout_info.output_syms = (struct external_nlist *) bfd_malloc ((max_sym_count + 1) * sizeof (struct external_nlist)); if ((aout_info.contents == NULL && max_contents_size != 0) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/archive.c crash-6.1.6/=unpacked-tar1=/bfd/archive.c --- crash-5.1.6/=unpacked-tar1=/bfd/archive.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/archive.c 2011-03-04 01:43:24.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for archive files (libraries). Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Written by Cygnus Support. Mostly Gumby Henkel-Wallace's fault. @@ -104,7 +104,6 @@ BSD 4.4 uses a third scheme: It writes a long filename directly after the header. This allows 'ar q' to work. - We currently can read BSD 4.4 archives, but not write them. */ /* Summary of archive member names: @@ -125,7 +124,6 @@ "/18 " - SVR4 style, name at offset 18 in name table. "#1/23 " - Long name (or embedded spaces) 23 characters long, BSD 4.4 style, full name follows header. - Implemented for reading, not writing. " 18 " - Long name 18 characters long, extended pseudo-BSD. */ @@ -159,6 +157,11 @@ #define arch_eltdata(bfd) ((struct areltdata *) ((bfd)->arelt_data)) #define arch_hdr(bfd) ((struct ar_hdr *) arch_eltdata (bfd)->arch_header) + +/* True iff NAME designated a BSD 4.4 extended name. */ + +#define is_bsd44_extended_name(NAME) \ + (NAME[0] == '#' && NAME[1] == '1' && NAME[2] == '/' && ISDIGIT (NAME[3])) void _bfd_ar_spacepad (char *p, size_t n, const char *fmt, long val) @@ -300,6 +303,15 @@ return arc1->ptr == arc2->ptr; } +/* The calloc function doesn't always take size_t (e.g. on VMS) + so wrap it to avoid a compile time warning. */ + +static void * +_bfd_calloc_wrapper (size_t a, size_t b) +{ + return calloc (a, b); +} + /* Kind of stupid to call cons for each one, but we don't do too many. */ bfd_boolean @@ -312,7 +324,7 @@ if (hash_table == NULL) { hash_table = htab_create_alloc (16, hash_file_ptr, eq_file_ptr, - NULL, calloc, free); + NULL, _bfd_calloc_wrapper, free); if (hash_table == NULL) return FALSE; bfd_ardata (arch_bfd)->cache = hash_table; @@ -336,7 +348,7 @@ abfd != NULL; abfd = abfd->archive_next) { - if (strcmp (filename, abfd->filename) == 0) + if (filename_cmp (filename, abfd->filename) == 0) return abfd; } abfd = bfd_openr (filename, NULL); @@ -354,15 +366,15 @@ static char * get_extended_arelt_filename (bfd *arch, const char *name, file_ptr *originp) { - unsigned long index = 0; + unsigned long table_index = 0; const char *endp; /* Should extract string so that I can guarantee not to overflow into the next region, but I'm too lazy. */ errno = 0; /* Skip first char, which is '/' in SVR4 or ' ' in some other variants. */ - index = strtol (name + 1, (char **) &endp, 10); - if (errno != 0 || index >= bfd_ardata (arch)->extended_names_size) + table_index = strtol (name + 1, (char **) &endp, 10); + if (errno != 0 || table_index >= bfd_ardata (arch)->extended_names_size) { bfd_set_error (bfd_error_malformed_archive); return NULL; @@ -383,7 +395,7 @@ else *originp = 0; - return bfd_ardata (arch)->extended_names + index; + return bfd_ardata (arch)->extended_names + table_index; } /* This functions reads an arch header and returns an areltdata pointer, or @@ -415,6 +427,7 @@ bfd_size_type allocsize = sizeof (struct areltdata) + sizeof (struct ar_hdr); char *allocptr = 0; file_ptr origin = 0; + unsigned int extra_size = 0; if (bfd_bread (hdrp, sizeof (struct ar_hdr), abfd) != sizeof (struct ar_hdr)) { @@ -450,17 +463,14 @@ if (filename == NULL) return NULL; } - /* BSD4.4-style long filename. - Only implemented for reading, so far! */ - else if (hdr.ar_name[0] == '#' - && hdr.ar_name[1] == '1' - && hdr.ar_name[2] == '/' - && ISDIGIT (hdr.ar_name[3])) + /* BSD4.4-style long filename. */ + else if (is_bsd44_extended_name (hdr.ar_name)) { /* BSD-4.4 extended name */ namelen = atoi (&hdr.ar_name[3]); allocsize += namelen + 1; parsed_size -= namelen; + extra_size = namelen; allocptr = (char *) bfd_zalloc (abfd, allocsize); if (allocptr == NULL) @@ -515,6 +525,7 @@ ared->arch_header = allocptr + sizeof (struct areltdata); memcpy (ared->arch_header, &hdr, sizeof (struct ar_hdr)); ared->parsed_size = parsed_size; + ared->extra_size = extra_size; ared->origin = origin; if (filename != NULL) @@ -534,8 +545,8 @@ /* Append the relative pathname for a member of the thin archive to the pathname of the directory containing the archive. */ -static char * -append_relative_path (bfd *arch, char *elt_name) +char * +_bfd_append_relative_path (bfd *arch, char *elt_name) { const char *arch_name = arch->filename; const char *base_name = lbasename (arch_name); @@ -589,7 +600,7 @@ /* This is a proxy entry for an external file. */ if (! IS_ABSOLUTE_PATH (filename)) { - filename = append_relative_path (archive, filename); + filename = _bfd_append_relative_path (archive, filename); if (filename == NULL) return NULL; } @@ -644,6 +655,9 @@ n_nfd->arelt_data = new_areldata; + /* Copy BFD_COMPRESS and BFD_DECOMPRESS flags. */ + n_nfd->flags |= archive->flags & (BFD_COMPRESS | BFD_DECOMPRESS); + if (_bfd_add_bfd_to_archive_cache (archive, filepos, n_nfd)) return n_nfd; @@ -656,14 +670,14 @@ } /* Return the BFD which is referenced by the symbol in ABFD indexed by - INDEX. INDEX should have been returned by bfd_get_next_mapent. */ + SYM_INDEX. SYM_INDEX should have been returned by bfd_get_next_mapent. */ bfd * -_bfd_generic_get_elt_at_index (bfd *abfd, symindex index) +_bfd_generic_get_elt_at_index (bfd *abfd, symindex sym_index) { carsym *entry; - entry = bfd_ardata (abfd)->symdefs + index; + entry = bfd_ardata (abfd)->symdefs + sym_index; return _bfd_get_elt_at_filepos (abfd, entry->file_offset); } @@ -1054,6 +1068,25 @@ return FALSE; #endif } + else if (CONST_STRNEQ (nextname, "#1/20 ")) + { + /* Mach-O has a special name for armap when the map is sorted by name. + However because this name has a space it is slightly more difficult + to check it. */ + struct ar_hdr hdr; + char extname[21]; + + if (bfd_bread (&hdr, sizeof (hdr), abfd) != sizeof (hdr)) + return FALSE; + /* Read the extended name. We know its length. */ + if (bfd_bread (extname, 20, abfd) != 20) + return FALSE; + if (bfd_seek (abfd, (file_ptr) -(sizeof (hdr) + 20), SEEK_CUR) != 0) + return FALSE; + if (CONST_STRNEQ (extname, "__.SYMDEF SORTED") + || CONST_STRNEQ (extname, "__.SYMDEF")) + return do_slurp_bsd_armap (abfd); + } bfd_has_map (abfd) = FALSE; return TRUE; @@ -1076,6 +1109,7 @@ struct artdata *ardata = bfd_ardata (abfd); char *stringbase; unsigned int stringsize; + unsigned int left; bfd_size_type amt; carsym *set; int i = bfd_bread (nextname, 16, abfd); @@ -1103,43 +1137,46 @@ if (mapdata == NULL) return FALSE; - amt = mapdata->parsed_size; - raw_armap = (bfd_byte *) bfd_zalloc (abfd, amt); - if (raw_armap == NULL) + if (mapdata->parsed_size < HPUX_SYMDEF_COUNT_SIZE + BSD_STRING_COUNT_SIZE) { + wrong_format: + bfd_set_error (bfd_error_wrong_format); byebye: bfd_release (abfd, mapdata); return FALSE; } + left = mapdata->parsed_size - HPUX_SYMDEF_COUNT_SIZE - BSD_STRING_COUNT_SIZE; + + amt = mapdata->parsed_size; + raw_armap = (bfd_byte *) bfd_zalloc (abfd, amt); + if (raw_armap == NULL) + goto byebye; if (bfd_bread (raw_armap, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_malformed_archive); - byebyebye: - bfd_release (abfd, raw_armap); goto byebye; } ardata->symdef_count = H_GET_16 (abfd, raw_armap); - if (ardata->symdef_count * BSD_SYMDEF_SIZE - > mapdata->parsed_size - HPUX_SYMDEF_COUNT_SIZE) - { - /* Probably we're using the wrong byte ordering. */ - bfd_set_error (bfd_error_wrong_format); - goto byebyebye; - } - ardata->cache = 0; stringsize = H_GET_32 (abfd, raw_armap + HPUX_SYMDEF_COUNT_SIZE); + if (stringsize > left) + goto wrong_format; + left -= stringsize; + /* Skip sym count and string sz. */ stringbase = ((char *) raw_armap + HPUX_SYMDEF_COUNT_SIZE + BSD_STRING_COUNT_SIZE); rbase = (bfd_byte *) stringbase + stringsize; amt = ardata->symdef_count * BSD_SYMDEF_SIZE; + if (amt > left) + goto wrong_format; + ardata->symdefs = (struct carsym *) bfd_alloc (abfd, amt); if (!ardata->symdefs) return FALSE; @@ -1183,7 +1220,9 @@ /* FIXME: Formatting sucks here, and in case of failure of BFD_READ, we probably don't want to return TRUE. */ - bfd_seek (abfd, bfd_ardata (abfd)->first_file_filepos, SEEK_SET); + if (bfd_seek (abfd, bfd_ardata (abfd)->first_file_filepos, SEEK_SET) != 0) + return FALSE; + if (bfd_bread (nextname, 16, abfd) == 16) { if (bfd_seek (abfd, (file_ptr) -16, SEEK_CUR) != 0) @@ -1294,23 +1333,7 @@ static const char * normalize (bfd *abfd ATTRIBUTE_UNUSED, const char *file) { - const char *filename = strrchr (file, '/'); - -#ifdef HAVE_DOS_BASED_FILE_SYSTEM - { - /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */ - char *bslash = strrchr (file, '\\'); - if (filename == NULL || (bslash != NULL && bslash > filename)) - filename = bslash; - if (filename == NULL && file[0] != '\0' && file[1] == ':') - filename = file + 1; - } -#endif - if (filename != NULL) - filename++; - else - filename = file; - return filename; + return lbasename (file); } #endif @@ -1338,7 +1361,7 @@ while (*e2 && ! IS_DIR_SEPARATOR (*e2)) ++e2; if (*e1 == '\0' || *e2 == '\0' || e1 - pathp != e2 - refp - || strncmp (pathp, refp, e1 - pathp) != 0) + || filename_ncmp (pathp, refp, e1 - pathp) != 0) break; pathp = e1 + 1; refp = e2 + 1; @@ -1443,7 +1466,7 @@ /* If the path is the same as the previous path seen, reuse it. This can happen when flattening a thin archive that contains other archives. */ - if (last_filename && strcmp (last_filename, filename) == 0) + if (last_filename && filename_cmp (last_filename, filename) == 0) continue; last_filename = filename; @@ -1489,7 +1512,7 @@ else { struct ar_hdr *hdr = arch_hdr (current); - if (strncmp (normal, hdr->ar_name, thislen) != 0 + if (filename_ncmp (normal, hdr->ar_name, thislen) != 0 || (thislen < sizeof hdr->ar_name && hdr->ar_name[thislen] != ar_padchar (current))) { @@ -1537,7 +1560,7 @@ archive that contains other archives. If the path is relative, adjust it relative to the containing archive. */ - if (last_filename && strcmp (last_filename, filename) == 0) + if (last_filename && filename_cmp (last_filename, filename) == 0) normal = last_filename; else if (! IS_ABSOLUTE_PATH (filename) && ! IS_ABSOLUTE_PATH (abfd->filename)) @@ -1597,6 +1620,103 @@ return TRUE; } + +/* Do not construct an extended name table but transforms name field into + its extended form. */ + +bfd_boolean +_bfd_archive_bsd44_construct_extended_name_table (bfd *abfd, + char **tabloc, + bfd_size_type *tablen, + const char **name) +{ + unsigned int maxname = abfd->xvec->ar_max_namelen; + bfd *current; + + *tablen = 0; + *tabloc = NULL; + *name = NULL; + + for (current = abfd->archive_head; + current != NULL; + current = current->archive_next) + { + const char *normal = normalize (current, current->filename); + int has_space = 0; + unsigned int len; + + if (normal == NULL) + return FALSE; + + for (len = 0; normal[len]; len++) + if (normal[len] == ' ') + has_space = 1; + + if (len > maxname || has_space) + { + struct ar_hdr *hdr = arch_hdr (current); + + len = (len + 3) & ~3; + arch_eltdata (current)->extra_size = len; + _bfd_ar_spacepad (hdr->ar_name, maxname, "#1/%lu", len); + } + } + + return TRUE; +} + +/* Write an archive header. */ + +bfd_boolean +_bfd_generic_write_ar_hdr (bfd *archive, bfd *abfd) +{ + struct ar_hdr *hdr = arch_hdr (abfd); + + if (bfd_bwrite (hdr, sizeof (*hdr), archive) != sizeof (*hdr)) + return FALSE; + return TRUE; +} + +/* Write an archive header using BSD4.4 convention. */ + +bfd_boolean +_bfd_bsd44_write_ar_hdr (bfd *archive, bfd *abfd) +{ + struct ar_hdr *hdr = arch_hdr (abfd); + + if (is_bsd44_extended_name (hdr->ar_name)) + { + /* This is a BSD 4.4 extended name. */ + const char *fullname = normalize (abfd, abfd->filename); + unsigned int len = strlen (fullname); + unsigned int padded_len = (len + 3) & ~3; + + BFD_ASSERT (padded_len == arch_eltdata (abfd)->extra_size); + + _bfd_ar_spacepad (hdr->ar_size, sizeof (hdr->ar_size), "%-10ld", + arch_eltdata (abfd)->parsed_size + padded_len); + + if (bfd_bwrite (hdr, sizeof (*hdr), archive) != sizeof (*hdr)) + return FALSE; + + if (bfd_bwrite (fullname, len, archive) != len) + return FALSE; + if (len & 3) + { + static const char pad[3] = { 0, 0, 0 }; + + len = 4 - (len & 3); + if (bfd_bwrite (pad, len, archive) != len) + return FALSE; + } + } + else + { + if (bfd_bwrite (hdr, sizeof (*hdr), archive) != sizeof (*hdr)) + return FALSE; + } + return TRUE; +} /* A couple of functions for creating ar_hdrs. */ @@ -1703,22 +1823,6 @@ return ared; } -/* This is magic required by the "ar" program. Since it's - undocumented, it's undocumented. You may think that it would take - a strong stomach to write this, and it does, but it takes even a - stronger stomach to try to code around such a thing! */ - -struct ar_hdr *bfd_special_undocumented_glue (bfd *, const char *); - -struct ar_hdr * -bfd_special_undocumented_glue (bfd *abfd, const char *filename) -{ - struct areltdata *ar_elt = bfd_ar_hdr_from_filesystem (abfd, filename, 0); - if (ar_elt == NULL) - return NULL; - return (struct ar_hdr *) ar_elt->arch_header; -} - /* Analogous to stat call. */ int @@ -1818,25 +1922,9 @@ { struct ar_hdr *hdr = (struct ar_hdr *) arhdr; size_t length; - const char *filename = strrchr (pathname, '/'); + const char *filename = lbasename (pathname); size_t maxlen = ar_maxnamelen (abfd); -#ifdef HAVE_DOS_BASED_FILE_SYSTEM - { - /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */ - char *bslash = strrchr (pathname, '\\'); - if (filename == NULL || (bslash != NULL && bslash > filename)) - filename = bslash; - if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':') - filename = pathname + 1; - } -#endif - - if (filename == NULL) - filename = pathname; - else - ++filename; - length = strlen (filename); if (length <= maxlen) @@ -1866,26 +1954,9 @@ { struct ar_hdr *hdr = (struct ar_hdr *) arhdr; size_t length; - const char *filename = strrchr (pathname, '/'); + const char *filename = lbasename (pathname); size_t maxlen = ar_maxnamelen (abfd); -#ifdef HAVE_DOS_BASED_FILE_SYSTEM - { - /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */ - char *bslash = strrchr (pathname, '\\'); - - if (filename == NULL || (bslash != NULL && bslash > filename)) - filename = bslash; - if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':') - filename = pathname + 1; - } -#endif - - if (filename == NULL) - filename = pathname; - else - ++filename; - length = strlen (filename); if (length <= maxlen) @@ -2004,12 +2075,10 @@ { char buffer[DEFAULT_BUFFERSIZE]; unsigned int remaining = arelt_size (current); - struct ar_hdr *hdr = arch_hdr (current); /* Write ar header. */ - if (bfd_bwrite (hdr, sizeof (*hdr), arch) - != sizeof (*hdr)) - return FALSE; + if (!_bfd_write_ar_hdr (arch, current)) + return FALSE; if (bfd_is_thin_archive (arch)) continue; if (bfd_seek (current, (file_ptr) 0, SEEK_SET) != 0) @@ -2145,6 +2214,7 @@ if ((flags & BSF_GLOBAL || flags & BSF_WEAK || flags & BSF_INDIRECT + || flags & BSF_GNU_UNIQUE || bfd_is_com_section (sec)) && ! bfd_is_und_section (sec)) { @@ -2231,31 +2301,28 @@ bfd_byte temp[4]; unsigned int count; struct ar_hdr hdr; - struct stat statbuf; long uid, gid; firstreal = mapsize + elength + sizeof (struct ar_hdr) + SARMAG; - stat (arch->filename, &statbuf); + /* If deterministic, we use 0 as the timestamp in the map. + Some linkers may require that the archive filesystem modification + time is less than (or near to) the archive map timestamp. Those + linkers should not be used with deterministic mode. (GNU ld and + Gold do not have this restriction.) */ + bfd_ardata (arch)->armap_timestamp = 0; + uid = 0; + gid = 0; if ((arch->flags & BFD_DETERMINISTIC_OUTPUT) == 0) { - /* Remember the timestamp, to keep it holy. But fudge it a little. */ - bfd_ardata (arch)->armap_timestamp = (statbuf.st_mtime - + ARMAP_TIME_OFFSET); + struct stat statbuf; + + if (stat (arch->filename, &statbuf) == 0) + bfd_ardata (arch)->armap_timestamp = (statbuf.st_mtime + + ARMAP_TIME_OFFSET); uid = getuid(); gid = getgid(); } - else - { - /* If deterministic, we use 0 as the timestamp in the map. - Some linkers may require that the archive filesystem modification - time is less than (or near to) the archive map timestamp. Those - linkers should not be used with deterministic mode. (GNU ld and - Gold do not have this restriction.) */ - bfd_ardata (arch)->armap_timestamp = 0; - uid = 0; - gid = 0; - } memset (&hdr, ' ', sizeof (struct ar_hdr)); memcpy (hdr.ar_name, RANLIBMAG, strlen (RANLIBMAG)); @@ -2282,7 +2349,10 @@ { do { - firstreal += arelt_size (current) + sizeof (struct ar_hdr); + struct areltdata *ared = arch_eltdata (current); + + firstreal += (ared->parsed_size + ared->extra_size + + sizeof (struct ar_hdr)); firstreal += firstreal % 2; current = current->archive_next; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/archive64.c crash-6.1.6/=unpacked-tar1=/bfd/archive64.c --- crash-5.1.6/=unpacked-tar1=/bfd/archive64.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/archive64.c 2010-06-23 10:21:16.000000000 +0000 @@ -1,6 +1,6 @@ /* MIPS-specific support for 64-bit ELF - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007 - Free Software Foundation, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, + 2010 Free Software Foundation, Inc. Ian Lance Taylor, Cygnus Support Linker support added by Mark Mitchell, CodeSourcery, LLC. @@ -43,7 +43,6 @@ { 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]; @@ -55,7 +54,6 @@ ardata->symdefs = NULL; /* Get the name of the first element. */ - arhdrpos = bfd_tell (abfd); i = bfd_bread (nextname, 16, abfd); if (i == 0) return TRUE; @@ -196,27 +194,27 @@ /* 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 != NULL && count < symbol_count) + for (current = arch->archive_head; + current != NULL && count < symbol_count; + current = current->archive_next) { /* 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) + for (; + count < symbol_count && map[count].u.abfd == current; + count++) { bfd_putb64 ((bfd_vma) archive_member_file_ptr, buf); if (bfd_bwrite (buf, 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->archive_next; } /* now write the strings themselves */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/archures.c crash-6.1.6/=unpacked-tar1=/bfd/archures.c --- crash-5.1.6/=unpacked-tar1=/bfd/archures.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/archures.c 2011-03-22 18:10:41.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD library support routines for architectures. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Hacked by John Gilmore and Steve Chamberlain of Cygnus Support. @@ -173,6 +173,7 @@ .#define bfd_mach_mips5 5 .#define bfd_mach_mips_loongson_2e 3001 .#define bfd_mach_mips_loongson_2f 3002 +.#define bfd_mach_mips_loongson_3a 3003 .#define bfd_mach_mips_sb1 12310201 {* octal 'SB', 01 *} .#define bfd_mach_mips_octeon 6501 .#define bfd_mach_mips_xlr 887682 {* decimal 'XLR' *} @@ -184,6 +185,8 @@ .#define bfd_mach_i386_i386 1 .#define bfd_mach_i386_i8086 2 .#define bfd_mach_i386_i386_intel_syntax 3 +.#define bfd_mach_x64_32 32 +.#define bfd_mach_x64_32_intel_syntax 33 .#define bfd_mach_x86_64 64 .#define bfd_mach_x86_64_intel_syntax 65 . bfd_arch_l1om, {* Intel L1OM *} @@ -230,6 +233,8 @@ .#define bfd_mach_ppc_7400 7400 .#define bfd_mach_ppc_e500 500 .#define bfd_mach_ppc_e500mc 5001 +.#define bfd_mach_ppc_e500mc64 5005 +.#define bfd_mach_ppc_titan 83 . bfd_arch_rs6000, {* IBM RS/6000 *} .#define bfd_mach_rs6k 6000 .#define bfd_mach_rs6k_rs1 6001 @@ -303,11 +308,14 @@ .#define bfd_mach_tic3x 30 .#define bfd_mach_tic4x 40 . bfd_arch_tic54x, {* Texas Instruments TMS320C54X *} +. bfd_arch_tic6x, {* Texas Instruments TMS320C6X *} . bfd_arch_tic80, {* TI TMS320c80 (MVP) *} . bfd_arch_v850, {* NEC V850 *} .#define bfd_mach_v850 1 .#define bfd_mach_v850e 'E' -.#define bfd_mach_v850e1 '1' +.#define bfd_mach_v850e1 '1' +.#define bfd_mach_v850e2 0x4532 +.#define bfd_mach_v850e2v3 0x45325633 . bfd_arch_arc, {* ARC Cores *} .#define bfd_mach_arc_5 5 .#define bfd_mach_arc_6 6 @@ -368,6 +376,13 @@ .#define bfd_mach_avr5 5 .#define bfd_mach_avr51 51 .#define bfd_mach_avr6 6 +.#define bfd_mach_avrxmega1 101 +.#define bfd_mach_avrxmega2 102 +.#define bfd_mach_avrxmega3 103 +.#define bfd_mach_avrxmega4 104 +.#define bfd_mach_avrxmega5 105 +.#define bfd_mach_avrxmega6 106 +.#define bfd_mach_avrxmega7 107 . bfd_arch_bfin, {* ADI Blackfin *} .#define bfd_mach_bfin 1 . bfd_arch_cr16, {* National Semiconductor CompactRISC (ie CR16). *} @@ -380,6 +395,8 @@ .#define bfd_mach_cris_v0_v10 255 .#define bfd_mach_cris_v32 32 .#define bfd_mach_cris_v10_v32 1032 +. bfd_arch_rx, {* Renesas RX. *} +.#define bfd_mach_rx 0x75 . bfd_arch_s390, {* IBM s390 *} .#define bfd_mach_s390_31 31 .#define bfd_mach_s390_64 64 @@ -412,9 +429,6 @@ .#define bfd_mach_xc16xs 3 . bfd_arch_xtensa, {* Tensilica's Xtensa cores. *} .#define bfd_mach_xtensa 1 -. bfd_arch_maxq, {* Dallas MAXQ 10/20 *} -.#define bfd_mach_maxq10 10 -.#define bfd_mach_maxq20 20 . bfd_arch_z80, .#define bfd_mach_z80strict 1 {* No undocumented opcodes. *} .#define bfd_mach_z80 3 {* With ixl, ixh, iyl, and iyh. *} @@ -493,7 +507,6 @@ 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_maxq_arch; extern const bfd_arch_info_type bfd_mcore_arch; extern const bfd_arch_info_type bfd_mep_arch; extern const bfd_arch_info_type bfd_mips_arch; @@ -513,6 +526,7 @@ 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_rx_arch; extern const bfd_arch_info_type bfd_s390_arch; extern const bfd_arch_info_type bfd_score_arch; extern const bfd_arch_info_type bfd_sh_arch; @@ -521,6 +535,7 @@ extern const bfd_arch_info_type bfd_tic30_arch; extern const bfd_arch_info_type bfd_tic4x_arch; extern const bfd_arch_info_type bfd_tic54x_arch; +extern const bfd_arch_info_type bfd_tic6x_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; @@ -569,7 +584,6 @@ &bfd_m68hc12_arch, &bfd_m68k_arch, &bfd_m88k_arch, - &bfd_maxq_arch, &bfd_mcore_arch, &bfd_mep_arch, &bfd_microblaze_arch, @@ -586,6 +600,7 @@ &bfd_pdp11_arch, &bfd_powerpc_arch, &bfd_rs6000_arch, + &bfd_rx_arch, &bfd_s390_arch, &bfd_score_arch, &bfd_sh_arch, @@ -594,6 +609,7 @@ &bfd_tic30_arch, &bfd_tic4x_arch, &bfd_tic54x_arch, + &bfd_tic6x_arch, &bfd_tic80_arch, &bfd_v850_arch, &bfd_vax_arch, diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/bfd-in.h crash-6.1.6/=unpacked-tar1=/bfd/bfd-in.h --- crash-5.1.6/=unpacked-tar1=/bfd/bfd-in.h 2009-09-02 07:18:35.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/bfd-in.h 2010-11-08 02:48:54.000000000 +0000 @@ -1,7 +1,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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. @@ -294,7 +294,7 @@ (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \ / bfd_octets_per_byte (bfd)) -/* Return TRUE if section has been discarded. */ +/* Return TRUE if input section SEC has been discarded. */ #define elf_discarded_section(sec) \ (!bfd_is_abs_section (sec) \ && bfd_is_abs_section ((sec)->output_section) \ @@ -404,6 +404,10 @@ extern struct bfd_hash_entry *bfd_hash_insert (struct bfd_hash_table *, const char *, unsigned long); +/* Rename an entry in a hash table. */ +extern void bfd_hash_rename + (struct bfd_hash_table *, const char *, struct bfd_hash_entry *); + /* Replace an entry in a hash table. */ extern void bfd_hash_replace (struct bfd_hash_table *, struct bfd_hash_entry *old, @@ -635,8 +639,8 @@ extern bfd_boolean bfd_elf_get_bfd_needed_list (bfd *, struct bfd_link_needed_list **); extern bfd_boolean bfd_elf_size_dynamic_sections - (bfd *, const char *, const char *, const char *, const char * const *, - struct bfd_link_info *, struct bfd_section **, + (bfd *, const char *, const char *, const char *, const char *, const char *, + const char * const *, struct bfd_link_info *, struct bfd_section **, struct bfd_elf_version_tree *); extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr (bfd *, struct bfd_link_info *); @@ -906,7 +910,14 @@ /* ARM unwind section editing support. */ extern bfd_boolean elf32_arm_fix_exidx_coverage - (struct bfd_section **, unsigned int, struct bfd_link_info *); +(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean); + +/* PowerPC @tls opcode transform/validate. */ +extern unsigned int _bfd_elf_ppc_at_tls_transform + (unsigned int, unsigned int); +/* PowerPC @tprel opcode transform/validate. */ +extern unsigned int _bfd_elf_ppc_at_tprel_transform + (unsigned int, unsigned int); /* TI COFF load page support. */ extern void bfd_ticoff_set_section_load_page diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/bfd-in2.h crash-6.1.6/=unpacked-tar1=/bfd/bfd-in2.h --- crash-5.1.6/=unpacked-tar1=/bfd/bfd-in2.h 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/bfd-in2.h 2011-03-31 08:58:19.000000000 +0000 @@ -8,7 +8,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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. @@ -301,7 +301,7 @@ (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \ / bfd_octets_per_byte (bfd)) -/* Return TRUE if section has been discarded. */ +/* Return TRUE if input section SEC has been discarded. */ #define elf_discarded_section(sec) \ (!bfd_is_abs_section (sec) \ && bfd_is_abs_section ((sec)->output_section) \ @@ -411,6 +411,10 @@ extern struct bfd_hash_entry *bfd_hash_insert (struct bfd_hash_table *, const char *, unsigned long); +/* Rename an entry in a hash table. */ +extern void bfd_hash_rename + (struct bfd_hash_table *, const char *, struct bfd_hash_entry *); + /* Replace an entry in a hash table. */ extern void bfd_hash_replace (struct bfd_hash_table *, struct bfd_hash_entry *old, @@ -642,8 +646,8 @@ extern bfd_boolean bfd_elf_get_bfd_needed_list (bfd *, struct bfd_link_needed_list **); extern bfd_boolean bfd_elf_size_dynamic_sections - (bfd *, const char *, const char *, const char *, const char * const *, - struct bfd_link_info *, struct bfd_section **, + (bfd *, const char *, const char *, const char *, const char *, const char *, + const char * const *, struct bfd_link_info *, struct bfd_section **, struct bfd_elf_version_tree *); extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr (bfd *, struct bfd_link_info *); @@ -913,7 +917,14 @@ /* ARM unwind section editing support. */ extern bfd_boolean elf32_arm_fix_exidx_coverage - (struct bfd_section **, unsigned int, struct bfd_link_info *); +(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean); + +/* PowerPC @tls opcode transform/validate. */ +extern unsigned int _bfd_elf_ppc_at_tls_transform + (unsigned int, unsigned int); +/* PowerPC @tprel opcode transform/validate. */ +extern unsigned int _bfd_elf_ppc_at_tprel_transform + (unsigned int, unsigned int); /* TI COFF load page support. */ extern void bfd_ticoff_set_section_load_page @@ -957,6 +968,7 @@ void bfd_init (void); /* Extracted from opncls.c. */ +extern unsigned int bfd_use_reserved_id; bfd *bfd_fopen (const char *filename, const char *target, const char *mode, int fd); @@ -967,17 +979,17 @@ bfd *bfd_openstreamr (const char *, const char *, void *); bfd *bfd_openr_iovec (const char *filename, const char *target, - void *(*open) (struct bfd *nbfd, + void *(*open_func) (struct bfd *nbfd, void *open_closure), void *open_closure, - file_ptr (*pread) (struct bfd *nbfd, + file_ptr (*pread_func) (struct bfd *nbfd, void *stream, void *buf, file_ptr nbytes, file_ptr offset), - int (*close) (struct bfd *nbfd, + int (*close_func) (struct bfd *nbfd, void *stream), - int (*stat) (struct bfd *abfd, + int (*stat_func) (struct bfd *abfd, void *stream, struct stat *sb)); @@ -993,6 +1005,10 @@ bfd_boolean bfd_make_readable (bfd *abfd); +void *bfd_alloc (bfd *abfd, bfd_size_type wanted); + +void *bfd_zalloc (bfd *abfd, bfd_size_type wanted); + unsigned long bfd_calc_gnu_debuglink_crc32 (unsigned long crc, const unsigned char *buf, bfd_size_type len); @@ -1341,6 +1357,12 @@ /* Mark flag used by some linker backends for garbage collection. */ unsigned int gc_mark : 1; + /* Section compression status. */ + unsigned int compress_status : 2; +#define COMPRESS_SECTION_NONE 0 +#define COMPRESS_SECTION_DONE 1 +#define DECOMPRESS_SECTION_SIZED 2 + /* The following flags are used by the ELF linker. */ /* Mark sections which have been allocated to segments. */ @@ -1360,20 +1382,12 @@ /* Bits used by various backends. The generic code doesn't touch these fields. */ - /* Nonzero if this section has TLS related relocations. */ - unsigned int has_tls_reloc:1; - - /* Nonzero if this section has a call to __tls_get_addr. */ - unsigned int has_tls_get_addr_call:1; - - /* Nonzero if this section has a gp reloc. */ - unsigned int has_gp_reloc:1; - - /* Nonzero if this section needs the relax finalize pass. */ - unsigned int need_finalize_relax:1; - - /* Whether relocations have been processed. */ - unsigned int reloc_done : 1; + unsigned int sec_flg0:1; + unsigned int sec_flg1:1; + unsigned int sec_flg2:1; + unsigned int sec_flg3:1; + unsigned int sec_flg4:1; + unsigned int sec_flg5:1; /* End of internal packed boolean fields. */ @@ -1405,6 +1419,9 @@ section size calculated on a previous linker relaxation pass. */ bfd_size_type rawsize; + /* The compressed size of the section in octets. */ + bfd_size_type compressed_size; + /* Relaxation table. */ struct relax_table *relax; @@ -1638,17 +1655,17 @@ /* name, id, index, next, prev, flags, user_set_vma, */ \ { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ \ - /* linker_mark, linker_has_input, gc_mark, */ \ - 0, 0, 1, \ + /* linker_mark, linker_has_input, gc_mark, decompress_status, */ \ + 0, 0, 1, 0, \ \ - /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \ - 0, 0, 0, 0, \ + /* segment_mark, sec_info_type, use_rela_p, */ \ + 0, 0, 0, \ \ - /* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, */ \ - 0, 0, 0, \ + /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, */ \ + 0, 0, 0, 0, 0, 0, \ \ - /* reloc_done, vma, lma, size, rawsize, relax, relax_count, */ \ - 0, 0, 0, 0, 0, 0, 0, \ + /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */ \ + 0, 0, 0, 0, 0, 0, 0, \ \ /* output_offset, output_section, alignment_power, */ \ 0, (struct bfd_section *) &SEC, 0, \ @@ -1700,6 +1717,9 @@ bfd_boolean bfd_set_section_flags (bfd *abfd, asection *sec, flagword flags); +void bfd_rename_section + (bfd *abfd, asection *sec, const char *newname); + void bfd_map_over_sections (bfd *abfd, void (*func) (bfd *abfd, asection *sect, void *obj), @@ -1840,6 +1860,7 @@ #define bfd_mach_mips5 5 #define bfd_mach_mips_loongson_2e 3001 #define bfd_mach_mips_loongson_2f 3002 +#define bfd_mach_mips_loongson_3a 3003 #define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */ #define bfd_mach_mips_octeon 6501 #define bfd_mach_mips_xlr 887682 /* decimal 'XLR' */ @@ -1851,6 +1872,8 @@ #define bfd_mach_i386_i386 1 #define bfd_mach_i386_i8086 2 #define bfd_mach_i386_i386_intel_syntax 3 +#define bfd_mach_x64_32 32 +#define bfd_mach_x64_32_intel_syntax 33 #define bfd_mach_x86_64 64 #define bfd_mach_x86_64_intel_syntax 65 bfd_arch_l1om, /* Intel L1OM */ @@ -1897,6 +1920,8 @@ #define bfd_mach_ppc_7400 7400 #define bfd_mach_ppc_e500 500 #define bfd_mach_ppc_e500mc 5001 +#define bfd_mach_ppc_e500mc64 5005 +#define bfd_mach_ppc_titan 83 bfd_arch_rs6000, /* IBM RS/6000 */ #define bfd_mach_rs6k 6000 #define bfd_mach_rs6k_rs1 6001 @@ -1970,11 +1995,14 @@ #define bfd_mach_tic3x 30 #define bfd_mach_tic4x 40 bfd_arch_tic54x, /* Texas Instruments TMS320C54X */ + bfd_arch_tic6x, /* Texas Instruments TMS320C6X */ bfd_arch_tic80, /* TI TMS320c80 (MVP) */ bfd_arch_v850, /* NEC V850 */ #define bfd_mach_v850 1 #define bfd_mach_v850e 'E' #define bfd_mach_v850e1 '1' +#define bfd_mach_v850e2 0x4532 +#define bfd_mach_v850e2v3 0x45325633 bfd_arch_arc, /* ARC Cores */ #define bfd_mach_arc_5 5 #define bfd_mach_arc_6 6 @@ -2035,6 +2063,13 @@ #define bfd_mach_avr5 5 #define bfd_mach_avr51 51 #define bfd_mach_avr6 6 +#define bfd_mach_avrxmega1 101 +#define bfd_mach_avrxmega2 102 +#define bfd_mach_avrxmega3 103 +#define bfd_mach_avrxmega4 104 +#define bfd_mach_avrxmega5 105 +#define bfd_mach_avrxmega6 106 +#define bfd_mach_avrxmega7 107 bfd_arch_bfin, /* ADI Blackfin */ #define bfd_mach_bfin 1 bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */ @@ -2047,6 +2082,8 @@ #define bfd_mach_cris_v0_v10 255 #define bfd_mach_cris_v32 32 #define bfd_mach_cris_v10_v32 1032 + bfd_arch_rx, /* Renesas RX. */ +#define bfd_mach_rx 0x75 bfd_arch_s390, /* IBM s390 */ #define bfd_mach_s390_31 31 #define bfd_mach_s390_64 64 @@ -2079,9 +2116,6 @@ #define bfd_mach_xc16xs 3 bfd_arch_xtensa, /* Tensilica's Xtensa cores. */ #define bfd_mach_xtensa 1 - bfd_arch_maxq, /* Dallas MAXQ 10/20 */ -#define bfd_mach_maxq10 10 -#define bfd_mach_maxq20 20 bfd_arch_z80, #define bfd_mach_z80strict 1 /* No undocumented opcodes. */ #define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */ @@ -2240,10 +2274,7 @@ when doing overflow checking. */ unsigned int bitsize; - /* Notes that the relocation is relative to the location in the - data section of the addend. The relocation function will - subtract from the relocation value the address of the location - being relocated. */ + /* The relocation is relative to the field being relocated. */ bfd_boolean pc_relative; /* The bit position of the reloc value in the destination. @@ -2493,6 +2524,8 @@ BFD_RELOC_SPARC_GOTDATA_OP_HIX22, BFD_RELOC_SPARC_GOTDATA_OP_LOX10, BFD_RELOC_SPARC_GOTDATA_OP, + BFD_RELOC_SPARC_JMP_IREL, + BFD_RELOC_SPARC_IRELATIVE, /* I think these are specific to SPARC a.out (e.g., Sun 4). */ BFD_RELOC_SPARC_BASE13, @@ -3109,6 +3142,7 @@ BFD_RELOC_ARM_RELATIVE, BFD_RELOC_ARM_GOTOFF, BFD_RELOC_ARM_GOTPC, + BFD_RELOC_ARM_GOT_PREL, /* ARM thread-local storage relocations. */ BFD_RELOC_ARM_TLS_GD32, @@ -3119,6 +3153,12 @@ BFD_RELOC_ARM_TLS_TPOFF32, BFD_RELOC_ARM_TLS_IE32, BFD_RELOC_ARM_TLS_LE32, + BFD_RELOC_ARM_TLS_GOTDESC, + BFD_RELOC_ARM_TLS_CALL, + BFD_RELOC_ARM_THM_TLS_CALL, + BFD_RELOC_ARM_TLS_DESCSEQ, + BFD_RELOC_ARM_THM_TLS_DESCSEQ, + BFD_RELOC_ARM_TLS_DESC, /* ARM group relocations. */ BFD_RELOC_ARM_ALU_PC_G0_NC, @@ -3153,6 +3193,9 @@ /* Annotation of BX instructions. */ BFD_RELOC_ARM_V4BX, +/* ARM support for STT_GNU_IFUNC. */ + BFD_RELOC_ARM_IRELATIVE, + /* These relocs are only used within the ARM assembler. They are not (at present) written to any object files. */ BFD_RELOC_ARM_IMMEDIATE, @@ -3163,6 +3206,7 @@ BFD_RELOC_ARM_T32_ADD_PC12, BFD_RELOC_ARM_SHIFT_IMM, BFD_RELOC_ARM_SMC, + BFD_RELOC_ARM_HVC, BFD_RELOC_ARM_SWI, BFD_RELOC_ARM_MULTI, BFD_RELOC_ARM_CP_OFF_IMM, @@ -3272,6 +3316,13 @@ BFD_RELOC_SH_TLS_DTPMOD32, BFD_RELOC_SH_TLS_DTPOFF32, BFD_RELOC_SH_TLS_TPOFF32, + BFD_RELOC_SH_GOT20, + BFD_RELOC_SH_GOTOFF20, + BFD_RELOC_SH_GOTFUNCDESC, + BFD_RELOC_SH_GOTFUNCDESC20, + BFD_RELOC_SH_GOTOFFFUNCDESC, + BFD_RELOC_SH_GOTOFFFUNCDESC20, + BFD_RELOC_SH_FUNCDESC, /* ARC Cores relocs. ARC 22 bit pc-relative branch. The lowest two bits must be zero and are @@ -3597,6 +3648,72 @@ instructions. */ BFD_RELOC_V850_LO16_SPLIT_OFFSET, +/* This is a 16-bit reloc. */ + BFD_RELOC_V850_16_PCREL, + +/* This is a 17-bit reloc. */ + BFD_RELOC_V850_17_PCREL, + +/* This is a 23-bit reloc. */ + BFD_RELOC_V850_23, + +/* This is a 32-bit reloc. */ + BFD_RELOC_V850_32_PCREL, + +/* This is a 32-bit reloc. */ + BFD_RELOC_V850_32_ABS, + +/* This is a 16-bit reloc. */ + BFD_RELOC_V850_16_SPLIT_OFFSET, + +/* This is a 16-bit reloc. */ + BFD_RELOC_V850_16_S1, + +/* Low 16 bits. 16 bit shifted by 1. */ + BFD_RELOC_V850_LO16_S1, + +/* This is a 16 bit offset from the call table base pointer. */ + BFD_RELOC_V850_CALLT_15_16_OFFSET, + +/* DSO relocations. */ + BFD_RELOC_V850_32_GOTPCREL, + +/* DSO relocations. */ + BFD_RELOC_V850_16_GOT, + +/* DSO relocations. */ + BFD_RELOC_V850_32_GOT, + +/* DSO relocations. */ + BFD_RELOC_V850_22_PLT_PCREL, + +/* DSO relocations. */ + BFD_RELOC_V850_32_PLT_PCREL, + +/* DSO relocations. */ + BFD_RELOC_V850_COPY, + +/* DSO relocations. */ + BFD_RELOC_V850_GLOB_DAT, + +/* DSO relocations. */ + BFD_RELOC_V850_JMP_SLOT, + +/* DSO relocations. */ + BFD_RELOC_V850_RELATIVE, + +/* DSO relocations. */ + BFD_RELOC_V850_16_GOTOFF, + +/* DSO relocations. */ + BFD_RELOC_V850_32_GOTOFF, + +/* start code. */ + BFD_RELOC_V850_CODE, + +/* start data in text. */ + BFD_RELOC_V850_DATA, + /* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the instruction. */ BFD_RELOC_MN10300_32_PCREL, @@ -3633,6 +3750,38 @@ the opcode. */ BFD_RELOC_TIC54X_MS7_OF_23, +/* TMS320C6000 relocations. */ + BFD_RELOC_C6000_PCR_S21, + BFD_RELOC_C6000_PCR_S12, + BFD_RELOC_C6000_PCR_S10, + BFD_RELOC_C6000_PCR_S7, + BFD_RELOC_C6000_ABS_S16, + BFD_RELOC_C6000_ABS_L16, + BFD_RELOC_C6000_ABS_H16, + BFD_RELOC_C6000_SBR_U15_B, + BFD_RELOC_C6000_SBR_U15_H, + BFD_RELOC_C6000_SBR_U15_W, + BFD_RELOC_C6000_SBR_S16, + BFD_RELOC_C6000_SBR_L16_B, + BFD_RELOC_C6000_SBR_L16_H, + BFD_RELOC_C6000_SBR_L16_W, + BFD_RELOC_C6000_SBR_H16_B, + BFD_RELOC_C6000_SBR_H16_H, + BFD_RELOC_C6000_SBR_H16_W, + BFD_RELOC_C6000_SBR_GOT_U15_W, + BFD_RELOC_C6000_SBR_GOT_L16_W, + BFD_RELOC_C6000_SBR_GOT_H16_W, + BFD_RELOC_C6000_DSBT_INDEX, + BFD_RELOC_C6000_PREL31, + BFD_RELOC_C6000_COPY, + BFD_RELOC_C6000_JUMP_SLOT, + BFD_RELOC_C6000_EHTYPE, + BFD_RELOC_C6000_PCR_H16, + BFD_RELOC_C6000_PCR_L16, + BFD_RELOC_C6000_ALIGN, + BFD_RELOC_C6000_FPHEAD, + BFD_RELOC_C6000_NOCMP, + /* This is a 48 bit reloc for the FR30 that stores 32 bits. */ BFD_RELOC_FR30_48, @@ -3844,6 +3993,35 @@ instructions */ BFD_RELOC_AVR_6_ADIW, +/* Renesas RX Relocations. */ + BFD_RELOC_RX_NEG8, + BFD_RELOC_RX_NEG16, + BFD_RELOC_RX_NEG24, + BFD_RELOC_RX_NEG32, + BFD_RELOC_RX_16_OP, + BFD_RELOC_RX_24_OP, + BFD_RELOC_RX_32_OP, + BFD_RELOC_RX_8U, + BFD_RELOC_RX_16U, + BFD_RELOC_RX_24U, + BFD_RELOC_RX_DIR3U_PCREL, + BFD_RELOC_RX_DIFF, + BFD_RELOC_RX_GPRELB, + BFD_RELOC_RX_GPRELW, + BFD_RELOC_RX_GPRELL, + BFD_RELOC_RX_SYM, + BFD_RELOC_RX_OP_SUBTRACT, + BFD_RELOC_RX_OP_NEG, + BFD_RELOC_RX_ABS8, + BFD_RELOC_RX_ABS16, + BFD_RELOC_RX_ABS16_REV, + BFD_RELOC_RX_ABS32, + BFD_RELOC_RX_ABS32_REV, + BFD_RELOC_RX_ABS16U, + BFD_RELOC_RX_ABS16UW, + BFD_RELOC_RX_ABS16UL, + BFD_RELOC_RX_RELAX, + /* Direct 12 bit. */ BFD_RELOC_390_12, @@ -4530,9 +4708,36 @@ BFD_RELOC_MACH_O_PAIR. */ BFD_RELOC_MACH_O_SECTDIFF, -/* Mach-O generic relocations. */ +/* Pair of relocation. Contains the first symbol. */ BFD_RELOC_MACH_O_PAIR, +/* PCREL relocations. They are marked as branch to create PLT entry if +required. */ + BFD_RELOC_MACH_O_X86_64_BRANCH32, + BFD_RELOC_MACH_O_X86_64_BRANCH8, + +/* Used when referencing a GOT entry. */ + BFD_RELOC_MACH_O_X86_64_GOT, + +/* Used when loading a GOT entry with movq. It is specially marked so that +the linker could optimize the movq to a leaq if possible. */ + BFD_RELOC_MACH_O_X86_64_GOT_LOAD, + +/* Symbol will be substracted. Must be followed by a BFD_RELOC_64. */ + BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32, + +/* Symbol will be substracted. Must be followed by a BFD_RELOC_64. */ + BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64, + +/* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. */ + BFD_RELOC_MACH_O_X86_64_PCREL32_1, + +/* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. */ + BFD_RELOC_MACH_O_X86_64_PCREL32_2, + +/* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. */ + BFD_RELOC_MACH_O_X86_64_PCREL32_4, + /* This is a 32 bit reloc for the microblaze that stores the low 16 bits of a value */ BFD_RELOC_MICROBLAZE_32_LO, @@ -4899,6 +5104,21 @@ will be consistent from run to run. */ #define BFD_DETERMINISTIC_OUTPUT 0x4000 + /* Compress sections in this BFD. */ +#define BFD_COMPRESS 0x8000 + + /* Decompress sections in this BFD. */ +#define BFD_DECOMPRESS 0x10000 + + /* Flags bits to be saved in bfd_preserve_save. */ +#define BFD_FLAGS_SAVED \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS) + + /* Flags bits which are for BFD use only. */ +#define BFD_FLAGS_FOR_BFD_USE_MASK \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \ + | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT) + /* 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. */ @@ -5034,6 +5254,10 @@ /* Set if this is a thin archive. */ unsigned int is_thin_archive : 1; + + /* Set if only required symbols should be added in the link hash table for + this object. Used by VMS linkers. */ + unsigned int selective_search : 1; }; typedef enum bfd_error @@ -5251,6 +5475,8 @@ int bfd_core_file_failing_signal (bfd *abfd); +int bfd_core_file_pid (bfd *abfd); + bfd_boolean core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd); @@ -5447,11 +5673,13 @@ #define BFD_JUMP_TABLE_CORE(NAME) \ NAME##_core_file_failing_command, \ NAME##_core_file_failing_signal, \ - NAME##_core_file_matches_executable_p + NAME##_core_file_matches_executable_p, \ + NAME##_core_file_pid char * (*_core_file_failing_command) (bfd *); int (*_core_file_failing_signal) (bfd *); bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *); + int (*_core_file_pid) (bfd *); /* Archive entry points. */ #define BFD_JUMP_TABLE_ARCHIVE(NAME) \ @@ -5461,6 +5689,7 @@ NAME##_truncate_arname, \ NAME##_write_armap, \ NAME##_read_ar_hdr, \ + NAME##_write_ar_hdr, \ NAME##_openr_next_archived_file, \ NAME##_get_elt_at_index, \ NAME##_generic_stat_arch_elt, \ @@ -5474,6 +5703,7 @@ bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *, unsigned int, int); void * (*_bfd_read_ar_hdr_fn) (bfd *); + bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *); bfd * (*openr_next_archived_file) (bfd *, bfd *); #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); @@ -5569,6 +5799,7 @@ NAME##_bfd_link_hash_table_free, \ NAME##_bfd_link_add_symbols, \ NAME##_bfd_link_just_syms, \ + NAME##_bfd_copy_link_hash_symbol_type, \ NAME##_bfd_final_link, \ NAME##_bfd_link_split_section, \ NAME##_bfd_gc_sections, \ @@ -5600,6 +5831,12 @@ /* Indicate that we are only retrieving symbol values from this section. */ void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); + /* Copy the symbol type of a linker hash table entry. */ +#define bfd_copy_link_hash_symbol_type(b, t, f) \ + BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f)) + void (*_bfd_copy_link_hash_symbol_type) + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); + /* Do a link based on the link_order structures attached to each section of the BFD. */ bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); @@ -5664,6 +5901,11 @@ const bfd_target *bfd_find_target (const char *target_name, bfd *abfd); +const bfd_target *bfd_get_target_info (const char *target_name, + bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, + const char **def_target_arch); const char ** bfd_target_list (void); const bfd_target *bfd_search_for_target @@ -5708,8 +5950,21 @@ (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table); /* Extracted from compress.c. */ -bfd_boolean bfd_uncompress_section_contents - (bfd_byte **buffer, bfd_size_type *size); +bfd_boolean bfd_compress_section_contents + (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer, + bfd_size_type uncompressed_size); + +bfd_boolean bfd_get_full_section_contents + (bfd *abfd, asection *section, bfd_byte **ptr); + +bfd_boolean bfd_is_section_compressed + (bfd *abfd, asection *section); + +bfd_boolean bfd_init_section_decompress_status + (bfd *abfd, asection *section); + +bfd_boolean bfd_init_section_compress_status + (bfd *abfd, asection *section); #ifdef __cplusplus } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/bfd.c crash-6.1.6/=unpacked-tar1=/bfd/bfd.c --- crash-5.1.6/=unpacked-tar1=/bfd/bfd.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/bfd.c 2011-01-14 12:35:55.000000000 +0000 @@ -1,6 +1,6 @@ /* Generic BFD library interface and support routines. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Written by Cygnus Support. @@ -151,6 +151,21 @@ . will be consistent from run to run. *} .#define BFD_DETERMINISTIC_OUTPUT 0x4000 . +. {* Compress sections in this BFD. *} +.#define BFD_COMPRESS 0x8000 +. +. {* Decompress sections in this BFD. *} +.#define BFD_DECOMPRESS 0x10000 +. +. {* Flags bits to be saved in bfd_preserve_save. *} +.#define BFD_FLAGS_SAVED \ +. (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS) +. +. {* Flags bits which are for BFD use only. *} +.#define BFD_FLAGS_FOR_BFD_USE_MASK \ +. (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \ +. | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT) +. . {* 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. *} @@ -286,6 +301,10 @@ . . {* Set if this is a thin archive. *} . unsigned int is_thin_archive : 1; +. +. {* Set if only required symbols should be added in the link hash table for +. this object. Used by VMS linkers. *} +. unsigned int selective_search : 1; .}; . */ @@ -504,10 +523,12 @@ void bfd_perror (const char *message) { + fflush (stdout); if (message == NULL || *message == '\0') fprintf (stderr, "%s\n", bfd_errmsg (bfd_get_error ())); else fprintf (stderr, "%s: %s\n", message, bfd_errmsg (bfd_get_error ())); + fflush (stderr); } /* @@ -704,6 +725,7 @@ va_end (ap); putc ('\n', stderr); + fflush (stderr); } /* This is a function pointer to the routine which should handle BFD @@ -1624,7 +1646,7 @@ abfd->tdata.any = NULL; abfd->arch_info = &bfd_default_arch_struct; - abfd->flags &= BFD_IN_MEMORY; + abfd->flags &= BFD_FLAGS_SAVED; abfd->sections = NULL; abfd->section_last = NULL; abfd->section_count = 0; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/bfd.m4 crash-6.1.6/=unpacked-tar1=/bfd/bfd.m4 --- crash-5.1.6/=unpacked-tar1=/bfd/bfd.m4 2009-09-07 09:15:27.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/bfd.m4 2010-01-05 00:40:07.000000000 +0000 @@ -8,6 +8,8 @@ AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_$1, [AC_TRY_COMPILE([ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include ], [$1 avar], bfd_cv_have_sys_procfs_type_$1=yes, @@ -27,6 +29,8 @@ AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_member_$1_$2, [AC_TRY_COMPILE([ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include ], [$1 avar; void* aref = (void*) &avar.$2], bfd_cv_have_sys_procfs_type_member_$1_$2=yes, diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/bfdio.c crash-6.1.6/=unpacked-tar1=/bfd/bfdio.c --- crash-5.1.6/=unpacked-tar1=/bfd/bfdio.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/bfdio.c 2010-06-09 13:28:31.000000000 +0000 @@ -163,6 +163,8 @@ . int prot, int flags, file_ptr offset); .}; +.extern const struct bfd_iovec _bfd_memory_iovec; + */ @@ -178,28 +180,12 @@ if (abfd->arelt_data != NULL) { size_t maxbytes = ((struct areltdata *) abfd->arelt_data)->parsed_size; - if (size > maxbytes) - size = maxbytes; - } - - if ((abfd->flags & BFD_IN_MEMORY) != 0) - { - struct bfd_in_memory *bim; - bfd_size_type get; - - bim = (struct bfd_in_memory *) abfd->iostream; - get = size; - if (abfd->where + get > bim->size) - { - if (bim->size < (bfd_size_type) abfd->where) - get = 0; - else - get = bim->size - abfd->where; - bfd_set_error (bfd_error_file_truncated); - } - memcpy (ptr, bim->buffer + abfd->where, (size_t) get); - abfd->where += get; - return get; + if (abfd->where + size > maxbytes) + { + if (abfd->where >= maxbytes) + return 0; + size = maxbytes - abfd->where; + } } if (abfd->iovec) @@ -217,37 +203,6 @@ { size_t nwrote; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - { - struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream; - - size = (size_t) size; - if (abfd->where + size > bim->size) - { - bfd_size_type newsize, oldsize; - - oldsize = (bim->size + 127) & ~(bfd_size_type) 127; - bim->size = abfd->where + size; - /* Round up to cut down on memory fragmentation */ - newsize = (bim->size + 127) & ~(bfd_size_type) 127; - if (newsize > oldsize) - { - bim->buffer = (bfd_byte *) bfd_realloc_or_free (bim->buffer, - newsize); - if (bim->buffer == NULL) - { - bim->size = 0; - return 0; - } - if (newsize > bim->size) - memset (bim->buffer + bim->size, 0, newsize - bim->size); - } - } - memcpy (bim->buffer + abfd->where, ptr, (size_t) size); - abfd->where += size; - return size; - } - if (abfd->iovec) nwrote = abfd->iovec->bwrite (abfd, ptr, size); else @@ -270,9 +225,6 @@ { file_ptr ptr; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - return abfd->where; - if (abfd->iovec) { ptr = abfd->iovec->btell (abfd); @@ -290,9 +242,6 @@ int bfd_flush (bfd *abfd) { - if ((abfd->flags & BFD_IN_MEMORY) != 0) - return 0; - if (abfd->iovec) return abfd->iovec->bflush (abfd); return 0; @@ -305,9 +254,6 @@ { int result; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - abort (); - if (abfd->iovec) result = abfd->iovec->bstat (abfd, statbuf); else @@ -335,50 +281,6 @@ if (direction == SEEK_CUR && position == 0) return 0; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - { - struct bfd_in_memory *bim; - - bim = (struct bfd_in_memory *) abfd->iostream; - - if (direction == SEEK_SET) - abfd->where = position; - else - abfd->where += position; - - if (abfd->where > bim->size) - { - if (abfd->direction == write_direction - || abfd->direction == both_direction) - { - bfd_size_type newsize, oldsize; - - oldsize = (bim->size + 127) & ~(bfd_size_type) 127; - bim->size = abfd->where; - /* Round up to cut down on memory fragmentation */ - newsize = (bim->size + 127) & ~(bfd_size_type) 127; - if (newsize > oldsize) - { - bim->buffer = (bfd_byte *) bfd_realloc_or_free (bim->buffer, - newsize); - if (bim->buffer == NULL) - { - bim->size = 0; - return -1; - } - memset (bim->buffer + oldsize, 0, newsize - oldsize); - } - } - else - { - abfd->where = bim->size; - bfd_set_error (bfd_error_file_truncated); - return -1; - } - } - return 0; - } - if (abfd->format != bfd_archive && abfd->my_archive == 0) { if (direction == SEEK_SET && (bfd_vma) position == abfd->where) @@ -505,9 +407,6 @@ { struct stat buf; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - return ((struct bfd_in_memory *) abfd->iostream)->size; - if (abfd->iovec == NULL) return 0; @@ -536,11 +435,164 @@ int prot, int flags, file_ptr offset) { void *ret = (void *)-1; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - return ret; if (abfd->iovec == NULL) return ret; return abfd->iovec->bmmap (abfd, addr, len, prot, flags, offset); } + +/* Memory file I/O operations. */ + +static file_ptr +memory_bread (bfd *abfd, void *ptr, file_ptr size) +{ + struct bfd_in_memory *bim; + bfd_size_type get; + + bim = (struct bfd_in_memory *) abfd->iostream; + get = size; + if (abfd->where + get > bim->size) + { + if (bim->size < (bfd_size_type) abfd->where) + get = 0; + else + get = bim->size - abfd->where; + bfd_set_error (bfd_error_file_truncated); + } + memcpy (ptr, bim->buffer + abfd->where, (size_t) get); + return get; +} + +static file_ptr +memory_bwrite (bfd *abfd, const void *ptr, file_ptr size) +{ + struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream; + + if (abfd->where + size > bim->size) + { + bfd_size_type newsize, oldsize; + + oldsize = (bim->size + 127) & ~(bfd_size_type) 127; + bim->size = abfd->where + size; + /* Round up to cut down on memory fragmentation */ + newsize = (bim->size + 127) & ~(bfd_size_type) 127; + if (newsize > oldsize) + { + bim->buffer = (bfd_byte *) bfd_realloc_or_free (bim->buffer, newsize); + if (bim->buffer == NULL) + { + bim->size = 0; + return 0; + } + if (newsize > bim->size) + memset (bim->buffer + bim->size, 0, newsize - bim->size); + } + } + memcpy (bim->buffer + abfd->where, ptr, (size_t) size); + return size; +} + +static file_ptr +memory_btell (bfd *abfd) +{ + return abfd->where; +} + +static int +memory_bseek (bfd *abfd, file_ptr position, int direction) +{ + file_ptr nwhere; + struct bfd_in_memory *bim; + + bim = (struct bfd_in_memory *) abfd->iostream; + + if (direction == SEEK_SET) + nwhere = position; + else + nwhere = abfd->where + position; + + if (nwhere < 0) + { + abfd->where = 0; + errno = EINVAL; + return -1; + } + + if ((bfd_size_type)nwhere > bim->size) + { + if (abfd->direction == write_direction + || abfd->direction == both_direction) + { + bfd_size_type newsize, oldsize; + + oldsize = (bim->size + 127) & ~(bfd_size_type) 127; + bim->size = nwhere; + /* Round up to cut down on memory fragmentation */ + newsize = (bim->size + 127) & ~(bfd_size_type) 127; + if (newsize > oldsize) + { + bim->buffer = (bfd_byte *) bfd_realloc_or_free (bim->buffer, newsize); + if (bim->buffer == NULL) + { + errno = EINVAL; + bim->size = 0; + return -1; + } + memset (bim->buffer + oldsize, 0, newsize - oldsize); + } + } + else + { + abfd->where = bim->size; + errno = EINVAL; + bfd_set_error (bfd_error_file_truncated); + return -1; + } + } + return 0; +} + +static int +memory_bclose (struct bfd *abfd) +{ + struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream; + + if (bim->buffer != NULL) + free (bim->buffer); + free (bim); + abfd->iostream = NULL; + + return TRUE; +} + +static int +memory_bflush (bfd *abfd ATTRIBUTE_UNUSED) +{ + return 0; +} + +static int +memory_bstat (bfd *abfd, struct stat *statbuf) +{ + struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream; + + memset (statbuf, 0, sizeof (statbuf)); + statbuf->st_size = bim->size; + + return 0; +} + +static void * +memory_bmmap (bfd *abfd ATTRIBUTE_UNUSED, void *addr ATTRIBUTE_UNUSED, + bfd_size_type len ATTRIBUTE_UNUSED, int prot ATTRIBUTE_UNUSED, + int flags ATTRIBUTE_UNUSED, file_ptr offset ATTRIBUTE_UNUSED) +{ + return (void *)-1; +} + +const struct bfd_iovec _bfd_memory_iovec = +{ + &memory_bread, &memory_bwrite, &memory_btell, &memory_bseek, + &memory_bclose, &memory_bflush, &memory_bstat, &memory_bmmap +}; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/binary.c crash-6.1.6/=unpacked-tar1=/bfd/binary.c --- crash-5.1.6/=unpacked-tar1=/bfd/binary.c 2009-09-11 11:16:19.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/binary.c 2009-11-23 14:41:28.000000000 +0000 @@ -307,6 +307,8 @@ #define binary_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define binary_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define binary_bfd_link_just_syms _bfd_generic_link_just_syms +#define binary_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define binary_bfd_link_add_symbols _bfd_generic_link_add_symbols #define binary_bfd_final_link _bfd_generic_final_link #define binary_bfd_link_split_section _bfd_generic_link_split_section diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/bout.c crash-6.1.6/=unpacked-tar1=/bfd/bout.c --- crash-5.1.6/=unpacked-tar1=/bfd/bout.c 2009-09-02 07:18:35.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/bout.c 2010-06-27 04:07:50.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for Intel 960 b.out binaries. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -1094,7 +1094,6 @@ unsigned int shrink) { bfd_vma dot = output_addr (input_section) + r->address; - bfd_vma gap; bfd_vma old_end; bfd_vma new_end; unsigned int shrink_delta; @@ -1110,9 +1109,6 @@ than we used to be. */ new_end = ((dot - shrink + size) & ~size); - /* This is the new end. */ - gap = old_end - ((dot + size) & ~size); - shrink_delta = (old_end - new_end) - shrink; if (shrink_delta) @@ -1386,6 +1382,8 @@ #define b_out_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define b_out_bfd_link_add_symbols _bfd_generic_link_add_symbols #define b_out_bfd_link_just_syms _bfd_generic_link_just_syms +#define b_out_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define b_out_bfd_final_link _bfd_generic_final_link #define b_out_bfd_link_split_section _bfd_generic_link_split_section #define b_out_bfd_gc_sections bfd_generic_gc_sections diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cache.c crash-6.1.6/=unpacked-tar1=/bfd/cache.c --- crash-5.1.6/=unpacked-tar1=/bfd/cache.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cache.c 2009-12-11 15:42:38.000000000 +0000 @@ -144,33 +144,33 @@ static bfd_boolean close_one (void) { - register bfd *kill; + register bfd *to_kill; if (bfd_last_cache == NULL) - kill = NULL; + to_kill = NULL; else { - for (kill = bfd_last_cache->lru_prev; - ! kill->cacheable; - kill = kill->lru_prev) + for (to_kill = bfd_last_cache->lru_prev; + ! to_kill->cacheable; + to_kill = to_kill->lru_prev) { - if (kill == bfd_last_cache) + if (to_kill == bfd_last_cache) { - kill = NULL; + to_kill = NULL; break; } } } - if (kill == NULL) + if (to_kill == NULL) { /* There are no open cacheable BFD's. */ return TRUE; } - kill->where = real_ftell ((FILE *) kill->iostream); + to_kill->where = real_ftell ((FILE *) to_kill->iostream); - return bfd_cache_delete (kill); + return bfd_cache_delete (to_kill); } /* Check to see if the required BFD is the same as the last one diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cisco-core.c crash-6.1.6/=unpacked-tar1=/bfd/cisco-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/cisco-core.c 2009-09-02 07:18:35.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cisco-core.c 2010-08-30 09:35:25.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for CISCO crash dumps. - Copyright 1994, 1997, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 + Copyright 1994, 1997, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -77,6 +77,7 @@ char *cisco_core_file_failing_command PARAMS ((bfd *)); int cisco_core_file_failing_signal PARAMS ((bfd *)); #define cisco_core_file_matches_executable_p generic_core_file_matches_executable_p +#define cisco_core_file_pid _bfd_nocore_core_file_pid /* Examine the file for a crash info struct at the offset given by CRASH_INFO_LOC. */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-alpha.c crash-6.1.6/=unpacked-tar1=/bfd/coff-alpha.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-alpha.c 2009-04-16 23:06:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-alpha.c 2010-05-26 07:37:36.000000000 +0000 @@ -1,6 +1,7 @@ /* BFD back-end for ALPHA Extended-Coff files. Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Modified from coff-mips.c by Steve Chamberlain and Ian Lance Taylor . @@ -2065,6 +2066,7 @@ _bfd_ecoff_construct_extended_name_table #define alpha_ecoff_truncate_arname _bfd_ecoff_truncate_arname #define alpha_ecoff_write_armap _bfd_ecoff_write_armap +#define alpha_ecoff_write_ar_hdr _bfd_generic_write_ar_hdr #define alpha_ecoff_generic_stat_arch_elt _bfd_ecoff_generic_stat_arch_elt #define alpha_ecoff_update_armap_timestamp _bfd_ecoff_update_armap_timestamp @@ -2120,6 +2122,7 @@ bfd_byte *buf, *p; struct bfd_in_memory *bim; + buf = NULL; nbfd = _bfd_get_elt_at_filepos (archive, filepos); if (nbfd == NULL) goto error_return; @@ -2151,16 +2154,14 @@ goto error_return; size = H_GET_64 (nbfd, ab); - if (size == 0) - buf = NULL; - else + if (size != 0) { bfd_size_type left; bfd_byte dict[4096]; unsigned int h; bfd_byte b; - buf = (bfd_byte *) bfd_alloc (nbfd, size); + buf = (bfd_byte *) bfd_malloc (size); if (buf == NULL) goto error_return; p = buf; @@ -2214,7 +2215,7 @@ /* Now the uncompressed file contents are in buf. */ bim = ((struct bfd_in_memory *) - bfd_alloc (nbfd, (bfd_size_type) sizeof (struct bfd_in_memory))); + bfd_malloc ((bfd_size_type) sizeof (struct bfd_in_memory))); if (bim == NULL) goto error_return; bim->size = size; @@ -2225,11 +2226,15 @@ nbfd->flags |= BFD_IN_MEMORY; nbfd->iostream = (PTR) bim; + nbfd->iovec = &_bfd_memory_iovec; + nbfd->origin = 0; BFD_ASSERT (! nbfd->cacheable); return nbfd; error_return: + if (buf != NULL) + free (buf); if (nbfd != NULL) bfd_close (nbfd); return NULL; @@ -2261,7 +2266,7 @@ /* Pad to an even boundary... Note that last_file->origin can be odd in the case of BSD-4.4-style element with a long odd size. */ - filestart = last_file->origin + size; + filestart = last_file->proxy_origin + size; filestart += filestart % 2; } @@ -2271,13 +2276,11 @@ /* Open the archive file given an index into the armap. */ static bfd * -alpha_ecoff_get_elt_at_index (abfd, index) - bfd *abfd; - symindex index; +alpha_ecoff_get_elt_at_index (bfd *abfd, symindex sym_index) { carsym *entry; - entry = bfd_ardata (abfd)->symdefs + index; + entry = bfd_ardata (abfd)->symdefs + sym_index; return alpha_ecoff_get_elt_at_filepos (abfd, entry->file_offset); } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-arm.c crash-6.1.6/=unpacked-tar1=/bfd/coff-arm.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-arm.c 2009-09-05 07:56:21.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-arm.c 2010-08-25 07:02:40.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for ARM COFF files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -549,7 +549,6 @@ osect_vma = h->root.u.def.section->output_section->vma; else { - asection *sec; int i; /* Sigh, the only way to get the section to offset against @@ -818,7 +817,7 @@ #define ASTD(i,j) case i: return aoutarm_std_reloc_howto + j if (code == BFD_RELOC_CTOR) - switch (bfd_get_arch_info (abfd)->bits_per_address) + switch (bfd_arch_bits_per_address (abfd)) { case 32: code = BFD_RELOC_32; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-i386.c crash-6.1.6/=unpacked-tar1=/bfd/coff-i386.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-i386.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-i386.c 2010-03-31 16:32:02.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for Intel 386 COFF files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 + 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. Written by Cygnus Support. @@ -44,13 +44,13 @@ #include "libcoff.h" static bfd_reloc_status_type coff_i386_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + (bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **); static reloc_howto_type *coff_i386_rtype_to_howto - PARAMS ((bfd *, asection *, struct internal_reloc *, - struct coff_link_hash_entry *, struct internal_syment *, - bfd_vma *)); + (bfd *, asection *, struct internal_reloc *, + struct coff_link_hash_entry *, struct internal_syment *, + bfd_vma *); static reloc_howto_type *coff_i386_reloc_type_lookup - PARAMS ((bfd *, bfd_reloc_code_real_type)); + (bfd *, bfd_reloc_code_real_type); #define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2) /* The page size is a guess based on ELF. */ @@ -195,7 +195,8 @@ bfd * abfd ATTRIBUTE_UNUSED; reloc_howto_type *howto; { - return ! howto->pc_relative && howto->type != R_IMAGEBASE; + return ! howto->pc_relative && howto->type != R_IMAGEBASE + && howto->type != R_SECREL32; } #endif /* COFF_WITH_PE */ @@ -532,16 +533,16 @@ osect_vma = h->root.u.def.section->output_section->vma; else { - asection *sec; + asection *s; int i; /* Sigh, the only way to get the section to offset against is to find it the hard way. */ - for (sec = abfd->sections, i = 1; i < sym->n_scnum; i++) - sec = sec->next; + for (s = abfd->sections, i = 1; i < sym->n_scnum; i++) + s = s->next; - osect_vma = sec->output_section->vma; + osect_vma = s->output_section->vma; } *addendp -= osect_vma; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-i860.c crash-6.1.6/=unpacked-tar1=/bfd/coff-i860.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-i860.c 2008-07-18 11:30:22.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-i860.c 2011-01-14 12:35:56.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for Intel i860 COFF files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. + 2003, 2004, 2005, 2007, 2008, 2010, 2011 Free Software Foundation, Inc. Created mostly by substituting "860" for "386" in coff-i386.c Harry Dolan , October 1995 @@ -144,7 +144,7 @@ char **error_message ATTRIBUTE_UNUSED) { reloc_howto_type *howto = reloc_entry->howto; - fprintf (stderr, _("Relocation `%s' not yet implemented\n"), howto->name); + (*_bfd_error_handler) (_("relocation `%s' not yet implemented"), howto->name); return bfd_reloc_notsupported; } @@ -629,6 +629,7 @@ /* Calculate any reloc addend by looking at the symbol. */ CALC_ADDEND (abfd, ptr, (*dst), cache_ptr); + (void) ptr; cache_ptr->address -= asect->vma; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-maxq.c crash-6.1.6/=unpacked-tar1=/bfd/coff-maxq.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-maxq.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-maxq.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,447 +0,0 @@ -/* BFD back-end for MAXQ COFF binaries. - Copyright 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - - Contributed by Vineet Sharma (vineets@noida.hcltech.com) Inderpreet S. - (inderpreetb@noida.hcltech.com) - - HCL Technologies Ltd. - - 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 3 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ - -#include "sysdep.h" -#include "bfd.h" -#include "libbfd.h" -#include "coff/maxq.h" -#include "coff/internal.h" -#include "libcoff.h" -#include "libiberty.h" - -#ifndef MAXQ20 -#define MAXQ20 1 -#endif - -#define RTYPE2HOWTO(cache_ptr, dst) \ - ((cache_ptr)->howto = \ - ((dst)->r_type < 48 \ - ? howto_table + (((dst)->r_type==47) ? 6: ((dst)->r_type)) \ - : NULL)) - -#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2) - -/* Code to swap in the reloc offset. */ -#define SWAP_IN_RELOC_OFFSET H_GET_16 -#define SWAP_OUT_RELOC_OFFSET H_PUT_16 - -#define SHORT_JUMP BFD_RELOC_16_PCREL_S2 -#define LONG_JUMP BFD_RELOC_14 -#define ABSOLUTE_ADDR_FOR_DATA BFD_RELOC_24 - -/* checks the range of short jump -127 to 128 */ -#define IS_SJUMP_RANGE(x) ((x > -128) && (x < 129)) -#define HIGH_WORD_MASK 0xff00 -#define LOW_WORD_MASK 0x00ff - -static long -get_symbol_value (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 performs all the maxq relocations. - FIXME: The handling of the addend in the 'BFD_*' - relocations types. */ - -static bfd_reloc_status_type -coff_maxq20_reloc (bfd * abfd, - arelent * reloc_entry, - asymbol * symbol_in, - void * data, - asection * input_section ATTRIBUTE_UNUSED, - bfd * output_bfd ATTRIBUTE_UNUSED, - char ** error_message ATTRIBUTE_UNUSED) -{ - unsigned char *addr = NULL; - unsigned long x = 0; - long call_addr = 0; - short addend = 0; - long diff = 0; - - /* If this is an undefined symbol, return error. */ - if (symbol_in->section == &bfd_und_section - && (symbol_in->flags & BSF_WEAK) == 0) - return bfd_reloc_continue; - - if (data && reloc_entry) - { - addr = (unsigned char *) data + reloc_entry->address; - call_addr = call_addr - call_addr; - call_addr = get_symbol_value (symbol_in); - - /* Over here the value val stores the 8 bit/16 bit value. We will put a - check if we are moving a 16 bit immediate value into an 8 bit - register. In that case we will generate a Upper bytes into PFX[0] - and move the lower 8 bits as SRC. */ - - switch (reloc_entry->howto->type) - { - /* BFD_RELOC_16_PCREL_S2 47 Handles all the relative jumps and - calls Note: Every relative jump or call is in words. */ - case SHORT_JUMP: - /* Handle any addend. */ - addend = reloc_entry->addend; - - if (addend > call_addr || addend > 0) - call_addr = symbol_in->section->output_section->vma + addend; - else if (addend < call_addr && addend > 0) - call_addr = call_addr + addend; - else if (addend < 0) - call_addr = call_addr + addend; - - diff = ((call_addr << 1) - (reloc_entry->address << 1)); - - if (!IS_SJUMP_RANGE (diff)) - { - bfd_perror (_("Can't Make it a Short Jump")); - return bfd_reloc_outofrange; - } - - x = bfd_get_16 (abfd, addr); - - x = x & LOW_WORD_MASK; - x = x | (diff << 8); - bfd_put_16 (abfd, (bfd_vma) x, addr); - - return bfd_reloc_ok; - - case ABSOLUTE_ADDR_FOR_DATA: - case LONG_JUMP: - /* BFD_RELOC_14 Handles intersegment or long jumps which might be - from code to code or code to data segment jumps. Note: When this - fucntion is called by gas the section flags somehow do not - contain the info about the section type(CODE or DATA). Thus the - user needs to evoke the linker after assembling the files - because the Code-Code relocs are word aligned but code-data are - byte aligned. */ - addend = (reloc_entry->addend - reloc_entry->addend); - - /* Handle any addend. */ - addend = reloc_entry->addend; - - /* For relocation involving multiple file added becomes zero thus - this fails - check for zero added. In another case when we try - to add a stub to a file the addend shows the offset from the - start od this file. */ - addend = 0; - - if (!bfd_is_com_section (symbol_in->section) && - ((symbol_in->flags & BSF_OLD_COMMON) == 0)) - { - if (reloc_entry->addend > symbol_in->value) - addend = reloc_entry->addend - symbol_in->value; - - if ((reloc_entry->addend < symbol_in->value) - && (reloc_entry->addend != 0)) - addend = reloc_entry->addend - symbol_in->value; - - if (reloc_entry->addend == symbol_in->value) - addend = 0; - } - - if (bfd_is_com_section (symbol_in->section) || - ((symbol_in->flags & BSF_OLD_COMMON) != 0)) - addend = reloc_entry->addend; - - if (addend < 0 - && (call_addr < (long) (addend * (-1)))) - addend = 0; - - call_addr += addend; - - /* FIXME: This check does not work well with the assembler, - linker needs to be run always. */ - if ((symbol_in->section->flags & SEC_CODE) == SEC_CODE) - { - /* Convert it into words. */ - call_addr = call_addr >> 1; - - if (call_addr > 0xFFFF) /* Intersegment Jump. */ - { - bfd_perror (_("Exceeds Long Jump Range")); - return bfd_reloc_outofrange; - } - } - else - { - /* case ABSOLUTE_ADDR_FOR_DATA : Resolves any code-data - segemnt relocs. These are NOT word aligned. */ - - if (call_addr > 0xFFFF) /* Intersegment Jump. */ - { - bfd_perror (_("Absolute address Exceeds 16 bit Range")); - return bfd_reloc_outofrange; - } - } - - x = bfd_get_32 (abfd, addr); - - x = (x & 0xFF00FF00); - x = (x | ((call_addr & HIGH_WORD_MASK) >> 8)); - x = (x | (call_addr & LOW_WORD_MASK) << 16); - - bfd_put_32 (abfd, (bfd_vma) x, addr); - return bfd_reloc_ok; - - case BFD_RELOC_8: - addend = (reloc_entry->addend - reloc_entry->addend); - - if (!bfd_is_com_section (symbol_in->section) && - ((symbol_in->flags & BSF_OLD_COMMON) == 0)) - { - if (reloc_entry->addend > symbol_in->value) - addend = reloc_entry->addend - symbol_in->value; - if (reloc_entry->addend < symbol_in->value) - addend = reloc_entry->addend - symbol_in->value; - if (reloc_entry->addend == symbol_in->value) - addend = 0; - } - - if (bfd_is_com_section (symbol_in->section) || - ((symbol_in->flags & BSF_OLD_COMMON) != 0)) - addend = reloc_entry->addend; - - if (addend < 0 - && (call_addr < (long) (addend * (-1)))) - addend = 0; - - if (call_addr + addend > 0xFF) - { - bfd_perror (_("Absolute address Exceeds 8 bit Range")); - return bfd_reloc_outofrange; - } - - x = bfd_get_8 (abfd, addr); - x = x & 0x00; - x = x | (call_addr + addend); - - bfd_put_8 (abfd, (bfd_vma) x, addr); - return bfd_reloc_ok; - - case BFD_RELOC_16: - addend = (reloc_entry->addend - reloc_entry->addend); - if (!bfd_is_com_section (symbol_in->section) && - ((symbol_in->flags & BSF_OLD_COMMON) == 0)) - { - if (reloc_entry->addend > symbol_in->value) - addend = reloc_entry->addend - symbol_in->value; - - if (reloc_entry->addend < symbol_in->value) - addend = reloc_entry->addend - symbol_in->value; - - if (reloc_entry->addend == symbol_in->value) - addend = 0; - } - - if (bfd_is_com_section (symbol_in->section) || - ((symbol_in->flags & BSF_OLD_COMMON) != 0)) - addend = reloc_entry->addend; - - if (addend < 0 - && (call_addr < (long) (addend * (-1)))) - addend = 0; - - if ((call_addr + addend) > 0xFFFF) - { - bfd_perror (_("Absolute address Exceeds 16 bit Range")); - return bfd_reloc_outofrange; - } - else - { - unsigned short val = (call_addr + addend); - - x = bfd_get_16 (abfd, addr); - - /* LE */ - x = (x & 0x0000); /* Flush garbage value. */ - x = val; - if ((symbol_in->section->flags & SEC_CODE) == SEC_CODE) - x = x >> 1; /* Convert it into words. */ - } - - bfd_put_16 (abfd, (bfd_vma) x, addr); - return bfd_reloc_ok; - - case BFD_RELOC_32: - addend = (reloc_entry->addend - reloc_entry->addend); - - if (!bfd_is_com_section (symbol_in->section) && - ((symbol_in->flags & BSF_OLD_COMMON) == 0)) - { - if (reloc_entry->addend > symbol_in->value) - addend = reloc_entry->addend - symbol_in->value; - if (reloc_entry->addend < symbol_in->value) - addend = reloc_entry->addend - symbol_in->value; - if (reloc_entry->addend == symbol_in->value) - addend = 0; - } - - if (bfd_is_com_section (symbol_in->section) || - ((symbol_in->flags & BSF_OLD_COMMON) != 0)) - addend = reloc_entry->addend; - - if (addend < 0 - && (call_addr < (long) (addend * (-1)))) - addend = 0; - - if ((call_addr + addend) < 0) - { - bfd_perror ("Absolute address Exceeds 32 bit Range"); - return bfd_reloc_outofrange; - } - - x = bfd_get_32 (abfd, addr); - x = (x & 0x0000); /* Flush garbage value. */ - x = call_addr + addend; - if ((symbol_in->section->flags & SEC_CODE) == SEC_CODE) - x = x >> 1; /* Convert it into words. */ - - bfd_put_32 (abfd, (bfd_vma) x, addr); - return bfd_reloc_ok; - - default: - bfd_perror (_("Unrecognized Reloc Type")); - return bfd_reloc_notsupported; - } - } - - return bfd_reloc_notsupported; -} - -static reloc_howto_type howto_table[] = -{ - EMPTY_HOWTO (0), - EMPTY_HOWTO (1), - { - BFD_RELOC_32, 0, 1, 8, FALSE, 0, complain_overflow_bitfield, - coff_maxq20_reloc, "32Bit", TRUE, 0x000000ff, 0x000000ff, TRUE - }, - { - SHORT_JUMP, 0, 1, 8, FALSE, 0, complain_overflow_bitfield, - coff_maxq20_reloc, "SHORT_JMP", TRUE, 0x000000ff, 0x000000ff, TRUE - }, - { - ABSOLUTE_ADDR_FOR_DATA, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, - coff_maxq20_reloc, "INTERSEGMENT_RELOC", TRUE, 0x00000000, 0x00000000, - FALSE - }, - { - BFD_RELOC_16, 0, 1, 8, FALSE, 0, complain_overflow_bitfield, - coff_maxq20_reloc, "16Bit", TRUE, 0x000000ff, 0x000000ff, TRUE - }, - { - LONG_JUMP, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, - coff_maxq20_reloc, "LONG_JUMP", TRUE, 0x00000000, 0x00000000, FALSE - }, - { - BFD_RELOC_8, 0, 1, 8, FALSE, 0, complain_overflow_bitfield, - coff_maxq20_reloc, "8bit", TRUE, 0x000000ff, 0x000000ff, TRUE - }, - EMPTY_HOWTO (8), - EMPTY_HOWTO (9), - EMPTY_HOWTO (10), -}; - -static reloc_howto_type * -maxq_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, - bfd_reloc_code_real_type code) -{ - switch (code) - { - /* SHORT JUMP */ - case BFD_RELOC_16_PCREL_S2: - return howto_table + 3; - - /* INTERSEGMENT JUMP */ - case BFD_RELOC_24: - return howto_table + 4; - - /* BYTE RELOC */ - case BFD_RELOC_8: - return howto_table + 7; - - /* WORD RELOC */ - case BFD_RELOC_16: - return howto_table + 5; - - /* LONG RELOC */ - case BFD_RELOC_32: - return howto_table + 2; - - /* LONG JUMP */ - case BFD_RELOC_14: - return howto_table + 6; - - default: - return NULL; - } -} - -static reloc_howto_type * -maxq_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, const char *r_name) -{ - unsigned int i; - - for (i = 0; i < sizeof (howto_table) / sizeof (howto_table[0]); i++) - if (howto_table[i].name != NULL - && strcasecmp (howto_table[i].name, r_name) == 0) - return &howto_table[i]; - - return NULL; -} - -#define coff_bfd_reloc_type_lookup maxq_reloc_type_lookup -#define coff_bfd_reloc_name_lookup maxq_reloc_name_lookup - -/* Perform any necessary magic to the addend in a reloc entry. */ -#define CALC_ADDEND(abfd, symbol, ext_reloc, cache_ptr) \ - cache_ptr->addend = ext_reloc.r_offset; - -#ifndef bfd_pe_print_pdata -#define bfd_pe_print_pdata NULL -#endif - -#include "coffcode.h" - -#ifndef TARGET_UNDERSCORE -#define TARGET_UNDERSCORE 1 -#endif - -#ifndef EXTRA_S_FLAGS -#define EXTRA_S_FLAGS 0 -#endif - -/* Forward declaration for use initialising alternative_target field. */ -CREATE_LITTLE_COFF_TARGET_VEC (maxqcoff_vec, "coff-maxq", 0, EXTRA_S_FLAGS, - TARGET_UNDERSCORE, NULL, COFF_SWAP_TABLE); - diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-mcore.c crash-6.1.6/=unpacked-tar1=/bfd/coff-mcore.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-mcore.c 2007-10-15 02:00:11.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-mcore.c 2010-06-27 04:07:51.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for Motorola MCore COFF/PE - Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007 + Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -370,8 +370,6 @@ { struct internal_reloc * rel; struct internal_reloc * relend; - bfd_boolean hihalf; - bfd_vma hihalf_val; /* If we are performing a relocatable link, we don't need to do a thing. The caller will take care of adjusting the reloc @@ -393,9 +391,6 @@ return FALSE; } - hihalf = FALSE; - hihalf_val = 0; - rel = relocs; relend = rel + input_section->reloc_count; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-ppc.c crash-6.1.6/=unpacked-tar1=/bfd/coff-ppc.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-ppc.c 2009-01-03 16:19:52.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-ppc.c 2011-01-14 12:35:56.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for PowerPC Microsoft Portable Executable files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Original version pieced together by Kim Knuttila (krk@cygnus.com) @@ -867,8 +867,6 @@ enum toc_type toc_kind ATTRIBUTE_UNUSED; { struct ppc_coff_link_hash_entry *h; - const char *name; - int *local_syms; h = 0; @@ -917,8 +915,6 @@ } else { - name = h->root.root.root.string; - /* Check to see if there's a toc slot allocated. If not, do it here. It will be used in relocate_section. */ if (IS_UNALLOCATED(h->toc_offset)) @@ -1010,8 +1006,6 @@ { struct internal_reloc *rel; struct internal_reloc *relend; - bfd_boolean hihalf; - bfd_vma hihalf_val; asection *toc_section = 0; bfd_vma relocation; reloc_howto_type *howto = 0; @@ -1022,9 +1016,6 @@ if (info->relocatable) return TRUE; - hihalf = FALSE; - hihalf_val = 0; - rel = relocs; relend = rel + input_section->reloc_count; for (; rel < relend; rel++) @@ -1275,17 +1266,12 @@ appearing on the call instruction is a glue function or not. A glue function must announce itself via a IMGLUE reloc, and the reloc contains the required toc restore instruction. */ - bfd_vma x; - const char *my_name; - DUMP_RELOC2 (howto->name, rel); if (h != 0) { - my_name = h->root.root.root.string; if (h->symbol_is_glue == 1) { - x = bfd_get_32 (input_bfd, loc); bfd_put_32 (input_bfd, (bfd_vma) h->glue_insn, loc); } } @@ -1857,10 +1843,9 @@ howto = ppc_coff_howto_table + IMAGE_REL_PPC_TOCREL16; break; default: - fprintf (stderr, - _("Warning: Unsupported reloc %s [%d] used -- it may not work.\n"), - ppc_coff_howto_table[r_type].name, - r_type); + (*_bfd_error_handler) (_("warning: unsupported reloc %s [%d] used -- it may not work"), + ppc_coff_howto_table[r_type].name, + r_type); howto = ppc_coff_howto_table + r_type; break; } @@ -1930,10 +1915,9 @@ howto = ppc_coff_howto_table + r_type; break; default: - fprintf (stderr, - _("Warning: Unsupported reloc %s [%d] used -- it may not work.\n"), - ppc_coff_howto_table[r_type].name, - r_type); + (*_bfd_error_handler) (_("warning: unsupported reloc %s [%d] used -- it may not work"), + ppc_coff_howto_table[r_type].name, + r_type); howto = ppc_coff_howto_table + r_type; break; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-rs6000.c crash-6.1.6/=unpacked-tar1=/bfd/coff-rs6000.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-rs6000.c 2009-09-05 07:56:21.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-rs6000.c 2010-08-18 12:24:04.000000000 +0000 @@ -1,6 +1,7 @@ /* BFD back-end for IBM RS/6000 "XCOFF" files. Copyright 1990-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 + Free Software Foundation, Inc. Written by Metin G. Ozisik, Mimi Phuong-Thao Vo, and John Gilmore. Archive support from Damon A. Permezel. Contributed by IBM Corporation and Cygnus Support. @@ -111,6 +112,8 @@ rs6000coff_core_file_failing_signal #define coff_core_file_matches_executable_p \ rs6000coff_core_file_matches_executable_p +#define coff_core_file_pid \ + _bfd_nocore_core_file_pid #else #define CORE_FILE_P _bfd_dummy_target #define coff_core_file_failing_command \ @@ -119,6 +122,8 @@ _bfd_nocore_core_file_failing_signal #define coff_core_file_matches_executable_p \ _bfd_nocore_core_file_matches_executable_p +#define coff_core_file_pid \ + _bfd_nocore_core_file_pid #endif #define coff_SWAP_sym_in _bfd_xcoff_swap_sym_in #define coff_SWAP_sym_out _bfd_xcoff_swap_sym_out @@ -896,11 +901,11 @@ EMPTY_HOWTO (0xe), - /* Non-relocating reference. */ + /* Non-relocating reference. Bitsize is 1 so that r_rsize is 0. */ HOWTO (R_REF, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 1, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -1162,6 +1167,8 @@ case BFD_RELOC_32: case BFD_RELOC_CTOR: return &xcoff_howto_table[0]; + case BFD_RELOC_NONE: + return &xcoff_howto_table[0xf]; default: return NULL; } @@ -3068,7 +3075,7 @@ bfd_vma relocation; struct reloc_howto_struct *howto; { - bfd_vma addrmask, fieldmask, signmask, ss; + bfd_vma fieldmask, signmask, ss; bfd_vma a, b, sum; /* Get the values to be added together. For signed and unsigned @@ -3076,7 +3083,6 @@ the size of an address. For bitfields, all the bits matter. See also bfd_check_overflow. */ fieldmask = N_ONES (howto->bitsize); - addrmask = N_ONES (bfd_arch_bits_per_address (input_bfd)) | fieldmask; a = relocation; b = val & howto->src_mask; @@ -4171,26 +4177,25 @@ /* Copy */ _bfd_xcoff_copy_private_bfd_data, - ((bfd_boolean (*) (bfd *, bfd *)) bfd_true), + _bfd_generic_bfd_merge_private_bfd_data, _bfd_generic_init_private_section_data, - ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true), - ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true), - ((bfd_boolean (*) (bfd *, bfd *)) bfd_true), - ((bfd_boolean (*) (bfd *, flagword)) bfd_true), - ((bfd_boolean (*) (bfd *, void * )) bfd_true), + _bfd_generic_bfd_copy_private_section_data, + _bfd_generic_bfd_copy_private_symbol_data, + _bfd_generic_bfd_copy_private_header_data, + _bfd_generic_bfd_set_private_flags, + _bfd_generic_bfd_print_private_bfd_data, /* Core */ - coff_core_file_failing_command, - coff_core_file_failing_signal, - coff_core_file_matches_executable_p, + BFD_JUMP_TABLE_CORE (coff), /* Archive */ _bfd_xcoff_slurp_armap, - bfd_false, - ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false), + _bfd_noarchive_slurp_extended_name_table, + _bfd_noarchive_construct_extended_name_table, bfd_dont_truncate_arname, _bfd_xcoff_write_armap, _bfd_xcoff_read_ar_hdr, + _bfd_generic_write_ar_hdr, _bfd_xcoff_openr_next_archived_file, _bfd_generic_get_elt_at_index, _bfd_xcoff_stat_arch_elt, @@ -4230,6 +4235,7 @@ _bfd_generic_link_hash_table_free, _bfd_xcoff_bfd_link_add_symbols, _bfd_generic_link_just_syms, + _bfd_generic_copy_link_hash_symbol_type, _bfd_xcoff_bfd_final_link, _bfd_generic_link_split_section, bfd_generic_gc_sections, @@ -4424,26 +4430,25 @@ /* Copy */ _bfd_xcoff_copy_private_bfd_data, - ((bfd_boolean (*) (bfd *, bfd *)) bfd_true), + _bfd_generic_bfd_merge_private_bfd_data, _bfd_generic_init_private_section_data, - ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true), - ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true), - ((bfd_boolean (*) (bfd *, bfd *)) bfd_true), - ((bfd_boolean (*) (bfd *, flagword)) bfd_true), - ((bfd_boolean (*) (bfd *, void * )) bfd_true), + _bfd_generic_bfd_copy_private_section_data, + _bfd_generic_bfd_copy_private_symbol_data, + _bfd_generic_bfd_copy_private_header_data, + _bfd_generic_bfd_set_private_flags, + _bfd_generic_bfd_print_private_bfd_data, /* Core */ - coff_core_file_failing_command, - coff_core_file_failing_signal, - coff_core_file_matches_executable_p, + BFD_JUMP_TABLE_CORE (coff), /* Archive */ _bfd_xcoff_slurp_armap, - bfd_false, - ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false), + _bfd_noarchive_slurp_extended_name_table, + _bfd_noarchive_construct_extended_name_table, bfd_dont_truncate_arname, _bfd_xcoff_write_armap, _bfd_xcoff_read_ar_hdr, + _bfd_generic_write_ar_hdr, _bfd_xcoff_openr_next_archived_file, _bfd_generic_get_elt_at_index, _bfd_xcoff_stat_arch_elt, @@ -4483,6 +4488,7 @@ _bfd_generic_link_hash_table_free, _bfd_xcoff_bfd_link_add_symbols, _bfd_generic_link_just_syms, + _bfd_generic_copy_link_hash_symbol_type, _bfd_xcoff_bfd_final_link, _bfd_generic_link_split_section, bfd_generic_gc_sections, diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-sh.c crash-6.1.6/=unpacked-tar1=/bfd/coff-sh.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-sh.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-sh.c 2011-01-14 12:35:56.000000000 +0000 @@ -1,6 +1,7 @@ /* BFD back-end for Renesas Super-H COFF binaries. Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011 + Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Steve Chamberlain, . Relaxing code written by Ian Lance Taylor, . @@ -517,7 +518,7 @@ if (sh_reloc_map[i].bfd_reloc_val == code) return &sh_coff_howtos[(int) sh_reloc_map[i].shcoff_reloc_val]; - fprintf (stderr, "SH Error: unknown reloc type %d\n", code); + (*_bfd_error_handler) (_("SH Error: unknown reloc type %d"), code); return NULL; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-x86_64.c crash-6.1.6/=unpacked-tar1=/bfd/coff-x86_64.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-x86_64.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-x86_64.c 2011-03-03 23:49:21.000000000 +0000 @@ -192,7 +192,8 @@ static bfd_boolean in_reloc_p (bfd *abfd ATTRIBUTE_UNUSED, reloc_howto_type *howto) { - return ! howto->pc_relative && howto->type != R_AMD64_IMAGEBASE; + return ! howto->pc_relative && howto->type != R_AMD64_IMAGEBASE + && howto->type != R_AMD64_SECREL; } #endif /* COFF_WITH_PE */ @@ -545,21 +546,21 @@ { reloc_howto_type *howto; - if (rel->r_type > ARRAY_SIZE (howto_table)) + if (rel->r_type >= ARRAY_SIZE (howto_table)) { bfd_set_error (bfd_error_bad_value); return NULL; } - if (rel->r_type >= R_AMD64_PCRLONG_1 && rel->r_type <= R_AMD64_PCRLONG_5) - { - rel->r_vaddr += (bfd_vma)(rel->r_type-R_AMD64_PCRLONG); - rel->r_type = R_AMD64_PCRLONG; - } howto = howto_table + rel->r_type; #if defined(COFF_WITH_PE) /* Cancel out code in _bfd_coff_generic_relocate_section. */ *addendp = 0; + if (rel->r_type >= R_AMD64_PCRLONG_1 && rel->r_type <= R_AMD64_PCRLONG_5) + { + *addendp -= (bfd_vma)(rel->r_type - R_AMD64_PCRLONG); + rel->r_type = R_AMD64_PCRLONG; + } #endif if (howto->pc_relative) @@ -621,15 +622,15 @@ osect_vma = h->root.u.def.section->output_section->vma; else { - asection *sec; + asection *s; int i; /* Sigh, the only way to get the section to offset against is to find it the hard way. */ - for (sec = abfd->sections, i = 1; i < sym->n_scnum; i++) - sec = sec->next; + for (s = abfd->sections, i = 1; i < sym->n_scnum; i++) + s = s->next; - osect_vma = sec->output_section->vma; + osect_vma = s->output_section->vma; } *addendp -= osect_vma; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff-z80.c crash-6.1.6/=unpacked-tar1=/bfd/coff-z80.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff-z80.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff-z80.c 2009-10-17 17:18:27.000000000 +0000 @@ -283,6 +283,7 @@ #undef coff_bfd_relax_section #define coff_bfd_relax_section bfd_coff_reloc16_relax_section -CREATE_LITTLE_COFF_TARGET_VEC (z80coff_vec, "coff-z80", 0, 0, '\0', NULL, +CREATE_LITTLE_COFF_TARGET_VEC (z80coff_vec, "coff-z80", 0, + SEC_CODE | SEC_DATA, '\0', NULL, COFF_SWAP_TABLE) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coff64-rs6000.c crash-6.1.6/=unpacked-tar1=/bfd/coff64-rs6000.c --- crash-5.1.6/=unpacked-tar1=/bfd/coff64-rs6000.c 2009-09-05 07:56:21.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coff64-rs6000.c 2010-08-18 12:24:04.000000000 +0000 @@ -1,5 +1,6 @@ /* BFD back-end for IBM RS/6000 "XCOFF64" files. - Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Written Clinton Popetz. Contributed by Cygnus Support. @@ -255,6 +256,8 @@ rs6000coff_core_file_failing_signal #define coff_core_file_matches_executable_p \ rs6000coff_core_file_matches_executable_p +#define coff_core_file_pid \ + _bfd_nocore_core_file_pid #else #define CORE_FILE_P _bfd_dummy_target #define coff_core_file_failing_command \ @@ -263,6 +266,8 @@ _bfd_nocore_core_file_failing_signal #define coff_core_file_matches_executable_p \ _bfd_nocore_core_file_matches_executable_p +#define coff_core_file_pid \ + _bfd_nocore_core_file_pid #endif #define coff_SWAP_sym_in _bfd_xcoff64_swap_sym_in #define coff_SWAP_sym_out _bfd_xcoff64_swap_sym_out @@ -1594,11 +1599,11 @@ EMPTY_HOWTO (0xe), - /* Non-relocating reference. */ + /* Non-relocating reference. Bitsize is 1 so that r_rsize is 0. */ HOWTO (R_REF, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 1, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -1882,6 +1887,8 @@ return &xcoff64_howto_table[0x1c]; case BFD_RELOC_64: return &xcoff64_howto_table[0]; + case BFD_RELOC_NONE: + return &xcoff64_howto_table[0xf]; default: return NULL; } @@ -2741,26 +2748,25 @@ /* Copy */ _bfd_xcoff_copy_private_bfd_data, - ((bfd_boolean (*) (bfd *, bfd *)) bfd_true), + _bfd_generic_bfd_merge_private_bfd_data, _bfd_generic_init_private_section_data, - ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true), - ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true), - ((bfd_boolean (*) (bfd *, bfd *)) bfd_true), - ((bfd_boolean (*) (bfd *, flagword)) bfd_true), - ((bfd_boolean (*) (bfd *, void * )) bfd_true), + _bfd_generic_bfd_copy_private_section_data, + _bfd_generic_bfd_copy_private_symbol_data, + _bfd_generic_bfd_copy_private_header_data, + _bfd_generic_bfd_set_private_flags, + _bfd_generic_bfd_print_private_bfd_data, /* Core */ - coff_core_file_failing_command, - coff_core_file_failing_signal, - coff_core_file_matches_executable_p, + BFD_JUMP_TABLE_CORE (coff), /* Archive */ xcoff64_slurp_armap, - bfd_false, - ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false), + _bfd_noarchive_slurp_extended_name_table, + _bfd_noarchive_construct_extended_name_table, bfd_dont_truncate_arname, _bfd_xcoff_write_armap, _bfd_xcoff_read_ar_hdr, + _bfd_generic_write_ar_hdr, xcoff64_openr_next_archived_file, _bfd_generic_get_elt_at_index, _bfd_xcoff_stat_arch_elt, @@ -2800,6 +2806,7 @@ _bfd_generic_link_hash_table_free, _bfd_xcoff_bfd_link_add_symbols, _bfd_generic_link_just_syms, + _bfd_generic_copy_link_hash_symbol_type, _bfd_xcoff_bfd_final_link, _bfd_generic_link_split_section, bfd_generic_gc_sections, @@ -2830,6 +2837,8 @@ PARAMS ((bfd *)); extern int xcoff64_core_file_failing_signal PARAMS ((bfd *)); +#define xcoff64_core_file_pid \ + _bfd_nocore_core_file_pid /* AIX 5 */ static const struct xcoff_backend_data_rec bfd_xcoff_aix5_backend_data = @@ -2995,26 +3004,25 @@ /* Copy */ _bfd_xcoff_copy_private_bfd_data, - ((bfd_boolean (*) (bfd *, bfd *)) bfd_true), + _bfd_generic_bfd_merge_private_bfd_data, _bfd_generic_init_private_section_data, - ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true), - ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true), - ((bfd_boolean (*) (bfd *, bfd *)) bfd_true), - ((bfd_boolean (*) (bfd *, flagword)) bfd_true), - ((bfd_boolean (*) (bfd *, void * )) bfd_true), + _bfd_generic_bfd_copy_private_section_data, + _bfd_generic_bfd_copy_private_symbol_data, + _bfd_generic_bfd_copy_private_header_data, + _bfd_generic_bfd_set_private_flags, + _bfd_generic_bfd_print_private_bfd_data, /* Core */ - xcoff64_core_file_failing_command, - xcoff64_core_file_failing_signal, - xcoff64_core_file_matches_executable_p, + BFD_JUMP_TABLE_CORE (xcoff64), /* Archive */ xcoff64_slurp_armap, - bfd_false, - ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) bfd_false), + _bfd_noarchive_slurp_extended_name_table, + _bfd_noarchive_construct_extended_name_table, bfd_dont_truncate_arname, _bfd_xcoff_write_armap, _bfd_xcoff_read_ar_hdr, + _bfd_generic_write_ar_hdr, xcoff64_openr_next_archived_file, _bfd_generic_get_elt_at_index, _bfd_xcoff_stat_arch_elt, @@ -3054,6 +3062,7 @@ _bfd_generic_link_hash_table_free, _bfd_xcoff_bfd_link_add_symbols, _bfd_generic_link_just_syms, + _bfd_generic_copy_link_hash_symbol_type, _bfd_xcoff_bfd_final_link, _bfd_generic_link_split_section, bfd_generic_gc_sections, diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coffcode.h crash-6.1.6/=unpacked-tar1=/bfd/coffcode.h --- crash-5.1.6/=unpacked-tar1=/bfd/coffcode.h 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coffcode.h 2011-03-31 08:13:48.000000000 +0000 @@ -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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -373,6 +373,7 @@ #define DOT_DEBUG ".debug" #define GNU_LINKONCE_WI ".gnu.linkonce.wi." +#define GNU_LINKONCE_WT ".gnu.linkonce.wt." #define DOT_RELOC ".reloc" #if defined (COFF_LONG_SECTION_NAMES) @@ -557,7 +558,8 @@ styp_flags = STYP_DEBUG_INFO; } #ifdef COFF_LONG_SECTION_NAMES - else if (CONST_STRNEQ (sec_name, GNU_LINKONCE_WI)) + else if (CONST_STRNEQ (sec_name, GNU_LINKONCE_WI) + || CONST_STRNEQ (sec_name, GNU_LINKONCE_WT)) { styp_flags = STYP_DEBUG_INFO; } @@ -636,6 +638,15 @@ sec_to_styp_flags (const char *sec_name, flagword sec_flags) { long styp_flags = 0; + bfd_boolean is_dbg = FALSE; + + if (CONST_STRNEQ (sec_name, DOT_DEBUG) +#ifdef COFF_LONG_SECTION_NAMES + || CONST_STRNEQ (sec_name, GNU_LINKONCE_WI) + || CONST_STRNEQ (sec_name, GNU_LINKONCE_WT) +#endif + || CONST_STRNEQ (sec_name, ".stab")) + is_dbg = TRUE; /* caution: there are at least three groups of symbols that have very similar bits and meanings: IMAGE_SCN*, SEC_*, and STYP_*. @@ -646,16 +657,15 @@ but there are more IMAGE_SCN_* flags. */ /* FIXME: There is no gas syntax to specify the debug section flag. */ - if (CONST_STRNEQ (sec_name, DOT_DEBUG) - || CONST_STRNEQ (sec_name, GNU_LINKONCE_WI)) - sec_flags = SEC_DEBUGGING | SEC_READONLY; + if (is_dbg) + sec_flags = SEC_DEBUGGING | SEC_READONLY; /* skip LOAD */ /* READONLY later */ /* skip RELOC */ if ((sec_flags & SEC_CODE) != 0) styp_flags |= IMAGE_SCN_CNT_CODE; - if ((sec_flags & SEC_DATA) != 0) + if ((sec_flags & (SEC_DATA | SEC_DEBUGGING)) != 0) styp_flags |= IMAGE_SCN_CNT_INITIALIZED_DATA; if ((sec_flags & SEC_ALLOC) != 0 && (sec_flags & SEC_LOAD) == 0) styp_flags |= IMAGE_SCN_CNT_UNINITIALIZED_DATA; /* ==STYP_BSS */ @@ -666,9 +676,9 @@ styp_flags |= IMAGE_SCN_LNK_COMDAT; if ((sec_flags & SEC_DEBUGGING) != 0) styp_flags |= IMAGE_SCN_MEM_DISCARDABLE; - if ((sec_flags & SEC_EXCLUDE) != 0) + if ((sec_flags & SEC_EXCLUDE) != 0 && !is_dbg) styp_flags |= IMAGE_SCN_LNK_REMOVE; - if ((sec_flags & SEC_NEVER_LOAD) != 0) + if ((sec_flags & SEC_NEVER_LOAD) != 0 && !is_dbg) styp_flags |= IMAGE_SCN_LNK_REMOVE; /* skip IN_MEMORY */ /* skip SORT */ @@ -792,6 +802,7 @@ #endif #ifdef COFF_LONG_SECTION_NAMES || CONST_STRNEQ (name, GNU_LINKONCE_WI) + || CONST_STRNEQ (name, GNU_LINKONCE_WT) #endif || CONST_STRNEQ (name, ".stab")) { @@ -949,7 +960,7 @@ if (! ((isym.n_sclass == C_STAT || isym.n_sclass == C_EXT) - && isym.n_type == T_NULL + && BTYPE (isym.n_type) == T_NULL && isym.n_value == 0)) abort (); @@ -1120,7 +1131,15 @@ long styp_flags = internal_s->s_flags; flagword sec_flags; bfd_boolean result = TRUE; + bfd_boolean is_dbg = FALSE; + if (CONST_STRNEQ (name, DOT_DEBUG) +#ifdef COFF_LONG_SECTION_NAMES + || CONST_STRNEQ (name, GNU_LINKONCE_WI) + || CONST_STRNEQ (name, GNU_LINKONCE_WT) +#endif + || CONST_STRNEQ (name, ".stab")) + is_dbg = TRUE; /* Assume read only unless IMAGE_SCN_MEM_WRITE is specified. */ sec_flags = SEC_READONLY; @@ -1190,27 +1209,30 @@ mean that a given section contains debug information. Thus we only set the SEC_DEBUGGING flag on sections that we recognise as containing debug information. */ - if (CONST_STRNEQ (name, DOT_DEBUG) + if (is_dbg #ifdef _COMMENT || strcmp (name, _COMMENT) == 0 #endif -#ifdef COFF_LONG_SECTION_NAMES - || CONST_STRNEQ (name, GNU_LINKONCE_WI) -#endif - || CONST_STRNEQ (name, ".stab")) - sec_flags |= SEC_DEBUGGING; + ) + { + sec_flags |= SEC_DEBUGGING | SEC_READONLY; + } break; case IMAGE_SCN_MEM_SHARED: sec_flags |= SEC_COFF_SHARED; break; case IMAGE_SCN_LNK_REMOVE: - sec_flags |= SEC_EXCLUDE; + if (!is_dbg) + sec_flags |= SEC_EXCLUDE; break; case IMAGE_SCN_CNT_CODE: sec_flags |= SEC_CODE | SEC_ALLOC | SEC_LOAD; break; case IMAGE_SCN_CNT_INITIALIZED_DATA: - sec_flags |= SEC_DATA | SEC_ALLOC | SEC_LOAD; + if (is_dbg) + sec_flags |= SEC_DEBUGGING; + else + sec_flags |= SEC_DATA | SEC_ALLOC | SEC_LOAD; break; case IMAGE_SCN_CNT_UNINITIALIZED_DATA: sec_flags |= SEC_ALLOC; @@ -1838,12 +1860,14 @@ file_ptr oldpos = bfd_tell (abfd); bfd_size_type relsz = bfd_coff_relsz (abfd); - bfd_seek (abfd, (file_ptr) hdr->s_relptr, 0); + if (bfd_seek (abfd, (file_ptr) hdr->s_relptr, 0) != 0) + return; if (bfd_bread (& dst, relsz, abfd) != relsz) return; coff_swap_reloc_in (abfd, &dst, &n); - bfd_seek (abfd, oldpos, 0); + if (bfd_seek (abfd, oldpos, 0) != 0) + return; section->reloc_count = hdr->s_nreloc = n.r_vaddr - 1; section->rel_filepos += relsz; } @@ -2094,22 +2118,6 @@ machine = bfd_mach_m68020; break; #endif -#ifdef MAXQ20MAGIC - case MAXQ20MAGIC: - arch = bfd_arch_maxq; - switch (internal_f->f_flags & F_MACHMASK) - { - case F_MAXQ10: - machine = bfd_mach_maxq10; - break; - case F_MAXQ20: - machine = bfd_mach_maxq20; - break; - default: - return FALSE; - } - break; -#endif #ifdef MC88MAGIC case MC88MAGIC: case MC88DMAGIC: @@ -2648,7 +2656,7 @@ entries know which symbol index they point to. So we have to look up the output symbol here. */ - if (q->sym_ptr_ptr[0]->the_bfd != abfd) + if (q->sym_ptr_ptr[0] != NULL && q->sym_ptr_ptr[0]->the_bfd != abfd) { int j; const char *sname = q->sym_ptr_ptr[0]->name; @@ -2677,7 +2685,7 @@ n.r_symndx = q->addend; else #endif - if (q->sym_ptr_ptr) + if (q->sym_ptr_ptr && q->sym_ptr_ptr[0] != NULL) { #ifdef SECTION_RELATIVE_ABSOLUTE_SYMBOL_P if (SECTION_RELATIVE_ABSOLUTE_SYMBOL_P (q, s)) @@ -3018,17 +3026,6 @@ return TRUE; #endif -#ifdef MAXQ20MAGIC - case bfd_arch_maxq: - * magicp = MAXQ20MAGIC; - switch (bfd_get_mach (abfd)) - { - case bfd_mach_maxq10: * flagsp = F_MAXQ10; return TRUE; - case bfd_mach_maxq20: * flagsp = F_MAXQ20; return TRUE; - default: return FALSE; - } -#endif - default: /* Unknown architecture. */ /* Fall through to "return FALSE" below, to avoid "statement never reached" errors on the one below. */ @@ -3090,13 +3087,34 @@ coff_compute_section_file_positions (bfd * abfd) { asection *current; - asection *previous = NULL; file_ptr sofar = bfd_coff_filhsz (abfd); bfd_boolean align_adjust; + int target_index; #ifdef ALIGN_SECTIONS_IN_FILE + asection *previous = NULL; file_ptr old_sofar; #endif +#ifdef COFF_IMAGE_WITH_PE + int page_size; + + if (coff_data (abfd)->link_info) + { + page_size = pe_data (abfd)->pe_opthdr.FileAlignment; + + /* If no file alignment has been set, default to one. + This repairs 'ld -r' for arm-wince-pe target. */ + if (page_size == 0) + page_size = 1; + } + else + page_size = PE_DEF_FILE_ALIGNMENT; +#else +#ifdef COFF_PAGE_SIZE + int page_size = COFF_PAGE_SIZE; +#endif +#endif + #ifdef RS6000COFF_C /* On XCOFF, if we have symbols, set up the .debug section. */ if (bfd_get_symcount (abfd) > 0) @@ -3136,26 +3154,6 @@ } #endif -#ifdef COFF_IMAGE_WITH_PE - int page_size; - - if (coff_data (abfd)->link_info) - { - page_size = pe_data (abfd)->pe_opthdr.FileAlignment; - - /* If no file alignment has been set, default to one. - This repairs 'ld -r' for arm-wince-pe target. */ - if (page_size == 0) - page_size = 1; - } - else - page_size = PE_DEF_FILE_ALIGNMENT; -#else -#ifdef COFF_PAGE_SIZE - int page_size = COFF_PAGE_SIZE; -#endif -#endif - if (bfd_get_start_address (abfd)) /* A start address may have been added to the original file. In this case it will need an optional header to record it. */ @@ -3191,7 +3189,6 @@ unsigned int count; asection **section_list; unsigned int i; - int target_index; bfd_size_type amt; #ifdef COFF_PAGE_SIZE @@ -3254,14 +3251,20 @@ #else /* ! COFF_IMAGE_WITH_PE */ { /* Set the target_index field. */ - int target_index; - target_index = 1; for (current = abfd->sections; current != NULL; current = current->next) current->target_index = target_index++; } #endif /* ! COFF_IMAGE_WITH_PE */ + if (target_index >= 32768) + { + bfd_set_error (bfd_error_file_too_big); + (*_bfd_error_handler) + (_("%B: too many sections (%d)"), abfd, target_index); + return FALSE; + } + align_adjust = FALSE; for (current = abfd->sections; current != NULL; @@ -3402,7 +3405,9 @@ bfd_set_section_vma (abfd, current, 0); #endif +#ifdef ALIGN_SECTIONS_IN_FILE previous = current; +#endif } /* It is now safe to write to the output file. If we needed an @@ -3527,7 +3532,9 @@ asection *current; bfd_boolean hasrelocs = FALSE; bfd_boolean haslinno = FALSE; +#ifdef COFF_IMAGE_WITH_PE bfd_boolean hasdebug = FALSE; +#endif file_ptr scn_base; file_ptr reloc_base; file_ptr lineno_base; @@ -3630,9 +3637,9 @@ current = current->next) { struct internal_scnhdr section; +#ifdef COFF_IMAGE_WITH_PE bfd_boolean is_reloc_section = FALSE; -#ifdef COFF_IMAGE_WITH_PE if (strcmp (current->name, DOT_RELOC) == 0) { is_reloc_section = TRUE; @@ -3731,9 +3738,11 @@ #endif if (current->lineno_count != 0) haslinno = TRUE; +#ifdef COFF_IMAGE_WITH_PE if ((current->flags & SEC_DEBUGGING) != 0 && ! is_reloc_section) hasdebug = TRUE; +#endif #ifdef RS6000COFF_C #ifndef XCOFF64 @@ -4099,11 +4108,6 @@ internal_a.magic = NMAGIC; /* Assume separate i/d. */ #endif -#ifdef MAXQ20MAGIC -#define __A_MAGIC_SET__ - internal_a.magic = MAXQ20MAGIC; -#endif - #ifndef __A_MAGIC_SET__ #include "Your aouthdr magic number is not being set!" #else @@ -4507,7 +4511,7 @@ { (*_bfd_error_handler) (_("%B: warning: illegal symbol index %ld in line numbers"), - abfd, dst.l_addr.l_symndx); + abfd, (long) symndx); symndx = 0; warned = TRUE; } @@ -4850,7 +4854,7 @@ to the symbol instead of the index. FIXME: This should use a union. */ src->u.syment.n_value = - (long) (native_symbols + src->u.syment.n_value); + (long) (intptr_t) (native_symbols + src->u.syment.n_value); dst->symbol.value = src->u.syment.n_value; src->fix_value = 1; break; @@ -4892,6 +4896,11 @@ && src->u.syment.n_value == 0 && src->u.syment.n_scnum == 0) break; +#ifdef RS6000COFF_C + /* XCOFF specific: deleted entry. */ + if (src->u.syment.n_value == C_NULL_VALUE) + break; +#endif /* Fall through. */ case C_EXTDEF: /* External definition. */ case C_ULABEL: /* Undefined label. */ @@ -5143,7 +5152,7 @@ { (*_bfd_error_handler) (_("%B: warning: illegal symbol index %ld in relocs"), - abfd, dst.r_symndx); + abfd, (long) dst.r_symndx); cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; ptr = NULL; } @@ -5169,6 +5178,7 @@ /* Calculate any reloc addend by looking at the symbol. */ CALC_ADDEND (abfd, ptr, dst, cache_ptr); + (void) ptr; cache_ptr->address -= asect->vma; /* !! cache_ptr->section = NULL;*/ @@ -5328,6 +5338,8 @@ #endif /* ! defined (coff_relocate_section) */ #define coff_bfd_link_just_syms _bfd_generic_link_just_syms +#define coff_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define coff_bfd_link_split_section _bfd_generic_link_split_section #ifndef coff_start_final_link diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/coffgen.c crash-6.1.6/=unpacked-tar1=/bfd/coffgen.c --- crash-5.1.6/=unpacked-tar1=/bfd/coffgen.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/coffgen.c 2010-04-27 14:42:50.000000000 +0000 @@ -307,20 +307,20 @@ /* Get the BFD section from a COFF symbol section number. */ asection * -coff_section_from_bfd_index (bfd *abfd, int index) +coff_section_from_bfd_index (bfd *abfd, int section_index) { struct bfd_section *answer = abfd->sections; - if (index == N_ABS) + if (section_index == N_ABS) return bfd_abs_section_ptr; - if (index == N_UNDEF) + if (section_index == N_UNDEF) return bfd_und_section_ptr; - if (index == N_DEBUG) + if (section_index == N_DEBUG) return bfd_abs_section_ptr; while (answer) { - if (answer->target_index == index) + if (answer->target_index == section_index) return answer; answer = answer->next; } @@ -2152,6 +2152,7 @@ maxdiff = (bfd_vma) 0 - (bfd_vma) 1; while (1) { + bfd_vma file_addr; combined_entry_type *p2; for (p2 = p + 1 + p->u.syment.n_numaux; @@ -2170,11 +2171,16 @@ } } + file_addr = (bfd_vma) p2->u.syment.n_value; + /* PR 11512: Include the section address of the function name symbol. */ + if (p2->u.syment.n_scnum > 0) + file_addr += coff_section_from_bfd_index (abfd, + p2->u.syment.n_scnum)->vma; /* We use <= MAXDIFF here so that if we get a zero length file, we actually use the next file entry. */ if (p2 < pend - && offset + sec_vma >= (bfd_vma) p2->u.syment.n_value - && offset + sec_vma - (bfd_vma) p2->u.syment.n_value <= maxdiff) + && offset + sec_vma >= file_addr + && offset + sec_vma - file_addr <= maxdiff) { *filename_ptr = (char *) p->u.syment._n._n_n._n_offset; maxdiff = offset + sec_vma - p2->u.syment.n_value; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cofflink.c crash-6.1.6/=unpacked-tar1=/bfd/cofflink.c --- crash-5.1.6/=unpacked-tar1=/bfd/cofflink.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cofflink.c 2010-12-13 01:06:15.000000000 +0000 @@ -197,7 +197,8 @@ static bfd_boolean coff_link_check_ar_symbols (bfd *abfd, struct bfd_link_info *info, - bfd_boolean *pneeded) + bfd_boolean *pneeded, + bfd **subsbfd) { bfd_size_type symesz; bfd_byte *esym; @@ -243,7 +244,8 @@ if (h != (struct bfd_link_hash_entry *) NULL && h->type == bfd_link_hash_undefined) { - if (! (*info->callbacks->add_archive_element) (info, abfd, name)) + if (!(*info->callbacks + ->add_archive_element) (info, abfd, name, subsbfd)) return FALSE; *pneeded = TRUE; return TRUE; @@ -267,20 +269,38 @@ struct bfd_link_info *info, bfd_boolean *pneeded) { - if (! _bfd_coff_get_external_symbols (abfd)) - return FALSE; + bfd *oldbfd; + bfd_boolean needed; - if (! coff_link_check_ar_symbols (abfd, info, pneeded)) + if (!_bfd_coff_get_external_symbols (abfd)) return FALSE; - if (*pneeded - && ! coff_link_add_symbols (abfd, info)) + oldbfd = abfd; + if (!coff_link_check_ar_symbols (abfd, info, pneeded, &abfd)) return FALSE; - if ((! info->keep_memory || ! *pneeded) - && ! _bfd_coff_free_symbols (abfd)) - return FALSE; + needed = *pneeded; + if (needed) + { + /* Potentially, the add_archive_element hook may have set a + substitute BFD for us. */ + if (abfd != oldbfd) + { + if (!info->keep_memory + && !_bfd_coff_free_symbols (oldbfd)) + return FALSE; + if (!_bfd_coff_get_external_symbols (abfd)) + return FALSE; + } + if (!coff_link_add_symbols (abfd, info)) + return FALSE; + } + if (!info->keep_memory || !needed) + { + if (!_bfd_coff_free_symbols (abfd)) + return FALSE; + } return TRUE; } @@ -1514,11 +1534,13 @@ /* Skip section symbols for sections which are not going to be emitted. */ if (!skip - && dont_skip_symbol == 0 + && !dont_skip_symbol && isym.n_sclass == C_STAT && isym.n_type == T_NULL - && isym.n_numaux > 0 - && (*secpp)->output_section == bfd_abs_section_ptr) + && isym.n_numaux > 0 + && ((*secpp)->output_section == bfd_abs_section_ptr + || bfd_section_removed_from_list (output_bfd, + (*secpp)->output_section))) skip = TRUE; #endif @@ -2959,7 +2981,7 @@ See also linker.c: generic_link_check_archive_element. */ asection *sec; struct coff_link_hash_entry *h2 = - input_bfd->tdata.coff_obj_data->sym_hashes[ + h->auxbfd->tdata.coff_obj_data->sym_hashes[ h->aux->x_sym.x_tagndx.l]; if (!h2 || h2->root.type == bfd_link_hash_undefined) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/compress.c crash-6.1.6/=unpacked-tar1=/bfd/compress.c --- crash-5.1.6/=unpacked-tar1=/bfd/compress.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/compress.c 2011-03-06 18:37:07.000000000 +0000 @@ -1,5 +1,5 @@ -/* ELF attributes support (based on ARM EABI attributes). - Copyright 2008 +/* Compressed section support (intended for debug sections). + Copyright 2008, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -27,51 +27,301 @@ #include #endif +#ifdef HAVE_ZLIB_H +static bfd_boolean +decompress_contents (bfd_byte *compressed_buffer, + bfd_size_type compressed_size, + bfd_byte *uncompressed_buffer, + bfd_size_type uncompressed_size) +{ + z_stream strm; + int rc; + + /* It is possible the section consists of several compressed + buffers concatenated together, so we uncompress in a loop. */ + strm.zalloc = NULL; + strm.zfree = NULL; + strm.opaque = NULL; + strm.avail_in = compressed_size - 12; + strm.next_in = (Bytef*) compressed_buffer + 12; + strm.avail_out = uncompressed_size; + + rc = inflateInit (&strm); + while (strm.avail_in > 0) + { + if (rc != Z_OK) + return FALSE; + strm.next_out = ((Bytef*) uncompressed_buffer + + (uncompressed_size - strm.avail_out)); + rc = inflate (&strm, Z_FINISH); + if (rc != Z_STREAM_END) + return FALSE; + rc = inflateReset (&strm); + } + rc = inflateEnd (&strm); + return rc == Z_OK && strm.avail_out == 0; +} +#endif + /* FUNCTION - bfd_uncompress_section_contents + bfd_compress_section_contents SYNOPSIS - bfd_boolean bfd_uncompress_section_contents - (bfd_byte **buffer, bfd_size_type *size); + bfd_boolean bfd_compress_section_contents + (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer, + bfd_size_type uncompressed_size); DESCRIPTION - Uncompresses a section that was compressed using zlib, in place. At - the call to this function, *@var{buffer} and *@var{size} should point - to the section contents to be uncompressed. At the end of the - function, *@var{buffer} and *@var{size} will point to the uncompressed - contents. This function assumes *BUFFER was allocated using - bfd_malloc() or equivalent. If the section is not a valid compressed - section, or zlib is not installed on this machine, the input is - unmodified. + Compress data of the size specified in @var{uncompressed_size} + and pointed to by @var{uncompressed_buffer} using zlib and store + as the contents field. This function assumes the contents + field was allocated using bfd_malloc() or equivalent. If zlib + is not installed on this machine, the input is unmodified. - Returns @code{FALSE} if unable to uncompress successfully; in that case - the input is unmodified. Otherwise, returns @code{TRUE}. + Return @code{TRUE} if the full section contents is compressed + successfully. */ bfd_boolean -bfd_uncompress_section_contents (bfd_byte **buffer, bfd_size_type *size) +bfd_compress_section_contents (bfd *abfd ATTRIBUTE_UNUSED, + sec_ptr sec ATTRIBUTE_UNUSED, + bfd_byte *uncompressed_buffer ATTRIBUTE_UNUSED, + bfd_size_type uncompressed_size ATTRIBUTE_UNUSED) { #ifndef HAVE_ZLIB_H - /* These are just to quiet gcc. */ - buffer = 0; - size = 0; + bfd_set_error (bfd_error_invalid_operation); return FALSE; #else - bfd_size_type compressed_size = *size; - bfd_byte *compressed_buffer = *buffer; + uLong compressed_size; + bfd_byte *compressed_buffer; + + compressed_size = compressBound (uncompressed_size) + 12; + compressed_buffer = (bfd_byte *) bfd_malloc (compressed_size); + + if (compressed_buffer == NULL) + return FALSE; + + if (compress ((Bytef*) compressed_buffer + 12, + &compressed_size, + (const Bytef*) uncompressed_buffer, + uncompressed_size) != Z_OK) + { + free (compressed_buffer); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + + /* Write the zlib header. In this case, it should be "ZLIB" followed + by the uncompressed section size, 8 bytes in big-endian order. */ + memcpy (compressed_buffer, "ZLIB", 4); + compressed_buffer[11] = uncompressed_size; uncompressed_size >>= 8; + compressed_buffer[10] = uncompressed_size; uncompressed_size >>= 8; + compressed_buffer[9] = uncompressed_size; uncompressed_size >>= 8; + compressed_buffer[8] = uncompressed_size; uncompressed_size >>= 8; + compressed_buffer[7] = uncompressed_size; uncompressed_size >>= 8; + compressed_buffer[6] = uncompressed_size; uncompressed_size >>= 8; + compressed_buffer[5] = uncompressed_size; uncompressed_size >>= 8; + compressed_buffer[4] = uncompressed_size; + compressed_size += 12; + + /* Free the uncompressed contents if we compress in place. */ + if (uncompressed_buffer == sec->contents) + free (uncompressed_buffer); + + sec->contents = compressed_buffer; + sec->size = compressed_size; + sec->compress_status = COMPRESS_SECTION_DONE; + + return TRUE; +#endif /* HAVE_ZLIB_H */ +} + +/* +FUNCTION + bfd_get_full_section_contents + +SYNOPSIS + bfd_boolean bfd_get_full_section_contents + (bfd *abfd, asection *section, bfd_byte **ptr); + +DESCRIPTION + Read all data from @var{section} in BFD @var{abfd}, decompress + if needed, and store in @var{*ptr}. If @var{*ptr} is NULL, + return @var{*ptr} with memory malloc'd by this function. + + Return @code{TRUE} if the full section contents is retrieved + successfully. +*/ + +bfd_boolean +bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr) +{ + bfd_size_type sz = sec->rawsize ? sec->rawsize : sec->size; + bfd_byte *p = *ptr; +#ifdef HAVE_ZLIB_H + bfd_boolean ret; + bfd_size_type compressed_size; bfd_size_type uncompressed_size; + bfd_size_type rawsize; + bfd_byte *compressed_buffer; bfd_byte *uncompressed_buffer; - z_stream strm; - int rc; - bfd_size_type header_size = 12; +#endif + + if (sz == 0) + return TRUE; + + switch (sec->compress_status) + { + case COMPRESS_SECTION_NONE: + if (p == NULL) + { + p = (bfd_byte *) bfd_malloc (sz); + if (p == NULL) + return FALSE; + } + if (!bfd_get_section_contents (abfd, sec, p, 0, sz)) + { + if (*ptr != p) + free (p); + return FALSE; + } + *ptr = p; + return TRUE; + + case DECOMPRESS_SECTION_SIZED: +#ifndef HAVE_ZLIB_H + bfd_set_error (bfd_error_invalid_operation); + return FALSE; +#else + /* Read in the full compressed section contents. */ + uncompressed_size = sec->size; + compressed_size = sec->compressed_size; + compressed_buffer = (bfd_byte *) bfd_malloc (compressed_size); + if (compressed_buffer == NULL) + return FALSE; + rawsize = sec->rawsize; + /* Clear rawsize, set size to compressed size and set compress_status + to COMPRESS_SECTION_NONE. If the compressed size is bigger than + the uncompressed size, bfd_get_section_contents will fail. */ + sec->rawsize = 0; + sec->size = compressed_size; + sec->compress_status = COMPRESS_SECTION_NONE; + ret = bfd_get_section_contents (abfd, sec, compressed_buffer, + 0, compressed_size); + /* Restore rawsize and size. */ + sec->rawsize = rawsize; + sec->size = uncompressed_size; + sec->compress_status = DECOMPRESS_SECTION_SIZED; + if (!ret) + goto fail_compressed; + + uncompressed_buffer = (bfd_byte *) bfd_malloc (uncompressed_size); + if (uncompressed_buffer == NULL) + goto fail_compressed; + + if (!decompress_contents (compressed_buffer, compressed_size, + uncompressed_buffer, uncompressed_size)) + { + bfd_set_error (bfd_error_bad_value); + free (uncompressed_buffer); + fail_compressed: + free (compressed_buffer); + return FALSE; + } + + free (compressed_buffer); + sec->contents = uncompressed_buffer; + sec->compress_status = COMPRESS_SECTION_DONE; + /* Fall thru */ +#endif + + case COMPRESS_SECTION_DONE: + if (p == NULL) + { + p = (bfd_byte *) bfd_malloc (sz); + if (p == NULL) + return FALSE; + *ptr = p; + } + memcpy (p, sec->contents, sz); + return TRUE; + + default: + abort (); + } +} + +/* +FUNCTION + bfd_is_section_compressed + +SYNOPSIS + bfd_boolean bfd_is_section_compressed + (bfd *abfd, asection *section); + +DESCRIPTION + Return @code{TRUE} if @var{section} is compressed. +*/ + +bfd_boolean +bfd_is_section_compressed (bfd *abfd, sec_ptr sec) +{ + bfd_byte compressed_buffer [12]; /* Read the zlib header. In this case, it should be "ZLIB" followed by the uncompressed section size, 8 bytes in big-endian order. */ - if (compressed_size < header_size - || ! CONST_STRNEQ ((char*) compressed_buffer, "ZLIB")) - return FALSE; + return (bfd_get_section_contents (abfd, sec, compressed_buffer, 0, 12) + && CONST_STRNEQ ((char*) compressed_buffer, "ZLIB")); +} + +/* +FUNCTION + bfd_init_section_decompress_status + +SYNOPSIS + bfd_boolean bfd_init_section_decompress_status + (bfd *abfd, asection *section); + +DESCRIPTION + Record compressed section size, update section size with + decompressed size and set compress_status to + DECOMPRESS_SECTION_SIZED. + + Return @code{FALSE} if the section is not a valid compressed + section or zlib is not installed on this machine. Otherwise, + return @code{TRUE}. +*/ + +bfd_boolean +bfd_init_section_decompress_status (bfd *abfd ATTRIBUTE_UNUSED, + sec_ptr sec ATTRIBUTE_UNUSED) +{ +#ifndef HAVE_ZLIB_H + bfd_set_error (bfd_error_invalid_operation); + return FALSE; +#else + bfd_byte compressed_buffer [12]; + bfd_size_type uncompressed_size; + + if (sec->rawsize != 0 + || sec->contents != NULL + || sec->compress_status != COMPRESS_SECTION_NONE + || !bfd_get_section_contents (abfd, sec, compressed_buffer, 0, 12)) + { + bfd_set_error (bfd_error_invalid_operation); + return FALSE; + } + + /* Read the zlib header. In this case, it should be "ZLIB" followed + by the uncompressed section size, 8 bytes in big-endian order. */ + if (! CONST_STRNEQ ((char*) compressed_buffer, "ZLIB")) + { + bfd_set_error (bfd_error_wrong_format); + return FALSE; + } + uncompressed_size = compressed_buffer[4]; uncompressed_size <<= 8; uncompressed_size += compressed_buffer[5]; uncompressed_size <<= 8; uncompressed_size += compressed_buffer[6]; uncompressed_size <<= 8; @@ -81,42 +331,66 @@ uncompressed_size += compressed_buffer[10]; uncompressed_size <<= 8; uncompressed_size += compressed_buffer[11]; - /* It is possible the section consists of several compressed - buffers concatenated together, so we uncompress in a loop. */ - strm.zalloc = NULL; - strm.zfree = NULL; - strm.opaque = NULL; - strm.avail_in = compressed_size - header_size; - strm.next_in = (Bytef*) compressed_buffer + header_size; - strm.avail_out = uncompressed_size; - uncompressed_buffer = (bfd_byte *) bfd_malloc (uncompressed_size); - if (! uncompressed_buffer) - return FALSE; + sec->compressed_size = sec->size; + sec->size = uncompressed_size; + sec->compress_status = DECOMPRESS_SECTION_SIZED; - rc = inflateInit (&strm); - while (strm.avail_in > 0) + return TRUE; +#endif +} + +/* +FUNCTION + bfd_init_section_compress_status + +SYNOPSIS + bfd_boolean bfd_init_section_compress_status + (bfd *abfd, asection *section); + +DESCRIPTION + If open for read, compress section, update section size with + compressed size and set compress_status to COMPRESS_SECTION_DONE. + + Return @code{FALSE} if the section is not a valid compressed + section or zlib is not installed on this machine. Otherwise, + return @code{TRUE}. +*/ + +bfd_boolean +bfd_init_section_compress_status (bfd *abfd ATTRIBUTE_UNUSED, + sec_ptr sec ATTRIBUTE_UNUSED) +{ +#ifndef HAVE_ZLIB_H + bfd_set_error (bfd_error_invalid_operation); + return FALSE; +#else + bfd_size_type uncompressed_size; + bfd_byte *uncompressed_buffer; + bfd_boolean ret; + + /* Error if not opened for read. */ + if (abfd->direction != read_direction + || sec->size == 0 + || sec->rawsize != 0 + || sec->contents != NULL + || sec->compress_status != COMPRESS_SECTION_NONE) { - if (rc != Z_OK) - goto fail; - strm.next_out = ((Bytef*) uncompressed_buffer - + (uncompressed_size - strm.avail_out)); - rc = inflate (&strm, Z_FINISH); - if (rc != Z_STREAM_END) - goto fail; - rc = inflateReset (&strm); + bfd_set_error (bfd_error_invalid_operation); + return FALSE; } - rc = inflateEnd (&strm); - if (rc != Z_OK - || strm.avail_out != 0) - goto fail; - - free (compressed_buffer); - *buffer = uncompressed_buffer; - *size = uncompressed_size; - return TRUE; - fail: + /* Read in the full section contents and compress it. */ + uncompressed_size = sec->size; + uncompressed_buffer = (bfd_byte *) bfd_malloc (uncompressed_size); + if (!bfd_get_section_contents (abfd, sec, uncompressed_buffer, + 0, uncompressed_size)) + ret = FALSE; + else + ret = bfd_compress_section_contents (abfd, sec, + uncompressed_buffer, + uncompressed_size); + free (uncompressed_buffer); - return FALSE; -#endif /* HAVE_ZLIB_H */ + return ret; +#endif } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/config.bfd crash-6.1.6/=unpacked-tar1=/bfd/config.bfd --- crash-5.1.6/=unpacked-tar1=/bfd/config.bfd 2009-08-06 17:38:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/config.bfd 2011-03-31 08:58:20.000000000 +0000 @@ -31,7 +31,6 @@ # Catch obsolete configurations. case $targ in - maxq-*-coff | \ null) if test "x$enable_obsolete" != xyes; then echo "*** Configuration $targ is obsolete." >&2 @@ -47,6 +46,7 @@ m68*-apollo-* | \ m68*-bull-sysv* | \ m68*-*-rtemscoff* | \ + maxq-*-coff | \ i960-*-rtems* | \ or32-*-rtems* | \ m68*-*-lynxos* | \ @@ -90,7 +90,6 @@ m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch" ;; m68*) targ_archs=bfd_m68k_arch ;; m88*) targ_archs=bfd_m88k_arch ;; -maxq*) targ_archs=bfd_maxq_arch ;; microblaze*) targ_archs=bfd_microblaze_arch ;; mips*) targ_archs=bfd_mips_arch ;; or32*) targ_archs=bfd_or32_arch ;; @@ -419,7 +418,7 @@ targ_selvecs=bfd_elf32_frv_vec ;; - moxie-*-elf | moxie-*-uclinux) + moxie-*-elf | moxie-*-rtems | moxie-*-uclinux) targ_defvec=bfd_elf32_moxie_vec ;; @@ -470,7 +469,6 @@ targ_selvecs=bfd_elf32_hppa_linux_vec ;; -#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) || defined (HOST_HPPAMPEIX) hppa*-*-bsd*) targ_defvec=som_vec targ_selvecs=bfd_elf32_hppa_vec @@ -482,7 +480,6 @@ targ_defvec=som_vec targ_selvecs=bfd_elf32_hppa_vec ;; -#endif /* defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) */ i370-*-*) targ_defvec=bfd_elf32_i370_vec @@ -499,15 +496,15 @@ targ_selvecs=i386coff_vec ;; i[3-7]86-*-solaris2*) - targ_defvec=bfd_elf32_i386_vec - targ_selvecs=i386coff_vec - targ64_selvecs="bfd_elf64_x86_64_vec bfd_elf64_l1om_vec" + targ_defvec=bfd_elf32_i386_sol2_vec + targ_selvecs="i386coff_vec" + targ64_selvecs="bfd_elf64_x86_64_sol2_vec bfd_elf64_l1om_vec" want64=true ;; #ifdef BFD64 x86_64-*-solaris2*) - targ_defvec=bfd_elf32_i386_vec - targ_selvecs="bfd_elf64_x86_64_vec bfd_elf64_l1om_vec i386coff_vec" + targ_defvec=bfd_elf32_i386_sol2_vec + targ_selvecs="bfd_elf64_x86_64_sol2_vec bfd_elf64_l1om_vec i386coff_vec" want64=true ;; #endif @@ -543,8 +540,8 @@ ;; i[3-7]86-*-darwin* | i[3-7]86-*-macos10* | i[3-7]86-*-rhapsody*) targ_defvec=mach_o_i386_vec - targ_selvecs="mach_o_i386_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" - targ_archs="bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch" + targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" + targ_archs="$targ_archs bfd_powerpc_arch bfd_rs6000_arch" ;; i[3-7]86-sequent-bsd*) targ_defvec=i386dynix_vec @@ -554,13 +551,17 @@ targ_defvec=i386bsd_vec targ_underscore=yes ;; + i[3-7]86-*-dragonfly*) + targ_defvec=bfd_elf32_i386_vec + targ64_selvecs="bfd_elf64_x86_64_vec bfd_elf64_l1om_vec" + ;; i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | \ i[3-7]86-*-freebsd[12]) targ_defvec=i386freebsd_vec targ_selvecs=i386bsd_vec targ_underscore=yes ;; - i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu | i[3-7]86-*-dragonfly*) + i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu) targ_defvec=bfd_elf32_i386_freebsd_vec targ_selvecs="bfd_elf32_i386_vec i386pei_vec i386coff_vec" targ64_selvecs="bfd_elf64_x86_64_freebsd_vec bfd_elf64_x86_64_vec x86_64pei_vec bfd_elf64_l1om_vec bfd_elf64_l1om_freebsd_vec" @@ -601,13 +602,13 @@ i[3-7]86-*-linux-*) targ_defvec=bfd_elf32_i386_vec targ_selvecs="i386linux_vec i386pei_vec" - targ64_selvecs="bfd_elf64_x86_64_vec bfd_elf64_l1om_vec" + targ64_selvecs="bfd_elf64_x86_64_vec bfd_elf32_x86_64_vec bfd_elf64_l1om_vec" ;; #ifdef BFD64 x86_64-*-darwin*) - targ_defvec=mach_o_le_vec - targ_selvecs="mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" - targ_archs="bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch" + targ_defvec=mach_o_x86_64_vec + targ_selvecs="mach_o_i386_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" + targ_archs="$targ_archs bfd_powerpc_arch bfd_rs6000_arch" want64=true ;; x86_64-*-dicos*) @@ -620,6 +621,11 @@ targ_selvecs="bfd_elf32_i386_vec bfd_elf64_l1om_vec i386coff_vec" want64=true ;; + x86_64-*-dragonfly*) + targ_defvec=bfd_elf64_x86_64_vec + targ_selvecs="bfd_elf32_i386_vec bfd_elf64_l1om_vec" + want64=true + ;; x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu) targ_defvec=bfd_elf64_x86_64_freebsd_vec targ_selvecs="bfd_elf32_i386_freebsd_vec i386coff_vec i386pei_vec x86_64pei_vec bfd_elf32_i386_vec bfd_elf64_x86_64_vec bfd_elf64_l1om_vec bfd_elf64_l1om_freebsd_vec" @@ -632,14 +638,14 @@ ;; x86_64-*-linux-*) targ_defvec=bfd_elf64_x86_64_vec - targ_selvecs="bfd_elf32_i386_vec i386linux_vec i386pei_vec x86_64pei_vec bfd_elf64_l1om_vec" + targ_selvecs="bfd_elf32_i386_vec bfd_elf32_x86_64_vec i386linux_vec i386pei_vec x86_64pei_vec bfd_elf64_l1om_vec" want64=true ;; x86_64-*-mingw*) targ_defvec=x86_64pe_vec - targ_selvecs="x86_64pe_vec x86_64pei_vec bfd_elf64_x86_64_vec bfd_elf64_l1om_vec" + targ_selvecs="x86_64pe_vec x86_64pei_vec bfd_elf64_x86_64_vec bfd_elf64_l1om_vec i386pe_vec i386pei_vec bfd_elf32_i386_vec" want64=true - targ_underscore=yes + targ_underscore=no ;; #endif i[3-7]86-*-lynxos*) @@ -882,10 +888,6 @@ targ_underscore=yes ;; - maxq-*-coff) - targ_defvec=maxqcoff_vec - ;; - mcore-*-elf) targ_defvec=bfd_elf32_mcore_big_vec targ_selvecs="bfd_elf32_mcore_big_vec bfd_elf32_mcore_little_vec" @@ -1023,6 +1025,40 @@ want64=true ;; #ifdef BFD64 + mips64*el-*-freebsd* | mips64*el-*-kfreebsd*-gnu) + # FreeBSD vectors + targ_defvec=bfd_elf32_ntradlittlemips_freebsd_vec + targ_selvecs="bfd_elf32_ntradbigmips_freebsd_vec bfd_elf32_tradlittlemips_freebsd_vec bfd_elf32_tradbigmips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec" + # Generic vectors + targ_selvecs="${targ_selvecs} bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec" + want64=true + ;; + mips64*-*-freebsd* | mips64*-*-kfreebsd*-gnu) + # FreeBSD vectors + targ_defvec=bfd_elf32_ntradbigmips_freebsd_vec + targ_selvecs="bfd_elf32_ntradlittlemips_freebsd_vec bfd_elf32_tradbigmips_freebsd_vec bfd_elf32_tradlittlemips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec" + # Generic vectors + targ_selvecs="${targ_selvecs} bfd_elf32_ntradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec" + want64=true + ;; +#endif + mips*el-*-freebsd* | mips*el-*-kfreebsd*-gnu) + # FreeBSD vectors + targ_defvec=bfd_elf32_tradlittlemips_freebsd_vec + targ_selvecs="bfd_elf32_tradbigmips_freebsd_vec bfd_elf32_ntradlittlemips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec bfd_elf32_ntradbigmips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec" + # Generic vectors + targ_selvecs="${targ_selvecs} bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec" + want64=true + ;; + mips*-*-freebsd* | mips*-*-kfreebsd*-gnu) + # FreeBSD vectors + targ_defvec=bfd_elf32_tradbigmips_freebsd_vec + targ_selvecs="bfd_elf32_tradlittlemips_freebsd_vec bfd_elf32_ntradbigmips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec bfd_elf32_ntradlittlemips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec" + # Generic vectors + targ_selvecs="${targ_selvecs} bfd_elf32_tradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec" + want64=true + ;; +#ifdef BFD64 mmix-*-*) targ_defvec=bfd_elf64_mmix_vec targ_selvecs=bfd_mmo_vec @@ -1083,26 +1119,26 @@ targ_selvecs="bfd_elf32_pjl_vec bfd_elf32_pj_vec bfd_elf32_i386_vec" ;; - powerpc-*-aix5.[01]) + powerpc-*-aix5.[01] | rs6000-*-aix5.[01]) targ_defvec=rs6000coff_vec targ_selvecs="aix5coff64_vec" want64=true ;; #ifdef BFD64 - powerpc64-*-aix5.[01]) + powerpc64-*-aix5.[01] | rs6000-*-aix5.[01]) targ_defvec=aix5coff64_vec targ_selvecs="rs6000coff_vec" want64=true ;; #endif - powerpc-*-aix[5-9]*) + powerpc-*-aix[5-9]* | rs6000-*-aix[5-9]*) targ_cflags=-DAIX_WEAK_SUPPORT targ_defvec=rs6000coff_vec targ_selvecs="aix5coff64_vec" want64=true ;; #ifdef BFD64 - powerpc64-*-aix[5-9]*) + powerpc64-*-aix[5-9]* | rs6000-*-aix[5-9]*) targ_cflags=-DAIX_WEAK_SUPPORT targ_defvec=aix5coff64_vec targ_selvecs="rs6000coff_vec" @@ -1129,12 +1165,12 @@ powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-linux* | \ powerpc64-*-*bsd*) targ_defvec=bfd_elf64_powerpc_vec - targ_selvecs="bfd_elf64_powerpcle_vec bfd_elf32_powerpc_vec bfd_elf32_powerpcle_vec rs6000coff_vec rs6000coff64_vec" + targ_selvecs="bfd_elf64_powerpcle_vec bfd_elf32_powerpc_vec bfd_elf32_powerpcle_vec rs6000coff_vec rs6000coff64_vec aix5coff64_vec" want64=true ;; powerpc64le-*-elf* | powerpcle-*-elf64*) targ_defvec=bfd_elf64_powerpcle_vec - targ_selvecs="bfd_elf64_powerpc_vec bfd_elf32_powerpcle_vec bfd_elf32_powerpc_vec rs6000coff_vec rs6000coff64_vec" + targ_selvecs="bfd_elf64_powerpc_vec bfd_elf32_powerpcle_vec bfd_elf32_powerpc_vec rs6000coff_vec rs6000coff64_vec aix5coff64_vec" want64=true ;; #endif @@ -1153,7 +1189,7 @@ powerpc-*-darwin* | powerpc-*-macos10* | powerpc-*-rhapsody*) targ_defvec=mach_o_be_vec targ_selvecs="mach_o_be_vec mach_o_le_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" - targ_archs="bfd_powerpc_arch bfd_rs6000_arch bfd_i386_arch" + targ_archs="$targ_archs bfd_i386_arch" ;; powerpc-*-macos*) targ_defvec=pmac_xcoff_vec @@ -1191,6 +1227,11 @@ targ_selvecs="bfd_powerpcle_pei_vec bfd_powerpc_pei_vec bfd_powerpcle_pe_vec bfd_powerpc_pe_vec" ;; + rx-*-elf) + targ_defvec=bfd_elf32_rx_le_vec + targ_selvecs="bfd_elf32_rx_be_vec bfd_elf32_rx_le_vec" + ;; + s390-*-linux*) targ_defvec=bfd_elf32_s390_vec targ64_selvecs=bfd_elf64_s390_vec @@ -1252,7 +1293,7 @@ sh-*-uclinux* | sh[12]-*-uclinux*) targ_defvec=bfd_elf32_sh_vec - targ_selvecs="bfd_elf32_shblin_vec bfd_elf32_shlin_vec" + targ_selvecs="bfd_elf32_shl_vec bfd_elf32_shblin_vec bfd_elf32_shlin_vec bfd_elf32_shfd_vec bfd_elf32_shbfd_vec" #ifdef BFD64 targ_selvecs="${targ_selvecs} bfd_elf32_sh64lin_vec bfd_elf32_sh64blin_vec bfd_elf64_sh64lin_vec bfd_elf64_sh64blin_vec" #endif @@ -1397,14 +1438,18 @@ targ_defvec=bfd_elf32_sparc_vec targ_selvecs=sparcnetbsd_vec ;; - sparc-*-elf* | sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*) + sparc-*-elf*) targ_defvec=bfd_elf32_sparc_vec targ_selvecs=sunos_big_vec ;; + sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*) + targ_defvec=bfd_elf32_sparc_sol2_vec + targ_selvecs=sunos_big_vec + ;; #ifdef BFD64 sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*) - targ_defvec=bfd_elf32_sparc_vec - targ_selvecs="bfd_elf64_sparc_vec sunos_big_vec" + targ_defvec=bfd_elf32_sparc_sol2_vec + targ_selvecs="bfd_elf64_sparc_sol2_vec sunos_big_vec" want64=true ;; #endif @@ -1430,7 +1475,7 @@ targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec" want64=true ;; - sparc64-*-elf*) + sparc64-*-elf* | sparc64-*-rtems* ) targ_defvec=bfd_elf64_sparc_vec targ_selvecs=bfd_elf32_sparc_vec want64=true @@ -1439,7 +1484,7 @@ sparc*-*-coff*) targ_defvec=sparccoff_vec ;; - sparc*-*-rtems*) + sparc-*-rtems*) targ_defvec=bfd_elf32_sparc_vec targ_selvecs="sunos_big_vec sparccoff_vec" ;; @@ -1460,18 +1505,17 @@ ;; #endif + tic6x-*-*) + targ_defvec=bfd_elf32_tic6x_le_vec + targ_selvecs=bfd_elf32_tic6x_be_vec + ;; + tic80*-*-*) targ_defvec=tic80coff_vec targ_underscore=yes ;; - v850-*-*) - targ_defvec=bfd_elf32_v850_vec - ;; - v850e-*-*) - targ_defvec=bfd_elf32_v850_vec - ;; - v850ea-*-*) + v850*-*-*) targ_defvec=bfd_elf32_v850_vec ;; @@ -1500,10 +1544,6 @@ targ_defvec=bfd_elf32_vax_vec ;; - vax*-*-*vms*) - targ_defvec=vms_vax_vec - ;; - we32k-*-*) targ_defvec=we32kcoff_vec ;; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/config.in crash-6.1.6/=unpacked-tar1=/bfd/config.in --- crash-5.1.6/=unpacked-tar1=/bfd/config.in 2009-09-07 09:15:27.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/config.in 2010-04-27 17:26:06.000000000 +0000 @@ -1,5 +1,8 @@ /* config.in. Generated from configure.in by autoheader. */ +/* Name of host specific core header file to include in elf.c. */ +#undef CORE_HEADER + /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS @@ -114,6 +117,9 @@ /* Define if has lwpstatus_t.pr_context. */ #undef HAVE_LWPSTATUS_T_PR_CONTEXT +/* Define if has lwpstatus_t.pr_fpreg. */ +#undef HAVE_LWPSTATUS_T_PR_FPREG + /* Define if has lwpstatus_t.pr_reg. */ #undef HAVE_LWPSTATUS_T_PR_REG @@ -291,6 +297,9 @@ /* Use b modifier when opening binary files? */ #undef USE_BINARY_FOPEN +/* Define if we should use leading underscore on 64 bit mingw targets */ +#undef USE_MINGW64_LEADING_UNDERSCORES + /* Use mmap if it's available? */ #undef USE_MMAP diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/configure crash-6.1.6/=unpacked-tar1=/bfd/configure --- crash-5.1.6/=unpacked-tar1=/bfd/configure 2009-09-09 19:46:42.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/configure 2011-03-28 11:18:25.000000000 +0000 @@ -169,7 +169,15 @@ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else @@ -523,155 +531,8 @@ # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} -case X$lt_ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` - ;; -esac - -ECHO=${lt_ECHO-echo} -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then - # Yippee, $ECHO works! - : -else - # Restart under the correct shell. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -$* -_LT_EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test -z "$lt_ECHO"; then - if test "X${echo_test_string+set}" != Xset; then - # find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if { echo_test_string=`eval $cmd`; } 2>/dev/null && - { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null - then - break - fi - done - fi - - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : - else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$ECHO" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - ECHO='print -r' - elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - ECHO='printf %s\n' - if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && - echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - ECHO="$CONFIG_SHELL $0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - ECHO="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - ECHO=echo - fi - fi - fi - fi - fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -lt_ECHO=$ECHO -if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then - lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" -fi - - - exec 7<&0 &1 @@ -741,6 +602,7 @@ am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +havevecs tdefaults bfd_ufile_ptr bfd_file_ptr @@ -805,7 +667,6 @@ LIPO NMEDIT DSYMUTIL -lt_ECHO OBJDUMP LN_S NM @@ -925,6 +786,7 @@ enable_targets with_mmap enable_secureplt +enable_leading_mingw64_underscores with_separate_debug_dir enable_elf_stt_common with_pkgversion @@ -934,6 +796,7 @@ enable_maintainer_mode enable_install_libbfd enable_nls +with_zlib ' ac_precious_vars='build_alias host_alias @@ -1574,6 +1437,8 @@ --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) --enable-targets alternative target configurations --enable-secureplt Default to creating read-only plt entries + --enable-leading-mingw64-underscores + Enable leading underscores on 64 bit mingw targets --enable-elf-stt-common Allow the generation of ELF symbols with the STT_COMMON type --enable-werror treat compile warnings as errors --enable-build-warnings enable build-time compiler warnings @@ -1595,6 +1460,7 @@ --with-pkgversion=PKG Use PKG in the version string in place of "GNU Binutils" --with-bugurl=URL Direct users to URL to report a bug + --with-zlib include zlib support (auto/yes/no) default=auto Some influential environment variables: CC C compiler command @@ -2272,8 +2138,10 @@ ac_fn_c_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $2 is declared" >&5 -$as_echo_n "checking whether $2 is declared... " >&6; } + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else @@ -2283,8 +2151,12 @@ int main () { -#ifndef $2 - (void) $2; +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif #endif ; @@ -4116,7 +3988,7 @@ # Define the identity of the package. PACKAGE=bfd - VERSION=2.20.51 + VERSION=2.21.51 cat >>confdefs.h <<_ACEOF @@ -5511,8 +5383,8 @@ -macro_version='2.2.6' -macro_revision='1.3012' +macro_version='2.2.7a' +macro_revision='1.3134' @@ -5528,6 +5400,75 @@ ltmain="$ac_aux_dir/ltmain.sh" +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`print -r -- -n 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${ac_cv_path_SED+set}" = set; then : @@ -5863,8 +5804,11 @@ NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$ac_tool_prefix"; then - for ac_prog in "dumpbin -symbols" "link -dump -symbols" + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 @@ -5908,7 +5852,7 @@ fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in "dumpbin -symbols" "link -dump -symbols" + for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -5963,6 +5907,15 @@ fi fi + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" @@ -5982,13 +5935,13 @@ else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:5985: $ac_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:5988: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:5991: output\"" >&5) + (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -6045,6 +5998,11 @@ lt_cv_sys_max_cmd_len=8192; ;; + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. @@ -6109,8 +6067,8 @@ # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring"; } >/dev/null 2>&1 && + while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` @@ -6381,7 +6339,8 @@ # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else @@ -6390,7 +6349,7 @@ fi ;; -cegcc) +cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' @@ -6420,6 +6379,10 @@ lt_cv_deplibs_check_method=pass_all ;; +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in @@ -6428,11 +6391,11 @@ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + 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_test_file=/usr/lib/libc.sl ;; esac @@ -6870,6 +6833,18 @@ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + @@ -7039,8 +7014,8 @@ test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then @@ -7193,7 +7168,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 7196 "configure"' > conftest.$ac_ext + echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -7905,6 +7880,36 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if test "${lt_cv_ld_force_load+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; @@ -7932,7 +7937,7 @@ else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi - if test "$DSYMUTIL" != ":"; then + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -7955,6 +7960,8 @@ + + # Set options enable_dlopen=yes @@ -8076,6 +8083,7 @@ + test -z "$LN_S" && LN_S="ln -s" @@ -8125,19 +8133,6 @@ - - - - - - - - - - - - - case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some @@ -8150,23 +8145,6 @@ ;; esac -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - # Global variables: ofile=libtool can_build_shared=yes @@ -8195,7 +8173,7 @@ *) break;; esac done -cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it @@ -8404,7 +8382,12 @@ lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag=' -fno-builtin' + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } @@ -8424,15 +8407,15 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8427: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8431: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes @@ -8510,6 +8493,12 @@ lt_prog_compiler_pic='-fno-common' ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag @@ -8552,6 +8541,13 @@ lt_prog_compiler_pic='-fPIC' ;; esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + lt_prog_compiler_pic='-Xcompiler -fPIC' + ;; + esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in @@ -8614,7 +8610,7 @@ lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; - pgcc* | pgf77* | pgf90* | pgf95*) + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' @@ -8626,25 +8622,25 @@ # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; - xl*) - # IBM XL C 8.0/Fortran 10.1 on PPC + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C 5.9 + *Sun\ F* | *Sun*Fortran*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_wl='' ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker + *Sun\ C*) + # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' + lt_prog_compiler_wl='-Wl,' ;; esac ;; @@ -8763,15 +8759,15 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8766: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8770: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes @@ -8819,7 +8815,7 @@ if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 - $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes @@ -8868,16 +8864,16 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8871: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:8875: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes @@ -8923,16 +8919,16 @@ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8926: $lt_compile\"" >&5) + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:8930: \$? = $ac_status" >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings - $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes @@ -9045,7 +9041,33 @@ esac ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' @@ -9063,6 +9085,7 @@ fi supports_anon_versioning=no case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... @@ -9078,11 +9101,12 @@ ld_shlibs=no cat <<_LT_EOF 1>&2 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. _LT_EOF fi @@ -9118,6 +9142,7 @@ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes @@ -9139,6 +9164,11 @@ fi ;; + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no @@ -9168,11 +9198,12 @@ tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -9183,13 +9214,17 @@ lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; - xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 @@ -9205,7 +9240,7 @@ fi case $cc_basename in - xlf*) + xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec= @@ -9336,8 +9371,10 @@ else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi @@ -9455,7 +9492,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' @@ -9499,8 +9536,13 @@ # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' @@ -9539,7 +9581,7 @@ # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. @@ -9555,7 +9597,11 @@ hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='' + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + whole_archive_flag_spec='' + fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in @@ -9563,7 +9609,7 @@ *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=echo + output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" @@ -9581,10 +9627,6 @@ hardcode_shlibpath_var=no ;; - freebsd1*) - ld_shlibs=no - ;; - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -9629,7 +9671,7 @@ ;; hpux10*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then + if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' @@ -9648,7 +9690,7 @@ ;; hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then + if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' @@ -9669,7 +9711,46 @@ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if test "${lt_cv_prog_compiler__b+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + ;; esac fi @@ -9697,7 +9778,7 @@ irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. @@ -9708,15 +9789,15 @@ int foo(void) {} _ACEOF if ac_fn_c_try_link "$LINENO"; then : - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' @@ -9778,17 +9859,17 @@ hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' @@ -9798,13 +9879,13 @@ osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' @@ -10221,16 +10302,23 @@ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= @@ -10243,7 +10331,7 @@ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done - lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; @@ -10263,7 +10351,13 @@ if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` - sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi @@ -10351,7 +10445,7 @@ m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; @@ -10404,23 +10498,12 @@ cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' @@ -10462,10 +10545,6 @@ shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -10520,6 +10599,19 @@ hardcode_into_libs=yes ;; +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib' + hardcode_into_libs=yes + ;; + hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. @@ -10562,8 +10654,10 @@ soname_spec='${libname}${release}${shared_ext}$major' ;; esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 ;; interix[3-9]*) @@ -10672,7 +10766,7 @@ # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -10975,6 +11069,11 @@ + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= @@ -11305,7 +11404,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11308 "configure" +#line 11407 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11346,7 +11445,13 @@ # endif #endif -void fnord() { int i=42;} +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +void fnord () __attribute__((visibility("default"))); +#endif + +void fnord () { int i=42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); @@ -11355,7 +11460,11 @@ if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else @@ -11401,7 +11510,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11404 "configure" +#line 11513 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11442,7 +11551,13 @@ # endif #endif -void fnord() { int i=42;} +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +void fnord () __attribute__((visibility("default"))); +#endif + +void fnord () { int i=42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); @@ -11451,7 +11566,11 @@ if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } /* dlclose (self); */ } else @@ -11629,6 +11748,16 @@ +# AC_PLUGINS setting $plugins is called by ACX_LARGEFILE. + +# The tests for host and target for $enable_largefile require +# canonical names. + + + +# As the $enable_largefile decision depends on --enable-plugins we must set it +# even in directories otherwise not depending on the $plugins option. + # Check whether --enable-plugins was given. if test "${enable_plugins+set}" = set; then : @@ -11643,36 +11772,16 @@ - if test "$plugins" = "yes"; then - PLUGINS_TRUE= - PLUGINS_FALSE='#' -else - PLUGINS_TRUE='#' - PLUGINS_FALSE= -fi - - -if test "$plugins" = "yes"; then - if test "$enable_dlopen" != "yes" ; then - as_fn_error " - Building BFD with plugin support requires a host that supports -ldl." "$LINENO" 5 - fi - enable_targets="$enable_targets plugin" -fi - -case "${target}" in +case "${host}" in sparc-*-solaris*|i[3-7]86-*-solaris*) # On native 32bit sparc and ia32 solaris, large-file and procfs support - # are mutually exclusive; and without procfs support, the elf module + # are mutually exclusive; and without procfs support, the bfd/ elf module # cannot provide certain routines such as elfcore_write_prpsinfo # or elfcore_write_prstatus. So unless the user explicitly requested # large-file support through the --enable-largefile switch, disable # large-file support in favor of procfs support. - if test "${target}" = "${host}" -a "$enable_largefile" != 'yes'; then - if test "$plugins" = "no"; then - enable_largefile="no" - fi - fi + test "${target}" = "${host}" -a "x$plugins" = xno \ + && : ${enable_largefile="no"} ;; esac @@ -11875,6 +11984,24 @@ fi + + if test "$plugins" = "yes"; then + PLUGINS_TRUE= + PLUGINS_FALSE='#' +else + PLUGINS_TRUE='#' + PLUGINS_FALSE= +fi + + +if test "$plugins" = "yes"; then + if test "$enable_dlopen" != "yes" ; then + as_fn_error " + Building BFD with plugin support requires a host that supports -ldl." "$LINENO" 5 + fi + enable_targets="$enable_targets plugin" +fi + # Check whether --enable-64-bit-bfd was given. if test "${enable_64_bit_bfd+set}" = set; then : enableval=$enable_64_bit_bfd; case "${enableval}" in @@ -11924,6 +12051,17 @@ fi +# Check whether --enable-leading-mingw64-underscores was given. +if test "${enable_leading_mingw64_underscores+set}" = set; then : + enableval=$enable_leading_mingw64_underscores; +fi + +if test x"$enable_leading_mingw64_underscores" = xyes ; then : + +$as_echo "#define USE_MINGW64_LEADING_UNDERSCORES 1" >>confdefs.h + +fi + DEBUGDIR=${libdir}/debug # Check whether --with-separate-debug-dir was given. @@ -12004,6 +12142,18 @@ GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__GNUC__ +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^[0-3]$" >/dev/null 2>&1; then : + +else + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wshadow" +fi +rm -f conftest* + # Check whether --enable-werror was given. if test "${enable_werror+set}" = set; then : @@ -12015,7 +12165,7 @@ fi -# Enable -Wno-format by default when using gcc on mingw +# Disable -Wformat by default when using gcc on mingw case "${host}" in *-*-mingw32*) if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then @@ -13106,8 +13256,7 @@ $as_echo_n "checking for type equivalent to int8_t... " >&6; } case "$ac_cv_sizeof_char" in 1) acx_cv_type_int8_t=char ;; - *) { as_fn_set_status please report a bug -as_fn_error "no 8-bit type" "$LINENO" 5; } + *) as_fn_error "no 8-bit type, please report a bug" "$LINENO" 5 esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int8_t" >&5 $as_echo "$acx_cv_type_int8_t" >&6; } @@ -13117,8 +13266,7 @@ case "$ac_cv_sizeof_int:$ac_cv_sizeof_short" in 2:*) acx_cv_type_int16_t=int ;; *:2) acx_cv_type_int16_t=short ;; - *) { as_fn_set_status please report a bug -as_fn_error "no 16-bit type" "$LINENO" 5; } + *) as_fn_error "no 16-bit type, please report a bug" "$LINENO" 5 esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int16_t" >&5 $as_echo "$acx_cv_type_int16_t" >&6; } @@ -13128,8 +13276,7 @@ case "$ac_cv_sizeof_int:$ac_cv_sizeof_long" in 4:*) acx_cv_type_int32_t=int ;; *:4) acx_cv_type_int32_t=long ;; - *) { as_fn_set_status please report a bug -as_fn_error "no 32-bit type" "$LINENO" 5; } + *) as_fn_error "no 32-bit type, please report a bug" "$LINENO" 5 esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int32_t" >&5 $as_echo "$acx_cv_type_int32_t" >&6; } @@ -13156,8 +13303,7 @@ 2) acx_cv_type_intptr_t=int16_t ;; 4) acx_cv_type_intptr_t=int32_t ;; 8) acx_cv_type_intptr_t=int64_t ;; - *) { as_fn_set_status please report a bug -as_fn_error "no equivalent for intptr_t" "$LINENO" 5; } + *) as_fn_error "no equivalent for intptr_t, please report a bug" "$LINENO" 5 esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_intptr_t" >&5 $as_echo "$acx_cv_type_intptr_t" >&6; } @@ -13585,7 +13731,19 @@ # Link in zlib if we can. This allows us to read compressed debug sections. # This is used only by compress.c. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing zlibVersion" >&5 + + # See if the user specified whether he wants zlib support or not. + +# Check whether --with-zlib was given. +if test "${with_zlib+set}" = set; then : + withval=$with_zlib; +else + with_zlib=auto +fi + + + if test "$with_zlib" != "no"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing zlibVersion" >&5 $as_echo_n "checking for library containing zlibVersion... " >&6; } if test "${ac_cv_search_zlibVersion+set}" = set; then : $as_echo_n "(cached) " >&6 @@ -13652,14 +13810,20 @@ fi + if test "$with_zlib" = "yes" -a "$ac_cv_header_zlib_h" != "yes"; then + as_fn_error "zlib (libz) library was explicitly requested but not found" "$LINENO" 5 + fi + fi + # If we are configured native, pick a core file support file. COREFILE= COREFLAG= +CORE_HEADER= TRAD_HEADER= if test "${target}" = "${host}"; then case "${host}" in - alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) + alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-*vms*) COREFILE='' ;; alpha*-*-linux-*) @@ -13669,9 +13833,11 @@ alpha*-*-netbsd* | alpha*-*-openbsd*) COREFILE=netbsd-core.lo ;; - alpha*-*-*) COREFILE=osf-core.lo ;; + alpha*-*-*) + COREFILE=osf-core.lo + ;; arm-*-freebsd* | arm-*-kfreebsd*-gnu) - COREFILE='' ;; + COREFILE='' ;; arm-*-netbsd* | arm-*-openbsd*) COREFILE=netbsd-core.lo ;; @@ -13880,6 +14046,9 @@ COREFILE=trad-core.lo TRAD_HEADER='"hosts/vaxbsd.h"' ;; + x86_64-*-linux*) + CORE_HEADER='"hosts/x86-64linux.h"' + ;; x86_64-*-netbsd* | x86_64-*-openbsd*) COREFILE=netbsd-core.lo ;; @@ -13923,6 +14092,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -13958,6 +14129,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -13993,6 +14166,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14028,6 +14203,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14063,6 +14240,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14098,6 +14277,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14133,6 +14314,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14168,6 +14351,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14203,6 +14388,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14238,6 +14425,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14273,6 +14462,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14308,6 +14499,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14343,6 +14536,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14378,6 +14573,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14413,6 +14610,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14439,6 +14638,43 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&5 $as_echo "$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpstatus_t.pr_fpreg in sys/procfs.h" >&5 +$as_echo_n "checking for lwpstatus_t.pr_fpreg in sys/procfs.h... " >&6; } + if test "${bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 +#include +int +main () +{ +lwpstatus_t avar; void* aref = (void*) &avar.pr_fpreg + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg=yes +else + bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + if test $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg = yes; then + +$as_echo "#define HAVE_LWPSTATUS_T_PR_FPREG 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg" >&5 +$as_echo "$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for win32_pstatus_t in sys/procfs.h" >&5 $as_echo_n "checking for win32_pstatus_t in sys/procfs.h... " >&6; } if test "${bfd_cv_have_sys_procfs_type_win32_pstatus_t+set}" = set; then : @@ -14448,6 +14684,8 @@ /* end confdefs.h. */ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14478,6 +14716,13 @@ fi +if test -n "$CORE_HEADER"; then + +cat >>confdefs.h <<_ACEOF +#define CORE_HEADER $CORE_HEADER +_ACEOF + +fi if test -n "$TRAD_HEADER"; then cat >>confdefs.h <<_ACEOF @@ -14503,7 +14748,7 @@ LIBM= case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) @@ -14815,8 +15060,7 @@ bfd_elf32_hppa_nbsd_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;; bfd_elf32_hppa_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;; bfd_elf32_i370_vec) tb="$tb elf32-i370.lo elf32.lo $elf" ;; - bfd_elf32_i386_dragonfly_vec) - tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;; + bfd_elf32_i386_sol2_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_i386_freebsd_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_i386_vxworks_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_i386_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;; @@ -14859,8 +15103,10 @@ bfd_elf32_msp430_vec) tb="$tb elf32-msp430.lo elf32.lo $elf" ;; bfd_elf32_nbigmips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; bfd_elf32_nlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; - bfd_elf32_ntradbigmips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; - bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; + bfd_elf32_ntradbigmips_vec | bfd_elf32_ntradbigmips_freebsd_vec) + tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; + bfd_elf32_ntradlittlemips_vec | bfd_elf32_ntradlittlemips_freebsd_vec) + tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; 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";; @@ -14868,6 +15114,8 @@ bfd_elf32_powerpc_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_powerpcle_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_powerpc_vxworks_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; + bfd_elf32_rx_le_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;; + bfd_elf32_rx_be_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;; bfd_elf32_s390_vec) tb="$tb elf32-s390.lo elf32.lo $elf" ;; bfd_elf32_bigscore_vec) tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64;; bfd_elf32_littlescore_vec) tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64;; @@ -14881,7 +15129,9 @@ bfd_elf32_sh64lnbsd_vec) tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" ;; bfd_elf32_sh64nbsd_vec) tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" ;; bfd_elf32_sh_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;; + bfd_elf32_shbfd_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; bfd_elf32_shblin_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; + bfd_elf32_shfd_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; bfd_elf32_shl_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;; bfd_elf32_shl_symbian_vec) tb="$tb elf32-sh-symbian.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;; bfd_elf32_shlin_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; @@ -14890,10 +15140,15 @@ bfd_elf32_shnbsd_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; bfd_elf32_shvxworks_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;; bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;; + bfd_elf32_sparc_sol2_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_sparc_vxworks_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_spu_vec) tb="$tb elf32-spu.lo elf32.lo $elf" ;; - bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;; - bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;; + bfd_elf32_tic6x_be_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; + bfd_elf32_tic6x_le_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; + bfd_elf32_tradbigmips_vec | bfd_elf32_tradbigmips_freebsd_vec) + tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;; + bfd_elf32_tradlittlemips_vec | bfd_elf32_tradlittlemips_freebsd_vec) + tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.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_vax_vec) tb="$tb elf32-vax.lo elf32.lo $elf" ;; @@ -14910,7 +15165,7 @@ 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_ia64_vms_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_ia64_vms_vec) tb="$tb elf64-ia64.lo elf64.lo vms-lib.lo vms-misc.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 elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; bfd_elf64_mmix_vec) tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;; @@ -14925,10 +15180,15 @@ bfd_elf64_sh64nbsd_vec) tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;; bfd_elf64_sparc_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_sparc_freebsd_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;; - bfd_elf64_tradbigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; - bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; + bfd_elf64_sparc_sol2_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_tradbigmips_vec | bfd_elf64_tradbigmips_freebsd_vec) + tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; + bfd_elf64_tradlittlemips_vec | bfd_elf64_tradlittlemips_freebsd_vec) + tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; bfd_elf64_x86_64_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_x86_64_sol2_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_x86_64_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf32_x86_64_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo elf32.lo $elf"; target_size=64 ;; bfd_elf64_l1om_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_l1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; bfd_mmo_vec) tb="$tb mmo.lo" target_size=64 ;; @@ -14980,11 +15240,11 @@ m88kbcs_vec) tb="$tb coff-m88k.lo" ;; m88kmach3_vec) tb="$tb m88kmach3.lo aout32.lo" ;; m88kopenbsd_vec) tb="$tb m88kopenbsd.lo aout32.lo" ;; - maxqcoff_vec) tb="$tb coff-maxq.lo" ;; mach_o_be_vec) tb="$tb mach-o.lo" ;; mach_o_le_vec) tb="$tb mach-o.lo" ;; mach_o_fat_vec) tb="$tb mach-o.lo" ;; mach_o_i386_vec) tb="$tb mach-o-i386.lo" ;; + mach_o_x86_64_vec) tb="$tb mach-o-x86-64.lo" ;; mcore_pe_big_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;; mcore_pe_little_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;; mcore_pei_big_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;; @@ -15042,8 +15302,8 @@ vax1knetbsd_vec) tb="$tb vax1knetbsd.lo aout32.lo" ;; vaxbsd_vec) tb="$tb vaxbsd.lo aout32.lo" ;; versados_vec) tb="$tb versados.lo" ;; - vms_alpha_vec) tb="$tb vms.lo vms-hdr.lo vms-gsd.lo vms-tir.lo vms-misc.lo"; target_size=64 ;; - vms_vax_vec) tb="$tb vms.lo vms-hdr.lo vms-gsd.lo vms-tir.lo vms-misc.lo" ;; + vms_alpha_vec) tb="$tb vms-alpha.lo vms-misc.lo vms-lib.lo"; target_size=64 ;; + vms_lib_txt_vec) tb="$tb vms-lib.lo vms-misc.lo" ;; w65_vec) tb="$tb coff-w65.lo reloc16.lo" ;; we32kcoff_vec) tb="$tb coff-we32k.lo" ;; z80coff_vec) tb="$tb coff-z80.lo reloc16.lo" ;; @@ -15099,7 +15359,7 @@ bfd_backends="${bfd_backends}"' $(ALL_BACKENDS)' bfd_machines="${bfd_machines}"' $(ALL_MACHINES)' selvecs= - havevecs= + havevecs=-DHAVE_all_vecs selarchs= test -n "$assocvecs" && assocvecs=`echo $assocvecs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'` @@ -15245,7 +15505,7 @@ test -n "${selvecs}" && tdefaults="${tdefaults} -DSELECT_VECS='${selvecs}'" test -n "${assocvecs}" && tdefaults="${tdefaults} -DASSOCIATED_VECS='${assocvecs}'" test -n "${selarchs}" && tdefaults="${tdefaults} -DSELECT_ARCHITECTURES='${selarchs}'" -test -n "${havevecs}" && tdefaults="${tdefaults} ${havevecs}" + for ac_header in stdlib.h unistd.h @@ -16182,131 +16442,143 @@ sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' -enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' -macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' -macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' -enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' -pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' -host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' -host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' -host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' -build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' -build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' -build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' -SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' -Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' -GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' -EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' -FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' -LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' -NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' -LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' -ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' -exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' -lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' -reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' -AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' -STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' -RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' -compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' -GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' -SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' -ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' -need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' -LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' -libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' -fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' -need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' -version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' -runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' -libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' -soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' -finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' -old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' -striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + # Quote evaled strings. -for var in SED \ +for var in SHELL \ +ECHO \ +SED \ GREP \ EGREP \ FGREP \ @@ -16330,8 +16602,6 @@ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -SHELL \ -ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ @@ -16361,12 +16631,13 @@ libname_spec \ library_names_spec \ soname_spec \ +install_override_mode \ finish_eval \ old_striplib \ striplib; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -16393,9 +16664,9 @@ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do - case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -16403,12 +16674,6 @@ esac done -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_ECHO in -*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` - ;; -esac - ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' @@ -17173,7 +17438,7 @@ # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008 Free Software Foundation, Inc. +# 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. @@ -17221,6 +17486,12 @@ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + # The host system. host_alias=$host_alias host=$host @@ -17270,10 +17541,6 @@ # turn newlines into spaces. NL2SP=$lt_lt_NL2SP -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - # An object symbol dumper. OBJDUMP=$lt_OBJDUMP @@ -17295,6 +17562,9 @@ old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + # A C compiler. LTCC=$lt_CC @@ -17316,12 +17586,6 @@ # The name of the directory that contains temporary libtool files. objdir=$objdir -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that does not interpret backslashes. -ECHO=$lt_ECHO - # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD @@ -17384,6 +17648,9 @@ # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds @@ -17423,6 +17690,10 @@ # The linker used to build libraries. LD=$lt_LD +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds @@ -17682,7 +17953,7 @@ func_dirname () { # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else @@ -17693,7 +17964,7 @@ # func_basename file func_basename () { - func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` + func_basename_result=`$ECHO "${1}" | $SED "$basename"` } @@ -17706,10 +17977,8 @@ func_stripname () { case ${2} in - .*) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "X${3}" \ - | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } @@ -17720,20 +17989,20 @@ # func_opt_split func_opt_split () { - func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` - func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` + func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { - func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_xform libobj-or-source func_xform () { - func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... @@ -17797,7 +18066,7 @@ case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. @@ -17931,49 +18200,61 @@ #define _UINT8_T #ifndef __uint8_t_defined #define __uint8_t_defined + #ifndef uint8_t typedef unsigned $acx_cv_type_int8_t uint8_t; #endif #endif + #endif #ifndef _UINT16_T #define _UINT16_T #ifndef __uint16_t_defined #define __uint16_t_defined + #ifndef uint16_t typedef unsigned $acx_cv_type_int16_t uint16_t; #endif #endif + #endif #ifndef _UINT32_T #define _UINT32_T #ifndef __uint32_t_defined #define __uint32_t_defined + #ifndef uint32_t typedef unsigned $acx_cv_type_int32_t uint32_t; #endif #endif + #endif #ifndef _INT8_T #define _INT8_T #ifndef __int8_t_defined #define __int8_t_defined + #ifndef int8_t typedef $acx_cv_type_int8_t int8_t; #endif #endif + #endif #ifndef _INT16_T #define _INT16_T #ifndef __int16_t_defined #define __int16_t_defined + #ifndef int16_t typedef $acx_cv_type_int16_t int16_t; #endif #endif + #endif #ifndef _INT32_T #define _INT32_T #ifndef __int32_t_defined #define __int32_t_defined + #ifndef int32_t typedef $acx_cv_type_int32_t int32_t; #endif #endif + #endif EOF elif test "$ac_cv_type_u_int32_t" = yes; then sed 's/^ *//' >> tmp-stdint.h <> tmp-stdint.h <> tmp-stdint.h <> tmp-stdint.h <> tmp-stdint.h < 0 THEN; POSITION(BEGINNING_OF(match_pos)); ERASE(match_pos); - COPY_TEXT('0'); + COPY_TEXT('1'); ENDIF; match_pos := SEARCH_QUIETLY('@BFD_HOST_64BIT_LONG_LONG@', FORWARD, EXACT, rang); IF match_pos <> 0 THEN; POSITION(BEGINNING_OF(match_pos)); ERASE(match_pos); - COPY_TEXT('0'); + COPY_TEXT('1'); ENDIF; match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT_DEFINED@', FORWARD, EXACT, rang); IF match_pos <> 0 THEN; @@ -257,6 +257,13 @@ $ EOD $! $! +$! create bfd_stdint.h +$! +$ write sys$output "Generate `bfd_stdint.h'" +$ create []bfd_stdint.h +#include +$! +$! $! create targmatch.h $! $ write sys$output "Generate `targmatch.h'" @@ -318,6 +325,9 @@ /* Disable NLS */ #undef ENABLE_NLS $! +$ write sys$output "Copy sysdep.h" +$ copy [.hosts]alphavms.h sysdep.h +$ $ write sys$output "Generate build.com" $! $ if ARCH.eqs."alpha" @@ -362,7 +372,6 @@ $ edit/tpu/nojournal/nosection/nodisplay/command=substxx.tpu - []elfXX-target.h /output=[]elf64-target.h $ del substxx.tpu;* -$ copy [.hosts]alphavms.h sysdep.h $ endif $ append sys$input build.com $DECK diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/configure.host crash-6.1.6/=unpacked-tar1=/bfd/configure.host --- crash-5.1.6/=unpacked-tar1=/bfd/configure.host 2005-12-30 22:25:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/configure.host 2010-12-31 11:00:52.000000000 +0000 @@ -50,12 +50,19 @@ mips*-sgi-irix4*) HDEFINES="-G 4" ;; mips*-sgi-irix6*) host64=true;; mips64*-*-linux*) host64=true;; +mips64*-*-freebsd* | mips64*-*-kfreebsd*-gnu) host64=true;; mips*-*-sysv4*) ;; mips*-*-sysv*) HDEFINES="-G 4" ;; mips*-*-riscos*) HDEFINES="-G 4" ;; m68*-hp-hpux*) HDEFINES=-DHOST_HP300HPUX ;; +# Some Solaris systems (osol0906 at least) have a libc that doesn't recognise +# the "MS-ANSI" code page name, so we define an override for CP_ACP (sets the +# default code page used by windres/windmc when not specified by a commandline +# option) to select the "WINDOWS-1252" name instead. See PR11280 for details. +*-*-solaris2.11) HDEFINES=-DCP_ACP=1 ;; + *-*-windows*) HOST_64BIT_TYPE=__int64 HOST_U_64BIT_TYPE="unsigned __int64" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/configure.in crash-6.1.6/=unpacked-tar1=/bfd/configure.in --- crash-5.1.6/=unpacked-tar1=/bfd/configure.in 2009-09-07 09:15:27.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/configure.in 2011-03-28 11:18:26.000000000 +0000 @@ -8,7 +8,7 @@ AC_CANONICAL_TARGET AC_ISC_POSIX -AM_INIT_AUTOMAKE(bfd, 2.20.51) +AM_INIT_AUTOMAKE(bfd, 2.21.51) dnl These must be called before LT_INIT, because it may want dnl to call AC_CHECK_PROG. @@ -25,7 +25,8 @@ LT_INIT([dlopen]) -AC_PLUGINS +# AC_PLUGINS setting $plugins is called by ACX_LARGEFILE. +ACX_LARGEFILE AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes") @@ -37,26 +38,6 @@ enable_targets="$enable_targets plugin" fi -case "${target}" in -changequote(,)dnl - sparc-*-solaris*|i[3-7]86-*-solaris*) -changequote([,])dnl - # On native 32bit sparc and ia32 solaris, large-file and procfs support - # are mutually exclusive; and without procfs support, the elf module - # cannot provide certain routines such as elfcore_write_prpsinfo - # or elfcore_write_prstatus. So unless the user explicitly requested - # large-file support through the --enable-largefile switch, disable - # large-file support in favor of procfs support. - if test "${target}" = "${host}" -a "$enable_largefile" != 'yes'; then - if test "$plugins" = "no"; then - enable_largefile="no" - fi - fi - ;; -esac - -AC_SYS_LARGEFILE - AC_ARG_ENABLE(64-bit-bfd, [ --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)], [case "${enableval}" in @@ -94,6 +75,14 @@ [Define if we should default to creating read-only plt entries]) fi +AC_ARG_ENABLE(leading-mingw64-underscores, + AS_HELP_STRING([--enable-leading-mingw64-underscores], + [Enable leading underscores on 64 bit mingw targets]), + [],[]) +AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ], + [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1, + [Define if we should use leading underscore on 64 bit mingw targets])]) + DEBUGDIR=${libdir}/debug AC_ARG_WITH(separate-debug-dir, AS_HELP_STRING([--with-separate-debug-dir=DIR], @@ -225,15 +214,16 @@ # Link in zlib if we can. This allows us to read compressed debug sections. # This is used only by compress.c. -AC_SEARCH_LIBS(zlibVersion, z, [AC_CHECK_HEADERS(zlib.h)]) +AM_ZLIB # If we are configured native, pick a core file support file. COREFILE= COREFLAG= +CORE_HEADER= TRAD_HEADER= if test "${target}" = "${host}"; then case "${host}" in - alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) + alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-*vms*) COREFILE='' ;; alpha*-*-linux-*) @@ -243,9 +233,11 @@ alpha*-*-netbsd* | alpha*-*-openbsd*) COREFILE=netbsd-core.lo ;; - alpha*-*-*) COREFILE=osf-core.lo ;; + alpha*-*-*) + COREFILE=osf-core.lo + ;; arm-*-freebsd* | arm-*-kfreebsd*-gnu) - COREFILE='' ;; + COREFILE='' ;; arm-*-netbsd* | arm-*-openbsd*) COREFILE=netbsd-core.lo ;; @@ -462,6 +454,9 @@ COREFILE=trad-core.lo TRAD_HEADER='"hosts/vaxbsd.h"' ;; + x86_64-*-linux*) + CORE_HEADER='"hosts/x86-64linux.h"' + ;; x86_64-*-netbsd* | x86_64-*-openbsd*) COREFILE=netbsd-core.lo ;; @@ -500,11 +495,16 @@ BFD_HAVE_SYS_PROCFS_TYPE(lwpxstatus_t) BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_context) BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_reg) + BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_fpreg) BFD_HAVE_SYS_PROCFS_TYPE(win32_pstatus_t) fi fi AC_SUBST(COREFILE) AC_SUBST(COREFLAG) +if test -n "$CORE_HEADER"; then + AC_DEFINE_UNQUOTED(CORE_HEADER, $CORE_HEADER, + [Name of host specific core header file to include in elf.c.]) +fi if test -n "$TRAD_HEADER"; then AC_DEFINE_UNQUOTED(TRAD_HEADER, $TRAD_HEADER, [Name of host specific header file to include in trad-core.c.]) @@ -703,8 +703,7 @@ bfd_elf32_hppa_nbsd_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;; bfd_elf32_hppa_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;; bfd_elf32_i370_vec) tb="$tb elf32-i370.lo elf32.lo $elf" ;; - bfd_elf32_i386_dragonfly_vec) - tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;; + bfd_elf32_i386_sol2_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_i386_freebsd_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_i386_vxworks_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_i386_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-vxworks.lo elf32.lo $elf" ;; @@ -747,8 +746,10 @@ bfd_elf32_msp430_vec) tb="$tb elf32-msp430.lo elf32.lo $elf" ;; bfd_elf32_nbigmips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; bfd_elf32_nlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; - bfd_elf32_ntradbigmips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; - bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; + bfd_elf32_ntradbigmips_vec | bfd_elf32_ntradbigmips_freebsd_vec) + tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; + bfd_elf32_ntradlittlemips_vec | bfd_elf32_ntradlittlemips_freebsd_vec) + tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; 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";; @@ -756,6 +757,8 @@ bfd_elf32_powerpc_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_powerpcle_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_powerpc_vxworks_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;; + bfd_elf32_rx_le_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;; + bfd_elf32_rx_be_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;; bfd_elf32_s390_vec) tb="$tb elf32-s390.lo elf32.lo $elf" ;; bfd_elf32_bigscore_vec) tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64;; bfd_elf32_littlescore_vec) tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64;; @@ -769,7 +772,9 @@ bfd_elf32_sh64lnbsd_vec) tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" ;; bfd_elf32_sh64nbsd_vec) tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" ;; bfd_elf32_sh_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;; + bfd_elf32_shbfd_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; bfd_elf32_shblin_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; + bfd_elf32_shfd_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; bfd_elf32_shl_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;; bfd_elf32_shl_symbian_vec) tb="$tb elf32-sh-symbian.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;; bfd_elf32_shlin_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; @@ -778,10 +783,15 @@ bfd_elf32_shnbsd_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; bfd_elf32_shvxworks_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;; bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;; + bfd_elf32_sparc_sol2_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_sparc_vxworks_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;; bfd_elf32_spu_vec) tb="$tb elf32-spu.lo elf32.lo $elf" ;; - bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;; - bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;; + bfd_elf32_tic6x_be_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; + bfd_elf32_tic6x_le_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;; + bfd_elf32_tradbigmips_vec | bfd_elf32_tradbigmips_freebsd_vec) + tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;; + bfd_elf32_tradlittlemips_vec | bfd_elf32_tradlittlemips_freebsd_vec) + tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.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_vax_vec) tb="$tb elf32-vax.lo elf32.lo $elf" ;; @@ -798,7 +808,7 @@ 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_ia64_vms_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_ia64_vms_vec) tb="$tb elf64-ia64.lo elf64.lo vms-lib.lo vms-misc.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 elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; bfd_elf64_mmix_vec) tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;; @@ -813,10 +823,15 @@ bfd_elf64_sh64nbsd_vec) tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;; bfd_elf64_sparc_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_sparc_freebsd_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;; - bfd_elf64_tradbigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; - bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; + bfd_elf64_sparc_sol2_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_tradbigmips_vec | bfd_elf64_tradbigmips_freebsd_vec) + tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; + bfd_elf64_tradlittlemips_vec | bfd_elf64_tradlittlemips_freebsd_vec) + tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; bfd_elf64_x86_64_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_x86_64_sol2_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_x86_64_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf32_x86_64_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo elf32.lo $elf"; target_size=64 ;; bfd_elf64_l1om_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_l1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; bfd_mmo_vec) tb="$tb mmo.lo" target_size=64 ;; @@ -868,11 +883,11 @@ m88kbcs_vec) tb="$tb coff-m88k.lo" ;; m88kmach3_vec) tb="$tb m88kmach3.lo aout32.lo" ;; m88kopenbsd_vec) tb="$tb m88kopenbsd.lo aout32.lo" ;; - maxqcoff_vec) tb="$tb coff-maxq.lo" ;; mach_o_be_vec) tb="$tb mach-o.lo" ;; mach_o_le_vec) tb="$tb mach-o.lo" ;; mach_o_fat_vec) tb="$tb mach-o.lo" ;; mach_o_i386_vec) tb="$tb mach-o-i386.lo" ;; + mach_o_x86_64_vec) tb="$tb mach-o-x86-64.lo" ;; mcore_pe_big_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;; mcore_pe_little_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;; mcore_pei_big_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;; @@ -930,8 +945,8 @@ vax1knetbsd_vec) tb="$tb vax1knetbsd.lo aout32.lo" ;; vaxbsd_vec) tb="$tb vaxbsd.lo aout32.lo" ;; versados_vec) tb="$tb versados.lo" ;; - vms_alpha_vec) tb="$tb vms.lo vms-hdr.lo vms-gsd.lo vms-tir.lo vms-misc.lo"; target_size=64 ;; - vms_vax_vec) tb="$tb vms.lo vms-hdr.lo vms-gsd.lo vms-tir.lo vms-misc.lo" ;; + vms_alpha_vec) tb="$tb vms-alpha.lo vms-misc.lo vms-lib.lo"; target_size=64 ;; + vms_lib_txt_vec) tb="$tb vms-lib.lo vms-misc.lo" ;; w65_vec) tb="$tb coff-w65.lo reloc16.lo" ;; we32kcoff_vec) tb="$tb coff-we32k.lo" ;; z80coff_vec) tb="$tb coff-z80.lo reloc16.lo" ;; @@ -987,7 +1002,7 @@ bfd_backends="${bfd_backends}"' $(ALL_BACKENDS)' bfd_machines="${bfd_machines}"' $(ALL_MACHINES)' selvecs= - havevecs= + havevecs=-DHAVE_all_vecs selarchs= test -n "$assocvecs" && assocvecs=`echo $assocvecs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'` @@ -1072,8 +1087,8 @@ test -n "${selvecs}" && tdefaults="${tdefaults} -DSELECT_VECS='${selvecs}'" test -n "${assocvecs}" && tdefaults="${tdefaults} -DASSOCIATED_VECS='${assocvecs}'" test -n "${selarchs}" && tdefaults="${tdefaults} -DSELECT_ARCHITECTURES='${selarchs}'" -test -n "${havevecs}" && tdefaults="${tdefaults} ${havevecs}" AC_SUBST(tdefaults) +AC_SUBST(havevecs) dnl AC_CHECK_HEADERS(sys/mman.h) AC_FUNC_MMAP diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/corefile.c crash-6.1.6/=unpacked-tar1=/bfd/corefile.c --- crash-5.1.6/=unpacked-tar1=/bfd/corefile.c 2007-07-03 14:26:40.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/corefile.c 2011-02-28 18:30:16.000000000 +0000 @@ -84,6 +84,31 @@ /* FUNCTION + bfd_core_file_pid + +SYNOPSIS + int bfd_core_file_pid (bfd *abfd); + +DESCRIPTION + + Returns the PID of the process the core dump the BFD + @var{abfd} is attached to was generated from. +*/ + +int +bfd_core_file_pid (bfd *abfd) +{ + if (abfd->format != bfd_core) + { + bfd_set_error (bfd_error_invalid_operation); + return 0; + } + return BFD_SEND (abfd, _core_file_pid, (abfd)); +} + + +/* +FUNCTION core_file_matches_executable_p SYNOPSIS @@ -161,6 +186,6 @@ if (last_slash != NULL) exec = last_slash + 1; - return strcmp (exec, core) == 0; + return filename_cmp (exec, core) == 0; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-arm.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-arm.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-arm.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-arm.c 2010-06-27 04:07:51.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD support for the ARM processor - Copyright 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2009 - Free Software Foundation, Inc. + Copyright 1994, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, + 2009, 2010 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) This file is part of BFD, the Binary File Descriptor library. @@ -262,6 +262,7 @@ } /* FIXME: We should probably check the type as well. */ + (void) type; if (description_return != NULL) * description_return = descr; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-avr.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-avr.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-avr.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-avr.c 2011-03-22 18:10:42.000000000 +0000 @@ -133,7 +133,29 @@ N (22, bfd_mach_avr51, "avr:51", FALSE, & arch_info_struct[9]), /* 3-Byte PC. */ - N (22, bfd_mach_avr6, "avr:6", FALSE, NULL) + N (22, bfd_mach_avr6, "avr:6", FALSE, & arch_info_struct[10]), + + /* Xmega 1 */ + N (24, bfd_mach_avrxmega1, "avr:101", FALSE, & arch_info_struct[11]), + + /* Xmega 2 */ + N (24, bfd_mach_avrxmega2, "avr:102", FALSE, & arch_info_struct[12]), + + /* Xmega 3 */ + N (24, bfd_mach_avrxmega3, "avr:103", FALSE, & arch_info_struct[13]), + + /* Xmega 4 */ + N (24, bfd_mach_avrxmega4, "avr:104", FALSE, & arch_info_struct[14]), + + /* Xmega 5 */ + N (24, bfd_mach_avrxmega5, "avr:105", FALSE, & arch_info_struct[15]), + + /* Xmega 6 */ + N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[16]), + + /* Xmega 7 */ + N (24, bfd_mach_avrxmega7, "avr:107", FALSE, NULL) + }; const bfd_arch_info_type bfd_avr_arch = diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-d10v.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-d10v.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-d10v.c 2007-07-03 14:26:40.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-d10v.c 2010-09-23 11:55:01.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD support for the D10V processor - Copyright 1996, 1999, 2000, 2002, 2005, 2007 + Copyright 1996, 1999, 2000, 2002, 2005, 2007, 2010 Free Software Foundation, Inc. Contributed by Martin Hunt (hunt@cygnus.com). @@ -27,7 +27,7 @@ static const bfd_arch_info_type d10v_ts3_info = { 16, /* 16 bits in a word. */ - 16, /* 16 bits in an address. */ + 18, /* really 16 bits in an address, but code has 18 bit range. */ 8, /* 8 bits in a byte. */ bfd_arch_d10v, bfd_mach_d10v_ts3, @@ -42,14 +42,14 @@ static const bfd_arch_info_type d10v_ts2_info = { - 16, /* 16 bits in a word. */ - 16, /* 16 bits in an address. */ - 8, /* 8 bits in a byte. */ + 16, + 18, + 8, bfd_arch_d10v, bfd_mach_d10v_ts2, "d10v", "d10v:ts2", - 4, /* Section alignment power. */ + 4, FALSE, bfd_default_compatible, bfd_default_scan, @@ -58,14 +58,14 @@ const bfd_arch_info_type bfd_d10v_arch = { - 16, /* 16 bits in a word. */ - 16, /* 16 bits in an address. */ - 8, /* 8 bits in a byte. */ + 16, + 18, + 8, bfd_arch_d10v, bfd_mach_d10v, "d10v", "d10v", - 4, /* Section alignment power. */ + 4, TRUE, bfd_default_compatible, bfd_default_scan, diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-i386.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-i386.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-i386.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-i386.c 2011-01-03 18:16:46.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD support for the Intel 386 architecture. Copyright 1992, 1994, 1995, 1996, 1998, 2000, 2001, 2002, 2004, 2005, - 2007, 2009 + 2007, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -24,6 +24,35 @@ #include "bfd.h" #include "libbfd.h" +static const bfd_arch_info_type * +bfd_i386_compatible (const bfd_arch_info_type *a, + const bfd_arch_info_type *b) +{ + const bfd_arch_info_type *compat = bfd_default_compatible (a, b); + + /* Don't allow mixing x64_32 with x86_64. */ + if (compat && a->bits_per_address != b->bits_per_address) + compat = NULL; + + return compat; +} + +static const bfd_arch_info_type bfd_x64_32_arch_intel_syntax = +{ + 64, /* 64 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_i386, + bfd_mach_x64_32_intel_syntax, + "i386:intel", + "i386:x64-32:intel", + 3, + FALSE, + bfd_i386_compatible, + bfd_default_scan, + 0 +}; + static const bfd_arch_info_type bfd_x86_64_arch_intel_syntax = { 64, /* 64 bits in a word */ @@ -35,9 +64,9 @@ "i386:x86-64:intel", 3, FALSE, - bfd_default_compatible, + bfd_i386_compatible, bfd_default_scan, - 0 + &bfd_x64_32_arch_intel_syntax, }; static const bfd_arch_info_type bfd_i386_arch_intel_syntax = @@ -51,7 +80,7 @@ "i386:intel", 3, TRUE, - bfd_default_compatible, + bfd_i386_compatible, bfd_default_scan, &bfd_x86_64_arch_intel_syntax }; @@ -67,11 +96,27 @@ "i8086", 3, FALSE, - bfd_default_compatible, + bfd_i386_compatible, bfd_default_scan, &bfd_i386_arch_intel_syntax }; +static const bfd_arch_info_type bfd_x64_32_arch = +{ + 64, /* 64 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_i386, + bfd_mach_x64_32, + "i386", + "i386:x64-32", + 3, + FALSE, + bfd_i386_compatible, + bfd_default_scan, + &i8086_arch +}; + static const bfd_arch_info_type bfd_x86_64_arch = { 64, /* 64 bits in a word */ @@ -83,9 +128,9 @@ "i386:x86-64", 3, FALSE, - bfd_default_compatible, + bfd_i386_compatible, bfd_default_scan, - &i8086_arch + &bfd_x64_32_arch }; const bfd_arch_info_type bfd_i386_arch = @@ -99,7 +144,7 @@ "i386", 3, TRUE, - bfd_default_compatible, + bfd_i386_compatible, bfd_default_scan, &bfd_x86_64_arch }; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-m32c.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-m32c.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-m32c.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-m32c.c 2010-01-13 14:34:13.000000000 +0000 @@ -22,6 +22,19 @@ #include "bfd.h" #include "libbfd.h" +/* Like bfd_default_scan but if the string is just "m32c" then + skip the m16c architecture. */ + +static bfd_boolean +m32c_scan (const bfd_arch_info_type * info, const char * string) +{ + if (strcmp (string, "m32c") == 0 + && info->mach == bfd_mach_m16c) + return FALSE; + + return bfd_default_scan (info, string); +} + static const bfd_arch_info_type arch_info_struct[] = { { @@ -35,7 +48,7 @@ 3, /* section align power */ FALSE, /* the default ? */ bfd_default_compatible, /* architecture comparison fn */ - bfd_default_scan, /* string to architecture convert fn */ + m32c_scan, /* string to architecture convert fn */ NULL /* next in list */ }, }; @@ -52,6 +65,6 @@ 4, /* Section align power. */ TRUE, /* The default ? */ bfd_default_compatible, /* Architecture comparison fn. */ - bfd_default_scan, /* String to architecture convert fn. */ + m32c_scan, /* String to architecture convert fn. */ &arch_info_struct[0], /* Next in list. */ }; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-maxq.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-maxq.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-maxq.c 2007-07-03 14:26:40.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-maxq.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* BFD support for the MAXQ20/10 architecture. - Copyright 2004, 2005, 2007 Free Software Foundation, Inc. - - Written by Vineet Sharma(vineets@noida.hcltech.com) - Inderpreet Singh(inderpreetb@noida.hcltech.com) - - 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 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - -#include "sysdep.h" -#include "bfd.h" -#include "libbfd.h" - -/* MAXQ Archtecture info. */ -static const bfd_arch_info_type bfd_maxq10_arch = -{ - 16, /* 16 bits in a word. */ - 16, /* 16 bits in an address. */ - 8, /* 16 bits in a byte. */ - bfd_arch_maxq, /* Architecture number. */ - bfd_mach_maxq10, /* Machine number. */ - "maxq", /* Architecture name. */ - "maxq10", /* Machine name. */ - 0, /* Section align power. */ - FALSE, /* Not the default machine. */ - bfd_default_compatible, - bfd_default_scan, - NULL -}; - - -const bfd_arch_info_type bfd_maxq_arch = -{ - 16, /* 16 bits in a word. */ - 16, /* 16 bits in an address. */ - 8, /* 16 bits in a byte. */ - bfd_arch_maxq, /* Architecture number. */ - bfd_mach_maxq20, /* Machine number. */ - "maxq", /* Architecture name. */ - "maxq20", /* Machine name. */ - 0, /* Section align power. */ - TRUE, /* This is the default machine. */ - bfd_default_compatible, - bfd_default_scan, - & bfd_maxq10_arch -}; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-mips.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-mips.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-mips.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-mips.c 2010-11-17 09:32:42.000000000 +0000 @@ -91,6 +91,7 @@ I_sb1, I_loongson_2e, I_loongson_2f, + I_loongson_3a, I_mipsocteon, I_xlr }; @@ -130,6 +131,7 @@ N (64, 64, bfd_mach_mips_sb1, "mips:sb1", FALSE, NN(I_sb1)), N (64, 64, bfd_mach_mips_loongson_2e, "mips:loongson_2e", FALSE, NN(I_loongson_2e)), N (64, 64, bfd_mach_mips_loongson_2f, "mips:loongson_2f", FALSE, NN(I_loongson_2f)), + N (64, 64, bfd_mach_mips_loongson_3a, "mips:loongson_3a", FALSE, NN(I_loongson_3a)), N (64, 64, bfd_mach_mips_octeon,"mips:octeon", FALSE, NN(I_mipsocteon)), N (64, 64, bfd_mach_mips_xlr, "mips:xlr", FALSE, 0) }; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-powerpc.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-powerpc.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-powerpc.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-powerpc.c 2010-02-08 01:59:34.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD PowerPC CPU definition - Copyright 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2005, 2007, 2008 + Copyright 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2010 Free Software Foundation, Inc. Contributed by Ian Lance Taylor, Cygnus Support. @@ -299,6 +299,20 @@ &bfd_powerpc_archs[15] }, { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_e500mc64, + "powerpc", + "powerpc:e500mc64", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + &bfd_powerpc_archs[16] + }, + { 32, /* 32 bits in a word */ 32, /* 32 bits in an address */ 8, /* 8 bits in a byte */ @@ -310,7 +324,7 @@ FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, - &bfd_powerpc_archs[16] + &bfd_powerpc_archs[17] }, { 32, /* 32 bits in a word */ @@ -324,6 +338,20 @@ FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + &bfd_powerpc_archs[18] + }, + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_titan, + "powerpc", + "powerpc:titan", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, 0 } }; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-rx.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-rx.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-rx.c 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-rx.c 2009-09-29 14:17:03.000000000 +0000 @@ -0,0 +1,57 @@ +/* BFD support for the RX processor. + Copyright (C) 2008, 2009 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "sysdep.h" +#include "bfd.h" +#include "libbfd.h" + +static const bfd_arch_info_type arch_info_struct[] = +{ + { + 32, /* Bits per word. */ + 32, /* Bits per address. */ + 8, /* Bits per byte. */ + bfd_arch_rx, /* Architecture. */ + bfd_mach_rx, /* Machine. */ + "rx", /* Architecture name. */ + "rx", /* Printable name. */ + 3, /* Section align power. */ + FALSE, /* The default ? */ + bfd_default_compatible, /* Architecture comparison fn. */ + bfd_default_scan, /* String to architecture convert fn. */ + NULL /* Next in list. */ + }, +}; + +const bfd_arch_info_type bfd_rx_arch = +{ + 32, /* Bits per word. */ + 32, /* Bits per address. */ + 8, /* Bits per byte. */ + bfd_arch_rx, /* Architecture. */ + bfd_mach_rx, /* Machine. */ + "rx", /* Architecture name. */ + "rx", /* Printable name. */ + 4, /* Section align power. */ + TRUE, /* The default ? */ + bfd_default_compatible, /* Architecture comparison fn. */ + bfd_default_scan, /* String to architecture convert fn. */ + & arch_info_struct[0], /* Next in list. */ +}; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-tic6x.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-tic6x.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-tic6x.c 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-tic6x.c 2010-03-25 21:12:26.000000000 +0000 @@ -0,0 +1,40 @@ +/* BFD support for the TI C6X processor. + Copyright 2010 + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "sysdep.h" +#include "bfd.h" +#include "libbfd.h" + +const bfd_arch_info_type bfd_tic6x_arch = + { + 32, /* 32 bits in a word. */ + 32, /* 32 bits in an address. */ + 8, /* 8 bits in a byte. */ + bfd_arch_tic6x, /* Architecture. */ + 0, /* No BFD machine numbers needed. */ + "tic6x", /* Architecture name. */ + "tic6x", /* Printable name. */ + 2, /* Section alignment power. */ + TRUE, /* Default machine for this architecture. */ + bfd_default_compatible, + bfd_default_scan, + 0, + }; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/cpu-v850.c crash-6.1.6/=unpacked-tar1=/bfd/cpu-v850.c --- crash-5.1.6/=unpacked-tar1=/bfd/cpu-v850.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/cpu-v850.c 2010-07-23 14:52:46.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD support for the NEC V850 processor - Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2007 - Free Software Foundation, Inc. + Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2007, + 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -32,8 +32,10 @@ static const bfd_arch_info_type arch_info_struct[] = { - N (bfd_mach_v850e1, "v850e1", FALSE, & arch_info_struct[1]), - N (bfd_mach_v850e, "v850e", FALSE, NULL) + N (bfd_mach_v850e2v3, "v850e2v3", FALSE, & arch_info_struct[1]), + N (bfd_mach_v850e2, "v850e2", FALSE, & arch_info_struct[2]), + N (bfd_mach_v850e1, "v850e1", FALSE, & arch_info_struct[3]), + N (bfd_mach_v850e, "v850e", FALSE, NULL) }; #undef NEXT diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/ChangeLog crash-6.1.6/=unpacked-tar1=/bfd/doc/ChangeLog --- crash-5.1.6/=unpacked-tar1=/bfd/doc/ChangeLog 2009-08-29 22:10:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/ChangeLog 2010-10-28 11:40:25.000000000 +0000 @@ -1,3 +1,21 @@ +2010-10-28 Matthias Klose + + * bfd.texinfo: Add directory section for info document. + +2010-05-07 Tristan Gingold + + * Makefile.in: Regenerate with automake 1.11.1. + +2010-01-09 Ralf Wildenhues + + * Makefile.in: Regenerate. + +2009-09-25 Martin Thuresson + + Update soruces to make alpha targets compile cleanly with + -Wc++-compat: + * chew.c: Add casts. + 2009-08-29 Martin Thuresson * chew.c (newentry, add_intrinsic): Rename variable new to diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/Makefile.in crash-6.1.6/=unpacked-tar1=/bfd/doc/Makefile.in --- crash-5.1.6/=unpacked-tar1=/bfd/doc/Makefile.in 2009-08-27 05:24:43.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/Makefile.in 2010-05-25 10:14:16.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11 from Makefile.am. +# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -46,6 +46,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/gettext-sister.m4 \ + $(top_srcdir)/../config/largefile.m4 \ $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/nls.m4 \ $(top_srcdir)/../config/override.m4 \ @@ -56,7 +57,8 @@ $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ $(top_srcdir)/bfd.m4 $(top_srcdir)/warning.m4 \ - $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in + $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/zlib.m4 \ + $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs @@ -230,6 +232,7 @@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ +havevecs = @havevecs@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ @@ -244,7 +247,6 @@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/archures.texi crash-6.1.6/=unpacked-tar1=/bfd/doc/archures.texi --- crash-5.1.6/=unpacked-tar1=/bfd/doc/archures.texi 2009-10-06 16:40:51.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/archures.texi 2011-09-04 17:54:59.000000000 +0000 @@ -138,6 +138,7 @@ #define bfd_mach_mips5 5 #define bfd_mach_mips_loongson_2e 3001 #define bfd_mach_mips_loongson_2f 3002 +#define bfd_mach_mips_loongson_3a 3003 #define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */ #define bfd_mach_mips_octeon 6501 #define bfd_mach_mips_xlr 887682 /* decimal 'XLR' */ @@ -149,6 +150,8 @@ #define bfd_mach_i386_i386 1 #define bfd_mach_i386_i8086 2 #define bfd_mach_i386_i386_intel_syntax 3 +#define bfd_mach_x64_32 32 +#define bfd_mach_x64_32_intel_syntax 33 #define bfd_mach_x86_64 64 #define bfd_mach_x86_64_intel_syntax 65 bfd_arch_l1om, /* Intel L1OM */ @@ -195,6 +198,8 @@ #define bfd_mach_ppc_7400 7400 #define bfd_mach_ppc_e500 500 #define bfd_mach_ppc_e500mc 5001 +#define bfd_mach_ppc_e500mc64 5005 +#define bfd_mach_ppc_titan 83 bfd_arch_rs6000, /* IBM RS/6000 */ #define bfd_mach_rs6k 6000 #define bfd_mach_rs6k_rs1 6001 @@ -268,11 +273,14 @@ #define bfd_mach_tic3x 30 #define bfd_mach_tic4x 40 bfd_arch_tic54x, /* Texas Instruments TMS320C54X */ + bfd_arch_tic6x, /* Texas Instruments TMS320C6X */ bfd_arch_tic80, /* TI TMS320c80 (MVP) */ bfd_arch_v850, /* NEC V850 */ #define bfd_mach_v850 1 #define bfd_mach_v850e 'E' #define bfd_mach_v850e1 '1' +#define bfd_mach_v850e2 0x4532 +#define bfd_mach_v850e2v3 0x45325633 bfd_arch_arc, /* ARC Cores */ #define bfd_mach_arc_5 5 #define bfd_mach_arc_6 6 @@ -333,6 +341,13 @@ #define bfd_mach_avr5 5 #define bfd_mach_avr51 51 #define bfd_mach_avr6 6 +#define bfd_mach_avrxmega1 101 +#define bfd_mach_avrxmega2 102 +#define bfd_mach_avrxmega3 103 +#define bfd_mach_avrxmega4 104 +#define bfd_mach_avrxmega5 105 +#define bfd_mach_avrxmega6 106 +#define bfd_mach_avrxmega7 107 bfd_arch_bfin, /* ADI Blackfin */ #define bfd_mach_bfin 1 bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */ @@ -345,6 +360,8 @@ #define bfd_mach_cris_v0_v10 255 #define bfd_mach_cris_v32 32 #define bfd_mach_cris_v10_v32 1032 + bfd_arch_rx, /* Renesas RX. */ +#define bfd_mach_rx 0x75 bfd_arch_s390, /* IBM s390 */ #define bfd_mach_s390_31 31 #define bfd_mach_s390_64 64 @@ -377,9 +394,6 @@ #define bfd_mach_xc16xs 3 bfd_arch_xtensa, /* Tensilica's Xtensa cores. */ #define bfd_mach_xtensa 1 - bfd_arch_maxq, /* Dallas MAXQ 10/20 */ -#define bfd_mach_maxq10 10 -#define bfd_mach_maxq20 20 bfd_arch_z80, #define bfd_mach_z80strict 1 /* No undocumented opcodes. */ #define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/bfd.info crash-6.1.6/=unpacked-tar1=/bfd/doc/bfd.info --- crash-5.1.6/=unpacked-tar1=/bfd/doc/bfd.info 2009-10-06 16:40:52.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/bfd.info 2011-09-04 17:54:59.000000000 +0000 @@ -1,5 +1,6 @@ This is bfd.info, produced by makeinfo version 4.8 from bfd.texinfo. +INFO-DIR-SECTION Software development START-INFO-DIR-ENTRY * Bfd: (bfd). The Binary File Descriptor library. END-INFO-DIR-ENTRY @@ -428,6 +429,21 @@ will be consistent from run to run. */ #define BFD_DETERMINISTIC_OUTPUT 0x4000 + /* Compress sections in this BFD. */ + #define BFD_COMPRESS 0x8000 + + /* Decompress sections in this BFD. */ + #define BFD_DECOMPRESS 0x10000 + + /* Flags bits to be saved in bfd_preserve_save. */ + #define BFD_FLAGS_SAVED \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS) + + /* Flags bits which are for BFD use only. */ + #define BFD_FLAGS_FOR_BFD_USE_MASK \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \ + | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT) + /* 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. */ @@ -563,6 +579,10 @@ /* Set if this is a thin archive. */ unsigned int is_thin_archive : 1; + + /* Set if only required symbols should be added in the link hash table for + this object. Used by VMS linkers. */ + unsigned int selective_search : 1; }; 2.2 Error reporting @@ -1125,6 +1145,7 @@ void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len, int prot, int flags, file_ptr offset); }; + extern const struct bfd_iovec _bfd_memory_iovec; 2.3.1.26 `bfd_get_mtime' ........................ @@ -1570,6 +1591,12 @@ /* Mark flag used by some linker backends for garbage collection. */ unsigned int gc_mark : 1; + /* Section compression status. */ + unsigned int compress_status : 2; + #define COMPRESS_SECTION_NONE 0 + #define COMPRESS_SECTION_DONE 1 + #define DECOMPRESS_SECTION_SIZED 2 + /* The following flags are used by the ELF linker. */ /* Mark sections which have been allocated to segments. */ @@ -1589,20 +1616,12 @@ /* Bits used by various backends. The generic code doesn't touch these fields. */ - /* Nonzero if this section has TLS related relocations. */ - unsigned int has_tls_reloc:1; - - /* Nonzero if this section has a call to __tls_get_addr. */ - unsigned int has_tls_get_addr_call:1; - - /* Nonzero if this section has a gp reloc. */ - unsigned int has_gp_reloc:1; - - /* Nonzero if this section needs the relax finalize pass. */ - unsigned int need_finalize_relax:1; - - /* Whether relocations have been processed. */ - unsigned int reloc_done : 1; + unsigned int sec_flg0:1; + unsigned int sec_flg1:1; + unsigned int sec_flg2:1; + unsigned int sec_flg3:1; + unsigned int sec_flg4:1; + unsigned int sec_flg5:1; /* End of internal packed boolean fields. */ @@ -1634,6 +1653,9 @@ section size calculated on a previous linker relaxation pass. */ bfd_size_type rawsize; + /* The compressed size of the section in octets. */ + bfd_size_type compressed_size; + /* Relaxation table. */ struct relax_table *relax; @@ -1867,17 +1889,17 @@ /* name, id, index, next, prev, flags, user_set_vma, */ \ { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ \ - /* linker_mark, linker_has_input, gc_mark, */ \ - 0, 0, 1, \ + /* linker_mark, linker_has_input, gc_mark, decompress_status, */ \ + 0, 0, 1, 0, \ \ - /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \ - 0, 0, 0, 0, \ + /* segment_mark, sec_info_type, use_rela_p, */ \ + 0, 0, 0, \ \ - /* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, */ \ - 0, 0, 0, \ + /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, */ \ + 0, 0, 0, 0, 0, 0, \ \ - /* reloc_done, vma, lma, size, rawsize, relax, relax_count, */ \ - 0, 0, 0, 0, 0, 0, 0, \ + /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */ \ + 0, 0, 0, 0, 0, 0, 0, \ \ /* output_offset, output_section, alignment_power, */ \ 0, (struct bfd_section *) &SEC, 0, \ @@ -2056,7 +2078,16 @@ more of the attributes requested. For example, a .bss section in `a.out' may not have the `SEC_HAS_CONTENTS' field set. -2.6.5.11 `bfd_map_over_sections' +2.6.5.11 `bfd_rename_section' +............................. + +*Synopsis* + void bfd_rename_section + (bfd *abfd, asection *sec, const char *newname); + *Description* +Rename section SEC in ABFD to NEWNAME. + +2.6.5.12 `bfd_map_over_sections' ................................ *Synopsis* @@ -2077,7 +2108,7 @@ for (p = abfd->sections; p != NULL; p = p->next) func (abfd, p, ...) -2.6.5.12 `bfd_sections_find_if' +2.6.5.13 `bfd_sections_find_if' ............................... *Synopsis* @@ -2094,7 +2125,7 @@ It returns the first section for which OPERATION returns true. -2.6.5.13 `bfd_set_section_size' +2.6.5.14 `bfd_set_section_size' ............................... *Synopsis* @@ -2108,7 +2139,7 @@ * `bfd_error_invalid_operation' - Writing has started to the BFD, so setting the size is invalid. -2.6.5.14 `bfd_set_section_contents' +2.6.5.15 `bfd_set_section_contents' ................................... *Synopsis* @@ -2129,7 +2160,7 @@ This routine is front end to the back end function `_bfd_set_section_contents'. -2.6.5.15 `bfd_get_section_contents' +2.6.5.16 `bfd_get_section_contents' ................................... *Synopsis* @@ -2146,7 +2177,7 @@ flag set, then the LOCATION is filled with zeroes. If no errors occur, `TRUE' is returned, else `FALSE'. -2.6.5.16 `bfd_malloc_and_get_section' +2.6.5.17 `bfd_malloc_and_get_section' ..................................... *Synopsis* @@ -2156,7 +2187,7 @@ Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by this function. -2.6.5.17 `bfd_copy_private_section_data' +2.6.5.18 `bfd_copy_private_section_data' ........................................ *Synopsis* @@ -2174,7 +2205,7 @@ BFD_SEND (obfd, _bfd_copy_private_section_data, \ (ibfd, isection, obfd, osection)) -2.6.5.18 `bfd_generic_is_group_section' +2.6.5.19 `bfd_generic_is_group_section' ....................................... *Synopsis* @@ -2182,7 +2213,7 @@ *Description* Returns TRUE if SEC is a member of a group. -2.6.5.19 `bfd_generic_discard_group' +2.6.5.20 `bfd_generic_discard_group' .................................... *Synopsis* @@ -3070,10 +3101,7 @@ when doing overflow checking. */ unsigned int bitsize; - /* Notes that the relocation is relative to the location in the - data section of the addend. The relocation function will - subtract from the relocation value the address of the location - being relocated. */ + /* The relocation is relative to the field being relocated. */ bfd_boolean pc_relative; /* The bit position of the reloc value in the destination. @@ -3405,6 +3433,8 @@ -- : BFD_RELOC_SPARC_GOTDATA_OP_HIX22 -- : BFD_RELOC_SPARC_GOTDATA_OP_LOX10 -- : BFD_RELOC_SPARC_GOTDATA_OP + -- : BFD_RELOC_SPARC_JMP_IREL + -- : BFD_RELOC_SPARC_IRELATIVE SPARC ELF relocations. There is probably some overlap with other relocation types already defined. @@ -4020,6 +4050,7 @@ -- : BFD_RELOC_ARM_RELATIVE -- : BFD_RELOC_ARM_GOTOFF -- : BFD_RELOC_ARM_GOTPC + -- : BFD_RELOC_ARM_GOT_PREL Relocations for setting up GOTs and PLTs for shared libraries. -- : BFD_RELOC_ARM_TLS_GD32 @@ -4030,6 +4061,12 @@ -- : BFD_RELOC_ARM_TLS_TPOFF32 -- : BFD_RELOC_ARM_TLS_IE32 -- : BFD_RELOC_ARM_TLS_LE32 + -- : BFD_RELOC_ARM_TLS_GOTDESC + -- : BFD_RELOC_ARM_TLS_CALL + -- : BFD_RELOC_ARM_THM_TLS_CALL + -- : BFD_RELOC_ARM_TLS_DESCSEQ + -- : BFD_RELOC_ARM_THM_TLS_DESCSEQ + -- : BFD_RELOC_ARM_TLS_DESC ARM thread-local storage relocations. -- : BFD_RELOC_ARM_ALU_PC_G0_NC @@ -4065,6 +4102,9 @@ -- : BFD_RELOC_ARM_V4BX Annotation of BX instructions. + -- : BFD_RELOC_ARM_IRELATIVE + ARM support for STT_GNU_IFUNC. + -- : BFD_RELOC_ARM_IMMEDIATE -- : BFD_RELOC_ARM_ADRL_IMMEDIATE -- : BFD_RELOC_ARM_T32_IMMEDIATE @@ -4073,6 +4113,7 @@ -- : BFD_RELOC_ARM_T32_ADD_PC12 -- : BFD_RELOC_ARM_SHIFT_IMM -- : BFD_RELOC_ARM_SMC + -- : BFD_RELOC_ARM_HVC -- : BFD_RELOC_ARM_SWI -- : BFD_RELOC_ARM_MULTI -- : BFD_RELOC_ARM_CP_OFF_IMM @@ -4183,6 +4224,13 @@ -- : BFD_RELOC_SH_TLS_DTPMOD32 -- : BFD_RELOC_SH_TLS_DTPOFF32 -- : BFD_RELOC_SH_TLS_TPOFF32 + -- : BFD_RELOC_SH_GOT20 + -- : BFD_RELOC_SH_GOTOFF20 + -- : BFD_RELOC_SH_GOTFUNCDESC + -- : BFD_RELOC_SH_GOTFUNCDESC20 + -- : BFD_RELOC_SH_GOTOFFFUNCDESC + -- : BFD_RELOC_SH_GOTOFFFUNCDESC20 + -- : BFD_RELOC_SH_FUNCDESC Renesas / SuperH SH relocs. Not all of these appear in object files. @@ -4501,6 +4549,72 @@ This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu instructions. + -- : BFD_RELOC_V850_16_PCREL + This is a 16-bit reloc. + + -- : BFD_RELOC_V850_17_PCREL + This is a 17-bit reloc. + + -- : BFD_RELOC_V850_23 + This is a 23-bit reloc. + + -- : BFD_RELOC_V850_32_PCREL + This is a 32-bit reloc. + + -- : BFD_RELOC_V850_32_ABS + This is a 32-bit reloc. + + -- : BFD_RELOC_V850_16_SPLIT_OFFSET + This is a 16-bit reloc. + + -- : BFD_RELOC_V850_16_S1 + This is a 16-bit reloc. + + -- : BFD_RELOC_V850_LO16_S1 + Low 16 bits. 16 bit shifted by 1. + + -- : BFD_RELOC_V850_CALLT_15_16_OFFSET + This is a 16 bit offset from the call table base pointer. + + -- : BFD_RELOC_V850_32_GOTPCREL + DSO relocations. + + -- : BFD_RELOC_V850_16_GOT + DSO relocations. + + -- : BFD_RELOC_V850_32_GOT + DSO relocations. + + -- : BFD_RELOC_V850_22_PLT_PCREL + DSO relocations. + + -- : BFD_RELOC_V850_32_PLT_PCREL + DSO relocations. + + -- : BFD_RELOC_V850_COPY + DSO relocations. + + -- : BFD_RELOC_V850_GLOB_DAT + DSO relocations. + + -- : BFD_RELOC_V850_JMP_SLOT + DSO relocations. + + -- : BFD_RELOC_V850_RELATIVE + DSO relocations. + + -- : BFD_RELOC_V850_16_GOTOFF + DSO relocations. + + -- : BFD_RELOC_V850_32_GOTOFF + DSO relocations. + + -- : BFD_RELOC_V850_CODE + start code. + + -- : BFD_RELOC_V850_DATA + start data in text. + -- : BFD_RELOC_MN10300_32_PCREL This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the instruction. @@ -4536,6 +4650,38 @@ This is a reloc for the tms320c54x, where the most significant 7 bits of a 23-bit extended address are placed into the opcode. + -- : BFD_RELOC_C6000_PCR_S21 + -- : BFD_RELOC_C6000_PCR_S12 + -- : BFD_RELOC_C6000_PCR_S10 + -- : BFD_RELOC_C6000_PCR_S7 + -- : BFD_RELOC_C6000_ABS_S16 + -- : BFD_RELOC_C6000_ABS_L16 + -- : BFD_RELOC_C6000_ABS_H16 + -- : BFD_RELOC_C6000_SBR_U15_B + -- : BFD_RELOC_C6000_SBR_U15_H + -- : BFD_RELOC_C6000_SBR_U15_W + -- : BFD_RELOC_C6000_SBR_S16 + -- : BFD_RELOC_C6000_SBR_L16_B + -- : BFD_RELOC_C6000_SBR_L16_H + -- : BFD_RELOC_C6000_SBR_L16_W + -- : BFD_RELOC_C6000_SBR_H16_B + -- : BFD_RELOC_C6000_SBR_H16_H + -- : BFD_RELOC_C6000_SBR_H16_W + -- : BFD_RELOC_C6000_SBR_GOT_U15_W + -- : BFD_RELOC_C6000_SBR_GOT_L16_W + -- : BFD_RELOC_C6000_SBR_GOT_H16_W + -- : BFD_RELOC_C6000_DSBT_INDEX + -- : BFD_RELOC_C6000_PREL31 + -- : BFD_RELOC_C6000_COPY + -- : BFD_RELOC_C6000_JUMP_SLOT + -- : BFD_RELOC_C6000_EHTYPE + -- : BFD_RELOC_C6000_PCR_H16 + -- : BFD_RELOC_C6000_PCR_L16 + -- : BFD_RELOC_C6000_ALIGN + -- : BFD_RELOC_C6000_FPHEAD + -- : BFD_RELOC_C6000_NOCMP + TMS320C6000 relocations. + -- : BFD_RELOC_FR30_48 This is a 48 bit reloc for the FR30 that stores 32 bits. @@ -4750,6 +4896,35 @@ This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw instructions + -- : BFD_RELOC_RX_NEG8 + -- : BFD_RELOC_RX_NEG16 + -- : BFD_RELOC_RX_NEG24 + -- : BFD_RELOC_RX_NEG32 + -- : BFD_RELOC_RX_16_OP + -- : BFD_RELOC_RX_24_OP + -- : BFD_RELOC_RX_32_OP + -- : BFD_RELOC_RX_8U + -- : BFD_RELOC_RX_16U + -- : BFD_RELOC_RX_24U + -- : BFD_RELOC_RX_DIR3U_PCREL + -- : BFD_RELOC_RX_DIFF + -- : BFD_RELOC_RX_GPRELB + -- : BFD_RELOC_RX_GPRELW + -- : BFD_RELOC_RX_GPRELL + -- : BFD_RELOC_RX_SYM + -- : BFD_RELOC_RX_OP_SUBTRACT + -- : BFD_RELOC_RX_OP_NEG + -- : BFD_RELOC_RX_ABS8 + -- : BFD_RELOC_RX_ABS16 + -- : BFD_RELOC_RX_ABS16_REV + -- : BFD_RELOC_RX_ABS32 + -- : BFD_RELOC_RX_ABS32_REV + -- : BFD_RELOC_RX_ABS16U + -- : BFD_RELOC_RX_ABS16UW + -- : BFD_RELOC_RX_ABS16UL + -- : BFD_RELOC_RX_RELAX + Renesas RX Relocations. + -- : BFD_RELOC_390_12 Direct 12 bit. @@ -5431,7 +5606,34 @@ BFD_RELOC_MACH_O_PAIR. -- : BFD_RELOC_MACH_O_PAIR - Mach-O generic relocations. + Pair of relocation. Contains the first symbol. + + -- : BFD_RELOC_MACH_O_X86_64_BRANCH32 + -- : BFD_RELOC_MACH_O_X86_64_BRANCH8 + PCREL relocations. They are marked as branch to create PLT entry + if required. + + -- : BFD_RELOC_MACH_O_X86_64_GOT + Used when referencing a GOT entry. + + -- : BFD_RELOC_MACH_O_X86_64_GOT_LOAD + Used when loading a GOT entry with movq. It is specially marked + so that the linker could optimize the movq to a leaq if possible. + + -- : BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32 + Symbol will be substracted. Must be followed by a BFD_RELOC_64. + + -- : BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64 + Symbol will be substracted. Must be followed by a BFD_RELOC_64. + + -- : BFD_RELOC_MACH_O_X86_64_PCREL32_1 + Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. + + -- : BFD_RELOC_MACH_O_X86_64_PCREL32_2 + Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. + + -- : BFD_RELOC_MACH_O_X86_64_PCREL32_4 + Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. -- : BFD_RELOC_MICROBLAZE_32_LO This is a 32 bit reloc for the microblaze that stores the low 16 @@ -5596,7 +5798,16 @@ Returns the signal number which caused the core dump which generated the file the BFD ABFD is attached to. -2.11.1.3 `core_file_matches_executable_p' +2.11.1.3 `bfd_core_file_pid' +............................ + +*Synopsis* + int bfd_core_file_pid (bfd *abfd); + *Description* +Returns the PID of the process the core dump the BFD ABFD is attached +to was generated from. + +2.11.1.4 `core_file_matches_executable_p' ......................................... *Synopsis* @@ -5606,7 +5817,7 @@ Return `TRUE' if the core file attached to CORE_BFD was generated by a run of the executable file attached to EXEC_BFD, `FALSE' otherwise. -2.11.1.4 `generic_core_file_matches_executable_p' +2.11.1.5 `generic_core_file_matches_executable_p' ................................................. *Synopsis* @@ -5891,11 +6102,13 @@ #define BFD_JUMP_TABLE_CORE(NAME) \ NAME##_core_file_failing_command, \ NAME##_core_file_failing_signal, \ - NAME##_core_file_matches_executable_p + NAME##_core_file_matches_executable_p, \ + NAME##_core_file_pid char * (*_core_file_failing_command) (bfd *); int (*_core_file_failing_signal) (bfd *); bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *); + int (*_core_file_pid) (bfd *); /* Archive entry points. */ #define BFD_JUMP_TABLE_ARCHIVE(NAME) \ @@ -5905,6 +6118,7 @@ NAME##_truncate_arname, \ NAME##_write_armap, \ NAME##_read_ar_hdr, \ + NAME##_write_ar_hdr, \ NAME##_openr_next_archived_file, \ NAME##_get_elt_at_index, \ NAME##_generic_stat_arch_elt, \ @@ -5918,6 +6132,7 @@ bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *, unsigned int, int); void * (*_bfd_read_ar_hdr_fn) (bfd *); + bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *); bfd * (*openr_next_archived_file) (bfd *, bfd *); #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); @@ -6013,6 +6228,7 @@ NAME##_bfd_link_hash_table_free, \ NAME##_bfd_link_add_symbols, \ NAME##_bfd_link_just_syms, \ + NAME##_bfd_copy_link_hash_symbol_type, \ NAME##_bfd_final_link, \ NAME##_bfd_link_split_section, \ NAME##_bfd_gc_sections, \ @@ -6044,6 +6260,12 @@ /* Indicate that we are only retrieving symbol values from this section. */ void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); + /* Copy the symbol type of a linker hash table entry. */ + #define bfd_copy_link_hash_symbol_type(b, t, f) \ + BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f)) + void (*_bfd_copy_link_hash_symbol_type) + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); + /* Do a link based on the link_order structures attached to each section of the BFD. */ bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); @@ -6134,7 +6356,33 @@ causes `bfd_check_format' to loop over all the targets to find the one that matches the file being read. -2.12.1.3 `bfd_target_list' +2.12.1.3 `bfd_get_target_info' +.............................. + +*Synopsis* + const bfd_target *bfd_get_target_info (const char *target_name, + bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, + const char **def_target_arch); + *Description* +Return a pointer to the transfer vector for the object target named +TARGET_NAME. If TARGET_NAME is `NULL', choose the one in the +environment variable `GNUTARGET'; if that is null or not defined, then +choose the first entry in the target list. Passing in the string +"default" or setting the environment variable to "default" will cause +the first entry in the target list to be returned, and +"target_defaulted" will be set in the BFD if ABFD isn't `NULL'. This +causes `bfd_check_format' to loop over all the targets to find the one +that matches the file being read. If IS_BIGENDIAN is not `NULL', then +set this value to target's endian mode. True for big-endian, FALSE for +little-endian or for invalid target. If UNDERSCORING is not `NULL', +then set this value to target's underscoring mode. Zero for +none-underscoring, -1 for invalid target, else the value of target +vector's symbol underscoring. If DEF_TARGET_ARCH is not `NULL', then +set it to the architecture string specified by the target_name. + +2.12.1.4 `bfd_target_list' .......................... *Synopsis* @@ -6143,7 +6391,7 @@ Return a freshly malloced NULL-terminated vector of the names of all the valid BFD targets. Do not modify the names. -2.12.1.4 `bfd_seach_for_target' +2.12.1.5 `bfd_seach_for_target' ............................... *Synopsis* @@ -6298,6 +6546,7 @@ #define bfd_mach_mips5 5 #define bfd_mach_mips_loongson_2e 3001 #define bfd_mach_mips_loongson_2f 3002 + #define bfd_mach_mips_loongson_3a 3003 #define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */ #define bfd_mach_mips_octeon 6501 #define bfd_mach_mips_xlr 887682 /* decimal 'XLR' */ @@ -6309,6 +6558,8 @@ #define bfd_mach_i386_i386 1 #define bfd_mach_i386_i8086 2 #define bfd_mach_i386_i386_intel_syntax 3 + #define bfd_mach_x64_32 32 + #define bfd_mach_x64_32_intel_syntax 33 #define bfd_mach_x86_64 64 #define bfd_mach_x86_64_intel_syntax 65 bfd_arch_l1om, /* Intel L1OM */ @@ -6355,6 +6606,8 @@ #define bfd_mach_ppc_7400 7400 #define bfd_mach_ppc_e500 500 #define bfd_mach_ppc_e500mc 5001 + #define bfd_mach_ppc_e500mc64 5005 + #define bfd_mach_ppc_titan 83 bfd_arch_rs6000, /* IBM RS/6000 */ #define bfd_mach_rs6k 6000 #define bfd_mach_rs6k_rs1 6001 @@ -6428,11 +6681,14 @@ #define bfd_mach_tic3x 30 #define bfd_mach_tic4x 40 bfd_arch_tic54x, /* Texas Instruments TMS320C54X */ + bfd_arch_tic6x, /* Texas Instruments TMS320C6X */ bfd_arch_tic80, /* TI TMS320c80 (MVP) */ bfd_arch_v850, /* NEC V850 */ #define bfd_mach_v850 1 #define bfd_mach_v850e 'E' #define bfd_mach_v850e1 '1' + #define bfd_mach_v850e2 0x4532 + #define bfd_mach_v850e2v3 0x45325633 bfd_arch_arc, /* ARC Cores */ #define bfd_mach_arc_5 5 #define bfd_mach_arc_6 6 @@ -6493,6 +6749,13 @@ #define bfd_mach_avr5 5 #define bfd_mach_avr51 51 #define bfd_mach_avr6 6 + #define bfd_mach_avrxmega1 101 + #define bfd_mach_avrxmega2 102 + #define bfd_mach_avrxmega3 103 + #define bfd_mach_avrxmega4 104 + #define bfd_mach_avrxmega5 105 + #define bfd_mach_avrxmega6 106 + #define bfd_mach_avrxmega7 107 bfd_arch_bfin, /* ADI Blackfin */ #define bfd_mach_bfin 1 bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */ @@ -6505,6 +6768,8 @@ #define bfd_mach_cris_v0_v10 255 #define bfd_mach_cris_v32 32 #define bfd_mach_cris_v10_v32 1032 + bfd_arch_rx, /* Renesas RX. */ + #define bfd_mach_rx 0x75 bfd_arch_s390, /* IBM s390 */ #define bfd_mach_s390_31 31 #define bfd_mach_s390_64 64 @@ -6537,9 +6802,6 @@ #define bfd_mach_xc16xs 3 bfd_arch_xtensa, /* Tensilica's Xtensa cores. */ #define bfd_mach_xtensa 1 - bfd_arch_maxq, /* Dallas MAXQ 10/20 */ - #define bfd_mach_maxq10 10 - #define bfd_mach_maxq20 20 bfd_arch_z80, #define bfd_mach_z80strict 1 /* No undocumented opcodes. */ #define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */ @@ -6757,6 +7019,9 @@  File: bfd.info, Node: Opening and Closing, Next: Internal, Prev: Architectures, Up: BFD front end + /* Set to N to open the next N BFDs using an alternate id space. */ + extern unsigned int bfd_use_reserved_id; + 2.14 Opening and closing BFDs ============================= @@ -6835,43 +7100,44 @@ *Synopsis* bfd *bfd_openr_iovec (const char *filename, const char *target, - void *(*open) (struct bfd *nbfd, + void *(*open_func) (struct bfd *nbfd, void *open_closure), void *open_closure, - file_ptr (*pread) (struct bfd *nbfd, + file_ptr (*pread_func) (struct bfd *nbfd, void *stream, void *buf, file_ptr nbytes, file_ptr offset), - int (*close) (struct bfd *nbfd, + int (*close_func) (struct bfd *nbfd, void *stream), - int (*stat) (struct bfd *abfd, + int (*stat_func) (struct bfd *abfd, void *stream, struct stat *sb)); *Description* Create and return a BFD backed by a read-only STREAM. The STREAM is -created using OPEN, accessed using PREAD and destroyed using CLOSE. +created using OPEN_FUNC, accessed using PREAD_FUNC and destroyed using +CLOSE_FUNC. Calls `bfd_find_target', so TARGET is interpreted as by that function. - Calls OPEN (which can call `bfd_zalloc' and `bfd_get_filename') to -obtain the read-only stream backing the BFD. OPEN either succeeds -returning the non-`NULL' STREAM, or fails returning `NULL' (setting -`bfd_error'). - - Calls PREAD to request NBYTES of data from STREAM starting at OFFSET -(e.g., via a call to `bfd_read'). PREAD either succeeds returning the -number of bytes read (which can be less than NBYTES when end-of-file), -or fails returning -1 (setting `bfd_error'). + Calls OPEN_FUNC (which can call `bfd_zalloc' and `bfd_get_filename') +to obtain the read-only stream backing the BFD. OPEN_FUNC either +succeeds returning the non-`NULL' STREAM, or fails returning `NULL' +(setting `bfd_error'). + + Calls PREAD_FUNC to request NBYTES of data from STREAM starting at +OFFSET (e.g., via a call to `bfd_read'). PREAD_FUNC either succeeds +returning the number of bytes read (which can be less than NBYTES when +end-of-file), or fails returning -1 (setting `bfd_error'). - Calls CLOSE when the BFD is later closed using `bfd_close'. CLOSE -either succeeds returning 0, or fails returning -1 (setting + Calls CLOSE_FUNC when the BFD is later closed using `bfd_close'. +CLOSE_FUNC either succeeds returning 0, or fails returning -1 (setting `bfd_error'). - Calls STAT to fill in a stat structure for bfd_stat, bfd_get_size, -and bfd_get_mtime calls. STAT returns 0 on success, or returns -1 on -failure (setting `bfd_error'). + Calls STAT_FUNC to fill in a stat structure for bfd_stat, +bfd_get_size, and bfd_get_mtime calls. STAT_FUNC returns 0 on success, +or returns -1 on failure (setting `bfd_error'). If `bfd_openr_iovec' returns `NULL' then an error has occurred. Possible errors are `bfd_error_no_memory', `bfd_error_invalid_target' @@ -6933,8 +7199,8 @@ bfd *bfd_create (const char *filename, bfd *templ); *Description* Create a new BFD in the manner of `bfd_openw', but without opening a -file. The new BFD takes the target from the target used by TEMPLATE. -The format is always set to `bfd_object'. +file. The new BFD takes the target from the target used by TEMPL. The +format is always set to `bfd_object'. 2.14.1.10 `bfd_make_writable' ............................. @@ -7512,6 +7778,9 @@ elements of the archive should be included in the link. For each such element it must call the `add_archive_element' linker callback, and it must add the symbols from the object file to the linker hash table. +(The callback may in fact indicate that a replacement BFD should be +used, in which case the symbols from that BFD should be added to the +linker hash table instead.) In most cases the work of looking through the symbols in the archive should be done by the `_bfd_generic_link_add_archive_symbols' function. @@ -7526,9 +7795,13 @@ read the symbols of the archive element and decide whether the archive element should be included in the link. If the element is to be included, the `add_archive_element' linker callback routine must be -called with the element as an argument, and the elements symbols must +called with the element as an argument, and the element's symbols must be added to the linker hash table just as though the element had itself -been passed to the `_bfd_link_add_symbols' function. +been passed to the `_bfd_link_add_symbols' function. The +`add_archive_element' callback has the option to indicate that it would +like to replace the element archive with a substitute BFD, in which +case it is the symbols of that substitute BFD that must be added to the +linker hash table instead. When the a.out `_bfd_link_add_symbols' function receives an archive, it calls `_bfd_generic_link_add_archive_symbols' passing @@ -7538,7 +7811,9 @@ it provides a real, non-common, definition for a previously undefined or common symbol) it calls the `add_archive_element' callback and then `aout_link_check_archive_element' calls `aout_link_add_symbols' to -actually add the symbols to the linker hash table. +actually add the symbols to the linker hash table - possibly those of a +substitute BFD, if the `add_archive_element' callback avails itself of +that option. The ECOFF back end is unusual in that it does not normally call `_bfd_generic_link_add_archive_symbols', because ECOFF archives already @@ -9697,7 +9972,7 @@ * _bfd_final_link_relocate: Relocating the section contents. (line 22) * _bfd_generic_link_add_archive_symbols: Adding symbols from an archive. - (line 12) + (line 15) * _bfd_generic_link_add_one_symbol: Adding symbols from an object file. (line 19) * _bfd_generic_make_empty_symbol: symbol handling functions. @@ -9717,119 +9992,121 @@ * aout_SIZE_some_aout_object_p: aout. (line 125) * aout_SIZE_swap_exec_header_in: aout. (line 101) * aout_SIZE_swap_exec_header_out: aout. (line 113) -* arelent_chain: typedef arelent. (line 339) +* arelent_chain: typedef arelent. (line 336) * BFD: Overview. (line 6) * BFD canonical format: Canonical format. (line 11) * bfd_alloc: Opening and Closing. - (line 210) + (line 214) * bfd_alloc2: Opening and Closing. - (line 219) -* bfd_alt_mach_code: BFD front end. (line 689) -* bfd_arch_bits_per_address: Architectures. (line 517) -* bfd_arch_bits_per_byte: Architectures. (line 509) -* bfd_arch_get_compatible: Architectures. (line 452) -* bfd_arch_list: Architectures. (line 443) -* bfd_arch_mach_octets_per_byte: Architectures. (line 586) -* BFD_ARELOC_BFIN_ADD: howto manager. (line 1005) -* BFD_ARELOC_BFIN_ADDR: howto manager. (line 1056) -* BFD_ARELOC_BFIN_AND: howto manager. (line 1026) -* BFD_ARELOC_BFIN_COMP: howto manager. (line 1047) -* BFD_ARELOC_BFIN_CONST: howto manager. (line 1002) -* BFD_ARELOC_BFIN_DIV: howto manager. (line 1014) -* BFD_ARELOC_BFIN_HWPAGE: howto manager. (line 1053) -* BFD_ARELOC_BFIN_LAND: howto manager. (line 1035) -* BFD_ARELOC_BFIN_LEN: howto manager. (line 1041) -* BFD_ARELOC_BFIN_LOR: howto manager. (line 1038) -* BFD_ARELOC_BFIN_LSHIFT: howto manager. (line 1020) -* BFD_ARELOC_BFIN_MOD: howto manager. (line 1017) -* BFD_ARELOC_BFIN_MULT: howto manager. (line 1011) -* BFD_ARELOC_BFIN_NEG: howto manager. (line 1044) -* BFD_ARELOC_BFIN_OR: howto manager. (line 1029) -* BFD_ARELOC_BFIN_PAGE: howto manager. (line 1050) -* BFD_ARELOC_BFIN_PUSH: howto manager. (line 999) -* BFD_ARELOC_BFIN_RSHIFT: howto manager. (line 1023) -* BFD_ARELOC_BFIN_SUB: howto manager. (line 1008) -* BFD_ARELOC_BFIN_XOR: howto manager. (line 1032) + (line 223) +* bfd_alt_mach_code: BFD front end. (line 708) +* bfd_arch_bits_per_address: Architectures. (line 531) +* bfd_arch_bits_per_byte: Architectures. (line 523) +* bfd_arch_get_compatible: Architectures. (line 466) +* bfd_arch_list: Architectures. (line 457) +* bfd_arch_mach_octets_per_byte: Architectures. (line 600) +* BFD_ARELOC_BFIN_ADD: howto manager. (line 1025) +* BFD_ARELOC_BFIN_ADDR: howto manager. (line 1076) +* BFD_ARELOC_BFIN_AND: howto manager. (line 1046) +* BFD_ARELOC_BFIN_COMP: howto manager. (line 1067) +* BFD_ARELOC_BFIN_CONST: howto manager. (line 1022) +* BFD_ARELOC_BFIN_DIV: howto manager. (line 1034) +* BFD_ARELOC_BFIN_HWPAGE: howto manager. (line 1073) +* BFD_ARELOC_BFIN_LAND: howto manager. (line 1055) +* BFD_ARELOC_BFIN_LEN: howto manager. (line 1061) +* BFD_ARELOC_BFIN_LOR: howto manager. (line 1058) +* BFD_ARELOC_BFIN_LSHIFT: howto manager. (line 1040) +* BFD_ARELOC_BFIN_MOD: howto manager. (line 1037) +* BFD_ARELOC_BFIN_MULT: howto manager. (line 1031) +* BFD_ARELOC_BFIN_NEG: howto manager. (line 1064) +* BFD_ARELOC_BFIN_OR: howto manager. (line 1049) +* BFD_ARELOC_BFIN_PAGE: howto manager. (line 1070) +* BFD_ARELOC_BFIN_PUSH: howto manager. (line 1019) +* BFD_ARELOC_BFIN_RSHIFT: howto manager. (line 1043) +* BFD_ARELOC_BFIN_SUB: howto manager. (line 1028) +* BFD_ARELOC_BFIN_XOR: howto manager. (line 1052) * bfd_cache_close: File Caching. (line 26) * bfd_cache_close_all: File Caching. (line 39) * bfd_cache_init: File Caching. (line 18) * bfd_calc_gnu_debuglink_crc32: Opening and Closing. - (line 246) -* bfd_canonicalize_reloc: BFD front end. (line 408) + (line 250) +* bfd_canonicalize_reloc: BFD front end. (line 427) * bfd_canonicalize_symtab: symbol handling functions. (line 50) * bfd_check_format: Formats. (line 21) * bfd_check_format_matches: Formats. (line 52) -* bfd_check_overflow: typedef arelent. (line 351) +* bfd_check_overflow: typedef arelent. (line 348) * bfd_close: Opening and Closing. - (line 135) + (line 139) * bfd_close_all_done: Opening and Closing. - (line 153) + (line 157) * bfd_coff_backend_data: coff. (line 304) -* bfd_copy_private_bfd_data: BFD front end. (line 547) -* bfd_copy_private_header_data: BFD front end. (line 529) -* bfd_copy_private_section_data: section prototypes. (line 255) +* bfd_copy_private_bfd_data: BFD front end. (line 566) +* bfd_copy_private_header_data: BFD front end. (line 548) +* bfd_copy_private_section_data: section prototypes. (line 264) * bfd_copy_private_symbol_data: symbol handling functions. (line 140) * bfd_core_file_failing_command: Core Files. (line 12) * bfd_core_file_failing_signal: Core Files. (line 21) +* bfd_core_file_pid: Core Files. (line 30) * bfd_create: Opening and Closing. - (line 172) + (line 176) * bfd_create_gnu_debuglink_section: Opening and Closing. - (line 312) + (line 316) * bfd_decode_symclass: symbol handling functions. (line 111) -* bfd_default_arch_struct: Architectures. (line 464) -* bfd_default_compatible: Architectures. (line 526) -* bfd_default_reloc_type_lookup: howto manager. (line 2247) -* bfd_default_scan: Architectures. (line 535) -* bfd_default_set_arch_mach: Architectures. (line 482) -* bfd_demangle: BFD front end. (line 787) -* bfd_emul_get_commonpagesize: BFD front end. (line 767) -* bfd_emul_get_maxpagesize: BFD front end. (line 747) -* bfd_emul_set_commonpagesize: BFD front end. (line 778) -* bfd_emul_set_maxpagesize: BFD front end. (line 758) -* bfd_errmsg: BFD front end. (line 333) +* bfd_default_arch_struct: Architectures. (line 478) +* bfd_default_compatible: Architectures. (line 540) +* bfd_default_reloc_type_lookup: howto manager. (line 2421) +* bfd_default_scan: Architectures. (line 549) +* bfd_default_set_arch_mach: Architectures. (line 496) +* bfd_demangle: BFD front end. (line 806) +* bfd_emul_get_commonpagesize: BFD front end. (line 786) +* bfd_emul_get_maxpagesize: BFD front end. (line 766) +* bfd_emul_set_commonpagesize: BFD front end. (line 797) +* bfd_emul_set_maxpagesize: BFD front end. (line 777) +* bfd_errmsg: BFD front end. (line 352) * bfd_fdopenr: Opening and Closing. - (line 46) + (line 49) * bfd_fill_in_gnu_debuglink_section: Opening and Closing. - (line 326) -* bfd_find_target: bfd_target. (line 445) + (line 330) +* bfd_find_target: bfd_target. (line 456) * bfd_find_version_for_sym: Writing the symbol table. (line 80) * bfd_follow_gnu_debuglink: Opening and Closing. - (line 291) + (line 295) * bfd_fopen: Opening and Closing. - (line 9) + (line 12) * bfd_format_string: Formats. (line 79) * bfd_generic_define_common_symbol: Writing the symbol table. (line 67) -* bfd_generic_discard_group: section prototypes. (line 281) -* bfd_generic_gc_sections: howto manager. (line 2278) -* bfd_generic_get_relocated_section_contents: howto manager. (line 2298) -* bfd_generic_is_group_section: section prototypes. (line 273) -* bfd_generic_merge_sections: howto manager. (line 2288) -* bfd_generic_relax_section: howto manager. (line 2265) -* bfd_get_arch: Architectures. (line 493) -* bfd_get_arch_info: Architectures. (line 545) -* bfd_get_arch_size: BFD front end. (line 452) -* bfd_get_error: BFD front end. (line 314) -* bfd_get_error_handler: BFD front end. (line 384) -* bfd_get_gp_size: BFD front end. (line 493) -* bfd_get_mach: Architectures. (line 501) -* bfd_get_mtime: BFD front end. (line 831) +* bfd_generic_discard_group: section prototypes. (line 290) +* bfd_generic_gc_sections: howto manager. (line 2452) +* bfd_generic_get_relocated_section_contents: howto manager. (line 2472) +* bfd_generic_is_group_section: section prototypes. (line 282) +* bfd_generic_merge_sections: howto manager. (line 2462) +* bfd_generic_relax_section: howto manager. (line 2439) +* bfd_get_arch: Architectures. (line 507) +* bfd_get_arch_info: Architectures. (line 559) +* bfd_get_arch_size: BFD front end. (line 471) +* bfd_get_error: BFD front end. (line 333) +* bfd_get_error_handler: BFD front end. (line 403) +* bfd_get_gp_size: BFD front end. (line 512) +* bfd_get_mach: Architectures. (line 515) +* bfd_get_mtime: BFD front end. (line 851) * bfd_get_next_mapent: Archives. (line 52) -* bfd_get_reloc_code_name: howto manager. (line 2256) -* bfd_get_reloc_size: typedef arelent. (line 330) -* bfd_get_reloc_upper_bound: BFD front end. (line 398) +* bfd_get_reloc_code_name: howto manager. (line 2430) +* bfd_get_reloc_size: typedef arelent. (line 327) +* bfd_get_reloc_upper_bound: BFD front end. (line 417) * bfd_get_section_by_name: section prototypes. (line 17) * bfd_get_section_by_name_if: section prototypes. (line 31) -* bfd_get_section_contents: section prototypes. (line 228) -* bfd_get_sign_extend_vma: BFD front end. (line 465) +* bfd_get_section_contents: section prototypes. (line 237) +* bfd_get_sign_extend_vma: BFD front end. (line 484) * bfd_get_size <1>: Internal. (line 25) -* bfd_get_size: BFD front end. (line 840) +* bfd_get_size: BFD front end. (line 860) * bfd_get_symtab_upper_bound: symbol handling functions. (line 6) +* bfd_get_target_info: bfd_target. (line 472) * bfd_get_unique_section_name: section prototypes. (line 50) * bfd_h_put_size: Internal. (line 97) * bfd_hash_allocate: Creating and Freeing a Hash Table. @@ -9849,7 +10126,7 @@ * bfd_hash_traverse: Traversing a Hash Table. (line 6) * bfd_init: Initialization. (line 11) -* bfd_install_relocation: typedef arelent. (line 392) +* bfd_install_relocation: typedef arelent. (line 389) * bfd_is_local_label: symbol handling functions. (line 17) * bfd_is_local_label_name: symbol handling functions. @@ -9861,44 +10138,44 @@ * bfd_link_split_section: Writing the symbol table. (line 44) * bfd_log2: Internal. (line 164) -* bfd_lookup_arch: Architectures. (line 553) +* bfd_lookup_arch: Architectures. (line 567) * bfd_make_debug_symbol: symbol handling functions. (line 102) * bfd_make_empty_symbol: symbol handling functions. (line 78) * bfd_make_readable: Opening and Closing. - (line 196) + (line 200) * bfd_make_section: section prototypes. (line 129) * bfd_make_section_anyway: section prototypes. (line 100) * bfd_make_section_anyway_with_flags: section prototypes. (line 82) * bfd_make_section_old_way: section prototypes. (line 62) * bfd_make_section_with_flags: section prototypes. (line 116) * bfd_make_writable: Opening and Closing. - (line 182) -* bfd_malloc_and_get_section: section prototypes. (line 245) -* bfd_map_over_sections: section prototypes. (line 155) -* bfd_merge_private_bfd_data: BFD front end. (line 563) -* bfd_mmap: BFD front end. (line 869) -* bfd_octets_per_byte: Architectures. (line 576) + (line 186) +* bfd_malloc_and_get_section: section prototypes. (line 254) +* bfd_map_over_sections: section prototypes. (line 164) +* bfd_merge_private_bfd_data: BFD front end. (line 582) +* bfd_mmap: BFD front end. (line 889) +* bfd_octets_per_byte: Architectures. (line 590) * bfd_open_file: File Caching. (line 52) * bfd_openr: Opening and Closing. - (line 30) + (line 33) * bfd_openr_iovec: Opening and Closing. - (line 76) + (line 79) * bfd_openr_next_archived_file: Archives. (line 78) * bfd_openstreamr: Opening and Closing. - (line 67) + (line 70) * bfd_openw: Opening and Closing. - (line 123) -* bfd_perform_relocation: typedef arelent. (line 367) -* bfd_perror: BFD front end. (line 342) -* bfd_preserve_finish: BFD front end. (line 737) -* bfd_preserve_restore: BFD front end. (line 727) -* bfd_preserve_save: BFD front end. (line 711) + (line 127) +* bfd_perform_relocation: typedef arelent. (line 364) +* bfd_perror: BFD front end. (line 361) +* bfd_preserve_finish: BFD front end. (line 756) +* bfd_preserve_restore: BFD front end. (line 746) +* bfd_preserve_save: BFD front end. (line 730) * bfd_print_symbol_vandf: symbol handling functions. (line 70) -* bfd_printable_arch_mach: Architectures. (line 564) -* bfd_printable_name: Architectures. (line 424) +* bfd_printable_arch_mach: Architectures. (line 578) +* bfd_printable_name: Architectures. (line 438) * bfd_put_size: Internal. (line 22) * BFD_RELOC_12_PCREL: howto manager. (line 39) * BFD_RELOC_14: howto manager. (line 31) @@ -9910,46 +10187,46 @@ * BFD_RELOC_16_PCREL_S2: howto manager. (line 107) * BFD_RELOC_16_PLT_PCREL: howto manager. (line 63) * BFD_RELOC_16_PLTOFF: howto manager. (line 67) -* BFD_RELOC_16C_ABS20: howto manager. (line 1838) -* BFD_RELOC_16C_ABS20_C: howto manager. (line 1839) -* BFD_RELOC_16C_ABS24: howto manager. (line 1840) -* BFD_RELOC_16C_ABS24_C: howto manager. (line 1841) -* BFD_RELOC_16C_DISP04: howto manager. (line 1818) -* BFD_RELOC_16C_DISP04_C: howto manager. (line 1819) -* BFD_RELOC_16C_DISP08: howto manager. (line 1820) -* BFD_RELOC_16C_DISP08_C: howto manager. (line 1821) -* BFD_RELOC_16C_DISP16: howto manager. (line 1822) -* BFD_RELOC_16C_DISP16_C: howto manager. (line 1823) -* BFD_RELOC_16C_DISP24: howto manager. (line 1824) -* BFD_RELOC_16C_DISP24_C: howto manager. (line 1825) -* BFD_RELOC_16C_DISP24a: howto manager. (line 1826) -* BFD_RELOC_16C_DISP24a_C: howto manager. (line 1827) -* BFD_RELOC_16C_IMM04: howto manager. (line 1842) -* BFD_RELOC_16C_IMM04_C: howto manager. (line 1843) -* BFD_RELOC_16C_IMM16: howto manager. (line 1844) -* BFD_RELOC_16C_IMM16_C: howto manager. (line 1845) -* BFD_RELOC_16C_IMM20: howto manager. (line 1846) -* BFD_RELOC_16C_IMM20_C: howto manager. (line 1847) -* BFD_RELOC_16C_IMM24: howto manager. (line 1848) -* BFD_RELOC_16C_IMM24_C: howto manager. (line 1849) -* BFD_RELOC_16C_IMM32: howto manager. (line 1850) -* BFD_RELOC_16C_IMM32_C: howto manager. (line 1851) -* BFD_RELOC_16C_NUM08: howto manager. (line 1812) -* BFD_RELOC_16C_NUM08_C: howto manager. (line 1813) -* BFD_RELOC_16C_NUM16: howto manager. (line 1814) -* BFD_RELOC_16C_NUM16_C: howto manager. (line 1815) -* BFD_RELOC_16C_NUM32: howto manager. (line 1816) -* BFD_RELOC_16C_NUM32_C: howto manager. (line 1817) -* BFD_RELOC_16C_REG04: howto manager. (line 1828) -* BFD_RELOC_16C_REG04_C: howto manager. (line 1829) -* BFD_RELOC_16C_REG04a: howto manager. (line 1830) -* BFD_RELOC_16C_REG04a_C: howto manager. (line 1831) -* BFD_RELOC_16C_REG14: howto manager. (line 1832) -* BFD_RELOC_16C_REG14_C: howto manager. (line 1833) -* BFD_RELOC_16C_REG16: howto manager. (line 1834) -* BFD_RELOC_16C_REG16_C: howto manager. (line 1835) -* BFD_RELOC_16C_REG20: howto manager. (line 1836) -* BFD_RELOC_16C_REG20_C: howto manager. (line 1837) +* BFD_RELOC_16C_ABS20: howto manager. (line 1985) +* BFD_RELOC_16C_ABS20_C: howto manager. (line 1986) +* BFD_RELOC_16C_ABS24: howto manager. (line 1987) +* BFD_RELOC_16C_ABS24_C: howto manager. (line 1988) +* BFD_RELOC_16C_DISP04: howto manager. (line 1965) +* BFD_RELOC_16C_DISP04_C: howto manager. (line 1966) +* BFD_RELOC_16C_DISP08: howto manager. (line 1967) +* BFD_RELOC_16C_DISP08_C: howto manager. (line 1968) +* BFD_RELOC_16C_DISP16: howto manager. (line 1969) +* BFD_RELOC_16C_DISP16_C: howto manager. (line 1970) +* BFD_RELOC_16C_DISP24: howto manager. (line 1971) +* BFD_RELOC_16C_DISP24_C: howto manager. (line 1972) +* BFD_RELOC_16C_DISP24a: howto manager. (line 1973) +* BFD_RELOC_16C_DISP24a_C: howto manager. (line 1974) +* BFD_RELOC_16C_IMM04: howto manager. (line 1989) +* BFD_RELOC_16C_IMM04_C: howto manager. (line 1990) +* BFD_RELOC_16C_IMM16: howto manager. (line 1991) +* BFD_RELOC_16C_IMM16_C: howto manager. (line 1992) +* BFD_RELOC_16C_IMM20: howto manager. (line 1993) +* BFD_RELOC_16C_IMM20_C: howto manager. (line 1994) +* BFD_RELOC_16C_IMM24: howto manager. (line 1995) +* BFD_RELOC_16C_IMM24_C: howto manager. (line 1996) +* BFD_RELOC_16C_IMM32: howto manager. (line 1997) +* BFD_RELOC_16C_IMM32_C: howto manager. (line 1998) +* BFD_RELOC_16C_NUM08: howto manager. (line 1959) +* BFD_RELOC_16C_NUM08_C: howto manager. (line 1960) +* BFD_RELOC_16C_NUM16: howto manager. (line 1961) +* BFD_RELOC_16C_NUM16_C: howto manager. (line 1962) +* BFD_RELOC_16C_NUM32: howto manager. (line 1963) +* BFD_RELOC_16C_NUM32_C: howto manager. (line 1964) +* BFD_RELOC_16C_REG04: howto manager. (line 1975) +* BFD_RELOC_16C_REG04_C: howto manager. (line 1976) +* BFD_RELOC_16C_REG04a: howto manager. (line 1977) +* BFD_RELOC_16C_REG04a_C: howto manager. (line 1978) +* BFD_RELOC_16C_REG14: howto manager. (line 1979) +* BFD_RELOC_16C_REG14_C: howto manager. (line 1980) +* BFD_RELOC_16C_REG16: howto manager. (line 1981) +* BFD_RELOC_16C_REG16_C: howto manager. (line 1982) +* BFD_RELOC_16C_REG20: howto manager. (line 1983) +* BFD_RELOC_16C_REG20_C: howto manager. (line 1984) * BFD_RELOC_23_PCREL_S2: howto manager. (line 108) * BFD_RELOC_24: howto manager. (line 29) * BFD_RELOC_24_PCREL: howto manager. (line 37) @@ -9964,80 +10241,80 @@ * BFD_RELOC_32_PLT_PCREL: howto manager. (line 61) * BFD_RELOC_32_PLTOFF: howto manager. (line 66) * BFD_RELOC_32_SECREL: howto manager. (line 48) -* BFD_RELOC_386_COPY: howto manager. (line 505) -* BFD_RELOC_386_GLOB_DAT: howto manager. (line 506) -* BFD_RELOC_386_GOT32: howto manager. (line 503) -* BFD_RELOC_386_GOTOFF: howto manager. (line 509) -* BFD_RELOC_386_GOTPC: howto manager. (line 510) -* BFD_RELOC_386_IRELATIVE: howto manager. (line 526) -* BFD_RELOC_386_JUMP_SLOT: howto manager. (line 507) -* BFD_RELOC_386_PLT32: howto manager. (line 504) -* BFD_RELOC_386_RELATIVE: howto manager. (line 508) -* BFD_RELOC_386_TLS_DESC: howto manager. (line 525) -* BFD_RELOC_386_TLS_DESC_CALL: howto manager. (line 524) -* BFD_RELOC_386_TLS_DTPMOD32: howto manager. (line 520) -* BFD_RELOC_386_TLS_DTPOFF32: howto manager. (line 521) -* BFD_RELOC_386_TLS_GD: howto manager. (line 515) -* BFD_RELOC_386_TLS_GOTDESC: howto manager. (line 523) -* BFD_RELOC_386_TLS_GOTIE: howto manager. (line 513) -* BFD_RELOC_386_TLS_IE: howto manager. (line 512) -* BFD_RELOC_386_TLS_IE_32: howto manager. (line 518) -* BFD_RELOC_386_TLS_LDM: howto manager. (line 516) -* BFD_RELOC_386_TLS_LDO_32: howto manager. (line 517) -* BFD_RELOC_386_TLS_LE: howto manager. (line 514) -* BFD_RELOC_386_TLS_LE_32: howto manager. (line 519) -* BFD_RELOC_386_TLS_TPOFF: howto manager. (line 511) -* BFD_RELOC_386_TLS_TPOFF32: howto manager. (line 522) -* BFD_RELOC_390_12: howto manager. (line 1498) -* BFD_RELOC_390_20: howto manager. (line 1598) -* BFD_RELOC_390_COPY: howto manager. (line 1507) -* BFD_RELOC_390_GLOB_DAT: howto manager. (line 1510) -* BFD_RELOC_390_GOT12: howto manager. (line 1501) -* BFD_RELOC_390_GOT16: howto manager. (line 1522) -* BFD_RELOC_390_GOT20: howto manager. (line 1599) -* BFD_RELOC_390_GOT64: howto manager. (line 1540) -* BFD_RELOC_390_GOTENT: howto manager. (line 1546) -* BFD_RELOC_390_GOTOFF64: howto manager. (line 1549) -* BFD_RELOC_390_GOTPC: howto manager. (line 1519) -* BFD_RELOC_390_GOTPCDBL: howto manager. (line 1537) -* BFD_RELOC_390_GOTPLT12: howto manager. (line 1552) -* BFD_RELOC_390_GOTPLT16: howto manager. (line 1555) -* BFD_RELOC_390_GOTPLT20: howto manager. (line 1600) -* BFD_RELOC_390_GOTPLT32: howto manager. (line 1558) -* BFD_RELOC_390_GOTPLT64: howto manager. (line 1561) -* BFD_RELOC_390_GOTPLTENT: howto manager. (line 1564) -* BFD_RELOC_390_JMP_SLOT: howto manager. (line 1513) -* BFD_RELOC_390_PC16DBL: howto manager. (line 1525) -* BFD_RELOC_390_PC32DBL: howto manager. (line 1531) -* BFD_RELOC_390_PLT16DBL: howto manager. (line 1528) -* BFD_RELOC_390_PLT32: howto manager. (line 1504) -* BFD_RELOC_390_PLT32DBL: howto manager. (line 1534) -* BFD_RELOC_390_PLT64: howto manager. (line 1543) -* BFD_RELOC_390_PLTOFF16: howto manager. (line 1567) -* BFD_RELOC_390_PLTOFF32: howto manager. (line 1570) -* BFD_RELOC_390_PLTOFF64: howto manager. (line 1573) -* BFD_RELOC_390_RELATIVE: howto manager. (line 1516) -* BFD_RELOC_390_TLS_DTPMOD: howto manager. (line 1593) -* BFD_RELOC_390_TLS_DTPOFF: howto manager. (line 1594) -* BFD_RELOC_390_TLS_GD32: howto manager. (line 1579) -* BFD_RELOC_390_TLS_GD64: howto manager. (line 1580) -* BFD_RELOC_390_TLS_GDCALL: howto manager. (line 1577) -* BFD_RELOC_390_TLS_GOTIE12: howto manager. (line 1581) -* BFD_RELOC_390_TLS_GOTIE20: howto manager. (line 1601) -* BFD_RELOC_390_TLS_GOTIE32: howto manager. (line 1582) -* BFD_RELOC_390_TLS_GOTIE64: howto manager. (line 1583) -* BFD_RELOC_390_TLS_IE32: howto manager. (line 1586) -* BFD_RELOC_390_TLS_IE64: howto manager. (line 1587) -* BFD_RELOC_390_TLS_IEENT: howto manager. (line 1588) -* BFD_RELOC_390_TLS_LDCALL: howto manager. (line 1578) -* BFD_RELOC_390_TLS_LDM32: howto manager. (line 1584) -* BFD_RELOC_390_TLS_LDM64: howto manager. (line 1585) -* BFD_RELOC_390_TLS_LDO32: howto manager. (line 1591) -* BFD_RELOC_390_TLS_LDO64: howto manager. (line 1592) -* BFD_RELOC_390_TLS_LE32: howto manager. (line 1589) -* BFD_RELOC_390_TLS_LE64: howto manager. (line 1590) -* BFD_RELOC_390_TLS_LOAD: howto manager. (line 1576) -* BFD_RELOC_390_TLS_TPOFF: howto manager. (line 1595) +* BFD_RELOC_386_COPY: howto manager. (line 507) +* BFD_RELOC_386_GLOB_DAT: howto manager. (line 508) +* BFD_RELOC_386_GOT32: howto manager. (line 505) +* BFD_RELOC_386_GOTOFF: howto manager. (line 511) +* BFD_RELOC_386_GOTPC: howto manager. (line 512) +* BFD_RELOC_386_IRELATIVE: howto manager. (line 528) +* BFD_RELOC_386_JUMP_SLOT: howto manager. (line 509) +* BFD_RELOC_386_PLT32: howto manager. (line 506) +* BFD_RELOC_386_RELATIVE: howto manager. (line 510) +* BFD_RELOC_386_TLS_DESC: howto manager. (line 527) +* BFD_RELOC_386_TLS_DESC_CALL: howto manager. (line 526) +* BFD_RELOC_386_TLS_DTPMOD32: howto manager. (line 522) +* BFD_RELOC_386_TLS_DTPOFF32: howto manager. (line 523) +* BFD_RELOC_386_TLS_GD: howto manager. (line 517) +* BFD_RELOC_386_TLS_GOTDESC: howto manager. (line 525) +* BFD_RELOC_386_TLS_GOTIE: howto manager. (line 515) +* BFD_RELOC_386_TLS_IE: howto manager. (line 514) +* BFD_RELOC_386_TLS_IE_32: howto manager. (line 520) +* BFD_RELOC_386_TLS_LDM: howto manager. (line 518) +* BFD_RELOC_386_TLS_LDO_32: howto manager. (line 519) +* BFD_RELOC_386_TLS_LE: howto manager. (line 516) +* BFD_RELOC_386_TLS_LE_32: howto manager. (line 521) +* BFD_RELOC_386_TLS_TPOFF: howto manager. (line 513) +* BFD_RELOC_386_TLS_TPOFF32: howto manager. (line 524) +* BFD_RELOC_390_12: howto manager. (line 1645) +* BFD_RELOC_390_20: howto manager. (line 1745) +* BFD_RELOC_390_COPY: howto manager. (line 1654) +* BFD_RELOC_390_GLOB_DAT: howto manager. (line 1657) +* BFD_RELOC_390_GOT12: howto manager. (line 1648) +* BFD_RELOC_390_GOT16: howto manager. (line 1669) +* BFD_RELOC_390_GOT20: howto manager. (line 1746) +* BFD_RELOC_390_GOT64: howto manager. (line 1687) +* BFD_RELOC_390_GOTENT: howto manager. (line 1693) +* BFD_RELOC_390_GOTOFF64: howto manager. (line 1696) +* BFD_RELOC_390_GOTPC: howto manager. (line 1666) +* BFD_RELOC_390_GOTPCDBL: howto manager. (line 1684) +* BFD_RELOC_390_GOTPLT12: howto manager. (line 1699) +* BFD_RELOC_390_GOTPLT16: howto manager. (line 1702) +* BFD_RELOC_390_GOTPLT20: howto manager. (line 1747) +* BFD_RELOC_390_GOTPLT32: howto manager. (line 1705) +* BFD_RELOC_390_GOTPLT64: howto manager. (line 1708) +* BFD_RELOC_390_GOTPLTENT: howto manager. (line 1711) +* BFD_RELOC_390_JMP_SLOT: howto manager. (line 1660) +* BFD_RELOC_390_PC16DBL: howto manager. (line 1672) +* BFD_RELOC_390_PC32DBL: howto manager. (line 1678) +* BFD_RELOC_390_PLT16DBL: howto manager. (line 1675) +* BFD_RELOC_390_PLT32: howto manager. (line 1651) +* BFD_RELOC_390_PLT32DBL: howto manager. (line 1681) +* BFD_RELOC_390_PLT64: howto manager. (line 1690) +* BFD_RELOC_390_PLTOFF16: howto manager. (line 1714) +* BFD_RELOC_390_PLTOFF32: howto manager. (line 1717) +* BFD_RELOC_390_PLTOFF64: howto manager. (line 1720) +* BFD_RELOC_390_RELATIVE: howto manager. (line 1663) +* BFD_RELOC_390_TLS_DTPMOD: howto manager. (line 1740) +* BFD_RELOC_390_TLS_DTPOFF: howto manager. (line 1741) +* BFD_RELOC_390_TLS_GD32: howto manager. (line 1726) +* BFD_RELOC_390_TLS_GD64: howto manager. (line 1727) +* BFD_RELOC_390_TLS_GDCALL: howto manager. (line 1724) +* BFD_RELOC_390_TLS_GOTIE12: howto manager. (line 1728) +* BFD_RELOC_390_TLS_GOTIE20: howto manager. (line 1748) +* BFD_RELOC_390_TLS_GOTIE32: howto manager. (line 1729) +* BFD_RELOC_390_TLS_GOTIE64: howto manager. (line 1730) +* BFD_RELOC_390_TLS_IE32: howto manager. (line 1733) +* BFD_RELOC_390_TLS_IE64: howto manager. (line 1734) +* BFD_RELOC_390_TLS_IEENT: howto manager. (line 1735) +* BFD_RELOC_390_TLS_LDCALL: howto manager. (line 1725) +* BFD_RELOC_390_TLS_LDM32: howto manager. (line 1731) +* BFD_RELOC_390_TLS_LDM64: howto manager. (line 1732) +* BFD_RELOC_390_TLS_LDO32: howto manager. (line 1738) +* BFD_RELOC_390_TLS_LDO64: howto manager. (line 1739) +* BFD_RELOC_390_TLS_LE32: howto manager. (line 1736) +* BFD_RELOC_390_TLS_LE64: howto manager. (line 1737) +* BFD_RELOC_390_TLS_LOAD: howto manager. (line 1723) +* BFD_RELOC_390_TLS_TPOFF: howto manager. (line 1742) * BFD_RELOC_64: howto manager. (line 26) * BFD_RELOC_64_PCREL: howto manager. (line 35) * BFD_RELOC_64_PLT_PCREL: howto manager. (line 60) @@ -10061,38 +10338,38 @@ * BFD_RELOC_68K_TLS_LE32: howto manager. (line 89) * BFD_RELOC_68K_TLS_LE8: howto manager. (line 91) * BFD_RELOC_8: howto manager. (line 32) -* BFD_RELOC_860_COPY: howto manager. (line 1966) -* BFD_RELOC_860_GLOB_DAT: howto manager. (line 1967) -* BFD_RELOC_860_HAGOT: howto manager. (line 1992) -* BFD_RELOC_860_HAGOTOFF: howto manager. (line 1993) -* BFD_RELOC_860_HAPC: howto manager. (line 1994) -* BFD_RELOC_860_HIGH: howto manager. (line 1995) -* BFD_RELOC_860_HIGHADJ: howto manager. (line 1991) -* BFD_RELOC_860_HIGOT: howto manager. (line 1996) -* BFD_RELOC_860_HIGOTOFF: howto manager. (line 1997) -* BFD_RELOC_860_JUMP_SLOT: howto manager. (line 1968) -* BFD_RELOC_860_LOGOT0: howto manager. (line 1980) -* BFD_RELOC_860_LOGOT1: howto manager. (line 1982) -* BFD_RELOC_860_LOGOTOFF0: howto manager. (line 1984) -* BFD_RELOC_860_LOGOTOFF1: howto manager. (line 1986) -* BFD_RELOC_860_LOGOTOFF2: howto manager. (line 1988) -* BFD_RELOC_860_LOGOTOFF3: howto manager. (line 1989) -* BFD_RELOC_860_LOPC: howto manager. (line 1990) -* BFD_RELOC_860_LOW0: howto manager. (line 1973) -* BFD_RELOC_860_LOW1: howto manager. (line 1975) -* BFD_RELOC_860_LOW2: howto manager. (line 1977) -* BFD_RELOC_860_LOW3: howto manager. (line 1979) -* BFD_RELOC_860_PC16: howto manager. (line 1972) -* BFD_RELOC_860_PC26: howto manager. (line 1970) -* BFD_RELOC_860_PLT26: howto manager. (line 1971) -* BFD_RELOC_860_RELATIVE: howto manager. (line 1969) -* BFD_RELOC_860_SPGOT0: howto manager. (line 1981) -* BFD_RELOC_860_SPGOT1: howto manager. (line 1983) -* BFD_RELOC_860_SPGOTOFF0: howto manager. (line 1985) -* BFD_RELOC_860_SPGOTOFF1: howto manager. (line 1987) -* BFD_RELOC_860_SPLIT0: howto manager. (line 1974) -* BFD_RELOC_860_SPLIT1: howto manager. (line 1976) -* BFD_RELOC_860_SPLIT2: howto manager. (line 1978) +* BFD_RELOC_860_COPY: howto manager. (line 2113) +* BFD_RELOC_860_GLOB_DAT: howto manager. (line 2114) +* BFD_RELOC_860_HAGOT: howto manager. (line 2139) +* BFD_RELOC_860_HAGOTOFF: howto manager. (line 2140) +* BFD_RELOC_860_HAPC: howto manager. (line 2141) +* BFD_RELOC_860_HIGH: howto manager. (line 2142) +* BFD_RELOC_860_HIGHADJ: howto manager. (line 2138) +* BFD_RELOC_860_HIGOT: howto manager. (line 2143) +* BFD_RELOC_860_HIGOTOFF: howto manager. (line 2144) +* BFD_RELOC_860_JUMP_SLOT: howto manager. (line 2115) +* BFD_RELOC_860_LOGOT0: howto manager. (line 2127) +* BFD_RELOC_860_LOGOT1: howto manager. (line 2129) +* BFD_RELOC_860_LOGOTOFF0: howto manager. (line 2131) +* BFD_RELOC_860_LOGOTOFF1: howto manager. (line 2133) +* BFD_RELOC_860_LOGOTOFF2: howto manager. (line 2135) +* BFD_RELOC_860_LOGOTOFF3: howto manager. (line 2136) +* BFD_RELOC_860_LOPC: howto manager. (line 2137) +* BFD_RELOC_860_LOW0: howto manager. (line 2120) +* BFD_RELOC_860_LOW1: howto manager. (line 2122) +* BFD_RELOC_860_LOW2: howto manager. (line 2124) +* BFD_RELOC_860_LOW3: howto manager. (line 2126) +* BFD_RELOC_860_PC16: howto manager. (line 2119) +* BFD_RELOC_860_PC26: howto manager. (line 2117) +* BFD_RELOC_860_PLT26: howto manager. (line 2118) +* BFD_RELOC_860_RELATIVE: howto manager. (line 2116) +* BFD_RELOC_860_SPGOT0: howto manager. (line 2128) +* BFD_RELOC_860_SPGOT1: howto manager. (line 2130) +* BFD_RELOC_860_SPGOTOFF0: howto manager. (line 2132) +* BFD_RELOC_860_SPGOTOFF1: howto manager. (line 2134) +* BFD_RELOC_860_SPLIT0: howto manager. (line 2121) +* BFD_RELOC_860_SPLIT1: howto manager. (line 2123) +* BFD_RELOC_860_SPLIT2: howto manager. (line 2125) * BFD_RELOC_8_BASEREL: howto manager. (line 99) * BFD_RELOC_8_FFnn: howto manager. (line 103) * BFD_RELOC_8_GOT_PCREL: howto manager. (line 53) @@ -10100,865 +10377,947 @@ * BFD_RELOC_8_PCREL: howto manager. (line 40) * BFD_RELOC_8_PLT_PCREL: howto manager. (line 64) * BFD_RELOC_8_PLTOFF: howto manager. (line 71) -* BFD_RELOC_ALPHA_BOH: howto manager. (line 313) -* BFD_RELOC_ALPHA_BRSGP: howto manager. (line 296) -* BFD_RELOC_ALPHA_BSR: howto manager. (line 305) -* BFD_RELOC_ALPHA_CODEADDR: howto manager. (line 287) -* BFD_RELOC_ALPHA_DTPMOD64: howto manager. (line 319) -* BFD_RELOC_ALPHA_DTPREL16: howto manager. (line 324) -* BFD_RELOC_ALPHA_DTPREL64: howto manager. (line 321) -* BFD_RELOC_ALPHA_DTPREL_HI16: howto manager. (line 322) -* BFD_RELOC_ALPHA_DTPREL_LO16: howto manager. (line 323) -* BFD_RELOC_ALPHA_ELF_LITERAL: howto manager. (line 252) -* BFD_RELOC_ALPHA_GOTDTPREL16: howto manager. (line 320) -* BFD_RELOC_ALPHA_GOTTPREL16: howto manager. (line 325) -* BFD_RELOC_ALPHA_GPDISP: howto manager. (line 246) -* BFD_RELOC_ALPHA_GPDISP_HI16: howto manager. (line 232) -* BFD_RELOC_ALPHA_GPDISP_LO16: howto manager. (line 240) -* BFD_RELOC_ALPHA_GPREL_HI16: howto manager. (line 291) -* BFD_RELOC_ALPHA_GPREL_LO16: howto manager. (line 292) -* BFD_RELOC_ALPHA_HINT: howto manager. (line 278) -* BFD_RELOC_ALPHA_LDA: howto manager. (line 309) -* BFD_RELOC_ALPHA_LINKAGE: howto manager. (line 283) -* BFD_RELOC_ALPHA_LITERAL: howto manager. (line 251) -* BFD_RELOC_ALPHA_LITUSE: howto manager. (line 253) -* BFD_RELOC_ALPHA_NOP: howto manager. (line 301) -* BFD_RELOC_ALPHA_TLSGD: howto manager. (line 317) -* BFD_RELOC_ALPHA_TLSLDM: howto manager. (line 318) -* BFD_RELOC_ALPHA_TPREL16: howto manager. (line 329) -* BFD_RELOC_ALPHA_TPREL64: howto manager. (line 326) -* BFD_RELOC_ALPHA_TPREL_HI16: howto manager. (line 327) -* BFD_RELOC_ALPHA_TPREL_LO16: howto manager. (line 328) -* BFD_RELOC_ARC_B22_PCREL: howto manager. (line 934) -* BFD_RELOC_ARC_B26: howto manager. (line 939) -* BFD_RELOC_ARM_ADR_IMM: howto manager. (line 827) -* BFD_RELOC_ARM_ADRL_IMMEDIATE: howto manager. (line 814) -* BFD_RELOC_ARM_ALU_PC_G0: howto manager. (line 781) -* BFD_RELOC_ARM_ALU_PC_G0_NC: howto manager. (line 780) -* BFD_RELOC_ARM_ALU_PC_G1: howto manager. (line 783) -* BFD_RELOC_ARM_ALU_PC_G1_NC: howto manager. (line 782) -* BFD_RELOC_ARM_ALU_PC_G2: howto manager. (line 784) -* BFD_RELOC_ARM_ALU_SB_G0: howto manager. (line 795) -* BFD_RELOC_ARM_ALU_SB_G0_NC: howto manager. (line 794) -* BFD_RELOC_ARM_ALU_SB_G1: howto manager. (line 797) -* BFD_RELOC_ARM_ALU_SB_G1_NC: howto manager. (line 796) -* BFD_RELOC_ARM_ALU_SB_G2: howto manager. (line 798) -* BFD_RELOC_ARM_CP_OFF_IMM: howto manager. (line 823) -* BFD_RELOC_ARM_CP_OFF_IMM_S2: howto manager. (line 824) -* BFD_RELOC_ARM_GLOB_DAT: howto manager. (line 762) -* BFD_RELOC_ARM_GOT32: howto manager. (line 763) -* BFD_RELOC_ARM_GOTOFF: howto manager. (line 766) -* BFD_RELOC_ARM_GOTPC: howto manager. (line 767) -* BFD_RELOC_ARM_HWLITERAL: howto manager. (line 834) -* BFD_RELOC_ARM_IMMEDIATE: howto manager. (line 813) -* BFD_RELOC_ARM_IN_POOL: howto manager. (line 830) -* BFD_RELOC_ARM_JUMP_SLOT: howto manager. (line 761) -* BFD_RELOC_ARM_LDC_PC_G0: howto manager. (line 791) -* BFD_RELOC_ARM_LDC_PC_G1: howto manager. (line 792) -* BFD_RELOC_ARM_LDC_PC_G2: howto manager. (line 793) -* BFD_RELOC_ARM_LDC_SB_G0: howto manager. (line 805) -* BFD_RELOC_ARM_LDC_SB_G1: howto manager. (line 806) -* BFD_RELOC_ARM_LDC_SB_G2: howto manager. (line 807) -* BFD_RELOC_ARM_LDR_IMM: howto manager. (line 828) -* BFD_RELOC_ARM_LDR_PC_G0: howto manager. (line 785) -* BFD_RELOC_ARM_LDR_PC_G1: howto manager. (line 786) -* BFD_RELOC_ARM_LDR_PC_G2: howto manager. (line 787) -* BFD_RELOC_ARM_LDR_SB_G0: howto manager. (line 799) -* BFD_RELOC_ARM_LDR_SB_G1: howto manager. (line 800) -* BFD_RELOC_ARM_LDR_SB_G2: howto manager. (line 801) -* BFD_RELOC_ARM_LDRS_PC_G0: howto manager. (line 788) -* BFD_RELOC_ARM_LDRS_PC_G1: howto manager. (line 789) -* BFD_RELOC_ARM_LDRS_PC_G2: howto manager. (line 790) -* BFD_RELOC_ARM_LDRS_SB_G0: howto manager. (line 802) -* BFD_RELOC_ARM_LDRS_SB_G1: howto manager. (line 803) -* BFD_RELOC_ARM_LDRS_SB_G2: howto manager. (line 804) -* BFD_RELOC_ARM_LITERAL: howto manager. (line 829) -* BFD_RELOC_ARM_MOVT: howto manager. (line 752) -* BFD_RELOC_ARM_MOVT_PCREL: howto manager. (line 754) -* BFD_RELOC_ARM_MOVW: howto manager. (line 751) -* BFD_RELOC_ARM_MOVW_PCREL: howto manager. (line 753) -* BFD_RELOC_ARM_MULTI: howto manager. (line 822) -* BFD_RELOC_ARM_OFFSET_IMM: howto manager. (line 725) -* BFD_RELOC_ARM_OFFSET_IMM8: howto manager. (line 831) -* BFD_RELOC_ARM_PCREL_BLX: howto manager. (line 696) -* BFD_RELOC_ARM_PCREL_BRANCH: howto manager. (line 692) -* BFD_RELOC_ARM_PCREL_CALL: howto manager. (line 706) -* BFD_RELOC_ARM_PCREL_JUMP: howto manager. (line 710) -* BFD_RELOC_ARM_PLT32: howto manager. (line 764) -* BFD_RELOC_ARM_PREL31: howto manager. (line 748) -* BFD_RELOC_ARM_RELATIVE: howto manager. (line 765) -* BFD_RELOC_ARM_ROSEGREL32: howto manager. (line 737) -* BFD_RELOC_ARM_SBREL32: howto manager. (line 740) -* BFD_RELOC_ARM_SHIFT_IMM: howto manager. (line 819) -* BFD_RELOC_ARM_SMC: howto manager. (line 820) -* BFD_RELOC_ARM_SWI: howto manager. (line 821) -* BFD_RELOC_ARM_T32_ADD_IMM: howto manager. (line 816) -* BFD_RELOC_ARM_T32_ADD_PC12: howto manager. (line 818) -* BFD_RELOC_ARM_T32_CP_OFF_IMM: howto manager. (line 825) -* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2: howto manager. (line 826) -* BFD_RELOC_ARM_T32_IMM12: howto manager. (line 817) -* BFD_RELOC_ARM_T32_IMMEDIATE: howto manager. (line 815) -* BFD_RELOC_ARM_T32_OFFSET_IMM: howto manager. (line 833) -* BFD_RELOC_ARM_T32_OFFSET_U8: howto manager. (line 832) -* BFD_RELOC_ARM_TARGET1: howto manager. (line 733) -* BFD_RELOC_ARM_TARGET2: howto manager. (line 743) -* BFD_RELOC_ARM_THUMB_ADD: howto manager. (line 835) -* BFD_RELOC_ARM_THUMB_IMM: howto manager. (line 836) -* BFD_RELOC_ARM_THUMB_MOVT: howto manager. (line 756) -* BFD_RELOC_ARM_THUMB_MOVT_PCREL: howto manager. (line 758) -* BFD_RELOC_ARM_THUMB_MOVW: howto manager. (line 755) -* BFD_RELOC_ARM_THUMB_MOVW_PCREL: howto manager. (line 757) -* BFD_RELOC_ARM_THUMB_OFFSET: howto manager. (line 729) -* BFD_RELOC_ARM_THUMB_SHIFT: howto manager. (line 837) -* BFD_RELOC_ARM_TLS_DTPMOD32: howto manager. (line 774) -* BFD_RELOC_ARM_TLS_DTPOFF32: howto manager. (line 773) -* BFD_RELOC_ARM_TLS_GD32: howto manager. (line 770) -* BFD_RELOC_ARM_TLS_IE32: howto manager. (line 776) -* BFD_RELOC_ARM_TLS_LDM32: howto manager. (line 772) -* BFD_RELOC_ARM_TLS_LDO32: howto manager. (line 771) -* BFD_RELOC_ARM_TLS_LE32: howto manager. (line 777) -* BFD_RELOC_ARM_TLS_TPOFF32: howto manager. (line 775) -* BFD_RELOC_ARM_V4BX: howto manager. (line 810) -* BFD_RELOC_AVR_13_PCREL: howto manager. (line 1399) -* BFD_RELOC_AVR_16_PM: howto manager. (line 1403) -* BFD_RELOC_AVR_6: howto manager. (line 1490) -* BFD_RELOC_AVR_6_ADIW: howto manager. (line 1494) -* BFD_RELOC_AVR_7_PCREL: howto manager. (line 1395) -* BFD_RELOC_AVR_CALL: howto manager. (line 1482) -* BFD_RELOC_AVR_HH8_LDI: howto manager. (line 1415) -* BFD_RELOC_AVR_HH8_LDI_NEG: howto manager. (line 1434) -* BFD_RELOC_AVR_HH8_LDI_PM: howto manager. (line 1463) -* BFD_RELOC_AVR_HH8_LDI_PM_NEG: howto manager. (line 1477) -* BFD_RELOC_AVR_HI8_LDI: howto manager. (line 1411) -* BFD_RELOC_AVR_HI8_LDI_GS: howto manager. (line 1457) -* BFD_RELOC_AVR_HI8_LDI_NEG: howto manager. (line 1429) -* BFD_RELOC_AVR_HI8_LDI_PM: howto manager. (line 1453) -* BFD_RELOC_AVR_HI8_LDI_PM_NEG: howto manager. (line 1472) -* BFD_RELOC_AVR_LDI: howto manager. (line 1486) -* BFD_RELOC_AVR_LO8_LDI: howto manager. (line 1407) -* BFD_RELOC_AVR_LO8_LDI_GS: howto manager. (line 1447) -* BFD_RELOC_AVR_LO8_LDI_NEG: howto manager. (line 1424) -* BFD_RELOC_AVR_LO8_LDI_PM: howto manager. (line 1443) -* BFD_RELOC_AVR_LO8_LDI_PM_NEG: howto manager. (line 1468) -* BFD_RELOC_AVR_MS8_LDI: howto manager. (line 1420) -* BFD_RELOC_AVR_MS8_LDI_NEG: howto manager. (line 1439) -* BFD_RELOC_BFIN_10_PCREL: howto manager. (line 959) -* BFD_RELOC_BFIN_11_PCREL: howto manager. (line 962) -* BFD_RELOC_BFIN_12_PCREL_JUMP: howto manager. (line 965) -* BFD_RELOC_BFIN_12_PCREL_JUMP_S: howto manager. (line 968) -* BFD_RELOC_BFIN_16_HIGH: howto manager. (line 947) -* BFD_RELOC_BFIN_16_IMM: howto manager. (line 944) -* BFD_RELOC_BFIN_16_LOW: howto manager. (line 956) -* BFD_RELOC_BFIN_24_PCREL_CALL_X: howto manager. (line 971) -* BFD_RELOC_BFIN_24_PCREL_JUMP_L: howto manager. (line 974) -* BFD_RELOC_BFIN_4_PCREL: howto manager. (line 950) -* BFD_RELOC_BFIN_5_PCREL: howto manager. (line 953) -* BFD_RELOC_BFIN_FUNCDESC: howto manager. (line 980) -* BFD_RELOC_BFIN_FUNCDESC_GOT17M4: howto manager. (line 981) -* BFD_RELOC_BFIN_FUNCDESC_GOTHI: howto manager. (line 982) -* BFD_RELOC_BFIN_FUNCDESC_GOTLO: howto manager. (line 983) -* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4: howto manager. (line 985) -* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI: howto manager. (line 986) -* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO: howto manager. (line 987) -* BFD_RELOC_BFIN_FUNCDESC_VALUE: howto manager. (line 984) -* BFD_RELOC_BFIN_GOT: howto manager. (line 993) -* BFD_RELOC_BFIN_GOT17M4: howto manager. (line 977) -* BFD_RELOC_BFIN_GOTHI: howto manager. (line 978) -* BFD_RELOC_BFIN_GOTLO: howto manager. (line 979) -* BFD_RELOC_BFIN_GOTOFF17M4: howto manager. (line 988) -* BFD_RELOC_BFIN_GOTOFFHI: howto manager. (line 989) -* BFD_RELOC_BFIN_GOTOFFLO: howto manager. (line 990) -* BFD_RELOC_BFIN_PLTPC: howto manager. (line 996) +* BFD_RELOC_ALPHA_BOH: howto manager. (line 315) +* BFD_RELOC_ALPHA_BRSGP: howto manager. (line 298) +* BFD_RELOC_ALPHA_BSR: howto manager. (line 307) +* BFD_RELOC_ALPHA_CODEADDR: howto manager. (line 289) +* BFD_RELOC_ALPHA_DTPMOD64: howto manager. (line 321) +* BFD_RELOC_ALPHA_DTPREL16: howto manager. (line 326) +* BFD_RELOC_ALPHA_DTPREL64: howto manager. (line 323) +* BFD_RELOC_ALPHA_DTPREL_HI16: howto manager. (line 324) +* BFD_RELOC_ALPHA_DTPREL_LO16: howto manager. (line 325) +* BFD_RELOC_ALPHA_ELF_LITERAL: howto manager. (line 254) +* BFD_RELOC_ALPHA_GOTDTPREL16: howto manager. (line 322) +* BFD_RELOC_ALPHA_GOTTPREL16: howto manager. (line 327) +* BFD_RELOC_ALPHA_GPDISP: howto manager. (line 248) +* BFD_RELOC_ALPHA_GPDISP_HI16: howto manager. (line 234) +* BFD_RELOC_ALPHA_GPDISP_LO16: howto manager. (line 242) +* BFD_RELOC_ALPHA_GPREL_HI16: howto manager. (line 293) +* BFD_RELOC_ALPHA_GPREL_LO16: howto manager. (line 294) +* BFD_RELOC_ALPHA_HINT: howto manager. (line 280) +* BFD_RELOC_ALPHA_LDA: howto manager. (line 311) +* BFD_RELOC_ALPHA_LINKAGE: howto manager. (line 285) +* BFD_RELOC_ALPHA_LITERAL: howto manager. (line 253) +* BFD_RELOC_ALPHA_LITUSE: howto manager. (line 255) +* BFD_RELOC_ALPHA_NOP: howto manager. (line 303) +* BFD_RELOC_ALPHA_TLSGD: howto manager. (line 319) +* BFD_RELOC_ALPHA_TLSLDM: howto manager. (line 320) +* BFD_RELOC_ALPHA_TPREL16: howto manager. (line 331) +* BFD_RELOC_ALPHA_TPREL64: howto manager. (line 328) +* BFD_RELOC_ALPHA_TPREL_HI16: howto manager. (line 329) +* BFD_RELOC_ALPHA_TPREL_LO16: howto manager. (line 330) +* BFD_RELOC_ARC_B22_PCREL: howto manager. (line 954) +* BFD_RELOC_ARC_B26: howto manager. (line 959) +* BFD_RELOC_ARM_ADR_IMM: howto manager. (line 840) +* BFD_RELOC_ARM_ADRL_IMMEDIATE: howto manager. (line 826) +* BFD_RELOC_ARM_ALU_PC_G0: howto manager. (line 790) +* BFD_RELOC_ARM_ALU_PC_G0_NC: howto manager. (line 789) +* BFD_RELOC_ARM_ALU_PC_G1: howto manager. (line 792) +* BFD_RELOC_ARM_ALU_PC_G1_NC: howto manager. (line 791) +* BFD_RELOC_ARM_ALU_PC_G2: howto manager. (line 793) +* BFD_RELOC_ARM_ALU_SB_G0: howto manager. (line 804) +* BFD_RELOC_ARM_ALU_SB_G0_NC: howto manager. (line 803) +* BFD_RELOC_ARM_ALU_SB_G1: howto manager. (line 806) +* BFD_RELOC_ARM_ALU_SB_G1_NC: howto manager. (line 805) +* BFD_RELOC_ARM_ALU_SB_G2: howto manager. (line 807) +* BFD_RELOC_ARM_CP_OFF_IMM: howto manager. (line 836) +* BFD_RELOC_ARM_CP_OFF_IMM_S2: howto manager. (line 837) +* BFD_RELOC_ARM_GLOB_DAT: howto manager. (line 764) +* BFD_RELOC_ARM_GOT32: howto manager. (line 765) +* BFD_RELOC_ARM_GOT_PREL: howto manager. (line 770) +* BFD_RELOC_ARM_GOTOFF: howto manager. (line 768) +* BFD_RELOC_ARM_GOTPC: howto manager. (line 769) +* BFD_RELOC_ARM_HVC: howto manager. (line 833) +* BFD_RELOC_ARM_HWLITERAL: howto manager. (line 847) +* BFD_RELOC_ARM_IMMEDIATE: howto manager. (line 825) +* BFD_RELOC_ARM_IN_POOL: howto manager. (line 843) +* BFD_RELOC_ARM_IRELATIVE: howto manager. (line 822) +* BFD_RELOC_ARM_JUMP_SLOT: howto manager. (line 763) +* BFD_RELOC_ARM_LDC_PC_G0: howto manager. (line 800) +* BFD_RELOC_ARM_LDC_PC_G1: howto manager. (line 801) +* BFD_RELOC_ARM_LDC_PC_G2: howto manager. (line 802) +* BFD_RELOC_ARM_LDC_SB_G0: howto manager. (line 814) +* BFD_RELOC_ARM_LDC_SB_G1: howto manager. (line 815) +* BFD_RELOC_ARM_LDC_SB_G2: howto manager. (line 816) +* BFD_RELOC_ARM_LDR_IMM: howto manager. (line 841) +* BFD_RELOC_ARM_LDR_PC_G0: howto manager. (line 794) +* BFD_RELOC_ARM_LDR_PC_G1: howto manager. (line 795) +* BFD_RELOC_ARM_LDR_PC_G2: howto manager. (line 796) +* BFD_RELOC_ARM_LDR_SB_G0: howto manager. (line 808) +* BFD_RELOC_ARM_LDR_SB_G1: howto manager. (line 809) +* BFD_RELOC_ARM_LDR_SB_G2: howto manager. (line 810) +* BFD_RELOC_ARM_LDRS_PC_G0: howto manager. (line 797) +* BFD_RELOC_ARM_LDRS_PC_G1: howto manager. (line 798) +* BFD_RELOC_ARM_LDRS_PC_G2: howto manager. (line 799) +* BFD_RELOC_ARM_LDRS_SB_G0: howto manager. (line 811) +* BFD_RELOC_ARM_LDRS_SB_G1: howto manager. (line 812) +* BFD_RELOC_ARM_LDRS_SB_G2: howto manager. (line 813) +* BFD_RELOC_ARM_LITERAL: howto manager. (line 842) +* BFD_RELOC_ARM_MOVT: howto manager. (line 754) +* BFD_RELOC_ARM_MOVT_PCREL: howto manager. (line 756) +* BFD_RELOC_ARM_MOVW: howto manager. (line 753) +* BFD_RELOC_ARM_MOVW_PCREL: howto manager. (line 755) +* BFD_RELOC_ARM_MULTI: howto manager. (line 835) +* BFD_RELOC_ARM_OFFSET_IMM: howto manager. (line 727) +* BFD_RELOC_ARM_OFFSET_IMM8: howto manager. (line 844) +* BFD_RELOC_ARM_PCREL_BLX: howto manager. (line 698) +* BFD_RELOC_ARM_PCREL_BRANCH: howto manager. (line 694) +* BFD_RELOC_ARM_PCREL_CALL: howto manager. (line 708) +* BFD_RELOC_ARM_PCREL_JUMP: howto manager. (line 712) +* BFD_RELOC_ARM_PLT32: howto manager. (line 766) +* BFD_RELOC_ARM_PREL31: howto manager. (line 750) +* BFD_RELOC_ARM_RELATIVE: howto manager. (line 767) +* BFD_RELOC_ARM_ROSEGREL32: howto manager. (line 739) +* BFD_RELOC_ARM_SBREL32: howto manager. (line 742) +* BFD_RELOC_ARM_SHIFT_IMM: howto manager. (line 831) +* BFD_RELOC_ARM_SMC: howto manager. (line 832) +* BFD_RELOC_ARM_SWI: howto manager. (line 834) +* BFD_RELOC_ARM_T32_ADD_IMM: howto manager. (line 828) +* BFD_RELOC_ARM_T32_ADD_PC12: howto manager. (line 830) +* BFD_RELOC_ARM_T32_CP_OFF_IMM: howto manager. (line 838) +* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2: howto manager. (line 839) +* BFD_RELOC_ARM_T32_IMM12: howto manager. (line 829) +* BFD_RELOC_ARM_T32_IMMEDIATE: howto manager. (line 827) +* BFD_RELOC_ARM_T32_OFFSET_IMM: howto manager. (line 846) +* BFD_RELOC_ARM_T32_OFFSET_U8: howto manager. (line 845) +* BFD_RELOC_ARM_TARGET1: howto manager. (line 735) +* BFD_RELOC_ARM_TARGET2: howto manager. (line 745) +* BFD_RELOC_ARM_THM_TLS_CALL: howto manager. (line 783) +* BFD_RELOC_ARM_THM_TLS_DESCSEQ: howto manager. (line 785) +* BFD_RELOC_ARM_THUMB_ADD: howto manager. (line 848) +* BFD_RELOC_ARM_THUMB_IMM: howto manager. (line 849) +* BFD_RELOC_ARM_THUMB_MOVT: howto manager. (line 758) +* BFD_RELOC_ARM_THUMB_MOVT_PCREL: howto manager. (line 760) +* BFD_RELOC_ARM_THUMB_MOVW: howto manager. (line 757) +* BFD_RELOC_ARM_THUMB_MOVW_PCREL: howto manager. (line 759) +* BFD_RELOC_ARM_THUMB_OFFSET: howto manager. (line 731) +* BFD_RELOC_ARM_THUMB_SHIFT: howto manager. (line 850) +* BFD_RELOC_ARM_TLS_CALL: howto manager. (line 782) +* BFD_RELOC_ARM_TLS_DESC: howto manager. (line 786) +* BFD_RELOC_ARM_TLS_DESCSEQ: howto manager. (line 784) +* BFD_RELOC_ARM_TLS_DTPMOD32: howto manager. (line 777) +* BFD_RELOC_ARM_TLS_DTPOFF32: howto manager. (line 776) +* BFD_RELOC_ARM_TLS_GD32: howto manager. (line 773) +* BFD_RELOC_ARM_TLS_GOTDESC: howto manager. (line 781) +* BFD_RELOC_ARM_TLS_IE32: howto manager. (line 779) +* BFD_RELOC_ARM_TLS_LDM32: howto manager. (line 775) +* BFD_RELOC_ARM_TLS_LDO32: howto manager. (line 774) +* BFD_RELOC_ARM_TLS_LE32: howto manager. (line 780) +* BFD_RELOC_ARM_TLS_TPOFF32: howto manager. (line 778) +* BFD_RELOC_ARM_V4BX: howto manager. (line 819) +* BFD_RELOC_AVR_13_PCREL: howto manager. (line 1517) +* BFD_RELOC_AVR_16_PM: howto manager. (line 1521) +* BFD_RELOC_AVR_6: howto manager. (line 1608) +* BFD_RELOC_AVR_6_ADIW: howto manager. (line 1612) +* BFD_RELOC_AVR_7_PCREL: howto manager. (line 1513) +* BFD_RELOC_AVR_CALL: howto manager. (line 1600) +* BFD_RELOC_AVR_HH8_LDI: howto manager. (line 1533) +* BFD_RELOC_AVR_HH8_LDI_NEG: howto manager. (line 1552) +* BFD_RELOC_AVR_HH8_LDI_PM: howto manager. (line 1581) +* BFD_RELOC_AVR_HH8_LDI_PM_NEG: howto manager. (line 1595) +* BFD_RELOC_AVR_HI8_LDI: howto manager. (line 1529) +* BFD_RELOC_AVR_HI8_LDI_GS: howto manager. (line 1575) +* BFD_RELOC_AVR_HI8_LDI_NEG: howto manager. (line 1547) +* BFD_RELOC_AVR_HI8_LDI_PM: howto manager. (line 1571) +* BFD_RELOC_AVR_HI8_LDI_PM_NEG: howto manager. (line 1590) +* BFD_RELOC_AVR_LDI: howto manager. (line 1604) +* BFD_RELOC_AVR_LO8_LDI: howto manager. (line 1525) +* BFD_RELOC_AVR_LO8_LDI_GS: howto manager. (line 1565) +* BFD_RELOC_AVR_LO8_LDI_NEG: howto manager. (line 1542) +* BFD_RELOC_AVR_LO8_LDI_PM: howto manager. (line 1561) +* BFD_RELOC_AVR_LO8_LDI_PM_NEG: howto manager. (line 1586) +* BFD_RELOC_AVR_MS8_LDI: howto manager. (line 1538) +* BFD_RELOC_AVR_MS8_LDI_NEG: howto manager. (line 1557) +* BFD_RELOC_BFIN_10_PCREL: howto manager. (line 979) +* BFD_RELOC_BFIN_11_PCREL: howto manager. (line 982) +* BFD_RELOC_BFIN_12_PCREL_JUMP: howto manager. (line 985) +* BFD_RELOC_BFIN_12_PCREL_JUMP_S: howto manager. (line 988) +* BFD_RELOC_BFIN_16_HIGH: howto manager. (line 967) +* BFD_RELOC_BFIN_16_IMM: howto manager. (line 964) +* BFD_RELOC_BFIN_16_LOW: howto manager. (line 976) +* BFD_RELOC_BFIN_24_PCREL_CALL_X: howto manager. (line 991) +* BFD_RELOC_BFIN_24_PCREL_JUMP_L: howto manager. (line 994) +* BFD_RELOC_BFIN_4_PCREL: howto manager. (line 970) +* BFD_RELOC_BFIN_5_PCREL: howto manager. (line 973) +* BFD_RELOC_BFIN_FUNCDESC: howto manager. (line 1000) +* BFD_RELOC_BFIN_FUNCDESC_GOT17M4: howto manager. (line 1001) +* BFD_RELOC_BFIN_FUNCDESC_GOTHI: howto manager. (line 1002) +* BFD_RELOC_BFIN_FUNCDESC_GOTLO: howto manager. (line 1003) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4: howto manager. (line 1005) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI: howto manager. (line 1006) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO: howto manager. (line 1007) +* BFD_RELOC_BFIN_FUNCDESC_VALUE: howto manager. (line 1004) +* BFD_RELOC_BFIN_GOT: howto manager. (line 1013) +* BFD_RELOC_BFIN_GOT17M4: howto manager. (line 997) +* BFD_RELOC_BFIN_GOTHI: howto manager. (line 998) +* BFD_RELOC_BFIN_GOTLO: howto manager. (line 999) +* BFD_RELOC_BFIN_GOTOFF17M4: howto manager. (line 1008) +* BFD_RELOC_BFIN_GOTOFFHI: howto manager. (line 1009) +* BFD_RELOC_BFIN_GOTOFFLO: howto manager. (line 1010) +* BFD_RELOC_BFIN_PLTPC: howto manager. (line 1016) +* BFD_RELOC_C6000_ABS_H16: howto manager. (line 1376) +* BFD_RELOC_C6000_ABS_L16: howto manager. (line 1375) +* BFD_RELOC_C6000_ABS_S16: howto manager. (line 1374) +* BFD_RELOC_C6000_ALIGN: howto manager. (line 1397) +* BFD_RELOC_C6000_COPY: howto manager. (line 1392) +* BFD_RELOC_C6000_DSBT_INDEX: howto manager. (line 1390) +* BFD_RELOC_C6000_EHTYPE: howto manager. (line 1394) +* BFD_RELOC_C6000_FPHEAD: howto manager. (line 1398) +* BFD_RELOC_C6000_JUMP_SLOT: howto manager. (line 1393) +* BFD_RELOC_C6000_NOCMP: howto manager. (line 1399) +* BFD_RELOC_C6000_PCR_H16: howto manager. (line 1395) +* BFD_RELOC_C6000_PCR_L16: howto manager. (line 1396) +* BFD_RELOC_C6000_PCR_S10: howto manager. (line 1372) +* BFD_RELOC_C6000_PCR_S12: howto manager. (line 1371) +* BFD_RELOC_C6000_PCR_S21: howto manager. (line 1370) +* BFD_RELOC_C6000_PCR_S7: howto manager. (line 1373) +* BFD_RELOC_C6000_PREL31: howto manager. (line 1391) +* BFD_RELOC_C6000_SBR_GOT_H16_W: howto manager. (line 1389) +* BFD_RELOC_C6000_SBR_GOT_L16_W: howto manager. (line 1388) +* BFD_RELOC_C6000_SBR_GOT_U15_W: howto manager. (line 1387) +* BFD_RELOC_C6000_SBR_H16_B: howto manager. (line 1384) +* BFD_RELOC_C6000_SBR_H16_H: howto manager. (line 1385) +* BFD_RELOC_C6000_SBR_H16_W: howto manager. (line 1386) +* BFD_RELOC_C6000_SBR_L16_B: howto manager. (line 1381) +* BFD_RELOC_C6000_SBR_L16_H: howto manager. (line 1382) +* BFD_RELOC_C6000_SBR_L16_W: howto manager. (line 1383) +* BFD_RELOC_C6000_SBR_S16: howto manager. (line 1380) +* BFD_RELOC_C6000_SBR_U15_B: howto manager. (line 1377) +* BFD_RELOC_C6000_SBR_U15_H: howto manager. (line 1378) +* BFD_RELOC_C6000_SBR_U15_W: howto manager. (line 1379) * bfd_reloc_code_type: howto manager. (line 10) -* BFD_RELOC_CR16_ABS20: howto manager. (line 1866) -* BFD_RELOC_CR16_ABS24: howto manager. (line 1867) -* BFD_RELOC_CR16_DISP16: howto manager. (line 1877) -* BFD_RELOC_CR16_DISP20: howto manager. (line 1878) -* BFD_RELOC_CR16_DISP24: howto manager. (line 1879) -* BFD_RELOC_CR16_DISP24a: howto manager. (line 1880) -* BFD_RELOC_CR16_DISP4: howto manager. (line 1875) -* BFD_RELOC_CR16_DISP8: howto manager. (line 1876) -* BFD_RELOC_CR16_GLOB_DAT: howto manager. (line 1886) -* BFD_RELOC_CR16_GOT_REGREL20: howto manager. (line 1884) -* BFD_RELOC_CR16_GOTC_REGREL20: howto manager. (line 1885) -* BFD_RELOC_CR16_IMM16: howto manager. (line 1870) -* BFD_RELOC_CR16_IMM20: howto manager. (line 1871) -* BFD_RELOC_CR16_IMM24: howto manager. (line 1872) -* BFD_RELOC_CR16_IMM32: howto manager. (line 1873) -* BFD_RELOC_CR16_IMM32a: howto manager. (line 1874) -* BFD_RELOC_CR16_IMM4: howto manager. (line 1868) -* BFD_RELOC_CR16_IMM8: howto manager. (line 1869) -* BFD_RELOC_CR16_NUM16: howto manager. (line 1855) -* BFD_RELOC_CR16_NUM32: howto manager. (line 1856) -* BFD_RELOC_CR16_NUM32a: howto manager. (line 1857) -* BFD_RELOC_CR16_NUM8: howto manager. (line 1854) -* BFD_RELOC_CR16_REGREL0: howto manager. (line 1858) -* BFD_RELOC_CR16_REGREL14: howto manager. (line 1861) -* BFD_RELOC_CR16_REGREL14a: howto manager. (line 1862) -* BFD_RELOC_CR16_REGREL16: howto manager. (line 1863) -* BFD_RELOC_CR16_REGREL20: howto manager. (line 1864) -* BFD_RELOC_CR16_REGREL20a: howto manager. (line 1865) -* BFD_RELOC_CR16_REGREL4: howto manager. (line 1859) -* BFD_RELOC_CR16_REGREL4a: howto manager. (line 1860) -* BFD_RELOC_CR16_SWITCH16: howto manager. (line 1882) -* BFD_RELOC_CR16_SWITCH32: howto manager. (line 1883) -* BFD_RELOC_CR16_SWITCH8: howto manager. (line 1881) -* BFD_RELOC_CRIS_16_DTPREL: howto manager. (line 1957) -* BFD_RELOC_CRIS_16_GOT: howto manager. (line 1933) -* BFD_RELOC_CRIS_16_GOT_GD: howto manager. (line 1953) -* BFD_RELOC_CRIS_16_GOT_TPREL: howto manager. (line 1959) -* BFD_RELOC_CRIS_16_GOTPLT: howto manager. (line 1939) -* BFD_RELOC_CRIS_16_TPREL: howto manager. (line 1961) -* BFD_RELOC_CRIS_32_DTPREL: howto manager. (line 1956) -* BFD_RELOC_CRIS_32_GD: howto manager. (line 1954) -* BFD_RELOC_CRIS_32_GOT: howto manager. (line 1930) -* BFD_RELOC_CRIS_32_GOT_GD: howto manager. (line 1952) -* BFD_RELOC_CRIS_32_GOT_TPREL: howto manager. (line 1958) -* BFD_RELOC_CRIS_32_GOTPLT: howto manager. (line 1936) -* BFD_RELOC_CRIS_32_GOTREL: howto manager. (line 1942) -* BFD_RELOC_CRIS_32_IE: howto manager. (line 1963) -* BFD_RELOC_CRIS_32_PLT_GOTREL: howto manager. (line 1945) -* BFD_RELOC_CRIS_32_PLT_PCREL: howto manager. (line 1948) -* BFD_RELOC_CRIS_32_TPREL: howto manager. (line 1960) -* BFD_RELOC_CRIS_BDISP8: howto manager. (line 1911) -* BFD_RELOC_CRIS_COPY: howto manager. (line 1924) -* BFD_RELOC_CRIS_DTP: howto manager. (line 1955) -* BFD_RELOC_CRIS_DTPMOD: howto manager. (line 1962) -* BFD_RELOC_CRIS_GLOB_DAT: howto manager. (line 1925) -* BFD_RELOC_CRIS_JUMP_SLOT: howto manager. (line 1926) -* BFD_RELOC_CRIS_LAPCQ_OFFSET: howto manager. (line 1919) -* BFD_RELOC_CRIS_RELATIVE: howto manager. (line 1927) -* BFD_RELOC_CRIS_SIGNED_16: howto manager. (line 1917) -* BFD_RELOC_CRIS_SIGNED_6: howto manager. (line 1913) -* BFD_RELOC_CRIS_SIGNED_8: howto manager. (line 1915) -* BFD_RELOC_CRIS_UNSIGNED_16: howto manager. (line 1918) -* BFD_RELOC_CRIS_UNSIGNED_4: howto manager. (line 1920) -* BFD_RELOC_CRIS_UNSIGNED_5: howto manager. (line 1912) -* BFD_RELOC_CRIS_UNSIGNED_6: howto manager. (line 1914) -* BFD_RELOC_CRIS_UNSIGNED_8: howto manager. (line 1916) -* BFD_RELOC_CRX_ABS16: howto manager. (line 1899) -* BFD_RELOC_CRX_ABS32: howto manager. (line 1900) -* BFD_RELOC_CRX_IMM16: howto manager. (line 1904) -* BFD_RELOC_CRX_IMM32: howto manager. (line 1905) -* BFD_RELOC_CRX_NUM16: howto manager. (line 1902) -* BFD_RELOC_CRX_NUM32: howto manager. (line 1903) -* BFD_RELOC_CRX_NUM8: howto manager. (line 1901) -* BFD_RELOC_CRX_REGREL12: howto manager. (line 1895) -* BFD_RELOC_CRX_REGREL22: howto manager. (line 1896) -* BFD_RELOC_CRX_REGREL28: howto manager. (line 1897) -* BFD_RELOC_CRX_REGREL32: howto manager. (line 1898) -* BFD_RELOC_CRX_REL16: howto manager. (line 1892) -* BFD_RELOC_CRX_REL24: howto manager. (line 1893) -* BFD_RELOC_CRX_REL32: howto manager. (line 1894) -* BFD_RELOC_CRX_REL4: howto manager. (line 1889) -* BFD_RELOC_CRX_REL8: howto manager. (line 1890) -* BFD_RELOC_CRX_REL8_CMP: howto manager. (line 1891) -* BFD_RELOC_CRX_SWITCH16: howto manager. (line 1907) -* BFD_RELOC_CRX_SWITCH32: howto manager. (line 1908) -* BFD_RELOC_CRX_SWITCH8: howto manager. (line 1906) -* BFD_RELOC_CTOR: howto manager. (line 686) -* BFD_RELOC_D10V_10_PCREL_L: howto manager. (line 1063) -* BFD_RELOC_D10V_10_PCREL_R: howto manager. (line 1059) -* BFD_RELOC_D10V_18: howto manager. (line 1068) -* BFD_RELOC_D10V_18_PCREL: howto manager. (line 1071) -* BFD_RELOC_D30V_15: howto manager. (line 1086) -* BFD_RELOC_D30V_15_PCREL: howto manager. (line 1090) -* BFD_RELOC_D30V_15_PCREL_R: howto manager. (line 1094) -* BFD_RELOC_D30V_21: howto manager. (line 1099) -* BFD_RELOC_D30V_21_PCREL: howto manager. (line 1103) -* BFD_RELOC_D30V_21_PCREL_R: howto manager. (line 1107) -* BFD_RELOC_D30V_32: howto manager. (line 1112) -* BFD_RELOC_D30V_32_PCREL: howto manager. (line 1115) -* BFD_RELOC_D30V_6: howto manager. (line 1074) -* BFD_RELOC_D30V_9_PCREL: howto manager. (line 1077) -* BFD_RELOC_D30V_9_PCREL_R: howto manager. (line 1081) -* BFD_RELOC_DLX_HI16_S: howto manager. (line 1118) -* BFD_RELOC_DLX_JMP26: howto manager. (line 1124) -* BFD_RELOC_DLX_LO16: howto manager. (line 1121) -* BFD_RELOC_FR30_10_IN_8: howto manager. (line 1303) -* BFD_RELOC_FR30_12_PCREL: howto manager. (line 1311) -* BFD_RELOC_FR30_20: howto manager. (line 1287) -* BFD_RELOC_FR30_48: howto manager. (line 1284) -* BFD_RELOC_FR30_6_IN_4: howto manager. (line 1291) -* BFD_RELOC_FR30_8_IN_8: howto manager. (line 1295) -* BFD_RELOC_FR30_9_IN_8: howto manager. (line 1299) -* BFD_RELOC_FR30_9_PCREL: howto manager. (line 1307) -* BFD_RELOC_FRV_FUNCDESC: howto manager. (line 438) -* BFD_RELOC_FRV_FUNCDESC_GOT12: howto manager. (line 439) -* BFD_RELOC_FRV_FUNCDESC_GOTHI: howto manager. (line 440) -* BFD_RELOC_FRV_FUNCDESC_GOTLO: howto manager. (line 441) -* BFD_RELOC_FRV_FUNCDESC_GOTOFF12: howto manager. (line 443) -* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: howto manager. (line 444) -* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: howto manager. (line 445) -* BFD_RELOC_FRV_FUNCDESC_VALUE: howto manager. (line 442) -* BFD_RELOC_FRV_GETTLSOFF: howto manager. (line 449) -* BFD_RELOC_FRV_GETTLSOFF_RELAX: howto manager. (line 462) -* BFD_RELOC_FRV_GOT12: howto manager. (line 435) -* BFD_RELOC_FRV_GOTHI: howto manager. (line 436) -* BFD_RELOC_FRV_GOTLO: howto manager. (line 437) -* BFD_RELOC_FRV_GOTOFF12: howto manager. (line 446) -* BFD_RELOC_FRV_GOTOFFHI: howto manager. (line 447) -* BFD_RELOC_FRV_GOTOFFLO: howto manager. (line 448) -* BFD_RELOC_FRV_GOTTLSDESC12: howto manager. (line 451) -* BFD_RELOC_FRV_GOTTLSDESCHI: howto manager. (line 452) -* BFD_RELOC_FRV_GOTTLSDESCLO: howto manager. (line 453) -* BFD_RELOC_FRV_GOTTLSOFF12: howto manager. (line 457) -* BFD_RELOC_FRV_GOTTLSOFFHI: howto manager. (line 458) -* BFD_RELOC_FRV_GOTTLSOFFLO: howto manager. (line 459) -* BFD_RELOC_FRV_GPREL12: howto manager. (line 430) -* BFD_RELOC_FRV_GPREL32: howto manager. (line 432) -* BFD_RELOC_FRV_GPRELHI: howto manager. (line 433) -* BFD_RELOC_FRV_GPRELLO: howto manager. (line 434) -* BFD_RELOC_FRV_GPRELU12: howto manager. (line 431) -* BFD_RELOC_FRV_HI16: howto manager. (line 429) -* BFD_RELOC_FRV_LABEL16: howto manager. (line 426) -* BFD_RELOC_FRV_LABEL24: howto manager. (line 427) -* BFD_RELOC_FRV_LO16: howto manager. (line 428) -* BFD_RELOC_FRV_TLSDESC_RELAX: howto manager. (line 461) -* BFD_RELOC_FRV_TLSDESC_VALUE: howto manager. (line 450) -* BFD_RELOC_FRV_TLSMOFF: howto manager. (line 464) -* BFD_RELOC_FRV_TLSMOFF12: howto manager. (line 454) -* BFD_RELOC_FRV_TLSMOFFHI: howto manager. (line 455) -* BFD_RELOC_FRV_TLSMOFFLO: howto manager. (line 456) -* BFD_RELOC_FRV_TLSOFF: howto manager. (line 460) -* BFD_RELOC_FRV_TLSOFF_RELAX: howto manager. (line 463) +* BFD_RELOC_CR16_ABS20: howto manager. (line 2013) +* BFD_RELOC_CR16_ABS24: howto manager. (line 2014) +* BFD_RELOC_CR16_DISP16: howto manager. (line 2024) +* BFD_RELOC_CR16_DISP20: howto manager. (line 2025) +* BFD_RELOC_CR16_DISP24: howto manager. (line 2026) +* BFD_RELOC_CR16_DISP24a: howto manager. (line 2027) +* BFD_RELOC_CR16_DISP4: howto manager. (line 2022) +* BFD_RELOC_CR16_DISP8: howto manager. (line 2023) +* BFD_RELOC_CR16_GLOB_DAT: howto manager. (line 2033) +* BFD_RELOC_CR16_GOT_REGREL20: howto manager. (line 2031) +* BFD_RELOC_CR16_GOTC_REGREL20: howto manager. (line 2032) +* BFD_RELOC_CR16_IMM16: howto manager. (line 2017) +* BFD_RELOC_CR16_IMM20: howto manager. (line 2018) +* BFD_RELOC_CR16_IMM24: howto manager. (line 2019) +* BFD_RELOC_CR16_IMM32: howto manager. (line 2020) +* BFD_RELOC_CR16_IMM32a: howto manager. (line 2021) +* BFD_RELOC_CR16_IMM4: howto manager. (line 2015) +* BFD_RELOC_CR16_IMM8: howto manager. (line 2016) +* BFD_RELOC_CR16_NUM16: howto manager. (line 2002) +* BFD_RELOC_CR16_NUM32: howto manager. (line 2003) +* BFD_RELOC_CR16_NUM32a: howto manager. (line 2004) +* BFD_RELOC_CR16_NUM8: howto manager. (line 2001) +* BFD_RELOC_CR16_REGREL0: howto manager. (line 2005) +* BFD_RELOC_CR16_REGREL14: howto manager. (line 2008) +* BFD_RELOC_CR16_REGREL14a: howto manager. (line 2009) +* BFD_RELOC_CR16_REGREL16: howto manager. (line 2010) +* BFD_RELOC_CR16_REGREL20: howto manager. (line 2011) +* BFD_RELOC_CR16_REGREL20a: howto manager. (line 2012) +* BFD_RELOC_CR16_REGREL4: howto manager. (line 2006) +* BFD_RELOC_CR16_REGREL4a: howto manager. (line 2007) +* BFD_RELOC_CR16_SWITCH16: howto manager. (line 2029) +* BFD_RELOC_CR16_SWITCH32: howto manager. (line 2030) +* BFD_RELOC_CR16_SWITCH8: howto manager. (line 2028) +* BFD_RELOC_CRIS_16_DTPREL: howto manager. (line 2104) +* BFD_RELOC_CRIS_16_GOT: howto manager. (line 2080) +* BFD_RELOC_CRIS_16_GOT_GD: howto manager. (line 2100) +* BFD_RELOC_CRIS_16_GOT_TPREL: howto manager. (line 2106) +* BFD_RELOC_CRIS_16_GOTPLT: howto manager. (line 2086) +* BFD_RELOC_CRIS_16_TPREL: howto manager. (line 2108) +* BFD_RELOC_CRIS_32_DTPREL: howto manager. (line 2103) +* BFD_RELOC_CRIS_32_GD: howto manager. (line 2101) +* BFD_RELOC_CRIS_32_GOT: howto manager. (line 2077) +* BFD_RELOC_CRIS_32_GOT_GD: howto manager. (line 2099) +* BFD_RELOC_CRIS_32_GOT_TPREL: howto manager. (line 2105) +* BFD_RELOC_CRIS_32_GOTPLT: howto manager. (line 2083) +* BFD_RELOC_CRIS_32_GOTREL: howto manager. (line 2089) +* BFD_RELOC_CRIS_32_IE: howto manager. (line 2110) +* BFD_RELOC_CRIS_32_PLT_GOTREL: howto manager. (line 2092) +* BFD_RELOC_CRIS_32_PLT_PCREL: howto manager. (line 2095) +* BFD_RELOC_CRIS_32_TPREL: howto manager. (line 2107) +* BFD_RELOC_CRIS_BDISP8: howto manager. (line 2058) +* BFD_RELOC_CRIS_COPY: howto manager. (line 2071) +* BFD_RELOC_CRIS_DTP: howto manager. (line 2102) +* BFD_RELOC_CRIS_DTPMOD: howto manager. (line 2109) +* BFD_RELOC_CRIS_GLOB_DAT: howto manager. (line 2072) +* BFD_RELOC_CRIS_JUMP_SLOT: howto manager. (line 2073) +* BFD_RELOC_CRIS_LAPCQ_OFFSET: howto manager. (line 2066) +* BFD_RELOC_CRIS_RELATIVE: howto manager. (line 2074) +* BFD_RELOC_CRIS_SIGNED_16: howto manager. (line 2064) +* BFD_RELOC_CRIS_SIGNED_6: howto manager. (line 2060) +* BFD_RELOC_CRIS_SIGNED_8: howto manager. (line 2062) +* BFD_RELOC_CRIS_UNSIGNED_16: howto manager. (line 2065) +* BFD_RELOC_CRIS_UNSIGNED_4: howto manager. (line 2067) +* BFD_RELOC_CRIS_UNSIGNED_5: howto manager. (line 2059) +* BFD_RELOC_CRIS_UNSIGNED_6: howto manager. (line 2061) +* BFD_RELOC_CRIS_UNSIGNED_8: howto manager. (line 2063) +* BFD_RELOC_CRX_ABS16: howto manager. (line 2046) +* BFD_RELOC_CRX_ABS32: howto manager. (line 2047) +* BFD_RELOC_CRX_IMM16: howto manager. (line 2051) +* BFD_RELOC_CRX_IMM32: howto manager. (line 2052) +* BFD_RELOC_CRX_NUM16: howto manager. (line 2049) +* BFD_RELOC_CRX_NUM32: howto manager. (line 2050) +* BFD_RELOC_CRX_NUM8: howto manager. (line 2048) +* BFD_RELOC_CRX_REGREL12: howto manager. (line 2042) +* BFD_RELOC_CRX_REGREL22: howto manager. (line 2043) +* BFD_RELOC_CRX_REGREL28: howto manager. (line 2044) +* BFD_RELOC_CRX_REGREL32: howto manager. (line 2045) +* BFD_RELOC_CRX_REL16: howto manager. (line 2039) +* BFD_RELOC_CRX_REL24: howto manager. (line 2040) +* BFD_RELOC_CRX_REL32: howto manager. (line 2041) +* BFD_RELOC_CRX_REL4: howto manager. (line 2036) +* BFD_RELOC_CRX_REL8: howto manager. (line 2037) +* BFD_RELOC_CRX_REL8_CMP: howto manager. (line 2038) +* BFD_RELOC_CRX_SWITCH16: howto manager. (line 2054) +* BFD_RELOC_CRX_SWITCH32: howto manager. (line 2055) +* BFD_RELOC_CRX_SWITCH8: howto manager. (line 2053) +* BFD_RELOC_CTOR: howto manager. (line 688) +* BFD_RELOC_D10V_10_PCREL_L: howto manager. (line 1083) +* BFD_RELOC_D10V_10_PCREL_R: howto manager. (line 1079) +* BFD_RELOC_D10V_18: howto manager. (line 1088) +* BFD_RELOC_D10V_18_PCREL: howto manager. (line 1091) +* BFD_RELOC_D30V_15: howto manager. (line 1106) +* BFD_RELOC_D30V_15_PCREL: howto manager. (line 1110) +* BFD_RELOC_D30V_15_PCREL_R: howto manager. (line 1114) +* BFD_RELOC_D30V_21: howto manager. (line 1119) +* BFD_RELOC_D30V_21_PCREL: howto manager. (line 1123) +* BFD_RELOC_D30V_21_PCREL_R: howto manager. (line 1127) +* BFD_RELOC_D30V_32: howto manager. (line 1132) +* BFD_RELOC_D30V_32_PCREL: howto manager. (line 1135) +* BFD_RELOC_D30V_6: howto manager. (line 1094) +* BFD_RELOC_D30V_9_PCREL: howto manager. (line 1097) +* BFD_RELOC_D30V_9_PCREL_R: howto manager. (line 1101) +* BFD_RELOC_DLX_HI16_S: howto manager. (line 1138) +* BFD_RELOC_DLX_JMP26: howto manager. (line 1144) +* BFD_RELOC_DLX_LO16: howto manager. (line 1141) +* BFD_RELOC_FR30_10_IN_8: howto manager. (line 1421) +* BFD_RELOC_FR30_12_PCREL: howto manager. (line 1429) +* BFD_RELOC_FR30_20: howto manager. (line 1405) +* BFD_RELOC_FR30_48: howto manager. (line 1402) +* BFD_RELOC_FR30_6_IN_4: howto manager. (line 1409) +* BFD_RELOC_FR30_8_IN_8: howto manager. (line 1413) +* BFD_RELOC_FR30_9_IN_8: howto manager. (line 1417) +* BFD_RELOC_FR30_9_PCREL: howto manager. (line 1425) +* BFD_RELOC_FRV_FUNCDESC: howto manager. (line 440) +* BFD_RELOC_FRV_FUNCDESC_GOT12: howto manager. (line 441) +* BFD_RELOC_FRV_FUNCDESC_GOTHI: howto manager. (line 442) +* BFD_RELOC_FRV_FUNCDESC_GOTLO: howto manager. (line 443) +* BFD_RELOC_FRV_FUNCDESC_GOTOFF12: howto manager. (line 445) +* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: howto manager. (line 446) +* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: howto manager. (line 447) +* BFD_RELOC_FRV_FUNCDESC_VALUE: howto manager. (line 444) +* BFD_RELOC_FRV_GETTLSOFF: howto manager. (line 451) +* BFD_RELOC_FRV_GETTLSOFF_RELAX: howto manager. (line 464) +* BFD_RELOC_FRV_GOT12: howto manager. (line 437) +* BFD_RELOC_FRV_GOTHI: howto manager. (line 438) +* BFD_RELOC_FRV_GOTLO: howto manager. (line 439) +* BFD_RELOC_FRV_GOTOFF12: howto manager. (line 448) +* BFD_RELOC_FRV_GOTOFFHI: howto manager. (line 449) +* BFD_RELOC_FRV_GOTOFFLO: howto manager. (line 450) +* BFD_RELOC_FRV_GOTTLSDESC12: howto manager. (line 453) +* BFD_RELOC_FRV_GOTTLSDESCHI: howto manager. (line 454) +* BFD_RELOC_FRV_GOTTLSDESCLO: howto manager. (line 455) +* BFD_RELOC_FRV_GOTTLSOFF12: howto manager. (line 459) +* BFD_RELOC_FRV_GOTTLSOFFHI: howto manager. (line 460) +* BFD_RELOC_FRV_GOTTLSOFFLO: howto manager. (line 461) +* BFD_RELOC_FRV_GPREL12: howto manager. (line 432) +* BFD_RELOC_FRV_GPREL32: howto manager. (line 434) +* BFD_RELOC_FRV_GPRELHI: howto manager. (line 435) +* BFD_RELOC_FRV_GPRELLO: howto manager. (line 436) +* BFD_RELOC_FRV_GPRELU12: howto manager. (line 433) +* BFD_RELOC_FRV_HI16: howto manager. (line 431) +* BFD_RELOC_FRV_LABEL16: howto manager. (line 428) +* BFD_RELOC_FRV_LABEL24: howto manager. (line 429) +* BFD_RELOC_FRV_LO16: howto manager. (line 430) +* BFD_RELOC_FRV_TLSDESC_RELAX: howto manager. (line 463) +* BFD_RELOC_FRV_TLSDESC_VALUE: howto manager. (line 452) +* BFD_RELOC_FRV_TLSMOFF: howto manager. (line 466) +* BFD_RELOC_FRV_TLSMOFF12: howto manager. (line 456) +* BFD_RELOC_FRV_TLSMOFFHI: howto manager. (line 457) +* BFD_RELOC_FRV_TLSMOFFLO: howto manager. (line 458) +* BFD_RELOC_FRV_TLSOFF: howto manager. (line 462) +* BFD_RELOC_FRV_TLSOFF_RELAX: howto manager. (line 465) * BFD_RELOC_GPREL16: howto manager. (line 121) * BFD_RELOC_GPREL32: howto manager. (line 122) -* BFD_RELOC_H8_DIR16A8: howto manager. (line 2004) -* BFD_RELOC_H8_DIR16R8: howto manager. (line 2005) -* BFD_RELOC_H8_DIR24A8: howto manager. (line 2006) -* BFD_RELOC_H8_DIR24R8: howto manager. (line 2007) -* BFD_RELOC_H8_DIR32A16: howto manager. (line 2008) -* BFD_RELOC_HI16: howto manager. (line 342) +* BFD_RELOC_H8_DIR16A8: howto manager. (line 2151) +* BFD_RELOC_H8_DIR16R8: howto manager. (line 2152) +* BFD_RELOC_H8_DIR24A8: howto manager. (line 2153) +* BFD_RELOC_H8_DIR24R8: howto manager. (line 2154) +* BFD_RELOC_H8_DIR32A16: howto manager. (line 2155) +* BFD_RELOC_HI16: howto manager. (line 344) * BFD_RELOC_HI16_BASEREL: howto manager. (line 97) * BFD_RELOC_HI16_GOTOFF: howto manager. (line 57) -* BFD_RELOC_HI16_PCREL: howto manager. (line 354) +* BFD_RELOC_HI16_PCREL: howto manager. (line 356) * BFD_RELOC_HI16_PLTOFF: howto manager. (line 69) -* BFD_RELOC_HI16_S: howto manager. (line 345) +* BFD_RELOC_HI16_S: howto manager. (line 347) * BFD_RELOC_HI16_S_BASEREL: howto manager. (line 98) * BFD_RELOC_HI16_S_GOTOFF: howto manager. (line 58) -* BFD_RELOC_HI16_S_PCREL: howto manager. (line 357) +* BFD_RELOC_HI16_S_PCREL: howto manager. (line 359) * BFD_RELOC_HI16_S_PLTOFF: howto manager. (line 70) * BFD_RELOC_HI22: howto manager. (line 116) -* BFD_RELOC_I370_D12: howto manager. (line 683) +* BFD_RELOC_I370_D12: howto manager. (line 685) * BFD_RELOC_I960_CALLJ: howto manager. (line 128) -* BFD_RELOC_IA64_COPY: howto manager. (line 1748) -* BFD_RELOC_IA64_DIR32LSB: howto manager. (line 1693) -* BFD_RELOC_IA64_DIR32MSB: howto manager. (line 1692) -* BFD_RELOC_IA64_DIR64LSB: howto manager. (line 1695) -* BFD_RELOC_IA64_DIR64MSB: howto manager. (line 1694) -* BFD_RELOC_IA64_DTPMOD64LSB: howto manager. (line 1758) -* BFD_RELOC_IA64_DTPMOD64MSB: howto manager. (line 1757) -* BFD_RELOC_IA64_DTPREL14: howto manager. (line 1760) -* BFD_RELOC_IA64_DTPREL22: howto manager. (line 1761) -* BFD_RELOC_IA64_DTPREL32LSB: howto manager. (line 1764) -* BFD_RELOC_IA64_DTPREL32MSB: howto manager. (line 1763) -* BFD_RELOC_IA64_DTPREL64I: howto manager. (line 1762) -* BFD_RELOC_IA64_DTPREL64LSB: howto manager. (line 1766) -* BFD_RELOC_IA64_DTPREL64MSB: howto manager. (line 1765) -* BFD_RELOC_IA64_FPTR32LSB: howto manager. (line 1710) -* BFD_RELOC_IA64_FPTR32MSB: howto manager. (line 1709) -* BFD_RELOC_IA64_FPTR64I: howto manager. (line 1708) -* BFD_RELOC_IA64_FPTR64LSB: howto manager. (line 1712) -* BFD_RELOC_IA64_FPTR64MSB: howto manager. (line 1711) -* BFD_RELOC_IA64_GPREL22: howto manager. (line 1696) -* BFD_RELOC_IA64_GPREL32LSB: howto manager. (line 1699) -* BFD_RELOC_IA64_GPREL32MSB: howto manager. (line 1698) -* BFD_RELOC_IA64_GPREL64I: howto manager. (line 1697) -* BFD_RELOC_IA64_GPREL64LSB: howto manager. (line 1701) -* BFD_RELOC_IA64_GPREL64MSB: howto manager. (line 1700) -* BFD_RELOC_IA64_IMM14: howto manager. (line 1689) -* BFD_RELOC_IA64_IMM22: howto manager. (line 1690) -* BFD_RELOC_IA64_IMM64: howto manager. (line 1691) -* BFD_RELOC_IA64_IPLTLSB: howto manager. (line 1747) -* BFD_RELOC_IA64_IPLTMSB: howto manager. (line 1746) -* BFD_RELOC_IA64_LDXMOV: howto manager. (line 1750) -* BFD_RELOC_IA64_LTOFF22: howto manager. (line 1702) -* BFD_RELOC_IA64_LTOFF22X: howto manager. (line 1749) -* BFD_RELOC_IA64_LTOFF64I: howto manager. (line 1703) -* BFD_RELOC_IA64_LTOFF_DTPMOD22: howto manager. (line 1759) -* BFD_RELOC_IA64_LTOFF_DTPREL22: howto manager. (line 1767) -* BFD_RELOC_IA64_LTOFF_FPTR22: howto manager. (line 1724) -* BFD_RELOC_IA64_LTOFF_FPTR32LSB: howto manager. (line 1727) -* BFD_RELOC_IA64_LTOFF_FPTR32MSB: howto manager. (line 1726) -* BFD_RELOC_IA64_LTOFF_FPTR64I: howto manager. (line 1725) -* BFD_RELOC_IA64_LTOFF_FPTR64LSB: howto manager. (line 1729) -* BFD_RELOC_IA64_LTOFF_FPTR64MSB: howto manager. (line 1728) -* BFD_RELOC_IA64_LTOFF_TPREL22: howto manager. (line 1756) -* BFD_RELOC_IA64_LTV32LSB: howto manager. (line 1743) -* BFD_RELOC_IA64_LTV32MSB: howto manager. (line 1742) -* BFD_RELOC_IA64_LTV64LSB: howto manager. (line 1745) -* BFD_RELOC_IA64_LTV64MSB: howto manager. (line 1744) -* BFD_RELOC_IA64_PCREL21B: howto manager. (line 1713) -* BFD_RELOC_IA64_PCREL21BI: howto manager. (line 1714) -* BFD_RELOC_IA64_PCREL21F: howto manager. (line 1716) -* BFD_RELOC_IA64_PCREL21M: howto manager. (line 1715) -* BFD_RELOC_IA64_PCREL22: howto manager. (line 1717) -* BFD_RELOC_IA64_PCREL32LSB: howto manager. (line 1721) -* BFD_RELOC_IA64_PCREL32MSB: howto manager. (line 1720) -* BFD_RELOC_IA64_PCREL60B: howto manager. (line 1718) -* BFD_RELOC_IA64_PCREL64I: howto manager. (line 1719) -* BFD_RELOC_IA64_PCREL64LSB: howto manager. (line 1723) -* BFD_RELOC_IA64_PCREL64MSB: howto manager. (line 1722) -* BFD_RELOC_IA64_PLTOFF22: howto manager. (line 1704) -* BFD_RELOC_IA64_PLTOFF64I: howto manager. (line 1705) -* BFD_RELOC_IA64_PLTOFF64LSB: howto manager. (line 1707) -* BFD_RELOC_IA64_PLTOFF64MSB: howto manager. (line 1706) -* BFD_RELOC_IA64_REL32LSB: howto manager. (line 1739) -* BFD_RELOC_IA64_REL32MSB: howto manager. (line 1738) -* BFD_RELOC_IA64_REL64LSB: howto manager. (line 1741) -* BFD_RELOC_IA64_REL64MSB: howto manager. (line 1740) -* BFD_RELOC_IA64_SECREL32LSB: howto manager. (line 1735) -* BFD_RELOC_IA64_SECREL32MSB: howto manager. (line 1734) -* BFD_RELOC_IA64_SECREL64LSB: howto manager. (line 1737) -* BFD_RELOC_IA64_SECREL64MSB: howto manager. (line 1736) -* BFD_RELOC_IA64_SEGREL32LSB: howto manager. (line 1731) -* BFD_RELOC_IA64_SEGREL32MSB: howto manager. (line 1730) -* BFD_RELOC_IA64_SEGREL64LSB: howto manager. (line 1733) -* BFD_RELOC_IA64_SEGREL64MSB: howto manager. (line 1732) -* BFD_RELOC_IA64_TPREL14: howto manager. (line 1751) -* BFD_RELOC_IA64_TPREL22: howto manager. (line 1752) -* BFD_RELOC_IA64_TPREL64I: howto manager. (line 1753) -* BFD_RELOC_IA64_TPREL64LSB: howto manager. (line 1755) -* BFD_RELOC_IA64_TPREL64MSB: howto manager. (line 1754) -* BFD_RELOC_IP2K_ADDR16CJP: howto manager. (line 1641) -* BFD_RELOC_IP2K_BANK: howto manager. (line 1638) -* BFD_RELOC_IP2K_EX8DATA: howto manager. (line 1649) -* BFD_RELOC_IP2K_FR9: howto manager. (line 1635) -* BFD_RELOC_IP2K_FR_OFFSET: howto manager. (line 1662) -* BFD_RELOC_IP2K_HI8DATA: howto manager. (line 1648) -* BFD_RELOC_IP2K_HI8INSN: howto manager. (line 1653) -* BFD_RELOC_IP2K_LO8DATA: howto manager. (line 1647) -* BFD_RELOC_IP2K_LO8INSN: howto manager. (line 1652) -* BFD_RELOC_IP2K_PAGE3: howto manager. (line 1644) -* BFD_RELOC_IP2K_PC_SKIP: howto manager. (line 1656) -* BFD_RELOC_IP2K_TEXT: howto manager. (line 1659) -* BFD_RELOC_IQ2000_OFFSET_16: howto manager. (line 2058) -* BFD_RELOC_IQ2000_OFFSET_21: howto manager. (line 2059) -* BFD_RELOC_IQ2000_UHI16: howto manager. (line 2060) -* BFD_RELOC_LM32_16_GOT: howto manager. (line 2165) -* BFD_RELOC_LM32_BRANCH: howto manager. (line 2164) -* BFD_RELOC_LM32_CALL: howto manager. (line 2163) -* BFD_RELOC_LM32_COPY: howto manager. (line 2168) -* BFD_RELOC_LM32_GLOB_DAT: howto manager. (line 2169) -* BFD_RELOC_LM32_GOTOFF_HI16: howto manager. (line 2166) -* BFD_RELOC_LM32_GOTOFF_LO16: howto manager. (line 2167) -* BFD_RELOC_LM32_JMP_SLOT: howto manager. (line 2170) -* BFD_RELOC_LM32_RELATIVE: howto manager. (line 2171) +* BFD_RELOC_IA64_COPY: howto manager. (line 1895) +* BFD_RELOC_IA64_DIR32LSB: howto manager. (line 1840) +* BFD_RELOC_IA64_DIR32MSB: howto manager. (line 1839) +* BFD_RELOC_IA64_DIR64LSB: howto manager. (line 1842) +* BFD_RELOC_IA64_DIR64MSB: howto manager. (line 1841) +* BFD_RELOC_IA64_DTPMOD64LSB: howto manager. (line 1905) +* BFD_RELOC_IA64_DTPMOD64MSB: howto manager. (line 1904) +* BFD_RELOC_IA64_DTPREL14: howto manager. (line 1907) +* BFD_RELOC_IA64_DTPREL22: howto manager. (line 1908) +* BFD_RELOC_IA64_DTPREL32LSB: howto manager. (line 1911) +* BFD_RELOC_IA64_DTPREL32MSB: howto manager. (line 1910) +* BFD_RELOC_IA64_DTPREL64I: howto manager. (line 1909) +* BFD_RELOC_IA64_DTPREL64LSB: howto manager. (line 1913) +* BFD_RELOC_IA64_DTPREL64MSB: howto manager. (line 1912) +* BFD_RELOC_IA64_FPTR32LSB: howto manager. (line 1857) +* BFD_RELOC_IA64_FPTR32MSB: howto manager. (line 1856) +* BFD_RELOC_IA64_FPTR64I: howto manager. (line 1855) +* BFD_RELOC_IA64_FPTR64LSB: howto manager. (line 1859) +* BFD_RELOC_IA64_FPTR64MSB: howto manager. (line 1858) +* BFD_RELOC_IA64_GPREL22: howto manager. (line 1843) +* BFD_RELOC_IA64_GPREL32LSB: howto manager. (line 1846) +* BFD_RELOC_IA64_GPREL32MSB: howto manager. (line 1845) +* BFD_RELOC_IA64_GPREL64I: howto manager. (line 1844) +* BFD_RELOC_IA64_GPREL64LSB: howto manager. (line 1848) +* BFD_RELOC_IA64_GPREL64MSB: howto manager. (line 1847) +* BFD_RELOC_IA64_IMM14: howto manager. (line 1836) +* BFD_RELOC_IA64_IMM22: howto manager. (line 1837) +* BFD_RELOC_IA64_IMM64: howto manager. (line 1838) +* BFD_RELOC_IA64_IPLTLSB: howto manager. (line 1894) +* BFD_RELOC_IA64_IPLTMSB: howto manager. (line 1893) +* BFD_RELOC_IA64_LDXMOV: howto manager. (line 1897) +* BFD_RELOC_IA64_LTOFF22: howto manager. (line 1849) +* BFD_RELOC_IA64_LTOFF22X: howto manager. (line 1896) +* BFD_RELOC_IA64_LTOFF64I: howto manager. (line 1850) +* BFD_RELOC_IA64_LTOFF_DTPMOD22: howto manager. (line 1906) +* BFD_RELOC_IA64_LTOFF_DTPREL22: howto manager. (line 1914) +* BFD_RELOC_IA64_LTOFF_FPTR22: howto manager. (line 1871) +* BFD_RELOC_IA64_LTOFF_FPTR32LSB: howto manager. (line 1874) +* BFD_RELOC_IA64_LTOFF_FPTR32MSB: howto manager. (line 1873) +* BFD_RELOC_IA64_LTOFF_FPTR64I: howto manager. (line 1872) +* BFD_RELOC_IA64_LTOFF_FPTR64LSB: howto manager. (line 1876) +* BFD_RELOC_IA64_LTOFF_FPTR64MSB: howto manager. (line 1875) +* BFD_RELOC_IA64_LTOFF_TPREL22: howto manager. (line 1903) +* BFD_RELOC_IA64_LTV32LSB: howto manager. (line 1890) +* BFD_RELOC_IA64_LTV32MSB: howto manager. (line 1889) +* BFD_RELOC_IA64_LTV64LSB: howto manager. (line 1892) +* BFD_RELOC_IA64_LTV64MSB: howto manager. (line 1891) +* BFD_RELOC_IA64_PCREL21B: howto manager. (line 1860) +* BFD_RELOC_IA64_PCREL21BI: howto manager. (line 1861) +* BFD_RELOC_IA64_PCREL21F: howto manager. (line 1863) +* BFD_RELOC_IA64_PCREL21M: howto manager. (line 1862) +* BFD_RELOC_IA64_PCREL22: howto manager. (line 1864) +* BFD_RELOC_IA64_PCREL32LSB: howto manager. (line 1868) +* BFD_RELOC_IA64_PCREL32MSB: howto manager. (line 1867) +* BFD_RELOC_IA64_PCREL60B: howto manager. (line 1865) +* BFD_RELOC_IA64_PCREL64I: howto manager. (line 1866) +* BFD_RELOC_IA64_PCREL64LSB: howto manager. (line 1870) +* BFD_RELOC_IA64_PCREL64MSB: howto manager. (line 1869) +* BFD_RELOC_IA64_PLTOFF22: howto manager. (line 1851) +* BFD_RELOC_IA64_PLTOFF64I: howto manager. (line 1852) +* BFD_RELOC_IA64_PLTOFF64LSB: howto manager. (line 1854) +* BFD_RELOC_IA64_PLTOFF64MSB: howto manager. (line 1853) +* BFD_RELOC_IA64_REL32LSB: howto manager. (line 1886) +* BFD_RELOC_IA64_REL32MSB: howto manager. (line 1885) +* BFD_RELOC_IA64_REL64LSB: howto manager. (line 1888) +* BFD_RELOC_IA64_REL64MSB: howto manager. (line 1887) +* BFD_RELOC_IA64_SECREL32LSB: howto manager. (line 1882) +* BFD_RELOC_IA64_SECREL32MSB: howto manager. (line 1881) +* BFD_RELOC_IA64_SECREL64LSB: howto manager. (line 1884) +* BFD_RELOC_IA64_SECREL64MSB: howto manager. (line 1883) +* BFD_RELOC_IA64_SEGREL32LSB: howto manager. (line 1878) +* BFD_RELOC_IA64_SEGREL32MSB: howto manager. (line 1877) +* BFD_RELOC_IA64_SEGREL64LSB: howto manager. (line 1880) +* BFD_RELOC_IA64_SEGREL64MSB: howto manager. (line 1879) +* BFD_RELOC_IA64_TPREL14: howto manager. (line 1898) +* BFD_RELOC_IA64_TPREL22: howto manager. (line 1899) +* BFD_RELOC_IA64_TPREL64I: howto manager. (line 1900) +* BFD_RELOC_IA64_TPREL64LSB: howto manager. (line 1902) +* BFD_RELOC_IA64_TPREL64MSB: howto manager. (line 1901) +* BFD_RELOC_IP2K_ADDR16CJP: howto manager. (line 1788) +* BFD_RELOC_IP2K_BANK: howto manager. (line 1785) +* BFD_RELOC_IP2K_EX8DATA: howto manager. (line 1796) +* BFD_RELOC_IP2K_FR9: howto manager. (line 1782) +* BFD_RELOC_IP2K_FR_OFFSET: howto manager. (line 1809) +* BFD_RELOC_IP2K_HI8DATA: howto manager. (line 1795) +* BFD_RELOC_IP2K_HI8INSN: howto manager. (line 1800) +* BFD_RELOC_IP2K_LO8DATA: howto manager. (line 1794) +* BFD_RELOC_IP2K_LO8INSN: howto manager. (line 1799) +* BFD_RELOC_IP2K_PAGE3: howto manager. (line 1791) +* BFD_RELOC_IP2K_PC_SKIP: howto manager. (line 1803) +* BFD_RELOC_IP2K_TEXT: howto manager. (line 1806) +* BFD_RELOC_IQ2000_OFFSET_16: howto manager. (line 2205) +* BFD_RELOC_IQ2000_OFFSET_21: howto manager. (line 2206) +* BFD_RELOC_IQ2000_UHI16: howto manager. (line 2207) +* BFD_RELOC_LM32_16_GOT: howto manager. (line 2312) +* BFD_RELOC_LM32_BRANCH: howto manager. (line 2311) +* BFD_RELOC_LM32_CALL: howto manager. (line 2310) +* BFD_RELOC_LM32_COPY: howto manager. (line 2315) +* BFD_RELOC_LM32_GLOB_DAT: howto manager. (line 2316) +* BFD_RELOC_LM32_GOTOFF_HI16: howto manager. (line 2313) +* BFD_RELOC_LM32_GOTOFF_LO16: howto manager. (line 2314) +* BFD_RELOC_LM32_JMP_SLOT: howto manager. (line 2317) +* BFD_RELOC_LM32_RELATIVE: howto manager. (line 2318) * BFD_RELOC_LO10: howto manager. (line 117) -* BFD_RELOC_LO16: howto manager. (line 351) +* BFD_RELOC_LO16: howto manager. (line 353) * BFD_RELOC_LO16_BASEREL: howto manager. (line 96) * BFD_RELOC_LO16_GOTOFF: howto manager. (line 56) -* BFD_RELOC_LO16_PCREL: howto manager. (line 360) +* BFD_RELOC_LO16_PCREL: howto manager. (line 362) * BFD_RELOC_LO16_PLTOFF: howto manager. (line 68) -* BFD_RELOC_M32C_HI8: howto manager. (line 1127) -* BFD_RELOC_M32C_RL_1ADDR: howto manager. (line 1129) -* BFD_RELOC_M32C_RL_2ADDR: howto manager. (line 1130) -* BFD_RELOC_M32C_RL_JUMP: howto manager. (line 1128) -* BFD_RELOC_M32R_10_PCREL: howto manager. (line 1137) -* BFD_RELOC_M32R_18_PCREL: howto manager. (line 1141) -* BFD_RELOC_M32R_24: howto manager. (line 1133) -* BFD_RELOC_M32R_26_PCREL: howto manager. (line 1144) -* BFD_RELOC_M32R_26_PLTREL: howto manager. (line 1163) -* BFD_RELOC_M32R_COPY: howto manager. (line 1164) -* BFD_RELOC_M32R_GLOB_DAT: howto manager. (line 1165) -* BFD_RELOC_M32R_GOT16_HI_SLO: howto manager. (line 1174) -* BFD_RELOC_M32R_GOT16_HI_ULO: howto manager. (line 1173) -* BFD_RELOC_M32R_GOT16_LO: howto manager. (line 1175) -* BFD_RELOC_M32R_GOT24: howto manager. (line 1162) -* BFD_RELOC_M32R_GOTOFF: howto manager. (line 1168) -* BFD_RELOC_M32R_GOTOFF_HI_SLO: howto manager. (line 1170) -* BFD_RELOC_M32R_GOTOFF_HI_ULO: howto manager. (line 1169) -* BFD_RELOC_M32R_GOTOFF_LO: howto manager. (line 1171) -* BFD_RELOC_M32R_GOTPC24: howto manager. (line 1172) -* BFD_RELOC_M32R_GOTPC_HI_SLO: howto manager. (line 1177) -* BFD_RELOC_M32R_GOTPC_HI_ULO: howto manager. (line 1176) -* BFD_RELOC_M32R_GOTPC_LO: howto manager. (line 1178) -* BFD_RELOC_M32R_HI16_SLO: howto manager. (line 1151) -* BFD_RELOC_M32R_HI16_ULO: howto manager. (line 1147) -* BFD_RELOC_M32R_JMP_SLOT: howto manager. (line 1166) -* BFD_RELOC_M32R_LO16: howto manager. (line 1155) -* BFD_RELOC_M32R_RELATIVE: howto manager. (line 1167) -* BFD_RELOC_M32R_SDA16: howto manager. (line 1158) -* BFD_RELOC_M68HC11_24: howto manager. (line 1803) -* BFD_RELOC_M68HC11_3B: howto manager. (line 1778) -* BFD_RELOC_M68HC11_HI8: howto manager. (line 1770) -* BFD_RELOC_M68HC11_LO16: howto manager. (line 1792) -* BFD_RELOC_M68HC11_LO8: howto manager. (line 1774) -* BFD_RELOC_M68HC11_PAGE: howto manager. (line 1798) -* BFD_RELOC_M68HC11_RL_GROUP: howto manager. (line 1787) -* BFD_RELOC_M68HC11_RL_JUMP: howto manager. (line 1781) -* BFD_RELOC_M68HC12_5B: howto manager. (line 1809) -* BFD_RELOC_MACH_O_PAIR: howto manager. (line 2178) -* BFD_RELOC_MACH_O_SECTDIFF: howto manager. (line 2174) -* BFD_RELOC_MCORE_PCREL_32: howto manager. (line 1318) -* BFD_RELOC_MCORE_PCREL_IMM11BY2: howto manager. (line 1316) -* BFD_RELOC_MCORE_PCREL_IMM4BY2: howto manager. (line 1317) -* BFD_RELOC_MCORE_PCREL_IMM8BY4: howto manager. (line 1315) -* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2: howto manager. (line 1319) -* BFD_RELOC_MCORE_RVA: howto manager. (line 1320) -* BFD_RELOC_MEP_16: howto manager. (line 1324) -* BFD_RELOC_MEP_32: howto manager. (line 1325) -* BFD_RELOC_MEP_8: howto manager. (line 1323) -* BFD_RELOC_MEP_ADDR24A4: howto manager. (line 1340) -* BFD_RELOC_MEP_GNU_VTENTRY: howto manager. (line 1342) -* BFD_RELOC_MEP_GNU_VTINHERIT: howto manager. (line 1341) -* BFD_RELOC_MEP_GPREL: howto manager. (line 1334) -* BFD_RELOC_MEP_HI16S: howto manager. (line 1333) -* BFD_RELOC_MEP_HI16U: howto manager. (line 1332) -* BFD_RELOC_MEP_LOW16: howto manager. (line 1331) -* BFD_RELOC_MEP_PCABS24A2: howto manager. (line 1330) -* BFD_RELOC_MEP_PCREL12A2: howto manager. (line 1327) -* BFD_RELOC_MEP_PCREL17A2: howto manager. (line 1328) -* BFD_RELOC_MEP_PCREL24A2: howto manager. (line 1329) -* BFD_RELOC_MEP_PCREL8A2: howto manager. (line 1326) -* BFD_RELOC_MEP_TPREL: howto manager. (line 1335) -* BFD_RELOC_MEP_TPREL7: howto manager. (line 1336) -* BFD_RELOC_MEP_TPREL7A2: howto manager. (line 1337) -* BFD_RELOC_MEP_TPREL7A4: howto manager. (line 1338) -* BFD_RELOC_MEP_UIMM24: howto manager. (line 1339) -* BFD_RELOC_MICROBLAZE_32_GOTOFF: howto manager. (line 2225) -* BFD_RELOC_MICROBLAZE_32_LO: howto manager. (line 2181) -* BFD_RELOC_MICROBLAZE_32_LO_PCREL: howto manager. (line 2185) -* BFD_RELOC_MICROBLAZE_32_ROSDA: howto manager. (line 2189) -* BFD_RELOC_MICROBLAZE_32_RWSDA: howto manager. (line 2193) -* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM: howto manager. (line 2197) -* BFD_RELOC_MICROBLAZE_64_GOT: howto manager. (line 2211) -* BFD_RELOC_MICROBLAZE_64_GOTOFF: howto manager. (line 2220) -* BFD_RELOC_MICROBLAZE_64_GOTPC: howto manager. (line 2206) -* BFD_RELOC_MICROBLAZE_64_NONE: howto manager. (line 2201) -* BFD_RELOC_MICROBLAZE_64_PLT: howto manager. (line 2215) -* BFD_RELOC_MICROBLAZE_COPY: howto manager. (line 2229) -* BFD_RELOC_MIPS16_CALL16: howto manager. (line 364) -* BFD_RELOC_MIPS16_GOT16: howto manager. (line 363) -* BFD_RELOC_MIPS16_GPREL: howto manager. (line 339) -* BFD_RELOC_MIPS16_HI16: howto manager. (line 368) -* BFD_RELOC_MIPS16_HI16_S: howto manager. (line 371) -* BFD_RELOC_MIPS16_JMP: howto manager. (line 336) -* BFD_RELOC_MIPS16_LO16: howto manager. (line 377) -* BFD_RELOC_MIPS_CALL16: howto manager. (line 384) -* BFD_RELOC_MIPS_CALL_HI16: howto manager. (line 387) -* BFD_RELOC_MIPS_CALL_LO16: howto manager. (line 388) -* BFD_RELOC_MIPS_COPY: howto manager. (line 419) -* BFD_RELOC_MIPS_DELETE: howto manager. (line 397) -* BFD_RELOC_MIPS_GOT16: howto manager. (line 383) -* BFD_RELOC_MIPS_GOT_DISP: howto manager. (line 392) -* BFD_RELOC_MIPS_GOT_HI16: howto manager. (line 385) -* BFD_RELOC_MIPS_GOT_LO16: howto manager. (line 386) -* BFD_RELOC_MIPS_GOT_OFST: howto manager. (line 391) -* BFD_RELOC_MIPS_GOT_PAGE: howto manager. (line 390) -* BFD_RELOC_MIPS_HIGHER: howto manager. (line 399) -* BFD_RELOC_MIPS_HIGHEST: howto manager. (line 398) -* BFD_RELOC_MIPS_INSERT_A: howto manager. (line 395) -* BFD_RELOC_MIPS_INSERT_B: howto manager. (line 396) -* BFD_RELOC_MIPS_JALR: howto manager. (line 403) -* BFD_RELOC_MIPS_JMP: howto manager. (line 332) -* BFD_RELOC_MIPS_JUMP_SLOT: howto manager. (line 420) -* BFD_RELOC_MIPS_LITERAL: howto manager. (line 380) -* BFD_RELOC_MIPS_REL16: howto manager. (line 401) -* BFD_RELOC_MIPS_RELGOT: howto manager. (line 402) -* BFD_RELOC_MIPS_SCN_DISP: howto manager. (line 400) -* BFD_RELOC_MIPS_SHIFT5: howto manager. (line 393) -* BFD_RELOC_MIPS_SHIFT6: howto manager. (line 394) -* BFD_RELOC_MIPS_SUB: howto manager. (line 389) -* BFD_RELOC_MIPS_TLS_DTPMOD32: howto manager. (line 404) -* BFD_RELOC_MIPS_TLS_DTPMOD64: howto manager. (line 406) -* BFD_RELOC_MIPS_TLS_DTPREL32: howto manager. (line 405) -* BFD_RELOC_MIPS_TLS_DTPREL64: howto manager. (line 407) -* BFD_RELOC_MIPS_TLS_DTPREL_HI16: howto manager. (line 410) -* BFD_RELOC_MIPS_TLS_DTPREL_LO16: howto manager. (line 411) -* BFD_RELOC_MIPS_TLS_GD: howto manager. (line 408) -* BFD_RELOC_MIPS_TLS_GOTTPREL: howto manager. (line 412) -* BFD_RELOC_MIPS_TLS_LDM: howto manager. (line 409) -* BFD_RELOC_MIPS_TLS_TPREL32: howto manager. (line 413) -* BFD_RELOC_MIPS_TLS_TPREL64: howto manager. (line 414) -* BFD_RELOC_MIPS_TLS_TPREL_HI16: howto manager. (line 415) -* BFD_RELOC_MIPS_TLS_TPREL_LO16: howto manager. (line 416) -* BFD_RELOC_MMIX_ADDR19: howto manager. (line 1371) -* BFD_RELOC_MMIX_ADDR27: howto manager. (line 1375) -* BFD_RELOC_MMIX_BASE_PLUS_OFFSET: howto manager. (line 1387) -* BFD_RELOC_MMIX_CBRANCH: howto manager. (line 1351) -* BFD_RELOC_MMIX_CBRANCH_1: howto manager. (line 1353) -* BFD_RELOC_MMIX_CBRANCH_2: howto manager. (line 1354) -* BFD_RELOC_MMIX_CBRANCH_3: howto manager. (line 1355) -* BFD_RELOC_MMIX_CBRANCH_J: howto manager. (line 1352) -* BFD_RELOC_MMIX_GETA: howto manager. (line 1345) -* BFD_RELOC_MMIX_GETA_1: howto manager. (line 1346) -* BFD_RELOC_MMIX_GETA_2: howto manager. (line 1347) -* BFD_RELOC_MMIX_GETA_3: howto manager. (line 1348) -* BFD_RELOC_MMIX_JMP: howto manager. (line 1365) -* BFD_RELOC_MMIX_JMP_1: howto manager. (line 1366) -* BFD_RELOC_MMIX_JMP_2: howto manager. (line 1367) -* BFD_RELOC_MMIX_JMP_3: howto manager. (line 1368) -* BFD_RELOC_MMIX_LOCAL: howto manager. (line 1391) -* BFD_RELOC_MMIX_PUSHJ: howto manager. (line 1358) -* BFD_RELOC_MMIX_PUSHJ_1: howto manager. (line 1359) -* BFD_RELOC_MMIX_PUSHJ_2: howto manager. (line 1360) -* BFD_RELOC_MMIX_PUSHJ_3: howto manager. (line 1361) -* BFD_RELOC_MMIX_PUSHJ_STUBBABLE: howto manager. (line 1362) -* BFD_RELOC_MMIX_REG: howto manager. (line 1383) -* BFD_RELOC_MMIX_REG_OR_BYTE: howto manager. (line 1379) -* BFD_RELOC_MN10300_16_PCREL: howto manager. (line 1253) -* BFD_RELOC_MN10300_32_PCREL: howto manager. (line 1249) -* BFD_RELOC_MN10300_ALIGN: howto manager. (line 499) -* BFD_RELOC_MN10300_COPY: howto manager. (line 482) -* BFD_RELOC_MN10300_GLOB_DAT: howto manager. (line 485) -* BFD_RELOC_MN10300_GOT16: howto manager. (line 478) -* BFD_RELOC_MN10300_GOT24: howto manager. (line 474) -* BFD_RELOC_MN10300_GOT32: howto manager. (line 470) -* BFD_RELOC_MN10300_GOTOFF24: howto manager. (line 467) -* BFD_RELOC_MN10300_JMP_SLOT: howto manager. (line 488) -* BFD_RELOC_MN10300_RELATIVE: howto manager. (line 491) -* BFD_RELOC_MN10300_SYM_DIFF: howto manager. (line 494) -* BFD_RELOC_MOXIE_10_PCREL: howto manager. (line 423) -* BFD_RELOC_MSP430_10_PCREL: howto manager. (line 2049) -* BFD_RELOC_MSP430_16: howto manager. (line 2051) -* BFD_RELOC_MSP430_16_BYTE: howto manager. (line 2053) -* BFD_RELOC_MSP430_16_PCREL: howto manager. (line 2050) -* BFD_RELOC_MSP430_16_PCREL_BYTE: howto manager. (line 2052) -* BFD_RELOC_MSP430_2X_PCREL: howto manager. (line 2054) -* BFD_RELOC_MSP430_RL_PCREL: howto manager. (line 2055) -* BFD_RELOC_MT_GNU_VTENTRY: howto manager. (line 2043) -* BFD_RELOC_MT_GNU_VTINHERIT: howto manager. (line 2040) -* BFD_RELOC_MT_HI16: howto manager. (line 2034) -* BFD_RELOC_MT_LO16: howto manager. (line 2037) -* BFD_RELOC_MT_PC16: howto manager. (line 2031) -* BFD_RELOC_MT_PCINSN8: howto manager. (line 2046) +* BFD_RELOC_M32C_HI8: howto manager. (line 1147) +* BFD_RELOC_M32C_RL_1ADDR: howto manager. (line 1149) +* BFD_RELOC_M32C_RL_2ADDR: howto manager. (line 1150) +* BFD_RELOC_M32C_RL_JUMP: howto manager. (line 1148) +* BFD_RELOC_M32R_10_PCREL: howto manager. (line 1157) +* BFD_RELOC_M32R_18_PCREL: howto manager. (line 1161) +* BFD_RELOC_M32R_24: howto manager. (line 1153) +* BFD_RELOC_M32R_26_PCREL: howto manager. (line 1164) +* BFD_RELOC_M32R_26_PLTREL: howto manager. (line 1183) +* BFD_RELOC_M32R_COPY: howto manager. (line 1184) +* BFD_RELOC_M32R_GLOB_DAT: howto manager. (line 1185) +* BFD_RELOC_M32R_GOT16_HI_SLO: howto manager. (line 1194) +* BFD_RELOC_M32R_GOT16_HI_ULO: howto manager. (line 1193) +* BFD_RELOC_M32R_GOT16_LO: howto manager. (line 1195) +* BFD_RELOC_M32R_GOT24: howto manager. (line 1182) +* BFD_RELOC_M32R_GOTOFF: howto manager. (line 1188) +* BFD_RELOC_M32R_GOTOFF_HI_SLO: howto manager. (line 1190) +* BFD_RELOC_M32R_GOTOFF_HI_ULO: howto manager. (line 1189) +* BFD_RELOC_M32R_GOTOFF_LO: howto manager. (line 1191) +* BFD_RELOC_M32R_GOTPC24: howto manager. (line 1192) +* BFD_RELOC_M32R_GOTPC_HI_SLO: howto manager. (line 1197) +* BFD_RELOC_M32R_GOTPC_HI_ULO: howto manager. (line 1196) +* BFD_RELOC_M32R_GOTPC_LO: howto manager. (line 1198) +* BFD_RELOC_M32R_HI16_SLO: howto manager. (line 1171) +* BFD_RELOC_M32R_HI16_ULO: howto manager. (line 1167) +* BFD_RELOC_M32R_JMP_SLOT: howto manager. (line 1186) +* BFD_RELOC_M32R_LO16: howto manager. (line 1175) +* BFD_RELOC_M32R_RELATIVE: howto manager. (line 1187) +* BFD_RELOC_M32R_SDA16: howto manager. (line 1178) +* BFD_RELOC_M68HC11_24: howto manager. (line 1950) +* BFD_RELOC_M68HC11_3B: howto manager. (line 1925) +* BFD_RELOC_M68HC11_HI8: howto manager. (line 1917) +* BFD_RELOC_M68HC11_LO16: howto manager. (line 1939) +* BFD_RELOC_M68HC11_LO8: howto manager. (line 1921) +* BFD_RELOC_M68HC11_PAGE: howto manager. (line 1945) +* BFD_RELOC_M68HC11_RL_GROUP: howto manager. (line 1934) +* BFD_RELOC_M68HC11_RL_JUMP: howto manager. (line 1928) +* BFD_RELOC_M68HC12_5B: howto manager. (line 1956) +* BFD_RELOC_MACH_O_PAIR: howto manager. (line 2325) +* BFD_RELOC_MACH_O_SECTDIFF: howto manager. (line 2321) +* BFD_RELOC_MACH_O_X86_64_BRANCH32: howto manager. (line 2328) +* BFD_RELOC_MACH_O_X86_64_BRANCH8: howto manager. (line 2329) +* BFD_RELOC_MACH_O_X86_64_GOT: howto manager. (line 2333) +* BFD_RELOC_MACH_O_X86_64_GOT_LOAD: howto manager. (line 2336) +* BFD_RELOC_MACH_O_X86_64_PCREL32_1: howto manager. (line 2346) +* BFD_RELOC_MACH_O_X86_64_PCREL32_2: howto manager. (line 2349) +* BFD_RELOC_MACH_O_X86_64_PCREL32_4: howto manager. (line 2352) +* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32: howto manager. (line 2340) +* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64: howto manager. (line 2343) +* BFD_RELOC_MCORE_PCREL_32: howto manager. (line 1436) +* BFD_RELOC_MCORE_PCREL_IMM11BY2: howto manager. (line 1434) +* BFD_RELOC_MCORE_PCREL_IMM4BY2: howto manager. (line 1435) +* BFD_RELOC_MCORE_PCREL_IMM8BY4: howto manager. (line 1433) +* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2: howto manager. (line 1437) +* BFD_RELOC_MCORE_RVA: howto manager. (line 1438) +* BFD_RELOC_MEP_16: howto manager. (line 1442) +* BFD_RELOC_MEP_32: howto manager. (line 1443) +* BFD_RELOC_MEP_8: howto manager. (line 1441) +* BFD_RELOC_MEP_ADDR24A4: howto manager. (line 1458) +* BFD_RELOC_MEP_GNU_VTENTRY: howto manager. (line 1460) +* BFD_RELOC_MEP_GNU_VTINHERIT: howto manager. (line 1459) +* BFD_RELOC_MEP_GPREL: howto manager. (line 1452) +* BFD_RELOC_MEP_HI16S: howto manager. (line 1451) +* BFD_RELOC_MEP_HI16U: howto manager. (line 1450) +* BFD_RELOC_MEP_LOW16: howto manager. (line 1449) +* BFD_RELOC_MEP_PCABS24A2: howto manager. (line 1448) +* BFD_RELOC_MEP_PCREL12A2: howto manager. (line 1445) +* BFD_RELOC_MEP_PCREL17A2: howto manager. (line 1446) +* BFD_RELOC_MEP_PCREL24A2: howto manager. (line 1447) +* BFD_RELOC_MEP_PCREL8A2: howto manager. (line 1444) +* BFD_RELOC_MEP_TPREL: howto manager. (line 1453) +* BFD_RELOC_MEP_TPREL7: howto manager. (line 1454) +* BFD_RELOC_MEP_TPREL7A2: howto manager. (line 1455) +* BFD_RELOC_MEP_TPREL7A4: howto manager. (line 1456) +* BFD_RELOC_MEP_UIMM24: howto manager. (line 1457) +* BFD_RELOC_MICROBLAZE_32_GOTOFF: howto manager. (line 2399) +* BFD_RELOC_MICROBLAZE_32_LO: howto manager. (line 2355) +* BFD_RELOC_MICROBLAZE_32_LO_PCREL: howto manager. (line 2359) +* BFD_RELOC_MICROBLAZE_32_ROSDA: howto manager. (line 2363) +* BFD_RELOC_MICROBLAZE_32_RWSDA: howto manager. (line 2367) +* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM: howto manager. (line 2371) +* BFD_RELOC_MICROBLAZE_64_GOT: howto manager. (line 2385) +* BFD_RELOC_MICROBLAZE_64_GOTOFF: howto manager. (line 2394) +* BFD_RELOC_MICROBLAZE_64_GOTPC: howto manager. (line 2380) +* BFD_RELOC_MICROBLAZE_64_NONE: howto manager. (line 2375) +* BFD_RELOC_MICROBLAZE_64_PLT: howto manager. (line 2389) +* BFD_RELOC_MICROBLAZE_COPY: howto manager. (line 2403) +* BFD_RELOC_MIPS16_CALL16: howto manager. (line 366) +* BFD_RELOC_MIPS16_GOT16: howto manager. (line 365) +* BFD_RELOC_MIPS16_GPREL: howto manager. (line 341) +* BFD_RELOC_MIPS16_HI16: howto manager. (line 370) +* BFD_RELOC_MIPS16_HI16_S: howto manager. (line 373) +* BFD_RELOC_MIPS16_JMP: howto manager. (line 338) +* BFD_RELOC_MIPS16_LO16: howto manager. (line 379) +* BFD_RELOC_MIPS_CALL16: howto manager. (line 386) +* BFD_RELOC_MIPS_CALL_HI16: howto manager. (line 389) +* BFD_RELOC_MIPS_CALL_LO16: howto manager. (line 390) +* BFD_RELOC_MIPS_COPY: howto manager. (line 421) +* BFD_RELOC_MIPS_DELETE: howto manager. (line 399) +* BFD_RELOC_MIPS_GOT16: howto manager. (line 385) +* BFD_RELOC_MIPS_GOT_DISP: howto manager. (line 394) +* BFD_RELOC_MIPS_GOT_HI16: howto manager. (line 387) +* BFD_RELOC_MIPS_GOT_LO16: howto manager. (line 388) +* BFD_RELOC_MIPS_GOT_OFST: howto manager. (line 393) +* BFD_RELOC_MIPS_GOT_PAGE: howto manager. (line 392) +* BFD_RELOC_MIPS_HIGHER: howto manager. (line 401) +* BFD_RELOC_MIPS_HIGHEST: howto manager. (line 400) +* BFD_RELOC_MIPS_INSERT_A: howto manager. (line 397) +* BFD_RELOC_MIPS_INSERT_B: howto manager. (line 398) +* BFD_RELOC_MIPS_JALR: howto manager. (line 405) +* BFD_RELOC_MIPS_JMP: howto manager. (line 334) +* BFD_RELOC_MIPS_JUMP_SLOT: howto manager. (line 422) +* BFD_RELOC_MIPS_LITERAL: howto manager. (line 382) +* BFD_RELOC_MIPS_REL16: howto manager. (line 403) +* BFD_RELOC_MIPS_RELGOT: howto manager. (line 404) +* BFD_RELOC_MIPS_SCN_DISP: howto manager. (line 402) +* BFD_RELOC_MIPS_SHIFT5: howto manager. (line 395) +* BFD_RELOC_MIPS_SHIFT6: howto manager. (line 396) +* BFD_RELOC_MIPS_SUB: howto manager. (line 391) +* BFD_RELOC_MIPS_TLS_DTPMOD32: howto manager. (line 406) +* BFD_RELOC_MIPS_TLS_DTPMOD64: howto manager. (line 408) +* BFD_RELOC_MIPS_TLS_DTPREL32: howto manager. (line 407) +* BFD_RELOC_MIPS_TLS_DTPREL64: howto manager. (line 409) +* BFD_RELOC_MIPS_TLS_DTPREL_HI16: howto manager. (line 412) +* BFD_RELOC_MIPS_TLS_DTPREL_LO16: howto manager. (line 413) +* BFD_RELOC_MIPS_TLS_GD: howto manager. (line 410) +* BFD_RELOC_MIPS_TLS_GOTTPREL: howto manager. (line 414) +* BFD_RELOC_MIPS_TLS_LDM: howto manager. (line 411) +* BFD_RELOC_MIPS_TLS_TPREL32: howto manager. (line 415) +* BFD_RELOC_MIPS_TLS_TPREL64: howto manager. (line 416) +* BFD_RELOC_MIPS_TLS_TPREL_HI16: howto manager. (line 417) +* BFD_RELOC_MIPS_TLS_TPREL_LO16: howto manager. (line 418) +* BFD_RELOC_MMIX_ADDR19: howto manager. (line 1489) +* BFD_RELOC_MMIX_ADDR27: howto manager. (line 1493) +* BFD_RELOC_MMIX_BASE_PLUS_OFFSET: howto manager. (line 1505) +* BFD_RELOC_MMIX_CBRANCH: howto manager. (line 1469) +* BFD_RELOC_MMIX_CBRANCH_1: howto manager. (line 1471) +* BFD_RELOC_MMIX_CBRANCH_2: howto manager. (line 1472) +* BFD_RELOC_MMIX_CBRANCH_3: howto manager. (line 1473) +* BFD_RELOC_MMIX_CBRANCH_J: howto manager. (line 1470) +* BFD_RELOC_MMIX_GETA: howto manager. (line 1463) +* BFD_RELOC_MMIX_GETA_1: howto manager. (line 1464) +* BFD_RELOC_MMIX_GETA_2: howto manager. (line 1465) +* BFD_RELOC_MMIX_GETA_3: howto manager. (line 1466) +* BFD_RELOC_MMIX_JMP: howto manager. (line 1483) +* BFD_RELOC_MMIX_JMP_1: howto manager. (line 1484) +* BFD_RELOC_MMIX_JMP_2: howto manager. (line 1485) +* BFD_RELOC_MMIX_JMP_3: howto manager. (line 1486) +* BFD_RELOC_MMIX_LOCAL: howto manager. (line 1509) +* BFD_RELOC_MMIX_PUSHJ: howto manager. (line 1476) +* BFD_RELOC_MMIX_PUSHJ_1: howto manager. (line 1477) +* BFD_RELOC_MMIX_PUSHJ_2: howto manager. (line 1478) +* BFD_RELOC_MMIX_PUSHJ_3: howto manager. (line 1479) +* BFD_RELOC_MMIX_PUSHJ_STUBBABLE: howto manager. (line 1480) +* BFD_RELOC_MMIX_REG: howto manager. (line 1501) +* BFD_RELOC_MMIX_REG_OR_BYTE: howto manager. (line 1497) +* BFD_RELOC_MN10300_16_PCREL: howto manager. (line 1339) +* BFD_RELOC_MN10300_32_PCREL: howto manager. (line 1335) +* BFD_RELOC_MN10300_ALIGN: howto manager. (line 501) +* BFD_RELOC_MN10300_COPY: howto manager. (line 484) +* BFD_RELOC_MN10300_GLOB_DAT: howto manager. (line 487) +* BFD_RELOC_MN10300_GOT16: howto manager. (line 480) +* BFD_RELOC_MN10300_GOT24: howto manager. (line 476) +* BFD_RELOC_MN10300_GOT32: howto manager. (line 472) +* BFD_RELOC_MN10300_GOTOFF24: howto manager. (line 469) +* BFD_RELOC_MN10300_JMP_SLOT: howto manager. (line 490) +* BFD_RELOC_MN10300_RELATIVE: howto manager. (line 493) +* BFD_RELOC_MN10300_SYM_DIFF: howto manager. (line 496) +* BFD_RELOC_MOXIE_10_PCREL: howto manager. (line 425) +* BFD_RELOC_MSP430_10_PCREL: howto manager. (line 2196) +* BFD_RELOC_MSP430_16: howto manager. (line 2198) +* BFD_RELOC_MSP430_16_BYTE: howto manager. (line 2200) +* BFD_RELOC_MSP430_16_PCREL: howto manager. (line 2197) +* BFD_RELOC_MSP430_16_PCREL_BYTE: howto manager. (line 2199) +* BFD_RELOC_MSP430_2X_PCREL: howto manager. (line 2201) +* BFD_RELOC_MSP430_RL_PCREL: howto manager. (line 2202) +* BFD_RELOC_MT_GNU_VTENTRY: howto manager. (line 2190) +* BFD_RELOC_MT_GNU_VTINHERIT: howto manager. (line 2187) +* BFD_RELOC_MT_HI16: howto manager. (line 2181) +* BFD_RELOC_MT_LO16: howto manager. (line 2184) +* BFD_RELOC_MT_PC16: howto manager. (line 2178) +* BFD_RELOC_MT_PCINSN8: howto manager. (line 2193) * BFD_RELOC_NONE: howto manager. (line 131) -* BFD_RELOC_NS32K_DISP_16: howto manager. (line 565) -* BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. (line 568) -* BFD_RELOC_NS32K_DISP_32: howto manager. (line 566) -* BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. (line 569) -* BFD_RELOC_NS32K_DISP_8: howto manager. (line 564) -* BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. (line 567) -* BFD_RELOC_NS32K_IMM_16: howto manager. (line 559) -* BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. (line 562) -* BFD_RELOC_NS32K_IMM_32: howto manager. (line 560) -* BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. (line 563) -* BFD_RELOC_NS32K_IMM_8: howto manager. (line 558) -* BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. (line 561) -* BFD_RELOC_OPENRISC_ABS_26: howto manager. (line 2000) -* BFD_RELOC_OPENRISC_REL_26: howto manager. (line 2001) -* BFD_RELOC_PDP11_DISP_6_PCREL: howto manager. (line 573) -* BFD_RELOC_PDP11_DISP_8_PCREL: howto manager. (line 572) -* BFD_RELOC_PJ_CODE_DIR16: howto manager. (line 578) -* BFD_RELOC_PJ_CODE_DIR32: howto manager. (line 579) -* BFD_RELOC_PJ_CODE_HI16: howto manager. (line 576) -* BFD_RELOC_PJ_CODE_LO16: howto manager. (line 577) -* BFD_RELOC_PJ_CODE_REL16: howto manager. (line 580) -* BFD_RELOC_PJ_CODE_REL32: howto manager. (line 581) -* BFD_RELOC_PPC64_ADDR16_DS: howto manager. (line 626) -* BFD_RELOC_PPC64_ADDR16_LO_DS: howto manager. (line 627) -* BFD_RELOC_PPC64_DTPREL16_DS: howto manager. (line 675) -* BFD_RELOC_PPC64_DTPREL16_HIGHER: howto manager. (line 677) -* BFD_RELOC_PPC64_DTPREL16_HIGHERA: howto manager. (line 678) -* BFD_RELOC_PPC64_DTPREL16_HIGHEST: howto manager. (line 679) -* BFD_RELOC_PPC64_DTPREL16_HIGHESTA: howto manager. (line 680) -* BFD_RELOC_PPC64_DTPREL16_LO_DS: howto manager. (line 676) -* BFD_RELOC_PPC64_GOT16_DS: howto manager. (line 628) -* BFD_RELOC_PPC64_GOT16_LO_DS: howto manager. (line 629) -* BFD_RELOC_PPC64_HIGHER: howto manager. (line 614) -* BFD_RELOC_PPC64_HIGHER_S: howto manager. (line 615) -* BFD_RELOC_PPC64_HIGHEST: howto manager. (line 616) -* BFD_RELOC_PPC64_HIGHEST_S: howto manager. (line 617) -* BFD_RELOC_PPC64_PLT16_LO_DS: howto manager. (line 630) -* BFD_RELOC_PPC64_PLTGOT16: howto manager. (line 622) -* BFD_RELOC_PPC64_PLTGOT16_DS: howto manager. (line 635) -* BFD_RELOC_PPC64_PLTGOT16_HA: howto manager. (line 625) -* BFD_RELOC_PPC64_PLTGOT16_HI: howto manager. (line 624) -* BFD_RELOC_PPC64_PLTGOT16_LO: howto manager. (line 623) -* BFD_RELOC_PPC64_PLTGOT16_LO_DS: howto manager. (line 636) -* BFD_RELOC_PPC64_SECTOFF_DS: howto manager. (line 631) -* BFD_RELOC_PPC64_SECTOFF_LO_DS: howto manager. (line 632) -* BFD_RELOC_PPC64_TOC: howto manager. (line 621) -* BFD_RELOC_PPC64_TOC16_DS: howto manager. (line 633) -* BFD_RELOC_PPC64_TOC16_HA: howto manager. (line 620) -* BFD_RELOC_PPC64_TOC16_HI: howto manager. (line 619) -* BFD_RELOC_PPC64_TOC16_LO: howto manager. (line 618) -* BFD_RELOC_PPC64_TOC16_LO_DS: howto manager. (line 634) -* BFD_RELOC_PPC64_TPREL16_DS: howto manager. (line 669) -* BFD_RELOC_PPC64_TPREL16_HIGHER: howto manager. (line 671) -* BFD_RELOC_PPC64_TPREL16_HIGHERA: howto manager. (line 672) -* BFD_RELOC_PPC64_TPREL16_HIGHEST: howto manager. (line 673) -* BFD_RELOC_PPC64_TPREL16_HIGHESTA: howto manager. (line 674) -* BFD_RELOC_PPC64_TPREL16_LO_DS: howto manager. (line 670) -* BFD_RELOC_PPC_B16: howto manager. (line 587) -* BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. (line 589) -* BFD_RELOC_PPC_B16_BRTAKEN: howto manager. (line 588) -* BFD_RELOC_PPC_B26: howto manager. (line 584) -* BFD_RELOC_PPC_BA16: howto manager. (line 590) -* BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. (line 592) -* BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. (line 591) -* BFD_RELOC_PPC_BA26: howto manager. (line 585) -* BFD_RELOC_PPC_COPY: howto manager. (line 593) -* BFD_RELOC_PPC_DTPMOD: howto manager. (line 642) -* BFD_RELOC_PPC_DTPREL: howto manager. (line 652) -* BFD_RELOC_PPC_DTPREL16: howto manager. (line 648) -* BFD_RELOC_PPC_DTPREL16_HA: howto manager. (line 651) -* BFD_RELOC_PPC_DTPREL16_HI: howto manager. (line 650) -* BFD_RELOC_PPC_DTPREL16_LO: howto manager. (line 649) -* BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. (line 612) -* BFD_RELOC_PPC_EMB_MRKREF: howto manager. (line 607) -* BFD_RELOC_PPC_EMB_NADDR16: howto manager. (line 599) -* BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. (line 602) -* BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. (line 601) -* BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. (line 600) -* BFD_RELOC_PPC_EMB_NADDR32: howto manager. (line 598) -* BFD_RELOC_PPC_EMB_RELSDA: howto manager. (line 613) -* BFD_RELOC_PPC_EMB_RELSEC16: howto manager. (line 608) -* BFD_RELOC_PPC_EMB_RELST_HA: howto manager. (line 611) -* BFD_RELOC_PPC_EMB_RELST_HI: howto manager. (line 610) -* BFD_RELOC_PPC_EMB_RELST_LO: howto manager. (line 609) -* BFD_RELOC_PPC_EMB_SDA21: howto manager. (line 606) -* BFD_RELOC_PPC_EMB_SDA2I16: howto manager. (line 604) -* BFD_RELOC_PPC_EMB_SDA2REL: howto manager. (line 605) -* BFD_RELOC_PPC_EMB_SDAI16: howto manager. (line 603) -* BFD_RELOC_PPC_GLOB_DAT: howto manager. (line 594) -* BFD_RELOC_PPC_GOT_DTPREL16: howto manager. (line 665) -* BFD_RELOC_PPC_GOT_DTPREL16_HA: howto manager. (line 668) -* BFD_RELOC_PPC_GOT_DTPREL16_HI: howto manager. (line 667) -* BFD_RELOC_PPC_GOT_DTPREL16_LO: howto manager. (line 666) -* BFD_RELOC_PPC_GOT_TLSGD16: howto manager. (line 653) -* BFD_RELOC_PPC_GOT_TLSGD16_HA: howto manager. (line 656) -* BFD_RELOC_PPC_GOT_TLSGD16_HI: howto manager. (line 655) -* BFD_RELOC_PPC_GOT_TLSGD16_LO: howto manager. (line 654) -* BFD_RELOC_PPC_GOT_TLSLD16: howto manager. (line 657) -* BFD_RELOC_PPC_GOT_TLSLD16_HA: howto manager. (line 660) -* BFD_RELOC_PPC_GOT_TLSLD16_HI: howto manager. (line 659) -* BFD_RELOC_PPC_GOT_TLSLD16_LO: howto manager. (line 658) -* BFD_RELOC_PPC_GOT_TPREL16: howto manager. (line 661) -* BFD_RELOC_PPC_GOT_TPREL16_HA: howto manager. (line 664) -* BFD_RELOC_PPC_GOT_TPREL16_HI: howto manager. (line 663) -* BFD_RELOC_PPC_GOT_TPREL16_LO: howto manager. (line 662) -* BFD_RELOC_PPC_JMP_SLOT: howto manager. (line 595) -* BFD_RELOC_PPC_LOCAL24PC: howto manager. (line 597) -* BFD_RELOC_PPC_RELATIVE: howto manager. (line 596) -* BFD_RELOC_PPC_TLS: howto manager. (line 639) -* BFD_RELOC_PPC_TLSGD: howto manager. (line 640) -* BFD_RELOC_PPC_TLSLD: howto manager. (line 641) -* BFD_RELOC_PPC_TOC16: howto manager. (line 586) -* BFD_RELOC_PPC_TPREL: howto manager. (line 647) -* BFD_RELOC_PPC_TPREL16: howto manager. (line 643) -* BFD_RELOC_PPC_TPREL16_HA: howto manager. (line 646) -* BFD_RELOC_PPC_TPREL16_HI: howto manager. (line 645) -* BFD_RELOC_PPC_TPREL16_LO: howto manager. (line 644) -* BFD_RELOC_RELC: howto manager. (line 2017) +* BFD_RELOC_NS32K_DISP_16: howto manager. (line 567) +* BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. (line 570) +* BFD_RELOC_NS32K_DISP_32: howto manager. (line 568) +* BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. (line 571) +* BFD_RELOC_NS32K_DISP_8: howto manager. (line 566) +* BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. (line 569) +* BFD_RELOC_NS32K_IMM_16: howto manager. (line 561) +* BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. (line 564) +* BFD_RELOC_NS32K_IMM_32: howto manager. (line 562) +* BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. (line 565) +* BFD_RELOC_NS32K_IMM_8: howto manager. (line 560) +* BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. (line 563) +* BFD_RELOC_OPENRISC_ABS_26: howto manager. (line 2147) +* BFD_RELOC_OPENRISC_REL_26: howto manager. (line 2148) +* BFD_RELOC_PDP11_DISP_6_PCREL: howto manager. (line 575) +* BFD_RELOC_PDP11_DISP_8_PCREL: howto manager. (line 574) +* BFD_RELOC_PJ_CODE_DIR16: howto manager. (line 580) +* BFD_RELOC_PJ_CODE_DIR32: howto manager. (line 581) +* BFD_RELOC_PJ_CODE_HI16: howto manager. (line 578) +* BFD_RELOC_PJ_CODE_LO16: howto manager. (line 579) +* BFD_RELOC_PJ_CODE_REL16: howto manager. (line 582) +* BFD_RELOC_PJ_CODE_REL32: howto manager. (line 583) +* BFD_RELOC_PPC64_ADDR16_DS: howto manager. (line 628) +* BFD_RELOC_PPC64_ADDR16_LO_DS: howto manager. (line 629) +* BFD_RELOC_PPC64_DTPREL16_DS: howto manager. (line 677) +* BFD_RELOC_PPC64_DTPREL16_HIGHER: howto manager. (line 679) +* BFD_RELOC_PPC64_DTPREL16_HIGHERA: howto manager. (line 680) +* BFD_RELOC_PPC64_DTPREL16_HIGHEST: howto manager. (line 681) +* BFD_RELOC_PPC64_DTPREL16_HIGHESTA: howto manager. (line 682) +* BFD_RELOC_PPC64_DTPREL16_LO_DS: howto manager. (line 678) +* BFD_RELOC_PPC64_GOT16_DS: howto manager. (line 630) +* BFD_RELOC_PPC64_GOT16_LO_DS: howto manager. (line 631) +* BFD_RELOC_PPC64_HIGHER: howto manager. (line 616) +* BFD_RELOC_PPC64_HIGHER_S: howto manager. (line 617) +* BFD_RELOC_PPC64_HIGHEST: howto manager. (line 618) +* BFD_RELOC_PPC64_HIGHEST_S: howto manager. (line 619) +* BFD_RELOC_PPC64_PLT16_LO_DS: howto manager. (line 632) +* BFD_RELOC_PPC64_PLTGOT16: howto manager. (line 624) +* BFD_RELOC_PPC64_PLTGOT16_DS: howto manager. (line 637) +* BFD_RELOC_PPC64_PLTGOT16_HA: howto manager. (line 627) +* BFD_RELOC_PPC64_PLTGOT16_HI: howto manager. (line 626) +* BFD_RELOC_PPC64_PLTGOT16_LO: howto manager. (line 625) +* BFD_RELOC_PPC64_PLTGOT16_LO_DS: howto manager. (line 638) +* BFD_RELOC_PPC64_SECTOFF_DS: howto manager. (line 633) +* BFD_RELOC_PPC64_SECTOFF_LO_DS: howto manager. (line 634) +* BFD_RELOC_PPC64_TOC: howto manager. (line 623) +* BFD_RELOC_PPC64_TOC16_DS: howto manager. (line 635) +* BFD_RELOC_PPC64_TOC16_HA: howto manager. (line 622) +* BFD_RELOC_PPC64_TOC16_HI: howto manager. (line 621) +* BFD_RELOC_PPC64_TOC16_LO: howto manager. (line 620) +* BFD_RELOC_PPC64_TOC16_LO_DS: howto manager. (line 636) +* BFD_RELOC_PPC64_TPREL16_DS: howto manager. (line 671) +* BFD_RELOC_PPC64_TPREL16_HIGHER: howto manager. (line 673) +* BFD_RELOC_PPC64_TPREL16_HIGHERA: howto manager. (line 674) +* BFD_RELOC_PPC64_TPREL16_HIGHEST: howto manager. (line 675) +* BFD_RELOC_PPC64_TPREL16_HIGHESTA: howto manager. (line 676) +* BFD_RELOC_PPC64_TPREL16_LO_DS: howto manager. (line 672) +* BFD_RELOC_PPC_B16: howto manager. (line 589) +* BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. (line 591) +* BFD_RELOC_PPC_B16_BRTAKEN: howto manager. (line 590) +* BFD_RELOC_PPC_B26: howto manager. (line 586) +* BFD_RELOC_PPC_BA16: howto manager. (line 592) +* BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. (line 594) +* BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. (line 593) +* BFD_RELOC_PPC_BA26: howto manager. (line 587) +* BFD_RELOC_PPC_COPY: howto manager. (line 595) +* BFD_RELOC_PPC_DTPMOD: howto manager. (line 644) +* BFD_RELOC_PPC_DTPREL: howto manager. (line 654) +* BFD_RELOC_PPC_DTPREL16: howto manager. (line 650) +* BFD_RELOC_PPC_DTPREL16_HA: howto manager. (line 653) +* BFD_RELOC_PPC_DTPREL16_HI: howto manager. (line 652) +* BFD_RELOC_PPC_DTPREL16_LO: howto manager. (line 651) +* BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. (line 614) +* BFD_RELOC_PPC_EMB_MRKREF: howto manager. (line 609) +* BFD_RELOC_PPC_EMB_NADDR16: howto manager. (line 601) +* BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. (line 604) +* BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. (line 603) +* BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. (line 602) +* BFD_RELOC_PPC_EMB_NADDR32: howto manager. (line 600) +* BFD_RELOC_PPC_EMB_RELSDA: howto manager. (line 615) +* BFD_RELOC_PPC_EMB_RELSEC16: howto manager. (line 610) +* BFD_RELOC_PPC_EMB_RELST_HA: howto manager. (line 613) +* BFD_RELOC_PPC_EMB_RELST_HI: howto manager. (line 612) +* BFD_RELOC_PPC_EMB_RELST_LO: howto manager. (line 611) +* BFD_RELOC_PPC_EMB_SDA21: howto manager. (line 608) +* BFD_RELOC_PPC_EMB_SDA2I16: howto manager. (line 606) +* BFD_RELOC_PPC_EMB_SDA2REL: howto manager. (line 607) +* BFD_RELOC_PPC_EMB_SDAI16: howto manager. (line 605) +* BFD_RELOC_PPC_GLOB_DAT: howto manager. (line 596) +* BFD_RELOC_PPC_GOT_DTPREL16: howto manager. (line 667) +* BFD_RELOC_PPC_GOT_DTPREL16_HA: howto manager. (line 670) +* BFD_RELOC_PPC_GOT_DTPREL16_HI: howto manager. (line 669) +* BFD_RELOC_PPC_GOT_DTPREL16_LO: howto manager. (line 668) +* BFD_RELOC_PPC_GOT_TLSGD16: howto manager. (line 655) +* BFD_RELOC_PPC_GOT_TLSGD16_HA: howto manager. (line 658) +* BFD_RELOC_PPC_GOT_TLSGD16_HI: howto manager. (line 657) +* BFD_RELOC_PPC_GOT_TLSGD16_LO: howto manager. (line 656) +* BFD_RELOC_PPC_GOT_TLSLD16: howto manager. (line 659) +* BFD_RELOC_PPC_GOT_TLSLD16_HA: howto manager. (line 662) +* BFD_RELOC_PPC_GOT_TLSLD16_HI: howto manager. (line 661) +* BFD_RELOC_PPC_GOT_TLSLD16_LO: howto manager. (line 660) +* BFD_RELOC_PPC_GOT_TPREL16: howto manager. (line 663) +* BFD_RELOC_PPC_GOT_TPREL16_HA: howto manager. (line 666) +* BFD_RELOC_PPC_GOT_TPREL16_HI: howto manager. (line 665) +* BFD_RELOC_PPC_GOT_TPREL16_LO: howto manager. (line 664) +* BFD_RELOC_PPC_JMP_SLOT: howto manager. (line 597) +* BFD_RELOC_PPC_LOCAL24PC: howto manager. (line 599) +* BFD_RELOC_PPC_RELATIVE: howto manager. (line 598) +* BFD_RELOC_PPC_TLS: howto manager. (line 641) +* BFD_RELOC_PPC_TLSGD: howto manager. (line 642) +* BFD_RELOC_PPC_TLSLD: howto manager. (line 643) +* BFD_RELOC_PPC_TOC16: howto manager. (line 588) +* BFD_RELOC_PPC_TPREL: howto manager. (line 649) +* BFD_RELOC_PPC_TPREL16: howto manager. (line 645) +* BFD_RELOC_PPC_TPREL16_HA: howto manager. (line 648) +* BFD_RELOC_PPC_TPREL16_HI: howto manager. (line 647) +* BFD_RELOC_PPC_TPREL16_LO: howto manager. (line 646) +* BFD_RELOC_RELC: howto manager. (line 2164) * BFD_RELOC_RVA: howto manager. (line 100) -* BFD_RELOC_SCORE16_BRANCH: howto manager. (line 1623) -* BFD_RELOC_SCORE16_JMP: howto manager. (line 1620) -* BFD_RELOC_SCORE_BCMP: howto manager. (line 1626) -* BFD_RELOC_SCORE_BRANCH: howto manager. (line 1611) -* BFD_RELOC_SCORE_CALL15: howto manager. (line 1631) -* BFD_RELOC_SCORE_DUMMY2: howto manager. (line 1607) -* BFD_RELOC_SCORE_DUMMY_HI16: howto manager. (line 1632) -* BFD_RELOC_SCORE_GOT15: howto manager. (line 1629) -* BFD_RELOC_SCORE_GOT_LO16: howto manager. (line 1630) -* BFD_RELOC_SCORE_GPREL15: howto manager. (line 1604) -* BFD_RELOC_SCORE_IMM30: howto manager. (line 1614) -* BFD_RELOC_SCORE_IMM32: howto manager. (line 1617) -* BFD_RELOC_SCORE_JMP: howto manager. (line 1608) -* BFD_RELOC_SH_ALIGN: howto manager. (line 863) -* BFD_RELOC_SH_CODE: howto manager. (line 864) -* BFD_RELOC_SH_COPY: howto manager. (line 869) -* BFD_RELOC_SH_COPY64: howto manager. (line 894) -* BFD_RELOC_SH_COUNT: howto manager. (line 862) -* BFD_RELOC_SH_DATA: howto manager. (line 865) -* BFD_RELOC_SH_DISP12: howto manager. (line 845) -* BFD_RELOC_SH_DISP12BY2: howto manager. (line 846) -* BFD_RELOC_SH_DISP12BY4: howto manager. (line 847) -* BFD_RELOC_SH_DISP12BY8: howto manager. (line 848) -* BFD_RELOC_SH_DISP20: howto manager. (line 849) -* BFD_RELOC_SH_DISP20BY8: howto manager. (line 850) -* BFD_RELOC_SH_GLOB_DAT: howto manager. (line 870) -* BFD_RELOC_SH_GLOB_DAT64: howto manager. (line 895) -* BFD_RELOC_SH_GOT10BY4: howto manager. (line 898) -* BFD_RELOC_SH_GOT10BY8: howto manager. (line 899) -* BFD_RELOC_SH_GOT_HI16: howto manager. (line 877) -* BFD_RELOC_SH_GOT_LOW16: howto manager. (line 874) -* BFD_RELOC_SH_GOT_MEDHI16: howto manager. (line 876) -* BFD_RELOC_SH_GOT_MEDLOW16: howto manager. (line 875) -* BFD_RELOC_SH_GOTOFF_HI16: howto manager. (line 889) -* BFD_RELOC_SH_GOTOFF_LOW16: howto manager. (line 886) -* BFD_RELOC_SH_GOTOFF_MEDHI16: howto manager. (line 888) -* BFD_RELOC_SH_GOTOFF_MEDLOW16: howto manager. (line 887) -* BFD_RELOC_SH_GOTPC: howto manager. (line 873) -* BFD_RELOC_SH_GOTPC_HI16: howto manager. (line 893) -* BFD_RELOC_SH_GOTPC_LOW16: howto manager. (line 890) -* BFD_RELOC_SH_GOTPC_MEDHI16: howto manager. (line 892) -* BFD_RELOC_SH_GOTPC_MEDLOW16: howto manager. (line 891) -* BFD_RELOC_SH_GOTPLT10BY4: howto manager. (line 900) -* BFD_RELOC_SH_GOTPLT10BY8: howto manager. (line 901) -* BFD_RELOC_SH_GOTPLT32: howto manager. (line 902) -* BFD_RELOC_SH_GOTPLT_HI16: howto manager. (line 881) -* BFD_RELOC_SH_GOTPLT_LOW16: howto manager. (line 878) -* BFD_RELOC_SH_GOTPLT_MEDHI16: howto manager. (line 880) -* BFD_RELOC_SH_GOTPLT_MEDLOW16: howto manager. (line 879) -* BFD_RELOC_SH_IMM3: howto manager. (line 843) -* BFD_RELOC_SH_IMM3U: howto manager. (line 844) -* BFD_RELOC_SH_IMM4: howto manager. (line 851) -* BFD_RELOC_SH_IMM4BY2: howto manager. (line 852) -* BFD_RELOC_SH_IMM4BY4: howto manager. (line 853) -* BFD_RELOC_SH_IMM8: howto manager. (line 854) -* BFD_RELOC_SH_IMM8BY2: howto manager. (line 855) -* BFD_RELOC_SH_IMM8BY4: howto manager. (line 856) -* BFD_RELOC_SH_IMM_HI16: howto manager. (line 920) -* BFD_RELOC_SH_IMM_HI16_PCREL: howto manager. (line 921) -* BFD_RELOC_SH_IMM_LOW16: howto manager. (line 914) -* BFD_RELOC_SH_IMM_LOW16_PCREL: howto manager. (line 915) -* BFD_RELOC_SH_IMM_MEDHI16: howto manager. (line 918) -* BFD_RELOC_SH_IMM_MEDHI16_PCREL: howto manager. (line 919) -* BFD_RELOC_SH_IMM_MEDLOW16: howto manager. (line 916) -* BFD_RELOC_SH_IMM_MEDLOW16_PCREL: howto manager. (line 917) -* BFD_RELOC_SH_IMMS10: howto manager. (line 908) -* BFD_RELOC_SH_IMMS10BY2: howto manager. (line 909) -* BFD_RELOC_SH_IMMS10BY4: howto manager. (line 910) -* BFD_RELOC_SH_IMMS10BY8: howto manager. (line 911) -* BFD_RELOC_SH_IMMS16: howto manager. (line 912) -* BFD_RELOC_SH_IMMS6: howto manager. (line 905) -* BFD_RELOC_SH_IMMS6BY32: howto manager. (line 906) -* BFD_RELOC_SH_IMMU16: howto manager. (line 913) -* BFD_RELOC_SH_IMMU5: howto manager. (line 904) -* BFD_RELOC_SH_IMMU6: howto manager. (line 907) -* BFD_RELOC_SH_JMP_SLOT: howto manager. (line 871) -* BFD_RELOC_SH_JMP_SLOT64: howto manager. (line 896) -* BFD_RELOC_SH_LABEL: howto manager. (line 866) -* BFD_RELOC_SH_LOOP_END: howto manager. (line 868) -* BFD_RELOC_SH_LOOP_START: howto manager. (line 867) -* BFD_RELOC_SH_PCDISP12BY2: howto manager. (line 842) -* BFD_RELOC_SH_PCDISP8BY2: howto manager. (line 841) -* BFD_RELOC_SH_PCRELIMM8BY2: howto manager. (line 857) -* BFD_RELOC_SH_PCRELIMM8BY4: howto manager. (line 858) -* BFD_RELOC_SH_PLT_HI16: howto manager. (line 885) -* BFD_RELOC_SH_PLT_LOW16: howto manager. (line 882) -* BFD_RELOC_SH_PLT_MEDHI16: howto manager. (line 884) -* BFD_RELOC_SH_PLT_MEDLOW16: howto manager. (line 883) -* BFD_RELOC_SH_PT_16: howto manager. (line 922) -* BFD_RELOC_SH_RELATIVE: howto manager. (line 872) -* BFD_RELOC_SH_RELATIVE64: howto manager. (line 897) -* BFD_RELOC_SH_SHMEDIA_CODE: howto manager. (line 903) -* BFD_RELOC_SH_SWITCH16: howto manager. (line 859) -* BFD_RELOC_SH_SWITCH32: howto manager. (line 860) -* BFD_RELOC_SH_TLS_DTPMOD32: howto manager. (line 928) -* BFD_RELOC_SH_TLS_DTPOFF32: howto manager. (line 929) -* BFD_RELOC_SH_TLS_GD_32: howto manager. (line 923) -* BFD_RELOC_SH_TLS_IE_32: howto manager. (line 926) -* BFD_RELOC_SH_TLS_LD_32: howto manager. (line 924) -* BFD_RELOC_SH_TLS_LDO_32: howto manager. (line 925) -* BFD_RELOC_SH_TLS_LE_32: howto manager. (line 927) -* BFD_RELOC_SH_TLS_TPOFF32: howto manager. (line 930) -* BFD_RELOC_SH_USES: howto manager. (line 861) +* BFD_RELOC_RX_16_OP: howto manager. (line 1620) +* BFD_RELOC_RX_16U: howto manager. (line 1624) +* BFD_RELOC_RX_24_OP: howto manager. (line 1621) +* BFD_RELOC_RX_24U: howto manager. (line 1625) +* BFD_RELOC_RX_32_OP: howto manager. (line 1622) +* BFD_RELOC_RX_8U: howto manager. (line 1623) +* BFD_RELOC_RX_ABS16: howto manager. (line 1635) +* BFD_RELOC_RX_ABS16_REV: howto manager. (line 1636) +* BFD_RELOC_RX_ABS16U: howto manager. (line 1639) +* BFD_RELOC_RX_ABS16UL: howto manager. (line 1641) +* BFD_RELOC_RX_ABS16UW: howto manager. (line 1640) +* BFD_RELOC_RX_ABS32: howto manager. (line 1637) +* BFD_RELOC_RX_ABS32_REV: howto manager. (line 1638) +* BFD_RELOC_RX_ABS8: howto manager. (line 1634) +* BFD_RELOC_RX_DIFF: howto manager. (line 1627) +* BFD_RELOC_RX_DIR3U_PCREL: howto manager. (line 1626) +* BFD_RELOC_RX_GPRELB: howto manager. (line 1628) +* BFD_RELOC_RX_GPRELL: howto manager. (line 1630) +* BFD_RELOC_RX_GPRELW: howto manager. (line 1629) +* BFD_RELOC_RX_NEG16: howto manager. (line 1617) +* BFD_RELOC_RX_NEG24: howto manager. (line 1618) +* BFD_RELOC_RX_NEG32: howto manager. (line 1619) +* BFD_RELOC_RX_NEG8: howto manager. (line 1616) +* BFD_RELOC_RX_OP_NEG: howto manager. (line 1633) +* BFD_RELOC_RX_OP_SUBTRACT: howto manager. (line 1632) +* BFD_RELOC_RX_RELAX: howto manager. (line 1642) +* BFD_RELOC_RX_SYM: howto manager. (line 1631) +* BFD_RELOC_SCORE16_BRANCH: howto manager. (line 1770) +* BFD_RELOC_SCORE16_JMP: howto manager. (line 1767) +* BFD_RELOC_SCORE_BCMP: howto manager. (line 1773) +* BFD_RELOC_SCORE_BRANCH: howto manager. (line 1758) +* BFD_RELOC_SCORE_CALL15: howto manager. (line 1778) +* BFD_RELOC_SCORE_DUMMY2: howto manager. (line 1754) +* BFD_RELOC_SCORE_DUMMY_HI16: howto manager. (line 1779) +* BFD_RELOC_SCORE_GOT15: howto manager. (line 1776) +* BFD_RELOC_SCORE_GOT_LO16: howto manager. (line 1777) +* BFD_RELOC_SCORE_GPREL15: howto manager. (line 1751) +* BFD_RELOC_SCORE_IMM30: howto manager. (line 1761) +* BFD_RELOC_SCORE_IMM32: howto manager. (line 1764) +* BFD_RELOC_SCORE_JMP: howto manager. (line 1755) +* BFD_RELOC_SH_ALIGN: howto manager. (line 876) +* BFD_RELOC_SH_CODE: howto manager. (line 877) +* BFD_RELOC_SH_COPY: howto manager. (line 882) +* BFD_RELOC_SH_COPY64: howto manager. (line 907) +* BFD_RELOC_SH_COUNT: howto manager. (line 875) +* BFD_RELOC_SH_DATA: howto manager. (line 878) +* BFD_RELOC_SH_DISP12: howto manager. (line 858) +* BFD_RELOC_SH_DISP12BY2: howto manager. (line 859) +* BFD_RELOC_SH_DISP12BY4: howto manager. (line 860) +* BFD_RELOC_SH_DISP12BY8: howto manager. (line 861) +* BFD_RELOC_SH_DISP20: howto manager. (line 862) +* BFD_RELOC_SH_DISP20BY8: howto manager. (line 863) +* BFD_RELOC_SH_FUNCDESC: howto manager. (line 950) +* BFD_RELOC_SH_GLOB_DAT: howto manager. (line 883) +* BFD_RELOC_SH_GLOB_DAT64: howto manager. (line 908) +* BFD_RELOC_SH_GOT10BY4: howto manager. (line 911) +* BFD_RELOC_SH_GOT10BY8: howto manager. (line 912) +* BFD_RELOC_SH_GOT20: howto manager. (line 944) +* BFD_RELOC_SH_GOT_HI16: howto manager. (line 890) +* BFD_RELOC_SH_GOT_LOW16: howto manager. (line 887) +* BFD_RELOC_SH_GOT_MEDHI16: howto manager. (line 889) +* BFD_RELOC_SH_GOT_MEDLOW16: howto manager. (line 888) +* BFD_RELOC_SH_GOTFUNCDESC: howto manager. (line 946) +* BFD_RELOC_SH_GOTFUNCDESC20: howto manager. (line 947) +* BFD_RELOC_SH_GOTOFF20: howto manager. (line 945) +* BFD_RELOC_SH_GOTOFF_HI16: howto manager. (line 902) +* BFD_RELOC_SH_GOTOFF_LOW16: howto manager. (line 899) +* BFD_RELOC_SH_GOTOFF_MEDHI16: howto manager. (line 901) +* BFD_RELOC_SH_GOTOFF_MEDLOW16: howto manager. (line 900) +* BFD_RELOC_SH_GOTOFFFUNCDESC: howto manager. (line 948) +* BFD_RELOC_SH_GOTOFFFUNCDESC20: howto manager. (line 949) +* BFD_RELOC_SH_GOTPC: howto manager. (line 886) +* BFD_RELOC_SH_GOTPC_HI16: howto manager. (line 906) +* BFD_RELOC_SH_GOTPC_LOW16: howto manager. (line 903) +* BFD_RELOC_SH_GOTPC_MEDHI16: howto manager. (line 905) +* BFD_RELOC_SH_GOTPC_MEDLOW16: howto manager. (line 904) +* BFD_RELOC_SH_GOTPLT10BY4: howto manager. (line 913) +* BFD_RELOC_SH_GOTPLT10BY8: howto manager. (line 914) +* BFD_RELOC_SH_GOTPLT32: howto manager. (line 915) +* BFD_RELOC_SH_GOTPLT_HI16: howto manager. (line 894) +* BFD_RELOC_SH_GOTPLT_LOW16: howto manager. (line 891) +* BFD_RELOC_SH_GOTPLT_MEDHI16: howto manager. (line 893) +* BFD_RELOC_SH_GOTPLT_MEDLOW16: howto manager. (line 892) +* BFD_RELOC_SH_IMM3: howto manager. (line 856) +* BFD_RELOC_SH_IMM3U: howto manager. (line 857) +* BFD_RELOC_SH_IMM4: howto manager. (line 864) +* BFD_RELOC_SH_IMM4BY2: howto manager. (line 865) +* BFD_RELOC_SH_IMM4BY4: howto manager. (line 866) +* BFD_RELOC_SH_IMM8: howto manager. (line 867) +* BFD_RELOC_SH_IMM8BY2: howto manager. (line 868) +* BFD_RELOC_SH_IMM8BY4: howto manager. (line 869) +* BFD_RELOC_SH_IMM_HI16: howto manager. (line 933) +* BFD_RELOC_SH_IMM_HI16_PCREL: howto manager. (line 934) +* BFD_RELOC_SH_IMM_LOW16: howto manager. (line 927) +* BFD_RELOC_SH_IMM_LOW16_PCREL: howto manager. (line 928) +* BFD_RELOC_SH_IMM_MEDHI16: howto manager. (line 931) +* BFD_RELOC_SH_IMM_MEDHI16_PCREL: howto manager. (line 932) +* BFD_RELOC_SH_IMM_MEDLOW16: howto manager. (line 929) +* BFD_RELOC_SH_IMM_MEDLOW16_PCREL: howto manager. (line 930) +* BFD_RELOC_SH_IMMS10: howto manager. (line 921) +* BFD_RELOC_SH_IMMS10BY2: howto manager. (line 922) +* BFD_RELOC_SH_IMMS10BY4: howto manager. (line 923) +* BFD_RELOC_SH_IMMS10BY8: howto manager. (line 924) +* BFD_RELOC_SH_IMMS16: howto manager. (line 925) +* BFD_RELOC_SH_IMMS6: howto manager. (line 918) +* BFD_RELOC_SH_IMMS6BY32: howto manager. (line 919) +* BFD_RELOC_SH_IMMU16: howto manager. (line 926) +* BFD_RELOC_SH_IMMU5: howto manager. (line 917) +* BFD_RELOC_SH_IMMU6: howto manager. (line 920) +* BFD_RELOC_SH_JMP_SLOT: howto manager. (line 884) +* BFD_RELOC_SH_JMP_SLOT64: howto manager. (line 909) +* BFD_RELOC_SH_LABEL: howto manager. (line 879) +* BFD_RELOC_SH_LOOP_END: howto manager. (line 881) +* BFD_RELOC_SH_LOOP_START: howto manager. (line 880) +* BFD_RELOC_SH_PCDISP12BY2: howto manager. (line 855) +* BFD_RELOC_SH_PCDISP8BY2: howto manager. (line 854) +* BFD_RELOC_SH_PCRELIMM8BY2: howto manager. (line 870) +* BFD_RELOC_SH_PCRELIMM8BY4: howto manager. (line 871) +* BFD_RELOC_SH_PLT_HI16: howto manager. (line 898) +* BFD_RELOC_SH_PLT_LOW16: howto manager. (line 895) +* BFD_RELOC_SH_PLT_MEDHI16: howto manager. (line 897) +* BFD_RELOC_SH_PLT_MEDLOW16: howto manager. (line 896) +* BFD_RELOC_SH_PT_16: howto manager. (line 935) +* BFD_RELOC_SH_RELATIVE: howto manager. (line 885) +* BFD_RELOC_SH_RELATIVE64: howto manager. (line 910) +* BFD_RELOC_SH_SHMEDIA_CODE: howto manager. (line 916) +* BFD_RELOC_SH_SWITCH16: howto manager. (line 872) +* BFD_RELOC_SH_SWITCH32: howto manager. (line 873) +* BFD_RELOC_SH_TLS_DTPMOD32: howto manager. (line 941) +* BFD_RELOC_SH_TLS_DTPOFF32: howto manager. (line 942) +* BFD_RELOC_SH_TLS_GD_32: howto manager. (line 936) +* BFD_RELOC_SH_TLS_IE_32: howto manager. (line 939) +* BFD_RELOC_SH_TLS_LD_32: howto manager. (line 937) +* BFD_RELOC_SH_TLS_LDO_32: howto manager. (line 938) +* BFD_RELOC_SH_TLS_LE_32: howto manager. (line 940) +* BFD_RELOC_SH_TLS_TPOFF32: howto manager. (line 943) +* BFD_RELOC_SH_USES: howto manager. (line 874) * BFD_RELOC_SPARC13: howto manager. (line 134) * BFD_RELOC_SPARC22: howto manager. (line 133) -* BFD_RELOC_SPARC_10: howto manager. (line 161) -* BFD_RELOC_SPARC_11: howto manager. (line 162) -* BFD_RELOC_SPARC_5: howto manager. (line 174) -* BFD_RELOC_SPARC_6: howto manager. (line 173) -* BFD_RELOC_SPARC_64: howto manager. (line 160) -* BFD_RELOC_SPARC_7: howto manager. (line 172) -* BFD_RELOC_SPARC_BASE13: howto manager. (line 156) -* BFD_RELOC_SPARC_BASE22: howto manager. (line 157) +* BFD_RELOC_SPARC_10: howto manager. (line 163) +* BFD_RELOC_SPARC_11: howto manager. (line 164) +* BFD_RELOC_SPARC_5: howto manager. (line 176) +* BFD_RELOC_SPARC_6: howto manager. (line 175) +* BFD_RELOC_SPARC_64: howto manager. (line 162) +* BFD_RELOC_SPARC_7: howto manager. (line 174) +* BFD_RELOC_SPARC_BASE13: howto manager. (line 158) +* BFD_RELOC_SPARC_BASE22: howto manager. (line 159) * BFD_RELOC_SPARC_COPY: howto manager. (line 141) -* BFD_RELOC_SPARC_DISP64: howto manager. (line 175) +* BFD_RELOC_SPARC_DISP64: howto manager. (line 177) * BFD_RELOC_SPARC_GLOB_DAT: howto manager. (line 142) * BFD_RELOC_SPARC_GOT10: howto manager. (line 135) * BFD_RELOC_SPARC_GOT13: howto manager. (line 136) @@ -10968,321 +11327,346 @@ * BFD_RELOC_SPARC_GOTDATA_OP: howto manager. (line 152) * BFD_RELOC_SPARC_GOTDATA_OP_HIX22: howto manager. (line 150) * BFD_RELOC_SPARC_GOTDATA_OP_LOX10: howto manager. (line 151) -* BFD_RELOC_SPARC_H44: howto manager. (line 180) -* BFD_RELOC_SPARC_HH22: howto manager. (line 164) -* BFD_RELOC_SPARC_HIX22: howto manager. (line 178) -* BFD_RELOC_SPARC_HM10: howto manager. (line 165) +* BFD_RELOC_SPARC_H44: howto manager. (line 182) +* BFD_RELOC_SPARC_HH22: howto manager. (line 166) +* BFD_RELOC_SPARC_HIX22: howto manager. (line 180) +* BFD_RELOC_SPARC_HM10: howto manager. (line 167) +* BFD_RELOC_SPARC_IRELATIVE: howto manager. (line 154) +* BFD_RELOC_SPARC_JMP_IREL: howto manager. (line 153) * BFD_RELOC_SPARC_JMP_SLOT: howto manager. (line 143) -* BFD_RELOC_SPARC_L44: howto manager. (line 182) -* BFD_RELOC_SPARC_LM22: howto manager. (line 166) -* BFD_RELOC_SPARC_LOX10: howto manager. (line 179) -* BFD_RELOC_SPARC_M44: howto manager. (line 181) -* BFD_RELOC_SPARC_OLO10: howto manager. (line 163) +* BFD_RELOC_SPARC_L44: howto manager. (line 184) +* BFD_RELOC_SPARC_LM22: howto manager. (line 168) +* BFD_RELOC_SPARC_LOX10: howto manager. (line 181) +* BFD_RELOC_SPARC_M44: howto manager. (line 183) +* BFD_RELOC_SPARC_OLO10: howto manager. (line 165) * BFD_RELOC_SPARC_PC10: howto manager. (line 138) * BFD_RELOC_SPARC_PC22: howto manager. (line 139) -* BFD_RELOC_SPARC_PC_HH22: howto manager. (line 167) -* BFD_RELOC_SPARC_PC_HM10: howto manager. (line 168) -* BFD_RELOC_SPARC_PC_LM22: howto manager. (line 169) -* BFD_RELOC_SPARC_PLT32: howto manager. (line 176) -* BFD_RELOC_SPARC_PLT64: howto manager. (line 177) -* BFD_RELOC_SPARC_REGISTER: howto manager. (line 183) +* BFD_RELOC_SPARC_PC_HH22: howto manager. (line 169) +* BFD_RELOC_SPARC_PC_HM10: howto manager. (line 170) +* BFD_RELOC_SPARC_PC_LM22: howto manager. (line 171) +* BFD_RELOC_SPARC_PLT32: howto manager. (line 178) +* BFD_RELOC_SPARC_PLT64: howto manager. (line 179) +* BFD_RELOC_SPARC_REGISTER: howto manager. (line 185) * BFD_RELOC_SPARC_RELATIVE: howto manager. (line 144) -* BFD_RELOC_SPARC_REV32: howto manager. (line 186) -* BFD_RELOC_SPARC_TLS_DTPMOD32: howto manager. (line 207) -* BFD_RELOC_SPARC_TLS_DTPMOD64: howto manager. (line 208) -* BFD_RELOC_SPARC_TLS_DTPOFF32: howto manager. (line 209) -* BFD_RELOC_SPARC_TLS_DTPOFF64: howto manager. (line 210) -* BFD_RELOC_SPARC_TLS_GD_ADD: howto manager. (line 191) -* BFD_RELOC_SPARC_TLS_GD_CALL: howto manager. (line 192) -* BFD_RELOC_SPARC_TLS_GD_HI22: howto manager. (line 189) -* BFD_RELOC_SPARC_TLS_GD_LO10: howto manager. (line 190) -* BFD_RELOC_SPARC_TLS_IE_ADD: howto manager. (line 204) -* BFD_RELOC_SPARC_TLS_IE_HI22: howto manager. (line 200) -* BFD_RELOC_SPARC_TLS_IE_LD: howto manager. (line 202) -* BFD_RELOC_SPARC_TLS_IE_LDX: howto manager. (line 203) -* BFD_RELOC_SPARC_TLS_IE_LO10: howto manager. (line 201) -* BFD_RELOC_SPARC_TLS_LDM_ADD: howto manager. (line 195) -* BFD_RELOC_SPARC_TLS_LDM_CALL: howto manager. (line 196) -* BFD_RELOC_SPARC_TLS_LDM_HI22: howto manager. (line 193) -* BFD_RELOC_SPARC_TLS_LDM_LO10: howto manager. (line 194) -* BFD_RELOC_SPARC_TLS_LDO_ADD: howto manager. (line 199) -* BFD_RELOC_SPARC_TLS_LDO_HIX22: howto manager. (line 197) -* BFD_RELOC_SPARC_TLS_LDO_LOX10: howto manager. (line 198) -* BFD_RELOC_SPARC_TLS_LE_HIX22: howto manager. (line 205) -* BFD_RELOC_SPARC_TLS_LE_LOX10: howto manager. (line 206) -* BFD_RELOC_SPARC_TLS_TPOFF32: howto manager. (line 211) -* BFD_RELOC_SPARC_TLS_TPOFF64: howto manager. (line 212) +* BFD_RELOC_SPARC_REV32: howto manager. (line 188) +* BFD_RELOC_SPARC_TLS_DTPMOD32: howto manager. (line 209) +* BFD_RELOC_SPARC_TLS_DTPMOD64: howto manager. (line 210) +* BFD_RELOC_SPARC_TLS_DTPOFF32: howto manager. (line 211) +* BFD_RELOC_SPARC_TLS_DTPOFF64: howto manager. (line 212) +* BFD_RELOC_SPARC_TLS_GD_ADD: howto manager. (line 193) +* BFD_RELOC_SPARC_TLS_GD_CALL: howto manager. (line 194) +* BFD_RELOC_SPARC_TLS_GD_HI22: howto manager. (line 191) +* BFD_RELOC_SPARC_TLS_GD_LO10: howto manager. (line 192) +* BFD_RELOC_SPARC_TLS_IE_ADD: howto manager. (line 206) +* BFD_RELOC_SPARC_TLS_IE_HI22: howto manager. (line 202) +* BFD_RELOC_SPARC_TLS_IE_LD: howto manager. (line 204) +* BFD_RELOC_SPARC_TLS_IE_LDX: howto manager. (line 205) +* BFD_RELOC_SPARC_TLS_IE_LO10: howto manager. (line 203) +* BFD_RELOC_SPARC_TLS_LDM_ADD: howto manager. (line 197) +* BFD_RELOC_SPARC_TLS_LDM_CALL: howto manager. (line 198) +* BFD_RELOC_SPARC_TLS_LDM_HI22: howto manager. (line 195) +* BFD_RELOC_SPARC_TLS_LDM_LO10: howto manager. (line 196) +* BFD_RELOC_SPARC_TLS_LDO_ADD: howto manager. (line 201) +* BFD_RELOC_SPARC_TLS_LDO_HIX22: howto manager. (line 199) +* BFD_RELOC_SPARC_TLS_LDO_LOX10: howto manager. (line 200) +* BFD_RELOC_SPARC_TLS_LE_HIX22: howto manager. (line 207) +* BFD_RELOC_SPARC_TLS_LE_LOX10: howto manager. (line 208) +* BFD_RELOC_SPARC_TLS_TPOFF32: howto manager. (line 213) +* BFD_RELOC_SPARC_TLS_TPOFF64: howto manager. (line 214) * BFD_RELOC_SPARC_UA16: howto manager. (line 145) * BFD_RELOC_SPARC_UA32: howto manager. (line 146) * BFD_RELOC_SPARC_UA64: howto manager. (line 147) -* BFD_RELOC_SPARC_WDISP16: howto manager. (line 170) -* BFD_RELOC_SPARC_WDISP19: howto manager. (line 171) +* BFD_RELOC_SPARC_WDISP16: howto manager. (line 172) +* BFD_RELOC_SPARC_WDISP19: howto manager. (line 173) * BFD_RELOC_SPARC_WDISP22: howto manager. (line 132) * BFD_RELOC_SPARC_WPLT30: howto manager. (line 140) -* BFD_RELOC_SPU_ADD_PIC: howto manager. (line 229) -* BFD_RELOC_SPU_HI16: howto manager. (line 226) -* BFD_RELOC_SPU_IMM10: howto manager. (line 217) -* BFD_RELOC_SPU_IMM10W: howto manager. (line 218) -* BFD_RELOC_SPU_IMM16: howto manager. (line 219) -* BFD_RELOC_SPU_IMM16W: howto manager. (line 220) -* BFD_RELOC_SPU_IMM18: howto manager. (line 221) -* BFD_RELOC_SPU_IMM7: howto manager. (line 215) -* BFD_RELOC_SPU_IMM8: howto manager. (line 216) -* BFD_RELOC_SPU_LO16: howto manager. (line 225) -* BFD_RELOC_SPU_PCREL16: howto manager. (line 224) -* BFD_RELOC_SPU_PCREL9a: howto manager. (line 222) -* BFD_RELOC_SPU_PCREL9b: howto manager. (line 223) -* BFD_RELOC_SPU_PPU32: howto manager. (line 227) -* BFD_RELOC_SPU_PPU64: howto manager. (line 228) -* BFD_RELOC_THUMB_PCREL_BLX: howto manager. (line 701) -* BFD_RELOC_THUMB_PCREL_BRANCH12: howto manager. (line 715) -* BFD_RELOC_THUMB_PCREL_BRANCH20: howto manager. (line 716) -* BFD_RELOC_THUMB_PCREL_BRANCH23: howto manager. (line 717) -* BFD_RELOC_THUMB_PCREL_BRANCH25: howto manager. (line 718) -* BFD_RELOC_THUMB_PCREL_BRANCH7: howto manager. (line 713) -* BFD_RELOC_THUMB_PCREL_BRANCH9: howto manager. (line 714) -* BFD_RELOC_TIC30_LDP: howto manager. (line 1257) -* BFD_RELOC_TIC54X_16_OF_23: howto manager. (line 1275) -* BFD_RELOC_TIC54X_23: howto manager. (line 1272) -* BFD_RELOC_TIC54X_MS7_OF_23: howto manager. (line 1280) -* BFD_RELOC_TIC54X_PARTLS7: howto manager. (line 1262) -* BFD_RELOC_TIC54X_PARTMS9: howto manager. (line 1267) -* bfd_reloc_type_lookup: howto manager. (line 2234) -* BFD_RELOC_V850_22_PCREL: howto manager. (line 1184) -* BFD_RELOC_V850_9_PCREL: howto manager. (line 1181) -* BFD_RELOC_V850_ALIGN: howto manager. (line 1242) -* BFD_RELOC_V850_CALLT_16_16_OFFSET: howto manager. (line 1233) -* BFD_RELOC_V850_CALLT_6_7_OFFSET: howto manager. (line 1230) -* BFD_RELOC_V850_LO16_SPLIT_OFFSET: howto manager. (line 1245) -* BFD_RELOC_V850_LONGCALL: howto manager. (line 1236) -* BFD_RELOC_V850_LONGJUMP: howto manager. (line 1239) -* BFD_RELOC_V850_SDA_15_16_OFFSET: howto manager. (line 1190) -* BFD_RELOC_V850_SDA_16_16_OFFSET: howto manager. (line 1187) -* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager. (line 1222) -* BFD_RELOC_V850_TDA_16_16_OFFSET: howto manager. (line 1212) -* BFD_RELOC_V850_TDA_4_4_OFFSET: howto manager. (line 1219) -* BFD_RELOC_V850_TDA_4_5_OFFSET: howto manager. (line 1215) -* BFD_RELOC_V850_TDA_6_8_OFFSET: howto manager. (line 1201) -* BFD_RELOC_V850_TDA_7_7_OFFSET: howto manager. (line 1209) -* BFD_RELOC_V850_TDA_7_8_OFFSET: howto manager. (line 1205) -* BFD_RELOC_V850_ZDA_15_16_OFFSET: howto manager. (line 1197) -* BFD_RELOC_V850_ZDA_16_16_OFFSET: howto manager. (line 1194) -* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager. (line 1226) -* BFD_RELOC_VAX_GLOB_DAT: howto manager. (line 2026) -* BFD_RELOC_VAX_JMP_SLOT: howto manager. (line 2027) -* BFD_RELOC_VAX_RELATIVE: howto manager. (line 2028) -* BFD_RELOC_VPE4KMATH_DATA: howto manager. (line 1665) -* BFD_RELOC_VPE4KMATH_INSN: howto manager. (line 1666) -* BFD_RELOC_VTABLE_ENTRY: howto manager. (line 1670) -* BFD_RELOC_VTABLE_INHERIT: howto manager. (line 1669) -* BFD_RELOC_X86_64_32S: howto manager. (line 536) -* BFD_RELOC_X86_64_COPY: howto manager. (line 531) -* BFD_RELOC_X86_64_DTPMOD64: howto manager. (line 537) -* BFD_RELOC_X86_64_DTPOFF32: howto manager. (line 542) -* BFD_RELOC_X86_64_DTPOFF64: howto manager. (line 538) -* BFD_RELOC_X86_64_GLOB_DAT: howto manager. (line 532) -* BFD_RELOC_X86_64_GOT32: howto manager. (line 529) -* BFD_RELOC_X86_64_GOT64: howto manager. (line 547) -* BFD_RELOC_X86_64_GOTOFF64: howto manager. (line 545) -* BFD_RELOC_X86_64_GOTPC32: howto manager. (line 546) -* BFD_RELOC_X86_64_GOTPC32_TLSDESC: howto manager. (line 552) -* BFD_RELOC_X86_64_GOTPC64: howto manager. (line 549) -* BFD_RELOC_X86_64_GOTPCREL: howto manager. (line 535) -* BFD_RELOC_X86_64_GOTPCREL64: howto manager. (line 548) -* BFD_RELOC_X86_64_GOTPLT64: howto manager. (line 550) -* BFD_RELOC_X86_64_GOTTPOFF: howto manager. (line 543) -* BFD_RELOC_X86_64_IRELATIVE: howto manager. (line 555) -* BFD_RELOC_X86_64_JUMP_SLOT: howto manager. (line 533) -* BFD_RELOC_X86_64_PLT32: howto manager. (line 530) -* BFD_RELOC_X86_64_PLTOFF64: howto manager. (line 551) -* BFD_RELOC_X86_64_RELATIVE: howto manager. (line 534) -* BFD_RELOC_X86_64_TLSDESC: howto manager. (line 554) -* BFD_RELOC_X86_64_TLSDESC_CALL: howto manager. (line 553) -* BFD_RELOC_X86_64_TLSGD: howto manager. (line 540) -* BFD_RELOC_X86_64_TLSLD: howto manager. (line 541) -* BFD_RELOC_X86_64_TPOFF32: howto manager. (line 544) -* BFD_RELOC_X86_64_TPOFF64: howto manager. (line 539) -* BFD_RELOC_XC16X_PAG: howto manager. (line 2020) -* BFD_RELOC_XC16X_POF: howto manager. (line 2021) -* BFD_RELOC_XC16X_SEG: howto manager. (line 2022) -* BFD_RELOC_XC16X_SOF: howto manager. (line 2023) -* BFD_RELOC_XSTORMY16_12: howto manager. (line 2012) -* BFD_RELOC_XSTORMY16_24: howto manager. (line 2013) -* BFD_RELOC_XSTORMY16_FPTR16: howto manager. (line 2014) -* BFD_RELOC_XSTORMY16_REL_12: howto manager. (line 2011) -* BFD_RELOC_XTENSA_ASM_EXPAND: howto manager. (line 2132) -* BFD_RELOC_XTENSA_ASM_SIMPLIFY: howto manager. (line 2137) -* BFD_RELOC_XTENSA_DIFF16: howto manager. (line 2079) -* BFD_RELOC_XTENSA_DIFF32: howto manager. (line 2080) -* BFD_RELOC_XTENSA_DIFF8: howto manager. (line 2078) -* BFD_RELOC_XTENSA_GLOB_DAT: howto manager. (line 2068) -* BFD_RELOC_XTENSA_JMP_SLOT: howto manager. (line 2069) -* BFD_RELOC_XTENSA_OP0: howto manager. (line 2126) -* BFD_RELOC_XTENSA_OP1: howto manager. (line 2127) -* BFD_RELOC_XTENSA_OP2: howto manager. (line 2128) -* BFD_RELOC_XTENSA_PLT: howto manager. (line 2073) -* BFD_RELOC_XTENSA_RELATIVE: howto manager. (line 2070) -* BFD_RELOC_XTENSA_RTLD: howto manager. (line 2063) -* BFD_RELOC_XTENSA_SLOT0_ALT: howto manager. (line 2108) -* BFD_RELOC_XTENSA_SLOT0_OP: howto manager. (line 2088) -* BFD_RELOC_XTENSA_SLOT10_ALT: howto manager. (line 2118) -* BFD_RELOC_XTENSA_SLOT10_OP: howto manager. (line 2098) -* BFD_RELOC_XTENSA_SLOT11_ALT: howto manager. (line 2119) -* BFD_RELOC_XTENSA_SLOT11_OP: howto manager. (line 2099) -* BFD_RELOC_XTENSA_SLOT12_ALT: howto manager. (line 2120) -* BFD_RELOC_XTENSA_SLOT12_OP: howto manager. (line 2100) -* BFD_RELOC_XTENSA_SLOT13_ALT: howto manager. (line 2121) -* BFD_RELOC_XTENSA_SLOT13_OP: howto manager. (line 2101) -* BFD_RELOC_XTENSA_SLOT14_ALT: howto manager. (line 2122) -* BFD_RELOC_XTENSA_SLOT14_OP: howto manager. (line 2102) -* BFD_RELOC_XTENSA_SLOT1_ALT: howto manager. (line 2109) -* BFD_RELOC_XTENSA_SLOT1_OP: howto manager. (line 2089) -* BFD_RELOC_XTENSA_SLOT2_ALT: howto manager. (line 2110) -* BFD_RELOC_XTENSA_SLOT2_OP: howto manager. (line 2090) -* BFD_RELOC_XTENSA_SLOT3_ALT: howto manager. (line 2111) -* BFD_RELOC_XTENSA_SLOT3_OP: howto manager. (line 2091) -* BFD_RELOC_XTENSA_SLOT4_ALT: howto manager. (line 2112) -* BFD_RELOC_XTENSA_SLOT4_OP: howto manager. (line 2092) -* BFD_RELOC_XTENSA_SLOT5_ALT: howto manager. (line 2113) -* BFD_RELOC_XTENSA_SLOT5_OP: howto manager. (line 2093) -* BFD_RELOC_XTENSA_SLOT6_ALT: howto manager. (line 2114) -* BFD_RELOC_XTENSA_SLOT6_OP: howto manager. (line 2094) -* BFD_RELOC_XTENSA_SLOT7_ALT: howto manager. (line 2115) -* BFD_RELOC_XTENSA_SLOT7_OP: howto manager. (line 2095) -* BFD_RELOC_XTENSA_SLOT8_ALT: howto manager. (line 2116) -* BFD_RELOC_XTENSA_SLOT8_OP: howto manager. (line 2096) -* BFD_RELOC_XTENSA_SLOT9_ALT: howto manager. (line 2117) -* BFD_RELOC_XTENSA_SLOT9_OP: howto manager. (line 2097) -* BFD_RELOC_XTENSA_TLS_ARG: howto manager. (line 2147) -* BFD_RELOC_XTENSA_TLS_CALL: howto manager. (line 2148) -* BFD_RELOC_XTENSA_TLS_DTPOFF: howto manager. (line 2144) -* BFD_RELOC_XTENSA_TLS_FUNC: howto manager. (line 2146) -* BFD_RELOC_XTENSA_TLS_TPOFF: howto manager. (line 2145) -* BFD_RELOC_XTENSA_TLSDESC_ARG: howto manager. (line 2143) -* BFD_RELOC_XTENSA_TLSDESC_FN: howto manager. (line 2142) -* BFD_RELOC_Z80_DISP8: howto manager. (line 2151) -* BFD_RELOC_Z8K_CALLR: howto manager. (line 2157) -* BFD_RELOC_Z8K_DISP7: howto manager. (line 2154) -* BFD_RELOC_Z8K_IMM4L: howto manager. (line 2160) -* bfd_scan_arch: Architectures. (line 433) -* bfd_scan_vma: BFD front end. (line 513) -* bfd_seach_for_target: bfd_target. (line 470) +* BFD_RELOC_SPU_ADD_PIC: howto manager. (line 231) +* BFD_RELOC_SPU_HI16: howto manager. (line 228) +* BFD_RELOC_SPU_IMM10: howto manager. (line 219) +* BFD_RELOC_SPU_IMM10W: howto manager. (line 220) +* BFD_RELOC_SPU_IMM16: howto manager. (line 221) +* BFD_RELOC_SPU_IMM16W: howto manager. (line 222) +* BFD_RELOC_SPU_IMM18: howto manager. (line 223) +* BFD_RELOC_SPU_IMM7: howto manager. (line 217) +* BFD_RELOC_SPU_IMM8: howto manager. (line 218) +* BFD_RELOC_SPU_LO16: howto manager. (line 227) +* BFD_RELOC_SPU_PCREL16: howto manager. (line 226) +* BFD_RELOC_SPU_PCREL9a: howto manager. (line 224) +* BFD_RELOC_SPU_PCREL9b: howto manager. (line 225) +* BFD_RELOC_SPU_PPU32: howto manager. (line 229) +* BFD_RELOC_SPU_PPU64: howto manager. (line 230) +* BFD_RELOC_THUMB_PCREL_BLX: howto manager. (line 703) +* BFD_RELOC_THUMB_PCREL_BRANCH12: howto manager. (line 717) +* BFD_RELOC_THUMB_PCREL_BRANCH20: howto manager. (line 718) +* BFD_RELOC_THUMB_PCREL_BRANCH23: howto manager. (line 719) +* BFD_RELOC_THUMB_PCREL_BRANCH25: howto manager. (line 720) +* BFD_RELOC_THUMB_PCREL_BRANCH7: howto manager. (line 715) +* BFD_RELOC_THUMB_PCREL_BRANCH9: howto manager. (line 716) +* BFD_RELOC_TIC30_LDP: howto manager. (line 1343) +* BFD_RELOC_TIC54X_16_OF_23: howto manager. (line 1361) +* BFD_RELOC_TIC54X_23: howto manager. (line 1358) +* BFD_RELOC_TIC54X_MS7_OF_23: howto manager. (line 1366) +* BFD_RELOC_TIC54X_PARTLS7: howto manager. (line 1348) +* BFD_RELOC_TIC54X_PARTMS9: howto manager. (line 1353) +* bfd_reloc_type_lookup: howto manager. (line 2408) +* BFD_RELOC_V850_16_GOT: howto manager. (line 1299) +* BFD_RELOC_V850_16_GOTOFF: howto manager. (line 1323) +* BFD_RELOC_V850_16_PCREL: howto manager. (line 1269) +* BFD_RELOC_V850_16_S1: howto manager. (line 1287) +* BFD_RELOC_V850_16_SPLIT_OFFSET: howto manager. (line 1284) +* BFD_RELOC_V850_17_PCREL: howto manager. (line 1272) +* BFD_RELOC_V850_22_PCREL: howto manager. (line 1204) +* BFD_RELOC_V850_22_PLT_PCREL: howto manager. (line 1305) +* BFD_RELOC_V850_23: howto manager. (line 1275) +* BFD_RELOC_V850_32_ABS: howto manager. (line 1281) +* BFD_RELOC_V850_32_GOT: howto manager. (line 1302) +* BFD_RELOC_V850_32_GOTOFF: howto manager. (line 1326) +* BFD_RELOC_V850_32_GOTPCREL: howto manager. (line 1296) +* BFD_RELOC_V850_32_PCREL: howto manager. (line 1278) +* BFD_RELOC_V850_32_PLT_PCREL: howto manager. (line 1308) +* BFD_RELOC_V850_9_PCREL: howto manager. (line 1201) +* BFD_RELOC_V850_ALIGN: howto manager. (line 1262) +* BFD_RELOC_V850_CALLT_15_16_OFFSET: howto manager. (line 1293) +* BFD_RELOC_V850_CALLT_16_16_OFFSET: howto manager. (line 1253) +* BFD_RELOC_V850_CALLT_6_7_OFFSET: howto manager. (line 1250) +* BFD_RELOC_V850_CODE: howto manager. (line 1329) +* BFD_RELOC_V850_COPY: howto manager. (line 1311) +* BFD_RELOC_V850_DATA: howto manager. (line 1332) +* BFD_RELOC_V850_GLOB_DAT: howto manager. (line 1314) +* BFD_RELOC_V850_JMP_SLOT: howto manager. (line 1317) +* BFD_RELOC_V850_LO16_S1: howto manager. (line 1290) +* BFD_RELOC_V850_LO16_SPLIT_OFFSET: howto manager. (line 1265) +* BFD_RELOC_V850_LONGCALL: howto manager. (line 1256) +* BFD_RELOC_V850_LONGJUMP: howto manager. (line 1259) +* BFD_RELOC_V850_RELATIVE: howto manager. (line 1320) +* BFD_RELOC_V850_SDA_15_16_OFFSET: howto manager. (line 1210) +* BFD_RELOC_V850_SDA_16_16_OFFSET: howto manager. (line 1207) +* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager. (line 1242) +* BFD_RELOC_V850_TDA_16_16_OFFSET: howto manager. (line 1232) +* BFD_RELOC_V850_TDA_4_4_OFFSET: howto manager. (line 1239) +* BFD_RELOC_V850_TDA_4_5_OFFSET: howto manager. (line 1235) +* BFD_RELOC_V850_TDA_6_8_OFFSET: howto manager. (line 1221) +* BFD_RELOC_V850_TDA_7_7_OFFSET: howto manager. (line 1229) +* BFD_RELOC_V850_TDA_7_8_OFFSET: howto manager. (line 1225) +* BFD_RELOC_V850_ZDA_15_16_OFFSET: howto manager. (line 1217) +* BFD_RELOC_V850_ZDA_16_16_OFFSET: howto manager. (line 1214) +* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager. (line 1246) +* BFD_RELOC_VAX_GLOB_DAT: howto manager. (line 2173) +* BFD_RELOC_VAX_JMP_SLOT: howto manager. (line 2174) +* BFD_RELOC_VAX_RELATIVE: howto manager. (line 2175) +* BFD_RELOC_VPE4KMATH_DATA: howto manager. (line 1812) +* BFD_RELOC_VPE4KMATH_INSN: howto manager. (line 1813) +* BFD_RELOC_VTABLE_ENTRY: howto manager. (line 1817) +* BFD_RELOC_VTABLE_INHERIT: howto manager. (line 1816) +* BFD_RELOC_X86_64_32S: howto manager. (line 538) +* BFD_RELOC_X86_64_COPY: howto manager. (line 533) +* BFD_RELOC_X86_64_DTPMOD64: howto manager. (line 539) +* BFD_RELOC_X86_64_DTPOFF32: howto manager. (line 544) +* BFD_RELOC_X86_64_DTPOFF64: howto manager. (line 540) +* BFD_RELOC_X86_64_GLOB_DAT: howto manager. (line 534) +* BFD_RELOC_X86_64_GOT32: howto manager. (line 531) +* BFD_RELOC_X86_64_GOT64: howto manager. (line 549) +* BFD_RELOC_X86_64_GOTOFF64: howto manager. (line 547) +* BFD_RELOC_X86_64_GOTPC32: howto manager. (line 548) +* BFD_RELOC_X86_64_GOTPC32_TLSDESC: howto manager. (line 554) +* BFD_RELOC_X86_64_GOTPC64: howto manager. (line 551) +* BFD_RELOC_X86_64_GOTPCREL: howto manager. (line 537) +* BFD_RELOC_X86_64_GOTPCREL64: howto manager. (line 550) +* BFD_RELOC_X86_64_GOTPLT64: howto manager. (line 552) +* BFD_RELOC_X86_64_GOTTPOFF: howto manager. (line 545) +* BFD_RELOC_X86_64_IRELATIVE: howto manager. (line 557) +* BFD_RELOC_X86_64_JUMP_SLOT: howto manager. (line 535) +* BFD_RELOC_X86_64_PLT32: howto manager. (line 532) +* BFD_RELOC_X86_64_PLTOFF64: howto manager. (line 553) +* BFD_RELOC_X86_64_RELATIVE: howto manager. (line 536) +* BFD_RELOC_X86_64_TLSDESC: howto manager. (line 556) +* BFD_RELOC_X86_64_TLSDESC_CALL: howto manager. (line 555) +* BFD_RELOC_X86_64_TLSGD: howto manager. (line 542) +* BFD_RELOC_X86_64_TLSLD: howto manager. (line 543) +* BFD_RELOC_X86_64_TPOFF32: howto manager. (line 546) +* BFD_RELOC_X86_64_TPOFF64: howto manager. (line 541) +* BFD_RELOC_XC16X_PAG: howto manager. (line 2167) +* BFD_RELOC_XC16X_POF: howto manager. (line 2168) +* BFD_RELOC_XC16X_SEG: howto manager. (line 2169) +* BFD_RELOC_XC16X_SOF: howto manager. (line 2170) +* BFD_RELOC_XSTORMY16_12: howto manager. (line 2159) +* BFD_RELOC_XSTORMY16_24: howto manager. (line 2160) +* BFD_RELOC_XSTORMY16_FPTR16: howto manager. (line 2161) +* BFD_RELOC_XSTORMY16_REL_12: howto manager. (line 2158) +* BFD_RELOC_XTENSA_ASM_EXPAND: howto manager. (line 2279) +* BFD_RELOC_XTENSA_ASM_SIMPLIFY: howto manager. (line 2284) +* BFD_RELOC_XTENSA_DIFF16: howto manager. (line 2226) +* BFD_RELOC_XTENSA_DIFF32: howto manager. (line 2227) +* BFD_RELOC_XTENSA_DIFF8: howto manager. (line 2225) +* BFD_RELOC_XTENSA_GLOB_DAT: howto manager. (line 2215) +* BFD_RELOC_XTENSA_JMP_SLOT: howto manager. (line 2216) +* BFD_RELOC_XTENSA_OP0: howto manager. (line 2273) +* BFD_RELOC_XTENSA_OP1: howto manager. (line 2274) +* BFD_RELOC_XTENSA_OP2: howto manager. (line 2275) +* BFD_RELOC_XTENSA_PLT: howto manager. (line 2220) +* BFD_RELOC_XTENSA_RELATIVE: howto manager. (line 2217) +* BFD_RELOC_XTENSA_RTLD: howto manager. (line 2210) +* BFD_RELOC_XTENSA_SLOT0_ALT: howto manager. (line 2255) +* BFD_RELOC_XTENSA_SLOT0_OP: howto manager. (line 2235) +* BFD_RELOC_XTENSA_SLOT10_ALT: howto manager. (line 2265) +* BFD_RELOC_XTENSA_SLOT10_OP: howto manager. (line 2245) +* BFD_RELOC_XTENSA_SLOT11_ALT: howto manager. (line 2266) +* BFD_RELOC_XTENSA_SLOT11_OP: howto manager. (line 2246) +* BFD_RELOC_XTENSA_SLOT12_ALT: howto manager. (line 2267) +* BFD_RELOC_XTENSA_SLOT12_OP: howto manager. (line 2247) +* BFD_RELOC_XTENSA_SLOT13_ALT: howto manager. (line 2268) +* BFD_RELOC_XTENSA_SLOT13_OP: howto manager. (line 2248) +* BFD_RELOC_XTENSA_SLOT14_ALT: howto manager. (line 2269) +* BFD_RELOC_XTENSA_SLOT14_OP: howto manager. (line 2249) +* BFD_RELOC_XTENSA_SLOT1_ALT: howto manager. (line 2256) +* BFD_RELOC_XTENSA_SLOT1_OP: howto manager. (line 2236) +* BFD_RELOC_XTENSA_SLOT2_ALT: howto manager. (line 2257) +* BFD_RELOC_XTENSA_SLOT2_OP: howto manager. (line 2237) +* BFD_RELOC_XTENSA_SLOT3_ALT: howto manager. (line 2258) +* BFD_RELOC_XTENSA_SLOT3_OP: howto manager. (line 2238) +* BFD_RELOC_XTENSA_SLOT4_ALT: howto manager. (line 2259) +* BFD_RELOC_XTENSA_SLOT4_OP: howto manager. (line 2239) +* BFD_RELOC_XTENSA_SLOT5_ALT: howto manager. (line 2260) +* BFD_RELOC_XTENSA_SLOT5_OP: howto manager. (line 2240) +* BFD_RELOC_XTENSA_SLOT6_ALT: howto manager. (line 2261) +* BFD_RELOC_XTENSA_SLOT6_OP: howto manager. (line 2241) +* BFD_RELOC_XTENSA_SLOT7_ALT: howto manager. (line 2262) +* BFD_RELOC_XTENSA_SLOT7_OP: howto manager. (line 2242) +* BFD_RELOC_XTENSA_SLOT8_ALT: howto manager. (line 2263) +* BFD_RELOC_XTENSA_SLOT8_OP: howto manager. (line 2243) +* BFD_RELOC_XTENSA_SLOT9_ALT: howto manager. (line 2264) +* BFD_RELOC_XTENSA_SLOT9_OP: howto manager. (line 2244) +* BFD_RELOC_XTENSA_TLS_ARG: howto manager. (line 2294) +* BFD_RELOC_XTENSA_TLS_CALL: howto manager. (line 2295) +* BFD_RELOC_XTENSA_TLS_DTPOFF: howto manager. (line 2291) +* BFD_RELOC_XTENSA_TLS_FUNC: howto manager. (line 2293) +* BFD_RELOC_XTENSA_TLS_TPOFF: howto manager. (line 2292) +* BFD_RELOC_XTENSA_TLSDESC_ARG: howto manager. (line 2290) +* BFD_RELOC_XTENSA_TLSDESC_FN: howto manager. (line 2289) +* BFD_RELOC_Z80_DISP8: howto manager. (line 2298) +* BFD_RELOC_Z8K_CALLR: howto manager. (line 2304) +* BFD_RELOC_Z8K_DISP7: howto manager. (line 2301) +* BFD_RELOC_Z8K_IMM4L: howto manager. (line 2307) +* bfd_rename_section: section prototypes. (line 155) +* bfd_scan_arch: Architectures. (line 447) +* bfd_scan_vma: BFD front end. (line 532) +* bfd_seach_for_target: bfd_target. (line 507) * bfd_section_already_linked: Writing the symbol table. (line 55) * bfd_section_list_clear: section prototypes. (line 8) -* bfd_sections_find_if: section prototypes. (line 176) -* bfd_set_arch_info: Architectures. (line 474) +* bfd_sections_find_if: section prototypes. (line 185) +* bfd_set_arch_info: Architectures. (line 488) * bfd_set_archive_head: Archives. (line 69) -* bfd_set_default_target: bfd_target. (line 435) -* bfd_set_error: BFD front end. (line 323) -* bfd_set_error_handler: BFD front end. (line 365) -* bfd_set_error_program_name: BFD front end. (line 374) -* bfd_set_file_flags: BFD front end. (line 433) +* bfd_set_default_target: bfd_target. (line 446) +* bfd_set_error: BFD front end. (line 342) +* bfd_set_error_handler: BFD front end. (line 384) +* bfd_set_error_program_name: BFD front end. (line 393) +* bfd_set_file_flags: BFD front end. (line 452) * bfd_set_format: Formats. (line 68) -* bfd_set_gp_size: BFD front end. (line 503) -* bfd_set_private_flags: BFD front end. (line 580) -* bfd_set_reloc: BFD front end. (line 423) -* bfd_set_section_contents: section prototypes. (line 207) +* bfd_set_gp_size: BFD front end. (line 522) +* bfd_set_private_flags: BFD front end. (line 599) +* bfd_set_reloc: BFD front end. (line 442) +* bfd_set_section_contents: section prototypes. (line 216) * bfd_set_section_flags: section prototypes. (line 140) -* bfd_set_section_size: section prototypes. (line 193) -* bfd_set_start_address: BFD front end. (line 482) +* bfd_set_section_size: section prototypes. (line 202) +* bfd_set_start_address: BFD front end. (line 501) * bfd_set_symtab: symbol handling functions. (line 60) * bfd_symbol_info: symbol handling functions. (line 130) -* bfd_target_list: bfd_target. (line 461) +* bfd_target_list: bfd_target. (line 498) * bfd_write_bigendian_4byte_int: Internal. (line 13) * bfd_zalloc: Opening and Closing. - (line 228) + (line 232) * bfd_zalloc2: Opening and Closing. - (line 237) + (line 241) * coff_symbol_type: coff. (line 244) -* core_file_matches_executable_p: Core Files. (line 30) +* core_file_matches_executable_p: Core Files. (line 39) * find_separate_debug_file: Opening and Closing. - (line 279) -* generic_core_file_matches_executable_p: Core Files. (line 40) + (line 283) +* generic_core_file_matches_executable_p: Core Files. (line 49) * get_debug_link_info: Opening and Closing. - (line 260) + (line 264) * Hash tables: Hash Tables. (line 6) * internal object-file format: Canonical format. (line 11) * Linker: Linker Functions. (line 6) -* Other functions: BFD front end. (line 595) +* Other functions: BFD front end. (line 614) * separate_debug_file_exists: Opening and Closing. - (line 270) -* struct bfd_iovec: BFD front end. (line 798) + (line 274) +* struct bfd_iovec: BFD front end. (line 817) * target vector (_bfd_final_link): Performing the Final Link. (line 6) * target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table. (line 6) * target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table. (line 6) -* The HOWTO Macro: typedef arelent. (line 291) +* The HOWTO Macro: typedef arelent. (line 288) * what is it?: Overview. (line 6)  Tag Table: -Node: Top1051 -Node: Overview1390 -Node: History2441 -Node: How It Works3387 -Node: What BFD Version 2 Can Do4930 -Node: BFD information loss6245 -Node: Canonical format8777 -Node: BFD front end13149 -Node: Memory Usage44457 -Node: Initialization45685 -Node: Sections46144 -Node: Section Input46627 -Node: Section Output47992 -Node: typedef asection50478 -Node: section prototypes75809 -Node: Symbols85489 -Node: Reading Symbols87084 -Node: Writing Symbols88191 -Node: Mini Symbols89900 -Node: typedef asymbol90874 -Node: symbol handling functions96933 -Node: Archives102275 -Node: Formats106001 -Node: Relocations108949 -Node: typedef arelent109676 -Node: howto manager125487 -Node: Core Files197788 -Node: Targets199605 -Node: bfd_target201575 -Node: Architectures222154 -Node: Opening and Closing245337 -Node: Internal256601 -Node: File Caching262934 -Node: Linker Functions264848 -Node: Creating a Linker Hash Table266521 -Node: Adding Symbols to the Hash Table268259 -Node: Differing file formats269159 -Node: Adding symbols from an object file270884 -Node: Adding symbols from an archive273035 -Node: Performing the Final Link275449 -Node: Information provided by the linker276691 -Node: Relocating the section contents277845 -Node: Writing the symbol table279596 -Node: Hash Tables283611 -Node: Creating and Freeing a Hash Table284809 -Node: Looking Up or Entering a String286059 -Node: Traversing a Hash Table287312 -Node: Deriving a New Hash Table Type288101 -Node: Define the Derived Structures289167 -Node: Write the Derived Creation Routine290248 -Node: Write Other Derived Routines292872 -Node: BFD back ends294187 -Node: What to Put Where294457 -Node: aout294637 -Node: coff300955 -Node: elf329388 -Node: mmo329789 -Node: File layout330717 -Node: Symbol-table336364 -Node: mmo section mapping340133 -Node: GNU Free Documentation License343785 -Node: BFD Index368868 +Node: Top1089 +Node: Overview1428 +Node: History2479 +Node: How It Works3425 +Node: What BFD Version 2 Can Do4968 +Node: BFD information loss6283 +Node: Canonical format8815 +Node: BFD front end13187 +Node: Memory Usage45266 +Node: Initialization46494 +Node: Sections46953 +Node: Section Input47436 +Node: Section Output48801 +Node: typedef asection51287 +Node: section prototypes76599 +Node: Symbols86494 +Node: Reading Symbols88089 +Node: Writing Symbols89196 +Node: Mini Symbols90905 +Node: typedef asymbol91879 +Node: symbol handling functions97938 +Node: Archives103280 +Node: Formats107006 +Node: Relocations109954 +Node: typedef arelent110681 +Node: howto manager126317 +Node: Core Files203149 +Node: Targets205187 +Node: bfd_target207157 +Node: Architectures229550 +Node: Opening and Closing253308 +Node: Internal264764 +Node: File Caching271097 +Node: Linker Functions273011 +Node: Creating a Linker Hash Table274684 +Node: Adding Symbols to the Hash Table276422 +Node: Differing file formats277322 +Node: Adding symbols from an object file279047 +Node: Adding symbols from an archive281198 +Node: Performing the Final Link284127 +Node: Information provided by the linker285369 +Node: Relocating the section contents286523 +Node: Writing the symbol table288274 +Node: Hash Tables292289 +Node: Creating and Freeing a Hash Table293487 +Node: Looking Up or Entering a String294737 +Node: Traversing a Hash Table295990 +Node: Deriving a New Hash Table Type296779 +Node: Define the Derived Structures297845 +Node: Write the Derived Creation Routine298926 +Node: Write Other Derived Routines301550 +Node: BFD back ends302865 +Node: What to Put Where303135 +Node: aout303315 +Node: coff309633 +Node: elf338066 +Node: mmo338467 +Node: File layout339395 +Node: Symbol-table345042 +Node: mmo section mapping348811 +Node: GNU Free Documentation License352463 +Node: BFD Index377546  End Tag Table diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/bfd.texinfo crash-6.1.6/=unpacked-tar1=/bfd/doc/bfd.texinfo --- crash-5.1.6/=unpacked-tar1=/bfd/doc/bfd.texinfo 2009-09-02 07:18:38.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/bfd.texinfo 2010-10-28 11:40:25.000000000 +0000 @@ -6,13 +6,12 @@ @c @synindex fn cp -@ifinfo -@format -START-INFO-DIR-ENTRY +@ifnottex +@dircategory Software development +@direntry * Bfd: (bfd). The Binary File Descriptor library. -END-INFO-DIR-ENTRY -@end format -@end ifinfo +@end direntry +@end ifnottex @copying This file documents the BFD library. diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/bfdio.texi crash-6.1.6/=unpacked-tar1=/bfd/doc/bfdio.texi --- crash-5.1.6/=unpacked-tar1=/bfd/doc/bfdio.texi 2009-10-06 16:40:51.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/bfdio.texi 2011-09-04 17:54:59.000000000 +0000 @@ -30,6 +30,7 @@ void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len, int prot, int flags, file_ptr offset); @}; +extern const struct bfd_iovec _bfd_memory_iovec; @end example @findex bfd_get_mtime diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/bfdt.texi crash-6.1.6/=unpacked-tar1=/bfd/doc/bfdt.texi --- crash-5.1.6/=unpacked-tar1=/bfd/doc/bfdt.texi 2009-10-06 16:40:51.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/bfdt.texi 2011-09-04 17:54:59.000000000 +0000 @@ -126,6 +126,21 @@ will be consistent from run to run. */ #define BFD_DETERMINISTIC_OUTPUT 0x4000 + /* Compress sections in this BFD. */ +#define BFD_COMPRESS 0x8000 + + /* Decompress sections in this BFD. */ +#define BFD_DECOMPRESS 0x10000 + + /* Flags bits to be saved in bfd_preserve_save. */ +#define BFD_FLAGS_SAVED \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS) + + /* Flags bits which are for BFD use only. */ +#define BFD_FLAGS_FOR_BFD_USE_MASK \ + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \ + | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT) + /* 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. */ @@ -261,6 +276,10 @@ /* Set if this is a thin archive. */ unsigned int is_thin_archive : 1; + + /* Set if only required symbols should be added in the link hash table for + this object. Used by VMS linkers. */ + unsigned int selective_search : 1; @}; @end example diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/bfdver.texi crash-6.1.6/=unpacked-tar1=/bfd/doc/bfdver.texi --- crash-5.1.6/=unpacked-tar1=/bfd/doc/bfdver.texi 2009-10-06 16:40:52.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/bfdver.texi 2011-09-04 17:54:59.000000000 +0000 @@ -1,4 +1,4 @@ -@set VERSION 2.20.51 +@set VERSION 2.21.51 @set VERSION_PACKAGE (GNU Binutils) -@set UPDATED October 2009 +@set UPDATED September 2011 @set BUGURL @uref{http://www.sourceware.org/bugzilla/} diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/chew.c crash-6.1.6/=unpacked-tar1=/bfd/doc/chew.c --- crash-5.1.6/=unpacked-tar1=/bfd/doc/chew.c 2009-09-02 07:18:38.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/chew.c 2009-09-28 12:15:51.000000000 +0000 @@ -130,7 +130,7 @@ { buffer->write_idx = 0; buffer->size = size; - buffer->ptr = malloc (size); + buffer->ptr = (char *) malloc (size); } static void @@ -201,7 +201,7 @@ if (buffer->write_idx == buffer->size) { buffer->size *= 2; - buffer->ptr = realloc (buffer->ptr, buffer->size); + buffer->ptr = (char *) realloc (buffer->ptr, buffer->size); } buffer->ptr[buffer->write_idx++] = ch; @@ -228,7 +228,7 @@ { while (buffer->write_idx + len >= buffer->size) buffer->size *= 2; - buffer->ptr = realloc (buffer->ptr, buffer->size); + buffer->ptr = (char *) realloc (buffer->ptr, buffer->size); } memcpy (buffer->ptr + buffer->write_idx, buf, len); buffer->write_idx += len; @@ -1177,7 +1177,7 @@ } } - *word = malloc (length + 1); + *word = (char *) malloc (length + 1); dst = *word; src = word_start; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/core.texi crash-6.1.6/=unpacked-tar1=/bfd/doc/core.texi --- crash-5.1.6/=unpacked-tar1=/bfd/doc/core.texi 2009-10-06 16:40:51.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/core.texi 2011-09-04 17:54:59.000000000 +0000 @@ -27,6 +27,16 @@ Returns the signal number which caused the core dump which generated the file the BFD @var{abfd} is attached to. +@findex bfd_core_file_pid +@subsubsection @code{bfd_core_file_pid} +@strong{Synopsis} +@example +int bfd_core_file_pid (bfd *abfd); +@end example +@strong{Description}@* +Returns the PID of the process the core dump the BFD +@var{abfd} is attached to was generated from. + @findex core_file_matches_executable_p @subsubsection @code{core_file_matches_executable_p} @strong{Synopsis} diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/linker.texi crash-6.1.6/=unpacked-tar1=/bfd/doc/linker.texi --- crash-5.1.6/=unpacked-tar1=/bfd/doc/linker.texi 2009-10-06 16:40:52.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/linker.texi 2011-09-04 17:54:59.000000000 +0000 @@ -176,7 +176,10 @@ archive and decide which elements of the archive should be included in the link. For each such element it must call the @code{add_archive_element} linker callback, and it must add the -symbols from the object file to the linker hash table. +symbols from the object file to the linker hash table. (The +callback may in fact indicate that a replacement BFD should be +used, in which case the symbols from that BFD should be added +to the linker hash table instead.) @findex _bfd_generic_link_add_archive_symbols In most cases the work of looking through the symbols in the @@ -196,9 +199,13 @@ element should be included in the link. If the element is to be included, the @code{add_archive_element} linker callback routine must be called with the element as an argument, and -the elements symbols must be added to the linker hash table +the element's symbols must be added to the linker hash table just as though the element had itself been passed to the -@code{_bfd_link_add_symbols} function. +@code{_bfd_link_add_symbols} function. The @code{add_archive_element} +callback has the option to indicate that it would like to +replace the element archive with a substitute BFD, in which +case it is the symbols of that substitute BFD that must be +added to the linker hash table instead. When the a.out @code{_bfd_link_add_symbols} function receives an archive, it calls @code{_bfd_generic_link_add_archive_symbols} @@ -210,7 +217,8 @@ symbol) it calls the @code{add_archive_element} callback and then @code{aout_link_check_archive_element} calls @code{aout_link_add_symbols} to actually add the symbols to the -linker hash table. +linker hash table - possibly those of a substitute BFD, if the +@code{add_archive_element} callback avails itself of that option. The ECOFF back end is unusual in that it does not normally call @code{_bfd_generic_link_add_archive_symbols}, because ECOFF diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/opncls.texi crash-6.1.6/=unpacked-tar1=/bfd/doc/opncls.texi --- crash-5.1.6/=unpacked-tar1=/bfd/doc/opncls.texi 2009-10-06 16:40:51.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/opncls.texi 2011-09-04 17:54:59.000000000 +0000 @@ -1,3 +1,8 @@ + +@example +/* Set to N to open the next N BFDs using an alternate id space. */ +extern unsigned int bfd_use_reserved_id; +@end example @section Opening and closing BFDs @@ -83,46 +88,46 @@ @strong{Synopsis} @example bfd *bfd_openr_iovec (const char *filename, const char *target, - void *(*open) (struct bfd *nbfd, + void *(*open_func) (struct bfd *nbfd, void *open_closure), void *open_closure, - file_ptr (*pread) (struct bfd *nbfd, + file_ptr (*pread_func) (struct bfd *nbfd, void *stream, void *buf, file_ptr nbytes, file_ptr offset), - int (*close) (struct bfd *nbfd, + int (*close_func) (struct bfd *nbfd, void *stream), - int (*stat) (struct bfd *abfd, + int (*stat_func) (struct bfd *abfd, void *stream, struct stat *sb)); @end example @strong{Description}@* Create and return a BFD backed by a read-only @var{stream}. -The @var{stream} is created using @var{open}, accessed using -@var{pread} and destroyed using @var{close}. +The @var{stream} is created using @var{open_func}, accessed using +@var{pread_func} and destroyed using @var{close_func}. Calls @code{bfd_find_target}, so @var{target} is interpreted as by that function. -Calls @var{open} (which can call @code{bfd_zalloc} and +Calls @var{open_func} (which can call @code{bfd_zalloc} and @code{bfd_get_filename}) to obtain the read-only stream backing -the BFD. @var{open} either succeeds returning the +the BFD. @var{open_func} either succeeds returning the non-@code{NULL} @var{stream}, or fails returning @code{NULL} (setting @code{bfd_error}). -Calls @var{pread} to request @var{nbytes} of data from +Calls @var{pread_func} to request @var{nbytes} of data from @var{stream} starting at @var{offset} (e.g., via a call to -@code{bfd_read}). @var{pread} either succeeds returning the +@code{bfd_read}). @var{pread_func} either succeeds returning the number of bytes read (which can be less than @var{nbytes} when end-of-file), or fails returning -1 (setting @code{bfd_error}). -Calls @var{close} when the BFD is later closed using -@code{bfd_close}. @var{close} either succeeds returning 0, or +Calls @var{close_func} when the BFD is later closed using +@code{bfd_close}. @var{close_func} either succeeds returning 0, or fails returning -1 (setting @code{bfd_error}). -Calls @var{stat} to fill in a stat structure for bfd_stat, -bfd_get_size, and bfd_get_mtime calls. @var{stat} returns 0 +Calls @var{stat_func} to fill in a stat structure for bfd_stat, +bfd_get_size, and bfd_get_mtime calls. @var{stat_func} returns 0 on success, or returns -1 on failure (setting @code{bfd_error}). If @code{bfd_openr_iovec} returns @code{NULL} then an error has @@ -191,7 +196,7 @@ @strong{Description}@* Create a new BFD in the manner of @code{bfd_openw}, but without opening a file. The new BFD takes the target from the target -used by @var{template}. The format is always set to @code{bfd_object}. +used by @var{templ}. The format is always set to @code{bfd_object}. @findex bfd_make_writable @subsubsection @code{bfd_make_writable} diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/reloc.texi crash-6.1.6/=unpacked-tar1=/bfd/doc/reloc.texi --- crash-5.1.6/=unpacked-tar1=/bfd/doc/reloc.texi 2009-10-06 16:40:51.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/reloc.texi 2011-09-04 17:54:59.000000000 +0000 @@ -281,10 +281,7 @@ when doing overflow checking. */ unsigned int bitsize; - /* Notes that the relocation is relative to the location in the - data section of the addend. The relocation function will - subtract from the relocation value the address of the location - being relocated. */ + /* The relocation is relative to the field being relocated. */ bfd_boolean pc_relative; /* The bit position of the reloc value in the destination. @@ -632,6 +629,8 @@ @deffnx {} BFD_RELOC_SPARC_GOTDATA_OP_HIX22 @deffnx {} BFD_RELOC_SPARC_GOTDATA_OP_LOX10 @deffnx {} BFD_RELOC_SPARC_GOTDATA_OP +@deffnx {} BFD_RELOC_SPARC_JMP_IREL +@deffnx {} BFD_RELOC_SPARC_IRELATIVE SPARC ELF relocations. There is probably some overlap with other relocation types already defined. @end deffn @@ -1244,6 +1243,7 @@ @deffnx {} BFD_RELOC_ARM_RELATIVE @deffnx {} BFD_RELOC_ARM_GOTOFF @deffnx {} BFD_RELOC_ARM_GOTPC +@deffnx {} BFD_RELOC_ARM_GOT_PREL Relocations for setting up GOTs and PLTs for shared libraries. @end deffn @deffn {} BFD_RELOC_ARM_TLS_GD32 @@ -1254,6 +1254,12 @@ @deffnx {} BFD_RELOC_ARM_TLS_TPOFF32 @deffnx {} BFD_RELOC_ARM_TLS_IE32 @deffnx {} BFD_RELOC_ARM_TLS_LE32 +@deffnx {} BFD_RELOC_ARM_TLS_GOTDESC +@deffnx {} BFD_RELOC_ARM_TLS_CALL +@deffnx {} BFD_RELOC_ARM_THM_TLS_CALL +@deffnx {} BFD_RELOC_ARM_TLS_DESCSEQ +@deffnx {} BFD_RELOC_ARM_THM_TLS_DESCSEQ +@deffnx {} BFD_RELOC_ARM_TLS_DESC ARM thread-local storage relocations. @end deffn @deffn {} BFD_RELOC_ARM_ALU_PC_G0_NC @@ -1289,6 +1295,9 @@ @deffn {} BFD_RELOC_ARM_V4BX Annotation of BX instructions. @end deffn +@deffn {} BFD_RELOC_ARM_IRELATIVE +ARM support for STT_GNU_IFUNC. +@end deffn @deffn {} BFD_RELOC_ARM_IMMEDIATE @deffnx {} BFD_RELOC_ARM_ADRL_IMMEDIATE @deffnx {} BFD_RELOC_ARM_T32_IMMEDIATE @@ -1297,6 +1306,7 @@ @deffnx {} BFD_RELOC_ARM_T32_ADD_PC12 @deffnx {} BFD_RELOC_ARM_SHIFT_IMM @deffnx {} BFD_RELOC_ARM_SMC +@deffnx {} BFD_RELOC_ARM_HVC @deffnx {} BFD_RELOC_ARM_SWI @deffnx {} BFD_RELOC_ARM_MULTI @deffnx {} BFD_RELOC_ARM_CP_OFF_IMM @@ -1407,6 +1417,13 @@ @deffnx {} BFD_RELOC_SH_TLS_DTPMOD32 @deffnx {} BFD_RELOC_SH_TLS_DTPOFF32 @deffnx {} BFD_RELOC_SH_TLS_TPOFF32 +@deffnx {} BFD_RELOC_SH_GOT20 +@deffnx {} BFD_RELOC_SH_GOTOFF20 +@deffnx {} BFD_RELOC_SH_GOTFUNCDESC +@deffnx {} BFD_RELOC_SH_GOTFUNCDESC20 +@deffnx {} BFD_RELOC_SH_GOTOFFFUNCDESC +@deffnx {} BFD_RELOC_SH_GOTOFFFUNCDESC20 +@deffnx {} BFD_RELOC_SH_FUNCDESC Renesas / SuperH SH relocs. Not all of these appear in object files. @end deffn @deffn {} BFD_RELOC_ARC_B22_PCREL @@ -1733,6 +1750,72 @@ This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu instructions. @end deffn +@deffn {} BFD_RELOC_V850_16_PCREL +This is a 16-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_17_PCREL +This is a 17-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_23 +This is a 23-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_32_PCREL +This is a 32-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_32_ABS +This is a 32-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_16_SPLIT_OFFSET +This is a 16-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_16_S1 +This is a 16-bit reloc. +@end deffn +@deffn {} BFD_RELOC_V850_LO16_S1 +Low 16 bits. 16 bit shifted by 1. +@end deffn +@deffn {} BFD_RELOC_V850_CALLT_15_16_OFFSET +This is a 16 bit offset from the call table base pointer. +@end deffn +@deffn {} BFD_RELOC_V850_32_GOTPCREL +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_16_GOT +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_32_GOT +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_22_PLT_PCREL +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_32_PLT_PCREL +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_COPY +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_GLOB_DAT +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_JMP_SLOT +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_RELATIVE +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_16_GOTOFF +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_32_GOTOFF +DSO relocations. +@end deffn +@deffn {} BFD_RELOC_V850_CODE +start code. +@end deffn +@deffn {} BFD_RELOC_V850_DATA +start data in text. +@end deffn @deffn {} BFD_RELOC_MN10300_32_PCREL This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the instruction. @@ -1769,6 +1852,38 @@ significant 7 bits of a 23-bit extended address are placed into the opcode. @end deffn +@deffn {} BFD_RELOC_C6000_PCR_S21 +@deffnx {} BFD_RELOC_C6000_PCR_S12 +@deffnx {} BFD_RELOC_C6000_PCR_S10 +@deffnx {} BFD_RELOC_C6000_PCR_S7 +@deffnx {} BFD_RELOC_C6000_ABS_S16 +@deffnx {} BFD_RELOC_C6000_ABS_L16 +@deffnx {} BFD_RELOC_C6000_ABS_H16 +@deffnx {} BFD_RELOC_C6000_SBR_U15_B +@deffnx {} BFD_RELOC_C6000_SBR_U15_H +@deffnx {} BFD_RELOC_C6000_SBR_U15_W +@deffnx {} BFD_RELOC_C6000_SBR_S16 +@deffnx {} BFD_RELOC_C6000_SBR_L16_B +@deffnx {} BFD_RELOC_C6000_SBR_L16_H +@deffnx {} BFD_RELOC_C6000_SBR_L16_W +@deffnx {} BFD_RELOC_C6000_SBR_H16_B +@deffnx {} BFD_RELOC_C6000_SBR_H16_H +@deffnx {} BFD_RELOC_C6000_SBR_H16_W +@deffnx {} BFD_RELOC_C6000_SBR_GOT_U15_W +@deffnx {} BFD_RELOC_C6000_SBR_GOT_L16_W +@deffnx {} BFD_RELOC_C6000_SBR_GOT_H16_W +@deffnx {} BFD_RELOC_C6000_DSBT_INDEX +@deffnx {} BFD_RELOC_C6000_PREL31 +@deffnx {} BFD_RELOC_C6000_COPY +@deffnx {} BFD_RELOC_C6000_JUMP_SLOT +@deffnx {} BFD_RELOC_C6000_EHTYPE +@deffnx {} BFD_RELOC_C6000_PCR_H16 +@deffnx {} BFD_RELOC_C6000_PCR_L16 +@deffnx {} BFD_RELOC_C6000_ALIGN +@deffnx {} BFD_RELOC_C6000_FPHEAD +@deffnx {} BFD_RELOC_C6000_NOCMP +TMS320C6000 relocations. +@end deffn @deffn {} BFD_RELOC_FR30_48 This is a 48 bit reloc for the FR30 that stores 32 bits. @end deffn @@ -1979,6 +2094,35 @@ This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw instructions @end deffn +@deffn {} BFD_RELOC_RX_NEG8 +@deffnx {} BFD_RELOC_RX_NEG16 +@deffnx {} BFD_RELOC_RX_NEG24 +@deffnx {} BFD_RELOC_RX_NEG32 +@deffnx {} BFD_RELOC_RX_16_OP +@deffnx {} BFD_RELOC_RX_24_OP +@deffnx {} BFD_RELOC_RX_32_OP +@deffnx {} BFD_RELOC_RX_8U +@deffnx {} BFD_RELOC_RX_16U +@deffnx {} BFD_RELOC_RX_24U +@deffnx {} BFD_RELOC_RX_DIR3U_PCREL +@deffnx {} BFD_RELOC_RX_DIFF +@deffnx {} BFD_RELOC_RX_GPRELB +@deffnx {} BFD_RELOC_RX_GPRELW +@deffnx {} BFD_RELOC_RX_GPRELL +@deffnx {} BFD_RELOC_RX_SYM +@deffnx {} BFD_RELOC_RX_OP_SUBTRACT +@deffnx {} BFD_RELOC_RX_OP_NEG +@deffnx {} BFD_RELOC_RX_ABS8 +@deffnx {} BFD_RELOC_RX_ABS16 +@deffnx {} BFD_RELOC_RX_ABS16_REV +@deffnx {} BFD_RELOC_RX_ABS32 +@deffnx {} BFD_RELOC_RX_ABS32_REV +@deffnx {} BFD_RELOC_RX_ABS16U +@deffnx {} BFD_RELOC_RX_ABS16UW +@deffnx {} BFD_RELOC_RX_ABS16UL +@deffnx {} BFD_RELOC_RX_RELAX +Renesas RX Relocations. +@end deffn @deffn {} BFD_RELOC_390_12 Direct 12 bit. @end deffn @@ -2665,7 +2809,34 @@ BFD_RELOC_MACH_O_PAIR. @end deffn @deffn {} BFD_RELOC_MACH_O_PAIR -Mach-O generic relocations. +Pair of relocation. Contains the first symbol. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_BRANCH32 +@deffnx {} BFD_RELOC_MACH_O_X86_64_BRANCH8 +PCREL relocations. They are marked as branch to create PLT entry if +required. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_GOT +Used when referencing a GOT entry. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_GOT_LOAD +Used when loading a GOT entry with movq. It is specially marked so that +the linker could optimize the movq to a leaq if possible. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32 +Symbol will be substracted. Must be followed by a BFD_RELOC_64. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64 +Symbol will be substracted. Must be followed by a BFD_RELOC_64. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_PCREL32_1 +Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_PCREL32_2 +Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. +@end deffn +@deffn {} BFD_RELOC_MACH_O_X86_64_PCREL32_4 +Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. @end deffn @deffn {} BFD_RELOC_MICROBLAZE_32_LO This is a 32 bit reloc for the microblaze that stores the diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/section.texi crash-6.1.6/=unpacked-tar1=/bfd/doc/section.texi --- crash-5.1.6/=unpacked-tar1=/bfd/doc/section.texi 2009-10-06 16:40:51.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/section.texi 2011-09-04 17:54:59.000000000 +0000 @@ -321,6 +321,12 @@ /* Mark flag used by some linker backends for garbage collection. */ unsigned int gc_mark : 1; + /* Section compression status. */ + unsigned int compress_status : 2; +#define COMPRESS_SECTION_NONE 0 +#define COMPRESS_SECTION_DONE 1 +#define DECOMPRESS_SECTION_SIZED 2 + /* The following flags are used by the ELF linker. */ /* Mark sections which have been allocated to segments. */ @@ -340,20 +346,12 @@ /* Bits used by various backends. The generic code doesn't touch these fields. */ - /* Nonzero if this section has TLS related relocations. */ - unsigned int has_tls_reloc:1; - - /* Nonzero if this section has a call to __tls_get_addr. */ - unsigned int has_tls_get_addr_call:1; - - /* Nonzero if this section has a gp reloc. */ - unsigned int has_gp_reloc:1; - - /* Nonzero if this section needs the relax finalize pass. */ - unsigned int need_finalize_relax:1; - - /* Whether relocations have been processed. */ - unsigned int reloc_done : 1; + unsigned int sec_flg0:1; + unsigned int sec_flg1:1; + unsigned int sec_flg2:1; + unsigned int sec_flg3:1; + unsigned int sec_flg4:1; + unsigned int sec_flg5:1; /* End of internal packed boolean fields. */ @@ -385,6 +383,9 @@ section size calculated on a previous linker relaxation pass. */ bfd_size_type rawsize; + /* The compressed size of the section in octets. */ + bfd_size_type compressed_size; + /* Relaxation table. */ struct relax_table *relax; @@ -618,17 +619,17 @@ /* name, id, index, next, prev, flags, user_set_vma, */ \ @{ NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ \ - /* linker_mark, linker_has_input, gc_mark, */ \ - 0, 0, 1, \ + /* linker_mark, linker_has_input, gc_mark, decompress_status, */ \ + 0, 0, 1, 0, \ \ - /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \ - 0, 0, 0, 0, \ + /* segment_mark, sec_info_type, use_rela_p, */ \ + 0, 0, 0, \ \ - /* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, */ \ - 0, 0, 0, \ + /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, */ \ + 0, 0, 0, 0, 0, 0, \ \ - /* reloc_done, vma, lma, size, rawsize, relax, relax_count, */ \ - 0, 0, 0, 0, 0, 0, 0, \ + /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */ \ + 0, 0, 0, 0, 0, 0, 0, \ \ /* output_offset, output_section, alignment_power, */ \ 0, (struct bfd_section *) &SEC, 0, \ @@ -837,6 +838,16 @@ have the @code{SEC_HAS_CONTENTS} field set. @end itemize +@findex bfd_rename_section +@subsubsection @code{bfd_rename_section} +@strong{Synopsis} +@example +void bfd_rename_section + (bfd *abfd, asection *sec, const char *newname); +@end example +@strong{Description}@* +Rename section @var{sec} in @var{abfd} to @var{newname}. + @findex bfd_map_over_sections @subsubsection @code{bfd_map_over_sections} @strong{Synopsis} diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/doc/targets.texi crash-6.1.6/=unpacked-tar1=/bfd/doc/targets.texi --- crash-5.1.6/=unpacked-tar1=/bfd/doc/targets.texi 2009-10-06 16:40:52.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/doc/targets.texi 2011-09-04 17:54:59.000000000 +0000 @@ -284,11 +284,13 @@ #define BFD_JUMP_TABLE_CORE(NAME) \ NAME##_core_file_failing_command, \ NAME##_core_file_failing_signal, \ - NAME##_core_file_matches_executable_p + NAME##_core_file_matches_executable_p, \ + NAME##_core_file_pid char * (*_core_file_failing_command) (bfd *); int (*_core_file_failing_signal) (bfd *); bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *); + int (*_core_file_pid) (bfd *); /* Archive entry points. */ #define BFD_JUMP_TABLE_ARCHIVE(NAME) \ @@ -298,6 +300,7 @@ NAME##_truncate_arname, \ NAME##_write_armap, \ NAME##_read_ar_hdr, \ + NAME##_write_ar_hdr, \ NAME##_openr_next_archived_file, \ NAME##_get_elt_at_index, \ NAME##_generic_stat_arch_elt, \ @@ -311,6 +314,7 @@ bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *, unsigned int, int); void * (*_bfd_read_ar_hdr_fn) (bfd *); + bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *); bfd * (*openr_next_archived_file) (bfd *, bfd *); #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); @@ -406,6 +410,7 @@ NAME##_bfd_link_hash_table_free, \ NAME##_bfd_link_add_symbols, \ NAME##_bfd_link_just_syms, \ + NAME##_bfd_copy_link_hash_symbol_type, \ NAME##_bfd_final_link, \ NAME##_bfd_link_split_section, \ NAME##_bfd_gc_sections, \ @@ -437,6 +442,12 @@ /* Indicate that we are only retrieving symbol values from this section. */ void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); + /* Copy the symbol type of a linker hash table entry. */ +#define bfd_copy_link_hash_symbol_type(b, t, f) \ + BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f)) + void (*_bfd_copy_link_hash_symbol_type) + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); + /* Do a link based on the link_order structures attached to each section of the BFD. */ bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); @@ -535,6 +546,36 @@ @code{bfd_check_format} to loop over all the targets to find the one that matches the file being read. +@findex bfd_get_target_info +@subsubsection @code{bfd_get_target_info} +@strong{Synopsis} +@example +const bfd_target *bfd_get_target_info (const char *target_name, + bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, + const char **def_target_arch); +@end example +@strong{Description}@* +Return a pointer to the transfer vector for the object target +named @var{target_name}. If @var{target_name} is @code{NULL}, +choose the one in the environment variable @code{GNUTARGET}; if +that is null or not defined, then choose the first entry in the +target list. Passing in the string "default" or setting the +environment variable to "default" will cause the first entry in +the target list to be returned, and "target_defaulted" will be +set in the BFD if @var{abfd} isn't @code{NULL}. This causes +@code{bfd_check_format} to loop over all the targets to find the +one that matches the file being read. +If @var{is_bigendian} is not @code{NULL}, then set this value to target's +endian mode. True for big-endian, FALSE for little-endian or for +invalid target. +If @var{underscoring} is not @code{NULL}, then set this value to target's +underscoring mode. Zero for none-underscoring, -1 for invalid target, +else the value of target vector's symbol underscoring. +If @var{def_target_arch} is not @code{NULL}, then set it to the architecture +string specified by the target_name. + @findex bfd_target_list @subsubsection @code{bfd_target_list} @strong{Synopsis} diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/dwarf1.c crash-6.1.6/=unpacked-tar1=/bfd/dwarf1.c --- crash-5.1.6/=unpacked-tar1=/bfd/dwarf1.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/dwarf1.c 2010-01-11 09:53:27.000000000 +0000 @@ -1,5 +1,5 @@ /* DWARF 1 find nearest line (_bfd_dwarf1_find_nearest_line). - Copyright 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008 + Copyright 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Gavin Romig-Koch of Cygnus Solutions (gavin@cygnus.com). @@ -251,8 +251,8 @@ break; case FORM_STRING: if (attr == AT_name) - aDieInfo->name = (char *)xptr; - xptr += strlen (aDieInfo->name) + 1; + aDieInfo->name = (char *) xptr; + xptr += strlen ((char *) xptr) + 1; break; } } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/dwarf2.c crash-6.1.6/=unpacked-tar1=/bfd/dwarf2.c --- crash-5.1.6/=unpacked-tar1=/bfd/dwarf2.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/dwarf2.c 2011-03-03 23:43:08.000000000 +0000 @@ -1,6 +1,6 @@ /* DWARF 2 support. Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions (gavin@cygnus.com). @@ -45,6 +45,7 @@ unsigned short version; bfd_vma prologue_length; unsigned char minimum_instruction_length; + unsigned char maximum_ops_per_insn; unsigned char default_is_stmt; int line_base; unsigned char line_range; @@ -216,6 +217,9 @@ by its reference. */ bfd_byte *info_ptr_unit; + /* Pointer to the start of the debug section, for DW_FORM_ref_addr. */ + bfd_byte *sec_info_ptr; + /* The offset into .debug_line of the line number table. */ unsigned long line_offset; @@ -271,6 +275,60 @@ enum dwarf_form form; }; +/* Map of uncompressed DWARF debug section name to compressed one. It + is terminated by NULL uncompressed_name. */ + +struct dwarf_debug_section dwarf_debug_sections[] = +{ + { ".debug_abbrev", ".zdebug_abbrev" }, + { ".debug_aranges", ".zdebug_aranges" }, + { ".debug_frame", ".zdebug_frame" }, + { ".debug_info", ".zdebug_info" }, + { ".debug_line", ".zdebug_line" }, + { ".debug_loc", ".zdebug_loc" }, + { ".debug_macinfo", ".zdebug_macinfo" }, + { ".debug_pubnames", ".zdebug_pubnames" }, + { ".debug_pubtypes", ".zdebug_pubtypes" }, + { ".debug_ranges", ".zdebug_ranges" }, + { ".debug_static_func", ".zdebug_static_func" }, + { ".debug_static_vars", ".zdebug_static_vars" }, + { ".debug_str", ".zdebug_str", }, + { ".debug_types", ".zdebug_types" }, + /* GNU DWARF 1 extensions */ + { ".debug_sfnames", ".zdebug_sfnames" }, + { ".debug_srcinfo", ".zebug_srcinfo" }, + /* SGI/MIPS DWARF 2 extensions */ + { ".debug_funcnames", ".zdebug_funcnames" }, + { ".debug_typenames", ".zdebug_typenames" }, + { ".debug_varnames", ".zdebug_varnames" }, + { ".debug_weaknames", ".zdebug_weaknames" }, + { NULL, NULL }, +}; + +enum dwarf_debug_section_enum +{ + debug_abbrev = 0, + debug_aranges, + debug_frame, + debug_info, + debug_line, + debug_loc, + debug_macinfo, + debug_pubnames, + debug_pubtypes, + debug_ranges, + debug_static_func, + debug_static_vars, + debug_str, + debug_types, + debug_sfnames, + debug_srcinfo, + debug_funcnames, + debug_typenames, + debug_varnames, + debug_weaknames +}; + #ifndef ABBREV_HASH_SIZE #define ABBREV_HASH_SIZE 121 #endif @@ -409,24 +467,23 @@ static bfd_boolean read_section (bfd * abfd, - const char * section_name, - const char * compressed_section_name, + enum dwarf_debug_section_enum sec, asymbol ** syms, bfd_uint64_t offset, bfd_byte ** section_buffer, bfd_size_type * section_size) { asection *msec; - bfd_boolean section_is_compressed = FALSE; + const char *section_name = dwarf_debug_sections[sec].uncompressed_name; /* read_section is a noop if the section has already been read. */ if (!*section_buffer) { msec = bfd_get_section_by_name (abfd, section_name); - if (! msec && compressed_section_name) + if (! msec) { - msec = bfd_get_section_by_name (abfd, compressed_section_name); - section_is_compressed = TRUE; + section_name = dwarf_debug_sections[sec].compressed_name; + msec = bfd_get_section_by_name (abfd, section_name); } if (! msec) { @@ -452,16 +509,6 @@ 0, *section_size)) return FALSE; } - - if (section_is_compressed) - { - if (! bfd_uncompress_section_contents (section_buffer, section_size)) - { - (*_bfd_error_handler) (_("Dwarf Error: unable to decompress %s section."), compressed_section_name); - bfd_set_error (bfd_error_bad_value); - return FALSE; - } - } } /* It is possible to get a bad value for the offset into the section @@ -557,8 +604,7 @@ *bytes_read_ptr = unit->offset_size; - if (! read_section (unit->abfd, ".debug_str", ".zdebug_str", - stash->syms, offset, + if (! read_section (unit->abfd, debug_str, stash->syms, offset, &stash->dwarf_str_buffer, &stash->dwarf_str_size)) return NULL; @@ -640,13 +686,14 @@ unsigned int abbrev_form, hash_number; bfd_size_type amt; - if (! read_section (abfd, ".debug_abbrev", ".zdebug_abbrev", - stash->syms, offset, + if (! read_section (abfd, debug_abbrev, stash->syms, offset, &stash->dwarf_abbrev_buffer, &stash->dwarf_abbrev_size)) - return 0; + return NULL; amt = sizeof (struct abbrev_info*) * ABBREV_HASH_SIZE; abbrevs = (struct abbrev_info **) bfd_zalloc (abfd, amt); + if (abbrevs == NULL) + return NULL; abbrev_ptr = stash->dwarf_abbrev_buffer + offset; abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); @@ -657,6 +704,8 @@ { amt = sizeof (struct abbrev_info); cur_abbrev = (struct abbrev_info *) bfd_zalloc (abfd, amt); + if (cur_abbrev == NULL) + return NULL; /* Read in abbrev header. */ cur_abbrev->number = abbrev_number; @@ -753,7 +802,7 @@ case DW_FORM_ref_addr: /* DW_FORM_ref_addr is an address in DWARF2, and an offset in DWARF3. */ - if (unit->version == 3) + if (unit->version == 3 || unit->version == 4) { if (unit->offset_size == 4) attr->u.val = read_4_bytes (unit->abfd, info_ptr); @@ -767,9 +816,18 @@ attr->u.val = read_address (unit, info_ptr); info_ptr += unit->addr_size; break; + case DW_FORM_sec_offset: + if (unit->offset_size == 4) + attr->u.val = read_4_bytes (unit->abfd, info_ptr); + else + attr->u.val = read_8_bytes (unit->abfd, info_ptr); + info_ptr += unit->offset_size; + break; case DW_FORM_block2: amt = sizeof (struct dwarf_block); blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + if (blk == NULL) + return NULL; blk->size = read_2_bytes (abfd, info_ptr); info_ptr += 2; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -779,6 +837,8 @@ case DW_FORM_block4: amt = sizeof (struct dwarf_block); blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + if (blk == NULL) + return NULL; blk->size = read_4_bytes (abfd, info_ptr); info_ptr += 4; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -805,9 +865,12 @@ attr->u.str = read_indirect_string (unit, info_ptr, &bytes_read); info_ptr += bytes_read; break; + case DW_FORM_exprloc: case DW_FORM_block: amt = sizeof (struct dwarf_block); blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + if (blk == NULL) + return NULL; blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -817,6 +880,8 @@ case DW_FORM_block1: amt = sizeof (struct dwarf_block); blk = (struct dwarf_block *) bfd_alloc (abfd, amt); + if (blk == NULL) + return NULL; blk->size = read_1_byte (abfd, info_ptr); info_ptr += 1; blk->data = read_n_bytes (abfd, info_ptr, blk->size); @@ -831,6 +896,9 @@ attr->u.val = read_1_byte (abfd, info_ptr); info_ptr += 1; break; + case DW_FORM_flag_present: + attr->u.val = 1; + break; case DW_FORM_sdata: attr->u.sval = read_signed_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; @@ -855,6 +923,10 @@ attr->u.val = read_8_bytes (abfd, info_ptr); info_ptr += 8; break; + case DW_FORM_ref_sig8: + attr->u.val = read_8_bytes (abfd, info_ptr); + info_ptr += 8; + break; case DW_FORM_ref_udata: attr->u.val = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); info_ptr += bytes_read; @@ -868,6 +940,7 @@ (*_bfd_error_handler) (_("Dwarf Error: Invalid or unhandled FORM value: %u."), form); bfd_set_error (bfd_error_bad_value); + return NULL; } return info_ptr; } @@ -897,7 +970,8 @@ char *filename; unsigned int line; unsigned int column; - int end_sequence; /* End of (sequential) code sequence. */ + unsigned char op_index; + unsigned char end_sequence; /* End of (sequential) code sequence. */ }; struct fileinfo @@ -908,16 +982,24 @@ unsigned int size; }; +struct line_sequence +{ + bfd_vma low_pc; + struct line_sequence* prev_sequence; + struct line_info* last_line; /* Largest VMA. */ +}; + struct line_info_table { - bfd* abfd; - unsigned int num_files; - unsigned int num_dirs; - char *comp_dir; - char **dirs; - struct fileinfo* files; - struct line_info* last_line; /* largest VMA */ - struct line_info* lcl_head; /* local head; used in 'add_line_info' */ + bfd* abfd; + unsigned int num_files; + unsigned int num_dirs; + unsigned int num_sequences; + char * comp_dir; + char ** dirs; + struct fileinfo* files; + struct line_sequence* sequences; + struct line_info* lcl_head; /* Local head; used in 'add_line_info'. */ }; /* Remember some information about each function. If the function is @@ -963,7 +1045,9 @@ { return (new_line->address > line->address || (new_line->address == line->address - && new_line->end_sequence < line->end_sequence)); + && (new_line->op_index > line->op_index + || (new_line->op_index == line->op_index + && new_line->end_sequence < line->end_sequence)))); } @@ -972,19 +1056,26 @@ highest to lowest VMA (with possible duplicates); that is, line_info->prev_line always accesses an equal or smaller VMA. */ -static void +static bfd_boolean add_line_info (struct line_info_table *table, bfd_vma address, + unsigned char op_index, char *filename, unsigned int line, unsigned int column, int end_sequence) { bfd_size_type amt = sizeof (struct line_info); + struct line_sequence* seq = table->sequences; struct line_info* info = (struct line_info *) bfd_alloc (table->abfd, amt); + if (info == NULL) + return FALSE; + /* Set member data of 'info'. */ + info->prev_line = NULL; info->address = address; + info->op_index = op_index; info->line = line; info->column = column; info->end_sequence = end_sequence; @@ -992,8 +1083,9 @@ if (filename && filename[0]) { info->filename = (char *) bfd_alloc (table->abfd, strlen (filename) + 1); - if (info->filename) - strcpy (info->filename, filename); + if (info->filename == NULL) + return FALSE; + strcpy (info->filename, filename); } else info->filename = NULL; @@ -1008,28 +1100,42 @@ p...z a...j (where a < j < p < z) Note: table->lcl_head is used to head an *actual* or *possible* - sequence within the list (such as a...j) that is not directly + sub-sequence within the list (such as a...j) that is not directly headed by table->last_line Note: we may receive duplicate entries from 'decode_line_info'. */ - if (table->last_line - && table->last_line->address == address - && table->last_line->end_sequence == end_sequence) + if (seq + && seq->last_line->address == address + && seq->last_line->op_index == op_index + && seq->last_line->end_sequence == end_sequence) { /* We only keep the last entry with the same address and end sequence. See PR ld/4986. */ - if (table->lcl_head == table->last_line) + if (table->lcl_head == seq->last_line) table->lcl_head = info; - info->prev_line = table->last_line->prev_line; - table->last_line = info; + info->prev_line = seq->last_line->prev_line; + seq->last_line = info; } - else if (!table->last_line - || new_line_sorts_after (info, table->last_line)) + else if (!seq || seq->last_line->end_sequence) { - /* Normal case: add 'info' to the beginning of the list */ - info->prev_line = table->last_line; - table->last_line = info; + /* Start a new line sequence. */ + amt = sizeof (struct line_sequence); + seq = (struct line_sequence *) bfd_malloc (amt); + if (seq == NULL) + return FALSE; + seq->low_pc = address; + seq->prev_sequence = table->sequences; + seq->last_line = info; + table->lcl_head = info; + table->sequences = seq; + table->num_sequences++; + } + else if (new_line_sorts_after (info, seq->last_line)) + { + /* Normal case: add 'info' to the beginning of the current sequence. */ + info->prev_line = seq->last_line; + seq->last_line = info; /* lcl_head: initialize to head a *possible* sequence at the end. */ if (!table->lcl_head) @@ -1045,9 +1151,9 @@ } else { - /* Abnormal and hard: Neither 'last_line' nor 'lcl_head' are valid - heads for 'info'. Reset 'lcl_head'. */ - struct line_info* li2 = table->last_line; /* always non-NULL */ + /* Abnormal and hard: Neither 'last_line' nor 'lcl_head' + are valid heads for 'info'. Reset 'lcl_head'. */ + struct line_info* li2 = seq->last_line; /* Always non-NULL. */ struct line_info* li1 = li2->prev_line; while (li1) @@ -1062,7 +1168,10 @@ table->lcl_head = li2; info->prev_line = table->lcl_head->prev_line; table->lcl_head->prev_line = info; + if (address < seq->low_pc) + seq->low_pc = address; } + return TRUE; } /* Extract a fully qualified filename from a line info table. @@ -1087,40 +1196,40 @@ if (!IS_ABSOLUTE_PATH (filename)) { - char *dirname = NULL; - char *subdirname = NULL; + char *dir_name = NULL; + char *subdir_name = NULL; char *name; size_t len; if (table->files[file - 1].dir) - subdirname = table->dirs[table->files[file - 1].dir - 1]; + subdir_name = table->dirs[table->files[file - 1].dir - 1]; - if (!subdirname || !IS_ABSOLUTE_PATH (subdirname)) - dirname = table->comp_dir; + if (!subdir_name || !IS_ABSOLUTE_PATH (subdir_name)) + dir_name = table->comp_dir; - if (!dirname) + if (!dir_name) { - dirname = subdirname; - subdirname = NULL; + dir_name = subdir_name; + subdir_name = NULL; } - if (!dirname) + if (!dir_name) return strdup (filename); - len = strlen (dirname) + strlen (filename) + 2; + len = strlen (dir_name) + strlen (filename) + 2; - if (subdirname) + if (subdir_name) { - len += strlen (subdirname) + 1; + len += strlen (subdir_name) + 1; name = (char *) bfd_malloc (len); if (name) - sprintf (name, "%s/%s/%s", dirname, subdirname, filename); + sprintf (name, "%s/%s/%s", dir_name, subdir_name, filename); } else { name = (char *) bfd_malloc (len); if (name) - sprintf (name, "%s/%s", dirname, filename); + sprintf (name, "%s/%s", dir_name, filename); } return name; @@ -1129,8 +1238,9 @@ return strdup (filename); } -static void -arange_add (bfd *abfd, struct arange *first_arange, bfd_vma low_pc, bfd_vma high_pc) +static bfd_boolean +arange_add (bfd *abfd, struct arange *first_arange, + bfd_vma low_pc, bfd_vma high_pc) { struct arange *arange; @@ -1139,7 +1249,7 @@ { first_arange->low = low_pc; first_arange->high = high_pc; - return; + return TRUE; } /* Next see if we can cheaply extend an existing range. */ @@ -1149,12 +1259,12 @@ if (low_pc == arange->high) { arange->high = high_pc; - return; + return TRUE; } if (high_pc == arange->low) { arange->low = low_pc; - return; + return TRUE; } arange = arange->next; } @@ -1163,10 +1273,110 @@ /* Need to allocate a new arange and insert it into the arange list. Order isn't significant, so just insert after the first arange. */ arange = (struct arange *) bfd_zalloc (abfd, sizeof (*arange)); + if (arange == NULL) + return FALSE; arange->low = low_pc; arange->high = high_pc; arange->next = first_arange->next; first_arange->next = arange; + return TRUE; +} + +/* Compare function for line sequences. */ + +static int +compare_sequences (const void* a, const void* b) +{ + const struct line_sequence* seq1 = a; + const struct line_sequence* seq2 = b; + + /* Sort by low_pc as the primary key. */ + if (seq1->low_pc < seq2->low_pc) + return -1; + if (seq1->low_pc > seq2->low_pc) + return 1; + + /* If low_pc values are equal, sort in reverse order of + high_pc, so that the largest region comes first. */ + if (seq1->last_line->address < seq2->last_line->address) + return 1; + if (seq1->last_line->address > seq2->last_line->address) + return -1; + + if (seq1->last_line->op_index < seq2->last_line->op_index) + return 1; + if (seq1->last_line->op_index > seq2->last_line->op_index) + return -1; + + return 0; +} + +/* Sort the line sequences for quick lookup. */ + +static bfd_boolean +sort_line_sequences (struct line_info_table* table) +{ + bfd_size_type amt; + struct line_sequence* sequences; + struct line_sequence* seq; + unsigned int n = 0; + unsigned int num_sequences = table->num_sequences; + bfd_vma last_high_pc; + + if (num_sequences == 0) + return TRUE; + + /* Allocate space for an array of sequences. */ + amt = sizeof (struct line_sequence) * num_sequences; + sequences = (struct line_sequence *) bfd_alloc (table->abfd, amt); + if (sequences == NULL) + return FALSE; + + /* Copy the linked list into the array, freeing the original nodes. */ + seq = table->sequences; + for (n = 0; n < num_sequences; n++) + { + struct line_sequence* last_seq = seq; + + BFD_ASSERT (seq); + sequences[n].low_pc = seq->low_pc; + sequences[n].prev_sequence = NULL; + sequences[n].last_line = seq->last_line; + seq = seq->prev_sequence; + free (last_seq); + } + BFD_ASSERT (seq == NULL); + + qsort (sequences, n, sizeof (struct line_sequence), compare_sequences); + + /* Make the list binary-searchable by trimming overlapping entries + and removing nested entries. */ + num_sequences = 1; + last_high_pc = sequences[0].last_line->address; + for (n = 1; n < table->num_sequences; n++) + { + if (sequences[n].low_pc < last_high_pc) + { + if (sequences[n].last_line->address <= last_high_pc) + /* Skip nested entries. */ + continue; + + /* Trim overlapping entries. */ + sequences[n].low_pc = last_high_pc; + } + last_high_pc = sequences[n].last_line->address; + if (n > num_sequences) + { + /* Close up the gap. */ + sequences[num_sequences].low_pc = sequences[n].low_pc; + sequences[num_sequences].last_line = sequences[n].last_line; + } + num_sequences++; + } + + table->sequences = sequences; + table->num_sequences = num_sequences; + return TRUE; } /* Decode the line number information for UNIT. */ @@ -1184,13 +1394,14 @@ unsigned char op_code, extended_op, adj_opcode; bfd_size_type amt; - if (! read_section (abfd, ".debug_line", ".zdebug_line", - stash->syms, unit->line_offset, + if (! read_section (abfd, debug_line, stash->syms, unit->line_offset, &stash->dwarf_line_buffer, &stash->dwarf_line_size)) - return 0; + return NULL; amt = sizeof (struct line_info_table); table = (struct line_info_table *) bfd_alloc (abfd, amt); + if (table == NULL) + return NULL; table->abfd = abfd; table->comp_dir = unit->comp_dir; @@ -1200,8 +1411,9 @@ table->num_dirs = 0; table->dirs = NULL; - table->files = NULL; - table->last_line = NULL; + table->num_sequences = 0; + table->sequences = NULL; + table->lcl_head = NULL; line_ptr = stash->dwarf_line_buffer + unit->line_offset; @@ -1225,6 +1437,13 @@ } line_end = line_ptr + lh.total_length; lh.version = read_2_bytes (abfd, line_ptr); + if (lh.version < 2 || lh.version > 4) + { + (*_bfd_error_handler) + (_("Dwarf Error: Unhandled .debug_line version %d."), lh.version); + bfd_set_error (bfd_error_bad_value); + return NULL; + } line_ptr += 2; if (offset_size == 4) lh.prologue_length = read_4_bytes (abfd, line_ptr); @@ -1233,6 +1452,20 @@ line_ptr += offset_size; lh.minimum_instruction_length = read_1_byte (abfd, line_ptr); line_ptr += 1; + if (lh.version >= 4) + { + lh.maximum_ops_per_insn = read_1_byte (abfd, line_ptr); + line_ptr += 1; + } + else + lh.maximum_ops_per_insn = 1; + if (lh.maximum_ops_per_insn == 0) + { + (*_bfd_error_handler) + (_("Dwarf Error: Invalid maximum operations per instruction.")); + bfd_set_error (bfd_error_bad_value); + return NULL; + } lh.default_is_stmt = read_1_byte (abfd, line_ptr); line_ptr += 1; lh.line_base = read_1_signed_byte (abfd, line_ptr); @@ -1266,10 +1499,7 @@ tmp = (char **) bfd_realloc (table->dirs, amt); if (tmp == NULL) - { - free (table->dirs); - return NULL; - } + goto fail; table->dirs = tmp; } @@ -1292,11 +1522,7 @@ tmp = (struct fileinfo *) bfd_realloc (table->files, amt); if (tmp == NULL) - { - free (table->files); - free (table->dirs); - return NULL; - } + goto fail; table->files = tmp; } @@ -1320,6 +1546,7 @@ { /* State machine registers. */ bfd_vma address = 0; + unsigned char op_index = 0; char * filename = table->num_files ? concat_filename (table, 1) : NULL; unsigned int line = 1; unsigned int column = 0; @@ -1343,11 +1570,22 @@ { /* Special operand. */ adj_opcode = op_code - lh.opcode_base; - address += (adj_opcode / lh.line_range) - * lh.minimum_instruction_length; + if (lh.maximum_ops_per_insn == 1) + address += (adj_opcode / lh.line_range) + * lh.minimum_instruction_length; + else + { + address += ((op_index + (adj_opcode / lh.line_range)) + / lh.maximum_ops_per_insn) + * lh.minimum_instruction_length; + op_index = (op_index + (adj_opcode / lh.line_range)) + % lh.maximum_ops_per_insn; + } line += lh.line_base + (adj_opcode % lh.line_range); /* Append row to matrix using current values. */ - add_line_info (table, address, filename, line, column, 0); + if (!add_line_info (table, address, op_index, filename, + line, column, 0)) + goto line_fail; if (address < low_pc) low_pc = address; if (address > high_pc) @@ -1365,16 +1603,19 @@ { case DW_LNE_end_sequence: end_sequence = 1; - add_line_info (table, address, filename, line, column, - end_sequence); + if (!add_line_info (table, address, op_index, filename, + line, column, end_sequence)) + goto line_fail; if (address < low_pc) low_pc = address; if (address > high_pc) high_pc = address; - arange_add (unit->abfd, &unit->arange, low_pc, high_pc); + if (!arange_add (unit->abfd, &unit->arange, low_pc, high_pc)) + goto line_fail; break; case DW_LNE_set_address: address = read_address (unit, line_ptr); + op_index = 0; line_ptr += unit->addr_size; break; case DW_LNE_define_file: @@ -1388,12 +1629,7 @@ amt *= sizeof (struct fileinfo); tmp = (struct fileinfo *) bfd_realloc (table->files, amt); if (tmp == NULL) - { - free (table->files); - free (table->dirs); - free (filename); - return NULL; - } + goto line_fail; table->files = tmp; } table->files[table->num_files].name = cur_file; @@ -1415,22 +1651,34 @@ default: (*_bfd_error_handler) (_("Dwarf Error: mangled line number section.")); bfd_set_error (bfd_error_bad_value); - free (filename); - free (table->files); - free (table->dirs); - return NULL; + line_fail: + if (filename != NULL) + free (filename); + goto fail; } break; case DW_LNS_copy: - add_line_info (table, address, filename, line, column, 0); + if (!add_line_info (table, address, op_index, + filename, line, column, 0)) + goto line_fail; if (address < low_pc) low_pc = address; if (address > high_pc) high_pc = address; break; case DW_LNS_advance_pc: - address += lh.minimum_instruction_length - * read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + if (lh.maximum_ops_per_insn == 1) + address += lh.minimum_instruction_length + * read_unsigned_leb128 (abfd, line_ptr, + &bytes_read); + else + { + bfd_vma adjust = read_unsigned_leb128 (abfd, line_ptr, + &bytes_read); + address = ((op_index + adjust) / lh.maximum_ops_per_insn) + * lh.minimum_instruction_length; + op_index = (op_index + adjust) % lh.maximum_ops_per_insn; + } line_ptr += bytes_read; break; case DW_LNS_advance_line: @@ -1460,24 +1708,30 @@ case DW_LNS_set_basic_block: break; case DW_LNS_const_add_pc: - address += lh.minimum_instruction_length - * ((255 - lh.opcode_base) / lh.line_range); + if (lh.maximum_ops_per_insn == 1) + address += lh.minimum_instruction_length + * ((255 - lh.opcode_base) / lh.line_range); + else + { + bfd_vma adjust = ((255 - lh.opcode_base) / lh.line_range); + address += lh.minimum_instruction_length + * ((op_index + adjust) / lh.maximum_ops_per_insn); + op_index = (op_index + adjust) % lh.maximum_ops_per_insn; + } break; case DW_LNS_fixed_advance_pc: address += read_2_bytes (abfd, line_ptr); + op_index = 0; line_ptr += 2; break; default: - { - int i; - - /* Unknown standard opcode, ignore it. */ - for (i = 0; i < lh.standard_opcode_lengths[op_code]; i++) - { - (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read); - line_ptr += bytes_read; - } - } + /* Unknown standard opcode, ignore it. */ + for (i = 0; i < lh.standard_opcode_lengths[op_code]; i++) + { + (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + line_ptr += bytes_read; + } + break; } } @@ -1485,7 +1739,17 @@ free (filename); } - return table; + if (sort_line_sequences (table)) + return table; + + fail: + if (table->sequences != NULL) + free (table->sequences); + if (table->files != NULL) + free (table->files); + if (table->dirs != NULL) + free (table->dirs); + return NULL; } /* If ADDR is within TABLE set the output parameters and return TRUE, @@ -1495,106 +1759,57 @@ static bfd_boolean lookup_address_in_line_info_table (struct line_info_table *table, bfd_vma addr, - struct funcinfo *function, const char **filename_ptr, unsigned int *linenumber_ptr) { - /* Note: table->last_line should be a descendingly sorted list. */ - struct line_info* next_line = table->last_line; - struct line_info* each_line = NULL; - *filename_ptr = NULL; - - if (!next_line) - return FALSE; - - each_line = next_line->prev_line; - - /* Check for large addresses */ - if (addr > next_line->address) - each_line = NULL; /* ensure we skip over the normal case */ - - /* Normal case: search the list; save */ - while (each_line && next_line) - { - /* If we have an address match, save this info. This allows us - to return as good as results as possible for strange debugging - info. */ - bfd_boolean addr_match = FALSE; - if (each_line->address <= addr && addr < next_line->address) - { - addr_match = TRUE; - - /* If this line appears to span functions, and addr is in the - later function, return the first line of that function instead - of the last line of the earlier one. This check is for GCC - 2.95, which emits the first line number for a function late. */ - - if (function != NULL) - { - bfd_vma lowest_pc; - struct arange *arange; - - /* Find the lowest address in the function's range list */ - lowest_pc = function->arange.low; - for (arange = &function->arange; - arange; - arange = arange->next) - { - if (function->arange.low < lowest_pc) - lowest_pc = function->arange.low; - } - /* Check for spanning function and set outgoing line info */ - if (addr >= lowest_pc - && each_line->address < lowest_pc - && next_line->address > lowest_pc) - { - *filename_ptr = next_line->filename; - *linenumber_ptr = next_line->line; - } - else - { - *filename_ptr = each_line->filename; - *linenumber_ptr = each_line->line; - } - } - else - { - *filename_ptr = each_line->filename; - *linenumber_ptr = each_line->line; - } - } - - if (addr_match && !each_line->end_sequence) - return TRUE; /* we have definitely found what we want */ - - next_line = each_line; - each_line = each_line->prev_line; + struct line_sequence *seq = NULL; + struct line_info *each_line; + int low, high, mid; + + /* Binary search the array of sequences. */ + low = 0; + high = table->num_sequences; + while (low < high) + { + mid = (low + high) / 2; + seq = &table->sequences[mid]; + if (addr < seq->low_pc) + high = mid; + else if (addr >= seq->last_line->address) + low = mid + 1; + else + break; } - /* At this point each_line is NULL but next_line is not. If we found - a candidate end-of-sequence point in the loop above, we can return - that (compatibility with a bug in the Intel compiler); otherwise, - assuming that we found the containing function for this address in - this compilation unit, return the first line we have a number for - (compatibility with GCC 2.95). */ - if (*filename_ptr == NULL && function != NULL) + if (seq && addr >= seq->low_pc && addr < seq->last_line->address) { - *filename_ptr = next_line->filename; - *linenumber_ptr = next_line->line; - return TRUE; + /* Note: seq->last_line should be a descendingly sorted list. */ + for (each_line = seq->last_line; + each_line; + each_line = each_line->prev_line) + if (addr >= each_line->address) + break; + + if (each_line + && !(each_line->end_sequence || each_line == seq->last_line)) + { + *filename_ptr = each_line->filename; + *linenumber_ptr = each_line->line; + return TRUE; + } } + *filename_ptr = NULL; return FALSE; } -/* Read in the .debug_ranges section for future reference */ +/* Read in the .debug_ranges section for future reference. */ static bfd_boolean read_debug_ranges (struct comp_unit *unit) { struct dwarf2_debug *stash = unit->stash; - return read_section (unit->abfd, ".debug_ranges", ".zdebug_ranges", - stash->syms, 0, + return read_section (unit->abfd, debug_ranges, stash->syms, 0, &stash->dwarf_ranges_buffer, &stash->dwarf_ranges_size); } @@ -1748,7 +1963,7 @@ if (!die_ref) abort (); - info_ptr = unit->stash->sec_info_ptr + die_ref; + info_ptr = unit->sec_info_ptr + die_ref; } else info_ptr = unit->info_ptr_unit + die_ref; @@ -1768,17 +1983,22 @@ { for (i = 0; i < abbrev->num_attrs; ++i) { - info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr); + info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, + info_ptr); + if (info_ptr == NULL) + break; switch (attr.name) { case DW_AT_name: - /* Prefer DW_AT_MIPS_linkage_name over DW_AT_name. */ + /* Prefer DW_AT_MIPS_linkage_name or DW_AT_linkage_name + over DW_AT_name. */ if (name == NULL) name = attr.u.str; break; case DW_AT_specification: name = find_abstract_instance_name (unit, &attr); break; + case DW_AT_linkage_name: case DW_AT_MIPS_linkage_name: name = attr.u.str; break; @@ -1788,11 +2008,12 @@ } } } - return (name); + return name; } -static void -read_rangelist (struct comp_unit *unit, struct arange *arange, bfd_uint64_t offset) +static bfd_boolean +read_rangelist (struct comp_unit *unit, struct arange *arange, + bfd_uint64_t offset) { bfd_byte *ranges_ptr; bfd_vma base_address = unit->base_address; @@ -1800,7 +2021,7 @@ if (! unit->stash->dwarf_ranges_buffer) { if (! read_debug_ranges (unit)) - return; + return FALSE; } ranges_ptr = unit->stash->dwarf_ranges_buffer + offset; @@ -1819,8 +2040,13 @@ if (low_pc == -1UL && high_pc != -1UL) base_address = high_pc; else - arange_add (unit->abfd, arange, base_address + low_pc, base_address + high_pc); + { + if (!arange_add (unit->abfd, arange, + base_address + low_pc, base_address + high_pc)) + return FALSE; + } } + return TRUE; } /* DWARF2 Compilation unit functions. */ @@ -1868,11 +2094,11 @@ abbrev = lookup_abbrev (abbrev_number,unit->abbrevs); if (! abbrev) { - (*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %u."), - abbrev_number); + (*_bfd_error_handler) + (_("Dwarf Error: Could not find abbrev number %u."), + abbrev_number); bfd_set_error (bfd_error_bad_value); - free (nested_funcs); - return FALSE; + goto fail; } var = NULL; @@ -1882,6 +2108,8 @@ { bfd_size_type amt = sizeof (struct funcinfo); func = (struct funcinfo *) bfd_zalloc (abfd, amt); + if (func == NULL) + goto fail; func->tag = abbrev->tag; func->prev_func = unit->function_table; unit->function_table = func; @@ -1903,6 +2131,8 @@ { bfd_size_type amt = sizeof (struct varinfo); var = (struct varinfo *) bfd_zalloc (abfd, amt); + if (var == NULL) + goto fail; var->tag = abbrev->tag; var->stack = 1; var->prev_var = unit->variable_table; @@ -1917,13 +2147,16 @@ for (i = 0; i < abbrev->num_attrs; ++i) { info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr); + if (info_ptr == NULL) + goto fail; if (func) { switch (attr.name) { case DW_AT_call_file: - func->caller_file = concat_filename (unit->line_table, attr.u.val); + func->caller_file = concat_filename (unit->line_table, + attr.u.val); break; case DW_AT_call_line: @@ -1935,11 +2168,13 @@ break; case DW_AT_name: - /* Prefer DW_AT_MIPS_linkage_name over DW_AT_name. */ + /* Prefer DW_AT_MIPS_linkage_name or DW_AT_linkage_name + over DW_AT_name. */ if (func->name == NULL) func->name = attr.u.str; break; + case DW_AT_linkage_name: case DW_AT_MIPS_linkage_name: func->name = attr.u.str; break; @@ -1953,7 +2188,8 @@ break; case DW_AT_ranges: - read_rangelist (unit, &func->arange, attr.u.val); + if (!read_rangelist (unit, &func->arange, attr.u.val)) + goto fail; break; case DW_AT_decl_file: @@ -1998,6 +2234,7 @@ case DW_FORM_block1: case DW_FORM_block2: case DW_FORM_block4: + case DW_FORM_exprloc: if (*attr.u.blk->data == DW_OP_addr) { var->stack = 0; @@ -2028,7 +2265,8 @@ if (func && high_pc != 0) { - arange_add (unit->abfd, &func->arange, low_pc, high_pc); + if (!arange_add (unit->abfd, &func->arange, low_pc, high_pc)) + goto fail; } if (abbrev->has_children) @@ -2044,10 +2282,7 @@ bfd_realloc (nested_funcs, (nested_funcs_size * sizeof (struct funcinfo *))); if (tmp == NULL) - { - free (nested_funcs); - return FALSE; - } + goto fail; nested_funcs = tmp; } nested_funcs[nesting_level] = 0; @@ -2056,6 +2291,10 @@ free (nested_funcs); return TRUE; + + fail: + free (nested_funcs); + return FALSE; } /* Parse a DWARF2 compilation unit starting at INFO_PTR. This @@ -2099,9 +2338,9 @@ addr_size = read_1_byte (abfd, info_ptr); info_ptr += 1; - if (version != 2 && version != 3) + if (version != 2 && version != 3 && version != 4) { - (*_bfd_error_handler) (_("Dwarf Error: found dwarf version '%u', this reader only handles version 2 and 3 information."), version); + (*_bfd_error_handler) (_("Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information."), version); bfd_set_error (bfd_error_bad_value); return 0; } @@ -2148,6 +2387,8 @@ amt = sizeof (struct comp_unit); unit = (struct comp_unit *) bfd_zalloc (abfd, amt); + if (unit == NULL) + return NULL; unit->abfd = abfd; unit->version = version; unit->addr_size = addr_size; @@ -2156,10 +2397,13 @@ unit->end_ptr = end_ptr; unit->stash = stash; unit->info_ptr_unit = info_ptr_unit; + unit->sec_info_ptr = stash->sec_info_ptr; for (i = 0; i < abbrev->num_attrs; ++i) { info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr); + if (info_ptr == NULL) + return NULL; /* Store the data if it is of an attribute we want to keep in a partial symbol table. */ @@ -2187,7 +2431,8 @@ break; case DW_AT_ranges: - read_rangelist (unit, &unit->arange, attr.u.val); + if (!read_rangelist (unit, &unit->arange, attr.u.val)) + return NULL; break; case DW_AT_comp_dir: @@ -2212,7 +2457,8 @@ } if (high_pc != 0) { - arange_add (unit->abfd, &unit->arange, low_pc, high_pc); + if (!arange_add (unit->abfd, &unit->arange, low_pc, high_pc)) + return NULL; } unit->first_child_die_ptr = info_ptr; @@ -2298,7 +2544,7 @@ if (func_p && (function->tag == DW_TAG_inlined_subroutine)) stash->inliner_chain = function; line_p = lookup_address_in_line_info_table (unit->line_table, addr, - function, filename_ptr, + filename_ptr, linenumber_ptr); return line_p || func_p; } @@ -2537,7 +2783,6 @@ asection *sect; bfd_vma last_vma = 0, last_dwarf = 0; bfd_size_type amt; - struct adjusted_section *p; i = 0; for (sect = abfd->sections; sect != NULL; sect = sect->next) @@ -2986,80 +3231,37 @@ { /* Case 1: only one info section. */ total_size = msec->size; - if (! read_section (debug_bfd, ".debug_info", ".zdebug_info", - symbols, 0, + if (! read_section (debug_bfd, debug_info, symbols, 0, &stash->info_ptr_memory, &total_size)) goto done; } else { - int all_uncompressed = 1; + /* Case 2: multiple sections. */ for (total_size = 0; msec; msec = find_debug_info (debug_bfd, msec)) - { - total_size += msec->size; - if (strcmp (msec->name, DWARF2_COMPRESSED_DEBUG_INFO) == 0) - all_uncompressed = 0; - } - if (all_uncompressed) - { - /* Case 2: multiple sections, but none is compressed. */ - stash->info_ptr_memory = (bfd_byte *) bfd_malloc (total_size); - if (stash->info_ptr_memory == NULL) - goto done; - - total_size = 0; - for (msec = find_debug_info (debug_bfd, NULL); - msec; - msec = find_debug_info (debug_bfd, msec)) - { - bfd_size_type size; + total_size += msec->size; - size = msec->size; - if (size == 0) - continue; - - if (!(bfd_simple_get_relocated_section_contents - (debug_bfd, msec, stash->info_ptr_memory + total_size, - symbols))) - goto done; - - total_size += size; - } - } - else - { - /* Case 3: multiple sections, some or all compressed. */ - stash->info_ptr_memory = NULL; - total_size = 0; - for (msec = find_debug_info (debug_bfd, NULL); - msec; - msec = find_debug_info (debug_bfd, msec)) - { - bfd_size_type size = msec->size; - bfd_byte* buffer; - - if (size == 0) - continue; + stash->info_ptr_memory = (bfd_byte *) bfd_malloc (total_size); + if (stash->info_ptr_memory == NULL) + goto done; - buffer = (bfd_simple_get_relocated_section_contents - (debug_bfd, msec, NULL, symbols)); - if (! buffer) - goto done; + total_size = 0; + for (msec = find_debug_info (debug_bfd, NULL); + msec; + msec = find_debug_info (debug_bfd, msec)) + { + bfd_size_type size; + + size = msec->size; + if (size == 0) + continue; + + if (!(bfd_simple_get_relocated_section_contents + (debug_bfd, msec, stash->info_ptr_memory + total_size, + symbols))) + goto done; - if (strcmp (msec->name, DWARF2_COMPRESSED_DEBUG_INFO) == 0) - { - if (! bfd_uncompress_section_contents (&buffer, &size)) - { - free (buffer); - goto done; - } - } - stash->info_ptr_memory = (bfd_byte *) - bfd_realloc (stash->info_ptr_memory, total_size + size); - memcpy (stash->info_ptr_memory + total_size, buffer, size); - free (buffer); - total_size += size; - } + total_size += size; } } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/ecoff.c crash-6.1.6/=unpacked-tar1=/bfd/ecoff.c --- crash-5.1.6/=unpacked-tar1=/bfd/ecoff.c 2009-08-29 22:10:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/ecoff.c 2010-12-13 01:06:16.000000000 +0000 @@ -1,6 +1,6 @@ /* Generic ECOFF (Extended-COFF) routines. Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Original version by Per Bothner. Full support added by Ian Lance Taylor, ian@cygnus.com. @@ -27,7 +27,6 @@ #include "bfdlink.h" #include "libbfd.h" #include "aout/ar.h" -#include "aout/ranlib.h" #include "aout/stab_gnu.h" /* FIXME: We need the definitions of N_SET[ADTB], but aout64.h defines @@ -56,14 +55,14 @@ { /* name, id, index, next, prev, flags, user_set_vma, */ "*DEBUG*", 0, 0, NULL, NULL, 0, 0, - /* linker_mark, linker_has_input, gc_mark, */ - 0, 0, 1, - /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ - 0, 0, 0, 0, - /* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, */ - 0, 0, 0, - /* reloc_done, vma, lma, size, rawsize, relax, relax_count, */ - 0, 0, 0, 0, 0, 0, 0, + /* linker_mark, linker_has_input, gc_mark, compress_status, */ + 0, 0, 1, 0, + /* segment_mark, sec_info_type, use_rela_p, */ + 0, 0, 0, + /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, */ + 0, 0, 0, 0, 0, 0, + /* vma, lma, size, rawsize, compressed_size, relax, relax_count, */ + 0, 0, 0, 0, 0, 0, 0, /* output_offset, output_section, alignment_power, */ 0, NULL, 0, /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ @@ -89,7 +88,7 @@ { bfd_size_type amt = sizeof (ecoff_data_type); - abfd->tdata.ecoff_obj_data = bfd_zalloc (abfd, amt); + abfd->tdata.ecoff_obj_data = (struct ecoff_tdata *) bfd_zalloc (abfd, amt); if (abfd->tdata.ecoff_obj_data == NULL) return FALSE; @@ -193,7 +192,7 @@ bfd_boolean _bfd_ecoff_set_arch_mach_hook (bfd *abfd, void * filehdr) { - struct internal_filehdr *internal_f = filehdr; + struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr; enum bfd_architecture arch; unsigned long mach; @@ -366,7 +365,7 @@ asection *section ATTRIBUTE_UNUSED, flagword * flags_ptr) { - struct internal_scnhdr *internal_s = hdr; + struct internal_scnhdr *internal_s = (struct internal_scnhdr *) hdr; long styp_flags = internal_s->s_flags; flagword sec_flags = 0; @@ -614,7 +613,7 @@ the symbols, so we swap them here. */ amt = internal_symhdr->ifdMax; amt *= sizeof (struct fdr); - debug->fdr = bfd_alloc (abfd, amt); + debug->fdr = (FDR *) bfd_alloc (abfd, amt); if (debug->fdr == NULL) return FALSE; external_fdr_size = backend->debug_swap.external_fdr_size; @@ -882,7 +881,7 @@ internal_size = bfd_get_symcount (abfd); internal_size *= sizeof (ecoff_symbol_type); - internal = bfd_alloc (abfd, internal_size); + internal = (ecoff_symbol_type *) bfd_alloc (abfd, internal_size); if (internal == NULL) return FALSE; @@ -1580,11 +1579,11 @@ amt = section->reloc_count; amt *= sizeof (arelent); - internal_relocs = bfd_alloc (abfd, amt); + internal_relocs = (arelent *) bfd_alloc (abfd, amt); external_reloc_size = backend->external_reloc_size; amt = external_reloc_size * section->reloc_count; - external_relocs = bfd_alloc (abfd, amt); + external_relocs = (char *) bfd_alloc (abfd, amt); if (internal_relocs == NULL || external_relocs == NULL) return FALSE; if (bfd_seek (abfd, section->rel_filepos, SEEK_SET) != 0) @@ -1730,7 +1729,8 @@ { bfd_size_type amt = sizeof (struct ecoff_find_line); - ecoff_data (abfd)->find_line_info = bfd_zalloc (abfd, amt); + ecoff_data (abfd)->find_line_info = + (struct ecoff_find_line *) bfd_zalloc (abfd, amt); if (ecoff_data (abfd)->find_line_info == NULL) return FALSE; } @@ -1955,7 +1955,7 @@ /* Sort the sections by VMA. */ amt = abfd->section_count; amt *= sizeof (asection *); - sorted_hdrs = bfd_malloc (amt); + sorted_hdrs = (asection **) bfd_malloc (amt); if (sorted_hdrs == NULL) return FALSE; for (current = abfd->sections, i = 0; @@ -2676,7 +2676,7 @@ else { const char *name; - unsigned int i; + unsigned int j; static struct { const char * name; @@ -2703,14 +2703,14 @@ name = bfd_get_section_name (abfd, bfd_get_section (sym)); - for (i = 0; i < ARRAY_SIZE (section_symndx); i++) - if (streq (name, section_symndx[i].name)) + for (j = 0; j < ARRAY_SIZE (section_symndx); j++) + if (streq (name, section_symndx[j].name)) { - in.r_symndx = section_symndx[i].r_symndx; + in.r_symndx = section_symndx[j].r_symndx; break; } - if (i == ARRAY_SIZE (section_symndx)) + if (j == ARRAY_SIZE (section_symndx)) abort (); in.r_extern = 0; } @@ -2854,7 +2854,7 @@ struct artdata *ardata; unsigned int count; char *raw_ptr; - struct symdef *symdef_ptr; + carsym *symdef_ptr; char *stringbase; bfd_size_type amt; @@ -2908,7 +2908,7 @@ parsed_size = mapdata->parsed_size; bfd_release (abfd, (void *) mapdata); - raw_armap = bfd_alloc (abfd, parsed_size); + raw_armap = (char *) bfd_alloc (abfd, parsed_size); if (raw_armap == NULL) return FALSE; @@ -2974,12 +2974,12 @@ ++ardata->symdef_count; amt = ardata->symdef_count; - amt *= sizeof (struct symdef); - symdef_ptr = bfd_alloc (abfd, amt); + amt *= sizeof (carsym); + symdef_ptr = (carsym *) bfd_alloc (abfd, amt); if (!symdef_ptr) return FALSE; - ardata->symdefs = (carsym *) symdef_ptr; + ardata->symdefs = symdef_ptr; raw_ptr = raw_armap + 4; for (i = 0; i < count; i++, raw_ptr += 8) @@ -2990,7 +2990,7 @@ if (file_offset == 0) continue; name_offset = H_GET_32 (abfd, raw_ptr); - symdef_ptr->s.name = stringbase + name_offset; + symdef_ptr->name = stringbase + name_offset; symdef_ptr->file_offset = file_offset; ++symdef_ptr; } @@ -3062,7 +3062,8 @@ linker just checks the archive name; the GNU linker may check the date. */ stat (abfd->filename, &statbuf); - sprintf (hdr.ar_date, "%ld", (long) (statbuf.st_mtime + 60)); + _bfd_ar_spacepad (hdr.ar_date, sizeof (hdr.ar_date), "%ld", + (long) (statbuf.st_mtime + 60)); /* The DECstation uses zeroes for the uid, gid and mode of the armap. */ @@ -3073,7 +3074,7 @@ hdr.ar_mode[1] = '4'; hdr.ar_mode[2] = '4'; - sprintf (hdr.ar_size, "%-10d", (int) mapsize); + _bfd_ar_spacepad (hdr.ar_size, sizeof (hdr.ar_size), "%-10ld", mapsize); hdr.ar_fmag[0] = '`'; hdr.ar_fmag[1] = '\012'; @@ -3091,7 +3092,7 @@ if (bfd_bwrite ((void *) temp, (bfd_size_type) 4, abfd) != 4) return FALSE; - hashtable = bfd_zalloc (abfd, symdefsize); + hashtable = (bfd_byte *) bfd_zalloc (abfd, symdefsize); if (!hashtable) return FALSE; @@ -3211,7 +3212,7 @@ struct ecoff_link_hash_table *ret; bfd_size_type amt = sizeof (struct ecoff_link_hash_table); - ret = bfd_malloc (amt); + ret = (struct ecoff_link_hash_table *) bfd_malloc (amt); if (ret == NULL) return NULL; if (!_bfd_link_hash_table_init (&ret->root, abfd, @@ -3269,7 +3270,7 @@ amt = ext_count; amt *= sizeof (struct bfd_link_hash_entry *); - sym_hash = bfd_alloc (abfd, amt); + sym_hash = (struct bfd_link_hash_entry **) bfd_alloc (abfd, amt); if (!sym_hash) return FALSE; ecoff_data (abfd)->sym_hashes = (struct ecoff_link_hash_entry **) sym_hash; @@ -3483,7 +3484,7 @@ || bfd_bread (external_ext, esize, abfd) != esize) goto error_return; - ssext = bfd_malloc ((bfd_size_type) symhdr->issExtMax); + ssext = (char *) bfd_malloc ((bfd_size_type) symhdr->issExtMax); if (ssext == NULL && symhdr->issExtMax != 0) goto error_return; @@ -3508,6 +3509,58 @@ return FALSE; } +/* Factored out from ecoff_link_check_archive_element. */ + +static bfd_boolean +read_ext_syms_and_strs (HDRR **symhdr, bfd_size_type *external_ext_size, + bfd_size_type *esize, void **external_ext, char **ssext, bfd *abfd, + const struct ecoff_backend_data * const backend) +{ + if (! ecoff_slurp_symbolic_header (abfd)) + return FALSE; + + /* If there are no symbols, we don't want it. */ + if (bfd_get_symcount (abfd) == 0) + return TRUE; + + *symhdr = &ecoff_data (abfd)->debug_info.symbolic_header; + + *external_ext_size = backend->debug_swap.external_ext_size; + *esize = (*symhdr)->iextMax * *external_ext_size; + *external_ext = bfd_malloc (*esize); + if (*external_ext == NULL && *esize != 0) + return FALSE; + + if (bfd_seek (abfd, (file_ptr) (*symhdr)->cbExtOffset, SEEK_SET) != 0 + || bfd_bread (*external_ext, *esize, abfd) != *esize) + return FALSE; + + *ssext = (char *) bfd_malloc ((bfd_size_type) (*symhdr)->issExtMax); + if (*ssext == NULL && (*symhdr)->issExtMax != 0) + return FALSE; + + if (bfd_seek (abfd, (file_ptr) (*symhdr)->cbSsExtOffset, SEEK_SET) != 0 + || (bfd_bread (*ssext, (bfd_size_type) (*symhdr)->issExtMax, abfd) + != (bfd_size_type) (*symhdr)->issExtMax)) + return FALSE; + return TRUE; +} + +static bfd_boolean +reread_ext_syms_and_strs (HDRR **symhdr, bfd_size_type *external_ext_size, + bfd_size_type *esize, void **external_ext, char **ssext, bfd *abfd, + const struct ecoff_backend_data * const backend) +{ + if (*external_ext != NULL) + free (*external_ext); + *external_ext = NULL; + if (*ssext != NULL) + free (*ssext); + *ssext = NULL; + return read_ext_syms_and_strs (symhdr, external_ext_size, esize, + external_ext, ssext, abfd, backend); +} + /* This is called if we used _bfd_generic_link_add_archive_symbols because we were not dealing with an ECOFF archive. */ @@ -3529,35 +3582,15 @@ *pneeded = FALSE; - if (! ecoff_slurp_symbolic_header (abfd)) + /* Read in the external symbols and external strings. */ + if (!read_ext_syms_and_strs (&symhdr, &external_ext_size, &esize, + &external_ext, &ssext, abfd, backend)) goto error_return; /* If there are no symbols, we don't want it. */ if (bfd_get_symcount (abfd) == 0) goto successful_return; - symhdr = &ecoff_data (abfd)->debug_info.symbolic_header; - - /* Read in the external symbols and external strings. */ - external_ext_size = backend->debug_swap.external_ext_size; - esize = symhdr->iextMax * external_ext_size; - external_ext = bfd_malloc (esize); - if (external_ext == NULL && esize != 0) - goto error_return; - - if (bfd_seek (abfd, (file_ptr) symhdr->cbExtOffset, SEEK_SET) != 0 - || bfd_bread (external_ext, esize, abfd) != esize) - goto error_return; - - ssext = bfd_malloc ((bfd_size_type) symhdr->issExtMax); - if (ssext == NULL && symhdr->issExtMax != 0) - goto error_return; - - if (bfd_seek (abfd, (file_ptr) symhdr->cbSsExtOffset, SEEK_SET) != 0 - || (bfd_bread (ssext, (bfd_size_type) symhdr->issExtMax, abfd) - != (bfd_size_type) symhdr->issExtMax)) - goto error_return; - /* Look through the external symbols to see if they define some symbol that is currently undefined. */ ext_ptr = (char *) external_ext; @@ -3567,6 +3600,7 @@ EXTR esym; bfd_boolean def; const char *name; + bfd *oldbfd; struct bfd_link_hash_entry *h; (*swap_ext_in) (abfd, (void *) ext_ptr, &esym); @@ -3611,7 +3645,15 @@ continue; /* Include this element. */ - if (! (*info->callbacks->add_archive_element) (info, abfd, name)) + oldbfd = abfd; + if (!(*info->callbacks + ->add_archive_element) (info, abfd, name, &abfd)) + goto error_return; + /* Potentially, the add_archive_element hook may have set a + substitute BFD for us. */ + if (abfd != oldbfd + && !reread_ext_syms_and_strs (&symhdr, &external_ext_size, &esize, + &external_ext, &ssext, abfd, backend)) goto error_return; if (! ecoff_link_add_externals (abfd, info, external_ext, ssext)) goto error_return; @@ -3776,7 +3818,8 @@ /* Unlike the generic linker, we know that this element provides a definition for an undefined symbol and we know that we want to include it. We don't need to check anything. */ - if (! (*info->callbacks->add_archive_element) (info, element, name)) + if (!(*info->callbacks + ->add_archive_element) (info, element, name, &element)) return FALSE; if (! ecoff_link_add_object_symbols (element, info)) return FALSE; @@ -3838,7 +3881,7 @@ else \ { \ bfd_size_type amt = (bfd_size_type) size * symhdr->count; \ - debug->ptr = bfd_malloc (amt); \ + debug->ptr = (type) bfd_malloc (amt); \ if (debug->ptr == NULL) \ { \ ret = FALSE; \ @@ -4083,7 +4126,7 @@ bfd_byte *buf; size = bfd_get_reloc_size (rel.howto); - buf = bfd_zmalloc (size); + buf = (bfd_byte *) bfd_zmalloc (size); if (buf == NULL) return FALSE; rstat = _bfd_relocate_contents (rel.howto, output_bfd, @@ -4192,7 +4235,7 @@ /* Get some memory and swap out the reloc. */ external_reloc_size = ecoff_backend (output_bfd)->external_reloc_size; - rbuf = bfd_malloc (external_reloc_size); + rbuf = (bfd_byte *) bfd_malloc (external_reloc_size); if (rbuf == NULL) return FALSE; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/ecofflink.c crash-6.1.6/=unpacked-tar1=/bfd/ecofflink.c --- crash-5.1.6/=unpacked-tar1=/bfd/ecofflink.c 2008-07-30 04:34:56.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/ecofflink.c 2009-09-25 19:13:26.000000000 +0000 @@ -1,6 +1,6 @@ /* Routines to link ECOFF debugging information. Copyright 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support, . This file is part of BFD, the Binary File Descriptor library. @@ -1084,8 +1084,8 @@ len = strlen (string); if (info->relocatable) { - if (!add_memory_shuffle (ainfo, &ainfo->ss, &ainfo->ss_end, (PTR) string, - len + 1)) + if (!add_memory_shuffle (ainfo, &ainfo->ss, &ainfo->ss_end, + (bfd_byte *) string, len + 1)) return -1; ret = symhdr->issMax; symhdr->issMax += len + 1; @@ -1207,7 +1207,7 @@ } (*swap_sym_out) (output_bfd, &internal_sym, external_sym); add_memory_shuffle (ainfo, &ainfo->sym, &ainfo->sym_end, - external_sym, + (bfd_byte *) external_sym, (unsigned long) output_swap->external_sym_size); ++fdr.csym; ++output_symhdr->isymMax; @@ -1228,7 +1228,7 @@ } (*output_swap->swap_fdr_out) (output_bfd, &fdr, external_fdr); add_memory_shuffle (ainfo, &ainfo->fdr, &ainfo->fdr_end, - external_fdr, + (bfd_byte *) external_fdr, (unsigned long) output_swap->external_fdr_size); ++output_symhdr->ifdMax; @@ -1338,8 +1338,8 @@ - (char *) debug->external_ext) < (symhdr->iextMax + 1) * external_ext_size) { - char *external_ext = debug->external_ext; - char *external_ext_end = debug->external_ext_end; + char *external_ext = (char *) debug->external_ext; + char *external_ext_end = (char *) debug->external_ext_end; if (! ecoff_add_bytes ((char **) &external_ext, (char **) &external_ext_end, (symhdr->iextMax + 1) * (size_t) external_ext_size)) @@ -1503,7 +1503,7 @@ SET (cbExtOffset, iextMax, swap->external_ext_size); #undef SET - buff = (PTR) bfd_malloc (swap->external_hdr_size); + buff = (char *) bfd_malloc (swap->external_hdr_size); if (buff == NULL && swap->external_hdr_size != 0) goto error_return; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf-attrs.c crash-6.1.6/=unpacked-tar1=/bfd/elf-attrs.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf-attrs.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf-attrs.c 2010-11-05 13:02:09.000000000 +0000 @@ -1,5 +1,5 @@ /* ELF attributes support (based on ARM EABI attributes). - Copyright 2005, 2006, 2007, 2009 + Copyright 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -96,7 +96,7 @@ attr = elf_known_obj_attributes (abfd)[vendor]; size = 0; - for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) + for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) size += obj_attr_size (i, &attr[i]); for (list = elf_other_obj_attributes (abfd)[vendor]; @@ -188,7 +188,7 @@ p += 4; attr = elf_known_obj_attributes (abfd)[vendor]; - for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) + for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) { int tag = i; if (get_elf_backend_data (abfd)->obj_attrs_order) @@ -349,9 +349,11 @@ for (vendor = OBJ_ATTR_FIRST; vendor <= OBJ_ATTR_LAST; vendor++) { - in_attr = &elf_known_obj_attributes (ibfd)[vendor][4]; - out_attr = &elf_known_obj_attributes (obfd)[vendor][4]; - for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) + in_attr + = &elf_known_obj_attributes (ibfd)[vendor][LEAST_KNOWN_OBJ_ATTRIBUTE]; + out_attr + = &elf_known_obj_attributes (obfd)[vendor][LEAST_KNOWN_OBJ_ATTRIBUTE]; + for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) { out_attr->type = in_attr->type; out_attr->i = in_attr->i; @@ -564,7 +566,8 @@ if (in_attr->i > 0 && strcmp (in_attr->s, "gnu") != 0) { _bfd_error_handler - (_("error: %B: Must be processed by '%s' toolchain"), + (_("error: %B: Object has vendor-specific contents that " + "must be processed by the '%s' toolchain"), ibfd, in_attr->s); return FALSE; } @@ -583,3 +586,114 @@ return TRUE; } + +/* Merge an unknown processor-specific attribute TAG, within the range + of known attributes, from IBFD into OBFD; return TRUE if the link + is OK, FALSE if it must fail. */ + +bfd_boolean +_bfd_elf_merge_unknown_attribute_low (bfd *ibfd, bfd *obfd, int tag) +{ + obj_attribute *in_attr; + obj_attribute *out_attr; + bfd *err_bfd = NULL; + bfd_boolean result = TRUE; + + in_attr = elf_known_obj_attributes_proc (ibfd); + out_attr = elf_known_obj_attributes_proc (obfd); + + if (out_attr[tag].i != 0 || out_attr[tag].s != NULL) + err_bfd = obfd; + else if (in_attr[tag].i != 0 || in_attr[tag].s != NULL) + err_bfd = ibfd; + + if (err_bfd != NULL) + result + = get_elf_backend_data (err_bfd)->obj_attrs_handle_unknown (err_bfd, tag); + + /* Only pass on attributes that match in both inputs. */ + if (in_attr[tag].i != out_attr[tag].i + || (in_attr[tag].s == NULL) != (out_attr[tag].s == NULL) + || (in_attr[tag].s != NULL && out_attr[tag].s != NULL + && strcmp (in_attr[tag].s, out_attr[tag].s) != 0)) + { + out_attr[tag].i = 0; + out_attr[tag].s = NULL; + } + + return result; +} + +/* Merge the lists of unknown processor-specific attributes, outside + the known range, from IBFD into OBFD; return TRUE if the link is + OK, FALSE if it must fail. */ + +bfd_boolean +_bfd_elf_merge_unknown_attribute_list (bfd *ibfd, bfd *obfd) +{ + obj_attribute_list *in_list; + obj_attribute_list *out_list; + obj_attribute_list **out_listp; + bfd_boolean result = TRUE; + + in_list = elf_other_obj_attributes_proc (ibfd); + out_listp = &elf_other_obj_attributes_proc (obfd); + out_list = *out_listp; + + for (; in_list || out_list; ) + { + bfd *err_bfd = NULL; + int err_tag = 0; + + /* The tags for each list are in numerical order. */ + /* If the tags are equal, then merge. */ + if (out_list && (!in_list || in_list->tag > out_list->tag)) + { + /* This attribute only exists in obfd. We can't merge, and we don't + know what the tag means, so delete it. */ + err_bfd = obfd; + err_tag = out_list->tag; + *out_listp = out_list->next; + out_list = *out_listp; + } + else if (in_list && (!out_list || in_list->tag < out_list->tag)) + { + /* This attribute only exists in ibfd. We can't merge, and we don't + know what the tag means, so ignore it. */ + err_bfd = ibfd; + err_tag = in_list->tag; + in_list = in_list->next; + } + else /* The tags are equal. */ + { + /* As present, all attributes in the list are unknown, and + therefore can't be merged meaningfully. */ + err_bfd = obfd; + err_tag = out_list->tag; + + /* Only pass on attributes that match in both inputs. */ + if (in_list->attr.i != out_list->attr.i + || (in_list->attr.s == NULL) != (out_list->attr.s == NULL) + || (in_list->attr.s && out_list->attr.s + && strcmp (in_list->attr.s, out_list->attr.s) != 0)) + { + /* No match. Delete the attribute. */ + *out_listp = out_list->next; + out_list = *out_listp; + } + else + { + /* Matched. Keep the attribute and move to the next. */ + out_list = out_list->next; + in_list = in_list->next; + } + } + + if (err_bfd) + result = result + && get_elf_backend_data (err_bfd)->obj_attrs_handle_unknown (err_bfd, + err_tag); + } + + return result; +} diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf-bfd.h crash-6.1.6/=unpacked-tar1=/bfd/elf-bfd.h --- crash-5.1.6/=unpacked-tar1=/bfd/elf-bfd.h 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf-bfd.h 2011-03-14 15:54:57.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end data structures for ELF files. Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -153,6 +153,9 @@ /* Symbol st_other value, symbol visibility. */ unsigned int other : 8; + /* The symbol's st_target_internal value (see Elf_Internal_Sym). */ + unsigned int target_internal : 8; + /* Symbol is referenced by a non-shared object (other than the object in which it is defined). */ unsigned int ref_regular : 1; @@ -305,6 +308,10 @@ asection *sec; } u; + /* The offset of the personality data from the start of the CIE, + or 0 if the CIE doesn't have any. */ + unsigned int personality_offset : 8; + /* True if we have marked relocations associated with this CIE. */ unsigned int gc_mark : 1; @@ -312,8 +319,13 @@ a PC-relative one. */ unsigned int make_lsda_relative : 1; - /* True if the CIE contains personality data and if that data - uses a PC-relative encoding. */ + /* True if we have decided to turn an absolute personality + encoding into a PC-relative one. */ + unsigned int make_per_encoding_relative : 1; + + /* True if the CIE contains personality data and if that + data uses a PC-relative encoding. Always true when + make_per_encoding_relative is. */ unsigned int per_encoding_relative : 1; /* True if we need to add an 'R' (FDE encoding) entry to the @@ -322,6 +334,9 @@ /* True if we have merged this CIE with another. */ unsigned int merged : 1; + + /* Unused bits. */ + unsigned int pad1 : 18; } cie; } u; unsigned int reloc_index; @@ -384,12 +399,52 @@ bfd_boolean table; }; +/* Enum used to identify target specific extensions to the elf_obj_tdata + and elf_link_hash_table structures. Note the enums deliberately start + from 1 so that we can detect an uninitialized field. The generic value + is last so that additions to this enum do not need to modify more than + one line. */ +enum elf_target_id +{ + ALPHA_ELF_DATA = 1, + ARM_ELF_DATA, + AVR_ELF_DATA, + BFIN_ELF_DATA, + CRIS_ELF_DATA, + FRV_ELF_DATA, + HPPA32_ELF_DATA, + HPPA64_ELF_DATA, + I386_ELF_DATA, + IA64_ELF_DATA, + LM32_ELF_DATA, + M32R_ELF_DATA, + M68HC11_ELF_DATA, + M68K_ELF_DATA, + MICROBLAZE_ELF_DATA, + MIPS_ELF_DATA, + MN10300_ELF_DATA, + PPC32_ELF_DATA, + PPC64_ELF_DATA, + S390_ELF_DATA, + SH_ELF_DATA, + SPARC_ELF_DATA, + SPU_ELF_DATA, + TIC6X_ELF_DATA, + X86_64_ELF_DATA, + XTENSA_ELF_DATA, + GENERIC_ELF_DATA +}; + /* ELF linker hash table. */ struct elf_link_hash_table { struct bfd_link_hash_table root; + /* An identifier used to distinguish different target + specific extensions to this structure. */ + enum elf_target_id hash_table_id; + /* Whether we have created the special dynamic sections required when linking against or generating a shared object. */ bfd_boolean dynamic_sections_created; @@ -497,6 +552,8 @@ #define elf_hash_table(p) ((struct elf_link_hash_table *) ((p)->hash)) +#define elf_hash_table_id(table) ((table) -> hash_table_id) + /* Returns TRUE if the hash table is a struct elf_link_hash_table. */ #define is_elf_hash_table(htab) \ (((struct bfd_link_hash_table *) (htab))->type == bfd_link_elf_hash_table) @@ -635,6 +692,10 @@ /* The architecture for this backend. */ enum bfd_architecture arch; + /* An identifier used to distinguish different target specific + extensions to elf_obj_tdata and elf_link_hash_table structures. */ + enum elf_target_id target_id; + /* The ELF machine code (EM_xxxx) for this backend. */ int elf_machine_code; @@ -1191,12 +1252,20 @@ /* The section type to use for an attributes section. */ unsigned int obj_attrs_section_type; - /* This function determines the order in which any attributes are written. - It must be defined for input in the range 4..NUM_KNOWN_OBJ_ATTRIBUTES-1 - (this range is used in order to make unity easy). The returned value is - the actual tag number to place in the input position. */ + /* This function determines the order in which any attributes are + written. It must be defined for input in the range + LEAST_KNOWN_OBJ_ATTRIBUTE..NUM_KNOWN_OBJ_ATTRIBUTES-1 (this range + is used in order to make unity easy). The returned value is the + actual tag number to place in the input position. */ int (*obj_attrs_order) (int); + /* Handle merging unknown attributes; either warn and return TRUE, + or give an error and return FALSE. */ + bfd_boolean (*obj_attrs_handle_unknown) (bfd *, int); + + /* This is non-zero if static TLS segments require a special alignment. */ + unsigned static_tls_alignment; + /* This is TRUE if the linker should act like collect and gather global constructors and destructors by name. This is TRUE for MIPS ELF because the Irix 5 tools can not handle the .init @@ -1260,6 +1329,23 @@ unsigned default_execstack : 1; }; +/* Information about reloc sections associated with a bfd_elf_section_data + structure. */ +struct bfd_elf_section_reloc_data +{ + /* The ELF header for the reloc section associated with this + section, if any. */ + Elf_Internal_Shdr *hdr; + /* The number of relocations currently assigned to HDR. */ + unsigned int count; + /* The ELF section number of the reloc section. Only used for an + output file. */ + int idx; + /* Used by the backend linker to store the symbol hash table entries + associated with relocs against global symbols. */ + struct elf_link_hash_entry **hashes; +}; + /* Information stored for each BFD section in an ELF file. This structure is allocated by elf_new_section_hook. */ @@ -1268,31 +1354,13 @@ /* The ELF header for this section. */ Elf_Internal_Shdr this_hdr; - /* The ELF header for the reloc section associated with this - section, if any. */ - Elf_Internal_Shdr rel_hdr; - - /* If there is a second reloc section associated with this section, - as can happen on Irix 6, this field points to the header. */ - Elf_Internal_Shdr *rel_hdr2; - - /* The number of relocations currently assigned to REL_HDR. */ - unsigned int rel_count; - - /* The number of relocations currently assigned to REL_HDR2. */ - unsigned int rel_count2; + /* Information about the REL and RELA reloc sections associated + with this section, if any. */ + struct bfd_elf_section_reloc_data rel, rela; /* The ELF section number of this section. */ int this_idx; - /* The ELF section number of the reloc section indicated by - REL_HDR if any. Only used for an output file. */ - int rel_idx; - - /* The ELF section number of the reloc section indicated by - REL_HDR2 if any. Only used for an output file. */ - int rel_idx2; - /* Used by the backend linker when generating a shared library to record the dynamic symbol index for a section symbol corresponding to this section. A value of 0 means that there is @@ -1302,10 +1370,6 @@ /* A pointer to the linked-to section for SHF_LINK_ORDER. */ asection *linked_to; - /* Used by the backend linker to store the symbol hash table entries - associated with relocs against global symbols. */ - struct elf_link_hash_entry **rel_hashes; - /* A pointer to the swapped relocs. If the section uses REL relocs, rather than RELA, all the r_addend fields will be zero. This pointer may be NULL. It is used by the backend linker. */ @@ -1358,6 +1422,12 @@ #define get_elf_backend_data(abfd) \ xvec_get_elf_backend_data ((abfd)->xvec) +/* The least object attributes (within an attributes subsection) known + for any target. Some code assumes that the value 0 is not used and + the field for that attribute can instead be used as a marker to + indicate that attributes have been initialized. */ +#define LEAST_KNOWN_OBJ_ATTRIBUTE 2 + /* The maximum number of known object attributes for any target. */ #define NUM_KNOWN_OBJ_ATTRIBUTES 71 @@ -1406,27 +1476,6 @@ Tag_compatibility = 32 }; -/* Enum used to identify target specific extensions to the elf_obj_tdata - structure. Note the enums deliberately start from 1 so that we can - detect an uninitialized field. The generic value is last so that - additions to this enum do not need to modify more than one line. */ -enum elf_object_id -{ - ALPHA_ELF_TDATA = 1, - ARM_ELF_TDATA, - HPPA_ELF_TDATA, - I386_ELF_TDATA, - MIPS_ELF_TDATA, - PPC32_ELF_TDATA, - PPC64_ELF_TDATA, - S390_ELF_TDATA, - SH_ELF_TDATA, - SPARC_ELF_TDATA, - X86_64_ELF_TDATA, - XTENSA_ELF_TDATA, - GENERIC_ELF_TDATA -}; - /* Some private data is stashed away for future use using the tdata pointer in the bfd structure. */ @@ -1491,6 +1540,10 @@ one. */ const char *dt_name; + /* The linker emulation needs to know what audit libs + are used by a dynamic object. */ + const char *dt_audit; + /* Records the result of `get_program_header_size'. */ bfd_size_type program_header_size; @@ -1587,7 +1640,7 @@ /* An identifier used to distinguish different target specific extensions to this structure. */ - enum elf_object_id object_id; + enum elf_target_id object_id; }; #define elf_tdata(bfd) ((bfd) -> tdata.elf_obj_data) @@ -1620,6 +1673,7 @@ #define elf_local_got_offsets(bfd) (elf_tdata(bfd) -> local_got.offsets) #define elf_local_got_ents(bfd) (elf_tdata(bfd) -> local_got.ents) #define elf_dt_name(bfd) (elf_tdata(bfd) -> dt_name) +#define elf_dt_audit(bfd) (elf_tdata(bfd) -> dt_audit) #define elf_dyn_lib_class(bfd) (elf_tdata(bfd) -> dyn_lib_class) #define elf_bad_symtab(bfd) (elf_tdata(bfd) -> bad_symtab) #define elf_flags_init(bfd) (elf_tdata(bfd) -> flags_init) @@ -1693,8 +1747,8 @@ extern bfd_reloc_status_type bfd_elf_generic_reloc (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); extern bfd_boolean bfd_elf_allocate_object - (bfd *, size_t, enum elf_object_id); -extern bfd_boolean bfd_elf_make_generic_object + (bfd *, size_t, enum elf_target_id); +extern bfd_boolean bfd_elf_make_object (bfd *); extern bfd_boolean bfd_elf_mkcorefile (bfd *); @@ -1717,7 +1771,7 @@ (struct elf_link_hash_table *, bfd *, struct bfd_hash_entry *(*) (struct bfd_hash_entry *, struct bfd_hash_table *, const char *), - unsigned int); + unsigned int, enum elf_target_id); extern bfd_boolean _bfd_elf_slurp_version_tables (bfd *, bfd_boolean); extern bfd_boolean _bfd_elf_merge_sections @@ -1734,6 +1788,12 @@ (asection *, struct bfd_link_info *); extern void _bfd_elf_link_just_syms (asection *, struct bfd_link_info *); +extern void _bfd_elf_copy_link_hash_symbol_type + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); +extern bfd_boolean _bfd_elf_size_group_sections + (struct bfd_link_info *); +extern bfd_boolean _bfd_elf_fixup_group_sections +(bfd *, asection *); extern bfd_boolean _bfd_elf_copy_private_header_data (bfd *, bfd *); extern bfd_boolean _bfd_elf_copy_private_symbol_data @@ -1797,7 +1857,7 @@ extern bfd_boolean _bfd_elf_new_section_hook (bfd *, asection *); extern bfd_boolean _bfd_elf_init_reloc_shdr - (bfd *, Elf_Internal_Shdr *, asection *, bfd_boolean); + (bfd *, struct bfd_elf_section_reloc_data *, asection *, bfd_boolean); extern const struct bfd_elf_special_section *_bfd_elf_get_special_section (const char *, const struct bfd_elf_special_section *, unsigned int); extern const struct bfd_elf_special_section *_bfd_elf_get_sec_type_attr @@ -1938,6 +1998,8 @@ (bfd *); extern bfd_boolean bfd_elf32_core_file_matches_executable_p (bfd *, bfd *); +extern int bfd_elf32_core_file_pid + (bfd *); extern bfd_boolean bfd_elf32_swap_symbol_in (bfd *, const void *, const void *, Elf_Internal_Sym *); @@ -1982,6 +2044,8 @@ (bfd *); extern bfd_boolean bfd_elf64_core_file_matches_executable_p (bfd *, bfd *); +extern int bfd_elf64_core_file_pid + (bfd *); extern bfd_boolean bfd_elf64_swap_symbol_in (bfd *, const void *, const void *, Elf_Internal_Sym *); @@ -2130,10 +2194,22 @@ (bfd *, char *, int *, const void *, int); extern char *elfcore_write_prxfpreg (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_xstatereg + (bfd *, char *, int *, const void *, int); extern char *elfcore_write_ppc_vmx (bfd *, char *, int *, const void *, int); extern char *elfcore_write_ppc_vsx (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_timer + (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_todcmp + (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_todpreg + (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_ctrs + (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_prefix + (bfd *, char *, int *, const void *, int); extern char *elfcore_write_lwpstatus (bfd *, char *, int *, long, int, const void *); extern char *elfcore_write_register_note @@ -2166,6 +2242,9 @@ extern int _bfd_elf_obj_attrs_arg_type (bfd *, int, int); extern void _bfd_elf_parse_attributes (bfd *, Elf_Internal_Shdr *); extern bfd_boolean _bfd_elf_merge_object_attributes (bfd *, bfd *); +extern bfd_boolean _bfd_elf_merge_unknown_attribute_low (bfd *, bfd *, int); +extern bfd_boolean _bfd_elf_merge_unknown_attribute_list (bfd *, bfd *); +extern Elf_Internal_Shdr *_bfd_elf_single_rel_hdr (asection *sec); /* The linker may needs to keep track of the number of relocs that it decides to copy as dynamic relocs in check_relocs for each symbol. @@ -2196,6 +2275,14 @@ (struct bfd_link_info *, struct elf_link_hash_entry *, struct elf_dyn_relocs **, unsigned int, unsigned int); +extern void elf_append_rela (bfd *, asection *, Elf_Internal_Rela *); +extern void elf_append_rel (bfd *, asection *, Elf_Internal_Rela *); + +extern bfd_vma elf64_r_info (bfd_vma, bfd_vma); +extern bfd_vma elf64_r_sym (bfd_vma); +extern bfd_vma elf32_r_info (bfd_vma, bfd_vma); +extern bfd_vma elf32_r_sym (bfd_vma); + /* Large common section. */ extern asection _bfd_elf_large_com_section; @@ -2269,12 +2356,59 @@ return FALSE; \ warned = TRUE; \ } \ + (void) unresolved_reloc; \ + (void) warned; \ } \ while (0) +/* This macro is to avoid lots of duplicated code in the body of the + loop over relocations in xxx_relocate_section() in the various + elfxx-xxxx.c files. + + Handle relocations against symbols from removed linkonce sections, + or sections discarded by a linker script. When doing a relocatable + link, we remove such relocations. Otherwise, we just want the + section contents zeroed and avoid any special processing. */ +#define RELOC_AGAINST_DISCARDED_SECTION(info, input_bfd, input_section, \ + rel, relend, howto, contents) \ + { \ + _bfd_clear_contents (howto, input_bfd, input_section, \ + contents + rel->r_offset); \ + \ + if (info->relocatable \ + && (input_section->flags & SEC_DEBUGGING)) \ + { \ + /* Only remove relocations in debug sections since other \ + sections may require relocations. */ \ + Elf_Internal_Shdr *rel_hdr; \ + \ + rel_hdr = _bfd_elf_single_rel_hdr (input_section->output_section); \ + \ + /* Avoid empty output section. */ \ + if (rel_hdr->sh_size > rel_hdr->sh_entsize) \ + { \ + rel_hdr->sh_size -= rel_hdr->sh_entsize; \ + rel_hdr = _bfd_elf_single_rel_hdr (input_section); \ + rel_hdr->sh_size -= rel_hdr->sh_entsize; \ + \ + memmove (rel, rel + 1, (relend - rel) * sizeof (*rel)); \ + \ + input_section->reloc_count--; \ + relend--; \ + rel--; \ + continue; \ + } \ + } \ + \ + rel->r_info = 0; \ + rel->r_addend = 0; \ + continue; \ + } + /* Will a symbol be bound to the the definition within the shared - library, if any. */ + library, if any. A unique symbol can never be bound locally. */ #define SYMBOLIC_BIND(INFO, H) \ - ((INFO)->symbolic || ((INFO)->dynamic && !(H)->dynamic)) + (!(H)->unique_global \ + && ((INFO)->symbolic || ((INFO)->dynamic && !(H)->dynamic))) #endif /* _LIBELF_H_ */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf-eh-frame.c crash-6.1.6/=unpacked-tar1=/bfd/elf-eh-frame.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf-eh-frame.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf-eh-frame.c 2010-11-23 23:30:04.000000000 +0000 @@ -1,5 +1,5 @@ /* .eh_frame section optimization. - Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Jakub Jelinek . @@ -423,6 +423,28 @@ return last; } +/* Convert absolute encoding ENCODING into PC-relative form. + SIZE is the size of a pointer. */ + +static unsigned char +make_pc_relative (unsigned char encoding, unsigned int ptr_size) +{ + if ((encoding & 0x7f) == DW_EH_PE_absptr) + switch (ptr_size) + { + case 2: + encoding |= DW_EH_PE_sdata2; + break; + case 4: + encoding |= DW_EH_PE_sdata4; + break; + case 8: + encoding |= DW_EH_PE_sdata8; + break; + } + return encoding | DW_EH_PE_pcrel; +} + /* Called before calling _bfd_elf_parse_eh_frame on every input bfd's .eh_frame section. */ @@ -614,7 +636,9 @@ REQUIRE (read_byte (&buf, end, &cie->version)); /* Cannot handle unknown versions. */ - REQUIRE (cie->version == 1 || cie->version == 3); + REQUIRE (cie->version == 1 + || cie->version == 3 + || cie->version == 4); REQUIRE (strlen ((char *) buf) < sizeof (cie->augmentation)); strcpy (cie->augmentation, (char *) buf); @@ -629,6 +653,13 @@ REQUIRE (skip_bytes (&buf, end, ptr_size)); SKIP_RELOCS (buf); } + if (cie->version >= 4) + { + REQUIRE (buf + 1 < end); + REQUIRE (buf[0] == ptr_size); + REQUIRE (buf[1] == 0); + buf += 2; + } REQUIRE (read_uleb128 (&buf, end, &cie->code_align)); REQUIRE (read_sleb128 (&buf, end, &cie->data_align)); if (cie->version == 1) @@ -675,11 +706,12 @@ per_width = get_DW_EH_PE_width (cie->per_encoding, ptr_size); REQUIRE (per_width); - if ((cie->per_encoding & 0xf0) == DW_EH_PE_aligned) + if ((cie->per_encoding & 0x70) == DW_EH_PE_aligned) { length = -(buf - ehbuf) & (per_width - 1); REQUIRE (skip_bytes (&buf, end, length)); } + this_inf->u.cie.personality_offset = buf - start; ENSURE_NO_RELOCS (buf); /* Ensure we have a reloc here. */ REQUIRE (GET_RELOC (buf)); @@ -705,27 +737,23 @@ ->elf_backend_can_make_relative_eh_frame (abfd, info, sec))) { - if ((cie->fde_encoding & 0xf0) == DW_EH_PE_absptr) + if ((cie->fde_encoding & 0x70) == DW_EH_PE_absptr) this_inf->make_relative = 1; /* If the CIE doesn't already have an 'R' entry, it's fairly easy to add one, provided that there's no aligned data after the augmentation string. */ else if (cie->fde_encoding == DW_EH_PE_omit - && (cie->per_encoding & 0xf0) != DW_EH_PE_aligned) + && (cie->per_encoding & 0x70) != DW_EH_PE_aligned) { if (*cie->augmentation == 0) this_inf->add_augmentation_size = 1; this_inf->u.cie.add_fde_encoding = 1; this_inf->make_relative = 1; } - } - if (info->shared - && (get_elf_backend_data (abfd) - ->elf_backend_can_make_lsda_relative_eh_frame - (abfd, info, sec)) - && (cie->lsda_encoding & 0xf0) == DW_EH_PE_absptr) - cie->can_make_lsda_relative = 1; + if ((cie->lsda_encoding & 0x70) == DW_EH_PE_absptr) + cie->can_make_lsda_relative = 1; + } /* If FDE encoding was not specified, it defaults to DW_EH_absptr. */ @@ -843,7 +871,7 @@ cie->length -= end - insns_end; } if (set_loc_count - && ((cie->fde_encoding & 0xf0) == DW_EH_PE_pcrel + && ((cie->fde_encoding & 0x70) == DW_EH_PE_pcrel || this_inf->make_relative)) { unsigned int cnt; @@ -963,7 +991,7 @@ relocations in REL. */ static struct eh_cie_fde * -find_merged_cie (bfd *abfd, asection *sec, +find_merged_cie (bfd *abfd, struct bfd_link_info *info, asection *sec, struct eh_frame_hdr_info *hdr_info, struct elf_reloc_cookie *cookie, struct eh_cie_fde *cie_inf) @@ -993,6 +1021,8 @@ if (cie->per_encoding != DW_EH_PE_omit) { + bfd_boolean per_binds_local; + /* Work out the address of personality routine, either as an absolute value or as a symbol. */ rel = cookie->rels + cie->personality.reloc_index; @@ -1016,6 +1046,7 @@ h = (struct elf_link_hash_entry *) h->root.u.i.link; cie->personality.h = h; + per_binds_local = SYMBOL_REFERENCES_LOCAL (info, h); } else { @@ -1036,6 +1067,17 @@ cie->personality.val = (sym->st_value + sym_sec->output_offset + sym_sec->output_section->vma); + per_binds_local = TRUE; + } + + if (per_binds_local + && info->shared + && (cie->per_encoding & 0x70) == DW_EH_PE_absptr + && (get_elf_backend_data (abfd) + ->elf_backend_can_make_relative_eh_frame (abfd, info, sec))) + { + cie_inf->u.cie.make_per_encoding_relative = 1; + cie_inf->u.cie.per_encoding_relative = 1; } } @@ -1110,9 +1152,9 @@ if (!(*reloc_symbol_deleted_p) (ent->offset + 8, cookie)) { if (info->shared - && (((ent->fde_encoding & 0xf0) == DW_EH_PE_absptr + && (((ent->fde_encoding & 0x70) == DW_EH_PE_absptr && ent->make_relative == 0) - || (ent->fde_encoding & 0xf0) == DW_EH_PE_aligned)) + || (ent->fde_encoding & 0x70) == DW_EH_PE_aligned)) { /* If a shared library uses absolute pointers which we cannot turn into PC relative, @@ -1125,8 +1167,8 @@ } ent->removed = 0; hdr_info->fde_count++; - ent->u.fde.cie_inf = find_merged_cie (abfd, sec, hdr_info, cookie, - ent->u.fde.cie_inf); + ent->u.fde.cie_inf = find_merged_cie (abfd, info, sec, hdr_info, + cookie, ent->u.fde.cie_inf); } } @@ -1236,13 +1278,11 @@ bfd_vma _bfd_elf_eh_frame_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED, - struct bfd_link_info *info, + struct bfd_link_info *info ATTRIBUTE_UNUSED, asection *sec, bfd_vma offset) { struct eh_frame_sec_info *sec_info; - struct elf_link_hash_table *htab; - struct eh_frame_hdr_info *hdr_info; unsigned int lo, hi, mid; if (sec->sec_info_type != ELF_INFO_TYPE_EH_FRAME) @@ -1252,9 +1292,6 @@ if (offset >= sec->rawsize) return offset - sec->rawsize + sec->size; - htab = elf_hash_table (info); - hdr_info = &htab->eh_info; - lo = 0; hi = sec_info->count; mid = 0; @@ -1276,6 +1313,14 @@ if (sec_info->entry[mid].removed) return (bfd_vma) -1; + /* If converting personality pointers to DW_EH_PE_pcrel, there will be + no need for run-time relocation against the personality field. */ + if (sec_info->entry[mid].cie + && sec_info->entry[mid].u.cie.make_per_encoding_relative + && offset == (sec_info->entry[mid].offset + 8 + + sec_info->entry[mid].u.cie.personality_offset)) + return (bfd_vma) -2; + /* 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].cie @@ -1435,7 +1480,7 @@ { BFD_ASSERT (action & 1); *aug++ = 'R'; - *buf++ = DW_EH_PE_pcrel; + *buf++ = make_pc_relative (DW_EH_PE_absptr, ptr_size); action &= ~1; } @@ -1446,18 +1491,20 @@ if (action & 2) { BFD_ASSERT (*buf == ent->lsda_encoding); - *buf |= DW_EH_PE_pcrel; + *buf = make_pc_relative (*buf, ptr_size); action &= ~2; } buf++; break; case 'P': + if (ent->u.cie.make_per_encoding_relative) + *buf = make_pc_relative (*buf, ptr_size); per_encoding = *buf++; per_width = get_DW_EH_PE_width (per_encoding, ptr_size); BFD_ASSERT (per_width != 0); BFD_ASSERT (((per_encoding & 0x70) == DW_EH_PE_pcrel) == ent->u.cie.per_encoding_relative); - if ((per_encoding & 0xf0) == DW_EH_PE_aligned) + if ((per_encoding & 0x70) == DW_EH_PE_aligned) buf = (contents + ((buf - contents + per_width - 1) & ~((bfd_size_type) per_width - 1))); @@ -1467,8 +1514,15 @@ val = read_value (abfd, buf, per_width, get_DW_EH_PE_signed (per_encoding)); - val += (bfd_vma) ent->offset - ent->new_offset; - val -= extra_string + extra_data; + if (ent->u.cie.make_per_encoding_relative) + val -= (sec->output_section->vma + + sec->output_offset + + (buf - contents)); + else + { + val += (bfd_vma) ent->offset - ent->new_offset; + val -= extra_string + extra_data; + } write_value (abfd, buf, val, per_width); action &= ~4; } @@ -1478,7 +1532,7 @@ if (action & 1) { BFD_ASSERT (*buf == ent->fde_encoding); - *buf |= DW_EH_PE_pcrel; + *buf = make_pc_relative (*buf, ptr_size); action &= ~1; } buf++; @@ -1511,18 +1565,38 @@ address = value; if (value) { - switch (ent->fde_encoding & 0xf0) + switch (ent->fde_encoding & 0x70) { - 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; + switch (abfd->arch_info->arch) + { + case bfd_arch_ia64: + BFD_ASSERT (elf_gp (abfd) != 0); + address += elf_gp (abfd); + break; + default: + (*info->callbacks->einfo) + (_("%P: DW_EH_PE_datarel unspecified" + " for this architecture.\n")); + /* Fall thru */ + case bfd_arch_frv: + case bfd_arch_i386: + BFD_ASSERT (htab->hgot != NULL + && ((htab->hgot->root.type + == bfd_link_hash_defined) + || (htab->hgot->root.type + == bfd_link_hash_defweak))); + address + += (htab->hgot->root.u.def.value + + htab->hgot->root.u.def.section->output_offset + + (htab->hgot->root.u.def.section->output_section + ->vma)); + break; + } } break; case DW_EH_PE_pcrel: @@ -1543,6 +1617,11 @@ if (hdr_info) { + /* The address calculation may overflow, giving us a + value greater than 4G on a 32-bit target when + dwarf_vma is 64-bit. */ + if (sizeof (address) > 4 && ptr_size == 4) + address &= 0xffffffff; hdr_info->array[hdr_info->array_count].initial_loc = address; hdr_info->array[hdr_info->array_count++].fde = (sec->output_section->vma @@ -1550,7 +1629,7 @@ + ent->new_offset); } - if ((ent->lsda_encoding & 0xf0) == DW_EH_PE_pcrel + if ((ent->lsda_encoding & 0x70) == DW_EH_PE_pcrel || cie->u.cie.make_lsda_relative) { buf += ent->lsda_offset; @@ -1559,7 +1638,7 @@ get_DW_EH_PE_signed (ent->lsda_encoding)); if (value) { - if ((ent->lsda_encoding & 0xf0) == DW_EH_PE_pcrel) + if ((ent->lsda_encoding & 0x70) == DW_EH_PE_pcrel) value += (bfd_vma) ent->offset - ent->new_offset; else if (cie->u.cie.make_lsda_relative) value -= (sec->output_section->vma @@ -1580,7 +1659,7 @@ if (ent->set_loc) { /* Adjust DW_CFA_set_loc. */ - unsigned int cnt, width; + unsigned int cnt; bfd_vma new_offset; width = get_DW_EH_PE_width (ent->fde_encoding, ptr_size); @@ -1590,7 +1669,6 @@ for (cnt = 1; cnt <= ent->set_loc[0]; cnt++) { - bfd_vma value; buf = start + ent->set_loc[cnt]; value = read_value (abfd, buf, width, @@ -1598,7 +1676,7 @@ if (!value) continue; - if ((ent->fde_encoding & 0xf0) == DW_EH_PE_pcrel) + if ((ent->fde_encoding & 0x70) == DW_EH_PE_pcrel) value += (bfd_vma) ent->offset + 8 - new_offset; if (ent->make_relative) value -= (sec->output_section->vma diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf-hppa.h crash-6.1.6/=unpacked-tar1=/bfd/elf-hppa.h --- crash-5.1.6/=unpacked-tar1=/bfd/elf-hppa.h 2009-03-01 17:08:54.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf-hppa.h 2010-08-25 07:02:40.000000000 +0000 @@ -1,5 +1,6 @@ /* Common code for PA ELF implementations. - Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, + 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -678,7 +679,7 @@ /* When in 64bit mode, a 32bit relocation is supposed to be a section relative relocation. Dwarf2 (for example) uses 32bit section relative relocations. */ - if (bfd_get_arch_info (abfd)->bits_per_address != 32) + if (bfd_arch_bits_per_address (abfd) != 32) final_type = R_PARISC_SECREL32; break; case e_psel: diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf-ifunc.c crash-6.1.6/=unpacked-tar1=/bfd/elf-ifunc.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf-ifunc.c 2009-08-03 15:50:51.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf-ifunc.c 2011-01-07 03:34:23.000000000 +0000 @@ -187,6 +187,29 @@ htab = elf_hash_table (info); + /* Support garbage collection against STT_GNU_IFUNC symbols. */ + if (h->plt.refcount <= 0 && h->got.refcount <= 0) + { + /* When building shared library, we need to handle the case + where it is marked with regular reference, but not non-GOT + reference. It may happen if we didn't see STT_GNU_IFUNC + symbol at the time when checking relocations. */ + if (info->shared + && !h->non_got_ref + && h->ref_regular) + for (p = *head; p != NULL; p = p->next) + if (p->count) + { + h->non_got_ref = 1; + goto keep; + } + + h->got = htab->init_got_offset; + h->plt = htab->init_plt_offset; + *head = NULL; + return TRUE; + } + /* Return and discard space for dynamic relocations against it if it is never referenced in a non-shared object. */ if (!h->ref_regular) @@ -200,6 +223,7 @@ return TRUE; } +keep: bed = get_elf_backend_data (info->output_bfd); if (bed->rela_plts_and_copies_p) sizeof_reloc = bed->s->sizeof_rela; @@ -249,10 +273,20 @@ *head = NULL; /* Finally, allocate space. */ - for (p = *head; p != NULL; p = p->next) - htab->irelifunc->size += p->count * sizeof_reloc; + p = *head; + if (p != NULL) + { + bfd_size_type count = 0; + do + { + count += p->count; + p = p->next; + } + while (p != NULL); + htab->irelifunc->size += count * sizeof_reloc; + } - /* For STT_GNU_IFUNC symbol, .got.plt has the real function addres + /* For STT_GNU_IFUNC symbol, .got.plt has the real function address and .got has the PLT entry adddress. We will load the GOT entry with the PLT entry in finish_dynamic_symbol if it is used. For branch, it uses .got.plt. For symbol value, diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf-m10200.c crash-6.1.6/=unpacked-tar1=/bfd/elf-m10200.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf-m10200.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf-m10200.c 2010-10-25 15:54:13.000000000 +0000 @@ -1,5 +1,6 @@ /* Matsushita 10200 specific support for 32-bit ELF - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + 2007, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -401,15 +402,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -1193,7 +1187,6 @@ unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel, *irelend; - Elf_Internal_Rela *irelalign; bfd_vma toaddr; Elf_Internal_Sym *isym; Elf_Internal_Sym *isymend; @@ -1205,10 +1198,6 @@ contents = elf_section_data (sec)->this_hdr.contents; - /* The deletion must stop at the next ALIGN reloc for an aligment - power larger than the number of bytes we are deleting. */ - - irelalign = NULL; toaddr = sec->size; irel = elf_section_data (sec)->relocs; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf-m10300.c crash-6.1.6/=unpacked-tar1=/bfd/elf-m10300.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf-m10300.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf-m10300.c 2010-10-25 15:54:13.000000000 +0000 @@ -1,6 +1,6 @@ /* Matsushita 10300 specific support for 32-bit ELF Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -98,7 +98,8 @@ /* Get the MN10300 ELF linker hash table from a link_info structure. */ #define elf32_mn10300_hash_table(p) \ - ((struct elf32_mn10300_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == MN10300_ELF_DATA ? ((struct elf32_mn10300_link_hash_table *) ((p)->hash)) : NULL) #define elf32_mn10300_link_hash_traverse(table, func, info) \ (elf_link_hash_traverse \ @@ -986,14 +987,11 @@ unsigned long r_type = howto->type; bfd_byte * hit_data = contents + offset; bfd * dynobj; - bfd_vma * local_got_offsets; asection * sgot; asection * splt; asection * sreloc; dynobj = elf_hash_table (info)->dynobj; - local_got_offsets = elf_local_got_offsets (input_bfd); - sgot = NULL; splt = NULL; sreloc = NULL; @@ -1274,8 +1272,6 @@ && ELF_ST_VISIBILITY (h->other) != STV_HIDDEN && h->plt.offset != (bfd_vma) -1) { - asection * splt; - splt = bfd_get_section_by_name (dynobj, ".plt"); value = (splt->output_section->vma @@ -1297,8 +1293,6 @@ && ELF_ST_VISIBILITY (h->other) != STV_HIDDEN && h->plt.offset != (bfd_vma) -1) { - asection * splt; - splt = bfd_get_section_by_name (dynobj, ".plt"); value = (splt->output_section->vma @@ -1321,8 +1315,6 @@ case R_MN10300_GOT24: case R_MN10300_GOT16: { - asection * sgot; - sgot = bfd_get_section_by_name (dynobj, ".got"); if (h != NULL) @@ -1518,15 +1510,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -2082,6 +2067,8 @@ /* We need a pointer to the mn10300 specific hash table. */ hash_table = elf32_mn10300_hash_table (link_info); + if (hash_table == NULL) + return FALSE; /* Initialize fields in each hash table entry the first time through. */ if ((hash_table->flags & MN10300_HASH_ENTRIES_INITIALIZED) == 0) @@ -2112,7 +2099,6 @@ section = section->next) { struct elf32_mn10300_link_hash_entry *hash; - Elf_Internal_Sym *sym; asection *sym_sec = NULL; const char *sym_name; char *new_name; @@ -2166,7 +2152,6 @@ /* We need the name and hash table entry of the target symbol! */ hash = NULL; - sym = NULL; sym_sec = NULL; if (r_index < symtab_hdr->sh_info) @@ -3983,7 +3968,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, elf32_mn10300_link_hash_newfunc, - sizeof (struct elf32_mn10300_link_hash_entry))) + sizeof (struct elf32_mn10300_link_hash_entry), + MN10300_ELF_DATA)) { free (ret); return NULL; @@ -4000,7 +3986,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->static_hash_table->root, abfd, elf32_mn10300_link_hash_newfunc, - sizeof (struct elf32_mn10300_link_hash_entry))) + sizeof (struct elf32_mn10300_link_hash_entry), + MN10300_ELF_DATA)) { free (ret->static_hash_table); free (ret); @@ -4899,6 +4886,7 @@ #define TARGET_LITTLE_SYM bfd_elf32_mn10300_vec #define TARGET_LITTLE_NAME "elf32-mn10300" #define ELF_ARCH bfd_arch_mn10300 +#define ELF_TARGET_ID MN10300_ELF_DATA #define ELF_MACHINE_CODE EM_MN10300 #define ELF_MACHINE_ALT1 EM_CYGNUS_MN10300 #define ELF_MAXPAGESIZE 0x1000 diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf.c crash-6.1.6/=unpacked-tar1=/bfd/elf.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf.c 2011-03-14 15:54:58.000000000 +0000 @@ -1,7 +1,7 @@ /* ELF executable support for BFD. Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -45,6 +45,10 @@ #include "libiberty.h" #include "safe-ctype.h" +#ifdef CORE_HEADER +#include CORE_HEADER +#endif + static int elf_sort_sections (const void *, const void *); static bfd_boolean assign_file_positions_except_relocs (bfd *, struct bfd_link_info *); static bfd_boolean prep_headers (bfd *); @@ -232,7 +236,7 @@ bfd_boolean bfd_elf_allocate_object (bfd *abfd, size_t object_size, - enum elf_object_id object_id) + enum elf_target_id object_id) { BFD_ASSERT (object_size >= sizeof (struct elf_obj_tdata)); abfd->tdata.any = bfd_zalloc (abfd, object_size); @@ -246,17 +250,18 @@ bfd_boolean -bfd_elf_make_generic_object (bfd *abfd) +bfd_elf_make_object (bfd *abfd) { + const struct elf_backend_data *bed = get_elf_backend_data (abfd); return bfd_elf_allocate_object (abfd, sizeof (struct elf_obj_tdata), - GENERIC_ELF_TDATA); + bed->target_id); } bfd_boolean bfd_elf_mkcorefile (bfd *abfd) { /* I think this can be done just like an object file. */ - return bfd_elf_make_generic_object (abfd); + return abfd->xvec->_bfd_set_format[(int) bfd_object] (abfd); } static char * @@ -734,18 +739,18 @@ } else { - asection *link = NULL; + asection *linksec = NULL; if (elfsec < elf_numsections (abfd)) { this_hdr = elf_elfsections (abfd)[elfsec]; - link = this_hdr->bfd_section; + linksec = this_hdr->bfd_section; } /* PR 1991, 2008: Some strip/objcopy may leave an incorrect value in sh_link. We don't want to proceed. */ - if (link == NULL) + if (linksec == NULL) { (*_bfd_error_handler) (_("%B: sh_link [%d] in section `%A' is incorrect"), @@ -753,7 +758,7 @@ result = FALSE; } - elf_linked_to_section (s) = link; + elf_linked_to_section (s) = linksec; } } } @@ -817,11 +822,7 @@ const struct elf_backend_data *bed; if (hdr->bfd_section != NULL) - { - BFD_ASSERT (strcmp (name, - bfd_get_section_name (abfd, hdr->bfd_section)) == 0); - return TRUE; - } + return TRUE; newsect = bfd_make_section_anyway (abfd, name); if (newsect == NULL) @@ -872,6 +873,8 @@ return FALSE; if ((hdr->sh_flags & SHF_TLS) != 0) flags |= SEC_THREAD_LOCAL; + if ((hdr->sh_flags & SHF_EXCLUDE) != 0) + flags |= SEC_EXCLUDE; if ((flags & SEC_ALLOC) == 0) { @@ -974,7 +977,7 @@ for (i = 0; i < elf_elfheader (abfd)->e_phnum; i++, phdr++) { if (phdr->p_type == PT_LOAD - && ELF_IS_SECTION_IN_SEGMENT (hdr, phdr)) + && ELF_SECTION_IN_SEGMENT (hdr, phdr)) { if ((flags & SEC_LOAD) == 0) newsect->lma = (phdr->p_paddr @@ -1002,6 +1005,77 @@ } } + /* Compress/decompress DWARF debug sections with names: .debug_* and + .zdebug_*, after the section flags is set. */ + if ((flags & SEC_DEBUGGING) + && ((name[1] == 'd' && name[6] == '_') + || (name[1] == 'z' && name[7] == '_'))) + { + enum { nothing, compress, decompress } action = nothing; + char *new_name; + + if (bfd_is_section_compressed (abfd, newsect)) + { + /* Compressed section. Check if we should decompress. */ + if ((abfd->flags & BFD_DECOMPRESS)) + action = decompress; + } + else + { + /* Normal section. Check if we should compress. */ + if ((abfd->flags & BFD_COMPRESS)) + action = compress; + } + + new_name = NULL; + switch (action) + { + case nothing: + break; + case compress: + if (!bfd_init_section_compress_status (abfd, newsect)) + { + (*_bfd_error_handler) + (_("%B: unable to initialize commpress status for section %s"), + abfd, name); + return FALSE; + } + if (name[1] != 'z') + { + unsigned int len = strlen (name); + + new_name = bfd_alloc (abfd, len + 2); + if (new_name == NULL) + return FALSE; + new_name[0] = '.'; + new_name[1] = 'z'; + memcpy (new_name + 2, name + 1, len); + } + break; + case decompress: + if (!bfd_init_section_decompress_status (abfd, newsect)) + { + (*_bfd_error_handler) + (_("%B: unable to initialize decommpress status for section %s"), + abfd, name); + return FALSE; + } + if (name[1] == 'z') + { + unsigned int len = strlen (name); + + new_name = bfd_alloc (abfd, len); + if (new_name == NULL) + return FALSE; + new_name[0] = '.'; + memcpy (new_name + 1, name + 2, len - 1); + } + break; + } + if (new_name != NULL) + bfd_rename_section (abfd, newsect, new_name); + } + return TRUE; } @@ -1062,7 +1136,6 @@ /* Copy object attributes. */ _bfd_elf_copy_obj_attributes (ibfd, obfd); - return TRUE; } @@ -1518,10 +1591,11 @@ return FALSE; if (hdr->sh_link > elf_numsections (abfd)) { - /* PR 10478: Accept sparc binaries with a sh_link + /* PR 10478: Accept Solaris binaries with a sh_link field set to SHN_BEFORE or SHN_AFTER. */ switch (bfd_get_arch (abfd)) { + case bfd_arch_i386: case bfd_arch_sparc: if (hdr->sh_link == (SHN_LORESERVE & 0xffff) /* SHN_BEFORE */ || hdr->sh_link == ((SHN_LORESERVE + 1) & 0xffff) /* SHN_AFTER */) @@ -1703,8 +1777,10 @@ /* *These* do a lot of work -- but build no sections! */ { asection *target_sect; - Elf_Internal_Shdr *hdr2; + Elf_Internal_Shdr *hdr2, **p_hdr; unsigned int num_sec = elf_numsections (abfd); + struct bfd_elf_section_data *esdt; + bfd_size_type amt; if (hdr->sh_entsize != (bfd_size_type) (hdr->sh_type == SHT_REL @@ -1783,20 +1859,19 @@ if (target_sect == NULL) return FALSE; - if ((target_sect->flags & SEC_RELOC) == 0 - || target_sect->reloc_count == 0) - hdr2 = &elf_section_data (target_sect)->rel_hdr; + esdt = elf_section_data (target_sect); + if (hdr->sh_type == SHT_RELA) + p_hdr = &esdt->rela.hdr; else - { - bfd_size_type amt; - BFD_ASSERT (elf_section_data (target_sect)->rel_hdr2 == NULL); - amt = sizeof (*hdr2); - hdr2 = (Elf_Internal_Shdr *) bfd_alloc (abfd, amt); - if (hdr2 == NULL) - return FALSE; - elf_section_data (target_sect)->rel_hdr2 = hdr2; - } + p_hdr = &esdt->rel.hdr; + + BFD_ASSERT (*p_hdr == NULL); + amt = sizeof (*hdr2); + hdr2 = (Elf_Internal_Shdr *) bfd_alloc (abfd, amt); + if (hdr2 == NULL) + return FALSE; *hdr2 = *hdr; + *p_hdr = hdr2; elf_elfsections (abfd)[shindex] = hdr2; target_sect->reloc_count += NUM_SHDR_ENTRIES (hdr); target_sect->flags |= SEC_RELOC; @@ -1805,7 +1880,10 @@ /* In the section to which the relocations apply, mark whether its relocations are of the REL or RELA variety. */ if (hdr->sh_size != 0) - target_sect->use_rela_p = hdr->sh_type == SHT_RELA; + { + if (hdr->sh_type == SHT_RELA) + target_sect->use_rela_p = 1; + } abfd->flags |= HAS_RELOC; return TRUE; } @@ -1960,11 +2038,11 @@ section. */ asection * -bfd_section_from_elf_index (bfd *abfd, unsigned int index) +bfd_section_from_elf_index (bfd *abfd, unsigned int sec_index) { - if (index >= elf_numsections (abfd)) + if (sec_index >= elf_numsections (abfd)) return NULL; - return elf_elfsections (abfd)[index]->bfd_section; + return elf_elfsections (abfd)[sec_index]->bfd_section; } static const struct bfd_elf_special_section special_sections_b[] = @@ -2004,6 +2082,7 @@ static const struct bfd_elf_special_section special_sections_g[] = { { STRING_COMMA_LEN (".gnu.linkonce.b"), -2, SHT_NOBITS, SHF_ALLOC + SHF_WRITE }, + { STRING_COMMA_LEN (".gnu.lto_"), -1, SHT_PROGBITS, SHF_EXCLUDE }, { STRING_COMMA_LEN (".got"), 0, SHT_PROGBITS, SHF_ALLOC + SHF_WRITE }, { STRING_COMMA_LEN (".gnu.version"), 0, SHT_GNU_versym, 0 }, { STRING_COMMA_LEN (".gnu.version_d"), 0, SHT_GNU_verdef, 0 }, @@ -2225,12 +2304,19 @@ anyway. We will set ELF section type and flags for all linker created sections. If user specifies BFD section flags, we will set ELF section type and flags based on BFD section flags in - elf_fake_sections. */ - if ((!sec->flags && abfd->direction != read_direction) + elf_fake_sections. Special handling for .init_array/.fini_array + output sections since they may contain .ctors/.dtors input + sections. We don't want _bfd_elf_init_private_section_data to + copy ELF section type from .ctors/.dtors input sections. */ + if (abfd->direction != read_direction || (sec->flags & SEC_LINKER_CREATED) != 0) { ssect = (*bed->get_sec_type_attr) (abfd, sec); - if (ssect != NULL) + if (ssect != NULL + && (!sec->flags + || (sec->flags & SEC_LINKER_CREATED) != 0 + || ssect->type == SHT_INIT_ARRAY + || ssect->type == SHT_FINI_ARRAY)) { elf_section_type (sec) = ssect->type; elf_section_flags (sec) = ssect->attr; @@ -2265,7 +2351,7 @@ bfd_boolean _bfd_elf_make_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, - int index, + int hdr_index, const char *type_name) { asection *newsect; @@ -2280,7 +2366,7 @@ if (hdr->p_filesz > 0) { - sprintf (namebuf, "%s%d%s", type_name, index, split ? "a" : ""); + sprintf (namebuf, "%s%d%s", type_name, hdr_index, split ? "a" : ""); len = strlen (namebuf) + 1; name = (char *) bfd_alloc (abfd, len); if (!name) @@ -2316,7 +2402,7 @@ { bfd_vma align; - sprintf (namebuf, "%s%d%s", type_name, index, split ? "b" : ""); + sprintf (namebuf, "%s%d%s", type_name, hdr_index, split ? "b" : ""); len = strlen (namebuf) + 1; name = (char *) bfd_alloc (abfd, len); if (!name) @@ -2355,68 +2441,91 @@ } bfd_boolean -bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index) +bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int hdr_index) { const struct elf_backend_data *bed; switch (hdr->p_type) { case PT_NULL: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "null"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "null"); case PT_LOAD: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "load"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "load"); case PT_DYNAMIC: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "dynamic"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "dynamic"); case PT_INTERP: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "interp"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "interp"); case PT_NOTE: - if (! _bfd_elf_make_section_from_phdr (abfd, hdr, index, "note")) + if (! _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "note")) return FALSE; if (! elf_read_notes (abfd, hdr->p_offset, hdr->p_filesz)) return FALSE; return TRUE; case PT_SHLIB: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "shlib"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "shlib"); case PT_PHDR: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "phdr"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "phdr"); case PT_GNU_EH_FRAME: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "eh_frame_hdr"); case PT_GNU_STACK: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "stack"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "stack"); case PT_GNU_RELRO: - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "relro"); + return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro"); default: /* Check for any processor-specific program segment types. */ bed = get_elf_backend_data (abfd); - return bed->elf_backend_section_from_phdr (abfd, hdr, index, "proc"); + return bed->elf_backend_section_from_phdr (abfd, hdr, hdr_index, "proc"); + } +} + +/* Return the REL_HDR for SEC, assuming there is only a single one, either + REL or RELA. */ + +Elf_Internal_Shdr * +_bfd_elf_single_rel_hdr (asection *sec) +{ + if (elf_section_data (sec)->rel.hdr) + { + BFD_ASSERT (elf_section_data (sec)->rela.hdr == NULL); + return elf_section_data (sec)->rel.hdr; } + else + return elf_section_data (sec)->rela.hdr; } -/* Initialize REL_HDR, the section-header for new section, containing - relocations against ASECT. If USE_RELA_P is TRUE, we use RELA - relocations; otherwise, we use REL relocations. */ +/* Allocate and initialize a section-header for a new reloc section, + containing relocations against ASECT. It is stored in RELDATA. If + USE_RELA_P is TRUE, we use RELA relocations; otherwise, we use REL + relocations. */ bfd_boolean _bfd_elf_init_reloc_shdr (bfd *abfd, - Elf_Internal_Shdr *rel_hdr, + struct bfd_elf_section_reloc_data *reldata, asection *asect, bfd_boolean use_rela_p) { + Elf_Internal_Shdr *rel_hdr; char *name; const struct elf_backend_data *bed = get_elf_backend_data (abfd); - bfd_size_type amt = sizeof ".rela" + strlen (asect->name); + bfd_size_type amt; + + amt = sizeof (Elf_Internal_Shdr); + BFD_ASSERT (reldata->hdr == NULL); + rel_hdr = bfd_zalloc (abfd, amt); + reldata->hdr = rel_hdr; + amt = sizeof ".rela" + strlen (asect->name); name = (char *) bfd_alloc (abfd, amt); if (name == NULL) return FALSE; @@ -2445,36 +2554,42 @@ bfd_elf_get_default_section_type (flagword flags) { if ((flags & SEC_ALLOC) != 0 - && ((flags & (SEC_LOAD | SEC_HAS_CONTENTS)) == 0 - || (flags & SEC_NEVER_LOAD) != 0)) + && (flags & (SEC_LOAD | SEC_HAS_CONTENTS)) == 0) return SHT_NOBITS; return SHT_PROGBITS; } +struct fake_section_arg +{ + struct bfd_link_info *link_info; + bfd_boolean failed; +}; + /* Set up an ELF internal section header for a section. */ static void -elf_fake_sections (bfd *abfd, asection *asect, void *failedptrarg) +elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) { + struct fake_section_arg *arg = (struct fake_section_arg *)fsarg; const struct elf_backend_data *bed = get_elf_backend_data (abfd); - bfd_boolean *failedptr = (bfd_boolean *) failedptrarg; + struct bfd_elf_section_data *esd = elf_section_data (asect); Elf_Internal_Shdr *this_hdr; unsigned int sh_type; - if (*failedptr) + if (arg->failed) { /* We already failed; just get out of the bfd_map_over_sections loop. */ return; } - this_hdr = &elf_section_data (asect)->this_hdr; + this_hdr = &esd->this_hdr; this_hdr->sh_name = (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd), asect->name, FALSE); if (this_hdr->sh_name == (unsigned int) -1) { - *failedptr = TRUE; + arg->failed = TRUE; return; } @@ -2623,12 +2738,48 @@ } } } + if ((asect->flags & (SEC_GROUP | SEC_EXCLUDE)) == SEC_EXCLUDE) + this_hdr->sh_flags |= SHF_EXCLUDE; + + /* If the section has relocs, set up a section header for the + SHT_REL[A] section. If two relocation sections are required for + this section, it is up to the processor-specific back-end to + create the other. */ + if ((asect->flags & SEC_RELOC) != 0) + { + /* When doing a relocatable link, create both REL and RELA sections if + needed. */ + if (arg->link_info + /* Do the normal setup if we wouldn't create any sections here. */ + && esd->rel.count + esd->rela.count > 0 + && (arg->link_info->relocatable || arg->link_info->emitrelocations)) + { + if (esd->rel.count && esd->rel.hdr == NULL + && !_bfd_elf_init_reloc_shdr (abfd, &esd->rel, asect, FALSE)) + { + arg->failed = TRUE; + return; + } + if (esd->rela.count && esd->rela.hdr == NULL + && !_bfd_elf_init_reloc_shdr (abfd, &esd->rela, asect, TRUE)) + { + arg->failed = TRUE; + return; + } + } + else if (!_bfd_elf_init_reloc_shdr (abfd, + (asect->use_rela_p + ? &esd->rela : &esd->rel), + asect, + asect->use_rela_p)) + arg->failed = TRUE; + } /* Check for processor-specific section types. */ sh_type = this_hdr->sh_type; if (bed->elf_backend_fake_sections && !(*bed->elf_backend_fake_sections) (abfd, this_hdr, asect)) - *failedptr = TRUE; + arg->failed = TRUE; if (sh_type == SHT_NOBITS && asect->size != 0) { @@ -2636,17 +2787,6 @@ called for objcopy --only-keep-debug. */ this_hdr->sh_type = sh_type; } - - /* If the section has relocs, set up a section header for the - SHT_REL[A] section. If two relocation sections are required for - this section, it is up to the processor-specific back-end to - create the other. */ - if ((asect->flags & SEC_RELOC) != 0 - && !_bfd_elf_init_reloc_shdr (abfd, - &elf_section_data (asect)->rel_hdr, - asect, - asect->use_rela_p)) - *failedptr = TRUE; } /* Fill in the contents of a SHT_GROUP section. Called from @@ -2742,17 +2882,16 @@ while (elt != NULL) { asection *s; - unsigned int idx; s = elt; - if (! elf_discarded_section (s)) + if (!gas) + s = s->output_section; + if (s != NULL + && !bfd_is_abs_section (s)) { + unsigned int idx = elf_section_data (s)->this_idx; + loc -= 4; - if (!gas) - s = s->output_section; - idx = 0; - if (s != NULL) - idx = elf_section_data (s)->this_idx; H_PUT_32 (abfd, idx, loc); } elt = elf_next_in_group (elt); @@ -2813,21 +2952,21 @@ if (d->this_hdr.sh_type != SHT_GROUP) 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 (d->rel.hdr) { - d->rel_idx = section_number++; - _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->rel_hdr.sh_name); + d->rel.idx = section_number++; + _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->rel.hdr->sh_name); } + else + d->rel.idx = 0; - if (d->rel_hdr2) + if (d->rela.hdr) { - d->rel_idx2 = section_number++; - _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->rel_hdr2->sh_name); + d->rela.idx = section_number++; + _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->rela.hdr->sh_name); } else - d->rel_idx2 = 0; + d->rela.idx = 0; } t->shstrtab_section = section_number++; @@ -2893,30 +3032,31 @@ for (sec = abfd->sections; sec; sec = sec->next) { - struct bfd_elf_section_data *d = elf_section_data (sec); asection *s; const char *name; + d = elf_section_data (sec); + i_shdrp[d->this_idx] = &d->this_hdr; - if (d->rel_idx != 0) - i_shdrp[d->rel_idx] = &d->rel_hdr; - if (d->rel_idx2 != 0) - i_shdrp[d->rel_idx2] = d->rel_hdr2; + if (d->rel.idx != 0) + i_shdrp[d->rel.idx] = d->rel.hdr; + if (d->rela.idx != 0) + i_shdrp[d->rela.idx] = d->rela.hdr; /* Fill in the sh_link and sh_info fields while we're at it. */ /* sh_link of a reloc section is the section index of the symbol table. sh_info is the section index of the section to which the relocation entries apply. */ - if (d->rel_idx != 0) + if (d->rel.idx != 0) { - d->rel_hdr.sh_link = t->symtab_section; - d->rel_hdr.sh_info = d->this_idx; + d->rel.hdr->sh_link = t->symtab_section; + d->rel.hdr->sh_info = d->this_idx; } - if (d->rel_idx2 != 0) + if (d->rela.idx != 0) { - d->rel_hdr2->sh_link = t->symtab_section; - d->rel_hdr2->sh_info = d->this_idx; + d->rela.hdr->sh_link = t->symtab_section; + d->rela.hdr->sh_info = d->this_idx; } /* We need to set up sh_link for SHF_LINK_ORDER. */ @@ -3270,6 +3410,7 @@ struct bfd_link_info *link_info) { const struct elf_backend_data *bed = get_elf_backend_data (abfd); + struct fake_section_arg fsargs; bfd_boolean failed; struct bfd_strtab_hash *strtab = NULL; Elf_Internal_Shdr *shstrtab_hdr; @@ -3289,9 +3430,10 @@ if (bed->elf_backend_post_process_headers) (*bed->elf_backend_post_process_headers) (abfd, link_info); - failed = FALSE; - bfd_map_over_sections (abfd, elf_fake_sections, &failed); - if (failed) + fsargs.failed = FALSE; + fsargs.link_info = link_info; + bfd_map_over_sections (abfd, elf_fake_sections, &fsargs); + if (fsargs.failed) return FALSE; if (!assign_section_numbers (abfd, link_info)) @@ -3311,6 +3453,7 @@ return FALSE; } + failed = FALSE; if (link_info == NULL) { bfd_map_over_sections (abfd, bfd_elf_set_group_contents, &failed); @@ -3616,6 +3759,7 @@ asection *first_tls = NULL; asection *dynsec, *eh_frame_hdr; bfd_size_type amt; + bfd_vma addr_mask, wrap_to = 0; /* Select the allocated sections, and sort them. */ @@ -3624,6 +3768,12 @@ if (sections == NULL) goto error_return; + /* Calculate top address, avoiding undefined behaviour of shift + left operator when shift count is equal to size of type + being shifted. */ + addr_mask = ((bfd_vma) 1 << (bfd_arch_bits_per_address (abfd) - 1)) - 1; + addr_mask = (addr_mask << 1) + 1; + i = 0; for (s = abfd->sections; s != NULL; s = s->next) { @@ -3631,6 +3781,9 @@ { sections[i] = s; ++i; + /* A wrapping section potentially clashes with header. */ + if (((s->lma + s->size) & addr_mask) < (s->lma & addr_mask)) + wrap_to = (s->lma + s->size) & addr_mask; } } BFD_ASSERT (i <= bfd_count_sections (abfd)); @@ -3700,8 +3853,10 @@ if (phdr_size == (bfd_size_type) -1) phdr_size = get_program_header_size (abfd, info); if ((abfd->flags & D_PAGED) == 0 - || sections[0]->lma < phdr_size - || sections[0]->lma % maxpagesize < phdr_size % maxpagesize) + || (sections[0]->lma & addr_mask) < phdr_size + || ((sections[0]->lma & addr_mask) % maxpagesize + < phdr_size % maxpagesize) + || (sections[0]->lma & addr_mask & -maxpagesize) < wrap_to) phdr_in_segment = FALSE; } @@ -3728,6 +3883,13 @@ segment. */ new_segment = TRUE; } + else if (hdr->lma < last_hdr->lma + last_size + || last_hdr->lma + last_size < last_hdr->lma) + { + /* If this section has a load address that makes it overlap + the previous section, then we need a new segment. */ + new_segment = TRUE; + } /* In the next test we have to be careful when last_hdr->lma is close to the end of the address space. If the aligned address wraps around to the start of the address space, then there are no more @@ -3759,9 +3921,8 @@ } else if (! writable && (hdr->flags & SEC_READONLY) == 0 - && (((last_hdr->lma + last_size - 1) - & ~(maxpagesize - 1)) - != (hdr->lma & ~(maxpagesize - 1)))) + && (((last_hdr->lma + last_size - 1) & -maxpagesize) + != (hdr->lma & -maxpagesize))) { /* We don't want to put a writable section in a read only segment, unless they are on the same page in memory @@ -3859,7 +4020,8 @@ && CONST_STRNEQ (s->name, ".note")) { asection *s2; - unsigned count = 1; + + count = 1; amt = sizeof (struct elf_segment_map); if (s->alignment_power == 2) for (s2 = s; s2->next != NULL; s2 = s2->next) @@ -3867,8 +4029,8 @@ if (s2->next->alignment_power == 2 && (s2->next->flags & SEC_LOAD) != 0 && CONST_STRNEQ (s2->next->name, ".note") - && align_power (s2->vma + s2->size, 2) - == s2->next->vma) + && align_power (s2->lma + s2->size, 2) + == s2->next->lma) count++; else break; @@ -3902,8 +4064,6 @@ /* If there are any SHF_TLS output sections, add PT_TLS segment. */ if (tls_count > 0) { - int i; - amt = sizeof (struct elf_segment_map); amt += (tls_count - 1) * sizeof (asection *); m = (struct elf_segment_map *) bfd_zalloc (abfd, amt); @@ -3915,7 +4075,7 @@ /* Mandated PF_R. */ m->p_flags = PF_R; m->p_flags_valid = 1; - for (i = 0; i < tls_count; ++i) + for (i = 0; i < (unsigned int) tls_count; ++i) { BFD_ASSERT (first_tls->flags & SEC_THREAD_LOCAL); m->sections[i] = first_tls; @@ -4120,10 +4280,28 @@ (unsigned int) m->p_type); pt = buf; } + fflush (stdout); fprintf (stderr, "%s:", pt); for (j = 0; j < m->count; j++) fprintf (stderr, " %s", m->sections [j]->name); putc ('\n',stderr); + fflush (stderr); +} + +static bfd_boolean +write_zeros (bfd *abfd, file_ptr pos, bfd_size_type len) +{ + void *buf; + bfd_boolean ret; + + if (bfd_seek (abfd, pos, SEEK_SET) != 0) + return FALSE; + buf = bfd_zmalloc (len); + if (buf == NULL) + return FALSE; + ret = bfd_bwrite (buf, len, abfd) == len; + free (buf); + return ret; } /* Assign file positions to the sections based on the mapping from @@ -4156,8 +4334,18 @@ header_pad = m->header_size; } - elf_elfheader (abfd)->e_phoff = bed->s->sizeof_ehdr; - elf_elfheader (abfd)->e_phentsize = bed->s->sizeof_phdr; + if (alloc) + { + elf_elfheader (abfd)->e_phoff = bed->s->sizeof_ehdr; + elf_elfheader (abfd)->e_phentsize = bed->s->sizeof_phdr; + } + else + { + /* PR binutils/12467. */ + elf_elfheader (abfd)->e_phoff = 0; + elf_elfheader (abfd)->e_phentsize = 0; + } + elf_elfheader (abfd)->e_phnum = alloc; if (elf_tdata (abfd)->program_header_size == (bfd_size_type) -1) @@ -4307,7 +4495,7 @@ break; } - off_adjust = vma_page_aligned_bias (m->sections[0]->vma, off, align); + off_adjust = vma_page_aligned_bias (p->p_vaddr, off, align); off += off_adjust; if (no_contents) { @@ -4434,19 +4622,34 @@ && ((this_hdr->sh_flags & SHF_TLS) == 0 || p->p_type == PT_TLS)))) { - bfd_signed_vma adjust = sec->vma - (p->p_vaddr + p->p_memsz); - - if (adjust < 0) + bfd_vma p_start = p->p_paddr; + bfd_vma p_end = p_start + p->p_memsz; + bfd_vma s_start = sec->lma; + bfd_vma adjust = s_start - p_end; + + if (adjust != 0 + && (s_start < p_end + || p_end < p_start)) { (*_bfd_error_handler) - (_("%B: section %A vma 0x%lx overlaps previous sections"), - abfd, sec, (unsigned long) sec->vma); + (_("%B: section %A lma %#lx adjusted to %#lx"), abfd, sec, + (unsigned long) s_start, (unsigned long) p_end); adjust = 0; + sec->lma = p_end; } p->p_memsz += adjust; if (this_hdr->sh_type != SHT_NOBITS) { + if (p->p_filesz + adjust < p->p_memsz) + { + /* We have a PROGBITS section following NOBITS ones. + Allocate file space for the NOBITS section(s) and + zero it. */ + adjust = p->p_memsz - p->p_filesz; + if (!write_zeros (abfd, off, adjust)) + return FALSE; + } off += adjust; p->p_filesz += adjust; } @@ -4523,24 +4726,37 @@ /* Check that all sections are in a PT_LOAD segment. Don't check funky gdb generated core files. */ if (p->p_type == PT_LOAD && bfd_get_format (abfd) != bfd_core) - for (i = 0, secpp = m->sections; i < m->count; i++, secpp++) - { - Elf_Internal_Shdr *this_hdr; - asection *sec; + { + bfd_boolean check_vma = TRUE; - sec = *secpp; - this_hdr = &(elf_section_data(sec)->this_hdr); - if (this_hdr->sh_size != 0 - && !ELF_IS_SECTION_IN_SEGMENT_FILE (this_hdr, p)) + for (i = 1; i < m->count; i++) + if (m->sections[i]->vma == m->sections[i - 1]->vma + && ELF_SECTION_SIZE (&(elf_section_data (m->sections[i]) + ->this_hdr), p) != 0 + && ELF_SECTION_SIZE (&(elf_section_data (m->sections[i - 1]) + ->this_hdr), p) != 0) { - (*_bfd_error_handler) - (_("%B: section `%A' can't be allocated in segment %d"), - abfd, sec, j); - print_segment_map (m); - bfd_set_error (bfd_error_bad_value); - return FALSE; + /* Looks like we have overlays packed into the segment. */ + check_vma = FALSE; + break; } - } + + for (i = 0; i < m->count; i++) + { + Elf_Internal_Shdr *this_hdr; + asection *sec; + + sec = m->sections[i]; + this_hdr = &(elf_section_data(sec)->this_hdr); + if (!ELF_SECTION_IN_SEGMENT_1 (this_hdr, p, check_vma, 0)) + { + (*_bfd_error_handler) + (_("%B: section `%A' can't be allocated in segment %d"), + abfd, sec, j); + print_segment_map (m); + } + } + } } elf_tdata (abfd)->next_file_pos = off; @@ -4582,13 +4798,12 @@ BFD_ASSERT (hdr->sh_offset == hdr->bfd_section->filepos); else if ((hdr->sh_flags & SHF_ALLOC) != 0) { - if (hdr->sh_size != 0) - ((*_bfd_error_handler) - (_("%B: warning: allocated section `%s' not in segment"), - abfd, - (hdr->bfd_section == NULL - ? "*unknown*" - : hdr->bfd_section->name))); + (*_bfd_error_handler) + (_("%B: warning: allocated section `%s' not in segment"), + abfd, + (hdr->bfd_section == NULL + ? "*unknown*" + : hdr->bfd_section->name)); /* We don't need to page align empty sections. */ if ((abfd->flags & D_PAGED) != 0 && hdr->sh_size != 0) off += vma_page_aligned_bias (hdr->sh_addr, off, @@ -4831,8 +5046,7 @@ static bfd_boolean prep_headers (bfd *abfd) { - Elf_Internal_Ehdr *i_ehdrp; /* Elf file header, internal form */ - Elf_Internal_Phdr *i_phdrp = 0; /* Program header table, internal form */ + Elf_Internal_Ehdr *i_ehdrp; /* Elf file header, internal form. */ struct elf_strtab_hash *shstrtab; const struct elf_backend_data *bed = get_elf_backend_data (abfd); @@ -4900,7 +5114,6 @@ else { i_ehdrp->e_phentsize = 0; - i_phdrp = 0; i_ehdrp->e_phoff = 0; } @@ -4948,7 +5161,6 @@ _bfd_elf_write_object_contents (bfd *abfd) { const struct elf_backend_data *bed = get_elf_backend_data (abfd); - Elf_Internal_Ehdr *i_ehdrp; Elf_Internal_Shdr **i_shdrp; bfd_boolean failed; unsigned int count, num_sec; @@ -4958,7 +5170,6 @@ return FALSE; i_shdrp = elf_elfsections (abfd); - i_ehdrp = elf_elfheader (abfd); failed = FALSE; bfd_map_over_sections (abfd, bed->s->write_relocs, &failed); @@ -5016,34 +5227,34 @@ _bfd_elf_section_from_bfd_section (bfd *abfd, struct bfd_section *asect) { const struct elf_backend_data *bed; - unsigned int index; + unsigned int sec_index; if (elf_section_data (asect) != NULL && elf_section_data (asect)->this_idx != 0) return elf_section_data (asect)->this_idx; if (bfd_is_abs_section (asect)) - index = SHN_ABS; + sec_index = SHN_ABS; else if (bfd_is_com_section (asect)) - index = SHN_COMMON; + sec_index = SHN_COMMON; else if (bfd_is_und_section (asect)) - index = SHN_UNDEF; + sec_index = SHN_UNDEF; else - index = SHN_BAD; + sec_index = SHN_BAD; bed = get_elf_backend_data (abfd); if (bed->elf_backend_section_from_bfd_section) { - int retval = index; + int retval = sec_index; if ((*bed->elf_backend_section_from_bfd_section) (abfd, asect, &retval)) return retval; } - if (index == SHN_BAD) + if (sec_index == SHN_BAD) bfd_set_error (bfd_error_nonrepresentable_section); - return index; + return sec_index; } /* Given a BFD symbol, return the index in the ELF symbol table, or -1 @@ -5093,9 +5304,8 @@ #if DEBUG & 4 { fprintf (stderr, - "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)); + "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x%.8lx\n", + (long) asym_ptr, asym_ptr->name, idx, (long) flags); fflush (stderr); } #endif @@ -5806,7 +6016,7 @@ bfd_size_type amt; Elf_Internal_Shdr *this_hdr; asection *first_section = NULL; - asection *lowest_section = NULL; + asection *lowest_section; /* Compute how many sections are in this segment. */ for (section = ibfd->sections, section_count = 0; @@ -5814,12 +6024,10 @@ section = section->next) { this_hdr = &(elf_section_data(section)->this_hdr); - if (ELF_IS_SECTION_IN_SEGMENT_FILE (this_hdr, segment)) + if (ELF_SECTION_IN_SEGMENT (this_hdr, segment)) { - if (!first_section) - first_section = lowest_section = section; - if (section->lma < lowest_section->lma) - lowest_section = section; + if (first_section == NULL) + first_section = section; section_count++; } } @@ -5873,17 +6081,7 @@ phdr_included = TRUE; } - if (map->includes_filehdr && first_section) - /* We need to keep the space used by the headers fixed. */ - map->header_size = first_section->vma - segment->p_vaddr; - - if (!map->includes_phdrs - && !map->includes_filehdr - && map->p_paddr_valid) - /* There is some other padding before the first section. */ - map->p_vaddr_offset = ((lowest_section ? lowest_section->lma : 0) - - segment->p_paddr); - + lowest_section = first_section; if (section_count != 0) { unsigned int isec = 0; @@ -5893,15 +6091,44 @@ section = section->next) { this_hdr = &(elf_section_data(section)->this_hdr); - if (ELF_IS_SECTION_IN_SEGMENT_FILE (this_hdr, segment)) + if (ELF_SECTION_IN_SEGMENT (this_hdr, segment)) { map->sections[isec++] = section->output_section; + if (section->lma < lowest_section->lma) + lowest_section = section; + if ((section->flags & SEC_ALLOC) != 0) + { + bfd_vma seg_off; + + /* Section lmas are set up from PT_LOAD header + p_paddr in _bfd_elf_make_section_from_shdr. + If this header has a p_paddr that disagrees + with the section lma, flag the p_paddr as + invalid. */ + if ((section->flags & SEC_LOAD) != 0) + seg_off = this_hdr->sh_offset - segment->p_offset; + else + seg_off = this_hdr->sh_addr - segment->p_vaddr; + if (section->lma - segment->p_paddr != seg_off) + map->p_paddr_valid = FALSE; + } if (isec == section_count) break; } } } + if (map->includes_filehdr && lowest_section != NULL) + /* We need to keep the space used by the headers fixed. */ + map->header_size = lowest_section->vma - segment->p_vaddr; + + if (!map->includes_phdrs + && !map->includes_filehdr + && map->p_paddr_valid) + /* There is some other padding before the first section. */ + map->p_vaddr_offset = ((lowest_section ? lowest_section->lma : 0) + - segment->p_paddr); + map->count = section_count; *pointer_to_map = map; pointer_to_map = &map->next; @@ -5970,7 +6197,7 @@ /* Check if this section is covered by the segment. */ this_hdr = &(elf_section_data(section)->this_hdr); - if (ELF_IS_SECTION_IN_SEGMENT_FILE (this_hdr, segment)) + if (ELF_SECTION_IN_SEGMENT (this_hdr, segment)) { /* FIXME: Check if its output section is changed or removed. What else do we need to check? */ @@ -6015,18 +6242,21 @@ { Elf_Internal_Shdr *ihdr, *ohdr; - bfd_boolean need_group = link_info == NULL || link_info->relocatable; + bfd_boolean final_link = link_info != NULL && !link_info->relocatable; if (ibfd->xvec->flavour != bfd_target_elf_flavour || obfd->xvec->flavour != bfd_target_elf_flavour) return TRUE; - /* Don't copy the output ELF section type from input if the - output BFD section flags have been set to something different. - elf_fake_sections will set ELF section type based on BFD - section flags. */ + /* For objcopy and relocatable link, don't copy the output ELF + section type from input if the output BFD section flags have been + set to something different. For a final link allow some flags + that the linker clears to differ. */ if (elf_section_type (osec) == SHT_NULL - && (osec->flags == isec->flags || !osec->flags)) + && (osec->flags == isec->flags + || (final_link + && ((osec->flags ^ isec->flags) + & ~(SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_RELOC)) == 0))) elf_section_type (osec) = elf_section_type (isec); /* FIXME: Is this correct for all OS/PROC specific flags? */ @@ -6037,7 +6267,7 @@ SHT_GROUP section will have its elf_next_in_group pointing back to the input group members. Ignore linker created group section. See elfNN_ia64_object_p in elfxx-ia64.c. */ - if (need_group) + if (!final_link) { if (elf_sec_group (isec) == NULL || (elf_sec_group (isec)->flags & SEC_LINKER_CREATED) == 0) @@ -6096,52 +6326,92 @@ NULL); } -/* Copy private header information. */ +/* Look at all the SHT_GROUP sections in IBFD, making any adjustments + necessary if we are removing either the SHT_GROUP section or any of + the group member sections. DISCARDED is the value that a section's + output_section has if the section will be discarded, NULL when this + function is called from objcopy, bfd_abs_section_ptr when called + from the linker. */ bfd_boolean -_bfd_elf_copy_private_header_data (bfd *ibfd, bfd *obfd) +_bfd_elf_fixup_group_sections (bfd *ibfd, asection *discarded) { asection *isec; - if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return TRUE; - - /* Copy over private BFD data if it has not already been copied. - This must be done here, rather than in the copy_private_bfd_data - entry point, because the latter is called after the section - contents have been set, which means that the program headers have - already been worked out. */ - if (elf_tdata (obfd)->segment_map == NULL && elf_tdata (ibfd)->phdr != NULL) - { - if (! copy_private_bfd_data (ibfd, obfd)) - return FALSE; - } - - /* _bfd_elf_copy_private_section_data copied over the SHF_GROUP flag - but this might be wrong if we deleted the group section. */ for (isec = ibfd->sections; isec != NULL; isec = isec->next) - if (elf_section_type (isec) == SHT_GROUP - && isec->output_section == NULL) + if (elf_section_type (isec) == SHT_GROUP) { asection *first = elf_next_in_group (isec); asection *s = first; + bfd_size_type removed = 0; + while (s != NULL) { - if (s->output_section != NULL) + /* If this member section is being output but the + SHT_GROUP section is not, then clear the group info + set up by _bfd_elf_copy_private_section_data. */ + if (s->output_section != discarded + && isec->output_section == discarded) { elf_section_flags (s->output_section) &= ~SHF_GROUP; elf_group_name (s->output_section) = NULL; } + /* Conversely, if the member section is not being output + but the SHT_GROUP section is, then adjust its size. */ + else if (s->output_section == discarded + && isec->output_section != discarded) + removed += 4; s = elf_next_in_group (s); if (s == first) break; } + if (removed != 0) + { + if (discarded != NULL) + { + /* If we've been called for ld -r, then we need to + adjust the input section size. This function may + be called multiple times, so save the original + size. */ + if (isec->rawsize == 0) + isec->rawsize = isec->size; + isec->size = isec->rawsize - removed; + } + else + { + /* Adjust the output section size when called from + objcopy. */ + isec->output_section->size -= removed; + } + } } return TRUE; } +/* Copy private header information. */ + +bfd_boolean +_bfd_elf_copy_private_header_data (bfd *ibfd, bfd *obfd) +{ + if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour + || bfd_get_flavour (obfd) != bfd_target_elf_flavour) + return TRUE; + + /* Copy over private BFD data if it has not already been copied. + This must be done here, rather than in the copy_private_bfd_data + entry point, because the latter is called after the section + contents have been set, which means that the program headers have + already been worked out. */ + if (elf_tdata (obfd)->segment_map == NULL && elf_tdata (ibfd)->phdr != NULL) + { + if (! copy_private_bfd_data (ibfd, obfd)) + return FALSE; + } + + return _bfd_elf_fixup_group_sections (ibfd, NULL); +} + /* Copy private symbol information. If this symbol is in a section which we did not map into a BFD section, try to map the section index correctly. We use special macro definitions for the mapped @@ -6272,6 +6542,7 @@ sym.st_info = 0; sym.st_other = 0; sym.st_shndx = SHN_UNDEF; + sym.st_target_internal = 0; bed->s->swap_symbol_out (abfd, &sym, outbound_syms, outbound_shndx); outbound_syms += bed->s->sizeof_sym; if (outbound_shndx != NULL) @@ -6471,9 +6742,16 @@ } if (type_ptr != NULL) - sym.st_other = type_ptr->internal_elf_sym.st_other; + { + sym.st_other = type_ptr->internal_elf_sym.st_other; + sym.st_target_internal + = type_ptr->internal_elf_sym.st_target_internal; + } else - sym.st_other = 0; + { + sym.st_other = 0; + sym.st_target_internal = 0; + } bed->s->swap_symbol_out (abfd, &sym, outbound_syms, outbound_shndx); outbound_syms += bed->s->sizeof_sym; @@ -7419,16 +7697,24 @@ out details about the corefile. */ #ifdef HAVE_SYS_PROCFS_H +/* Needed for new procfs interface on sparc-solaris. */ +# define _STRUCTURED_PROC 1 # include #endif -/* FIXME: this is kinda wrong, but it's what gdb wants. */ +/* Return a PID that identifies a "thread" for threaded cores, or the + PID of the main process for non-threaded cores. */ static int elfcore_make_pid (bfd *abfd) { - return ((elf_tdata (abfd)->core_lwpid << 16) - + (elf_tdata (abfd)->core_pid)); + int pid; + + pid = elf_tdata (abfd)->core_lwpid; + if (pid == 0) + pid = elf_tdata (abfd)->core_pid; + + return pid; } /* If there isn't a section called NAME, make one, using @@ -7518,7 +7804,8 @@ 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; + if (elf_tdata (abfd)->core_pid == 0) + elf_tdata (abfd)->core_pid = prstat.pr_pid; /* pr_who exists on: solaris 2.5+ @@ -7528,6 +7815,8 @@ */ #if defined (HAVE_PRSTATUS_T_PR_WHO) elf_tdata (abfd)->core_lwpid = prstat.pr_who; +#else + elf_tdata (abfd)->core_lwpid = prstat.pr_pid; #endif } #if defined (HAVE_PRSTATUS32_T) @@ -7544,7 +7833,8 @@ 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; + if (elf_tdata (abfd)->core_pid == 0) + elf_tdata (abfd)->core_pid = prstat.pr_pid; /* pr_who exists on: solaris 2.5+ @@ -7554,6 +7844,8 @@ */ #if defined (HAVE_PRSTATUS32_T_PR_WHO) elf_tdata (abfd)->core_lwpid = prstat.pr_who; +#else + elf_tdata (abfd)->core_lwpid = prstat.pr_pid; #endif } #endif /* HAVE_PRSTATUS32_T */ @@ -7600,6 +7892,16 @@ return elfcore_make_note_pseudosection (abfd, ".reg-xfp", note); } +/* Linux dumps the Intel XSAVE extended state in a note named "LINUX" + with a note type of NT_X86_XSTATE. Just include the whole note's + contents literally. */ + +static bfd_boolean +elfcore_grok_xstatereg (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-xstate", note); +} + static bfd_boolean elfcore_grok_ppc_vmx (bfd *abfd, Elf_Internal_Note *note) { @@ -7612,6 +7914,42 @@ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-vsx", note); } +static bfd_boolean +elfcore_grok_s390_high_gprs (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-high-gprs", note); +} + +static bfd_boolean +elfcore_grok_s390_timer (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-timer", note); +} + +static bfd_boolean +elfcore_grok_s390_todcmp (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-todcmp", note); +} + +static bfd_boolean +elfcore_grok_s390_todpreg (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-todpreg", note); +} + +static bfd_boolean +elfcore_grok_s390_ctrs (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-ctrs", note); +} + +static bfd_boolean +elfcore_grok_s390_prefix (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-prefix", note); +} + #if defined (HAVE_PRPSINFO_T) typedef prpsinfo_t elfcore_psinfo_t; #if defined (HAVE_PRPSINFO32_T) /* Sparc64 cross Sparc32 */ @@ -7766,7 +8104,10 @@ memcpy (&lwpstat, note->descdata, sizeof (lwpstat)); elf_tdata (abfd)->core_lwpid = lwpstat.pr_lwpid; - elf_tdata (abfd)->core_signal = lwpstat.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 = lwpstat.pr_cursig; /* Make a ".reg/999" section. */ @@ -7959,6 +8300,13 @@ else return TRUE; + case NT_X86_XSTATE: /* Linux XSAVE extension */ + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_xstatereg (abfd, note); + else + return TRUE; + case NT_PPC_VMX: if (note->namesz == 6 && strcmp (note->namedata, "LINUX") == 0) @@ -7973,6 +8321,48 @@ else return TRUE; + case NT_S390_HIGH_GPRS: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_high_gprs (abfd, note); + else + return TRUE; + + case NT_S390_TIMER: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_timer (abfd, note); + else + return TRUE; + + case NT_S390_TODCMP: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_todcmp (abfd, note); + else + return TRUE; + + case NT_S390_TODPREG: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_todpreg (abfd, note); + else + return TRUE; + + case NT_S390_CTRS: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_ctrs (abfd, note); + else + return TRUE; + + case NT_S390_PREFIX: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_prefix (abfd, note); + else + return TRUE; + case NT_PRPSINFO: case NT_PSINFO: if (bed->elf_backend_grok_psinfo) @@ -8592,6 +8982,15 @@ } char * +elfcore_write_xstatereg (bfd *abfd, char *buf, int *bufsiz, + const void *xfpregs, int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_X86_XSTATE, xfpregs, size); +} + +char * elfcore_write_ppc_vmx (bfd *abfd, char *buf, int *bufsiz, @@ -8615,6 +9014,79 @@ note_name, NT_PPC_VSX, ppc_vsx, size); } +static char * +elfcore_write_s390_high_gprs (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_high_gprs, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_HIGH_GPRS, + s390_high_gprs, size); +} + +char * +elfcore_write_s390_timer (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_timer, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_TIMER, s390_timer, size); +} + +char * +elfcore_write_s390_todcmp (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_todcmp, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_TODCMP, s390_todcmp, size); +} + +char * +elfcore_write_s390_todpreg (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_todpreg, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_TODPREG, s390_todpreg, size); +} + +char * +elfcore_write_s390_ctrs (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_ctrs, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_CTRS, s390_ctrs, size); +} + +char * +elfcore_write_s390_prefix (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_prefix, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_PREFIX, s390_prefix, size); +} + char * elfcore_write_register_note (bfd *abfd, char *buf, @@ -8627,10 +9099,24 @@ return elfcore_write_prfpreg (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-xfp") == 0) return elfcore_write_prxfpreg (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-xstate") == 0) + return elfcore_write_xstatereg (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-ppc-vmx") == 0) return elfcore_write_ppc_vmx (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-ppc-vsx") == 0) return elfcore_write_ppc_vsx (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-high-gprs") == 0) + return elfcore_write_s390_high_gprs (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-timer") == 0) + return elfcore_write_s390_timer (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-todcmp") == 0) + return elfcore_write_s390_todcmp (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-todpreg") == 0) + return elfcore_write_s390_todpreg (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-ctrs") == 0) + return elfcore_write_s390_ctrs (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-prefix") == 0) + return elfcore_write_s390_prefix (abfd, buf, bufsiz, data, size); return NULL; } @@ -8985,7 +9471,7 @@ if (p->addend != 0) { char buf[30], *a; - int len; + memcpy (names, "+0x", sizeof ("+0x") - 1); names += sizeof ("+0x") - 1; bfd_sprintf_vma (abfd, buf, p->addend); diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-am33lin.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-am33lin.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-am33lin.c 2007-07-03 14:26:40.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-am33lin.c 2010-08-18 12:24:05.000000000 +0000 @@ -55,7 +55,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-arm.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-arm.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-arm.c 2009-09-09 18:36:10.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-arm.c 2011-03-14 16:04:06.000000000 +0000 @@ -1,6 +1,6 @@ /* 32-bit ELF support for ARM Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -61,8 +61,6 @@ #define ARM_ELF_ABI_VERSION 0 #define ARM_ELF_OS_ABI_VERSION ELFOSABI_ARM -static struct elf_backend_data elf32_arm_vxworks_bed; - static bfd_boolean elf32_arm_write_section (bfd *output_bfd, struct bfd_link_info *link_info, asection *sec, @@ -224,7 +222,7 @@ HOWTO (R_ARM_THM_CALL, /* type */ 1, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 25, /* bitsize */ + 24, /* bitsize */ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed,/* complain_on_overflow */ @@ -263,18 +261,18 @@ 0xffffffff, /* dst_mask */ FALSE), /* pcrel_offset */ - HOWTO (R_ARM_SWI24, /* type */ + HOWTO (R_ARM_TLS_DESC, /* 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_signed,/* complain_on_overflow */ + complain_overflow_bitfield,/* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ - "R_ARM_SWI24", /* name */ + "R_ARM_TLS_DESC", /* name */ FALSE, /* partial_inplace */ - 0x00000000, /* src_mask */ - 0x00000000, /* dst_mask */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ FALSE), /* pcrel_offset */ HOWTO (R_ARM_THM_SWI8, /* type */ @@ -1354,10 +1352,61 @@ 0x040f70ff, /* dst_mask */ FALSE), /* pcrel_offset */ - EMPTY_HOWTO (90), /* Unallocated. */ - EMPTY_HOWTO (91), - EMPTY_HOWTO (92), - EMPTY_HOWTO (93), + HOWTO (R_ARM_TLS_GOTDESC, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield,/* complain_on_overflow */ + NULL, /* special_function */ + "R_ARM_TLS_GOTDESC", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_ARM_TLS_CALL, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 24, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_ARM_TLS_CALL", /* name */ + FALSE, /* partial_inplace */ + 0x00ffffff, /* src_mask */ + 0x00ffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_ARM_TLS_DESCSEQ, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_ARM_TLS_DESCSEQ", /* name */ + FALSE, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x00000000, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_ARM_THM_TLS_CALL, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 24, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_ARM_THM_TLS_CALL", /* name */ + FALSE, /* partial_inplace */ + 0x07ff07ff, /* src_mask */ + 0x07ff07ff, /* dst_mask */ + FALSE), /* pcrel_offset */ HOWTO (R_ARM_PLT32_ABS, /* type */ 0, /* rightshift */ @@ -1601,15 +1650,63 @@ 0x00000fff, /* src_mask */ 0x00000fff, /* dst_mask */ FALSE), /* pcrel_offset */ -}; -/* 112-127 private relocations - 128 R_ARM_ME_TOO, obsolete - 129-255 unallocated in AAELF. + /* 112-127 private relocations. */ + EMPTY_HOWTO (112), + EMPTY_HOWTO (113), + EMPTY_HOWTO (114), + EMPTY_HOWTO (115), + EMPTY_HOWTO (116), + EMPTY_HOWTO (117), + EMPTY_HOWTO (118), + EMPTY_HOWTO (119), + EMPTY_HOWTO (120), + EMPTY_HOWTO (121), + EMPTY_HOWTO (122), + EMPTY_HOWTO (123), + EMPTY_HOWTO (124), + EMPTY_HOWTO (125), + EMPTY_HOWTO (126), + EMPTY_HOWTO (127), + + /* R_ARM_ME_TOO, obsolete. */ + EMPTY_HOWTO (128), + + HOWTO (R_ARM_THM_TLS_DESCSEQ, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_ARM_THM_TLS_DESCSEQ",/* name */ + FALSE, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x00000000, /* dst_mask */ + FALSE), /* pcrel_offset */ +}; - 249-255 extended, currently unused, relocations: */ +/* 160 onwards: */ +static reloc_howto_type elf32_arm_howto_table_2[1] = +{ + HOWTO (R_ARM_IRELATIVE, /* 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_ARM_IRELATIVE", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE) /* pcrel_offset */ +}; -static reloc_howto_type elf32_arm_howto_table_2[4] = +/* 249-255 extended, currently unused, relocations: */ +static reloc_howto_type elf32_arm_howto_table_3[4] = { HOWTO (R_ARM_RREL32, /* type */ 0, /* rightshift */ @@ -1674,9 +1771,12 @@ if (r_type < ARRAY_SIZE (elf32_arm_howto_table_1)) return &elf32_arm_howto_table_1[r_type]; + if (r_type == R_ARM_IRELATIVE) + return &elf32_arm_howto_table_2[r_type - R_ARM_IRELATIVE]; + if (r_type >= R_ARM_RREL32 - && r_type < R_ARM_RREL32 + ARRAY_SIZE (elf32_arm_howto_table_2)) - return &elf32_arm_howto_table_2[r_type - R_ARM_RREL32]; + && r_type < R_ARM_RREL32 + ARRAY_SIZE (elf32_arm_howto_table_3)) + return &elf32_arm_howto_table_3[r_type - R_ARM_RREL32]; return NULL; } @@ -1723,6 +1823,7 @@ {BFD_RELOC_ARM_RELATIVE, R_ARM_RELATIVE}, {BFD_RELOC_ARM_GOTOFF, R_ARM_GOTOFF32}, {BFD_RELOC_ARM_GOTPC, R_ARM_GOTPC}, + {BFD_RELOC_ARM_GOT_PREL, R_ARM_GOT_PREL}, {BFD_RELOC_ARM_GOT32, R_ARM_GOT32}, {BFD_RELOC_ARM_PLT32, R_ARM_PLT32}, {BFD_RELOC_ARM_TARGET1, R_ARM_TARGET1}, @@ -1731,6 +1832,12 @@ {BFD_RELOC_ARM_PREL31, R_ARM_PREL31}, {BFD_RELOC_ARM_TARGET2, R_ARM_TARGET2}, {BFD_RELOC_ARM_PLT32, R_ARM_PLT32}, + {BFD_RELOC_ARM_TLS_GOTDESC, R_ARM_TLS_GOTDESC}, + {BFD_RELOC_ARM_TLS_CALL, R_ARM_TLS_CALL}, + {BFD_RELOC_ARM_THM_TLS_CALL, R_ARM_THM_TLS_CALL}, + {BFD_RELOC_ARM_TLS_DESCSEQ, R_ARM_TLS_DESCSEQ}, + {BFD_RELOC_ARM_THM_TLS_DESCSEQ, R_ARM_THM_TLS_DESCSEQ}, + {BFD_RELOC_ARM_TLS_DESC, R_ARM_TLS_DESC}, {BFD_RELOC_ARM_TLS_GD32, R_ARM_TLS_GD32}, {BFD_RELOC_ARM_TLS_LDO32, R_ARM_TLS_LDO32}, {BFD_RELOC_ARM_TLS_LDM32, R_ARM_TLS_LDM32}, @@ -1739,6 +1846,7 @@ {BFD_RELOC_ARM_TLS_TPOFF32, R_ARM_TLS_TPOFF32}, {BFD_RELOC_ARM_TLS_IE32, R_ARM_TLS_IE32}, {BFD_RELOC_ARM_TLS_LE32, R_ARM_TLS_LE32}, + {BFD_RELOC_ARM_IRELATIVE, R_ARM_IRELATIVE}, {BFD_RELOC_VTABLE_INHERIT, R_ARM_GNU_VTINHERIT}, {BFD_RELOC_VTABLE_ENTRY, R_ARM_GNU_VTENTRY}, {BFD_RELOC_ARM_MOVW, R_ARM_MOVW_ABS_NC}, @@ -1809,6 +1917,11 @@ && strcasecmp (elf32_arm_howto_table_2[i].name, r_name) == 0) return &elf32_arm_howto_table_2[i]; + for (i = 0; i < ARRAY_SIZE (elf32_arm_howto_table_3); i++) + if (elf32_arm_howto_table_3[i].name != NULL + && strcasecmp (elf32_arm_howto_table_3[i].name, r_name) == 0) + return &elf32_arm_howto_table_3[i]; + return NULL; } @@ -1830,7 +1943,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -1913,6 +2026,26 @@ section. */ #define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1" +static const unsigned long tls_trampoline [] = + { + 0xe08e0000, /* add r0, lr, r0 */ + 0xe5901004, /* ldr r1, [r0,#4] */ + 0xe12fff11, /* bx r1 */ + }; + +static const unsigned long dl_tlsdesc_lazy_trampoline [] = + { + 0xe52d2004, /* push {r2} */ + 0xe59f200c, /* ldr r2, [pc, #3f - . - 8] */ + 0xe59f100c, /* ldr r1, [pc, #4f - . - 8] */ + 0xe79f2002, /* 1: ldr r2, [pc, r2] */ + 0xe081100f, /* 2: add r1, pc */ + 0xe12fff12, /* bx r2 */ + 0x00000014, /* 3: .word _GLOBAL_OFFSET_TABLE_ - 1b - 8 + + dl_tlsdesc_lazy_resolver(GOT) */ + 0x00000018, /* 4: .word _GLOBAL_OFFSET_TABLE_ - 2b - 8 */ + }; + #ifdef FOUR_WORD_PLT /* The first entry in a procedure linkage table looks like @@ -2107,7 +2240,7 @@ blx to reach the stub if necessary. */ static const insn_sequence elf32_arm_stub_long_branch_any_arm_pic[] = { - ARM_INSN(0xe59fc000), /* ldr r12, [pc] */ + ARM_INSN(0xe59fc000), /* ldr ip, [pc] */ ARM_INSN(0xe08ff00c), /* add pc, pc, ip */ DATA_WORD(0, R_ARM_REL32, -4), /* dcd R_ARM_REL32(X-4) */ }; @@ -2118,7 +2251,7 @@ ARMv7). */ static const insn_sequence elf32_arm_stub_long_branch_any_thumb_pic[] = { - ARM_INSN(0xe59fc004), /* ldr r12, [pc, #4] */ + ARM_INSN(0xe59fc004), /* ldr ip, [pc, #4] */ ARM_INSN(0xe08fc00c), /* add ip, pc, ip */ ARM_INSN(0xe12fff1c), /* bx ip */ DATA_WORD(0, R_ARM_REL32, 0), /* dcd R_ARM_REL32(X) */ @@ -2168,6 +2301,26 @@ DATA_WORD(0, R_ARM_REL32, 0), /* dcd R_ARM_REL32(X) */ }; +/* Thumb2/ARM -> TLS trampoline. Lowest common denominator, which is a + long PIC stub. We can use r1 as a scratch -- and cannot use ip. */ +static const insn_sequence elf32_arm_stub_long_branch_any_tls_pic[] = +{ + ARM_INSN(0xe59f1000), /* ldr r1, [pc] */ + ARM_INSN(0xe08ff001), /* add pc, pc, r1 */ + DATA_WORD(0, R_ARM_REL32, -4), /* dcd R_ARM_REL32(X-4) */ +}; + +/* V4T Thumb -> TLS trampoline. lowest common denominator, which is a + long PIC stub. We can use r1 as a scratch -- and cannot use ip. */ +static const insn_sequence elf32_arm_stub_long_branch_v4t_thumb_tls_pic[] = +{ + THUMB16_INSN(0x4778), /* bx pc */ + THUMB16_INSN(0x46c0), /* nop */ + ARM_INSN(0xe59f1000), /* ldr r1, [pc, #0] */ + ARM_INSN(0xe081f00f), /* add pc, r1, pc */ + DATA_WORD(0, R_ARM_REL32, -4), /* dcd R_ARM_REL32(X) */ +}; + /* Cortex-A8 erratum-workaround stubs. */ /* Stub used for conditional branches (which may be beyond +/-1MB away, so we @@ -2219,6 +2372,8 @@ DEF_STUB(long_branch_v4t_arm_thumb_pic) \ DEF_STUB(long_branch_v4t_thumb_arm_pic) \ DEF_STUB(long_branch_thumb_only_pic) \ + DEF_STUB(long_branch_any_tls_pic) \ + DEF_STUB(long_branch_v4t_thumb_tls_pic) \ DEF_STUB(a8_veneer_b_cond) \ DEF_STUB(a8_veneer_b) \ DEF_STUB(a8_veneer_bl) \ @@ -2280,8 +2435,8 @@ /* The symbol table entry, if any, that this was derived from. */ struct elf32_arm_link_hash_entry *h; - /* Destination symbol type (STT_ARM_TFUNC, ...) */ - unsigned char st_type; + /* Type of branch. */ + enum arm_st_branch_type branch_type; /* Where this stub is being called from, or, in the case of combined stub sections, the first input section in the group. */ @@ -2401,6 +2556,7 @@ unsigned long orig_insn; char *stub_name; enum elf32_arm_stub_type stub_type; + enum arm_st_branch_type branch_type; }; /* A table of relocs applied to branches which might trigger Cortex-A8 @@ -2409,15 +2565,54 @@ struct a8_erratum_reloc { bfd_vma from; bfd_vma destination; - unsigned int r_type; - unsigned char st_type; + struct elf32_arm_link_hash_entry *hash; const char *sym_name; + unsigned int r_type; + enum arm_st_branch_type branch_type; bfd_boolean non_a8_stub; }; /* The size of the thread control block. */ #define TCB_SIZE 8 +/* ARM-specific information about a PLT entry, over and above the usual + gotplt_union. */ +struct arm_plt_info { + /* We reference count Thumb references to a PLT entry separately, + so that we can emit the Thumb trampoline only if needed. */ + bfd_signed_vma thumb_refcount; + + /* Some references from Thumb code may be eliminated by BL->BLX + conversion, so record them separately. */ + bfd_signed_vma maybe_thumb_refcount; + + /* How many of the recorded PLT accesses were from non-call relocations. + This information is useful when deciding whether anything takes the + address of an STT_GNU_IFUNC PLT. A value of 0 means that all + non-call references to the function should resolve directly to the + real runtime target. */ + unsigned int noncall_refcount; + + /* Since PLT entries have variable size if the Thumb prologue is + used, we need to record the index into .got.plt instead of + recomputing it from the PLT offset. */ + bfd_signed_vma got_offset; +}; + +/* Information about an .iplt entry for a local STT_GNU_IFUNC symbol. */ +struct arm_local_iplt_info { + /* The information that is usually found in the generic ELF part of + the hash table entry. */ + union gotplt_union root; + + /* The information that is usually found in the ARM-specific part of + the hash table entry. */ + struct arm_plt_info arm; + + /* A list of all potential dynamic relocations against this symbol. */ + struct elf_dyn_relocs *dyn_relocs; +}; + struct elf_arm_obj_tdata { struct elf_obj_tdata root; @@ -2425,6 +2620,12 @@ /* tls_type for each local got entry. */ char *local_got_tls_type; + /* GOTPLT entries for TLS descriptors. */ + bfd_vma *local_tlsdesc_gotent; + + /* Information for local symbols that need entries in .iplt. */ + struct arm_local_iplt_info **local_iplt; + /* Zero to warn when linking objects with incompatible enum sizes. */ int no_enum_size_warning; @@ -2438,38 +2639,24 @@ #define elf32_arm_local_got_tls_type(bfd) \ (elf_arm_tdata (bfd)->local_got_tls_type) +#define elf32_arm_local_tlsdesc_gotent(bfd) \ + (elf_arm_tdata (bfd)->local_tlsdesc_gotent) + +#define elf32_arm_local_iplt(bfd) \ + (elf_arm_tdata (bfd)->local_iplt) + #define is_arm_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == ARM_ELF_TDATA) + && elf_object_id (bfd) == ARM_ELF_DATA) static bfd_boolean elf32_arm_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct elf_arm_obj_tdata), - ARM_ELF_TDATA); + ARM_ELF_DATA); } -/* The ARM linker needs to keep track of the number of relocs that it - decides to copy in check_relocs for each symbol. This is so that - it can discard PC relative relocs if it doesn't need them when - linking with -Bsymbolic. We store the information in a field - extending the regular ELF linker hash table. */ - -/* This structure keeps track of the number of relocs we have copied - for a given symbol. */ -struct elf32_arm_relocs_copied - { - /* Next section. */ - struct elf32_arm_relocs_copied * next; - /* A section in dynobj. */ - asection * section; - /* Number of relocs copied in this section. */ - bfd_size_type count; - /* Number of PC-relative relocs copied in this section. */ - bfd_size_type pc_count; - }; - #define elf32_arm_hash_entry(ent) ((struct elf32_arm_link_hash_entry *)(ent)) /* Arm ELF linker hash entry. */ @@ -2477,27 +2664,28 @@ { struct elf_link_hash_entry root; - /* Number of PC relative relocs copied for this symbol. */ - struct elf32_arm_relocs_copied * relocs_copied; + /* Track dynamic relocs copied for this symbol. */ + struct elf_dyn_relocs *dyn_relocs; - /* We reference count Thumb references to a PLT entry separately, - so that we can emit the Thumb trampoline only if needed. */ - bfd_signed_vma plt_thumb_refcount; - - /* Some references from Thumb code may be eliminated by BL->BLX - conversion, so record them separately. */ - bfd_signed_vma plt_maybe_thumb_refcount; - - /* Since PLT entries have variable size if the Thumb prologue is - used, we need to record the index into .got.plt instead of - recomputing it from the PLT offset. */ - bfd_signed_vma plt_got_offset; + /* ARM-specific PLT information. */ + struct arm_plt_info plt; #define GOT_UNKNOWN 0 #define GOT_NORMAL 1 #define GOT_TLS_GD 2 #define GOT_TLS_IE 4 - unsigned char tls_type; +#define GOT_TLS_GDESC 8 +#define GOT_TLS_GD_ANY_P(type) ((type & GOT_TLS_GD) || (type & GOT_TLS_GDESC)) + unsigned int tls_type : 8; + + /* True if the symbol's PLT entry is in .iplt rather than .plt. */ + unsigned int is_iplt : 1; + + unsigned int unused : 23; + + /* Offset of the GOTPLT entry reserved for the TLS descriptor, + starting at the end of the jump table. */ + bfd_vma tlsdesc_got; /* The symbol marking the real symbol location for exported thumb symbols with Arm stubs. */ @@ -2517,12 +2705,27 @@ /* Get the ARM elf linker hash table from a link_info structure. */ #define elf32_arm_hash_table(info) \ - ((struct elf32_arm_link_hash_table *) ((info)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((info)->hash)) \ + == ARM_ELF_DATA ? ((struct elf32_arm_link_hash_table *) ((info)->hash)) : NULL) #define arm_stub_hash_lookup(table, string, create, copy) \ ((struct elf32_arm_stub_hash_entry *) \ bfd_hash_lookup ((table), (string), (create), (copy))) +/* Array to keep track of which stub sections have been created, and + information on stub grouping. */ +struct map_stub +{ + /* This is the section to which stubs in the group will be + attached. */ + asection *link_sec; + /* The stub section. */ + asection *stub_sec; +}; + +#define elf32_arm_compute_jump_table_size(htab) \ + ((htab)->next_tls_desc_index * 4) + /* ARM ELF linker hash table. */ struct elf32_arm_link_hash_table { @@ -2601,18 +2804,32 @@ /* True if the target uses REL relocations. */ int use_rel; + /* The index of the next unused R_ARM_TLS_DESC slot in .rel.plt. */ + bfd_vma next_tls_desc_index; + + /* How many R_ARM_TLS_DESC relocations were generated so far. */ + bfd_vma num_tls_desc; + /* Short-cuts to get to dynamic linker sections. */ - asection *sgot; - asection *sgotplt; - asection *srelgot; - asection *splt; - asection *srelplt; asection *sdynbss; asection *srelbss; /* The (unloaded but important) VxWorks .rela.plt.unloaded section. */ asection *srelplt2; + /* The offset into splt of the PLT entry for the TLS descriptor + resolver. Special values are 0, if not necessary (or not found + to be necessary yet), and -1 if needed but not determined + yet. */ + bfd_vma dt_tlsdesc_plt; + + /* The offset into sgot of the GOT entry used by the PLT entry + above. */ + bfd_vma dt_tlsdesc_got; + + /* Offset in .plt section of tls_arm_trampoline. */ + bfd_vma tls_trampoline; + /* Data for R_ARM_TLS_LDM32 relocations. */ union { @@ -2626,6 +2843,10 @@ /* For convenience in allocate_dynrelocs. */ bfd * obfd; + /* The amount of space used by the reserved portion of the sgotplt + section, plus whatever space is used by the jump slots. */ + bfd_vma sgotplt_jump_table_size; + /* The stub hash table. */ struct bfd_hash_table stub_hash_table; @@ -2638,14 +2859,10 @@ /* Array to keep track of which stub sections have been created, and information on stub grouping. */ - struct map_stub - { - /* This is the section to which stubs in the group will be - attached. */ - asection *link_sec; - /* The stub section. */ - asection *stub_sec; - } *stub_group; + struct map_stub *stub_group; + + /* Number of elements in stub_group. */ + int top_id; /* Assorted information used by elf32_arm_size_stubs. */ unsigned int bfd_count; @@ -2666,7 +2883,8 @@ /* Allocate the structure if it has not already been allocated by a subclass. */ if (ret == NULL) - ret = bfd_hash_allocate (table, sizeof (struct elf32_arm_link_hash_entry)); + ret = (struct elf32_arm_link_hash_entry *) + bfd_hash_allocate (table, sizeof (struct elf32_arm_link_hash_entry)); if (ret == NULL) return (struct bfd_hash_entry *) ret; @@ -2676,11 +2894,14 @@ table, string)); if (ret != NULL) { - ret->relocs_copied = NULL; + ret->dyn_relocs = NULL; ret->tls_type = GOT_UNKNOWN; - ret->plt_thumb_refcount = 0; - ret->plt_maybe_thumb_refcount = 0; - ret->plt_got_offset = -1; + ret->tlsdesc_got = (bfd_vma) -1; + ret->plt.thumb_refcount = 0; + ret->plt.maybe_thumb_refcount = 0; + ret->plt.noncall_refcount = 0; + ret->plt.got_offset = -1; + ret->is_iplt = FALSE; ret->export_glue = NULL; ret->stub_cache = NULL; @@ -2689,6 +2910,142 @@ return (struct bfd_hash_entry *) ret; } +/* Ensure that we have allocated bookkeeping structures for ABFD's local + symbols. */ + +static bfd_boolean +elf32_arm_allocate_local_sym_info (bfd *abfd) +{ + if (elf_local_got_refcounts (abfd) == NULL) + { + bfd_size_type num_syms; + bfd_size_type size; + char *data; + + num_syms = elf_tdata (abfd)->symtab_hdr.sh_info; + size = num_syms * (sizeof (bfd_signed_vma) + + sizeof (struct arm_local_iplt_info *) + + sizeof (bfd_vma) + + sizeof (char)); + data = bfd_zalloc (abfd, size); + if (data == NULL) + return FALSE; + + elf_local_got_refcounts (abfd) = (bfd_signed_vma *) data; + data += num_syms * sizeof (bfd_signed_vma); + + elf32_arm_local_iplt (abfd) = (struct arm_local_iplt_info **) data; + data += num_syms * sizeof (struct arm_local_iplt_info *); + + elf32_arm_local_tlsdesc_gotent (abfd) = (bfd_vma *) data; + data += num_syms * sizeof (bfd_vma); + + elf32_arm_local_got_tls_type (abfd) = data; + } + return TRUE; +} + +/* Return the .iplt information for local symbol R_SYMNDX, which belongs + to input bfd ABFD. Create the information if it doesn't already exist. + Return null if an allocation fails. */ + +static struct arm_local_iplt_info * +elf32_arm_create_local_iplt (bfd *abfd, unsigned long r_symndx) +{ + struct arm_local_iplt_info **ptr; + + if (!elf32_arm_allocate_local_sym_info (abfd)) + return NULL; + + BFD_ASSERT (r_symndx < elf_tdata (abfd)->symtab_hdr.sh_info); + ptr = &elf32_arm_local_iplt (abfd)[r_symndx]; + if (*ptr == NULL) + *ptr = bfd_zalloc (abfd, sizeof (**ptr)); + return *ptr; +} + +/* Try to obtain PLT information for the symbol with index R_SYMNDX + in ABFD's symbol table. If the symbol is global, H points to its + hash table entry, otherwise H is null. + + Return true if the symbol does have PLT information. When returning + true, point *ROOT_PLT at the target-independent reference count/offset + union and *ARM_PLT at the ARM-specific information. */ + +static bfd_boolean +elf32_arm_get_plt_info (bfd *abfd, struct elf32_arm_link_hash_entry *h, + unsigned long r_symndx, union gotplt_union **root_plt, + struct arm_plt_info **arm_plt) +{ + struct arm_local_iplt_info *local_iplt; + + if (h != NULL) + { + *root_plt = &h->root.plt; + *arm_plt = &h->plt; + return TRUE; + } + + if (elf32_arm_local_iplt (abfd) == NULL) + return FALSE; + + local_iplt = elf32_arm_local_iplt (abfd)[r_symndx]; + if (local_iplt == NULL) + return FALSE; + + *root_plt = &local_iplt->root; + *arm_plt = &local_iplt->arm; + return TRUE; +} + +/* Return true if the PLT described by ARM_PLT requires a Thumb stub + before it. */ + +static bfd_boolean +elf32_arm_plt_needs_thumb_stub_p (struct bfd_link_info *info, + struct arm_plt_info *arm_plt) +{ + struct elf32_arm_link_hash_table *htab; + + htab = elf32_arm_hash_table (info); + return (arm_plt->thumb_refcount != 0 + || (!htab->use_blx && arm_plt->maybe_thumb_refcount != 0)); +} + +/* Return a pointer to the head of the dynamic reloc list that should + be used for local symbol ISYM, which is symbol number R_SYMNDX in + ABFD's symbol table. Return null if an error occurs. */ + +static struct elf_dyn_relocs ** +elf32_arm_get_local_dynreloc_list (bfd *abfd, unsigned long r_symndx, + Elf_Internal_Sym *isym) +{ + if (ELF32_ST_TYPE (isym->st_info) == STT_GNU_IFUNC) + { + struct arm_local_iplt_info *local_iplt; + + local_iplt = elf32_arm_create_local_iplt (abfd, r_symndx); + if (local_iplt == NULL) + return NULL; + return &local_iplt->dyn_relocs; + } + else + { + /* Track dynamic relocs needed for local syms too. + We really need local syms available to do this + easily. Oh well. */ + asection *s; + void *vpp; + + s = bfd_section_from_elf_index (abfd, isym->st_shndx); + if (s == NULL) + abort (); + + vpp = &elf_section_data (s)->local_dynrel; + return (struct elf_dyn_relocs **) vpp; + } +} + /* Initialize an entry in the stub hash table. */ static struct bfd_hash_entry * @@ -2700,8 +3057,8 @@ subclass. */ if (entry == NULL) { - entry = bfd_hash_allocate (table, - sizeof (struct elf32_arm_stub_hash_entry)); + entry = (struct bfd_hash_entry *) + bfd_hash_allocate (table, sizeof (struct elf32_arm_stub_hash_entry)); if (entry == NULL) return entry; } @@ -2741,6 +3098,9 @@ struct elf32_arm_link_hash_table *htab; htab = elf32_arm_hash_table (info); + if (htab == NULL) + return FALSE; + /* BPABI objects never have a GOT, or associated sections. */ if (htab->symbian_p) return TRUE; @@ -2748,15 +3108,53 @@ if (! _bfd_elf_create_got_section (dynobj, info)) return FALSE; - htab->sgot = bfd_get_section_by_name (dynobj, ".got"); - htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); - if (!htab->sgot || !htab->sgotplt) - abort (); + return TRUE; +} - htab->srelgot = bfd_get_section_by_name (dynobj, - RELOC_SECTION (htab, ".got")); - if (htab->srelgot == NULL) - return FALSE; +/* Create the .iplt, .rel(a).iplt and .igot.plt sections. */ + +static bfd_boolean +create_ifunc_sections (struct bfd_link_info *info) +{ + struct elf32_arm_link_hash_table *htab; + const struct elf_backend_data *bed; + bfd *dynobj; + asection *s; + flagword flags; + + htab = elf32_arm_hash_table (info); + dynobj = htab->root.dynobj; + bed = get_elf_backend_data (dynobj); + flags = bed->dynamic_sec_flags; + + if (htab->root.iplt == NULL) + { + s = bfd_make_section_with_flags (dynobj, ".iplt", + flags | SEC_READONLY | SEC_CODE); + if (s == NULL + || !bfd_set_section_alignment (abfd, s, bed->plt_alignment)) + return FALSE; + htab->root.iplt = s; + } + + if (htab->root.irelplt == NULL) + { + s = bfd_make_section_with_flags (dynobj, RELOC_SECTION (htab, ".iplt"), + flags | SEC_READONLY); + if (s == NULL + || !bfd_set_section_alignment (abfd, s, bed->s->log_file_align)) + return FALSE; + htab->root.irelplt = s; + } + + if (htab->root.igotplt == NULL) + { + s = bfd_make_section_with_flags (dynobj, ".igot.plt", flags); + if (s == NULL + || !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align)) + return FALSE; + htab->root.igotplt = s; + } return TRUE; } @@ -2770,15 +3168,15 @@ struct elf32_arm_link_hash_table *htab; htab = elf32_arm_hash_table (info); - if (!htab->sgot && !create_got_section (dynobj, info)) + if (htab == NULL) + return FALSE; + + if (!htab->root.sgot && !create_got_section (dynobj, info)) return FALSE; if (!_bfd_elf_create_dynamic_sections (dynobj, info)) return FALSE; - htab->splt = bfd_get_section_by_name (dynobj, ".plt"); - htab->srelplt = bfd_get_section_by_name (dynobj, - RELOC_SECTION (htab, ".plt")); htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss"); if (!info->shared) htab->srelbss = bfd_get_section_by_name (dynobj, @@ -2804,8 +3202,8 @@ } } - if (!htab->splt - || !htab->srelplt + if (!htab->root.splt + || !htab->root.srelplt || !htab->sdynbss || (!info->shared && !htab->srelbss)) abort (); @@ -2825,21 +3223,21 @@ edir = (struct elf32_arm_link_hash_entry *) dir; eind = (struct elf32_arm_link_hash_entry *) ind; - if (eind->relocs_copied != NULL) + if (eind->dyn_relocs != NULL) { - if (edir->relocs_copied != NULL) + if (edir->dyn_relocs != NULL) { - struct elf32_arm_relocs_copied **pp; - struct elf32_arm_relocs_copied *p; + struct elf_dyn_relocs **pp; + struct elf_dyn_relocs *p; /* Add reloc counts against the indirect sym to the direct sym list. Merge any entries against the same section. */ - for (pp = &eind->relocs_copied; (p = *pp) != NULL; ) + for (pp = &eind->dyn_relocs; (p = *pp) != NULL; ) { - struct elf32_arm_relocs_copied *q; + struct elf_dyn_relocs *q; - for (q = edir->relocs_copied; q != NULL; q = q->next) - if (q->section == p->section) + for (q = edir->dyn_relocs; q != NULL; q = q->next) + if (q->sec == p->sec) { q->pc_count += p->pc_count; q->count += p->count; @@ -2849,20 +3247,26 @@ if (q == NULL) pp = &p->next; } - *pp = edir->relocs_copied; + *pp = edir->dyn_relocs; } - edir->relocs_copied = eind->relocs_copied; - eind->relocs_copied = NULL; + edir->dyn_relocs = eind->dyn_relocs; + eind->dyn_relocs = NULL; } if (ind->root.type == bfd_link_hash_indirect) { /* Copy over PLT info. */ - edir->plt_thumb_refcount += eind->plt_thumb_refcount; - eind->plt_thumb_refcount = 0; - edir->plt_maybe_thumb_refcount += eind->plt_maybe_thumb_refcount; - eind->plt_maybe_thumb_refcount = 0; + edir->plt.thumb_refcount += eind->plt.thumb_refcount; + eind->plt.thumb_refcount = 0; + edir->plt.maybe_thumb_refcount += eind->plt.maybe_thumb_refcount; + eind->plt.maybe_thumb_refcount = 0; + edir->plt.noncall_refcount += eind->plt.noncall_refcount; + eind->plt.noncall_refcount = 0; + + /* We should only allocate a function to .iplt once the final + symbol information is known. */ + BFD_ASSERT (!eind->is_iplt); if (dir->got.refcount <= 0) { @@ -2882,26 +3286,27 @@ struct elf32_arm_link_hash_table *ret; bfd_size_type amt = sizeof (struct elf32_arm_link_hash_table); - ret = bfd_malloc (amt); + ret = (struct elf32_arm_link_hash_table *) bfd_malloc (amt); if (ret == NULL) return NULL; if (!_bfd_elf_link_hash_table_init (& ret->root, abfd, elf32_arm_link_hash_newfunc, - sizeof (struct elf32_arm_link_hash_entry))) + sizeof (struct elf32_arm_link_hash_entry), + ARM_ELF_DATA)) { free (ret); return NULL; } - ret->sgot = NULL; - ret->sgotplt = NULL; - ret->srelgot = NULL; - ret->splt = NULL; - ret->srelplt = NULL; ret->sdynbss = NULL; ret->srelbss = NULL; ret->srelplt2 = NULL; + ret->dt_tlsdesc_plt = 0; + ret->dt_tlsdesc_got = 0; + ret->tls_trampoline = 0; + ret->next_tls_desc_index = 0; + ret->num_tls_desc = 0; ret->thumb_glue_size = 0; ret->arm_glue_size = 0; ret->bx_glue_size = 0; @@ -2933,6 +3338,7 @@ ret->add_stub_section = NULL; ret->layout_sections_again = NULL; ret->stub_group = NULL; + ret->top_id = 0; ret->bfd_count = 0; ret->top_index = 0; ret->input_list = NULL; @@ -2968,7 +3374,10 @@ Tag_CPU_arch); int profile; - if (arch != TAG_CPU_ARCH_V7) + if (arch == TAG_CPU_ARCH_V6_M || arch == TAG_CPU_ARCH_V6S_M) + return TRUE; + + if (arch != TAG_CPU_ARCH_V7 && arch != TAG_CPU_ARCH_V7E_M) return FALSE; profile = bfd_elf_get_obj_attr_int (globals->obfd, OBJ_ATTR_PROC, @@ -2996,7 +3405,8 @@ Tag_CPU_arch); return arch == TAG_CPU_ARCH_V6T2 || arch == TAG_CPU_ARCH_V6K - || arch == TAG_CPU_ARCH_V7; + || arch == TAG_CPU_ARCH_V7 + || arch == TAG_CPU_ARCH_V7E_M; } static bfd_boolean @@ -3004,7 +3414,8 @@ { const int arch = bfd_elf_get_obj_attr_int (globals->obfd, OBJ_ATTR_PROC, Tag_CPU_arch); - return arch == TAG_CPU_ARCH_V6T2 || arch == TAG_CPU_ARCH_V7; + return (arch == TAG_CPU_ARCH_V6T2 || arch == TAG_CPU_ARCH_V7 + || arch == TAG_CPU_ARCH_V7E_M); } static bfd_boolean @@ -3034,6 +3445,7 @@ asection *input_sec, const Elf_Internal_Rela *rel, unsigned char st_type, + enum arm_st_branch_type *actual_branch_type, struct elf32_arm_link_hash_entry *hash, bfd_vma destination, asection *sym_sec, @@ -3048,13 +3460,16 @@ int thumb_only; enum elf32_arm_stub_type stub_type = arm_stub_none; int use_plt = 0; + enum arm_st_branch_type branch_type = *actual_branch_type; + union gotplt_union *root_plt; + struct arm_plt_info *arm_plt; - /* We don't know the actual type of destination in case it is of - type STT_SECTION: give up. */ - if (st_type == STT_SECTION) + if (branch_type == ST_BRANCH_LONG) return stub_type; globals = elf32_arm_hash_table (info); + if (globals == NULL) + return stub_type; thumb_only = using_thumb_only (globals); @@ -3065,25 +3480,49 @@ + input_sec->output_section->vma + rel->r_offset); - branch_offset = (bfd_signed_vma)(destination - location); - r_type = ELF32_R_TYPE (rel->r_info); - /* Keep a simpler condition, for the sake of clarity. */ - if (globals->splt != NULL && hash != NULL && hash->root.plt.offset != (bfd_vma) -1) + /* For TLS call relocs, it is the caller's responsibility to provide + the address of the appropriate trampoline. */ + if (r_type != R_ARM_TLS_CALL + && r_type != R_ARM_THM_TLS_CALL + && elf32_arm_get_plt_info (input_bfd, hash, ELF32_R_SYM (rel->r_info), + &root_plt, &arm_plt) + && root_plt->offset != (bfd_vma) -1) { - use_plt = 1; - /* Note when dealing with PLT entries: the main PLT stub is in - ARM mode, so if the branch is in Thumb mode, another - Thumb->ARM stub will be inserted later just before the ARM - PLT stub. We don't take this extra distance into account - here, because if a long branch stub is needed, we'll add a - Thumb->Arm one and branch directly to the ARM PLT entry - because it avoids spreading offset corrections in several - places. */ + asection *splt; + + if (hash == NULL || hash->is_iplt) + splt = globals->root.iplt; + else + splt = globals->root.splt; + if (splt != NULL) + { + use_plt = 1; + + /* Note when dealing with PLT entries: the main PLT stub is in + ARM mode, so if the branch is in Thumb mode, another + Thumb->ARM stub will be inserted later just before the ARM + PLT stub. We don't take this extra distance into account + here, because if a long branch stub is needed, we'll add a + Thumb->Arm one and branch directly to the ARM PLT entry + because it avoids spreading offset corrections in several + places. */ + + destination = (splt->output_section->vma + + splt->output_offset + + root_plt->offset); + st_type = STT_FUNC; + branch_type = ST_BRANCH_TO_ARM; + } } + /* Calls to STT_GNU_IFUNC symbols should go through a PLT. */ + BFD_ASSERT (st_type != STT_GNU_IFUNC); - if (r_type == R_ARM_THM_CALL || r_type == R_ARM_THM_JUMP24) + branch_offset = (bfd_signed_vma)(destination - location); + + if (r_type == R_ARM_THM_CALL || r_type == R_ARM_THM_JUMP24 + || r_type == R_ARM_THM_TLS_CALL) { /* Handle cases where: - this call goes too far (different Thumb/Thumb2 max @@ -3099,12 +3538,13 @@ || (thumb2 && (branch_offset > THM2_MAX_FWD_BRANCH_OFFSET || (branch_offset < THM2_MAX_BWD_BRANCH_OFFSET))) - || ((st_type != STT_ARM_TFUNC) - && (((r_type == R_ARM_THM_CALL) && !globals->use_blx) + || (branch_type == ST_BRANCH_TO_ARM + && (((r_type == R_ARM_THM_CALL + || r_type == R_ARM_THM_TLS_CALL) && !globals->use_blx) || (r_type == R_ARM_THM_JUMP24)) && !use_plt)) { - if (st_type == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) { /* Thumb to thumb. */ if (!thumb_only) @@ -3151,18 +3591,21 @@ sym_sec->owner, input_bfd, name); } - stub_type = (info->shared | globals->pic_veneer) + stub_type = + (info->shared | globals->pic_veneer) /* PIC stubs. */ - ? ((globals->use_blx - && (r_type ==R_ARM_THM_CALL)) - /* V5T and above. */ - ? arm_stub_long_branch_any_arm_pic - /* V4T PIC stub. */ - : arm_stub_long_branch_v4t_thumb_arm_pic) + ? (r_type == R_ARM_THM_TLS_CALL + /* TLS PIC stubs */ + ? (globals->use_blx ? arm_stub_long_branch_any_tls_pic + : arm_stub_long_branch_v4t_thumb_tls_pic) + : ((globals->use_blx && r_type == R_ARM_THM_CALL) + /* V5T PIC and above. */ + ? arm_stub_long_branch_any_arm_pic + /* V4T PIC stub. */ + : arm_stub_long_branch_v4t_thumb_arm_pic)) /* non-PIC stubs. */ - : ((globals->use_blx - && (r_type ==R_ARM_THM_CALL)) + : ((globals->use_blx && r_type == R_ARM_THM_CALL) /* V5T and above. */ ? arm_stub_long_branch_any_any /* V4T. */ @@ -3176,9 +3619,12 @@ } } } - else if (r_type == R_ARM_CALL || r_type == R_ARM_JUMP24 || r_type == R_ARM_PLT32) + else if (r_type == R_ARM_CALL + || r_type == R_ARM_JUMP24 + || r_type == R_ARM_PLT32 + || r_type == R_ARM_TLS_CALL) { - if (st_type == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) { /* Arm to thumb. */ @@ -3196,7 +3642,7 @@ the mode change (bit 24 (H) of BLX encoding). */ if (branch_offset > (ARM_MAX_FWD_BRANCH_OFFSET + 2) || (branch_offset < ARM_MAX_BWD_BRANCH_OFFSET) - || ((r_type == R_ARM_CALL) && !globals->use_blx) + || (r_type == R_ARM_CALL && !globals->use_blx) || (r_type == R_ARM_JUMP24) || (r_type == R_ARM_PLT32)) { @@ -3222,15 +3668,23 @@ if (branch_offset > ARM_MAX_FWD_BRANCH_OFFSET || (branch_offset < ARM_MAX_BWD_BRANCH_OFFSET)) { - stub_type = (info->shared | globals->pic_veneer) + stub_type = + (info->shared | globals->pic_veneer) /* PIC stubs. */ - ? arm_stub_long_branch_any_arm_pic + ? (r_type == R_ARM_TLS_CALL + /* TLS PIC Stub */ + ? arm_stub_long_branch_any_tls_pic + : arm_stub_long_branch_any_arm_pic) /* non-PIC stubs. */ : arm_stub_long_branch_any_any; } } } + /* If a stub is needed, record the actual destination type. */ + if (stub_type != arm_stub_none) + *actual_branch_type = branch_type; + return stub_type; } @@ -3240,31 +3694,36 @@ elf32_arm_stub_name (const asection *input_section, const asection *sym_sec, const struct elf32_arm_link_hash_entry *hash, - const Elf_Internal_Rela *rel) + const Elf_Internal_Rela *rel, + enum elf32_arm_stub_type stub_type) { char *stub_name; bfd_size_type len; if (hash) { - len = 8 + 1 + strlen (hash->root.root.root.string) + 1 + 8 + 1; - stub_name = bfd_malloc (len); + len = 8 + 1 + strlen (hash->root.root.root.string) + 1 + 8 + 1 + 2 + 1; + stub_name = (char *) bfd_malloc (len); if (stub_name != NULL) - sprintf (stub_name, "%08x_%s+%x", + sprintf (stub_name, "%08x_%s+%x_%d", input_section->id & 0xffffffff, hash->root.root.root.string, - (int) rel->r_addend & 0xffffffff); + (int) rel->r_addend & 0xffffffff, + (int) stub_type); } else { - len = 8 + 1 + 8 + 1 + 8 + 1 + 8 + 1; - stub_name = bfd_malloc (len); + len = 8 + 1 + 8 + 1 + 8 + 1 + 8 + 1 + 2 + 1; + stub_name = (char *) bfd_malloc (len); if (stub_name != NULL) - sprintf (stub_name, "%08x_%x:%x+%x", + sprintf (stub_name, "%08x_%x:%x+%x_%d", input_section->id & 0xffffffff, sym_sec->id & 0xffffffff, - (int) ELF32_R_SYM (rel->r_info) & 0xffffffff, - (int) rel->r_addend & 0xffffffff); + ELF32_R_TYPE (rel->r_info) == R_ARM_TLS_CALL + || ELF32_R_TYPE (rel->r_info) == R_ARM_THM_TLS_CALL + ? 0 : (int) ELF32_R_SYM (rel->r_info) & 0xffffffff, + (int) rel->r_addend & 0xffffffff, + (int) stub_type); } return stub_name; @@ -3278,7 +3737,8 @@ const asection *sym_sec, struct elf_link_hash_entry *hash, const Elf_Internal_Rela *rel, - struct elf32_arm_link_hash_table *htab) + struct elf32_arm_link_hash_table *htab, + enum elf32_arm_stub_type stub_type) { struct elf32_arm_stub_hash_entry *stub_entry; struct elf32_arm_link_hash_entry *h = (struct elf32_arm_link_hash_entry *) hash; @@ -3296,7 +3756,8 @@ if (h != NULL && h->stub_cache != NULL && h->stub_cache->h == h - && h->stub_cache->id_sec == id_sec) + && h->stub_cache->id_sec == id_sec + && h->stub_cache->stub_type == stub_type) { stub_entry = h->stub_cache; } @@ -3304,7 +3765,7 @@ { char *stub_name; - stub_name = elf32_arm_stub_name (id_sec, sym_sec, h, rel); + stub_name = elf32_arm_stub_name (id_sec, sym_sec, h, rel, stub_type); if (stub_name == NULL) return NULL; @@ -3343,7 +3804,7 @@ namelen = strlen (link_sec->name); len = namelen + sizeof (STUB_SUFFIX); - s_name = bfd_alloc (htab->stub_bfd, len); + s_name = (char *) bfd_alloc (htab->stub_bfd, len); if (s_name == NULL) return NULL; @@ -3423,29 +3884,86 @@ bfd_putb16 (val, ptr); } +/* If it's possible to change R_TYPE to a more efficient access + model, return the new reloc type. */ + +static unsigned +elf32_arm_tls_transition (struct bfd_link_info *info, int r_type, + struct elf_link_hash_entry *h) +{ + int is_local = (h == NULL); + + if (info->shared || (h && h->root.type == bfd_link_hash_undefweak)) + return r_type; + + /* We do not support relaxations for Old TLS models. */ + switch (r_type) + { + case R_ARM_TLS_GOTDESC: + case R_ARM_TLS_CALL: + case R_ARM_THM_TLS_CALL: + case R_ARM_TLS_DESCSEQ: + case R_ARM_THM_TLS_DESCSEQ: + return is_local ? R_ARM_TLS_LE32 : R_ARM_TLS_IE32; + } + + return r_type; +} + static bfd_reloc_status_type elf32_arm_final_link_relocate (reloc_howto_type *, bfd *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, bfd_vma, struct bfd_link_info *, asection *, - const char *, int, struct elf_link_hash_entry *, bfd_boolean *, char **); + const char *, unsigned char, enum arm_st_branch_type, + struct elf_link_hash_entry *, bfd_boolean *, char **); -static bfd_boolean -arm_build_one_stub (struct bfd_hash_entry *gen_entry, - void * in_arg) +static unsigned int +arm_stub_required_alignment (enum elf32_arm_stub_type stub_type) { -#define MAXRELOCS 2 - struct elf32_arm_stub_hash_entry *stub_entry; - struct bfd_link_info *info; - struct elf32_arm_link_hash_table *htab; + switch (stub_type) + { + case arm_stub_a8_veneer_b_cond: + case arm_stub_a8_veneer_b: + case arm_stub_a8_veneer_bl: + return 2; + + case arm_stub_long_branch_any_any: + case arm_stub_long_branch_v4t_arm_thumb: + case arm_stub_long_branch_thumb_only: + case arm_stub_long_branch_v4t_thumb_thumb: + case arm_stub_long_branch_v4t_thumb_arm: + case arm_stub_short_branch_v4t_thumb_arm: + case arm_stub_long_branch_any_arm_pic: + case arm_stub_long_branch_any_thumb_pic: + case arm_stub_long_branch_v4t_thumb_thumb_pic: + case arm_stub_long_branch_v4t_arm_thumb_pic: + case arm_stub_long_branch_v4t_thumb_arm_pic: + case arm_stub_long_branch_thumb_only_pic: + case arm_stub_long_branch_any_tls_pic: + case arm_stub_long_branch_v4t_thumb_tls_pic: + case arm_stub_a8_veneer_blx: + return 4; + + default: + abort (); /* Should be unreachable. */ + } +} + +static bfd_boolean +arm_build_one_stub (struct bfd_hash_entry *gen_entry, + void * in_arg) +{ +#define MAXRELOCS 2 + struct elf32_arm_stub_hash_entry *stub_entry; + struct elf32_arm_link_hash_table *globals; + struct bfd_link_info *info; asection *stub_sec; bfd *stub_bfd; - bfd_vma stub_addr; bfd_byte *loc; bfd_vma sym_value; int template_size; int size; const insn_sequence *template_sequence; int i; - struct elf32_arm_link_hash_table * globals; int stub_reloc_idx[MAXRELOCS] = {-1, -1}; int stub_reloc_offset[MAXRELOCS] = {0, 0}; int nrelocs = 0; @@ -3455,26 +3973,22 @@ info = (struct bfd_link_info *) in_arg; globals = elf32_arm_hash_table (info); + if (globals == NULL) + return FALSE; - htab = elf32_arm_hash_table (info); stub_sec = stub_entry->stub_sec; - if ((htab->fix_cortex_a8 < 0) - != (stub_entry->stub_type >= arm_stub_a8_veneer_lwm)) - /* We have to do the a8 fixes last, as they are less aligned than - the other veneers. */ + if ((globals->fix_cortex_a8 < 0) + != (arm_stub_required_alignment (stub_entry->stub_type) == 2)) + /* We have to do less-strictly-aligned fixes last. */ return TRUE; - + /* Make a note of the offset within the stubs for this entry. */ stub_entry->stub_offset = stub_sec->size; loc = stub_sec->contents + stub_entry->stub_offset; stub_bfd = stub_sec->owner; - /* This is the address of the start of the stub. */ - stub_addr = stub_sec->output_section->vma + stub_sec->output_offset - + stub_entry->stub_offset; - /* This is the address of the stub destination. */ sym_value = (stub_entry->target_value + stub_entry->target_section->output_offset @@ -3499,17 +4013,17 @@ BFD_ASSERT ((data & 0xff00) == 0xd000); data |= ((stub_entry->orig_insn >> 22) & 0xf) << 8; } - put_thumb_insn (globals, stub_bfd, data, loc + size); + bfd_put_16 (stub_bfd, data, loc + size); size += 2; } break; case THUMB32_TYPE: - put_thumb_insn (globals, stub_bfd, - (template_sequence[i].data >> 16) & 0xffff, - loc + size); - put_thumb_insn (globals, stub_bfd, template_sequence[i].data & 0xffff, - loc + size + 2); + bfd_put_16 (stub_bfd, + (template_sequence[i].data >> 16) & 0xffff, + loc + size); + bfd_put_16 (stub_bfd, template_sequence[i].data & 0xffff, + loc + size + 2); if (template_sequence[i].r_type != R_ARM_NONE) { stub_reloc_idx[nrelocs] = i; @@ -3519,8 +4033,8 @@ break; case ARM_TYPE: - put_arm_insn (globals, stub_bfd, template_sequence[i].data, - loc + size); + bfd_put_32 (stub_bfd, template_sequence[i].data, + loc + size); /* Handle cases where the target is encoded within the instruction. */ if (template_sequence[i].r_type == R_ARM_JUMP24) @@ -3551,7 +4065,7 @@ BFD_ASSERT (size == stub_entry->stub_size); /* Destination is Thumb. Force bit 0 to 1 to reflect this. */ - if (stub_entry->st_type == STT_ARM_TFUNC) + if (stub_entry->branch_type == ST_BRANCH_TO_THUMB) sym_value |= 1; /* Assume there is at least one and at most MAXRELOCS entries to relocate @@ -3567,9 +4081,9 @@ Elf_Internal_Rela rel; bfd_boolean unresolved_reloc; char *error_message; - int sym_flags - = (template_sequence[stub_reloc_idx[i]].r_type != R_ARM_THM_XPC22) - ? STT_ARM_TFUNC : 0; + enum arm_st_branch_type branch_type + = (template_sequence[stub_reloc_idx[i]].r_type != R_ARM_THM_XPC22 + ? ST_BRANCH_TO_THUMB : ST_BRANCH_TO_ARM); bfd_vma points_to = sym_value + stub_entry->target_addend; rel.r_offset = stub_entry->stub_offset + stub_reloc_offset[i]; @@ -3593,17 +4107,30 @@ elf32_arm_final_link_relocate (elf32_arm_howto_from_type (template_sequence[stub_reloc_idx[i]].r_type), stub_bfd, info->output_bfd, stub_sec, stub_sec->contents, &rel, - points_to, info, stub_entry->target_section, "", sym_flags, - (struct elf_link_hash_entry *) stub_entry->h, &unresolved_reloc, - &error_message); + points_to, info, stub_entry->target_section, "", STT_FUNC, + branch_type, (struct elf_link_hash_entry *) stub_entry->h, + &unresolved_reloc, &error_message); } else { - _bfd_final_link_relocate (elf32_arm_howto_from_type - (template_sequence[stub_reloc_idx[i]].r_type), stub_bfd, stub_sec, - stub_sec->contents, stub_entry->stub_offset + stub_reloc_offset[i], - sym_value + stub_entry->target_addend, - template_sequence[stub_reloc_idx[i]].reloc_addend); + Elf_Internal_Rela rel; + bfd_boolean unresolved_reloc; + char *error_message; + bfd_vma points_to = sym_value + stub_entry->target_addend + + template_sequence[stub_reloc_idx[i]].reloc_addend; + + rel.r_offset = stub_entry->stub_offset + stub_reloc_offset[i]; + rel.r_info = ELF32_R_INFO (0, + template_sequence[stub_reloc_idx[i]].r_type); + rel.r_addend = 0; + + elf32_arm_final_link_relocate (elf32_arm_howto_from_type + (template_sequence[stub_reloc_idx[i]].r_type), + stub_bfd, info->output_bfd, stub_sec, stub_sec->contents, &rel, + points_to, info, stub_entry->target_section, "", STT_FUNC, + stub_entry->branch_type, + (struct elf_link_hash_entry *) stub_entry->h, &unresolved_reloc, + &error_message); } return TRUE; @@ -3623,7 +4150,12 @@ unsigned int size; template_sequence = stub_definitions[stub_type].template_sequence; + if (stub_template) + *stub_template = template_sequence; + template_size = stub_definitions[stub_type].template_size; + if (stub_template_size) + *stub_template_size = template_size; size = 0; for (i = 0; i < template_size; i++) @@ -3642,16 +4174,10 @@ default: BFD_FAIL (); - return FALSE; + return 0; } } - if (stub_template) - *stub_template = template_sequence; - - if (stub_template_size) - *stub_template_size = template_size; - return size; } @@ -3660,16 +4186,14 @@ static bfd_boolean arm_size_one_stub (struct bfd_hash_entry *gen_entry, - void * in_arg) + void *in_arg ATTRIBUTE_UNUSED) { struct elf32_arm_stub_hash_entry *stub_entry; - struct elf32_arm_link_hash_table *htab; const insn_sequence *template_sequence; int template_size, size; /* Massage our args to the form they really have. */ stub_entry = (struct elf32_arm_stub_hash_entry *) gen_entry; - htab = (struct elf32_arm_link_hash_table *) in_arg; BFD_ASSERT((stub_entry->stub_type > arm_stub_none) && stub_entry->stub_type < ARRAY_SIZE(stub_definitions)); @@ -3705,6 +4229,8 @@ bfd_size_type amt; struct elf32_arm_link_hash_table *htab = elf32_arm_hash_table (info); + if (htab == NULL) + return 0; if (! is_elf_hash_table (htab)) return 0; @@ -3725,9 +4251,10 @@ htab->bfd_count = bfd_count; amt = sizeof (struct map_stub) * (top_id + 1); - htab->stub_group = bfd_zmalloc (amt); + htab->stub_group = (struct map_stub *) bfd_zmalloc (amt); if (htab->stub_group == NULL) return -1; + htab->top_id = top_id; /* We can't use output_bfd->section_count here to find the top output section index as some sections may have been removed, and @@ -3742,7 +4269,7 @@ htab->top_index = top_index; amt = sizeof (asection *) * (top_index + 1); - input_list = bfd_malloc (amt); + input_list = (asection **) bfd_malloc (amt); htab->input_list = input_list; if (input_list == NULL) return -1; @@ -3776,11 +4303,14 @@ { struct elf32_arm_link_hash_table *htab = elf32_arm_hash_table (info); + if (htab == NULL) + return; + if (isec->output_section->index <= htab->top_index) { asection **list = htab->input_list + isec->output_section->index; - if (*list != bfd_abs_section_ptr) + if (*list != bfd_abs_section_ptr && (isec->flags & SEC_CODE) != 0) { /* Steal the link_sec pointer for our list. */ #define PREV_SEC(sec) (htab->stub_group[(sec)->id].link_sec) @@ -3899,7 +4429,8 @@ static int a8_reloc_compare (const void *a, const void *b) { - const struct a8_erratum_reloc *ra = a, *rb = b; + const struct a8_erratum_reloc *ra = (const struct a8_erratum_reloc *) a; + const struct a8_erratum_reloc *rb = (const struct a8_erratum_reloc *) b; if (ra->from < rb->from) return -1; @@ -3934,6 +4465,9 @@ unsigned int num_a8_fixes = *num_a8_fixes_p; unsigned int a8_fix_table_size = *a8_fix_table_size_p; + if (htab == NULL) + return FALSE; + for (section = input_bfd->sections; section != NULL; section = section->next) @@ -4009,14 +4543,14 @@ } is_32bit_branch = is_b || is_bl || is_blx || is_bcc; - + if (((base_vma + i) & 0xfff) == 0xffe && insn_32bit && is_32bit_branch && last_was_32bit && ! last_was_branch) { - bfd_signed_vma offset; + bfd_signed_vma offset = 0; bfd_boolean force_target_arm = FALSE; bfd_boolean force_target_thumb = FALSE; bfd_vma target; @@ -4024,14 +4558,16 @@ struct a8_erratum_reloc key, *found; key.from = base_vma + i; - found = bsearch (&key, a8_relocs, num_a8_relocs, - sizeof (struct a8_erratum_reloc), - &a8_reloc_compare); + found = (struct a8_erratum_reloc *) + bsearch (&key, a8_relocs, num_a8_relocs, + sizeof (struct a8_erratum_reloc), + &a8_reloc_compare); if (found) { char *error_message = NULL; struct elf_link_hash_entry *entry; + bfd_boolean use_plt = FALSE; /* We don't care about the error returned from this function, only if there is glue or not. */ @@ -4041,12 +4577,19 @@ if (entry) found->non_a8_stub = TRUE; - if (found->r_type == R_ARM_THM_CALL - && found->st_type != STT_ARM_TFUNC) - force_target_arm = TRUE; - else if (found->r_type == R_ARM_THM_CALL - && found->st_type == STT_ARM_TFUNC) - force_target_thumb = TRUE; + /* Keep a simpler condition, for the sake of clarity. */ + if (htab->root.splt != NULL && found->hash != NULL + && found->hash->root.plt.offset != (bfd_vma) -1) + use_plt = TRUE; + + if (found->r_type == R_ARM_THM_CALL) + { + if (found->branch_type == ST_BRANCH_TO_ARM + || use_plt) + force_target_arm = TRUE; + else + force_target_thumb = TRUE; + } } /* Check if we have an offending branch instruction. */ @@ -4143,9 +4686,10 @@ if (num_a8_fixes == a8_fix_table_size) { a8_fix_table_size *= 2; - a8_fixes = bfd_realloc (a8_fixes, - sizeof (struct a8_erratum_fix) - * a8_fix_table_size); + a8_fixes = (struct a8_erratum_fix *) + bfd_realloc (a8_fixes, + sizeof (struct a8_erratum_fix) + * a8_fix_table_size); } if (num_a8_fixes < prev_num_a8_fixes) @@ -4166,7 +4710,7 @@ if (!stub_name) { - stub_name = bfd_malloc (8 + 1 + 8 + 1); + stub_name = (char *) bfd_malloc (8 + 1 + 8 + 1); if (stub_name != NULL) sprintf (stub_name, "%x:%x", section->id, i); } @@ -4178,6 +4722,8 @@ a8_fixes[num_a8_fixes].orig_insn = insn; a8_fixes[num_a8_fixes].stub_name = stub_name; a8_fixes[num_a8_fixes].stub_type = stub_type; + a8_fixes[num_a8_fixes].branch_type = + is_blx ? ST_BRANCH_TO_ARM : ST_BRANCH_TO_THUMB; num_a8_fixes++; } @@ -4193,11 +4739,11 @@ if (elf_section_data (section)->this_hdr.contents == NULL) free (contents); } - + *a8_fixes_p = a8_fixes; *num_a8_fixes_p = num_a8_fixes; *a8_fix_table_size_p = a8_fix_table_size; - + return FALSE; } @@ -4223,12 +4769,15 @@ struct a8_erratum_reloc *a8_relocs = NULL; unsigned int num_a8_relocs = 0, a8_reloc_table_size = 10, i; + if (htab == NULL) + return FALSE; + if (htab->fix_cortex_a8) { - a8_fixes = bfd_zmalloc (sizeof (struct a8_erratum_fix) - * a8_fix_table_size); - a8_relocs = bfd_zmalloc (sizeof (struct a8_erratum_reloc) - * a8_reloc_table_size); + a8_fixes = (struct a8_erratum_fix *) + bfd_zmalloc (sizeof (struct a8_erratum_fix) * a8_fix_table_size); + a8_relocs = (struct a8_erratum_reloc *) + bfd_zmalloc (sizeof (struct a8_erratum_reloc) * a8_reloc_table_size); } /* Propagate mach to stub bfd, because it may not have been @@ -4346,6 +4895,7 @@ char *stub_name; const asection *id_sec; unsigned char st_type; + enum arm_st_branch_type branch_type; bfd_boolean created_stub = FALSE; r_type = ELF32_R_TYPE (irela->r_info); @@ -4359,15 +4909,30 @@ free (internal_relocs); goto error_ret_free_local; } - - /* Only look for stubs on branch instructions. */ + + hash = NULL; + if (r_indx >= symtab_hdr->sh_info) + hash = elf32_arm_hash_entry + (elf_sym_hashes (input_bfd) + [r_indx - symtab_hdr->sh_info]); + + /* Only look for stubs on branch instructions, or + non-relaxed TLSCALL */ if ((r_type != (unsigned int) R_ARM_CALL) && (r_type != (unsigned int) R_ARM_THM_CALL) && (r_type != (unsigned int) R_ARM_JUMP24) && (r_type != (unsigned int) R_ARM_THM_JUMP19) && (r_type != (unsigned int) R_ARM_THM_XPC22) && (r_type != (unsigned int) R_ARM_THM_JUMP24) - && (r_type != (unsigned int) R_ARM_PLT32)) + && (r_type != (unsigned int) R_ARM_PLT32) + && !((r_type == (unsigned int) R_ARM_TLS_CALL + || r_type == (unsigned int) R_ARM_THM_TLS_CALL) + && r_type == elf32_arm_tls_transition + (info, r_type, &hash->root) + && ((hash ? hash->tls_type + : (elf32_arm_local_got_tls_type + (input_bfd)[r_indx])) + & GOT_TLS_GDESC) != 0)) continue; /* Now determine the call target, its name, value, @@ -4375,13 +4940,25 @@ sym_sec = NULL; sym_value = 0; destination = 0; - hash = NULL; sym_name = NULL; - if (r_indx < symtab_hdr->sh_info) + + if (r_type == (unsigned int) R_ARM_TLS_CALL + || r_type == (unsigned int) R_ARM_THM_TLS_CALL) + { + /* A non-relaxed TLS call. The target is the + plt-resident trampoline and nothing to do + with the symbol. */ + BFD_ASSERT (htab->tls_trampoline > 0); + sym_sec = htab->root.splt; + sym_value = htab->tls_trampoline; + hash = 0; + st_type = STT_FUNC; + branch_type = ST_BRANCH_TO_ARM; + } + else if (!hash) { /* It's a local symbol. */ Elf_Internal_Sym *sym; - Elf_Internal_Shdr *hdr; if (local_syms == NULL) { @@ -4397,19 +4974,28 @@ } sym = local_syms + r_indx; - hdr = elf_elfsections (input_bfd)[sym->st_shndx]; - sym_sec = hdr->bfd_section; + if (sym->st_shndx == SHN_UNDEF) + sym_sec = bfd_und_section_ptr; + else if (sym->st_shndx == SHN_ABS) + sym_sec = bfd_abs_section_ptr; + else if (sym->st_shndx == SHN_COMMON) + sym_sec = bfd_com_section_ptr; + else + sym_sec = + bfd_section_from_elf_index (input_bfd, sym->st_shndx); + if (!sym_sec) /* This is an undefined symbol. It can never be resolved. */ continue; - + if (ELF_ST_TYPE (sym->st_info) != STT_SECTION) sym_value = sym->st_value; destination = (sym_value + irela->r_addend + sym_sec->output_offset + sym_sec->output_section->vma); st_type = ELF_ST_TYPE (sym->st_info); + branch_type = ARM_SYM_BRANCH_TYPE (sym); sym_name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, @@ -4418,12 +5004,6 @@ else { /* It's an external symbol. */ - int e_indx; - - e_indx = r_indx - symtab_hdr->sh_info; - hash = ((struct elf32_arm_link_hash_entry *) - elf_sym_hashes (input_bfd)[e_indx]); - while (hash->root.root.type == bfd_link_hash_indirect || hash->root.root.type == bfd_link_hash_warning) hash = ((struct elf32_arm_link_hash_entry *) @@ -4442,10 +5022,12 @@ use the PLT stub as target address to decide whether a branch stub is needed. */ - if (globals->splt != NULL && hash != NULL + if (globals != NULL + && globals->root.splt != NULL + && hash != NULL && hash->root.plt.offset != (bfd_vma) -1) { - sym_sec = globals->splt; + sym_sec = globals->root.splt; sym_value = hash->root.plt.offset; if (sym_sec->output_section != NULL) destination = (sym_value @@ -4467,10 +5049,12 @@ struct elf32_arm_link_hash_table *globals = elf32_arm_hash_table (info); - if (globals->splt != NULL && hash != NULL + if (globals != NULL + && globals->root.splt != NULL + && hash != NULL && hash->root.plt.offset != (bfd_vma) -1) { - sym_sec = globals->splt; + sym_sec = globals->root.splt; sym_value = hash->root.plt.offset; if (sym_sec->output_section != NULL) destination = (sym_value @@ -4485,7 +5069,8 @@ bfd_set_error (bfd_error_bad_value); goto error_ret_free_internal; } - st_type = ELF_ST_TYPE (hash->root.type); + st_type = hash->root.type; + branch_type = hash->root.target_internal; sym_name = hash->root.root.root.string; } @@ -4493,8 +5078,8 @@ { /* Determine what (if any) linker stub is needed. */ stub_type = arm_type_of_stub (info, section, irela, - st_type, hash, - destination, sym_sec, + st_type, &branch_type, + hash, destination, sym_sec, input_bfd, sym_name); if (stub_type == arm_stub_none) break; @@ -4504,7 +5089,7 @@ /* Get the name of this stub. */ stub_name = elf32_arm_stub_name (id_sec, sym_sec, hash, - irela); + irela, stub_type); if (!stub_name) goto error_ret_free_internal; @@ -4535,12 +5120,12 @@ stub_entry->target_section = sym_sec; stub_entry->stub_type = stub_type; stub_entry->h = hash; - stub_entry->st_type = st_type; + stub_entry->branch_type = branch_type; if (sym_name == NULL) sym_name = "unnamed"; - stub_entry->output_name - = bfd_alloc (htab->stub_bfd, + stub_entry->output_name = (char *) + bfd_alloc (htab->stub_bfd, sizeof (THUMB2ARM_GLUE_ENTRY_NAME) + strlen (sym_name)); if (stub_entry->output_name == NULL) @@ -4551,14 +5136,14 @@ /* For historical reasons, use the existing names for ARM-to-Thumb and Thumb-to-ARM stubs. */ - if ( ((r_type == (unsigned int) R_ARM_THM_CALL) - || (r_type == (unsigned int) R_ARM_THM_JUMP24)) - && st_type != STT_ARM_TFUNC) + if ((r_type == (unsigned int) R_ARM_THM_CALL + || r_type == (unsigned int) R_ARM_THM_JUMP24) + && branch_type == ST_BRANCH_TO_ARM) sprintf (stub_entry->output_name, THUMB2ARM_GLUE_ENTRY_NAME, sym_name); - else if ( ((r_type == (unsigned int) R_ARM_CALL) - || (r_type == (unsigned int) R_ARM_JUMP24)) - && st_type == STT_ARM_TFUNC) + else if ((r_type == (unsigned int) R_ARM_CALL + || r_type == (unsigned int) R_ARM_JUMP24) + && branch_type == ST_BRANCH_TO_THUMB) sprintf (stub_entry->output_name, ARM2THUMB_GLUE_ENTRY_NAME, sym_name); else @@ -4591,17 +5176,19 @@ if (num_a8_relocs == a8_reloc_table_size) { a8_reloc_table_size *= 2; - a8_relocs = bfd_realloc (a8_relocs, - sizeof (struct a8_erratum_reloc) - * a8_reloc_table_size); + a8_relocs = (struct a8_erratum_reloc *) + bfd_realloc (a8_relocs, + sizeof (struct a8_erratum_reloc) + * a8_reloc_table_size); } a8_relocs[num_a8_relocs].from = from; a8_relocs[num_a8_relocs].destination = destination; a8_relocs[num_a8_relocs].r_type = r_type; - a8_relocs[num_a8_relocs].st_type = st_type; + a8_relocs[num_a8_relocs].branch_type = branch_type; a8_relocs[num_a8_relocs].sym_name = sym_name; a8_relocs[num_a8_relocs].non_a8_stub = created_stub; + a8_relocs[num_a8_relocs].hash = hash; num_a8_relocs++; } @@ -4703,7 +5290,7 @@ stub_entry->target_value = a8_fixes[i].offset; stub_entry->target_addend = a8_fixes[i].addend; stub_entry->orig_insn = a8_fixes[i].orig_insn; - stub_entry->st_type = STT_ARM_TFUNC; + stub_entry->branch_type = a8_fixes[i].branch_type; size = find_stub_size_and_template (a8_fixes[i].stub_type, &template_sequence, @@ -4744,6 +5331,8 @@ struct elf32_arm_link_hash_table *htab; htab = elf32_arm_hash_table (info); + if (htab == NULL) + return FALSE; for (stub_sec = htab->stub_bfd->sections; stub_sec != NULL; @@ -4757,7 +5346,7 @@ /* Allocate memory to hold the linker stubs. */ size = stub_sec->size; - stub_sec->contents = bfd_zalloc (htab->stub_bfd, size); + stub_sec->contents = (unsigned char *) bfd_zalloc (htab->stub_bfd, size); if (stub_sec->contents == NULL && size != 0) return FALSE; stub_sec->size = 0; @@ -4789,9 +5378,11 @@ /* We need a pointer to the armelf specific hash table. */ hash_table = elf32_arm_hash_table (link_info); + if (hash_table == NULL) + return NULL; - tmp_name = bfd_malloc ((bfd_size_type) strlen (name) - + strlen (THUMB2ARM_GLUE_ENTRY_NAME) + 1); + tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen (name) + + strlen (THUMB2ARM_GLUE_ENTRY_NAME) + 1); BFD_ASSERT (tmp_name); @@ -4823,9 +5414,11 @@ /* We need a pointer to the elfarm specific hash table. */ hash_table = elf32_arm_hash_table (link_info); + if (hash_table == NULL) + return NULL; - tmp_name = bfd_malloc ((bfd_size_type) strlen (name) - + strlen (ARM2THUMB_GLUE_ENTRY_NAME) + 1); + tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen (name) + + strlen (ARM2THUMB_GLUE_ENTRY_NAME) + 1); BFD_ASSERT (tmp_name); @@ -4935,7 +5528,7 @@ s = bfd_get_section_by_name (abfd, name); BFD_ASSERT (s != NULL); - contents = bfd_alloc (abfd, size); + contents = (bfd_byte *) bfd_alloc (abfd, size); BFD_ASSERT (s->size == size); s->contents = contents; @@ -4985,7 +5578,6 @@ bfd_size_type size; globals = elf32_arm_hash_table (link_info); - BFD_ASSERT (globals != NULL); BFD_ASSERT (globals->bfd_of_glue_owner != NULL); @@ -4994,7 +5586,8 @@ BFD_ASSERT (s != NULL); - tmp_name = bfd_malloc ((bfd_size_type) strlen (name) + strlen (ARM2THUMB_GLUE_ENTRY_NAME) + 1); + tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen (name) + + strlen (ARM2THUMB_GLUE_ENTRY_NAME) + 1); BFD_ASSERT (tmp_name); @@ -5057,7 +5650,6 @@ return; globals = elf32_arm_hash_table (link_info); - BFD_ASSERT (globals != NULL); BFD_ASSERT (globals->bfd_of_glue_owner != NULL); @@ -5071,7 +5663,8 @@ BFD_ASSERT (s != NULL); /* Add symbol for veneer. */ - tmp_name = bfd_malloc ((bfd_size_type) strlen (ARM_BX_GLUE_ENTRY_NAME) + 1); + tmp_name = (char *) + bfd_malloc ((bfd_size_type) strlen (ARM_BX_GLUE_ENTRY_NAME) + 1); BFD_ASSERT (tmp_name); @@ -5108,7 +5701,8 @@ if (sec_data->map == NULL) { - sec_data->map = bfd_malloc (sizeof (elf32_arm_section_map)); + sec_data->map = (elf32_arm_section_map *) + bfd_malloc (sizeof (elf32_arm_section_map)); sec_data->mapcount = 0; sec_data->mapsize = 1; } @@ -5118,8 +5712,9 @@ if (sec_data->mapcount > sec_data->mapsize) { sec_data->mapsize *= 2; - sec_data->map = bfd_realloc_or_free (sec_data->map, sec_data->mapsize - * sizeof (elf32_arm_section_map)); + sec_data->map = (elf32_arm_section_map *) + bfd_realloc_or_free (sec_data->map, sec_data->mapsize + * sizeof (elf32_arm_section_map)); } if (sec_data->map) @@ -5147,11 +5742,9 @@ struct bfd_link_hash_entry *bh; bfd_vma val; struct _arm_elf_section_data *sec_data; - int errcount; elf32_vfp11_erratum_list *newerr; hash_table = elf32_arm_hash_table (link_info); - BFD_ASSERT (hash_table != NULL); BFD_ASSERT (hash_table->bfd_of_glue_owner != NULL); @@ -5162,8 +5755,8 @@ BFD_ASSERT (s != NULL); - tmp_name = bfd_malloc ((bfd_size_type) strlen - (VFP11_ERRATUM_VENEER_ENTRY_NAME) + 10); + tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen + (VFP11_ERRATUM_VENEER_ENTRY_NAME) + 10); BFD_ASSERT (tmp_name); @@ -5186,8 +5779,9 @@ myh->forced_local = 1; /* Link veneer back to calling location. */ - errcount = ++(sec_data->erratumcount); - newerr = bfd_zmalloc (sizeof (elf32_vfp11_erratum_list)); + sec_data->erratumcount += 1; + newerr = (elf32_vfp11_erratum_list *) + bfd_zmalloc (sizeof (elf32_vfp11_erratum_list)); newerr->type = VFP11_ERRATUM_ARM_VENEER; newerr->vma = -1; @@ -5315,7 +5909,6 @@ BFD_ASSERT (!(abfd->flags & DYNAMIC)); globals = elf32_arm_hash_table (info); - BFD_ASSERT (globals != NULL); if (globals->bfd_of_glue_owner != NULL) @@ -5355,7 +5948,6 @@ /* Here we have a bfd that is to be included on the link. We have a hook to do reloc rummaging, before section sizes are nailed down. */ globals = elf32_arm_hash_table (link_info); - BFD_ASSERT (globals != NULL); check_use_blx (globals); @@ -5454,7 +6046,7 @@ /* If the call will go through a PLT entry then we do not need glue. */ - if (globals->splt != NULL && h->plt.offset != (bfd_vma) -1) + if (globals->root.splt != NULL && h->plt.offset != (bfd_vma) -1) continue; switch (r_type) @@ -5463,7 +6055,7 @@ /* This one is a call from arm code. We need to look up the target of the call. If it is a thumb target, we insert glue. */ - if (ELF_ST_TYPE (h->type) == STT_ARM_TFUNC) + if (h->target_internal == ST_BRANCH_TO_THUMB) record_arm_to_thumb_glue (link_info, h); break; @@ -5556,6 +6148,9 @@ struct elf32_arm_link_hash_table *globals = elf32_arm_hash_table (link_info); obj_attribute *out_attr = elf_known_obj_attributes_proc (obfd); + if (globals == NULL) + return; + if (globals->fix_cortex_a8 == -1) { /* Turn on Cortex-A8 erratum workaround for ARMv7-A. */ @@ -5575,6 +6170,8 @@ struct elf32_arm_link_hash_table *globals = elf32_arm_hash_table (link_info); obj_attribute *out_attr = elf_known_obj_attributes_proc (obfd); + if (globals == NULL) + return; /* We assume that ARMv7+ does not need the VFP11 denorm erratum fix. */ if (out_attr[Tag_CPU_arch].i >= TAG_CPU_ARCH_V7) { @@ -5679,7 +6276,7 @@ bfd_arm_vfp11_insn_decode (unsigned int insn, unsigned int *destmask, int *regs, int *numregs) { - enum bfd_arm_vfp11_pipe pipe = VFP11_BAD; + enum bfd_arm_vfp11_pipe vpipe = VFP11_BAD; bfd_boolean is_double = ((insn & 0xf00) == 0xb00) ? 1 : 0; if ((insn & 0x0f000e10) == 0x0e000a00) /* A data-processing insn. */ @@ -5698,7 +6295,7 @@ case 1: /* fnmac[sd]. */ case 2: /* fmsc[sd]. */ case 3: /* fnmsc[sd]. */ - pipe = VFP11_FMAC; + vpipe = VFP11_FMAC; bfd_arm_vfp11_write_mask (destmask, fd); regs[0] = fd; regs[1] = bfd_arm_vfp11_regno (insn, is_double, 16, 7); /* Fn. */ @@ -5710,11 +6307,11 @@ case 5: /* fnmul[sd]. */ case 6: /* fadd[sd]. */ case 7: /* fsub[sd]. */ - pipe = VFP11_FMAC; + vpipe = VFP11_FMAC; goto vfp_binop; case 8: /* fdiv[sd]. */ - pipe = VFP11_DS; + vpipe = VFP11_DS; vfp_binop: bfd_arm_vfp11_write_mask (destmask, fd); regs[0] = bfd_arm_vfp11_regno (insn, is_double, 16, 7); /* Fn. */ @@ -5744,14 +6341,14 @@ case 27: /* ftosiz[sd]. */ /* These instructions will not bounce due to underflow. */ *numregs = 0; - pipe = VFP11_FMAC; + vpipe = VFP11_FMAC; break; case 3: /* fsqrt[sd]. */ /* fsqrt cannot underflow, but it can (perhaps) overwrite registers to cause the erratum in previous instructions. */ bfd_arm_vfp11_write_mask (destmask, fd); - pipe = VFP11_DS; + vpipe = VFP11_DS; break; case 15: /* fcvt{ds,sd}. */ @@ -5766,7 +6363,7 @@ *numregs = rnum; - pipe = VFP11_FMAC; + vpipe = VFP11_FMAC; } break; @@ -5796,7 +6393,7 @@ } } - pipe = VFP11_LS; + vpipe = VFP11_LS; } else if ((insn & 0x0e100e00) == 0x0c100a00) /* A load insn. */ { @@ -5831,7 +6428,7 @@ return VFP11_BAD; } - pipe = VFP11_LS; + vpipe = VFP11_LS; } /* Single-register transfer. Note L==0. */ else if ((insn & 0x0f100e10) == 0x0e000a10) @@ -5853,10 +6450,10 @@ break; } - pipe = VFP11_LS; + vpipe = VFP11_LS; } - return pipe; + return vpipe; } @@ -5878,6 +6475,9 @@ struct elf32_arm_link_hash_table *globals = elf32_arm_hash_table (link_info); int use_vector = (globals->vfp11_fix == BFD_ARM_VFP11_FIX_VECTOR); + if (globals == NULL) + return FALSE; + /* We use a simple FSM to match troublesome VFP11 instruction sequences. The states transition as follows: @@ -5976,17 +6576,17 @@ | (contents[i + 1] << 8) | contents[i]; unsigned int writemask = 0; - enum bfd_arm_vfp11_pipe pipe; + enum bfd_arm_vfp11_pipe vpipe; switch (state) { case 0: - pipe = bfd_arm_vfp11_insn_decode (insn, &writemask, regs, + vpipe = bfd_arm_vfp11_insn_decode (insn, &writemask, regs, &numregs); /* I'm assuming the VFP11 erratum can trigger with denorm operands on either the FMAC or the DS pipeline. This might lead to slightly overenthusiastic veneer insertion. */ - if (pipe == VFP11_FMAC || pipe == VFP11_DS) + if (vpipe == VFP11_FMAC || vpipe == VFP11_DS) { state = use_vector ? 1 : 2; first_fmac = i; @@ -5997,10 +6597,10 @@ case 1: { int other_regs[3], other_numregs; - pipe = bfd_arm_vfp11_insn_decode (insn, &writemask, + vpipe = bfd_arm_vfp11_insn_decode (insn, &writemask, other_regs, &other_numregs); - if (pipe != VFP11_BAD + if (vpipe != VFP11_BAD && bfd_arm_vfp11_antidependency (writemask, regs, numregs)) state = 3; @@ -6012,10 +6612,10 @@ case 2: { int other_regs[3], other_numregs; - pipe = bfd_arm_vfp11_insn_decode (insn, &writemask, + vpipe = bfd_arm_vfp11_insn_decode (insn, &writemask, other_regs, &other_numregs); - if (pipe != VFP11_BAD + if (vpipe != VFP11_BAD && bfd_arm_vfp11_antidependency (writemask, regs, numregs)) state = 3; @@ -6033,11 +6633,10 @@ if (state == 3) { - elf32_vfp11_erratum_list *newerr - = bfd_zmalloc (sizeof (elf32_vfp11_erratum_list)); - int errcount; + elf32_vfp11_erratum_list *newerr =(elf32_vfp11_erratum_list *) + bfd_zmalloc (sizeof (elf32_vfp11_erratum_list)); - errcount = ++(elf32_arm_section_data (sec)->erratumcount); + elf32_arm_section_data (sec)->erratumcount += 1; newerr->u.b.vfp_insn = veneer_of_insn; @@ -6101,9 +6700,11 @@ return; globals = elf32_arm_hash_table (link_info); + if (globals == NULL) + return; - tmp_name = bfd_malloc ((bfd_size_type) strlen - (VFP11_ERRATUM_VENEER_ENTRY_NAME) + 10); + tmp_name = (char *) bfd_malloc ((bfd_size_type) strlen + (VFP11_ERRATUM_VENEER_ENTRY_NAME) + 10); for (sec = abfd->sections; sec != NULL; sec = sec->next) { @@ -6183,6 +6784,8 @@ struct elf32_arm_link_hash_table *globals; globals = elf32_arm_hash_table (link_info); + if (globals == NULL) + return; globals->target1_is_rel = target1_is_rel; if (strcmp (target2_type, "rel") == 0) @@ -6258,7 +6861,6 @@ return FALSE; globals = elf32_arm_hash_table (info); - BFD_ASSERT (globals != NULL); BFD_ASSERT (globals->bfd_of_glue_owner != NULL); @@ -6356,7 +6958,6 @@ return NULL; globals = elf32_arm_hash_table (info); - BFD_ASSERT (globals != NULL); BFD_ASSERT (globals->bfd_of_glue_owner != NULL); @@ -6452,7 +7053,6 @@ struct elf32_arm_link_hash_table * globals; globals = elf32_arm_hash_table (info); - BFD_ASSERT (globals != NULL); BFD_ASSERT (globals->bfd_of_glue_owner != NULL); @@ -6507,7 +7107,6 @@ return TRUE; globals = elf32_arm_hash_table (info); - BFD_ASSERT (globals != NULL); BFD_ASSERT (globals->bfd_of_glue_owner != NULL); @@ -6543,7 +7142,6 @@ struct elf32_arm_link_hash_table *globals; globals = elf32_arm_hash_table (info); - BFD_ASSERT (globals != NULL); BFD_ASSERT (globals->bfd_of_glue_owner != NULL); @@ -6581,6 +7179,9 @@ return; globals = elf32_arm_hash_table (link_info); + if (globals == NULL) + return; + /* If blx is available then exported Thumb symbols are OK and there is nothing to do. */ if (globals->use_blx) @@ -6590,6 +7191,339 @@ link_info); } +/* Reserve space for COUNT dynamic relocations in relocation selection + SRELOC. */ + +static void +elf32_arm_allocate_dynrelocs (struct bfd_link_info *info, asection *sreloc, + bfd_size_type count) +{ + struct elf32_arm_link_hash_table *htab; + + htab = elf32_arm_hash_table (info); + BFD_ASSERT (htab->root.dynamic_sections_created); + if (sreloc == NULL) + abort (); + sreloc->size += RELOC_SIZE (htab) * count; +} + +/* Reserve space for COUNT R_ARM_IRELATIVE relocations. If the link is + dynamic, the relocations should go in SRELOC, otherwise they should + go in the special .rel.iplt section. */ + +static void +elf32_arm_allocate_irelocs (struct bfd_link_info *info, asection *sreloc, + bfd_size_type count) +{ + struct elf32_arm_link_hash_table *htab; + + htab = elf32_arm_hash_table (info); + if (!htab->root.dynamic_sections_created) + htab->root.irelplt->size += RELOC_SIZE (htab) * count; + else + { + BFD_ASSERT (sreloc != NULL); + sreloc->size += RELOC_SIZE (htab) * count; + } +} + +/* Add relocation REL to the end of relocation section SRELOC. */ + +static void +elf32_arm_add_dynreloc (bfd *output_bfd, struct bfd_link_info *info, + asection *sreloc, Elf_Internal_Rela *rel) +{ + bfd_byte *loc; + struct elf32_arm_link_hash_table *htab; + + htab = elf32_arm_hash_table (info); + if (!htab->root.dynamic_sections_created + && ELF32_R_TYPE (rel->r_info) == R_ARM_IRELATIVE) + sreloc = htab->root.irelplt; + if (sreloc == NULL) + abort (); + loc = sreloc->contents; + loc += sreloc->reloc_count++ * RELOC_SIZE (htab); + if (sreloc->reloc_count * RELOC_SIZE (htab) > sreloc->size) + abort (); + SWAP_RELOC_OUT (htab) (output_bfd, rel, loc); +} + +/* Allocate room for a PLT entry described by ROOT_PLT and ARM_PLT. + IS_IPLT_ENTRY says whether the entry belongs to .iplt rather than + to .plt. */ + +static void +elf32_arm_allocate_plt_entry (struct bfd_link_info *info, + bfd_boolean is_iplt_entry, + union gotplt_union *root_plt, + struct arm_plt_info *arm_plt) +{ + struct elf32_arm_link_hash_table *htab; + asection *splt; + asection *sgotplt; + + htab = elf32_arm_hash_table (info); + + if (is_iplt_entry) + { + splt = htab->root.iplt; + sgotplt = htab->root.igotplt; + + /* Allocate room for an R_ARM_IRELATIVE relocation in .rel.iplt. */ + elf32_arm_allocate_irelocs (info, htab->root.irelplt, 1); + } + else + { + splt = htab->root.splt; + sgotplt = htab->root.sgotplt; + + /* Allocate room for an R_JUMP_SLOT relocation in .rel.plt. */ + elf32_arm_allocate_dynrelocs (info, htab->root.srelplt, 1); + + /* If this is the first .plt entry, make room for the special + first entry. */ + if (splt->size == 0) + splt->size += htab->plt_header_size; + } + + /* Allocate the PLT entry itself, including any leading Thumb stub. */ + if (elf32_arm_plt_needs_thumb_stub_p (info, arm_plt)) + splt->size += PLT_THUMB_STUB_SIZE; + root_plt->offset = splt->size; + splt->size += htab->plt_entry_size; + + if (!htab->symbian_p) + { + /* We also need to make an entry in the .got.plt section, which + will be placed in the .got section by the linker script. */ + arm_plt->got_offset = sgotplt->size - 8 * htab->num_tls_desc; + sgotplt->size += 4; + } +} + +/* Fill in a PLT entry and its associated GOT slot. If DYNINDX == -1, + the entry lives in .iplt and resolves to (*SYM_VALUE)(). + Otherwise, DYNINDX is the index of the symbol in the dynamic + symbol table and SYM_VALUE is undefined. + + ROOT_PLT points to the offset of the PLT entry from the start of its + section (.iplt or .plt). ARM_PLT points to the symbol's ARM-specific + bookkeeping information. */ + +static void +elf32_arm_populate_plt_entry (bfd *output_bfd, struct bfd_link_info *info, + union gotplt_union *root_plt, + struct arm_plt_info *arm_plt, + int dynindx, bfd_vma sym_value) +{ + struct elf32_arm_link_hash_table *htab; + asection *sgot; + asection *splt; + asection *srel; + bfd_byte *loc; + bfd_vma plt_index; + Elf_Internal_Rela rel; + bfd_vma plt_header_size; + bfd_vma got_header_size; + + htab = elf32_arm_hash_table (info); + + /* Pick the appropriate sections and sizes. */ + if (dynindx == -1) + { + splt = htab->root.iplt; + sgot = htab->root.igotplt; + srel = htab->root.irelplt; + + /* There are no reserved entries in .igot.plt, and no special + first entry in .iplt. */ + got_header_size = 0; + plt_header_size = 0; + } + else + { + splt = htab->root.splt; + sgot = htab->root.sgotplt; + srel = htab->root.srelplt; + + got_header_size = get_elf_backend_data (output_bfd)->got_header_size; + plt_header_size = htab->plt_header_size; + } + BFD_ASSERT (splt != NULL && srel != NULL); + + /* Fill in the entry in the procedure linkage table. */ + if (htab->symbian_p) + { + BFD_ASSERT (dynindx >= 0); + put_arm_insn (htab, output_bfd, + elf32_arm_symbian_plt_entry[0], + splt->contents + root_plt->offset); + bfd_put_32 (output_bfd, + elf32_arm_symbian_plt_entry[1], + splt->contents + root_plt->offset + 4); + + /* Fill in the entry in the .rel.plt section. */ + rel.r_offset = (splt->output_section->vma + + splt->output_offset + + root_plt->offset + 4); + rel.r_info = ELF32_R_INFO (dynindx, R_ARM_GLOB_DAT); + + /* Get the index in the procedure linkage table which + corresponds to this symbol. This is the index of this symbol + in all the symbols for which we are making plt entries. The + first entry in the procedure linkage table is reserved. */ + plt_index = ((root_plt->offset - plt_header_size) + / htab->plt_entry_size); + } + else + { + bfd_vma got_offset, got_address, plt_address; + bfd_vma got_displacement, initial_got_entry; + bfd_byte * ptr; + + BFD_ASSERT (sgot != NULL); + + /* Get the offset into the .(i)got.plt table of the entry that + corresponds to this function. */ + got_offset = (arm_plt->got_offset & -2); + + /* Get the index in the procedure linkage table which + corresponds to this symbol. This is the index of this symbol + in all the symbols for which we are making plt entries. + After the reserved .got.plt entries, all symbols appear in + the same order as in .plt. */ + plt_index = (got_offset - got_header_size) / 4; + + /* Calculate the address of the GOT entry. */ + got_address = (sgot->output_section->vma + + sgot->output_offset + + got_offset); + + /* ...and the address of the PLT entry. */ + plt_address = (splt->output_section->vma + + splt->output_offset + + root_plt->offset); + + ptr = splt->contents + root_plt->offset; + if (htab->vxworks_p && info->shared) + { + unsigned int i; + bfd_vma val; + + for (i = 0; i != htab->plt_entry_size / 4; i++, ptr += 4) + { + val = elf32_arm_vxworks_shared_plt_entry[i]; + if (i == 2) + val |= got_address - sgot->output_section->vma; + if (i == 5) + val |= plt_index * RELOC_SIZE (htab); + if (i == 2 || i == 5) + bfd_put_32 (output_bfd, val, ptr); + else + put_arm_insn (htab, output_bfd, val, ptr); + } + } + else if (htab->vxworks_p) + { + unsigned int i; + bfd_vma val; + + for (i = 0; i != htab->plt_entry_size / 4; i++, ptr += 4) + { + val = elf32_arm_vxworks_exec_plt_entry[i]; + if (i == 2) + val |= got_address; + if (i == 4) + val |= 0xffffff & -((root_plt->offset + i * 4 + 8) >> 2); + if (i == 5) + val |= plt_index * RELOC_SIZE (htab); + if (i == 2 || i == 5) + bfd_put_32 (output_bfd, val, ptr); + else + put_arm_insn (htab, output_bfd, val, ptr); + } + + loc = (htab->srelplt2->contents + + (plt_index * 2 + 1) * RELOC_SIZE (htab)); + + /* Create the .rela.plt.unloaded R_ARM_ABS32 relocation + referencing the GOT for this PLT entry. */ + rel.r_offset = plt_address + 8; + rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_ARM_ABS32); + rel.r_addend = got_offset; + SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc); + loc += RELOC_SIZE (htab); + + /* Create the R_ARM_ABS32 relocation referencing the + beginning of the PLT for this GOT entry. */ + rel.r_offset = got_address; + rel.r_info = ELF32_R_INFO (htab->root.hplt->indx, R_ARM_ABS32); + rel.r_addend = 0; + SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc); + } + else + { + /* Calculate the displacement between the PLT slot and the + entry in the GOT. The eight-byte offset accounts for the + value produced by adding to pc in the first instruction + of the PLT stub. */ + got_displacement = got_address - (plt_address + 8); + + BFD_ASSERT ((got_displacement & 0xf0000000) == 0); + + if (elf32_arm_plt_needs_thumb_stub_p (info, arm_plt)) + { + put_thumb_insn (htab, output_bfd, + elf32_arm_plt_thumb_stub[0], ptr - 4); + put_thumb_insn (htab, output_bfd, + elf32_arm_plt_thumb_stub[1], ptr - 2); + } + + put_arm_insn (htab, output_bfd, + elf32_arm_plt_entry[0] + | ((got_displacement & 0x0ff00000) >> 20), + ptr + 0); + put_arm_insn (htab, output_bfd, + elf32_arm_plt_entry[1] + | ((got_displacement & 0x000ff000) >> 12), + ptr+ 4); + put_arm_insn (htab, output_bfd, + elf32_arm_plt_entry[2] + | (got_displacement & 0x00000fff), + ptr + 8); +#ifdef FOUR_WORD_PLT + bfd_put_32 (output_bfd, elf32_arm_plt_entry[3], ptr + 12); +#endif + } + + /* Fill in the entry in the .rel(a).(i)plt section. */ + rel.r_offset = got_address; + rel.r_addend = 0; + if (dynindx == -1) + { + /* .igot.plt entries use IRELATIVE relocations against SYM_VALUE. + The dynamic linker or static executable then calls SYM_VALUE + to determine the correct run-time value of the .igot.plt entry. */ + rel.r_info = ELF32_R_INFO (0, R_ARM_IRELATIVE); + initial_got_entry = sym_value; + } + else + { + rel.r_info = ELF32_R_INFO (dynindx, R_ARM_JUMP_SLOT); + initial_got_entry = (splt->output_section->vma + + splt->output_offset); + } + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, initial_got_entry, + sgot->contents + got_offset); + } + + loc = srel->contents + plt_index * RELOC_SIZE (htab); + SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc); +} + /* Some relocations map to different relocations depending on the target. Return the real relocation. */ @@ -6656,30 +7590,175 @@ return bfd_reloc_ok; } -/* For a given value of n, calculate the value of G_n as required to - deal with group relocations. We return it in the form of an - encoded constant-and-rotation, together with the final residual. If n is - specified as less than zero, then final_residual is filled with the - input value and no further action is performed. */ - -static bfd_vma -calculate_group_reloc_mask (bfd_vma value, int n, bfd_vma *final_residual) +/* Handle TLS relaxations. Relaxing is possible for symbols that use + R_ARM_GOTDESC, R_ARM_{,THM_}TLS_CALL or + R_ARM_{,THM_}TLS_DESCSEQ relocations, during a static link. + + Return bfd_reloc_ok if we're done, bfd_reloc_continue if the caller + is to then call final_link_relocate. Return other values in the + case of error. + + FIXME:When --emit-relocs is in effect, we'll emit relocs describing + the pre-relaxed code. It would be nice if the relocs were updated + to match the optimization. */ + +static bfd_reloc_status_type +elf32_arm_tls_relax (struct elf32_arm_link_hash_table *globals, + bfd *input_bfd, asection *input_sec, bfd_byte *contents, + Elf_Internal_Rela *rel, unsigned long is_local) { - int current_n; - bfd_vma g_n; - bfd_vma encoded_g_n = 0; - bfd_vma residual = value; /* Also known as Y_n. */ - - for (current_n = 0; current_n <= n; current_n++) + unsigned long insn; + + switch (ELF32_R_TYPE (rel->r_info)) { - int shift; - - /* Calculate which part of the value to mask. */ - if (residual == 0) - shift = 0; + default: + return bfd_reloc_notsupported; + + case R_ARM_TLS_GOTDESC: + if (is_local) + insn = 0; else - { - int msb; + { + insn = bfd_get_32 (input_bfd, contents + rel->r_offset); + if (insn & 1) + insn -= 5; /* THUMB */ + else + insn -= 8; /* ARM */ + } + bfd_put_32 (input_bfd, insn, contents + rel->r_offset); + return bfd_reloc_continue; + + case R_ARM_THM_TLS_DESCSEQ: + /* Thumb insn. */ + insn = bfd_get_16 (input_bfd, contents + rel->r_offset); + if ((insn & 0xff78) == 0x4478) /* add rx, pc */ + { + if (is_local) + /* nop */ + bfd_put_16 (input_bfd, 0x46c0, contents + rel->r_offset); + } + else if ((insn & 0xffc0) == 0x6840) /* ldr rx,[ry,#4] */ + { + if (is_local) + /* nop */ + bfd_put_16 (input_bfd, 0x46c0, contents + rel->r_offset); + else + /* ldr rx,[ry] */ + bfd_put_16 (input_bfd, insn & 0xf83f, contents + rel->r_offset); + } + else if ((insn & 0xff87) == 0x4780) /* blx rx */ + { + if (is_local) + /* nop */ + bfd_put_16 (input_bfd, 0x46c0, contents + rel->r_offset); + else + /* mov r0, rx */ + bfd_put_16 (input_bfd, 0x4600 | (insn & 0x78), + contents + rel->r_offset); + } + else + { + if ((insn & 0xf000) == 0xf000 || (insn & 0xf800) == 0xe800) + /* It's a 32 bit instruction, fetch the rest of it for + error generation. */ + insn = (insn << 16) + | bfd_get_16 (input_bfd, contents + rel->r_offset + 2); + (*_bfd_error_handler) + (_("%B(%A+0x%lx):unexpected Thumb instruction '0x%x' in TLS trampoline"), + input_bfd, input_sec, (unsigned long)rel->r_offset, insn); + return bfd_reloc_notsupported; + } + break; + + case R_ARM_TLS_DESCSEQ: + /* arm insn. */ + insn = bfd_get_32 (input_bfd, contents + rel->r_offset); + if ((insn & 0xffff0ff0) == 0xe08f0000) /* add rx,pc,ry */ + { + if (is_local) + /* mov rx, ry */ + bfd_put_32 (input_bfd, 0xe1a00000 | (insn & 0xffff), + contents + rel->r_offset); + } + else if ((insn & 0xfff00fff) == 0xe5900004) /* ldr rx,[ry,#4]*/ + { + if (is_local) + /* nop */ + bfd_put_32 (input_bfd, 0xe1a00000, contents + rel->r_offset); + else + /* ldr rx,[ry] */ + bfd_put_32 (input_bfd, insn & 0xfffff000, + contents + rel->r_offset); + } + else if ((insn & 0xfffffff0) == 0xe12fff30) /* blx rx */ + { + if (is_local) + /* nop */ + bfd_put_32 (input_bfd, 0xe1a00000, contents + rel->r_offset); + else + /* mov r0, rx */ + bfd_put_32 (input_bfd, 0xe1a00000 | (insn & 0xf), + contents + rel->r_offset); + } + else + { + (*_bfd_error_handler) + (_("%B(%A+0x%lx):unexpected ARM instruction '0x%x' in TLS trampoline"), + input_bfd, input_sec, (unsigned long)rel->r_offset, insn); + return bfd_reloc_notsupported; + } + break; + + case R_ARM_TLS_CALL: + /* GD->IE relaxation, turn the instruction into 'nop' or + 'ldr r0, [pc,r0]' */ + insn = is_local ? 0xe1a00000 : 0xe79f0000; + bfd_put_32 (input_bfd, insn, contents + rel->r_offset); + break; + + case R_ARM_THM_TLS_CALL: + /* GD->IE relaxation */ + if (!is_local) + /* add r0,pc; ldr r0, [r0] */ + insn = 0x44786800; + else if (arch_has_thumb2_nop (globals)) + /* nop.w */ + insn = 0xf3af8000; + else + /* nop; nop */ + insn = 0xbf00bf00; + + bfd_put_16 (input_bfd, insn >> 16, contents + rel->r_offset); + bfd_put_16 (input_bfd, insn & 0xffff, contents + rel->r_offset + 2); + break; + } + return bfd_reloc_ok; +} + +/* For a given value of n, calculate the value of G_n as required to + deal with group relocations. We return it in the form of an + encoded constant-and-rotation, together with the final residual. If n is + specified as less than zero, then final_residual is filled with the + input value and no further action is performed. */ + +static bfd_vma +calculate_group_reloc_mask (bfd_vma value, int n, bfd_vma *final_residual) +{ + int current_n; + bfd_vma g_n; + bfd_vma encoded_g_n = 0; + bfd_vma residual = value; /* Also known as Y_n. */ + + for (current_n = 0; current_n <= n; current_n++) + { + int shift; + + /* Calculate which part of the value to mask. */ + if (residual == 0) + shift = 0; + else + { + int msb; /* Determine the most significant bit in the residual and align the resulting value to a 2-bit boundary. */ @@ -6738,7 +7817,8 @@ struct bfd_link_info * info, asection * sym_sec, const char * sym_name, - int sym_flags, + unsigned char st_type, + enum arm_st_branch_type branch_type, struct elf_link_hash_entry * h, bfd_boolean * unresolved_reloc_p, char ** error_message) @@ -6746,24 +7826,38 @@ unsigned long r_type = howto->type; unsigned long r_symndx; bfd_byte * hit_data = contents + rel->r_offset; - bfd * dynobj = NULL; - Elf_Internal_Shdr * symtab_hdr; - struct elf_link_hash_entry ** sym_hashes; bfd_vma * local_got_offsets; - asection * sgot = NULL; - asection * splt = NULL; + bfd_vma * local_tlsdesc_gotents; + asection * sgot; + asection * splt; asection * sreloc = NULL; + asection * srelgot; bfd_vma addend; bfd_signed_vma signed_addend; + unsigned char dynreloc_st_type; + bfd_vma dynreloc_value; struct elf32_arm_link_hash_table * globals; + struct elf32_arm_link_hash_entry *eh; + union gotplt_union *root_plt; + struct arm_plt_info *arm_plt; + bfd_vma plt_offset; + bfd_vma gotplt_offset; + bfd_boolean has_iplt_entry; globals = elf32_arm_hash_table (info); + if (globals == NULL) + return bfd_reloc_notsupported; BFD_ASSERT (is_arm_elf (input_bfd)); /* Some relocation types map to different relocations depending on the target. We pick the right one here. */ r_type = arm_real_reloc_type (globals, r_type); + + /* It is possible to have linker relaxations on some TLS access + models. Update our information here. */ + r_type = elf32_arm_tls_transition (info, r_type, h); + if (r_type != howto->type) howto = elf32_arm_howto_from_type (r_type); @@ -6779,15 +7873,16 @@ if (bfd_get_start_address (output_bfd) != 0) elf_elfheader (output_bfd)->e_flags |= EF_ARM_HASENTRY; - dynobj = elf_hash_table (info)->dynobj; - if (dynobj) - { - sgot = bfd_get_section_by_name (dynobj, ".got"); - splt = bfd_get_section_by_name (dynobj, ".plt"); - } - symtab_hdr = & elf_symtab_hdr (input_bfd); - sym_hashes = elf_sym_hashes (input_bfd); + eh = (struct elf32_arm_link_hash_entry *) h; + sgot = globals->root.sgot; local_got_offsets = elf_local_got_offsets (input_bfd); + local_tlsdesc_gotents = elf32_arm_local_tlsdesc_gotent (input_bfd); + + if (globals->root.dynamic_sections_created) + srelgot = globals->root.srelgot; + else + srelgot = NULL; + r_symndx = ELF32_R_SYM (rel->r_info); if (globals->use_rel) @@ -6806,6 +7901,65 @@ else addend = signed_addend = rel->r_addend; + /* Record the symbol information that should be used in dynamic + relocations. */ + dynreloc_st_type = st_type; + dynreloc_value = value; + if (branch_type == ST_BRANCH_TO_THUMB) + dynreloc_value |= 1; + + /* Find out whether the symbol has a PLT. Set ST_VALUE, BRANCH_TYPE and + VALUE appropriately for relocations that we resolve at link time. */ + has_iplt_entry = FALSE; + if (elf32_arm_get_plt_info (input_bfd, eh, r_symndx, &root_plt, &arm_plt) + && root_plt->offset != (bfd_vma) -1) + { + plt_offset = root_plt->offset; + gotplt_offset = arm_plt->got_offset; + + if (h == NULL || eh->is_iplt) + { + has_iplt_entry = TRUE; + splt = globals->root.iplt; + + /* Populate .iplt entries here, because not all of them will + be seen by finish_dynamic_symbol. The lower bit is set if + we have already populated the entry. */ + if (plt_offset & 1) + plt_offset--; + else + { + elf32_arm_populate_plt_entry (output_bfd, info, root_plt, arm_plt, + -1, dynreloc_value); + root_plt->offset |= 1; + } + + /* Static relocations always resolve to the .iplt entry. */ + st_type = STT_FUNC; + value = (splt->output_section->vma + + splt->output_offset + + plt_offset); + branch_type = ST_BRANCH_TO_ARM; + + /* If there are non-call relocations that resolve to the .iplt + entry, then all dynamic ones must too. */ + if (arm_plt->noncall_refcount != 0) + { + dynreloc_st_type = st_type; + dynreloc_value = value; + } + } + else + /* We populate the .plt entry in finish_dynamic_symbol. */ + splt = globals->root.splt; + } + else + { + splt = NULL; + plt_offset = (bfd_vma) -1; + gotplt_offset = (bfd_vma) -1; + } + switch (r_type) { case R_ARM_NONE: @@ -6838,18 +7992,17 @@ && r_type != R_ARM_CALL && r_type != R_ARM_JUMP24 && r_type != R_ARM_PLT32) - && h != NULL - && splt != NULL - && h->plt.offset != (bfd_vma) -1) - { - /* If we've created a .plt section, and assigned a PLT entry to - this function, it should not be known to bind locally. If - it were, we would have cleared the PLT entry. */ - BFD_ASSERT (!SYMBOL_CALLS_LOCAL (info, h)); + && plt_offset != (bfd_vma) -1) + { + /* If we've created a .plt section, and assigned a PLT entry + to this function, it must either be a STT_GNU_IFUNC reference + or not be known to bind locally. In other cases, we should + have cleared the PLT entry by now. */ + BFD_ASSERT (has_iplt_entry || !SYMBOL_CALLS_LOCAL (info, h)); value = (splt->output_section->vma + splt->output_offset - + h->plt.offset); + + plt_offset); *unresolved_reloc_p = FALSE; return _bfd_final_link_relocate (howto, input_bfd, input_section, contents, rel->r_offset, value, @@ -6861,11 +8014,12 @@ run time. */ if ((info->shared || globals->root.is_relocatable_executable) && (input_section->flags & SEC_ALLOC) - && !(elf32_arm_hash_table (info)->vxworks_p + && !(globals->vxworks_p && strcmp (input_section->output_section->name, ".tls_vars") == 0) && ((r_type != R_ARM_REL32 && r_type != R_ARM_REL32_NOI) || !SYMBOL_CALLS_LOCAL (info, h)) + && (!strstr (input_section->name, STUB_SUFFIX)) && (h == NULL || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT || h->root.type != bfd_link_hash_undefweak) @@ -6876,12 +8030,11 @@ && r_type != R_ARM_PLT32) { Elf_Internal_Rela outrel; - bfd_byte *loc; bfd_boolean skip, relocate; *unresolved_reloc_p = FALSE; - if (sreloc == NULL) + if (sreloc == NULL && globals->root.dynamic_sections_created) { sreloc = _bfd_elf_get_dynamic_reloc_section (input_bfd, input_section, ! globals->use_rel); @@ -6917,8 +8070,7 @@ int symbol; /* This symbol is local, or marked to become local. */ - if (sym_flags == STT_ARM_TFUNC) - value |= 1; + BFD_ASSERT (r_type == R_ARM_ABS32 || r_type == R_ARM_ABS32_NOI); if (globals->symbian_p) { asection *osec; @@ -6958,16 +8110,21 @@ relocate the text and data segments independently, so the symbol does not matter. */ symbol = 0; - outrel.r_info = ELF32_R_INFO (symbol, R_ARM_RELATIVE); + if (dynreloc_st_type == STT_GNU_IFUNC) + /* We have an STT_GNU_IFUNC symbol that doesn't resolve + to the .iplt entry. Instead, every non-call reference + must use an R_ARM_IRELATIVE relocation to obtain the + correct run-time address. */ + outrel.r_info = ELF32_R_INFO (symbol, R_ARM_IRELATIVE); + else + outrel.r_info = ELF32_R_INFO (symbol, R_ARM_RELATIVE); if (globals->use_rel) relocate = TRUE; else - outrel.r_addend += value; + outrel.r_addend += dynreloc_value; } - loc = sreloc->contents; - loc += sreloc->reloc_count++ * RELOC_SIZE (globals); - SWAP_RELOC_OUT (globals) (output_bfd, &outrel, loc); + elf32_arm_add_dynreloc (output_bfd, info, sreloc, &outrel); /* If this reloc is against an external symbol, we do not want to fiddle with the addend. Otherwise, we need to include the symbol @@ -6976,8 +8133,8 @@ return bfd_reloc_ok; return _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, rel->r_offset, value, - (bfd_vma) 0); + contents, rel->r_offset, + dynreloc_value, (bfd_vma) 0); } else switch (r_type) { @@ -6990,7 +8147,6 @@ case R_ARM_PC24: /* Arm B/BL instruction. */ case R_ARM_PLT32: { - bfd_signed_vma branch_offset; struct elf32_arm_stub_hash_entry *stub_entry = NULL; if (r_type == R_ARM_XPC25) @@ -6998,7 +8154,7 @@ /* Check for Arm calling Arm function. */ /* FIXME: Should we translate the instruction into a BL instruction instead ? */ - if (sym_flags != STT_ARM_TFUNC) + if (branch_type != ST_BRANCH_TO_THUMB) (*_bfd_error_handler) (_("\%B: Warning: Arm BLX instruction targets Arm function '%s'."), input_bfd, @@ -7007,7 +8163,7 @@ else if (r_type == R_ARM_PC24) { /* Check for Arm calling Thumb function. */ - if (sym_flags == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) { if (elf32_arm_to_thumb_stub (info, sym_name, input_bfd, output_bfd, input_section, @@ -7026,45 +8182,44 @@ || r_type == R_ARM_JUMP24 || r_type == R_ARM_PLT32) { - bfd_vma from; - - /* If the call goes through a PLT entry, make sure to - check distance to the right destination address. */ - if (h != NULL && splt != NULL && h->plt.offset != (bfd_vma) -1) - { - value = (splt->output_section->vma - + splt->output_offset - + h->plt.offset); - *unresolved_reloc_p = FALSE; - /* The PLT entry is in ARM mode, regardless of the - target function. */ - sym_flags = STT_FUNC; - } - - from = (input_section->output_section->vma - + input_section->output_offset - + rel->r_offset); - branch_offset = (bfd_signed_vma)(value - from); - - if (branch_offset > ARM_MAX_FWD_BRANCH_OFFSET - || branch_offset < ARM_MAX_BWD_BRANCH_OFFSET - || ((sym_flags == STT_ARM_TFUNC) - && (((r_type == R_ARM_CALL) && !globals->use_blx) - || (r_type == R_ARM_JUMP24) - || (r_type == R_ARM_PLT32) )) - ) + enum elf32_arm_stub_type stub_type = arm_stub_none; + struct elf32_arm_link_hash_entry *hash; + + hash = (struct elf32_arm_link_hash_entry *) h; + stub_type = arm_type_of_stub (info, input_section, rel, + st_type, &branch_type, + hash, value, sym_sec, + input_bfd, sym_name); + + if (stub_type != arm_stub_none) { /* The target is out of reach, so redirect the branch to the local stub for this function. */ stub_entry = elf32_arm_get_stub_entry (input_section, sym_sec, h, - rel, globals); + rel, globals, + stub_type); if (stub_entry != NULL) value = (stub_entry->stub_offset + stub_entry->stub_sec->output_offset + stub_entry->stub_sec->output_section->vma); } + else + { + /* If the call goes through a PLT entry, make sure to + check distance to the right destination address. */ + if (plt_offset != (bfd_vma) -1) + { + value = (splt->output_section->vma + + splt->output_offset + + plt_offset); + *unresolved_reloc_p = FALSE; + /* The PLT entry is in ARM mode, regardless of the + target function. */ + branch_type = ST_BRANCH_TO_ARM; + } + } } /* The ARM ELF ABI says that this reloc is computed as: S - P + A @@ -7100,12 +8255,12 @@ /* A branch to an undefined weak symbol is turned into a jump to the next instruction unless a PLT entry will be created. - Do the same for local undefined symbols. + Do the same for local undefined symbols (but not for STN_UNDEF). The jump to the next instruction is optimized as a NOP depending on the architecture. */ if (h ? (h->root.type == bfd_link_hash_undefweak - && !(splt != NULL && h->plt.offset != (bfd_vma) -1)) - : bfd_is_und_section (sym_sec)) + && plt_offset == (bfd_vma) -1) + : r_symndx != STN_UNDEF && bfd_is_und_section (sym_sec)) { value = (bfd_get_32 (input_bfd, hit_data) & 0xf0000000); @@ -7129,7 +8284,7 @@ if (r_type == R_ARM_CALL) { /* Set the H bit in the BLX instruction. */ - if (sym_flags == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) { if (addend) value |= (1 << 24); @@ -7140,7 +8295,7 @@ /* Select the correct instruction (BL or BLX). */ /* Only if we are not handling a BL to a stub. In this case, mode switching is performed by the stub. */ - if (sym_flags == STT_ARM_TFUNC && !stub_entry) + if (branch_type == ST_BRANCH_TO_THUMB && !stub_entry) value |= (1 << 28); else { @@ -7154,7 +8309,7 @@ case R_ARM_ABS32: value += addend; - if (sym_flags == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) value |= 1; break; @@ -7164,7 +8319,7 @@ case R_ARM_REL32: value += addend; - if (sym_flags == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) value |= 1; value -= (input_section->output_section->vma + input_section->output_offset + rel->r_offset); @@ -7188,7 +8343,7 @@ } value &= 0x7fffffff; value |= (bfd_get_32 (input_bfd, hit_data) & 0x80000000); - if (sym_flags == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) value |= 1; break; } @@ -7198,7 +8353,11 @@ case R_ARM_ABS8: value += addend; - if ((long) value > 0x7f || (long) value < -0x80) + + /* There is no way to tell whether the user intended to use a signed or + unsigned addend. When checking for overflow we accept either, + as specified by the AAELF. */ + if ((long) value > 0xff || (long) value < -0x80) return bfd_reloc_overflow; bfd_put_8 (input_bfd, value, hit_data); @@ -7207,7 +8366,8 @@ case R_ARM_ABS16: value += addend; - if ((long) value > 0x7fff || (long) value < -0x8000) + /* See comment for R_ARM_ABS8. */ + if ((long) value > 0xffff || (long) value < -0x8000) return bfd_reloc_overflow; bfd_put_16 (input_bfd, value, hit_data); @@ -7364,7 +8524,7 @@ The jump to the next instruction is optimized as a NOP.W for Thumb-2 enabled architectures. */ if (h && h->root.type == bfd_link_hash_undefweak - && !(splt != NULL && h->plt.offset != (bfd_vma) -1)) + && plt_offset == (bfd_vma) -1) { if (arch_has_thumb2_nop (globals)) { @@ -7403,7 +8563,7 @@ /* Check for Thumb to Thumb call. */ /* FIXME: Should we translate the instruction into a BL instruction instead ? */ - if (sym_flags == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) (*_bfd_error_handler) (_("%B: Warning: Thumb BLX instruction targets thumb function '%s'."), input_bfd, @@ -7415,9 +8575,7 @@ If it is a call relative to a section name, then it is not a function call at all, but rather a long jump. Calls through the PLT do not require stubs. */ - if (sym_flags != STT_ARM_TFUNC && sym_flags != STT_SECTION - && (h == NULL || splt == NULL - || h->plt.offset == (bfd_vma) -1)) + if (branch_type == ST_BRANCH_TO_ARM && plt_offset == (bfd_vma) -1) { if (globals->use_blx && r_type == R_ARM_THM_CALL) { @@ -7436,7 +8594,8 @@ return bfd_reloc_dangerous; } } - else if (sym_flags == STT_ARM_TFUNC && globals->use_blx + else if (branch_type == ST_BRANCH_TO_THUMB + && globals->use_blx && r_type == R_ARM_THM_CALL) { /* Make sure this is a BL. */ @@ -7444,58 +8603,30 @@ } } - /* Handle calls via the PLT. */ - if (h != NULL && splt != NULL && h->plt.offset != (bfd_vma) -1) - { - value = (splt->output_section->vma - + splt->output_offset - + h->plt.offset); - if (globals->use_blx && r_type == R_ARM_THM_CALL) - { - /* If the Thumb BLX instruction is available, convert the - BL to a BLX instruction to call the ARM-mode PLT entry. */ - lower_insn = (lower_insn & ~0x1000) | 0x0800; - sym_flags = STT_FUNC; - } - else - { - /* Target the Thumb stub before the ARM PLT entry. */ - value -= PLT_THUMB_STUB_SIZE; - sym_flags = STT_ARM_TFUNC; - } - *unresolved_reloc_p = FALSE; - } - + enum elf32_arm_stub_type stub_type = arm_stub_none; if (r_type == R_ARM_THM_CALL || r_type == R_ARM_THM_JUMP24) { /* Check if a stub has to be inserted because the destination is too far. */ - bfd_vma from; - bfd_signed_vma branch_offset; - struct elf32_arm_stub_hash_entry *stub_entry = NULL; - - from = (input_section->output_section->vma - + input_section->output_offset - + rel->r_offset); - branch_offset = (bfd_signed_vma)(value - from); - - if ((!thumb2 - && (branch_offset > THM_MAX_FWD_BRANCH_OFFSET - || (branch_offset < THM_MAX_BWD_BRANCH_OFFSET))) - || - (thumb2 - && (branch_offset > THM2_MAX_FWD_BRANCH_OFFSET - || (branch_offset < THM2_MAX_BWD_BRANCH_OFFSET))) - || ((sym_flags != STT_ARM_TFUNC) - && (((r_type == R_ARM_THM_CALL) && !globals->use_blx) - || r_type == R_ARM_THM_JUMP24))) + struct elf32_arm_stub_hash_entry *stub_entry; + struct elf32_arm_link_hash_entry *hash; + + hash = (struct elf32_arm_link_hash_entry *) h; + + stub_type = arm_type_of_stub (info, input_section, rel, + st_type, &branch_type, + hash, value, sym_sec, + input_bfd, sym_name); + + if (stub_type != arm_stub_none) { /* The target is out of reach or we are changing modes, so redirect the branch to the local stub for this function. */ stub_entry = elf32_arm_get_stub_entry (input_section, sym_sec, h, - rel, globals); + rel, globals, + stub_type); if (stub_entry != NULL) value = (stub_entry->stub_offset + stub_entry->stub_sec->output_offset @@ -7506,12 +8637,36 @@ { if ((stub_entry && !arm_stub_is_thumb (stub_entry->stub_type)) - || (sym_flags != STT_ARM_TFUNC)) + || branch_type != ST_BRANCH_TO_THUMB) lower_insn = (lower_insn & ~0x1000) | 0x0800; } } } + /* Handle calls via the PLT. */ + if (stub_type == arm_stub_none && plt_offset != (bfd_vma) -1) + { + value = (splt->output_section->vma + + splt->output_offset + + plt_offset); + + if (globals->use_blx && r_type == R_ARM_THM_CALL) + { + /* If the Thumb BLX instruction is available, convert + the BL to a BLX instruction to call the ARM-mode + PLT entry. */ + lower_insn = (lower_insn & ~0x1000) | 0x0800; + branch_type = ST_BRANCH_TO_ARM; + } + else + { + /* Target the Thumb stub before the ARM PLT entry. */ + value -= PLT_THUMB_STUB_SIZE; + branch_type = ST_BRANCH_TO_THUMB; + } + *unresolved_reloc_p = FALSE; + } + relocation = value + signed_addend; relocation -= (input_section->output_section->vma @@ -7533,7 +8688,7 @@ bitsize = howto->bitsize; if (!thumb2) bitsize -= 2; - reloc_signed_max = ((1 << (bitsize - 1)) - 1) >> howto->rightshift; + reloc_signed_max = (1 << (bitsize - 1)) - 1; reloc_signed_min = ~reloc_signed_max; /* Assumes two's complement. */ @@ -7598,11 +8753,11 @@ } /* Handle calls via the PLT. */ - if (h != NULL && splt != NULL && h->plt.offset != (bfd_vma) -1) + if (plt_offset != (bfd_vma) -1) { value = (splt->output_section->vma + splt->output_offset - + h->plt.offset); + + plt_offset); /* Target the Thumb stub before the ARM PLT entry. */ value -= PLT_THUMB_STUB_SIZE; *unresolved_reloc_p = FALSE; @@ -7735,7 +8890,7 @@ /* If we are addressing a Thumb function, we need to adjust the address by one, so that attempts to call the function pointer will correctly interpret it as Thumb code. */ - if (sym_flags == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) value += 1; /* Note that sgot->output_offset is not involved in this @@ -7768,48 +8923,82 @@ if (sgot == NULL) return bfd_reloc_notsupported; - if (h != NULL) + if (dynreloc_st_type == STT_GNU_IFUNC + && plt_offset != (bfd_vma) -1 + && (h == NULL || SYMBOL_REFERENCES_LOCAL (info, h))) + { + /* We have a relocation against a locally-binding STT_GNU_IFUNC + symbol, and the relocation resolves directly to the runtime + target rather than to the .iplt entry. This means that any + .got entry would be the same value as the .igot.plt entry, + so there's no point creating both. */ + sgot = globals->root.igotplt; + value = sgot->output_offset + gotplt_offset; + } + else if (h != NULL) { bfd_vma off; - bfd_boolean dyn; off = h->got.offset; BFD_ASSERT (off != (bfd_vma) -1); - dyn = globals->root.dynamic_sections_created; + if ((off & 1) != 0) + { + /* We have already processsed one GOT relocation against + this symbol. */ + off &= ~1; + if (globals->root.dynamic_sections_created + && !SYMBOL_REFERENCES_LOCAL (info, h)) + *unresolved_reloc_p = FALSE; + } + else + { + Elf_Internal_Rela outrel; - if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h) - || (info->shared - && SYMBOL_REFERENCES_LOCAL (info, h)) - || (ELF_ST_VISIBILITY (h->other) - && h->root.type == bfd_link_hash_undefweak)) - { - /* This is actually a static link, or it is a -Bsymbolic link - and the symbol is defined locally. We must initialize this - entry in the global offset table. Since the offset must - always be a multiple of 4, we use the least significant bit - to record whether we have initialized it already. - - When doing a dynamic link, we create a .rel(a).got relocation - entry to initialize the value. This is done in the - finish_dynamic_symbol routine. */ - if ((off & 1) != 0) - off &= ~1; + if (!SYMBOL_REFERENCES_LOCAL (info, h)) + { + /* If the symbol doesn't resolve locally in a static + object, we have an undefined reference. If the + symbol doesn't resolve locally in a dynamic object, + it should be resolved by the dynamic linker. */ + if (globals->root.dynamic_sections_created) + { + outrel.r_info = ELF32_R_INFO (h->dynindx, R_ARM_GLOB_DAT); + *unresolved_reloc_p = FALSE; + } + else + outrel.r_info = 0; + outrel.r_addend = 0; + } else { - /* If we are addressing a Thumb function, we need to - adjust the address by one, so that attempts to - call the function pointer will correctly - interpret it as Thumb code. */ - if (sym_flags == STT_ARM_TFUNC) - value |= 1; + if (dynreloc_st_type == STT_GNU_IFUNC) + outrel.r_info = ELF32_R_INFO (0, R_ARM_IRELATIVE); + else if (info->shared) + outrel.r_info = ELF32_R_INFO (0, R_ARM_RELATIVE); + else + outrel.r_info = 0; + outrel.r_addend = dynreloc_value; + } - bfd_put_32 (output_bfd, value, sgot->contents + off); - h->got.offset |= 1; + /* The GOT entry is initialized to zero by default. + See if we should install a different value. */ + if (outrel.r_addend != 0 + && (outrel.r_info == 0 || globals->use_rel)) + { + bfd_put_32 (output_bfd, outrel.r_addend, + sgot->contents + off); + outrel.r_addend = 0; } - } - else - *unresolved_reloc_p = FALSE; + if (outrel.r_info != 0) + { + outrel.r_offset = (sgot->output_section->vma + + sgot->output_offset + + off); + elf32_arm_add_dynreloc (output_bfd, info, srelgot, &outrel); + } + h->got.offset |= 1; + } value = sgot->output_offset + off; } else @@ -7828,34 +9017,22 @@ off &= ~1; else { - /* If we are addressing a Thumb function, we need to - adjust the address by one, so that attempts to - call the function pointer will correctly - interpret it as Thumb code. */ - if (sym_flags == STT_ARM_TFUNC) - value |= 1; - if (globals->use_rel) - bfd_put_32 (output_bfd, value, sgot->contents + off); + bfd_put_32 (output_bfd, dynreloc_value, sgot->contents + off); - if (info->shared) + if (info->shared || dynreloc_st_type == STT_GNU_IFUNC) { - asection * srelgot; Elf_Internal_Rela outrel; - bfd_byte *loc; - srelgot = (bfd_get_section_by_name - (dynobj, RELOC_SECTION (globals, ".got"))); - BFD_ASSERT (srelgot != NULL); - - outrel.r_addend = addend + value; + outrel.r_addend = addend + dynreloc_value; outrel.r_offset = (sgot->output_section->vma + sgot->output_offset + off); - outrel.r_info = ELF32_R_INFO (0, R_ARM_RELATIVE); - loc = srelgot->contents; - loc += srelgot->reloc_count++ * RELOC_SIZE (globals); - SWAP_RELOC_OUT (globals) (output_bfd, &outrel, loc); + if (dynreloc_st_type == STT_GNU_IFUNC) + outrel.r_info = ELF32_R_INFO (0, R_ARM_IRELATIVE); + else + outrel.r_info = ELF32_R_INFO (0, R_ARM_RELATIVE); + elf32_arm_add_dynreloc (output_bfd, info, srelgot, &outrel); } local_got_offsets[r_symndx] |= 1; @@ -7881,7 +9058,7 @@ { bfd_vma off; - if (globals->sgot == NULL) + if (sgot == NULL) abort (); off = globals->tls_ldm_got.offset; @@ -7895,31 +9072,28 @@ if (info->shared) { Elf_Internal_Rela outrel; - bfd_byte *loc; - if (globals->srelgot == NULL) + if (srelgot == NULL) abort (); outrel.r_addend = 0; - outrel.r_offset = (globals->sgot->output_section->vma - + globals->sgot->output_offset + off); + outrel.r_offset = (sgot->output_section->vma + + sgot->output_offset + off); outrel.r_info = ELF32_R_INFO (0, R_ARM_TLS_DTPMOD32); if (globals->use_rel) bfd_put_32 (output_bfd, outrel.r_addend, - globals->sgot->contents + off); + sgot->contents + off); - loc = globals->srelgot->contents; - loc += globals->srelgot->reloc_count++ * RELOC_SIZE (globals); - SWAP_RELOC_OUT (globals) (output_bfd, &outrel, loc); + elf32_arm_add_dynreloc (output_bfd, info, srelgot, &outrel); } else - bfd_put_32 (output_bfd, 1, globals->sgot->contents + off); + bfd_put_32 (output_bfd, 1, sgot->contents + off); globals->tls_ldm_got.offset |= 1; } - value = globals->sgot->output_section->vma + globals->sgot->output_offset + off + value = sgot->output_section->vma + sgot->output_offset + off - (input_section->output_section->vma + input_section->output_offset + rel->r_offset); return _bfd_final_link_relocate (howto, input_bfd, input_section, @@ -7927,17 +9101,20 @@ rel->r_addend); } + case R_ARM_TLS_CALL: + case R_ARM_THM_TLS_CALL: case R_ARM_TLS_GD32: case R_ARM_TLS_IE32: + case R_ARM_TLS_GOTDESC: + case R_ARM_TLS_DESCSEQ: + case R_ARM_THM_TLS_DESCSEQ: { - bfd_vma off; - int indx; + bfd_vma off, offplt; + int indx = 0; char tls_type; - if (globals->sgot == NULL) - abort (); + BFD_ASSERT (sgot != NULL); - indx = 0; if (h != NULL) { bfd_boolean dyn; @@ -7950,18 +9127,23 @@ indx = h->dynindx; } off = h->got.offset; + offplt = elf32_arm_hash_entry (h)->tlsdesc_got; tls_type = ((struct elf32_arm_link_hash_entry *) h)->tls_type; } else { - if (local_got_offsets == NULL) - abort (); + BFD_ASSERT (local_got_offsets != NULL); off = local_got_offsets[r_symndx]; + offplt = local_tlsdesc_gotents[r_symndx]; tls_type = elf32_arm_local_got_tls_type (input_bfd)[r_symndx]; } - if (tls_type == GOT_UNKNOWN) - abort (); + /* Linker relaxations happens from one of the + R_ARM_{GOTDESC,CALL,DESCSEQ} relocations to IE or LE. */ + if (ELF32_R_TYPE(rel->r_info) != r_type) + tls_type = GOT_TLS_IE; + + BFD_ASSERT (tls_type != GOT_UNKNOWN); if ((off & 1) != 0) off &= ~1; @@ -7969,7 +9151,6 @@ { bfd_boolean need_relocs = FALSE; Elf_Internal_Rela outrel; - bfd_byte *loc = NULL; int cur_off = off; /* The GOT entries have not been initialized yet. Do it @@ -7982,33 +9163,70 @@ || h->root.type != bfd_link_hash_undefweak)) { need_relocs = TRUE; - if (globals->srelgot == NULL) - abort (); - loc = globals->srelgot->contents; - loc += globals->srelgot->reloc_count * RELOC_SIZE (globals); + BFD_ASSERT (srelgot != NULL); } + if (tls_type & GOT_TLS_GDESC) + { + bfd_byte *loc; + + /* We should have relaxed, unless this is an undefined + weak symbol. */ + BFD_ASSERT ((h && (h->root.type == bfd_link_hash_undefweak)) + || info->shared); + BFD_ASSERT (globals->sgotplt_jump_table_size + offplt + 8 + <= globals->root.sgotplt->size); + + outrel.r_addend = 0; + outrel.r_offset = (globals->root.sgotplt->output_section->vma + + globals->root.sgotplt->output_offset + + offplt + + globals->sgotplt_jump_table_size); + + outrel.r_info = ELF32_R_INFO (indx, R_ARM_TLS_DESC); + sreloc = globals->root.srelplt; + loc = sreloc->contents; + loc += globals->next_tls_desc_index++ * RELOC_SIZE (globals); + BFD_ASSERT (loc + RELOC_SIZE (globals) + <= sreloc->contents + sreloc->size); + + SWAP_RELOC_OUT (globals) (output_bfd, &outrel, loc); + + /* For globals, the first word in the relocation gets + the relocation index and the top bit set, or zero, + if we're binding now. For locals, it gets the + symbol's offset in the tls section. */ + bfd_put_32 (output_bfd, + !h ? value - elf_hash_table (info)->tls_sec->vma + : info->flags & DF_BIND_NOW ? 0 + : 0x80000000 | ELF32_R_SYM (outrel.r_info), + globals->root.sgotplt->contents + offplt + + globals->sgotplt_jump_table_size); + + /* Second word in the relocation is always zero. */ + bfd_put_32 (output_bfd, 0, + globals->root.sgotplt->contents + offplt + + globals->sgotplt_jump_table_size + 4); + } if (tls_type & GOT_TLS_GD) { if (need_relocs) { outrel.r_addend = 0; - outrel.r_offset = (globals->sgot->output_section->vma - + globals->sgot->output_offset + outrel.r_offset = (sgot->output_section->vma + + sgot->output_offset + cur_off); outrel.r_info = ELF32_R_INFO (indx, R_ARM_TLS_DTPMOD32); if (globals->use_rel) bfd_put_32 (output_bfd, outrel.r_addend, - globals->sgot->contents + cur_off); + sgot->contents + cur_off); - SWAP_RELOC_OUT (globals) (output_bfd, &outrel, loc); - globals->srelgot->reloc_count++; - loc += RELOC_SIZE (globals); + elf32_arm_add_dynreloc (output_bfd, info, srelgot, &outrel); if (indx == 0) bfd_put_32 (output_bfd, value - dtpoff_base (info), - globals->sgot->contents + cur_off + 4); + sgot->contents + cur_off + 4); else { outrel.r_addend = 0; @@ -8018,12 +9236,10 @@ if (globals->use_rel) bfd_put_32 (output_bfd, outrel.r_addend, - globals->sgot->contents + cur_off + 4); - + sgot->contents + cur_off + 4); - SWAP_RELOC_OUT (globals) (output_bfd, &outrel, loc); - globals->srelgot->reloc_count++; - loc += RELOC_SIZE (globals); + elf32_arm_add_dynreloc (output_bfd, info, + srelgot, &outrel); } } else @@ -8034,9 +9250,9 @@ symbol binding locally. Mark it as belonging to module 1, the executable. */ bfd_put_32 (output_bfd, 1, - globals->sgot->contents + cur_off); + sgot->contents + cur_off); bfd_put_32 (output_bfd, value - dtpoff_base (info), - globals->sgot->contents + cur_off + 4); + sgot->contents + cur_off + 4); } cur_off += 8; @@ -8050,22 +9266,20 @@ outrel.r_addend = value - dtpoff_base (info); else outrel.r_addend = 0; - outrel.r_offset = (globals->sgot->output_section->vma - + globals->sgot->output_offset + outrel.r_offset = (sgot->output_section->vma + + sgot->output_offset + cur_off); outrel.r_info = ELF32_R_INFO (indx, R_ARM_TLS_TPOFF32); if (globals->use_rel) bfd_put_32 (output_bfd, outrel.r_addend, - globals->sgot->contents + cur_off); + sgot->contents + cur_off); - SWAP_RELOC_OUT (globals) (output_bfd, &outrel, loc); - globals->srelgot->reloc_count++; - loc += RELOC_SIZE (globals); + elf32_arm_add_dynreloc (output_bfd, info, srelgot, &outrel); } else bfd_put_32 (output_bfd, tpoff (info, value), - globals->sgot->contents + cur_off); + sgot->contents + cur_off); cur_off += 4; } @@ -8077,8 +9291,143 @@ if ((tls_type & GOT_TLS_GD) && r_type != R_ARM_TLS_GD32) off += 8; - value = globals->sgot->output_section->vma + globals->sgot->output_offset + off - - (input_section->output_section->vma + input_section->output_offset + rel->r_offset); + else if (tls_type & GOT_TLS_GDESC) + off = offplt; + + if (ELF32_R_TYPE(rel->r_info) == R_ARM_TLS_CALL + || ELF32_R_TYPE(rel->r_info) == R_ARM_THM_TLS_CALL) + { + bfd_signed_vma offset; + enum elf32_arm_stub_type stub_type + = arm_type_of_stub (info, input_section, rel, + st_type, &branch_type, + (struct elf32_arm_link_hash_entry *)h, + globals->tls_trampoline, globals->root.splt, + input_bfd, sym_name); + + if (stub_type != arm_stub_none) + { + struct elf32_arm_stub_hash_entry *stub_entry + = elf32_arm_get_stub_entry + (input_section, globals->root.splt, 0, rel, + globals, stub_type); + offset = (stub_entry->stub_offset + + stub_entry->stub_sec->output_offset + + stub_entry->stub_sec->output_section->vma); + } + else + offset = (globals->root.splt->output_section->vma + + globals->root.splt->output_offset + + globals->tls_trampoline); + + if (ELF32_R_TYPE(rel->r_info) == R_ARM_TLS_CALL) + { + unsigned long inst; + + offset -= (input_section->output_section->vma + + input_section->output_offset + rel->r_offset + 8); + + inst = offset >> 2; + inst &= 0x00ffffff; + value = inst | (globals->use_blx ? 0xfa000000 : 0xeb000000); + } + else + { + /* Thumb blx encodes the offset in a complicated + fashion. */ + unsigned upper_insn, lower_insn; + unsigned neg; + + offset -= (input_section->output_section->vma + + input_section->output_offset + + rel->r_offset + 4); + + /* Round up the offset to a word boundary */ + offset = (offset + 2) & ~2; + neg = offset < 0; + upper_insn = (0xf000 + | ((offset >> 12) & 0x3ff) + | (neg << 10)); + lower_insn = (0xc000 + | (((!((offset >> 23) & 1)) ^ neg) << 13) + | (((!((offset >> 22) & 1)) ^ neg) << 11) + | ((offset >> 1) & 0x7ff)); + bfd_put_16 (input_bfd, upper_insn, hit_data); + bfd_put_16 (input_bfd, lower_insn, hit_data + 2); + return bfd_reloc_ok; + } + } + /* These relocations needs special care, as besides the fact + they point somewhere in .gotplt, the addend must be + adjusted accordingly depending on the type of instruction + we refer to */ + else if ((r_type == R_ARM_TLS_GOTDESC) && (tls_type & GOT_TLS_GDESC)) + { + unsigned long data, insn; + unsigned thumb; + + data = bfd_get_32 (input_bfd, hit_data); + thumb = data & 1; + data &= ~1u; + + if (thumb) + { + insn = bfd_get_16 (input_bfd, contents + rel->r_offset - data); + if ((insn & 0xf000) == 0xf000 || (insn & 0xf800) == 0xe800) + insn = (insn << 16) + | bfd_get_16 (input_bfd, + contents + rel->r_offset - data + 2); + if ((insn & 0xf800c000) == 0xf000c000) + /* bl/blx */ + value = -6; + else if ((insn & 0xffffff00) == 0x4400) + /* add */ + value = -5; + else + { + (*_bfd_error_handler) + (_("%B(%A+0x%lx):unexpected Thumb instruction '0x%x' referenced by TLS_GOTDESC"), + input_bfd, input_section, + (unsigned long)rel->r_offset, insn); + return bfd_reloc_notsupported; + } + } + else + { + insn = bfd_get_32 (input_bfd, contents + rel->r_offset - data); + + switch (insn >> 24) + { + case 0xeb: /* bl */ + case 0xfa: /* blx */ + value = -4; + break; + + case 0xe0: /* add */ + value = -8; + break; + + default: + (*_bfd_error_handler) + (_("%B(%A+0x%lx):unexpected ARM instruction '0x%x' referenced by TLS_GOTDESC"), + input_bfd, input_section, + (unsigned long)rel->r_offset, insn); + return bfd_reloc_notsupported; + } + } + + value += ((globals->root.sgotplt->output_section->vma + + globals->root.sgotplt->output_offset + off) + - (input_section->output_section->vma + + input_section->output_offset + + rel->r_offset) + + globals->sgotplt_jump_table_size); + } + else + value = ((globals->root.sgot->output_section->vma + + globals->root.sgot->output_offset + off) + - (input_section->output_section->vma + + input_section->output_offset + rel->r_offset)); return _bfd_final_link_relocate (howto, input_bfd, input_section, contents, rel->r_offset, value, @@ -8092,7 +9441,7 @@ (_("%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object"), input_bfd, input_section, (long) rel->r_offset, howto->name); - return FALSE; + return (bfd_reloc_status_type) FALSE; } else value = tpoff (info, value); @@ -8160,7 +9509,7 @@ if (r_type == R_ARM_MOVW_BREL && value >= 0x10000) return bfd_reloc_overflow; - if (sym_flags == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) value |= 1; if (r_type == R_ARM_MOVT_ABS || r_type == R_ARM_MOVT_PREL @@ -8210,7 +9559,7 @@ if (r_type == R_ARM_THM_MOVW_BREL && value >= 0x10000) return bfd_reloc_overflow; - if (sym_flags == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) value |= 1; if (r_type == R_ARM_THM_MOVT_ABS || r_type == R_ARM_THM_MOVT_PREL @@ -8327,7 +9676,7 @@ /* If the target symbol is a Thumb function, then set the Thumb bit in the address. */ - if (sym_flags == STT_ARM_TFUNC) + if (branch_type == ST_BRANCH_TO_THUMB) signed_value |= 1; /* Calculate the value of the relevant G_n, in encoded @@ -8706,7 +10055,16 @@ || (R_TYPE) == R_ARM_TLS_DTPMOD32 \ || (R_TYPE) == R_ARM_TLS_TPOFF32 \ || (R_TYPE) == R_ARM_TLS_LE32 \ - || (R_TYPE) == R_ARM_TLS_IE32) + || (R_TYPE) == R_ARM_TLS_IE32 \ + || IS_ARM_TLS_GNU_RELOC (R_TYPE)) + +/* Specific set of relocations for the gnu tls dialect. */ +#define IS_ARM_TLS_GNU_RELOC(R_TYPE) \ + ((R_TYPE) == R_ARM_TLS_GOTDESC \ + || (R_TYPE) == R_ARM_TLS_CALL \ + || (R_TYPE) == R_ARM_THM_TLS_CALL \ + || (R_TYPE) == R_ARM_TLS_DESCSEQ \ + || (R_TYPE) == R_ARM_THM_TLS_DESCSEQ) /* Relocate an ARM ELF section. */ @@ -8728,6 +10086,8 @@ struct elf32_arm_link_hash_table * globals; globals = elf32_arm_hash_table (info); + if (globals == NULL) + return FALSE; symtab_hdr = & elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); @@ -8774,9 +10134,11 @@ undefined symbol. This is a daft object file, but we should at least do something about it. V4BX & NONE relocations do not use the symbol and are explicitly - allowed to use the undefined symbol, so allow those. */ + allowed to use the undefined symbol, so allow those. + Likewise for relocations against STN_UNDEF. */ if (r_type != R_ARM_V4BX && r_type != R_ARM_NONE + && r_symndx != STN_UNDEF && bfd_is_und_section (sec) && ELF_ST_BIND (sym->st_info) != STB_WEAK) { @@ -8897,15 +10259,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) { @@ -8934,7 +10289,7 @@ name = bfd_section_name (input_bfd, sec); } - if (r_symndx != 0 + if (r_symndx != STN_UNDEF && r_type != R_ARM_NONE && (h == NULL || h->root.type == bfd_link_hash_defined @@ -8952,12 +10307,33 @@ name); } - r = elf32_arm_final_link_relocate (howto, input_bfd, output_bfd, - input_section, contents, rel, - relocation, info, sec, name, - (h ? ELF_ST_TYPE (h->type) : - ELF_ST_TYPE (sym->st_info)), h, - &unresolved_reloc, &error_message); + /* We call elf32_arm_final_link_relocate unless we're completely + done, i.e., the relaxation produced the final output we want, + and we won't let anybody mess with it. Also, we have to do + addend adjustments in case of a R_ARM_TLS_GOTDESC relocation + both in relaxed and non-relaxed cases */ + if ((elf32_arm_tls_transition (info, r_type, h) != (unsigned)r_type) + || (IS_ARM_TLS_GNU_RELOC (r_type) + && !((h ? elf32_arm_hash_entry (h)->tls_type : + elf32_arm_local_got_tls_type (input_bfd)[r_symndx]) + & GOT_TLS_GDESC))) + { + r = elf32_arm_tls_relax (globals, input_bfd, input_section, + contents, rel, h == NULL); + /* This may have been marked unresolved because it came from + a shared library. But we've just dealt with that. */ + unresolved_reloc = 0; + } + else + r = bfd_reloc_continue; + + if (r == bfd_reloc_continue) + r = elf32_arm_final_link_relocate (howto, input_bfd, output_bfd, + input_section, contents, rel, + relocation, info, sec, name, sym_type, + (h ? h->target_internal + : ARM_SYM_BRANCH_TYPE (sym)), h, + &unresolved_reloc, &error_message); /* Dynamic relocs are not propagated for SEC_DEBUGGING sections because such sections are not SEC_ALLOC and thus ld.so will @@ -9030,9 +10406,9 @@ return TRUE; } -/* Add a new unwind edit to the list described by HEAD, TAIL. If INDEX is zero, +/* Add a new unwind edit to the list described by HEAD, TAIL. If TINDEX is zero, adds the edit to the start of the list. (The list must be built in order of - ascending INDEX: the function's callers are primarily responsible for + ascending TINDEX: the function's callers are primarily responsible for maintaining that condition). */ static void @@ -9040,15 +10416,16 @@ arm_unwind_table_edit **tail, arm_unwind_edit_type type, asection *linked_section, - unsigned int index) + unsigned int tindex) { - arm_unwind_table_edit *new_edit = xmalloc (sizeof (arm_unwind_table_edit)); + arm_unwind_table_edit *new_edit = (arm_unwind_table_edit *) + xmalloc (sizeof (arm_unwind_table_edit)); new_edit->type = type; new_edit->linked_section = linked_section; - new_edit->index = index; + new_edit->index = tindex; - if (index > 0) + if (tindex > 0) { new_edit->next = NULL; @@ -9110,6 +10487,8 @@ 2. Duplicate entries are merged together (EXIDX_CANTUNWIND, or unwind codes which have been inlined into the index). + If MERGE_EXIDX_ENTRIES is false, duplicate entries are not merged. + The edits are applied when the tables are written (in elf32_arm_write_section). */ @@ -9117,7 +10496,8 @@ bfd_boolean elf32_arm_fix_exidx_coverage (asection **text_section_order, unsigned int num_text_sections, - struct bfd_link_info *info) + struct bfd_link_info *info, + bfd_boolean merge_exidx_entries) { bfd *inp; unsigned int last_second_word = 0, i; @@ -9158,8 +10538,7 @@ /* Walk all text sections in order of increasing VMA. Eilminate duplicate index table entries (EXIDX_CANTUNWIND and inlined unwind opcodes), - and add EXIDX_CANTUNWIND entries for sections with no unwind table data. - */ + and add EXIDX_CANTUNWIND entries for sections with no unwind table data. */ for (i = 0; i < num_text_sections; i++) { @@ -9230,7 +10609,8 @@ /* Inlined unwinding data. Merge if equal to previous. */ else if ((second_word & 0x80000000) != 0) { - if (last_second_word == second_word && last_unwind_type == 1) + if (merge_exidx_entries + && last_second_word == second_word && last_unwind_type == 1) elide = 1; unwind_type = 1; last_second_word = second_word; @@ -9298,11 +10678,32 @@ elf32_arm_final_link (bfd *abfd, struct bfd_link_info *info) { struct elf32_arm_link_hash_table *globals = elf32_arm_hash_table (info); + asection *sec, *osec; + + if (globals == NULL) + return FALSE; /* Invoke the regular ELF backend linker to do all the work. */ if (!bfd_elf_final_link (abfd, info)) return FALSE; + /* Process stub sections (eg BE8 encoding, ...). */ + struct elf32_arm_link_hash_table *htab = elf32_arm_hash_table (info); + int i; + for (i=0; itop_id; i++) + { + sec = htab->stub_group[i].stub_sec; + /* Only process it once, in its link_sec slot. */ + if (sec && i == htab->stub_group[i].link_sec->id) + { + osec = sec->output_section; + elf32_arm_write_section (abfd, info, sec, sec->contents); + if (! bfd_set_section_contents (abfd, osec, sec->contents, + sec->output_offset, sec->size)) + return FALSE; + } + } + /* Write out any glue sections now that we have created all the stubs. */ if (globals->bfd_of_glue_owner != NULL) @@ -9489,9 +10890,9 @@ static int elf32_arm_obj_attrs_order (int num) { - if (num == 4) + if (num == LEAST_KNOWN_OBJ_ATTRIBUTE) return Tag_conformance; - if (num == 5) + if (num == LEAST_KNOWN_OBJ_ATTRIBUTE + 1) return Tag_nodefaults; if ((num - 2) < Tag_nodefaults) return num - 2; @@ -9500,6 +10901,27 @@ return num; } +/* Attribute numbers >=64 (mod 128) can be safely ignored. */ +static bfd_boolean +elf32_arm_obj_attrs_handle_unknown (bfd *abfd, int tag) +{ + if ((tag & 127) < 64) + { + _bfd_error_handler + (_("%B: Unknown mandatory EABI object attribute %d"), + abfd, tag); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + else + { + _bfd_error_handler + (_("Warning: %B: Unknown EABI object attribute %d"), + abfd, tag); + return TRUE; + } +} + /* Read the architecture from the Tag_also_compatible_with attribute, if any. Returns -1 if no architecture could be read. */ @@ -9539,7 +10961,7 @@ /* Note: the tag and its argument below are uleb128 values, though currently-defined values fit in one byte for each. */ if (!attr->s) - attr->s = bfd_alloc (abfd, 3); + attr->s = (char *) bfd_alloc (abfd, 3); attr->s[0] = Tag_CPU_arch; attr->s[1] = arch; attr->s[2] = '\0'; @@ -9624,6 +11046,23 @@ T(V6S_M), /* V6_M. */ T(V6S_M) /* V6S_M. */ }; + const int v7e_m[] = + { + -1, /* PRE_V4. */ + -1, /* V4. */ + T(V7E_M), /* V4T. */ + T(V7E_M), /* V5T. */ + T(V7E_M), /* V5TE. */ + T(V7E_M), /* V5TEJ. */ + T(V7E_M), /* V6. */ + T(V7E_M), /* V6KZ. */ + T(V7E_M), /* V6T2. */ + T(V7E_M), /* V6K. */ + T(V7E_M), /* V7. */ + T(V7E_M), /* V6_M. */ + T(V7E_M), /* V6S_M. */ + T(V7E_M) /* V7E_M. */ + }; const int v4t_plus_v6_m[] = { -1, /* PRE_V4. */ @@ -9639,6 +11078,7 @@ T(V7), /* V7. */ T(V6_M), /* V6_M. */ T(V6S_M), /* V6S_M. */ + T(V7E_M), /* V7E_M. */ T(V4T_PLUS_V6_M) /* V4T plus V6_M. */ }; const int *comb[] = @@ -9648,13 +11088,14 @@ v7, v6_m, v6s_m, + v7e_m, /* Pseudo-architecture. */ v4t_plus_v6_m }; /* Check we've not got a higher architecture than we know about. */ - if (oldtag >= MAX_TAG_CPU_ARCH || newtag >= MAX_TAG_CPU_ARCH) + if (oldtag > MAX_TAG_CPU_ARCH || newtag > MAX_TAG_CPU_ARCH) { _bfd_error_handler (_("error: %B: Unknown CPU architecture"), ibfd); return -1; @@ -9711,14 +11152,9 @@ { obj_attribute *in_attr; obj_attribute *out_attr; - obj_attribute_list *in_list; - obj_attribute_list *out_list; - obj_attribute_list **out_listp; /* Some tags have 0 = don't care, 1 = strong requirement, 2 = weak requirement. */ static const int order_021[3] = {0, 2, 1}; - /* For use with Tag_VFP_arch. */ - static const int order_01243[5] = {0, 1, 2, 4, 3}; int i; bfd_boolean result = TRUE; @@ -9733,11 +11169,33 @@ /* This is the first object. Copy the attributes. */ _bfd_elf_copy_obj_attributes (ibfd, obfd); + out_attr = elf_known_obj_attributes_proc (obfd); + /* Use the Tag_null value to indicate the attributes have been initialized. */ - elf_known_obj_attributes_proc (obfd)[0].i = 1; + out_attr[0].i = 1; - return TRUE; + /* We do not output objects with Tag_MPextension_use_legacy - we move + the attribute's value to Tag_MPextension_use. */ + if (out_attr[Tag_MPextension_use_legacy].i != 0) + { + if (out_attr[Tag_MPextension_use].i != 0 + && out_attr[Tag_MPextension_use_legacy].i + != out_attr[Tag_MPextension_use].i) + { + _bfd_error_handler + (_("Error: %B has both the current and legacy " + "Tag_MPextension_use attributes"), ibfd); + result = FALSE; + } + + out_attr[Tag_MPextension_use] = + out_attr[Tag_MPextension_use_legacy]; + out_attr[Tag_MPextension_use_legacy].type = 0; + out_attr[Tag_MPextension_use_legacy].i = 0; + } + + return result; } in_attr = elf_known_obj_attributes_proc (ibfd); @@ -9752,12 +11210,13 @@ { _bfd_error_handler (_("error: %B uses VFP register arguments, %B does not"), - ibfd, obfd); + in_attr[Tag_ABI_VFP_args].i ? ibfd : obfd, + in_attr[Tag_ABI_VFP_args].i ? obfd : ibfd); result = FALSE; } } - for (i = 4; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) + for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) { /* Merge this attribute with existing attributes. */ switch (i) @@ -9841,27 +11300,26 @@ case Tag_ABI_FP_exceptions: case Tag_ABI_FP_user_exceptions: case Tag_ABI_FP_number_model: - case Tag_VFP_HP_extension: + case Tag_FP_HP_extension: case Tag_CPU_unaligned_access: case Tag_T2EE_use: - case Tag_Virtualization_use: case Tag_MPextension_use: /* Use the largest value specified. */ if (in_attr[i].i > out_attr[i].i) out_attr[i].i = in_attr[i].i; break; - case Tag_ABI_align8_preserved: + case Tag_ABI_align_preserved: case Tag_ABI_PCS_RO_data: /* Use the smallest value specified. */ if (in_attr[i].i < out_attr[i].i) out_attr[i].i = in_attr[i].i; break; - case Tag_ABI_align8_needed: + case Tag_ABI_align_needed: if ((in_attr[i].i > 0 || out_attr[i].i > 0) - && (in_attr[Tag_ABI_align8_preserved].i == 0 - || out_attr[Tag_ABI_align8_preserved].i == 0)) + && (in_attr[Tag_ABI_align_preserved].i == 0 + || out_attr[Tag_ABI_align_preserved].i == 0)) { /* This error message should be enabled once all non-conformant binaries in the toolchain have had the attributes set @@ -9882,8 +11340,29 @@ out_attr[i].i = in_attr[i].i; break; - - case Tag_CPU_arch_profile: + case Tag_Virtualization_use: + /* The virtualization tag effectively stores two bits of + information: the intended use of TrustZone (in bit 0), and the + intended use of Virtualization (in bit 1). */ + if (out_attr[i].i == 0) + out_attr[i].i = in_attr[i].i; + else if (in_attr[i].i != 0 + && in_attr[i].i != out_attr[i].i) + { + if (in_attr[i].i <= 3 && out_attr[i].i <= 3) + out_attr[i].i = 3; + else + { + _bfd_error_handler + (_("error: %B: unable to merge virtualization attributes " + "with %B"), + obfd, ibfd); + result = FALSE; + } + } + break; + + case Tag_CPU_arch_profile: if (out_attr[i].i != in_attr[i].i) { /* 0 will merge with anything. @@ -9909,13 +11388,90 @@ } } break; - case Tag_VFP_arch: - /* Use the "greatest" from the sequence 0, 1, 2, 4, 3, or the - largest value if greater than 4 (for future-proofing). */ - if ((in_attr[i].i > 4 && in_attr[i].i > out_attr[i].i) - || (in_attr[i].i <= 4 && out_attr[i].i <= 4 - && order_01243[in_attr[i].i] > order_01243[out_attr[i].i])) - out_attr[i].i = in_attr[i].i; + case Tag_FP_arch: + { + /* Tag_ABI_HardFP_use is handled along with Tag_FP_arch since + the meaning of Tag_ABI_HardFP_use depends on Tag_FP_arch + when it's 0. It might mean absence of FP hardware if + Tag_FP_arch is zero, otherwise it is effectively SP + DP. */ + + static const struct + { + int ver; + int regs; + } vfp_versions[7] = + { + {0, 0}, + {1, 16}, + {2, 16}, + {3, 32}, + {3, 16}, + {4, 32}, + {4, 16} + }; + int ver; + int regs; + int newval; + + /* If the output has no requirement about FP hardware, + follow the requirement of the input. */ + if (out_attr[i].i == 0) + { + BFD_ASSERT (out_attr[Tag_ABI_HardFP_use].i == 0); + out_attr[i].i = in_attr[i].i; + out_attr[Tag_ABI_HardFP_use].i + = in_attr[Tag_ABI_HardFP_use].i; + break; + } + /* If the input has no requirement about FP hardware, do + nothing. */ + else if (in_attr[i].i == 0) + { + BFD_ASSERT (in_attr[Tag_ABI_HardFP_use].i == 0); + break; + } + + /* Both the input and the output have nonzero Tag_FP_arch. + So Tag_ABI_HardFP_use is (SP & DP) when it's zero. */ + + /* If both the input and the output have zero Tag_ABI_HardFP_use, + do nothing. */ + if (in_attr[Tag_ABI_HardFP_use].i == 0 + && out_attr[Tag_ABI_HardFP_use].i == 0) + ; + /* If the input and the output have different Tag_ABI_HardFP_use, + the combination of them is 3 (SP & DP). */ + else if (in_attr[Tag_ABI_HardFP_use].i + != out_attr[Tag_ABI_HardFP_use].i) + out_attr[Tag_ABI_HardFP_use].i = 3; + + /* Now we can handle Tag_FP_arch. */ + + /* Values greater than 6 aren't defined, so just pick the + biggest */ + if (in_attr[i].i > 6 && in_attr[i].i > out_attr[i].i) + { + out_attr[i] = in_attr[i]; + break; + } + /* The output uses the superset of input features + (ISA version) and registers. */ + ver = vfp_versions[in_attr[i].i].ver; + if (ver < vfp_versions[out_attr[i].i].ver) + ver = vfp_versions[out_attr[i].i].ver; + regs = vfp_versions[in_attr[i].i].regs; + if (regs < vfp_versions[out_attr[i].i].regs) + regs = vfp_versions[out_attr[i].i].regs; + /* This assumes all possible supersets are also a valid + options. */ + for (newval = 6; newval > 0; newval--) + { + if (regs == vfp_versions[newval].regs + && ver == vfp_versions[newval].ver) + break; + } + out_attr[i].i = newval; + } break; case Tag_PCS_config: if (out_attr[i].i == 0) @@ -10011,12 +11567,7 @@ /* Merged in target-independent code. */ break; case Tag_ABI_HardFP_use: - /* 1 (SP) and 2 (DP) conflict, so combine to 3 (SP & DP). */ - if ((in_attr[i].i == 1 && out_attr[i].i == 2) - || (in_attr[i].i == 2 && out_attr[i].i == 1)) - out_attr[i].i = 3; - else if (in_attr[i].i > out_attr[i].i) - out_attr[i].i = in_attr[i].i; + /* This is handled along with Tag_FP_arch. */ break; case Tag_ABI_FP_16bit_format: if (in_attr[i].i != 0 && out_attr[i].i != 0) @@ -10033,6 +11584,52 @@ out_attr[i].i = in_attr[i].i; break; + case Tag_DIV_use: + /* This tag is set to zero if we can use UDIV and SDIV in Thumb + mode on a v7-M or v7-R CPU; to one if we can not use UDIV or + SDIV at all; and to two if we can use UDIV or SDIV on a v7-A + CPU. We will merge as follows: If the input attribute's value + is one then the output attribute's value remains unchanged. If + the input attribute's value is zero or two then if the output + attribute's value is one the output value is set to the input + value, otherwise the output value must be the same as the + inputs. */ + if (in_attr[i].i != 1 && out_attr[i].i != 1) + { + if (in_attr[i].i != out_attr[i].i) + { + _bfd_error_handler + (_("DIV usage mismatch between %B and %B"), + ibfd, obfd); + result = FALSE; + } + } + + if (in_attr[i].i != 1) + out_attr[i].i = in_attr[i].i; + + break; + + case Tag_MPextension_use_legacy: + /* We don't output objects with Tag_MPextension_use_legacy - we + move the value to Tag_MPextension_use. */ + if (in_attr[i].i != 0 && in_attr[Tag_MPextension_use].i != 0) + { + if (in_attr[Tag_MPextension_use].i != in_attr[i].i) + { + _bfd_error_handler + (_("%B has has both the current and legacy " + "Tag_MPextension_use attributes"), + ibfd); + result = FALSE; + } + } + + if (in_attr[i].i > out_attr[Tag_MPextension_use].i) + out_attr[Tag_MPextension_use] = in_attr[i]; + + break; + case Tag_nodefaults: /* This tag is set if it exists, but the value is unused (and is typically zero). We don't actually need to do anything here - @@ -10045,376 +11642,52 @@ case Tag_conformance: /* Keep the attribute if it matches. Throw it away otherwise. No attribute means no claim to conform. */ - if (!in_attr[i].s || !out_attr[i].s - || strcmp (in_attr[i].s, out_attr[i].s) != 0) - out_attr[i].s = NULL; - break; - - default: - { - bfd *err_bfd = NULL; - - /* The "known_obj_attributes" table does contain some undefined - attributes. Ensure that there are unused. */ - if (out_attr[i].i != 0 || out_attr[i].s != NULL) - err_bfd = obfd; - else if (in_attr[i].i != 0 || in_attr[i].s != NULL) - err_bfd = ibfd; - - if (err_bfd != NULL) - { - /* Attribute numbers >=64 (mod 128) can be safely ignored. */ - if ((i & 127) < 64) - { - _bfd_error_handler - (_("%B: Unknown mandatory EABI object attribute %d"), - err_bfd, i); - bfd_set_error (bfd_error_bad_value); - result = FALSE; - } - else - { - _bfd_error_handler - (_("Warning: %B: Unknown EABI object attribute %d"), - err_bfd, i); - } - } - - /* Only pass on attributes that match in both inputs. */ - if (in_attr[i].i != out_attr[i].i - || in_attr[i].s != out_attr[i].s - || (in_attr[i].s != NULL && out_attr[i].s != NULL - && strcmp (in_attr[i].s, out_attr[i].s) != 0)) - { - out_attr[i].i = 0; - out_attr[i].s = NULL; - } - } - } - - /* If out_attr was copied from in_attr then it won't have a type yet. */ - if (in_attr[i].type && !out_attr[i].type) - out_attr[i].type = in_attr[i].type; - } - - /* Merge Tag_compatibility attributes and any common GNU ones. */ - _bfd_elf_merge_object_attributes (ibfd, obfd); - - /* Check for any attributes not known on ARM. */ - in_list = elf_other_obj_attributes_proc (ibfd); - out_listp = &elf_other_obj_attributes_proc (obfd); - out_list = *out_listp; - - for (; in_list || out_list; ) - { - bfd *err_bfd = NULL; - int err_tag = 0; - - /* The tags for each list are in numerical order. */ - /* If the tags are equal, then merge. */ - if (out_list && (!in_list || in_list->tag > out_list->tag)) - { - /* This attribute only exists in obfd. We can't merge, and we don't - know what the tag means, so delete it. */ - err_bfd = obfd; - err_tag = out_list->tag; - *out_listp = out_list->next; - out_list = *out_listp; - } - else if (in_list && (!out_list || in_list->tag < out_list->tag)) - { - /* This attribute only exists in ibfd. We can't merge, and we don't - know what the tag means, so ignore it. */ - err_bfd = ibfd; - err_tag = in_list->tag; - in_list = in_list->next; - } - else /* The tags are equal. */ - { - /* As present, all attributes in the list are unknown, and - therefore can't be merged meaningfully. */ - err_bfd = obfd; - err_tag = out_list->tag; - - /* Only pass on attributes that match in both inputs. */ - if (in_list->attr.i != out_list->attr.i - || in_list->attr.s != out_list->attr.s - || (in_list->attr.s && out_list->attr.s - && strcmp (in_list->attr.s, out_list->attr.s) != 0)) - { - /* No match. Delete the attribute. */ - *out_listp = out_list->next; - out_list = *out_listp; - } - else - { - /* Matched. Keep the attribute and move to the next. */ - out_list = out_list->next; - in_list = in_list->next; - } - } - - if (err_bfd) - { - /* Attribute numbers >=64 (mod 128) can be safely ignored. */ - if ((err_tag & 127) < 64) - { - _bfd_error_handler - (_("%B: Unknown mandatory EABI object attribute %d"), - err_bfd, err_tag); - bfd_set_error (bfd_error_bad_value); - result = FALSE; - } - else - { - _bfd_error_handler - (_("Warning: %B: Unknown EABI object attribute %d"), - err_bfd, err_tag); - } - } - } - return result; -} - - -/* Return TRUE if the two EABI versions are incompatible. */ - -static bfd_boolean -elf32_arm_versions_compatible (unsigned iver, unsigned over) -{ - /* v4 and v5 are the same spec before and after it was released, - so allow mixing them. */ - if ((iver == EF_ARM_EABI_VER4 && over == EF_ARM_EABI_VER5) - || (iver == EF_ARM_EABI_VER5 && over == EF_ARM_EABI_VER4)) - return TRUE; - - return (iver == over); -} - -/* Merge backend specific data from an object file to the output - object file when linking. */ - -static bfd_boolean -elf32_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd) -{ - flagword out_flags; - flagword in_flags; - bfd_boolean flags_compatible = TRUE; - asection *sec; - - /* Check if we have the same endianess. */ - if (! _bfd_generic_verify_endian_match (ibfd, obfd)) - return FALSE; - - if (! is_arm_elf (ibfd) || ! is_arm_elf (obfd)) - return TRUE; - - if (!elf32_arm_merge_eabi_attributes (ibfd, obfd)) - return FALSE; - - /* The input BFD must have had its flags initialised. */ - /* The following seems bogus to me -- The flags are initialized in - the assembler but I don't think an elf_flags_init field is - written into the object. */ - /* BFD_ASSERT (elf_flags_init (ibfd)); */ - - in_flags = elf_elfheader (ibfd)->e_flags; - out_flags = elf_elfheader (obfd)->e_flags; - - /* In theory there is no reason why we couldn't handle this. However - in practice it isn't even close to working and there is no real - reason to want it. */ - if (EF_ARM_EABI_VERSION (in_flags) >= EF_ARM_EABI_VER4 - && !(ibfd->flags & DYNAMIC) - && (in_flags & EF_ARM_BE8)) - { - _bfd_error_handler (_("error: %B is already in final BE8 format"), - ibfd); - return FALSE; - } - - if (!elf_flags_init (obfd)) - { - /* If the input is the default architecture and had the default - flags then do not bother setting the flags for the output - architecture, instead allow future merges to do this. If no - future merges ever set these flags then they will retain their - uninitialised values, which surprise surprise, correspond - to the default values. */ - if (bfd_get_arch_info (ibfd)->the_default - && elf_elfheader (ibfd)->e_flags == 0) - return TRUE; - - elf_flags_init (obfd) = TRUE; - elf_elfheader (obfd)->e_flags = in_flags; - - if (bfd_get_arch (obfd) == bfd_get_arch (ibfd) - && bfd_get_arch_info (obfd)->the_default) - return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), bfd_get_mach (ibfd)); - - return TRUE; - } - - /* Determine what should happen if the input ARM architecture - does not match the output ARM architecture. */ - if (! bfd_arm_merge_machines (ibfd, obfd)) - return FALSE; - - /* Identical flags must be compatible. */ - if (in_flags == out_flags) - return TRUE; - - /* Check to see if the input BFD actually contains any sections. If - not, its flags may not have been initialised either, but it - cannot actually cause any incompatiblity. Do not short-circuit - dynamic objects; their section list may be emptied by - elf_link_add_object_symbols. - - Also check to see if there are no code sections in the input. - In this case there is no need to check for code specific flags. - XXX - do we need to worry about floating-point format compatability - in data sections ? */ - if (!(ibfd->flags & DYNAMIC)) - { - bfd_boolean null_input_bfd = TRUE; - bfd_boolean only_data_sections = TRUE; - - for (sec = ibfd->sections; sec != NULL; sec = sec->next) - { - /* Ignore synthetic glue sections. */ - if (strcmp (sec->name, ".glue_7") - && strcmp (sec->name, ".glue_7t")) - { - if ((bfd_get_section_flags (ibfd, sec) - & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS)) - == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS)) - only_data_sections = FALSE; - - null_input_bfd = FALSE; - break; - } - } - - if (null_input_bfd || only_data_sections) - return TRUE; - } - - /* Complain about various flag mismatches. */ - if (!elf32_arm_versions_compatible (EF_ARM_EABI_VERSION (in_flags), - EF_ARM_EABI_VERSION (out_flags))) - { - _bfd_error_handler - (_("error: Source object %B has EABI version %d, but target %B has EABI version %d"), - ibfd, obfd, - (in_flags & EF_ARM_EABIMASK) >> 24, - (out_flags & EF_ARM_EABIMASK) >> 24); - return FALSE; - } - - /* Not sure what needs to be checked for EABI versions >= 1. */ - /* VxWorks libraries do not use these flags. */ - if (get_elf_backend_data (obfd) != &elf32_arm_vxworks_bed - && get_elf_backend_data (ibfd) != &elf32_arm_vxworks_bed - && EF_ARM_EABI_VERSION (in_flags) == EF_ARM_EABI_UNKNOWN) - { - if ((in_flags & EF_ARM_APCS_26) != (out_flags & EF_ARM_APCS_26)) - { - _bfd_error_handler - (_("error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"), - ibfd, obfd, - in_flags & EF_ARM_APCS_26 ? 26 : 32, - out_flags & EF_ARM_APCS_26 ? 26 : 32); - flags_compatible = FALSE; - } - - if ((in_flags & EF_ARM_APCS_FLOAT) != (out_flags & EF_ARM_APCS_FLOAT)) - { - if (in_flags & EF_ARM_APCS_FLOAT) - _bfd_error_handler - (_("error: %B passes floats in float registers, whereas %B passes them in integer registers"), - ibfd, obfd); - else - _bfd_error_handler - (_("error: %B passes floats in integer registers, whereas %B passes them in float registers"), - ibfd, 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: %B uses VFP instructions, whereas %B does not"), - ibfd, obfd); - else - _bfd_error_handler - (_("error: %B uses FPA instructions, whereas %B does not"), - ibfd, obfd); - - flags_compatible = FALSE; - } - - if ((in_flags & EF_ARM_MAVERICK_FLOAT) != (out_flags & EF_ARM_MAVERICK_FLOAT)) - { - if (in_flags & EF_ARM_MAVERICK_FLOAT) - _bfd_error_handler - (_("error: %B uses Maverick instructions, whereas %B does not"), - ibfd, obfd); - else - _bfd_error_handler - (_("error: %B does not use Maverick instructions, whereas %B does"), - ibfd, obfd); - - flags_compatible = FALSE; - } - -#ifdef EF_ARM_SOFT_FLOAT - if ((in_flags & EF_ARM_SOFT_FLOAT) != (out_flags & EF_ARM_SOFT_FLOAT)) - { - /* 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: %B uses software FP, whereas %B uses hardware FP"), - ibfd, obfd); - else - _bfd_error_handler - (_("error: %B uses hardware FP, whereas %B uses software FP"), - ibfd, obfd); - - flags_compatible = FALSE; - } - } -#endif - - /* Interworking mismatch is only a warning. */ - if ((in_flags & EF_ARM_INTERWORK) != (out_flags & EF_ARM_INTERWORK)) - { - if (in_flags & EF_ARM_INTERWORK) - { - _bfd_error_handler - (_("Warning: %B supports interworking, whereas %B does not"), - ibfd, obfd); - } - else - { - _bfd_error_handler - (_("Warning: %B does not support interworking, whereas %B does"), - ibfd, obfd); - } + if (!in_attr[i].s || !out_attr[i].s + || strcmp (in_attr[i].s, out_attr[i].s) != 0) + out_attr[i].s = NULL; + break; + + default: + result + = result && _bfd_elf_merge_unknown_attribute_low (ibfd, obfd, i); } + + /* If out_attr was copied from in_attr then it won't have a type yet. */ + if (in_attr[i].type && !out_attr[i].type) + out_attr[i].type = in_attr[i].type; } - return flags_compatible; + /* Merge Tag_compatibility attributes and any common GNU ones. */ + if (!_bfd_elf_merge_object_attributes (ibfd, obfd)) + return FALSE; + + /* Check for any attributes not known on ARM. */ + result &= _bfd_elf_merge_unknown_attribute_list (ibfd, obfd); + + return result; +} + + +/* Return TRUE if the two EABI versions are incompatible. */ + +static bfd_boolean +elf32_arm_versions_compatible (unsigned iver, unsigned over) +{ + /* v4 and v5 are the same spec before and after it was released, + so allow mixing them. */ + if ((iver == EF_ARM_EABI_VER4 && over == EF_ARM_EABI_VER5) + || (iver == EF_ARM_EABI_VER5 && over == EF_ARM_EABI_VER4)) + return TRUE; + + return (iver == over); } +/* Merge backend specific data from an object file to the output + object file when linking. */ + +static bfd_boolean +elf32_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd); + /* Display the flags field. */ static bfd_boolean @@ -10609,6 +11882,8 @@ return TRUE; globals = elf32_arm_hash_table (info); + if (globals == NULL) + return FALSE; elf_section_data (sec)->local_dynrel = NULL; @@ -10623,7 +11898,13 @@ { unsigned long r_symndx; struct elf_link_hash_entry *h = NULL; + struct elf32_arm_link_hash_entry *eh; int r_type; + bfd_boolean call_reloc_p; + bfd_boolean may_become_dynamic_p; + bfd_boolean may_need_local_target_p; + union gotplt_union *root_plt; + struct arm_plt_info *arm_plt; r_symndx = ELF32_R_SYM (rel->r_info); if (r_symndx >= symtab_hdr->sh_info) @@ -10633,6 +11914,11 @@ || h->root.type == bfd_link_hash_warning) h = (struct elf_link_hash_entry *) h->root.u.i.link; } + eh = (struct elf32_arm_link_hash_entry *) h; + + call_reloc_p = FALSE; + may_become_dynamic_p = FALSE; + may_need_local_target_p = FALSE; r_type = ELF32_R_TYPE (rel->r_info); r_type = arm_real_reloc_type (globals, r_type); @@ -10655,13 +11941,9 @@ break; case R_ARM_TLS_LDM32: - elf32_arm_hash_table (info)->tls_ldm_got.refcount -= 1; + globals->tls_ldm_got.refcount -= 1; break; - case R_ARM_ABS32: - case R_ARM_ABS32_NOI: - case R_ARM_REL32: - case R_ARM_REL32_NOI: case R_ARM_PC24: case R_ARM_PLT32: case R_ARM_CALL: @@ -10670,6 +11952,21 @@ case R_ARM_THM_CALL: case R_ARM_THM_JUMP24: case R_ARM_THM_JUMP19: + call_reloc_p = TRUE; + may_need_local_target_p = TRUE; + break; + + case R_ARM_ABS12: + if (!globals->vxworks_p) + { + may_need_local_target_p = TRUE; + break; + } + /* Fall through. */ + case R_ARM_ABS32: + case R_ARM_ABS32_NOI: + case R_ARM_REL32: + case R_ARM_REL32_NOI: case R_ARM_MOVW_ABS_NC: case R_ARM_MOVT_ABS: case R_ARM_MOVW_PREL_NC: @@ -10679,50 +11976,70 @@ case R_ARM_THM_MOVW_PREL_NC: case R_ARM_THM_MOVT_PREL: /* Should the interworking branches be here also? */ - - if (h != NULL) + if ((info->shared || globals->root.is_relocatable_executable) + && (sec->flags & SEC_ALLOC) != 0) { - struct elf32_arm_link_hash_entry *eh; - struct elf32_arm_relocs_copied **pp; - struct elf32_arm_relocs_copied *p; - - eh = (struct elf32_arm_link_hash_entry *) h; - - if (h->plt.refcount > 0) - { - h->plt.refcount -= 1; - if (r_type == R_ARM_THM_CALL) - eh->plt_maybe_thumb_refcount--; - - if (r_type == R_ARM_THM_JUMP24 - || r_type == R_ARM_THM_JUMP19) - eh->plt_thumb_refcount--; - } - - if (r_type == R_ARM_ABS32 - || r_type == R_ARM_REL32 - || r_type == R_ARM_ABS32_NOI - || r_type == R_ARM_REL32_NOI) + if (h == NULL + && (r_type == R_ARM_REL32 || r_type == R_ARM_REL32_NOI)) { - for (pp = &eh->relocs_copied; (p = *pp) != NULL; - pp = &p->next) - if (p->section == sec) - { - p->count -= 1; - if (ELF32_R_TYPE (rel->r_info) == R_ARM_REL32 - || ELF32_R_TYPE (rel->r_info) == R_ARM_REL32_NOI) - p->pc_count -= 1; - if (p->count == 0) - *pp = p->next; - break; - } + call_reloc_p = TRUE; + may_need_local_target_p = TRUE; } + else + may_become_dynamic_p = TRUE; } + else + may_need_local_target_p = TRUE; break; default: break; } + + if (may_need_local_target_p + && elf32_arm_get_plt_info (abfd, eh, r_symndx, &root_plt, &arm_plt)) + { + BFD_ASSERT (root_plt->refcount > 0); + root_plt->refcount -= 1; + + if (!call_reloc_p) + arm_plt->noncall_refcount--; + + if (r_type == R_ARM_THM_CALL) + arm_plt->maybe_thumb_refcount--; + + if (r_type == R_ARM_THM_JUMP24 + || r_type == R_ARM_THM_JUMP19) + arm_plt->thumb_refcount--; + } + + if (may_become_dynamic_p) + { + struct elf_dyn_relocs **pp; + struct elf_dyn_relocs *p; + + if (h != NULL) + pp = &((struct elf32_arm_link_hash_entry *) h)->dyn_relocs; + else + { + Elf_Internal_Sym *isym; + + isym = bfd_sym_from_r_symndx (&globals->sym_cache, + abfd, r_symndx); + if (isym == NULL) + return FALSE; + pp = elf32_arm_get_local_dynreloc_list (abfd, r_symndx, isym); + if (pp == NULL) + return FALSE; + } + for (pp = &eh->dyn_relocs; (p = *pp) != NULL; pp = &p->next) + if (p->sec == sec) + { + /* Everything must go for SEC. */ + *pp = p->next; + break; + } + } } return TRUE; @@ -10740,9 +12057,10 @@ const Elf_Internal_Rela *rel_end; bfd *dynobj; asection *sreloc; - bfd_vma *local_got_offsets; struct elf32_arm_link_hash_table *htab; - bfd_boolean needs_plt; + bfd_boolean call_reloc_p; + bfd_boolean may_become_dynamic_p; + bfd_boolean may_need_local_target_p; unsigned long nsyms; if (info->relocatable) @@ -10751,6 +12069,9 @@ BFD_ASSERT (is_arm_elf (abfd)); htab = elf32_arm_hash_table (info); + if (htab == NULL) + return FALSE; + sreloc = NULL; /* Create dynamic sections for relocatable executables so that we can @@ -10762,8 +12083,12 @@ return FALSE; } - dynobj = elf_hash_table (info)->dynobj; - local_got_offsets = elf_local_got_offsets (abfd); + if (htab->root.dynobj == NULL) + htab->root.dynobj = abfd; + if (!create_ifunc_sections (info)) + return FALSE; + + dynobj = htab->root.dynobj; symtab_hdr = & elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); @@ -10772,6 +12097,7 @@ rel_end = relocs + sec->reloc_count; for (rel = relocs; rel < rel_end; rel++) { + Elf_Internal_Sym *isym; struct elf_link_hash_entry *h; struct elf32_arm_link_hash_entry *eh; unsigned long r_symndx; @@ -10785,31 +12111,53 @@ /* PR 9934: It is possible to have relocations that do not refer to symbols, thus it is also possible to have an object file containing relocations but no symbol table. */ - && (r_symndx > 0 || nsyms > 0)) + && (r_symndx > STN_UNDEF || nsyms > 0)) { (*_bfd_error_handler) (_("%B: bad symbol index: %d"), abfd, r_symndx); return FALSE; } - if (nsyms == 0 || r_symndx < symtab_hdr->sh_info) - h = NULL; - else + h = NULL; + isym = NULL; + if (nsyms > 0) { - 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; + if (r_symndx < symtab_hdr->sh_info) + { + /* A local symbol. */ + isym = bfd_sym_from_r_symndx (&htab->sym_cache, + abfd, r_symndx); + if (isym == NULL) + return FALSE; + } + 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; + } } eh = (struct elf32_arm_link_hash_entry *) h; + call_reloc_p = FALSE; + may_become_dynamic_p = FALSE; + may_need_local_target_p = FALSE; + + /* Could be done earlier, if h were already available. */ + r_type = elf32_arm_tls_transition (info, r_type, h); switch (r_type) { case R_ARM_GOT32: case R_ARM_GOT_PREL: case R_ARM_TLS_GD32: case R_ARM_TLS_IE32: + case R_ARM_TLS_GOTDESC: + case R_ARM_TLS_DESCSEQ: + case R_ARM_THM_TLS_DESCSEQ: + case R_ARM_TLS_CALL: + case R_ARM_THM_TLS_CALL: /* This symbol requires a global offset table entry. */ { int tls_type, old_tls_type; @@ -10817,7 +12165,14 @@ switch (r_type) { case R_ARM_TLS_GD32: tls_type = GOT_TLS_GD; break; + case R_ARM_TLS_IE32: tls_type = GOT_TLS_IE; break; + + case R_ARM_TLS_GOTDESC: + case R_ARM_TLS_CALL: case R_ARM_THM_TLS_CALL: + case R_ARM_TLS_DESCSEQ: case R_ARM_THM_TLS_DESCSEQ: + tls_type = GOT_TLS_GDESC; break; + default: tls_type = GOT_NORMAL; break; } @@ -10828,35 +12183,33 @@ } else { - bfd_signed_vma *local_got_refcounts; - /* This is a global offset table entry for a local symbol. */ - local_got_refcounts = elf_local_got_refcounts (abfd); - if (local_got_refcounts == NULL) - { - bfd_size_type size; - - size = symtab_hdr->sh_info; - size *= (sizeof (bfd_signed_vma) + sizeof (char)); - local_got_refcounts = bfd_zalloc (abfd, size); - if (local_got_refcounts == NULL) - return FALSE; - elf_local_got_refcounts (abfd) = local_got_refcounts; - elf32_arm_local_got_tls_type (abfd) - = (char *) (local_got_refcounts + symtab_hdr->sh_info); - } - local_got_refcounts[r_symndx] += 1; + if (!elf32_arm_allocate_local_sym_info (abfd)) + return FALSE; + elf_local_got_refcounts (abfd)[r_symndx] += 1; old_tls_type = elf32_arm_local_got_tls_type (abfd) [r_symndx]; } - /* We will already have issued an error message if there is a - TLS / non-TLS mismatch, based on the symbol type. We don't - support any linker relaxations. So just combine any TLS - types needed. */ + /* If a variable is accessed with both tls methods, two + slots may be created. */ + if (GOT_TLS_GD_ANY_P (old_tls_type) + && GOT_TLS_GD_ANY_P (tls_type)) + tls_type |= old_tls_type; + + /* We will already have issued an error message if there + is a TLS/non-TLS mismatch, based on the symbol + type. So just combine any TLS types needed. */ if (old_tls_type != GOT_UNKNOWN && old_tls_type != GOT_NORMAL && tls_type != GOT_NORMAL) tls_type |= old_tls_type; + /* If the symbol is accessed in both IE and GDESC + method, we're able to relax. Turn off the GDESC flag, + without messing up with any other kind of tls types + that may be involved */ + if ((tls_type & GOT_TLS_IE) && (tls_type & GOT_TLS_GDESC)) + tls_type &= ~GOT_TLS_GDESC; + if (old_tls_type != tls_type) { if (h != NULL) @@ -10874,22 +12227,11 @@ case R_ARM_GOTOFF32: case R_ARM_GOTPC: - if (htab->sgot == NULL) - { - if (htab->root.dynobj == NULL) - htab->root.dynobj = abfd; - if (!create_got_section (htab->root.dynobj, info)) - return FALSE; - } + if (htab->root.sgot == NULL + && !create_got_section (htab->root.dynobj, info)) + return FALSE; break; - case R_ARM_ABS12: - /* VxWorks uses dynamic R_ARM_ABS12 relocations for - ldr __GOTT_INDEX__ offsets. */ - if (!htab->vxworks_p) - break; - /* Fall through. */ - case R_ARM_PC24: case R_ARM_PLT32: case R_ARM_CALL: @@ -10898,8 +12240,19 @@ case R_ARM_THM_CALL: case R_ARM_THM_JUMP24: case R_ARM_THM_JUMP19: - needs_plt = 1; - goto normal_reloc; + call_reloc_p = TRUE; + may_need_local_target_p = TRUE; + break; + + case R_ARM_ABS12: + /* VxWorks uses dynamic R_ARM_ABS12 relocations for + ldr __GOTT_INDEX__ offsets. */ + if (!htab->vxworks_p) + { + may_need_local_target_p = TRUE; + break; + } + /* Fall through. */ case R_ARM_MOVW_ABS_NC: case R_ARM_MOVT_ABS: @@ -10924,133 +12277,30 @@ case R_ARM_MOVT_PREL: case R_ARM_THM_MOVW_PREL_NC: case R_ARM_THM_MOVT_PREL: - needs_plt = 0; - normal_reloc: /* Should the interworking branches be listed here? */ - if (h != NULL) - { - /* If this reloc is in a read-only section, we might - need a copy reloc. We can't check reliably at this - stage whether the section is read-only, as input - sections have not yet been mapped to output sections. - Tentatively set the flag for now, and correct in - adjust_dynamic_symbol. */ - if (!info->shared) - h->non_got_ref = 1; - - /* We may need a .plt entry if the function this reloc - refers to is in a different object. We can't tell for - sure yet, because something later might force the - symbol local. */ - if (needs_plt) - h->needs_plt = 1; - - /* If we create a PLT entry, this relocation will reference - it, even if it's an ABS32 relocation. */ - h->plt.refcount += 1; - - /* It's too early to use htab->use_blx here, so we have to - record possible blx references separately from - relocs that definitely need a thumb stub. */ - - if (r_type == R_ARM_THM_CALL) - eh->plt_maybe_thumb_refcount += 1; - - if (r_type == R_ARM_THM_JUMP24 - || r_type == R_ARM_THM_JUMP19) - eh->plt_thumb_refcount += 1; - } - - /* If we are creating a shared library or relocatable executable, - and this is a reloc against a global symbol, or a non PC - relative reloc against a local symbol, then we need to copy - the reloc into the shared library. However, if we are linking - with -Bsymbolic, we do not need to copy a reloc against a - global symbol which is defined in an object we are - including in the link (i.e., DEF_REGULAR is set). At - this point we have not seen all the input files, so it is - possible that DEF_REGULAR is not set now but will be set - later (it is never cleared). We account for that - possibility below by storing information in the - relocs_copied field of the hash table entry. */ if ((info->shared || htab->root.is_relocatable_executable) - && (sec->flags & SEC_ALLOC) != 0 - && ((r_type == R_ARM_ABS32 || r_type == R_ARM_ABS32_NOI) - || (h != NULL && ! h->needs_plt - && (! info->symbolic || ! h->def_regular)))) + && (sec->flags & SEC_ALLOC) != 0) { - struct elf32_arm_relocs_copied *p, **head; - - /* When creating a shared object, we must copy these - reloc types into the output file. We create a reloc - section in dynobj and make room for this reloc. */ - if (sreloc == NULL) + if (h == NULL + && (r_type == R_ARM_REL32 || r_type == R_ARM_REL32_NOI)) { - sreloc = _bfd_elf_make_dynamic_reloc_section - (sec, dynobj, 2, abfd, ! htab->use_rel); - - if (sreloc == NULL) - return FALSE; - - /* BPABI objects never have dynamic relocations mapped. */ - if (htab->symbian_p) - { - flagword flags; - - flags = bfd_get_section_flags (dynobj, sreloc); - flags &= ~(SEC_LOAD | SEC_ALLOC); - bfd_set_section_flags (dynobj, sreloc, flags); - } - } - - /* If this is a global symbol, we count the number of - relocations we need for this symbol. */ - if (h != NULL) - { - head = &((struct elf32_arm_link_hash_entry *) h)->relocs_copied; + /* In shared libraries and relocatable executables, + we treat local relative references as calls; + see the related SYMBOL_CALLS_LOCAL code in + allocate_dynrelocs. */ + call_reloc_p = TRUE; + may_need_local_target_p = TRUE; } else - { - /* Track dynamic relocs needed for local syms too. - We really need local syms available to do this - easily. Oh well. */ - asection *s; - void *vpp; - Elf_Internal_Sym *isym; - - isym = bfd_sym_from_r_symndx (&htab->sym_cache, - abfd, r_symndx); - if (isym == NULL) - return FALSE; - - s = bfd_section_from_elf_index (abfd, isym->st_shndx); - if (s == NULL) - s = sec; - - vpp = &elf_section_data (s)->local_dynrel; - head = (struct elf32_arm_relocs_copied **) vpp; - } - - p = *head; - if (p == NULL || p->section != sec) - { - bfd_size_type amt = sizeof *p; - - p = bfd_alloc (htab->root.dynobj, amt); - if (p == NULL) - return FALSE; - p->next = *head; - *head = p; - p->section = sec; - p->count = 0; - p->pc_count = 0; - } - - if (r_type == R_ARM_REL32 || r_type == R_ARM_REL32_NOI) - p->pc_count += 1; - p->count += 1; + /* We are creating a shared library or relocatable + executable, and this is a reloc against a global symbol, + or a non-PC-relative reloc against a local symbol. + We may need to copy the reloc into the output. */ + may_become_dynamic_p = TRUE; } + else + may_need_local_target_p = TRUE; break; /* This relocation describes the C++ object vtable hierarchy. @@ -11069,6 +12319,119 @@ return FALSE; break; } + + if (h != NULL) + { + if (call_reloc_p) + /* We may need a .plt entry if the function this reloc + refers to is in a different object, regardless of the + symbol's type. We can't tell for sure yet, because + something later might force the symbol local. */ + h->needs_plt = 1; + else if (may_need_local_target_p) + /* If this reloc is in a read-only section, we might + need a copy reloc. We can't check reliably at this + stage whether the section is read-only, as input + sections have not yet been mapped to output sections. + Tentatively set the flag for now, and correct in + adjust_dynamic_symbol. */ + h->non_got_ref = 1; + } + + if (may_need_local_target_p + && (h != NULL || ELF32_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)) + { + union gotplt_union *root_plt; + struct arm_plt_info *arm_plt; + struct arm_local_iplt_info *local_iplt; + + if (h != NULL) + { + root_plt = &h->plt; + arm_plt = &eh->plt; + } + else + { + local_iplt = elf32_arm_create_local_iplt (abfd, r_symndx); + if (local_iplt == NULL) + return FALSE; + root_plt = &local_iplt->root; + arm_plt = &local_iplt->arm; + } + + /* If the symbol is a function that doesn't bind locally, + this relocation will need a PLT entry. */ + root_plt->refcount += 1; + + if (!call_reloc_p) + arm_plt->noncall_refcount++; + + /* It's too early to use htab->use_blx here, so we have to + record possible blx references separately from + relocs that definitely need a thumb stub. */ + + if (r_type == R_ARM_THM_CALL) + arm_plt->maybe_thumb_refcount += 1; + + if (r_type == R_ARM_THM_JUMP24 + || r_type == R_ARM_THM_JUMP19) + arm_plt->thumb_refcount += 1; + } + + if (may_become_dynamic_p) + { + struct elf_dyn_relocs *p, **head; + + /* Create a reloc section in dynobj. */ + if (sreloc == NULL) + { + sreloc = _bfd_elf_make_dynamic_reloc_section + (sec, dynobj, 2, abfd, ! htab->use_rel); + + if (sreloc == NULL) + return FALSE; + + /* BPABI objects never have dynamic relocations mapped. */ + if (htab->symbian_p) + { + flagword flags; + + flags = bfd_get_section_flags (dynobj, sreloc); + flags &= ~(SEC_LOAD | SEC_ALLOC); + bfd_set_section_flags (dynobj, sreloc, flags); + } + } + + /* If this is a global symbol, count the number of + relocations we need for this symbol. */ + if (h != NULL) + head = &((struct elf32_arm_link_hash_entry *) h)->dyn_relocs; + else + { + head = elf32_arm_get_local_dynreloc_list (abfd, r_symndx, isym); + if (head == NULL) + return FALSE; + } + + p = *head; + if (p == NULL || p->sec != sec) + { + bfd_size_type amt = sizeof *p; + + p = (struct elf_dyn_relocs *) bfd_alloc (htab->root.dynobj, amt); + if (p == NULL) + return FALSE; + p->next = *head; + *head = p; + p->sec = sec; + p->count = 0; + p->pc_count = 0; + } + + if (r_type == R_ARM_REL32 || r_type == R_ARM_REL32_NOI) + p->pc_count += 1; + p->count += 1; + } } return TRUE; @@ -11271,11 +12634,15 @@ struct elf32_arm_link_hash_table *globals; globals = elf32_arm_hash_table (info); + if (globals == NULL) + return FALSE; + dynobj = elf_hash_table (info)->dynobj; /* Make sure we know what is going on here. */ BFD_ASSERT (dynobj != NULL && (h->needs_plt + || h->type == STT_GNU_IFUNC || h->u.weakdef != NULL || (h->def_dynamic && h->ref_regular @@ -11286,13 +12653,15 @@ /* If this is a function, put it in the procedure linkage table. We will fill in the contents of the procedure linkage table later, when we know the address of the .got section. */ - if (h->type == STT_FUNC || h->type == STT_ARM_TFUNC - || h->needs_plt) + if (h->type == STT_FUNC || h->type == STT_GNU_IFUNC || h->needs_plt) { + /* Calls to STT_GNU_IFUNC symbols always use a PLT, even if the + symbol binds locally. */ if (h->plt.refcount <= 0 - || SYMBOL_CALLS_LOCAL (info, h) - || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT - && h->root.type == bfd_link_hash_undefweak)) + || (h->type != STT_GNU_IFUNC + && (SYMBOL_CALLS_LOCAL (info, h) + || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT + && h->root.type == bfd_link_hash_undefweak)))) { /* This case can occur if we saw a PLT32 reloc in an input file, but the symbol was never referred to by a dynamic @@ -11300,8 +12669,9 @@ such a case, we don't actually need to build a procedure linkage table, and we can just do a PC24 reloc instead. */ h->plt.offset = (bfd_vma) -1; - eh->plt_thumb_refcount = 0; - eh->plt_maybe_thumb_refcount = 0; + eh->plt.thumb_refcount = 0; + eh->plt.maybe_thumb_refcount = 0; + eh->plt.noncall_refcount = 0; h->needs_plt = 0; } @@ -11315,8 +12685,9 @@ and non-function syms in check-relocs; Objects loaded later in the link may change h->type. So fix it now. */ h->plt.offset = (bfd_vma) -1; - eh->plt_thumb_refcount = 0; - eh->plt_maybe_thumb_refcount = 0; + eh->plt.thumb_refcount = 0; + eh->plt.maybe_thumb_refcount = 0; + eh->plt.noncall_refcount = 0; } /* If this is a weak symbol, and there is a real definition, the @@ -11376,8 +12747,7 @@ asection *srel; srel = bfd_get_section_by_name (dynobj, RELOC_SECTION (globals, ".bss")); - BFD_ASSERT (srel != NULL); - srel->size += RELOC_SIZE (globals); + elf32_arm_allocate_dynrelocs (info, srel, 1); h->needs_copy = 1; } @@ -11388,15 +12758,12 @@ dynamic relocs. */ static bfd_boolean -allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) +allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf) { struct bfd_link_info *info; struct elf32_arm_link_hash_table *htab; struct elf32_arm_link_hash_entry *eh; - struct elf32_arm_relocs_copied *p; - bfd_signed_vma thumb_refs; - - eh = (struct elf32_arm_link_hash_entry *) h; + struct elf_dyn_relocs *p; if (h->root.type == bfd_link_hash_indirect) return TRUE; @@ -11407,10 +12774,14 @@ symbol in a hash traversal. So look at it now. */ h = (struct elf_link_hash_entry *) h->root.u.i.link; + eh = (struct elf32_arm_link_hash_entry *) h; + info = (struct bfd_link_info *) inf; htab = elf32_arm_hash_table (info); + if (htab == NULL) + return FALSE; - if (htab->root.dynamic_sections_created + if ((htab->root.dynamic_sections_created || h->type == STT_GNU_IFUNC) && h->plt.refcount > 0) { /* Make sure this symbol is output as a dynamic symbol. @@ -11422,29 +12793,29 @@ return FALSE; } + /* If the call in the PLT entry binds locally, the associated + GOT entry should use an R_ARM_IRELATIVE relocation instead of + the usual R_ARM_JUMP_SLOT. Put it in the .iplt section rather + than the .plt section. */ + if (h->type == STT_GNU_IFUNC && SYMBOL_CALLS_LOCAL (info, h)) + { + eh->is_iplt = 1; + if (eh->plt.noncall_refcount == 0 + && SYMBOL_REFERENCES_LOCAL (info, h)) + /* All non-call references can be resolved directly. + This means that they can (and in some cases, must) + resolve directly to the run-time target, rather than + to the PLT. That in turns means that any .got entry + would be equal to the .igot.plt entry, so there's + no point having both. */ + h->got.refcount = 0; + } + if (info->shared + || eh->is_iplt || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h)) { - asection *s = htab->splt; - - /* If this is the first .plt entry, make room for the special - first entry. */ - if (s->size == 0) - s->size += htab->plt_header_size; - - h->plt.offset = s->size; - - /* If we will insert a Thumb trampoline before this PLT, leave room - for it. */ - thumb_refs = eh->plt_thumb_refcount; - if (!htab->use_blx) - thumb_refs += eh->plt_maybe_thumb_refcount; - - if (thumb_refs > 0) - { - h->plt.offset += PLT_THUMB_STUB_SIZE; - s->size += PLT_THUMB_STUB_SIZE; - } + elf32_arm_allocate_plt_entry (info, eh->is_iplt, &h->plt, &eh->plt); /* If this symbol is not defined in a regular file, and we are not generating a shared library, then set the symbol to this @@ -11454,29 +12825,16 @@ if (! info->shared && !h->def_regular) { - h->root.u.def.section = s; + h->root.u.def.section = htab->root.splt; h->root.u.def.value = h->plt.offset; /* Make sure the function is not marked as Thumb, in case it is the target of an ABS32 relocation, which will point to the PLT entry. */ - if (ELF_ST_TYPE (h->type) == STT_ARM_TFUNC) - h->type = ELF_ST_INFO (ELF_ST_BIND (h->type), STT_FUNC); - } - - /* Make room for this entry. */ - s->size += htab->plt_entry_size; - - if (!htab->symbian_p) - { - /* We also need to make an entry in the .got.plt section, which - will be placed in the .got section by the linker script. */ - eh->plt_got_offset = htab->sgotplt->size; - htab->sgotplt->size += 4; + h->target_internal = ST_BRANCH_TO_ARM; } - /* We also need to make an entry in the .rel(a).plt section. */ - htab->srelplt->size += RELOC_SIZE (htab); + htab->next_tls_desc_index++; /* VxWorks executables have a second set of relocations for each PLT entry. They go in a separate relocation section, @@ -11486,12 +12844,12 @@ /* There is a relocation for the initial PLT entry: an R_ARM_32 relocation for _GLOBAL_OFFSET_TABLE_. */ if (h->plt.offset == htab->plt_header_size) - htab->srelplt2->size += RELOC_SIZE (htab); + elf32_arm_allocate_dynrelocs (info, htab->srelplt2, 1); /* There are two extra relocations for each subsequent PLT entry: an R_ARM_32 relocation for the GOT entry, and an R_ARM_32 relocation for the PLT entry. */ - htab->srelplt2->size += RELOC_SIZE (htab) * 2; + elf32_arm_allocate_dynrelocs (info, htab->srelplt2, 2); } } else @@ -11506,6 +12864,9 @@ h->needs_plt = 0; } + eh = (struct elf32_arm_link_hash_entry *) h; + eh->tlsdesc_got = (bfd_vma) -1; + if (h->got.refcount > 0) { asection *s; @@ -11524,7 +12885,7 @@ if (!htab->symbian_p) { - s = htab->sgot; + s = htab->root.sgot; h->got.offset = s->size; if (tls_type == GOT_UNKNOWN) @@ -11535,9 +12896,28 @@ s->size += 4; else { + if (tls_type & GOT_TLS_GDESC) + { + /* R_ARM_TLS_DESC needs 2 GOT slots. */ + eh->tlsdesc_got + = (htab->root.sgotplt->size + - elf32_arm_compute_jump_table_size (htab)); + htab->root.sgotplt->size += 8; + h->got.offset = (bfd_vma) -2; + /* plt.got_offset needs to know there's a TLS_DESC + reloc in the middle of .got.plt. */ + htab->num_tls_desc++; + } + if (tls_type & GOT_TLS_GD) - /* R_ARM_TLS_GD32 needs 2 consecutive GOT slots. */ - s->size += 8; + { + /* R_ARM_TLS_GD32 needs 2 consecutive GOT slots. If + the symbol is both GD and GDESC, got.offset may + have been overwritten. */ + h->got.offset = s->size; + s->size += 8; + } + if (tls_type & GOT_TLS_IE) /* R_ARM_TLS_IE32 needs one GOT slot. */ s->size += 4; @@ -11557,19 +12937,38 @@ || h->root.type != bfd_link_hash_undefweak)) { if (tls_type & GOT_TLS_IE) - htab->srelgot->size += RELOC_SIZE (htab); + elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1); if (tls_type & GOT_TLS_GD) - htab->srelgot->size += RELOC_SIZE (htab); + elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1); - if ((tls_type & GOT_TLS_GD) && indx != 0) - htab->srelgot->size += RELOC_SIZE (htab); - } - else if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT - || h->root.type != bfd_link_hash_undefweak) - && (info->shared - || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))) - htab->srelgot->size += RELOC_SIZE (htab); + if (tls_type & GOT_TLS_GDESC) + { + elf32_arm_allocate_dynrelocs (info, htab->root.srelplt, 1); + /* GDESC needs a trampoline to jump to. */ + htab->tls_trampoline = -1; + } + + /* Only GD needs it. GDESC just emits one relocation per + 2 entries. */ + if ((tls_type & GOT_TLS_GD) && indx != 0) + elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1); + } + else if (!SYMBOL_REFERENCES_LOCAL (info, h)) + { + if (htab->root.dynamic_sections_created) + /* Reserve room for the GOT entry's R_ARM_GLOB_DAT relocation. */ + elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1); + } + else if (h->type == STT_GNU_IFUNC + && eh->plt.noncall_refcount == 0) + /* No non-call references resolve the STT_GNU_IFUNC's PLT entry; + they all resolve dynamically instead. Reserve room for the + GOT entry's R_ARM_IRELATIVE relocation. */ + elf32_arm_allocate_irelocs (info, htab->root.srelgot, 1); + else if (info->shared) + /* Reserve room for the GOT entry's R_ARM_RELATIVE relocation. */ + elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1); } } else @@ -11578,7 +12977,7 @@ /* Allocate stubs for exported Thumb functions on v4t. */ if (!htab->use_blx && h->dynindx != -1 && h->def_regular - && ELF_ST_TYPE (h->type) == STT_ARM_TFUNC + && h->target_internal == ST_BRANCH_TO_THUMB && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT) { struct elf_link_hash_entry * th; @@ -11596,17 +12995,19 @@ NULL, TRUE, FALSE, &bh); myh = (struct elf_link_hash_entry *) bh; - myh->type = ELF_ST_INFO (STB_LOCAL, STT_ARM_TFUNC); + myh->type = ELF_ST_INFO (STB_LOCAL, STT_FUNC); myh->forced_local = 1; + myh->target_internal = ST_BRANCH_TO_THUMB; eh->export_glue = myh; th = record_arm_to_thumb_glue (info, h); /* Point the symbol at the stub. */ h->type = ELF_ST_INFO (ELF_ST_BIND (h->type), STT_FUNC); + h->target_internal = ST_BRANCH_TO_ARM; h->root.u.def.section = th->root.u.def.section; h->root.u.def.value = th->root.u.def.value & ~1; } - if (eh->relocs_copied == NULL) + if (eh->dyn_relocs == NULL) return TRUE; /* In the shared -Bsymbolic case, discard space allocated for @@ -11625,9 +13026,9 @@ should avoid writing assembly like ".long foo - .". */ if (SYMBOL_CALLS_LOCAL (info, h)) { - struct elf32_arm_relocs_copied **pp; + struct elf_dyn_relocs **pp; - for (pp = &eh->relocs_copied; (p = *pp) != NULL; ) + for (pp = &eh->dyn_relocs; (p = *pp) != NULL; ) { p->count -= p->pc_count; p->pc_count = 0; @@ -11638,13 +13039,13 @@ } } - if (elf32_arm_hash_table (info)->vxworks_p) + if (htab->vxworks_p) { - struct elf32_arm_relocs_copied **pp; + struct elf_dyn_relocs **pp; - for (pp = &eh->relocs_copied; (p = *pp) != NULL; ) + for (pp = &eh->dyn_relocs; (p = *pp) != NULL; ) { - if (strcmp (p->section->output_section->name, ".tls_vars") == 0) + if (strcmp (p->sec->output_section->name, ".tls_vars") == 0) *pp = p->next; else pp = &p->next; @@ -11653,11 +13054,11 @@ /* Also discard relocs on undefined weak syms with non-default visibility. */ - if (eh->relocs_copied != NULL + if (eh->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak) { if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT) - eh->relocs_copied = NULL; + eh->dyn_relocs = NULL; /* Make sure undefined weak symbols are output as a dynamic symbol in PIEs. */ @@ -11708,16 +13109,21 @@ goto keep; } - eh->relocs_copied = NULL; + eh->dyn_relocs = NULL; keep: ; } /* Finally, allocate space. */ - for (p = eh->relocs_copied; p != NULL; p = p->next) + for (p = eh->dyn_relocs; p != NULL; p = p->next) { - asection *sreloc = elf_section_data (p->section)->sreloc; - sreloc->size += p->count * RELOC_SIZE (htab); + asection *sreloc = elf_section_data (p->sec)->sreloc; + if (h->type == STT_GNU_IFUNC + && eh->plt.noncall_refcount == 0 + && SYMBOL_REFERENCES_LOCAL (info, h)) + elf32_arm_allocate_irelocs (info, sreloc, p->count); + else + elf32_arm_allocate_dynrelocs (info, sreloc, p->count); } return TRUE; @@ -11729,15 +13135,15 @@ elf32_arm_readonly_dynrelocs (struct elf_link_hash_entry * h, void * inf) { struct elf32_arm_link_hash_entry * eh; - struct elf32_arm_relocs_copied * p; + struct elf_dyn_relocs * p; if (h->root.type == bfd_link_hash_warning) h = (struct elf_link_hash_entry *) h->root.u.i.link; eh = (struct elf32_arm_link_hash_entry *) h; - for (p = eh->relocs_copied; p != NULL; p = p->next) + for (p = eh->dyn_relocs; p != NULL; p = p->next) { - asection *s = p->section; + asection *s = p->sec; if (s != NULL && (s->flags & SEC_READONLY) != 0) { @@ -11759,6 +13165,9 @@ struct elf32_arm_link_hash_table *globals; globals = elf32_arm_hash_table (info); + if (globals == NULL) + return; + globals->byteswap_code = byteswap_code; } @@ -11776,6 +13185,9 @@ struct elf32_arm_link_hash_table *htab; htab = elf32_arm_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = elf_hash_table (info)->dynobj; BFD_ASSERT (dynobj != NULL); check_use_blx (htab); @@ -11798,23 +13210,27 @@ { bfd_signed_vma *local_got; bfd_signed_vma *end_local_got; + struct arm_local_iplt_info **local_iplt_ptr, *local_iplt; char *local_tls_type; + bfd_vma *local_tlsdesc_gotent; bfd_size_type locsymcount; Elf_Internal_Shdr *symtab_hdr; asection *srel; - bfd_boolean is_vxworks = elf32_arm_hash_table (info)->vxworks_p; + bfd_boolean is_vxworks = htab->vxworks_p; + unsigned int symndx; if (! is_arm_elf (ibfd)) continue; for (s = ibfd->sections; s != NULL; s = s->next) { - struct elf32_arm_relocs_copied *p; + struct elf_dyn_relocs *p; - for (p = elf_section_data (s)->local_dynrel; p != NULL; p = p->next) + for (p = (struct elf_dyn_relocs *) + elf_section_data (s)->local_dynrel; p != NULL; p = p->next) { - if (!bfd_is_abs_section (p->section) - && bfd_is_abs_section (p->section->output_section)) + if (!bfd_is_abs_section (p->sec) + && bfd_is_abs_section (p->sec->output_section)) { /* Input section has been discarded, either because it is a copy of a linkonce section or due to @@ -11822,7 +13238,7 @@ the relocs too. */ } else if (is_vxworks - && strcmp (p->section->output_section->name, + && strcmp (p->sec->output_section->name, ".tls_vars") == 0) { /* Relocations in vxworks .tls_vars sections are @@ -11830,9 +13246,9 @@ } else if (p->count != 0) { - srel = elf_section_data (p->section)->sreloc; - srel->size += p->count * RELOC_SIZE (htab); - if ((p->section->output_section->flags & SEC_READONLY) != 0) + srel = elf_section_data (p->sec)->sreloc; + elf32_arm_allocate_dynrelocs (info, srel, p->count); + if ((p->sec->output_section->flags & SEC_READONLY) != 0) info->flags |= DF_TEXTREL; } } @@ -11845,24 +13261,101 @@ symtab_hdr = & elf_symtab_hdr (ibfd); locsymcount = symtab_hdr->sh_info; end_local_got = local_got + locsymcount; + local_iplt_ptr = elf32_arm_local_iplt (ibfd); local_tls_type = elf32_arm_local_got_tls_type (ibfd); - s = htab->sgot; - srel = htab->srelgot; - for (; local_got < end_local_got; ++local_got, ++local_tls_type) - { + local_tlsdesc_gotent = elf32_arm_local_tlsdesc_gotent (ibfd); + symndx = 0; + s = htab->root.sgot; + srel = htab->root.srelgot; + for (; local_got < end_local_got; + ++local_got, ++local_iplt_ptr, ++local_tls_type, + ++local_tlsdesc_gotent, ++symndx) + { + *local_tlsdesc_gotent = (bfd_vma) -1; + local_iplt = *local_iplt_ptr; + if (local_iplt != NULL) + { + struct elf_dyn_relocs *p; + + if (local_iplt->root.refcount > 0) + { + elf32_arm_allocate_plt_entry (info, TRUE, + &local_iplt->root, + &local_iplt->arm); + if (local_iplt->arm.noncall_refcount == 0) + /* All references to the PLT are calls, so all + non-call references can resolve directly to the + run-time target. This means that the .got entry + would be the same as the .igot.plt entry, so there's + no point creating both. */ + *local_got = 0; + } + else + { + BFD_ASSERT (local_iplt->arm.noncall_refcount == 0); + local_iplt->root.offset = (bfd_vma) -1; + } + + for (p = local_iplt->dyn_relocs; p != NULL; p = p->next) + { + asection *psrel; + + psrel = elf_section_data (p->sec)->sreloc; + if (local_iplt->arm.noncall_refcount == 0) + elf32_arm_allocate_irelocs (info, psrel, p->count); + else + elf32_arm_allocate_dynrelocs (info, psrel, p->count); + } + } if (*local_got > 0) { + Elf_Internal_Sym *isym; + *local_got = s->size; if (*local_tls_type & GOT_TLS_GD) /* TLS_GD relocs need an 8-byte structure in the GOT. */ s->size += 8; + if (*local_tls_type & GOT_TLS_GDESC) + { + *local_tlsdesc_gotent = htab->root.sgotplt->size + - elf32_arm_compute_jump_table_size (htab); + htab->root.sgotplt->size += 8; + *local_got = (bfd_vma) -2; + /* plt.got_offset needs to know there's a TLS_DESC + reloc in the middle of .got.plt. */ + htab->num_tls_desc++; + } if (*local_tls_type & GOT_TLS_IE) s->size += 4; - if (*local_tls_type == GOT_NORMAL) - s->size += 4; - if (info->shared || *local_tls_type == GOT_TLS_GD) - srel->size += RELOC_SIZE (htab); + if (*local_tls_type & GOT_NORMAL) + { + /* If the symbol is both GD and GDESC, *local_got + may have been overwritten. */ + *local_got = s->size; + s->size += 4; + } + + isym = bfd_sym_from_r_symndx (&htab->sym_cache, ibfd, symndx); + if (isym == NULL) + return FALSE; + + /* If all references to an STT_GNU_IFUNC PLT are calls, + then all non-call references, including this GOT entry, + resolve directly to the run-time target. */ + if (ELF32_ST_TYPE (isym->st_info) == STT_GNU_IFUNC + && (local_iplt == NULL + || local_iplt->arm.noncall_refcount == 0)) + elf32_arm_allocate_irelocs (info, srel, 1); + else if ((info->shared && !(*local_tls_type & GOT_TLS_GDESC)) + || *local_tls_type & GOT_TLS_GD) + elf32_arm_allocate_dynrelocs (info, srel, 1); + + if (info->shared && *local_tls_type & GOT_TLS_GDESC) + { + elf32_arm_allocate_dynrelocs (info, htab->root.srelplt, 1); + htab->tls_trampoline = -1; + } } else *local_got = (bfd_vma) -1; @@ -11873,17 +13366,17 @@ { /* Allocate two GOT entries and one dynamic relocation (if necessary) for R_ARM_TLS_LDM32 relocations. */ - htab->tls_ldm_got.offset = htab->sgot->size; - htab->sgot->size += 8; + htab->tls_ldm_got.offset = htab->root.sgot->size; + htab->root.sgot->size += 8; if (info->shared) - htab->srelgot->size += RELOC_SIZE (htab); + elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1); } else htab->tls_ldm_got.offset = -1; /* Allocate global sym .plt and .got entries, and space for global sym dynamic relocs. */ - elf_link_hash_traverse (& htab->root, allocate_dynrelocs, info); + elf_link_hash_traverse (& htab->root, allocate_dynrelocs_for_symbol, info); /* Here we rummage through the found bfds to collect glue information. */ for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) @@ -11904,6 +13397,34 @@ /* Allocate space for the glue sections now that we've sized them. */ bfd_elf32_arm_allocate_interworking_sections (info); + /* For every jump slot reserved in the sgotplt, reloc_count is + incremented. However, when we reserve space for TLS descriptors, + it's not incremented, so in order to compute the space reserved + for them, it suffices to multiply the reloc count by the jump + slot size. */ + if (htab->root.srelplt) + htab->sgotplt_jump_table_size = elf32_arm_compute_jump_table_size(htab); + + if (htab->tls_trampoline) + { + if (htab->root.splt->size == 0) + htab->root.splt->size += htab->plt_header_size; + + htab->tls_trampoline = htab->root.splt->size; + htab->root.splt->size += htab->plt_entry_size; + + /* If we're not using lazy TLS relocations, don't generate the + PLT and GOT entries they require. */ + if (!(info->flags & DF_BIND_NOW)) + { + htab->dt_tlsdesc_got = htab->root.sgot->size; + htab->root.sgot->size += 4; + + htab->dt_tlsdesc_plt = htab->root.splt->size; + htab->root.splt->size += 4 * ARRAY_SIZE (dl_tlsdesc_lazy_trampoline); + } + } + /* The check_relocs and adjust_dynamic_symbol entry points have determined the sizes of the various dynamic sections. Allocate memory for them. */ @@ -11920,7 +13441,7 @@ of the dynobj section names depend upon the input files. */ name = bfd_get_section_name (dynobj, s); - if (strcmp (name, ".plt") == 0) + if (s == htab->root.splt) { /* Remember whether there is a PLT. */ plt = s->size != 0; @@ -11931,7 +13452,7 @@ { /* Remember whether there are any reloc sections other than .rel(a).plt and .rela.plt.unloaded. */ - if (s != htab->srelplt && s != htab->srelplt2) + if (s != htab->root.srelplt && s != htab->srelplt2) relocs = TRUE; /* We use the reloc_count field as a counter if we need @@ -11939,8 +13460,11 @@ s->reloc_count = 0; } } - else if (! CONST_STRNEQ (name, ".got") - && strcmp (name, ".dynbss") != 0) + else if (s != htab->root.sgot + && s != htab->root.sgotplt + && s != htab->root.iplt + && s != htab->root.igotplt + && s != htab->sdynbss) { /* It's not one of our sections, so don't allocate space. */ continue; @@ -11965,7 +13489,7 @@ continue; /* Allocate memory for the section contents. */ - s->contents = bfd_zalloc (dynobj, s->size); + s->contents = (unsigned char *) bfd_zalloc (dynobj, s->size); if (s->contents == NULL) return FALSE; } @@ -11994,6 +13518,11 @@ htab->use_rel ? DT_REL : DT_RELA) || !add_dynamic_entry (DT_JMPREL, 0)) return FALSE; + + if (htab->dt_tlsdesc_plt && + (!add_dynamic_entry (DT_TLSDESC_PLT,0) + || !add_dynamic_entry (DT_TLSDESC_GOT,0))) + return FALSE; } if (relocs) @@ -12034,6 +13563,49 @@ return TRUE; } +/* Size sections even though they're not dynamic. We use it to setup + _TLS_MODULE_BASE_, if needed. */ + +static bfd_boolean +elf32_arm_always_size_sections (bfd *output_bfd, + struct bfd_link_info *info) +{ + asection *tls_sec; + + if (info->relocatable) + return TRUE; + + tls_sec = elf_hash_table (info)->tls_sec; + + if (tls_sec) + { + struct elf_link_hash_entry *tlsbase; + + tlsbase = elf_link_hash_lookup + (elf_hash_table (info), "_TLS_MODULE_BASE_", TRUE, TRUE, FALSE); + + if (tlsbase) + { + struct bfd_link_hash_entry *bh = NULL; + const struct elf_backend_data *bed + = get_elf_backend_data (output_bfd); + + if (!(_bfd_generic_link_add_one_symbol + (info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL, + tls_sec, 0, NULL, FALSE, + bed->collect, &bh))) + return FALSE; + + tlsbase->type = STT_TLS; + tlsbase = (struct elf_link_hash_entry *)bh; + tlsbase->def_regular = 1; + tlsbase->other = STV_HIDDEN; + (*bed->elf_backend_hide_symbol) (info, tlsbase, TRUE); + } + } + return TRUE; +} + /* Finish up dynamic symbol handling. We set the contents of various dynamic sections here. */ @@ -12043,197 +13615,24 @@ struct elf_link_hash_entry * h, Elf_Internal_Sym * sym) { - bfd * dynobj; struct elf32_arm_link_hash_table *htab; struct elf32_arm_link_hash_entry *eh; - dynobj = elf_hash_table (info)->dynobj; htab = elf32_arm_hash_table (info); + if (htab == NULL) + return FALSE; + eh = (struct elf32_arm_link_hash_entry *) h; if (h->plt.offset != (bfd_vma) -1) { - asection * splt; - asection * srel; - bfd_byte *loc; - bfd_vma plt_index; - Elf_Internal_Rela rel; - - /* This symbol has an entry in the procedure linkage table. Set - it up. */ - - BFD_ASSERT (h->dynindx != -1); - - splt = bfd_get_section_by_name (dynobj, ".plt"); - srel = bfd_get_section_by_name (dynobj, RELOC_SECTION (htab, ".plt")); - BFD_ASSERT (splt != NULL && srel != NULL); - - /* Fill in the entry in the procedure linkage table. */ - if (htab->symbian_p) - { - put_arm_insn (htab, output_bfd, - elf32_arm_symbian_plt_entry[0], - splt->contents + h->plt.offset); - bfd_put_32 (output_bfd, - elf32_arm_symbian_plt_entry[1], - splt->contents + h->plt.offset + 4); - - /* Fill in the entry in the .rel.plt section. */ - rel.r_offset = (splt->output_section->vma - + splt->output_offset - + h->plt.offset + 4); - rel.r_info = ELF32_R_INFO (h->dynindx, R_ARM_GLOB_DAT); - - /* Get the index in the procedure linkage table which - corresponds to this symbol. This is the index of this symbol - in all the symbols for which we are making plt entries. The - first entry in the procedure linkage table is reserved. */ - plt_index = ((h->plt.offset - htab->plt_header_size) - / htab->plt_entry_size); - } - else + if (!eh->is_iplt) { - bfd_vma got_offset, got_address, plt_address; - bfd_vma got_displacement; - asection * sgot; - bfd_byte * ptr; - - sgot = bfd_get_section_by_name (dynobj, ".got.plt"); - BFD_ASSERT (sgot != NULL); - - /* Get the offset into the .got.plt table of the entry that - corresponds to this function. */ - got_offset = eh->plt_got_offset; - - /* Get the index in the procedure linkage table which - corresponds to this symbol. This is the index of this symbol - in all the symbols for which we are making plt entries. The - first three entries in .got.plt are reserved; after that - symbols appear in the same order as in .plt. */ - plt_index = (got_offset - 12) / 4; - - /* Calculate the address of the GOT entry. */ - got_address = (sgot->output_section->vma - + sgot->output_offset - + got_offset); - - /* ...and the address of the PLT entry. */ - plt_address = (splt->output_section->vma - + splt->output_offset - + h->plt.offset); - - ptr = htab->splt->contents + h->plt.offset; - if (htab->vxworks_p && info->shared) - { - unsigned int i; - bfd_vma val; - - for (i = 0; i != htab->plt_entry_size / 4; i++, ptr += 4) - { - val = elf32_arm_vxworks_shared_plt_entry[i]; - if (i == 2) - val |= got_address - sgot->output_section->vma; - if (i == 5) - val |= plt_index * RELOC_SIZE (htab); - if (i == 2 || i == 5) - bfd_put_32 (output_bfd, val, ptr); - else - put_arm_insn (htab, output_bfd, val, ptr); - } - } - else if (htab->vxworks_p) - { - unsigned int i; - bfd_vma val; - - for (i = 0; i != htab->plt_entry_size / 4; i++, ptr += 4) - { - val = elf32_arm_vxworks_exec_plt_entry[i]; - if (i == 2) - val |= got_address; - if (i == 4) - val |= 0xffffff & -((h->plt.offset + i * 4 + 8) >> 2); - if (i == 5) - val |= plt_index * RELOC_SIZE (htab); - if (i == 2 || i == 5) - bfd_put_32 (output_bfd, val, ptr); - else - put_arm_insn (htab, output_bfd, val, ptr); - } - - loc = (htab->srelplt2->contents - + (plt_index * 2 + 1) * RELOC_SIZE (htab)); - - /* Create the .rela.plt.unloaded R_ARM_ABS32 relocation - referencing the GOT for this PLT entry. */ - rel.r_offset = plt_address + 8; - rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_ARM_ABS32); - rel.r_addend = got_offset; - SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc); - loc += RELOC_SIZE (htab); - - /* Create the R_ARM_ABS32 relocation referencing the - beginning of the PLT for this GOT entry. */ - rel.r_offset = got_address; - rel.r_info = ELF32_R_INFO (htab->root.hplt->indx, R_ARM_ABS32); - rel.r_addend = 0; - SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc); - } - else - { - bfd_signed_vma thumb_refs; - /* Calculate the displacement between the PLT slot and the - entry in the GOT. The eight-byte offset accounts for the - value produced by adding to pc in the first instruction - of the PLT stub. */ - got_displacement = got_address - (plt_address + 8); - - BFD_ASSERT ((got_displacement & 0xf0000000) == 0); - - thumb_refs = eh->plt_thumb_refcount; - if (!htab->use_blx) - thumb_refs += eh->plt_maybe_thumb_refcount; - - if (thumb_refs > 0) - { - put_thumb_insn (htab, output_bfd, - elf32_arm_plt_thumb_stub[0], ptr - 4); - put_thumb_insn (htab, output_bfd, - elf32_arm_plt_thumb_stub[1], ptr - 2); - } - - put_arm_insn (htab, output_bfd, - elf32_arm_plt_entry[0] - | ((got_displacement & 0x0ff00000) >> 20), - ptr + 0); - put_arm_insn (htab, output_bfd, - elf32_arm_plt_entry[1] - | ((got_displacement & 0x000ff000) >> 12), - ptr+ 4); - put_arm_insn (htab, output_bfd, - elf32_arm_plt_entry[2] - | (got_displacement & 0x00000fff), - ptr + 8); -#ifdef FOUR_WORD_PLT - bfd_put_32 (output_bfd, elf32_arm_plt_entry[3], ptr + 12); -#endif - } - - /* Fill in the entry in the global offset table. */ - bfd_put_32 (output_bfd, - (splt->output_section->vma - + splt->output_offset), - sgot->contents + got_offset); - - /* Fill in the entry in the .rel(a).plt section. */ - rel.r_addend = 0; - rel.r_offset = got_address; - rel.r_info = ELF32_R_INFO (h->dynindx, R_ARM_JUMP_SLOT); + BFD_ASSERT (h->dynindx != -1); + elf32_arm_populate_plt_entry (output_bfd, info, &h->plt, &eh->plt, + h->dynindx, 0); } - loc = srel->contents + plt_index * RELOC_SIZE (htab); - SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc); - if (!h->def_regular) { /* Mark the symbol as undefined, rather than as defined in @@ -12246,70 +13645,31 @@ if (!h->ref_regular_nonweak) sym->st_value = 0; } - } - - if (h->got.offset != (bfd_vma) -1 - && (elf32_arm_hash_entry (h)->tls_type & GOT_TLS_GD) == 0 - && (elf32_arm_hash_entry (h)->tls_type & GOT_TLS_IE) == 0) - { - asection * sgot; - asection * srel; - Elf_Internal_Rela rel; - bfd_byte *loc; - bfd_vma offset; - - /* This symbol has an entry in the global offset table. Set it - up. */ - sgot = bfd_get_section_by_name (dynobj, ".got"); - srel = bfd_get_section_by_name (dynobj, RELOC_SECTION (htab, ".got")); - BFD_ASSERT (sgot != NULL && srel != NULL); - - offset = (h->got.offset & ~(bfd_vma) 1); - rel.r_addend = 0; - rel.r_offset = (sgot->output_section->vma - + sgot->output_offset - + offset); - - /* If this is a static link, or it is a -Bsymbolic link and the - symbol is defined locally or was forced to be local because - of a version file, we just want to emit a RELATIVE reloc. - The entry in the global offset table will already have been - initialized in the relocate_section function. */ - if (info->shared - && SYMBOL_REFERENCES_LOCAL (info, h)) - { - BFD_ASSERT ((h->got.offset & 1) != 0); - rel.r_info = ELF32_R_INFO (0, R_ARM_RELATIVE); - if (!htab->use_rel) - { - rel.r_addend = bfd_get_32 (output_bfd, sgot->contents + offset); - bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + offset); - } - } - else + else if (eh->is_iplt && eh->plt.noncall_refcount != 0) { - BFD_ASSERT ((h->got.offset & 1) == 0); - bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + offset); - rel.r_info = ELF32_R_INFO (h->dynindx, R_ARM_GLOB_DAT); + /* At least one non-call relocation references this .iplt entry, + so the .iplt entry is the function's canonical address. */ + sym->st_info = ELF_ST_INFO (ELF_ST_BIND (sym->st_info), STT_FUNC); + sym->st_target_internal = ST_BRANCH_TO_ARM; + sym->st_shndx = (_bfd_elf_section_from_bfd_section + (output_bfd, htab->root.iplt->output_section)); + sym->st_value = (h->plt.offset + + htab->root.iplt->output_section->vma + + htab->root.iplt->output_offset); } - - loc = srel->contents + srel->reloc_count++ * RELOC_SIZE (htab); - SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc); } if (h->needs_copy) { asection * s; Elf_Internal_Rela rel; - bfd_byte *loc; /* This symbol needs a copy reloc. Set it up. */ BFD_ASSERT (h->dynindx != -1 && (h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak)); - s = bfd_get_section_by_name (h->root.u.def.section->owner, - RELOC_SECTION (htab, ".bss")); + s = htab->srelbss; BFD_ASSERT (s != NULL); rel.r_addend = 0; @@ -12317,8 +13677,7 @@ + h->root.u.def.section->output_section->vma + h->root.u.def.section->output_offset); rel.r_info = ELF32_R_INFO (h->dynindx, R_ARM_COPY); - loc = s->contents + s->reloc_count++ * RELOC_SIZE (htab); - SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc); + elf32_arm_add_dynreloc (output_bfd, info, s, &rel); } /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute. On VxWorks, @@ -12331,6 +13690,24 @@ return TRUE; } +static void +arm_put_trampoline (struct elf32_arm_link_hash_table *htab, bfd *output_bfd, + void *contents, + const unsigned long *template, unsigned count) +{ + unsigned ix; + + for (ix = 0; ix != count; ix++) + { + unsigned long insn = template[ix]; + + /* Emit mov pc,rx if bx is not permitted. */ + if (htab->fix_v4bx == 1 && (insn & 0x0ffffff0) == 0x012fff10) + insn = (insn & 0xf000000f) | 0x01a0f000; + put_arm_insn (htab, output_bfd, insn, (char *)contents + ix*4); + } +} + /* Finish up the dynamic sections. */ static bfd_boolean @@ -12339,22 +13716,25 @@ bfd * dynobj; asection * sgot; asection * sdyn; + struct elf32_arm_link_hash_table *htab; + + htab = elf32_arm_hash_table (info); + if (htab == NULL) + return FALSE; dynobj = elf_hash_table (info)->dynobj; - sgot = bfd_get_section_by_name (dynobj, ".got.plt"); - BFD_ASSERT (elf32_arm_hash_table (info)->symbian_p || sgot != NULL); + sgot = htab->root.sgotplt; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); if (elf_hash_table (info)->dynamic_sections_created) { asection *splt; Elf32_External_Dyn *dyncon, *dynconend; - struct elf32_arm_link_hash_table *htab; - htab = elf32_arm_hash_table (info); - splt = bfd_get_section_by_name (dynobj, ".plt"); + splt = htab->root.splt; BFD_ASSERT (splt != NULL && sdyn != NULL); + BFD_ASSERT (htab->symbian_p || sgot != NULL); dyncon = (Elf32_External_Dyn *) sdyn->contents; dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size); @@ -12420,8 +13800,7 @@ break; case DT_PLTRELSZ: - s = bfd_get_section_by_name (output_bfd, - RELOC_SECTION (htab, ".plt")); + s = htab->root.srelplt; BFD_ASSERT (s != NULL); dyn.d_un.d_val = s->size; bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); @@ -12440,8 +13819,7 @@ the linker script arranges for .rel(a).plt to follow all other relocation sections, we don't have to worry about changing the DT_REL entry. */ - s = bfd_get_section_by_name (output_bfd, - RELOC_SECTION (htab, ".plt")); + s = htab->root.srelplt; if (s != NULL) dyn.d_un.d_val -= s->size; bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); @@ -12483,6 +13861,20 @@ } break; + case DT_TLSDESC_PLT: + s = htab->root.splt; + dyn.d_un.d_ptr = (s->output_section->vma + s->output_offset + + htab->dt_tlsdesc_plt); + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; + + case DT_TLSDESC_GOT: + s = htab->root.sgot; + dyn.d_un.d_ptr = (s->output_section->vma + s->output_offset + + htab->dt_tlsdesc_got); + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; + /* Set the bottom bit of DT_INIT/FINI if the corresponding function is Thumb. */ case DT_INIT: @@ -12499,8 +13891,7 @@ eh = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, TRUE); - if (eh != NULL - && ELF_ST_TYPE (eh->type) == STT_ARM_TFUNC) + if (eh != NULL && eh->target_internal == ST_BRANCH_TO_THUMB) { dyn.d_un.d_val |= 1; bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); @@ -12511,7 +13902,7 @@ } /* Fill in the first entry in the procedure linkage table. */ - if (splt->size > 0 && elf32_arm_hash_table (info)->plt_header_size) + if (splt->size > 0 && htab->plt_header_size) { const bfd_vma *plt0_entry; bfd_vma got_address, plt_address, got_displacement; @@ -12572,14 +13963,49 @@ if (splt->output_section->owner == output_bfd) elf_section_data (splt->output_section)->this_hdr.sh_entsize = 4; - if (htab->vxworks_p && !info->shared && htab->splt->size > 0) + if (htab->dt_tlsdesc_plt) + { + bfd_vma got_address + = sgot->output_section->vma + sgot->output_offset; + bfd_vma gotplt_address = (htab->root.sgot->output_section->vma + + htab->root.sgot->output_offset); + bfd_vma plt_address + = splt->output_section->vma + splt->output_offset; + + arm_put_trampoline (htab, output_bfd, + splt->contents + htab->dt_tlsdesc_plt, + dl_tlsdesc_lazy_trampoline, 6); + + bfd_put_32 (output_bfd, + gotplt_address + htab->dt_tlsdesc_got + - (plt_address + htab->dt_tlsdesc_plt) + - dl_tlsdesc_lazy_trampoline[6], + splt->contents + htab->dt_tlsdesc_plt + 24); + bfd_put_32 (output_bfd, + got_address - (plt_address + htab->dt_tlsdesc_plt) + - dl_tlsdesc_lazy_trampoline[7], + splt->contents + htab->dt_tlsdesc_plt + 24 + 4); + } + + if (htab->tls_trampoline) + { + arm_put_trampoline (htab, output_bfd, + splt->contents + htab->tls_trampoline, + tls_trampoline, 3); +#ifdef FOUR_WORD_PLT + bfd_put_32 (output_bfd, 0x00000000, + splt->contents + htab->tls_trampoline + 12); +#endif + } + + if (htab->vxworks_p && !info->shared && htab->root.splt->size > 0) { /* Correct the .rel(a).plt.unloaded relocations. They will have incorrect symbol indexes. */ int num_plts; unsigned char *p; - num_plts = ((htab->splt->size - htab->plt_header_size) + num_plts = ((htab->root.splt->size - htab->plt_header_size) / htab->plt_entry_size); p = htab->srelplt2->contents + RELOC_SIZE (htab); @@ -12638,7 +14064,7 @@ if (link_info) { globals = elf32_arm_hash_table (link_info); - if (globals->byteswap_code) + if (globals != NULL && globals->byteswap_code) i_ehdrp->e_flags |= EF_ARM_BE8; } } @@ -12736,108 +14162,15 @@ return TRUE; } -/* A structure used to record a list of sections, independently - of the next and prev fields in the asection structure. */ -typedef struct section_list -{ - asection * sec; - struct section_list * next; - struct section_list * prev; -} -section_list; - -/* Unfortunately we need to keep a list of sections for which - an _arm_elf_section_data structure has been allocated. This - is because it is possible for functions like elf32_arm_write_section - to be called on a section which has had an elf_data_structure - allocated for it (and so the used_by_bfd field is valid) but - for which the ARM extended version of this structure - the - _arm_elf_section_data structure - has not been allocated. */ -static section_list * sections_with_arm_elf_section_data = NULL; - -static void -record_section_with_arm_elf_section_data (asection * sec) -{ - struct section_list * entry; - - entry = bfd_malloc (sizeof (* entry)); - if (entry == NULL) - return; - entry->sec = sec; - entry->next = sections_with_arm_elf_section_data; - entry->prev = NULL; - if (entry->next != NULL) - entry->next->prev = entry; - sections_with_arm_elf_section_data = entry; -} - -static struct section_list * -find_arm_elf_section_entry (asection * sec) -{ - struct section_list * entry; - static struct section_list * last_entry = NULL; - - /* This is a short cut for the typical case where the sections are added - to the sections_with_arm_elf_section_data list in forward order and - then looked up here in backwards order. This makes a real difference - to the ld-srec/sec64k.exp linker test. */ - entry = sections_with_arm_elf_section_data; - if (last_entry != NULL) - { - if (last_entry->sec == sec) - entry = last_entry; - else if (last_entry->next != NULL - && last_entry->next->sec == sec) - entry = last_entry->next; - } - - for (; entry; entry = entry->next) - if (entry->sec == sec) - break; - - if (entry) - /* Record the entry prior to this one - it is the entry we are most - likely to want to locate next time. Also this way if we have been - called from unrecord_section_with_arm_elf_section_data() we will not - be caching a pointer that is about to be freed. */ - last_entry = entry->prev; - - return entry; -} - static _arm_elf_section_data * get_arm_elf_section_data (asection * sec) { - struct section_list * entry; - - entry = find_arm_elf_section_entry (sec); - - if (entry) - return elf32_arm_section_data (entry->sec); + if (sec && sec->owner && is_arm_elf (sec->owner)) + return elf32_arm_section_data (sec); else return NULL; } -static void -unrecord_section_with_arm_elf_section_data (asection * sec) -{ - struct section_list * entry; - - entry = find_arm_elf_section_entry (sec); - - if (entry) - { - if (entry->prev != NULL) - entry->prev->next = entry->next; - if (entry->next != NULL) - entry->next->prev = entry->prev; - if (entry == sections_with_arm_elf_section_data) - sections_with_arm_elf_section_data = entry->next; - free (entry); - } -} - - typedef struct { void *finfo; @@ -12864,10 +14197,8 @@ bfd_vma offset) { static const char *names[3] = {"$a", "$t", "$d"}; - struct elf32_arm_link_hash_table *htab; Elf_Internal_Sym sym; - htab = elf32_arm_hash_table (osi->info); sym.st_value = osi->sec->output_section->vma + osi->sec->output_offset + offset; @@ -12875,36 +14206,44 @@ sym.st_other = 0; sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_NOTYPE); sym.st_shndx = osi->sec_shndx; + sym.st_target_internal = 0; + elf32_arm_section_map_add (osi->sec, names[type][1], offset); return osi->func (osi->finfo, names[type], &sym, osi->sec, NULL) == 1; } - -/* Output mapping symbols for PLT entries associated with H. */ +/* Output mapping symbols for the PLT entry described by ROOT_PLT and ARM_PLT. + IS_IPLT_ENTRY_P says whether the PLT is in .iplt rather than .plt. */ static bfd_boolean -elf32_arm_output_plt_map (struct elf_link_hash_entry *h, void *inf) +elf32_arm_output_plt_map_1 (output_arch_syminfo *osi, + bfd_boolean is_iplt_entry_p, + union gotplt_union *root_plt, + struct arm_plt_info *arm_plt) { - output_arch_syminfo *osi = (output_arch_syminfo *) inf; struct elf32_arm_link_hash_table *htab; - struct elf32_arm_link_hash_entry *eh; - bfd_vma addr; + bfd_vma addr, plt_header_size; - htab = elf32_arm_hash_table (osi->info); - - if (h->root.type == bfd_link_hash_indirect) + if (root_plt->offset == (bfd_vma) -1) return TRUE; - if (h->root.type == bfd_link_hash_warning) - /* When warning symbols are created, they **replace** the "real" - entry in the hash table, thus we never get to see the real - symbol in a hash traversal. So look at it now. */ - h = (struct elf_link_hash_entry *) h->root.u.i.link; + htab = elf32_arm_hash_table (osi->info); + if (htab == NULL) + return FALSE; - if (h->plt.offset == (bfd_vma) -1) - return TRUE; + if (is_iplt_entry_p) + { + osi->sec = htab->root.iplt; + plt_header_size = 0; + } + else + { + osi->sec = htab->root.splt; + plt_header_size = htab->plt_header_size; + } + osi->sec_shndx = (_bfd_elf_section_from_bfd_section + (osi->info->output_bfd, osi->sec->output_section)); - eh = (struct elf32_arm_link_hash_entry *) h; - addr = h->plt.offset; + addr = root_plt->offset & -2; if (htab->symbian_p) { if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr)) @@ -12925,13 +14264,10 @@ } else { - bfd_signed_vma thumb_refs; - - thumb_refs = eh->plt_thumb_refcount; - if (!htab->use_blx) - thumb_refs += eh->plt_maybe_thumb_refcount; + bfd_boolean thumb_stub_p; - if (thumb_refs > 0) + thumb_stub_p = elf32_arm_plt_needs_thumb_stub_p (osi->info, arm_plt); + if (thumb_stub_p) { if (!elf32_arm_output_map_sym (osi, ARM_MAP_THUMB, addr - 4)) return FALSE; @@ -12945,7 +14281,7 @@ /* A three-word PLT with no Thumb thunk contains only Arm code, so only need to output a mapping symbol for the first PLT entry and entries with thumb thunks. */ - if (thumb_refs > 0 || addr == 20) + if (thumb_stub_p || addr == plt_header_size) { if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr)) return FALSE; @@ -12956,16 +14292,36 @@ return TRUE; } +/* Output mapping symbols for PLT entries associated with H. */ + +static bfd_boolean +elf32_arm_output_plt_map (struct elf_link_hash_entry *h, void *inf) +{ + output_arch_syminfo *osi = (output_arch_syminfo *) inf; + struct elf32_arm_link_hash_entry *eh; + + if (h->root.type == bfd_link_hash_indirect) + return TRUE; + + if (h->root.type == bfd_link_hash_warning) + /* When warning symbols are created, they **replace** the "real" + entry in the hash table, thus we never get to see the real + symbol in a hash traversal. So look at it now. */ + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + eh = (struct elf32_arm_link_hash_entry *) h; + return elf32_arm_output_plt_map_1 (osi, SYMBOL_CALLS_LOCAL (osi->info, h), + &h->plt, &eh->plt); +} + /* Output a single local symbol for a generated stub. */ static bfd_boolean elf32_arm_output_stub_sym (output_arch_syminfo *osi, const char *name, bfd_vma offset, bfd_vma size) { - struct elf32_arm_link_hash_table *htab; Elf_Internal_Sym sym; - htab = elf32_arm_hash_table (osi->info); sym.st_value = osi->sec->output_section->vma + osi->sec->output_offset + offset; @@ -12973,6 +14329,7 @@ sym.st_other = 0; sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FUNC); sym.st_shndx = osi->sec_shndx; + sym.st_target_internal = 0; return osi->func (osi->finfo, name, &sym, osi->sec, NULL) == 1; } @@ -12981,8 +14338,6 @@ void * in_arg) { struct elf32_arm_stub_hash_entry *stub_entry; - struct bfd_link_info *info; - struct elf32_arm_link_hash_table *htab; asection *stub_sec; bfd_vma addr; char *stub_name; @@ -12997,9 +14352,6 @@ stub_entry = (struct elf32_arm_stub_hash_entry *) gen_entry; osi = (output_arch_syminfo *) in_arg; - info = osi->info; - - htab = elf32_arm_hash_table (info); stub_sec = stub_entry->stub_sec; /* Ensure this stub is attached to the current section being @@ -13083,7 +14435,9 @@ return TRUE; } -/* Output mapping symbols for linker generated sections. */ +/* Output mapping symbols for linker generated sections, + and for those data-only sections that do not have a + $d. */ static bfd_boolean elf32_arm_output_arch_local_syms (bfd *output_bfd, @@ -13098,14 +14452,47 @@ struct elf32_arm_link_hash_table *htab; bfd_vma offset; bfd_size_type size; + bfd *input_bfd; htab = elf32_arm_hash_table (info); + if (htab == NULL) + return FALSE; + check_use_blx (htab); osi.finfo = finfo; osi.info = info; osi.func = func; + /* Add a $d mapping symbol to data-only sections that + don't have any mapping symbol. This may result in (harmless) redundant + mapping symbols. */ + for (input_bfd = info->input_bfds; + input_bfd != NULL; + input_bfd = input_bfd->link_next) + { + if ((input_bfd->flags & (BFD_LINKER_CREATED | HAS_SYMS)) == HAS_SYMS) + for (osi.sec = input_bfd->sections; + osi.sec != NULL; + osi.sec = osi.sec->next) + { + if (osi.sec->output_section != NULL + && ((osi.sec->output_section->flags & (SEC_ALLOC | SEC_CODE)) + != 0) + && (osi.sec->flags & (SEC_HAS_CONTENTS | SEC_LINKER_CREATED)) + == SEC_HAS_CONTENTS + && get_arm_elf_section_data (osi.sec) != NULL + && get_arm_elf_section_data (osi.sec)->mapcount == 0 + && osi.sec->size > 0) + { + osi.sec_shndx = _bfd_elf_section_from_bfd_section + (output_bfd, osi.sec->output_section); + if (osi.sec_shndx != (int)SHN_BAD) + elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 0); + } + } + } + /* ARM->Thumb glue. */ if (htab->arm_glue_size > 0) { @@ -13181,36 +14568,81 @@ } /* Finally, output mapping symbols for the PLT. */ - if (!htab->splt || htab->splt->size == 0) - return TRUE; - - osi.sec_shndx = _bfd_elf_section_from_bfd_section (output_bfd, - htab->splt->output_section); - osi.sec = htab->splt; - /* Output mapping symbols for the plt header. SymbianOS does not have a - plt header. */ - if (htab->vxworks_p) + if (htab->root.splt && htab->root.splt->size > 0) { - /* VxWorks shared libraries have no PLT header. */ - if (!info->shared) + osi.sec = htab->root.splt; + osi.sec_shndx = (_bfd_elf_section_from_bfd_section + (output_bfd, osi.sec->output_section)); + + /* Output mapping symbols for the plt header. SymbianOS does not have a + plt header. */ + if (htab->vxworks_p) + { + /* VxWorks shared libraries have no PLT header. */ + if (!info->shared) + { + if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0)) + return FALSE; + if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 12)) + return FALSE; + } + } + else if (!htab->symbian_p) { if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0)) return FALSE; - if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 12)) +#ifndef FOUR_WORD_PLT + if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 16)) return FALSE; +#endif + } + } + if ((htab->root.splt && htab->root.splt->size > 0) + || (htab->root.iplt && htab->root.iplt->size > 0)) + { + elf_link_hash_traverse (&htab->root, elf32_arm_output_plt_map, &osi); + for (input_bfd = info->input_bfds; + input_bfd != NULL; + input_bfd = input_bfd->link_next) + { + struct arm_local_iplt_info **local_iplt; + unsigned int i, num_syms; + + local_iplt = elf32_arm_local_iplt (input_bfd); + if (local_iplt != NULL) + { + num_syms = elf_symtab_hdr (input_bfd).sh_info; + for (i = 0; i < num_syms; i++) + if (local_iplt[i] != NULL + && !elf32_arm_output_plt_map_1 (&osi, TRUE, + &local_iplt[i]->root, + &local_iplt[i]->arm)) + return FALSE; + } } } - else if (!htab->symbian_p) + if (htab->dt_tlsdesc_plt != 0) { - if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0)) + /* Mapping symbols for the lazy tls trampoline. */ + if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, htab->dt_tlsdesc_plt)) return FALSE; -#ifndef FOUR_WORD_PLT - if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 16)) + + if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, + htab->dt_tlsdesc_plt + 24)) return FALSE; -#endif } - - elf_link_hash_traverse (&htab->root, elf32_arm_output_plt_map, (void *) &osi); + if (htab->tls_trampoline != 0) + { + /* Mapping symbols for the tls trampoline. */ + if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, htab->tls_trampoline)) + return FALSE; +#ifdef FOUR_WORD_PLT + if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, + htab->tls_trampoline + 12)) + return FALSE; +#endif + } + return TRUE; } @@ -13224,14 +14656,12 @@ _arm_elf_section_data *sdata; bfd_size_type amt = sizeof (*sdata); - sdata = bfd_zalloc (abfd, amt); + sdata = (_arm_elf_section_data *) bfd_zalloc (abfd, amt); if (sdata == NULL) return FALSE; sec->used_by_bfd = sdata; } - record_section_with_arm_elf_section_data (sec); - return _bfd_elf_new_section_hook (abfd, sec); } @@ -13311,13 +14741,13 @@ bfd_vma veneered_insn_loc, veneer_entry_loc; bfd_signed_vma branch_offset; bfd *abfd; - unsigned int index; + unsigned int target; stub_entry = (struct elf32_arm_stub_hash_entry *) gen_entry; data = (struct a8_branch_to_stub_data *) in_arg; if (stub_entry->target_section != data->writing_section - || stub_entry->stub_type < arm_stub_a8_veneer_b_cond) + || stub_entry->stub_type < arm_stub_a8_veneer_lwm) return TRUE; contents = data->contents; @@ -13336,7 +14766,7 @@ branch_offset = veneer_entry_loc - veneered_insn_loc - 4; abfd = stub_entry->target_section->owner; - index = stub_entry->target_value; + target = stub_entry->target_value; /* We attempt to avoid this condition by setting stubs_always_after_branch in elf32_arm_size_stubs if we've enabled the Cortex-A8 erratum workaround. @@ -13397,8 +14827,8 @@ return FALSE; } - bfd_put_16 (abfd, (branch_insn >> 16) & 0xffff, &contents[index]); - bfd_put_16 (abfd, branch_insn & 0xffff, &contents[index + 2]); + bfd_put_16 (abfd, (branch_insn >> 16) & 0xffff, &contents[target]); + bfd_put_16 (abfd, branch_insn & 0xffff, &contents[target + 2]); return TRUE; } @@ -13423,6 +14853,9 @@ bfd_byte tmp; unsigned int i; + if (globals == NULL) + return FALSE; + /* If this section has not been allocated an _arm_elf_section_data structure then we cannot record anything. */ arm_data = get_arm_elf_section_data (sec); @@ -13440,7 +14873,7 @@ for (errnode = arm_data->erratumlist; errnode != 0; errnode = errnode->next) { - bfd_vma index = errnode->vma - offset; + bfd_vma target = errnode->vma - offset; switch (errnode->type) { @@ -13453,7 +14886,7 @@ | 0x0a000000; /* The instruction is before the label. */ - index -= 4; + target -= 4; /* Above offset included in -4 below. */ branch_to_veneer = errnode->u.b.veneer->vma @@ -13465,10 +14898,10 @@ "range"), output_bfd); insn |= (branch_to_veneer >> 2) & 0xffffff; - contents[endianflip ^ index] = insn & 0xff; - contents[endianflip ^ (index + 1)] = (insn >> 8) & 0xff; - contents[endianflip ^ (index + 2)] = (insn >> 16) & 0xff; - contents[endianflip ^ (index + 3)] = (insn >> 24) & 0xff; + contents[endianflip ^ target] = insn & 0xff; + contents[endianflip ^ (target + 1)] = (insn >> 8) & 0xff; + contents[endianflip ^ (target + 2)] = (insn >> 16) & 0xff; + contents[endianflip ^ (target + 3)] = (insn >> 24) & 0xff; } break; @@ -13488,17 +14921,17 @@ /* Original instruction. */ insn = errnode->u.v.branch->u.b.vfp_insn; - contents[endianflip ^ index] = insn & 0xff; - contents[endianflip ^ (index + 1)] = (insn >> 8) & 0xff; - contents[endianflip ^ (index + 2)] = (insn >> 16) & 0xff; - contents[endianflip ^ (index + 3)] = (insn >> 24) & 0xff; + contents[endianflip ^ target] = insn & 0xff; + contents[endianflip ^ (target + 1)] = (insn >> 8) & 0xff; + contents[endianflip ^ (target + 2)] = (insn >> 16) & 0xff; + contents[endianflip ^ (target + 3)] = (insn >> 24) & 0xff; /* Branch back to insn after original insn. */ insn = 0xea000000 | ((branch_from_veneer >> 2) & 0xffffff); - contents[endianflip ^ (index + 4)] = insn & 0xff; - contents[endianflip ^ (index + 5)] = (insn >> 8) & 0xff; - contents[endianflip ^ (index + 6)] = (insn >> 16) & 0xff; - contents[endianflip ^ (index + 7)] = (insn >> 24) & 0xff; + contents[endianflip ^ (target + 4)] = insn & 0xff; + contents[endianflip ^ (target + 5)] = (insn >> 8) & 0xff; + contents[endianflip ^ (target + 6)] = (insn >> 16) & 0xff; + contents[endianflip ^ (target + 7)] = (insn >> 24) & 0xff; } break; @@ -13516,7 +14949,7 @@ size (before we merged duplicate entries and inserted EXIDX_CANTUNWIND markers) was sec->rawsize. (This isn't the case if we perform no edits, then rawsize will be zero and we should use size). */ - bfd_byte *edited_contents = bfd_malloc (sec->size); + bfd_byte *edited_contents = (bfd_byte *) bfd_malloc (sec->size); unsigned int input_size = sec->rawsize ? sec->rawsize : sec->size; unsigned int in_index, out_index; bfd_vma add_to_offsets = 0; @@ -13659,57 +15092,13 @@ } free (map); - arm_data->mapcount = 0; + arm_data->mapcount = -1; arm_data->mapsize = 0; arm_data->map = NULL; - unrecord_section_with_arm_elf_section_data (sec); return FALSE; } -static void -unrecord_section_via_map_over_sections (bfd * abfd ATTRIBUTE_UNUSED, - asection * sec, - void * ignore ATTRIBUTE_UNUSED) -{ - unrecord_section_with_arm_elf_section_data (sec); -} - -static bfd_boolean -elf32_arm_close_and_cleanup (bfd * abfd) -{ - if (abfd->sections) - bfd_map_over_sections (abfd, - unrecord_section_via_map_over_sections, - NULL); - - return _bfd_elf_close_and_cleanup (abfd); -} - -static bfd_boolean -elf32_arm_bfd_free_cached_info (bfd * abfd) -{ - if (abfd->sections) - bfd_map_over_sections (abfd, - unrecord_section_via_map_over_sections, - NULL); - - return _bfd_free_cached_info (abfd); -} - -/* Display STT_ARM_TFUNC symbols as functions. */ - -static void -elf32_arm_symbol_processing (bfd *abfd ATTRIBUTE_UNUSED, - asymbol *asym) -{ - elf_symbol_type *elfsym = (elf_symbol_type *) asym; - - if (ELF_ST_TYPE (elfsym->internal_elf_sym.st_info) == STT_ARM_TFUNC) - elfsym->symbol.flags |= BSF_FUNCTION; -} - - /* Mangle thumb function symbols as we read them in. */ static bfd_boolean @@ -13722,13 +15111,24 @@ return FALSE; /* New EABI objects mark thumb function symbols by setting the low bit of - the address. Turn these into STT_ARM_TFUNC. */ - if ((ELF_ST_TYPE (dst->st_info) == STT_FUNC) + the address. */ + if ((ELF_ST_TYPE (dst->st_info) == STT_FUNC + || ELF_ST_TYPE (dst->st_info) == STT_GNU_IFUNC) && (dst->st_value & 1)) { - dst->st_info = ELF_ST_INFO (ELF_ST_BIND (dst->st_info), STT_ARM_TFUNC); dst->st_value &= ~(bfd_vma) 1; + dst->st_target_internal = ST_BRANCH_TO_THUMB; + } + else if (ELF_ST_TYPE (dst->st_info) == STT_ARM_TFUNC) + { + dst->st_info = ELF_ST_INFO (ELF_ST_BIND (dst->st_info), STT_FUNC); + dst->st_target_internal = ST_BRANCH_TO_THUMB; } + else if (ELF_ST_TYPE (dst->st_info) == STT_SECTION) + dst->st_target_internal = ST_BRANCH_LONG; + else + dst->st_target_internal = ST_BRANCH_TO_ARM; + return TRUE; } @@ -13747,10 +15147,11 @@ of the address set, as per the new EABI. We do this unconditionally because objcopy does not set the elf header flags until after it writes out the symbol table. */ - if (ELF_ST_TYPE (src->st_info) == STT_ARM_TFUNC) + if (src->st_target_internal == ST_BRANCH_TO_THUMB) { newsym = *src; - newsym.st_info = ELF_ST_INFO (ELF_ST_BIND (src->st_info), STT_FUNC); + if (ELF_ST_TYPE (src->st_info) != STT_GNU_IFUNC) + newsym.st_info = ELF_ST_INFO (ELF_ST_BIND (src->st_info), STT_FUNC); if (newsym.st_shndx != SHN_UNDEF) { /* Do this only for defined symbols. At link type, the static @@ -13789,7 +15190,8 @@ m = m->next; if (!m) { - m = bfd_zalloc (abfd, sizeof (struct elf_segment_map)); + m = (struct elf_segment_map *) + bfd_zalloc (abfd, sizeof (struct elf_segment_map)); if (m == NULL) return FALSE; m->p_type = PT_ARM_EXIDX; @@ -13819,12 +15221,24 @@ return 0; } -/* We have two function types: STT_FUNC and STT_ARM_TFUNC. */ +/* Hook called by the linker routine which adds symbols from an object + file. */ static bfd_boolean -elf32_arm_is_function_type (unsigned int type) +elf32_arm_add_symbol_hook (bfd *abfd, struct bfd_link_info *info, + Elf_Internal_Sym *sym, const char **namep, + flagword *flagsp, asection **secp, bfd_vma *valp) { - return (type == STT_FUNC) || (type == STT_ARM_TFUNC); + if ((abfd->flags & DYNAMIC) == 0 + && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE; + + if (elf32_arm_hash_table (info)->vxworks_p + && !elf_vxworks_add_symbol_hook (abfd, info, sym, namep, + flagsp, secp, valp)) + return FALSE; + + return TRUE; } /* We use this to override swap_symbol_in and swap_symbol_out. */ @@ -13859,6 +15273,7 @@ }; #define ELF_ARCH bfd_arch_arm +#define ELF_TARGET_ID ARM_ELF_DATA #define ELF_MACHINE_CODE EM_ARM #ifdef __QNXTARGET__ #define ELF_MAXPAGESIZE 0x1000 @@ -13882,8 +15297,6 @@ #define bfd_elf32_find_inliner_info elf32_arm_find_inliner_info #define bfd_elf32_new_section_hook elf32_arm_new_section_hook #define bfd_elf32_bfd_is_target_special_symbol elf32_arm_is_target_special_symbol -#define bfd_elf32_close_and_cleanup elf32_arm_close_and_cleanup -#define bfd_elf32_bfd_free_cached_info elf32_arm_bfd_free_cached_info #define bfd_elf32_bfd_final_link elf32_arm_final_link #define elf_backend_get_symbol_type elf32_arm_get_symbol_type @@ -13898,6 +15311,7 @@ #define elf_backend_finish_dynamic_symbol elf32_arm_finish_dynamic_symbol #define elf_backend_finish_dynamic_sections elf32_arm_finish_dynamic_sections #define elf_backend_size_dynamic_sections elf32_arm_size_dynamic_sections +#define elf_backend_always_size_sections elf32_arm_always_size_sections #define elf_backend_init_index_section _bfd_elf_init_2_index_sections #define elf_backend_post_process_headers elf32_arm_post_process_headers #define elf_backend_reloc_type_class elf32_arm_reloc_type_class @@ -13907,13 +15321,12 @@ #define elf_backend_section_from_shdr elf32_arm_section_from_shdr #define elf_backend_final_write_processing elf32_arm_final_write_processing #define elf_backend_copy_indirect_symbol elf32_arm_copy_indirect_symbol -#define elf_backend_symbol_processing elf32_arm_symbol_processing #define elf_backend_size_info elf32_arm_size_info #define elf_backend_modify_segment_map elf32_arm_modify_segment_map #define elf_backend_additional_program_headers elf32_arm_additional_program_headers #define elf_backend_output_arch_local_syms elf32_arm_output_arch_local_syms #define elf_backend_begin_write_processing elf32_arm_begin_write_processing -#define elf_backend_is_function_type elf32_arm_is_function_type +#define elf_backend_add_symbol_hook elf32_arm_add_symbol_hook #define elf_backend_can_refcount 1 #define elf_backend_can_gc_sections 1 @@ -13935,6 +15348,7 @@ #undef elf_backend_obj_attrs_section_type #define elf_backend_obj_attrs_section_type SHT_ARM_ATTRIBUTES #define elf_backend_obj_attrs_order elf32_arm_obj_attrs_order +#define elf_backend_obj_attrs_handle_unknown elf32_arm_obj_attrs_handle_unknown #include "elf32-target.h" @@ -13980,8 +15394,6 @@ #undef bfd_elf32_bfd_link_hash_table_create #define bfd_elf32_bfd_link_hash_table_create elf32_arm_vxworks_link_hash_table_create -#undef elf_backend_add_symbol_hook -#define elf_backend_add_symbol_hook elf_vxworks_add_symbol_hook #undef elf_backend_final_write_processing #define elf_backend_final_write_processing elf32_arm_vxworks_final_write_processing #undef elf_backend_emit_relocs @@ -14001,6 +15413,231 @@ #include "elf32-target.h" +/* Merge backend specific data from an object file to the output + object file when linking. */ + +static bfd_boolean +elf32_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd) +{ + flagword out_flags; + flagword in_flags; + bfd_boolean flags_compatible = TRUE; + asection *sec; + + /* Check if we have the same endianess. */ + if (! _bfd_generic_verify_endian_match (ibfd, obfd)) + return FALSE; + + if (! is_arm_elf (ibfd) || ! is_arm_elf (obfd)) + return TRUE; + + if (!elf32_arm_merge_eabi_attributes (ibfd, obfd)) + return FALSE; + + /* The input BFD must have had its flags initialised. */ + /* The following seems bogus to me -- The flags are initialized in + the assembler but I don't think an elf_flags_init field is + written into the object. */ + /* BFD_ASSERT (elf_flags_init (ibfd)); */ + + in_flags = elf_elfheader (ibfd)->e_flags; + out_flags = elf_elfheader (obfd)->e_flags; + + /* In theory there is no reason why we couldn't handle this. However + in practice it isn't even close to working and there is no real + reason to want it. */ + if (EF_ARM_EABI_VERSION (in_flags) >= EF_ARM_EABI_VER4 + && !(ibfd->flags & DYNAMIC) + && (in_flags & EF_ARM_BE8)) + { + _bfd_error_handler (_("error: %B is already in final BE8 format"), + ibfd); + return FALSE; + } + + if (!elf_flags_init (obfd)) + { + /* If the input is the default architecture and had the default + flags then do not bother setting the flags for the output + architecture, instead allow future merges to do this. If no + future merges ever set these flags then they will retain their + uninitialised values, which surprise surprise, correspond + to the default values. */ + if (bfd_get_arch_info (ibfd)->the_default + && elf_elfheader (ibfd)->e_flags == 0) + return TRUE; + + elf_flags_init (obfd) = TRUE; + elf_elfheader (obfd)->e_flags = in_flags; + + if (bfd_get_arch (obfd) == bfd_get_arch (ibfd) + && bfd_get_arch_info (obfd)->the_default) + return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), bfd_get_mach (ibfd)); + + return TRUE; + } + + /* Determine what should happen if the input ARM architecture + does not match the output ARM architecture. */ + if (! bfd_arm_merge_machines (ibfd, obfd)) + return FALSE; + + /* Identical flags must be compatible. */ + if (in_flags == out_flags) + return TRUE; + + /* Check to see if the input BFD actually contains any sections. If + not, its flags may not have been initialised either, but it + cannot actually cause any incompatiblity. Do not short-circuit + dynamic objects; their section list may be emptied by + elf_link_add_object_symbols. + + Also check to see if there are no code sections in the input. + In this case there is no need to check for code specific flags. + XXX - do we need to worry about floating-point format compatability + in data sections ? */ + if (!(ibfd->flags & DYNAMIC)) + { + bfd_boolean null_input_bfd = TRUE; + bfd_boolean only_data_sections = TRUE; + + for (sec = ibfd->sections; sec != NULL; sec = sec->next) + { + /* Ignore synthetic glue sections. */ + if (strcmp (sec->name, ".glue_7") + && strcmp (sec->name, ".glue_7t")) + { + if ((bfd_get_section_flags (ibfd, sec) + & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS)) + == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS)) + only_data_sections = FALSE; + + null_input_bfd = FALSE; + break; + } + } + + if (null_input_bfd || only_data_sections) + return TRUE; + } + + /* Complain about various flag mismatches. */ + if (!elf32_arm_versions_compatible (EF_ARM_EABI_VERSION (in_flags), + EF_ARM_EABI_VERSION (out_flags))) + { + _bfd_error_handler + (_("error: Source object %B has EABI version %d, but target %B has EABI version %d"), + ibfd, obfd, + (in_flags & EF_ARM_EABIMASK) >> 24, + (out_flags & EF_ARM_EABIMASK) >> 24); + return FALSE; + } + + /* Not sure what needs to be checked for EABI versions >= 1. */ + /* VxWorks libraries do not use these flags. */ + if (get_elf_backend_data (obfd) != &elf32_arm_vxworks_bed + && get_elf_backend_data (ibfd) != &elf32_arm_vxworks_bed + && EF_ARM_EABI_VERSION (in_flags) == EF_ARM_EABI_UNKNOWN) + { + if ((in_flags & EF_ARM_APCS_26) != (out_flags & EF_ARM_APCS_26)) + { + _bfd_error_handler + (_("error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"), + ibfd, obfd, + in_flags & EF_ARM_APCS_26 ? 26 : 32, + out_flags & EF_ARM_APCS_26 ? 26 : 32); + flags_compatible = FALSE; + } + + if ((in_flags & EF_ARM_APCS_FLOAT) != (out_flags & EF_ARM_APCS_FLOAT)) + { + if (in_flags & EF_ARM_APCS_FLOAT) + _bfd_error_handler + (_("error: %B passes floats in float registers, whereas %B passes them in integer registers"), + ibfd, obfd); + else + _bfd_error_handler + (_("error: %B passes floats in integer registers, whereas %B passes them in float registers"), + ibfd, 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: %B uses VFP instructions, whereas %B does not"), + ibfd, obfd); + else + _bfd_error_handler + (_("error: %B uses FPA instructions, whereas %B does not"), + ibfd, obfd); + + flags_compatible = FALSE; + } + + if ((in_flags & EF_ARM_MAVERICK_FLOAT) != (out_flags & EF_ARM_MAVERICK_FLOAT)) + { + if (in_flags & EF_ARM_MAVERICK_FLOAT) + _bfd_error_handler + (_("error: %B uses Maverick instructions, whereas %B does not"), + ibfd, obfd); + else + _bfd_error_handler + (_("error: %B does not use Maverick instructions, whereas %B does"), + ibfd, obfd); + + flags_compatible = FALSE; + } + +#ifdef EF_ARM_SOFT_FLOAT + if ((in_flags & EF_ARM_SOFT_FLOAT) != (out_flags & EF_ARM_SOFT_FLOAT)) + { + /* 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: %B uses software FP, whereas %B uses hardware FP"), + ibfd, obfd); + else + _bfd_error_handler + (_("error: %B uses hardware FP, whereas %B uses software FP"), + ibfd, obfd); + + flags_compatible = FALSE; + } + } +#endif + + /* Interworking mismatch is only a warning. */ + if ((in_flags & EF_ARM_INTERWORK) != (out_flags & EF_ARM_INTERWORK)) + { + if (in_flags & EF_ARM_INTERWORK) + { + _bfd_error_handler + (_("Warning: %B supports interworking, whereas %B does not"), + ibfd, obfd); + } + else + { + _bfd_error_handler + (_("Warning: %B does not support interworking, whereas %B does"), + ibfd, obfd); + } + } + } + + return flags_compatible; +} + + /* Symbian OS Targets. */ #undef TARGET_LITTLE_SYM @@ -14124,7 +15761,6 @@ #define ELF_DYNAMIC_SEC_FLAGS \ (SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED) -#undef elf_backend_add_symbol_hook #undef elf_backend_emit_relocs #undef bfd_elf32_bfd_link_hash_table_create diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-avr.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-avr.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-avr.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-avr.c 2011-03-22 18:10:42.000000000 +0000 @@ -1,6 +1,6 @@ /* AVR-specific support for 32-bit ELF - Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Denis Chertykov This file is part of BFD, the Binary File Descriptor library. @@ -38,7 +38,7 @@ /* We use two hash tables to hold information for linking avr objects. - The first is the elf32_avr_link_hash_tablse which is derived from the + The first is the elf32_avr_link_hash_table which is derived from the stanard ELF linker hash table. We use this as a place to attach the other hash table and some static information. @@ -104,8 +104,8 @@ /* Various hash macros and functions. */ #define avr_link_hash_table(p) \ /* PR 3874: Check that we have an AVR style hash table before using it. */\ - ((p)->hash->table.newfunc != elf32_avr_link_hash_newfunc ? NULL : \ - ((struct elf32_avr_link_hash_table *) ((p)->hash))) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == AVR_ELF_DATA ? ((struct elf32_avr_link_hash_table *) ((p)->hash)) : NULL) #define avr_stub_hash_entry(ent) \ ((struct elf32_avr_stub_hash_entry *)(ent)) @@ -473,7 +473,7 @@ 0xffff, /* dst_mask */ FALSE), /* pcrel_offset */ /* A low 8 bit absolute relocation of 24 bit program memory address. - For LDI command. Will be changed when linker stubs are needed. */ + For LDI command. Will be changed when linker stubs are needed. */ HOWTO (R_AVR_LO8_LDI_GS, /* type */ 1, /* rightshift */ 1, /* size (0 = byte, 1 = short, 2 = long) */ @@ -488,7 +488,7 @@ 0xffff, /* dst_mask */ FALSE), /* pcrel_offset */ /* A low 8 bit absolute relocation of 24 bit program memory address. - For LDI command. Will be changed when linker stubs are needed. */ + For LDI command. Will be changed when linker stubs are needed. */ HOWTO (R_AVR_HI8_LDI_GS, /* type */ 9, /* rightshift */ 1, /* size (0 = byte, 1 = short, 2 = long) */ @@ -501,7 +501,21 @@ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ - FALSE) /* pcrel_offset */ + FALSE), /* pcrel_offset */ + /* 8 bit offset. */ + HOWTO (R_AVR_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_AVR_8", /* name */ + FALSE, /* partial_inplace */ + 0x000000ff, /* src_mask */ + 0x000000ff, /* dst_mask */ + FALSE), /* pcrel_offset */ }; /* Map BFD reloc types to AVR ELF reloc types. */ @@ -539,7 +553,8 @@ { BFD_RELOC_AVR_CALL, R_AVR_CALL }, { BFD_RELOC_AVR_LDI, R_AVR_LDI }, { BFD_RELOC_AVR_6, R_AVR_6 }, - { BFD_RELOC_AVR_6_ADIW, R_AVR_6_ADIW } + { BFD_RELOC_AVR_6_ADIW, R_AVR_6_ADIW }, + { BFD_RELOC_8, R_AVR_8 } }; /* Meant to be filled one day with the wrap around address for the @@ -617,7 +632,8 @@ if (!_bfd_elf_link_hash_table_init (&htab->etab, abfd, elf32_avr_link_hash_newfunc, - sizeof (struct elf_link_hash_entry))) + sizeof (struct elf_link_hash_entry), + AVR_ELF_DATA)) { free (htab); return NULL; @@ -718,48 +734,6 @@ cache_ptr->howto = &elf_avr_howto_table[r_type]; } -/* Look through the relocs for a section during the first phase. - Since we don't do .gots or .plts, we just need to consider the - virtual table relocs for gc. */ - -static bfd_boolean -elf32_avr_check_relocs (bfd *abfd, - struct bfd_link_info *info, - asection *sec, - const Elf_Internal_Rela *relocs) -{ - Elf_Internal_Shdr *symtab_hdr; - struct elf_link_hash_entry **sym_hashes; - const Elf_Internal_Rela *rel; - const Elf_Internal_Rela *rel_end; - - if (info->relocatable) - return TRUE; - - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - sym_hashes = elf_sym_hashes (abfd); - - rel_end = relocs + sec->reloc_count; - for (rel = relocs; rel < rel_end; rel++) - { - struct elf_link_hash_entry *h; - unsigned long r_symndx; - - 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; - } - } - - return TRUE; -} - static bfd_boolean avr_stub_is_required_for_16_bit_reloc (bfd_vma relocation) { @@ -775,14 +749,14 @@ avr_get_stub_addr (bfd_vma srel, struct elf32_avr_link_hash_table *htab) { - unsigned int index; + unsigned int sindex; bfd_vma stub_sec_addr = (htab->stub_sec->output_section->vma + htab->stub_sec->output_offset); - for (index = 0; index < htab->amt_max_entry_cnt; index ++) - if (htab->amt_destination_addr[index] == srel) - return htab->amt_stub_offsets[index] + stub_sec_addr; + for (sindex = 0; sindex < htab->amt_max_entry_cnt; sindex ++) + if (htab->amt_destination_addr[sindex] == srel) + return htab->amt_stub_offsets[sindex] + stub_sec_addr; /* Return an address that could not be reached by 16 bit relocs. */ return 0x020000; @@ -1167,6 +1141,9 @@ Elf_Internal_Rela * relend; struct elf32_avr_link_hash_table * htab = avr_link_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); relend = relocs + input_section->reloc_count; @@ -1185,7 +1162,7 @@ r_type = ELF32_R_TYPE (rel->r_info); r_symndx = ELF32_R_SYM (rel->r_info); - howto = elf_avr_howto_table + ELF32_R_TYPE (rel->r_info); + howto = elf_avr_howto_table + r_type; h = NULL; sym = NULL; sec = NULL; @@ -1213,15 +1190,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -1328,6 +1298,34 @@ case bfd_mach_avr6: val = E_AVR_MACH_AVR6; break; + + case bfd_mach_avrxmega1: + val = E_AVR_MACH_XMEGA1; + break; + + case bfd_mach_avrxmega2: + val = E_AVR_MACH_XMEGA2; + break; + + case bfd_mach_avrxmega3: + val = E_AVR_MACH_XMEGA3; + break; + + case bfd_mach_avrxmega4: + val = E_AVR_MACH_XMEGA4; + break; + + case bfd_mach_avrxmega5: + val = E_AVR_MACH_XMEGA5; + break; + + case bfd_mach_avrxmega6: + val = E_AVR_MACH_XMEGA6; + break; + + case bfd_mach_avrxmega7: + val = E_AVR_MACH_XMEGA7; + break; } elf_elfheader (abfd)->e_machine = EM_AVR; @@ -1390,6 +1388,34 @@ case E_AVR_MACH_AVR6: e_set = bfd_mach_avr6; break; + + case E_AVR_MACH_XMEGA1: + e_set = bfd_mach_avrxmega1; + break; + + case E_AVR_MACH_XMEGA2: + e_set = bfd_mach_avrxmega2; + break; + + case E_AVR_MACH_XMEGA3: + e_set = bfd_mach_avrxmega3; + break; + + case E_AVR_MACH_XMEGA4: + e_set = bfd_mach_avrxmega4; + break; + + case E_AVR_MACH_XMEGA5: + e_set = bfd_mach_avrxmega5; + break; + + case E_AVR_MACH_XMEGA6: + e_set = bfd_mach_avrxmega6; + break; + + case E_AVR_MACH_XMEGA7: + e_set = bfd_mach_avrxmega7; + break; } } return bfd_default_set_arch_mach (abfd, bfd_arch_avr, @@ -1412,7 +1438,6 @@ unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel, *irelend; - Elf_Internal_Rela *irelalign; Elf_Internal_Sym *isym; Elf_Internal_Sym *isymbuf = NULL; bfd_vma toaddr; @@ -1424,10 +1449,6 @@ sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); contents = elf_section_data (sec)->this_hdr.contents; - /* The deletion must stop at the next ALIGN reloc for an aligment - power larger than the number of bytes we are deleting. */ - - irelalign = NULL; toaddr = sec->size; irel = elf_section_data (sec)->relocs; @@ -1443,12 +1464,9 @@ for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++) { bfd_vma old_reloc_address; - bfd_vma shrinked_insn_address; old_reloc_address = (sec->output_section->vma + sec->output_offset + irel->r_offset); - shrinked_insn_address = (sec->output_section->vma - + sec->output_offset + addr - count); /* Get the new reloc address. */ if ((irel->r_offset > addr @@ -1510,7 +1528,6 @@ if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info) { /* A local symbol. */ - Elf_Internal_Sym *isym; asection *sym_sec; isym = isymbuf + ELF32_R_SYM (irel->r_info); @@ -1630,8 +1647,6 @@ Elf_Internal_Rela *irel, *irelend; bfd_byte *contents = NULL; Elf_Internal_Sym *isymbuf = NULL; - static asection *last_input_section = NULL; - static Elf_Internal_Rela *last_reloc = NULL; struct elf32_avr_link_hash_table *htab; if (link_info->relocatable) @@ -1691,11 +1706,6 @@ if (internal_relocs == NULL) goto error_return; - if (sec != last_input_section) - last_reloc = NULL; - - last_input_section = sec; - /* Walk through the relocs looking for relaxing opportunities. */ irelend = internal_relocs + sec->reloc_count; for (irel = internal_relocs; irel < irelend; irel++) @@ -1703,8 +1713,8 @@ bfd_vma symval; if ( ELF32_R_TYPE (irel->r_info) != R_AVR_13_PCREL - && ELF32_R_TYPE (irel->r_info) != R_AVR_7_PCREL - && ELF32_R_TYPE (irel->r_info) != R_AVR_CALL) + && ELF32_R_TYPE (irel->r_info) != R_AVR_7_PCREL + && ELF32_R_TYPE (irel->r_info) != R_AVR_CALL) continue; /* Get the section contents if we haven't done so already. */ @@ -1721,7 +1731,7 @@ } } - /* Read this BFD's local symbols if we haven't done so already. */ + /* Read this BFD's local symbols if we haven't done so already. */ if (isymbuf == NULL && symtab_hdr->sh_info != 0) { isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents; @@ -1780,9 +1790,9 @@ the linker is run. */ switch (ELF32_R_TYPE (irel->r_info)) { - /* Try to turn a 22-bit absolute call/jump into an 13-bit - pc-relative rcall/rjmp. */ - case R_AVR_CALL: + /* Try to turn a 22-bit absolute call/jump into an 13-bit + pc-relative rcall/rjmp. */ + case R_AVR_CALL: { bfd_vma value = symval + irel->r_addend; bfd_vma dot, gap; @@ -1807,27 +1817,27 @@ vaiable avr_pc_wrap_around with the appropriate value. I.e. 0x4000 for a 16k device. */ { - /* Shrinking the code size makes the gaps larger in the - case of wrap-arounds. So we use a heuristical safety - margin to avoid that during relax the distance gets - again too large for the short jumps. Let's assume - a typical code-size reduction due to relax for a - 16k device of 600 bytes. So let's use twice the - typical value as safety margin. */ - int rgap; - int safety_margin; - - int assumed_shrink = 600; - if (avr_pc_wrap_around > 0x4000) - assumed_shrink = 900; - - safety_margin = 2 * assumed_shrink; - - rgap = avr_relative_distance_considering_wrap_around (gap); - - if (rgap >= (-4092 + safety_margin) - && rgap <= (4094 - safety_margin)) - distance_short_enough = 1; + /* Shrinking the code size makes the gaps larger in the + case of wrap-arounds. So we use a heuristical safety + margin to avoid that during relax the distance gets + again too large for the short jumps. Let's assume + a typical code-size reduction due to relax for a + 16k device of 600 bytes. So let's use twice the + typical value as safety margin. */ + int rgap; + int safety_margin; + + int assumed_shrink = 600; + if (avr_pc_wrap_around > 0x4000) + assumed_shrink = 900; + + safety_margin = 2 * assumed_shrink; + + rgap = avr_relative_distance_considering_wrap_around (gap); + + if (rgap >= (-4092 + safety_margin) + && rgap <= (4094 - safety_margin)) + distance_short_enough = 1; } if (distance_short_enough) @@ -1921,9 +1931,9 @@ if (irel->r_offset + 3 < sec->size) { next_insn_msb = - bfd_get_8 (abfd, contents + irel->r_offset + 3); + bfd_get_8 (abfd, contents + irel->r_offset + 3); next_insn_lsb = - bfd_get_8 (abfd, contents + irel->r_offset + 2); + bfd_get_8 (abfd, contents + irel->r_offset + 2); } if ((0x95 == next_insn_msb) && (0x08 == next_insn_lsb)) @@ -1951,9 +1961,9 @@ if (irel->r_offset + 5 < sec->size) { next_insn_msb = - bfd_get_8 (abfd, contents + irel->r_offset + 5); + bfd_get_8 (abfd, contents + irel->r_offset + 5); next_insn_lsb = - bfd_get_8 (abfd, contents + irel->r_offset + 4); + bfd_get_8 (abfd, contents + irel->r_offset + 4); } if ((0x95 == next_insn_msb) && (0x08 == next_insn_lsb)) @@ -1988,11 +1998,11 @@ if (irel->r_offset + insn_size + 1 < sec->size) { next_insn_msb = - bfd_get_8 (abfd, contents + irel->r_offset - + insn_size + 1); + bfd_get_8 (abfd, contents + irel->r_offset + + insn_size + 1); next_insn_lsb = - bfd_get_8 (abfd, contents + irel->r_offset - + insn_size); + bfd_get_8 (abfd, contents + irel->r_offset + + insn_size); } if ((0x95 == next_insn_msb) && (0x08 == next_insn_lsb)) @@ -2019,9 +2029,9 @@ unsigned char preceeding_msb; unsigned char preceeding_lsb; preceeding_msb = - bfd_get_8 (abfd, contents + irel->r_offset - 1); + bfd_get_8 (abfd, contents + irel->r_offset - 1); preceeding_lsb = - bfd_get_8 (abfd, contents + irel->r_offset - 2); + bfd_get_8 (abfd, contents + irel->r_offset - 2); /* sbic. */ if (0x99 == preceeding_msb) @@ -2033,12 +2043,12 @@ /* sbrc */ if ((0xfc == (preceeding_msb & 0xfe) - && (0x00 == (preceeding_lsb & 0x08)))) + && (0x00 == (preceeding_lsb & 0x08)))) there_is_preceeding_non_skip_insn = 0; /* sbrs */ if ((0xfe == (preceeding_msb & 0xfe) - && (0x00 == (preceeding_lsb & 0x08)))) + && (0x00 == (preceeding_lsb & 0x08)))) there_is_preceeding_non_skip_insn = 0; /* cpse */ @@ -2066,7 +2076,7 @@ int deleting_ret_is_safe = 1; unsigned int section_offset_of_ret_insn = - irel->r_offset + insn_size; + irel->r_offset + insn_size; Elf_Internal_Sym *isym, *isymend; unsigned int sec_shndx; @@ -2078,145 +2088,140 @@ isymend = isym + symtab_hdr->sh_info; /* PR 6019: There may not be any local symbols. */ for (; isym != NULL && isym < isymend; isym++) - { - if (isym->st_value == section_offset_of_ret_insn - && isym->st_shndx == sec_shndx) - { - deleting_ret_is_safe = 0; - if (debug_relax) - printf ("local label prevents deletion of ret " - "insn at address 0x%x\n", - (int) dot + insn_size); - } - } - - /* Now check for global symbols. */ - { - int symcount; - struct elf_link_hash_entry **sym_hashes; - struct elf_link_hash_entry **end_hashes; - - 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 == + { + if (isym->st_value == section_offset_of_ret_insn + && isym->st_shndx == sec_shndx) + { + deleting_ret_is_safe = 0; + if (debug_relax) + printf ("local label prevents deletion of ret " + "insn at address 0x%x\n", + (int) dot + insn_size); + } + } + + /* Now check for global symbols. */ + { + int symcount; + struct elf_link_hash_entry **sym_hashes; + struct elf_link_hash_entry **end_hashes; + + 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 == section_offset_of_ret_insn) - { - deleting_ret_is_safe = 0; - if (debug_relax) - printf ("global label prevents deletion of " - "ret insn at address 0x%x\n", - (int) dot + insn_size); - } - } - } - /* Now we check for relocations pointing to ret. */ - { - Elf_Internal_Rela *irel; - Elf_Internal_Rela *relend; - Elf_Internal_Shdr *symtab_hdr; - - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - relend = elf_section_data (sec)->relocs - + sec->reloc_count; - - for (irel = elf_section_data (sec)->relocs; - irel < relend; irel++) - { - bfd_vma reloc_target = 0; - bfd_vma symval; - Elf_Internal_Sym *isymbuf = NULL; - - /* Read this BFD's local symbols if we haven't - done so already. */ - if (isymbuf == NULL && symtab_hdr->sh_info != 0) - { - isymbuf = (Elf_Internal_Sym *) - symtab_hdr->contents; - if (isymbuf == NULL) - isymbuf = bfd_elf_get_elf_syms - (abfd, - symtab_hdr, - symtab_hdr->sh_info, 0, - NULL, NULL, NULL); - if (isymbuf == NULL) - break; - } - - /* 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. */ - Elf_Internal_Sym *isym; - asection *sym_sec; - - isym = isymbuf - + ELF32_R_SYM (irel->r_info); - sym_sec = bfd_section_from_elf_index - (abfd, isym->st_shndx); - symval = isym->st_value; - - /* If the reloc is absolute, it will not - have a symbol or section associated - with it. */ - - if (sym_sec) - { - symval += - sym_sec->output_section->vma - + sym_sec->output_offset; - reloc_target = symval + irel->r_addend; - } - else - { - reloc_target = symval + irel->r_addend; - /* Reference symbol is absolute. */ - } - } - /* else ... reference symbol is extern. */ - - if (address_of_ret == reloc_target) - { - deleting_ret_is_safe = 0; - if (debug_relax) - printf ("ret from " - "rjmp/jmp ret sequence at address" - " 0x%x could not be deleted. ret" - " is target of a relocation.\n", - (int) address_of_ret); - } - } - } - - if (deleting_ret_is_safe) - { - if (debug_relax) - printf ("unreachable ret instruction " - "at address 0x%x deleted.\n", - (int) dot + insn_size); - - /* Delete two bytes of data. */ - if (!elf32_avr_relax_delete_bytes (abfd, sec, - irel->r_offset + insn_size, 2)) - goto error_return; - - /* That will change things, so, we should relax - again. Note that this is not required, and it - may be slow. */ - *again = TRUE; - break; - } + && sym_hash->root.u.def.section == sec + && sym_hash->root.u.def.value == section_offset_of_ret_insn) + { + deleting_ret_is_safe = 0; + if (debug_relax) + printf ("global label prevents deletion of " + "ret insn at address 0x%x\n", + (int) dot + insn_size); + } + } + } + /* Now we check for relocations pointing to ret. */ + { + Elf_Internal_Rela *rel; + Elf_Internal_Rela *relend; + + relend = elf_section_data (sec)->relocs + + sec->reloc_count; + + for (rel = elf_section_data (sec)->relocs; + rel < relend; rel++) + { + bfd_vma reloc_target = 0; + + /* Read this BFD's local symbols if we haven't + done so already. */ + if (isymbuf == NULL && symtab_hdr->sh_info != 0) + { + isymbuf = (Elf_Internal_Sym *) + symtab_hdr->contents; + if (isymbuf == NULL) + isymbuf = bfd_elf_get_elf_syms + (abfd, + symtab_hdr, + symtab_hdr->sh_info, 0, + NULL, NULL, NULL); + if (isymbuf == NULL) + break; + } + + /* Get the value of the symbol referred to + by the reloc. */ + if (ELF32_R_SYM (rel->r_info) + < symtab_hdr->sh_info) + { + /* A local symbol. */ + asection *sym_sec; + + isym = isymbuf + + ELF32_R_SYM (rel->r_info); + sym_sec = bfd_section_from_elf_index + (abfd, isym->st_shndx); + symval = isym->st_value; + + /* If the reloc is absolute, it will not + have a symbol or section associated + with it. */ + + if (sym_sec) + { + symval += + sym_sec->output_section->vma + + sym_sec->output_offset; + reloc_target = symval + rel->r_addend; + } + else + { + reloc_target = symval + rel->r_addend; + /* Reference symbol is absolute. */ + } + } + /* else ... reference symbol is extern. */ + + if (address_of_ret == reloc_target) + { + deleting_ret_is_safe = 0; + if (debug_relax) + printf ("ret from " + "rjmp/jmp ret sequence at address" + " 0x%x could not be deleted. ret" + " is target of a relocation.\n", + (int) address_of_ret); + } + } + } + + if (deleting_ret_is_safe) + { + if (debug_relax) + printf ("unreachable ret instruction " + "at address 0x%x deleted.\n", + (int) dot + insn_size); + + /* Delete two bytes of data. */ + if (!elf32_avr_relax_delete_bytes (abfd, sec, + irel->r_offset + insn_size, 2)) + goto error_return; + + /* That will change things, so, we should relax + again. Note that this is not required, and it + may be slow. */ + *again = TRUE; + break; + } } } @@ -2496,12 +2501,10 @@ static bfd_boolean avr_mark_stub_not_to_be_necessary (struct bfd_hash_entry *bh, - void *in_arg) + void *in_arg ATTRIBUTE_UNUSED) { struct elf32_avr_stub_hash_entry *hsh; - struct elf32_avr_link_hash_table *htab; - htab = in_arg; hsh = avr_stub_hash_entry (bh); hsh->is_actually_needed = FALSE; @@ -2569,7 +2572,7 @@ asection *section; asection **input_list, **list; bfd_size_type amt; - struct elf32_avr_link_hash_table *htab = avr_link_hash_table(info); + struct elf32_avr_link_hash_table *htab = avr_link_hash_table (info); if (htab == NULL || htab->no_stubs) return 0; @@ -2995,6 +2998,7 @@ } #define ELF_ARCH bfd_arch_avr +#define ELF_TARGET_ID AVR_ELF_DATA #define ELF_MACHINE_CODE EM_AVR #define ELF_MACHINE_ALT1 EM_AVR_OLD #define ELF_MAXPAGESIZE 1 @@ -3008,7 +3012,6 @@ #define elf_info_to_howto avr_info_to_howto_rela #define elf_info_to_howto_rel NULL #define elf_backend_relocate_section elf32_avr_relocate_section -#define elf_backend_check_relocs elf32_avr_check_relocs #define elf_backend_can_gc_sections 1 #define elf_backend_rela_normal 1 #define elf_backend_final_write_processing \ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-bfin.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-bfin.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-bfin.c 2009-09-11 03:20:34.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-bfin.c 2011-02-28 18:30:16.000000000 +0000 @@ -1,5 +1,6 @@ /* ADI Blackfin BFD support for 32-bit ELF. - Copyright 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 + Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -103,7 +104,7 @@ /* if rightshift is 1 and the number odd, return error. */ if (howto->rightshift && (relocation & 0x01)) { - fprintf(stderr, "relocation should be even number\n"); + (*_bfd_error_handler) (_("relocation should be even number")); return bfd_reloc_overflow; } @@ -359,7 +360,7 @@ /* If rightshift is 1 and the number odd, return error. */ if (howto->rightshift && (relocation & 0x01)) { - fprintf(stderr, "relocation should be even number\n"); + (*_bfd_error_handler) (_("relocation should be even number")); return bfd_reloc_overflow; } @@ -1119,6 +1120,22 @@ return (reloc_howto_type *) NULL; } +/* Set by ld emulation if --code-in-l1. */ +bfd_boolean elf32_bfin_code_in_l1 = 0; + +/* Set by ld emulation if --data-in-l1. */ +bfd_boolean elf32_bfin_data_in_l1 = 0; + +static void +elf32_bfin_final_write_processing (bfd *abfd, + bfd_boolean linker ATTRIBUTE_UNUSED) +{ + if (elf32_bfin_code_in_l1) + elf_elfheader (abfd)->e_flags |= EF_BFIN_CODE_IN_L1; + if (elf32_bfin_data_in_l1) + elf_elfheader (abfd)->e_flags |= EF_BFIN_DATA_IN_L1; +} + /* Return TRUE if the name is a local label. bfin local labels begin with L$. */ static bfd_boolean @@ -1428,15 +1445,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -1716,8 +1726,8 @@ extern const bfd_target bfd_elf32_bfinfdpic_vec; #define IS_FDPIC(bfd) ((bfd)->xvec == &bfd_elf32_bfinfdpic_vec) -/* An extension of the elf hash table data structure, containing some - additional Blackfin-specific data. */ +/* An extension of the elf hash table data structure, + containing some additional Blackfin-specific data. */ struct bfinfdpic_elf_link_hash_table { struct elf_link_hash_table elf; @@ -1748,7 +1758,8 @@ /* Get the Blackfin ELF linker hash table from a link_info structure. */ #define bfinfdpic_hash_table(info) \ - ((struct bfinfdpic_elf_link_hash_table *) ((info)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((info)->hash)) \ + == BFIN_ELF_DATA ? ((struct bfinfdpic_elf_link_hash_table *) ((info)->hash)) : NULL) #define bfinfdpic_got_section(info) \ (bfinfdpic_hash_table (info)->sgot) @@ -1814,7 +1825,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, _bfd_elf_link_hash_newfunc, - sizeof (struct elf_link_hash_entry))) + sizeof (struct elf_link_hash_entry), + BFIN_ELF_DATA)) { free (ret); return NULL; @@ -2652,15 +2664,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -3098,10 +3103,10 @@ if (silence_segment_error == 1) silence_segment_error = (strlen (input_bfd->filename) == 6 - && strcmp (input_bfd->filename, "crt0.o") == 0) + && filename_cmp (input_bfd->filename, "crt0.o") == 0) || (strlen (input_bfd->filename) > 6 - && strcmp (input_bfd->filename - + strlen (input_bfd->filename) - 7, + && filename_cmp (input_bfd->filename + + strlen (input_bfd->filename) - 7, "/crt0.o") == 0) ? -1 : 0; #endif @@ -3376,7 +3381,6 @@ struct elf_link_hash_entry *h; const struct elf_backend_data *bed = get_elf_backend_data (abfd); int ptralign; - int offset; /* This function may be called more than once. */ s = bfd_get_section_by_name (abfd, ".got"); @@ -3454,16 +3458,8 @@ return FALSE; bfinfdpic_gotfixup_section (info) = s; - offset = -2048; - flags = BSF_GLOBAL; - } - else - { - offset = 2048; - flags = BSF_GLOBAL | BSF_WEAK; } - flags = pltflags; pltflags |= SEC_CODE; if (bed->plt_not_loaded) pltflags &= ~ (SEC_CODE | SEC_LOAD | SEC_HAS_CONTENTS); @@ -3481,7 +3477,6 @@ { /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the .plt section. */ - struct elf_link_hash_entry *h; struct bfd_link_hash_entry *bh = NULL; if (! (_bfd_generic_link_add_one_symbol @@ -4166,19 +4161,17 @@ } if (elf_hash_table (info)->dynamic_sections_created) + bfinfdpic_pltrel_section (info)->size = + gpinfop->g.lzplt / LZPLT_NORMAL_SIZE * get_elf_backend_data (output_bfd)->s->sizeof_rel; + if (bfinfdpic_pltrel_section (info)->size == 0) + bfinfdpic_pltrel_section (info)->flags |= SEC_EXCLUDE; + else { - bfinfdpic_pltrel_section (info)->size = - gpinfop->g.lzplt / LZPLT_NORMAL_SIZE * get_elf_backend_data (output_bfd)->s->sizeof_rel; - if (bfinfdpic_pltrel_section (info)->size == 0) - bfinfdpic_pltrel_section (info)->flags |= SEC_EXCLUDE; - else - { - bfinfdpic_pltrel_section (info)->contents = - (bfd_byte *) bfd_zalloc (dynobj, - bfinfdpic_pltrel_section (info)->size); - if (bfinfdpic_pltrel_section (info)->contents == NULL) - return FALSE; - } + bfinfdpic_pltrel_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, + bfinfdpic_pltrel_section (info)->size); + if (bfinfdpic_pltrel_section (info)->contents == NULL) + return FALSE; } /* Add 4 bytes for every block of at most 65535 lazy PLT entries, @@ -4215,18 +4208,15 @@ /* Allocate the PLT section contents only after _bfinfdpic_assign_plt_entries has a chance to add the size of the non-lazy PLT entries. */ - if (elf_hash_table (info)->dynamic_sections_created) + if (bfinfdpic_plt_section (info)->size == 0) + bfinfdpic_plt_section (info)->flags |= SEC_EXCLUDE; + else { - if (bfinfdpic_plt_section (info)->size == 0) - bfinfdpic_plt_section (info)->flags |= SEC_EXCLUDE; - else - { - bfinfdpic_plt_section (info)->contents = - (bfd_byte *) bfd_zalloc (dynobj, - bfinfdpic_plt_section (info)->size); - if (bfinfdpic_plt_section (info)->contents == NULL) - return FALSE; - } + bfinfdpic_plt_section (info)->contents = + (bfd_byte *) bfd_zalloc (dynobj, + bfinfdpic_plt_section (info)->size); + if (bfinfdpic_plt_section (info)->contents == NULL) + return FALSE; } return TRUE; @@ -4302,12 +4292,11 @@ return FALSE; } - - s = bfd_get_section_by_name (dynobj, ".rela.bss"); + s = bfd_get_section_by_name (dynobj, ".dynbss"); if (s && s->size == 0) s->flags |= SEC_EXCLUDE; - s = bfd_get_section_by_name (dynobj, ".rel.plt"); + s = bfd_get_section_by_name (dynobj, ".rela.bss"); if (s && s->size == 0) s->flags |= SEC_EXCLUDE; @@ -5111,11 +5100,12 @@ if (new_flags & EF_BFIN_FDPIC) new_flags &= ~EF_BFIN_PIC; -#ifdef DEBUG +#ifndef DEBUG + if (0) +#endif (*_bfd_error_handler) ("old_flags = 0x%.8lx, new_flags = 0x%.8lx, init = %s, filename = %s", old_flags, new_flags, elf_flags_init (obfd) ? "yes" : "no", bfd_get_filename (ibfd)); -#endif if (!elf_flags_init (obfd)) /* First call, no flags set. */ { @@ -5199,7 +5189,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, bfin_link_hash_newfunc, - sizeof (struct elf_link_hash_entry))) + sizeof (struct elf_link_hash_entry), + BFIN_ELF_DATA)) { free (ret); return NULL; @@ -5285,7 +5276,8 @@ && (info->symbolic || h->dynindx == -1 || h->forced_local) && h->def_regular) { - fprintf(stderr, "*** check this relocation %s\n", __FUNCTION__); + (*_bfd_error_handler) (_("*** check this relocation %s"), + __FUNCTION__); rela.r_info = ELF32_R_INFO (0, R_BFIN_PCREL24); rela.r_addend = bfd_get_signed_32 (output_bfd, (sgot->contents @@ -5769,6 +5761,7 @@ #define TARGET_LITTLE_SYM bfd_elf32_bfin_vec #define TARGET_LITTLE_NAME "elf32-bfin" #define ELF_ARCH bfd_arch_bfin +#define ELF_TARGET_ID BFIN_ELF_DATA #define ELF_MACHINE_CODE EM_BLACKFIN #define ELF_MAXPAGESIZE 0x1000 #define elf_symbol_leading_char '_' @@ -5811,6 +5804,8 @@ elf32_bfin_set_private_flags #define bfd_elf32_bfd_print_private_bfd_data \ elf32_bfin_print_private_bfd_data +#define elf_backend_final_write_processing \ + elf32_bfin_final_write_processing #define elf_backend_reloc_type_class elf32_bfin_reloc_type_class #define elf_backend_can_gc_sections 1 #define elf_backend_special_sections elf32_bfin_special_sections diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-cr16.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-cr16.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-cr16.c 2009-09-09 04:49:08.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-cr16.c 2010-10-25 15:54:13.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for National Semiconductor's CR16 ELF - Copyright 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by M R Swami Reddy. This file is part of BFD, the Binary File Descriptor library. @@ -32,7 +32,8 @@ linking with -Bsymbolic. We store the information in a field extending the regular ELF linker hash table. */ -struct elf32_cr16_link_hash_entry { +struct elf32_cr16_link_hash_entry +{ /* The basic elf link hash table entry. */ struct elf_link_hash_entry root; @@ -66,35 +67,6 @@ bfd_vma value; }; -/* We derive a hash table from the main elf linker hash table so - we can store state variables and a secondary hash table without - resorting to global variables. */ -struct elf32_cr16_link_hash_table { - /* The main hash table. */ - struct elf_link_hash_table root; - - /* A hash table for static functions. We could derive a new hash table - instead of using the full elf32_cr16_link_hash_table if we wanted - to save some memory. */ - struct elf32_cr16_link_hash_table *static_hash_table; - - /* Random linker state flags. */ -#define CR16_HASH_ENTRIES_INITIALIZED 0x1 - char flags; -}; - -/* For CR16 linker hash table. */ - -/* Get the CR16 ELF linker hash table from a link_info structure. */ - -#define elf32_cr16_hash_table(p) \ - ((struct elf32_cr16_link_hash_table *) ((p)->hash)) - -#define elf32_cr16_link_hash_traverse(table, func, info) \ - (elf_link_hash_traverse \ - (&(table)->root, \ - (bfd_boolean (*) ((struct elf_link_hash_entry *, void *))) (func), (info))) - /* cr16_reloc_map array maps BFD relocation enum into a CRGAS relocation type. */ struct cr16_reloc_map @@ -889,16 +861,9 @@ unsigned short r_type = howto->type; bfd_byte *hit_data = contents + offset; bfd_vma reloc_bits, check, Rvalue1; - bfd * dynobj; - bfd_vma * local_got_offsets; - asection * sgot; dynobj = elf_hash_table (info)->dynobj; - local_got_offsets = elf_local_got_offsets (input_bfd); - - sgot = NULL; - switch (r_type) { @@ -1295,7 +1260,6 @@ unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel, *irelend; - Elf_Internal_Rela *irelalign; bfd_vma toaddr; Elf_Internal_Sym *isym; Elf_Internal_Sym *isymend; @@ -1308,9 +1272,6 @@ contents = elf_section_data (sec)->this_hdr.contents; - /* The deletion must stop at the next ALIGN reloc for an aligment - power larger than the number of bytes we are deleting. */ - irelalign = NULL; toaddr = sec->size; irel = elf_section_data (sec)->relocs; @@ -1431,9 +1392,6 @@ struct elf_link_hash_entry **sym_hashes; Elf_Internal_Rela *rel, *relend; - if (info->relocatable) - return TRUE; - symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); @@ -1474,15 +1432,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -1708,40 +1659,23 @@ static struct bfd_link_hash_table * elf32_cr16_link_hash_table_create (bfd *abfd) { - struct elf32_cr16_link_hash_table *ret; - bfd_size_type amt = sizeof (struct elf32_cr16_link_hash_table); + struct elf_link_hash_table *ret; + bfd_size_type amt = sizeof (struct elf_link_hash_table); - ret = (struct elf32_cr16_link_hash_table *) bfd_malloc (amt); - if (ret == (struct elf32_cr16_link_hash_table *) NULL) + ret = (struct elf_link_hash_table *) bfd_malloc (amt); + if (ret == (struct elf_link_hash_table *) NULL) return NULL; - if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, + if (!_bfd_elf_link_hash_table_init (ret, abfd, elf32_cr16_link_hash_newfunc, - sizeof (struct elf32_cr16_link_hash_entry))) + sizeof (struct elf32_cr16_link_hash_entry), + GENERIC_ELF_DATA)) { free (ret); return NULL; } - ret->flags = 0; - amt = sizeof (struct elf_link_hash_table); - ret->static_hash_table - = (struct elf32_cr16_link_hash_table *) bfd_malloc (amt); - if (ret->static_hash_table == NULL) - { - free (ret); - return NULL; - } - - if (!_bfd_elf_link_hash_table_init (&ret->static_hash_table->root, abfd, - elf32_cr16_link_hash_newfunc, - sizeof (struct elf32_cr16_link_hash_entry))) - { - free (ret->static_hash_table); - free (ret); - return NULL; - } - return &ret->root.root; + return &ret->root; } /* Free an cr16 ELF linker hash table. */ @@ -1749,12 +1683,10 @@ static void elf32_cr16_link_hash_table_free (struct bfd_link_hash_table *hash) { - struct elf32_cr16_link_hash_table *ret - = (struct elf32_cr16_link_hash_table *) hash; + struct elf_link_hash_table *ret + = (struct elf_link_hash_table *) hash; _bfd_generic_link_hash_table_free - ((struct bfd_link_hash_table *) ret->static_hash_table); - _bfd_generic_link_hash_table_free ((struct bfd_link_hash_table *) ret); } @@ -2295,26 +2227,12 @@ static asection * elf32_cr16_gc_mark_hook (asection *sec, - struct bfd_link_info *info ATTRIBUTE_UNUSED, - Elf_Internal_Rela *rel ATTRIBUTE_UNUSED, + struct bfd_link_info *info, + Elf_Internal_Rela *rel, struct elf_link_hash_entry *h, Elf_Internal_Sym *sym) { - if (h == NULL) - return bfd_section_from_elf_index (sec->owner, sym->st_shndx); - - 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: - return NULL; - } + return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym); } /* Update the got entry reference counts for the section being removed. */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-cr16c.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-cr16c.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-cr16c.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-cr16c.c 2010-10-25 15:54:13.000000000 +0000 @@ -1,5 +1,6 @@ /* BFD back-end for National Semiconductor's CR16C ELF - Copyright 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. + Copyright 2004, 2005, 2006, 2007, 2009, 2010 + Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -204,7 +205,6 @@ unsigned long format, addr_type, code_factor; unsigned short size; unsigned short r_type; - asymbol *symbol = NULL; unsigned long disp20_opcod; char neg = 0; @@ -224,9 +224,6 @@ addr_type = r_type & R_ADDRTYPE; code_factor = ((addr_type == R_CODE_ADDR) ? 1 : 0); - if (sym_sec) - symbol = sym_sec->symbol; - switch (format) { case R_NUMBER: @@ -727,15 +724,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) { diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-cris.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-cris.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-cris.c 2009-03-25 03:03:40.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-cris.c 2010-10-25 15:54:13.000000000 +0000 @@ -1,6 +1,6 @@ /* CRIS-specific support for 32-bit ELF. - Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 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. @@ -580,7 +580,7 @@ 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 + 22); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 22); /* pr_reg */ offset = 70; @@ -599,7 +599,7 @@ 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 + 22); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 22); /* pr_reg */ offset = 70; @@ -885,13 +885,14 @@ #define elf_cris_link_hash_traverse(table, func, info) \ (elf_link_hash_traverse \ (&(table)->root, \ - (bfd_boolean (*) PARAMS ((struct elf_link_hash_entry *, PTR))) (func), \ + (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func), \ (info))) /* Get the CRIS ELF linker hash table from a link_info structure. */ #define elf_cris_hash_table(p) \ - ((struct elf_cris_link_hash_table *) (p)->hash) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == CRIS_ELF_DATA ? ((struct elf_cris_link_hash_table *) ((p)->hash)) : NULL) /* Get the CRIS ELF linker hash entry from a regular hash entry (the "parent class"). The .root reference is just a simple type @@ -903,10 +904,9 @@ /* Create an entry in a CRIS ELF linker hash table. */ static struct bfd_hash_entry * -elf_cris_link_hash_newfunc (entry, table, string) - struct bfd_hash_entry *entry; - struct bfd_hash_table *table; - const char *string; +elf_cris_link_hash_newfunc (struct bfd_hash_entry *entry, + struct bfd_hash_table *table, + const char *string) { struct elf_cris_link_hash_entry *ret = (struct elf_cris_link_hash_entry *) entry; @@ -940,8 +940,7 @@ /* Create a CRIS ELF linker hash table. */ static struct bfd_link_hash_table * -elf_cris_link_hash_table_create (abfd) - bfd *abfd; +elf_cris_link_hash_table_create (bfd *abfd) { struct elf_cris_link_hash_table *ret; bfd_size_type amt = sizeof (struct elf_cris_link_hash_table); @@ -952,7 +951,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, elf_cris_link_hash_newfunc, - sizeof (struct elf_cris_link_hash_entry))) + sizeof (struct elf_cris_link_hash_entry), + CRIS_ELF_DATA)) { free (ret); return NULL; @@ -1027,17 +1027,16 @@ copied, for further comments. */ static bfd_boolean -cris_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; +cris_elf_relocate_section (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) { + struct elf_cris_link_hash_table * htab; bfd *dynobj; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; @@ -1049,6 +1048,10 @@ Elf_Internal_Rela *relend; asection *srelgot; + htab = elf_cris_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = elf_hash_table (info)->dynobj; local_got_offsets = elf_local_got_offsets (input_bfd); symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; @@ -1178,15 +1181,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -1490,7 +1486,7 @@ case R_CRIS_16: case R_CRIS_32: if (info->shared - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0 && ((r_type != R_CRIS_8_PCREL && r_type != R_CRIS_16_PCREL @@ -1509,7 +1505,7 @@ if (sreloc == NULL) { sreloc = _bfd_elf_get_dynamic_reloc_section - (input_bfd, input_section, /*rela?*/ TRUE); + (dynobj, input_section, /*rela?*/ TRUE); /* The section should have been created in cris_elf_check_relocs, but that function will not be called for objects which fail in cris_elf_merge_private_bfd_data. */ @@ -1587,8 +1583,6 @@ indx = elf_section_data (osec)->dynindx; if (indx == 0) { - struct elf_cris_link_hash_table *htab; - htab = elf_cris_hash_table (info); osec = htab->root.text_index_section; indx = elf_section_data (osec)->dynindx; } @@ -1644,14 +1638,14 @@ } BFD_ASSERT ((input_section->flags & SEC_ALLOC) == 0 - || elf_cris_hash_table (info)->dtpmod_refcount != 0); + || htab->dtpmod_refcount != 0); /* Fill in a R_CRIS_DTPMOD reloc at offset 3 if we haven't already done so. Note that we do this in .got.plt, not in .got, as .got.plt contains the first part, still the reloc is against .got, because the linker script directs (is required to direct) them both into .got. */ - if (elf_cris_hash_table (info)->dtpmod_refcount > 0 + if (htab->dtpmod_refcount > 0 && (input_section->flags & SEC_ALLOC) != 0) { asection *sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); @@ -1686,19 +1680,13 @@ /* Reverse the sign to mark that we've emitted the required GOT entry. */ - elf_cris_hash_table (info)->dtpmod_refcount - = -elf_cris_hash_table (info)->dtpmod_refcount; + htab->dtpmod_refcount = - htab->dtpmod_refcount; } - /* The thread-based offset to the local symbol is the - relocation. - For the executable, TLS data begins at the thread pointer plus - the negative size of the TLS data. For a DSO, that's part of - the module TLS offset. */ + /* The relocation is the offset from the start of the module + TLS block to the (local) symbol. */ relocation -= elf_hash_table (info)->tls_sec == NULL - ? 0 : (elf_hash_table (info)->tls_sec->vma - + (info->shared - ? 0 : elf_hash_table (info)->tls_size)); + ? 0 : elf_hash_table (info)->tls_sec->vma; break; case R_CRIS_32_GD: @@ -2118,12 +2106,12 @@ dynamic sections here. */ static bfd_boolean -elf_cris_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; +elf_cris_finish_dynamic_symbol (bfd *output_bfd, + struct bfd_link_info *info, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym) { + struct elf_cris_link_hash_table * htab; bfd *dynobj; /* Where in the plt entry to put values. */ @@ -2140,6 +2128,10 @@ const bfd_byte *plt_entry = elf_cris_plt_entry; const bfd_byte *plt_pic_entry = elf_cris_pic_plt_entry; + htab = elf_cris_hash_table (info); + if (htab == NULL) + return FALSE; + /* Adjust the various PLT entry offsets. */ if (bfd_get_mach (output_bfd) == bfd_mach_cris_v32) { @@ -2158,7 +2150,6 @@ { asection *splt; asection *sgotplt; - asection *sgot; asection *srela; bfd_vma got_base; @@ -2179,7 +2170,7 @@ processed as part of the runtime lazy .rela.plt relocation). FIXME: There be literal constants here... */ bfd_vma rela_plt_index - = (elf_cris_hash_table (info)->dtpmod_refcount != 0 + = (htab->dtpmod_refcount != 0 ? gotplt_offset/4 - 2 - 3 : gotplt_offset/4 - 3); /* Get the offset into the .got table of the entry that corresponds @@ -2190,7 +2181,7 @@ bfd_vma got_offset = (has_gotplt ? gotplt_offset - : h->got.offset + elf_cris_hash_table(info)->next_gotplt_entry); + : h->got.offset + htab->next_gotplt_entry); /* This symbol has an entry in the procedure linkage table. Set it up. */ @@ -2198,7 +2189,6 @@ BFD_ASSERT (h->dynindx != -1); splt = bfd_get_section_by_name (dynobj, ".plt"); - sgot = bfd_get_section_by_name (dynobj, ".got"); sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); srela = bfd_get_section_by_name (dynobj, ".rela.plt"); BFD_ASSERT (splt != NULL && sgotplt != NULL @@ -2542,6 +2532,7 @@ asection *sec, const Elf_Internal_Rela *relocs) { + struct elf_cris_link_hash_table * htab; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; @@ -2557,6 +2548,10 @@ if (dynobj == NULL) return TRUE; + htab = elf_cris_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); local_got_refcounts = elf_local_got_refcounts (abfd); @@ -2694,9 +2689,9 @@ break; /* Fall through. */ case R_CRIS_16_DTPREL: - elf_cris_hash_table (info)->dtpmod_refcount--; - if (elf_cris_hash_table (info)->dtpmod_refcount == 0) - elf_cris_hash_table (info)->next_gotplt_entry -= 8; + htab->dtpmod_refcount--; + if (htab->dtpmod_refcount == 0) + htab->next_gotplt_entry -= 8; BFD_ASSERT (local_got_refcounts != NULL); local_got_refcounts[-1]--; break; @@ -2709,6 +2704,21 @@ return TRUE; } +/* The elf_backend_plt_sym_val hook function. */ + +static bfd_vma +cris_elf_plt_sym_val (bfd_vma i, const asection *plt, + const arelent *rel ATTRIBUTE_UNUSED) +{ + bfd_size_type plt_entry_size; + + plt_entry_size + = (bfd_get_mach (plt->owner) == bfd_mach_cris_v32 + ? PLT_ENTRY_SIZE_V32 : PLT_ENTRY_SIZE); + + return plt->vma + (i + 1) * plt_entry_size; +} + /* Make sure we emit a GOT entry if the symbol was supposed to have a PLT entry but we found we will not create any. Called when we find we will not have any PLT for this symbol, by for example @@ -2846,14 +2856,18 @@ understand. */ static bfd_boolean -elf_cris_adjust_dynamic_symbol (info, h) - struct bfd_link_info *info; - struct elf_link_hash_entry *h; +elf_cris_adjust_dynamic_symbol (struct bfd_link_info *info, + struct elf_link_hash_entry *h) { + struct elf_cris_link_hash_table * htab; bfd *dynobj; asection *s; bfd_size_type plt_entry_size; + htab = elf_cris_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = elf_hash_table (info)->dynobj; /* Make sure we know what is going on here. */ @@ -2978,8 +2992,8 @@ /* We also need to make an entry in the .got.plt section, which will be placed in the .got section by the linker script. */ ((struct elf_cris_link_hash_entry *) h)->gotplt_offset - = elf_cris_hash_table (info)->next_gotplt_entry; - elf_cris_hash_table (info)->next_gotplt_entry += 4; + = htab->next_gotplt_entry; + htab->next_gotplt_entry += 4; s = bfd_get_section_by_name (dynobj, ".got.plt"); BFD_ASSERT (s != NULL); @@ -3083,12 +3097,37 @@ return; } - BFD_ASSERT (edir->pcrel_relocs_copied == NULL); BFD_ASSERT (edir->gotplt_offset == 0 || eind->gotplt_offset == 0); #define XMOVOPZ(F, OP, Z) edir->F OP eind->F; eind->F = Z #define XMOVE(F) XMOVOPZ (F, +=, 0) - XMOVOPZ (pcrel_relocs_copied, =, NULL); + if (eind->pcrel_relocs_copied != NULL) + { + if (edir->pcrel_relocs_copied != NULL) + { + struct elf_cris_pcrel_relocs_copied **pp; + struct elf_cris_pcrel_relocs_copied *p; + + /* Add reloc counts against the indirect sym to the direct sym + list. Merge any entries against the same section. */ + for (pp = &eind->pcrel_relocs_copied; *pp != NULL;) + { + struct elf_cris_pcrel_relocs_copied *q; + p = *pp; + for (q = edir->pcrel_relocs_copied; q != NULL; q = q->next) + if (q->section == p->section) + { + q->count += p->count; + *pp = p->next; + break; + } + if (q == NULL) + pp = &p->next; + } + *pp = edir->pcrel_relocs_copied; + } + XMOVOPZ (pcrel_relocs_copied, =, NULL); + } XMOVE (gotplt_refcount); XMOVE (gotplt_offset); XMOVE (reg_got_refcount); @@ -3103,12 +3142,12 @@ /* Look through the relocs for a section during the first phase. */ static bfd_boolean -cris_elf_check_relocs (abfd, info, sec, relocs) - bfd *abfd; - struct bfd_link_info *info; - asection *sec; - const Elf_Internal_Rela *relocs; +cris_elf_check_relocs (bfd *abfd, + struct bfd_link_info *info, + asection *sec, + const Elf_Internal_Rela *relocs) { + struct elf_cris_link_hash_table * htab; bfd *dynobj; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; @@ -3122,6 +3161,10 @@ if (info->relocatable) return TRUE; + htab = elf_cris_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = elf_hash_table (info)->dynobj; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); @@ -3173,9 +3216,10 @@ case R_CRIS_16_DTPREL: /* The first .got.plt entry is right after the R_CRIS_DTPMOD entry at index 3. */ - if (elf_cris_hash_table (info)->dtpmod_refcount == 0) - elf_cris_hash_table (info)->next_gotplt_entry += 8; - elf_cris_hash_table (info)->dtpmod_refcount++; + if (htab->dtpmod_refcount == 0) + htab->next_gotplt_entry += 8; + + htab->dtpmod_refcount++; /* Fall through. */ case R_CRIS_32_IE: @@ -3654,7 +3698,7 @@ eh = elf_cris_hash_entry (h); for (p = eh->pcrel_relocs_copied; p != NULL; p = p->next) - if (p->section == sreloc) + if (p->section == sec) break; if (p == NULL) @@ -3665,7 +3709,7 @@ return FALSE; p->next = eh->pcrel_relocs_copied; eh->pcrel_relocs_copied = p; - p->section = sreloc; + p->section = sec; p->count = 0; p->r_type = r_type; } @@ -3708,15 +3752,19 @@ /* Set the sizes of the dynamic sections. */ static bfd_boolean -elf_cris_size_dynamic_sections (output_bfd, info) - bfd *output_bfd ATTRIBUTE_UNUSED; - struct bfd_link_info *info; +elf_cris_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info) { + struct elf_cris_link_hash_table * htab; bfd *dynobj; asection *s; bfd_boolean plt; bfd_boolean relocs; + htab = elf_cris_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = elf_hash_table (info)->dynobj; BFD_ASSERT (dynobj != NULL); @@ -3734,9 +3782,8 @@ else { /* Adjust all expected GOTPLT uses to use a GOT entry instead. */ - elf_cris_link_hash_traverse (elf_cris_hash_table (info), - elf_cris_adjust_gotplt_to_got, - (PTR) info); + elf_cris_link_hash_traverse (htab, elf_cris_adjust_gotplt_to_got, + info); /* We may have created entries in the .rela.got section. However, if we are not creating the dynamic sections, we will @@ -3756,13 +3803,13 @@ visibility changes. For programs, we discard space for relocs for symbols not referenced by any dynamic object. */ if (info->shared) - elf_cris_link_hash_traverse (elf_cris_hash_table (info), + elf_cris_link_hash_traverse (htab, elf_cris_discard_excess_dso_dynamics, - (PTR) info); + info); else - elf_cris_link_hash_traverse (elf_cris_hash_table (info), + elf_cris_link_hash_traverse (htab, elf_cris_discard_excess_program_dynamics, - (PTR) info); + info); /* The check_relocs and adjust_dynamic_symbol entry points have determined the sizes of the various dynamic sections. Allocate @@ -3790,13 +3837,13 @@ /* The .got.plt contains the .got header as well as the actual .got.plt contents. The .got header may contain a R_CRIS_DTPMOD entry at index 3. */ - s->size += elf_cris_hash_table (info)->dtpmod_refcount != 0 + s->size += htab->dtpmod_refcount != 0 ? 8 : 0; } else if (CONST_STRNEQ (name, ".rela")) { if (strcmp (name, ".rela.got") == 0 - && elf_cris_hash_table (info)->dtpmod_refcount != 0 + && htab->dtpmod_refcount != 0 && info->shared) s->size += sizeof (Elf32_External_Rela); @@ -3920,8 +3967,14 @@ || info->symbolic)) { for (s = h->pcrel_relocs_copied; s != NULL; s = s->next) - s->section->size -= s->count * sizeof (Elf32_External_Rela); - + { + asection *sreloc + = _bfd_elf_get_dynamic_reloc_section (elf_hash_table (info) + ->dynobj, + s->section, + /*rela?*/ TRUE); + sreloc->size -= s->count * sizeof (Elf32_External_Rela); + } return TRUE; } @@ -3932,21 +3985,20 @@ late). */ for (s = h->pcrel_relocs_copied; s != NULL; s = s->next) - { - BFD_ASSERT ((s->section->flags & SEC_READONLY) != 0); - - /* FIXME: How do we make this optionally a warning only? */ - (*_bfd_error_handler) - (_("%B, section `%A', to symbol `%s':\n" - " relocation %s should not be used" - " in a shared object; recompile with -fPIC"), - s->section->owner, - s->section, - h->root.root.root.string, - cris_elf_howto_table[s->r_type].name); + if ((s->section->flags & SEC_READONLY) != 0) + { + /* FIXME: How do we make this optionally a warning only? */ + (*_bfd_error_handler) + (_("%B, section `%A', to symbol `%s':\n" + " relocation %s should not be used" + " in a shared object; recompile with -fPIC"), + s->section->owner, + s->section, + h->root.root.root.string, + cris_elf_howto_table[s->r_type].name); - info->flags |= DF_TEXTREL; - } + info->flags |= DF_TEXTREL; + } return TRUE; } @@ -4305,6 +4357,7 @@ } #define ELF_ARCH bfd_arch_cris +#define ELF_TARGET_ID CRIS_ELF_DATA #define ELF_MACHINE_CODE EM_CRIS #define ELF_MAXPAGESIZE 0x2000 @@ -4317,6 +4370,7 @@ #define elf_backend_relocate_section cris_elf_relocate_section #define elf_backend_gc_mark_hook cris_elf_gc_mark_hook #define elf_backend_gc_sweep_hook cris_elf_gc_sweep_hook +#define elf_backend_plt_sym_val cris_elf_plt_sym_val #define elf_backend_check_relocs cris_elf_check_relocs #define elf_backend_grok_prstatus cris_elf_grok_prstatus #define elf_backend_grok_psinfo cris_elf_grok_psinfo diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-crx.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-crx.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-crx.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-crx.c 2010-10-25 15:54:13.000000000 +0000 @@ -1,5 +1,6 @@ /* BFD back-end for National Semiconductor's CRX ELF - Copyright 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. + Copyright 2004, 2005, 2006, 2007, 2009, 2010 + Free Software Foundation, Inc. Written by Tomer Levi, NSC, Israel. This file is part of BFD, the Binary File Descriptor library. @@ -591,7 +592,6 @@ unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel, *irelend; - Elf_Internal_Rela *irelalign; bfd_vma toaddr; Elf_Internal_Sym *isym; Elf_Internal_Sym *isymend; @@ -604,10 +604,6 @@ contents = elf_section_data (sec)->this_hdr.contents; - /* The deletion must stop at the next ALIGN reloc for an aligment - power larger than the number of bytes we are deleting. */ - - irelalign = NULL; toaddr = sec->size; irel = elf_section_data (sec)->relocs; @@ -878,15 +874,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-d10v.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-d10v.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-d10v.c 2007-09-28 08:43:45.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-d10v.c 2010-10-25 15:54:13.000000000 +0000 @@ -464,15 +464,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-dlx.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-dlx.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-dlx.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-dlx.c 2011-01-14 12:35:56.000000000 +0000 @@ -1,5 +1,5 @@ /* DLX specific support for 32-bit ELF - Copyright 2002, 2003, 2004, 2005, 2006, 2007 + Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2011 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -139,9 +139,8 @@ /* Can not support a long jump to sections other then .text. */ if (strcmp (input_section->name, symbol->section->output_section->name) != 0) { - fprintf (stderr, - "BFD Link Error: branch (PC rel16) to section (%s) not supported\n", - symbol->section->output_section->name); + (*_bfd_error_handler) (_("BFD Link Error: branch (PC rel16) to section (%s) not supported"), + symbol->section->output_section->name); return bfd_reloc_undefined; } @@ -202,9 +201,8 @@ /* Can not support a long jump to sections other then .text */ if (strcmp (input_section->name, symbol->section->output_section->name) != 0) { - fprintf (stderr, - "BFD Link Error: jump (PC rel26) to section (%s) not supported\n", - symbol->section->output_section->name); + (*_bfd_error_handler) (_("BFD Link Error: jump (PC rel26) to section (%s) not supported"), + symbol->section->output_section->name); return bfd_reloc_undefined; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-fr30.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-fr30.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-fr30.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-fr30.c 2010-10-25 15:54:13.000000000 +0000 @@ -578,15 +578,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-frv.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-frv.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-frv.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-frv.c 2011-02-28 18:30:16.000000000 +0000 @@ -1,5 +1,5 @@ /* FRV-specific support for 32-bit ELF. - Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -882,8 +882,9 @@ /* Get the FRV ELF linker hash table from a link_info structure. */ -#define frvfdpic_hash_table(info) \ - ((struct frvfdpic_elf_link_hash_table *) ((info)->hash)) +#define frvfdpic_hash_table(p) \ + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == FRV_ELF_DATA ? ((struct frvfdpic_elf_link_hash_table *) ((p)->hash)) : NULL) #define frvfdpic_got_section(info) \ (frvfdpic_hash_table (info)->sgot) @@ -1006,7 +1007,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, _bfd_elf_link_hash_newfunc, - sizeof (struct elf_link_hash_entry))) + sizeof (struct elf_link_hash_entry), + FRV_ELF_DATA)) { free (ret); return NULL; @@ -2768,7 +2770,7 @@ struct elf_link_hash_entry *h; bfd_vma relocation; bfd_reloc_status_type r; - const char * name = NULL; + const char *name; int r_type; asection *osec; struct frvfdpic_relocs_info *picrel; @@ -2794,7 +2796,8 @@ name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); - name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name; + if (name == NULL || name[0] == 0) + name = bfd_section_name (input_bfd, sec); } else { @@ -2806,18 +2809,12 @@ h, sec, relocation, unresolved_reloc, warned); osec = sec; + name = h->root.root.string; } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -3960,10 +3957,10 @@ if (silence_segment_error == 1) silence_segment_error = (strlen (input_bfd->filename) == 6 - && strcmp (input_bfd->filename, "crt0.o") == 0) + && filename_cmp (input_bfd->filename, "crt0.o") == 0) || (strlen (input_bfd->filename) > 6 - && strcmp (input_bfd->filename - + strlen (input_bfd->filename) - 7, + && filename_cmp (input_bfd->filename + + strlen (input_bfd->filename) - 7, "/crt0.o") == 0) ? -1 : 0; if (!silence_segment_error @@ -5894,7 +5891,8 @@ FALSE, FALSE, TRUE); if (hend && (hend->type == bfd_link_hash_defined - || hend->type == bfd_link_hash_defweak)) + || hend->type == bfd_link_hash_defweak) + && hend->u.def.section->output_section != NULL) { bfd_vma value = frvfdpic_gotfixup_section (info)->output_section->vma @@ -6933,7 +6931,7 @@ elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12); /* `pr_pid' is at offset 24. */ - elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* `pr_reg' is at offset 72. */ offset = 72; @@ -6992,6 +6990,7 @@ return TRUE; } #define ELF_ARCH bfd_arch_frv +#define ELF_TARGET_ID FRV_ELF_DATA #define ELF_MACHINE_CODE EM_CYGNUS_FRV #define ELF_MAXPAGESIZE 0x1000 diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-h8300.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-h8300.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-h8300.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-h8300.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for Renesas H8/300 ELF binaries. Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2009 Free Software Foundation, Inc. + 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -461,15 +461,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -724,10 +717,8 @@ { arelent bfd_reloc; - reloc_howto_type *h; elf32_h8_info_to_howto (abfd, &bfd_reloc, irel); - h = bfd_reloc.howto; } /* Keep track of the previous reloc so that we can delete some long jumps created by the compiler. */ @@ -1386,7 +1377,6 @@ unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel, *irelend; - Elf_Internal_Rela *irelalign; Elf_Internal_Sym *isym; Elf_Internal_Sym *isymend; bfd_vma toaddr; @@ -1398,10 +1388,6 @@ contents = elf_section_data (sec)->this_hdr.contents; - /* The deletion must stop at the next ALIGN reloc for an aligment - power larger than the number of bytes we are deleting. */ - - irelalign = NULL; toaddr = sec->size; irel = elf_section_data (sec)->relocs; @@ -1641,5 +1627,6 @@ #define bfd_elf32_bfd_get_relocated_section_contents \ elf32_h8_get_relocated_section_contents +#define elf_symbol_leading_char '_' #include "elf32-target.h" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-hppa.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-hppa.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-hppa.c 2009-06-18 14:18:28.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-hppa.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for HP PA-RISC ELF files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Original code by @@ -314,7 +314,8 @@ /* Various hash macros and functions. */ #define hppa_link_hash_table(p) \ - ((struct elf32_hppa_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == HPPA32_ELF_DATA ? ((struct elf32_hppa_link_hash_table *) ((p)->hash)) : NULL) #define hppa_elf_hash_entry(ent) \ ((struct elf32_hppa_link_hash_entry *)(ent)) @@ -335,15 +336,6 @@ #define eh_name(eh) \ (eh ? eh->root.root.string : "") -/* Override the generic function because we want to mark our BFDs. */ - -static bfd_boolean -elf32_hppa_mkobject (bfd *abfd) -{ - return bfd_elf_allocate_object (abfd, sizeof (struct elf_obj_tdata), - HPPA_ELF_TDATA); -} - /* Assorted hash table functions. */ /* Initialize an entry in the stub hash table. */ @@ -432,7 +424,8 @@ return NULL; if (!_bfd_elf_link_hash_table_init (&htab->etab, abfd, hppa_link_hash_newfunc, - sizeof (struct elf32_hppa_link_hash_entry))) + sizeof (struct elf32_hppa_link_hash_entry), + HPPA32_ELF_DATA)) { free (htab); return NULL; @@ -728,6 +721,9 @@ info = (struct bfd_link_info *)in_arg; htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; + stub_sec = hsh->stub_sec; /* Make a note of the offset within the stubs for this entry. */ @@ -1000,6 +996,8 @@ /* Don't try to create the .plt and .got twice. */ htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; if (htab->splt != NULL) return TRUE; @@ -1153,17 +1151,17 @@ const Elf_Internal_Rela *rela_end; struct elf32_hppa_link_hash_table *htab; asection *sreloc; - asection *stubreloc; int tls_type = GOT_UNKNOWN, old_tls_type = GOT_UNKNOWN; if (info->relocatable) return TRUE; htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; eh_syms = elf_sym_hashes (abfd); sreloc = NULL; - stubreloc = NULL; rela_end = relocs + sec->reloc_count; for (rela = relocs; rela < rela_end; rela++) @@ -1369,7 +1367,7 @@ if (r_type == R_PARISC_TLS_LDM21L || r_type == R_PARISC_TLS_LDM14R) - hppa_link_hash_table (info)->tls_ldm_got.refcount += 1; + htab->tls_ldm_got.refcount += 1; else { if (hh != NULL) @@ -1601,10 +1599,15 @@ bfd_signed_vma *local_got_refcounts; bfd_signed_vma *local_plt_refcounts; const Elf_Internal_Rela *rela, *relend; + struct elf32_hppa_link_hash_table *htab; if (info->relocatable) return TRUE; + htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; + elf_section_data (sec)->local_dynrel = NULL; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; @@ -1669,7 +1672,7 @@ case R_PARISC_TLS_LDM21L: case R_PARISC_TLS_LDM14R: - hppa_link_hash_table (info)->tls_ldm_got.refcount -= 1; + htab->tls_ldm_got.refcount -= 1; break; case R_PARISC_PCREL12F: @@ -1724,7 +1727,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -1904,6 +1907,8 @@ same memory location for the variable. */ htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; /* We must generate a COPY reloc to tell the dynamic linker to copy the initial value out of the dynamic object and into the @@ -1939,6 +1944,9 @@ info = (struct bfd_link_info *) inf; hh = hppa_elf_hash_entry (eh); htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; + if (htab->etab.dynamic_sections_created && eh->plt.refcount > 0) { @@ -2005,6 +2013,9 @@ info = inf; htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; + hh = hppa_elf_hash_entry (eh); if (htab->etab.dynamic_sections_created @@ -2212,6 +2223,9 @@ bfd_boolean relocs; htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->etab.dynobj; if (dynobj == NULL) abort (); @@ -2505,6 +2519,9 @@ bfd_size_type amt; struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info); + if (htab == NULL) + return -1; + /* Count the number of input BFDs and find the top input section id. */ for (input_bfd = info->input_bfds, bfd_count = 0, top_id = 0; input_bfd != NULL; @@ -2572,6 +2589,9 @@ { struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info); + if (htab == NULL) + return; + if (isec->output_section->index <= htab->top_index) { asection **list = htab->input_list + isec->output_section->index; @@ -2679,6 +2699,9 @@ int stub_changed = 0; struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info); + if (htab == NULL) + return -1; + /* We want to read in symbol extension records only once. To do this we need to read in the local symbols in parallel and save them for later use; so hold pointers to the local symbols in an array. */ @@ -2807,6 +2830,9 @@ bfd_boolean stub_changed; struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; + /* Stash our params away. */ htab->stub_bfd = stub_bfd; htab->multi_subspace = multi_subspace; @@ -3092,6 +3118,9 @@ struct elf32_hppa_link_hash_table *htab; htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; + h = bfd_link_hash_lookup (&htab->etab.root, "$global$", FALSE, FALSE, FALSE); if (h != NULL @@ -3176,6 +3205,8 @@ struct elf32_hppa_link_hash_table *htab; htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; for (stub_sec = htab->stub_bfd->sections; stub_sec != NULL; @@ -3238,6 +3269,9 @@ /* If we're producing a final executable, sort the contents of the unwind section. */ + if (info->relocatable) + return TRUE; + return elf_hppa_sort_unwind (abfd); } @@ -3249,6 +3283,8 @@ struct elf32_hppa_link_hash_table *htab; htab = (struct elf32_hppa_link_hash_table*) data; + if (htab == NULL) + return; if ((section->flags & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)) { @@ -3385,12 +3421,19 @@ case R_PARISC_DPREL21L: case R_PARISC_DPREL14R: case R_PARISC_DPREL14F: + case R_PARISC_TLS_GD21L: + case R_PARISC_TLS_LDM21L: + case R_PARISC_TLS_IE21L: /* Convert instructions that use the linkage table pointer (r19) to instructions that use the global data pointer (dp). This is the most efficient way of using PIC code in an incomplete executable, but the user must follow the standard runtime conventions for accessing data for this to work. */ - if (orig_r_type == R_PARISC_DLTIND21L) + if (orig_r_type == R_PARISC_DLTIND21L + || (!info->shared + && (r_type == R_PARISC_TLS_GD21L + || r_type == R_PARISC_TLS_LDM21L + || r_type == R_PARISC_TLS_IE21L))) { /* Convert addil instructions if the original reloc was a DLTIND21L. GCC sometimes uses a register other than r19 for @@ -3441,11 +3484,8 @@ case R_PARISC_DLTIND21L: case R_PARISC_DLTIND14R: case R_PARISC_DLTIND14F: - case R_PARISC_TLS_GD21L: case R_PARISC_TLS_GD14R: - case R_PARISC_TLS_LDM21L: case R_PARISC_TLS_LDM14R: - case R_PARISC_TLS_IE21L: case R_PARISC_TLS_IE14R: value -= elf_gp (input_section->output_section->owner); break; @@ -3626,6 +3666,9 @@ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; + local_got_offsets = elf_local_got_offsets (input_bfd); rela = relocs; @@ -3698,17 +3741,10 @@ } if (sym_sec != NULL && elf_discarded_section (sym_sec)) - { - /* For relocs against symbols from removed linkonce - sections, or sections discarded by a linker script, - we just want the section contents zeroed. Avoid any - special processing. */ - _bfd_clear_contents (elf_hppa_howto_table + r_type, input_bfd, - contents + rela->r_offset); - rela->r_info = 0; - rela->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rela, relend, + elf_hppa_howto_table + r_type, + contents); if (info->relocatable) continue; @@ -4293,6 +4329,8 @@ bfd_byte *loc; htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; if (eh->plt.offset != (bfd_vma) -1) { @@ -4427,7 +4465,7 @@ elf32_hppa_reloc_type_class (const Elf_Internal_Rela *rela) { /* Handle TLS relocs first; we don't want them to be marked - relative by the "if (ELF32_R_SYM (rela->r_info) == 0)" + relative by the "if (ELF32_R_SYM (rela->r_info) == STN_UNDEF)" check below. */ switch ((int) ELF32_R_TYPE (rela->r_info)) { @@ -4437,7 +4475,7 @@ return reloc_class_normal; } - if (ELF32_R_SYM (rela->r_info) == 0) + if (ELF32_R_SYM (rela->r_info) == STN_UNDEF) return reloc_class_relative; switch ((int) ELF32_R_TYPE (rela->r_info)) @@ -4462,6 +4500,9 @@ asection *sdyn; htab = hppa_link_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->etab.dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); @@ -4592,7 +4633,6 @@ #define elf_info_to_howto_rel elf_hppa_info_to_howto_rel /* Stuff for the BFD linker. */ -#define bfd_elf32_mkobject elf32_hppa_mkobject #define bfd_elf32_bfd_final_link elf32_hppa_final_link #define bfd_elf32_bfd_link_hash_table_create elf32_hppa_link_hash_table_create #define bfd_elf32_bfd_link_hash_table_free elf32_hppa_link_hash_table_free @@ -4630,6 +4670,7 @@ #define TARGET_BIG_SYM bfd_elf32_hppa_vec #define TARGET_BIG_NAME "elf32-hppa" #define ELF_ARCH bfd_arch_hppa +#define ELF_TARGET_ID HPPA32_ELF_DATA #define ELF_MACHINE_CODE EM_PARISC #define ELF_MAXPAGESIZE 0x1000 #define ELF_OSABI ELFOSABI_HPUX diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-i370.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-i370.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-i370.c 2008-11-25 13:03:55.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-i370.c 2011-03-14 15:54:58.000000000 +0000 @@ -1,6 +1,6 @@ /* i370-specific support for 32-bit ELF Copyright 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2010 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. Hacked by Linas Vepstas for i370 linas@linas.org @@ -375,9 +375,6 @@ newsect = hdr->bfd_section; flags = bfd_get_section_flags (abfd, newsect); - if (hdr->sh_flags & SHF_EXCLUDE) - flags |= SEC_EXCLUDE; - if (hdr->sh_type == SHT_ORDERED) flags |= SEC_SORT_ENTRIES; @@ -807,7 +804,6 @@ struct elf_link_hash_entry **sym_hashes; const Elf_Internal_Rela *rel; const Elf_Internal_Rela *rel_end; - bfd_vma *local_got_offsets; asection *sreloc; if (info->relocatable) @@ -821,7 +817,6 @@ dynobj = elf_hash_table (info)->dynobj; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); - local_got_offsets = elf_local_got_offsets (abfd); sreloc = NULL; @@ -967,6 +962,7 @@ sym.st_name = 0; sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION); sym.st_other = 0; + sym.st_target_internal = 0; for (s = output_bfd->sections; s != NULL; s = s->next) { @@ -1045,7 +1041,6 @@ Elf_Internal_Rela *rel = relocs; Elf_Internal_Rela *relend = relocs + input_section->reloc_count; asection *sreloc = NULL; - bfd_vma *local_got_offsets; bfd_boolean ret = TRUE; #ifdef DEBUG @@ -1059,8 +1054,6 @@ /* Initialize howto table if needed. */ i370_elf_howto_init (); - local_got_offsets = elf_local_got_offsets (input_bfd); - for (; rel < relend; rel++) { enum i370_reloc_type r_type = (enum i370_reloc_type) ELF32_R_TYPE (rel->r_info); @@ -1149,15 +1142,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -1191,7 +1177,7 @@ case (int) R_I370_ADDR31: case (int) R_I370_ADDR16: if (info->shared - && r_symndx != 0) + && r_symndx != STN_UNDEF) { Elf_Internal_Rela outrel; bfd_byte *loc; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-i386.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-i386.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-i386.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-i386.c 2011-03-06 18:22:36.000000000 +0000 @@ -1,6 +1,6 @@ /* Intel 80386/80486-specific support for 32-bit ELF Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -419,7 +419,7 @@ elf_tdata (abfd)->core_signal = bfd_get_32 (abfd, note->descdata + 20); /* pr_pid */ - elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 28; @@ -437,7 +437,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -475,6 +475,8 @@ return FALSE; case 124: /* Linux/i386 elf_prpsinfo. */ + elf_tdata (abfd)->core_pid + = bfd_get_32 (abfd, note->descdata + 12); elf_tdata (abfd)->core_program = _bfd_elfcore_strndup (abfd, note->descdata + 28, 16); elf_tdata (abfd)->core_command @@ -634,13 +636,13 @@ #define is_i386_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == I386_ELF_TDATA) + && elf_object_id (bfd) == I386_ELF_DATA) static bfd_boolean elf_i386_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct elf_i386_obj_tdata), - I386_ELF_TDATA); + I386_ELF_DATA); } /* i386 ELF linker hash table. */ @@ -653,19 +655,8 @@ asection *sdynbss; asection *srelbss; - /* The (unloaded but important) .rel.plt.unloaded section on VxWorks. */ - asection *srelplt2; - - /* True if the target system is VxWorks. */ - int is_vxworks; - - /* Value used to fill the last word of the first plt entry. */ - bfd_byte plt0_pad_byte; - - /* The index of the next unused R_386_TLS_DESC slot in .rel.plt. */ - bfd_vma next_tls_desc_index; - - union { + union + { bfd_signed_vma refcount; bfd_vma offset; } tls_ldm_got; @@ -682,13 +673,26 @@ /* Used by local STT_GNU_IFUNC symbols. */ htab_t loc_hash_table; - void *loc_hash_memory; + void * loc_hash_memory; + + /* The (unloaded but important) .rel.plt.unloaded section on VxWorks. */ + asection *srelplt2; + + /* True if the target system is VxWorks. */ + int is_vxworks; + + /* The index of the next unused R_386_TLS_DESC slot in .rel.plt. */ + bfd_vma next_tls_desc_index; + + /* Value used to fill the last word of the first plt entry. */ + bfd_byte plt0_pad_byte; }; /* Get the i386 ELF linker hash table from a link_info structure. */ #define elf_i386_hash_table(p) \ - ((struct elf_i386_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == I386_ELF_DATA ? ((struct elf_i386_link_hash_table *) ((p)->hash)) : NULL) #define elf_i386_compute_jump_table_size(htab) \ ((htab)->next_tls_desc_index * 4) @@ -787,8 +791,6 @@ ret->elf.indx = sec->id; ret->elf.dynstr_index = ELF32_R_SYM (rel->r_info); ret->elf.dynindx = -1; - ret->elf.plt.offset = (bfd_vma) -1; - ret->elf.got.offset = (bfd_vma) -1; *slot = ret; } return &ret->elf; @@ -808,7 +810,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, elf_i386_link_hash_newfunc, - sizeof (struct elf_i386_link_hash_entry))) + sizeof (struct elf_i386_link_hash_entry), + I386_ELF_DATA)) { free (ret); return NULL; @@ -867,6 +870,9 @@ return FALSE; htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; + htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss"); if (!info->shared) htab->srelbss = bfd_get_section_by_name (dynobj, ".rel.bss"); @@ -1156,6 +1162,12 @@ unsigned int to_type = from_type; bfd_boolean check = TRUE; + /* Skip TLS transition for functions. */ + if (h != NULL + && (h->type == STT_FUNC + || h->type == STT_GNU_IFUNC)) + return TRUE; + switch (from_type) { case R_386_TLS_GD: @@ -1234,12 +1246,19 @@ name = h->root.root.string; else { - Elf_Internal_Sym *isym; struct elf_i386_link_hash_table *htab; + htab = elf_i386_hash_table (info); - isym = bfd_sym_from_r_symndx (&htab->sym_cache, - abfd, r_symndx); - name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); + if (htab == NULL) + name = "*unknown*"; + else + { + Elf_Internal_Sym *isym; + + isym = bfd_sym_from_r_symndx (&htab->sym_cache, + abfd, r_symndx); + name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); + } } (*_bfd_error_handler) @@ -1278,6 +1297,9 @@ BFD_ASSERT (is_i386_elf (abfd)); htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = &elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); @@ -1314,11 +1336,10 @@ /* Check relocation against local STT_GNU_IFUNC symbol. */ if (ELF32_ST_TYPE (isym->st_info) == STT_GNU_IFUNC) { - h = elf_i386_get_local_sym_hash (htab, abfd, rel, - TRUE); + h = elf_i386_get_local_sym_hash (htab, abfd, rel, TRUE); if (h == NULL) return FALSE; - + /* Fake a STT_GNU_IFUNC symbol. */ h->type = STT_GNU_IFUNC; h->def_regular = 1; @@ -1367,7 +1388,7 @@ /* It is referenced by a non-shared object. */ h->ref_regular = 1; h->needs_plt = 1; - + /* STT_GNU_IFUNC symbol must go through PLT. */ h->plt.refcount += 1; @@ -1669,7 +1690,6 @@ easily. Oh well. */ void **vpp; asection *s; - Elf_Internal_Sym *isym; isym = bfd_sym_from_r_symndx (&htab->sym_cache, abfd, r_symndx); @@ -1758,6 +1778,7 @@ asection *sec, const Elf_Internal_Rela *relocs) { + struct elf_i386_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; @@ -1766,6 +1787,10 @@ if (info->relocatable) return TRUE; + htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; + elf_section_data (sec)->local_dynrel = NULL; symtab_hdr = &elf_symtab_hdr (abfd); @@ -1782,16 +1807,36 @@ r_symndx = ELF32_R_SYM (rel->r_info); if (r_symndx >= symtab_hdr->sh_info) { - struct elf_i386_link_hash_entry *eh; - struct elf_dyn_relocs **pp; - struct elf_dyn_relocs *p; - 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; - eh = (struct elf_i386_link_hash_entry *) h; + } + else + { + /* A local symbol. */ + Elf_Internal_Sym *isym; + + isym = bfd_sym_from_r_symndx (&htab->sym_cache, + abfd, r_symndx); + /* Check relocation against local STT_GNU_IFUNC symbol. */ + if (isym != NULL + && ELF32_ST_TYPE (isym->st_info) == STT_GNU_IFUNC) + { + h = elf_i386_get_local_sym_hash (htab, abfd, rel, FALSE); + if (h == NULL) + abort (); + } + } + + if (h) + { + struct elf_i386_link_hash_entry *eh; + struct elf_dyn_relocs **pp; + struct elf_dyn_relocs *p; + + eh = (struct elf_i386_link_hash_entry *) h; for (pp = &eh->dyn_relocs; (p = *pp) != NULL; pp = &p->next) if (p->sec == sec) { @@ -1811,8 +1856,8 @@ switch (r_type) { case R_386_TLS_LDM: - if (elf_i386_hash_table (info)->tls_ldm_got.refcount > 0) - elf_i386_hash_table (info)->tls_ldm_got.refcount -= 1; + if (htab->tls_ldm_got.refcount > 0) + htab->tls_ldm_got.refcount -= 1; break; case R_386_TLS_GD: @@ -1826,6 +1871,11 @@ { if (h->got.refcount > 0) h->got.refcount -= 1; + if (h->type == STT_GNU_IFUNC) + { + if (h->plt.refcount > 0) + h->plt.refcount -= 1; + } } else if (local_got_refcounts != NULL) { @@ -1836,7 +1886,8 @@ case R_386_32: case R_386_PC32: - if (info->shared) + if (info->shared + && (h == NULL || h->type != STT_GNU_IFUNC)) break; /* Fall through */ @@ -1848,6 +1899,16 @@ } break; + case R_386_GOTOFF: + if (h != NULL && h->type == STT_GNU_IFUNC) + { + if (h->got.refcount > 0) + h->got.refcount -= 1; + if (h->plt.refcount > 0) + h->plt.refcount -= 1; + } + break; + default: break; } @@ -1947,6 +2008,8 @@ } htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; /* If there aren't any dynamic relocs in read-only sections, then we can keep the dynamic relocs and avoid the copy reloc. This @@ -2026,6 +2089,8 @@ info = (struct bfd_link_info *) inf; htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; /* Since STT_GNU_IFUNC symbol must go through PLT, we handle it here if it is defined and referenced in a non-shared object. */ @@ -2349,6 +2414,8 @@ bfd *ibfd; htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; dynobj = htab->elf.dynobj; if (dynobj == NULL) abort (); @@ -2494,6 +2561,30 @@ if (htab->elf.srelplt) htab->sgotplt_jump_table_size = htab->next_tls_desc_index * 4; + if (htab->elf.sgotplt) + { + struct elf_link_hash_entry *got; + got = elf_link_hash_lookup (elf_hash_table (info), + "_GLOBAL_OFFSET_TABLE_", + FALSE, FALSE, FALSE); + + /* Don't allocate .got.plt section if there are no GOT nor PLT + entries and there is no refeence to _GLOBAL_OFFSET_TABLE_. */ + if ((got == NULL + || !got->ref_regular_nonweak) + && (htab->elf.sgotplt->size + == get_elf_backend_data (output_bfd)->got_header_size) + && (htab->elf.splt == NULL + || htab->elf.splt->size == 0) + && (htab->elf.sgot == NULL + || htab->elf.sgot->size == 0) + && (htab->elf.iplt == NULL + || htab->elf.iplt->size == 0) + && (htab->elf.igotplt == NULL + || htab->elf.igotplt->size == 0)) + htab->elf.sgotplt->size = 0; + } + /* We now have determined the sizes of the various dynamic sections. Allocate memory for them. */ relocs = FALSE; @@ -2635,17 +2726,22 @@ if (tlsbase && tlsbase->type == STT_TLS) { + struct elf_i386_link_hash_table *htab; struct bfd_link_hash_entry *bh = NULL; const struct elf_backend_data *bed = get_elf_backend_data (output_bfd); + htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; + if (!(_bfd_generic_link_add_one_symbol (info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL, tls_sec, 0, NULL, FALSE, bed->collect, &bh))) return FALSE; - elf_i386_hash_table (info)->tls_module_base = bh; + htab->tls_module_base = bh; tlsbase = (struct elf_link_hash_entry *)bh; tlsbase->def_regular = 1; @@ -2665,7 +2761,7 @@ Elf_Internal_Shdr *hdr, asection *sec) { - register const char *name; + const char *name; name = bfd_get_section_name (abfd, sec); @@ -2699,17 +2795,21 @@ static void elf_i386_set_tls_module_base (struct bfd_link_info *info) { + struct elf_i386_link_hash_table *htab; struct bfd_link_hash_entry *base; if (!info->executable) return; - base = elf_i386_hash_table (info)->tls_module_base; + htab = elf_i386_hash_table (info); + if (htab == NULL) + return; - if (!base) + base = htab->tls_module_base; + if (base == NULL) return; - base->u.def.value = elf_hash_table (info)->tls_size; + base->u.def.value = htab->elf.tls_size; } /* Return the base VMA address which should be subtracted from real addresses @@ -2732,11 +2832,16 @@ elf_i386_tpoff (struct bfd_link_info *info, bfd_vma address) { struct elf_link_hash_table *htab = elf_hash_table (info); + const struct elf_backend_data *bed = get_elf_backend_data (info->output_bfd); + bfd_vma static_tls_size; /* If tls_sec is NULL, we should have signalled an error already. */ if (htab->tls_sec == NULL) return 0; - return htab->tls_size + htab->tls_sec->vma - address; + + /* Consider special static TLS alignment requirements. */ + static_tls_size = BFD_ALIGN (htab->tls_size, bed->static_tls_alignment); + return static_tls_size + htab->tls_sec->vma - address; } /* Relocate an i386 ELF section. */ @@ -2761,8 +2866,10 @@ bfd_boolean is_vxworks_tls; BFD_ASSERT (is_i386_elf (input_bfd)); - + htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; symtab_hdr = &elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); local_got_offsets = elf_local_got_offsets (input_bfd); @@ -2897,8 +3004,8 @@ && ELF32_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) { /* Relocate against local STT_GNU_IFUNC symbol. */ - h = elf_i386_get_local_sym_hash (htab, input_bfd, - rel, FALSE); + h = elf_i386_get_local_sym_hash (htab, input_bfd, rel, + FALSE); if (h == NULL) abort (); @@ -2909,7 +3016,7 @@ } else { - bfd_boolean warned; + bfd_boolean warned ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, @@ -2918,15 +3025,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -3028,7 +3128,7 @@ internal symbol, we have updated addend. */ continue; } - + /* FALLTHROUGH */ case R_386_PC32: case R_386_PLT32: goto do_relocation; @@ -3045,7 +3145,7 @@ /* We can't use h->got.offset here to save state, or even just remember the offset, as finish_dynamic_symbol would use that as offset into .got. */ - + if (htab->elf.splt != NULL) { plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1; @@ -3477,7 +3577,7 @@ xchg %ax,%ax */ bfd_vma roff; - + roff = rel->r_offset; bfd_put_8 (output_bfd, 0x66, contents + roff); bfd_put_8 (output_bfd, 0x90, contents + roff + 1); @@ -3610,7 +3710,7 @@ { Elf_Internal_Rela outrel; bfd_byte *loc; - int dr_type, indx; + int dr_type; asection *sreloc; if (htab->elf.srelgot == NULL) @@ -3939,7 +4039,6 @@ Elf_Internal_Rela outrel; asection *sreloc; bfd_byte *loc; - int indx; outrel.r_offset = rel->r_offset + input_section->output_section->vma @@ -4048,6 +4147,8 @@ struct elf_i386_link_hash_table *htab; htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; if (h->plt.offset != (bfd_vma) -1) { @@ -4092,7 +4193,7 @@ Get the offset into the .got table of the entry that corresponds to this function. Each .got entry is 4 bytes. The first three are reserved. - + For static executables, we don't reserve anything. */ if (plt == htab->elf.splt) @@ -4251,13 +4352,15 @@ } else { + asection *plt; + if (!h->pointer_equality_needed) abort (); /* For non-shared object, we can't use .got.plt, which contains the real function addres if we need pointer equality. We load the GOT entry with the PLT entry. */ - asection *plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt; + plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt; bfd_put_32 (output_bfd, (plt->output_section->vma + plt->output_offset + h->plt.offset), @@ -4365,6 +4468,9 @@ asection *sdyn; htab = elf_i386_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); @@ -4525,6 +4631,13 @@ if (htab->elf.sgotplt) { + if (bfd_is_abs_section (htab->elf.sgotplt->output_section)) + { + (*_bfd_error_handler) + (_("discarded output section: `%A'"), htab->elf.sgotplt); + return FALSE; + } + /* Fill in the first three entries in the global offset table. */ if (htab->elf.sgotplt->size > 0) { @@ -4577,7 +4690,7 @@ file. */ static bfd_boolean -elf_i386_add_symbol_hook (bfd * abfd ATTRIBUTE_UNUSED, +elf_i386_add_symbol_hook (bfd * abfd, struct bfd_link_info * info ATTRIBUTE_UNUSED, Elf_Internal_Sym * sym, const char ** namep ATTRIBUTE_UNUSED, @@ -4585,7 +4698,8 @@ asection ** secp ATTRIBUTE_UNUSED, bfd_vma * valp ATTRIBUTE_UNUSED) { - if (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + if ((abfd->flags & DYNAMIC) == 0 + && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE; return TRUE; @@ -4594,6 +4708,7 @@ #define TARGET_LITTLE_SYM bfd_elf32_i386_vec #define TARGET_LITTLE_NAME "elf32-i386" #define ELF_ARCH bfd_arch_i386 +#define ELF_TARGET_ID I386_ELF_DATA #define ELF_MACHINE_CODE EM_386 #define ELF_MAXPAGESIZE 0x1000 @@ -4675,6 +4790,34 @@ #include "elf32-target.h" +/* Solaris 2. */ + +#undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM bfd_elf32_i386_sol2_vec +#undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf32-i386-sol2" + +/* Restore default: we cannot use ELFOSABI_SOLARIS, otherwise ELFOSABI_NONE + objects won't be recognized. */ +#undef ELF_OSABI + +#undef elf32_bed +#define elf32_bed elf32_i386_sol2_bed + +/* The 32-bit static TLS arena size is rounded to the nearest 8-byte + boundary. */ +#undef elf_backend_static_tls_alignment +#define elf_backend_static_tls_alignment 8 + +/* The Solaris 2 ABI requires a plt symbol on all platforms. + + Cf. Linker and Libraries Guide, Ch. 2, Link-Editor, Generating the Output + File, p.63. */ +#undef elf_backend_want_plt_sym +#define elf_backend_want_plt_sym 1 + +#include "elf32-target.h" + /* VxWorks support. */ #undef TARGET_LITTLE_SYM @@ -4719,6 +4862,7 @@ #undef elf_backend_final_write_processing #define elf_backend_final_write_processing \ elf_vxworks_final_write_processing +#undef elf_backend_static_tls_alignment /* On VxWorks, we emit relocations against _PROCEDURE_LINKAGE_TABLE_, so define it. */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-i860.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-i860.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-i860.c 2007-07-03 14:26:41.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-i860.c 2010-10-25 15:54:14.000000000 +0000 @@ -1129,15 +1129,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-ip2k.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-ip2k.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-ip2k.c 2007-07-03 14:26:41.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-ip2k.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,5 +1,5 @@ /* Ubicom IP2xxx specific support for 32-bit ELF - Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -347,7 +347,7 @@ bfd_byte *contents) { bfd_byte code[4]; - int index = 0; + int table_index = 0; /* Check current page-jmp. */ if (addr + 4 > sec->size) @@ -369,13 +369,13 @@ ip2k_get_mem (abfd, contents + addr - 4, 4, code); if ((IS_ADD_W_WREG_OPCODE (code + 0)) && (IS_ADD_PCL_W_OPCODE (code + 2))) - return index; + return table_index; if ((! IS_PAGE_OPCODE (code + 0)) || (! IS_JMP_OPCODE (code + 2))) return -1; - index++; + table_index++; addr -= 4; } } @@ -427,7 +427,7 @@ bfd_byte *contents) { bfd_byte code[16]; - int index = 0; + int table_index = 0; /* Check current page-jmp. */ if (addr + 4 > sec->size) @@ -454,7 +454,7 @@ && (IS_INC_1SP_OPCODE (code + 10)) && (IS_PAGE_OPCODE (code + 12)) && (IS_JMP_OPCODE (code + 14))) - return index; + return table_index; if ((IS_ADD_W_WREG_OPCODE (code + 2)) && (IS_SNC_OPCODE (code + 4)) @@ -463,13 +463,13 @@ && (IS_SNC_OPCODE (code + 10)) && (IS_INC_1SP_OPCODE (code + 12)) && (IS_JMP_OPCODE (code + 14))) - return index; + return table_index; if ((! IS_PAGE_OPCODE (code + 0)) || (! IS_JMP_OPCODE (code + 2))) return -1; - index++; + table_index++; addr -= 4; } } @@ -577,7 +577,6 @@ Elf_Internal_Shdr *symtab_hdr; Elf_Internal_Sym *isymbuf, *isym, *isymend; unsigned int shndx; - bfd_byte *contents; Elf_Internal_Rela *irel, *irelend, *irelbase; struct elf_link_hash_entry **sym_hashes; struct elf_link_hash_entry **end_hashes; @@ -589,8 +588,6 @@ shndx = _bfd_elf_section_from_bfd_section (abfd, sec); - contents = elf_section_data (sec)->this_hdr.contents; - irelbase = elf_section_data (sec)->relocs; irelend = irelbase + sec->reloc_count; @@ -669,9 +666,7 @@ if (sym_sec == sec) { const char *name; - unsigned long strx; - unsigned char type, other; - unsigned short desc; + unsigned char type; bfd_vma value; bfd_vma baseaddr = BASEADDR (sec); bfd_vma symval = BASEADDR (sym_sec) + isym->st_value @@ -685,10 +680,7 @@ stabp = stabcontents + irel->r_offset - 8; /* Go pullout the stab entry. */ - strx = bfd_h_get_32 (abfd, stabp + STRDXOFF); type = bfd_h_get_8 (abfd, stabp + TYPEOFF); - other = bfd_h_get_8 (abfd, stabp + OTHEROFF); - desc = bfd_h_get_16 (abfd, stabp + DESCOFF); value = bfd_h_get_32 (abfd, stabp + VALOFF); name = bfd_get_stab_name (type); @@ -706,10 +698,7 @@ for (;stabp < stabend; stabp += STABSIZE) { /* Go pullout the stab entry. */ - strx = bfd_h_get_32 (abfd, stabp + STRDXOFF); type = bfd_h_get_8 (abfd, stabp + TYPEOFF); - other = bfd_h_get_8 (abfd, stabp + OTHEROFF); - desc = bfd_h_get_16 (abfd, stabp + DESCOFF); value = bfd_h_get_32 (abfd, stabp + VALOFF); name = bfd_get_stab_name (type); @@ -1089,7 +1078,6 @@ static bfd_boolean new_pass = FALSE; static bfd_boolean changed = FALSE; struct misc misc; - asection *stab; /* Assume nothing changes. */ *again = FALSE; @@ -1122,18 +1110,6 @@ if (internal_relocs == NULL) goto error_return; - /* Make sure the stac.rela stuff gets read in. */ - stab = bfd_get_section_by_name (abfd, ".stab"); - - if (stab) - { - /* So stab does exits. */ - Elf_Internal_Rela * irelbase; - - irelbase = _bfd_elf_link_read_relocs (abfd, stab, NULL, NULL, - link_info->keep_memory); - } - /* Get section contents cached copy if it exists. */ if (contents == NULL) { @@ -1432,7 +1408,7 @@ r_type = ELF32_R_TYPE (rel->r_info); r_symndx = ELF32_R_SYM (rel->r_info); - howto = ip2k_elf_howto_table + ELF32_R_TYPE (rel->r_info); + howto = ip2k_elf_howto_table + r_type; h = NULL; sym = NULL; sec = NULL; @@ -1461,15 +1437,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-iq2000.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-iq2000.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-iq2000.c 2008-07-30 04:34:56.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-iq2000.c 2010-10-25 15:54:14.000000000 +0000 @@ -634,15 +634,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-lm32.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-lm32.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-lm32.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-lm32.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,5 +1,5 @@ /* Lattice Mico32-specific support for 32-bit ELF - Copyright 2008, 2009 Free Software Foundation, Inc. + Copyright 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Jon Beniston This file is part of BFD, the Binary File Descriptor library. @@ -102,7 +102,8 @@ /* Get the lm32 ELF linker hash table from a link_info structure. */ #define lm32_elf_hash_table(p) \ - ((struct elf_lm32_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == LM32_ELF_DATA ? ((struct elf_lm32_link_hash_table *) ((p)->hash)) : NULL) #define lm32fdpic_got_section(info) \ (lm32_elf_hash_table (info)->sgot) @@ -164,7 +165,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, lm32_elf_link_hash_newfunc, - sizeof (struct elf_lm32_link_hash_entry))) + sizeof (struct elf_lm32_link_hash_entry), + LM32_ELF_DATA)) { free (ret); return NULL; @@ -219,10 +221,13 @@ if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0) return TRUE; + htab = lm32_elf_hash_table (info); + if (htab == NULL) + return FALSE; + if (! _bfd_elf_create_got_section (dynobj, info)) return FALSE; - htab = lm32_elf_hash_table (info); htab->sgot = bfd_get_section_by_name (dynobj, ".got"); htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); htab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); @@ -241,7 +246,10 @@ struct elf_lm32_link_hash_table *htab; htab = lm32_elf_hash_table (info); - /* Fixup section for R_LM32_32 relocs */ + if (htab == NULL) + return FALSE; + + /* Fixup section for R_LM32_32 relocs. */ lm32fdpic_fixup32_section (info) = bfd_make_section_with_flags (dynobj, ".rofixup", (SEC_ALLOC @@ -818,18 +826,18 @@ Elf_Internal_Shdr *symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd); Elf_Internal_Rela *rel, *relend; - struct elf_lm32_link_hash_table *htab = lm32_elf_hash_table (info); bfd *dynobj; bfd_vma *local_got_offsets; - asection *sgot, *splt, *sreloc; + asection *sgot; + + if (htab == NULL) + return FALSE; dynobj = htab->root.dynobj; local_got_offsets = elf_local_got_offsets (input_bfd); sgot = htab->sgot; - splt = htab->splt; - sreloc = NULL; symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); @@ -848,7 +856,6 @@ bfd_vma gp; bfd_reloc_status_type r; const char *name = NULL; - asection *osec; r_symndx = ELF32_R_SYM (rel->r_info); r_type = ELF32_R_TYPE (rel->r_info); @@ -867,7 +874,7 @@ { /* It's a local symbol. */ sym = local_syms + r_symndx; - osec = sec = local_sections[r_symndx]; + sec = local_sections[r_symndx]; relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); @@ -883,20 +890,12 @@ r_symndx, symtab_hdr, sym_hashes, h, sec, relocation, unresolved_reloc, warned); - osec = sec; name = h->root.root.string; } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) { @@ -1130,10 +1129,8 @@ if (r != bfd_reloc_ok) { - const char *name; const char *msg = NULL; arelent bfd_reloc; - reloc_howto_type *howto; lm32_info_to_howto_rela (input_bfd, &bfd_reloc, rel); howto = bfd_reloc.howto; @@ -1283,14 +1280,10 @@ const Elf_Internal_Rela *rel_end; struct elf_lm32_link_hash_table *htab; bfd *dynobj; - bfd_vma *local_got_offsets; - asection *sgot, *srelgot, *sreloc; if (info->relocatable) return TRUE; - sgot = srelgot = sreloc = NULL; - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof (Elf32_External_Sym); @@ -1298,8 +1291,10 @@ sym_hashes_end -= symtab_hdr->sh_info; htab = lm32_elf_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->root.dynobj; - local_got_offsets = elf_local_got_offsets (abfd); rel_end = relocs + sec->reloc_count; for (rel = relocs; rel < rel_end; rel++) @@ -1426,6 +1421,9 @@ asection *sgot; htab = lm32_elf_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->root.dynobj; sgot = htab->sgotplt; @@ -1444,7 +1442,6 @@ for (; dyncon < dynconend; dyncon++) { Elf_Internal_Dyn dyn; - const char *name; asection *s; bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn); @@ -1455,11 +1452,9 @@ break; case DT_PLTGOT: - name = ".got"; s = htab->sgot->output_section; goto get_vma; case DT_JMPREL: - name = ".rela.plt"; s = htab->srelplt->output_section; get_vma: BFD_ASSERT (s != NULL); @@ -1601,11 +1596,11 @@ Elf_Internal_Sym *sym) { struct elf_lm32_link_hash_table *htab; - bfd *dynobj; bfd_byte *loc; htab = lm32_elf_hash_table (info); - dynobj = htab->root.dynobj; + if (htab == NULL) + return FALSE; if (h->plt.offset != (bfd_vma) -1) { @@ -1886,6 +1881,9 @@ same memory location for the variable. */ htab = lm32_elf_hash_table (info); + if (htab == NULL) + return FALSE; + s = htab->sdynbss; BFD_ASSERT (s != NULL); @@ -1928,6 +1926,8 @@ info = (struct bfd_link_info *) inf; htab = lm32_elf_hash_table (info); + if (htab == NULL) + return FALSE; eh = (struct elf_lm32_link_hash_entry *) h; @@ -2144,6 +2144,9 @@ bfd *ibfd; htab = lm32_elf_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->root.dynobj; BFD_ASSERT (dynobj != NULL); @@ -2471,6 +2474,8 @@ int ptralign = 2; /* 32bit */ htab = lm32_elf_hash_table (info); + if (htab == NULL) + return FALSE; /* Make sure we have a GOT - For the case where we have a dynamic object but none of the relocs in check_relocs */ @@ -2841,6 +2846,7 @@ #define ELF_ARCH bfd_arch_lm32 +#define ELF_TARGET_ID LM32_ELF_DATA #define ELF_MACHINE_CODE EM_LATTICEMICO32 #define ELF_MAXPAGESIZE 0x1000 diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-m32c.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-m32c.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-m32c.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-m32c.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,5 +1,5 @@ /* M16C/M32C specific support for 32-bit ELF. - Copyright (C) 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -435,15 +435,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) { @@ -1188,7 +1181,7 @@ m32c_offset_for_reloc (bfd *abfd, Elf_Internal_Rela *rel, Elf_Internal_Shdr *symtab_hdr, - Elf_External_Sym_Shndx *shndx_buf, + Elf_External_Sym_Shndx *shndx_buf ATTRIBUTE_UNUSED, Elf_Internal_Sym *intsyms) { bfd_vma symval; @@ -1198,14 +1191,10 @@ { /* A local symbol. */ Elf_Internal_Sym *isym; - Elf_External_Sym_Shndx *shndx; asection *ssec; - isym = intsyms + ELF32_R_SYM (rel->r_info); ssec = bfd_section_from_elf_index (abfd, isym->st_shndx); - shndx = shndx_buf + (shndx_buf ? ELF32_R_SYM (rel->r_info) : 0); - symval = isym->st_value; if (ssec) symval += ssec->output_section->vma @@ -1870,7 +1859,6 @@ bfd_byte *contents; Elf_Internal_Rela *irel; Elf_Internal_Rela *irelend; - Elf_Internal_Rela *irelalign; bfd_vma toaddr; Elf_Internal_Sym *isym; Elf_Internal_Sym *isymend; @@ -1883,9 +1871,6 @@ contents = elf_section_data (sec)->this_hdr.contents; - /* The deletion must stop at the next ALIGN reloc for an aligment - power larger than the number of bytes we are deleting. */ - irelalign = NULL; toaddr = sec->size; irel = elf_section_data (sec)->relocs; @@ -2018,7 +2003,7 @@ #define ELF_ARCH bfd_arch_m32c #define ELF_MACHINE_CODE EM_M32C #define ELF_MACHINE_ALT1 EM_M32C_OLD -#define ELF_MAXPAGESIZE 0x1000 +#define ELF_MAXPAGESIZE 0x100 #if 0 #define TARGET_BIG_SYM bfd_elf32_m32c_vec diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-m32r.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-m32r.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-m32r.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-m32r.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,6 +1,6 @@ /* M32R-specific support for 32-bit ELF. Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -1540,9 +1540,9 @@ /* Get the m32r ELF linker hash table from a link_info structure. */ - #define m32r_elf_hash_table(p) \ - ((struct elf_m32r_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == M32R_ELF_DATA ? ((struct elf_m32r_link_hash_table *) ((p)->hash)) : NULL) /* Create an entry in an m32r ELF linker hash table. */ @@ -1591,7 +1591,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, m32r_elf_link_hash_newfunc, - sizeof (struct elf_m32r_link_hash_entry))) + sizeof (struct elf_m32r_link_hash_entry), + M32R_ELF_DATA)) { free (ret); return NULL; @@ -1621,6 +1622,9 @@ return FALSE; htab = m32r_elf_hash_table (info); + if (htab == NULL) + return FALSE; + htab->sgot = bfd_get_section_by_name (dynobj, ".got"); htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); htab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); @@ -1642,6 +1646,8 @@ int ptralign = 2; /* 32bit */ htab = m32r_elf_hash_table (info); + if (htab == NULL) + return FALSE; /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and .rel[a].bss sections. */ @@ -1934,6 +1940,9 @@ same memory location for the variable. */ htab = m32r_elf_hash_table (info); + if (htab == NULL) + return FALSE; + s = htab->sdynbss; BFD_ASSERT (s != NULL); @@ -1976,6 +1985,8 @@ info = (struct bfd_link_info *) inf; htab = m32r_elf_hash_table (info); + if (htab == NULL) + return FALSE; eh = (struct elf_m32r_link_hash_entry *) h; @@ -2196,6 +2207,9 @@ #endif htab = m32r_elf_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->root.dynobj; BFD_ASSERT (dynobj != NULL); @@ -2434,13 +2448,15 @@ Elf_Internal_Rela *rel, *relend; /* Assume success. */ bfd_boolean ret = TRUE; - struct elf_m32r_link_hash_table *htab = m32r_elf_hash_table (info); bfd *dynobj; bfd_vma *local_got_offsets; asection *sgot, *splt, *sreloc; bfd_vma high_address = bfd_get_section_limit (input_bfd, input_section); + if (htab == NULL) + return FALSE; + dynobj = htab->root.dynobj; local_got_offsets = elf_local_got_offsets (input_bfd); @@ -2610,15 +2626,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable && !use_rel) { @@ -2881,7 +2890,7 @@ case R_M32R_HI16_ULO_RELA: case R_M32R_LO16_RELA: if (info->shared - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0 && (( r_type != R_M32R_10_PCREL_RELA && r_type != R_M32R_18_PCREL_RELA @@ -3137,7 +3146,6 @@ Elf_Internal_Sym *sym) { struct elf_m32r_link_hash_table *htab; - bfd *dynobj; bfd_byte *loc; #ifdef DEBUG_PIC @@ -3145,7 +3153,8 @@ #endif htab = m32r_elf_hash_table (info); - dynobj = htab->root.dynobj; + if (htab == NULL) + return FALSE; if (h->plt.offset != (bfd_vma) -1) { @@ -3347,6 +3356,9 @@ #endif htab = m32r_elf_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->root.dynobj; sgot = htab->sgotplt; @@ -3365,7 +3377,6 @@ for (; dyncon < dynconend; dyncon++) { Elf_Internal_Dyn dyn; - const char *name; asection *s; bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn); @@ -3376,11 +3387,9 @@ break; case DT_PLTGOT: - name = ".got"; s = htab->sgot->output_section; goto get_vma; case DT_JMPREL: - name = ".rela.plt"; s = htab->srelplt->output_section; get_vma: BFD_ASSERT (s != NULL); @@ -3752,20 +3761,20 @@ const Elf_Internal_Rela *rel_end; struct elf_m32r_link_hash_table *htab; bfd *dynobj; - bfd_vma *local_got_offsets; - asection *sgot, *srelgot, *sreloc; + asection *sreloc; if (info->relocatable) return TRUE; - sgot = srelgot = sreloc = NULL; - + sreloc = NULL; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); htab = m32r_elf_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->root.dynobj; - local_got_offsets = elf_local_got_offsets (abfd); rel_end = relocs + sec->reloc_count; for (rel = relocs; rel < rel_end; rel++) @@ -4018,43 +4027,6 @@ { NULL, 0, 0, 0, 0 } }; -static bfd_boolean -m32r_elf_fake_sections (bfd *abfd, - Elf_Internal_Shdr *hdr ATTRIBUTE_UNUSED, - asection *sec) -{ - const char *name; - - name = bfd_get_section_name (abfd, sec); - - /* The generic elf_fake_sections will set up REL_HDR using the - default kind of relocations. But, we may actually need both - kinds of relocations, so we set up the second header here. - - This is not necessary for the O32 ABI since that only uses Elf32_Rel - relocations (cf. System V ABI, MIPS RISC Processor Supplement, - 3rd Edition, p. 4-17). It breaks the IRIX 5/6 32-bit ld, since one - of the resulting empty .rela.
sections starts with - sh_offset == object size, and ld doesn't allow that. While the check - is arguably bogus for empty or SHT_NOBITS sections, it can easily be - avoided by not emitting those useless sections in the first place. */ - if ((sec->flags & SEC_RELOC) != 0) - { - struct bfd_elf_section_data *esd; - bfd_size_type amt = sizeof (Elf_Internal_Shdr); - - esd = elf_section_data (sec); - BFD_ASSERT (esd->rel_hdr2 == NULL); - esd->rel_hdr2 = bfd_zalloc (abfd, amt); - if (!esd->rel_hdr2) - return FALSE; - _bfd_elf_init_reloc_shdr (abfd, esd->rel_hdr2, sec, - !sec->use_rela_p); - } - - return TRUE; -} - static enum elf_reloc_type_class m32r_elf_reloc_type_class (const Elf_Internal_Rela *rela) { @@ -4068,6 +4040,7 @@ } #define ELF_ARCH bfd_arch_m32r +#define ELF_TARGET_ID M32R_ELF_DATA #define ELF_MACHINE_CODE EM_M32R #define ELF_MACHINE_ALT1 EM_CYGNUS_M32R #define ELF_MAXPAGESIZE 0x1 /* Explicitly requested by Mitsubishi. */ @@ -4115,7 +4088,6 @@ #else #define elf_backend_default_use_rela_p 1 #define elf_backend_may_use_rela_p 1 -#define elf_backend_fake_sections m32r_elf_fake_sections #endif #define elf_backend_object_p m32r_elf_object_p diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-m68hc11.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-m68hc11.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-m68hc11.c 2007-07-03 14:26:41.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-m68hc11.c 2010-08-25 14:53:42.000000000 +0000 @@ -1,5 +1,5 @@ /* Motorola 68HC11-specific support for 32-bit ELF - Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2010 Free Software Foundation, Inc. Contributed by Stephane Carrez (stcarrez@nerim.fr) (Heavily copied from the D10V port by Martin Hunt (hunt@cygnus.com)) @@ -409,6 +409,8 @@ info = (struct bfd_link_info *) in_arg; htab = m68hc11_elf_hash_table (info); + if (htab == NULL) + return FALSE; stub_sec = stub_entry->stub_sec; @@ -674,7 +676,6 @@ struct bfd_link_info *link_info, bfd_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,7 +700,6 @@ return TRUE; 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_elf_link_read_relocs @@ -1285,6 +1285,7 @@ }; #define ELF_ARCH bfd_arch_m68hc11 +#define ELF_TARGET_ID M68HC11_ELF_DATA #define ELF_MACHINE_CODE EM_68HC11 #define ELF_MAXPAGESIZE 0x1000 diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-m68hc12.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-m68hc12.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-m68hc12.c 2007-07-03 14:26:41.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-m68hc12.c 2010-08-25 14:53:42.000000000 +0000 @@ -564,6 +564,7 @@ }; #define ELF_ARCH bfd_arch_m68hc12 +#define ELF_TARGET_ID M68HC11_ELF_DATA #define ELF_MACHINE_CODE EM_68HC12 #define ELF_MAXPAGESIZE 0x1000 diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-m68hc1x.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-m68hc1x.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-m68hc1x.c 2009-06-18 14:18:29.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-m68hc1x.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,6 +1,6 @@ /* Motorola 68HC11/HC12-specific support for 32-bit ELF Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. Contributed by Stephane Carrez (stcarrez@nerim.fr) This file is part of BFD, the Binary File Descriptor library. @@ -74,7 +74,8 @@ memset (ret, 0, amt); if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, _bfd_elf_link_hash_newfunc, - sizeof (struct elf_link_hash_entry))) + sizeof (struct elf_link_hash_entry), + M68HC11_ELF_DATA)) { free (ret); return NULL; @@ -232,6 +233,8 @@ struct m68hc11_elf_link_hash_table *htab; htab = m68hc11_elf_hash_table (info); + if (htab == NULL) + return -1; if (bfd_get_flavour (info->output_bfd) != bfd_target_elf_flavour) return 0; @@ -320,9 +323,11 @@ unsigned int bfd_indx, bfd_count; bfd_size_type amt; asection *stub_sec; - struct m68hc11_elf_link_hash_table *htab = m68hc11_elf_hash_table (info); + if (htab == NULL) + return FALSE; + /* Stash our params away. */ htab->stub_bfd = stub_bfd; htab->add_stub_section = add_stub_section; @@ -331,9 +336,7 @@ for (input_bfd = info->input_bfds, bfd_count = 0; input_bfd != NULL; input_bfd = input_bfd->link_next) - { - bfd_count += 1; - } + bfd_count += 1; /* We want to read in symbol extension records only once. To do this we need to read in the local symbols in parallel and save them for @@ -379,7 +382,6 @@ input_bfd = input_bfd->link_next, bfd_indx++) { Elf_Internal_Shdr *symtab_hdr; - Elf_Internal_Sym *local_syms; struct elf_link_hash_entry ** sym_hashes; sym_hashes = elf_sym_hashes (input_bfd); @@ -568,6 +570,8 @@ info = (struct bfd_link_info *) in_arg; htab = m68hc11_elf_hash_table (info); + if (htab == NULL) + return FALSE; /* Massage our args to the form they really have. */ stub_entry = (struct elf32_m68hc11_stub_hash_entry *) gen_entry; @@ -629,6 +633,8 @@ m68hc11_elf_get_bank_parameters (info); htab = m68hc11_elf_hash_table (info); + if (htab == NULL) + return FALSE; for (stub_sec = htab->stub_bfd->sections; stub_sec != NULL; @@ -678,8 +684,13 @@ unsigned i; struct m68hc11_page_info *pinfo; struct bfd_link_hash_entry *h; + struct m68hc11_elf_link_hash_table *htab; - pinfo = &m68hc11_elf_hash_table (info)->pinfo; + htab = m68hc11_elf_hash_table (info); + if (htab == NULL) + return; + + pinfo = & htab->pinfo; if (pinfo->bank_param_initialized) return; @@ -892,16 +903,22 @@ const char *name = NULL; struct m68hc11_page_info *pinfo; const struct elf_backend_data * const ebd = get_elf_backend_data (input_bfd); + struct m68hc11_elf_link_hash_table *htab; symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); + htab = m68hc11_elf_hash_table (info); + if (htab == NULL) + return FALSE; + /* Get memory bank parameters. */ m68hc11_elf_get_bank_parameters (info); - pinfo = &m68hc11_elf_hash_table (info)->pinfo; + pinfo = & htab->pinfo; rel = relocs; relend = relocs + input_section->reloc_count; + for (; rel < relend; rel++) { int r_type; @@ -918,7 +935,6 @@ bfd_vma insn_page; bfd_boolean is_far = FALSE; struct elf_link_hash_entry *h; - const char* stub_name = 0; r_symndx = ELF32_R_SYM (rel->r_info); r_type = ELF32_R_TYPE (rel->r_info); @@ -941,10 +957,6 @@ + sec->output_offset + sym->st_value); is_far = (sym && (sym->st_other & STO_M68HC12_FAR)); - if (is_far) - stub_name = (bfd_elf_string_from_elf_section - (input_bfd, symtab_hdr->sh_link, - sym->st_name)); } else { @@ -956,19 +968,11 @@ warned); is_far = (h && (h->other & STO_M68HC12_FAR)); - stub_name = h->root.root.string; } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) { @@ -994,9 +998,7 @@ if (is_far && ELF32_R_TYPE (rel->r_info) == R_M68HC11_16) { struct elf32_m68hc11_stub_hash_entry* stub; - struct m68hc11_elf_link_hash_table *htab; - htab = m68hc11_elf_hash_table (info); stub = m68hc12_stub_hash_lookup (htab->stub_hash_table, name, FALSE, FALSE); if (stub) @@ -1321,15 +1323,22 @@ elf32_m68hc11_post_process_headers (bfd *abfd, struct bfd_link_info *link_info) { struct m68hc11_scan_param param; + struct m68hc11_elf_link_hash_table *htab; + + if (link_info == NULL) + return; - if (link_info == 0) + htab = m68hc11_elf_hash_table (link_info); + if (htab == NULL) return; m68hc11_elf_get_bank_parameters (link_info); param.use_memory_banks = FALSE; - param.pinfo = &m68hc11_elf_hash_table (link_info)->pinfo; + param.pinfo = & htab->pinfo; + bfd_map_over_sections (abfd, scan_sections_for_abi, ¶m); + if (param.use_memory_banks) { Elf_Internal_Ehdr * i_ehdrp; @@ -1338,4 +1347,3 @@ i_ehdrp->e_flags |= E_M68HC12_BANKS; } } - diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-m68hc1x.h crash-6.1.6/=unpacked-tar1=/bfd/elf32-m68hc1x.h --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-m68hc1x.h 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-m68hc1x.h 2010-02-04 09:16:39.000000000 +0000 @@ -1,5 +1,6 @@ /* Motorola 68HC11/68HC12-specific support for 32-bit ELF - Copyright 2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. + Copyright 2003, 2004, 2005, 2006, 2007, 2009, 2010 + Free Software Foundation, Inc. Contributed by Stephane Carrez (stcarrez@nerim.fr) This file is part of BFD, the Binary File Descriptor library. @@ -42,8 +43,8 @@ The trampoline is used when a pointer to a far function is used. It takes care of installing the proper memory bank as well as creating the 'call/rtc' calling convention. */ -struct elf32_m68hc11_stub_hash_entry { - +struct elf32_m68hc11_stub_hash_entry +{ /* Base hash table entry structure. */ struct bfd_hash_entry root; @@ -83,9 +84,8 @@ less or equal to the page size) For 68HC12, the window is at 0x8000 and the page size is 16K (full window). - For 68HC11 this is board specific (implemented by external hardware). + For 68HC11 this is board specific (implemented by external hardware). */ -*/ struct m68hc11_page_info { bfd_vma bank_virtual; @@ -113,7 +113,7 @@ asection* tramp_section; /* Linker call-backs. */ - asection * (*add_stub_section) PARAMS ((const char *, asection *)); + asection * (*add_stub_section) (const char *, asection *); /* Assorted information used by elf32_hppa_size_stubs. */ unsigned int bfd_count; @@ -123,14 +123,15 @@ /* Small local sym cache. */ struct sym_cache sym_cache; - bfd_boolean (* size_one_stub) PARAMS((struct bfd_hash_entry*, void*)); - bfd_boolean (* build_one_stub) PARAMS((struct bfd_hash_entry*, void*)); + bfd_boolean (* size_one_stub) (struct bfd_hash_entry*, void*); + bfd_boolean (* build_one_stub) (struct bfd_hash_entry*, void*); }; /* Get the Sparc64 ELF linker hash table from a link_info structure. */ #define m68hc11_elf_hash_table(p) \ - ((struct m68hc11_elf_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == M68HC11_ELF_DATA ? ((struct m68hc11_elf_link_hash_table *) ((p)->hash)) : NULL) /* Create a 68HC11/68HC12 ELF linker hash table. */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-m68k.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-m68k.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-m68k.c 2009-09-07 16:29:34.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-m68k.c 2011-02-22 15:46:13.000000000 +0000 @@ -1,6 +1,6 @@ /* Motorola 68k series support for 32-bit ELF Copyright 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -469,6 +469,7 @@ #define bfd_elf32_bfd_reloc_type_lookup reloc_type_lookup #define bfd_elf32_bfd_reloc_name_lookup reloc_name_lookup #define ELF_ARCH bfd_arch_m68k +#define ELF_TARGET_ID M68K_ELF_DATA /* Functions for the m68k ELF linker. */ @@ -937,7 +938,8 @@ /* Get the m68k ELF linker hash table from a link_info structure. */ #define elf_m68k_hash_table(p) \ - ((struct elf_m68k_link_hash_table *) (p)->hash) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == M68K_ELF_DATA ? ((struct elf_m68k_link_hash_table *) ((p)->hash)) : NULL) /* Shortcut to multi-GOT data. */ #define elf_m68k_multi_got(INFO) (&elf_m68k_hash_table (INFO)->multi_got_) @@ -945,10 +947,9 @@ /* Create an entry in an m68k ELF linker hash table. */ static struct bfd_hash_entry * -elf_m68k_link_hash_newfunc (entry, table, string) - struct bfd_hash_entry *entry; - struct bfd_hash_table *table; - const char *string; +elf_m68k_link_hash_newfunc (struct bfd_hash_entry *entry, + struct bfd_hash_table *table, + const char *string) { struct bfd_hash_entry *ret = entry; @@ -975,8 +976,7 @@ /* Create an m68k ELF linker hash table. */ static struct bfd_link_hash_table * -elf_m68k_link_hash_table_create (abfd) - bfd *abfd; +elf_m68k_link_hash_table_create (bfd *abfd) { struct elf_m68k_link_hash_table *ret; bfd_size_type amt = sizeof (struct elf_m68k_link_hash_table); @@ -987,7 +987,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, elf_m68k_link_hash_newfunc, - sizeof (struct elf_m68k_link_hash_entry))) + sizeof (struct elf_m68k_link_hash_entry), + M68K_ELF_DATA)) { free (ret); return NULL; @@ -1080,7 +1081,68 @@ return TRUE; } +/* Somewhat reverse of elf32_m68k_object_p, this sets the e_flag + field based on the machine number. */ + +static void +elf_m68k_final_write_processing (bfd *abfd, + bfd_boolean linker ATTRIBUTE_UNUSED) +{ + int mach = bfd_get_mach (abfd); + unsigned long e_flags = elf_elfheader (abfd)->e_flags; + + if (!e_flags) + { + unsigned int arch_mask; + + arch_mask = bfd_m68k_mach_to_features (mach); + + if (arch_mask & m68000) + e_flags = EF_M68K_M68000; + else if (arch_mask & cpu32) + e_flags = EF_M68K_CPU32; + else if (arch_mask & fido_a) + e_flags = EF_M68K_FIDO; + else + { + switch (arch_mask + & (mcfisa_a | mcfisa_aa | mcfisa_b | mcfisa_c | mcfhwdiv | mcfusp)) + { + case mcfisa_a: + e_flags |= EF_M68K_CF_ISA_A_NODIV; + break; + case mcfisa_a | mcfhwdiv: + e_flags |= EF_M68K_CF_ISA_A; + break; + case mcfisa_a | mcfisa_aa | mcfhwdiv | mcfusp: + e_flags |= EF_M68K_CF_ISA_A_PLUS; + break; + case mcfisa_a | mcfisa_b | mcfhwdiv: + e_flags |= EF_M68K_CF_ISA_B_NOUSP; + break; + case mcfisa_a | mcfisa_b | mcfhwdiv | mcfusp: + e_flags |= EF_M68K_CF_ISA_B; + break; + case mcfisa_a | mcfisa_c | mcfhwdiv | mcfusp: + e_flags |= EF_M68K_CF_ISA_C; + break; + case mcfisa_a | mcfisa_c | mcfusp: + e_flags |= EF_M68K_CF_ISA_C_NODIV; + break; + } + if (arch_mask & mcfmac) + e_flags |= EF_M68K_CF_MAC; + else if (arch_mask & mcfemac) + e_flags |= EF_M68K_CF_EMAC; + if (arch_mask & cfloat) + e_flags |= EF_M68K_CF_FLOAT | EF_M68K_CFV4E; + } + elf_elfheader (abfd)->e_flags = e_flags; + } +} + /* Keep m68k-specific flags in the ELF header. */ + static bfd_boolean elf32_m68k_set_private_flags (abfd, flags) bfd *abfd; @@ -1232,6 +1294,9 @@ case EF_M68K_CF_EMAC: mac = "emac"; break; + case EF_M68K_CF_EMAC_B: + mac = "emac_b"; + break; } if (mac) fprintf (file, " [%s]", mac); @@ -2907,8 +2972,6 @@ struct elf_link_hash_entry **sym_hashes; const Elf_Internal_Rela *rel, *relend; bfd *dynobj; - asection *sgot; - asection *srelgot; struct elf_m68k_got *got; if (info->relocatable) @@ -2920,9 +2983,6 @@ symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); - - sgot = bfd_get_section_by_name (dynobj, ".got"); - srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); got = NULL; relend = relocs + sec->reloc_count; @@ -3656,15 +3716,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -3974,7 +4027,7 @@ case R_68K_PC16: case R_68K_PC32: if (info->shared - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0 && (h == NULL || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT @@ -4109,7 +4162,7 @@ return FALSE; } - if (r_symndx != 0 + if (r_symndx != STN_UNDEF && r_type != R_68K_NONE && (h == NULL || h->root.type == bfd_link_hash_defined @@ -4337,6 +4390,11 @@ break; case R_68K_TLS_GD32: + /* The value for this relocation is actually put in + the second GOT slot. */ + relocation = bfd_get_signed_32 (output_bfd, + (sgot->contents + + got_entry_offset + 4)); relocation += dtpoff_base (info); break; @@ -4686,34 +4744,44 @@ bfd_elf_m68k_set_target_options (struct bfd_link_info *info, int got_handling) { struct elf_m68k_link_hash_table *htab; - - htab = elf_m68k_hash_table (info); + bfd_boolean use_neg_got_offsets_p; + bfd_boolean allow_multigot_p; + bfd_boolean local_gp_p; switch (got_handling) { case 0: /* --got=single. */ - htab->local_gp_p = FALSE; - htab->use_neg_got_offsets_p = FALSE; - htab->allow_multigot_p = FALSE; + local_gp_p = FALSE; + use_neg_got_offsets_p = FALSE; + allow_multigot_p = FALSE; break; case 1: /* --got=negative. */ - htab->local_gp_p = TRUE; - htab->use_neg_got_offsets_p = TRUE; - htab->allow_multigot_p = FALSE; + local_gp_p = TRUE; + use_neg_got_offsets_p = TRUE; + allow_multigot_p = FALSE; break; case 2: /* --got=multigot. */ - htab->local_gp_p = TRUE; - htab->use_neg_got_offsets_p = TRUE; - htab->allow_multigot_p = TRUE; + local_gp_p = TRUE; + use_neg_got_offsets_p = TRUE; + allow_multigot_p = TRUE; break; default: BFD_ASSERT (FALSE); + return; + } + + htab = elf_m68k_hash_table (info); + if (htab != NULL) + { + htab->local_gp_p = local_gp_p; + htab->use_neg_got_offsets_p = use_neg_got_offsets_p; + htab->allow_multigot_p = allow_multigot_p; } } @@ -4764,6 +4832,7 @@ elf_m68k_adjust_dynamic_symbol #define elf_backend_size_dynamic_sections \ elf_m68k_size_dynamic_sections +#define elf_backend_final_write_processing elf_m68k_final_write_processing #define elf_backend_init_index_section _bfd_elf_init_1_index_section #define elf_backend_relocate_section elf_m68k_relocate_section #define elf_backend_finish_dynamic_symbol \ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-mcore.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-mcore.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-mcore.c 2007-09-28 08:43:45.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-mcore.c 2010-10-25 15:54:14.000000000 +0000 @@ -467,15 +467,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-mep.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-mep.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-mep.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-mep.c 2011-01-14 12:35:56.000000000 +0000 @@ -1,6 +1,6 @@ /* MeP-specific support for 32-bit ELF. - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010, 2011 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -154,13 +154,14 @@ default: /* Pacify gcc -Wall. */ - fprintf (stderr, "mep: no reloc for code %d\n", code); + (*_bfd_error_handler) (_("mep: no reloc for code %d"), code); return NULL; } if (mep_elf_howto_table[type].type != type) { - fprintf (stderr, "MeP: howto %d has type %d\n", type, mep_elf_howto_table[type].type); + (*_bfd_error_handler) (_("MeP: howto %d has type %d"), + type, mep_elf_howto_table[type].type); abort (); } @@ -500,15 +501,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-microblaze.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-microblaze.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-microblaze.c 2009-08-07 17:10:43.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-microblaze.c 2010-10-04 14:13:09.000000000 +0000 @@ -1,6 +1,6 @@ /* Xilinx MicroBlaze-specific support for 32-bit ELF - Copyright 2009 Free Software Foundation, Inc. + Copyright 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -576,7 +576,8 @@ /* Get the ELF linker hash table from a link_info structure. */ #define elf32_mb_hash_table(p) \ - ((struct elf32_mb_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == MICROBLAZE_ELF_DATA ? ((struct elf32_mb_link_hash_table *) ((p)->hash)) : NULL) /* Create an entry in a microblaze ELF linker hash table. */ @@ -621,7 +622,8 @@ return NULL; if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc, - sizeof (struct elf32_mb_link_hash_entry))) + sizeof (struct elf32_mb_link_hash_entry), + MICROBLAZE_ELF_DATA)) { free (ret); return NULL; @@ -709,6 +711,9 @@ microblaze_elf_howto_init (); htab = elf32_mb_hash_table (info); + if (htab == NULL) + return FALSE; + local_got_offsets = elf_local_got_offsets (input_bfd); sreloc = elf_section_data (input_section)->sreloc; @@ -1062,10 +1067,10 @@ case (int) R_MICROBLAZE_64: case (int) R_MICROBLAZE_32: { - /* r_symndx will be zero only for relocs against symbols + /* r_symndx will be STN_UNDEF (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 == STN_UNDEF || (input_section->flags & SEC_ALLOC) == 0) { relocation += addend; if (r_type == R_MICROBLAZE_32) @@ -1104,7 +1109,7 @@ { Elf_Internal_Rela outrel; bfd_byte *loc; - bfd_boolean skip, relocate = FALSE; + bfd_boolean skip; /* When generating a shared object, these relocations are copied into the output file to be resolved at run @@ -1120,7 +1125,7 @@ if (outrel.r_offset == (bfd_vma) -1) skip = TRUE; else if (outrel.r_offset == (bfd_vma) -2) - skip = TRUE, relocate = TRUE; + skip = TRUE; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -1284,7 +1289,7 @@ bfd_byte *free_contents = NULL; int rel_count; unsigned int shndx; - int i, index; + int i, sym_index; asection *o; struct elf_link_hash_entry *sym_hash; Elf_Internal_Sym *isymbuf, *isymend; @@ -1319,8 +1324,7 @@ 0, NULL, NULL, NULL); BFD_ASSERT (isymbuf != NULL); - internal_relocs = _bfd_elf_link_read_relocs - (abfd, sec, NULL, NULL, link_info->keep_memory); + internal_relocs = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL, link_info->keep_memory); if (internal_relocs == NULL) goto error_return; if (! link_info->keep_memory) @@ -1364,7 +1368,6 @@ if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info) { /* A local symbol. */ - Elf_Internal_Sym *isym; asection *sym_sec; isym = isymbuf + ELF32_R_SYM (irel->r_info); @@ -1464,7 +1467,6 @@ range to be adjusted, and hence must be changed. */ if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info) { - Elf_Internal_Sym *isym; isym = isymbuf + ELF32_R_SYM (irel->r_info); /* Only handle relocs against .text. */ if (isym->st_shndx == shndx @@ -1507,7 +1509,7 @@ /* Look through all other sections. */ for (o = abfd->sections; o != NULL; o = o->next) { - Elf_Internal_Rela *internal_relocs; + Elf_Internal_Rela *irelocs; Elf_Internal_Rela *irelscan, *irelscanend; bfd_byte *ocontents; @@ -1519,13 +1521,13 @@ /* We always cache the relocs. Perhaps, if info->keep_memory is FALSE, we should free them, if we are permitted to. */ - internal_relocs = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL, TRUE); - if (internal_relocs == NULL) + irelocs = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL, TRUE); + if (irelocs == NULL) goto error_return; ocontents = NULL; - irelscanend = internal_relocs + o->reloc_count; - for (irelscan = internal_relocs; irelscan < irelscanend; irelscan++) + irelscanend = irelocs + o->reloc_count; + for (irelscan = irelocs; irelscan < irelscanend; irelscan++) { if (ELF32_R_TYPE (irelscan->r_info) == (int) R_MICROBLAZE_32) { @@ -1745,9 +1747,9 @@ /* Now adjust the global symbols defined in this section. */ isym = isymbuf + symtab_hdr->sh_info; isymend = isymbuf + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)); - for (index = 0; isym < isymend; isym++, index++) + for (sym_index = 0; isym < isymend; isym++, sym_index++) { - sym_hash = elf_sym_hashes (abfd)[index]; + sym_hash = elf_sym_hashes (abfd)[sym_index]; if (isym->st_shndx == shndx && (sym_hash->root.type == bfd_link_hash_defined || sym_hash->root.type == bfd_link_hash_defweak) @@ -1822,38 +1824,20 @@ static asection * microblaze_elf_gc_mark_hook (asection *sec, - struct bfd_link_info * info ATTRIBUTE_UNUSED, + struct bfd_link_info * info, 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_MICROBLAZE_GNU_VTINHERIT: - case R_MICROBLAZE_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; + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_MICROBLAZE_GNU_VTINHERIT: + case R_MICROBLAZE_GNU_VTENTRY: + return NULL; + } - default: - break; - } - } - } - else - return bfd_section_from_elf_index (sec->owner, sym->st_shndx); - - return NULL; + return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym); } /* Update the got entry reference counts for the section being removed. */ @@ -1888,6 +1872,9 @@ if (! _bfd_elf_create_got_section (dynobj, info)) return FALSE; htab = elf32_mb_hash_table (info); + if (htab == NULL) + return FALSE; + htab->sgot = bfd_get_section_by_name (dynobj, ".got"); htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); if (!htab->sgot || !htab->sgotplt) @@ -1920,14 +1907,15 @@ const Elf_Internal_Rela * rel; const Elf_Internal_Rela * rel_end; struct elf32_mb_link_hash_table *htab; - bfd_vma *local_got_offsets; asection *sreloc = NULL; if (info->relocatable) return TRUE; htab = elf32_mb_hash_table (info); - local_got_offsets = elf_local_got_offsets (abfd); + if (htab == NULL) + return FALSE; + symtab_hdr = & elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); sym_hashes_end = sym_hashes + symtab_hdr->sh_size / sizeof (Elf32_External_Sym); @@ -2072,7 +2060,7 @@ const char *name; bfd *dynobj; unsigned int strndx = elf_elfheader (abfd)->e_shstrndx; - unsigned int shnam = elf_section_data (sec)->rel_hdr.sh_name; + unsigned int shnam = _bfd_elf_single_rel_hdr (sec)->sh_name; name = bfd_elf_string_from_elf_section (abfd, strndx, shnam); if (name == NULL) @@ -2169,6 +2157,9 @@ struct elf32_mb_link_hash_table *htab; htab = elf32_mb_hash_table (info); + if (htab == NULL) + return FALSE; + if (!htab->sgot && !create_got_section (dynobj, info)) return FALSE; @@ -2249,6 +2240,8 @@ bfd *dynobj; htab = elf32_mb_hash_table (info); + if (htab == NULL) + return FALSE; /* If this is a function, put it in the procedure linkage table. We will fill in the contents of the procedure linkage table later, @@ -2397,6 +2390,8 @@ info = (struct bfd_link_info *) dat; htab = elf32_mb_hash_table (info); + if (htab == NULL) + return FALSE; if (htab->elf.dynamic_sections_created && h->plt.refcount > 0) @@ -2559,6 +2554,9 @@ bfd *ibfd; htab = elf32_mb_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; BFD_ASSERT (dynobj != NULL); @@ -2747,11 +2745,11 @@ struct elf_link_hash_entry *h, Elf_Internal_Sym *sym) { - bfd *dynobj; struct elf32_mb_link_hash_table *htab; htab = elf32_mb_hash_table (info); - dynobj = htab->elf.dynobj; + if (htab == NULL) + return FALSE; if (h->plt.offset != (bfd_vma) -1) { @@ -2909,6 +2907,9 @@ struct elf32_mb_link_hash_table *htab; htab = elf32_mb_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); @@ -3025,6 +3026,7 @@ #define TARGET_BIG_NAME "elf32-microblaze" #define ELF_ARCH bfd_arch_microblaze +#define ELF_TARGET_ID MICROBLAZE_ELF_DATA #define ELF_MACHINE_CODE EM_MICROBLAZE #define ELF_MACHINE_ALT1 EM_MICROBLAZE_OLD #define ELF_MAXPAGESIZE 0x4 /* 4k, if we ever have 'em. */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-mips.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-mips.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-mips.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-mips.c 2010-12-31 11:00:52.000000000 +0000 @@ -1422,8 +1422,7 @@ when we do the relocation, because the symbol manipulations done by the linker may cause us to lose track of the input BFD. */ if (((*cache_ptr->sym_ptr_ptr)->flags & BSF_SECTION_SYM) != 0 - && (r_type == (unsigned int) R_MIPS_GPREL16 - || r_type == (unsigned int) R_MIPS_LITERAL)) + && (gprel16_reloc_p (r_type) || r_type == (unsigned int) R_MIPS_LITERAL)) cache_ptr->addend = elf_gp (abfd); } @@ -1507,7 +1506,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -1606,6 +1605,7 @@ }; #define ELF_ARCH bfd_arch_mips +#define ELF_TARGET_ID MIPS_ELF_DATA #define ELF_MACHINE_CODE EM_MIPS #define elf_backend_collect TRUE @@ -1677,7 +1677,6 @@ #define bfd_elf32_set_section_contents _bfd_mips_elf_set_section_contents #define bfd_elf32_bfd_get_relocated_section_contents \ _bfd_elf_mips_get_relocated_section_contents -#define bfd_elf32_mkobject _bfd_mips_elf_mkobject #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 @@ -1726,6 +1725,37 @@ /* Include the target file again for this target. */ #include "elf32-target.h" +/* FreeBSD support. */ + +#undef TARGET_LITTLE_SYM +#undef TARGET_LITTLE_NAME +#undef TARGET_BIG_SYM +#undef TARGET_BIG_NAME + +#define TARGET_LITTLE_SYM bfd_elf32_tradlittlemips_freebsd_vec +#define TARGET_LITTLE_NAME "elf32-tradlittlemips-freebsd" +#define TARGET_BIG_SYM bfd_elf32_tradbigmips_freebsd_vec +#define TARGET_BIG_NAME "elf32-tradbigmips-freebsd" + +#undef ELF_OSABI +#define ELF_OSABI ELFOSABI_FREEBSD + +/* The kernel recognizes executables as valid only if they carry a + "FreeBSD" label in the ELF header. So we put this label on all + executables and (for simplicity) also all other object files. */ + +static void +elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) +{ + _bfd_elf_set_osabi (abfd, info); +} + +#undef elf_backend_post_process_headers +#define elf_backend_post_process_headers elf_fbsd_post_process_headers +#undef elf32_bed +#define elf32_bed elf32_fbsd_tradbed + +#include "elf32-target.h" /* Implement elf_backend_final_write_processing for VxWorks. */ static void diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-moxie.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-moxie.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-moxie.c 2009-06-11 11:27:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-moxie.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,5 +1,5 @@ /* moxie-specific support for 32-bit ELF. - Copyright 2009 Free Software Foundation, Inc. + Copyright 2009, 2010 Free Software Foundation, Inc. Copied from elf32-fr30.c which is.. Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 @@ -222,10 +222,8 @@ int r_type; r_type = ELF32_R_TYPE (rel->r_info); - r_symndx = ELF32_R_SYM (rel->r_info); - - howto = moxie_elf_howto_table + ELF32_R_TYPE (rel->r_info); + howto = moxie_elf_howto_table + r_type; h = NULL; sym = NULL; sec = NULL; @@ -253,15 +251,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-msp430.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-msp430.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-msp430.c 2007-09-28 08:43:45.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-msp430.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,5 +1,5 @@ /* MSP430-specific support for 32-bit ELF - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 + Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2010 Free Software Foundation, Inc. Contributed by Dmitry Diky @@ -429,7 +429,7 @@ r_type = ELF32_R_TYPE (rel->r_info); r_symndx = ELF32_R_SYM (rel->r_info); - howto = elf_msp430_howto_table + ELF32_R_TYPE (rel->r_info); + howto = elf_msp430_howto_table + r_type; h = NULL; sym = NULL; sec = NULL; @@ -455,15 +455,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -841,7 +834,6 @@ bfd_byte *contents; Elf_Internal_Rela *irel; Elf_Internal_Rela *irelend; - Elf_Internal_Rela *irelalign; bfd_vma toaddr; Elf_Internal_Sym *isym; Elf_Internal_Sym *isymend; @@ -854,10 +846,6 @@ contents = elf_section_data (sec)->this_hdr.contents; - /* The deletion must stop at the next ALIGN reloc for an aligment - power larger than the number of bytes we are deleting. */ - - irelalign = NULL; toaddr = sec->size; irel = elf_section_data (sec)->relocs; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-mt.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-mt.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-mt.c 2008-07-30 04:34:56.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-mt.c 2010-10-25 15:54:14.000000000 +0000 @@ -355,15 +355,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-openrisc.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-openrisc.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-openrisc.c 2007-09-28 08:43:45.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-openrisc.c 2010-10-25 15:54:14.000000000 +0000 @@ -374,15 +374,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-ppc.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-ppc.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-ppc.c 2009-08-10 13:38:44.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-ppc.c 2011-03-23 15:25:02.000000000 +0000 @@ -1,6 +1,6 @@ /* PowerPC-specific support for 32-bit ELF Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -61,6 +61,7 @@ /* For new-style .glink and .plt. */ #define GLINK_PLTRESOLVE 16*4 #define GLINK_ENTRY_SIZE 4*4 +#define TLS_GET_ADDR_GLINK_SIZE 12*4 /* VxWorks uses its own plt layout, filled in by the static linker. */ @@ -135,17 +136,24 @@ #define ADDIS_12_12 0x3d8c0000 #define ADDI_11_11 0x396b0000 #define ADD_0_11_11 0x7c0b5a14 +#define ADD_3_12_2 0x7c6c1214 #define ADD_11_0_11 0x7d605a14 #define B 0x48000000 #define BCL_20_31 0x429f0005 #define BCTR 0x4e800420 +#define BEQLR 0x4d820020 +#define CMPWI_11_0 0x2c0b0000 #define LIS_11 0x3d600000 #define LIS_12 0x3d800000 #define LWZU_0_12 0x840c0000 #define LWZ_0_12 0x800c0000 +#define LWZ_11_3 0x81630000 #define LWZ_11_11 0x816b0000 #define LWZ_11_30 0x817e0000 +#define LWZ_12_3 0x81830000 #define LWZ_12_12 0x818c0000 +#define MR_0_3 0x7c601b78 +#define MR_3_0 0x7c030378 #define MFLR_0 0x7c0802a6 #define MFLR_12 0x7d8802a6 #define MTCTR_0 0x7c0903a6 @@ -1300,7 +1308,7 @@ 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_PPC_EMB_SDAI16", /* name */ FALSE, /* partial_inplace */ @@ -1317,7 +1325,7 @@ 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_PPC_EMB_SDA2I16", /* name */ FALSE, /* partial_inplace */ @@ -1372,7 +1380,7 @@ 0, /* rightshift */ 1, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ - TRUE, /* pc_relative */ + FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ @@ -1788,7 +1796,7 @@ #define is_ppc_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ - && elf_object_id (bfd) == PPC32_ELF_TDATA) + && elf_object_id (bfd) == PPC32_ELF_DATA) /* Override the generic function because we store some extras. */ @@ -1796,7 +1804,7 @@ ppc_elf_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct ppc_elf_obj_tdata), - PPC32_ELF_TDATA); + PPC32_ELF_DATA); } /* Fix bad default arch selected for a 32 bit input bfd when the @@ -1850,7 +1858,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -1986,9 +1994,6 @@ Elf_Internal_Shdr *shdr, asection *asect) { - if ((asect->flags & (SEC_GROUP | SEC_EXCLUDE)) == SEC_EXCLUDE) - shdr->sh_flags |= SHF_EXCLUDE; - if ((asect->flags & SEC_SORT_ENTRIES) != 0) shdr->sh_type = SHT_ORDERED; @@ -2069,12 +2074,13 @@ apuinfo_list; static apuinfo_list *head; - +static bfd_boolean apuinfo_set; static void apuinfo_list_init (void) { head = NULL; + apuinfo_set = FALSE; } static void @@ -2151,123 +2157,93 @@ { bfd *ibfd; asection *asec; - char *buffer; - unsigned num_input_sections; - bfd_size_type output_section_size; + char *buffer = NULL; + bfd_size_type largest_input_size = 0; unsigned i; - unsigned num_entries; - unsigned long offset; unsigned long length; const char *error_message = NULL; if (link_info == NULL) return; - /* Scan the input bfds, looking for apuinfo sections. */ - num_input_sections = 0; - output_section_size = 0; - - for (ibfd = link_info->input_bfds; ibfd; ibfd = ibfd->link_next) - { - asec = bfd_get_section_by_name (ibfd, APUINFO_SECTION_NAME); - if (asec) - { - ++ num_input_sections; - output_section_size += asec->size; - } - } - - /* We need at least one input sections - in order to make merging worthwhile. */ - if (num_input_sections < 1) - return; - - /* Just make sure that the output section exists as well. */ - asec = bfd_get_section_by_name (abfd, APUINFO_SECTION_NAME); - if (asec == NULL) - return; - - /* Allocate a buffer for the contents of the input sections. */ - buffer = bfd_malloc (output_section_size); - if (buffer == NULL) - return; - - offset = 0; apuinfo_list_init (); /* Read in the input sections contents. */ for (ibfd = link_info->input_bfds; ibfd; ibfd = ibfd->link_next) { unsigned long datum; - char *ptr; asec = bfd_get_section_by_name (ibfd, APUINFO_SECTION_NAME); if (asec == NULL) continue; + error_message = _("corrupt %s section in %B"); length = asec->size; - if (length < 24) + if (length < 20) + goto fail; + + apuinfo_set = TRUE; + if (largest_input_size < asec->size) { - error_message = _("corrupt or empty %s section in %B"); - goto fail; + if (buffer) + free (buffer); + largest_input_size = asec->size; + buffer = bfd_malloc (largest_input_size); + if (!buffer) + return; } if (bfd_seek (ibfd, asec->filepos, SEEK_SET) != 0 - || (bfd_bread (buffer + offset, length, ibfd) != length)) + || (bfd_bread (buffer, length, ibfd) != length)) { error_message = _("unable to read in %s section from %B"); goto fail; } - /* Process the contents of the section. */ - ptr = buffer + offset; - error_message = _("corrupt %s section in %B"); - /* Verify the contents of the header. Note - we have to extract the values this way in order to allow for a host whose endian-ness is different from the target. */ - datum = bfd_get_32 (ibfd, ptr); + datum = bfd_get_32 (ibfd, buffer); if (datum != sizeof APUINFO_LABEL) goto fail; - datum = bfd_get_32 (ibfd, ptr + 8); + datum = bfd_get_32 (ibfd, buffer + 8); if (datum != 0x2) goto fail; - if (strcmp (ptr + 12, APUINFO_LABEL) != 0) + if (strcmp (buffer + 12, APUINFO_LABEL) != 0) goto fail; /* Get the number of bytes used for apuinfo entries. */ - datum = bfd_get_32 (ibfd, ptr + 4); + datum = bfd_get_32 (ibfd, buffer + 4); if (datum + 20 != length) goto fail; - /* Make sure that we do not run off the end of the section. */ - if (offset + length > output_section_size) - goto fail; - /* Scan the apuinfo section, building a list of apuinfo numbers. */ for (i = 0; i < datum; i += 4) - apuinfo_list_add (bfd_get_32 (ibfd, ptr + 20 + i)); - - /* Update the offset. */ - offset += length; + apuinfo_list_add (bfd_get_32 (ibfd, buffer + 20 + i)); } error_message = NULL; - /* Compute the size of the output section. */ - num_entries = apuinfo_list_length (); - output_section_size = 20 + num_entries * 4; + if (apuinfo_set) + { + /* Compute the size of the output section. */ + unsigned num_entries = apuinfo_list_length (); - asec = bfd_get_section_by_name (abfd, APUINFO_SECTION_NAME); + /* Set the output section size, if it exists. */ + asec = bfd_get_section_by_name (abfd, APUINFO_SECTION_NAME); - if (! bfd_set_section_size (abfd, asec, output_section_size)) - ibfd = abfd, - error_message = _("warning: unable to set size of %s section in %B"); + if (asec && ! bfd_set_section_size (abfd, asec, 20 + num_entries * 4)) + { + ibfd = abfd; + error_message = _("warning: unable to set size of %s section in %B"); + } + } fail: - free (buffer); + if (buffer) + free (buffer); if (error_message) (*_bfd_error_handler) (error_message, ibfd, APUINFO_SECTION_NAME); @@ -2282,8 +2258,7 @@ asection *asec, bfd_byte *contents ATTRIBUTE_UNUSED) { - return (apuinfo_list_length () - && strcmp (asec->name, APUINFO_SECTION_NAME) == 0); + return apuinfo_set && strcmp (asec->name, APUINFO_SECTION_NAME) == 0; } /* Finally we can generate the output section. */ @@ -2301,7 +2276,7 @@ if (asec == NULL) return; - if (apuinfo_list_length () == 0) + if (!apuinfo_set) return; length = asec->size; @@ -2733,7 +2708,7 @@ /* The bfd that forced an old-style PLT. */ bfd *old_bfd; - + /* TLS local dynamic got entry handling. */ union { bfd_signed_vma refcount; @@ -2754,6 +2729,9 @@ /* Set if we should emit symbols for stubs. */ unsigned int emit_stub_syms:1; + /* Set if __tls_get_addr optimization should not be done. */ + unsigned int no_tls_get_addr_opt:1; + /* True if the target system is VxWorks. */ unsigned int is_vxworks:1; @@ -2768,10 +2746,20 @@ struct sym_cache sym_cache; }; +/* Rename some of the generic section flags to better document how they + are used here. */ + +/* Nonzero if this section has TLS related relocations. */ +#define has_tls_reloc sec_flg0 + +/* Nonzero if this section has a call to __tls_get_addr. */ +#define has_tls_get_addr_call sec_flg1 + /* Get the PPC ELF linker hash table from a link_info structure. */ #define ppc_elf_hash_table(p) \ - ((struct ppc_elf_link_hash_table *) (p)->hash) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == PPC32_ELF_DATA ? ((struct ppc_elf_link_hash_table *) ((p)->hash)) : NULL) /* Create an entry in a PPC ELF linker hash table. */ @@ -2797,6 +2785,7 @@ ppc_elf_hash_entry (entry)->linker_section_pointer = NULL; ppc_elf_hash_entry (entry)->dyn_relocs = NULL; ppc_elf_hash_entry (entry)->tls_mask = 0; + ppc_elf_hash_entry (entry)->has_sda_refs = 0; } return entry; @@ -2815,7 +2804,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, ppc_elf_link_hash_newfunc, - sizeof (struct ppc_elf_link_hash_entry))) + sizeof (struct ppc_elf_link_hash_entry), + PPC32_ELF_DATA)) { free (ret); return NULL; @@ -3122,16 +3112,18 @@ *valp = sym->st_size; } - if (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + if ((abfd->flags & DYNAMIC) == 0 + && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE; return TRUE; } static bfd_boolean -create_sdata_sym (struct ppc_elf_link_hash_table *htab, - elf_linker_section_t *lsect) +create_sdata_sym (struct bfd_link_info *info, elf_linker_section_t *lsect) { + struct ppc_elf_link_hash_table *htab = ppc_elf_hash_table (info); + lsect->sym = elf_link_hash_lookup (&htab->elf, lsect->sym_name, TRUE, FALSE, TRUE); if (lsect->sym == NULL) @@ -3139,6 +3131,7 @@ if (lsect->sym->root.type == bfd_link_hash_new) lsect->sym->non_elf = 0; lsect->sym->ref_regular = 1; + _bfd_elf_link_hash_hide_symbol (info, lsect->sym, TRUE); return TRUE; } @@ -3168,7 +3161,7 @@ return FALSE; lsect->section = s; - return create_sdata_sym (htab, lsect); + return create_sdata_sym (info, lsect); } /* Find a linker generated pointer with a given addend and type. */ @@ -3310,6 +3303,8 @@ { struct plt_entry *ent; + if (addend < 32768) + sec = NULL; for (ent = *plist; ent != NULL; ent = ent->next) if (ent->sec == sec && ent->addend == addend) break; @@ -3430,7 +3425,6 @@ enum elf_ppc_reloc_type r_type; struct elf_link_hash_entry *h; int tls_type; - struct plt_entry **ifunc; r_symndx = ELF32_R_SYM (rel->r_info); if (r_symndx < symtab_hdr->sh_info) @@ -3458,47 +3452,38 @@ } tls_type = 0; - ifunc = NULL; r_type = ELF32_R_TYPE (rel->r_info); - if (!htab->is_vxworks) + if (h == NULL && !htab->is_vxworks) { - if (h != NULL) - { - if (h->type == STT_GNU_IFUNC) - ifunc = &h->plt.plist; - } - else + Elf_Internal_Sym *isym = bfd_sym_from_r_symndx (&htab->sym_cache, + abfd, r_symndx); + if (isym == NULL) + return FALSE; + + if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC + && (!info->shared + || is_branch_reloc (r_type))) { - Elf_Internal_Sym *isym = bfd_sym_from_r_symndx (&htab->sym_cache, - abfd, r_symndx); - if (isym == NULL) + struct plt_entry **ifunc; + bfd_vma addend; + + ifunc = update_local_sym_info (abfd, symtab_hdr, r_symndx, + PLT_IFUNC); + if (ifunc == NULL) return FALSE; - if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC - && (!info->shared - || is_branch_reloc (r_type))) + /* STT_GNU_IFUNC symbols must have a PLT entry; + In a non-pie executable even when there are + no plt calls. */ + addend = 0; + if (r_type == R_PPC_PLTREL24) { - bfd_vma addend; - - ifunc = update_local_sym_info (abfd, symtab_hdr, r_symndx, - PLT_IFUNC); - if (ifunc == NULL) - return FALSE; - - /* STT_GNU_IFUNC symbols must have a PLT entry; - In a non-pie executable even when there are - no plt calls. */ - addend = 0; - if (r_type == R_PPC_PLTREL24) - { - ppc_elf_tdata (abfd)->makes_plt_call = 1; - if (info->shared) - addend = rel->r_addend; - } - if (!update_plt_info (abfd, ifunc, - addend < 32768 ? NULL : got2, addend)) - return FALSE; + ppc_elf_tdata (abfd)->makes_plt_call = 1; + if (info->shared) + addend = rel->r_addend; } + if (!update_plt_info (abfd, ifunc, got2, addend)) + return FALSE; } } @@ -3633,13 +3618,8 @@ break; case R_PPC_SDAREL16: - if (info->shared) - { - bad_shared_reloc (abfd, r_type); - return FALSE; - } if (htab->sdata[0].sym == NULL - && !create_sdata_sym (htab, &htab->sdata[0])) + && !create_sdata_sym (info, &htab->sdata[0])) return FALSE; if (h != NULL) { @@ -3655,7 +3635,7 @@ return FALSE; } if (htab->sdata[1].sym == NULL - && !create_sdata_sym (htab, &htab->sdata[1])) + && !create_sdata_sym (info, &htab->sdata[1])) return FALSE; if (h != NULL) { @@ -3672,10 +3652,10 @@ return FALSE; } if (htab->sdata[0].sym == NULL - && !create_sdata_sym (htab, &htab->sdata[0])) + && !create_sdata_sym (info, &htab->sdata[0])) return FALSE; if (htab->sdata[1].sym == NULL - && !create_sdata_sym (htab, &htab->sdata[1])) + && !create_sdata_sym (info, &htab->sdata[1])) return FALSE; if (h != NULL) { @@ -3740,8 +3720,7 @@ addend = rel->r_addend; } h->needs_plt = 1; - if (!update_plt_info (abfd, &h->plt.plist, - addend < 32768 ? NULL : got2, addend)) + if (!update_plt_info (abfd, &h->plt.plist, got2, addend)) return FALSE; } break; @@ -3772,10 +3751,9 @@ case R_PPC_EMB_MRKREF: case R_PPC_NONE: case R_PPC_max: - case R_PPC_RELAX32: - case R_PPC_RELAX32PC: - case R_PPC_RELAX32_PLT: - case R_PPC_RELAX32PC_PLT: + case R_PPC_RELAX: + case R_PPC_RELAX_PLT: + case R_PPC_RELAX_PLTREL24: break; /* These should only appear in dynamic objects. */ @@ -3953,7 +3931,7 @@ || !h->def_regular))) { struct ppc_elf_dyn_relocs *p; - struct ppc_elf_dyn_relocs **head; + struct ppc_elf_dyn_relocs **rel_head; #ifdef DEBUG fprintf (stderr, @@ -3978,7 +3956,7 @@ relocations we need for this symbol. */ if (h != NULL) { - head = &ppc_elf_hash_entry (h)->dyn_relocs; + rel_head = &ppc_elf_hash_entry (h)->dyn_relocs; } else { @@ -3999,17 +3977,17 @@ s = sec; vpp = &elf_section_data (s)->local_dynrel; - head = (struct ppc_elf_dyn_relocs **) vpp; + rel_head = (struct ppc_elf_dyn_relocs **) vpp; } - p = *head; + p = *rel_head; if (p == NULL || p->sec != sec) { p = bfd_alloc (htab->elf.dynobj, sizeof *p); if (p == NULL) return FALSE; - p->next = *head; - *head = p; + p->next = *rel_head; + *rel_head = p; p->sec = sec; p->count = 0; p->pc_count = 0; @@ -4067,15 +4045,15 @@ (_("Warning: %B uses hard float, %B uses soft float"), obfd, ibfd); else if (out_attr->i == 1 && in_attr->i == 3) _bfd_error_handler - (_("Warning: %B uses double-precision hard float, %B uses single-precision hard float"), + (_("Warning: %B uses double-precision hard float, %B uses single-precision hard float"), obfd, ibfd); else if (out_attr->i == 3 && in_attr->i == 1) _bfd_error_handler - (_("Warning: %B uses double-precision hard float, %B uses single-precision hard float"), + (_("Warning: %B uses double-precision hard float, %B uses single-precision hard float"), ibfd, obfd); else if (out_attr->i == 3 && in_attr->i == 2) _bfd_error_handler - (_("Warning: %B uses soft float, %B uses single-precision hard float"), + (_("Warning: %B uses soft float, %B uses single-precision hard float"), ibfd, obfd); else if (out_attr->i == 2 && (in_attr->i == 1 || in_attr->i == 3)) _bfd_error_handler @@ -4280,6 +4258,8 @@ htab = ppc_elf_hash_table (info); + htab->emit_stub_syms = emit_stub_syms; + if (htab->plt_type == PLT_UNSET) { if (plt_style == PLT_OLD) @@ -4313,8 +4293,6 @@ if (htab->plt_type == PLT_OLD && plt_style == PLT_NEW) info->callbacks->info (_("Using bss-plt due to %B"), htab->old_bfd); - htab->emit_stub_syms = emit_stub_syms; - BFD_ASSERT (htab->plt_type != PLT_VXWORKS); if (htab->plt_type == PLT_NEW) @@ -4478,7 +4456,7 @@ struct plt_entry *ent; ent = find_plt_ent (&h->plt.plist, NULL, 0); - if (ent->plt.refcount > 0) + if (ent != NULL && ent->plt.refcount > 0) ent->plt.refcount -= 1; } } @@ -4526,7 +4504,7 @@ if (r_type == R_PPC_PLTREL24 && info->shared) addend = rel->r_addend; ent = find_plt_ent (&h->plt.plist, got2, addend); - if (ent->plt.refcount > 0) + if (ent != NULL && ent->plt.refcount > 0) ent->plt.refcount -= 1; } break; @@ -4542,11 +4520,63 @@ generic ELF tls_setup function. */ asection * -ppc_elf_tls_setup (bfd *obfd, struct bfd_link_info *info) +ppc_elf_tls_setup (bfd *obfd, + struct bfd_link_info *info, + int no_tls_get_addr_opt) { struct ppc_elf_link_hash_table *htab; htab = ppc_elf_hash_table (info); + htab->tls_get_addr = elf_link_hash_lookup (&htab->elf, "__tls_get_addr", + FALSE, FALSE, TRUE); + if (!no_tls_get_addr_opt) + { + struct elf_link_hash_entry *opt, *tga; + opt = elf_link_hash_lookup (&htab->elf, "__tls_get_addr_opt", + FALSE, FALSE, TRUE); + if (opt != NULL + && (opt->root.type == bfd_link_hash_defined + || opt->root.type == bfd_link_hash_defweak)) + { + /* If glibc supports an optimized __tls_get_addr call stub, + signalled by the presence of __tls_get_addr_opt, and we'll + be calling __tls_get_addr via a plt call stub, then + make __tls_get_addr point to __tls_get_addr_opt. */ + tga = htab->tls_get_addr; + if (htab->elf.dynamic_sections_created + && tga != NULL + && (tga->type == STT_FUNC + || tga->needs_plt) + && !(SYMBOL_CALLS_LOCAL (info, tga) + || (ELF_ST_VISIBILITY (tga->other) != STV_DEFAULT + && tga->root.type == bfd_link_hash_undefweak))) + { + struct plt_entry *ent; + for (ent = tga->plt.plist; ent != NULL; ent = ent->next) + if (ent->plt.refcount > 0) + break; + if (ent != NULL) + { + tga->root.type = bfd_link_hash_indirect; + tga->root.u.i.link = &opt->root; + ppc_elf_copy_indirect_symbol (info, opt, tga); + if (opt->dynindx != -1) + { + /* Use __tls_get_addr_opt in dynamic relocations. */ + opt->dynindx = -1; + _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr, + opt->dynstr_index); + if (!bfd_elf_link_record_dynamic_symbol (info, opt)) + return FALSE; + } + htab->tls_get_addr = opt; + } + } + } + else + no_tls_get_addr_opt = TRUE; + } + htab->no_tls_get_addr_opt = no_tls_get_addr_opt; if (htab->plt_type == PLT_NEW && htab->plt != NULL && htab->plt->output_section != NULL) @@ -4555,8 +4585,6 @@ elf_section_flags (htab->plt->output_section) = SHF_ALLOC + SHF_WRITE; } - htab->tls_get_addr = elf_link_hash_lookup (&htab->elf, "__tls_get_addr", - FALSE, FALSE, TRUE); return _bfd_elf_tls_setup (obfd, info); } @@ -4603,20 +4631,27 @@ return TRUE; htab = ppc_elf_hash_table (info); + if (htab == NULL) + return FALSE; + /* Make two passes through the relocs. First time check that tls relocs involved in setting up a tls_get_addr call are indeed - followed by such a call. If they are not, exclude them from - the optimizations done on the second pass. */ + followed by such a call. If they are not, don't do any tls + optimization. On the second pass twiddle tls_mask flags to + notify relocate_section that optimization can be done, and + adjust got and plt refcounts. */ for (pass = 0; pass < 2; ++pass) for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) { Elf_Internal_Sym *locsyms = NULL; Elf_Internal_Shdr *symtab_hdr = &elf_symtab_hdr (ibfd); + asection *got2 = bfd_get_section_by_name (ibfd, ".got2"); for (sec = ibfd->sections; sec != NULL; sec = sec->next) if (sec->has_tls_reloc && !bfd_is_abs_section (sec->output_section)) { Elf_Internal_Rela *relstart, *rel, *relend; + int expecting_tls_get_addr = 0; /* Read the relocations. */ relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, @@ -4633,7 +4668,6 @@ char *tls_mask; char tls_set, tls_clear; bfd_boolean is_local; - int expecting_tls_get_addr; bfd_signed_vma *got_count; r_symndx = ELF32_R_SYM (rel->r_info); @@ -4648,13 +4682,34 @@ h = (struct elf_link_hash_entry *) h->root.u.i.link; } - expecting_tls_get_addr = 0; is_local = FALSE; if (h == NULL || !h->def_dynamic) is_local = TRUE; r_type = ELF32_R_TYPE (rel->r_info); + /* If this section has old-style __tls_get_addr calls + without marker relocs, then check that each + __tls_get_addr call reloc is preceded by a reloc + that conceivably belongs to the __tls_get_addr arg + setup insn. If we don't find matching arg setup + relocs, don't do any tls optimization. */ + if (pass == 0 + && sec->has_tls_get_addr_call + && h != NULL + && h == htab->tls_get_addr + && !expecting_tls_get_addr + && is_branch_reloc (r_type)) + { + info->callbacks->minfo ("%C __tls_get_addr lost arg, " + "TLS optimization disabled\n", + ibfd, sec, rel->r_offset); + if (elf_section_data (sec)->relocs != relstart) + free (relstart); + return TRUE; + } + + expecting_tls_get_addr = 0; switch (r_type) { case R_PPC_GOT_TLSLD16: @@ -4705,6 +4760,13 @@ else continue; + case R_PPC_TLSGD: + case R_PPC_TLSLD: + expecting_tls_get_addr = 2; + tls_set = 0; + tls_clear = 0; + break; + default: continue; } @@ -4712,7 +4774,8 @@ if (pass == 0) { if (!expecting_tls_get_addr - || !sec->has_tls_get_addr_call) + || (expecting_tls_get_addr == 1 + && !sec->has_tls_get_addr_call)) continue; if (rel + 1 < relend @@ -4723,9 +4786,30 @@ /* Uh oh, we didn't find the expected call. We could just mark this symbol to exclude it from tls optimization but it's safer to skip - the entire section. */ - sec->has_tls_reloc = 0; - break; + the entire optimization. */ + info->callbacks->minfo (_("%C arg lost __tls_get_addr, " + "TLS optimization disabled\n"), + ibfd, sec, rel->r_offset); + if (elf_section_data (sec)->relocs != relstart) + free (relstart); + return TRUE; + } + + if (expecting_tls_get_addr) + { + struct plt_entry *ent; + bfd_vma addend = 0; + + if (info->shared + && ELF32_R_TYPE (rel[1].r_info) == R_PPC_PLTREL24) + addend = rel[1].r_addend; + ent = find_plt_ent (&htab->tls_get_addr->plt.plist, + got2, addend); + if (ent != NULL && ent->plt.refcount > 0) + ent->plt.refcount -= 1; + + if (expecting_tls_get_addr == 2) + continue; } if (h != NULL) @@ -4735,7 +4819,6 @@ } else { - Elf_Internal_Sym *sym; bfd_signed_vma *lgot_refs; struct plt_entry **local_plt; char *lgot_masks; @@ -4754,7 +4837,6 @@ return FALSE; } } - sym = locsyms + r_symndx; lgot_refs = elf_local_got_refcounts (ibfd); if (lgot_refs == NULL) abort (); @@ -4772,16 +4854,6 @@ *got_count -= 1; } - if (expecting_tls_get_addr) - { - struct plt_entry *ent; - - ent = find_plt_ent (&htab->tls_get_addr->plt.plist, - NULL, 0); - if (ent != NULL && ent->plt.refcount > 0) - ent->plt.refcount -= 1; - } - *tls_mask |= tls_set; *tls_mask &= ~tls_clear; } @@ -5147,6 +5219,9 @@ { glink_offset = s->size; s->size += GLINK_ENTRY_SIZE; + if (h == htab->tls_get_addr + && !htab->no_tls_get_addr_opt) + s->size += TLS_GET_ADDR_GLINK_SIZE - GLINK_ENTRY_SIZE; } if (!doneone && !info->shared @@ -5183,7 +5258,7 @@ /* If this symbol is not defined in a regular file, and we are not generating a shared - library, then set the symbol to this location + library, then set the symbol to this location in the .plt. This is to avoid text relocations, and is required to make function pointers compare as equal between @@ -5559,6 +5634,7 @@ local_plt = (struct plt_entry **) end_local_got; end_local_plt = local_plt + locsymcount; lgot_masks = (char *) end_local_plt; + for (; local_got < end_local_got; ++local_got, ++lgot_masks) if (*local_got > 0) { @@ -5602,7 +5678,7 @@ for (ent = *local_plt; ent != NULL; ent = ent->next) if (ent->plt.refcount > 0) { - asection *s = htab->iplt; + s = htab->iplt; if (!doneone) { @@ -5660,6 +5736,18 @@ htab->elf.hgot->root.u.def.value = g_o_t; } + if (info->shared) + { + struct elf_link_hash_entry *sda = htab->sdata[0].sym; + if (sda != NULL + && !(sda->root.type == bfd_link_hash_defined + || sda->root.type == bfd_link_hash_defweak)) + { + sda->root.type = bfd_link_hash_defined; + sda->root.u.def.section = htab->elf.hgot->root.u.def.section; + sda->root.u.def.value = htab->elf.hgot->root.u.def.value; + } + } if (htab->glink != NULL && htab->glink->size != 0 @@ -5811,6 +5899,11 @@ { if (!add_dynamic_entry (DT_PPC_GOT, 0)) return FALSE; + if (!htab->no_tls_get_addr_opt + && htab->tls_get_addr != NULL + && htab->tls_get_addr->plt.plist != NULL + && !add_dynamic_entry (DT_PPC_TLSOPT, 0)) + return FALSE; } if (relocs) @@ -5905,6 +5998,7 @@ struct ppc_elf_link_hash_table *htab; bfd_size_type trampoff; asection *got2; + bfd_boolean maybe_pasted; *again = FALSE; @@ -5921,10 +6015,13 @@ anyway. */ if (link_info->relocatable && link_info->shared) return TRUE; - + trampoff = (isec->size + 3) & (bfd_vma) -4; + maybe_pasted = (strcmp (isec->output_section->name, ".init") == 0 + || strcmp (isec->output_section->name, ".fini") == 0); /* Space for a branch around any trampolines. */ - trampoff += 4; + if (maybe_pasted) + trampoff += 4; symtab_hdr = &elf_symtab_hdr (abfd); @@ -5941,7 +6038,7 @@ for (irel = internal_relocs; irel < irelend; irel++) { unsigned long r_type = ELF32_R_TYPE (irel->r_info); - bfd_vma reladdr, toff, roff; + bfd_vma toff, roff; asection *tsec; struct one_fixup *f; size_t insn_offset = 0; @@ -6125,7 +6222,6 @@ continue; roff = irel->r_offset; - reladdr = isec->output_section->vma + isec->output_offset + roff; /* If the branch is in range, no need to do anything. */ if (tsec != bfd_und_section_ptr @@ -6162,28 +6258,28 @@ { size = 4 * ARRAY_SIZE (shared_stub_entry); insn_offset = 12; - stub_rtype = R_PPC_RELAX32PC; } else { size = 4 * ARRAY_SIZE (stub_entry); insn_offset = 0; - stub_rtype = R_PPC_RELAX32; } - - if (R_PPC_RELAX32_PLT - R_PPC_RELAX32 - != R_PPC_RELAX32PC_PLT - R_PPC_RELAX32PC) - abort (); + stub_rtype = R_PPC_RELAX; if (tsec == htab->plt || tsec == htab->glink) - stub_rtype += R_PPC_RELAX32_PLT - R_PPC_RELAX32; + { + stub_rtype = R_PPC_RELAX_PLT; + if (r_type == R_PPC_PLTREL24) + stub_rtype = R_PPC_RELAX_PLTREL24; + } /* Hijack the old relocation. Since we need two relocations for this use a "composite" reloc. */ irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info), stub_rtype); irel->r_offset = trampoff + insn_offset; - if (r_type == R_PPC_PLTREL24) + if (r_type == R_PPC_PLTREL24 + && stub_rtype != R_PPC_RELAX_PLTREL24) irel->r_addend = 0; /* Record the fixup so we don't do it again this section. */ @@ -6250,7 +6346,6 @@ { const int *stub; bfd_byte *dest; - bfd_vma val; int i, size; do @@ -6266,12 +6361,15 @@ goto error_return; isec->size = (isec->size + 3) & (bfd_vma) -4; - /* Branch around the trampolines. */ - val = B + trampoff - isec->size; dest = contents + isec->size; + /* Branch around the trampolines. */ + if (maybe_pasted) + { + bfd_vma val = B + trampoff - isec->size; + bfd_put_32 (abfd, val, dest); + dest += 4; + } isec->size = trampoff; - bfd_put_32 (abfd, val, dest); - dest += 4; if (link_info->shared) { @@ -6324,10 +6422,11 @@ { /* Append sufficient NOP relocs so we can write out relocation information for the trampolines. */ + Elf_Internal_Shdr *rel_hdr; Elf_Internal_Rela *new_relocs = bfd_malloc ((changes + isec->reloc_count) * sizeof (*new_relocs)); unsigned ix; - + if (!new_relocs) goto error_return; memcpy (new_relocs, internal_relocs, @@ -6342,8 +6441,8 @@ free (internal_relocs); elf_section_data (isec)->relocs = new_relocs; isec->reloc_count += changes; - elf_section_data (isec)->rel_hdr.sh_size - += changes * elf_section_data (isec)->rel_hdr.sh_entsize; + rel_hdr = _bfd_elf_single_rel_hdr (isec); + rel_hdr->sh_size += changes * rel_hdr->sh_entsize; } else if (elf_section_data (isec)->relocs != internal_relocs) free (internal_relocs); @@ -6353,7 +6452,7 @@ { /* Convert the internal relax relocs to external form. */ for (irel = internal_relocs; irel < irelend; irel++) - if (ELF32_R_TYPE (irel->r_info) == R_PPC_RELAX32) + if (ELF32_R_TYPE (irel->r_info) == R_PPC_RELAX) { unsigned long r_symndx = ELF32_R_SYM (irel->r_info); @@ -6369,7 +6468,7 @@ irel++; } } - + return TRUE; error_return: @@ -6446,9 +6545,10 @@ linker_section_ptr->offset += 1; } - relocation = (lsect->section->output_offset + relocation = (lsect->section->output_section->vma + + lsect->section->output_offset + linker_section_ptr->offset - 1 - - 0x8000); + - SYM_VAL (lsect->sym)); #ifdef DEBUG fprintf (stderr, @@ -6456,9 +6556,7 @@ lsect->name, (long) relocation, (long) relocation); #endif - /* Subtract out the addend, because it will get added back in by the normal - processing. */ - return relocation - linker_section_ptr->addend; + return relocation; } #define PPC_LO(v) ((v) & 0xffff) @@ -6466,18 +6564,16 @@ #define PPC_HA(v) PPC_HI ((v) + 0x8000) static void -write_glink_stub (struct plt_entry *ent, asection *plt_sec, +write_glink_stub (struct plt_entry *ent, asection *plt_sec, unsigned char *p, struct bfd_link_info *info) { struct ppc_elf_link_hash_table *htab = ppc_elf_hash_table (info); bfd *output_bfd = info->output_bfd; bfd_vma plt; - unsigned char *p; plt = ((ent->plt.offset & ~1) + plt_sec->output_section->vma + plt_sec->output_offset); - p = (unsigned char *) htab->glink->contents + ent->glink_offset; if (info->shared) { @@ -6528,6 +6624,102 @@ } } +/* Return true if symbol is defined statically. */ + +static bfd_boolean +is_static_defined (struct elf_link_hash_entry *h) +{ + return ((h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + && h->root.u.def.section != NULL + && h->root.u.def.section->output_section != NULL); +} + +/* If INSN is an opcode that may be used with an @tls operand, return + the transformed insn for TLS optimisation, otherwise return 0. If + REG is non-zero only match an insn with RB or RA equal to REG. */ + +unsigned int +_bfd_elf_ppc_at_tls_transform (unsigned int insn, unsigned int reg) +{ + unsigned int rtra; + + if ((insn & (0x3f << 26)) != 31 << 26) + return 0; + + if (reg == 0 || ((insn >> 11) & 0x1f) == reg) + rtra = insn & ((1 << 26) - (1 << 16)); + else if (((insn >> 16) & 0x1f) == reg) + rtra = (insn & (0x1f << 21)) | ((insn & (0x1f << 11)) << 5); + else + return 0; + + if ((insn & (0x3ff << 1)) == 266 << 1) + /* add -> addi. */ + insn = 14 << 26; + else if ((insn & (0x1f << 1)) == 23 << 1 + && ((insn & (0x1f << 6)) < 14 << 6 + || ((insn & (0x1f << 6)) >= 16 << 6 + && (insn & (0x1f << 6)) < 24 << 6))) + /* load and store indexed -> dform. */ + insn = (32 | ((insn >> 6) & 0x1f)) << 26; + else if ((insn & (((0x1a << 5) | 0x1f) << 1)) == 21 << 1) + /* ldx, ldux, stdx, stdux -> ld, ldu, std, stdu. */ + insn = ((58 | ((insn >> 6) & 4)) << 26) | ((insn >> 6) & 1); + else if ((insn & (((0x1f << 5) | 0x1f) << 1)) == 341 << 1) + /* lwax -> lwa. */ + insn = (58 << 26) | 2; + else + return 0; + insn |= rtra; + return insn; +} + +/* If INSN is an opcode that may be used with an @tprel operand, return + the transformed insn for an undefined weak symbol, ie. with the + thread pointer REG operand removed. Otherwise return 0. */ + +unsigned int +_bfd_elf_ppc_at_tprel_transform (unsigned int insn, unsigned int reg) +{ + if ((insn & (0x1f << 16)) == reg << 16 + && ((insn & (0x3f << 26)) == 14u << 26 /* addi */ + || (insn & (0x3f << 26)) == 15u << 26 /* addis */ + || (insn & (0x3f << 26)) == 32u << 26 /* lwz */ + || (insn & (0x3f << 26)) == 34u << 26 /* lbz */ + || (insn & (0x3f << 26)) == 36u << 26 /* stw */ + || (insn & (0x3f << 26)) == 38u << 26 /* stb */ + || (insn & (0x3f << 26)) == 40u << 26 /* lhz */ + || (insn & (0x3f << 26)) == 42u << 26 /* lha */ + || (insn & (0x3f << 26)) == 44u << 26 /* sth */ + || (insn & (0x3f << 26)) == 46u << 26 /* lmw */ + || (insn & (0x3f << 26)) == 47u << 26 /* stmw */ + || (insn & (0x3f << 26)) == 48u << 26 /* lfs */ + || (insn & (0x3f << 26)) == 50u << 26 /* lfd */ + || (insn & (0x3f << 26)) == 52u << 26 /* stfs */ + || (insn & (0x3f << 26)) == 54u << 26 /* stfd */ + || ((insn & (0x3f << 26)) == 58u << 26 /* lwa,ld,lmd */ + && (insn & 3) != 1) + || ((insn & (0x3f << 26)) == 62u << 26 /* std, stmd */ + && ((insn & 3) == 0 || (insn & 3) == 3)))) + { + insn &= ~(0x1f << 16); + } + else if ((insn & (0x1f << 21)) == reg << 21 + && ((insn & (0x3e << 26)) == 24u << 26 /* ori, oris */ + || (insn & (0x3e << 26)) == 26u << 26 /* xori,xoris */ + || (insn & (0x3e << 26)) == 28u << 26 /* andi,andis */)) + { + insn &= ~(0x1f << 21); + insn |= (insn & (0x1f << 16)) << 5; + if ((insn & (0x3e << 26)) == 26 << 26 /* xori,xoris */) + insn -= 2 >> 26; /* convert to ori,oris */ + } + else + insn = 0; + return insn; +} + /* The RELOCATE_SECTION function is called by the ELF backend linker to handle the relocations for a section. @@ -6573,7 +6765,6 @@ Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; Elf_Internal_Rela outrel; - bfd_byte *loc; asection *got2, *sreloc = NULL; bfd_vma *local_got_offsets; bfd_boolean ret = TRUE; @@ -6617,7 +6808,7 @@ reloc_howto_type *howto; unsigned long r_symndx; bfd_vma relocation; - bfd_vma branch_bit, insn, from; + bfd_vma branch_bit, from; bfd_boolean unresolved_reloc; bfd_boolean warned; unsigned int tls_type, tls_mask, tls_gd; @@ -6657,10 +6848,8 @@ howto = NULL; if (r_type < R_PPC_max) howto = ppc_elf_howto_table[r_type]; - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); } if (info->relocatable) @@ -6715,6 +6904,7 @@ && (tls_mask & TLS_TPREL) == 0) { bfd_vma insn; + insn = bfd_get_32 (output_bfd, contents + rel->r_offset - d_offset); insn &= 31 << 21; insn |= 0x3c020000; /* addis 0,2,0 */ @@ -6728,37 +6918,12 @@ if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_TPREL) == 0) { - bfd_vma insn, rtra; + bfd_vma insn; + insn = bfd_get_32 (output_bfd, contents + rel->r_offset); - if ((insn & ((31 << 26) | (31 << 11))) - == ((31 << 26) | (2 << 11))) - rtra = insn & ((1 << 26) - (1 << 16)); - else if ((insn & ((31 << 26) | (31 << 16))) - == ((31 << 26) | (2 << 16))) - rtra = (insn & (31 << 21)) | ((insn & (31 << 11)) << 5); - else - abort (); - if ((insn & ((1 << 11) - (1 << 1))) == 266 << 1) - /* add -> addi. */ - insn = 14 << 26; - else if ((insn & (31 << 1)) == 23 << 1 - && ((insn & (31 << 6)) < 14 << 6 - || ((insn & (31 << 6)) >= 16 << 6 - && (insn & (31 << 6)) < 24 << 6))) - /* load and store indexed -> dform. */ - insn = (32 | ((insn >> 6) & 31)) << 26; - else if ((insn & (31 << 1)) == 21 << 1 - && (insn & (0x1a << 6)) == 0) - /* ldx, ldux, stdx, stdux -> ld, ldu, std, stdu. */ - insn = (((58 | ((insn >> 6) & 4)) << 26) - | ((insn >> 6) & 1)); - else if ((insn & (31 << 1)) == 21 << 1 - && (insn & ((1 << 11) - (1 << 1))) == 341 << 1) - /* lwax -> lwa. */ - insn = (58 << 26) | 2; - else + insn = _bfd_elf_ppc_at_tls_transform (insn, 2); + if (insn == 0) abort (); - insn |= rtra; bfd_put_32 (output_bfd, insn, contents + rel->r_offset); r_type = R_PPC_TPREL16_LO; rel->r_info = ELF32_R_INFO (r_symndx, r_type); @@ -6829,9 +6994,7 @@ insn1 |= 32 << 26; /* lwz */ if (offset != (bfd_vma) -1) { - rel[1].r_info - = ELF32_R_INFO (ELF32_R_SYM (rel[1].r_info), - R_PPC_NONE); + rel[1].r_info = ELF32_R_INFO (STN_UNDEF, R_PPC_NONE); insn2 = 0x7c631214; /* add 3,3,2 */ bfd_put_32 (output_bfd, insn2, contents + offset); } @@ -6852,9 +7015,9 @@ if (local_sections[r_symndx] == sec) break; if (r_symndx >= symtab_hdr->sh_info) - r_symndx = 0; + r_symndx = STN_UNDEF; rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; - if (r_symndx != 0) + if (r_symndx != STN_UNDEF) rel->r_addend -= (local_syms[r_symndx].st_value + sec->output_offset + sec->output_section->vma); @@ -6905,8 +7068,7 @@ bfd_put_32 (output_bfd, insn2, contents + offset); /* Zap the reloc on the _tls_get_addr call too. */ BFD_ASSERT (offset == rel[1].r_offset); - rel[1].r_info = ELF32_R_INFO (ELF32_R_SYM (rel[1].r_info), - R_PPC_NONE); + rel[1].r_info = ELF32_R_INFO (STN_UNDEF, R_PPC_NONE); } break; @@ -6921,9 +7083,9 @@ if (local_sections[r_symndx] == sec) break; if (r_symndx >= symtab_hdr->sh_info) - r_symndx = 0; + r_symndx = STN_UNDEF; rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; - if (r_symndx != 0) + if (r_symndx != STN_UNDEF) rel->r_addend -= (local_syms[r_symndx].st_value + sec->output_offset + sec->output_section->vma); @@ -6935,8 +7097,7 @@ contents + rel->r_offset - d_offset); /* Zap the reloc on the _tls_get_addr call too. */ BFD_ASSERT (rel->r_offset - d_offset == rel[1].r_offset); - rel[1].r_info = ELF32_R_INFO (ELF32_R_SYM (rel[1].r_info), - R_PPC_NONE); + rel[1].r_info = ELF32_R_INFO (STN_UNDEF, R_PPC_NONE); rel--; continue; } @@ -6959,20 +7120,24 @@ /* Branch not taken prediction relocations. */ case R_PPC_ADDR14_BRNTAKEN: case R_PPC_REL14_BRNTAKEN: - insn = bfd_get_32 (output_bfd, contents + rel->r_offset); - insn &= ~BRANCH_PREDICT_BIT; - insn |= branch_bit; - - from = (rel->r_offset - + input_section->output_offset - + input_section->output_section->vma); - - /* Invert 'y' bit if not the default. */ - if ((bfd_signed_vma) (relocation + rel->r_addend - from) < 0) - insn ^= BRANCH_PREDICT_BIT; + { + bfd_vma insn; - bfd_put_32 (output_bfd, insn, contents + rel->r_offset); - break; + insn = bfd_get_32 (output_bfd, contents + rel->r_offset); + insn &= ~BRANCH_PREDICT_BIT; + insn |= branch_bit; + + from = (rel->r_offset + + input_section->output_offset + + input_section->output_section->vma); + + /* Invert 'y' bit if not the default. */ + if ((bfd_signed_vma) (relocation + rel->r_addend - from) < 0) + insn ^= BRANCH_PREDICT_BIT; + + bfd_put_32 (output_bfd, insn, contents + rel->r_offset); + break; + } } ifunc = NULL; @@ -7026,7 +7191,9 @@ } if (h == NULL && (ent->glink_offset & 1) == 0) { - write_glink_stub (ent, htab->iplt, info); + unsigned char *p = ((unsigned char *) htab->glink->contents + + ent->glink_offset); + write_glink_stub (ent, htab->iplt, p, info); ent->glink_offset |= 1; } @@ -7201,6 +7368,7 @@ || h->root.type != bfd_link_hash_undefweak)) { asection *rsec = htab->relgot; + bfd_byte * loc; outrel.r_offset = (htab->got->output_section->vma + htab->got->output_offset @@ -7352,6 +7520,21 @@ case R_PPC_TPREL16_LO: case R_PPC_TPREL16_HI: case R_PPC_TPREL16_HA: + if (h != NULL + && h->root.type == bfd_link_hash_undefweak + && h->dynindx == -1) + { + /* Make this relocation against an undefined weak symbol + resolve to zero. This is really just a tweak, since + code using weak externs ought to check that they are + defined before using them. */ + bfd_byte *p = contents + rel->r_offset - d_offset; + unsigned int insn = bfd_get_32 (output_bfd, p); + insn = _bfd_elf_ppc_at_tprel_transform (insn, 2); + if (insn != 0) + bfd_put_32 (output_bfd, insn, p); + break; + } addend -= htab->elf.tls_sec->vma + TP_OFFSET; /* The TPREL16 relocs shouldn't really be used in shared libs as they will result in DT_TEXTREL being set, but @@ -7432,7 +7615,7 @@ && !h->def_regular)) { int skip; - + bfd_byte * loc; #ifdef DEBUG fprintf (stderr, "ppc_elf_relocate_section needs to " "create relocation for %s\n", @@ -7453,9 +7636,9 @@ } skip = 0; - outrel.r_offset = - _bfd_elf_section_offset (output_bfd, info, input_section, - rel->r_offset); + 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 == (bfd_vma) -2) skip = (int) outrel.r_offset; @@ -7505,7 +7688,7 @@ sym_name); ret = FALSE; } - else if (r_symndx == 0 || bfd_is_abs_section (sec)) + else if (r_symndx == STN_UNDEF || bfd_is_abs_section (sec)) ; else if (sec == NULL || sec->owner == NULL) { @@ -7566,12 +7749,20 @@ } break; - case R_PPC_RELAX32PC_PLT: - case R_PPC_RELAX32_PLT: + case R_PPC_RELAX_PLT: + case R_PPC_RELAX_PLTREL24: if (h != NULL) { - struct plt_entry *ent = find_plt_ent (&h->plt.plist, got2, - info->shared ? addend : 0); + struct plt_entry *ent; + bfd_vma got2_addend = 0; + + if (r_type == R_PPC_RELAX_PLTREL24) + { + if (info->shared) + got2_addend = addend; + addend = 0; + } + ent = find_plt_ent (&h->plt.plist, got2, got2_addend); if (htab->plt_type == PLT_NEW) relocation = (htab->glink->output_section->vma + htab->glink->output_offset @@ -7581,18 +7772,14 @@ + htab->plt->output_offset + ent->plt.offset); } - if (r_type == R_PPC_RELAX32_PLT) - goto relax32; /* Fall thru */ - case R_PPC_RELAX32PC: - relocation -= (input_section->output_section->vma - + input_section->output_offset - + rel->r_offset - 4); - /* Fall thru */ + case R_PPC_RELAX: + if (info->shared) + relocation -= (input_section->output_section->vma + + input_section->output_offset + + rel->r_offset - 4); - case R_PPC_RELAX32: - relax32: { unsigned long t0; unsigned long t1; @@ -7629,17 +7816,29 @@ /* Indirect .sdata relocation. */ case R_PPC_EMB_SDAI16: BFD_ASSERT (htab->sdata[0].section != NULL); + if (!is_static_defined (htab->sdata[0].sym)) + { + unresolved_reloc = TRUE; + break; + } relocation = elf_finish_pointer_linker_section (input_bfd, &htab->sdata[0], h, relocation, rel); + addend = 0; break; /* Indirect .sdata2 relocation. */ case R_PPC_EMB_SDA2I16: BFD_ASSERT (htab->sdata[1].section != NULL); + if (!is_static_defined (htab->sdata[1].sym)) + { + unresolved_reloc = TRUE; + break; + } relocation = elf_finish_pointer_linker_section (input_bfd, &htab->sdata[1], h, relocation, rel); + addend = 0; break; /* Handle the TOC16 reloc. We want to use the offset within the .got @@ -7692,12 +7891,16 @@ case R_PPC_SDAREL16: { const char *name; + struct elf_link_hash_entry *sda = htab->sdata[0].sym; - if (sec == NULL || sec->output_section == NULL) + if (sec == NULL + || sec->output_section == NULL + || !is_static_defined (sda)) { unresolved_reloc = TRUE; break; } + addend -= SYM_VAL (sda); name = bfd_get_section_name (abfd, sec->output_section); if (! ((CONST_STRNEQ (name, ".sdata") @@ -7713,7 +7916,6 @@ howto->name, name); } - addend -= SYM_VAL (htab->sdata[0].sym); } break; @@ -7721,12 +7923,16 @@ case R_PPC_EMB_SDA2REL: { const char *name; + struct elf_link_hash_entry *sda = htab->sdata[1].sym; - if (sec == NULL || sec->output_section == NULL) + if (sec == NULL + || sec->output_section == NULL + || !is_static_defined (sda)) { unresolved_reloc = TRUE; break; } + addend -= SYM_VAL (sda); name = bfd_get_section_name (abfd, sec->output_section); if (! (CONST_STRNEQ (name, ".sdata2") @@ -7739,12 +7945,7 @@ sym_name, howto->name, name); - - bfd_set_error (bfd_error_bad_value); - ret = FALSE; - continue; } - addend -= SYM_VAL (htab->sdata[1].sym); } break; @@ -7754,6 +7955,7 @@ { const char *name; int reg; + struct elf_link_hash_entry *sda = NULL; if (sec == NULL || sec->output_section == NULL) { @@ -7768,13 +7970,13 @@ && (name[5] == 0 || name[5] == '.')))) { reg = 13; - addend -= SYM_VAL (htab->sdata[0].sym); + sda = htab->sdata[0].sym; } else if (CONST_STRNEQ (name, ".sdata2") || CONST_STRNEQ (name, ".sbss2")) { reg = 2; - addend -= SYM_VAL (htab->sdata[1].sym); + sda = htab->sdata[1].sym; } else if (strcmp (name, ".PPC.EMB.sdata0") == 0 || strcmp (name, ".PPC.EMB.sbss0") == 0) @@ -7796,8 +7998,20 @@ continue; } + if (sda != NULL) + { + if (!is_static_defined (sda)) + { + unresolved_reloc = TRUE; + break; + } + addend -= SYM_VAL (sda); + } + if (r_type == R_PPC_EMB_SDA21) - { /* fill in register field */ + { + bfd_vma insn; /* Fill in register field. */ + insn = bfd_get_32 (output_bfd, contents + rel->r_offset); insn = (insn & ~RA_REGISTER_MASK) | (reg << RA_REGISTER_SHIFT); bfd_put_32 (output_bfd, insn, contents + rel->r_offset); @@ -8019,7 +8233,7 @@ { bfd_vma got_offset; const bfd_vma *plt_entry; - + /* The first three entries in .got.plt are reserved. */ got_offset = (reloc_index + 3) * 4; @@ -8060,7 +8274,7 @@ low-order 16 bits of the load instruction. */ /* NOTE: It appears that this is now an index rather than a prescaled offset. */ - bfd_put_32 (output_bfd, + bfd_put_32 (output_bfd, plt_entry[4] | reloc_index, htab->plt->contents + ent->plt.offset + 16); /* This instruction is a PC-relative branch whose target is @@ -8069,8 +8283,8 @@ The address is encoded in bits 6-29, inclusive. The value stored is right-shifted by two bits, permitting a 26-bit offset. */ - bfd_put_32 (output_bfd, - (plt_entry[5] + bfd_put_32 (output_bfd, + (plt_entry[5] | (-(ent->plt.offset + 20) & 0x03fffffc)), htab->plt->contents + ent->plt.offset + 20); bfd_put_32 (output_bfd, plt_entry[6], @@ -8219,8 +8433,8 @@ relocation. */ sym->st_shndx = (_bfd_elf_section_from_bfd_section (output_bfd, htab->glink->output_section)); - sym->st_value = (ent->glink_offset + - htab->glink->output_offset + sym->st_value = (ent->glink_offset + + htab->glink->output_offset + htab->glink->output_section->vma); } doneone = TRUE; @@ -8230,12 +8444,35 @@ || !htab->elf.dynamic_sections_created || h->dynindx == -1) { + unsigned char *p; asection *splt = htab->plt; if (!htab->elf.dynamic_sections_created || h->dynindx == -1) splt = htab->iplt; - write_glink_stub (ent, splt, info); + p = (unsigned char *) htab->glink->contents + ent->glink_offset; + + if (h == htab->tls_get_addr && !htab->no_tls_get_addr_opt) + { + bfd_put_32 (output_bfd, LWZ_11_3, p); + p += 4; + bfd_put_32 (output_bfd, LWZ_12_3 + 4, p); + p += 4; + bfd_put_32 (output_bfd, MR_0_3, p); + p += 4; + bfd_put_32 (output_bfd, CMPWI_11_0, p); + p += 4; + bfd_put_32 (output_bfd, ADD_3_12_2, p); + p += 4; + bfd_put_32 (output_bfd, BEQLR, p); + p += 4; + bfd_put_32 (output_bfd, MR_3_0, p); + p += 4; + bfd_put_32 (output_bfd, NOP, p); + p += 4; + } + + write_glink_stub (ent, splt, p, info); if (!info->shared) /* We only need one non-PIC glink stub. */ @@ -8326,7 +8563,7 @@ dynobj = elf_hash_table (info)->dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); if (htab->is_vxworks) - splt = bfd_get_section_by_name (dynobj, ".plt"); + splt = bfd_get_section_by_name (dynobj, ".plt"); else splt = NULL; @@ -8435,9 +8672,9 @@ if (splt && splt->size > 0) { /* Use the right PLT. */ - static const bfd_vma *plt_entry = NULL; - plt_entry = info->shared ? - ppc_elf_vxworks_pic_plt0_entry : ppc_elf_vxworks_plt0_entry; + const bfd_vma *plt_entry = (info->shared + ? ppc_elf_vxworks_pic_plt0_entry + : ppc_elf_vxworks_plt0_entry); if (!info->shared) { @@ -8475,7 +8712,7 @@ rela.r_addend = 0; bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); loc += sizeof (Elf32_External_Rela); - + /* Output the @l relocation for the second instruction. */ rela.r_offset = (htab->plt->output_section->vma + htab->plt->output_offset @@ -8720,6 +8957,7 @@ #define TARGET_BIG_SYM bfd_elf32_powerpc_vec #define TARGET_BIG_NAME "elf32-powerpc" #define ELF_ARCH bfd_arch_powerpc +#define ELF_TARGET_ID PPC32_ELF_DATA #define ELF_MACHINE_CODE EM_PPC #ifdef __QNXTARGET__ #define ELF_MAXPAGESIZE 0x1000 diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-ppc.h crash-6.1.6/=unpacked-tar1=/bfd/elf32-ppc.h --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-ppc.h 2007-07-03 14:26:41.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-ppc.h 2009-09-21 11:51:01.000000000 +0000 @@ -28,6 +28,6 @@ int ppc_elf_select_plt_layout (bfd *, struct bfd_link_info *, enum ppc_elf_plt_type, int); -asection *ppc_elf_tls_setup (bfd *, struct bfd_link_info *); +asection *ppc_elf_tls_setup (bfd *, struct bfd_link_info *, int); bfd_boolean ppc_elf_tls_optimize (bfd *, struct bfd_link_info *); void ppc_elf_set_sdata_syms (bfd *, struct bfd_link_info *); diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-rx.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-rx.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-rx.c 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-rx.c 2011-01-18 14:13:43.000000000 +0000 @@ -0,0 +1,3384 @@ +/* Renesas RX specific support for 32-bit ELF. + Copyright (C) 2008, 2009, 2010 + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "sysdep.h" +#include "bfd.h" +#include "bfd_stdint.h" +#include "libbfd.h" +#include "elf-bfd.h" +#include "elf/rx.h" +#include "libiberty.h" + +#define RX_OPCODE_BIG_ENDIAN 0 + +#ifdef DEBUG +char * rx_get_reloc (long); +void rx_dump_symtab (bfd *, void *, void *); +#endif + +#define RXREL(n,sz,bit,shift,complain,pcrel) \ + HOWTO (R_RX_##n, shift, sz, bit, pcrel, 0, complain_overflow_ ## complain, \ + bfd_elf_generic_reloc, "R_RX_" #n, FALSE, 0, ~0, FALSE) + +/* Note that the relocations around 0x7f are internal to this file; + feel free to move them as needed to avoid conflicts with published + relocation numbers. */ + +static reloc_howto_type rx_elf_howto_table [] = +{ + RXREL (NONE, 0, 0, 0, dont, FALSE), + RXREL (DIR32, 2, 32, 0, signed, FALSE), + RXREL (DIR24S, 2, 24, 0, signed, FALSE), + RXREL (DIR16, 1, 16, 0, dont, FALSE), + RXREL (DIR16U, 1, 16, 0, unsigned, FALSE), + RXREL (DIR16S, 1, 16, 0, signed, FALSE), + RXREL (DIR8, 0, 8, 0, dont, FALSE), + RXREL (DIR8U, 0, 8, 0, unsigned, FALSE), + RXREL (DIR8S, 0, 8, 0, signed, FALSE), + RXREL (DIR24S_PCREL, 2, 24, 0, signed, TRUE), + RXREL (DIR16S_PCREL, 1, 16, 0, signed, TRUE), + RXREL (DIR8S_PCREL, 0, 8, 0, signed, TRUE), + RXREL (DIR16UL, 1, 16, 2, unsigned, FALSE), + RXREL (DIR16UW, 1, 16, 1, unsigned, FALSE), + RXREL (DIR8UL, 0, 8, 2, unsigned, FALSE), + RXREL (DIR8UW, 0, 8, 1, unsigned, FALSE), + RXREL (DIR32_REV, 1, 16, 0, dont, FALSE), + RXREL (DIR16_REV, 1, 16, 0, dont, FALSE), + RXREL (DIR3U_PCREL, 0, 3, 0, dont, TRUE), + + EMPTY_HOWTO (0x13), + EMPTY_HOWTO (0x14), + EMPTY_HOWTO (0x15), + EMPTY_HOWTO (0x16), + EMPTY_HOWTO (0x17), + EMPTY_HOWTO (0x18), + EMPTY_HOWTO (0x19), + EMPTY_HOWTO (0x1a), + EMPTY_HOWTO (0x1b), + EMPTY_HOWTO (0x1c), + EMPTY_HOWTO (0x1d), + EMPTY_HOWTO (0x1e), + EMPTY_HOWTO (0x1f), + + RXREL (RH_3_PCREL, 0, 3, 0, signed, TRUE), + RXREL (RH_16_OP, 1, 16, 0, signed, FALSE), + RXREL (RH_24_OP, 2, 24, 0, signed, FALSE), + RXREL (RH_32_OP, 2, 32, 0, signed, FALSE), + RXREL (RH_24_UNS, 2, 24, 0, unsigned, FALSE), + RXREL (RH_8_NEG, 0, 8, 0, signed, FALSE), + RXREL (RH_16_NEG, 1, 16, 0, signed, FALSE), + RXREL (RH_24_NEG, 2, 24, 0, signed, FALSE), + RXREL (RH_32_NEG, 2, 32, 0, signed, FALSE), + RXREL (RH_DIFF, 2, 32, 0, signed, FALSE), + RXREL (RH_GPRELB, 1, 16, 0, unsigned, FALSE), + RXREL (RH_GPRELW, 1, 16, 0, unsigned, FALSE), + RXREL (RH_GPRELL, 1, 16, 0, unsigned, FALSE), + RXREL (RH_RELAX, 0, 0, 0, dont, FALSE), + + EMPTY_HOWTO (0x2e), + EMPTY_HOWTO (0x2f), + EMPTY_HOWTO (0x30), + EMPTY_HOWTO (0x31), + EMPTY_HOWTO (0x32), + EMPTY_HOWTO (0x33), + EMPTY_HOWTO (0x34), + EMPTY_HOWTO (0x35), + EMPTY_HOWTO (0x36), + EMPTY_HOWTO (0x37), + EMPTY_HOWTO (0x38), + EMPTY_HOWTO (0x39), + EMPTY_HOWTO (0x3a), + EMPTY_HOWTO (0x3b), + EMPTY_HOWTO (0x3c), + EMPTY_HOWTO (0x3d), + EMPTY_HOWTO (0x3e), + EMPTY_HOWTO (0x3f), + EMPTY_HOWTO (0x40), + + RXREL (ABS32, 2, 32, 0, dont, FALSE), + RXREL (ABS24S, 2, 24, 0, signed, FALSE), + RXREL (ABS16, 1, 16, 0, dont, FALSE), + RXREL (ABS16U, 1, 16, 0, unsigned, FALSE), + RXREL (ABS16S, 1, 16, 0, signed, FALSE), + RXREL (ABS8, 0, 8, 0, dont, FALSE), + RXREL (ABS8U, 0, 8, 0, unsigned, FALSE), + RXREL (ABS8S, 0, 8, 0, signed, FALSE), + RXREL (ABS24S_PCREL, 2, 24, 0, signed, TRUE), + RXREL (ABS16S_PCREL, 1, 16, 0, signed, TRUE), + RXREL (ABS8S_PCREL, 0, 8, 0, signed, TRUE), + RXREL (ABS16UL, 1, 16, 0, unsigned, FALSE), + RXREL (ABS16UW, 1, 16, 0, unsigned, FALSE), + RXREL (ABS8UL, 0, 8, 0, unsigned, FALSE), + RXREL (ABS8UW, 0, 8, 0, unsigned, FALSE), + RXREL (ABS32_REV, 2, 32, 0, dont, FALSE), + RXREL (ABS16_REV, 1, 16, 0, dont, FALSE), + +#define STACK_REL_P(x) ((x) <= R_RX_ABS16_REV && (x) >= R_RX_ABS32) + + EMPTY_HOWTO (0x52), + EMPTY_HOWTO (0x53), + EMPTY_HOWTO (0x54), + EMPTY_HOWTO (0x55), + EMPTY_HOWTO (0x56), + EMPTY_HOWTO (0x57), + EMPTY_HOWTO (0x58), + EMPTY_HOWTO (0x59), + EMPTY_HOWTO (0x5a), + EMPTY_HOWTO (0x5b), + EMPTY_HOWTO (0x5c), + EMPTY_HOWTO (0x5d), + EMPTY_HOWTO (0x5e), + EMPTY_HOWTO (0x5f), + EMPTY_HOWTO (0x60), + EMPTY_HOWTO (0x61), + EMPTY_HOWTO (0x62), + EMPTY_HOWTO (0x63), + EMPTY_HOWTO (0x64), + EMPTY_HOWTO (0x65), + EMPTY_HOWTO (0x66), + EMPTY_HOWTO (0x67), + EMPTY_HOWTO (0x68), + EMPTY_HOWTO (0x69), + EMPTY_HOWTO (0x6a), + EMPTY_HOWTO (0x6b), + EMPTY_HOWTO (0x6c), + EMPTY_HOWTO (0x6d), + EMPTY_HOWTO (0x6e), + EMPTY_HOWTO (0x6f), + EMPTY_HOWTO (0x70), + EMPTY_HOWTO (0x71), + EMPTY_HOWTO (0x72), + EMPTY_HOWTO (0x73), + EMPTY_HOWTO (0x74), + EMPTY_HOWTO (0x75), + EMPTY_HOWTO (0x76), + EMPTY_HOWTO (0x77), + + /* These are internal. */ + /* A 5-bit unsigned displacement to a B/W/L address, at bit position 8/12. */ + /* ---- ---- 4--- 3210. */ +#define R_RX_RH_ABS5p8B 0x78 + RXREL (RH_ABS5p8B, 0, 0, 0, dont, FALSE), +#define R_RX_RH_ABS5p8W 0x79 + RXREL (RH_ABS5p8W, 0, 0, 0, dont, FALSE), +#define R_RX_RH_ABS5p8L 0x7a + RXREL (RH_ABS5p8L, 0, 0, 0, dont, FALSE), + /* A 5-bit unsigned displacement to a B/W/L address, at bit position 5/12. */ + /* ---- -432 1--- 0---. */ +#define R_RX_RH_ABS5p5B 0x7b + RXREL (RH_ABS5p5B, 0, 0, 0, dont, FALSE), +#define R_RX_RH_ABS5p5W 0x7c + RXREL (RH_ABS5p5W, 0, 0, 0, dont, FALSE), +#define R_RX_RH_ABS5p5L 0x7d + RXREL (RH_ABS5p5L, 0, 0, 0, dont, FALSE), + /* A 4-bit unsigned immediate at bit position 8. */ +#define R_RX_RH_UIMM4p8 0x7e + RXREL (RH_UIMM4p8, 0, 0, 0, dont, FALSE), + /* A 4-bit negative unsigned immediate at bit position 8. */ +#define R_RX_RH_UNEG4p8 0x7f + RXREL (RH_UNEG4p8, 0, 0, 0, dont, FALSE), + /* End of internal relocs. */ + + RXREL (SYM, 2, 32, 0, dont, FALSE), + RXREL (OPneg, 2, 32, 0, dont, FALSE), + RXREL (OPadd, 2, 32, 0, dont, FALSE), + RXREL (OPsub, 2, 32, 0, dont, FALSE), + RXREL (OPmul, 2, 32, 0, dont, FALSE), + RXREL (OPdiv, 2, 32, 0, dont, FALSE), + RXREL (OPshla, 2, 32, 0, dont, FALSE), + RXREL (OPshra, 2, 32, 0, dont, FALSE), + RXREL (OPsctsize, 2, 32, 0, dont, FALSE), + RXREL (OPscttop, 2, 32, 0, dont, FALSE), + RXREL (OPand, 2, 32, 0, dont, FALSE), + RXREL (OPor, 2, 32, 0, dont, FALSE), + RXREL (OPxor, 2, 32, 0, dont, FALSE), + RXREL (OPnot, 2, 32, 0, dont, FALSE), + RXREL (OPmod, 2, 32, 0, dont, FALSE), + RXREL (OPromtop, 2, 32, 0, dont, FALSE), + RXREL (OPramtop, 2, 32, 0, dont, FALSE) +}; + +/* Map BFD reloc types to RX ELF reloc types. */ + +struct rx_reloc_map +{ + bfd_reloc_code_real_type bfd_reloc_val; + unsigned int rx_reloc_val; +}; + +static const struct rx_reloc_map rx_reloc_map [] = +{ + { BFD_RELOC_NONE, R_RX_NONE }, + { BFD_RELOC_8, R_RX_DIR8S }, + { BFD_RELOC_16, R_RX_DIR16S }, + { BFD_RELOC_24, R_RX_DIR24S }, + { BFD_RELOC_32, R_RX_DIR32 }, + { BFD_RELOC_RX_16_OP, R_RX_DIR16 }, + { BFD_RELOC_RX_DIR3U_PCREL, R_RX_DIR3U_PCREL }, + { BFD_RELOC_8_PCREL, R_RX_DIR8S_PCREL }, + { BFD_RELOC_16_PCREL, R_RX_DIR16S_PCREL }, + { BFD_RELOC_24_PCREL, R_RX_DIR24S_PCREL }, + { BFD_RELOC_RX_8U, R_RX_DIR8U }, + { BFD_RELOC_RX_16U, R_RX_DIR16U }, + { BFD_RELOC_RX_24U, R_RX_RH_24_UNS }, + { BFD_RELOC_RX_NEG8, R_RX_RH_8_NEG }, + { BFD_RELOC_RX_NEG16, R_RX_RH_16_NEG }, + { BFD_RELOC_RX_NEG24, R_RX_RH_24_NEG }, + { BFD_RELOC_RX_NEG32, R_RX_RH_32_NEG }, + { BFD_RELOC_RX_DIFF, R_RX_RH_DIFF }, + { BFD_RELOC_RX_GPRELB, R_RX_RH_GPRELB }, + { BFD_RELOC_RX_GPRELW, R_RX_RH_GPRELW }, + { BFD_RELOC_RX_GPRELL, R_RX_RH_GPRELL }, + { BFD_RELOC_RX_RELAX, R_RX_RH_RELAX }, + { BFD_RELOC_RX_SYM, R_RX_SYM }, + { BFD_RELOC_RX_OP_SUBTRACT, R_RX_OPsub }, + { BFD_RELOC_RX_OP_NEG, R_RX_OPneg }, + { BFD_RELOC_RX_ABS8, R_RX_ABS8 }, + { BFD_RELOC_RX_ABS16, R_RX_ABS16 }, + { BFD_RELOC_RX_ABS16_REV, R_RX_ABS16_REV }, + { BFD_RELOC_RX_ABS32, R_RX_ABS32 }, + { BFD_RELOC_RX_ABS32_REV, R_RX_ABS32_REV }, + { BFD_RELOC_RX_ABS16UL, R_RX_ABS16UL }, + { BFD_RELOC_RX_ABS16UW, R_RX_ABS16UW }, + { BFD_RELOC_RX_ABS16U, R_RX_ABS16U } +}; + +#define BIGE(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG) + +static reloc_howto_type * +rx_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, + bfd_reloc_code_real_type code) +{ + unsigned int i; + + if (code == BFD_RELOC_RX_32_OP) + return rx_elf_howto_table + R_RX_DIR32; + + for (i = ARRAY_SIZE (rx_reloc_map); --i;) + if (rx_reloc_map [i].bfd_reloc_val == code) + return rx_elf_howto_table + rx_reloc_map[i].rx_reloc_val; + + return NULL; +} + +static reloc_howto_type * +rx_reloc_name_lookup (bfd * abfd ATTRIBUTE_UNUSED, const char * r_name) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE (rx_elf_howto_table); i++) + if (rx_elf_howto_table[i].name != NULL + && strcasecmp (rx_elf_howto_table[i].name, r_name) == 0) + return rx_elf_howto_table + i; + + return NULL; +} + +/* Set the howto pointer for an RX ELF reloc. */ + +static void +rx_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, + arelent * cache_ptr, + Elf_Internal_Rela * dst) +{ + unsigned int r_type; + + r_type = ELF32_R_TYPE (dst->r_info); + BFD_ASSERT (r_type < (unsigned int) R_RX_max); + cache_ptr->howto = rx_elf_howto_table + r_type; +} + +static bfd_vma +get_symbol_value (const char * name, + bfd_reloc_status_type * status, + struct bfd_link_info * info, + bfd * input_bfd, + asection * input_section, + int offset) +{ + bfd_vma value = 0; + struct bfd_link_hash_entry * h; + + h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE); + + if (h == NULL + || (h->type != bfd_link_hash_defined + && h->type != bfd_link_hash_defweak)) + * status = info->callbacks->undefined_symbol + (info, name, input_bfd, input_section, offset, TRUE); + else + value = (h->u.def.value + + h->u.def.section->output_section->vma + + h->u.def.section->output_offset); + + return value; +} + +static bfd_vma +get_gp (bfd_reloc_status_type * status, + struct bfd_link_info * info, + bfd * abfd, + asection * sec, + int offset) +{ + static bfd_boolean cached = FALSE; + static bfd_vma cached_value = 0; + + if (!cached) + { + cached_value = get_symbol_value ("__gp", status, info, abfd, sec, offset); + cached = TRUE; + } + return cached_value; +} + +static bfd_vma +get_romstart (bfd_reloc_status_type * status, + struct bfd_link_info * info, + bfd * abfd, + asection * sec, + int offset) +{ + static bfd_boolean cached = FALSE; + static bfd_vma cached_value = 0; + + if (!cached) + { + cached_value = get_symbol_value ("_start", status, info, abfd, sec, offset); + cached = TRUE; + } + return cached_value; +} + +static bfd_vma +get_ramstart (bfd_reloc_status_type * status, + struct bfd_link_info * info, + bfd * abfd, + asection * sec, + int offset) +{ + static bfd_boolean cached = FALSE; + static bfd_vma cached_value = 0; + + if (!cached) + { + cached_value = get_symbol_value ("__datastart", status, info, abfd, sec, offset); + cached = TRUE; + } + return cached_value; +} + +#define NUM_STACK_ENTRIES 16 +static int32_t rx_stack [ NUM_STACK_ENTRIES ]; +static unsigned int rx_stack_top; + +#define RX_STACK_PUSH(val) \ + do \ + { \ + if (rx_stack_top < NUM_STACK_ENTRIES) \ + rx_stack [rx_stack_top ++] = (val); \ + else \ + r = bfd_reloc_dangerous; \ + } \ + while (0) + +#define RX_STACK_POP(dest) \ + do \ + { \ + if (rx_stack_top > 0) \ + (dest) = rx_stack [-- rx_stack_top]; \ + else \ + (dest) = 0, r = bfd_reloc_dangerous; \ + } \ + while (0) + +/* Relocate an RX 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 relocatable + 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 relocatable 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 bfd_boolean +rx_elf_relocate_section + (bfd * output_bfd, + struct bfd_link_info * info, + bfd * input_bfd, + asection * input_section, + bfd_byte * contents, + Elf_Internal_Rela * relocs, + Elf_Internal_Sym * local_syms, + asection ** local_sections) +{ + Elf_Internal_Shdr * symtab_hdr; + struct elf_link_hash_entry ** sym_hashes; + Elf_Internal_Rela * rel; + Elf_Internal_Rela * relend; + + symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (input_bfd); + relend = relocs + input_section->reloc_count; + 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; + bfd_boolean unresolved_reloc = TRUE; + int r_type; + + r_type = ELF32_R_TYPE (rel->r_info); + r_symndx = ELF32_R_SYM (rel->r_info); + + howto = rx_elf_howto_table + ELF32_R_TYPE (rel->r_info); + h = NULL; + sym = NULL; + sec = NULL; + relocation = 0; + + if (r_symndx < symtab_hdr->sh_info) + { + sym = local_syms + r_symndx; + sec = local_sections [r_symndx]; + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, & sec, rel); + + name = bfd_elf_string_from_elf_section + (input_bfd, symtab_hdr->sh_link, sym->st_name); + name = (sym->st_name == 0) ? bfd_section_name (input_bfd, sec) : name; + } + else + { + bfd_boolean warned; + + RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, + r_symndx, symtab_hdr, sym_hashes, h, + sec, relocation, unresolved_reloc, + warned); + + name = h->root.root.string; + } + + if (sec != NULL && elf_discarded_section (sec)) + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); + + if (info->relocatable) + { + /* This is a relocatable link. We don't have to change + anything, unless the reloc is against a section symbol, + in which case we have to adjust according to where the + section symbol winds up in the output section. */ + if (sym != NULL && ELF_ST_TYPE (sym->st_info) == STT_SECTION) + rel->r_addend += sec->output_offset; + continue; + } + + if (h != NULL && h->root.type == bfd_link_hash_undefweak) + /* If the symbol is undefined and weak + then the relocation resolves to zero. */ + relocation = 0; + else + { + if (howto->pc_relative) + { + relocation -= (input_section->output_section->vma + + input_section->output_offset + + rel->r_offset); + if (r_type != R_RX_RH_3_PCREL + && r_type != R_RX_DIR3U_PCREL) + relocation ++; + } + + relocation += rel->r_addend; + } + + r = bfd_reloc_ok; + +#define RANGE(a,b) if (a > (long) relocation || (long) relocation > b) r = bfd_reloc_overflow +#define ALIGN(m) if (relocation & m) r = bfd_reloc_other; +#define OP(i) (contents[rel->r_offset + (i)]) +#define WARN_REDHAT(type) \ + _bfd_error_handler (_("%B:%A: Warning: deprecated Red Hat reloc " type " detected against: %s."), \ + input_bfd, input_section, name) + + /* Opcode relocs are always big endian. Data relocs are bi-endian. */ + switch (r_type) + { + case R_RX_NONE: + break; + + case R_RX_RH_RELAX: + break; + + case R_RX_RH_3_PCREL: + WARN_REDHAT ("RX_RH_3_PCREL"); + RANGE (3, 10); + OP (0) &= 0xf8; + OP (0) |= relocation & 0x07; + break; + + case R_RX_RH_8_NEG: + WARN_REDHAT ("RX_RH_8_NEG"); + relocation = - relocation; + case R_RX_DIR8S_PCREL: + RANGE (-128, 127); + OP (0) = relocation; + break; + + case R_RX_DIR8S: + RANGE (-128, 255); + OP (0) = relocation; + break; + + case R_RX_DIR8U: + RANGE (0, 255); + OP (0) = relocation; + break; + + case R_RX_RH_16_NEG: + WARN_REDHAT ("RX_RH_16_NEG"); + relocation = - relocation; + case R_RX_DIR16S_PCREL: + RANGE (-32768, 32767); +#if RX_OPCODE_BIG_ENDIAN +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + case R_RX_RH_16_OP: + WARN_REDHAT ("RX_RH_16_OP"); + RANGE (-32768, 32767); +#if RX_OPCODE_BIG_ENDIAN + OP (1) = relocation; + OP (0) = relocation >> 8; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + case R_RX_DIR16S: + RANGE (-32768, 65535); + if (BIGE (output_bfd) && !(input_section->flags & SEC_CODE)) + { + OP (1) = relocation; + OP (0) = relocation >> 8; + } + else + { + OP (0) = relocation; + OP (1) = relocation >> 8; + } + break; + + case R_RX_DIR16U: + RANGE (0, 65536); +#if RX_OPCODE_BIG_ENDIAN + OP (1) = relocation; + OP (0) = relocation >> 8; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + case R_RX_DIR16: + RANGE (-32768, 65536); +#if RX_OPCODE_BIG_ENDIAN + OP (1) = relocation; + OP (0) = relocation >> 8; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + case R_RX_DIR16_REV: + RANGE (-32768, 65536); +#if RX_OPCODE_BIG_ENDIAN + OP (0) = relocation; + OP (1) = relocation >> 8; +#else + OP (1) = relocation; + OP (0) = relocation >> 8; +#endif + break; + + case R_RX_DIR3U_PCREL: + RANGE (3, 10); + OP (0) &= 0xf8; + OP (0) |= relocation & 0x07; + break; + + case R_RX_RH_24_NEG: + WARN_REDHAT ("RX_RH_24_NEG"); + relocation = - relocation; + case R_RX_DIR24S_PCREL: + RANGE (-0x800000, 0x7fffff); +#if RX_OPCODE_BIG_ENDIAN + OP (2) = relocation; + OP (1) = relocation >> 8; + OP (0) = relocation >> 16; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; +#endif + break; + + case R_RX_RH_24_OP: + WARN_REDHAT ("RX_RH_24_OP"); + RANGE (-0x800000, 0x7fffff); +#if RX_OPCODE_BIG_ENDIAN + OP (2) = relocation; + OP (1) = relocation >> 8; + OP (0) = relocation >> 16; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; +#endif + break; + + case R_RX_DIR24S: + RANGE (-0x800000, 0x7fffff); + if (BIGE (output_bfd) && !(input_section->flags & SEC_CODE)) + { + OP (2) = relocation; + OP (1) = relocation >> 8; + OP (0) = relocation >> 16; + } + else + { + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + } + break; + + case R_RX_RH_24_UNS: + WARN_REDHAT ("RX_RH_24_UNS"); + RANGE (0, 0xffffff); +#if RX_OPCODE_BIG_ENDIAN + OP (2) = relocation; + OP (1) = relocation >> 8; + OP (0) = relocation >> 16; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; +#endif + break; + + case R_RX_RH_32_NEG: + WARN_REDHAT ("RX_RH_32_NEG"); + relocation = - relocation; +#if RX_OPCODE_BIG_ENDIAN + OP (3) = relocation; + OP (2) = relocation >> 8; + OP (1) = relocation >> 16; + OP (0) = relocation >> 24; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + OP (3) = relocation >> 24; +#endif + break; + + case R_RX_RH_32_OP: + WARN_REDHAT ("RX_RH_32_OP"); +#if RX_OPCODE_BIG_ENDIAN + OP (3) = relocation; + OP (2) = relocation >> 8; + OP (1) = relocation >> 16; + OP (0) = relocation >> 24; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + OP (3) = relocation >> 24; +#endif + break; + + case R_RX_DIR32: + if (BIGE (output_bfd) && !(input_section->flags & SEC_CODE)) + { + OP (3) = relocation; + OP (2) = relocation >> 8; + OP (1) = relocation >> 16; + OP (0) = relocation >> 24; + } + else + { + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + OP (3) = relocation >> 24; + } + break; + + case R_RX_DIR32_REV: + if (BIGE (output_bfd)) + { + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + OP (3) = relocation >> 24; + } + else + { + OP (3) = relocation; + OP (2) = relocation >> 8; + OP (1) = relocation >> 16; + OP (0) = relocation >> 24; + } + break; + + case R_RX_RH_DIFF: + { + bfd_vma val; + WARN_REDHAT ("RX_RH_DIFF"); + val = bfd_get_32 (output_bfd, & OP (0)); + val -= relocation; + bfd_put_32 (output_bfd, val, & OP (0)); + } + break; + + case R_RX_RH_GPRELB: + WARN_REDHAT ("RX_RH_GPRELB"); + relocation -= get_gp (&r, info, input_bfd, input_section, rel->r_offset); + RANGE (0, 65535); +#if RX_OPCODE_BIG_ENDIAN + OP (1) = relocation; + OP (0) = relocation >> 8; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + case R_RX_RH_GPRELW: + WARN_REDHAT ("RX_RH_GPRELW"); + relocation -= get_gp (&r, info, input_bfd, input_section, rel->r_offset); + ALIGN (1); + relocation >>= 1; + RANGE (0, 65535); +#if RX_OPCODE_BIG_ENDIAN + OP (1) = relocation; + OP (0) = relocation >> 8; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + case R_RX_RH_GPRELL: + WARN_REDHAT ("RX_RH_GPRELL"); + relocation -= get_gp (&r, info, input_bfd, input_section, rel->r_offset); + ALIGN (3); + relocation >>= 2; + RANGE (0, 65535); +#if RX_OPCODE_BIG_ENDIAN + OP (1) = relocation; + OP (0) = relocation >> 8; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + /* Internal relocations just for relaxation: */ + case R_RX_RH_ABS5p5B: + RX_STACK_POP (relocation); + RANGE (0, 31); + OP (0) &= 0xf8; + OP (0) |= relocation >> 2; + OP (1) &= 0x77; + OP (1) |= (relocation << 6) & 0x80; + OP (1) |= (relocation << 3) & 0x08; + break; + + case R_RX_RH_ABS5p5W: + RX_STACK_POP (relocation); + RANGE (0, 62); + ALIGN (1); + relocation >>= 1; + OP (0) &= 0xf8; + OP (0) |= relocation >> 2; + OP (1) &= 0x77; + OP (1) |= (relocation << 6) & 0x80; + OP (1) |= (relocation << 3) & 0x08; + break; + + case R_RX_RH_ABS5p5L: + RX_STACK_POP (relocation); + RANGE (0, 124); + ALIGN (3); + relocation >>= 2; + OP (0) &= 0xf8; + OP (0) |= relocation >> 2; + OP (1) &= 0x77; + OP (1) |= (relocation << 6) & 0x80; + OP (1) |= (relocation << 3) & 0x08; + break; + + case R_RX_RH_ABS5p8B: + RX_STACK_POP (relocation); + RANGE (0, 31); + OP (0) &= 0x70; + OP (0) |= (relocation << 3) & 0x80; + OP (0) |= relocation & 0x0f; + break; + + case R_RX_RH_ABS5p8W: + RX_STACK_POP (relocation); + RANGE (0, 62); + ALIGN (1); + relocation >>= 1; + OP (0) &= 0x70; + OP (0) |= (relocation << 3) & 0x80; + OP (0) |= relocation & 0x0f; + break; + + case R_RX_RH_ABS5p8L: + RX_STACK_POP (relocation); + RANGE (0, 124); + ALIGN (3); + relocation >>= 2; + OP (0) &= 0x70; + OP (0) |= (relocation << 3) & 0x80; + OP (0) |= relocation & 0x0f; + break; + + case R_RX_RH_UIMM4p8: + RANGE (0, 15); + OP (0) &= 0x0f; + OP (0) |= relocation << 4; + break; + + case R_RX_RH_UNEG4p8: + RANGE (-15, 0); + OP (0) &= 0x0f; + OP (0) |= (-relocation) << 4; + break; + + /* Complex reloc handling: */ + + case R_RX_ABS32: + RX_STACK_POP (relocation); +#if RX_OPCODE_BIG_ENDIAN + OP (3) = relocation; + OP (2) = relocation >> 8; + OP (1) = relocation >> 16; + OP (0) = relocation >> 24; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + OP (3) = relocation >> 24; +#endif + break; + + case R_RX_ABS32_REV: + RX_STACK_POP (relocation); +#if RX_OPCODE_BIG_ENDIAN + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + OP (3) = relocation >> 24; +#else + OP (3) = relocation; + OP (2) = relocation >> 8; + OP (1) = relocation >> 16; + OP (0) = relocation >> 24; +#endif + break; + + case R_RX_ABS24S_PCREL: + case R_RX_ABS24S: + RX_STACK_POP (relocation); + RANGE (-0x800000, 0x7fffff); + if (BIGE (output_bfd) && !(input_section->flags & SEC_CODE)) + { + OP (2) = relocation; + OP (1) = relocation >> 8; + OP (0) = relocation >> 16; + } + else + { + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + } + break; + + case R_RX_ABS16: + RX_STACK_POP (relocation); + RANGE (-32768, 65535); +#if RX_OPCODE_BIG_ENDIAN + OP (1) = relocation; + OP (0) = relocation >> 8; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + case R_RX_ABS16_REV: + RX_STACK_POP (relocation); + RANGE (-32768, 65535); +#if RX_OPCODE_BIG_ENDIAN + OP (0) = relocation; + OP (1) = relocation >> 8; +#else + OP (1) = relocation; + OP (0) = relocation >> 8; +#endif + break; + + case R_RX_ABS16S_PCREL: + case R_RX_ABS16S: + RX_STACK_POP (relocation); + RANGE (-32768, 32767); + if (BIGE (output_bfd) && !(input_section->flags & SEC_CODE)) + { + OP (1) = relocation; + OP (0) = relocation >> 8; + } + else + { + OP (0) = relocation; + OP (1) = relocation >> 8; + } + break; + + case R_RX_ABS16U: + RX_STACK_POP (relocation); + RANGE (0, 65536); +#if RX_OPCODE_BIG_ENDIAN + OP (1) = relocation; + OP (0) = relocation >> 8; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + case R_RX_ABS16UL: + RX_STACK_POP (relocation); + relocation >>= 2; + RANGE (0, 65536); +#if RX_OPCODE_BIG_ENDIAN + OP (1) = relocation; + OP (0) = relocation >> 8; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + case R_RX_ABS16UW: + RX_STACK_POP (relocation); + relocation >>= 1; + RANGE (0, 65536); +#if RX_OPCODE_BIG_ENDIAN + OP (1) = relocation; + OP (0) = relocation >> 8; +#else + OP (0) = relocation; + OP (1) = relocation >> 8; +#endif + break; + + case R_RX_ABS8: + RX_STACK_POP (relocation); + RANGE (-128, 255); + OP (0) = relocation; + break; + + case R_RX_ABS8U: + RX_STACK_POP (relocation); + RANGE (0, 255); + OP (0) = relocation; + break; + + case R_RX_ABS8UL: + RX_STACK_POP (relocation); + relocation >>= 2; + RANGE (0, 255); + OP (0) = relocation; + break; + + case R_RX_ABS8UW: + RX_STACK_POP (relocation); + relocation >>= 1; + RANGE (0, 255); + OP (0) = relocation; + break; + + case R_RX_ABS8S_PCREL: + case R_RX_ABS8S: + RX_STACK_POP (relocation); + RANGE (-128, 127); + OP (0) = relocation; + break; + + case R_RX_SYM: + if (r_symndx < symtab_hdr->sh_info) + RX_STACK_PUSH (sec->output_section->vma + + sec->output_offset + + sym->st_value); + else + { + if (h != NULL + && (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak)) + RX_STACK_PUSH (h->root.u.def.value + + sec->output_section->vma + + sec->output_offset); + else + _bfd_error_handler (_("Warning: RX_SYM reloc with an unknown symbol")); + } + break; + + case R_RX_OPneg: + { + int32_t tmp; + + RX_STACK_POP (tmp); + tmp = - tmp; + RX_STACK_PUSH (tmp); + } + break; + + case R_RX_OPadd: + { + int32_t tmp1, tmp2; + + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 += tmp2; + RX_STACK_PUSH (tmp1); + } + break; + + case R_RX_OPsub: + { + int32_t tmp1, tmp2; + + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp2 -= tmp1; + RX_STACK_PUSH (tmp2); + } + break; + + case R_RX_OPmul: + { + int32_t tmp1, tmp2; + + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 *= tmp2; + RX_STACK_PUSH (tmp1); + } + break; + + case R_RX_OPdiv: + { + int32_t tmp1, tmp2; + + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 /= tmp2; + RX_STACK_PUSH (tmp1); + } + break; + + case R_RX_OPshla: + { + int32_t tmp1, tmp2; + + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 <<= tmp2; + RX_STACK_PUSH (tmp1); + } + break; + + case R_RX_OPshra: + { + int32_t tmp1, tmp2; + + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 >>= tmp2; + RX_STACK_PUSH (tmp1); + } + break; + + case R_RX_OPsctsize: + RX_STACK_PUSH (input_section->size); + break; + + case R_RX_OPscttop: + RX_STACK_PUSH (input_section->output_section->vma); + break; + + case R_RX_OPand: + { + int32_t tmp1, tmp2; + + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 &= tmp2; + RX_STACK_PUSH (tmp1); + } + break; + + case R_RX_OPor: + { + int32_t tmp1, tmp2; + + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 |= tmp2; + RX_STACK_PUSH (tmp1); + } + break; + + case R_RX_OPxor: + { + int32_t tmp1, tmp2; + + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 ^= tmp2; + RX_STACK_PUSH (tmp1); + } + break; + + case R_RX_OPnot: + { + int32_t tmp; + + RX_STACK_POP (tmp); + tmp = ~ tmp; + RX_STACK_PUSH (tmp); + } + break; + + case R_RX_OPmod: + { + int32_t tmp1, tmp2; + + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 %= tmp2; + RX_STACK_PUSH (tmp1); + } + break; + + case R_RX_OPromtop: + RX_STACK_PUSH (get_romstart (&r, info, input_bfd, input_section, rel->r_offset)); + break; + + case R_RX_OPramtop: + RX_STACK_PUSH (get_ramstart (&r, info, input_bfd, input_section, rel->r_offset)); + break; + + default: + r = bfd_reloc_notsupported; + break; + } + + if (r != bfd_reloc_ok) + { + const char * msg = NULL; + + switch (r) + { + case bfd_reloc_overflow: + /* Catch the case of a missing function declaration + and emit a more helpful error message. */ + if (r_type == R_RX_DIR24S_PCREL) + msg = _("%B(%A): error: call to undefined function '%s'"); + else + r = info->callbacks->reloc_overflow + (info, (h ? &h->root : NULL), 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_other: + msg = _("%B(%A): warning: unaligned access to symbol '%s' in the small data area"); + break; + + case bfd_reloc_outofrange: + msg = _("%B(%A): internal error: out of range error"); + break; + + case bfd_reloc_notsupported: + msg = _("%B(%A): internal error: unsupported relocation error"); + break; + + case bfd_reloc_dangerous: + msg = _("%B(%A): internal error: dangerous relocation"); + break; + + default: + msg = _("%B(%A): internal error: unknown error"); + break; + } + + if (msg) + _bfd_error_handler (msg, input_bfd, input_section, name); + + if (! r) + return FALSE; + } + } + + return TRUE; +} + +/* Relaxation Support. */ + +/* Progression of relocations from largest operand size to smallest + operand size. */ + +static int +next_smaller_reloc (int r) +{ + switch (r) + { + case R_RX_DIR32: return R_RX_DIR24S; + case R_RX_DIR24S: return R_RX_DIR16S; + case R_RX_DIR16S: return R_RX_DIR8S; + case R_RX_DIR8S: return R_RX_NONE; + + case R_RX_DIR16: return R_RX_DIR8; + case R_RX_DIR8: return R_RX_NONE; + + case R_RX_DIR16U: return R_RX_DIR8U; + case R_RX_DIR8U: return R_RX_NONE; + + case R_RX_DIR24S_PCREL: return R_RX_DIR16S_PCREL; + case R_RX_DIR16S_PCREL: return R_RX_DIR8S_PCREL; + case R_RX_DIR8S_PCREL: return R_RX_DIR3U_PCREL; + + case R_RX_DIR16UL: return R_RX_DIR8UL; + case R_RX_DIR8UL: return R_RX_NONE; + case R_RX_DIR16UW: return R_RX_DIR8UW; + case R_RX_DIR8UW: return R_RX_NONE; + + case R_RX_RH_32_OP: return R_RX_RH_24_OP; + case R_RX_RH_24_OP: return R_RX_RH_16_OP; + case R_RX_RH_16_OP: return R_RX_DIR8; + + case R_RX_ABS32: return R_RX_ABS24S; + case R_RX_ABS24S: return R_RX_ABS16S; + case R_RX_ABS16: return R_RX_ABS8; + case R_RX_ABS16U: return R_RX_ABS8U; + case R_RX_ABS16S: return R_RX_ABS8S; + case R_RX_ABS8: return R_RX_NONE; + case R_RX_ABS8U: return R_RX_NONE; + case R_RX_ABS8S: return R_RX_NONE; + case R_RX_ABS24S_PCREL: return R_RX_ABS16S_PCREL; + case R_RX_ABS16S_PCREL: return R_RX_ABS8S_PCREL; + case R_RX_ABS8S_PCREL: return R_RX_NONE; + case R_RX_ABS16UL: return R_RX_ABS8UL; + case R_RX_ABS16UW: return R_RX_ABS8UW; + case R_RX_ABS8UL: return R_RX_NONE; + case R_RX_ABS8UW: return R_RX_NONE; + } + return r; +}; + +/* Delete some bytes from a section while relaxing. */ + +static bfd_boolean +elf32_rx_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count, + Elf_Internal_Rela *alignment_rel, int force_snip) +{ + Elf_Internal_Shdr * symtab_hdr; + unsigned int sec_shndx; + bfd_byte * contents; + Elf_Internal_Rela * irel; + Elf_Internal_Rela * irelend; + Elf_Internal_Sym * isym; + Elf_Internal_Sym * isymend; + bfd_vma toaddr; + unsigned int symcount; + struct elf_link_hash_entry ** sym_hashes; + struct elf_link_hash_entry ** end_hashes; + + if (!alignment_rel) + force_snip = 1; + + sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); + + contents = elf_section_data (sec)->this_hdr.contents; + + /* The deletion must stop at the next alignment boundary, if + ALIGNMENT_REL is non-NULL. */ + toaddr = sec->size; + if (alignment_rel) + toaddr = alignment_rel->r_offset; + + irel = elf_section_data (sec)->relocs; + irelend = irel + sec->reloc_count; + + /* Actually delete the bytes. */ + memmove (contents + addr, contents + addr + count, + (size_t) (toaddr - addr - count)); + + /* If we don't have an alignment marker to worry about, we can just + shrink the section. Otherwise, we have to fill in the newly + created gap with NOP insns (0x03). */ + if (force_snip) + sec->size -= count; + else + memset (contents + toaddr - count, 0x03, count); + + /* Adjust all the relocs. */ + for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++) + { + /* Get the new reloc address. */ + if (irel->r_offset > addr + && (irel->r_offset < toaddr + || (force_snip && irel->r_offset == toaddr))) + irel->r_offset -= count; + + /* If we see an ALIGN marker at the end of the gap, we move it + to the beginning of the gap, since marking these gaps is what + they're for. */ + if (irel->r_offset == toaddr + && ELF32_R_TYPE (irel->r_info) == R_RX_RH_RELAX + && irel->r_addend & RX_RELAXA_ALIGN) + irel->r_offset -= count; + } + + /* Adjust the local symbols defined in this section. */ + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + isym = (Elf_Internal_Sym *) symtab_hdr->contents; + isymend = isym + symtab_hdr->sh_info; + + for (; isym < isymend; isym++) + { + /* If the symbol is in the range of memory we just moved, we + have to adjust its value. */ + if (isym->st_shndx == sec_shndx + && isym->st_value > addr + && isym->st_value < toaddr) + isym->st_value -= count; + + /* If the symbol *spans* the bytes we just deleted (i.e. it's + *end* is in the moved bytes but it's *start* isn't), then we + must adjust its size. */ + if (isym->st_shndx == sec_shndx + && isym->st_value < addr + && isym->st_value + isym->st_size > addr + && isym->st_value + isym->st_size < toaddr) + isym->st_size -= count; + } + + /* Now adjust the global symbols defined in this section. */ + 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) + { + /* As above, adjust the value if needed. */ + if (sym_hash->root.u.def.value > addr + && sym_hash->root.u.def.value < toaddr) + sym_hash->root.u.def.value -= count; + + /* As above, adjust the size if needed. */ + if (sym_hash->root.u.def.value < addr + && sym_hash->root.u.def.value + sym_hash->size > addr + && sym_hash->root.u.def.value + sym_hash->size < toaddr) + sym_hash->size -= count; + } + } + + return TRUE; +} + +/* Used to sort relocs by address. If relocs have the same address, + we maintain their relative order, except that R_RX_RH_RELAX + alignment relocs must be the first reloc for any given address. */ + +static void +reloc_bubblesort (Elf_Internal_Rela * r, int count) +{ + int i; + bfd_boolean again; + bfd_boolean swappit; + + /* This is almost a classic bubblesort. It's the slowest sort, but + we're taking advantage of the fact that the relocations are + mostly in order already (the assembler emits them that way) and + we need relocs with the same address to remain in the same + relative order. */ + again = TRUE; + while (again) + { + again = FALSE; + for (i = 0; i < count - 1; i ++) + { + if (r[i].r_offset > r[i + 1].r_offset) + swappit = TRUE; + else if (r[i].r_offset < r[i + 1].r_offset) + swappit = FALSE; + else if (ELF32_R_TYPE (r[i + 1].r_info) == R_RX_RH_RELAX + && (r[i + 1].r_addend & RX_RELAXA_ALIGN)) + swappit = TRUE; + else if (ELF32_R_TYPE (r[i + 1].r_info) == R_RX_RH_RELAX + && (r[i + 1].r_addend & RX_RELAXA_ELIGN) + && !(ELF32_R_TYPE (r[i].r_info) == R_RX_RH_RELAX + && (r[i].r_addend & RX_RELAXA_ALIGN))) + swappit = TRUE; + else + swappit = FALSE; + + if (swappit) + { + Elf_Internal_Rela tmp; + + tmp = r[i]; + r[i] = r[i + 1]; + r[i + 1] = tmp; + /* If we do move a reloc back, re-scan to see if it + needs to be moved even further back. This avoids + most of the O(n^2) behavior for our cases. */ + if (i > 0) + i -= 2; + again = TRUE; + } + } + } +} + + +#define OFFSET_FOR_RELOC(rel, lrel, scale) \ + rx_offset_for_reloc (abfd, rel + 1, symtab_hdr, shndx_buf, intsyms, \ + lrel, abfd, sec, link_info, scale) + +static bfd_vma +rx_offset_for_reloc (bfd * abfd, + Elf_Internal_Rela * rel, + Elf_Internal_Shdr * symtab_hdr, + Elf_External_Sym_Shndx * shndx_buf ATTRIBUTE_UNUSED, + Elf_Internal_Sym * intsyms, + Elf_Internal_Rela ** lrel, + bfd * input_bfd, + asection * input_section, + struct bfd_link_info * info, + int * scale) +{ + bfd_vma symval; + bfd_reloc_status_type r; + + *scale = 1; + + /* REL is the first of 1..N relocations. We compute the symbol + value for each relocation, then combine them if needed. LREL + gets a pointer to the last relocation used. */ + while (1) + { + int32_t tmp1, tmp2; + + /* Get the value of the symbol referred to by the reloc. */ + if (ELF32_R_SYM (rel->r_info) < symtab_hdr->sh_info) + { + /* A local symbol. */ + Elf_Internal_Sym *isym; + asection *ssec; + + isym = intsyms + ELF32_R_SYM (rel->r_info); + + if (isym->st_shndx == SHN_UNDEF) + ssec = bfd_und_section_ptr; + else if (isym->st_shndx == SHN_ABS) + ssec = bfd_abs_section_ptr; + else if (isym->st_shndx == SHN_COMMON) + ssec = bfd_com_section_ptr; + else + ssec = bfd_section_from_elf_index (abfd, + isym->st_shndx); + + /* Initial symbol value. */ + symval = isym->st_value; + + /* GAS may have made this symbol relative to a section, in + which case, we have to add the addend to find the + symbol. */ + if (ELF_ST_TYPE (isym->st_info) == STT_SECTION) + symval += rel->r_addend; + + if (ssec) + { + if ((ssec->flags & SEC_MERGE) + && ssec->sec_info_type == ELF_INFO_TYPE_MERGE) + symval = _bfd_merged_section_offset (abfd, & ssec, + elf_section_data (ssec)->sec_info, + symval); + } + + /* Now make the offset relative to where the linker is putting it. */ + if (ssec) + symval += + ssec->output_section->vma + ssec->output_offset; + + symval += rel->r_addend; + } + else + { + unsigned long indx; + struct elf_link_hash_entry * h; + + /* An external symbol. */ + indx = ELF32_R_SYM (rel->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. */ + if (lrel) + *lrel = rel; + return 0; + } + + symval = (h->root.u.def.value + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); + + symval += rel->r_addend; + } + + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_RX_SYM: + RX_STACK_PUSH (symval); + break; + + case R_RX_OPneg: + RX_STACK_POP (tmp1); + tmp1 = - tmp1; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPadd: + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 += tmp2; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPsub: + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp2 -= tmp1; + RX_STACK_PUSH (tmp2); + break; + + case R_RX_OPmul: + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 *= tmp2; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPdiv: + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 /= tmp2; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPshla: + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 <<= tmp2; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPshra: + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 >>= tmp2; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPsctsize: + RX_STACK_PUSH (input_section->size); + break; + + case R_RX_OPscttop: + RX_STACK_PUSH (input_section->output_section->vma); + break; + + case R_RX_OPand: + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 &= tmp2; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPor: + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 |= tmp2; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPxor: + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 ^= tmp2; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPnot: + RX_STACK_POP (tmp1); + tmp1 = ~ tmp1; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPmod: + RX_STACK_POP (tmp1); + RX_STACK_POP (tmp2); + tmp1 %= tmp2; + RX_STACK_PUSH (tmp1); + break; + + case R_RX_OPromtop: + RX_STACK_PUSH (get_romstart (&r, info, input_bfd, input_section, rel->r_offset)); + break; + + case R_RX_OPramtop: + RX_STACK_PUSH (get_ramstart (&r, info, input_bfd, input_section, rel->r_offset)); + break; + + case R_RX_DIR16UL: + case R_RX_DIR8UL: + case R_RX_ABS16UL: + case R_RX_ABS8UL: + if (rx_stack_top) + RX_STACK_POP (symval); + if (lrel) + *lrel = rel; + *scale = 4; + return symval; + + case R_RX_DIR16UW: + case R_RX_DIR8UW: + case R_RX_ABS16UW: + case R_RX_ABS8UW: + if (rx_stack_top) + RX_STACK_POP (symval); + if (lrel) + *lrel = rel; + *scale = 2; + return symval; + + default: + if (rx_stack_top) + RX_STACK_POP (symval); + if (lrel) + *lrel = rel; + return symval; + } + + rel ++; + } +} + +static void +move_reloc (Elf_Internal_Rela * irel, Elf_Internal_Rela * srel, int delta) +{ + bfd_vma old_offset = srel->r_offset; + + irel ++; + while (irel <= srel) + { + if (irel->r_offset == old_offset) + irel->r_offset += delta; + irel ++; + } +} + +/* Relax one section. */ + +static bfd_boolean +elf32_rx_relax_section (bfd * abfd, + asection * sec, + struct bfd_link_info * link_info, + bfd_boolean * again, + bfd_boolean allow_pcrel3) +{ + 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; + Elf_Internal_Rela * srel; + Elf_Internal_Rela * irelend; + Elf_Internal_Rela * next_alignment; + Elf_Internal_Rela * prev_alignment; + bfd_byte * contents = NULL; + bfd_byte * free_contents = NULL; + Elf_Internal_Sym * intsyms = NULL; + Elf_Internal_Sym * free_intsyms = NULL; + Elf_External_Sym_Shndx * shndx_buf = NULL; + bfd_vma pc; + bfd_vma sec_start; + bfd_vma symval = 0; + int pcrel = 0; + int code = 0; + int section_alignment_glue; + /* how much to scale the relocation by - 1, 2, or 4. */ + int scale; + + /* Assume nothing changes. */ + *again = FALSE; + + /* We don't have to do anything for a relocatable link, if + this section does not have relocs, or if this is not a + code section. */ + if (link_info->relocatable + || (sec->flags & SEC_RELOC) == 0 + || sec->reloc_count == 0 + || (sec->flags & SEC_CODE) == 0) + return TRUE; + + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + + sec_start = sec->output_section->vma + sec->output_offset; + + /* Get the section contents. */ + if (elf_section_data (sec)->this_hdr.contents != NULL) + contents = elf_section_data (sec)->this_hdr.contents; + /* Go get them off disk. */ + else + { + if (! bfd_malloc_and_get_section (abfd, sec, &contents)) + goto error_return; + elf_section_data (sec)->this_hdr.contents = contents; + } + + /* Read this BFD's symbols. */ + /* Get cached copy if it exists. */ + if (symtab_hdr->contents != NULL) + intsyms = (Elf_Internal_Sym *) symtab_hdr->contents; + else + { + intsyms = bfd_elf_get_elf_syms (abfd, symtab_hdr, symtab_hdr->sh_info, 0, NULL, NULL, NULL); + symtab_hdr->contents = (bfd_byte *) intsyms; + } + + 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 a copy of the native relocations. */ + internal_relocs = (_bfd_elf_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; + + /* The RL_ relocs must be just before the operand relocs they go + with, so we must sort them to guarantee this. We use bubblesort + instead of qsort so we can guarantee that relocs with the same + address remain in the same relative order. */ + reloc_bubblesort (internal_relocs, sec->reloc_count); + + /* Walk through them looking for relaxing opportunities. */ + irelend = internal_relocs + sec->reloc_count; + + /* This will either be NULL or a pointer to the next alignment + relocation. */ + next_alignment = internal_relocs; + /* This will be the previous alignment, although at first it points + to the first real relocation. */ + prev_alignment = internal_relocs; + + /* We calculate worst case shrinkage caused by alignment directives. + No fool-proof, but better than either ignoring the problem or + doing heavy duty analysis of all the alignment markers in all + input sections. */ + section_alignment_glue = 0; + for (irel = internal_relocs; irel < irelend; irel++) + if (ELF32_R_TYPE (irel->r_info) == R_RX_RH_RELAX + && irel->r_addend & RX_RELAXA_ALIGN) + { + int this_glue = 1 << (irel->r_addend & RX_RELAXA_ANUM); + + if (section_alignment_glue < this_glue) + section_alignment_glue = this_glue; + } + /* Worst case is all 0..N alignments, in order, causing 2*N-1 byte + shrinkage. */ + section_alignment_glue *= 2; + + for (irel = internal_relocs; irel < irelend; irel++) + { + unsigned char *insn; + int nrelocs; + + /* The insns we care about are all marked with one of these. */ + if (ELF32_R_TYPE (irel->r_info) != R_RX_RH_RELAX) + continue; + + if (irel->r_addend & RX_RELAXA_ALIGN + || next_alignment == internal_relocs) + { + /* When we delete bytes, we need to maintain all the alignments + indicated. In addition, we need to be careful about relaxing + jumps across alignment boundaries - these displacements + *grow* when we delete bytes. For now, don't shrink + displacements across an alignment boundary, just in case. + Note that this only affects relocations to the same + section. */ + prev_alignment = next_alignment; + next_alignment += 2; + while (next_alignment < irelend + && (ELF32_R_TYPE (next_alignment->r_info) != R_RX_RH_RELAX + || !(next_alignment->r_addend & RX_RELAXA_ELIGN))) + next_alignment ++; + if (next_alignment >= irelend || next_alignment->r_offset == 0) + next_alignment = NULL; + } + + /* When we hit alignment markers, see if we've shrunk enough + before them to reduce the gap without violating the alignment + requirements. */ + if (irel->r_addend & RX_RELAXA_ALIGN) + { + /* At this point, the next relocation *should* be the ELIGN + end marker. */ + Elf_Internal_Rela *erel = irel + 1; + unsigned int alignment, nbytes; + + if (ELF32_R_TYPE (erel->r_info) != R_RX_RH_RELAX) + continue; + if (!(erel->r_addend & RX_RELAXA_ELIGN)) + continue; + + alignment = 1 << (irel->r_addend & RX_RELAXA_ANUM); + + if (erel->r_offset - irel->r_offset < alignment) + continue; + + nbytes = erel->r_offset - irel->r_offset; + nbytes /= alignment; + nbytes *= alignment; + + elf32_rx_relax_delete_bytes (abfd, sec, erel->r_offset-nbytes, nbytes, next_alignment, + erel->r_offset == sec->size); + *again = TRUE; + + continue; + } + + if (irel->r_addend & RX_RELAXA_ELIGN) + continue; + + insn = contents + irel->r_offset; + + nrelocs = irel->r_addend & RX_RELAXA_RNUM; + + /* At this point, we have an insn that is a candidate for linker + relaxation. There are NRELOCS relocs following that may be + relaxed, although each reloc may be made of more than one + reloc entry (such as gp-rel symbols). */ + + /* Get the value of the symbol referred to by the reloc. Just + in case this is the last reloc in the list, use the RL's + addend to choose between this reloc (no addend) or the next + (yes addend, which means at least one following reloc). */ + + /* srel points to the "current" reloction for this insn - + actually the last reloc for a given operand, which is the one + we need to update. We check the relaxations in the same + order that the relocations happen, so we'll just push it + along as we go. */ + srel = irel; + + pc = sec->output_section->vma + sec->output_offset + + srel->r_offset; + +#define GET_RELOC \ + symval = OFFSET_FOR_RELOC (srel, &srel, &scale); \ + pcrel = symval - pc + srel->r_addend; \ + nrelocs --; + +#define SNIPNR(offset, nbytes) \ + elf32_rx_relax_delete_bytes (abfd, sec, (insn - contents) + offset, nbytes, next_alignment, 0); +#define SNIP(offset, nbytes, newtype) \ + SNIPNR (offset, nbytes); \ + srel->r_info = ELF32_R_INFO (ELF32_R_SYM (srel->r_info), newtype) + + /* The order of these bit tests must match the order that the + relocs appear in. Since we sorted those by offset, we can + predict them. */ + + /* Note that the numbers in, say, DSP6 are the bit offsets of + the code fields that describe the operand. Bits number 0 for + the MSB of insn[0]. */ + + /* DSP* codes: + 0 00 [reg] + 1 01 dsp:8[reg] + 2 10 dsp:16[reg] + 3 11 reg */ + if (irel->r_addend & RX_RELAXA_DSP6) + { + GET_RELOC; + + code = insn[0] & 3; + if (code == 2 && symval/scale <= 255) + { + unsigned int newrel = ELF32_R_TYPE (srel->r_info); + insn[0] &= 0xfc; + insn[0] |= 0x01; + newrel = next_smaller_reloc (ELF32_R_TYPE (srel->r_info)); + if (newrel != ELF32_R_TYPE (srel->r_info)) + { + SNIP (3, 1, newrel); + *again = TRUE; + } + } + + else if (code == 1 && symval == 0) + { + insn[0] &= 0xfc; + SNIP (2, 1, R_RX_NONE); + *again = TRUE; + } + + /* Special case DSP:5 format: MOV.bwl dsp:5[Rsrc],Rdst. */ + else if (code == 1 && symval/scale <= 31 + /* Decodable bits. */ + && (insn[0] & 0xcc) == 0xcc + /* Width. */ + && (insn[0] & 0x30) != 3 + /* Register MSBs. */ + && (insn[1] & 0x88) == 0x00) + { + int newrel = 0; + + insn[0] = 0x88 | (insn[0] & 0x30); + /* The register fields are in the right place already. */ + + /* We can't relax this new opcode. */ + irel->r_addend = 0; + + switch ((insn[0] & 0x30) >> 4) + { + case 0: + newrel = R_RX_RH_ABS5p5B; + break; + case 1: + newrel = R_RX_RH_ABS5p5W; + break; + case 2: + newrel = R_RX_RH_ABS5p5L; + break; + } + + move_reloc (irel, srel, -2); + SNIP (2, 1, newrel); + } + + /* Special case DSP:5 format: MOVU.bw dsp:5[Rsrc],Rdst. */ + else if (code == 1 && symval/scale <= 31 + /* Decodable bits. */ + && (insn[0] & 0xf8) == 0x58 + /* Register MSBs. */ + && (insn[1] & 0x88) == 0x00) + { + int newrel = 0; + + insn[0] = 0xb0 | ((insn[0] & 0x04) << 1); + /* The register fields are in the right place already. */ + + /* We can't relax this new opcode. */ + irel->r_addend = 0; + + switch ((insn[0] & 0x08) >> 3) + { + case 0: + newrel = R_RX_RH_ABS5p5B; + break; + case 1: + newrel = R_RX_RH_ABS5p5W; + break; + } + + move_reloc (irel, srel, -2); + SNIP (2, 1, newrel); + } + } + + /* A DSP4 operand always follows a DSP6 operand, even if there's + no relocation for it. We have to read the code out of the + opcode to calculate the offset of the operand. */ + if (irel->r_addend & RX_RELAXA_DSP4) + { + int code6, offset = 0; + + GET_RELOC; + + code6 = insn[0] & 0x03; + switch (code6) + { + case 0: offset = 2; break; + case 1: offset = 3; break; + case 2: offset = 4; break; + case 3: offset = 2; break; + } + + code = (insn[0] & 0x0c) >> 2; + + if (code == 2 && symval / scale <= 255) + { + unsigned int newrel = ELF32_R_TYPE (srel->r_info); + + insn[0] &= 0xf3; + insn[0] |= 0x04; + newrel = next_smaller_reloc (ELF32_R_TYPE (srel->r_info)); + if (newrel != ELF32_R_TYPE (srel->r_info)) + { + SNIP (offset+1, 1, newrel); + *again = TRUE; + } + } + + else if (code == 1 && symval == 0) + { + insn[0] &= 0xf3; + SNIP (offset, 1, R_RX_NONE); + *again = TRUE; + } + /* Special case DSP:5 format: MOV.bwl Rsrc,dsp:5[Rdst] */ + else if (code == 1 && symval/scale <= 31 + /* Decodable bits. */ + && (insn[0] & 0xc3) == 0xc3 + /* Width. */ + && (insn[0] & 0x30) != 3 + /* Register MSBs. */ + && (insn[1] & 0x88) == 0x00) + { + int newrel = 0; + + insn[0] = 0x80 | (insn[0] & 0x30); + /* The register fields are in the right place already. */ + + /* We can't relax this new opcode. */ + irel->r_addend = 0; + + switch ((insn[0] & 0x30) >> 4) + { + case 0: + newrel = R_RX_RH_ABS5p5B; + break; + case 1: + newrel = R_RX_RH_ABS5p5W; + break; + case 2: + newrel = R_RX_RH_ABS5p5L; + break; + } + + move_reloc (irel, srel, -2); + SNIP (2, 1, newrel); + } + } + + /* These always occur alone, but the offset depends on whether + it's a MEMEX opcode (0x06) or not. */ + if (irel->r_addend & RX_RELAXA_DSP14) + { + int offset; + GET_RELOC; + + if (insn[0] == 0x06) + offset = 3; + else + offset = 4; + + code = insn[1] & 3; + + if (code == 2 && symval / scale <= 255) + { + unsigned int newrel = ELF32_R_TYPE (srel->r_info); + + insn[1] &= 0xfc; + insn[1] |= 0x01; + newrel = next_smaller_reloc (ELF32_R_TYPE (srel->r_info)); + if (newrel != ELF32_R_TYPE (srel->r_info)) + { + SNIP (offset, 1, newrel); + *again = TRUE; + } + } + else if (code == 1 && symval == 0) + { + insn[1] &= 0xfc; + SNIP (offset, 1, R_RX_NONE); + *again = TRUE; + } + } + + /* IMM* codes: + 0 00 imm:32 + 1 01 simm:8 + 2 10 simm:16 + 3 11 simm:24. */ + + /* These always occur alone. */ + if (irel->r_addend & RX_RELAXA_IMM6) + { + long ssymval; + + GET_RELOC; + + /* These relocations sign-extend, so we must do signed compares. */ + ssymval = (long) symval; + + code = insn[0] & 0x03; + + if (code == 0 && ssymval <= 8388607 && ssymval >= -8388608) + { + unsigned int newrel = ELF32_R_TYPE (srel->r_info); + + insn[0] &= 0xfc; + insn[0] |= 0x03; + newrel = next_smaller_reloc (ELF32_R_TYPE (srel->r_info)); + if (newrel != ELF32_R_TYPE (srel->r_info)) + { + SNIP (2, 1, newrel); + *again = TRUE; + } + } + + else if (code == 3 && ssymval <= 32767 && ssymval >= -32768) + { + unsigned int newrel = ELF32_R_TYPE (srel->r_info); + + insn[0] &= 0xfc; + insn[0] |= 0x02; + newrel = next_smaller_reloc (ELF32_R_TYPE (srel->r_info)); + if (newrel != ELF32_R_TYPE (srel->r_info)) + { + SNIP (2, 1, newrel); + *again = TRUE; + } + } + + /* Special case UIMM8 format: CMP #uimm8,Rdst. */ + else if (code == 2 && ssymval <= 255 && ssymval >= 16 + /* Decodable bits. */ + && (insn[0] & 0xfc) == 0x74 + /* Decodable bits. */ + && ((insn[1] & 0xf0) == 0x00)) + { + int newrel; + + insn[0] = 0x75; + insn[1] = 0x50 | (insn[1] & 0x0f); + + /* We can't relax this new opcode. */ + irel->r_addend = 0; + + if (STACK_REL_P (ELF32_R_TYPE (srel->r_info))) + newrel = R_RX_ABS8U; + else + newrel = R_RX_DIR8U; + + SNIP (2, 1, newrel); + *again = TRUE; + } + + else if (code == 2 && ssymval <= 127 && ssymval >= -128) + { + unsigned int newrel = ELF32_R_TYPE (srel->r_info); + + insn[0] &= 0xfc; + insn[0] |= 0x01; + newrel = next_smaller_reloc (ELF32_R_TYPE (srel->r_info)); + if (newrel != ELF32_R_TYPE (srel->r_info)) + { + SNIP (2, 1, newrel); + *again = TRUE; + } + } + + /* Special case UIMM4 format: CMP, MUL, AND, OR. */ + else if (code == 1 && ssymval <= 15 && ssymval >= 0 + /* Decodable bits and immediate type. */ + && insn[0] == 0x75 + /* Decodable bits. */ + && (insn[1] & 0xc0) == 0x00) + { + static const int newop[4] = { 1, 3, 4, 5 }; + + insn[0] = 0x60 | newop[insn[1] >> 4]; + /* The register number doesn't move. */ + + /* We can't relax this new opcode. */ + irel->r_addend = 0; + + move_reloc (irel, srel, -1); + + SNIP (2, 1, R_RX_RH_UIMM4p8); + *again = TRUE; + } + + /* Special case UIMM4 format: ADD -> ADD/SUB. */ + else if (code == 1 && ssymval <= 15 && ssymval >= -15 + /* Decodable bits and immediate type. */ + && insn[0] == 0x71 + /* Same register for source and destination. */ + && ((insn[1] >> 4) == (insn[1] & 0x0f))) + { + int newrel; + + /* Note that we can't turn "add $0,Rs" into a NOP + because the flags need to be set right. */ + + if (ssymval < 0) + { + insn[0] = 0x60; /* Subtract. */ + newrel = R_RX_RH_UNEG4p8; + } + else + { + insn[0] = 0x62; /* Add. */ + newrel = R_RX_RH_UIMM4p8; + } + + /* The register number is in the right place. */ + + /* We can't relax this new opcode. */ + irel->r_addend = 0; + + move_reloc (irel, srel, -1); + + SNIP (2, 1, newrel); + *again = TRUE; + } + } + + /* These are either matched with a DSP6 (2-byte base) or an id24 + (3-byte base). */ + if (irel->r_addend & RX_RELAXA_IMM12) + { + int dspcode, offset = 0; + long ssymval; + + GET_RELOC; + + if ((insn[0] & 0xfc) == 0xfc) + dspcode = 1; /* Just something with one byte operand. */ + else + dspcode = insn[0] & 3; + switch (dspcode) + { + case 0: offset = 2; break; + case 1: offset = 3; break; + case 2: offset = 4; break; + case 3: offset = 2; break; + } + + /* These relocations sign-extend, so we must do signed compares. */ + ssymval = (long) symval; + + code = (insn[1] >> 2) & 3; + if (code == 0 && ssymval <= 8388607 && ssymval >= -8388608) + { + unsigned int newrel = ELF32_R_TYPE (srel->r_info); + + insn[1] &= 0xf3; + insn[1] |= 0x0c; + newrel = next_smaller_reloc (ELF32_R_TYPE (srel->r_info)); + if (newrel != ELF32_R_TYPE (srel->r_info)) + { + SNIP (offset, 1, newrel); + *again = TRUE; + } + } + + else if (code == 3 && ssymval <= 32767 && ssymval >= -32768) + { + unsigned int newrel = ELF32_R_TYPE (srel->r_info); + + insn[1] &= 0xf3; + insn[1] |= 0x08; + newrel = next_smaller_reloc (ELF32_R_TYPE (srel->r_info)); + if (newrel != ELF32_R_TYPE (srel->r_info)) + { + SNIP (offset, 1, newrel); + *again = TRUE; + } + } + + /* Special case UIMM8 format: MOV #uimm8,Rdst. */ + else if (code == 2 && ssymval <= 255 && ssymval >= 16 + /* Decodable bits. */ + && insn[0] == 0xfb + /* Decodable bits. */ + && ((insn[1] & 0x03) == 0x02)) + { + int newrel; + + insn[0] = 0x75; + insn[1] = 0x40 | (insn[1] >> 4); + + /* We can't relax this new opcode. */ + irel->r_addend = 0; + + if (STACK_REL_P (ELF32_R_TYPE (srel->r_info))) + newrel = R_RX_ABS8U; + else + newrel = R_RX_DIR8U; + + SNIP (2, 1, newrel); + *again = TRUE; + } + + else if (code == 2 && ssymval <= 127 && ssymval >= -128) + { + unsigned int newrel = ELF32_R_TYPE(srel->r_info); + + insn[1] &= 0xf3; + insn[1] |= 0x04; + newrel = next_smaller_reloc (ELF32_R_TYPE (srel->r_info)); + if (newrel != ELF32_R_TYPE(srel->r_info)) + { + SNIP (offset, 1, newrel); + *again = TRUE; + } + } + + /* Special case UIMM4 format: MOV #uimm4,Rdst. */ + else if (code == 1 && ssymval <= 15 && ssymval >= 0 + /* Decodable bits. */ + && insn[0] == 0xfb + /* Decodable bits. */ + && ((insn[1] & 0x03) == 0x02)) + { + insn[0] = 0x66; + insn[1] = insn[1] >> 4; + + /* We can't relax this new opcode. */ + irel->r_addend = 0; + + move_reloc (irel, srel, -1); + + SNIP (2, 1, R_RX_RH_UIMM4p8); + *again = TRUE; + } + } + + if (irel->r_addend & RX_RELAXA_BRA) + { + unsigned int newrel = ELF32_R_TYPE (srel->r_info); + int max_pcrel3 = 4; + int alignment_glue = 0; + + GET_RELOC; + + /* Branches over alignment chunks are problematic, as + deleting bytes here makes the branch *further* away. We + can be agressive with branches within this alignment + block, but not branches outside it. */ + if ((prev_alignment == NULL + || symval < (bfd_vma)(sec_start + prev_alignment->r_offset)) + && (next_alignment == NULL + || symval > (bfd_vma)(sec_start + next_alignment->r_offset))) + alignment_glue = section_alignment_glue; + + if (ELF32_R_TYPE(srel[1].r_info) == R_RX_RH_RELAX + && srel[1].r_addend & RX_RELAXA_BRA + && srel[1].r_offset < irel->r_offset + pcrel) + max_pcrel3 ++; + + newrel = next_smaller_reloc (ELF32_R_TYPE (srel->r_info)); + + /* The values we compare PCREL with are not what you'd + expect; they're off by a little to compensate for (1) + where the reloc is relative to the insn, and (2) how much + the insn is going to change when we relax it. */ + + /* These we have to decode. */ + switch (insn[0]) + { + case 0x04: /* BRA pcdsp:24 */ + if (-32768 + alignment_glue <= pcrel + && pcrel <= 32765 - alignment_glue) + { + insn[0] = 0x38; + SNIP (3, 1, newrel); + *again = TRUE; + } + break; + + case 0x38: /* BRA pcdsp:16 */ + if (-128 + alignment_glue <= pcrel + && pcrel <= 127 - alignment_glue) + { + insn[0] = 0x2e; + SNIP (2, 1, newrel); + *again = TRUE; + } + break; + + case 0x2e: /* BRA pcdsp:8 */ + /* Note that there's a risk here of shortening things so + much that we no longer fit this reloc; it *should* + only happen when you branch across a branch, and that + branch also devolves into BRA.S. "Real" code should + be OK. */ + if (max_pcrel3 + alignment_glue <= pcrel + && pcrel <= 10 - alignment_glue + && allow_pcrel3) + { + insn[0] = 0x08; + SNIP (1, 1, newrel); + move_reloc (irel, srel, -1); + *again = TRUE; + } + break; + + case 0x05: /* BSR pcdsp:24 */ + if (-32768 + alignment_glue <= pcrel + && pcrel <= 32765 - alignment_glue) + { + insn[0] = 0x39; + SNIP (1, 1, newrel); + *again = TRUE; + } + break; + + case 0x3a: /* BEQ.W pcdsp:16 */ + case 0x3b: /* BNE.W pcdsp:16 */ + if (-128 + alignment_glue <= pcrel + && pcrel <= 127 - alignment_glue) + { + insn[0] = 0x20 | (insn[0] & 1); + SNIP (1, 1, newrel); + *again = TRUE; + } + break; + + case 0x20: /* BEQ.B pcdsp:8 */ + case 0x21: /* BNE.B pcdsp:8 */ + if (max_pcrel3 + alignment_glue <= pcrel + && pcrel - alignment_glue <= 10 + && allow_pcrel3) + { + insn[0] = 0x10 | ((insn[0] & 1) << 3); + SNIP (1, 1, newrel); + move_reloc (irel, srel, -1); + *again = TRUE; + } + break; + + case 0x16: /* synthetic BNE dsp24 */ + case 0x1e: /* synthetic BEQ dsp24 */ + if (-32767 + alignment_glue <= pcrel + && pcrel <= 32766 - alignment_glue + && insn[1] == 0x04) + { + if (insn[0] == 0x16) + insn[0] = 0x3b; + else + insn[0] = 0x3a; + /* We snip out the bytes at the end else the reloc + will get moved too, and too much. */ + SNIP (3, 2, newrel); + move_reloc (irel, srel, -1); + *again = TRUE; + } + break; + } + + /* Special case - synthetic conditional branches, pcrel24. + Note that EQ and NE have been handled above. */ + if ((insn[0] & 0xf0) == 0x20 + && insn[1] == 0x06 + && insn[2] == 0x04 + && srel->r_offset != irel->r_offset + 1 + && -32767 + alignment_glue <= pcrel + && pcrel <= 32766 - alignment_glue) + { + insn[1] = 0x05; + insn[2] = 0x38; + SNIP (5, 1, newrel); + *again = TRUE; + } + + /* Special case - synthetic conditional branches, pcrel16 */ + if ((insn[0] & 0xf0) == 0x20 + && insn[1] == 0x05 + && insn[2] == 0x38 + && srel->r_offset != irel->r_offset + 1 + && -127 + alignment_glue <= pcrel + && pcrel <= 126 - alignment_glue) + { + int cond = (insn[0] & 0x0f) ^ 0x01; + + insn[0] = 0x20 | cond; + /* By moving the reloc first, we avoid having + delete_bytes move it also. */ + move_reloc (irel, srel, -2); + SNIP (2, 3, newrel); + *again = TRUE; + } + } + + BFD_ASSERT (nrelocs == 0); + + /* Special case - check MOV.bwl #IMM, dsp[reg] and see if we can + use MOV.bwl #uimm:8, dsp:5[r7] format. This is tricky + because it may have one or two relocations. */ + if ((insn[0] & 0xfc) == 0xf8 + && (insn[1] & 0x80) == 0x00 + && (insn[0] & 0x03) != 0x03) + { + int dcode, icode, reg, ioff, dscale, ilen; + bfd_vma disp_val = 0; + long imm_val = 0; + Elf_Internal_Rela * disp_rel = 0; + Elf_Internal_Rela * imm_rel = 0; + + /* Reset this. */ + srel = irel; + + dcode = insn[0] & 0x03; + icode = (insn[1] >> 2) & 0x03; + reg = (insn[1] >> 4) & 0x0f; + + ioff = dcode == 1 ? 3 : dcode == 2 ? 4 : 2; + + /* Figure out what the dispacement is. */ + if (dcode == 1 || dcode == 2) + { + /* There's a displacement. See if there's a reloc for it. */ + if (srel[1].r_offset == irel->r_offset + 2) + { + GET_RELOC; + disp_val = symval; + disp_rel = srel; + } + else + { + if (dcode == 1) + disp_val = insn[2]; + else + { +#if RX_OPCODE_BIG_ENDIAN + disp_val = insn[2] * 256 + insn[3]; +#else + disp_val = insn[2] + insn[3] * 256; +#endif + } + switch (insn[1] & 3) + { + case 1: + disp_val *= 2; + scale = 2; + break; + case 2: + disp_val *= 4; + scale = 4; + break; + } + } + } + + dscale = scale; + + /* Figure out what the immediate is. */ + if (srel[1].r_offset == irel->r_offset + ioff) + { + GET_RELOC; + imm_val = (long) symval; + imm_rel = srel; + } + else + { + unsigned char * ip = insn + ioff; + + switch (icode) + { + case 1: + /* For byte writes, we don't sign extend. Makes the math easier later. */ + if (scale == 1) + imm_val = ip[0]; + else + imm_val = (char) ip[0]; + break; + case 2: +#if RX_OPCODE_BIG_ENDIAN + imm_val = ((char) ip[0] << 8) | ip[1]; +#else + imm_val = ((char) ip[1] << 8) | ip[0]; +#endif + break; + case 3: +#if RX_OPCODE_BIG_ENDIAN + imm_val = ((char) ip[0] << 16) | (ip[1] << 8) | ip[2]; +#else + imm_val = ((char) ip[2] << 16) | (ip[1] << 8) | ip[0]; +#endif + break; + case 0: +#if RX_OPCODE_BIG_ENDIAN + imm_val = (ip[0] << 24) | (ip[1] << 16) | (ip[2] << 8) | ip[3]; +#else + imm_val = (ip[3] << 24) | (ip[2] << 16) | (ip[1] << 8) | ip[0]; +#endif + break; + } + } + + ilen = 2; + + switch (dcode) + { + case 1: + ilen += 1; + break; + case 2: + ilen += 2; + break; + } + + switch (icode) + { + case 1: + ilen += 1; + break; + case 2: + ilen += 2; + break; + case 3: + ilen += 3; + break; + case 4: + ilen += 4; + break; + } + + /* The shortcut happens when the immediate is 0..255, + register r0 to r7, and displacement (scaled) 0..31. */ + + if (0 <= imm_val && imm_val <= 255 + && 0 <= reg && reg <= 7 + && disp_val / dscale <= 31) + { + insn[0] = 0x3c | (insn[1] & 0x03); + insn[1] = (((disp_val / dscale) << 3) & 0x80) | (reg << 4) | ((disp_val/dscale) & 0x0f); + insn[2] = imm_val; + + if (disp_rel) + { + int newrel = R_RX_NONE; + + switch (dscale) + { + case 1: + newrel = R_RX_RH_ABS5p8B; + break; + case 2: + newrel = R_RX_RH_ABS5p8W; + break; + case 4: + newrel = R_RX_RH_ABS5p8L; + break; + } + disp_rel->r_info = ELF32_R_INFO (ELF32_R_SYM (disp_rel->r_info), newrel); + move_reloc (irel, disp_rel, -1); + } + if (imm_rel) + { + imm_rel->r_info = ELF32_R_INFO (ELF32_R_SYM (imm_rel->r_info), R_RX_DIR8U); + move_reloc (disp_rel ? disp_rel : irel, + imm_rel, + irel->r_offset - imm_rel->r_offset + 2); + } + + SNIPNR (3, ilen - 3); + *again = TRUE; + + /* We can't relax this new opcode. */ + irel->r_addend = 0; + } + } + } + + /* We can't reliably relax branches to DIR3U_PCREL unless we know + whatever they're branching over won't shrink any more. If we're + basically done here, do one more pass just for branches - but + don't request a pass after that one! */ + if (!*again && !allow_pcrel3) + { + bfd_boolean ignored; + + elf32_rx_relax_section (abfd, sec, link_info, &ignored, TRUE); + } + + return TRUE; + + error_return: + if (free_relocs != NULL) + free (free_relocs); + + if (free_contents != NULL) + free (free_contents); + + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); + } + + if (free_intsyms != NULL) + free (free_intsyms); + + return FALSE; +} + +static bfd_boolean +elf32_rx_relax_section_wrapper (bfd * abfd, + asection * sec, + struct bfd_link_info * link_info, + bfd_boolean * again) +{ + return elf32_rx_relax_section (abfd, sec, link_info, again, FALSE); +} + +/* Function to set the ELF flag bits. */ + +static bfd_boolean +rx_elf_set_private_flags (bfd * abfd, flagword flags) +{ + elf_elfheader (abfd)->e_flags = flags; + elf_flags_init (abfd) = TRUE; + return TRUE; +} + +static bfd_boolean no_warn_mismatch = FALSE; + +void bfd_elf32_rx_set_target_flags (bfd_boolean); + +void +bfd_elf32_rx_set_target_flags (bfd_boolean user_no_warn_mismatch) +{ + no_warn_mismatch = user_no_warn_mismatch; +} + +/* Merge backend specific data from an object file to the output + object file when linking. */ + +static bfd_boolean +rx_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd) +{ + flagword old_flags; + flagword new_flags; + bfd_boolean error = FALSE; + + new_flags = elf_elfheader (ibfd)->e_flags; + old_flags = elf_elfheader (obfd)->e_flags; + + if (!elf_flags_init (obfd)) + { + /* First call, no flags set. */ + elf_flags_init (obfd) = TRUE; + elf_elfheader (obfd)->e_flags = new_flags; + } + else if (old_flags != new_flags) + { + flagword known_flags = E_FLAG_RX_64BIT_DOUBLES | E_FLAG_RX_DSP; + + if ((old_flags ^ new_flags) & known_flags) + { + /* Only complain if flag bits we care about do not match. + Other bits may be set, since older binaries did use some + deprecated flags. */ + if (no_warn_mismatch) + { + elf_elfheader (obfd)->e_flags = (new_flags | old_flags) & known_flags; + } + else + { + (*_bfd_error_handler) + ("ELF header flags mismatch: old_flags = 0x%.8lx, new_flags = 0x%.8lx, filename = %s", + old_flags, new_flags, bfd_get_filename (ibfd)); + error = TRUE; + } + } + else + elf_elfheader (obfd)->e_flags = new_flags & known_flags; + } + + if (error) + bfd_set_error (bfd_error_bad_value); + + return !error; +} + +static bfd_boolean +rx_elf_print_private_bfd_data (bfd * abfd, void * ptr) +{ + FILE * file = (FILE *) ptr; + flagword flags; + + BFD_ASSERT (abfd != NULL && ptr != NULL); + + /* Print normal ELF private data. */ + _bfd_elf_print_private_bfd_data (abfd, ptr); + + flags = elf_elfheader (abfd)->e_flags; + fprintf (file, _("private flags = 0x%lx:"), (long) flags); + + if (flags & E_FLAG_RX_64BIT_DOUBLES) + fprintf (file, _(" [64-bit doubles]")); + if (flags & E_FLAG_RX_DSP) + fprintf (file, _(" [dsp]")); + + fputc ('\n', file); + return TRUE; +} + +/* Return the MACH for an e_flags value. */ + +static int +elf32_rx_machine (bfd * abfd) +{ + if ((elf_elfheader (abfd)->e_flags & EF_RX_CPU_MASK) == EF_RX_CPU_RX) + return bfd_mach_rx; + + return 0; +} + +static bfd_boolean +rx_elf_object_p (bfd * abfd) +{ + bfd_default_set_arch_mach (abfd, bfd_arch_rx, + elf32_rx_machine (abfd)); + return TRUE; +} + + +#ifdef DEBUG +void +rx_dump_symtab (bfd * abfd, void * internal_syms, void * external_syms) +{ + size_t locsymcount; + Elf_Internal_Sym * isymbuf; + Elf_Internal_Sym * isymend; + Elf_Internal_Sym * isym; + Elf_Internal_Shdr * symtab_hdr; + bfd_boolean free_internal = FALSE, free_external = FALSE; + char * st_info_str; + char * st_info_stb_str; + char * st_other_str; + char * st_shndx_str; + + if (! internal_syms) + { + internal_syms = bfd_malloc (1000); + free_internal = 1; + } + if (! external_syms) + { + external_syms = bfd_malloc (1000); + free_external = 1; + } + + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + locsymcount = symtab_hdr->sh_size / get_elf_backend_data (abfd)->s->sizeof_sym; + if (free_internal) + isymbuf = bfd_elf_get_elf_syms (abfd, symtab_hdr, + symtab_hdr->sh_info, 0, + internal_syms, external_syms, NULL); + else + isymbuf = internal_syms; + isymend = isymbuf + locsymcount; + + for (isym = isymbuf ; isym < isymend ; isym++) + { + switch (ELF_ST_TYPE (isym->st_info)) + { + case STT_FUNC: st_info_str = "STT_FUNC"; + case STT_SECTION: st_info_str = "STT_SECTION"; + case STT_FILE: st_info_str = "STT_FILE"; + case STT_OBJECT: st_info_str = "STT_OBJECT"; + case STT_TLS: st_info_str = "STT_TLS"; + default: st_info_str = ""; + } + switch (ELF_ST_BIND (isym->st_info)) + { + case STB_LOCAL: st_info_stb_str = "STB_LOCAL"; + case STB_GLOBAL: st_info_stb_str = "STB_GLOBAL"; + default: st_info_stb_str = ""; + } + switch (ELF_ST_VISIBILITY (isym->st_other)) + { + case STV_DEFAULT: st_other_str = "STV_DEFAULT"; + case STV_INTERNAL: st_other_str = "STV_INTERNAL"; + case STV_PROTECTED: st_other_str = "STV_PROTECTED"; + default: st_other_str = ""; + } + switch (isym->st_shndx) + { + case SHN_ABS: st_shndx_str = "SHN_ABS"; + case SHN_COMMON: st_shndx_str = "SHN_COMMON"; + case SHN_UNDEF: st_shndx_str = "SHN_UNDEF"; + default: st_shndx_str = ""; + } + + printf ("isym = %p st_value = %lx st_size = %lx st_name = (%lu) %s " + "st_info = (%d) %s %s st_other = (%d) %s st_shndx = (%d) %s\n", + isym, + (unsigned long) isym->st_value, + (unsigned long) isym->st_size, + isym->st_name, + bfd_elf_string_from_elf_section (abfd, symtab_hdr->sh_link, + isym->st_name), + isym->st_info, st_info_str, st_info_stb_str, + isym->st_other, st_other_str, + isym->st_shndx, st_shndx_str); + } + if (free_internal) + free (internal_syms); + if (free_external) + free (external_syms); +} + +char * +rx_get_reloc (long reloc) +{ + if (0 <= reloc && reloc < R_RX_max) + return rx_elf_howto_table[reloc].name; + return ""; +} +#endif /* DEBUG */ + + +/* We must take care to keep the on-disk copy of any code sections + that are fully linked swapped if the target is big endian, to match + the Renesas tools. */ + +/* The rule is: big endian object that are final-link executables, + have code sections stored with 32-bit words swapped relative to + what you'd get by default. */ + +static bfd_boolean +rx_get_section_contents (bfd * abfd, + sec_ptr section, + void * location, + file_ptr offset, + bfd_size_type count) +{ + int exec = (abfd->flags & EXEC_P) ? 1 : 0; + int s_code = (section->flags & SEC_CODE) ? 1 : 0; + bfd_boolean rv; + +#ifdef DJDEBUG + fprintf (stderr, "dj: get %ld %ld from %s %s e%d sc%d %08lx:%08lx\n", + (long) offset, (long) count, section->name, + bfd_big_endian(abfd) ? "be" : "le", + exec, s_code, (long unsigned) section->filepos, + (long unsigned) offset); +#endif + + if (exec && s_code && bfd_big_endian (abfd)) + { + char * cloc = (char *) location; + bfd_size_type cnt, end_cnt; + + rv = TRUE; + + /* Fetch and swap unaligned bytes at the beginning. */ + if (offset % 4) + { + char buf[4]; + + rv = _bfd_generic_get_section_contents (abfd, section, buf, + (offset & -4), 4); + if (!rv) + return FALSE; + + bfd_putb32 (bfd_getl32 (buf), buf); + + cnt = 4 - (offset % 4); + if (cnt > count) + cnt = count; + + memcpy (location, buf + (offset % 4), cnt); + + count -= cnt; + offset += cnt; + cloc += count; + } + + end_cnt = count % 4; + + /* Fetch and swap the middle bytes. */ + if (count >= 4) + { + rv = _bfd_generic_get_section_contents (abfd, section, cloc, offset, + count - end_cnt); + if (!rv) + return FALSE; + + for (cnt = count; cnt >= 4; cnt -= 4, cloc += 4) + bfd_putb32 (bfd_getl32 (cloc), cloc); + } + + /* Fetch and swap the end bytes. */ + if (end_cnt > 0) + { + char buf[4]; + + /* Fetch the end bytes. */ + rv = _bfd_generic_get_section_contents (abfd, section, buf, + offset + count - end_cnt, 4); + if (!rv) + return FALSE; + + bfd_putb32 (bfd_getl32 (buf), buf); + memcpy (cloc, buf, end_cnt); + } + } + else + rv = _bfd_generic_get_section_contents (abfd, section, location, offset, count); + + return rv; +} + +#ifdef DJDEBUG +static bfd_boolean +rx2_set_section_contents (bfd * abfd, + sec_ptr section, + const void * location, + file_ptr offset, + bfd_size_type count) +{ + bfd_size_type i; + + fprintf (stderr, " set sec %s %08x loc %p offset %#x count %#x\n", + section->name, (unsigned) section->vma, location, (int) offset, (int) count); + for (i = 0; i < count; i++) + { + if (i % 16 == 0 && i > 0) + fprintf (stderr, "\n"); + + if (i % 16 && i % 4 == 0) + fprintf (stderr, " "); + + if (i % 16 == 0) + fprintf (stderr, " %08x:", (int) (section->vma + offset + i)); + + fprintf (stderr, " %02x", ((unsigned char *) location)[i]); + } + fprintf (stderr, "\n"); + + return _bfd_elf_set_section_contents (abfd, section, location, offset, count); +} +#define _bfd_elf_set_section_contents rx2_set_section_contents +#endif + +static bfd_boolean +rx_set_section_contents (bfd * abfd, + sec_ptr section, + const void * location, + file_ptr offset, + bfd_size_type count) +{ + bfd_boolean exec = (abfd->flags & EXEC_P) ? TRUE : FALSE; + bfd_boolean s_code = (section->flags & SEC_CODE) ? TRUE : FALSE; + bfd_boolean rv; + char * swapped_data = NULL; + bfd_size_type i; + bfd_vma caddr = section->vma + offset; + file_ptr faddr = 0; + bfd_size_type scount; + +#ifdef DJDEBUG + bfd_size_type i; + + fprintf (stderr, "\ndj: set %ld %ld to %s %s e%d sc%d\n", + (long) offset, (long) count, section->name, + bfd_big_endian (abfd) ? "be" : "le", + exec, s_code); + + for (i = 0; i < count; i++) + { + int a = section->vma + offset + i; + + if (a % 16 == 0 && a > 0) + fprintf (stderr, "\n"); + + if (a % 16 && a % 4 == 0) + fprintf (stderr, " "); + + if (a % 16 == 0 || i == 0) + fprintf (stderr, " %08x:", (int) (section->vma + offset + i)); + + fprintf (stderr, " %02x", ((unsigned char *) location)[i]); + } + + fprintf (stderr, "\n"); +#endif + + if (! exec || ! s_code || ! bfd_big_endian (abfd)) + return _bfd_elf_set_section_contents (abfd, section, location, offset, count); + + while (count > 0 && caddr > 0 && caddr % 4) + { + switch (caddr % 4) + { + case 0: faddr = offset + 3; break; + case 1: faddr = offset + 1; break; + case 2: faddr = offset - 1; break; + case 3: faddr = offset - 3; break; + } + + rv = _bfd_elf_set_section_contents (abfd, section, location, faddr, 1); + if (! rv) + return rv; + + location ++; + offset ++; + count --; + caddr ++; + } + + scount = (int)(count / 4) * 4; + if (scount > 0) + { + char * cloc = (char *) location; + + swapped_data = (char *) bfd_alloc (abfd, count); + + for (i = 0; i < count; i += 4) + { + bfd_vma v = bfd_getl32 (cloc + i); + bfd_putb32 (v, swapped_data + i); + } + + rv = _bfd_elf_set_section_contents (abfd, section, swapped_data, offset, scount); + + if (!rv) + return rv; + } + + count -= scount; + location += scount; + offset += scount; + + if (count > 0) + { + caddr = section->vma + offset; + while (count > 0) + { + switch (caddr % 4) + { + case 0: faddr = offset + 3; break; + case 1: faddr = offset + 1; break; + case 2: faddr = offset - 1; break; + case 3: faddr = offset - 3; break; + } + rv = _bfd_elf_set_section_contents (abfd, section, location, faddr, 1); + if (! rv) + return rv; + + location ++; + offset ++; + count --; + caddr ++; + } + } + + return TRUE; +} + +static bfd_boolean +rx_final_link (bfd * abfd, struct bfd_link_info * info) +{ + asection * o; + + for (o = abfd->sections; o != NULL; o = o->next) + { +#ifdef DJDEBUG + fprintf (stderr, "sec %s fl %x vma %lx lma %lx size %lx raw %lx\n", + o->name, o->flags, o->vma, o->lma, o->size, o->rawsize); +#endif + if (o->flags & SEC_CODE + && bfd_big_endian (abfd) + && (o->size % 4 || o->rawsize % 4)) + { +#ifdef DJDEBUG + fprintf (stderr, "adjusting...\n"); +#endif + o->size += 4 - (o->size % 4); + o->rawsize += 4 - (o->rawsize % 4); + } + } + + return bfd_elf_final_link (abfd, info); +} + +static bfd_boolean +elf32_rx_modify_program_headers (bfd * abfd ATTRIBUTE_UNUSED, + struct bfd_link_info * info ATTRIBUTE_UNUSED) +{ + const struct elf_backend_data * bed; + struct elf_obj_tdata * tdata; + Elf_Internal_Phdr * phdr; + unsigned int count; + unsigned int i; + + bed = get_elf_backend_data (abfd); + tdata = elf_tdata (abfd); + phdr = tdata->phdr; + count = tdata->program_header_size / bed->s->sizeof_phdr; + + for (i = count; i-- != 0; ) + if (phdr[i].p_type == PT_LOAD) + { + /* The Renesas tools expect p_paddr to be zero. However, + there is no other way to store the writable data in ROM for + startup initialization. So, we let the linker *think* + we're using paddr and vaddr the "usual" way, but at the + last minute we move the paddr into the vaddr (which is what + the simulator uses) and zero out paddr. Note that this + does not affect the section headers, just the program + headers. We hope. */ + phdr[i].p_vaddr = phdr[i].p_paddr; + /* If we zero out p_paddr, then the LMA in the section table + becomes wrong. */ + /*phdr[i].p_paddr = 0;*/ + } + + return TRUE; +} + +#define ELF_ARCH bfd_arch_rx +#define ELF_MACHINE_CODE EM_RX +#define ELF_MAXPAGESIZE 0x1000 + +#define TARGET_BIG_SYM bfd_elf32_rx_be_vec +#define TARGET_BIG_NAME "elf32-rx-be" + +#define TARGET_LITTLE_SYM bfd_elf32_rx_le_vec +#define TARGET_LITTLE_NAME "elf32-rx-le" + +#define elf_info_to_howto_rel NULL +#define elf_info_to_howto rx_info_to_howto_rela +#define elf_backend_object_p rx_elf_object_p +#define elf_backend_relocate_section rx_elf_relocate_section +#define elf_symbol_leading_char ('_') +#define elf_backend_can_gc_sections 1 +#define elf_backend_modify_program_headers elf32_rx_modify_program_headers + +#define bfd_elf32_bfd_reloc_type_lookup rx_reloc_type_lookup +#define bfd_elf32_bfd_reloc_name_lookup rx_reloc_name_lookup +#define bfd_elf32_bfd_set_private_flags rx_elf_set_private_flags +#define bfd_elf32_bfd_merge_private_bfd_data rx_elf_merge_private_bfd_data +#define bfd_elf32_bfd_print_private_bfd_data rx_elf_print_private_bfd_data +#define bfd_elf32_get_section_contents rx_get_section_contents +#define bfd_elf32_set_section_contents rx_set_section_contents +#define bfd_elf32_bfd_final_link rx_final_link +#define bfd_elf32_bfd_relax_section elf32_rx_relax_section_wrapper + +#include "elf32-target.h" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-s390.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-s390.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-s390.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-s390.c 2010-10-25 15:54:14.000000000 +0000 @@ -693,13 +693,13 @@ #define is_s390_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == S390_ELF_TDATA) + && elf_object_id (bfd) == S390_ELF_DATA) static bfd_boolean elf_s390_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct elf_s390_obj_tdata), - S390_ELF_TDATA); + S390_ELF_DATA); } static bfd_boolean @@ -737,7 +737,8 @@ /* Get the s390 ELF linker hash table from a link_info structure. */ #define elf_s390_hash_table(p) \ - ((struct elf_s390_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == S390_ELF_DATA ? ((struct elf_s390_link_hash_table *) ((p)->hash)) : NULL) /* Create an entry in an s390 ELF linker hash table. */ @@ -786,7 +787,8 @@ return NULL; if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc, - sizeof (struct elf_s390_link_hash_entry))) + sizeof (struct elf_s390_link_hash_entry), + S390_ELF_DATA)) { free (ret); return NULL; @@ -2290,15 +2292,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -3460,7 +3455,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -3483,10 +3478,18 @@ return plt->vma + PLT_FIRST_ENTRY_SIZE + i * PLT_ENTRY_SIZE; } +static bfd_boolean +elf32_s390_merge_private_bfd_data (bfd *ibfd, bfd *obfd) +{ + elf_elfheader (obfd)->e_flags |= elf_elfheader (ibfd)->e_flags; + return TRUE; +} + #define TARGET_BIG_SYM bfd_elf32_s390_vec #define TARGET_BIG_NAME "elf32-s390" #define ELF_ARCH bfd_arch_s390 +#define ELF_TARGET_ID S390_ELF_DATA #define ELF_MACHINE_CODE EM_S390 #define ELF_MACHINE_ALT1 EM_S390_OLD #define ELF_MAXPAGESIZE 0x1000 @@ -3506,6 +3509,8 @@ #define bfd_elf32_bfd_reloc_type_lookup elf_s390_reloc_type_lookup #define bfd_elf32_bfd_reloc_name_lookup elf_s390_reloc_name_lookup +#define bfd_elf32_bfd_merge_private_bfd_data elf32_s390_merge_private_bfd_data + #define elf_backend_adjust_dynamic_symbol elf_s390_adjust_dynamic_symbol #define elf_backend_check_relocs elf_s390_check_relocs #define elf_backend_copy_indirect_symbol elf_s390_copy_indirect_symbol diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-score.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-score.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-score.c 2009-05-21 14:15:48.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-score.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,5 +1,5 @@ /* 32-bit ELF support for S+core. - Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Brain.lin (brain.lin@sunplusct.com) Mei Ligang (ligang@sunnorth.com.cn) @@ -37,13 +37,6 @@ int score3 = 0; int score7 = 1; -/* Score ELF linker hash table. */ -struct score_elf_link_hash_table -{ - /* The main hash table. */ - struct elf_link_hash_table root; -}; - /* The SCORE ELF linker needs additional information for each symbol in the global hash table. */ struct score_elf_link_hash_entry @@ -68,14 +61,10 @@ /* Traverse a score ELF linker hash table. */ #define score_elf_link_hash_traverse(table, func, info) \ (elf_link_hash_traverse \ - (&(table)->root, \ + ((table), \ (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func), \ (info))) -/* Get the SCORE elf linker hash table from a link_info structure. */ -#define score_elf_hash_table(info) \ - ((struct score_elf_link_hash_table *) ((info)->hash)) - /* This structure is used to hold .got entries while estimating got sizes. */ struct score_got_entry { @@ -1135,10 +1124,9 @@ too large offsets. */ - (g->next ? g->assigned_gotno : 0); hsd.max_non_got_dynindx = max_local; - score_elf_link_hash_traverse (((struct score_elf_link_hash_table *) - elf_hash_table (info)), - score_elf_sort_hash_table_f, - &hsd); + score_elf_link_hash_traverse (elf_hash_table (info), + score_elf_sort_hash_table_f, + &hsd); /* There should have been enough room in the symbol table to accommodate both the GOT and non-GOT symbols. */ @@ -1154,22 +1142,23 @@ } /* Create an entry in an score ELF linker hash table. */ + static struct bfd_hash_entry * score_elf_link_hash_newfunc (struct bfd_hash_entry *entry, struct bfd_hash_table *table, const char *string) { - struct score_elf_link_hash_entry *ret = (struct score_elf_link_hash_entry *)entry; + struct score_elf_link_hash_entry *ret = (struct score_elf_link_hash_entry *) entry; /* Allocate the structure if it has not already been allocated by a subclass. */ if (ret == NULL) ret = bfd_hash_allocate (table, sizeof (struct score_elf_link_hash_entry)); if (ret == NULL) - return (struct bfd_hash_entry *)ret; + return (struct bfd_hash_entry *) ret; /* Call the allocation method of the superclass. */ ret = ((struct score_elf_link_hash_entry *) - _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *)ret, table, string)); + _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, table, string)); if (ret != NULL) { @@ -1179,7 +1168,7 @@ ret->forced_local = FALSE; } - return (struct bfd_hash_entry *)ret; + return (struct bfd_hash_entry *) ret; } /* Returns the first relocation of type r_type found, beginning with @@ -1755,7 +1744,7 @@ static bfd_vma score_elf_global_got_index (bfd *abfd, struct elf_link_hash_entry *h) { - bfd_vma index; + bfd_vma got_index; asection *sgot; struct score_got_info *g; long global_got_dynindx = 0; @@ -1769,25 +1758,27 @@ indices into the GOT. That makes it easy to calculate the GOT offset. */ BFD_ASSERT (h->dynindx >= global_got_dynindx); - index = ((h->dynindx - global_got_dynindx + g->local_gotno) * SCORE_ELF_GOT_SIZE (abfd)); - BFD_ASSERT (index < sgot->size); + got_index = ((h->dynindx - global_got_dynindx + g->local_gotno) * SCORE_ELF_GOT_SIZE (abfd)); + BFD_ASSERT (got_index < sgot->size); - return index; + return got_index; } /* Returns the offset for the entry at the INDEXth position in the GOT. */ + static bfd_vma -score_elf_got_offset_from_index (bfd *dynobj, bfd *output_bfd, - bfd *input_bfd ATTRIBUTE_UNUSED, bfd_vma index) +score_elf_got_offset_from_index (bfd *dynobj, + bfd *output_bfd, + bfd *input_bfd ATTRIBUTE_UNUSED, + bfd_vma got_index) { asection *sgot; bfd_vma gp; - struct score_got_info *g; - g = score_elf_got_info (dynobj, &sgot); + score_elf_got_info (dynobj, &sgot); gp = _bfd_get_gp_value (output_bfd); - return sgot->output_section->vma + sgot->output_offset + index - gp; + return sgot->output_section->vma + sgot->output_offset + got_index - gp; } /* Follow indirect and warning hash entries so that each got entry @@ -1995,8 +1986,6 @@ bfd_vma gp = MINUS_ONE; /* The place (section offset or address) of the storage unit being relocated. */ bfd_vma rel_addr; - /* The value of GP used to create the relocatable object. */ - bfd_vma gp0 = MINUS_ONE; /* 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 = MINUS_ONE; @@ -2080,7 +2069,7 @@ { g = score_elf_global_got_index (elf_hash_table (info)->dynobj, (struct elf_link_hash_entry *) h); - if ((! elf_hash_table(info)->dynamic_sections_created + if ((! elf_hash_table (info)->dynamic_sections_created || (info->shared && (info->symbolic || h->root.dynindx == -1) && h->root.def_regular))) @@ -2115,7 +2104,6 @@ case R_SCORE_HI16: case R_SCORE_LO16: case R_SCORE_GPREL32: - gp0 = _bfd_get_gp_value (input_bfd); gp = _bfd_get_gp_value (output_bfd); break; @@ -2138,7 +2126,7 @@ && h != NULL && h->root.def_dynamic && !h->root.def_regular)) - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0) { /* If we're creating a shared library, or this relocation is against a symbol @@ -2151,8 +2139,8 @@ input_section)) return bfd_reloc_undefined; } - else if (r_symndx == 0) - /* r_symndx will be zero only for relocs against symbols + else if (r_symndx == STN_UNDEF) + /* r_symndx will be STN_UNDEF (zero) only for relocs against symbols from removed linkonce sections, or sections discarded by a linker script. */ value = 0; @@ -2416,7 +2404,6 @@ asection **local_sections) { Elf_Internal_Shdr *symtab_hdr; - struct elf_link_hash_entry **sym_hashes; Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; const char *name; @@ -2447,7 +2434,6 @@ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; extsymoff = (elf_bad_symtab (input_bfd)) ? 0 : symtab_hdr->sh_info; - sym_hashes = elf_sym_hashes (input_bfd); rel = relocs; relend = relocs + input_section->reloc_count; for (; rel < relend; rel++) @@ -2689,15 +2675,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) { @@ -3931,7 +3910,7 @@ elf_tdata (abfd)->core_signal = score_bfd_get_16 (abfd, note->descdata + 12); /* pr_pid */ - elf_tdata (abfd)->core_pid = score_bfd_get_32 (abfd, note->descdata + 24); + elf_tdata (abfd)->core_lwpid = score_bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -4003,28 +3982,6 @@ return NULL; } -/* Create a score elf linker hash table. */ - -static struct bfd_link_hash_table * -s3_elf32_score_link_hash_table_create (bfd *abfd) -{ - struct score_elf_link_hash_table *ret; - bfd_size_type amt = sizeof (struct score_elf_link_hash_table); - - ret = bfd_malloc (amt); - if (ret == NULL) - return NULL; - - if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, score_elf_link_hash_newfunc, - sizeof (struct score_elf_link_hash_entry))) - { - free (ret); - return NULL; - } - - return &ret->root.root; -} - static bfd_boolean s3_elf32_score_print_private_bfd_data (bfd *abfd, void * ptr) { @@ -4391,13 +4348,29 @@ return s7_elf32_score_reloc_type_lookup (abfd, code); } +/* Create a score elf linker hash table. + This is a copy of _bfd_elf_link_hash_table_create() except with a + different hash table entry creation function. */ + static struct bfd_link_hash_table * elf32_score_link_hash_table_create (bfd *abfd) { - if (bfd_get_mach (abfd) == bfd_mach_score3) - return s3_elf32_score_link_hash_table_create (abfd); - else - return s7_elf32_score_link_hash_table_create (abfd); + struct elf_link_hash_table *ret; + bfd_size_type amt = sizeof (struct elf_link_hash_table); + + ret = (struct elf_link_hash_table *) bfd_malloc (amt); + if (ret == NULL) + return NULL; + + if (!_bfd_elf_link_hash_table_init (ret, abfd, score_elf_link_hash_newfunc, + sizeof (struct score_elf_link_hash_entry), + GENERIC_ELF_DATA)) + { + free (ret); + return NULL; + } + + return &ret->root; } static bfd_boolean diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-score7.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-score7.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-score7.c 2009-05-21 14:15:48.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-score7.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,5 +1,5 @@ /* 32-bit ELF support for S+core. - Copyright 2009 Free Software Foundation, Inc. + Copyright 2009, 2010 Free Software Foundation, Inc. Contributed by Brain.lin (brain.lin@sunplusct.com) Mei Ligang (ligang@sunnorth.com.cn) @@ -34,13 +34,6 @@ #include "elf32-score.h" -/* Score ELF linker hash table. */ -struct score_elf_link_hash_table -{ - /* The main hash table. */ - struct elf_link_hash_table root; -}; - /* The SCORE ELF linker needs additional information for each symbol in the global hash table. */ struct score_elf_link_hash_entry @@ -65,14 +58,10 @@ /* Traverse a score ELF linker hash table. */ #define score_elf_link_hash_traverse(table, func, info) \ (elf_link_hash_traverse \ - (&(table)->root, \ + ((table), \ (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func), \ (info))) -/* Get the SCORE elf linker hash table from a link_info structure. */ -#define score_elf_hash_table(info) \ - ((struct score_elf_link_hash_table *) ((info)->hash)) - /* This structure is used to hold .got entries while estimating got sizes. */ struct score_got_entry { @@ -1020,10 +1009,9 @@ too large offsets. */ - (g->next ? g->assigned_gotno : 0); hsd.max_non_got_dynindx = max_local; - score_elf_link_hash_traverse (((struct score_elf_link_hash_table *) - elf_hash_table (info)), - score_elf_sort_hash_table_f, - &hsd); + score_elf_link_hash_traverse (elf_hash_table (info), + score_elf_sort_hash_table_f, + &hsd); /* There should have been enough room in the symbol table to accommodate both the GOT and non-GOT symbols. */ @@ -1038,36 +1026,6 @@ return TRUE; } -/* Create an entry in an score ELF linker hash table. */ - -static struct bfd_hash_entry * -score_elf_link_hash_newfunc (struct bfd_hash_entry *entry, - struct bfd_hash_table *table, - const char *string) -{ - struct score_elf_link_hash_entry *ret = (struct score_elf_link_hash_entry *) entry; - - /* Allocate the structure if it has not already been allocated by a subclass. */ - if (ret == NULL) - ret = bfd_hash_allocate (table, sizeof (struct score_elf_link_hash_entry)); - if (ret == NULL) - return (struct bfd_hash_entry *) ret; - - /* Call the allocation method of the superclass. */ - ret = ((struct score_elf_link_hash_entry *) - _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, table, string)); - - if (ret != NULL) - { - ret->possibly_dynamic_relocs = 0; - ret->readonly_reloc = FALSE; - ret->no_fn_stub = FALSE; - ret->forced_local = FALSE; - } - - return (struct bfd_hash_entry *) ret; -} - /* Returns the first relocation of type r_type found, beginning with RELOCATION. RELEND is one-past-the-end of the relocation table. */ @@ -1650,7 +1608,7 @@ static bfd_vma score_elf_global_got_index (bfd *abfd, struct elf_link_hash_entry *h) { - bfd_vma index; + bfd_vma got_index; asection *sgot; struct score_got_info *g; long global_got_dynindx = 0; @@ -1664,26 +1622,27 @@ indices into the GOT. That makes it easy to calculate the GOT offset. */ BFD_ASSERT (h->dynindx >= global_got_dynindx); - index = ((h->dynindx - global_got_dynindx + g->local_gotno) * SCORE_ELF_GOT_SIZE (abfd)); - BFD_ASSERT (index < sgot->size); + got_index = ((h->dynindx - global_got_dynindx + g->local_gotno) * SCORE_ELF_GOT_SIZE (abfd)); + BFD_ASSERT (got_index < sgot->size); - return index; + return got_index; } /* Returns the offset for the entry at the INDEXth position in the GOT. */ static bfd_vma -score_elf_got_offset_from_index (bfd *dynobj, bfd *output_bfd, - bfd *input_bfd ATTRIBUTE_UNUSED, bfd_vma index) +score_elf_got_offset_from_index (bfd *dynobj, + bfd *output_bfd, + bfd *input_bfd ATTRIBUTE_UNUSED, + bfd_vma got_index) { asection *sgot; bfd_vma gp; - struct score_got_info *g; - g = score_elf_got_info (dynobj, &sgot); + score_elf_got_info (dynobj, &sgot); gp = _bfd_get_gp_value (output_bfd); - return sgot->output_section->vma + sgot->output_offset + index - gp; + return sgot->output_section->vma + sgot->output_offset + got_index - gp; } /* Follow indirect and warning hash entries so that each got entry @@ -2066,7 +2025,7 @@ && h != NULL && h->root.def_dynamic && !h->root.def_regular)) - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0) { /* If we're creating a shared library, or this relocation is against a symbol @@ -2079,8 +2038,8 @@ input_section)) return bfd_reloc_undefined; } - else if (r_symndx == 0) - /* r_symndx will be zero only for relocs against symbols + else if (r_symndx == STN_UNDEF) + /* r_symndx will be STN_UNDEF (zero) only for relocs against symbols from removed linkonce sections, or sections discarded by a linker script. */ value = 0; @@ -2283,7 +2242,6 @@ asection **local_sections) { Elf_Internal_Shdr *symtab_hdr; - struct elf_link_hash_entry **sym_hashes; Elf_Internal_Rela *rel; Elf_Internal_Rela *relend; const char *name; @@ -2314,7 +2272,6 @@ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; extsymoff = (elf_bad_symtab (input_bfd)) ? 0 : symtab_hdr->sh_info; - sym_hashes = elf_sym_hashes (input_bfd); rel = relocs; relend = relocs + input_section->reloc_count; for (; rel < relend; rel++) @@ -2490,15 +2447,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) { @@ -2512,7 +2462,6 @@ if (r_type == R_SCORE_GOT15) { - const Elf_Internal_Rela *relend; const Elf_Internal_Rela *lo16_rel; const struct elf_backend_data *bed; bfd_vma lo_addend = 0, lo_value = 0; @@ -3778,7 +3727,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -3840,28 +3789,6 @@ return NULL; } -/* Create a score elf linker hash table. */ - -struct bfd_link_hash_table * -s7_elf32_score_link_hash_table_create (bfd *abfd) -{ - struct score_elf_link_hash_table *ret; - bfd_size_type amt = sizeof (struct score_elf_link_hash_table); - - ret = bfd_malloc (amt); - if (ret == NULL) - return NULL; - - if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, score_elf_link_hash_newfunc, - sizeof (struct score_elf_link_hash_entry))) - { - free (ret); - return NULL; - } - - return &ret->root.root; -} - bfd_boolean s7_elf32_score_print_private_bfd_data (bfd *abfd, void * ptr) { diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-sh-relocs.h crash-6.1.6/=unpacked-tar1=/bfd/elf32-sh-relocs.h --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-sh-relocs.h 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-sh-relocs.h 2010-05-25 14:12:37.000000000 +0000 @@ -1,4 +1,4 @@ -/* Copyright 2006, 2007 Free Software Foundation, Inc. +/* Copyright 2006, 2007, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -1462,19 +1462,164 @@ 0, /* src_mask */ ((bfd_vma) 0) - 1, /* dst_mask */ FALSE), /* pcrel_offset */ +#else + EMPTY_HOWTO (169), + EMPTY_HOWTO (170), + EMPTY_HOWTO (171), + EMPTY_HOWTO (172), + EMPTY_HOWTO (173), + EMPTY_HOWTO (174), + EMPTY_HOWTO (175), + EMPTY_HOWTO (176), + EMPTY_HOWTO (177), + EMPTY_HOWTO (178), + EMPTY_HOWTO (179), + EMPTY_HOWTO (180), + EMPTY_HOWTO (181), + EMPTY_HOWTO (182), + EMPTY_HOWTO (183), + EMPTY_HOWTO (184), + EMPTY_HOWTO (185), + EMPTY_HOWTO (186), + EMPTY_HOWTO (187), + EMPTY_HOWTO (188), + EMPTY_HOWTO (189), + EMPTY_HOWTO (190), + EMPTY_HOWTO (191), + EMPTY_HOWTO (192), + EMPTY_HOWTO (193), + EMPTY_HOWTO (194), + EMPTY_HOWTO (195), + EMPTY_HOWTO (196), +#endif EMPTY_HOWTO (197), EMPTY_HOWTO (198), EMPTY_HOWTO (199), EMPTY_HOWTO (200), - EMPTY_HOWTO (201), - EMPTY_HOWTO (202), - EMPTY_HOWTO (203), - EMPTY_HOWTO (204), - EMPTY_HOWTO (205), - EMPTY_HOWTO (206), - EMPTY_HOWTO (207), - EMPTY_HOWTO (208), + + /* FDPIC-relative offset to a GOT entry, for movi20. */ + HOWTO (R_SH_GOT20, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 20, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_SH_GOT20", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x00f0ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* FDPIC-relative offset to a data object, for movi20. */ + HOWTO (R_SH_GOTOFF20, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 20, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_SH_GOTOFF20", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x00f0ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* FDPIC-relative offset to a GOT entry for a function descriptor. */ + HOWTO (R_SH_GOTFUNCDESC, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_SH_GOTFUNCDESC", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* FDPIC-relative offset to a GOT entry for a function descriptor, + for movi20. */ + HOWTO (R_SH_GOTFUNCDESC20, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 20, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_SH_GOTFUNCDESC20", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x00f0ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* FDPIC-relative offset to a function descriptor. */ + HOWTO (R_SH_GOTOFFFUNCDESC, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_SH_GOTOFFFUNCDESC", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* FDPIC-relative offset to a function descriptor, for movi20. */ + HOWTO (R_SH_GOTOFFFUNCDESC20, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 20, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_SH_GOTOFFFUNCDESC20", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x00f0ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Address of an official function descriptor. */ + HOWTO (R_SH_FUNCDESC, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_SH_FUNCDESC", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* Function descriptor to be filled in by the dynamic linker. */ + HOWTO (R_SH_FUNCDESC_VALUE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 64, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_SH_FUNCDESC_VALUE", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + +#ifdef INCLUDE_SHMEDIA EMPTY_HOWTO (209), EMPTY_HOWTO (210), EMPTY_HOWTO (211), diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-sh-symbian.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-sh-symbian.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-sh-symbian.c 2008-10-20 11:05:47.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-sh-symbian.c 2011-03-14 15:54:58.000000000 +0000 @@ -492,6 +492,7 @@ new_sym.st_info = ELF_ST_INFO (STB_GLOBAL, STT_FUNC); new_sym.st_other = ELF_ST_VISIBILITY (STV_DEFAULT); new_sym.st_shndx = SHN_UNDEF; + new_sym.st_target_internal = 0; if (! _bfd_elf_merge_symbol (input_bfd, info, ptr->new_name, & new_sym, diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-sh.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-sh.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-sh.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-sh.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,6 +1,6 @@ /* Renesas / SuperH SH specific support for 32-bit ELF Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Ian Lance Taylor, Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -27,6 +27,7 @@ #include "elf-bfd.h" #include "elf-vxworks.h" #include "elf/sh.h" +#include "dwarf2.h" #include "libiberty.h" #include "../opcodes/sh-opc.h" @@ -54,7 +55,17 @@ #define ELF_DYNAMIC_INTERPRETER "/usr/lib/libc.so.1" +/* FDPIC binaries have a default 128K stack. */ +#define DEFAULT_STACK_SIZE 0x20000 + #define MINUS_ONE ((bfd_vma) 0 - 1) + +/* Decide whether a reference to a symbol can be resolved locally or + not. If the symbol is protected, we want the local address, but + its function descriptor must be assigned by the dynamic linker. */ +#define SYMBOL_FUNCDESC_LOCAL(INFO, H) \ + (SYMBOL_REFERENCES_LOCAL (INFO, H) \ + || ! elf_hash_table (INFO)->dynamic_sections_created) #define SH_PARTIAL32 TRUE #define SH_SRC_MASK32 0xffffffff @@ -88,6 +99,22 @@ #endif } +/* Return true if OUTPUT_BFD is an FDPIC object. */ + +static bfd_boolean +fdpic_object_p (bfd *abfd ATTRIBUTE_UNUSED) +{ +#if !defined INCLUDE_SHMEDIA && !defined SH_TARGET_ALREADY_DEFINED + extern const bfd_target bfd_elf32_shfd_vec; + extern const bfd_target bfd_elf32_shbfd_vec; + + return (abfd->xvec == &bfd_elf32_shfd_vec + || abfd->xvec == &bfd_elf32_shbfd_vec); +#else + return FALSE; +#endif +} + /* Return the howto table for ABFD. */ static reloc_howto_type * @@ -333,6 +360,13 @@ { BFD_RELOC_32_GOTOFF, R_SH_GOTOFF }, { BFD_RELOC_SH_GOTPC, R_SH_GOTPC }, { BFD_RELOC_SH_GOTPLT32, R_SH_GOTPLT32 }, + { BFD_RELOC_SH_GOT20, R_SH_GOT20 }, + { BFD_RELOC_SH_GOTOFF20, R_SH_GOTOFF20 }, + { BFD_RELOC_SH_GOTFUNCDESC, R_SH_GOTFUNCDESC }, + { BFD_RELOC_SH_GOTFUNCDESC20, R_SH_GOTFUNCDESC20 }, + { BFD_RELOC_SH_GOTOFFFUNCDESC, R_SH_GOTOFFFUNCDESC }, + { BFD_RELOC_SH_GOTOFFFUNCDESC20, R_SH_GOTOFFFUNCDESC20 }, + { BFD_RELOC_SH_FUNCDESC, R_SH_FUNCDESC }, #ifdef INCLUDE_SHMEDIA { BFD_RELOC_SH_GOT_LOW16, R_SH_GOT_LOW16 }, { BFD_RELOC_SH_GOT_MEDLOW16, R_SH_GOT_MEDLOW16 }, @@ -447,6 +481,7 @@ BFD_ASSERT (r < R_SH_FIRST_INVALID_RELOC_3 || r > R_SH_LAST_INVALID_RELOC_3); BFD_ASSERT (r < R_SH_FIRST_INVALID_RELOC_4 || r > R_SH_LAST_INVALID_RELOC_4); BFD_ASSERT (r < R_SH_FIRST_INVALID_RELOC_5 || r > R_SH_LAST_INVALID_RELOC_5); + BFD_ASSERT (r < R_SH_FIRST_INVALID_RELOC_6 || r > R_SH_LAST_INVALID_RELOC_6); cache_ptr->howto = get_howto_table (abfd) + r; } @@ -1552,10 +1587,18 @@ bfd_vma got_entry; /* the address of the symbol's .got.plt entry */ bfd_vma plt; /* .plt (or a branch to .plt on VxWorks) */ bfd_vma reloc_offset; /* the offset of the symbol's JMP_SLOT reloc */ + bfd_boolean got20; /* TRUE if got_entry points to a movi20 + instruction (instead of a constant pool + entry). */ } symbol_fields; /* The offset of the resolver stub from the start of SYMBOL_ENTRY. */ bfd_vma symbol_resolve_offset; + + /* A different PLT layout which can be used for the first + MAX_SHORT_PLT entries. It must share the same plt0. NULL in + other cases. */ + const struct elf_sh_plt_info *short_plt; }; #ifdef INCLUDE_SHMEDIA @@ -1700,8 +1743,9 @@ { 0, MINUS_ONE, MINUS_ONE }, elf_sh_plt_entry_be, ELF_PLT_ENTRY_SIZE, - { 0, 32, 48 }, - 33 /* includes ISA encoding */ + { 0, 32, 48, FALSE }, + 33, /* includes ISA encoding */ + NULL }, { /* Little-endian non-PIC. */ @@ -1710,8 +1754,9 @@ { 0, MINUS_ONE, MINUS_ONE }, elf_sh_plt_entry_le, ELF_PLT_ENTRY_SIZE, - { 0, 32, 48 }, - 33 /* includes ISA encoding */ + { 0, 32, 48, FALSE }, + 33, /* includes ISA encoding */ + NULL }, }, { @@ -1722,8 +1767,9 @@ { MINUS_ONE, MINUS_ONE, MINUS_ONE }, elf_sh_pic_plt_entry_be, ELF_PLT_ENTRY_SIZE, - { 0, MINUS_ONE, 52 }, - 33 /* includes ISA encoding */ + { 0, MINUS_ONE, 52, FALSE }, + 33, /* includes ISA encoding */ + NULL }, { /* Little-endian PIC. */ @@ -1732,8 +1778,9 @@ { MINUS_ONE, MINUS_ONE, MINUS_ONE }, elf_sh_pic_plt_entry_le, ELF_PLT_ENTRY_SIZE, - { 0, MINUS_ONE, 52 }, - 33 /* includes ISA encoding */ + { 0, MINUS_ONE, 52, FALSE }, + 33, /* includes ISA encoding */ + NULL }, } }; @@ -1893,8 +1940,9 @@ { MINUS_ONE, 24, 20 }, elf_sh_plt_entry_be, ELF_PLT_ENTRY_SIZE, - { 20, 16, 24 }, - 8 + { 20, 16, 24, FALSE }, + 8, + NULL }, { /* Little-endian non-PIC. */ @@ -1903,8 +1951,9 @@ { MINUS_ONE, 24, 20 }, elf_sh_plt_entry_le, ELF_PLT_ENTRY_SIZE, - { 20, 16, 24 }, - 8 + { 20, 16, 24, FALSE }, + 8, + NULL }, }, { @@ -1915,8 +1964,9 @@ { MINUS_ONE, MINUS_ONE, MINUS_ONE }, elf_sh_pic_plt_entry_be, ELF_PLT_ENTRY_SIZE, - { 20, MINUS_ONE, 24 }, - 8 + { 20, MINUS_ONE, 24, FALSE }, + 8, + NULL }, { /* Little-endian PIC. */ @@ -1925,8 +1975,9 @@ { MINUS_ONE, MINUS_ONE, MINUS_ONE }, elf_sh_pic_plt_entry_le, ELF_PLT_ENTRY_SIZE, - { 20, MINUS_ONE, 24 }, - 8 + { 20, MINUS_ONE, 24, FALSE }, + 8, + NULL }, } }; @@ -2017,8 +2068,9 @@ { MINUS_ONE, MINUS_ONE, 8 }, vxworks_sh_plt_entry_be, VXWORKS_PLT_ENTRY_SIZE, - { 8, 14, 20 }, - 12 + { 8, 14, 20, FALSE }, + 12, + NULL }, { /* Little-endian non-PIC. */ @@ -2027,8 +2079,9 @@ { MINUS_ONE, MINUS_ONE, 8 }, vxworks_sh_plt_entry_le, VXWORKS_PLT_ENTRY_SIZE, - { 8, 14, 20 }, - 12 + { 8, 14, 20, FALSE }, + 12, + NULL }, }, { @@ -2039,8 +2092,9 @@ { MINUS_ONE, MINUS_ONE, MINUS_ONE }, vxworks_sh_pic_plt_entry_be, VXWORKS_PLT_ENTRY_SIZE, - { 8, MINUS_ONE, 20 }, - 12 + { 8, MINUS_ONE, 20, FALSE }, + 12, + NULL }, { /* Little-endian PIC. */ @@ -2049,18 +2103,184 @@ { MINUS_ONE, MINUS_ONE, MINUS_ONE }, vxworks_sh_pic_plt_entry_le, VXWORKS_PLT_ENTRY_SIZE, - { 8, MINUS_ONE, 20 }, - 12 + { 8, MINUS_ONE, 20, FALSE }, + 12, + NULL }, } }; +/* FDPIC PLT entries. Two unimplemented optimizations for lazy + binding are to omit the lazy binding stub when linking with -z now + and to move lazy binding stubs into a separate region for better + cache behavior. */ + +#define FDPIC_PLT_ENTRY_SIZE 28 +#define FDPIC_PLT_LAZY_OFFSET 20 + +/* FIXME: The lazy binding stub requires a plt0 - which may need to be + duplicated if it is out of range, or which can be inlined. So + right now it is always inlined, which wastes a word per stub. It + might be easier to handle the duplication if we put the lazy + stubs separately. */ + +static const bfd_byte fdpic_sh_plt_entry_be[FDPIC_PLT_ENTRY_SIZE] = +{ + 0xd0, 0x02, /* mov.l @(12,pc),r0 */ + 0x01, 0xce, /* mov.l @(r0,r12),r1 */ + 0x70, 0x04, /* add #4, r0 */ + 0x41, 0x2b, /* jmp @r1 */ + 0x0c, 0xce, /* mov.l @(r0,r12),r12 */ + 0x00, 0x09, /* nop */ + 0, 0, 0, 0, /* 0: replaced with offset of this symbol's funcdesc */ + 0, 0, 0, 0, /* 1: replaced with offset into relocation table. */ + 0x60, 0xc2, /* mov.l @r12,r0 */ + 0x40, 0x2b, /* jmp @r0 */ + 0x53, 0xc1, /* mov.l @(4,r12),r3 */ + 0x00, 0x09, /* nop */ +}; + +static const bfd_byte fdpic_sh_plt_entry_le[FDPIC_PLT_ENTRY_SIZE] = +{ + 0x02, 0xd0, /* mov.l @(12,pc),r0 */ + 0xce, 0x01, /* mov.l @(r0,r12),r1 */ + 0x04, 0x70, /* add #4, r0 */ + 0x2b, 0x41, /* jmp @r1 */ + 0xce, 0x0c, /* mov.l @(r0,r12),r12 */ + 0x09, 0x00, /* nop */ + 0, 0, 0, 0, /* 0: replaced with offset of this symbol's funcdesc */ + 0, 0, 0, 0, /* 1: replaced with offset into relocation table. */ + 0xc2, 0x60, /* mov.l @r12,r0 */ + 0x2b, 0x40, /* jmp @r0 */ + 0xc1, 0x53, /* mov.l @(4,r12),r3 */ + 0x09, 0x00, /* nop */ +}; + +static const struct elf_sh_plt_info fdpic_sh_plts[2] = { + { + /* Big-endian PIC. */ + NULL, + 0, + { MINUS_ONE, MINUS_ONE, MINUS_ONE }, + fdpic_sh_plt_entry_be, + FDPIC_PLT_ENTRY_SIZE, + { 12, MINUS_ONE, 16, FALSE }, + FDPIC_PLT_LAZY_OFFSET, + NULL + }, + { + /* Little-endian PIC. */ + NULL, + 0, + { MINUS_ONE, MINUS_ONE, MINUS_ONE }, + fdpic_sh_plt_entry_le, + FDPIC_PLT_ENTRY_SIZE, + { 12, MINUS_ONE, 16, FALSE }, + FDPIC_PLT_LAZY_OFFSET, + NULL + }, +}; + +/* On SH2A, we can use the movi20 instruction to generate shorter PLT + entries for the first 64K slots. We use the normal FDPIC PLT entry + past that point; we could also use movi20s, which might be faster, + but would not be any smaller. */ + +#define FDPIC_SH2A_PLT_ENTRY_SIZE 24 +#define FDPIC_SH2A_PLT_LAZY_OFFSET 16 + +static const bfd_byte fdpic_sh2a_plt_entry_be[FDPIC_SH2A_PLT_ENTRY_SIZE] = +{ + 0, 0, 0, 0, /* movi20 #gotofffuncdesc,r0 */ + 0x01, 0xce, /* mov.l @(r0,r12),r1 */ + 0x70, 0x04, /* add #4, r0 */ + 0x41, 0x2b, /* jmp @r1 */ + 0x0c, 0xce, /* mov.l @(r0,r12),r12 */ + 0, 0, 0, 0, /* 1: replaced with offset into relocation table. */ + 0x60, 0xc2, /* mov.l @r12,r0 */ + 0x40, 0x2b, /* jmp @r0 */ + 0x53, 0xc1, /* mov.l @(4,r12),r3 */ + 0x00, 0x09, /* nop */ +}; + +static const bfd_byte fdpic_sh2a_plt_entry_le[FDPIC_SH2A_PLT_ENTRY_SIZE] = +{ + 0, 0, 0, 0, /* movi20 #gotofffuncdesc,r0 */ + 0xce, 0x01, /* mov.l @(r0,r12),r1 */ + 0x04, 0x70, /* add #4, r0 */ + 0x2b, 0x41, /* jmp @r1 */ + 0xce, 0x0c, /* mov.l @(r0,r12),r12 */ + 0, 0, 0, 0, /* 1: replaced with offset into relocation table. */ + 0xc2, 0x60, /* mov.l @r12,r0 */ + 0x2b, 0x40, /* jmp @r0 */ + 0xc1, 0x53, /* mov.l @(4,r12),r3 */ + 0x09, 0x00, /* nop */ +}; + +static const struct elf_sh_plt_info fdpic_sh2a_short_plt_be = { + /* Big-endian FDPIC, max index 64K. */ + NULL, + 0, + { MINUS_ONE, MINUS_ONE, MINUS_ONE }, + fdpic_sh2a_plt_entry_be, + FDPIC_SH2A_PLT_ENTRY_SIZE, + { 0, MINUS_ONE, 12, TRUE }, + FDPIC_SH2A_PLT_LAZY_OFFSET, + NULL +}; + +static const struct elf_sh_plt_info fdpic_sh2a_short_plt_le = { + /* Little-endian FDPIC, max index 64K. */ + NULL, + 0, + { MINUS_ONE, MINUS_ONE, MINUS_ONE }, + fdpic_sh2a_plt_entry_le, + FDPIC_SH2A_PLT_ENTRY_SIZE, + { 0, MINUS_ONE, 12, TRUE }, + FDPIC_SH2A_PLT_LAZY_OFFSET, + NULL +}; + +static const struct elf_sh_plt_info fdpic_sh2a_plts[2] = { + { + /* Big-endian PIC. */ + NULL, + 0, + { MINUS_ONE, MINUS_ONE, MINUS_ONE }, + fdpic_sh_plt_entry_be, + FDPIC_PLT_ENTRY_SIZE, + { 12, MINUS_ONE, 16, FALSE }, + FDPIC_PLT_LAZY_OFFSET, + &fdpic_sh2a_short_plt_be + }, + { + /* Little-endian PIC. */ + NULL, + 0, + { MINUS_ONE, MINUS_ONE, MINUS_ONE }, + fdpic_sh_plt_entry_le, + FDPIC_PLT_ENTRY_SIZE, + { 12, MINUS_ONE, 16, FALSE }, + FDPIC_PLT_LAZY_OFFSET, + &fdpic_sh2a_short_plt_le + }, +}; + /* Return the type of PLT associated with ABFD. PIC_P is true if the object is position-independent. */ static const struct elf_sh_plt_info * -get_plt_info (bfd *abfd ATTRIBUTE_UNUSED, bfd_boolean pic_p) +get_plt_info (bfd *abfd, bfd_boolean pic_p) { + if (fdpic_object_p (abfd)) + { + /* If any input file requires SH2A we can use a shorter PLT + sequence. */ + if (sh_get_arch_from_bfd_mach (bfd_get_mach (abfd)) & arch_sh2a_base) + return &fdpic_sh2a_plts[!bfd_big_endian (abfd)]; + else + return &fdpic_sh_plts[!bfd_big_endian (abfd)]; + } if (vxworks_object_p (abfd)) return &vxworks_sh_plts[pic_p][!bfd_big_endian (abfd)]; return &elf_sh_plts[pic_p][!bfd_big_endian (abfd)]; @@ -2078,20 +2298,52 @@ } #endif +/* The number of PLT entries which can use a shorter PLT, if any. + Currently always 64K, since only SH-2A FDPIC uses this; a + 20-bit movi20 can address that many function descriptors below + _GLOBAL_OFFSET_TABLE_. */ +#define MAX_SHORT_PLT 65536 + /* Return the index of the PLT entry at byte offset OFFSET. */ static bfd_vma get_plt_index (const struct elf_sh_plt_info *info, bfd_vma offset) { - return (offset - info->plt0_entry_size) / info->symbol_entry_size; + bfd_vma plt_index = 0; + + offset -= info->plt0_entry_size; + if (info->short_plt != NULL) + { + if (offset > MAX_SHORT_PLT * info->short_plt->symbol_entry_size) + { + plt_index = MAX_SHORT_PLT; + offset -= MAX_SHORT_PLT * info->short_plt->symbol_entry_size; + } + else + info = info->short_plt; + } + return plt_index + offset / info->symbol_entry_size; } /* Do the inverse operation. */ static bfd_vma -get_plt_offset (const struct elf_sh_plt_info *info, bfd_vma index) +get_plt_offset (const struct elf_sh_plt_info *info, bfd_vma plt_index) { - return info->plt0_entry_size + (index * info->symbol_entry_size); + bfd_vma offset = 0; + + if (info->short_plt != NULL) + { + if (plt_index > MAX_SHORT_PLT) + { + offset = MAX_SHORT_PLT * info->short_plt->symbol_entry_size; + plt_index -= MAX_SHORT_PLT; + } + else + info = info->short_plt; + } + return (offset + info->plt0_entry_size + + (plt_index * info->symbol_entry_size)); } /* The sh linker needs to keep track of the number of relocs that it @@ -2114,6 +2366,12 @@ bfd_size_type pc_count; }; +union gotref +{ + bfd_signed_vma refcount; + bfd_vma offset; +}; + /* sh ELF linker hash entry. */ struct elf_sh_link_hash_entry @@ -2133,9 +2391,23 @@ bfd_signed_vma gotplt_refcount; + /* A local function descriptor, for FDPIC. The refcount counts + R_SH_FUNCDESC, R_SH_GOTOFFFUNCDESC, and R_SH_GOTOFFFUNCDESC20 + relocations; the PLT and GOT entry are accounted + for separately. After adjust_dynamic_symbol, the offset is + MINUS_ONE if there is no local descriptor (dynamic linker + managed and no PLT entry, or undefined weak non-dynamic). + During check_relocs we do not yet know whether the local + descriptor will be canonical. */ + union gotref funcdesc; + + /* How many of the above refcounted relocations were R_SH_FUNCDESC, + and thus require fixups or relocations. */ + bfd_signed_vma abs_funcdesc_refcount; + enum { - GOT_UNKNOWN = 0, GOT_NORMAL, GOT_TLS_GD, GOT_TLS_IE - } tls_type; + GOT_UNKNOWN = 0, GOT_NORMAL, GOT_TLS_GD, GOT_TLS_IE, GOT_FUNCDESC + } got_type; }; #define sh_elf_hash_entry(ent) ((struct elf_sh_link_hash_entry *)(ent)) @@ -2144,20 +2416,26 @@ { struct elf_obj_tdata root; - /* tls_type for each local got entry. */ - char *local_got_tls_type; + /* got_type for each local got entry. */ + char *local_got_type; + + /* Function descriptor refcount and offset for each local symbol. */ + union gotref *local_funcdesc; }; #define sh_elf_tdata(abfd) \ ((struct sh_elf_obj_tdata *) (abfd)->tdata.any) -#define sh_elf_local_got_tls_type(abfd) \ - (sh_elf_tdata (abfd)->local_got_tls_type) +#define sh_elf_local_got_type(abfd) \ + (sh_elf_tdata (abfd)->local_got_type) + +#define sh_elf_local_funcdesc(abfd) \ + (sh_elf_tdata (abfd)->local_funcdesc) #define is_sh_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == SH_ELF_TDATA) + && elf_object_id (bfd) == SH_ELF_DATA) /* Override the generic function because we need to store sh_elf_obj_tdata as the specific tdata. */ @@ -2166,7 +2444,7 @@ sh_elf_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct sh_elf_obj_tdata), - SH_ELF_TDATA); + SH_ELF_DATA); } /* sh ELF linker hash table. */ @@ -2183,6 +2461,9 @@ asection *srelplt; asection *sdynbss; asection *srelbss; + asection *sfuncdesc; + asection *srelfuncdesc; + asection *srofixup; /* The (unloaded but important) VxWorks .rela.plt.unloaded section. */ asection *srelplt2; @@ -2202,6 +2483,9 @@ /* True if the target system is VxWorks. */ bfd_boolean vxworks_p; + + /* True if the target system uses FDPIC. */ + bfd_boolean fdpic_p; }; /* Traverse an sh ELF linker hash table. */ @@ -2215,7 +2499,8 @@ /* Get the sh ELF linker hash table from a link_info structure. */ #define sh_elf_hash_table(p) \ - ((struct elf_sh_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == SH_ELF_DATA ? ((struct elf_sh_link_hash_table *) ((p)->hash)) : NULL) /* Create an entry in an sh ELF linker hash table. */ @@ -2247,7 +2532,9 @@ #ifdef INCLUDE_SHMEDIA ret->datalabel_got.refcount = ret->root.got.refcount; #endif - ret->tls_type = GOT_UNKNOWN; + ret->funcdesc.refcount = 0; + ret->abs_funcdesc_refcount = 0; + ret->got_type = GOT_UNKNOWN; } return (struct bfd_hash_entry *) ret; @@ -2267,7 +2554,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, sh_elf_link_hash_newfunc, - sizeof (struct elf_sh_link_hash_entry))) + sizeof (struct elf_sh_link_hash_entry), + SH_ELF_DATA)) { free (ret); return NULL; @@ -2285,10 +2573,39 @@ ret->tls_ldm_got.refcount = 0; ret->plt_info = NULL; ret->vxworks_p = vxworks_object_p (abfd); + ret->fdpic_p = fdpic_object_p (abfd); return &ret->root.root; } +static bfd_boolean +sh_elf_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info, asection *p) +{ + struct elf_sh_link_hash_table *htab = sh_elf_hash_table (info); + + /* Non-FDPIC binaries do not need dynamic symbols for sections. */ + if (!htab->fdpic_p) + return TRUE; + + /* We need dynamic symbols for every section, since segments can + relocate independently. */ + switch (elf_section_data (p)->this_hdr.sh_type) + { + case SHT_PROGBITS: + case SHT_NOBITS: + /* If sh_type is yet undecided, assume it could be + SHT_PROGBITS/SHT_NOBITS. */ + case SHT_NULL: + return FALSE; + + /* There shouldn't be section relative relocations + against any other section. */ + default: + return TRUE; + } +} + /* Create .got, .gotplt, and .rela.got sections in DYNOBJ, and set up shortcuts to them in our hash table. */ @@ -2301,11 +2618,46 @@ return FALSE; htab = sh_elf_hash_table (info); + if (htab == NULL) + return FALSE; + htab->sgot = bfd_get_section_by_name (dynobj, ".got"); htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); htab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); if (! htab->sgot || ! htab->sgotplt || ! htab->srelgot) abort (); + + htab->sfuncdesc = bfd_make_section_with_flags (dynobj, ".got.funcdesc", + (SEC_ALLOC | SEC_LOAD + | SEC_HAS_CONTENTS + | SEC_IN_MEMORY + | SEC_LINKER_CREATED)); + if (htab->sfuncdesc == NULL + || ! bfd_set_section_alignment (dynobj, htab->sfuncdesc, 2)) + return FALSE; + + htab->srelfuncdesc = bfd_make_section_with_flags (dynobj, + ".rela.got.funcdesc", + (SEC_ALLOC | SEC_LOAD + | SEC_HAS_CONTENTS + | SEC_IN_MEMORY + | SEC_LINKER_CREATED + | SEC_READONLY)); + if (htab->srelfuncdesc == NULL + || ! bfd_set_section_alignment (dynobj, htab->srelfuncdesc, 2)) + return FALSE; + + /* Also create .rofixup. */ + htab->srofixup = bfd_make_section_with_flags (dynobj, ".rofixup", + (SEC_ALLOC | SEC_LOAD + | SEC_HAS_CONTENTS + | SEC_IN_MEMORY + | SEC_LINKER_CREATED + | SEC_READONLY)); + if (htab->srofixup == NULL + || ! bfd_set_section_alignment (dynobj, htab->srofixup, 2)) + return FALSE; + return TRUE; } @@ -2316,7 +2668,7 @@ { struct elf_sh_link_hash_table *htab; flagword flags, pltflags; - register asection *s; + asection *s; const struct elf_backend_data *bed = get_elf_backend_data (abfd); int ptralign = 0; @@ -2336,6 +2688,9 @@ } htab = sh_elf_hash_table (info); + if (htab == NULL) + return FALSE; + if (htab->root.dynamic_sections_created) return TRUE; @@ -2482,6 +2837,8 @@ asection *s; htab = sh_elf_hash_table (info); + if (htab == NULL) + return FALSE; /* Make sure we know what is going on here. */ BFD_ASSERT (htab->root.dynobj != NULL @@ -2628,6 +2985,8 @@ info = (struct bfd_link_info *) inf; htab = sh_elf_hash_table (info); + if (htab == NULL) + return FALSE; eh = (struct elf_sh_link_hash_entry *) h; if ((h->got.refcount > 0 @@ -2659,6 +3018,7 @@ || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h)) { asection *s = htab->splt; + const struct elf_sh_plt_info *plt_info; /* If this is the first .plt entry, make room for the special first entry. */ @@ -2671,20 +3031,28 @@ not generating a shared library, then set the symbol to this location in the .plt. This is required to make function pointers compare as equal between the normal executable and - the shared library. */ - if (! info->shared - && !h->def_regular) + the shared library. Skip this for FDPIC, since the + function's address will be the address of the canonical + function descriptor. */ + if (!htab->fdpic_p && !info->shared && !h->def_regular) { h->root.u.def.section = s; h->root.u.def.value = h->plt.offset; } /* Make room for this entry. */ - s->size += htab->plt_info->symbol_entry_size; + plt_info = htab->plt_info; + if (plt_info->short_plt != NULL + && (get_plt_index (plt_info->short_plt, s->size) < MAX_SHORT_PLT)) + plt_info = plt_info->short_plt; + s->size += plt_info->symbol_entry_size; /* We also need to make an entry in the .got.plt section, which will be placed in the .got section by the linker script. */ - htab->sgotplt->size += 4; + if (!htab->fdpic_p) + htab->sgotplt->size += 4; + else + htab->sgotplt->size += 8; /* We also need to make an entry in the .rel.plt section. */ htab->srelplt->size += sizeof (Elf32_External_Rela); @@ -2722,7 +3090,7 @@ { asection *s; bfd_boolean dyn; - int tls_type = sh_elf_hash_entry (h)->tls_type; + int got_type = sh_elf_hash_entry (h)->got_type; /* Make sure this symbol is output as a dynamic symbol. Undefined weak syms won't yet be marked as dynamic. */ @@ -2737,21 +3105,40 @@ h->got.offset = s->size; s->size += 4; /* R_SH_TLS_GD needs 2 consecutive GOT slots. */ - if (tls_type == GOT_TLS_GD) + if (got_type == GOT_TLS_GD) s->size += 4; dyn = htab->root.dynamic_sections_created; + if (!dyn) + { + /* No dynamic relocations required. */ + if (htab->fdpic_p && !info->shared + && h->root.type != bfd_link_hash_undefweak + && (got_type == GOT_NORMAL || got_type == GOT_FUNCDESC)) + htab->srofixup->size += 4; + } /* R_SH_TLS_IE_32 needs one dynamic relocation if dynamic, R_SH_TLS_GD needs one if local symbol and two if global. */ - if ((tls_type == GOT_TLS_GD && h->dynindx == -1) - || (tls_type == GOT_TLS_IE && dyn)) + else if ((got_type == GOT_TLS_GD && h->dynindx == -1) + || got_type == GOT_TLS_IE) htab->srelgot->size += sizeof (Elf32_External_Rela); - else if (tls_type == GOT_TLS_GD) + else if (got_type == GOT_TLS_GD) htab->srelgot->size += 2 * sizeof (Elf32_External_Rela); + else if (got_type == GOT_FUNCDESC) + { + if (!info->shared && SYMBOL_FUNCDESC_LOCAL (info, h)) + htab->srofixup->size += 4; + else + htab->srelgot->size += sizeof (Elf32_External_Rela); + } else if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT || h->root.type != bfd_link_hash_undefweak) && (info->shared || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))) htab->srelgot->size += sizeof (Elf32_External_Rela); + else if (htab->fdpic_p && !info->shared && got_type == GOT_NORMAL + && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT + || h->root.type != bfd_link_hash_undefweak)) + htab->srofixup->size += 4; } else h->got.offset = (bfd_vma) -1; @@ -2782,6 +3169,46 @@ eh->datalabel_got.offset = (bfd_vma) -1; #endif + /* Allocate space for any dynamic relocations to function + descriptors, canonical or otherwise. We need to relocate the + reference unless it resolves to zero, which only happens for + undefined weak symbols (either non-default visibility, or when + static linking). Any GOT slot is accounted for elsewhere. */ + if (eh->abs_funcdesc_refcount > 0 + && (h->root.type != bfd_link_hash_undefweak + || (htab->root.dynamic_sections_created + && ! SYMBOL_CALLS_LOCAL (info, h)))) + { + if (!info->shared && SYMBOL_FUNCDESC_LOCAL (info, h)) + htab->srofixup->size += eh->abs_funcdesc_refcount * 4; + else + htab->srelgot->size + += eh->abs_funcdesc_refcount * sizeof (Elf32_External_Rela); + } + + /* We must allocate a function descriptor if there are references to + a canonical descriptor (R_SH_GOTFUNCDESC or R_SH_FUNCDESC) and + the dynamic linker isn't going to allocate it. None of this + applies if we already created one in .got.plt, but if the + canonical function descriptor can be in this object, there + won't be a PLT entry at all. */ + if ((eh->funcdesc.refcount > 0 + || (h->got.offset != MINUS_ONE && eh->got_type == GOT_FUNCDESC)) + && h->root.type != bfd_link_hash_undefweak + && SYMBOL_FUNCDESC_LOCAL (info, h)) + { + /* Make room for this function descriptor. */ + eh->funcdesc.offset = htab->sfuncdesc->size; + htab->sfuncdesc->size += 8; + + /* We will need a relocation or two fixups to initialize the + function descriptor, so allocate those too. */ + if (!info->shared && SYMBOL_CALLS_LOCAL (info, h)) + htab->srofixup->size += 8; + else + htab->srelfuncdesc->size += sizeof (Elf32_External_Rela); + } + if (eh->dyn_relocs == NULL) return TRUE; @@ -2877,6 +3304,10 @@ { asection *sreloc = elf_section_data (p->sec)->sreloc; sreloc->size += p->count * sizeof (Elf32_External_Rela); + + /* If we need relocations, we do not need fixups. */ + if (htab->fdpic_p && !info->shared) + htab->srofixup->size -= 4 * (p->count - p->pc_count); } return TRUE; @@ -2919,9 +3350,87 @@ sh_elf_always_size_sections (bfd *output_bfd, struct bfd_link_info *info) { sh_elf_hash_table (info)->plt_info = get_plt_info (output_bfd, info->shared); + + if (sh_elf_hash_table (info)->fdpic_p && !info->relocatable) + { + struct elf_link_hash_entry *h; + + /* Force a PT_GNU_STACK segment to be created. */ + if (! elf_tdata (output_bfd)->stack_flags) + elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X; + + /* Define __stacksize if it's not defined yet. */ + h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize", + FALSE, FALSE, FALSE); + if (! h || h->root.type != bfd_link_hash_defined + || h->type != STT_OBJECT + || !h->def_regular) + { + struct bfd_link_hash_entry *bh = NULL; + + if (!(_bfd_generic_link_add_one_symbol + (info, output_bfd, "__stacksize", + BSF_GLOBAL, bfd_abs_section_ptr, DEFAULT_STACK_SIZE, + (const char *) NULL, FALSE, + get_elf_backend_data (output_bfd)->collect, &bh))) + return FALSE; + + h = (struct elf_link_hash_entry *) bh; + h->def_regular = 1; + h->type = STT_OBJECT; + } + } + return TRUE; +} + +#if !defined INCLUDE_SHMEDIA && !defined SH_TARGET_ALREADY_DEFINED + +static bfd_boolean +sh_elf_modify_program_headers (bfd *output_bfd, struct bfd_link_info *info) +{ + struct elf_obj_tdata *tdata = elf_tdata (output_bfd); + struct elf_segment_map *m; + Elf_Internal_Phdr *p; + + /* objcopy and strip preserve what's already there using + sh_elf_copy_private_bfd_data (). */ + if (! info) + return TRUE; + + for (p = tdata->phdr, m = tdata->segment_map; m != NULL; m = m->next, p++) + if (m->p_type == PT_GNU_STACK) + break; + + if (m) + { + struct elf_link_hash_entry *h; + + /* Obtain the pointer to the __stacksize symbol. */ + h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize", + FALSE, FALSE, FALSE); + if (h) + { + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + BFD_ASSERT (h->root.type == bfd_link_hash_defined); + } + + /* Set the header p_memsz from the symbol value. We + intentionally ignore the symbol section. */ + if (h && h->root.type == bfd_link_hash_defined) + p->p_memsz = h->root.u.def.value; + else + p->p_memsz = DEFAULT_STACK_SIZE; + + p->p_align = 8; + } + return TRUE; } +#endif + /* Set the sizes of the dynamic sections. */ static bfd_boolean @@ -2935,6 +3444,9 @@ bfd *ibfd; htab = sh_elf_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->root.dynobj; BFD_ASSERT (dynobj != NULL); @@ -2956,7 +3468,8 @@ { bfd_signed_vma *local_got; bfd_signed_vma *end_local_got; - char *local_tls_type; + union gotref *local_funcdesc, *end_local_funcdesc; + char *local_got_type; bfd_size_type locsymcount; Elf_Internal_Shdr *symtab_hdr; asection *srel; @@ -2994,39 +3507,88 @@ srel->size += p->count * sizeof (Elf32_External_Rela); if ((p->sec->output_section->flags & SEC_READONLY) != 0) info->flags |= DF_TEXTREL; + + /* If we need relocations, we do not need fixups. */ + if (htab->fdpic_p && !info->shared) + htab->srofixup->size -= 4 * (p->count - p->pc_count); } } } - local_got = elf_local_got_refcounts (ibfd); - if (!local_got) - continue; - symtab_hdr = &elf_symtab_hdr (ibfd); locsymcount = symtab_hdr->sh_info; #ifdef INCLUDE_SHMEDIA /* Count datalabel local GOT. */ locsymcount *= 2; #endif - end_local_got = local_got + locsymcount; - local_tls_type = sh_elf_local_got_tls_type (ibfd); s = htab->sgot; srel = htab->srelgot; - for (; local_got < end_local_got; ++local_got) + + local_got = elf_local_got_refcounts (ibfd); + if (local_got) + { + end_local_got = local_got + locsymcount; + local_got_type = sh_elf_local_got_type (ibfd); + local_funcdesc = sh_elf_local_funcdesc (ibfd); + for (; local_got < end_local_got; ++local_got) + { + if (*local_got > 0) + { + *local_got = s->size; + s->size += 4; + if (*local_got_type == GOT_TLS_GD) + s->size += 4; + if (info->shared) + srel->size += sizeof (Elf32_External_Rela); + else + htab->srofixup->size += 4; + + if (*local_got_type == GOT_FUNCDESC) + { + if (local_funcdesc == NULL) + { + bfd_size_type size; + + size = locsymcount * sizeof (union gotref); + local_funcdesc = (union gotref *) bfd_zalloc (ibfd, + size); + if (local_funcdesc == NULL) + return FALSE; + sh_elf_local_funcdesc (ibfd) = local_funcdesc; + local_funcdesc += (local_got + - elf_local_got_refcounts (ibfd)); + } + local_funcdesc->refcount++; + ++local_funcdesc; + } + } + else + *local_got = (bfd_vma) -1; + ++local_got_type; + } + } + + local_funcdesc = sh_elf_local_funcdesc (ibfd); + if (local_funcdesc) { - if (*local_got > 0) + end_local_funcdesc = local_funcdesc + locsymcount; + + for (; local_funcdesc < end_local_funcdesc; ++local_funcdesc) { - *local_got = s->size; - s->size += 4; - if (*local_tls_type == GOT_TLS_GD) - s->size += 4; - if (info->shared) - srel->size += sizeof (Elf32_External_Rela); + if (local_funcdesc->refcount > 0) + { + local_funcdesc->offset = htab->sfuncdesc->size; + htab->sfuncdesc->size += 8; + if (!info->shared) + htab->srofixup->size += 8; + else + htab->srelfuncdesc->size += sizeof (Elf32_External_Rela); + } + else + local_funcdesc->offset = MINUS_ONE; } - else - *local_got = (bfd_vma) -1; - ++local_tls_type; } + } if (htab->tls_ldm_got.refcount > 0) @@ -3040,10 +3602,30 @@ else htab->tls_ldm_got.offset = -1; + /* Only the reserved entries should be present. For FDPIC, they go at + the end of .got.plt. */ + if (htab->fdpic_p) + { + BFD_ASSERT (htab->sgotplt && htab->sgotplt->size == 12); + htab->sgotplt->size = 0; + } + /* Allocate global sym .plt and .got entries, and space for global sym dynamic relocs. */ elf_link_hash_traverse (&htab->root, allocate_dynrelocs, info); + /* Move the reserved entries and the _GLOBAL_OFFSET_TABLE_ symbol to the + end of the FDPIC .got.plt. */ + if (htab->fdpic_p) + { + htab->root.hgot->root.u.def.value = htab->sgotplt->size; + htab->sgotplt->size += 12; + } + + /* At the very end of the .rofixup section is a pointer to the GOT. */ + if (htab->fdpic_p && htab->srofixup != NULL) + htab->srofixup->size += 4; + /* We now have determined the sizes of the various dynamic sections. Allocate memory for them. */ relocs = FALSE; @@ -3055,6 +3637,8 @@ if (s == htab->splt || s == htab->sgot || s == htab->sgotplt + || s == htab->sfuncdesc + || s == htab->srofixup || s == htab->sdynbss) { /* Strip this section if we don't need it; see the @@ -3128,6 +3712,12 @@ || ! add_dynamic_entry (DT_JMPREL, 0)) return FALSE; } + else if ((elf_elfheader (output_bfd)->e_flags & EF_SH_FDPIC) + && htab->sgot->size != 0) + { + if (! add_dynamic_entry (DT_PLTGOT, 0)) + return FALSE; + } if (relocs) { @@ -3157,6 +3747,175 @@ return TRUE; } +/* Add a dynamic relocation to the SRELOC section. */ + +inline static bfd_vma +sh_elf_add_dyn_reloc (bfd *output_bfd, asection *sreloc, bfd_vma offset, + int reloc_type, long dynindx, bfd_vma addend) +{ + Elf_Internal_Rela outrel; + bfd_vma reloc_offset; + + outrel.r_offset = offset; + outrel.r_info = ELF32_R_INFO (dynindx, reloc_type); + outrel.r_addend = addend; + + reloc_offset = sreloc->reloc_count * sizeof (Elf32_External_Rela); + BFD_ASSERT (reloc_offset < sreloc->size); + bfd_elf32_swap_reloca_out (output_bfd, &outrel, + sreloc->contents + reloc_offset); + sreloc->reloc_count++; + + return reloc_offset; +} + +/* Add an FDPIC read-only fixup. */ + +inline static void +sh_elf_add_rofixup (bfd *output_bfd, asection *srofixup, bfd_vma offset) +{ + bfd_vma fixup_offset; + + fixup_offset = srofixup->reloc_count++ * 4; + BFD_ASSERT (fixup_offset < srofixup->size); + bfd_put_32 (output_bfd, offset, srofixup->contents + fixup_offset); +} + +/* Return the offset of the generated .got section from the + _GLOBAL_OFFSET_TABLE_ symbol. */ + +static bfd_signed_vma +sh_elf_got_offset (struct elf_sh_link_hash_table *htab) +{ + return (htab->sgot->output_offset - htab->sgotplt->output_offset + - htab->root.hgot->root.u.def.value); +} + +/* Find the segment number in which OSEC, and output section, is + located. */ + +static unsigned +sh_elf_osec_to_segment (bfd *output_bfd, asection *osec) +{ + Elf_Internal_Phdr *p = _bfd_elf_find_segment_containing_section (output_bfd, + osec); + + /* FIXME: Nothing ever says what this index is relative to. The kernel + supplies data in terms of the number of load segments but this is + a phdr index and the first phdr may not be a load segment. */ + return (p != NULL) ? p - elf_tdata (output_bfd)->phdr : -1; +} + +static bfd_boolean +sh_elf_osec_readonly_p (bfd *output_bfd, asection *osec) +{ + unsigned seg = sh_elf_osec_to_segment (output_bfd, osec); + + return ! (elf_tdata (output_bfd)->phdr[seg].p_flags & PF_W); +} + +/* Generate the initial contents of a local function descriptor, along + with any relocations or fixups required. */ +static bfd_boolean +sh_elf_initialize_funcdesc (bfd *output_bfd, + struct bfd_link_info *info, + struct elf_link_hash_entry *h, + bfd_vma offset, + asection *section, + bfd_vma value) +{ + struct elf_sh_link_hash_table *htab; + int dynindx; + bfd_vma addr, seg; + + htab = sh_elf_hash_table (info); + + /* FIXME: The ABI says that the offset to the function goes in the + descriptor, along with the segment index. We're RELA, so it could + go in the reloc instead... */ + + if (h != NULL && SYMBOL_CALLS_LOCAL (info, h)) + { + section = h->root.u.def.section; + value = h->root.u.def.value; + } + + if (h == NULL || SYMBOL_CALLS_LOCAL (info, h)) + { + dynindx = elf_section_data (section->output_section)->dynindx; + addr = value + section->output_offset; + seg = sh_elf_osec_to_segment (output_bfd, section->output_section); + } + else + { + BFD_ASSERT (h->dynindx != -1); + dynindx = h->dynindx; + addr = seg = 0; + } + + if (!info->shared && SYMBOL_CALLS_LOCAL (info, h)) + { + if (h == NULL || h->root.type != bfd_link_hash_undefweak) + { + sh_elf_add_rofixup (output_bfd, htab->srofixup, + offset + + htab->sfuncdesc->output_section->vma + + htab->sfuncdesc->output_offset); + sh_elf_add_rofixup (output_bfd, htab->srofixup, + offset + 4 + + htab->sfuncdesc->output_section->vma + + htab->sfuncdesc->output_offset); + } + + /* There are no dynamic relocations so fill in the final + address and gp value (barring fixups). */ + addr += section->output_section->vma; + seg = htab->root.hgot->root.u.def.value + + htab->root.hgot->root.u.def.section->output_section->vma + + htab->root.hgot->root.u.def.section->output_offset; + } + else + sh_elf_add_dyn_reloc (output_bfd, htab->srelfuncdesc, + offset + + htab->sfuncdesc->output_section->vma + + htab->sfuncdesc->output_offset, + R_SH_FUNCDESC_VALUE, dynindx, 0); + + bfd_put_32 (output_bfd, addr, htab->sfuncdesc->contents + offset); + bfd_put_32 (output_bfd, seg, htab->sfuncdesc->contents + offset + 4); + + return TRUE; +} + +/* Install a 20-bit movi20 field starting at ADDR, which occurs in OUTPUT_BFD. + VALUE is the field's value. Return bfd_reloc_ok if successful or an error + otherwise. */ + +static bfd_reloc_status_type +install_movi20_field (bfd *output_bfd, unsigned long relocation, + bfd *input_bfd, asection *input_section, + bfd_byte *contents, bfd_vma offset) +{ + unsigned long cur_val; + bfd_byte *addr; + bfd_reloc_status_type r; + + if (offset > bfd_get_section_limit (input_bfd, input_section)) + return bfd_reloc_outofrange; + + r = bfd_check_overflow (complain_overflow_signed, 20, 0, + bfd_arch_bits_per_address (input_bfd), relocation); + if (r != bfd_reloc_ok) + return r; + + addr = contents + offset; + cur_val = bfd_get_16 (output_bfd, addr); + bfd_put_16 (output_bfd, cur_val | ((relocation & 0xf0000) >> 12), addr); + bfd_put_16 (output_bfd, relocation & 0xffff, addr + 2); + + return bfd_reloc_ok; +} + /* Relocate an SH ELF section. */ static bfd_boolean @@ -3170,31 +3929,48 @@ Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; Elf_Internal_Rela *rel, *relend; - bfd *dynobj; + bfd *dynobj = NULL; bfd_vma *local_got_offsets; - asection *sgot; - asection *sgotplt; - asection *splt; - asection *sreloc; - asection *srelgot; + asection *sgot = NULL; + asection *sgotplt = NULL; + asection *splt = NULL; + asection *sreloc = NULL; + asection *srelgot = NULL; bfd_boolean is_vxworks_tls; + unsigned isec_segment, got_segment, plt_segment, check_segment[2]; + bfd_boolean fdpic_p = FALSE; BFD_ASSERT (is_sh_elf (input_bfd)); htab = sh_elf_hash_table (info); + if (htab != NULL) + { + dynobj = htab->root.dynobj; + sgot = htab->sgot; + sgotplt = htab->sgotplt; + splt = htab->splt; + fdpic_p = htab->fdpic_p; + } symtab_hdr = &elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); - dynobj = htab->root.dynobj; local_got_offsets = elf_local_got_offsets (input_bfd); - sgot = htab->sgot; - sgotplt = htab->sgotplt; - splt = htab->splt; - sreloc = NULL; - srelgot = NULL; + isec_segment = sh_elf_osec_to_segment (output_bfd, + input_section->output_section); + if (fdpic_p && sgot) + got_segment = sh_elf_osec_to_segment (output_bfd, + sgot->output_section); + else + got_segment = -1; + if (fdpic_p && splt) + plt_segment = sh_elf_osec_to_segment (output_bfd, + splt->output_section); + else + plt_segment = -1; + /* We have to handle relocations in vxworks .tls_vars sections specially, because the dynamic loader is 'weird'. */ - is_vxworks_tls = (htab->vxworks_p && info->shared + is_vxworks_tls = (htab && htab->vxworks_p && info->shared && !strcmp (input_section->output_section->name, ".tls_vars")); @@ -3213,7 +3989,8 @@ bfd_reloc_status_type r; int seen_stt_datalabel = 0; bfd_vma off; - int tls_type; + int got_type; + const char *symname = NULL; r_symndx = ELF32_R_SYM (rel->r_info); @@ -3231,14 +4008,16 @@ || r_type >= R_SH_max || (r_type >= (int) R_SH_FIRST_INVALID_RELOC && r_type <= (int) R_SH_LAST_INVALID_RELOC) + || (r_type >= (int) R_SH_FIRST_INVALID_RELOC_2 + && r_type <= (int) R_SH_LAST_INVALID_RELOC_2) || ( r_type >= (int) R_SH_FIRST_INVALID_RELOC_3 && r_type <= (int) R_SH_LAST_INVALID_RELOC_3) || ( r_type >= (int) R_SH_FIRST_INVALID_RELOC_4 && r_type <= (int) R_SH_LAST_INVALID_RELOC_4) || ( r_type >= (int) R_SH_FIRST_INVALID_RELOC_5 && r_type <= (int) R_SH_LAST_INVALID_RELOC_5) - || (r_type >= (int) R_SH_FIRST_INVALID_RELOC_2 - && r_type <= (int) R_SH_LAST_INVALID_RELOC_2)) + || ( r_type >= (int) R_SH_FIRST_INVALID_RELOC_6 + && r_type <= (int) R_SH_LAST_INVALID_RELOC_6)) { bfd_set_error (bfd_error_bad_value); return FALSE; @@ -3254,10 +4033,18 @@ h = NULL; sym = NULL; sec = NULL; + check_segment[0] = -1; + check_segment[1] = -1; if (r_symndx < symtab_hdr->sh_info) { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; + + symname = bfd_elf_string_from_elf_section + (input_bfd, symtab_hdr->sh_link, sym->st_name); + if (symname == NULL || *symname == '\0') + symname = bfd_section_name (input_bfd, sec); + relocation = (sec->output_section->vma + sec->output_offset + sym->st_value); @@ -3344,6 +4131,7 @@ relocation = 0; h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + symname = h->root.root.string; while (h->root.type == bfd_link_hash_indirect || h->root.type == bfd_link_hash_warning) { @@ -3360,7 +4148,7 @@ { bfd_boolean dyn; - dyn = htab->root.dynamic_sections_created; + dyn = htab ? htab->root.dynamic_sections_created : FALSE; sec = h->root.u.def.section; /* In these cases, we don't need the relocation value. We check specially because in some obscure cases @@ -3377,6 +4165,12 @@ || r_type == R_SH_PLT_HI16) && h->plt.offset != (bfd_vma) -1) || ((r_type == R_SH_GOT32 + || r_type == R_SH_GOT20 + || r_type == R_SH_GOTFUNCDESC + || r_type == R_SH_GOTFUNCDESC20 + || r_type == R_SH_GOTOFFFUNCDESC + || r_type == R_SH_GOTOFFFUNCDESC20 + || r_type == R_SH_FUNCDESC || r_type == R_SH_GOT_LOW16 || r_type == R_SH_GOT_MEDLOW16 || r_type == R_SH_GOT_MEDHI16 @@ -3411,8 +4205,8 @@ && ((input_section->flags & SEC_DEBUGGING) != 0 && h->def_dynamic)) || (sec->output_section == NULL - && (sh_elf_hash_entry (h)->tls_type == GOT_TLS_IE - || sh_elf_hash_entry (h)->tls_type == GOT_TLS_GD))) + && (sh_elf_hash_entry (h)->got_type == GOT_TLS_IE + || sh_elf_hash_entry (h)->got_type == GOT_TLS_GD))) ; else if (sec->output_section != NULL) relocation = ((h->root.u.def.value @@ -3452,19 +4246,22 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; + /* Check for inter-segment relocations in FDPIC files. Most + relocations connect the relocation site to the location of + the target symbol, but there are some exceptions below. */ + check_segment[0] = isec_segment; + if (sec != NULL) + check_segment[1] = sh_elf_osec_to_segment (output_bfd, + sec->output_section); + else + check_segment[1] = -1; + switch ((int) r_type) { final_link_relocate: @@ -3601,7 +4398,7 @@ && (h == NULL || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT || h->root.type != bfd_link_hash_undefweak) - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0 && !is_vxworks_tls && (r_type == R_SH_DIR32 @@ -3658,6 +4455,24 @@ outrel.r_addend = addend; } #endif + else if (fdpic_p + && (h == NULL + || ((info->symbolic || h->dynindx == -1) + && h->def_regular))) + { + int dynindx; + + BFD_ASSERT (sec != NULL); + BFD_ASSERT (sec->output_section != NULL); + dynindx = elf_section_data (sec->output_section)->dynindx; + outrel.r_info = ELF32_R_INFO (dynindx, R_SH_DIR32); + outrel.r_addend = relocation; + outrel.r_addend + += (howto->partial_inplace + ? bfd_get_32 (input_bfd, contents + rel->r_offset) + : addend); + outrel.r_addend -= sec->output_section->vma; + } else { /* h->dynindx may be -1 if this symbol was marked to @@ -3685,6 +4500,8 @@ loc += sreloc->reloc_count++ * sizeof (Elf32_External_Rela); bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc); + check_segment[0] = check_segment[1] = -1; + /* If this reloc is against an external symbol, we do not want to fiddle with the addend. Otherwise, we need to include the symbol value so that it becomes @@ -3692,6 +4509,36 @@ if (! relocate) continue; } + else if (fdpic_p && !info->shared + && r_type == R_SH_DIR32 + && (input_section->flags & SEC_ALLOC) != 0) + { + bfd_vma offset; + + BFD_ASSERT (htab); + + if (sh_elf_osec_readonly_p (output_bfd, + input_section->output_section)) + { + (*_bfd_error_handler) + (_("%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section"), + input_bfd, + input_section, + (long) rel->r_offset, + symname); + return FALSE; + } + + offset = _bfd_elf_section_offset (output_bfd, info, + input_section, rel->r_offset); + if (offset != (bfd_vma)-1) + sh_elf_add_rofixup (output_bfd, htab->srofixup, + input_section->output_section->vma + + input_section->output_offset + + rel->r_offset); + + check_segment[0] = check_segment[1] = -1; + } goto final_link_relocate; case R_SH_GOTPLT32: @@ -3718,6 +4565,7 @@ /* Relocation is to the entry for this symbol in the global offset table extension for the procedure linkage table. */ + BFD_ASSERT (htab); BFD_ASSERT (sgotplt != NULL); relocation = (sgotplt->output_offset + (get_plt_index (htab->plt_info, h->plt.offset) @@ -3731,6 +4579,7 @@ force_got: case R_SH_GOT32: + case R_SH_GOT20: #ifdef INCLUDE_SHMEDIA case R_SH_GOT_LOW16: case R_SH_GOT_MEDLOW16: @@ -3742,7 +4591,9 @@ /* Relocation is to the entry for this symbol in the global offset table. */ + BFD_ASSERT (htab); BFD_ASSERT (sgot != NULL); + check_segment[0] = check_segment[1] = -1; if (h != NULL) { @@ -3796,10 +4647,21 @@ else #endif h->got.offset |= 1; + + /* If we initialize the GOT entry here with a valid + symbol address, also add a fixup. */ + if (fdpic_p && !info->shared + && sh_elf_hash_entry (h)->got_type == GOT_NORMAL + && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT + || h->root.type != bfd_link_hash_undefweak)) + sh_elf_add_rofixup (output_bfd, htab->srofixup, + sgot->output_section->vma + + sgot->output_offset + + off); } } - relocation = sgot->output_offset + off; + relocation = sh_elf_got_offset (htab) + off; } else { @@ -3849,12 +4711,30 @@ outrel.r_offset = (sgot->output_section->vma + sgot->output_offset + off); - outrel.r_info = ELF32_R_INFO (0, R_SH_RELATIVE); - outrel.r_addend = relocation; + if (fdpic_p) + { + int dynindx + = elf_section_data (sec->output_section)->dynindx; + outrel.r_info = ELF32_R_INFO (dynindx, R_SH_DIR32); + outrel.r_addend = relocation; + outrel.r_addend -= sec->output_section->vma; + } + else + { + outrel.r_info = ELF32_R_INFO (0, R_SH_RELATIVE); + outrel.r_addend = relocation; + } loc = srelgot->contents; loc += srelgot->reloc_count++ * sizeof (Elf32_External_Rela); bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc); } + else if (fdpic_p + && (sh_elf_local_got_type (input_bfd) [r_symndx] + == GOT_NORMAL)) + sh_elf_add_rofixup (output_bfd, htab->srofixup, + sgot->output_section->vma + + sgot->output_offset + + off); #ifdef INCLUDE_SHMEDIA if (rel->r_addend) @@ -3864,33 +4744,40 @@ local_got_offsets[r_symndx] |= 1; } - relocation = sgot->output_offset + off; + relocation = sh_elf_got_offset (htab) + off; } #ifdef GOT_BIAS relocation -= GOT_BIAS; #endif - goto final_link_relocate; + if (r_type == R_SH_GOT20) + { + r = install_movi20_field (output_bfd, relocation + addend, + input_bfd, input_section, contents, + rel->r_offset); + break; + } + else + goto final_link_relocate; case R_SH_GOTOFF: + case R_SH_GOTOFF20: #ifdef INCLUDE_SHMEDIA case R_SH_GOTOFF_LOW16: case R_SH_GOTOFF_MEDLOW16: case R_SH_GOTOFF_MEDHI16: case R_SH_GOTOFF_HI16: #endif - /* Relocation is relative to the start of the global offset - table. */ - - BFD_ASSERT (sgot != NULL); - - /* Note that sgot->output_offset is not involved in this - calculation. We always want the start of .got. If we - defined _GLOBAL_OFFSET_TABLE in a different way, as is - permitted by the ABI, we might have to change this - calculation. */ - relocation -= sgot->output_section->vma; + /* GOTOFF relocations are relative to _GLOBAL_OFFSET_TABLE_, which + we place at the start of the .got.plt section. This is the same + as the start of the output .got section, unless there are function + descriptors in front of it. */ + BFD_ASSERT (htab); + BFD_ASSERT (sgotplt != NULL); + check_segment[0] = got_segment; + relocation -= sgotplt->output_section->vma + sgotplt->output_offset + + htab->root.hgot->root.u.def.value; #ifdef GOT_BIAS relocation -= GOT_BIAS; @@ -3898,7 +4785,15 @@ addend = rel->r_addend; - goto final_link_relocate; + if (r_type == R_SH_GOTOFF20) + { + r = install_movi20_field (output_bfd, relocation + addend, + input_bfd, input_section, contents, + rel->r_offset); + break; + } + else + goto final_link_relocate; case R_SH_GOTPC: #ifdef INCLUDE_SHMEDIA @@ -3909,8 +4804,8 @@ #endif /* Use global offset table as symbol value. */ - BFD_ASSERT (sgot != NULL); - relocation = sgot->output_section->vma; + BFD_ASSERT (sgotplt != NULL); + relocation = sgotplt->output_section->vma + sgotplt->output_offset; #ifdef GOT_BIAS relocation += GOT_BIAS; @@ -3935,6 +4830,13 @@ if (h == NULL) goto final_link_relocate; + /* We don't want to warn on calls to undefined weak symbols, + as calls to them must be protected by non-NULL tests + anyway, and unprotected calls would invoke undefined + behavior. */ + if (h->root.type == bfd_link_hash_undefweak) + check_segment[0] = check_segment[1] = -1; + if (h->forced_local) goto final_link_relocate; @@ -3947,6 +4849,7 @@ } BFD_ASSERT (splt != NULL); + check_segment[1] = plt_segment; relocation = (splt->output_section->vma + splt->output_offset + h->plt.offset); @@ -3959,6 +4862,301 @@ goto final_link_relocate; + /* Relocation is to the canonical function descriptor for this + symbol, possibly via the GOT. Initialize the GOT + entry and function descriptor if necessary. */ + case R_SH_GOTFUNCDESC: + case R_SH_GOTFUNCDESC20: + case R_SH_FUNCDESC: + { + int dynindx = -1; + asection *reloc_section; + bfd_vma reloc_offset; + int reloc_type = R_SH_FUNCDESC; + + BFD_ASSERT (htab); + + check_segment[0] = check_segment[1] = -1; + + /* FIXME: See what FRV does for global symbols in the + executable, with --export-dynamic. Do they need ld.so + to allocate official descriptors? See what this code + does. */ + + relocation = 0; + addend = 0; + + if (r_type == R_SH_FUNCDESC) + { + reloc_section = input_section; + reloc_offset = rel->r_offset; + } + else + { + reloc_section = sgot; + + if (h != NULL) + reloc_offset = h->got.offset; + else + { + BFD_ASSERT (local_got_offsets != NULL); + reloc_offset = local_got_offsets[r_symndx]; + } + BFD_ASSERT (reloc_offset != MINUS_ONE); + + if (reloc_offset & 1) + { + reloc_offset &= ~1; + goto funcdesc_done_got; + } + } + + if (h && h->root.type == bfd_link_hash_undefweak + && (SYMBOL_CALLS_LOCAL (info, h) + || !htab->root.dynamic_sections_created)) + /* Undefined weak symbol which will not be dynamically + resolved later; leave it at zero. */ + goto funcdesc_leave_zero; + else if (SYMBOL_CALLS_LOCAL (info, h) + && ! SYMBOL_FUNCDESC_LOCAL (info, h)) + { + /* If the symbol needs a non-local function descriptor + but binds locally (i.e., its visibility is + protected), emit a dynamic relocation decayed to + section+offset. This is an optimization; the dynamic + linker would resolve our function descriptor request + to our copy of the function anyway. */ + dynindx = elf_section_data (h->root.u.def.section + ->output_section)->dynindx; + relocation += h->root.u.def.section->output_offset + + h->root.u.def.value; + } + else if (! SYMBOL_FUNCDESC_LOCAL (info, h)) + { + /* If the symbol is dynamic and there will be dynamic + symbol resolution because we are or are linked with a + shared library, emit a FUNCDESC relocation such that + the dynamic linker will allocate the function + descriptor. */ + BFD_ASSERT (h->dynindx != -1); + dynindx = h->dynindx; + } + else + { + bfd_vma offset; + + /* Otherwise, we know we have a private function + descriptor, so reference it directly. */ + reloc_type = R_SH_DIR32; + dynindx = elf_section_data (htab->sfuncdesc + ->output_section)->dynindx; + + if (h) + { + offset = sh_elf_hash_entry (h)->funcdesc.offset; + BFD_ASSERT (offset != MINUS_ONE); + if ((offset & 1) == 0) + { + if (!sh_elf_initialize_funcdesc (output_bfd, info, h, + offset, NULL, 0)) + return FALSE; + sh_elf_hash_entry (h)->funcdesc.offset |= 1; + } + } + else + { + union gotref *local_funcdesc; + + local_funcdesc = sh_elf_local_funcdesc (input_bfd); + offset = local_funcdesc[r_symndx].offset; + BFD_ASSERT (offset != MINUS_ONE); + if ((offset & 1) == 0) + { + if (!sh_elf_initialize_funcdesc (output_bfd, info, NULL, + offset, sec, + sym->st_value)) + return FALSE; + local_funcdesc[r_symndx].offset |= 1; + } + } + + relocation = htab->sfuncdesc->output_offset + (offset & ~1); + } + + if (!info->shared && SYMBOL_FUNCDESC_LOCAL (info, h)) + { + bfd_vma offset; + + if (sh_elf_osec_readonly_p (output_bfd, + reloc_section->output_section)) + { + (*_bfd_error_handler) + (_("%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section"), + input_bfd, + input_section, + (long) rel->r_offset, + symname); + return FALSE; + } + + offset = _bfd_elf_section_offset (output_bfd, info, + reloc_section, reloc_offset); + + if (offset != (bfd_vma)-1) + sh_elf_add_rofixup (output_bfd, htab->srofixup, + offset + + reloc_section->output_section->vma + + reloc_section->output_offset); + } + else if ((reloc_section->output_section->flags + & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)) + { + bfd_vma offset; + + if (sh_elf_osec_readonly_p (output_bfd, + reloc_section->output_section)) + { + info->callbacks->warning + (info, + _("cannot emit dynamic relocations in read-only section"), + symname, input_bfd, reloc_section, reloc_offset); + return FALSE; + } + + if (srelgot == NULL) + { + srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); + BFD_ASSERT (srelgot != NULL); + } + + offset = _bfd_elf_section_offset (output_bfd, info, + reloc_section, reloc_offset); + + if (offset != (bfd_vma)-1) + sh_elf_add_dyn_reloc (output_bfd, srelgot, + offset + + reloc_section->output_section->vma + + reloc_section->output_offset, + reloc_type, dynindx, relocation); + + if (r_type == R_SH_FUNCDESC) + { + r = bfd_reloc_ok; + break; + } + else + { + relocation = 0; + goto funcdesc_leave_zero; + } + } + + if (SYMBOL_FUNCDESC_LOCAL (info, h)) + relocation += htab->sfuncdesc->output_section->vma; + funcdesc_leave_zero: + if (r_type != R_SH_FUNCDESC) + { + bfd_put_32 (output_bfd, relocation, + reloc_section->contents + reloc_offset); + if (h != NULL) + h->got.offset |= 1; + else + local_got_offsets[r_symndx] |= 1; + + funcdesc_done_got: + + relocation = sh_elf_got_offset (htab) + reloc_offset; +#ifdef GOT_BIAS + relocation -= GOT_BIAS; +#endif + } + if (r_type == R_SH_GOTFUNCDESC20) + { + r = install_movi20_field (output_bfd, relocation + addend, + input_bfd, input_section, contents, + rel->r_offset); + break; + } + else + goto final_link_relocate; + } + break; + + case R_SH_GOTOFFFUNCDESC: + case R_SH_GOTOFFFUNCDESC20: + /* FIXME: See R_SH_FUNCDESC comment about global symbols in the + executable and --export-dynamic. If such symbols get + ld.so-allocated descriptors we can not use R_SH_GOTOFFFUNCDESC + for them. */ + BFD_ASSERT (htab); + + check_segment[0] = check_segment[1] = -1; + relocation = 0; + addend = rel->r_addend; + + if (h && (h->root.type == bfd_link_hash_undefweak + || !SYMBOL_FUNCDESC_LOCAL (info, h))) + { + _bfd_error_handler + (_("%B(%A+0x%lx): %s relocation against external symbol \"%s\""), + input_bfd, input_section, (long) rel->r_offset, howto->name, + h->root.root.string); + return FALSE; + } + else + { + bfd_vma offset; + + /* Otherwise, we know we have a private function + descriptor, so reference it directly. */ + if (h) + { + offset = sh_elf_hash_entry (h)->funcdesc.offset; + BFD_ASSERT (offset != MINUS_ONE); + if ((offset & 1) == 0) + { + if (!sh_elf_initialize_funcdesc (output_bfd, info, h, + offset, NULL, 0)) + return FALSE; + sh_elf_hash_entry (h)->funcdesc.offset |= 1; + } + } + else + { + union gotref *local_funcdesc; + + local_funcdesc = sh_elf_local_funcdesc (input_bfd); + offset = local_funcdesc[r_symndx].offset; + BFD_ASSERT (offset != MINUS_ONE); + if ((offset & 1) == 0) + { + if (!sh_elf_initialize_funcdesc (output_bfd, info, NULL, + offset, sec, + sym->st_value)) + return FALSE; + local_funcdesc[r_symndx].offset |= 1; + } + } + + relocation = htab->sfuncdesc->output_offset + (offset & ~1); + } + + relocation -= (htab->root.hgot->root.u.def.value + + sgotplt->output_offset); +#ifdef GOT_BIAS + relocation -= GOT_BIAS; +#endif + + if (r_type == R_SH_GOTOFFFUNCDESC20) + { + r = install_movi20_field (output_bfd, relocation + addend, + input_bfd, input_section, contents, + rel->r_offset); + break; + } + else + goto final_link_relocate; + case R_SH_LOOP_START: { static bfd_vma start, end; @@ -3979,20 +5177,22 @@ case R_SH_TLS_GD_32: case R_SH_TLS_IE_32: + BFD_ASSERT (htab); + check_segment[0] = check_segment[1] = -1; r_type = sh_elf_optimized_tls_reloc (info, r_type, h == NULL); - tls_type = GOT_UNKNOWN; + got_type = GOT_UNKNOWN; if (h == NULL && local_got_offsets) - tls_type = sh_elf_local_got_tls_type (input_bfd) [r_symndx]; + got_type = sh_elf_local_got_type (input_bfd) [r_symndx]; else if (h != NULL) { - tls_type = sh_elf_hash_entry (h)->tls_type; + got_type = sh_elf_hash_entry (h)->got_type; if (! info->shared && (h->dynindx == -1 || h->def_regular)) r_type = R_SH_TLS_LE_32; } - if (r_type == R_SH_TLS_GD_32 && tls_type == GOT_TLS_IE) + if (r_type == R_SH_TLS_GD_32 && got_type == GOT_TLS_IE) r_type = R_SH_TLS_IE_32; if (r_type == R_SH_TLS_LE_32) @@ -4043,7 +5243,7 @@ } else { - int index; + int target; /* IE->LE transition: mov.l 1f,r0; stc gbr,rN; mov.l @(r0,r12),rM; @@ -4065,12 +5265,12 @@ } BFD_ASSERT ((insn & 0xff00) == 0xd000); - index = insn & 0x00ff; + target = insn & 0x00ff; insn = bfd_get_16 (input_bfd, contents + offset + 2); BFD_ASSERT ((insn & 0xf0ff) == 0x0012); insn = bfd_get_16 (input_bfd, contents + offset + 4); BFD_ASSERT ((insn & 0xf0ff) == 0x00ce); - insn = 0xd000 | (insn & 0x0f00) | index; + insn = 0xd000 | (insn & 0x0f00) | target; bfd_put_16 (output_bfd, insn, contents + offset + 0); bfd_put_16 (output_bfd, 0x0009, contents + offset + 4); } @@ -4080,8 +5280,7 @@ continue; } - sgot = htab->sgot; - if (sgot == NULL) + if (sgot == NULL || sgotplt == NULL) abort (); if (h != NULL) @@ -4101,7 +5300,7 @@ off &= ~1; bfd_put_32 (output_bfd, tpoff (info, relocation), sgot->contents + off); - bfd_put_32 (output_bfd, sgot->output_offset + off, + bfd_put_32 (output_bfd, sh_elf_got_offset (htab) + off, contents + rel->r_offset); continue; } @@ -4169,7 +5368,7 @@ abort (); if (r_type == (int) ELF32_R_TYPE (rel->r_info)) - relocation = sgot->output_offset + off; + relocation = sh_elf_got_offset (htab) + off; else { bfd_vma offset; @@ -4218,7 +5417,7 @@ bfd_put_16 (output_bfd, 0x0009, contents + offset + 8); bfd_put_16 (output_bfd, 0x0009, contents + offset + 10); - bfd_put_32 (output_bfd, sgot->output_offset + off, + bfd_put_32 (output_bfd, sh_elf_got_offset (htab) + off, contents + rel->r_offset); continue; @@ -4229,6 +5428,8 @@ goto final_link_relocate; case R_SH_TLS_LD_32: + BFD_ASSERT (htab); + check_segment[0] = check_segment[1] = -1; if (! info->shared) { bfd_vma offset; @@ -4276,8 +5477,7 @@ continue; } - sgot = htab->sgot; - if (sgot == NULL) + if (sgot == NULL || sgotplt == NULL) abort (); off = htab->tls_ldm_got.offset; @@ -4302,12 +5502,13 @@ htab->tls_ldm_got.offset |= 1; } - relocation = sgot->output_offset + off; + relocation = sh_elf_got_offset (htab) + off; addend = rel->r_addend; goto final_link_relocate; case R_SH_TLS_LDO_32: + check_segment[0] = check_segment[1] = -1; if (! info->shared) relocation = tpoff (info, relocation); else @@ -4322,6 +5523,8 @@ Elf_Internal_Rela outrel; bfd_byte *loc; + check_segment[0] = check_segment[1] = -1; + if (! info->shared) { relocation = tpoff (info, relocation); @@ -4359,6 +5562,28 @@ } relocation_done: + if (fdpic_p && check_segment[0] != (unsigned) -1 + && check_segment[0] != check_segment[1]) + { + /* We don't want duplicate errors for undefined symbols. */ + if (!h || h->root.type != bfd_link_hash_undefined) + { + if (info->shared) + { + info->callbacks->einfo + (_("%X%C: relocation to \"%s\" references a different segment\n"), + input_bfd, input_section, rel->r_offset, symname); + return FALSE; + } + else + info->callbacks->einfo + (_("%C: warning: relocation to \"%s\" references a different segment\n"), + input_bfd, input_section, rel->r_offset, symname); + } + + elf_elfheader (output_bfd)->e_flags &= ~EF_SH_PIC; + } + if (r != bfd_reloc_ok) { switch (r) @@ -4557,6 +5782,7 @@ Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; + union gotref *local_funcdesc; const Elf_Internal_Rela *rel, *relend; if (info->relocatable) @@ -4567,6 +5793,7 @@ symtab_hdr = &elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); local_got_refcounts = elf_local_got_refcounts (abfd); + local_funcdesc = sh_elf_local_funcdesc (abfd); relend = relocs + sec->reloc_count; for (rel = relocs; rel < relend; rel++) @@ -4613,7 +5840,9 @@ break; case R_SH_GOT32: + case R_SH_GOT20: case R_SH_GOTOFF: + case R_SH_GOTOFF20: case R_SH_GOTPC: #ifdef INCLUDE_SHMEDIA case R_SH_GOT_LOW16: @@ -4633,6 +5862,8 @@ #endif case R_SH_TLS_GD_32: case R_SH_TLS_IE_32: + case R_SH_GOTFUNCDESC: + case R_SH_GOTFUNCDESC20: if (h != NULL) { #ifdef INCLUDE_SHMEDIA @@ -4663,7 +5894,28 @@ } break; + case R_SH_FUNCDESC: + if (h != NULL) + sh_elf_hash_entry (h)->abs_funcdesc_refcount -= 1; + else if (sh_elf_hash_table (info)->fdpic_p && !info->shared) + sh_elf_hash_table (info)->srofixup->size -= 4; + + /* Fall through. */ + + case R_SH_GOTOFFFUNCDESC: + case R_SH_GOTOFFFUNCDESC20: + if (h != NULL) + sh_elf_hash_entry (h)->funcdesc.refcount -= 1; + else + local_funcdesc[r_symndx].refcount -= 1; + break; + case R_SH_DIR32: + if (sh_elf_hash_table (info)->fdpic_p && !info->shared + && (sec->flags & SEC_ALLOC) != 0) + sh_elf_hash_table (info)->srofixup->size -= 4; + /* Fall thru */ + case R_SH_REL32: if (info->shared) break; @@ -4783,12 +6035,16 @@ edir->datalabel_got.refcount += eind->datalabel_got.refcount; eind->datalabel_got.refcount = 0; #endif + edir->funcdesc.refcount += eind->funcdesc.refcount; + eind->funcdesc.refcount = 0; + edir->abs_funcdesc_refcount += eind->abs_funcdesc_refcount; + eind->abs_funcdesc_refcount = 0; if (ind->root.type == bfd_link_hash_indirect && dir->got.refcount <= 0) { - edir->tls_type = eind->tls_type; - eind->tls_type = GOT_UNKNOWN; + edir->got_type = eind->got_type; + eind->got_type = GOT_UNKNOWN; } if (ind->root.type != bfd_link_hash_indirect @@ -4840,15 +6096,10 @@ struct elf_sh_link_hash_table *htab; const Elf_Internal_Rela *rel; const Elf_Internal_Rela *rel_end; - bfd_vma *local_got_offsets; - asection *sgot; - asection *srelgot; asection *sreloc; unsigned int r_type; - int tls_type, old_tls_type; + int got_type, old_got_type; - sgot = NULL; - srelgot = NULL; sreloc = NULL; if (info->relocatable) @@ -4860,7 +6111,8 @@ sym_hashes = elf_sym_hashes (abfd); htab = sh_elf_hash_table (info); - local_got_offsets = elf_local_got_offsets (abfd); + if (htab == NULL) + return FALSE; rel_end = relocs + sec->reloc_count; for (rel = relocs; rel < rel_end; rel++) @@ -4899,14 +6151,49 @@ || h->def_regular)) r_type = R_SH_TLS_LE_32; + if (htab->fdpic_p) + switch (r_type) + { + case R_SH_GOTOFFFUNCDESC: + case R_SH_GOTOFFFUNCDESC20: + case R_SH_FUNCDESC: + case R_SH_GOTFUNCDESC: + case R_SH_GOTFUNCDESC20: + if (h != NULL) + { + if (h->dynindx == -1) + switch (ELF_ST_VISIBILITY (h->other)) + { + case STV_INTERNAL: + case STV_HIDDEN: + break; + default: + bfd_elf_link_record_dynamic_symbol (info, h); + break; + } + } + break; + } + /* Some relocs require a global offset table. */ if (htab->sgot == NULL) { switch (r_type) { + case R_SH_DIR32: + /* This may require an rofixup. */ + if (!htab->fdpic_p) + break; case R_SH_GOTPLT32: case R_SH_GOT32: + case R_SH_GOT20: case R_SH_GOTOFF: + case R_SH_GOTOFF20: + case R_SH_FUNCDESC: + case R_SH_GOTFUNCDESC: + case R_SH_GOTFUNCDESC20: + case R_SH_GOTOFFFUNCDESC: + case R_SH_GOTOFFFUNCDESC20: case R_SH_GOTPC: #ifdef INCLUDE_SHMEDIA case R_SH_GOTPLT_LOW16: @@ -4933,13 +6220,10 @@ case R_SH_TLS_GD_32: case R_SH_TLS_LD_32: case R_SH_TLS_IE_32: - if (htab->sgot == NULL) - { - if (htab->root.dynobj == NULL) - htab->root.dynobj = abfd; - if (!create_got_section (htab->root.dynobj, info)) - return FALSE; - } + if (htab->root.dynobj == NULL) + htab->root.dynobj = abfd; + if (!create_got_section (htab->root.dynobj, info)) + return FALSE; break; default: @@ -4973,6 +6257,7 @@ force_got: case R_SH_TLS_GD_32: case R_SH_GOT32: + case R_SH_GOT20: #ifdef INCLUDE_SHMEDIA case R_SH_GOT_LOW16: case R_SH_GOT_MEDLOW16: @@ -4981,16 +6266,22 @@ case R_SH_GOT10BY4: case R_SH_GOT10BY8: #endif + case R_SH_GOTFUNCDESC: + case R_SH_GOTFUNCDESC20: switch (r_type) { default: - tls_type = GOT_NORMAL; + got_type = GOT_NORMAL; break; case R_SH_TLS_GD_32: - tls_type = GOT_TLS_GD; + got_type = GOT_TLS_GD; break; case R_SH_TLS_IE_32: - tls_type = GOT_TLS_IE; + got_type = GOT_TLS_IE; + break; + case R_SH_GOTFUNCDESC: + case R_SH_GOTFUNCDESC20: + got_type = GOT_FUNCDESC; break; } @@ -5007,7 +6298,7 @@ else #endif h->got.refcount += 1; - old_tls_type = sh_elf_hash_entry (h)->tls_type; + old_got_type = sh_elf_hash_entry (h)->got_type; } else { @@ -5036,10 +6327,10 @@ #ifdef INCLUDE_SHMEDIA /* Take care of both the datalabel and codelabel local GOT offsets. */ - sh_elf_local_got_tls_type (abfd) + sh_elf_local_got_type (abfd) = (char *) (local_got_refcounts + 2 * symtab_hdr->sh_info); #else - sh_elf_local_got_tls_type (abfd) + sh_elf_local_got_type (abfd) = (char *) (local_got_refcounts + symtab_hdr->sh_info); #endif } @@ -5049,31 +6340,42 @@ else #endif local_got_refcounts[r_symndx] += 1; - old_tls_type = sh_elf_local_got_tls_type (abfd) [r_symndx]; + old_got_type = sh_elf_local_got_type (abfd) [r_symndx]; } /* If a TLS symbol is accessed using IE at least once, there is no point to use dynamic model for it. */ - if (old_tls_type != tls_type && old_tls_type != GOT_UNKNOWN - && (old_tls_type != GOT_TLS_GD || tls_type != GOT_TLS_IE)) + if (old_got_type != got_type && old_got_type != GOT_UNKNOWN + && (old_got_type != GOT_TLS_GD || got_type != GOT_TLS_IE)) { - if (old_tls_type == GOT_TLS_IE && tls_type == GOT_TLS_GD) - tls_type = GOT_TLS_IE; + if (old_got_type == GOT_TLS_IE && got_type == GOT_TLS_GD) + got_type = GOT_TLS_IE; else { - (*_bfd_error_handler) + if ((old_got_type == GOT_FUNCDESC || got_type == GOT_FUNCDESC) + && (old_got_type == GOT_NORMAL || got_type == GOT_NORMAL)) + (*_bfd_error_handler) + (_("%B: `%s' accessed both as normal and FDPIC symbol"), + abfd, h->root.root.string); + else if (old_got_type == GOT_FUNCDESC + || got_type == GOT_FUNCDESC) + (*_bfd_error_handler) + (_("%B: `%s' accessed both as FDPIC and thread local symbol"), + abfd, h->root.root.string); + else + (*_bfd_error_handler) (_("%B: `%s' accessed both as normal and thread local symbol"), abfd, h->root.root.string); return FALSE; } } - if (old_tls_type != tls_type) + if (old_got_type != got_type) { if (h != NULL) - sh_elf_hash_entry (h)->tls_type = tls_type; + sh_elf_hash_entry (h)->got_type = got_type; else - sh_elf_local_got_tls_type (abfd) [r_symndx] = tls_type; + sh_elf_local_got_type (abfd) [r_symndx] = got_type; } break; @@ -5082,6 +6384,70 @@ sh_elf_hash_table(info)->tls_ldm_got.refcount += 1; break; + case R_SH_FUNCDESC: + case R_SH_GOTOFFFUNCDESC: + case R_SH_GOTOFFFUNCDESC20: + if (rel->r_addend) + { + (*_bfd_error_handler) + (_("%B: Function descriptor relocation with non-zero addend"), + abfd); + return FALSE; + } + + if (h == NULL) + { + union gotref *local_funcdesc; + + /* We need a function descriptor for a local symbol. */ + local_funcdesc = sh_elf_local_funcdesc (abfd); + if (local_funcdesc == NULL) + { + bfd_size_type size; + + size = symtab_hdr->sh_info * sizeof (union gotref); +#ifdef INCLUDE_SHMEDIA + /* Count datalabel local GOT. */ + size *= 2; +#endif + local_funcdesc = (union gotref *) bfd_zalloc (abfd, size); + if (local_funcdesc == NULL) + return FALSE; + sh_elf_local_funcdesc (abfd) = local_funcdesc; + } + local_funcdesc[r_symndx].refcount += 1; + + if (r_type == R_SH_FUNCDESC) + { + if (!info->shared) + htab->srofixup->size += 4; + else + htab->srelgot->size += sizeof (Elf32_External_Rela); + } + } + else + { + sh_elf_hash_entry (h)->funcdesc.refcount++; + if (r_type == R_SH_FUNCDESC) + sh_elf_hash_entry (h)->abs_funcdesc_refcount++; + + /* If there is a function descriptor reference, then + there should not be any non-FDPIC references. */ + old_got_type = sh_elf_hash_entry (h)->got_type; + if (old_got_type != GOT_FUNCDESC && old_got_type != GOT_UNKNOWN) + { + if (old_got_type == GOT_NORMAL) + (*_bfd_error_handler) + (_("%B: `%s' accessed both as normal and FDPIC symbol"), + abfd, h->root.root.string); + else + (*_bfd_error_handler) + (_("%B: `%s' accessed both as FDPIC and thread local symbol"), + abfd, h->root.root.string); + } + } + break; + case R_SH_GOTPLT32: #ifdef INCLUDE_SHMEDIA case R_SH_GOTPLT_LOW16: @@ -5247,6 +6613,13 @@ p->pc_count += 1; } + /* Allocate the fixup regardless of whether we need a relocation. + If we end up generating the relocation, we'll unallocate the + fixup. */ + if (htab->fdpic_p && !info->shared + && r_type == R_SH_DIR32 + && (sec->flags & SEC_ALLOC) != 0) + htab->srofixup->size += 4; break; case R_SH_TLS_LE_32: @@ -5340,6 +6713,38 @@ if (! is_sh_elf (ibfd) || ! is_sh_elf (obfd)) return TRUE; + /* Copy the stack size. */ + if (elf_tdata (ibfd)->phdr && elf_tdata (obfd)->phdr + && fdpic_object_p (ibfd) && fdpic_object_p (obfd)) + { + unsigned i; + + for (i = 0; i < elf_elfheader (ibfd)->e_phnum; i++) + if (elf_tdata (ibfd)->phdr[i].p_type == PT_GNU_STACK) + { + Elf_Internal_Phdr *iphdr = &elf_tdata (ibfd)->phdr[i]; + + for (i = 0; i < elf_elfheader (obfd)->e_phnum; i++) + if (elf_tdata (obfd)->phdr[i].p_type == PT_GNU_STACK) + { + memcpy (&elf_tdata (obfd)->phdr[i], iphdr, sizeof (*iphdr)); + + /* Rewrite the phdrs, since we're only called after they + were first written. */ + if (bfd_seek (obfd, + (bfd_signed_vma) get_elf_backend_data (obfd) + ->s->sizeof_ehdr, SEEK_SET) != 0 + || get_elf_backend_data (obfd)->s + ->write_out_phdrs (obfd, elf_tdata (obfd)->phdr, + elf_elfheader (obfd)->e_phnum) != 0) + return FALSE; + break; + } + + break; + } + } + return sh_elf_set_private_flags (obfd, elf_elfheader (ibfd)->e_flags); } #endif /* not sh_elf_copy_private_data */ @@ -5373,8 +6778,10 @@ { /* This happens when ld starts out with a 'blank' output file. */ elf_flags_init (obfd) = TRUE; - elf_elfheader (obfd)->e_flags = EF_SH1; + elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; sh_elf_set_mach_from_flags (obfd); + if (elf_elfheader (obfd)->e_flags & EF_SH_FDPIC) + elf_elfheader (obfd)->e_flags |= EF_SH_PIC; } if (! sh_merge_bfd_arch (ibfd, obfd)) @@ -5386,9 +6793,18 @@ return FALSE; } - elf_elfheader (obfd)->e_flags = + elf_elfheader (obfd)->e_flags &= ~EF_SH_MACH_MASK; + elf_elfheader (obfd)->e_flags |= sh_elf_get_flags_from_mach (bfd_get_mach (obfd)); - + + if (fdpic_object_p (ibfd) != fdpic_object_p (obfd)) + { + _bfd_error_handler ("%B: attempt to mix FDPIC and non-FDPIC objects", + ibfd); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + return TRUE; } #endif /* not sh_elf_merge_private_data */ @@ -5400,7 +6816,11 @@ static bfd_boolean sh_elf_object_p (bfd *abfd) { - return sh_elf_set_mach_from_flags (abfd); + if (! sh_elf_set_mach_from_flags (abfd)) + return FALSE; + + return (((elf_elfheader (abfd)->e_flags & EF_SH_FDPIC) != 0) + == fdpic_object_p (abfd)); } /* Finish up dynamic symbol handling. We set the contents of various @@ -5414,17 +6834,20 @@ struct elf_sh_link_hash_table *htab; htab = sh_elf_hash_table (info); + if (htab == NULL) + return FALSE; if (h->plt.offset != (bfd_vma) -1) { asection *splt; - asection *sgot; - asection *srel; + asection *sgotplt; + asection *srelplt; bfd_vma plt_index; bfd_vma got_offset; Elf_Internal_Rela rel; bfd_byte *loc; + const struct elf_sh_plt_info *plt_info; /* This symbol has an entry in the procedure linkage table. Set it up. */ @@ -5432,9 +6855,9 @@ BFD_ASSERT (h->dynindx != -1); splt = htab->splt; - sgot = htab->sgotplt; - srel = htab->srelplt; - BFD_ASSERT (splt != NULL && sgot != NULL && srel != NULL); + sgotplt = htab->sgotplt; + srelplt = htab->srelplt; + BFD_ASSERT (splt != NULL && sgotplt != NULL && srelplt != NULL); /* Get the index in the procedure linkage table which corresponds to this symbol. This is the index of this symbol @@ -5442,10 +6865,21 @@ first entry in the procedure linkage table is reserved. */ plt_index = get_plt_index (htab->plt_info, h->plt.offset); + plt_info = htab->plt_info; + if (plt_info->short_plt != NULL && plt_index <= MAX_SHORT_PLT) + plt_info = plt_info->short_plt; + /* Get the offset into the .got table of the entry that - corresponds to this function. Each .got entry is 4 bytes. - The first three are reserved. */ - got_offset = (plt_index + 3) * 4; + corresponds to this function. */ + if (htab->fdpic_p) + /* The offset must be relative to the GOT symbol, twelve bytes + before the end of .got.plt. Each descriptor is eight + bytes. */ + got_offset = plt_index * 8 + 12 - sgotplt->size; + else + /* Each .got entry is 4 bytes. The first three are + reserved. */ + got_offset = (plt_index + 3) * 4; #ifdef GOT_BIAS if (info->shared) @@ -5454,23 +6888,37 @@ /* Fill in the entry in the procedure linkage table. */ memcpy (splt->contents + h->plt.offset, - htab->plt_info->symbol_entry, - htab->plt_info->symbol_entry_size); + plt_info->symbol_entry, + plt_info->symbol_entry_size); - if (info->shared) - install_plt_field (output_bfd, FALSE, got_offset, - (splt->contents - + h->plt.offset - + htab->plt_info->symbol_fields.got_entry)); + if (info->shared || htab->fdpic_p) + { + if (plt_info->symbol_fields.got20) + { + bfd_reloc_status_type r; + r = install_movi20_field (output_bfd, got_offset, + splt->owner, splt, splt->contents, + h->plt.offset + + plt_info->symbol_fields.got_entry); + BFD_ASSERT (r == bfd_reloc_ok); + } + else + install_plt_field (output_bfd, FALSE, got_offset, + (splt->contents + + h->plt.offset + + plt_info->symbol_fields.got_entry)); + } else { + BFD_ASSERT (!plt_info->symbol_fields.got20); + install_plt_field (output_bfd, FALSE, - (sgot->output_section->vma - + sgot->output_offset + (sgotplt->output_section->vma + + sgotplt->output_offset + got_offset), (splt->contents + h->plt.offset - + htab->plt_info->symbol_fields.got_entry)); + + plt_info->symbol_fields.got_entry)); if (htab->vxworks_p) { unsigned int reachable_plts, plts_per_4k; @@ -5484,61 +6932,73 @@ /* ??? It would be better to create multiple copies of the common resolver stub. */ reachable_plts = ((4096 - - htab->plt_info->plt0_entry_size - - (htab->plt_info->symbol_fields.plt + 4)) - / htab->plt_info->symbol_entry_size) + 1; - plts_per_4k = (4096 / htab->plt_info->symbol_entry_size); + - plt_info->plt0_entry_size + - (plt_info->symbol_fields.plt + 4)) + / plt_info->symbol_entry_size) + 1; + plts_per_4k = (4096 / plt_info->symbol_entry_size); if (plt_index < reachable_plts) distance = -(h->plt.offset - + htab->plt_info->symbol_fields.plt); + + plt_info->symbol_fields.plt); else distance = -(((plt_index - reachable_plts) % plts_per_4k + 1) - * htab->plt_info->symbol_entry_size); + * plt_info->symbol_entry_size); /* Install the 'bra' with this offset. */ bfd_put_16 (output_bfd, 0xa000 | (0x0fff & ((distance - 4) / 2)), (splt->contents + h->plt.offset - + htab->plt_info->symbol_fields.plt)); + + plt_info->symbol_fields.plt)); } else install_plt_field (output_bfd, TRUE, splt->output_section->vma + splt->output_offset, (splt->contents + h->plt.offset - + htab->plt_info->symbol_fields.plt)); + + plt_info->symbol_fields.plt)); } + /* Make got_offset relative to the start of .got.plt. */ #ifdef GOT_BIAS if (info->shared) got_offset += GOT_BIAS; #endif + if (htab->fdpic_p) + got_offset = plt_index * 8; - install_plt_field (output_bfd, FALSE, - plt_index * sizeof (Elf32_External_Rela), - (splt->contents - + h->plt.offset - + htab->plt_info->symbol_fields.reloc_offset)); + if (plt_info->symbol_fields.reloc_offset != MINUS_ONE) + install_plt_field (output_bfd, FALSE, + plt_index * sizeof (Elf32_External_Rela), + (splt->contents + + h->plt.offset + + plt_info->symbol_fields.reloc_offset)); /* Fill in the entry in the global offset table. */ bfd_put_32 (output_bfd, (splt->output_section->vma + splt->output_offset + h->plt.offset - + htab->plt_info->symbol_resolve_offset), - sgot->contents + got_offset); + + plt_info->symbol_resolve_offset), + sgotplt->contents + got_offset); + if (htab->fdpic_p) + bfd_put_32 (output_bfd, + sh_elf_osec_to_segment (output_bfd, + htab->splt->output_section), + sgotplt->contents + got_offset + 4); /* Fill in the entry in the .rela.plt section. */ - rel.r_offset = (sgot->output_section->vma - + sgot->output_offset + rel.r_offset = (sgotplt->output_section->vma + + sgotplt->output_offset + got_offset); - rel.r_info = ELF32_R_INFO (h->dynindx, R_SH_JMP_SLOT); + if (htab->fdpic_p) + rel.r_info = ELF32_R_INFO (h->dynindx, R_SH_FUNCDESC_VALUE); + else + rel.r_info = ELF32_R_INFO (h->dynindx, R_SH_JMP_SLOT); rel.r_addend = 0; #ifdef GOT_BIAS rel.r_addend = GOT_BIAS; #endif - loc = srel->contents + plt_index * sizeof (Elf32_External_Rela); + loc = srelplt->contents + plt_index * sizeof (Elf32_External_Rela); bfd_elf32_swap_reloca_out (output_bfd, &rel, loc); if (htab->vxworks_p && !info->shared) @@ -5553,7 +7013,7 @@ rel.r_offset = (htab->splt->output_section->vma + htab->splt->output_offset + h->plt.offset - + htab->plt_info->symbol_fields.got_entry); + + plt_info->symbol_fields.got_entry); rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_SH_DIR32); rel.r_addend = got_offset; bfd_elf32_swap_reloca_out (output_bfd, &rel, loc); @@ -5561,8 +7021,8 @@ /* Create a .rela.plt.unloaded R_SH_DIR32 relocation for the .got.plt entry, which initially points to .plt. */ - rel.r_offset = (htab->sgotplt->output_section->vma - + htab->sgotplt->output_offset + rel.r_offset = (sgotplt->output_section->vma + + sgotplt->output_offset + got_offset); rel.r_info = ELF32_R_INFO (htab->root.hplt->indx, R_SH_DIR32); rel.r_addend = 0; @@ -5578,11 +7038,12 @@ } if (h->got.offset != (bfd_vma) -1 - && sh_elf_hash_entry (h)->tls_type != GOT_TLS_GD - && sh_elf_hash_entry (h)->tls_type != GOT_TLS_IE) + && sh_elf_hash_entry (h)->got_type != GOT_TLS_GD + && sh_elf_hash_entry (h)->got_type != GOT_TLS_IE + && sh_elf_hash_entry (h)->got_type != GOT_FUNCDESC) { asection *sgot; - asection *srel; + asection *srelgot; Elf_Internal_Rela rel; bfd_byte *loc; @@ -5590,8 +7051,8 @@ up. */ sgot = htab->sgot; - srel = htab->srelgot; - BFD_ASSERT (sgot != NULL && srel != NULL); + srelgot = htab->srelgot; + BFD_ASSERT (sgot != NULL && srelgot != NULL); rel.r_offset = (sgot->output_section->vma + sgot->output_offset @@ -5605,10 +7066,23 @@ if (info->shared && SYMBOL_REFERENCES_LOCAL (info, h)) { - rel.r_info = ELF32_R_INFO (0, R_SH_RELATIVE); - rel.r_addend = (h->root.u.def.value - + h->root.u.def.section->output_section->vma - + h->root.u.def.section->output_offset); + if (htab->fdpic_p) + { + asection *sec = h->root.u.def.section; + int dynindx + = elf_section_data (sec->output_section)->dynindx; + + rel.r_info = ELF32_R_INFO (dynindx, R_SH_DIR32); + rel.r_addend = (h->root.u.def.value + + h->root.u.def.section->output_offset); + } + else + { + rel.r_info = ELF32_R_INFO (0, R_SH_RELATIVE); + rel.r_addend = (h->root.u.def.value + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); + } } else { @@ -5617,8 +7091,8 @@ rel.r_addend = 0; } - loc = srel->contents; - loc += srel->reloc_count++ * sizeof (Elf32_External_Rela); + loc = srelgot->contents; + loc += srelgot->reloc_count++ * sizeof (Elf32_External_Rela); bfd_elf32_swap_reloca_out (output_bfd, &rel, loc); } @@ -5630,7 +7104,7 @@ if (eh->datalabel_got.offset != (bfd_vma) -1) { asection *sgot; - asection *srel; + asection *srelgot; Elf_Internal_Rela rel; bfd_byte *loc; @@ -5638,8 +7112,8 @@ Set it up. */ sgot = htab->sgot; - srel = htab->srelgot; - BFD_ASSERT (sgot != NULL && srel != NULL); + srelgot = htab->srelgot; + BFD_ASSERT (sgot != NULL && srelgot != NULL); rel.r_offset = (sgot->output_section->vma + sgot->output_offset @@ -5653,10 +7127,23 @@ if (info->shared && SYMBOL_REFERENCES_LOCAL (info, h)) { - rel.r_info = ELF32_R_INFO (0, R_SH_RELATIVE); - rel.r_addend = (h->root.u.def.value - + h->root.u.def.section->output_section->vma - + h->root.u.def.section->output_offset); + if (htab->fdpic_p) + { + asection *sec = h->root.u.def.section; + int dynindx + = elf_section_data (sec->output_section)->dynindx; + + rel.r_info = ELF32_R_INFO (dynindx, R_SH_DIR32); + rel.r_addend = (h->root.u.def.value + + h->root.u.def.section->output_offset); + } + else + { + rel.r_info = ELF32_R_INFO (0, R_SH_RELATIVE); + rel.r_addend = (h->root.u.def.value + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); + } } else { @@ -5666,8 +7153,8 @@ rel.r_addend = 0; } - loc = srel->contents; - loc += srel->reloc_count++ * sizeof (Elf32_External_Rela); + loc = srelgot->contents; + loc += srelgot->reloc_count++ * sizeof (Elf32_External_Rela); bfd_elf32_swap_reloca_out (output_bfd, &rel, loc); } } @@ -5714,11 +7201,14 @@ sh_elf_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info) { struct elf_sh_link_hash_table *htab; - asection *sgot; + asection *sgotplt; asection *sdyn; htab = sh_elf_hash_table (info); - sgot = htab->sgotplt; + if (htab == NULL) + return FALSE; + + sgotplt = htab->sgotplt; sdyn = bfd_get_section_by_name (htab->root.dynobj, ".dynamic"); if (htab->root.dynamic_sections_created) @@ -5726,7 +7216,7 @@ asection *splt; Elf32_External_Dyn *dyncon, *dynconend; - BFD_ASSERT (sgot != NULL && sdyn != NULL); + BFD_ASSERT (sgotplt != NULL && sdyn != NULL); dyncon = (Elf32_External_Dyn *) sdyn->contents; dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size); @@ -5772,12 +7262,15 @@ #endif case DT_PLTGOT: - s = htab->sgot->output_section; - goto get_vma; + BFD_ASSERT (htab->root.hgot != NULL); + s = htab->root.hgot->root.u.def.section; + dyn.d_un.d_ptr = htab->root.hgot->root.u.def.value + + s->output_section->vma + s->output_offset; + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; case DT_JMPREL: s = htab->srelplt->output_section; - get_vma: BFD_ASSERT (s != NULL); dyn.d_un.d_ptr = s->vma; bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); @@ -5822,8 +7315,8 @@ for (i = 0; i < ARRAY_SIZE (htab->plt_info->plt0_got_fields); i++) if (htab->plt_info->plt0_got_fields[i] != MINUS_ONE) install_plt_field (output_bfd, FALSE, - (sgot->output_section->vma - + sgot->output_offset + (sgotplt->output_section->vma + + sgotplt->output_offset + (i * 4)), (splt->contents + htab->plt_info->plt0_got_fields[i])); @@ -5874,20 +7367,43 @@ } /* Fill in the first three entries in the global offset table. */ - if (sgot && sgot->size > 0) + if (sgotplt && sgotplt->size > 0 && !htab->fdpic_p) { if (sdyn == NULL) - bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents); + bfd_put_32 (output_bfd, (bfd_vma) 0, sgotplt->contents); else bfd_put_32 (output_bfd, sdyn->output_section->vma + sdyn->output_offset, - sgot->contents); - bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + 4); - bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + 8); + sgotplt->contents); + bfd_put_32 (output_bfd, (bfd_vma) 0, sgotplt->contents + 4); + bfd_put_32 (output_bfd, (bfd_vma) 0, sgotplt->contents + 8); + } + + if (sgotplt && sgotplt->size > 0) + elf_section_data (sgotplt->output_section)->this_hdr.sh_entsize = 4; + + /* At the very end of the .rofixup section is a pointer to the GOT. */ + if (htab->fdpic_p && htab->srofixup != NULL) + { + struct elf_link_hash_entry *hgot = htab->root.hgot; + bfd_vma got_value = hgot->root.u.def.value + + hgot->root.u.def.section->output_section->vma + + hgot->root.u.def.section->output_offset; - elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4; + sh_elf_add_rofixup (output_bfd, htab->srofixup, got_value); + + /* Make sure we allocated and generated the same number of fixups. */ + BFD_ASSERT (htab->srofixup->reloc_count * 4 == htab->srofixup->size); } + if (htab->srelfuncdesc) + BFD_ASSERT (htab->srelfuncdesc->reloc_count * sizeof (Elf32_External_Rela) + == htab->srelfuncdesc->size); + + if (htab->srelgot) + BFD_ASSERT (htab->srelgot->reloc_count * sizeof (Elf32_External_Rela) + == htab->srelgot->size); + return TRUE; } @@ -5926,7 +7442,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -5985,6 +7501,59 @@ return plt->vma + get_plt_offset (plt_info, i); } +/* Decide whether to attempt to turn absptr or lsda encodings in + shared libraries into pcrel within the given input section. */ + +static bfd_boolean +sh_elf_use_relative_eh_frame (bfd *input_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info, + asection *eh_frame_section ATTRIBUTE_UNUSED) +{ + struct elf_sh_link_hash_table *htab = sh_elf_hash_table (info); + + /* We can't use PC-relative encodings in FDPIC binaries, in general. */ + if (htab->fdpic_p) + return FALSE; + + return TRUE; +} + +/* Adjust the contents of an eh_frame_hdr section before they're output. */ + +static bfd_byte +sh_elf_encode_eh_address (bfd *abfd, + struct bfd_link_info *info, + asection *osec, bfd_vma offset, + asection *loc_sec, bfd_vma loc_offset, + bfd_vma *encoded) +{ + struct elf_sh_link_hash_table *htab = sh_elf_hash_table (info); + struct elf_link_hash_entry *h; + + if (!htab->fdpic_p) + return _bfd_elf_encode_eh_address (abfd, info, osec, offset, loc_sec, + loc_offset, encoded); + + h = htab->root.hgot; + BFD_ASSERT (h && h->root.type == bfd_link_hash_defined); + + if (! h || (sh_elf_osec_to_segment (abfd, osec) + == sh_elf_osec_to_segment (abfd, loc_sec->output_section))) + return _bfd_elf_encode_eh_address (abfd, info, osec, offset, + loc_sec, loc_offset, encoded); + + BFD_ASSERT (sh_elf_osec_to_segment (abfd, osec) + == (sh_elf_osec_to_segment + (abfd, h->root.u.def.section->output_section))); + + *encoded = osec->vma + offset + - (h->root.u.def.value + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); + + return DW_EH_PE_datarel | DW_EH_PE_sdata4; +} + #if !defined SH_TARGET_ALREADY_DEFINED #define TARGET_BIG_SYM bfd_elf32_sh_vec #define TARGET_BIG_NAME "elf32-sh" @@ -5993,6 +7562,7 @@ #endif #define ELF_ARCH bfd_arch_sh +#define ELF_TARGET_ID SH_ELF_DATA #define ELF_MACHINE_CODE EM_SH #ifdef __QNXTARGET__ #define ELF_MAXPAGESIZE 0x1000 @@ -6034,14 +7604,19 @@ sh_elf_always_size_sections #define elf_backend_size_dynamic_sections \ sh_elf_size_dynamic_sections -#define elf_backend_omit_section_dynsym \ - ((bfd_boolean (*) (bfd *, struct bfd_link_info *, asection *)) bfd_true) +#define elf_backend_omit_section_dynsym sh_elf_omit_section_dynsym #define elf_backend_finish_dynamic_symbol \ sh_elf_finish_dynamic_symbol #define elf_backend_finish_dynamic_sections \ sh_elf_finish_dynamic_sections #define elf_backend_reloc_type_class sh_elf_reloc_type_class #define elf_backend_plt_sym_val sh_elf_plt_sym_val +#define elf_backend_can_make_relative_eh_frame \ + sh_elf_use_relative_eh_frame +#define elf_backend_can_make_lsda_relative_eh_frame \ + sh_elf_use_relative_eh_frame +#define elf_backend_encode_eh_address \ + sh_elf_encode_eh_address #define elf_backend_can_gc_sections 1 #define elf_backend_can_refcount 1 @@ -6095,6 +7670,28 @@ #include "elf32-target.h" + +/* FDPIC support. */ +#undef TARGET_BIG_SYM +#define TARGET_BIG_SYM bfd_elf32_shbfd_vec +#undef TARGET_BIG_NAME +#define TARGET_BIG_NAME "elf32-shbig-fdpic" +#undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM bfd_elf32_shfd_vec +#undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf32-sh-fdpic" +#undef elf_backend_modify_program_headers +#define elf_backend_modify_program_headers \ + sh_elf_modify_program_headers + +#undef elf32_bed +#define elf32_bed elf32_sh_fd_bed + +#include "elf32-target.h" + +#undef elf_backend_modify_program_headers + +/* VxWorks support. */ #undef TARGET_BIG_SYM #define TARGET_BIG_SYM bfd_elf32_shvxworks_vec #undef TARGET_BIG_NAME diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-sh64.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-sh64.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-sh64.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-sh64.c 2010-06-27 04:07:52.000000000 +0000 @@ -1,5 +1,5 @@ /* SuperH SH64-specific support for 32-bit ELF - Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 + Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -104,7 +104,8 @@ /* This COFF-only function (only compiled with COFF support, making ELF-only chains problematic) returns TRUE early for SH4, so let's just define it TRUE here. */ -#define _bfd_sh_align_load_span(a,b,c,d,e,f,g,h,i,j) TRUE +#define _bfd_sh_align_load_span(a,b,c,d,e,f,g,h,i,j) \ + ((void) f, (void) h, (void) i, TRUE) #define GOT_BIAS (-((long)-32768)) #define INCLUDE_SHMEDIA diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-sparc.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-sparc.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-sparc.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-sparc.c 2010-10-22 12:08:28.000000000 +0000 @@ -1,6 +1,6 @@ /* SPARC-specific support for 32-bit ELF Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -167,9 +167,28 @@ } } +/* Hook called by the linker routine which adds symbols from an object + file. */ + +static bfd_boolean +elf32_sparc_add_symbol_hook (bfd * abfd, + struct bfd_link_info * info ATTRIBUTE_UNUSED, + Elf_Internal_Sym * sym, + const char ** namep ATTRIBUTE_UNUSED, + flagword * flagsp ATTRIBUTE_UNUSED, + asection ** secp ATTRIBUTE_UNUSED, + bfd_vma * valp ATTRIBUTE_UNUSED) +{ + if ((abfd->flags & DYNAMIC) == 0 + && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE; + return TRUE; +} + #define TARGET_BIG_SYM bfd_elf32_sparc_vec #define TARGET_BIG_NAME "elf32-sparc" #define ELF_ARCH bfd_arch_sparc +#define ELF_TARGET_ID SPARC_ELF_DATA #define ELF_MACHINE_CODE EM_SPARC #define ELF_MACHINE_ALT1 EM_SPARC32PLUS #define ELF_MAXPAGESIZE 0x10000 @@ -188,6 +207,8 @@ _bfd_sparc_elf_reloc_name_lookup #define bfd_elf32_bfd_link_hash_table_create \ _bfd_sparc_elf_link_hash_table_create +#define bfd_elf32_bfd_link_hash_table_free \ + _bfd_sparc_elf_link_hash_table_free #define bfd_elf32_bfd_relax_section _bfd_sparc_elf_relax_section #define bfd_elf32_new_section_hook _bfd_sparc_elf_new_section_hook #define elf_backend_copy_indirect_symbol \ @@ -220,6 +241,26 @@ #define elf_backend_got_header_size 4 #define elf_backend_rela_normal 1 +#define elf_backend_post_process_headers _bfd_elf_set_osabi +#define elf_backend_add_symbol_hook elf32_sparc_add_symbol_hook + +#include "elf32-target.h" + +/* Solaris 2. */ + +#undef TARGET_BIG_SYM +#define TARGET_BIG_SYM bfd_elf32_sparc_sol2_vec +#undef TARGET_BIG_NAME +#define TARGET_BIG_NAME "elf32-sparc-sol2" + +#undef elf32_bed +#define elf32_bed elf32_sparc_sol2_bed + +/* The 32-bit static TLS arena size is rounded to the nearest 8-byte + boundary. */ +#undef elf_backend_static_tls_alignment +#define elf_backend_static_tls_alignment 8 + #include "elf32-target.h" /* A wrapper around _bfd_sparc_elf_link_hash_table_create that identifies @@ -281,6 +322,7 @@ #undef elf_backend_final_write_processing #define elf_backend_final_write_processing \ elf32_sparc_vxworks_final_write_processing +#undef elf_backend_static_tls_alignment #undef elf32_bed #define elf32_bed sparc_elf_vxworks_bed diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-spu.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-spu.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-spu.c 2009-09-04 06:54:12.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-spu.c 2011-02-28 18:30:16.000000000 +0000 @@ -1,6 +1,6 @@ /* SPU specific support for 32-bit ELF - Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -272,7 +272,8 @@ { Elf_Internal_Shdr *shdr = elf_elfsections (abfd)[j]; - if (ELF_IS_SECTION_IN_SEGMENT_MEMORY (shdr, phdr)) + if (ELF_SECTION_SIZE (shdr, phdr) != 0 + && ELF_SECTION_IN_SEGMENT (shdr, phdr)) { asection *sec = shdr->bfd_section; spu_elf_section_data (sec)->u.o.ovl_index = num_ovl; @@ -331,16 +332,7 @@ /* How much memory we have. */ unsigned int local_store; - /* Local store --auto-overlay should reserve for non-overlay - functions and data. */ - unsigned int overlay_fixed; - /* Local store --auto-overlay should reserve for stack and heap. */ - unsigned int reserved; - /* If reserved is not specified, stack analysis will calculate a value - for the stack. This parameter adjusts that value to allow for - negative sp access (the ABI says 2000 bytes below sp are valid, - and the overlay manager uses some of this area). */ - int extra_stack_space; + /* Count of overlay stubs needed in non-overlay area. */ unsigned int non_ovly_stub; @@ -365,7 +357,8 @@ }; #define spu_hash_table(p) \ - ((struct spu_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == SPU_ELF_DATA ? ((struct spu_link_hash_table *) ((p)->hash)) : NULL) struct call_info { @@ -452,7 +445,8 @@ if (!_bfd_elf_link_hash_table_init (&htab->elf, abfd, _bfd_elf_link_hash_newfunc, - sizeof (struct elf_link_hash_entry))) + sizeof (struct elf_link_hash_entry), + SPU_ELF_DATA)) { free (htab); return NULL; @@ -608,9 +602,12 @@ { asection *s; flagword flags; - ibfd = info->input_bfds; - flags = SEC_LOAD | SEC_ALLOC | SEC_READONLY | SEC_HAS_CONTENTS - | SEC_IN_MEMORY; + + if (htab->elf.dynobj == NULL) + htab->elf.dynobj = ibfd; + ibfd = htab->elf.dynobj; + flags = (SEC_LOAD | SEC_ALLOC | SEC_READONLY | SEC_HAS_CONTENTS + | SEC_IN_MEMORY | SEC_LINKER_CREATED); s = bfd_make_section_anyway_with_flags (ibfd, ".fixup", flags); if (s == NULL || !bfd_set_section_alignment (ibfd, s, 2)) return FALSE; @@ -678,9 +675,10 @@ ovl_end = alloc_sec[0]->vma + alloc_sec[0]->size; if (htab->params->ovly_flavour == ovly_soft_icache) { + unsigned int prev_buf = 0, set_id = 0; + /* Look for an overlapping vma to find the first overlay section. */ bfd_vma vma_start = 0; - bfd_vma lma_start = 0; for (i = 1; i < n; i++) { @@ -689,10 +687,6 @@ { asection *s0 = alloc_sec[i - 1]; vma_start = s0->vma; - if (strncmp (s0->name, ".ovl.init", 9) != 0) - lma_start = s0->lma; - else - lma_start = s->lma; ovl_end = (s0->vma + ((bfd_vma) 1 << (htab->num_lines_log2 + htab->line_size_log2))); @@ -717,8 +711,10 @@ if (strncmp (s->name, ".ovl.init", 9) != 0) { num_buf = ((s->vma - vma_start) >> htab->line_size_log2) + 1; - if (((s->vma - vma_start) & (htab->params->line_size - 1)) - || ((s->lma - lma_start) & (htab->params->line_size - 1))) + set_id = (num_buf == prev_buf)? set_id + 1 : 0; + prev_buf = num_buf; + + if ((s->vma - vma_start) & (htab->params->line_size - 1)) { info->callbacks->einfo (_("%X%P: overlay section %A " "does not start on a cache line.\n"), @@ -737,7 +733,7 @@ alloc_sec[ovl_index++] = s; spu_elf_section_data (s)->u.o.ovl_index - = ((s->lma - lma_start) >> htab->line_size_log2) + 1; + = (set_id << htab->num_lines_log2) + num_buf; spu_elf_section_data (s)->u.o.ovl_buf = num_buf; } } @@ -2693,19 +2689,12 @@ Elf_Internal_Sym *sym; struct elf_link_hash_entry *h; bfd_vma val; - bfd_boolean reject, is_call; + bfd_boolean nonbranch, is_call; struct function_info *caller; struct call_info *callee; - reject = FALSE; r_type = ELF32_R_TYPE (irela->r_info); - if (r_type != R_SPU_REL16 - && r_type != R_SPU_ADDR16) - { - reject = TRUE; - if (!(call_tree && spu_hash_table (info)->params->auto_overlay)) - continue; - } + nonbranch = r_type != R_SPU_REL16 && r_type != R_SPU_ADDR16; r_indx = ELF32_R_SYM (irela->r_info); if (!get_sym_h (&h, &sym, &sym_sec, psyms, r_indx, sec->owner)) @@ -2716,7 +2705,7 @@ continue; is_call = FALSE; - if (!reject) + if (!nonbranch) { unsigned char insn[4]; @@ -2747,14 +2736,13 @@ } else { - reject = TRUE; - if (!(call_tree && spu_hash_table (info)->params->auto_overlay) - || is_hint (insn)) + nonbranch = TRUE; + if (is_hint (insn)) continue; } } - if (reject) + if (nonbranch) { /* For --auto-overlay, count possible stubs we need for function pointer references. */ @@ -2764,8 +2752,20 @@ else sym_type = ELF_ST_TYPE (sym->st_info); if (sym_type == STT_FUNC) - spu_hash_table (info)->non_ovly_stub += 1; - continue; + { + if (call_tree && spu_hash_table (info)->params->auto_overlay) + spu_hash_table (info)->non_ovly_stub += 1; + /* If the symbol type is STT_FUNC then this must be a + function pointer initialisation. */ + continue; + } + /* Ignore data references. */ + if ((sym_sec->flags & (SEC_ALLOC | SEC_LOAD | SEC_CODE)) + != (SEC_ALLOC | SEC_LOAD | SEC_CODE)) + continue; + /* Otherwise we probably have a jump table reloc for + a switch statement or some other reference to a + code label. */ } if (h) @@ -2814,7 +2814,7 @@ callee->is_pasted = FALSE; callee->broken_cycle = FALSE; callee->priority = priority; - callee->count = 1; + callee->count = nonbranch? 0 : 1; if (callee->fun->last_caller != sec) { callee->fun->last_caller = sec; @@ -4067,7 +4067,7 @@ bfd *const *abfd1 = a; bfd *const *abfd2 = b; - return strcmp ((*abfd1)->filename, (*abfd2)->filename); + return filename_cmp ((*abfd1)->filename, (*abfd2)->filename); } static unsigned int @@ -4160,6 +4160,7 @@ bfd **bfd_arr; struct elf_segment_map *m; unsigned int fixed_size, lo, hi; + unsigned int reserved; struct spu_link_hash_table *htab; unsigned int base, i, count, bfd_count; unsigned int region, ovlynum; @@ -4195,7 +4196,8 @@ goto err_exit; htab = spu_hash_table (info); - if (htab->reserved == 0) + reserved = htab->params->auto_overlay_reserved; + if (reserved == 0) { struct _sum_stack_param sum_stack_param; @@ -4203,11 +4205,12 @@ sum_stack_param.overall_stack = 0; if (!for_each_node (sum_stack, info, &sum_stack_param, TRUE)) goto err_exit; - htab->reserved = sum_stack_param.overall_stack + htab->extra_stack_space; + reserved = (sum_stack_param.overall_stack + + htab->params->extra_stack_space); } /* No need for overlays if everything already fits. */ - if (fixed_size + htab->reserved <= htab->local_store + if (fixed_size + reserved <= htab->local_store && htab->params->ovly_flavour != ovly_soft_icache) { htab->params->auto_overlay = 0; @@ -4296,7 +4299,7 @@ qsort (bfd_arr, bfd_count, sizeof (*bfd_arr), sort_bfds); for (i = 1; i < bfd_count; ++i) - if (strcmp (bfd_arr[i - 1]->filename, bfd_arr[i]->filename) == 0) + if (filename_cmp (bfd_arr[i - 1]->filename, bfd_arr[i]->filename) == 0) { if (bfd_arr[i - 1]->my_archive == bfd_arr[i]->my_archive) { @@ -4320,7 +4323,7 @@ } free (bfd_arr); - fixed_size += htab->reserved; + fixed_size += reserved; fixed_size += htab->non_ovly_stub * ovl_stub_size (htab->params); if (fixed_size + mos_param.max_overlay_size <= htab->local_store) { @@ -4359,13 +4362,13 @@ (bfd_vma) mos_param.max_overlay_size); /* Now see if we should put some functions in the non-overlay area. */ - else if (fixed_size < htab->overlay_fixed) + else if (fixed_size < htab->params->auto_overlay_fixed) { unsigned int max_fixed, lib_size; max_fixed = htab->local_store - mos_param.max_overlay_size; - if (max_fixed > htab->overlay_fixed) - max_fixed = htab->overlay_fixed; + if (max_fixed > htab->params->auto_overlay_fixed) + max_fixed = htab->params->auto_overlay_fixed; lib_size = max_fixed - fixed_size; lib_size = auto_ovl_lib_functions (info, lib_size); if (lib_size == (unsigned int) -1) @@ -4404,7 +4407,7 @@ struct call_info *call, *pasty; struct _spu_elf_section_data *sec_data; struct spu_elf_stack_info *sinfo; - int k; + unsigned int k; /* See whether we can add this section to the current overlay without overflowing our overlay buffer. */ @@ -4424,7 +4427,7 @@ { /* Pasted sections must stay together, so add their sizes too. */ - struct call_info *pasty = find_pasted_call (sec); + pasty = find_pasted_call (sec); while (pasty != NULL) { struct function_info *call_fun = pasty->fun; @@ -4451,7 +4454,7 @@ pasty = NULL; sec_data = spu_elf_section_data (sec); sinfo = sec_data->u.i.stack_info; - for (k = 0; k < sinfo->num_fun; ++k) + for (k = 0; k < (unsigned) sinfo->num_fun; ++k) for (call = sinfo->fun[k].call_list; call; call = call->next) if (call->is_pasted) { @@ -4481,7 +4484,6 @@ num_stubs = 0; for (call = dummy_caller.call_list; call; call = call->next) { - unsigned int k; unsigned int stub_delta = 1; if (htab->params->ovly_flavour == ovly_soft_icache) @@ -4531,13 +4533,12 @@ script = htab->params->spu_elf_open_overlay_script (); - if (fprintf (script, "SECTIONS\n{\n") <= 0) - goto file_err; - if (htab->params->ovly_flavour == ovly_soft_icache) { + if (fprintf (script, "SECTIONS\n{\n") <= 0) + goto file_err; + if (fprintf (script, - " .data.icache ALIGN (16) : { *(.ovtab) *(.data.icache) }\n" " . = ALIGN (%u);\n" " .ovl.init : { *(.ovl.init) }\n" " . = ABSOLUTE (ADDR (.ovl.init));\n", @@ -4552,10 +4553,10 @@ unsigned int vma, lma; vma = (indx & (htab->params->num_lines - 1)) << htab->line_size_log2; - lma = indx << htab->line_size_log2; + lma = vma + (((indx >> htab->num_lines_log2) + 1) << 18); if (fprintf (script, " .ovly%u ABSOLUTE (ADDR (.ovl.init)) + %u " - ": AT (ALIGN (LOADADDR (.ovl.init) + SIZEOF (.ovl.init), 16) + %u) {\n", + ": AT (LOADADDR (.ovl.init) + %u) {\n", ovlynum, vma, lma) <= 0) goto file_err; @@ -4573,9 +4574,15 @@ if (fprintf (script, " . = ABSOLUTE (ADDR (.ovl.init)) + %u;\n", 1 << (htab->num_lines_log2 + htab->line_size_log2)) <= 0) goto file_err; + + if (fprintf (script, "}\nINSERT AFTER .toe;\n") <= 0) + goto file_err; } else { + if (fprintf (script, "SECTIONS\n{\n") <= 0) + goto file_err; + if (fprintf (script, " . = ALIGN (16);\n" " .ovl.init : { *(.ovl.init) }\n" @@ -4627,13 +4634,13 @@ goto file_err; } + if (fprintf (script, "}\nINSERT BEFORE .text;\n") <= 0) + goto file_err; } free (ovly_map); free (ovly_sections); - if (fprintf (script, "}\nINSERT BEFORE .text;\n") <= 0) - goto file_err; if (fclose (script) != 0) goto file_err; @@ -4823,14 +4830,12 @@ bfd_vma addend; bfd_reloc_status_type r; bfd_boolean unresolved_reloc; - bfd_boolean warned; enum _stub_type stub_type; r_symndx = ELF32_R_SYM (rel->r_info); r_type = ELF32_R_TYPE (rel->r_info); howto = elf_howto_table + r_type; unresolved_reloc = FALSE; - warned = FALSE; h = NULL; sym = NULL; sec = NULL; @@ -4886,21 +4891,13 @@ input_section, rel->r_offset, err)) return FALSE; - warned = TRUE; } sym_name = h->root.root.string; } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -5087,7 +5084,7 @@ } input_section->reloc_count = wrel - relocs; /* Backflips for _bfd_elf_link_output_relocs. */ - rel_hdr = &elf_section_data (input_section)->rel_hdr; + rel_hdr = _bfd_elf_single_rel_hdr (input_section); rel_hdr->sh_size = input_section->reloc_count * rel_hdr->sh_entsize; ret = 2; } @@ -5095,6 +5092,13 @@ return ret; } +static bfd_boolean +spu_elf_finish_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED) +{ + return TRUE; +} + /* Adjust _SPUEAR_ syms to point at their overlay stubs. */ static int @@ -5251,7 +5255,7 @@ if ((*p)->p_type == PT_LOAD && (*p)->count == 1 && spu_elf_section_data ((*p)->sections[0])->u.o.ovl_index != 0) { - struct elf_segment_map *m = *p; + m = *p; *p = m->next; *p_overlay = m; p_overlay = &m->next; @@ -5401,7 +5405,8 @@ /* If there aren't any relocs, then there's nothing more to do. */ - if ((isec->flags & SEC_RELOC) == 0 + if ((isec->flags & SEC_ALLOC) == 0 + || (isec->flags & SEC_RELOC) == 0 || isec->reloc_count == 0) continue; @@ -5444,6 +5449,7 @@ #define TARGET_BIG_SYM bfd_elf32_spu_vec #define TARGET_BIG_NAME "elf32-spu" #define ELF_ARCH bfd_arch_spu +#define ELF_TARGET_ID SPU_ELF_DATA #define ELF_MACHINE_CODE EM_SPU /* This matches the alignment need for DMA. */ #define ELF_MAXPAGESIZE 0x80 @@ -5455,6 +5461,7 @@ #define elf_info_to_howto spu_elf_info_to_howto #define elf_backend_count_relocs spu_elf_count_relocs #define elf_backend_relocate_section spu_elf_relocate_section +#define elf_backend_finish_dynamic_sections spu_elf_finish_dynamic_sections #define elf_backend_symbol_processing spu_elf_backend_symbol_processing #define elf_backend_link_output_symbol_hook spu_elf_output_symbol_hook #define elf_backend_object_p spu_elf_object_p diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-tic6x.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-tic6x.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-tic6x.c 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-tic6x.c 2011-03-31 14:17:34.000000000 +0000 @@ -0,0 +1,3923 @@ +/* 32-bit ELF support for TI C6X + Copyright 2010, 2011 + Free Software Foundation, Inc. + Contributed by Joseph Myers + Bernd Schmidt + + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "sysdep.h" +#include "bfd.h" +#include "libbfd.h" +#include "libiberty.h" +#include "elf-bfd.h" +#include "elf/tic6x.h" +#include "elf32-tic6x.h" + +#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" + +/* DSBT binaries have a default 128K stack. */ +#define DEFAULT_STACK_SIZE 0x20000 + +/* The size in bytes of an entry in the procedure linkage table. */ +#define PLT_ENTRY_SIZE 24 + +/* TI C6X ELF linker hash table. */ + +struct elf32_tic6x_link_hash_table +{ + struct elf_link_hash_table elf; + + /* Short-cuts to get to dynamic linker sections. */ + asection *sdynbss; + asection *srelbss; + + /* C6X specific command line arguments. */ + struct elf32_tic6x_params params; + + /* Small local sym cache. */ + struct sym_cache sym_cache; + + /* The output BFD, for convenience. */ + bfd *obfd; + + /* The .dsbt section. */ + asection *dsbt; +}; + +/* Get the TI C6X ELF linker hash table from a link_info structure. */ + +#define elf32_tic6x_hash_table(p) \ + ((struct elf32_tic6x_link_hash_table *) ((p)->hash)) + +/* TI C6X ELF linker hash entry. */ + +struct elf32_tic6x_link_hash_entry +{ + struct elf_link_hash_entry elf; + + /* Track dynamic relocs copied for this symbol. */ + struct elf_dyn_relocs *dyn_relocs; +}; + +struct elf32_tic6x_obj_tdata +{ + struct elf_obj_tdata root; + + /* Whether to use RELA relocations when generating relocations. + This is a per-object flag to allow the assembler to generate REL + relocations for use in linker testcases. */ + bfd_boolean use_rela_p; +}; + +#define elf32_tic6x_tdata(abfd) \ + ((struct elf32_tic6x_obj_tdata *) (abfd)->tdata.any) + +#define is_tic6x_elf(bfd) \ + (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ + && elf_tdata (bfd) != NULL \ + && elf_object_id (bfd) == TIC6X_ELF_DATA) + +/* C6X ELF uses two common sections. One is the usual one, and the + other is for small objects. All the small objects are kept + together, and then referenced via the gp pointer, which yields + faster assembler code. This is what we use for the small common + section. This approach is copied from ecoff.c. */ +static asection tic6x_elf_scom_section; +static asymbol tic6x_elf_scom_symbol; +static asymbol *tic6x_elf_scom_symbol_ptr; + +static reloc_howto_type elf32_tic6x_howto_table[] = +{ + HOWTO (R_C6000_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_C6000_NONE", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_ABS32, /* 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_C6000_ABS32", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_ABS16, /* 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_C6000_ABS16", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_ABS8, /* 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_C6000_ABS8", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x000000ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_PCR_S21, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 21, /* bitsize */ + TRUE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_PCR_S21", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x0fffff80, /* dst_mask */ + TRUE), /* pcrel_offset */ + HOWTO (R_C6000_PCR_S12, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + TRUE, /* pc_relative */ + 16, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_PCR_S12", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x0fff0000, /* dst_mask */ + TRUE), /* pcrel_offset */ + HOWTO (R_C6000_PCR_S10, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 10, /* bitsize */ + TRUE, /* pc_relative */ + 13, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_PCR_S10", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fe000, /* dst_mask */ + TRUE), /* pcrel_offset */ + HOWTO (R_C6000_PCR_S7, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 7, /* bitsize */ + TRUE, /* pc_relative */ + 16, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_PCR_S7", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007f0000, /* dst_mask */ + TRUE), /* pcrel_offset */ + HOWTO (R_C6000_ABS_S16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_ABS_S16", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_ABS_L16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_ABS_L16", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_ABS_H16, /* type */ + 16, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_ABS_H16", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_U15_B, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 15, /* bitsize */ + FALSE, /* pc_relative */ + 8, /* bitpos */ + complain_overflow_unsigned,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_U15_B", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff00, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_U15_H, /* type */ + 1, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 15, /* bitsize */ + FALSE, /* pc_relative */ + 8, /* bitpos */ + complain_overflow_unsigned,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_U15_H", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff00, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_U15_W, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 15, /* bitsize */ + FALSE, /* pc_relative */ + 8, /* bitpos */ + complain_overflow_unsigned,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_U15_W", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff00, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_S16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_S16", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_L16_B, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_L16_B", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_L16_H, /* type */ + 1, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_L16_H", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_L16_W, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_L16_W", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_H16_B, /* type */ + 16, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_H16_B", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_H16_H, /* type */ + 17, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_H16_H", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_H16_W, /* type */ + 18, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_H16_W", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_GOT_U15_W, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 15, /* bitsize */ + FALSE, /* pc_relative */ + 8, /* bitpos */ + complain_overflow_unsigned,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_GOT_U15_W",/* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff00, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_GOT_L16_W, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_GOT_L16_W",/* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_GOT_H16_W, /* type */ + 18, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_GOT_H16_W",/* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_DSBT_INDEX, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 15, /* bitsize */ + FALSE, /* pc_relative */ + 8, /* bitpos */ + complain_overflow_unsigned,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_DSBT_INDEX", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff00, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_PREL31, /* type */ + 1, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 31, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_PREL31", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x7fffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_COPY, /* 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_C6000_COPY", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_JUMP_SLOT, /* 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_C6000_JUMP_SLOT", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + EMPTY_HOWTO (28), + EMPTY_HOWTO (29), + EMPTY_HOWTO (30), + EMPTY_HOWTO (31), + EMPTY_HOWTO (32), + EMPTY_HOWTO (33), + EMPTY_HOWTO (34), + EMPTY_HOWTO (35), + EMPTY_HOWTO (36), + EMPTY_HOWTO (37), + EMPTY_HOWTO (38), + EMPTY_HOWTO (39), + EMPTY_HOWTO (40), + EMPTY_HOWTO (41), + EMPTY_HOWTO (42), + EMPTY_HOWTO (43), + EMPTY_HOWTO (44), + EMPTY_HOWTO (45), + EMPTY_HOWTO (46), + EMPTY_HOWTO (47), + EMPTY_HOWTO (48), + EMPTY_HOWTO (49), + EMPTY_HOWTO (50), + EMPTY_HOWTO (51), + EMPTY_HOWTO (52), + EMPTY_HOWTO (53), + EMPTY_HOWTO (54), + EMPTY_HOWTO (55), + EMPTY_HOWTO (56), + EMPTY_HOWTO (57), + EMPTY_HOWTO (58), + EMPTY_HOWTO (59), + EMPTY_HOWTO (60), + EMPTY_HOWTO (61), + EMPTY_HOWTO (62), + EMPTY_HOWTO (63), + EMPTY_HOWTO (64), + EMPTY_HOWTO (65), + EMPTY_HOWTO (66), + EMPTY_HOWTO (67), + EMPTY_HOWTO (68), + EMPTY_HOWTO (69), + EMPTY_HOWTO (70), + EMPTY_HOWTO (71), + EMPTY_HOWTO (72), + EMPTY_HOWTO (73), + EMPTY_HOWTO (74), + EMPTY_HOWTO (75), + EMPTY_HOWTO (76), + EMPTY_HOWTO (77), + EMPTY_HOWTO (78), + EMPTY_HOWTO (79), + EMPTY_HOWTO (80), + EMPTY_HOWTO (81), + EMPTY_HOWTO (82), + EMPTY_HOWTO (83), + EMPTY_HOWTO (84), + EMPTY_HOWTO (85), + EMPTY_HOWTO (86), + EMPTY_HOWTO (87), + EMPTY_HOWTO (88), + EMPTY_HOWTO (89), + EMPTY_HOWTO (90), + EMPTY_HOWTO (91), + EMPTY_HOWTO (92), + EMPTY_HOWTO (93), + EMPTY_HOWTO (94), + EMPTY_HOWTO (95), + EMPTY_HOWTO (96), + EMPTY_HOWTO (97), + EMPTY_HOWTO (98), + EMPTY_HOWTO (99), + EMPTY_HOWTO (100), + EMPTY_HOWTO (101), + EMPTY_HOWTO (102), + EMPTY_HOWTO (103), + EMPTY_HOWTO (104), + EMPTY_HOWTO (105), + EMPTY_HOWTO (106), + EMPTY_HOWTO (107), + EMPTY_HOWTO (108), + EMPTY_HOWTO (109), + EMPTY_HOWTO (110), + EMPTY_HOWTO (111), + EMPTY_HOWTO (112), + EMPTY_HOWTO (113), + EMPTY_HOWTO (114), + EMPTY_HOWTO (115), + EMPTY_HOWTO (116), + EMPTY_HOWTO (117), + EMPTY_HOWTO (118), + EMPTY_HOWTO (119), + EMPTY_HOWTO (120), + EMPTY_HOWTO (121), + EMPTY_HOWTO (122), + EMPTY_HOWTO (123), + EMPTY_HOWTO (124), + EMPTY_HOWTO (125), + EMPTY_HOWTO (126), + EMPTY_HOWTO (127), + EMPTY_HOWTO (128), + EMPTY_HOWTO (129), + EMPTY_HOWTO (130), + EMPTY_HOWTO (131), + EMPTY_HOWTO (132), + EMPTY_HOWTO (133), + EMPTY_HOWTO (134), + EMPTY_HOWTO (135), + EMPTY_HOWTO (136), + EMPTY_HOWTO (137), + EMPTY_HOWTO (138), + EMPTY_HOWTO (139), + EMPTY_HOWTO (140), + EMPTY_HOWTO (141), + EMPTY_HOWTO (142), + EMPTY_HOWTO (143), + EMPTY_HOWTO (144), + EMPTY_HOWTO (145), + EMPTY_HOWTO (146), + EMPTY_HOWTO (147), + EMPTY_HOWTO (148), + EMPTY_HOWTO (149), + EMPTY_HOWTO (150), + EMPTY_HOWTO (151), + EMPTY_HOWTO (152), + EMPTY_HOWTO (153), + EMPTY_HOWTO (154), + EMPTY_HOWTO (155), + EMPTY_HOWTO (156), + EMPTY_HOWTO (157), + EMPTY_HOWTO (158), + EMPTY_HOWTO (159), + EMPTY_HOWTO (160), + EMPTY_HOWTO (161), + EMPTY_HOWTO (162), + EMPTY_HOWTO (163), + EMPTY_HOWTO (164), + EMPTY_HOWTO (165), + EMPTY_HOWTO (166), + EMPTY_HOWTO (167), + EMPTY_HOWTO (168), + EMPTY_HOWTO (169), + EMPTY_HOWTO (170), + EMPTY_HOWTO (171), + EMPTY_HOWTO (172), + EMPTY_HOWTO (173), + EMPTY_HOWTO (174), + EMPTY_HOWTO (175), + EMPTY_HOWTO (176), + EMPTY_HOWTO (177), + EMPTY_HOWTO (178), + EMPTY_HOWTO (179), + EMPTY_HOWTO (180), + EMPTY_HOWTO (181), + EMPTY_HOWTO (182), + EMPTY_HOWTO (183), + EMPTY_HOWTO (184), + EMPTY_HOWTO (185), + EMPTY_HOWTO (186), + EMPTY_HOWTO (187), + EMPTY_HOWTO (188), + EMPTY_HOWTO (189), + EMPTY_HOWTO (190), + EMPTY_HOWTO (191), + EMPTY_HOWTO (192), + EMPTY_HOWTO (193), + EMPTY_HOWTO (194), + EMPTY_HOWTO (195), + EMPTY_HOWTO (196), + EMPTY_HOWTO (197), + EMPTY_HOWTO (198), + EMPTY_HOWTO (199), + EMPTY_HOWTO (200), + EMPTY_HOWTO (201), + EMPTY_HOWTO (202), + EMPTY_HOWTO (203), + EMPTY_HOWTO (204), + EMPTY_HOWTO (205), + EMPTY_HOWTO (206), + EMPTY_HOWTO (207), + EMPTY_HOWTO (208), + EMPTY_HOWTO (209), + EMPTY_HOWTO (210), + EMPTY_HOWTO (211), + EMPTY_HOWTO (212), + EMPTY_HOWTO (213), + EMPTY_HOWTO (214), + EMPTY_HOWTO (215), + EMPTY_HOWTO (216), + EMPTY_HOWTO (217), + EMPTY_HOWTO (218), + EMPTY_HOWTO (219), + EMPTY_HOWTO (220), + EMPTY_HOWTO (221), + EMPTY_HOWTO (222), + EMPTY_HOWTO (223), + EMPTY_HOWTO (224), + EMPTY_HOWTO (225), + EMPTY_HOWTO (226), + EMPTY_HOWTO (227), + EMPTY_HOWTO (228), + EMPTY_HOWTO (229), + EMPTY_HOWTO (230), + EMPTY_HOWTO (231), + EMPTY_HOWTO (232), + EMPTY_HOWTO (233), + EMPTY_HOWTO (234), + EMPTY_HOWTO (235), + EMPTY_HOWTO (236), + EMPTY_HOWTO (237), + EMPTY_HOWTO (238), + EMPTY_HOWTO (239), + EMPTY_HOWTO (240), + EMPTY_HOWTO (241), + EMPTY_HOWTO (242), + EMPTY_HOWTO (243), + EMPTY_HOWTO (244), + EMPTY_HOWTO (245), + EMPTY_HOWTO (246), + EMPTY_HOWTO (247), + EMPTY_HOWTO (248), + EMPTY_HOWTO (249), + EMPTY_HOWTO (250), + EMPTY_HOWTO (251), + EMPTY_HOWTO (252), + HOWTO (R_C6000_ALIGN, /* 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_C6000_ALIGN", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_FPHEAD, /* 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_C6000_FPHEAD", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_NOCMP, /* 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_C6000_NOCMP", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE) /* pcrel_offset */ +}; + +static reloc_howto_type elf32_tic6x_howto_table_rel[] = +{ + HOWTO (R_C6000_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_C6000_NONE", /* name */ + TRUE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_ABS32, /* 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_C6000_ABS32", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_ABS16, /* 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_C6000_ABS16", /* name */ + TRUE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_ABS8, /* 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_C6000_ABS8", /* name */ + TRUE, /* partial_inplace */ + 0x000000ff, /* src_mask */ + 0x000000ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_PCR_S21, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 21, /* bitsize */ + TRUE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_PCR_S21", /* name */ + TRUE, /* partial_inplace */ + 0x0fffff80, /* src_mask */ + 0x0fffff80, /* dst_mask */ + TRUE), /* pcrel_offset */ + HOWTO (R_C6000_PCR_S12, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + TRUE, /* pc_relative */ + 16, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_PCR_S12", /* name */ + TRUE, /* partial_inplace */ + 0x0fff0000, /* src_mask */ + 0x0fff0000, /* dst_mask */ + TRUE), /* pcrel_offset */ + HOWTO (R_C6000_PCR_S10, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 10, /* bitsize */ + TRUE, /* pc_relative */ + 13, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_PCR_S10", /* name */ + TRUE, /* partial_inplace */ + 0x007fe000, /* src_mask */ + 0x007fe000, /* dst_mask */ + TRUE), /* pcrel_offset */ + HOWTO (R_C6000_PCR_S7, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 7, /* bitsize */ + TRUE, /* pc_relative */ + 16, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_PCR_S7", /* name */ + TRUE, /* partial_inplace */ + 0x007f0000, /* src_mask */ + 0x007f0000, /* dst_mask */ + TRUE), /* pcrel_offset */ + HOWTO (R_C6000_ABS_S16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_ABS_S16", /* name */ + TRUE, /* partial_inplace */ + 0x007fff80, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_ABS_L16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_ABS_L16", /* name */ + TRUE, /* partial_inplace */ + 0x007fff80, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + EMPTY_HOWTO (R_C6000_ABS_H16), + HOWTO (R_C6000_SBR_U15_B, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 15, /* bitsize */ + FALSE, /* pc_relative */ + 8, /* bitpos */ + complain_overflow_unsigned,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_U15_B", /* name */ + TRUE, /* partial_inplace */ + 0x007fff00, /* src_mask */ + 0x007fff00, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_U15_H, /* type */ + 1, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 15, /* bitsize */ + FALSE, /* pc_relative */ + 8, /* bitpos */ + complain_overflow_unsigned,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_U15_H", /* name */ + TRUE, /* partial_inplace */ + 0x007fff00, /* src_mask */ + 0x007fff00, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_U15_W, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 15, /* bitsize */ + FALSE, /* pc_relative */ + 8, /* bitpos */ + complain_overflow_unsigned,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_U15_W", /* name */ + TRUE, /* partial_inplace */ + 0x007fff00, /* src_mask */ + 0x007fff00, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_S16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_signed,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_S16", /* name */ + TRUE, /* partial_inplace */ + 0x007fff80, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_L16_B, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_L16_B", /* name */ + TRUE, /* partial_inplace */ + 0x007fff80, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_L16_H, /* type */ + 1, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_L16_H", /* name */ + TRUE, /* partial_inplace */ + 0x007fff80, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_L16_W, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_L16_W", /* name */ + TRUE, /* partial_inplace */ + 0x007fff80, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + EMPTY_HOWTO (R_C6000_SBR_H16_B), + EMPTY_HOWTO (R_C6000_SBR_H16_H), + EMPTY_HOWTO (R_C6000_SBR_H16_W), + HOWTO (R_C6000_SBR_GOT_U15_W, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 15, /* bitsize */ + FALSE, /* pc_relative */ + 8, /* bitpos */ + complain_overflow_unsigned,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_GOT_U15_W",/* name */ + TRUE, /* partial_inplace */ + 0x007fff00, /* src_mask */ + 0x007fff00, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_SBR_GOT_L16_W, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 7, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_SBR_GOT_L16_W",/* name */ + TRUE, /* partial_inplace */ + 0x007fff80, /* src_mask */ + 0x007fff80, /* dst_mask */ + FALSE), /* pcrel_offset */ + EMPTY_HOWTO (R_C6000_SBR_GOT_H16_W), + HOWTO (R_C6000_DSBT_INDEX, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 15, /* bitsize */ + FALSE, /* pc_relative */ + 8, /* bitpos */ + complain_overflow_unsigned,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_DSBT_INDEX", /* name */ + TRUE, /* partial_inplace */ + 0, /* src_mask */ + 0x007fff00, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_PREL31, /* type */ + 1, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 31, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_C6000_PREL31", /* name */ + TRUE, /* partial_inplace */ + 0, /* src_mask */ + 0x7fffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_COPY, /* 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_C6000_COPY", /* name */ + TRUE, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_JUMP_SLOT, /* 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_C6000_JUMP_SLOT", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + EMPTY_HOWTO (28), + EMPTY_HOWTO (29), + EMPTY_HOWTO (30), + EMPTY_HOWTO (31), + EMPTY_HOWTO (32), + EMPTY_HOWTO (33), + EMPTY_HOWTO (34), + EMPTY_HOWTO (35), + EMPTY_HOWTO (36), + EMPTY_HOWTO (37), + EMPTY_HOWTO (38), + EMPTY_HOWTO (39), + EMPTY_HOWTO (40), + EMPTY_HOWTO (41), + EMPTY_HOWTO (42), + EMPTY_HOWTO (43), + EMPTY_HOWTO (44), + EMPTY_HOWTO (45), + EMPTY_HOWTO (46), + EMPTY_HOWTO (47), + EMPTY_HOWTO (48), + EMPTY_HOWTO (49), + EMPTY_HOWTO (50), + EMPTY_HOWTO (51), + EMPTY_HOWTO (52), + EMPTY_HOWTO (53), + EMPTY_HOWTO (54), + EMPTY_HOWTO (55), + EMPTY_HOWTO (56), + EMPTY_HOWTO (57), + EMPTY_HOWTO (58), + EMPTY_HOWTO (59), + EMPTY_HOWTO (60), + EMPTY_HOWTO (61), + EMPTY_HOWTO (62), + EMPTY_HOWTO (63), + EMPTY_HOWTO (64), + EMPTY_HOWTO (65), + EMPTY_HOWTO (66), + EMPTY_HOWTO (67), + EMPTY_HOWTO (68), + EMPTY_HOWTO (69), + EMPTY_HOWTO (70), + EMPTY_HOWTO (71), + EMPTY_HOWTO (72), + EMPTY_HOWTO (73), + EMPTY_HOWTO (74), + EMPTY_HOWTO (75), + EMPTY_HOWTO (76), + EMPTY_HOWTO (77), + EMPTY_HOWTO (78), + EMPTY_HOWTO (79), + EMPTY_HOWTO (80), + EMPTY_HOWTO (81), + EMPTY_HOWTO (82), + EMPTY_HOWTO (83), + EMPTY_HOWTO (84), + EMPTY_HOWTO (85), + EMPTY_HOWTO (86), + EMPTY_HOWTO (87), + EMPTY_HOWTO (88), + EMPTY_HOWTO (89), + EMPTY_HOWTO (90), + EMPTY_HOWTO (91), + EMPTY_HOWTO (92), + EMPTY_HOWTO (93), + EMPTY_HOWTO (94), + EMPTY_HOWTO (95), + EMPTY_HOWTO (96), + EMPTY_HOWTO (97), + EMPTY_HOWTO (98), + EMPTY_HOWTO (99), + EMPTY_HOWTO (100), + EMPTY_HOWTO (101), + EMPTY_HOWTO (102), + EMPTY_HOWTO (103), + EMPTY_HOWTO (104), + EMPTY_HOWTO (105), + EMPTY_HOWTO (106), + EMPTY_HOWTO (107), + EMPTY_HOWTO (108), + EMPTY_HOWTO (109), + EMPTY_HOWTO (110), + EMPTY_HOWTO (111), + EMPTY_HOWTO (112), + EMPTY_HOWTO (113), + EMPTY_HOWTO (114), + EMPTY_HOWTO (115), + EMPTY_HOWTO (116), + EMPTY_HOWTO (117), + EMPTY_HOWTO (118), + EMPTY_HOWTO (119), + EMPTY_HOWTO (120), + EMPTY_HOWTO (121), + EMPTY_HOWTO (122), + EMPTY_HOWTO (123), + EMPTY_HOWTO (124), + EMPTY_HOWTO (125), + EMPTY_HOWTO (126), + EMPTY_HOWTO (127), + EMPTY_HOWTO (128), + EMPTY_HOWTO (129), + EMPTY_HOWTO (130), + EMPTY_HOWTO (131), + EMPTY_HOWTO (132), + EMPTY_HOWTO (133), + EMPTY_HOWTO (134), + EMPTY_HOWTO (135), + EMPTY_HOWTO (136), + EMPTY_HOWTO (137), + EMPTY_HOWTO (138), + EMPTY_HOWTO (139), + EMPTY_HOWTO (140), + EMPTY_HOWTO (141), + EMPTY_HOWTO (142), + EMPTY_HOWTO (143), + EMPTY_HOWTO (144), + EMPTY_HOWTO (145), + EMPTY_HOWTO (146), + EMPTY_HOWTO (147), + EMPTY_HOWTO (148), + EMPTY_HOWTO (149), + EMPTY_HOWTO (150), + EMPTY_HOWTO (151), + EMPTY_HOWTO (152), + EMPTY_HOWTO (153), + EMPTY_HOWTO (154), + EMPTY_HOWTO (155), + EMPTY_HOWTO (156), + EMPTY_HOWTO (157), + EMPTY_HOWTO (158), + EMPTY_HOWTO (159), + EMPTY_HOWTO (160), + EMPTY_HOWTO (161), + EMPTY_HOWTO (162), + EMPTY_HOWTO (163), + EMPTY_HOWTO (164), + EMPTY_HOWTO (165), + EMPTY_HOWTO (166), + EMPTY_HOWTO (167), + EMPTY_HOWTO (168), + EMPTY_HOWTO (169), + EMPTY_HOWTO (170), + EMPTY_HOWTO (171), + EMPTY_HOWTO (172), + EMPTY_HOWTO (173), + EMPTY_HOWTO (174), + EMPTY_HOWTO (175), + EMPTY_HOWTO (176), + EMPTY_HOWTO (177), + EMPTY_HOWTO (178), + EMPTY_HOWTO (179), + EMPTY_HOWTO (180), + EMPTY_HOWTO (181), + EMPTY_HOWTO (182), + EMPTY_HOWTO (183), + EMPTY_HOWTO (184), + EMPTY_HOWTO (185), + EMPTY_HOWTO (186), + EMPTY_HOWTO (187), + EMPTY_HOWTO (188), + EMPTY_HOWTO (189), + EMPTY_HOWTO (190), + EMPTY_HOWTO (191), + EMPTY_HOWTO (192), + EMPTY_HOWTO (193), + EMPTY_HOWTO (194), + EMPTY_HOWTO (195), + EMPTY_HOWTO (196), + EMPTY_HOWTO (197), + EMPTY_HOWTO (198), + EMPTY_HOWTO (199), + EMPTY_HOWTO (200), + EMPTY_HOWTO (201), + EMPTY_HOWTO (202), + EMPTY_HOWTO (203), + EMPTY_HOWTO (204), + EMPTY_HOWTO (205), + EMPTY_HOWTO (206), + EMPTY_HOWTO (207), + EMPTY_HOWTO (208), + EMPTY_HOWTO (209), + EMPTY_HOWTO (210), + EMPTY_HOWTO (211), + EMPTY_HOWTO (212), + EMPTY_HOWTO (213), + EMPTY_HOWTO (214), + EMPTY_HOWTO (215), + EMPTY_HOWTO (216), + EMPTY_HOWTO (217), + EMPTY_HOWTO (218), + EMPTY_HOWTO (219), + EMPTY_HOWTO (220), + EMPTY_HOWTO (221), + EMPTY_HOWTO (222), + EMPTY_HOWTO (223), + EMPTY_HOWTO (224), + EMPTY_HOWTO (225), + EMPTY_HOWTO (226), + EMPTY_HOWTO (227), + EMPTY_HOWTO (228), + EMPTY_HOWTO (229), + EMPTY_HOWTO (230), + EMPTY_HOWTO (231), + EMPTY_HOWTO (232), + EMPTY_HOWTO (233), + EMPTY_HOWTO (234), + EMPTY_HOWTO (235), + EMPTY_HOWTO (236), + EMPTY_HOWTO (237), + EMPTY_HOWTO (238), + EMPTY_HOWTO (239), + EMPTY_HOWTO (240), + EMPTY_HOWTO (241), + EMPTY_HOWTO (242), + EMPTY_HOWTO (243), + EMPTY_HOWTO (244), + EMPTY_HOWTO (245), + EMPTY_HOWTO (246), + EMPTY_HOWTO (247), + EMPTY_HOWTO (248), + EMPTY_HOWTO (249), + EMPTY_HOWTO (250), + EMPTY_HOWTO (251), + EMPTY_HOWTO (252), + HOWTO (R_C6000_ALIGN, /* 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_C6000_ALIGN", /* name */ + TRUE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_FPHEAD, /* 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_C6000_FPHEAD", /* name */ + TRUE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + HOWTO (R_C6000_NOCMP, /* 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_C6000_NOCMP", /* name */ + TRUE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE) /* pcrel_offset */ +}; + +/* Map BFD relocations to ELF relocations. */ + +typedef struct +{ + bfd_reloc_code_real_type bfd_reloc_val; + enum elf_tic6x_reloc_type elf_reloc_val; +} tic6x_reloc_map; + +static const tic6x_reloc_map elf32_tic6x_reloc_map[] = + { + { BFD_RELOC_NONE, R_C6000_NONE }, + { BFD_RELOC_32, R_C6000_ABS32 }, + { BFD_RELOC_16, R_C6000_ABS16 }, + { BFD_RELOC_8, R_C6000_ABS8 }, + { BFD_RELOC_C6000_PCR_S21, R_C6000_PCR_S21 }, + { BFD_RELOC_C6000_PCR_S12, R_C6000_PCR_S12 }, + { BFD_RELOC_C6000_PCR_S10, R_C6000_PCR_S10 }, + { BFD_RELOC_C6000_PCR_S7, R_C6000_PCR_S7 }, + { BFD_RELOC_C6000_ABS_S16, R_C6000_ABS_S16 }, + { BFD_RELOC_C6000_ABS_L16, R_C6000_ABS_L16 }, + { BFD_RELOC_C6000_ABS_H16, R_C6000_ABS_H16 }, + { BFD_RELOC_C6000_SBR_U15_B, R_C6000_SBR_U15_B }, + { BFD_RELOC_C6000_SBR_U15_H, R_C6000_SBR_U15_H }, + { BFD_RELOC_C6000_SBR_U15_W, R_C6000_SBR_U15_W }, + { BFD_RELOC_C6000_SBR_S16, R_C6000_SBR_S16 }, + { BFD_RELOC_C6000_SBR_L16_B, R_C6000_SBR_L16_B }, + { BFD_RELOC_C6000_SBR_L16_H, R_C6000_SBR_L16_H }, + { BFD_RELOC_C6000_SBR_L16_W, R_C6000_SBR_L16_W }, + { BFD_RELOC_C6000_SBR_H16_B, R_C6000_SBR_H16_B }, + { BFD_RELOC_C6000_SBR_H16_H, R_C6000_SBR_H16_H }, + { BFD_RELOC_C6000_SBR_H16_W, R_C6000_SBR_H16_W }, + { BFD_RELOC_C6000_SBR_GOT_U15_W, R_C6000_SBR_GOT_U15_W }, + { BFD_RELOC_C6000_SBR_GOT_L16_W, R_C6000_SBR_GOT_L16_W }, + { BFD_RELOC_C6000_SBR_GOT_H16_W, R_C6000_SBR_GOT_H16_W }, + { BFD_RELOC_C6000_DSBT_INDEX, R_C6000_DSBT_INDEX }, + { BFD_RELOC_C6000_PREL31, R_C6000_PREL31 }, + { BFD_RELOC_C6000_COPY, R_C6000_COPY }, + { BFD_RELOC_C6000_JUMP_SLOT, R_C6000_JUMP_SLOT }, + { BFD_RELOC_C6000_EHTYPE, R_C6000_EHTYPE }, + { BFD_RELOC_C6000_PCR_H16, R_C6000_PCR_H16 }, + { BFD_RELOC_C6000_PCR_L16, R_C6000_PCR_L16 }, + { BFD_RELOC_C6000_ALIGN, R_C6000_ALIGN }, + { BFD_RELOC_C6000_FPHEAD, R_C6000_FPHEAD }, + { BFD_RELOC_C6000_NOCMP, R_C6000_NOCMP } + }; + +static reloc_howto_type * +elf32_tic6x_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE (elf32_tic6x_reloc_map); i++) + if (elf32_tic6x_reloc_map[i].bfd_reloc_val == code) + { + enum elf_tic6x_reloc_type elf_reloc_val; + reloc_howto_type *howto; + + elf_reloc_val = elf32_tic6x_reloc_map[i].elf_reloc_val; + if (elf32_tic6x_tdata (abfd)->use_rela_p) + howto = &elf32_tic6x_howto_table[elf_reloc_val]; + else + howto = &elf32_tic6x_howto_table_rel[elf_reloc_val]; + + /* Some relocations are RELA-only; do not return them for + REL. */ + if (howto->name == NULL) + howto = NULL; + + return howto; + } + + return NULL; +} + +static reloc_howto_type * +elf32_tic6x_reloc_name_lookup (bfd *abfd, const char *r_name) +{ + if (elf32_tic6x_tdata (abfd)->use_rela_p) + { + unsigned int i; + + for (i = 0; i < ARRAY_SIZE (elf32_tic6x_howto_table); i++) + if (elf32_tic6x_howto_table[i].name != NULL + && strcasecmp (elf32_tic6x_howto_table[i].name, r_name) == 0) + return &elf32_tic6x_howto_table[i]; + } + else + { + unsigned int i; + + for (i = 0; i < ARRAY_SIZE (elf32_tic6x_howto_table_rel); i++) + if (elf32_tic6x_howto_table_rel[i].name != NULL + && strcasecmp (elf32_tic6x_howto_table_rel[i].name, r_name) == 0) + return &elf32_tic6x_howto_table_rel[i]; + } + + return NULL; +} + +static void +elf32_tic6x_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc, + Elf_Internal_Rela *elf_reloc) +{ + unsigned int r_type; + + r_type = ELF32_R_TYPE (elf_reloc->r_info); + if (r_type >= ARRAY_SIZE (elf32_tic6x_howto_table)) + bfd_reloc->howto = NULL; + else + bfd_reloc->howto = &elf32_tic6x_howto_table[r_type]; +} + +static void +elf32_tic6x_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc, + Elf_Internal_Rela *elf_reloc) +{ + unsigned int r_type; + + r_type = ELF32_R_TYPE (elf_reloc->r_info); + if (r_type >= ARRAY_SIZE (elf32_tic6x_howto_table_rel)) + bfd_reloc->howto = NULL; + else + bfd_reloc->howto = &elf32_tic6x_howto_table_rel[r_type]; +} + +void +elf32_tic6x_set_use_rela_p (bfd *abfd, bfd_boolean use_rela_p) +{ + elf32_tic6x_tdata (abfd)->use_rela_p = use_rela_p; +} + +/* Create an entry in a C6X ELF linker hash table. */ + +static struct bfd_hash_entry * +elf32_tic6x_link_hash_newfunc (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 elf32_tic6x_link_hash_entry)); + if (entry == NULL) + return entry; + } + + /* Call the allocation method of the superclass. */ + entry = _bfd_elf_link_hash_newfunc (entry, table, string); + if (entry != NULL) + { + struct elf32_tic6x_link_hash_entry *eh; + + eh = (struct elf32_tic6x_link_hash_entry *) entry; + eh->dyn_relocs = NULL; + } + + return entry; +} + +/* Create a C6X ELF linker hash table. */ + +static struct bfd_link_hash_table * +elf32_tic6x_link_hash_table_create (bfd *abfd) +{ + struct elf32_tic6x_link_hash_table *ret; + bfd_size_type amt = sizeof (struct elf32_tic6x_link_hash_table); + + ret = bfd_malloc (amt); + if (ret == NULL) + return NULL; + + if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, + elf32_tic6x_link_hash_newfunc, + sizeof (struct elf32_tic6x_link_hash_entry), + TIC6X_ELF_DATA)) + { + free (ret); + return NULL; + } + + ret->sym_cache.abfd = NULL; + ret->obfd = abfd; + ret->elf.is_relocatable_executable = 1; + + return &ret->elf.root; +} + +/* Destroy a C6X ELF linker hash table. */ + +static void +elf32_tic6x_link_hash_table_free (struct bfd_link_hash_table *hash) +{ + _bfd_generic_link_hash_table_free (hash); +} + +/* Called to pass PARAMS to the backend. We store them in the hash table + associated with INFO. */ + +void +elf32_tic6x_setup (struct bfd_link_info *info, + struct elf32_tic6x_params *params) +{ + struct elf32_tic6x_link_hash_table *htab = elf32_tic6x_hash_table (info); + htab->params = *params; +} + +/* Determine if we're dealing with a DSBT object. */ + +static bfd_boolean +elf32_tic6x_using_dsbt (bfd *abfd) +{ + return bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC, + Tag_ABI_DSBT); +} + +/* Create .plt, .rela.plt, .got, .got.plt, .rela.got and .dsbt + sections in DYNOBJ, and set up shortcuts to them in our hash + table. */ + +static bfd_boolean +elf32_tic6x_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info) +{ + struct elf32_tic6x_link_hash_table *htab; + flagword flags; + + htab = elf32_tic6x_hash_table (info); + if (htab == NULL) + return FALSE; + + if (!_bfd_elf_create_dynamic_sections (dynobj, info)) + return FALSE; + + /* Create .dsbt */ + flags = (SEC_ALLOC | SEC_LOAD + | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED); + htab->dsbt = bfd_make_section_anyway_with_flags (dynobj, ".dsbt", + flags); + if (htab->dsbt == NULL + || ! bfd_set_section_alignment (dynobj, htab->dsbt, 2) + || ! bfd_set_section_alignment (dynobj, htab->elf.splt, 5)) + return FALSE; + + htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss"); + if (!info->shared) + htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss"); + + if (!htab->sdynbss + || (!info->shared && !htab->srelbss)) + abort (); + + return TRUE; +} + +static bfd_boolean +elf32_tic6x_mkobject (bfd *abfd) +{ + bfd_boolean ret; + + ret = bfd_elf_allocate_object (abfd, sizeof (struct elf32_tic6x_obj_tdata), + TIC6X_ELF_DATA); + if (ret) + elf32_tic6x_set_use_rela_p (abfd, TRUE); + return ret; +} + +/* Install relocation RELA into section SRELA, incrementing its + reloc_count. */ + +static void +elf32_tic6x_install_rela (bfd *output_bfd, asection *srela, + Elf_Internal_Rela *rela) +{ + bfd_byte *loc; + bfd_vma off = srela->reloc_count++ * sizeof (Elf32_External_Rela); + loc = srela->contents + off; + BFD_ASSERT (off < srela->size); + bfd_elf32_swap_reloca_out (output_bfd, rela, loc); +} + +/* Create a dynamic reloc against the GOT at offset OFFSET. The contents + of the GOT at this offset have been initialized with the relocation. */ + +static void +elf32_tic6x_make_got_dynreloc (bfd *output_bfd, + struct elf32_tic6x_link_hash_table *htab, + asection *sym_sec, bfd_vma offset) +{ + asection *sgot = htab->elf.sgot; + Elf_Internal_Rela outrel; + int dynindx; + + outrel.r_offset = sgot->output_section->vma + sgot->output_offset + offset; + outrel.r_addend = bfd_get_32 (output_bfd, sgot->contents + offset); + if (sym_sec && sym_sec->output_section + && ! bfd_is_abs_section (sym_sec->output_section) + && ! bfd_is_und_section (sym_sec->output_section)) + { + dynindx = elf_section_data (sym_sec->output_section)->dynindx; + outrel.r_addend -= sym_sec->output_section->vma; + } + else + { + dynindx = 0; + } + outrel.r_info = ELF32_R_INFO (dynindx, R_C6000_ABS32); + elf32_tic6x_install_rela (output_bfd, htab->elf.srelgot, &outrel); +} + +/* Finish up dynamic symbol handling. We set the contents of various + dynamic sections here. */ + +static bfd_boolean +elf32_tic6x_finish_dynamic_symbol (bfd * output_bfd, + struct bfd_link_info *info, + struct elf_link_hash_entry *h, + Elf_Internal_Sym * sym) +{ + bfd *dynobj; + struct elf32_tic6x_link_hash_table *htab; + + htab = elf32_tic6x_hash_table (info); + dynobj = htab->elf.dynobj; + + if (h->plt.offset != (bfd_vma) -1) + { + bfd_vma plt_index; + bfd_vma got_section_offset, got_dp_offset, rela_offset; + Elf_Internal_Rela rela; + bfd_byte *loc; + asection *plt, *gotplt, *relplt; + const struct elf_backend_data *bed; + + bed = get_elf_backend_data (output_bfd); + + BFD_ASSERT (htab->elf.splt != NULL); + plt = htab->elf.splt; + gotplt = htab->elf.sgotplt; + relplt = htab->elf.srelplt; + + /* This symbol has an entry in the procedure linkage table. Set + it up. */ + + if ((h->dynindx == -1 + && !((h->forced_local || info->executable) + && h->def_regular + && h->type == STT_GNU_IFUNC)) + || plt == NULL + || gotplt == NULL + || relplt == NULL) + abort (); + + /* Get the index in the procedure linkage table which + corresponds to this symbol. This is the index of this symbol + in all the symbols for which we are making plt entries. The + first entry in the procedure linkage table is reserved. + + Get the offset into the .got table of the entry that + corresponds to this function. Each .got entry is 4 bytes. + The first three are reserved. + + For static executables, we don't reserve anything. */ + + plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1; + got_section_offset = plt_index + bed->got_header_size / 4; + got_dp_offset = got_section_offset + htab->params.dsbt_size; + rela_offset = plt_index * sizeof (Elf32_External_Rela); + + got_section_offset *= 4; + + /* Fill in the entry in the procedure linkage table. */ + + /* ldw .d2t2 *+B14($GOT(f)), b2 */ + bfd_put_32 (output_bfd, got_dp_offset << 8 | 0x0100006e, + plt->contents + h->plt.offset); + /* mvk .s2 low(rela_offset), b0 */ + bfd_put_32 (output_bfd, (rela_offset & 0xffff) << 7 | 0x0000002a, + plt->contents + h->plt.offset + 4); + /* mvkh .s2 high(rela_offset), b0 */ + bfd_put_32 (output_bfd, ((rela_offset >> 16) & 0xffff) << 7 | 0x0000006a, + plt->contents + h->plt.offset + 8); + /* nop 2 */ + bfd_put_32 (output_bfd, 0x00002000, + plt->contents + h->plt.offset + 12); + /* b .s2 b2 */ + bfd_put_32 (output_bfd, 0x00080362, + plt->contents + h->plt.offset + 16); + /* nop 5 */ + bfd_put_32 (output_bfd, 0x00008000, + plt->contents + h->plt.offset + 20); + + /* Fill in the entry in the global offset table. */ + bfd_put_32 (output_bfd, + (plt->output_section->vma + plt->output_offset), + gotplt->contents + got_section_offset); + + /* Fill in the entry in the .rel.plt section. */ + rela.r_offset = (gotplt->output_section->vma + + gotplt->output_offset + + got_section_offset); + rela.r_info = ELF32_R_INFO (h->dynindx, R_C6000_JUMP_SLOT); + rela.r_addend = 0; + loc = relplt->contents + rela_offset; + bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); + + if (!h->def_regular) + { + /* Mark the symbol as undefined, rather than as defined in + the .plt section. */ + sym->st_shndx = SHN_UNDEF; + sym->st_value = 0; + } + } + + if (h->got.offset != (bfd_vma) -1) + { + asection *sgot; + asection *srela; + + /* This symbol has an entry in the global offset table. + Set it up. */ + + sgot = bfd_get_section_by_name (dynobj, ".got"); + srela = bfd_get_section_by_name (dynobj, ".rela.got"); + BFD_ASSERT (sgot != NULL && srela != NULL); + + /* If this is a -Bsymbolic link, and the symbol is defined + locally, we just want to emit a RELATIVE reloc. Likewise if + the symbol was forced to be local because of a version file. + The entry in the global offset table will already have been + initialized in the relocate_section function. */ + if (info->shared + && (info->symbolic + || h->dynindx == -1 || h->forced_local) && h->def_regular) + { + asection *s = h->root.u.def.section; + elf32_tic6x_make_got_dynreloc (output_bfd, htab, s, + h->got.offset & ~(bfd_vma) 1); + } + else + { + Elf_Internal_Rela outrel; + bfd_put_32 (output_bfd, (bfd_vma) 0, + sgot->contents + (h->got.offset & ~(bfd_vma) 1)); + outrel.r_offset = (sgot->output_section->vma + + sgot->output_offset + + (h->got.offset & ~(bfd_vma) 1)); + outrel.r_info = ELF32_R_INFO (h->dynindx, R_C6000_ABS32); + outrel.r_addend = 0; + + elf32_tic6x_install_rela (output_bfd, srela, &outrel); + } + } + + if (h->needs_copy) + { + Elf_Internal_Rela rel; + + /* This symbol needs a copy reloc. Set it up. */ + + if (h->dynindx == -1 + || (h->root.type != bfd_link_hash_defined + && h->root.type != bfd_link_hash_defweak) + || htab->srelbss == NULL) + abort (); + + rel.r_offset = (h->root.u.def.value + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); + rel.r_info = ELF32_R_INFO (h->dynindx, R_C6000_COPY); + rel.r_addend = 0; + + elf32_tic6x_install_rela (output_bfd, htab->srelbss, &rel); + } + + /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute. */ + if (strcmp (h->root.root.string, "_DYNAMIC") == 0 + || h == elf_hash_table (info)->hgot) + sym->st_shndx = SHN_ABS; + + return TRUE; +} + +/* Update the got entry reference counts for the section being removed. */ + +static bfd_boolean +elf32_tic6x_gc_sweep_hook (bfd *abfd, + struct bfd_link_info *info, + asection *sec, + const Elf_Internal_Rela *relocs) +{ + struct elf32_tic6x_link_hash_table *htab; + Elf_Internal_Shdr *symtab_hdr; + struct elf_link_hash_entry **sym_hashes; + bfd_signed_vma *local_got_refcounts; + const Elf_Internal_Rela *rel, *relend; + + if (info->relocatable) + return TRUE; + + htab = elf32_tic6x_hash_table (info); + if (htab == NULL) + return FALSE; + + elf_section_data (sec)->local_dynrel = NULL; + + symtab_hdr = &elf_symtab_hdr (abfd); + 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++) + { + unsigned long r_symndx; + unsigned int r_type; + struct elf_link_hash_entry *h = NULL; + + r_symndx = ELF32_R_SYM (rel->r_info); + if (r_symndx >= symtab_hdr->sh_info) + { + struct elf32_tic6x_link_hash_entry *eh; + struct elf_dyn_relocs **pp; + struct elf_dyn_relocs *p; + + 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; + eh = (struct elf32_tic6x_link_hash_entry *) h; + + for (pp = &eh->dyn_relocs; (p = *pp) != NULL; pp = &p->next) + if (p->sec == sec) + { + /* Everything must go for SEC. */ + *pp = p->next; + break; + } + } + + r_type = ELF32_R_TYPE (rel->r_info); + + switch (r_type) + { + case R_C6000_SBR_GOT_U15_W: + case R_C6000_SBR_GOT_L16_W: + case R_C6000_SBR_GOT_H16_W: + if (h != NULL) + { + if (h->got.refcount > 0) + h->got.refcount -= 1; + } + else if (local_got_refcounts != NULL) + { + if (local_got_refcounts[r_symndx] > 0) + local_got_refcounts[r_symndx] -= 1; + } + break; + + default: + break; + } + } + + 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. */ + +static bfd_boolean +elf32_tic6x_adjust_dynamic_symbol (struct bfd_link_info *info, + struct elf_link_hash_entry *h) +{ + struct elf32_tic6x_link_hash_table *htab; + bfd *dynobj; + asection *s; + + dynobj = elf_hash_table (info)->dynobj; + + /* Make sure we know what is going on here. */ + BFD_ASSERT (dynobj != NULL + && (h->needs_plt + || h->u.weakdef != NULL + || (h->def_dynamic && h->ref_regular && !h->def_regular))); + + /* If this is a function, put it in the procedure linkage table. We + will fill in the contents of the procedure linkage table later, + when we know the address of the .got section. */ + if (h->type == STT_FUNC + || h->needs_plt) + { + if (h->plt.refcount <= 0 + || SYMBOL_CALLS_LOCAL (info, h) + || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT + && h->root.type == bfd_link_hash_undefweak)) + { + /* This case can occur if we saw a PLT32 reloc in an input + file, but the symbol was never referred to by a dynamic + object, or if all references were garbage collected. In + such a case, we don't actually need to build a procedure + linkage table, and we can just do a PC32 reloc instead. */ + h->plt.offset = (bfd_vma) -1; + h->needs_plt = 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->u.weakdef != NULL) + { + BFD_ASSERT (h->u.weakdef->root.type == bfd_link_hash_defined + || h->u.weakdef->root.type == bfd_link_hash_defweak); + h->root.u.def.section = h->u.weakdef->root.u.def.section; + h->root.u.def.value = h->u.weakdef->root.u.def.value; + h->non_got_ref = h->u.weakdef->non_got_ref; + return TRUE; + } + + /* This is a reference to a symbol defined by a dynamic object which + is not a function. */ + + /* If we are creating a shared library, we must presume that the + only references to the symbol are via the global offset table. + For such cases we need not do anything here; the relocations will + be handled correctly by relocate_section. */ + if (info->shared) + return TRUE; + + /* If there are no references to this symbol that do not use the + GOT, we don't need to generate a copy reloc. */ + if (!h->non_got_ref) + return TRUE; + + /* If -z nocopyreloc was given, we won't generate them either. */ + if (info->nocopyreloc) + { + h->non_got_ref = 0; + return TRUE; + } + + htab = elf32_tic6x_hash_table (info); + if (htab == NULL) + return FALSE; + + if (h->size == 0) + { + (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"), + h->root.root.string); + return TRUE; + } + + /* We must allocate the symbol in our .dynbss section, which will + become part of the .bss section of the executable. There will be + an entry for this symbol in the .dynsym section. The dynamic + object will contain position independent code, so all references + from the dynamic object to this symbol will go through the global + offset table. The dynamic linker will use the .dynsym entry to + determine the address it must put in the global offset table, so + both the dynamic object and the regular object will refer to the + same memory location for the variable. */ + + /* We must generate a R_C6000_COPY reloc to tell the dynamic linker to + copy the initial value out of the dynamic object and into the + runtime process image. */ + if ((h->root.u.def.section->flags & SEC_ALLOC) != 0) + { + htab->srelbss->size += sizeof (Elf32_External_Rela); + h->needs_copy = 1; + } + + s = htab->sdynbss; + + return _bfd_elf_adjust_dynamic_copy (h, s); +} + +static bfd_boolean +elf32_tic6x_new_section_hook (bfd *abfd, asection *sec) +{ + bfd_boolean ret; + + ret = _bfd_elf_new_section_hook (abfd, sec); + sec->use_rela_p = elf32_tic6x_tdata (abfd)->use_rela_p; + + return ret; +} + +/* Return true if relocation REL against section SEC is a REL rather + than RELA relocation. RELOCS is the first relocation in the + section and ABFD is the bfd that contains SEC. */ + +static bfd_boolean +elf32_tic6x_rel_relocation_p (bfd *abfd, asection *sec, + const Elf_Internal_Rela *relocs, + const Elf_Internal_Rela *rel) +{ + Elf_Internal_Shdr *rel_hdr; + const struct elf_backend_data *bed; + + /* To determine which flavor of relocation this is, we depend on the + fact that the INPUT_SECTION's REL_HDR is read before RELA_HDR. */ + rel_hdr = elf_section_data (sec)->rel.hdr; + if (rel_hdr == NULL) + return FALSE; + bed = get_elf_backend_data (abfd); + return ((size_t) (rel - relocs) + < NUM_SHDR_ENTRIES (rel_hdr) * bed->s->int_rels_per_ext_rel); +} + +/* We need dynamic symbols for every section, since segments can + relocate independently. */ +static bfd_boolean +elf32_tic6x_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + asection *p) +{ + switch (elf_section_data (p)->this_hdr.sh_type) + { + case SHT_PROGBITS: + case SHT_NOBITS: + /* If sh_type is yet undecided, assume it could be + SHT_PROGBITS/SHT_NOBITS. */ + case SHT_NULL: + return FALSE; + + /* There shouldn't be section relative relocations + against any other section. */ + default: + return TRUE; + } +} + +static bfd_boolean +elf32_tic6x_relocate_section (bfd *output_bfd, + struct bfd_link_info *info, + bfd *input_bfd, + asection *input_section, + bfd_byte *contents, + Elf_Internal_Rela *relocs, + Elf_Internal_Sym *local_syms, + asection **local_sections) +{ + struct elf32_tic6x_link_hash_table *htab; + Elf_Internal_Shdr *symtab_hdr; + struct elf_link_hash_entry **sym_hashes; + bfd_vma *local_got_offsets; + Elf_Internal_Rela *rel; + Elf_Internal_Rela *relend; + bfd_boolean ok = TRUE; + + htab = elf32_tic6x_hash_table (info); + symtab_hdr = & elf_symtab_hdr (input_bfd); + sym_hashes = elf_sym_hashes (input_bfd); + local_got_offsets = elf_local_got_offsets (input_bfd); + + relend = relocs + input_section->reloc_count; + + for (rel = relocs; rel < relend; rel ++) + { + int r_type; + unsigned long r_symndx; + arelent bfd_reloc; + reloc_howto_type *howto; + Elf_Internal_Sym *sym; + asection *sec; + struct elf_link_hash_entry *h; + bfd_vma off, relocation; + bfd_boolean unresolved_reloc; + bfd_reloc_status_type r; + struct bfd_link_hash_entry *sbh; + bfd_boolean is_rel; + + r_type = ELF32_R_TYPE (rel->r_info); + r_symndx = ELF32_R_SYM (rel->r_info); + + is_rel = elf32_tic6x_rel_relocation_p (input_bfd, input_section, + relocs, rel); + + if (is_rel) + elf32_tic6x_info_to_howto_rel (input_bfd, &bfd_reloc, rel); + else + elf32_tic6x_info_to_howto (input_bfd, &bfd_reloc, rel); + howto = bfd_reloc.howto; + if (howto == NULL) + { + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + + h = NULL; + sym = NULL; + sec = NULL; + unresolved_reloc = FALSE; + + if (r_symndx < symtab_hdr->sh_info) + { + sym = local_syms + r_symndx; + sec = local_sections[r_symndx]; + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); + } + else + { + bfd_boolean warned; + + RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, + r_symndx, symtab_hdr, sym_hashes, + h, sec, relocation, + unresolved_reloc, warned); + } + + if (sec != NULL && elf_discarded_section (sec)) + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); + + if (info->relocatable) + { + if (is_rel + && sym != NULL + && ELF_ST_TYPE (sym->st_info) == STT_SECTION) + { + rel->r_addend = 0; + relocation = sec->output_offset + sym->st_value; + r = _bfd_relocate_contents (howto, input_bfd, relocation, + contents + rel->r_offset); + goto done_reloc; + } + continue; + } + + switch (r_type) + { + case R_C6000_NONE: + case R_C6000_ALIGN: + case R_C6000_FPHEAD: + case R_C6000_NOCMP: + /* No action needed. */ + continue; + + case R_C6000_PCR_S21: + /* A branch to an undefined weak symbol is turned into a + "b .s2 B3" instruction if the existing insn is of the + form "b .s2 symbol". */ + if (h ? h->root.type == bfd_link_hash_undefweak + && (htab->elf.splt == NULL || h->plt.offset == (bfd_vma) -1) + : r_symndx != STN_UNDEF && bfd_is_und_section (sec)) + { + unsigned long oldval; + oldval = bfd_get_32 (input_bfd, contents + rel->r_offset); + + if ((oldval & 0x7e) == 0x12) + { + oldval &= 0xF0000001; + bfd_put_32 (input_bfd, oldval | 0x000c0362, + contents + rel->r_offset); + r = bfd_reloc_ok; + goto done_reloc; + } + } + + case R_C6000_PCR_S12: + case R_C6000_PCR_S10: + case R_C6000_PCR_S7: + if (h != NULL + && h->plt.offset != (bfd_vma) -1 + && htab->elf.splt != NULL) + { + relocation = (htab->elf.splt->output_section->vma + + htab->elf.splt->output_offset + + h->plt.offset); + } + + /* Generic PC-relative handling produces a value relative to + the exact location of the relocation. Adjust it to be + relative to the start of the fetch packet instead. */ + relocation += (input_section->output_section->vma + + input_section->output_offset + + rel->r_offset) & 0x1f; + unresolved_reloc = FALSE; + break; + + case R_C6000_DSBT_INDEX: + relocation = elf32_tic6x_hash_table (info)->params.dsbt_index; + if (!info->shared || relocation != 0) + break; + + /* fall through */ + case R_C6000_ABS32: + case R_C6000_ABS16: + case R_C6000_ABS8: + case R_C6000_ABS_S16: + case R_C6000_ABS_L16: + case R_C6000_ABS_H16: + /* When generating a shared object or relocatable executable, these + relocations are copied into the output file to be resolved at + run time. */ + if ((info->shared || elf32_tic6x_using_dsbt (output_bfd)) + && (input_section->flags & SEC_ALLOC) + && (h == NULL + || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT + || h->root.type != bfd_link_hash_undefweak)) + { + Elf_Internal_Rela outrel; + bfd_boolean skip, relocate; + asection *sreloc; + + unresolved_reloc = FALSE; + + sreloc = elf_section_data (input_section)->sreloc; + BFD_ASSERT (sreloc != NULL && sreloc->contents != NULL); + + skip = FALSE; + relocate = FALSE; + + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = TRUE; + else if (outrel.r_offset == (bfd_vma) -2) + skip = TRUE, relocate = TRUE; + outrel.r_offset += (input_section->output_section->vma + + input_section->output_offset); + + if (skip) + memset (&outrel, 0, sizeof outrel); + else if (h != NULL + && h->dynindx != -1 + && (!info->shared + || !info->symbolic + || !h->def_regular)) + { + outrel.r_info = ELF32_R_INFO (h->dynindx, r_type); + outrel.r_addend = rel->r_addend; + } + else + { + long indx; + + outrel.r_addend = relocation + rel->r_addend; + + if (bfd_is_abs_section (sec)) + indx = 0; + else if (sec == NULL || sec->owner == NULL) + { + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + else + { + asection *osec; + + osec = sec->output_section; + indx = elf_section_data (osec)->dynindx; + outrel.r_addend -= osec->vma; + BFD_ASSERT (indx != 0); + } + + outrel.r_info = ELF32_R_INFO (indx, r_type); + } + + elf32_tic6x_install_rela (output_bfd, sreloc, &outrel); + + /* If this reloc is against an external symbol, we do not want to + fiddle with the addend. Otherwise, we need to include the symbol + value so that it becomes an addend for the dynamic reloc. */ + if (! relocate) + continue; + } + + /* Generic logic OK. */ + break; + + case R_C6000_SBR_U15_B: + case R_C6000_SBR_U15_H: + case R_C6000_SBR_U15_W: + case R_C6000_SBR_S16: + case R_C6000_SBR_L16_B: + case R_C6000_SBR_L16_H: + case R_C6000_SBR_L16_W: + case R_C6000_SBR_H16_B: + case R_C6000_SBR_H16_H: + case R_C6000_SBR_H16_W: + sbh = bfd_link_hash_lookup (info->hash, "__c6xabi_DSBT_BASE", + FALSE, FALSE, TRUE); + if (sbh != NULL + && (sbh->type == bfd_link_hash_defined + || sbh->type == bfd_link_hash_defweak)) + { + if (h ? (h->root.type == bfd_link_hash_undefweak + && (htab->elf.splt == NULL + || h->plt.offset == (bfd_vma) -1)) + : r_symndx != STN_UNDEF && bfd_is_und_section (sec)) + relocation = 0; + else + relocation -= (sbh->u.def.value + + sbh->u.def.section->output_section->vma + + sbh->u.def.section->output_offset); + } + else + { + (*_bfd_error_handler) (_("%B: SB-relative relocation but " + "__c6xabi_DSBT_BASE not defined"), + input_bfd); + ok = FALSE; + continue; + } + break; + + case R_C6000_SBR_GOT_U15_W: + case R_C6000_SBR_GOT_L16_W: + case R_C6000_SBR_GOT_H16_W: + /* Relocation is to the entry for this symbol in the global + offset table. */ + if (htab->elf.sgot == NULL) + abort (); + + if (h != NULL) + { + bfd_boolean dyn; + + off = h->got.offset; + dyn = htab->elf.dynamic_sections_created; + if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h) + || (info->shared + && SYMBOL_REFERENCES_LOCAL (info, h)) + || (ELF_ST_VISIBILITY (h->other) + && h->root.type == bfd_link_hash_undefweak)) + { + /* This is actually a static link, or it is a + -Bsymbolic link and the symbol is defined + locally, or the symbol was forced to be local + because of a version file. We must initialize + this entry in the global offset table. Since the + offset must always be a multiple of 4, we use the + least significant bit to record whether we have + initialized it already. + + When doing a dynamic link, we create a .rel.got + relocation entry to initialize the value. This + is done in the finish_dynamic_symbol routine. */ + if ((off & 1) != 0) + off &= ~1; + else + { + bfd_put_32 (output_bfd, relocation, + htab->elf.sgot->contents + off); + h->got.offset |= 1; + + if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, + h) + && !(ELF_ST_VISIBILITY (h->other) + && h->root.type == bfd_link_hash_undefweak)) + elf32_tic6x_make_got_dynreloc (output_bfd, htab, sec, + off); + } + } + else + unresolved_reloc = FALSE; + } + else + { + if (local_got_offsets == NULL) + abort (); + + off = local_got_offsets[r_symndx]; + + /* The offset must always be a multiple of 4. We use + the least significant bit to record whether we have + already generated the necessary reloc. */ + if ((off & 1) != 0) + off &= ~1; + else + { + bfd_put_32 (output_bfd, relocation, + htab->elf.sgot->contents + off); + + if (info->shared || elf32_tic6x_using_dsbt (output_bfd)) + elf32_tic6x_make_got_dynreloc (output_bfd, htab, sec, off); + + local_got_offsets[r_symndx] |= 1; + } + } + + if (off >= (bfd_vma) -2) + abort (); + + if (htab->dsbt) + relocation = (htab->elf.sgot->output_section->vma + + htab->elf.sgot->output_offset + off + - htab->dsbt->output_section->vma + - htab->dsbt->output_offset); + else + relocation = (htab->elf.sgot->output_section->vma + + htab->elf.sgot->output_offset + off + - htab->elf.sgotplt->output_section->vma + - htab->elf.sgotplt->output_offset); + + if (rel->r_addend != 0) + { + /* We can't do anything for a relocation which is against + a symbol *plus offset*. GOT holds relocations for + symbols. Make this an error; the compiler isn't + allowed to pass us these kinds of things. */ + if (h == NULL) + (*_bfd_error_handler) + (_("%B, section %A: relocation %s with non-zero addend %d" + " against local symbol"), + input_bfd, + input_section, + elf32_tic6x_howto_table[r_type].name, + rel->r_addend); + else + (*_bfd_error_handler) + (_("%B, section %A: relocation %s with non-zero addend %d" + " against symbol `%s'"), + input_bfd, + input_section, + elf32_tic6x_howto_table[r_type].name, + rel->r_addend, + h->root.root.string[0] != '\0' ? h->root.root.string + : _("[whose name is lost]")); + + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + break; + + case R_C6000_PREL31: + /* Shared libraries and exception handling support not + implemented. */ + (*_bfd_error_handler) (_("%B: relocation type %d not implemented"), + input_bfd, r_type); + ok = FALSE; + continue; + + case R_C6000_COPY: + /* Invalid in relocatable object. */ + default: + /* Unknown relocation. */ + (*_bfd_error_handler) (_("%B: invalid relocation type %d"), + input_bfd, r_type); + ok = FALSE; + continue; + } + + r = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, + relocation, rel->r_addend); + + done_reloc: + if (r == bfd_reloc_ok + && howto->complain_on_overflow == complain_overflow_bitfield) + { + /* Generic overflow handling accepts cases the ABI says + should be rejected for R_C6000_ABS16 and + R_C6000_ABS8. */ + bfd_vma value = (relocation + rel->r_addend) & 0xffffffff; + bfd_vma sbit = 1 << (howto->bitsize - 1); + bfd_vma sbits = (-(bfd_vma) sbit) & 0xffffffff; + bfd_vma value_sbits = value & sbits; + + if (value_sbits != 0 + && value_sbits != sbit + && value_sbits != sbits) + r = bfd_reloc_overflow; + } + + if (r != bfd_reloc_ok) + { + const char *name; + const char *error_message; + + if (h != NULL) + name = h->root.root.string; + else + { + name = bfd_elf_string_from_elf_section (input_bfd, + symtab_hdr->sh_link, + sym->st_name); + if (name == NULL) + return FALSE; + if (*name == '\0') + name = bfd_section_name (input_bfd, sec); + } + + switch (r) + { + case bfd_reloc_overflow: + /* If the overflowing reloc was to an undefined symbol, + we have already printed one error message and there + is no point complaining again. */ + if ((! h || + h->root.type != bfd_link_hash_undefined) + && (!((*info->callbacks->reloc_overflow) + (info, (h ? &h->root : NULL), name, howto->name, + (bfd_vma) 0, input_bfd, input_section, + rel->r_offset)))) + return FALSE; + break; + + case bfd_reloc_undefined: + if (!((*info->callbacks->undefined_symbol) + (info, name, input_bfd, input_section, + rel->r_offset, TRUE))) + return FALSE; + break; + + case bfd_reloc_outofrange: + error_message = _("out of range"); + goto common_error; + + case bfd_reloc_notsupported: + error_message = _("unsupported relocation"); + goto common_error; + + case bfd_reloc_dangerous: + error_message = _("dangerous relocation"); + goto common_error; + + default: + error_message = _("unknown error"); + /* Fall through. */ + + common_error: + BFD_ASSERT (error_message != NULL); + if (!((*info->callbacks->reloc_dangerous) + (info, error_message, input_bfd, input_section, + rel->r_offset))) + return FALSE; + break; + } + } + } + + return ok; +} + + +/* 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. */ + +static bfd_boolean +elf32_tic6x_check_relocs (bfd *abfd, struct bfd_link_info *info, + asection *sec, const Elf_Internal_Rela *relocs) +{ + struct elf32_tic6x_link_hash_table *htab; + Elf_Internal_Shdr *symtab_hdr; + struct elf_link_hash_entry **sym_hashes; + const Elf_Internal_Rela *rel; + const Elf_Internal_Rela *rel_end; + asection *sreloc; + + if (info->relocatable) + return TRUE; + + htab = elf32_tic6x_hash_table (info); + symtab_hdr = &elf_symtab_hdr (abfd); + sym_hashes = elf_sym_hashes (abfd); + + /* Create dynamic sections for relocatable executables so that we can + copy relocations. */ + if (elf32_tic6x_using_dsbt (abfd) + && ! htab->elf.dynamic_sections_created) + { + if (! _bfd_elf_link_create_dynamic_sections (abfd, info)) + return FALSE; + } + + sreloc = NULL; + + rel_end = relocs + sec->reloc_count; + for (rel = relocs; rel < rel_end; rel++) + { + unsigned int r_type; + unsigned long r_symndx; + struct elf_link_hash_entry *h; + Elf_Internal_Sym *isym; + + r_symndx = ELF32_R_SYM (rel->r_info); + r_type = ELF32_R_TYPE (rel->r_info); + + if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr)) + { + (*_bfd_error_handler) (_("%B: bad symbol index: %d"), + abfd, + r_symndx); + return FALSE; + } + + if (r_symndx < symtab_hdr->sh_info) + { + /* A local symbol. */ + isym = bfd_sym_from_r_symndx (&htab->sym_cache, + abfd, r_symndx); + if (isym == NULL) + return FALSE; + h = NULL; + } + else + { + isym = NULL; + 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 (r_type) + { + case R_C6000_PCR_S21: + /* This symbol requires a procedure linkage table entry. We + actually build the entry in adjust_dynamic_symbol, + because this might be a case of linking PIC code which is + never referenced by a dynamic object, in which case we + don't need to generate a procedure linkage table entry + after all. */ + + /* If this is a local symbol, we resolve it directly without + creating a procedure linkage table entry. */ + if (h == NULL) + continue; + + h->needs_plt = 1; + h->plt.refcount += 1; + break; + + case R_C6000_SBR_GOT_U15_W: + case R_C6000_SBR_GOT_L16_W: + case R_C6000_SBR_GOT_H16_W: + /* This symbol requires a global offset table entry. */ + if (h != NULL) + { + h->got.refcount += 1; + } + else + { + bfd_signed_vma *local_got_refcounts; + + /* This is a global offset table entry for a local symbol. */ + local_got_refcounts = elf_local_got_refcounts (abfd); + if (local_got_refcounts == NULL) + { + bfd_size_type size; + + size = symtab_hdr->sh_info; + size *= (sizeof (bfd_signed_vma) + + sizeof (bfd_vma) + sizeof(char)); + local_got_refcounts = bfd_zalloc (abfd, size); + if (local_got_refcounts == NULL) + return FALSE; + elf_local_got_refcounts (abfd) = local_got_refcounts; + } + local_got_refcounts[r_symndx] += 1; + } + + if (htab->elf.sgot == NULL) + { + if (htab->elf.dynobj == NULL) + htab->elf.dynobj = abfd; + if (!_bfd_elf_create_got_section (htab->elf.dynobj, info)) + return FALSE; + } + break; + + case R_C6000_DSBT_INDEX: + /* We'd like to check for nonzero dsbt_index here, but it's + set up only after check_relocs is called. Instead, we + store the number of R_C6000_DSBT_INDEX relocs in the + pc_count field, and potentially discard the extra space + in elf32_tic6x_allocate_dynrelocs. */ + if (!info->shared) + break; + + /* fall through */ + case R_C6000_ABS32: + case R_C6000_ABS16: + case R_C6000_ABS8: + case R_C6000_ABS_S16: + case R_C6000_ABS_L16: + case R_C6000_ABS_H16: + /* If we are creating a shared library, and this is a reloc + against a global symbol, or a non PC relative reloc + against a local symbol, then we need to copy the reloc + into the shared library. However, if we are linking with + -Bsymbolic, we do not need to copy a reloc against a + global symbol which is defined in an object we are + including in the link (i.e., DEF_REGULAR is set). At + this point we have not seen all the input files, so it is + possible that DEF_REGULAR is not set now but will be set + later (it is never cleared). In case of a weak definition, + DEF_REGULAR may be cleared later by a strong definition in + a shared library. We account for that possibility below by + storing information in the relocs_copied field of the hash + table entry. A similar situation occurs when creating + shared libraries and symbol visibility changes render the + symbol local. + + If on the other hand, we are creating an executable, we + may need to keep relocations for symbols satisfied by a + dynamic library if we manage to avoid copy relocs for the + symbol. */ + if ((info->shared || elf32_tic6x_using_dsbt (abfd)) + && (sec->flags & SEC_ALLOC) != 0) + { + struct elf_dyn_relocs *p; + struct elf_dyn_relocs **head; + + /* We must copy these reloc types into the output file. + Create a reloc section in dynobj and make room for + this reloc. */ + if (sreloc == NULL) + { + if (htab->elf.dynobj == NULL) + htab->elf.dynobj = abfd; + + sreloc = _bfd_elf_make_dynamic_reloc_section + (sec, htab->elf.dynobj, 2, abfd, /*rela? */ TRUE); + + if (sreloc == NULL) + return FALSE; + } + + /* If this is a global symbol, we count the number of + relocations we need for this symbol. */ + if (h != NULL) + { + head = &((struct elf32_tic6x_link_hash_entry *) h)->dyn_relocs; + } + else + { + /* Track dynamic relocs needed for local syms too. + We really need local syms available to do this + easily. Oh well. */ + void **vpp; + asection *s; + + s = bfd_section_from_elf_index (abfd, isym->st_shndx); + if (s == NULL) + s = sec; + + vpp = &elf_section_data (s)->local_dynrel; + head = (struct elf_dyn_relocs **)vpp; + } + + p = *head; + if (p == NULL || p->sec != sec) + { + bfd_size_type amt = sizeof *p; + p = bfd_alloc (htab->elf.dynobj, amt); + if (p == NULL) + return FALSE; + p->next = *head; + *head = p; + p->sec = sec; + p->count = 0; + } + + p->count += 1; + if (r_type == R_C6000_DSBT_INDEX) + p->pc_count += 1; + } + break; + + case R_C6000_SBR_U15_B: + case R_C6000_SBR_U15_H: + case R_C6000_SBR_U15_W: + case R_C6000_SBR_S16: + case R_C6000_SBR_L16_B: + case R_C6000_SBR_L16_H: + case R_C6000_SBR_L16_W: + case R_C6000_SBR_H16_B: + case R_C6000_SBR_H16_H: + case R_C6000_SBR_H16_W: + if (h != NULL && info->executable) + { + /* For B14-relative addresses, we might need a copy + reloc. */ + h->non_got_ref = 1; + } + break; + + default: + break; + } + } + + return TRUE; +} + +static bfd_boolean +elf32_tic6x_add_symbol_hook (bfd *abfd, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + Elf_Internal_Sym *sym, + const char **namep ATTRIBUTE_UNUSED, + flagword *flagsp ATTRIBUTE_UNUSED, + asection **secp, + bfd_vma *valp) +{ + switch (sym->st_shndx) + { + case SHN_TIC6X_SCOMMON: + *secp = bfd_make_section_old_way (abfd, ".scommon"); + (*secp)->flags |= SEC_IS_COMMON; + *valp = sym->st_size; + bfd_set_section_alignment (abfd, *secp, bfd_log2 (sym->st_value)); + break; + } + + return TRUE; +} + +static void +elf32_tic6x_symbol_processing (bfd *abfd ATTRIBUTE_UNUSED, asymbol *asym) +{ + elf_symbol_type *elfsym; + + elfsym = (elf_symbol_type *) asym; + switch (elfsym->internal_elf_sym.st_shndx) + { + case SHN_TIC6X_SCOMMON: + if (tic6x_elf_scom_section.name == NULL) + { + /* Initialize the small common section. */ + tic6x_elf_scom_section.name = ".scommon"; + tic6x_elf_scom_section.flags = SEC_IS_COMMON; + tic6x_elf_scom_section.output_section = &tic6x_elf_scom_section; + tic6x_elf_scom_section.symbol = &tic6x_elf_scom_symbol; + tic6x_elf_scom_section.symbol_ptr_ptr = &tic6x_elf_scom_symbol_ptr; + tic6x_elf_scom_symbol.name = ".scommon"; + tic6x_elf_scom_symbol.flags = BSF_SECTION_SYM; + tic6x_elf_scom_symbol.section = &tic6x_elf_scom_section; + tic6x_elf_scom_symbol_ptr = &tic6x_elf_scom_symbol; + } + asym->section = &tic6x_elf_scom_section; + asym->value = elfsym->internal_elf_sym.st_size; + break; + } +} + +static int +elf32_tic6x_link_output_symbol_hook (struct bfd_link_info *info ATTRIBUTE_UNUSED, + const char *name ATTRIBUTE_UNUSED, + Elf_Internal_Sym *sym, + asection *input_sec, + struct elf_link_hash_entry *h ATTRIBUTE_UNUSED) +{ + /* If we see a common symbol, which implies a relocatable link, then + if a symbol was small common in an input file, mark it as small + common in the output file. */ + if (sym->st_shndx == SHN_COMMON && strcmp (input_sec->name, ".scommon") == 0) + sym->st_shndx = SHN_TIC6X_SCOMMON; + + return 1; +} + +static bfd_boolean +elf32_tic6x_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED, + asection *sec, + int *retval) +{ + if (strcmp (bfd_get_section_name (abfd, sec), ".scommon") == 0) + { + *retval = SHN_TIC6X_SCOMMON; + return TRUE; + } + + return FALSE; +} + +/* Allocate space in .plt, .got and associated reloc sections for + dynamic relocs. */ + +static bfd_boolean +elf32_tic6x_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) +{ + struct bfd_link_info *info; + struct elf32_tic6x_link_hash_table *htab; + struct elf32_tic6x_link_hash_entry *eh; + struct elf_dyn_relocs *p; + + if (h->root.type == bfd_link_hash_indirect) + return TRUE; + + if (h->root.type == bfd_link_hash_warning) + /* When warning symbols are created, they **replace** the "real" + entry in the hash table, thus we never get to see the real + symbol in a hash traversal. So look at it now. */ + h = (struct elf_link_hash_entry *) h->root.u.i.link; + eh = (struct elf32_tic6x_link_hash_entry *) h; + + info = (struct bfd_link_info *) inf; + htab = elf32_tic6x_hash_table (info); + + if (htab->elf.dynamic_sections_created && h->plt.refcount > 0) + { + /* Make sure this symbol is output as a dynamic symbol. + Undefined weak syms won't yet be marked as dynamic. */ + if (h->dynindx == -1 && !h->forced_local) + { + if (! bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + if (info->shared + || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h)) + { + asection *s = htab->elf.splt; + + /* If this is the first .plt entry, make room for the special + first entry. */ + if (s->size == 0) + s->size += PLT_ENTRY_SIZE; + + h->plt.offset = s->size; + + /* If this symbol is not defined in a regular file, and we are + not generating a shared library, then set the symbol to this + location in the .plt. This is required to make function + pointers compare as equal between the normal executable and + the shared library. */ + if (! info->shared && !h->def_regular) + { + h->root.u.def.section = s; + h->root.u.def.value = h->plt.offset; + } + + /* Make room for this entry. */ + s->size += PLT_ENTRY_SIZE; + /* We also need to make an entry in the .got.plt section, which + will be placed in the .got section by the linker script. */ + htab->elf.sgotplt->size += 4; + /* We also need to make an entry in the .rel.plt section. */ + htab->elf.srelplt->size += sizeof (Elf32_External_Rela); + } + else + { + h->plt.offset = (bfd_vma) -1; + h->needs_plt = 0; + } + } + else + { + h->plt.offset = (bfd_vma) -1; + h->needs_plt = 0; + } + + if (h->got.refcount > 0) + { + asection *s; + + /* 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->forced_local) + { + if (! bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + } + + s = htab->elf.sgot; + h->got.offset = s->size; + s->size += 4; + + if (!(ELF_ST_VISIBILITY (h->other) + && h->root.type == bfd_link_hash_undefweak)) + htab->elf.srelgot->size += sizeof (Elf32_External_Rela); + } + else + h->got.offset = (bfd_vma) -1; + + if (eh->dyn_relocs == NULL) + return TRUE; + + /* Discard relocs on undefined weak syms with non-default + visibility. */ + if (info->shared || elf32_tic6x_using_dsbt (htab->obfd)) + { + /* We use the pc_count field to hold the number of + R_C6000_DSBT_INDEX relocs. */ + if (htab->params.dsbt_index != 0) + { + struct elf_dyn_relocs **pp; + + for (pp = &eh->dyn_relocs; (p = *pp) != NULL; ) + { + p->count -= p->pc_count; + p->pc_count = 0; + if (p->count == 0) + *pp = p->next; + else + pp = &p->next; + } + } + + if (eh->dyn_relocs != NULL + && h->root.type == bfd_link_hash_undefweak) + { + if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT) + eh->dyn_relocs = NULL; + + /* Make sure undefined weak symbols are output as a dynamic + symbol in PIEs. */ + else if (h->dynindx == -1 + && !h->forced_local) + { + if (! bfd_elf_link_record_dynamic_symbol (info, h)) + return FALSE; + } + } + } + + /* Finally, allocate space. */ + for (p = eh->dyn_relocs; p != NULL; p = p->next) + { + asection *sreloc; + + sreloc = elf_section_data (p->sec)->sreloc; + + BFD_ASSERT (sreloc != NULL); + sreloc->size += p->count * sizeof (Elf32_External_Rela); + } + + return TRUE; +} + +/* Find any dynamic relocs that apply to read-only sections. */ + +static bfd_boolean +elf32_tic6x_readonly_dynrelocs (struct elf_link_hash_entry *h, void *inf) +{ + struct elf32_tic6x_link_hash_entry *eh; + struct elf_dyn_relocs *p; + + if (h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + eh = (struct elf32_tic6x_link_hash_entry *) h; + for (p = eh->dyn_relocs; p != NULL; p = p->next) + { + asection *s = p->sec->output_section; + + if (s != NULL && (s->flags & SEC_READONLY) != 0) + { + struct bfd_link_info *info = (struct bfd_link_info *) inf; + + info->flags |= DF_TEXTREL; + + /* Not an error, just cut short the traversal. */ + return FALSE; + } + } + return TRUE; +} + +/* Set the sizes of the dynamic sections. */ + +static bfd_boolean +elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info) +{ + struct elf32_tic6x_link_hash_table *htab; + bfd *dynobj; + asection *s; + bfd_boolean relocs; + bfd *ibfd; + + htab = elf32_tic6x_hash_table (info); + dynobj = htab->elf.dynobj; + if (dynobj == NULL) + abort (); + + if (htab->elf.dynamic_sections_created) + { + /* Set the contents of the .interp section to the interpreter. */ + if (info->executable) + { + s = bfd_get_section_by_name (dynobj, ".interp"); + if (s == NULL) + abort (); + s->size = sizeof ELF_DYNAMIC_INTERPRETER; + s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER; + } + } + + /* Set up .got offsets for local syms, and space for local dynamic + relocs. */ + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + { + bfd_signed_vma *local_got; + bfd_signed_vma *end_local_got; + char *local_tls_type; + bfd_vma *local_tlsdesc_gotent; + bfd_size_type locsymcount; + Elf_Internal_Shdr *symtab_hdr; + asection *srel; + + for (s = ibfd->sections; s != NULL; s = s->next) + { + struct elf_dyn_relocs *p; + + for (p = ((struct elf_dyn_relocs *) + elf_section_data (s)->local_dynrel); + p != NULL; + p = p->next) + { + if (!bfd_is_abs_section (p->sec) + && bfd_is_abs_section (p->sec->output_section)) + { + /* Input section has been discarded, either because + it is a copy of a linkonce section or due to + linker script /DISCARD/, so we'll be discarding + the relocs too. */ + } + else if (p->count != 0) + { + srel = elf_section_data (p->sec)->sreloc; + srel->size += p->count * sizeof (Elf32_External_Rela); + if ((p->sec->output_section->flags & SEC_READONLY) != 0) + info->flags |= DF_TEXTREL; + } + } + } + + local_got = elf_local_got_refcounts (ibfd); + if (!local_got) + continue; + + symtab_hdr = &elf_symtab_hdr (ibfd); + locsymcount = symtab_hdr->sh_info; + end_local_got = local_got + locsymcount; + s = htab->elf.sgot; + srel = htab->elf.srelgot; + for (; local_got < end_local_got; + ++local_got, ++local_tls_type, ++local_tlsdesc_gotent) + { + if (*local_got > 0) + { + *local_got = s->size; + s->size += 4; + + if (info->shared || elf32_tic6x_using_dsbt (output_bfd)) + { + srel->size += sizeof (Elf32_External_Rela); + } + } + else + *local_got = (bfd_vma) -1; + } + } + + /* Allocate global sym .plt and .got entries, and space for global + sym dynamic relocs. */ + elf_link_hash_traverse (&htab->elf, elf32_tic6x_allocate_dynrelocs, info); + + /* We now have determined the sizes of the various dynamic sections. + Allocate memory for them. */ + relocs = FALSE; + for (s = dynobj->sections; s != NULL; s = s->next) + { + bfd_boolean strip_section = TRUE; + + if ((s->flags & SEC_LINKER_CREATED) == 0) + continue; + + if (s == htab->dsbt) + s->size = 4 * htab->params.dsbt_size; + else if (s == htab->elf.splt + || s == htab->elf.sgot + || s == htab->elf.sgotplt + || s == htab->sdynbss) + { + /* Strip this section if we don't need it; see the + comment below. */ + /* We'd like to strip these sections if they aren't needed, but if + we've exported dynamic symbols from them we must leave them. + It's too late to tell BFD to get rid of the symbols. */ + + if (htab->elf.hplt != NULL) + strip_section = FALSE; + + /* Round up the size of the PLT section to a multiple of 32. */ + if (s == htab->elf.splt && s->size > 0) + s->size = (s->size + 31) & ~(bfd_vma)31; + } + else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela")) + { + if (s->size != 0 + && s != htab->elf.srelplt) + relocs = TRUE; + + /* We use the reloc_count field as a counter if we need + to copy relocs into the output file. */ + s->reloc_count = 0; + } + else + { + /* It's not one of our sections, so don't allocate space. */ + continue; + } + + if (s->size == 0) + { + /* If we don't need this section, strip it from the + output file. This is mostly to handle .rel.bss and + .rel.plt. We must create both sections in + create_dynamic_sections, because they must be created + before the linker maps input sections to output + sections. The linker does that before + adjust_dynamic_symbol is called, and it is that + function which decides whether anything needs to go + into these sections. */ + if (strip_section) + s->flags |= SEC_EXCLUDE; + continue; + } + + if ((s->flags & SEC_HAS_CONTENTS) == 0) + continue; + + /* Allocate memory for the section contents. We use bfd_zalloc + here in case unused entries are not reclaimed before the + section's contents are written out. This should not happen, + but this way if it does, we get a R_C6000_NONE reloc instead + of garbage. */ + s->contents = bfd_zalloc (dynobj, s->size); + if (s->contents == NULL) + return FALSE; + } + + if (htab->elf.dynamic_sections_created) + { + /* Add some entries to the .dynamic section. We fill in the + values later, in elf32_tic6x_finish_dynamic_sections, but we + must add the entries now so that we get the correct size for + the .dynamic section. The DT_DEBUG entry is filled in by the + dynamic linker and used by the debugger. */ +#define add_dynamic_entry(TAG, VAL) \ + _bfd_elf_add_dynamic_entry (info, TAG, VAL) + + if (info->executable) + { + if (!add_dynamic_entry (DT_DEBUG, 0)) + return FALSE; + } + + if (!add_dynamic_entry (DT_C6000_DSBT_BASE, 0) + || !add_dynamic_entry (DT_C6000_DSBT_SIZE, htab->params.dsbt_size) + || !add_dynamic_entry (DT_C6000_DSBT_INDEX, + htab->params.dsbt_index)) + return FALSE; + + if (htab->elf.splt->size != 0) + { + if (!add_dynamic_entry (DT_PLTGOT, 0) + || !add_dynamic_entry (DT_PLTRELSZ, 0) + || !add_dynamic_entry (DT_PLTREL, DT_RELA) + || !add_dynamic_entry (DT_JMPREL, 0)) + return FALSE; + } + + if (relocs) + { + if (!add_dynamic_entry (DT_RELA, 0) + || !add_dynamic_entry (DT_RELASZ, 0) + || !add_dynamic_entry (DT_RELAENT, sizeof (Elf32_External_Rela))) + return FALSE; + + /* If any dynamic relocs apply to a read-only section, + then we need a DT_TEXTREL entry. */ + if ((info->flags & DF_TEXTREL) == 0) + elf_link_hash_traverse (&htab->elf, + elf32_tic6x_readonly_dynrelocs, info); + + if ((info->flags & DF_TEXTREL) != 0) + { + if (!add_dynamic_entry (DT_TEXTREL, 0)) + return FALSE; + } + } + } +#undef add_dynamic_entry + + return TRUE; +} + +/* This function is called after all the input files have been read, + and the input sections have been assigned to output sections. */ + +static bfd_boolean +elf32_tic6x_always_size_sections (bfd *output_bfd, struct bfd_link_info *info) +{ + if (elf32_tic6x_using_dsbt (output_bfd) && !info->relocatable) + { + struct elf_link_hash_entry *h; + + /* Force a PT_GNU_STACK segment to be created. */ + if (! elf_tdata (output_bfd)->stack_flags) + elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X; + + /* Define __stacksize if it's not defined yet. */ + h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize", + FALSE, FALSE, FALSE); + if (! h || h->root.type != bfd_link_hash_defined + || h->type != STT_OBJECT + || !h->def_regular) + { + struct bfd_link_hash_entry *bh = NULL; + + if (!(_bfd_generic_link_add_one_symbol + (info, output_bfd, "__stacksize", + BSF_GLOBAL, bfd_abs_section_ptr, DEFAULT_STACK_SIZE, + (const char *) NULL, FALSE, + get_elf_backend_data (output_bfd)->collect, &bh))) + return FALSE; + + h = (struct elf_link_hash_entry *) bh; + h->def_regular = 1; + h->type = STT_OBJECT; + } + } + return TRUE; +} + +static bfd_boolean +elf32_tic6x_modify_program_headers (bfd *output_bfd, + struct bfd_link_info *info) +{ + struct elf_obj_tdata *tdata = elf_tdata (output_bfd); + struct elf_segment_map *m; + Elf_Internal_Phdr *p; + + /* objcopy and strip preserve what's already there using + elf32_tic6x_copy_private_bfd_data (). */ + if (! info) + return TRUE; + + for (p = tdata->phdr, m = tdata->segment_map; m != NULL; m = m->next, p++) + if (m->p_type == PT_GNU_STACK) + break; + + if (m) + { + struct elf_link_hash_entry *h; + + /* Obtain the pointer to the __stacksize symbol. */ + h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize", + FALSE, FALSE, FALSE); + if (h) + { + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + BFD_ASSERT (h->root.type == bfd_link_hash_defined); + } + + /* Set the header p_memsz from the symbol value. We + intentionally ignore the symbol section. */ + if (h && h->root.type == bfd_link_hash_defined) + p->p_memsz = h->root.u.def.value; + else + p->p_memsz = DEFAULT_STACK_SIZE; + + p->p_align = 8; + } + + return TRUE; +} + +static bfd_boolean +elf32_tic6x_finish_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info) +{ + struct elf32_tic6x_link_hash_table *htab; + bfd *dynobj; + asection *sdyn; + + htab = elf32_tic6x_hash_table (info); + dynobj = htab->elf.dynobj; + sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); + + if (elf_hash_table (info)->dynamic_sections_created) + { + Elf32_External_Dyn * dyncon; + Elf32_External_Dyn * dynconend; + + BFD_ASSERT (sdyn != NULL); + + dyncon = (Elf32_External_Dyn *) sdyn->contents; + dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size); + + for (; dyncon < dynconend; dyncon++) + { + Elf_Internal_Dyn dyn; + asection *s; + + bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn); + + switch (dyn.d_tag) + { + default: + break; + + case DT_C6000_DSBT_BASE: + s = htab->dsbt; + dyn.d_un.d_ptr = (s->output_section->vma + s->output_offset); + break; + + case DT_PLTGOT: + s = htab->elf.sgotplt; + dyn.d_un.d_ptr = s->output_section->vma + s->output_offset; + break; + + case DT_JMPREL: + s = htab->elf.srelplt; + dyn.d_un.d_ptr = s->output_section->vma + s->output_offset; + break; + + case DT_PLTRELSZ: + s = htab->elf.srelplt; + dyn.d_un.d_val = s->size; + break; + } + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + } + + /* Fill in the first entry in the procedure linkage table. */ + if (htab->elf.splt && htab->elf.splt->size > 0) + { + bfd_vma got_offs = (htab->elf.sgotplt->output_section->vma + + htab->elf.sgotplt->output_offset + - htab->dsbt->output_section->vma + - htab->dsbt->output_offset) / 4; + + /* ldw .D2T2 *+b14[$GOT(0)],b2 */ + bfd_put_32 (output_bfd, got_offs << 8 | 0x0100006e, + htab->elf.splt->contents); + /* ldw .D2T2 *+b14[$GOT(4)],b1 */ + bfd_put_32 (output_bfd, (got_offs + 1) << 8 | 0x0080006e, + htab->elf.splt->contents + 4); + /* nop 3 */ + bfd_put_32 (output_bfd, 0x00004000, + htab->elf.splt->contents + 8); + /* b .s2 b2 */ + bfd_put_32 (output_bfd, 0x00080362, + htab->elf.splt->contents + 12); + /* nop 5 */ + bfd_put_32 (output_bfd, 0x00008000, + htab->elf.splt->contents + 16); + + elf_section_data (htab->elf.splt->output_section) + ->this_hdr.sh_entsize = PLT_ENTRY_SIZE; + } + } + + return TRUE; +} + +/* Return address for Ith PLT stub in section PLT, for relocation REL + or (bfd_vma) -1 if it should not be included. */ + +static bfd_vma +elf32_tic6x_plt_sym_val (bfd_vma i, const asection *plt, + const arelent *rel ATTRIBUTE_UNUSED) +{ + return plt->vma + (i + 1) * PLT_ENTRY_SIZE; +} + +static int +elf32_tic6x_obj_attrs_arg_type (int tag) +{ + if (tag == Tag_ABI_compatibility) + return ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL; + else if (tag & 1) + return ATTR_TYPE_FLAG_STR_VAL; + else + return ATTR_TYPE_FLAG_INT_VAL; +} + +static int +elf32_tic6x_obj_attrs_order (int num) +{ + if (num == LEAST_KNOWN_OBJ_ATTRIBUTE) + return Tag_ABI_conformance; + if ((num - 1) < Tag_ABI_conformance) + return num - 1; + return num; +} + +static bfd_boolean +elf32_tic6x_obj_attrs_handle_unknown (bfd *abfd, int tag) +{ + if ((tag & 127) < 64) + { + _bfd_error_handler + (_("%B: error: unknown mandatory EABI object attribute %d"), + abfd, tag); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + else + { + _bfd_error_handler + (_("%B: warning: unknown EABI object attribute %d"), + abfd, tag); + return TRUE; + } +} + +/* Merge the Tag_ISA attribute values ARCH1 and ARCH2 + and return the merged value. At present, all merges succeed, so no + return value for errors is defined. */ + +int +elf32_tic6x_merge_arch_attributes (int arch1, int arch2) +{ + int min_arch, max_arch; + + min_arch = (arch1 < arch2 ? arch1 : arch2); + max_arch = (arch1 > arch2 ? arch1 : arch2); + + /* In most cases, the numerically greatest value is the correct + merged value, but merging C64 and C67 results in C674X. */ + if ((min_arch == C6XABI_Tag_ISA_C67X + || min_arch == C6XABI_Tag_ISA_C67XP) + && (max_arch == C6XABI_Tag_ISA_C64X + || max_arch == C6XABI_Tag_ISA_C64XP)) + return C6XABI_Tag_ISA_C674X; + + return max_arch; +} + +/* Convert a Tag_ABI_array_object_alignment or + Tag_ABI_array_object_align_expected tag value TAG to a + corresponding alignment value; return the alignment, or -1 for an + unknown tag value. */ + +static int +elf32_tic6x_tag_to_array_alignment (int tag) +{ + switch (tag) + { + case 0: + return 8; + + case 1: + return 4; + + case 2: + return 16; + + default: + return -1; + } +} + +/* Convert a Tag_ABI_array_object_alignment or + Tag_ABI_array_object_align_expected alignment ALIGN to a + corresponding tag value; return the tag value. */ + +static int +elf32_tic6x_array_alignment_to_tag (int align) +{ + switch (align) + { + case 8: + return 0; + + case 4: + return 1; + + case 16: + return 2; + + default: + abort (); + } +} + +/* Merge attributes from IBFD and OBFD, returning TRUE if the merge + succeeded, FALSE otherwise. */ + +static bfd_boolean +elf32_tic6x_merge_attributes (bfd *ibfd, bfd *obfd) +{ + bfd_boolean result = TRUE; + obj_attribute *in_attr; + obj_attribute *out_attr; + int i; + int array_align_in, array_align_out, array_expect_in, array_expect_out; + + if (!elf_known_obj_attributes_proc (obfd)[0].i) + { + /* This is the first object. Copy the attributes. */ + _bfd_elf_copy_obj_attributes (ibfd, obfd); + + out_attr = elf_known_obj_attributes_proc (obfd); + + /* Use the Tag_null value to indicate the attributes have been + initialized. */ + out_attr[0].i = 1; + + return TRUE; + } + + in_attr = elf_known_obj_attributes_proc (ibfd); + out_attr = elf_known_obj_attributes_proc (obfd); + + /* No specification yet for handling of unknown attributes, so just + ignore them and handle known ones. */ + + if (out_attr[Tag_ABI_stack_align_preserved].i + < in_attr[Tag_ABI_stack_align_needed].i) + { + _bfd_error_handler + (_("error: %B requires more stack alignment than %B preserves"), + ibfd, obfd); + result = FALSE; + } + if (in_attr[Tag_ABI_stack_align_preserved].i + < out_attr[Tag_ABI_stack_align_needed].i) + { + _bfd_error_handler + (_("error: %B requires more stack alignment than %B preserves"), + obfd, ibfd); + result = FALSE; + } + + array_align_in = elf32_tic6x_tag_to_array_alignment + (in_attr[Tag_ABI_array_object_alignment].i); + if (array_align_in == -1) + { + _bfd_error_handler + (_("error: unknown Tag_ABI_array_object_alignment value in %B"), + ibfd); + result = FALSE; + } + array_align_out = elf32_tic6x_tag_to_array_alignment + (out_attr[Tag_ABI_array_object_alignment].i); + if (array_align_out == -1) + { + _bfd_error_handler + (_("error: unknown Tag_ABI_array_object_alignment value in %B"), + obfd); + result = FALSE; + } + array_expect_in = elf32_tic6x_tag_to_array_alignment + (in_attr[Tag_ABI_array_object_align_expected].i); + if (array_expect_in == -1) + { + _bfd_error_handler + (_("error: unknown Tag_ABI_array_object_align_expected value in %B"), + ibfd); + result = FALSE; + } + array_expect_out = elf32_tic6x_tag_to_array_alignment + (out_attr[Tag_ABI_array_object_align_expected].i); + if (array_expect_out == -1) + { + _bfd_error_handler + (_("error: unknown Tag_ABI_array_object_align_expected value in %B"), + obfd); + result = FALSE; + } + + if (array_align_out < array_expect_in) + { + _bfd_error_handler + (_("error: %B requires more array alignment than %B preserves"), + ibfd, obfd); + result = FALSE; + } + if (array_align_in < array_expect_out) + { + _bfd_error_handler + (_("error: %B requires more array alignment than %B preserves"), + obfd, ibfd); + result = FALSE; + } + + for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) + { + switch (i) + { + case Tag_ISA: + out_attr[i].i = elf32_tic6x_merge_arch_attributes (in_attr[i].i, + out_attr[i].i); + break; + + case Tag_ABI_wchar_t: + if (out_attr[i].i == 0) + out_attr[i].i = in_attr[i].i; + if (out_attr[i].i != 0 + && in_attr[i].i != 0 + && out_attr[i].i != in_attr[i].i) + { + _bfd_error_handler + (_("warning: %B and %B differ in wchar_t size"), obfd, ibfd); + } + break; + + case Tag_ABI_stack_align_needed: + if (out_attr[i].i < in_attr[i].i) + out_attr[i].i = in_attr[i].i; + break; + + case Tag_ABI_stack_align_preserved: + if (out_attr[i].i > in_attr[i].i) + out_attr[i].i = in_attr[i].i; + break; + + case Tag_ABI_DSBT: + if (out_attr[i].i != in_attr[i].i) + { + _bfd_error_handler + (_("warning: %B and %B differ in whether code is " + "compiled for DSBT"), + obfd, ibfd); + } + break; + + case Tag_ABI_PID: + if (out_attr[i].i != in_attr[i].i) + { + _bfd_error_handler + (_("warning: %B and %B differ in position-dependence of " + "data addressing"), + obfd, ibfd); + } + break; + + case Tag_ABI_PIC: + if (out_attr[i].i != in_attr[i].i) + { + _bfd_error_handler + (_("warning: %B and %B differ in position-dependence of " + "code addressing"), + obfd, ibfd); + } + break; + + case Tag_ABI_array_object_alignment: + if (array_align_out != -1 + && array_align_in != -1 + && array_align_out > array_align_in) + out_attr[i].i + = elf32_tic6x_array_alignment_to_tag (array_align_in); + break; + + case Tag_ABI_array_object_align_expected: + if (array_expect_out != -1 + && array_expect_in != -1 + && array_expect_out < array_expect_in) + out_attr[i].i + = elf32_tic6x_array_alignment_to_tag (array_expect_in); + break; + + case Tag_ABI_conformance: + /* Merging for this attribute is not specified. As on ARM, + treat a missing attribute as no claim to conform and only + merge identical values. */ + if (out_attr[i].s == NULL + || in_attr[i].s == NULL + || strcmp (out_attr[i].s, + in_attr[i].s) != 0) + out_attr[i].s = NULL; + break; + + case Tag_ABI_compatibility: + /* Merged in _bfd_elf_merge_object_attributes. */ + break; + + default: + result + = result && _bfd_elf_merge_unknown_attribute_low (ibfd, obfd, i); + break; + } + + if (in_attr[i].type && !out_attr[i].type) + out_attr[i].type = in_attr[i].type; + } + + /* Merge Tag_ABI_compatibility attributes and any common GNU ones. */ + if (!_bfd_elf_merge_object_attributes (ibfd, obfd)) + return FALSE; + + result &= _bfd_elf_merge_unknown_attribute_list (ibfd, obfd); + + return result; +} + +static bfd_boolean +elf32_tic6x_merge_private_bfd_data (bfd *ibfd, bfd *obfd) +{ + if (!_bfd_generic_verify_endian_match (ibfd, obfd)) + return FALSE; + + if (!elf32_tic6x_merge_attributes (ibfd, obfd)) + return FALSE; + + return TRUE; +} + +static bfd_boolean +elf32_tic6x_copy_private_data (bfd * ibfd, bfd * obfd) +{ + _bfd_elf_copy_private_bfd_data (ibfd, obfd); + + if (! is_tic6x_elf (ibfd) || ! is_tic6x_elf (obfd)) + return TRUE; + + /* Copy the stack size. */ + if (elf_tdata (ibfd)->phdr && elf_tdata (obfd)->phdr + && elf32_tic6x_using_dsbt (ibfd) && elf32_tic6x_using_dsbt (obfd)) + { + unsigned i; + + for (i = 0; i < elf_elfheader (ibfd)->e_phnum; i++) + if (elf_tdata (ibfd)->phdr[i].p_type == PT_GNU_STACK) + { + Elf_Internal_Phdr *iphdr = &elf_tdata (ibfd)->phdr[i]; + + for (i = 0; i < elf_elfheader (obfd)->e_phnum; i++) + if (elf_tdata (obfd)->phdr[i].p_type == PT_GNU_STACK) + { + memcpy (&elf_tdata (obfd)->phdr[i], iphdr, sizeof (*iphdr)); + + /* Rewrite the phdrs, since we're only called after they + were first written. */ + if (bfd_seek (obfd, + (bfd_signed_vma) get_elf_backend_data (obfd) + ->s->sizeof_ehdr, SEEK_SET) != 0 + || get_elf_backend_data (obfd)->s + ->write_out_phdrs (obfd, elf_tdata (obfd)->phdr, + elf_elfheader (obfd)->e_phnum) != 0) + return FALSE; + break; + } + + break; + } + } + + return TRUE; +} + +#define TARGET_LITTLE_SYM bfd_elf32_tic6x_le_vec +#define TARGET_LITTLE_NAME "elf32-tic6x-le" +#define TARGET_BIG_SYM bfd_elf32_tic6x_be_vec +#define TARGET_BIG_NAME "elf32-tic6x-be" +#define ELF_ARCH bfd_arch_tic6x +#define ELF_TARGET_ID TIC6X_ELF_DATA +#define ELF_MACHINE_CODE EM_TI_C6000 +#define ELF_MAXPAGESIZE 0x1000 +#define bfd_elf32_bfd_reloc_type_lookup elf32_tic6x_reloc_type_lookup +#define bfd_elf32_bfd_reloc_name_lookup elf32_tic6x_reloc_name_lookup +#define bfd_elf32_bfd_copy_private_bfd_data elf32_tic6x_copy_private_data +#define bfd_elf32_bfd_merge_private_bfd_data elf32_tic6x_merge_private_bfd_data +#define bfd_elf32_mkobject elf32_tic6x_mkobject +#define bfd_elf32_bfd_link_hash_table_create elf32_tic6x_link_hash_table_create +#define bfd_elf32_bfd_link_hash_table_free elf32_tic6x_link_hash_table_free +#define bfd_elf32_new_section_hook elf32_tic6x_new_section_hook +#define elf_backend_can_gc_sections 1 +#define elf_backend_default_use_rela_p 1 +#define elf_backend_may_use_rel_p 1 +#define elf_backend_may_use_rela_p 1 +#define elf_backend_obj_attrs_arg_type elf32_tic6x_obj_attrs_arg_type +#define elf_backend_obj_attrs_handle_unknown elf32_tic6x_obj_attrs_handle_unknown +#define elf_backend_obj_attrs_order elf32_tic6x_obj_attrs_order +#define elf_backend_obj_attrs_section ".c6xabi.attributes" +#define elf_backend_obj_attrs_section_type SHT_C6000_ATTRIBUTES +#define elf_backend_obj_attrs_vendor "c6xabi" +#define elf_backend_can_refcount 1 +#define elf_backend_want_got_plt 1 +#define elf_backend_want_dynbss 1 +#define elf_backend_plt_readonly 1 +#define elf_backend_rela_normal 1 +#define elf_backend_got_header_size 8 +#define elf_backend_gc_sweep_hook elf32_tic6x_gc_sweep_hook +#define elf_backend_modify_program_headers \ + elf32_tic6x_modify_program_headers +#define elf_backend_create_dynamic_sections \ + elf32_tic6x_create_dynamic_sections +#define elf_backend_adjust_dynamic_symbol \ + elf32_tic6x_adjust_dynamic_symbol +#define elf_backend_check_relocs elf32_tic6x_check_relocs +#define elf_backend_add_symbol_hook elf32_tic6x_add_symbol_hook +#define elf_backend_symbol_processing elf32_tic6x_symbol_processing +#define elf_backend_link_output_symbol_hook \ + elf32_tic6x_link_output_symbol_hook +#define elf_backend_section_from_bfd_section \ + elf32_tic6x_section_from_bfd_section +#define elf_backend_relocate_section elf32_tic6x_relocate_section +#define elf_backend_finish_dynamic_symbol \ + elf32_tic6x_finish_dynamic_symbol +#define elf_backend_always_size_sections \ + elf32_tic6x_always_size_sections +#define elf_backend_size_dynamic_sections \ + elf32_tic6x_size_dynamic_sections +#define elf_backend_finish_dynamic_sections \ + elf32_tic6x_finish_dynamic_sections +#define elf_info_to_howto elf32_tic6x_info_to_howto +#define elf_info_to_howto_rel elf32_tic6x_info_to_howto_rel + +#undef elf_backend_omit_section_dynsym +#define elf_backend_omit_section_dynsym elf32_tic6x_link_omit_section_dynsym +#define elf_backend_plt_sym_val elf32_tic6x_plt_sym_val + + +#include "elf32-target.h" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-tic6x.h crash-6.1.6/=unpacked-tar1=/bfd/elf32-tic6x.h --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-tic6x.h 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-tic6x.h 2011-03-31 08:58:20.000000000 +0000 @@ -0,0 +1,35 @@ +/* 32-bit ELF support for TI C6X + Copyright 2010, 2011 + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +extern int elf32_tic6x_merge_arch_attributes (int, int); + +/* This function is provided for use from the assembler. */ + +extern void elf32_tic6x_set_use_rela_p (bfd *, bfd_boolean); + +struct elf32_tic6x_params +{ + int dsbt_index; + int dsbt_size; +}; + +extern void elf32_tic6x_setup (struct bfd_link_info *, + struct elf32_tic6x_params *); diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-v850.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-v850.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-v850.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-v850.c 2011-01-14 12:35:56.000000000 +0000 @@ -1,6 +1,6 @@ /* V850-specific support for 32-bit ELF Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -31,8 +31,11 @@ #include "elf/v850.h" #include "libiberty.h" -/* Sign-extend a 24-bit number. */ -#define SEXT24(x) ((((x) & 0xffffff) ^ 0x800000) - 0x800000) +/* Sign-extend a 17-bit number. */ +#define SEXT17(x) ((((x) & 0x1ffff) ^ 0x10000) - 0x10000) + +/* Sign-extend a 22-bit number. */ +#define SEXT22(x) ((((x) & 0x3fffff) ^ 0x200000) - 0x200000) static reloc_howto_type v850_elf_howto_table[]; @@ -47,7 +50,6 @@ const Elf_Internal_Rela *relocs) { bfd_boolean ret = TRUE; - bfd *dynobj; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; const Elf_Internal_Rela *rel; @@ -64,7 +66,6 @@ sec, abfd); #endif - dynobj = elf_hash_table (info)->dynobj; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); @@ -91,16 +92,25 @@ default: case R_V850_NONE: case R_V850_9_PCREL: + case R_V850_16_PCREL: + case R_V850_17_PCREL: case R_V850_22_PCREL: - case R_V850_HI16_S: + case R_V850_32_PCREL: + case R_V850_32_ABS: case R_V850_HI16: + case R_V850_HI16_S: case R_V850_LO16: + case R_V850_LO16_S1: case R_V850_LO16_SPLIT_OFFSET: + case R_V850_23: case R_V850_ABS32: case R_V850_REL32: case R_V850_16: + case R_V850_16_S1: + case R_V850_16_SPLIT_OFFSET: case R_V850_8: case R_V850_CALLT_6_7_OFFSET: + case R_V850_CALLT_15_16_OFFSET: case R_V850_CALLT_16_16_OFFSET: break; @@ -134,11 +144,11 @@ common = ".zcommon"; goto small_data_common; - case R_V850_TDA_4_5_OFFSET: case R_V850_TDA_4_4_OFFSET: + case R_V850_TDA_4_5_OFFSET: + case R_V850_TDA_7_7_OFFSET: case R_V850_TDA_6_8_OFFSET: case R_V850_TDA_7_8_OFFSET: - case R_V850_TDA_7_7_OFFSET: case R_V850_TDA_16_16_OFFSET: other = V850_OTHER_TDA; common = ".tcommon"; @@ -273,8 +283,6 @@ { hi16s_location *match = NULL; hi16s_location *entry; - hi16s_location *previous = NULL; - hi16s_location *prev; bfd_byte *addr; /* Search the table. Record the most recent entry that matches. */ @@ -283,11 +291,8 @@ if (entry->addend == addend && (match == NULL || match->counter < entry->counter)) { - previous = prev; match = entry; } - - prev = entry; } if (match == NULL) @@ -322,15 +327,15 @@ will store 0 in the value fields for the MOVHI and MOVEA instructions and addend will be the address of fred, but for these instructions: - movhi hi( fred + 0x123456), r0, r1 - movea lo( fred + 0x123456), r1, r1 + movhi hi( fred + 0x123456 ), r0, r1 + movea lo( fred + 0x123456 ), r1, r1 the value stored in the MOVHI instruction will be 0x12 and the value stored in the MOVEA instruction will be 0x3456. If however the instructions were: - movhi hi( fred + 0x10ffff), r0, r1 - movea lo( fred + 0x10ffff), r1, r1 + movhi hi( fred + 0x10ffff ), r0, r1 + movea lo( fred + 0x10ffff ), r1, r1 then the value stored in the MOVHI instruction would be 0x11 (not 0x10) and the value stored in the MOVEA instruction would be 0xffff. @@ -339,8 +344,8 @@ adds 0xffffffff (sign extension!) producing 0x10ffff. Similarly if the instructions were: - movhi hi( fred - 1), r0, r1 - movea lo( fred - 1), r1, r1 + movhi hi( fred - 1 ), r0, r1 + movea lo( fred - 1 ), r1, r1 then 0 is stored in the MOVHI instruction and -1 is stored in the MOVEA instruction. @@ -352,8 +357,8 @@ clear, the assembler will not have added 1 to the previous HI16S reloc to compensate for this effect. For example: - movhi hi( fred + 0x123456), r0, r1 - movea lo( fred + 0x123456), r1, r1 + movhi hi( fred + 0x123456 ), r0, r1 + movea lo( fred + 0x123456 ), r1, r1 The value stored in HI16S reloc is 0x12, the value stored in the LO16 reloc is 0x3456. If we assume that the address of fred is 0x00007000 @@ -373,8 +378,8 @@ Note that if the 15th bit was set in the value stored in the LO16 reloc, then we do not have to do anything: - movhi hi( fred + 0x10ffff), r0, r1 - movea lo( fred + 0x10ffff), r1, r1 + movhi hi( fred + 0x10ffff ), r0, r1 + movea lo( fred + 0x10ffff ), r1, r1 HI16S: 0x0011 + (0x00007000 >> 16) = 0x11 LO16: 0xffff + (0x00007000 & 0xffff) = 0x6fff @@ -394,8 +399,8 @@ So, for example if fred is at address 0xf000: - movhi hi( fred + 0xffff), r0, r1 [bit 15 of the offset is set] - movea lo( fred + 0xffff), r1, r1 + movhi hi( fred + 0xffff ), r0, r1 [bit 15 of the offset is set] + movea lo( fred + 0xffff ), r1, r1 HI16S: 0x0001 + (0x0000f000 >> 16) = 0x0001 LO16: 0xffff + (0x0000f000 & 0xffff) = 0xefff (carry into bit 16 is lost) @@ -408,8 +413,8 @@ Similarly, if the 15th bit remains clear, but overflow occurs into the 16th bit then (assuming the address of fred is 0xf000): - movhi hi( fred + 0x7000), r0, r1 [bit 15 of the offset is clear] - movea lo( fred + 0x7000), r1, r1 + movhi hi( fred + 0x7000 ), r0, r1 [bit 15 of the offset is clear] + movea lo( fred + 0x7000 ), r1, r1 HI16S: 0x0000 + (0x0000f000 >> 16) = 0x0000 LO16: 0x7000 + (0x0000f000 & 0xffff) = 0x6fff (carry into bit 16 is lost) @@ -423,8 +428,8 @@ 15th bit changes its value from being set to being clear, as the HI16S reloc will have already added in 1 to the high part for us: - movhi hi( fred + 0xffff), r0, r1 [bit 15 of the offset is set] - movea lo( fred + 0xffff), r1, r1 + movhi hi( fred + 0xffff ), r0, r1 [bit 15 of the offset is set] + movea lo( fred + 0xffff ), r1, r1 HI16S: 0x0001 + (0x00007000 >> 16) LO16: 0xffff + (0x00007000 & 0xffff) = 0x6fff (carry into bit 16 is lost) @@ -437,8 +442,8 @@ but if the 15th bit goes from being clear to being set, then we must once again handle overflow: - movhi hi( fred + 0x7000), r0, r1 [bit 15 of the offset is clear] - movea lo( fred + 0x7000), r1, r1 + movhi hi( fred + 0x7000 ), r0, r1 [bit 15 of the offset is clear] + movea lo( fred + 0x7000 ), r1, r1 HI16S: 0x0000 + (0x0000ffff >> 16) LO16: 0x7000 + (0x0000ffff & 0xffff) = 0x6fff (carry into bit 16) @@ -475,7 +480,7 @@ } else { - fprintf (stderr, _("FAILED to find previous HI16 reloc\n")); + (*_bfd_error_handler) (_("FAILED to find previous HI16 reloc")); return FALSE; } } @@ -511,6 +516,13 @@ bfd_put_32 (abfd, addend, address); return bfd_reloc_ok; + case R_V850_23: + insn = bfd_get_32 (abfd, address); + insn &= ~((0x7f << 4) | (0x7fff80 << (16-7))); + insn |= ((addend & 0x7f) << 4) | ((addend & 0x7fff80) << (16-7)); + bfd_put_32 (abfd, (bfd_vma) insn, address); + return bfd_reloc_ok; + case R_V850_22_PCREL: if (saddend > 0x1fffff || saddend < -0x200000) return bfd_reloc_overflow; @@ -524,6 +536,30 @@ bfd_put_32 (abfd, (bfd_vma) insn, address); return bfd_reloc_ok; + case R_V850_17_PCREL: + if (saddend > 0xffff || saddend < -0x10000) + return bfd_reloc_overflow; + + if ((addend % 2) != 0) + return bfd_reloc_dangerous; + + insn = bfd_get_32 (abfd, address); + insn &= ~ 0xfffe0010; + insn |= ((addend & 0xfffe) << 16) | ((addend & 0x10000) >> (16-4)); + break; + + case R_V850_16_PCREL: + if ((saddend < -0xffff) || (saddend > 0)) + return bfd_reloc_overflow; + + if ((addend % 2) != 0) + return bfd_reloc_dangerous; + + insn = bfd_get_16 (abfd, address); + insn &= ~0xfffe; + insn |= (-addend & 0xfffe); + break; + case R_V850_9_PCREL: if (saddend > 0xff || saddend < -0x100) return bfd_reloc_overflow; @@ -550,7 +586,7 @@ addend = (addend >> 16) + ((addend & 0x8000) != 0); /* This relocation cannot overflow. */ - if (addend > 0x7fff) + if (addend > 0xffff) addend = 0; insn = addend; @@ -584,6 +620,36 @@ insn = addend; break; + case R_V850_CALLT_15_16_OFFSET: + insn = bfd_get_16 (abfd, address); + + addend += insn & 0xfffe;; + + saddend = (bfd_signed_vma) addend; + + if (saddend > 0xffff || saddend < 0) + return bfd_reloc_overflow; + + insn = (0xfffe & addend) + | (insn & ~0xfffe); + break; + + case R_V850_CALLT_6_7_OFFSET: + insn = bfd_get_16 (abfd, address); + addend += ((insn & 0x3f) << 1); + + saddend = (bfd_signed_vma) addend; + + if (saddend > 0x7e || saddend < 0) + return bfd_reloc_overflow; + + if (addend & 1) + return bfd_reloc_dangerous; + + insn &= 0xff80; + insn |= (addend >> 1); + break; + case R_V850_16: case R_V850_SDA_16_16_OFFSET: case R_V850_ZDA_16_16_OFFSET: @@ -598,6 +664,7 @@ insn = addend; break; + case R_V850_16_S1: case R_V850_SDA_15_16_OFFSET: case R_V850_ZDA_15_16_OFFSET: insn = bfd_get_16 (abfd, address); @@ -688,6 +755,18 @@ insn |= addend; break; + case R_V850_LO16_S1: + insn = bfd_get_16 (abfd, address); + result = insn & 0xfffe; + if (! v850_elf_perform_lo16_relocation (abfd, &result, addend)) + return bfd_reloc_overflow; + if (result & 1) + return bfd_reloc_overflow; + insn = (result & 0xfffe) + | (insn & ~0xfffe); + bfd_put_16 (abfd, insn, address); + return bfd_reloc_ok; + case R_V850_LO16_SPLIT_OFFSET: insn = bfd_get_32 (abfd, address); result = ((insn & 0xfffe0000) >> 16) | ((insn & 0x20) >> 5); @@ -699,8 +778,9 @@ bfd_put_32 (abfd, insn, address); return bfd_reloc_ok; - case R_V850_ZDA_16_16_SPLIT_OFFSET: + case R_V850_16_SPLIT_OFFSET: case R_V850_SDA_16_16_SPLIT_OFFSET: + case R_V850_ZDA_16_16_SPLIT_OFFSET: insn = bfd_get_32 (abfd, address); addend += ((insn & 0xfffe0000) >> 16) + ((insn & 0x20) >> 5); @@ -716,22 +796,6 @@ bfd_put_32 (abfd, (bfd_vma) insn, address); return bfd_reloc_ok; - case R_V850_CALLT_6_7_OFFSET: - insn = bfd_get_16 (abfd, address); - addend += ((insn & 0x3f) << 1); - - saddend = (bfd_signed_vma) addend; - - if (saddend > 0x7e || saddend < 0) - return bfd_reloc_overflow; - - if (addend & 1) - return bfd_reloc_dangerous; - - insn &= 0xff80; - insn |= (addend >> 1); - break; - case R_V850_GNU_VTINHERIT: case R_V850_GNU_VTENTRY: return bfd_reloc_ok; @@ -820,7 +884,8 @@ return bfd_reloc_ok; } /* Note: It is REQUIRED that the 'type' value of each entry - in this array match the index of the entry in the array. */ + in this array match the index of the entry in the array. + SeeAlso: RELOC_NUBMER in include/elf/v850.h */ static reloc_howto_type v850_elf_howto_table[] = { /* This reloc does nothing. */ @@ -840,9 +905,9 @@ /* A PC relative 9 bit branch. */ HOWTO (R_V850_9_PCREL, /* Type. */ - 2, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 26, /* Bitsize. */ + 0, /* Rightshift. */ + 1, /* Size (0 = byte, 1 = short, 2 = long). */ + 9, /* Bitsize. */ TRUE, /* PC_relative. */ 0, /* Bitpos. */ complain_overflow_bitfield, /* Complain_on_overflow. */ @@ -855,11 +920,11 @@ /* A PC relative 22 bit branch. */ HOWTO (R_V850_22_PCREL, /* Type. */ - 2, /* Rightshift. */ + 0, /* Rightshift. */ 2, /* Size (0 = byte, 1 = short, 2 = long). */ 22, /* Bitsize. */ TRUE, /* PC_relative. */ - 7, /* Bitpos. */ + 0, /* Bitpos. */ complain_overflow_signed, /* Complain_on_overflow. */ v850_elf_reloc, /* Special_function. */ "R_V850_22_PCREL", /* Name. */ @@ -1168,82 +1233,83 @@ 0xffff, /* Dst_mask. */ FALSE), /* PCrel_offset. */ + /* GNU extension to record C++ vtable hierarchy */ HOWTO (R_V850_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_V850_GNU_VTINHERIT", /* Name. */ - FALSE, /* Partial_inplace. */ - 0, /* Src_mask. */ - 0, /* Dst_mask. */ - FALSE), /* PCrel_offset. */ + 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_V850_GNU_VTINHERIT", /* Name. */ + FALSE, /* Partial_inplace. */ + 0, /* Src_mask. */ + 0, /* Dst_mask. */ + FALSE), /* PCrel_offset. */ - /* GNU extension to record C++ vtable member usage */ + /* GNU extension to record C++ vtable member usage. */ HOWTO (R_V850_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_V850_GNU_VTENTRY", /* Name. */ - FALSE, /* Partial_inplace. */ - 0, /* Src_mask. */ - 0, /* Dst_mask. */ - FALSE), /* PCrel_offset. */ + 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_V850_GNU_VTENTRY", /* Name. */ + FALSE, /* Partial_inplace. */ + 0, /* Src_mask. */ + 0, /* Dst_mask. */ + FALSE), /* PCrel_offset. */ /* Indicates a .longcall pseudo-op. The compiler will generate a .longcall pseudo-op when it finds a function call which can be relaxed. */ HOWTO (R_V850_LONGCALL, /* Type. */ - 0, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 32, /* Bitsize. */ - TRUE, /* PC_relative. */ - 0, /* Bitpos. */ - complain_overflow_signed, /* Complain_on_overflow. */ - v850_elf_ignore_reloc, /* Special_function. */ - "R_V850_LONGCALL", /* Name. */ - FALSE, /* Partial_inplace. */ - 0, /* Src_mask. */ - 0, /* Dst_mask. */ - TRUE), /* PCrel_offset. */ + 0, /* Rightshift. */ + 2, /* Size (0 = byte, 1 = short, 2 = long). */ + 32, /* Bitsize. */ + TRUE, /* PC_relative. */ + 0, /* Bitpos. */ + complain_overflow_signed, /* Complain_on_overflow. */ + v850_elf_ignore_reloc, /* Special_function. */ + "R_V850_LONGCALL", /* Name. */ + FALSE, /* Partial_inplace. */ + 0, /* Src_mask. */ + 0, /* Dst_mask. */ + TRUE), /* PCrel_offset. */ /* Indicates a .longjump pseudo-op. The compiler will generate a .longjump pseudo-op when it finds a branch which can be relaxed. */ HOWTO (R_V850_LONGJUMP, /* Type. */ - 0, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 32, /* Bitsize. */ - TRUE, /* PC_relative. */ - 0, /* Bitpos. */ - complain_overflow_signed, /* Complain_on_overflow. */ - v850_elf_ignore_reloc, /* Special_function. */ - "R_V850_LONGJUMP", /* Name. */ - FALSE, /* Partial_inplace. */ - 0, /* Src_mask. */ - 0, /* Dst_mask. */ - TRUE), /* PCrel_offset. */ + 0, /* Rightshift. */ + 2, /* Size (0 = byte, 1 = short, 2 = long). */ + 32, /* Bitsize. */ + TRUE, /* PC_relative. */ + 0, /* Bitpos. */ + complain_overflow_signed, /* Complain_on_overflow. */ + v850_elf_ignore_reloc, /* Special_function. */ + "R_V850_LONGJUMP", /* Name. */ + FALSE, /* Partial_inplace. */ + 0, /* Src_mask. */ + 0, /* Dst_mask. */ + TRUE), /* PCrel_offset. */ HOWTO (R_V850_ALIGN, /* Type. */ - 0, /* Rightshift. */ - 1, /* Size (0 = byte, 1 = short, 2 = long). */ - 0, /* Bitsize. */ - FALSE, /* PC_relative. */ - 0, /* Bitpos. */ - complain_overflow_unsigned, /* Complain_on_overflow. */ - v850_elf_ignore_reloc, /* Special_function. */ - "R_V850_ALIGN", /* Name. */ - FALSE, /* Partial_inplace. */ - 0, /* Src_mask. */ - 0, /* Dst_mask. */ - TRUE), /* PCrel_offset. */ - + 0, /* Rightshift. */ + 1, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ + FALSE, /* PC_relative. */ + 0, /* Bitpos. */ + complain_overflow_unsigned, /* Complain_on_overflow. */ + v850_elf_ignore_reloc, /* Special_function. */ + "R_V850_ALIGN", /* Name. */ + FALSE, /* Partial_inplace. */ + 0, /* Src_mask. */ + 0, /* Dst_mask. */ + TRUE), /* PCrel_offset. */ + /* Simple pc-relative 32bit reloc. */ HOWTO (R_V850_REL32, /* Type. */ 0, /* Rightshift. */ @@ -1273,6 +1339,341 @@ 0xfffe0020, /* Src_mask. */ 0xfffe0020, /* Dst_mask. */ FALSE), /* PCrel_offset. */ + + /* A unsigned PC relative 16 bit loop. */ + HOWTO (R_V850_16_PCREL, /* Type. */ + 0, /* Rightshift. */ + 1, /* Size (0 = byte, 1 = short, 2 = long). */ + 16, /* Bitsize. */ + TRUE, /* PC_relative. */ + 0, /* Bitpos. */ + complain_overflow_bitfield, /* Complain_on_overflow. */ + v850_elf_reloc, /* Special_function. */ + "R_V850_16_PCREL", /* Name. */ + FALSE, /* Partial_inplace. */ + 0xfffe, /* Src_mask. */ + 0xfffe, /* Dst_mask. */ + TRUE), /* PCrel_offset. */ + + /* A PC relative 17 bit branch. */ + HOWTO (R_V850_17_PCREL, /* Type. */ + 0, /* Rightshift. */ + 2, /* Size (0 = byte, 1 = short, 2 = long). */ + 17, /* Bitsize. */ + TRUE, /* PC_relative. */ + 0, /* Bitpos. */ + complain_overflow_bitfield, /* Complain_on_overflow. */ + v850_elf_reloc, /* Special_function. */ + "R_V850_17_PCREL", /* Name. */ + FALSE, /* Partial_inplace. */ + 0x0010fffe, /* Src_mask. */ + 0x0010fffe, /* Dst_mask. */ + TRUE), /* PCrel_offset. */ + + /* A 23bit offset ld/st. */ + HOWTO (R_V850_23, /* type. */ + 0, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long). */ + 23, /* bitsize. */ + FALSE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_dont, /* complain_on_overflow. */ + v850_elf_reloc, /* special_function. */ + "R_V850_23", /* name. */ + FALSE, /* partial_inplace. */ + 0xffff07f0, /* src_mask. */ + 0xffff07f0, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + /* A PC relative 32 bit branch. */ + HOWTO (R_V850_32_PCREL, /* type. */ + 1, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long). */ + 32, /* bitsize. */ + TRUE, /* pc_relative. */ + 1, /* bitpos. */ + complain_overflow_signed, /* complain_on_overflow. */ + v850_elf_reloc, /* special_function. */ + "R_V850_32_PCREL", /* name. */ + FALSE, /* partial_inplace. */ + 0xfffffffe, /* src_mask. */ + 0xfffffffe, /* dst_mask. */ + TRUE), /* pcrel_offset. */ + + /* A absolute 32 bit branch. */ + HOWTO (R_V850_32_ABS, /* type. */ + 1, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long). */ + 32, /* bitsize. */ + TRUE, /* pc_relative. */ + 1, /* bitpos. */ + complain_overflow_signed, /* complain_on_overflow. */ + v850_elf_reloc, /* special_function. */ + "R_V850_32_ABS", /* name. */ + FALSE, /* partial_inplace. */ + 0xfffffffe, /* src_mask. */ + 0xfffffffe, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + /* High 16 bits of symbol value. */ + HOWTO (R_V850_HI16, /* Type. */ + 0, /* Rightshift. */ + 1, /* Size (0 = byte, 1 = short, 2 = long). */ + 16, /* Bitsize. */ + FALSE, /* PC_relative. */ + 0, /* Bitpos. */ + complain_overflow_dont, /* Complain_on_overflow. */ + v850_elf_reloc, /* Special_function. */ + "R_V850_HI16", /* Name. */ + FALSE, /* Partial_inplace. */ + 0xffff, /* Src_mask. */ + 0xffff, /* Dst_mask. */ + FALSE), /* PCrel_offset. */ + + /* Low 16 bits of symbol value. */ + HOWTO (R_V850_16_S1, /* type. */ + 1, /* rightshift. */ + 1, /* size (0 = byte, 1 = short, 2 = long). */ + 16, /* bitsize. */ + FALSE, /* pc_relative. */ + 1, /* bitpos. */ + complain_overflow_dont, /* complain_on_overflow. */ + v850_elf_reloc, /* special_function. */ + "R_V850_16_S1", /* name. */ + FALSE, /* partial_inplace. */ + 0xfffe, /* src_mask. */ + 0xfffe, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + /* Low 16 bits of symbol value. */ + HOWTO (R_V850_LO16_S1, /* type. */ + 1, /* rightshift. */ + 1, /* size (0 = byte, 1 = short, 2 = long). */ + 16, /* bitsize. */ + FALSE, /* pc_relative. */ + 1, /* bitpos. */ + complain_overflow_dont, /* complain_on_overflow. */ + v850_elf_reloc, /* special_function. */ + "R_V850_LO16_S1", /* name. */ + FALSE, /* partial_inplace. */ + 0xfffe, /* src_mask. */ + 0xfffe, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + /* 16 bit offset from the call table base pointer. */ + HOWTO (R_V850_CALLT_15_16_OFFSET, /* type. */ + 1, /* rightshift. */ + 1, /* size (0 = byte, 1 = short, 2 = long). */ + 16, /* bitsize. */ + FALSE, /* pc_relative. */ + 1, /* bitpos. */ + complain_overflow_dont, /* complain_on_overflow. */ + v850_elf_reloc, /* special_function. */ + "R_V850_CALLT_15_16_OFFSET", /* name. */ + FALSE, /* partial_inplace. */ + 0xfffe, /* src_mask. */ + 0xfffe, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + /* Like R_V850_32 PCREL, but referring to the GOT table entry for + the symbol. */ + HOWTO (R_V850_32_GOTPCREL, /* type. */ + 0, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long). */ + 32, /* bitsize. */ + TRUE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_unsigned, /* complain_on_overflow. */ + v850_elf_reloc, /* special_function. */ + "R_V850_32_GOTPCREL", /* name. */ + FALSE, /* partial_inplace. */ + 0xffffffff, /* src_mask. */ + 0xffffffff, /* dst_mask. */ + TRUE), /* pcrel_offset. */ + + /* Like R_V850_SDA_, but referring to the GOT table entry for + the symbol. */ + HOWTO (R_V850_16_GOT, /* type. */ + 0, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long). */ + 16, /* bitsize. */ + FALSE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_unsigned, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_V850_16_GOT", /* name. */ + FALSE, /* partial_inplace. */ + 0xffff, /* src_mask. */ + 0xffff, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + HOWTO (R_V850_32_GOT, /* type. */ + 0, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long). */ + 32, /* bitsize. */ + FALSE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_unsigned, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_V850_32_GOT", /* name. */ + FALSE, /* partial_inplace. */ + 0xffffffff, /* src_mask. */ + 0xffffffff, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + /* Like R_V850_22_PCREL, but referring to the procedure linkage table + entry for the symbol. */ + HOWTO (R_V850_22_PLT, /* type. */ + 1, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long). */ + 22, /* bitsize. */ + TRUE, /* pc_relative. */ + 7, /* bitpos. */ + complain_overflow_signed, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_V850_22_PLT", /* name. */ + FALSE, /* partial_inplace. */ + 0x07ffff80, /* src_mask. */ + 0x07ffff80, /* dst_mask. */ + TRUE), /* pcrel_offset. */ + + HOWTO (R_V850_32_PLT, /* type. */ + 1, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long). */ + 32, /* bitsize. */ + TRUE, /* pc_relative. */ + 1, /* bitpos. */ + complain_overflow_signed, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_V850_32_PLT", /* name. */ + FALSE, /* partial_inplace. */ + 0xffffffff, /* src_mask. */ + 0xffffffff, /* dst_mask. */ + TRUE), /* pcrel_offset. */ + + /* This is used only by the dynamic linker. The symbol should exist + both in the object being run and in some shared library. The + dynamic linker copies the data addressed by the symbol from the + shared library into the object, because the object being + run has to have the data at some particular address. */ + HOWTO (R_V850_COPY, /* type. */ + 0, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long). */ + 32, /* bitsize. */ + FALSE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_bitfield, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_V850_COPY", /* name. */ + FALSE, /* partial_inplace. */ + 0xffffffff, /* src_mask. */ + 0xffffffff, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + /* Like R_M32R_24, but used when setting global offset table + entries. */ + HOWTO (R_V850_GLOB_DAT, /* type. */ + 0, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize. */ + FALSE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_bitfield, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_V850_GLOB_DAT", /* name. */ + FALSE, /* partial_inplace. */ + 0xffffffff, /* src_mask. */ + 0xffffffff, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + /* Marks a procedure linkage table entry for a symbol. */ + HOWTO (R_V850_JMP_SLOT, /* type. */ + 0, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize. */ + FALSE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_bitfield, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_V850_JMP_SLOT", /* name. */ + FALSE, /* partial_inplace. */ + 0xffffffff, /* src_mask. */ + 0xffffffff, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + /* Used only by the dynamic linker. When the object is run, this + longword is set to the load address of the object, plus the + addend. */ + HOWTO (R_V850_RELATIVE, /* type. */ + 0, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize. */ + FALSE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_bitfield, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_V850_RELATIVE", /* name. */ + FALSE, /* partial_inplace. */ + 0xffffffff, /* src_mask. */ + 0xffffffff, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + HOWTO (R_V850_16_GOTOFF, /* type. */ + 0, /* rightshift. */ + 2, /* 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_V850_16_GOTOFF", /* name. */ + FALSE, /* partial_inplace. */ + 0xffff, /* src_mask. */ + 0xffff, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + HOWTO (R_V850_32_GOTOFF, /* type. */ + 0, /* rightshift. */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize. */ + FALSE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_bitfield, /* complain_on_overflow. */ + bfd_elf_generic_reloc, /* special_function. */ + "R_V850_32_GOTOFF", /* name. */ + FALSE, /* partial_inplace. */ + 0xffffffff, /* src_mask. */ + 0xffffffff, /* dst_mask. */ + FALSE), /* pcrel_offset. */ + + HOWTO (R_V850_CODE, /* type. */ + 0, /* rightshift. */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize. */ + FALSE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_unsigned, /* complain_on_overflow. */ + v850_elf_ignore_reloc, /* special_function. */ + "R_V850_CODE", /* name. */ + FALSE, /* partial_inplace. */ + 0, /* src_mask. */ + 0, /* dst_mask. */ + TRUE), /* pcrel_offset. */ + + HOWTO (R_V850_DATA, /* type. */ + 0, /* rightshift. */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize. */ + FALSE, /* pc_relative. */ + 0, /* bitpos. */ + complain_overflow_unsigned, /* complain_on_overflow. */ + v850_elf_ignore_reloc, /* special_function. */ + "R_V850_DATA", /* name. */ + FALSE, /* partial_inplace. */ + 0, /* src_mask. */ + 0, /* dst_mask. */ + TRUE), /* pcrel_offset. */ + }; /* Map BFD reloc types to V850 ELF reloc types. */ @@ -1287,16 +1688,16 @@ static const struct v850_elf_reloc_map v850_elf_reloc_map[] = { - { BFD_RELOC_NONE, R_V850_NONE }, - { BFD_RELOC_V850_9_PCREL, R_V850_9_PCREL }, - { BFD_RELOC_V850_22_PCREL, R_V850_22_PCREL }, - { BFD_RELOC_HI16_S, R_V850_HI16_S }, - { BFD_RELOC_HI16, R_V850_HI16 }, - { BFD_RELOC_LO16, R_V850_LO16 }, - { BFD_RELOC_32, R_V850_ABS32 }, - { BFD_RELOC_32_PCREL, R_V850_REL32 }, - { BFD_RELOC_16, R_V850_16 }, - { BFD_RELOC_8, R_V850_8 }, + { BFD_RELOC_NONE, R_V850_NONE }, + { BFD_RELOC_V850_9_PCREL, R_V850_9_PCREL }, + { BFD_RELOC_V850_22_PCREL, R_V850_22_PCREL }, + { BFD_RELOC_HI16_S, R_V850_HI16_S }, + { BFD_RELOC_HI16, R_V850_HI16 }, + { BFD_RELOC_LO16, R_V850_LO16 }, + { BFD_RELOC_32, R_V850_ABS32 }, + { BFD_RELOC_32_PCREL, R_V850_REL32 }, + { BFD_RELOC_16, R_V850_16 }, + { BFD_RELOC_8, R_V850_8 }, { BFD_RELOC_V850_SDA_16_16_OFFSET, R_V850_SDA_16_16_OFFSET }, { BFD_RELOC_V850_SDA_15_16_OFFSET, R_V850_SDA_15_16_OFFSET }, { BFD_RELOC_V850_ZDA_16_16_OFFSET, R_V850_ZDA_16_16_OFFSET }, @@ -1317,7 +1718,28 @@ { BFD_RELOC_V850_LONGCALL, R_V850_LONGCALL }, { BFD_RELOC_V850_LONGJUMP, R_V850_LONGJUMP }, { BFD_RELOC_V850_ALIGN, R_V850_ALIGN }, - + { BFD_RELOC_V850_16_PCREL, R_V850_16_PCREL }, + { BFD_RELOC_V850_17_PCREL, R_V850_17_PCREL }, + { BFD_RELOC_V850_23, R_V850_23 }, + { BFD_RELOC_V850_32_PCREL, R_V850_32_PCREL }, + { BFD_RELOC_V850_32_ABS, R_V850_32_ABS }, + { BFD_RELOC_V850_16_SPLIT_OFFSET, R_V850_HI16 }, + { BFD_RELOC_V850_16_S1, R_V850_16_S1 }, + { BFD_RELOC_V850_LO16_S1, R_V850_LO16_S1 }, + { BFD_RELOC_V850_CALLT_15_16_OFFSET, R_V850_CALLT_15_16_OFFSET }, + { BFD_RELOC_V850_32_GOTPCREL, R_V850_32_GOTPCREL }, + { BFD_RELOC_V850_16_GOT, R_V850_16_GOT }, + { BFD_RELOC_V850_32_GOT, R_V850_32_GOT }, + { BFD_RELOC_V850_22_PLT_PCREL, R_V850_22_PLT }, + { BFD_RELOC_V850_32_PLT_PCREL, R_V850_32_PLT }, + { BFD_RELOC_V850_COPY, R_V850_COPY }, + { BFD_RELOC_V850_GLOB_DAT, R_V850_GLOB_DAT }, + { BFD_RELOC_V850_JMP_SLOT, R_V850_JMP_SLOT }, + { BFD_RELOC_V850_RELATIVE, R_V850_RELATIVE }, + { BFD_RELOC_V850_16_GOTOFF, R_V850_16_GOTOFF }, + { BFD_RELOC_V850_32_GOTOFF, R_V850_32_GOTOFF }, + { BFD_RELOC_V850_CODE, R_V850_CODE }, + { BFD_RELOC_V850_DATA, R_V850_DATA }, }; /* Map a bfd relocation into the appropriate howto structure. */ @@ -1424,28 +1846,54 @@ value -= offset; break; + case R_V850_16_PCREL: + value -= (input_section->output_section->vma + + input_section->output_offset + + offset); + + /* If the sign extension will corrupt the value then we have overflowed. */ + if ((value & 0xffff0000) != 0xffff0000) + return bfd_reloc_overflow; + + break; + + case R_V850_17_PCREL: + value -= (input_section->output_section->vma + + input_section->output_offset + + offset); + + /* If the sign extension will corrupt the value then we have overflowed. */ + if (((value & 0xffff0000) != 0x0) && ((value & 0xffff0000) != 0xffff0000)) + return bfd_reloc_overflow; + + value = SEXT17 (value); + break; + case R_V850_22_PCREL: value -= (input_section->output_section->vma + input_section->output_offset + offset); /* If the sign extension will corrupt the value then we have overflowed. */ - if (((value & 0xff000000) != 0x0) && ((value & 0xff000000) != 0xff000000)) + if (((value & 0xffe00000) != 0x0) && ((value & 0xffe00000) != 0xffe00000)) return bfd_reloc_overflow; - /* Only the bottom 24 bits of the PC are valid. */ - value = SEXT24 (value); + /* Only the bottom 22 bits of the PC are valid. */ + value = SEXT22 (value); break; - case R_V850_REL32: + case R_V850_32_PCREL: value -= (input_section->output_section->vma + input_section->output_offset + offset); break; + case R_V850_32_ABS: + case R_V850_23: case R_V850_HI16_S: case R_V850_HI16: case R_V850_LO16: + case R_V850_LO16_S1: case R_V850_LO16_SPLIT_OFFSET: case R_V850_16: case R_V850_ABS32: @@ -1488,10 +1936,10 @@ case R_V850_TDA_4_4_OFFSET: case R_V850_TDA_4_5_OFFSET: - case R_V850_TDA_16_16_OFFSET: case R_V850_TDA_7_7_OFFSET: case R_V850_TDA_7_8_OFFSET: case R_V850_TDA_6_8_OFFSET: + case R_V850_TDA_16_16_OFFSET: { unsigned long ep; struct bfd_link_hash_entry * h; @@ -1528,6 +1976,7 @@ } break; + case R_V850_CALLT_15_16_OFFSET: case R_V850_CALLT_16_16_OFFSET: { unsigned long ctbp; @@ -1645,15 +2094,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -1773,6 +2215,12 @@ case E_V850E1_ARCH: bfd_default_set_arch_mach (abfd, bfd_arch_v850, bfd_mach_v850e1); break; + case E_V850E2_ARCH: + bfd_default_set_arch_mach (abfd, bfd_arch_v850, bfd_mach_v850e2); + break; + case E_V850E2V3_ARCH: + bfd_default_set_arch_mach (abfd, bfd_arch_v850, bfd_mach_v850e2v3); + break; } return TRUE; } @@ -1791,6 +2239,8 @@ case bfd_mach_v850: val = E_V850_ARCH; break; case bfd_mach_v850e: val = E_V850E_ARCH; break; case bfd_mach_v850e1: val = E_V850E1_ARCH; break; + case bfd_mach_v850e2: val = E_V850E2_ARCH; break; + case bfd_mach_v850e2v3: val = E_V850E2V3_ARCH; break; } elf_elfheader (abfd)->e_flags &=~ EF_V850_ARCH; @@ -1854,20 +2304,40 @@ if ((in_flags & EF_V850_ARCH) != (out_flags & EF_V850_ARCH) && (in_flags & EF_V850_ARCH) != E_V850_ARCH) { + /* Allow v850e1 binaries to be linked with v850e binaries. - Set the output binary to v850e. */ + Set the output binary to v850e. */ if ((in_flags & EF_V850_ARCH) == E_V850E1_ARCH - && (out_flags & EF_V850_ARCH) == E_V850E_ARCH) - return TRUE; + && (out_flags & EF_V850_ARCH) == E_V850E_ARCH) + return TRUE; - if ((in_flags & EF_V850_ARCH) == E_V850E_ARCH - && (out_flags & EF_V850_ARCH) == E_V850E1_ARCH) + if ((in_flags & EF_V850_ARCH) == E_V850_ARCH + && (out_flags & EF_V850_ARCH) == E_V850E_ARCH) { elf_elfheader (obfd)->e_flags = ((out_flags & ~ EF_V850_ARCH) | E_V850E_ARCH); return TRUE; } + if (((in_flags & EF_V850_ARCH) == E_V850_ARCH + || (in_flags & EF_V850_ARCH) == E_V850E_ARCH) + && (out_flags & EF_V850_ARCH) == E_V850E2_ARCH) + { + elf_elfheader (obfd)->e_flags = + ((out_flags & ~ EF_V850_ARCH) | E_V850E2_ARCH); + return TRUE; + } + + if (((in_flags & EF_V850_ARCH) == E_V850_ARCH + || (in_flags & EF_V850_ARCH) == E_V850E_ARCH + || (in_flags & EF_V850_ARCH) == E_V850E2_ARCH) + && (out_flags & EF_V850_ARCH) == E_V850E2V3_ARCH) + { + elf_elfheader (obfd)->e_flags = + ((out_flags & ~ EF_V850_ARCH) | E_V850E2V3_ARCH); + return TRUE; + } + _bfd_error_handler (_("%B: Architecture mismatch with previous modules"), ibfd); } @@ -1886,7 +2356,7 @@ _bfd_elf_print_private_bfd_data (abfd, ptr); - /* xgettext:c-format */ + /* xgettext:c-format. */ fprintf (file, _("private flags = %lx: "), elf_elfheader (abfd)->e_flags); switch (elf_elfheader (abfd)->e_flags & EF_V850_ARCH) @@ -1895,6 +2365,8 @@ case E_V850_ARCH: fprintf (file, _("v850 architecture")); break; case E_V850E_ARCH: fprintf (file, _("v850e architecture")); break; case E_V850E1_ARCH: fprintf (file, _("v850e1 architecture")); break; + case E_V850E2_ARCH: fprintf (file, _("v850e2 architecture")); break; + case E_V850E2V3_ARCH: fprintf (file, _("v850e2v3 architecture")); break; } fputc ('\n', file); @@ -1956,7 +2428,7 @@ FIXME: Should we alter the st_shndx field as well ? */ if (indx < elf_numsections (abfd)) - switch (elf_elfsections(abfd)[indx]->sh_type) + switch (elf_elfsections (abfd)[indx]->sh_type) { case SHT_V850_SCOMMON: indx = SHN_V850_SCOMMON; @@ -2053,7 +2525,7 @@ FIXME: Should we alter the st_shndx field as well ? */ if (indx < elf_numsections (abfd)) - switch (elf_elfsections(abfd)[indx]->sh_type) + switch (elf_elfsections (abfd)[indx]->sh_type) { case SHT_V850_SCOMMON: indx = SHN_V850_SCOMMON; @@ -2188,7 +2660,7 @@ Elf32_External_Sym *extsyms; Elf32_External_Sym *esym; Elf32_External_Sym *esymend; - int index; + int sym_index; unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel; @@ -2336,12 +2808,12 @@ esym = extsyms + symtab_hdr->sh_info; esymend = extsyms + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)); - for (index = 0; esym < esymend; esym ++, index ++) + for (sym_index = 0; esym < esymend; esym ++, sym_index ++) { Elf_Internal_Sym isym; bfd_elf32_swap_symbol_in (abfd, esym, shndx, & isym); - sym_hash = elf_sym_hashes (abfd) [index]; + sym_hash = elf_sym_hashes (abfd) [sym_index]; if (isym.st_shndx == sec_shndx && ((sym_hash)->root.type == bfd_link_hash_defined @@ -2383,22 +2855,22 @@ } #define NOP_OPCODE (0x0000) -#define MOVHI 0x0640 /* 4byte */ +#define MOVHI 0x0640 /* 4byte. */ #define MOVHI_MASK 0x07e0 -#define MOVHI_R1(insn) ((insn) & 0x1f) /* 4byte */ +#define MOVHI_R1(insn) ((insn) & 0x1f) /* 4byte. */ #define MOVHI_R2(insn) ((insn) >> 11) -#define MOVEA 0x0620 /* 2byte */ +#define MOVEA 0x0620 /* 2byte. */ #define MOVEA_MASK 0x07e0 #define MOVEA_R1(insn) ((insn) & 0x1f) #define MOVEA_R2(insn) ((insn) >> 11) -#define JARL_4 0x00040780 /* 4byte */ +#define JARL_4 0x00040780 /* 4byte. */ #define JARL_4_MASK 0xFFFF07FF #define JARL_R2(insn) (int)(((insn) & (~JARL_4_MASK)) >> 11) -#define ADD_I 0x0240 /* 2byte */ +#define ADD_I 0x0240 /* 2byte. */ #define ADD_I_MASK 0x07e0 -#define ADD_I5(insn) ((((insn) & 0x001f) << 11) >> 11) /* 2byte */ +#define ADD_I5(insn) ((((insn) & 0x001f) << 11) >> 11) /* 2byte. */ #define ADD_R2(insn) ((insn) >> 11) -#define JMP_R 0x0060 /* 2byte */ +#define JMP_R 0x0060 /* 2byte. */ #define JMP_R_MASK 0xFFE0 #define JMP_R1(insn) ((insn) & 0x1f) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-vax.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-vax.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-vax.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-vax.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,6 +1,6 @@ /* VAX series support for 32-bit ELF Copyright 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Matt Thomas . This file is part of BFD, the Binary File Descriptor library. @@ -371,7 +371,7 @@ static const bfd_byte elf_vax_plt_entry[PLT_ENTRY_SIZE] = { 0xfc, 0x0f, /* .word ^M */ - 0x16, 0xef, /* jsb L^(pc) */ + 0x16, 0xef, /* jsb L^(pc) */ 0, 0, 0, 0, /* replaced with offset to start of .plt */ 0, 0, 0, 0, /* index into .rela.plt */ }; @@ -407,35 +407,24 @@ bfd_vma got_addend; }; -/* VAX ELF linker hash table. */ - -struct elf_vax_link_hash_table -{ - struct elf_link_hash_table root; -}; - /* Declare this now that the above structures are defined. */ static bfd_boolean elf_vax_discard_copies (struct elf_vax_link_hash_entry *, - PTR); + void *); /* Declare this now that the above structures are defined. */ static bfd_boolean elf_vax_instantiate_got_entries (struct elf_link_hash_entry *, - PTR); + void *); /* Traverse an VAX ELF linker hash table. */ #define elf_vax_link_hash_traverse(table, func, info) \ (elf_link_hash_traverse \ - (&(table)->root, \ + ((table), \ (bfd_boolean (*) (struct elf_link_hash_entry *, PTR)) (func), \ (info))) -/* Get the VAX ELF linker hash table from a link_info structure. */ - -#define elf_vax_hash_table(p) ((struct elf_vax_link_hash_table *) (p)->hash) - /* Create an entry in an VAX ELF linker hash table. */ static struct bfd_hash_entry * @@ -472,22 +461,23 @@ static struct bfd_link_hash_table * elf_vax_link_hash_table_create (bfd *abfd) { - struct elf_vax_link_hash_table *ret; - bfd_size_type amt = sizeof (struct elf_vax_link_hash_table); + struct elf_link_hash_table *ret; + bfd_size_type amt = sizeof (struct elf_link_hash_table); ret = bfd_malloc (amt); if (ret == NULL) return NULL; - if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, + if (!_bfd_elf_link_hash_table_init (ret, abfd, elf_vax_link_hash_newfunc, - sizeof (struct elf_vax_link_hash_entry))) + sizeof (struct elf_vax_link_hash_entry), + GENERIC_ELF_DATA)) { free (ret); return NULL; } - return &ret->root.root; + return &ret->root; } /* Keep vax-specific flags in the ELF header */ @@ -504,7 +494,6 @@ static bfd_boolean elf32_vax_merge_private_bfd_data (bfd *ibfd, bfd *obfd) { - flagword out_flags; flagword in_flags; if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour @@ -512,7 +501,6 @@ return TRUE; in_flags = elf_elfheader (ibfd)->e_flags; - out_flags = elf_elfheader (obfd)->e_flags; if (!elf_flags_init (obfd)) { @@ -1132,7 +1120,7 @@ allocated space for them in the check_relocs routine, but we will not fill them in in the relocate_section routine. */ if (info->shared && info->symbolic) - elf_vax_link_hash_traverse (elf_vax_hash_table (info), + elf_vax_link_hash_traverse (elf_hash_table (info), elf_vax_discard_copies, NULL); @@ -1372,7 +1360,6 @@ bfd *dynobj; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; - bfd_vma *local_got_offsets; bfd_vma plt_index; bfd_vma got_offset; asection *sgot; @@ -1385,7 +1372,6 @@ dynobj = elf_hash_table (info)->dynobj; symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); - local_got_offsets = elf_local_got_offsets (input_bfd); sgot = NULL; splt = NULL; @@ -1467,15 +1453,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -1583,7 +1562,7 @@ if (sgotplt == NULL) { sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); - BFD_ASSERT (splt != NULL); + BFD_ASSERT (sgotplt != NULL); } plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1; @@ -1593,7 +1572,7 @@ The first two are reserved. */ got_offset = (plt_index + 3) * 4; - /* We want the relocate to point into the .got.plt instead + /* We want the relocation to point into the .got.plt instead of the plt itself. */ relocation = (sgotplt->output_section->vma + sgotplt->output_offset @@ -1625,7 +1604,7 @@ case R_VAX_16: case R_VAX_32: if (info->shared - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0 && ((r_type != R_VAX_PC8 && r_type != R_VAX_PC16 diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-xc16x.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-xc16x.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-xc16x.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-xc16x.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,5 +1,5 @@ /* Infineon XC16X-specific support for 16-bit ELF. - Copyright 2006, 2007, 2009 Free Software Foundation, Inc. + Copyright 2006, 2007, 2009, 2010 Free Software Foundation, Inc. Contributed by KPIT Cummins Infosystems This file is part of BFD, the Binary File Descriptor library. @@ -358,7 +358,6 @@ asection *sec; struct elf_link_hash_entry *h; bfd_vma relocation; - bfd_reloc_status_type r; /* This is a final link. */ r_symndx = ELF32_R_SYM (rel->r_info); @@ -386,23 +385,21 @@ { /* For relocs against symbols from removed linkonce sections, or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ + section contents cleared. Avoid any special processing. */ reloc_howto_type *howto; howto = xc16x_reloc_type_lookup (input_bfd, r_type); - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); } if (info->relocatable) continue; - r = elf32_xc16x_final_link_relocate (r_type, input_bfd, output_bfd, - input_section, - contents, rel->r_offset, - relocation, rel->r_addend, - info, sec, h == NULL); + elf32_xc16x_final_link_relocate (r_type, input_bfd, output_bfd, + input_section, + contents, rel->r_offset, + relocation, rel->r_addend, + info, sec, h == NULL); } return TRUE; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-xstormy16.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-xstormy16.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-xstormy16.c 2007-09-26 13:45:32.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-xstormy16.c 2010-10-25 15:54:14.000000000 +0000 @@ -832,15 +832,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf32-xtensa.c crash-6.1.6/=unpacked-tar1=/bfd/elf32-xtensa.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf32-xtensa.c 2009-09-09 01:38:40.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf32-xtensa.c 2010-10-25 15:54:14.000000000 +0000 @@ -1,5 +1,5 @@ /* Xtensa-specific support for 32-bit ELF. - Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -155,6 +155,10 @@ int elf32xtensa_no_literal_movement = 1; +/* Rename one of the generic section flags to better document how it + is used here. */ +/* Whether relocations have been processed. */ +#define reloc_done sec_flg0 static reloc_howto_type elf_howto_table[] = { @@ -572,13 +576,13 @@ #define is_xtensa_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == XTENSA_ELF_TDATA) + && elf_object_id (bfd) == XTENSA_ELF_DATA) static bfd_boolean elf_xtensa_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct elf_xtensa_obj_tdata), - XTENSA_ELF_TDATA); + XTENSA_ELF_DATA); } /* Xtensa ELF linker hash table. */ @@ -610,7 +614,8 @@ /* Get the Xtensa ELF linker hash table from a link_info structure. */ #define elf_xtensa_hash_table(p) \ - ((struct elf_xtensa_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == XTENSA_ELF_DATA ? ((struct elf_xtensa_link_hash_table *) ((p)->hash)) : NULL) /* Create an entry in an Xtensa ELF linker hash table. */ @@ -656,7 +661,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, elf_xtensa_link_hash_newfunc, - sizeof (struct elf_xtensa_link_hash_entry))) + sizeof (struct elf_xtensa_link_hash_entry), + XTENSA_ELF_DATA)) { free (ret); return NULL; @@ -977,6 +983,9 @@ BFD_ASSERT (is_xtensa_elf (abfd)); htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); @@ -1278,6 +1287,8 @@ struct elf_xtensa_link_hash_table *htab; htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return FALSE; if (info->relocatable) return TRUE; @@ -1397,6 +1408,8 @@ flagword flags, noalloc_flags; htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return FALSE; /* First do all the standard stuff. */ if (! _bfd_elf_create_dynamic_sections (dynobj, info)) @@ -1523,6 +1536,8 @@ info = (struct bfd_link_info *) arg; htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return FALSE; /* If we saw any use of an IE model for this symbol, we can then optimize away GOT entries for any TLSDESC_FN relocs. */ @@ -1552,6 +1567,8 @@ bfd *i; htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return; for (i = info->input_bfds; i; i = i->link_next) { @@ -1602,6 +1619,9 @@ plt_chunks = 0; htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = elf_hash_table (info)->dynobj; if (dynobj == NULL) abort (); @@ -1835,6 +1855,9 @@ asection *tls_sec; htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return FALSE; + tls_sec = htab->elf.tls_sec; if (tls_sec && (htab->tlsbase->tls_type & GOT_TLS_ANY) != 0) @@ -1943,9 +1966,8 @@ if (!is_weak_undef) { /* Check for windowed CALL across a 1GB boundary. */ - xtensa_opcode opcode = - get_expanded_call_opcode (contents + address, - input_size - address, 0); + opcode = get_expanded_call_opcode (contents + address, + input_size - address, 0); if (is_windowed_call_opcode (opcode)) { if ((self_address >> CALL_SEGMENT_BITS) @@ -2547,6 +2569,9 @@ BFD_ASSERT (is_xtensa_elf (input_bfd)); htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); local_got_tls_types = elf_xtensa_local_got_tls_type (input_bfd); @@ -2635,18 +2660,14 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) { + bfd_vma dest_addr; + asection * sym_sec = get_elf_r_symndx_section (input_bfd, r_symndx); + /* This is a relocatable link. 1) If the reloc is against a section symbol, adjust according to the output section. @@ -2663,9 +2684,12 @@ return FALSE; } + dest_addr = sym_sec->output_section->vma + sym_sec->output_offset + + get_elf_r_symndx_offset (input_bfd, r_symndx) + rel->r_addend; + if (r_type == R_XTENSA_ASM_SIMPLIFY) { - char *error_message = NULL; + error_message = NULL; /* Convert ASM_SIMPLIFY into the simpler relocation so that they never escape a relaxing link. */ r = contract_asm_expansion (contents, input_size, rel, @@ -2699,25 +2723,41 @@ to work around problems with DWARF in relocatable links with some previous version of BFD. Now we can't easily get rid of the hack without breaking backward compatibility.... */ - if (rel->r_addend) + r = bfd_reloc_ok; + howto = &elf_howto_table[r_type]; + if (howto->partial_inplace && rel->r_addend) + { + r = elf_xtensa_do_reloc (howto, input_bfd, input_section, + rel->r_addend, contents, + rel->r_offset, FALSE, + &error_message); + rel->r_addend = 0; + } + else { - howto = &elf_howto_table[r_type]; - if (howto->partial_inplace) + /* Put the correct bits in the target instruction, even + though the relocation will still be present in the output + file. This makes disassembly clearer, as well as + allowing loadable kernel modules to work without needing + relocations on anything other than calls and l32r's. */ + + /* If it is not in the same section, there is nothing we can do. */ + if (r_type >= R_XTENSA_SLOT0_OP && r_type <= R_XTENSA_SLOT14_OP && + sym_sec->output_section == input_section->output_section) { r = elf_xtensa_do_reloc (howto, input_bfd, input_section, - rel->r_addend, contents, + dest_addr, contents, rel->r_offset, FALSE, &error_message); - if (r != bfd_reloc_ok) - { - if (!((*info->callbacks->reloc_dangerous) - (info, error_message, input_bfd, input_section, - rel->r_offset))) - return FALSE; - } - rel->r_addend = 0; } } + if (r != bfd_reloc_ok) + { + if (!((*info->callbacks->reloc_dangerous) + (info, error_message, input_bfd, input_section, + rel->r_offset))) + return FALSE; + } /* Done with work for relocatable link; continue with next reloc. */ continue; @@ -2753,7 +2793,7 @@ name = bfd_section_name (input_bfd, sec); } - if (r_symndx != 0 + if (r_symndx != STN_UNDEF && r_type != R_XTENSA_NONE && (h == NULL || h->root.type == bfd_link_hash_defined @@ -3166,18 +3206,18 @@ for (n = 0; n < num; n++) { - bfd_boolean remove = FALSE; + bfd_boolean remove_entry = FALSE; if (table[n].size == 0) - remove = TRUE; - else if (n > 0 && - (table[n-1].address + table[n-1].size == table[n].address)) + remove_entry = TRUE; + else if (n > 0 + && (table[n-1].address + table[n-1].size == table[n].address)) { table[n-1].size += table[n].size; - remove = TRUE; + remove_entry = TRUE; } - if (remove) + if (remove_entry) { for (m = n; m < num - 1; m++) { @@ -3232,6 +3272,9 @@ return TRUE; htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = elf_hash_table (info)->dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); BFD_ASSERT (sdyn != NULL); @@ -3752,7 +3795,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -5660,7 +5703,7 @@ fprintf (fp, "%s: %s[0x%lx] \"%s\" %d\n", r->sec->owner->filename, - r->sec->name, r->offset, t, r->removed_bytes); + r->sec->name, (unsigned long) r->offset, t, r->removed_bytes); } } @@ -7779,7 +7822,6 @@ text_action_list *action_list, bfd_vma offset) { - xlate_map_entry_t tmp; void *r; xlate_map_entry_t *e; @@ -7789,10 +7831,6 @@ if (map->entry_count == 0) return offset; - tmp.orig_address = offset; - tmp.new_address = offset; - tmp.size = 1; - r = bsearch (&offset, map->entry, map->entry_count, sizeof (xlate_map_entry_t), &xlate_compare); e = (xlate_map_entry_t *) r; @@ -8820,6 +8858,9 @@ internal_relocs = retrieve_internal_relocs (abfd, sec, link_info->keep_memory); + if (!internal_relocs && !relax_info->action_list.head) + return TRUE; + contents = retrieve_contents (abfd, sec, link_info->keep_memory); if (contents == NULL && sec_size != 0) { @@ -9496,6 +9537,9 @@ bfd_boolean dynamic_symbol; htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); @@ -9604,12 +9648,10 @@ { int r_type; unsigned i; - asection *target_sec; reloc_bfd_fix *fix; unsigned insert_at; r_type = ELF32_R_TYPE (r_rel->rela.r_info); - target_sec = r_reloc_get_section (r_rel); /* This is the difficult case. We have to create a fix up. */ this_rela.r_offset = offset; @@ -10226,6 +10268,9 @@ if (chunk == 0) { htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return NULL; + return htab->splt; } @@ -10245,6 +10290,8 @@ if (chunk == 0) { htab = elf_xtensa_hash_table (info); + if (htab == NULL) + return NULL; return htab->sgotplt; } @@ -10712,6 +10759,7 @@ { NULL, 0, 0, 0, 0 } }; +#define ELF_TARGET_ID XTENSA_ELF_DATA #ifndef ELF_ARCH #define TARGET_LITTLE_SYM bfd_elf32_xtensa_le_vec #define TARGET_LITTLE_NAME "elf32-xtensa-le" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf64-alpha.c crash-6.1.6/=unpacked-tar1=/bfd/elf64-alpha.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf64-alpha.c 2008-11-25 13:03:55.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf64-alpha.c 2011-03-29 21:18:16.000000000 +0000 @@ -1,6 +1,6 @@ /* Alpha specific support for 64-bit ELF Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of BFD, the Binary File Descriptor library. @@ -103,6 +103,57 @@ #define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so" + +/* Used to implement multiple .got subsections. */ +struct alpha_elf_got_entry +{ + struct alpha_elf_got_entry *next; + + /* Which .got subsection? */ + bfd *gotobj; + + /* The addend in effect for this entry. */ + bfd_vma addend; + + /* The .got offset for this entry. */ + int got_offset; + + /* The .plt offset for this entry. */ + int plt_offset; + + /* How many references to this entry? */ + int use_count; + + /* The relocation type of this entry. */ + unsigned char reloc_type; + + /* How a LITERAL is used. */ + unsigned char flags; + + /* Have we initialized the dynamic relocation for this entry? */ + unsigned char reloc_done; + + /* Have we adjusted this entry for SEC_MERGE? */ + unsigned char reloc_xlated; +}; + +struct alpha_elf_reloc_entry +{ + struct alpha_elf_reloc_entry *next; + + /* Which .reloc section? */ + asection *srel; + + /* What kind of relocation? */ + unsigned int rtype; + + /* Is this against read-only section? */ + unsigned int reltext : 1; + + /* How many did we find? */ + unsigned long count; +}; + struct alpha_elf_link_hash_entry { struct elf_link_hash_entry root; @@ -125,56 +176,11 @@ #define ALPHA_ELF_LINK_HASH_TLS_IE 0x80 /* Used to implement multiple .got subsections. */ - struct alpha_elf_got_entry - { - struct alpha_elf_got_entry *next; - - /* Which .got subsection? */ - bfd *gotobj; - - /* The addend in effect for this entry. */ - bfd_vma addend; - - /* The .got offset for this entry. */ - int got_offset; - - /* The .plt offset for this entry. */ - int plt_offset; - - /* How many references to this entry? */ - int use_count; - - /* The relocation type of this entry. */ - unsigned char reloc_type; - - /* How a LITERAL is used. */ - unsigned char flags; - - /* Have we initialized the dynamic relocation for this entry? */ - unsigned char reloc_done; - - /* Have we adjusted this entry for SEC_MERGE? */ - unsigned char reloc_xlated; - } *got_entries; + struct alpha_elf_got_entry *got_entries; /* Used to count non-got, non-plt relocations for delayed sizing of relocation sections. */ - struct alpha_elf_reloc_entry - { - struct alpha_elf_reloc_entry *next; - - /* Which .reloc section? */ - asection *srel; - - /* What kind of relocation? */ - unsigned int rtype; - - /* Is this against read-only section? */ - unsigned int reltext : 1; - - /* How many did we find? */ - unsigned long count; - } *reloc_entries; + struct alpha_elf_reloc_entry *reloc_entries; }; /* Alpha ELF linker hash table. */ @@ -210,7 +216,8 @@ /* Get the Alpha ELF linker hash table from a link_info structure. */ #define alpha_elf_hash_table(p) \ - ((struct alpha_elf_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == ALPHA_ELF_DATA ? ((struct alpha_elf_link_hash_table *) ((p)->hash)) : NULL) /* Get the object's symbols as our own entry type. */ @@ -281,7 +288,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, elf64_alpha_link_hash_newfunc, - sizeof (struct alpha_elf_link_hash_entry))) + sizeof (struct alpha_elf_link_hash_entry), + ALPHA_ELF_DATA)) { free (ret); return NULL; @@ -327,13 +335,13 @@ #define is_alpha_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == ALPHA_ELF_TDATA) + && elf_object_id (bfd) == ALPHA_ELF_DATA) static bfd_boolean elf64_alpha_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct alpha_elf_obj_tdata), - ALPHA_ELF_TDATA); + ALPHA_ELF_DATA); } static bfd_boolean @@ -458,8 +466,9 @@ from smaller values. Start with zero, widen, *then* decrement. */ #define MINUS_ONE (((bfd_vma)0) - 1) + #define SKIP_HOWTO(N) \ - HOWTO(N, 0, 0, 0, 0, 0, 0, elf64_alpha_reloc_bad, 0, 0, 0, 0, 0) + HOWTO(N, 0, 0, 0, 0, 0, complain_overflow_dont, elf64_alpha_reloc_bad, 0, 0, 0, 0, 0) static reloc_howto_type elf64_alpha_howto_table[] = { @@ -485,7 +494,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "REFLONG", /* name */ FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -500,7 +509,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "REFQUAD", /* name */ FALSE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -517,7 +526,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "GPREL32", /* name */ FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -532,7 +541,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "ELF_LITERAL", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -598,7 +607,7 @@ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "BRADDR", /* name */ FALSE, /* partial_inplace */ 0x1fffff, /* src_mask */ @@ -613,7 +622,7 @@ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "HINT", /* name */ FALSE, /* partial_inplace */ 0x3fff, /* src_mask */ @@ -628,7 +637,7 @@ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "SREL16", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -643,7 +652,7 @@ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "SREL32", /* name */ FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -658,7 +667,7 @@ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "SREL64", /* name */ FALSE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -680,7 +689,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "GPRELHIGH", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -695,7 +704,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "GPRELLOW", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -710,7 +719,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "GPREL16", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -796,7 +805,7 @@ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "BRSGP", /* name */ FALSE, /* partial_inplace */ 0x1fffff, /* src_mask */ @@ -811,7 +820,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "TLSGD", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -826,7 +835,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "TLSLDM", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -841,7 +850,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "DTPMOD64", /* name */ FALSE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -857,7 +866,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "GOTDTPREL", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -872,7 +881,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "DTPREL64", /* name */ FALSE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -887,7 +896,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "DTPRELHI", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -902,7 +911,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "DTPRELLO", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -917,7 +926,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "DTPREL16", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -933,7 +942,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "GOTTPREL", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -948,7 +957,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "TPREL64", /* name */ FALSE, /* partial_inplace */ MINUS_ONE, /* src_mask */ @@ -963,7 +972,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "TPRELHI", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -978,7 +987,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "TPRELLO", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -993,7 +1002,7 @@ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - 0, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "TPREL16", /* name */ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ @@ -1857,8 +1866,8 @@ case R_ALPHA_TLSLDM: /* The symbol for a TLSLDM reloc is ignored. Collapse the - reloc to the 0 symbol so that they all match. */ - r_symndx = 0; + reloc to the STN_UNDEF (0) symbol so that they all match. */ + r_symndx = STN_UNDEF; h = 0; maybe_dynamic = FALSE; /* FALLTHRU */ @@ -1979,6 +1988,93 @@ return TRUE; } +/* Return the section that should be marked against GC for a given + relocation. */ + +static asection * +elf64_alpha_gc_mark_hook (asection *sec, struct bfd_link_info *info, + Elf_Internal_Rela *rel, + struct elf_link_hash_entry *h, Elf_Internal_Sym *sym) +{ + /* These relocations don't really reference a symbol. Instead we store + extra data in their addend slot. Ignore the symbol. */ + switch (ELF64_R_TYPE (rel->r_info)) + { + case R_ALPHA_LITUSE: + case R_ALPHA_GPDISP: + case R_ALPHA_HINT: + return NULL; + } + + return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym); +} + +/* Update the got entry reference counts for the section being removed. */ + +static bfd_boolean +elf64_alpha_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, + asection *sec, const Elf_Internal_Rela *relocs) +{ + Elf_Internal_Shdr *symtab_hdr; + struct alpha_elf_link_hash_entry **sym_hashes; + const Elf_Internal_Rela *rel, *relend; + + if (info->relocatable) + return TRUE; + + symtab_hdr = &elf_symtab_hdr (abfd); + sym_hashes = alpha_elf_sym_hashes (abfd); + + relend = relocs + sec->reloc_count; + for (rel = relocs; rel < relend; rel++) + { + unsigned long r_symndx, r_type; + struct alpha_elf_link_hash_entry *h = NULL; + struct alpha_elf_got_entry *gotent; + + r_symndx = ELF64_R_SYM (rel->r_info); + if (r_symndx >= symtab_hdr->sh_info) + { + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + while (h->root.root.type == bfd_link_hash_indirect + || h->root.root.type == bfd_link_hash_warning) + h = (struct alpha_elf_link_hash_entry *) h->root.root.u.i.link; + } + + r_type = ELF64_R_TYPE (rel->r_info); + switch (r_type) + { + case R_ALPHA_LITERAL: + /* ??? Ignore re-computation of gotent_flags. We're not + carrying a use-count for each bit in that mask. */ + + case R_ALPHA_TLSGD: + case R_ALPHA_GOTDTPREL: + case R_ALPHA_GOTTPREL: + /* Fetch the got entry from the tables. */ + gotent = get_got_entry (abfd, h, r_type, r_symndx, rel->r_addend); + + /* The got entry *must* exist, since we should have created it + before during check_relocs. Also note that get_got_entry + assumed this was going to be another use, and so incremented + the use count again. Thus the use count must be at least the + one real use and the "use" we just added. */ + if (gotent == NULL || gotent->use_count < 2) + { + abort (); + return FALSE; + } + gotent->use_count -= 2; + break; + + default: + break; + } + } + + 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 @@ -2315,7 +2411,13 @@ static void elf64_alpha_calc_got_offsets (struct bfd_link_info *info) { - bfd *i, *got_list = alpha_elf_hash_table(info)->got_list; + bfd *i, *got_list; + struct alpha_elf_link_hash_table * htab; + + htab = alpha_elf_hash_table (info); + if (htab == NULL) + return; + got_list = htab->got_list; /* First, zero out the .got sizes, as we may be recalculating the .got after optimizing it. */ @@ -2323,7 +2425,7 @@ alpha_elf_tdata(i)->got->size = 0; /* Next, fill in the offsets for all the global entries. */ - alpha_elf_link_hash_traverse (alpha_elf_hash_table (info), + alpha_elf_link_hash_traverse (htab, elf64_alpha_calc_got_offsets_for_symbol, NULL); @@ -2361,8 +2463,12 @@ elf64_alpha_size_got_sections (struct bfd_link_info *info) { bfd *i, *got_list, *cur_got_obj = NULL; + struct alpha_elf_link_hash_table * htab; - got_list = alpha_elf_hash_table (info)->got_list; + htab = alpha_elf_hash_table (info); + if (htab == NULL) + return FALSE; + got_list = htab->got_list; /* On the first time through, pretend we have an existing got list consisting of all of the input files. */ @@ -2402,7 +2508,7 @@ if (got_list == NULL) return TRUE; - alpha_elf_hash_table (info)->got_list = got_list; + htab->got_list = got_list; } cur_got_obj = got_list; @@ -2473,6 +2579,11 @@ asection *splt, *spltrel, *sgotplt; unsigned long entries; bfd *dynobj; + struct alpha_elf_link_hash_table * htab; + + htab = alpha_elf_hash_table (info); + if (htab == NULL) + return; dynobj = elf_hash_table(info)->dynobj; splt = bfd_get_section_by_name (dynobj, ".plt"); @@ -2481,7 +2592,7 @@ splt->size = 0; - alpha_elf_link_hash_traverse (alpha_elf_hash_table (info), + alpha_elf_link_hash_traverse (htab, elf64_alpha_size_plt_section_1, splt); /* Every plt entry requires a JMP_SLOT relocation. */ @@ -2511,20 +2622,24 @@ struct bfd_link_info *info) { bfd *i; + struct alpha_elf_link_hash_table * htab; if (info->relocatable) return TRUE; + htab = alpha_elf_hash_table (info); + if (htab == NULL) + return FALSE; + /* First, take care of the indirect symbols created by versioning. */ - alpha_elf_link_hash_traverse (alpha_elf_hash_table (info), - elf64_alpha_merge_ind_symbols, + alpha_elf_link_hash_traverse (htab, elf64_alpha_merge_ind_symbols, NULL); if (!elf64_alpha_size_got_sections (info)) return FALSE; /* Allocate space for all of the .got subsections. */ - i = alpha_elf_hash_table (info)->got_list; + i = htab->got_list; for ( ; i ; i = alpha_elf_tdata(i)->got_link_next) { asection *s = alpha_elf_tdata(i)->got; @@ -2680,12 +2795,17 @@ unsigned long entries; bfd *i, *dynobj; asection *srel; + struct alpha_elf_link_hash_table * htab; + + htab = alpha_elf_hash_table (info); + if (htab == NULL) + return; /* Shared libraries often require RELATIVE relocs, and some relocs require attention for the main application as well. */ entries = 0; - for (i = alpha_elf_hash_table(info)->got_list; + for (i = htab->got_list; i ; i = alpha_elf_tdata(i)->got_link_next) { bfd *j; @@ -2718,7 +2838,7 @@ srel->size = sizeof (Elf64_External_Rela) * entries; /* Now do the non-local symbols. */ - alpha_elf_link_hash_traverse (alpha_elf_hash_table (info), + alpha_elf_link_hash_traverse (htab, elf64_alpha_size_rela_got_1, info); } @@ -2731,6 +2851,11 @@ bfd *dynobj; asection *s; bfd_boolean relplt; + struct alpha_elf_link_hash_table * htab; + + htab = alpha_elf_hash_table (info); + if (htab == NULL) + return FALSE; dynobj = elf_hash_table(info)->dynobj; BFD_ASSERT(dynobj != NULL); @@ -2750,7 +2875,7 @@ symbols need dynamic relocation entries and which don't. We've collected information in check_relocs that we can now apply to size the dynamic relocation sections. */ - alpha_elf_link_hash_traverse (alpha_elf_hash_table (info), + alpha_elf_link_hash_traverse (htab, elf64_alpha_calc_dynrel_sizes, info); elf64_alpha_size_rela_got_section (info); @@ -3344,9 +3469,9 @@ Elf_Internal_Rela *irel, bfd_boolean is_gd) { bfd_byte *pos[5]; - unsigned int insn; + unsigned int insn, tlsgd_reg; Elf_Internal_Rela *gpdisp, *hint; - bfd_boolean dynamic, use_gottprel, pos1_unusable; + bfd_boolean dynamic, use_gottprel; unsigned long new_symndx; dynamic = alpha_elf_dynamic_symbol_p (&info->h->root, info->link_info); @@ -3387,7 +3512,6 @@ pos[2] = info->contents + irel[2].r_offset; pos[3] = info->contents + gpdisp->r_offset; pos[4] = pos[3] + gpdisp->r_addend; - pos1_unusable = FALSE; /* Generally, the positions are not allowed to be out of order, lest the modified insn sequence have different register lifetimes. We can make @@ -3398,8 +3522,6 @@ pos[0] = pos[1]; pos[1] = tmp; } - else if (pos[1] < pos[0]) - pos1_unusable = TRUE; if (pos[1] >= pos[2] || pos[2] >= pos[3]) return TRUE; @@ -3456,7 +3578,15 @@ as appropriate. */ use_gottprel = FALSE; - new_symndx = is_gd ? ELF64_R_SYM (irel->r_info) : 0; + new_symndx = is_gd ? ELF64_R_SYM (irel->r_info) : STN_UNDEF; + + /* Beware of the compiler hoisting part of the sequence out a loop + and adjusting the destination register for the TLSGD insn. If this + happens, there will be a move into $16 before the JSR insn, so only + transformations of the first insn pair should use this register. */ + tlsgd_reg = bfd_get_32 (info->abfd, pos[0]); + tlsgd_reg = (tlsgd_reg >> 21) & 31; + switch (!dynamic && !info->link_info->shared) { case 1: @@ -3470,7 +3600,7 @@ if (disp >= -0x8000 && disp < 0x8000) { - insn = (OP_LDA << 26) | (16 << 21) | (31 << 16); + insn = (OP_LDA << 26) | (tlsgd_reg << 21) | (31 << 16); bfd_put_32 (info->abfd, (bfd_vma) insn, pos[0]); bfd_put_32 (info->abfd, (bfd_vma) INSN_UNOP, pos[1]); @@ -3481,11 +3611,11 @@ } else if (disp >= -(bfd_signed_vma) 0x80000000 && disp < (bfd_signed_vma) 0x7fff8000 - && !pos1_unusable) + && pos[0] + 4 == pos[1]) { - insn = (OP_LDAH << 26) | (16 << 21) | (31 << 16); + insn = (OP_LDAH << 26) | (tlsgd_reg << 21) | (31 << 16); bfd_put_32 (info->abfd, (bfd_vma) insn, pos[0]); - insn = (OP_LDA << 26) | (16 << 21) | (16 << 16); + insn = (OP_LDA << 26) | (tlsgd_reg << 21) | (tlsgd_reg << 16); bfd_put_32 (info->abfd, (bfd_vma) insn, pos[1]); irel[0].r_offset = pos[0] - info->contents; @@ -3500,7 +3630,7 @@ default: use_gottprel = TRUE; - insn = (OP_LDQ << 26) | (16 << 21) | (29 << 16); + insn = (OP_LDQ << 26) | (tlsgd_reg << 21) | (29 << 16); bfd_put_32 (info->abfd, (bfd_vma) insn, pos[0]); bfd_put_32 (info->abfd, (bfd_vma) INSN_UNOP, pos[1]); @@ -3590,6 +3720,11 @@ Elf_Internal_Sym *isymbuf = NULL; struct alpha_elf_got_entry **local_got_entries; struct alpha_relax_info info; + struct alpha_elf_link_hash_table * htab; + + htab = alpha_elf_hash_table (link_info); + if (htab == NULL) + return FALSE; /* There's nothing to change, yet. */ *again = FALSE; @@ -3603,9 +3738,9 @@ BFD_ASSERT (is_alpha_elf (abfd)); /* Make sure our GOT and PLT tables are up-to-date. */ - if (alpha_elf_hash_table(link_info)->relax_trip != link_info->relax_trip) + if (htab->relax_trip != link_info->relax_trip) { - alpha_elf_hash_table(link_info)->relax_trip = link_info->relax_trip; + htab->relax_trip = link_info->relax_trip; /* This should never fail after the initial round, since the only error is GOT overflow, and relaxation only shrinks the table. */ @@ -3676,8 +3811,8 @@ case R_ALPHA_TLSLDM: /* The symbol for a TLSLDM reloc is ignored. Collapse the - reloc to the 0 symbol so that they all match. */ - r_symndx = 0; + reloc to the STN_UNDEF (0) symbol so that they all match. */ + r_symndx = STN_UNDEF; break; default: @@ -3977,16 +4112,10 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. */ - _bfd_clear_contents (elf64_alpha_howto_table + r_type, - input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, + elf64_alpha_howto_table + r_type, + contents); if (sym != NULL && ELF_ST_TYPE (sym->st_info) == STT_SECTION) rel->r_addend += sec->output_offset; @@ -4038,7 +4167,7 @@ const char *section_name; section_name = (bfd_elf_string_from_elf_section (input_bfd, elf_elfheader(input_bfd)->e_shstrndx, - elf_section_data(input_section)->rel_hdr.sh_name)); + _bfd_elf_single_rel_hdr (input_section)->sh_name)); BFD_ASSERT(section_name != NULL); srel = bfd_get_section_by_name (dynobj, section_name); } @@ -4106,9 +4235,9 @@ r_symndx = ELF64_R_SYM(rel->r_info); /* The symbol for a TLSLDM reloc is ignored. Collapse the - reloc to the 0 symbol so that they all match. */ + reloc to the STN_UNDEF (0) symbol so that they all match. */ if (r_type == R_ALPHA_TLSLDM) - r_symndx = 0; + r_symndx = STN_UNDEF; if (r_symndx < symtab_hdr->sh_info) { @@ -4118,10 +4247,10 @@ msec = sec; value = _bfd_elf_rela_local_sym (output_bfd, sym, &msec, rel); - /* If this is a tp-relative relocation against sym 0, + /* If this is a tp-relative relocation against sym STN_UNDEF (0), this is hackery from relax_section. Force the value to be the tls module base. */ - if (r_symndx == 0 + if (r_symndx == STN_UNDEF && (r_type == R_ALPHA_TLSLDM || r_type == R_ALPHA_GOTTPREL || r_type == R_ALPHA_TPREL64 @@ -4192,15 +4321,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); addend = rel->r_addend; value += addend; @@ -4407,7 +4529,7 @@ dynaddend = value - dtp_base; } else if (info->shared - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) && !undef_weak_ref) { @@ -4455,7 +4577,7 @@ /* ??? .eh_frame references to discarded sections will be smashed to relocations against SHN_UNDEF. The .eh_frame format allows NULL to be encoded as 0 in any format, so this works here. */ - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) howto = (elf64_alpha_howto_table + (r_type - R_ALPHA_SREL32 + R_ALPHA_REFLONG)); goto default_reloc; @@ -4926,7 +5048,12 @@ const struct ecoff_debug_swap *swap = get_elf_backend_data (abfd)->elf_backend_ecoff_debug_swap; HDRR *symhdr = &debug.symbolic_header; - PTR mdebug_handle = NULL; + void * mdebug_handle = NULL; + struct alpha_elf_link_hash_table * htab; + + htab = alpha_elf_hash_table (info); + if (htab == NULL) + return FALSE; /* Go through the sections and collect the mdebug information. */ mdebug_sec = NULL; @@ -5062,7 +5189,7 @@ 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_src = (char *) input_debug.external_ext; eraw_end = (eraw_src + (input_debug.symbolic_header.iextMax * input_swap->external_ext_size)); @@ -5081,8 +5208,7 @@ continue; name = input_debug.ssext + ext.asym.iss; - h = alpha_elf_link_hash_lookup (alpha_elf_hash_table (info), - name, FALSE, FALSE, TRUE); + h = alpha_elf_link_hash_lookup (htab, name, FALSE, FALSE, TRUE); if (h == NULL || h->esym.ifd != -2) continue; @@ -5146,7 +5272,7 @@ /* The .got subsections... */ { bfd *i, *dynobj = elf_hash_table(info)->dynobj; - for (i = alpha_elf_hash_table(info)->got_list; + for (i = htab->got_list; i != NULL; i = alpha_elf_tdata(i)->got_link_next) { @@ -5282,6 +5408,7 @@ #define TARGET_LITTLE_SYM bfd_elf64_alpha_vec #define TARGET_LITTLE_NAME "elf64-alpha" #define ELF_ARCH bfd_arch_alpha +#define ELF_TARGET_ID ALPHA_ELF_DATA #define ELF_MACHINE_CODE EM_ALPHA #define ELF_MAXPAGESIZE 0x10000 #define ELF_COMMONPAGESIZE 0x2000 @@ -5344,6 +5471,10 @@ #define elf_backend_reloc_type_class \ elf64_alpha_reloc_type_class +#define elf_backend_can_gc_sections 1 +#define elf_backend_gc_mark_hook elf64_alpha_gc_mark_hook +#define elf_backend_gc_sweep_hook elf64_alpha_gc_sweep_hook + #define elf_backend_ecoff_debug_swap \ &elf64_alpha_ecoff_debug_swap diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf64-hppa.c crash-6.1.6/=unpacked-tar1=/bfd/elf64-hppa.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf64-hppa.c 2009-05-21 14:15:49.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf64-hppa.c 2010-11-08 02:48:56.000000000 +0000 @@ -1,6 +1,6 @@ /* Support for HPPA 64-bit ELF - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -148,7 +148,8 @@ }; #define hppa_link_hash_table(p) \ - ((struct elf64_hppa_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == HPPA64_ELF_DATA ? ((struct elf64_hppa_link_hash_table *) ((p)->hash)) : NULL) #define hppa_elf_hash_entry(ent) \ ((struct elf64_hppa_link_hash_entry *)(ent)) @@ -303,7 +304,8 @@ if (!_bfd_elf_link_hash_table_init (&htab->root, abfd, hppa64_link_hash_newfunc, - sizeof (struct elf64_hppa_link_hash_entry))) + sizeof (struct elf64_hppa_link_hash_entry), + HPPA64_ELF_DATA)) { bfd_release (abfd, htab); return NULL; @@ -369,8 +371,6 @@ const char *name, int shindex) { - asection *newsect; - switch (hdr->sh_type) { case SHT_PARISC_EXT: @@ -389,7 +389,6 @@ if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex)) return FALSE; - newsect = hdr->bfd_section; return TRUE; } @@ -408,17 +407,10 @@ srel_name = (bfd_elf_string_from_elf_section (abfd, elf_elfheader(abfd)->e_shstrndx, - elf_section_data(sec)->rel_hdr.sh_name)); + _bfd_elf_single_rel_hdr(sec)->sh_name)); if (srel_name == NULL) return FALSE; - BFD_ASSERT ((CONST_STRNEQ (srel_name, ".rela") - && strcmp (bfd_get_section_name (abfd, sec), - srel_name + 5) == 0) - || (CONST_STRNEQ (srel_name, ".rel") - && strcmp (bfd_get_section_name (abfd, sec), - srel_name + 4) == 0)); - dynobj = hppa_info->root.dynobj; if (!dynobj) hppa_info->root.dynobj = dynobj = abfd; @@ -513,9 +505,6 @@ const Elf_Internal_Rela *relend; Elf_Internal_Shdr *symtab_hdr; const Elf_Internal_Rela *rel; - asection *dlt, *plt, *stubs; - char *buf; - size_t buf_len; unsigned int sec_symndx; if (info->relocatable) @@ -530,6 +519,8 @@ } hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) + return FALSE; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; /* If necessary, build a new table holding section symbols indices @@ -626,10 +617,6 @@ else sec_symndx = 0; - dlt = plt = stubs = NULL; - buf = NULL; - buf_len = 0; - relend = relocs + sec->reloc_count; for (rel = relocs; rel < relend; ++rel) { @@ -903,13 +890,9 @@ } } - if (buf) - free (buf); return TRUE; err_out: - if (buf) - free (buf); return FALSE; } @@ -951,6 +934,8 @@ struct elf64_hppa_link_hash_table *hppa_info; hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) + return FALSE; if (eh->root.type == bfd_link_hash_warning) eh = (struct elf_link_hash_entry *) eh->root.u.i.link; @@ -1012,7 +997,7 @@ allocate_global_data_plt (struct elf_link_hash_entry *eh, void *data) { struct elf64_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh); - struct elf64_hppa_allocate_data *x = (struct elf64_hppa_allocate_data *)data; + struct elf64_hppa_allocate_data *x = (struct elf64_hppa_allocate_data *) data; if (hh->want_plt && elf64_hppa_dynamic_symbol_p (eh, x->info) @@ -1023,7 +1008,15 @@ hh->plt_offset = x->ofs; x->ofs += PLT_ENTRY_SIZE; if (hh->plt_offset < 0x2000) - hppa_link_hash_table (x->info)->gp_offset = hh->plt_offset; + { + struct elf64_hppa_link_hash_table *hppa_info; + + hppa_info = hppa_link_hash_table (x->info); + if (hppa_info == NULL) + return FALSE; + + hppa_info->gp_offset = hh->plt_offset; + } } else hh->want_plt = 0; @@ -1340,17 +1333,22 @@ struct bfd_link_info *info) { asection *s; + struct elf64_hppa_link_hash_table *hppa_info; - if (! get_stub (abfd, info, hppa_link_hash_table (info))) + hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) return FALSE; - if (! get_dlt (abfd, info, hppa_link_hash_table (info))) + if (! get_stub (abfd, info, hppa_info)) return FALSE; - if (! get_plt (abfd, info, hppa_link_hash_table (info))) + if (! get_dlt (abfd, info, hppa_info)) return FALSE; - if (! get_opd (abfd, info, hppa_link_hash_table (info))) + if (! get_plt (abfd, info, hppa_info)) + return FALSE; + + if (! get_opd (abfd, info, hppa_info)) return FALSE; s = bfd_make_section_with_flags (abfd, ".rela.dlt", @@ -1362,7 +1360,7 @@ if (s == NULL || !bfd_set_section_alignment (abfd, s, 3)) return FALSE; - hppa_link_hash_table (info)->dlt_rel_sec = s; + hppa_info->dlt_rel_sec = s; s = bfd_make_section_with_flags (abfd, ".rela.plt", (SEC_ALLOC | SEC_LOAD @@ -1373,7 +1371,7 @@ if (s == NULL || !bfd_set_section_alignment (abfd, s, 3)) return FALSE; - hppa_link_hash_table (info)->plt_rel_sec = s; + hppa_info->plt_rel_sec = s; s = bfd_make_section_with_flags (abfd, ".rela.data", (SEC_ALLOC | SEC_LOAD @@ -1384,7 +1382,7 @@ if (s == NULL || !bfd_set_section_alignment (abfd, s, 3)) return FALSE; - hppa_link_hash_table (info)->other_rel_sec = s; + hppa_info->other_rel_sec = s; s = bfd_make_section_with_flags (abfd, ".rela.opd", (SEC_ALLOC | SEC_LOAD @@ -1395,7 +1393,7 @@ if (s == NULL || !bfd_set_section_alignment (abfd, s, 3)) return FALSE; - hppa_link_hash_table (info)->opd_rel_sec = s; + hppa_info->opd_rel_sec = s; return TRUE; } @@ -1413,6 +1411,9 @@ bfd_boolean dynamic_symbol, shared; hppa_info = hppa_link_hash_table (x->info); + if (hppa_info == NULL) + return FALSE; + dynamic_symbol = elf64_hppa_dynamic_symbol_p (eh, x->info); shared = x->info->shared; @@ -1547,6 +1548,8 @@ bfd_boolean reltext; hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) + return FALSE; dynobj = elf_hash_table (info)->dynobj; BFD_ASSERT (dynobj != NULL); @@ -1955,17 +1958,17 @@ Elf_Internal_Sym *sym) { struct elf64_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh); - asection *stub, *splt, *sdlt, *sopd, *spltrel, *sdltrel; + asection *stub, *splt, *sopd, *spltrel; struct elf64_hppa_link_hash_table *hppa_info; hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) + return FALSE; stub = hppa_info->stub_sec; splt = hppa_info->plt_sec; - sdlt = hppa_info->dlt_sec; sopd = hppa_info->opd_sec; spltrel = hppa_info->plt_rel_sec; - sdltrel = hppa_info->dlt_rel_sec; /* Incredible. It is actually necessary to NOT use the symbol's real value when building the dynamic symbol table for a shared library. @@ -2130,6 +2133,9 @@ asection *sopdrel; hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) + return FALSE; + sopd = hppa_info->opd_sec; sopdrel = hppa_info->opd_rel_sec; @@ -2247,6 +2253,8 @@ asection *sdlt, *sdltrel; hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) + return FALSE; sdlt = hppa_info->dlt_sec; sdltrel = hppa_info->dlt_rel_sec; @@ -2350,6 +2358,8 @@ int dynindx; hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) + return FALSE; /* We may need to do a relocation against a local symbol, in which case we have to look up it's dynamic symbol index off @@ -2448,7 +2458,7 @@ static enum elf_reloc_type_class elf64_hppa_reloc_type_class (const Elf_Internal_Rela *rela) { - if (ELF64_R_SYM (rela->r_info) == 0) + if (ELF64_R_SYM (rela->r_info) == STN_UNDEF) return reloc_class_relative; switch ((int) ELF64_R_TYPE (rela->r_info)) @@ -2473,6 +2483,8 @@ struct elf64_hppa_link_hash_table *hppa_info; hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) + return FALSE; /* Finalize the contents of the .opd section. */ elf_link_hash_traverse (elf_hash_table (info), @@ -2592,7 +2604,7 @@ elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12); /* pr_pid */ - elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 32); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 32); /* pr_reg */ offset = 112; @@ -2740,15 +2752,16 @@ } /* Support HP specific sections for core files. */ + static bfd_boolean -elf64_hppa_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index, +elf64_hppa_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int sec_index, const char *typename) { if (hdr->p_type == PT_HP_CORE_KERNEL) { asection *sect; - if (!_bfd_elf_make_section_from_phdr (abfd, hdr, index, typename)) + if (!_bfd_elf_make_section_from_phdr (abfd, hdr, sec_index, typename)) return FALSE; sect = bfd_make_section_anyway (abfd, ".kernel"); @@ -2771,7 +2784,7 @@ elf_tdata (abfd)->core_signal = sig; - if (!_bfd_elf_make_section_from_phdr (abfd, hdr, index, typename)) + if (!_bfd_elf_make_section_from_phdr (abfd, hdr, sec_index, typename)) return FALSE; /* GDB uses the ".reg" section to read register contents. */ @@ -2784,7 +2797,7 @@ || hdr->p_type == PT_HP_CORE_MMF) hdr->p_type = PT_LOAD; - return _bfd_elf_make_section_from_phdr (abfd, hdr, index, typename); + return _bfd_elf_make_section_from_phdr (abfd, hdr, sec_index, typename); } /* Hook called by the linker routine which adds symbols from an object @@ -2800,9 +2813,9 @@ asection **secp, bfd_vma *valp) { - unsigned int index = sym->st_shndx; + unsigned int sec_index = sym->st_shndx; - switch (index) + switch (sec_index) { case SHN_PARISC_ANSI_COMMON: *secp = bfd_make_section_old_way (abfd, ".PARISC.ansi.common"); @@ -2947,6 +2960,9 @@ bfd_boolean retval; struct elf64_hppa_link_hash_table *hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) + return FALSE; + if (! info->relocatable) { struct elf_link_hash_entry *gp; @@ -3033,7 +3049,7 @@ /* If we're producing a final executable, sort the contents of the unwind section. */ - if (retval) + if (retval && !info->relocatable) retval = elf_hppa_sort_unwind (abfd); return retval; @@ -3188,6 +3204,9 @@ unsigned int r_type = howto->type; bfd_byte *hit_data = contents + offset; + if (hppa_info == NULL) + return bfd_reloc_notsupported; + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; local_offsets = elf_local_got_offsets (input_bfd); insn = bfd_get_32 (input_bfd, hit_data); @@ -3811,6 +3830,9 @@ struct elf64_hppa_link_hash_table *hppa_info; hppa_info = hppa_link_hash_table (info); + if (hppa_info == NULL) + return FALSE; + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; rel = relocs; @@ -3825,7 +3847,6 @@ asection *sym_sec; bfd_vma relocation; bfd_reloc_status_type r; - bfd_boolean warned_undef; r_type = ELF_R_TYPE (rel->r_info); if (r_type < 0 || r_type >= (int) R_PARISC_UNIMPLEMENTED) @@ -3842,7 +3863,6 @@ eh = NULL; sym = NULL; sym_sec = NULL; - warned_undef = FALSE; if (r_symndx < symtab_hdr->sh_info) { /* This is a local symbol, hh defaults to NULL. */ @@ -3853,7 +3873,6 @@ else { /* This is not a local symbol. */ - bfd_boolean unresolved_reloc; struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd); /* It seems this can happen with erroneous or unsupported @@ -3867,21 +3886,13 @@ || eh->root.type == bfd_link_hash_warning) eh = (struct elf_link_hash_entry *) eh->root.u.i.link; - warned_undef = FALSE; - unresolved_reloc = FALSE; relocation = 0; if (eh->root.type == bfd_link_hash_defined || eh->root.type == bfd_link_hash_defweak) { sym_sec = eh->root.u.def.section; - if (sym_sec == NULL - || sym_sec->output_section == NULL) - /* Set a flag that will be cleared later if we find a - relocation value for this symbol. output_section - is typically NULL for symbols satisfied by a shared - library. */ - unresolved_reloc = TRUE; - else + if (sym_sec != NULL + && sym_sec->output_section != NULL) relocation = (eh->root.u.def.value + sym_sec->output_section->vma + sym_sec->output_offset); @@ -3905,7 +3916,6 @@ input_section, rel->r_offset, err)) return FALSE; - warned_undef = TRUE; } if (!info->relocatable @@ -3922,21 +3932,13 @@ (info, eh_name (eh), input_bfd, input_section, rel->r_offset, FALSE)) return FALSE; - warned_undef = TRUE; } } } if (sym_sec != NULL && elf_discarded_section (sym_sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -4029,6 +4031,7 @@ #define TARGET_BIG_SYM bfd_elf64_hppa_vec #define TARGET_BIG_NAME "elf64-hppa" #define ELF_ARCH bfd_arch_hppa +#define ELF_TARGET_ID HPPA64_ELF_DATA #define ELF_MACHINE_CODE EM_PARISC /* This is not strictly correct. The maximum page size for PA2.0 is 64M. But everything still uses 4k. */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf64-mips.c crash-6.1.6/=unpacked-tar1=/bfd/elf64-mips.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf64-mips.c 2009-09-03 15:21:09.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf64-mips.c 2010-12-31 11:00:53.000000000 +0000 @@ -1,6 +1,7 @@ /* MIPS-specific support for 64-bit ELF Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Ian Lance Taylor, Cygnus Support Linker support added by Mark Mitchell, CodeSourcery, LLC. @@ -1338,7 +1339,7 @@ complain_overflow_dont, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPMOD64", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ MINUS_ONE, /* src_mask */ MINUS_ONE, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1352,7 +1353,7 @@ complain_overflow_dont, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPREL64", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ MINUS_ONE, /* src_mask */ MINUS_ONE, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1367,7 +1368,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_GD", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1382,7 +1383,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_LDM", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1397,7 +1398,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_HI16", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1412,7 +1413,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_LO16", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1427,7 +1428,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_GOTTPREL", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1444,7 +1445,7 @@ complain_overflow_dont, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_TPREL64", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ MINUS_ONE, /* src_mask */ MINUS_ONE, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1459,7 +1460,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_TPREL_HI16", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1474,7 +1475,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_TPREL_LO16", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2618,7 +2619,7 @@ default: if (! used_sym) { - if (rela.r_sym == 0) + if (rela.r_sym == STN_UNDEF) relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; else { @@ -2721,13 +2722,13 @@ || asect->reloc_count == 0) return TRUE; - rel_hdr = &d->rel_hdr; - reloc_count = NUM_SHDR_ENTRIES (rel_hdr); - rel_hdr2 = d->rel_hdr2; + rel_hdr = d->rel.hdr; + reloc_count = rel_hdr ? NUM_SHDR_ENTRIES (rel_hdr) : 0; + rel_hdr2 = d->rela.hdr; reloc_count2 = (rel_hdr2 ? NUM_SHDR_ENTRIES (rel_hdr2) : 0); BFD_ASSERT (asect->reloc_count == reloc_count + reloc_count2); - BFD_ASSERT (asect->rel_filepos == rel_hdr->sh_offset + BFD_ASSERT ((rel_hdr && asect->rel_filepos == rel_hdr->sh_offset) || (rel_hdr2 && asect->rel_filepos == rel_hdr2->sh_offset)); } @@ -2755,19 +2756,18 @@ /* The slurp_one_reloc_table routine increments reloc_count. */ asect->reloc_count = 0; - if (! mips_elf64_slurp_one_reloc_table (abfd, asect, - rel_hdr, reloc_count, - relents, - symbols, dynamic)) + if (rel_hdr != NULL + && ! mips_elf64_slurp_one_reloc_table (abfd, asect, + rel_hdr, reloc_count, + relents, + symbols, dynamic)) + return FALSE; + if (rel_hdr2 != NULL + && ! mips_elf64_slurp_one_reloc_table (abfd, asect, + rel_hdr2, reloc_count2, + relents + reloc_count * 3, + symbols, dynamic)) return FALSE; - if (d->rel_hdr2 != NULL) - { - if (! mips_elf64_slurp_one_reloc_table (abfd, asect, - rel_hdr2, reloc_count2, - relents + reloc_count * 3, - symbols, dynamic)) - return FALSE; - } asect->relocation = relents; return TRUE; @@ -2826,7 +2826,7 @@ } } - rel_hdr = &elf_section_data (sec)->rel_hdr; + rel_hdr = _bfd_elf_single_rel_hdr (sec); /* Do the actual relocation. */ @@ -3082,7 +3082,7 @@ elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12); /* pr_pid */ - elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 32); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 32); /* pr_reg */ offset = 112; @@ -3206,6 +3206,7 @@ }; #define ELF_ARCH bfd_arch_mips +#define ELF_TARGET_ID MIPS_ELF_DATA #define ELF_MACHINE_CODE EM_MIPS #define elf_backend_collect TRUE @@ -3284,7 +3285,6 @@ #define bfd_elf64_set_section_contents _bfd_mips_elf_set_section_contents #define bfd_elf64_bfd_get_relocated_section_contents \ _bfd_elf_mips_get_relocated_section_contents -#define bfd_elf64_mkobject _bfd_mips_elf_mkobject #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 @@ -3313,6 +3313,7 @@ #define bfd_elf64_archive_truncate_arname \ _bfd_archive_coff_truncate_arname #define bfd_elf64_archive_read_ar_hdr _bfd_archive_coff_read_ar_hdr +#define bfd_elf64_archive_write_ar_hdr _bfd_archive_coff_write_ar_hdr #define bfd_elf64_archive_openr_next_archived_file \ _bfd_archive_coff_openr_next_archived_file #define bfd_elf64_archive_get_elt_at_index \ @@ -3353,3 +3354,36 @@ /* Include the target file again for this target. */ #include "elf64-target.h" + + +/* FreeBSD support. */ + +#undef TARGET_LITTLE_SYM +#undef TARGET_LITTLE_NAME +#undef TARGET_BIG_SYM +#undef TARGET_BIG_NAME + +#define TARGET_LITTLE_SYM bfd_elf64_tradlittlemips_freebsd_vec +#define TARGET_LITTLE_NAME "elf64-tradlittlemips-freebsd" +#define TARGET_BIG_SYM bfd_elf64_tradbigmips_freebsd_vec +#define TARGET_BIG_NAME "elf64-tradbigmips-freebsd" + +#undef ELF_OSABI +#define ELF_OSABI ELFOSABI_FREEBSD + +/* The kernel recognizes executables as valid only if they carry a + "FreeBSD" label in the ELF header. So we put this label on all + executables and (for simplicity) also all other object files. */ + +static void +elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) +{ + _bfd_elf_set_osabi (abfd, info); +} + +#undef elf_backend_post_process_headers +#define elf_backend_post_process_headers elf_fbsd_post_process_headers +#undef elf64_bed +#define elf64_bed elf64_fbsd_tradbed + +#include "elf64-target.h" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf64-mmix.c crash-6.1.6/=unpacked-tar1=/bfd/elf64-mmix.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf64-mmix.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf64-mmix.c 2010-10-25 15:54:15.000000000 +0000 @@ -1,5 +1,5 @@ /* MMIX-specific support for 64-bit ELF. - Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 + Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. Contributed by Hans-Peter Nilsson @@ -1267,7 +1267,6 @@ asection *reloc_target_output_section; bfd_reloc_status_type flag = bfd_reloc_ok; bfd_vma output_base = 0; - bfd_vma addr; r = bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd, error_message); @@ -1306,9 +1305,6 @@ relocation += output_base + symbol->section->output_offset; - /* Get position of relocation. */ - addr = (reloc_entry->address + input_section->output_section->vma - + input_section->output_offset); if (output_bfd != (bfd *) NULL) { /* Add in supplied addend. */ @@ -1412,15 +1408,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) { @@ -2581,7 +2570,6 @@ spot a missing actual initialization. */ size_t bpono = (size_t) -1; size_t pjsno = 0; - bfd *bpo_greg_owner; Elf_Internal_Sym *isymbuf = NULL; bfd_size_type size = sec->rawsize ? sec->rawsize : sec->size; @@ -2604,8 +2592,6 @@ symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - bpo_greg_owner = (bfd *) link_info->base_file; - if (bpodata != NULL) { bpo_gregs_section = bpodata->bpo_greg_section; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf64-ppc.c crash-6.1.6/=unpacked-tar1=/bfd/elf64-ppc.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf64-ppc.c 2009-07-29 14:56:38.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf64-ppc.c 2011-03-23 15:25:02.000000000 +0000 @@ -1,9 +1,9 @@ /* PowerPC64-specific support for 64-bit ELF. Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010, 2011 Free Software Foundation, Inc. Written by Linus Nordberg, Swox AB , based on elf32-ppc.c by Ian Lance Taylor. - Largely rewritten by Alan Modra + Largely rewritten by Alan Modra. This file is part of BFD, the Binary File Descriptor library. @@ -61,6 +61,7 @@ #define TARGET_BIG_SYM bfd_elf64_powerpc_vec #define TARGET_BIG_NAME "elf64-powerpc" #define ELF_ARCH bfd_arch_powerpc +#define ELF_TARGET_ID PPC64_ELF_DATA #define ELF_MACHINE_CODE EM_PPC64 #define ELF_MAXPAGESIZE 0x10000 #define ELF_COMMONPAGESIZE 0x1000 @@ -78,12 +79,13 @@ #define bfd_elf64_mkobject ppc64_elf_mkobject #define bfd_elf64_bfd_reloc_type_lookup ppc64_elf_reloc_type_lookup -#define bfd_elf64_bfd_reloc_name_lookup ppc64_elf_reloc_name_lookup +#define bfd_elf64_bfd_reloc_name_lookup ppc64_elf_reloc_name_lookup #define bfd_elf64_bfd_merge_private_bfd_data ppc64_elf_merge_private_bfd_data #define bfd_elf64_new_section_hook ppc64_elf_new_section_hook #define bfd_elf64_bfd_link_hash_table_create ppc64_elf_link_hash_table_create #define bfd_elf64_bfd_link_hash_table_free ppc64_elf_link_hash_table_free #define bfd_elf64_get_synthetic_symtab ppc64_elf_get_synthetic_symtab +#define bfd_elf64_bfd_link_just_syms ppc64_elf_link_just_syms #define elf_backend_object_p ppc64_elf_object_p #define elf_backend_grok_prstatus ppc64_elf_grok_prstatus @@ -2526,6 +2528,54 @@ return bfd_reloc_dangerous; } +/* Track GOT entries needed for a given symbol. We might need more + than one got entry per symbol. */ +struct got_entry +{ + struct got_entry *next; + + /* The symbol addend that we'll be placing in the GOT. */ + bfd_vma addend; + + /* Unlike other ELF targets, we use separate GOT entries for the same + symbol referenced from different input files. This is to support + automatic multiple TOC/GOT sections, where the TOC base can vary + from one input file to another. After partitioning into TOC groups + we merge entries within the group. + + Point to the BFD owning this GOT entry. */ + bfd *owner; + + /* Zero for non-tls entries, or TLS_TLS and one of TLS_GD, TLS_LD, + TLS_TPREL or TLS_DTPREL for tls entries. */ + unsigned char tls_type; + + /* Non-zero if got.ent points to real entry. */ + unsigned char is_indirect; + + /* Reference count until size_dynamic_sections, GOT offset thereafter. */ + union + { + bfd_signed_vma refcount; + bfd_vma offset; + struct got_entry *ent; + } got; +}; + +/* The same for PLT. */ +struct plt_entry +{ + struct plt_entry *next; + + bfd_vma addend; + + union + { + bfd_signed_vma refcount; + bfd_vma offset; + } plt; +}; + struct ppc64_elf_obj_tdata { struct elf_obj_tdata elf; @@ -2538,15 +2588,16 @@ on removed .opd entries to this section so that the sym is removed. */ asection *deleted_section; - /* TLS local dynamic got entry handling. Suppose for multiple GOT + /* TLS local dynamic got entry handling. Support for multiple GOT sections means we potentially need one of these for each input bfd. */ - union { - bfd_signed_vma refcount; - bfd_vma offset; - } tlsld_got; + struct got_entry tlsld_got; /* A copy of relocs before they are modified for --emit-relocs. */ Elf_Internal_Rela *opd_relocs; + + /* Nonzero if this bfd has small toc/got relocs, ie. that expect + the reloc to be in the range -32768 to 32767. */ + unsigned int has_small_toc_reloc; }; #define ppc64_elf_tdata(bfd) \ @@ -2557,7 +2608,7 @@ #define is_ppc64_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ - && elf_object_id (bfd) == PPC64_ELF_TDATA) + && elf_object_id (bfd) == PPC64_ELF_DATA) /* Override the generic function because we store some extras. */ @@ -2565,7 +2616,7 @@ ppc64_elf_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct ppc64_elf_obj_tdata), - PPC64_ELF_TDATA); + PPC64_ELF_DATA); } /* Fix bad default arch selected for a 64 bit input bfd when the @@ -2602,7 +2653,7 @@ elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12); /* pr_pid */ - elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 32); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 32); /* pr_reg */ offset = 112; @@ -3453,50 +3504,6 @@ bfd_size_type pc_count; }; -/* Track GOT entries needed for a given symbol. We might need more - than one got entry per symbol. */ -struct got_entry -{ - struct got_entry *next; - - /* The symbol addend that we'll be placing in the GOT. */ - bfd_vma addend; - - /* Unlike other ELF targets, we use separate GOT entries for the same - symbol referenced from different input files. This is to support - automatic multiple TOC/GOT sections, where the TOC base can vary - from one input file to another. FIXME: After group_sections we - ought to merge entries within the group. - - Point to the BFD owning this GOT entry. */ - bfd *owner; - - /* Zero for non-tls entries, or TLS_TLS and one of TLS_GD, TLS_LD, - TLS_TPREL or TLS_DTPREL for tls entries. */ - char tls_type; - - /* Reference count until size_dynamic_sections, GOT offset thereafter. */ - union - { - bfd_signed_vma refcount; - bfd_vma offset; - } got; -}; - -/* The same for PLT. */ -struct plt_entry -{ - struct plt_entry *next; - - bfd_vma addend; - - union - { - bfd_signed_vma refcount; - bfd_vma offset; - } plt; -}; - /* Of those relocs that might be copied as dynamic relocs, this function selects those that must be copied when linking a shared library, even when the symbol is local. */ @@ -3697,7 +3704,7 @@ #define TLS_EXPLICIT 32 /* Marks TOC section TLS relocs. */ #define TLS_TPRELGD 64 /* TPREL reloc resulting from GD->IE. */ #define PLT_IFUNC 128 /* STT_GNU_IFUNC. */ - char tls_mask; + unsigned char tls_mask; }; /* ppc64 ELF linker hash table. */ @@ -3732,6 +3739,8 @@ /* Temp used when calculating TOC pointers. */ bfd_vma toc_curr; + bfd *toc_bfd; + asection *toc_first_sec; /* Highest input section id. */ int top_id; @@ -3762,6 +3771,9 @@ struct ppc_link_hash_entry *tls_get_addr; struct ppc_link_hash_entry *tls_get_addr_fd; + /* The size of reliplt used by got entry relocs. */ + bfd_size_type got_reli_size; + /* Statistics. */ unsigned long stub_count[ppc_stub_plt_call]; @@ -3771,9 +3783,14 @@ /* Set if we should emit symbols for stubs. */ unsigned int emit_stub_syms:1; + /* Set if __tls_get_addr optimization should not be done. */ + unsigned int no_tls_get_addr_opt:1; + /* Support for multiple toc sections. */ - unsigned int no_multi_toc:1; + unsigned int do_multi_toc:1; unsigned int multi_toc_needed:1; + unsigned int second_toc_pass:1; + unsigned int do_toc_opt:1; /* Set on error. */ unsigned int stub_error:1; @@ -3790,14 +3807,29 @@ /* Rename some of the generic section flags to better document how they are used here. */ -#define has_toc_reloc has_gp_reloc -#define makes_toc_func_call need_finalize_relax -#define call_check_in_progress reloc_done + +/* Nonzero if this section has TLS related relocations. */ +#define has_tls_reloc sec_flg0 + +/* Nonzero if this section has a call to __tls_get_addr. */ +#define has_tls_get_addr_call sec_flg1 + +/* Nonzero if this section has any toc or got relocs. */ +#define has_toc_reloc sec_flg2 + +/* Nonzero if this section has a call to another section that uses + the toc or got. */ +#define makes_toc_func_call sec_flg3 + +/* Recursion protection when determining above flag. */ +#define call_check_in_progress sec_flg4 +#define call_check_done sec_flg5 /* Get the ppc64 ELF linker hash table from a link_info structure. */ #define ppc_hash_table(p) \ - ((struct ppc_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == PPC64_ELF_DATA ? ((struct ppc_link_hash_table *) ((p)->hash)) : NULL) #define ppc_stub_hash_lookup(table, string, create, copy) \ ((struct ppc_stub_hash_entry *) \ @@ -3942,7 +3974,8 @@ return NULL; if (!_bfd_elf_link_hash_table_init (&htab->elf, abfd, link_hash_newfunc, - sizeof (struct ppc_link_hash_entry))) + sizeof (struct ppc_link_hash_entry), + PPC64_ELF_DATA)) { free (htab); return NULL; @@ -3999,6 +4032,8 @@ linker created stub bfd. This ensures that the GOT header is at the start of the output TOC section. */ htab = ppc_hash_table (info); + if (htab == NULL) + return; htab->stub_bfd = abfd; htab->elf.dynobj = abfd; } @@ -4158,6 +4193,8 @@ flagword flags; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; /* Create .sfpr for code to save and restore fp regs. */ flags = (SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_READONLY @@ -4226,6 +4263,8 @@ if (!is_ppc64_elf (abfd)) return FALSE; + if (htab == NULL) + return FALSE; if (!htab->got) { @@ -4267,6 +4306,9 @@ return FALSE; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; + if (!htab->got) htab->got = bfd_get_section_by_name (dynobj, ".got"); htab->plt = bfd_get_section_by_name (dynobj, ".plt"); @@ -4282,6 +4324,29 @@ return TRUE; } +/* Follow indirect and warning symbol links. */ + +static inline struct bfd_link_hash_entry * +follow_link (struct bfd_link_hash_entry *h) +{ + while (h->type == bfd_link_hash_indirect + || h->type == bfd_link_hash_warning) + h = h->u.i.link; + return h; +} + +static inline struct elf_link_hash_entry * +elf_follow_link (struct elf_link_hash_entry *h) +{ + return (struct elf_link_hash_entry *) follow_link (&h->root); +} + +static inline struct ppc_link_hash_entry * +ppc_follow_link (struct ppc_link_hash_entry *h) +{ + return (struct ppc_link_hash_entry *) follow_link (&h->elf.root); +} + /* Merge PLT info on FROM with that on TO. */ static void @@ -4364,6 +4429,8 @@ edir->is_func |= eind->is_func; edir->is_func_descriptor |= eind->is_func_descriptor; edir->tls_mask |= eind->tls_mask; + if (eind->oh != NULL) + edir->oh = ppc_follow_link (eind->oh); /* If called to transfer flags for a weakdef during processing of elf_adjust_dynamic_symbol, don't copy NON_GOT_REF. @@ -4433,7 +4500,7 @@ hash entry FH. Link the entries via their OH fields. */ static struct ppc_link_hash_entry * -get_fdh (struct ppc_link_hash_entry *fh, struct ppc_link_hash_table *htab) +lookup_fdh (struct ppc_link_hash_entry *fh, struct ppc_link_hash_table *htab) { struct ppc_link_hash_entry *fdh = fh->oh; @@ -4443,16 +4510,16 @@ fdh = (struct ppc_link_hash_entry *) elf_link_hash_lookup (&htab->elf, fd_name, FALSE, FALSE, FALSE); - if (fdh != NULL) - { - fdh->is_func_descriptor = 1; - fdh->oh = fh; - fh->is_func = 1; - fh->oh = fdh; - } + if (fdh == NULL) + return fdh; + + fdh->is_func_descriptor = 1; + fdh->oh = fh; + fh->is_func = 1; + fh->oh = fdh; } - return fdh; + return ppc_follow_link (fdh); } /* Make a fake function descriptor sym for the code sym FH. */ @@ -4494,7 +4561,7 @@ function type. */ static bfd_boolean -ppc64_elf_add_symbol_hook (bfd *ibfd ATTRIBUTE_UNUSED, +ppc64_elf_add_symbol_hook (bfd *ibfd, struct bfd_link_info *info, Elf_Internal_Sym *isym, const char **name ATTRIBUTE_UNUSED, @@ -4503,11 +4570,14 @@ bfd_vma *value ATTRIBUTE_UNUSED) { if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC) - elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE; + { + if ((ibfd->flags & DYNAMIC) == 0) + elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE; + } else if (ELF_ST_TYPE (isym->st_info) == STT_FUNC) ; else if (*sec != NULL - && strcmp (bfd_get_section_name (ibfd, *sec), ".opd") == 0) + && strcmp ((*sec)->name, ".opd") == 0) isym->st_info = ELF_ST_INFO (ELF_ST_BIND (isym->st_info), STT_FUNC); return TRUE; @@ -4574,23 +4644,27 @@ abort (); htab = ppc_hash_table (info); - fdh = get_fdh (eh, htab); - if (fdh == NULL - && !info->relocatable - && (eh->elf.root.type == bfd_link_hash_undefined - || eh->elf.root.type == bfd_link_hash_undefweak) - && eh->elf.ref_regular) - { - /* Make an undefweak function descriptor sym, which is enough to - pull in an --as-needed shared lib, but won't cause link - errors. Archives are handled elsewhere. */ - fdh = make_fdh (info, eh); - if (fdh == NULL) - return FALSE; - else - fdh->elf.ref_regular = 1; + if (htab == NULL) + return FALSE; + + fdh = lookup_fdh (eh, htab); + if (fdh == NULL) + { + if (!info->relocatable + && (eh->elf.root.type == bfd_link_hash_undefined + || eh->elf.root.type == bfd_link_hash_undefweak) + && eh->elf.ref_regular) + { + /* Make an undefweak function descriptor sym, which is enough to + pull in an --as-needed shared lib, but won't cause link + errors. Archives are handled elsewhere. */ + fdh = make_fdh (info, eh); + if (fdh == NULL) + return FALSE; + fdh->elf.ref_regular = 1; + } } - else if (fdh != NULL) + else { unsigned entry_vis = ELF_ST_VISIBILITY (eh->elf.other) - 1; unsigned descr_vis = ELF_ST_VISIBILITY (fdh->elf.other) - 1; @@ -4620,9 +4694,11 @@ struct ppc_link_hash_table *htab; struct ppc_link_hash_entry **p, *eh; - htab = ppc_hash_table (info); if (!is_ppc64_elf (info->output_bfd)) return TRUE; + htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; if (is_ppc64_elf (ibfd)) { @@ -4661,17 +4737,41 @@ ppc64_elf_as_needed_cleanup (bfd *ibfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) { - ppc_hash_table (info)->dot_syms = NULL; + struct ppc_link_hash_table *htab = ppc_hash_table (info); + + if (htab == NULL) + return FALSE; + + htab->dot_syms = NULL; return TRUE; } +/* If --just-symbols against a final linked binary, then assume we need + toc adjusting stubs when calling functions defined there. */ + +static void +ppc64_elf_link_just_syms (asection *sec, struct bfd_link_info *info) +{ + if ((sec->flags & SEC_CODE) != 0 + && (sec->owner->flags & (EXEC_P | DYNAMIC)) != 0 + && is_ppc64_elf (sec->owner)) + { + asection *got = bfd_get_section_by_name (sec->owner, ".got"); + if (got != NULL + && got->size >= elf_backend_got_header_size + && bfd_get_section_by_name (sec->owner, ".opd") != NULL) + sec->has_toc_reloc = 1; + } + _bfd_elf_link_just_syms (sec, info); +} + static struct plt_entry ** update_local_sym_info (bfd *abfd, Elf_Internal_Shdr *symtab_hdr, unsigned long r_symndx, bfd_vma r_addend, int tls_type) { struct got_entry **local_got_ents = elf_local_got_ents (abfd); struct plt_entry **local_plt; - char *local_got_tls_masks; + unsigned char *local_got_tls_masks; if (local_got_ents == NULL) { @@ -4705,6 +4805,7 @@ ent->addend = r_addend; ent->owner = abfd; ent->tls_type = tls_type; + ent->is_indirect = FALSE; ent->got.refcount = 0; local_got_ents[r_symndx] = ent; } @@ -4712,7 +4813,7 @@ } local_plt = (struct plt_entry **) (local_got_ents + symtab_hdr->sh_info); - local_got_tls_masks = (char *) (local_plt + symtab_hdr->sh_info); + local_got_tls_masks = (unsigned char *) (local_plt + symtab_hdr->sh_info); local_got_tls_masks[r_symndx] |= tls_type; return local_plt + r_symndx; @@ -4764,7 +4865,7 @@ { struct ppc_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; - struct elf_link_hash_entry **sym_hashes, **sym_hashes_end; + struct elf_link_hash_entry **sym_hashes; const Elf_Internal_Rela *rel; const Elf_Internal_Rela *rel_end; asection *sreloc; @@ -4786,20 +4887,18 @@ BFD_ASSERT (is_ppc64_elf (abfd)); htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; + tga = elf_link_hash_lookup (&htab->elf, "__tls_get_addr", FALSE, FALSE, TRUE); dottga = elf_link_hash_lookup (&htab->elf, ".__tls_get_addr", FALSE, FALSE, TRUE); symtab_hdr = &elf_symtab_hdr (abfd); - sym_hashes = elf_sym_hashes (abfd); - sym_hashes_end = (sym_hashes - + symtab_hdr->sh_size / sizeof (Elf64_External_Sym) - - symtab_hdr->sh_info); - sreloc = NULL; opd_sym_map = NULL; - if (strcmp (bfd_get_section_name (abfd, sec), ".opd") == 0) + if (strcmp (sec->name, ".opd") == 0) { /* Garbage collection needs some extra help with .opd sections. We don't want to necessarily keep everything referenced by @@ -4839,9 +4938,7 @@ 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; + h = elf_follow_link (h); } tls_type = 0; @@ -4939,6 +5036,17 @@ case R_PPC64_GOT16_LO_DS: /* This symbol requires a global offset table entry. */ sec->has_toc_reloc = 1; + if (r_type == R_PPC64_GOT_TLSLD16 + || r_type == R_PPC64_GOT_TLSGD16 + || r_type == R_PPC64_GOT_TPREL16_DS + || r_type == R_PPC64_GOT_DTPREL16_DS + || r_type == R_PPC64_GOT16 + || r_type == R_PPC64_GOT16_DS) + { + htab->do_multi_toc = 1; + ppc64_elf_tdata (abfd)->has_small_toc_reloc = 1; + } + if (ppc64_elf_tdata (abfd)->got == NULL && !create_got_section (abfd, info)) return FALSE; @@ -4964,6 +5072,7 @@ ent->addend = rel->r_addend; ent->owner = abfd; ent->tls_type = tls_type; + ent->is_indirect = FALSE; ent->got.refcount = 0; eh->elf.got.glist = ent; } @@ -5034,10 +5143,12 @@ break; case R_PPC64_TOC16: + case R_PPC64_TOC16_DS: + htab->do_multi_toc = 1; + ppc64_elf_tdata (abfd)->has_small_toc_reloc = 1; case R_PPC64_TOC16_LO: case R_PPC64_TOC16_HI: case R_PPC64_TOC16_HA: - case R_PPC64_TOC16_DS: case R_PPC64_TOC16_LO_DS: sec->has_toc_reloc = 1; break; @@ -5199,7 +5310,7 @@ { if (h->root.root.string[0] == '.' && h->root.root.string[1] != 0 - && get_fdh ((struct ppc_link_hash_entry *) h, htab)) + && lookup_fdh ((struct ppc_link_hash_entry *) h, htab)) ; else ((struct ppc_link_hash_entry *) h)->is_func = 1; @@ -5374,11 +5485,12 @@ /* No relocs implies we are linking a --just-symbols object. */ if (opd_sec->reloc_count == 0) { - bfd_vma val; + char buf[8]; - if (!bfd_get_section_contents (opd_bfd, opd_sec, &val, offset, 8)) + if (!bfd_get_section_contents (opd_bfd, opd_sec, buf, offset, 8)) return (bfd_vma) -1; + val = bfd_get_64 (opd_bfd, buf); if (code_sec != NULL) { asection *sec, *likely = NULL; @@ -5452,9 +5564,7 @@ sym_hashes = elf_sym_hashes (opd_bfd); rh = sym_hashes[symndx - symtab_hdr->sh_info]; - while (rh->root.type == bfd_link_hash_indirect - || rh->root.type == bfd_link_hash_warning) - rh = ((struct elf_link_hash_entry *) rh->root.u.i.link); + rh = elf_follow_link (rh); BFD_ASSERT (rh->root.type == bfd_link_hash_defined || rh->root.type == bfd_link_hash_defweak); val = rh->root.u.def.value; @@ -5475,6 +5585,50 @@ return val; } +/* Return true if symbol is defined in a regular object file. */ + +static bfd_boolean +is_static_defined (struct elf_link_hash_entry *h) +{ + return ((h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + && h->root.u.def.section != NULL + && h->root.u.def.section->output_section != NULL); +} + +/* If FDH is a function descriptor symbol, return the associated code + entry symbol if it is defined. Return NULL otherwise. */ + +static struct ppc_link_hash_entry * +defined_code_entry (struct ppc_link_hash_entry *fdh) +{ + if (fdh->is_func_descriptor) + { + struct ppc_link_hash_entry *fh = ppc_follow_link (fdh->oh); + if (fh->elf.root.type == bfd_link_hash_defined + || fh->elf.root.type == bfd_link_hash_defweak) + return fh; + } + return NULL; +} + +/* If FH is a function code entry symbol, return the associated + function descriptor symbol if it is defined. Return NULL otherwise. */ + +static struct ppc_link_hash_entry * +defined_func_desc (struct ppc_link_hash_entry *fh) +{ + if (fh->oh != NULL + && fh->oh->is_func_descriptor) + { + struct ppc_link_hash_entry *fdh = ppc_follow_link (fh->oh); + if (fdh->elf.root.type == bfd_link_hash_defined + || fdh->elf.root.type == bfd_link_hash_defweak) + return fdh; + } + return NULL; +} + /* Mark all our entry sym sections, both opd and code section. */ static void @@ -5483,24 +5637,26 @@ struct ppc_link_hash_table *htab = ppc_hash_table (info); struct bfd_sym_chain *sym; + if (htab == NULL) + return; + for (sym = info->gc_sym_list; sym != NULL; sym = sym->next) { - struct ppc_link_hash_entry *eh; + struct ppc_link_hash_entry *eh, *fh; asection *sec; eh = (struct ppc_link_hash_entry *) - elf_link_hash_lookup (&htab->elf, sym->name, FALSE, FALSE, FALSE); + elf_link_hash_lookup (&htab->elf, sym->name, FALSE, FALSE, TRUE); if (eh == NULL) continue; if (eh->elf.root.type != bfd_link_hash_defined && eh->elf.root.type != bfd_link_hash_defweak) continue; - if (eh->is_func_descriptor - && (eh->oh->elf.root.type == bfd_link_hash_defined - || eh->oh->elf.root.type == bfd_link_hash_defweak)) + fh = defined_code_entry (eh); + if (fh != NULL) { - sec = eh->oh->elf.root.u.def.section; + sec = fh->elf.root.u.def.section; sec->flags |= SEC_KEEP; } else if (get_opd_info (eh->elf.root.u.def.section) != NULL @@ -5523,16 +5679,15 @@ { struct bfd_link_info *info = (struct bfd_link_info *) inf; struct ppc_link_hash_entry *eh = (struct ppc_link_hash_entry *) h; + struct ppc_link_hash_entry *fdh; if (eh->elf.root.type == bfd_link_hash_warning) eh = (struct ppc_link_hash_entry *) eh->elf.root.u.i.link; /* Dynamic linking info is on the func descriptor sym. */ - if (eh->oh != NULL - && eh->oh->is_func_descriptor - && (eh->oh->elf.root.type == bfd_link_hash_defined - || eh->oh->elf.root.type == bfd_link_hash_defweak)) - eh = eh->oh; + fdh = defined_func_desc (eh); + if (fdh != NULL) + eh = fdh; if ((eh->elf.root.type == bfd_link_hash_defined || eh->elf.root.type == bfd_link_hash_defweak) @@ -5543,15 +5698,18 @@ && ELF_ST_VISIBILITY (eh->elf.other) != STV_HIDDEN))) { asection *code_sec; + struct ppc_link_hash_entry *fh; eh->elf.root.u.def.section->flags |= SEC_KEEP; /* Function descriptor syms cause the associated function code sym section to be marked. */ - if (eh->is_func_descriptor - && (eh->oh->elf.root.type == bfd_link_hash_defined - || eh->oh->elf.root.type == bfd_link_hash_defweak)) - eh->oh->elf.root.u.def.section->flags |= SEC_KEEP; + fh = defined_code_entry (eh); + if (fh != NULL) + { + code_sec = fh->elf.root.u.def.section; + code_sec->flags |= SEC_KEEP; + } else if (get_opd_info (eh->elf.root.u.def.section) != NULL && opd_entry_value (eh->elf.root.u.def.section, eh->elf.root.u.def.value, @@ -5567,7 +5725,7 @@ static asection * ppc64_elf_gc_mark_hook (asection *sec, - struct bfd_link_info *info ATTRIBUTE_UNUSED, + struct bfd_link_info *info, Elf_Internal_Rela *rel, struct elf_link_hash_entry *h, Elf_Internal_Sym *sym) @@ -5583,7 +5741,7 @@ if (h != NULL) { enum elf_ppc64_reloc_type r_type; - struct ppc_link_hash_entry *eh; + struct ppc_link_hash_entry *eh, *fh, *fdh; r_type = ELF64_R_TYPE (rel->r_info); switch (r_type) @@ -5598,22 +5756,19 @@ case bfd_link_hash_defined: case bfd_link_hash_defweak: eh = (struct ppc_link_hash_entry *) h; - if (eh->oh != NULL - && eh->oh->is_func_descriptor - && (eh->oh->elf.root.type == bfd_link_hash_defined - || eh->oh->elf.root.type == bfd_link_hash_defweak)) - eh = eh->oh; + fdh = defined_func_desc (eh); + if (fdh != NULL) + eh = fdh; /* Function descriptor syms cause the associated function code sym section to be marked. */ - if (eh->is_func_descriptor - && (eh->oh->elf.root.type == bfd_link_hash_defined - || eh->oh->elf.root.type == bfd_link_hash_defweak)) + fh = defined_code_entry (eh); + if (fh != NULL) { /* They also mark their opd section. */ eh->elf.root.u.def.section->gc_mark = 1; - rsec = eh->oh->elf.root.u.def.section; + rsec = fh->elf.root.u.def.section; } else if (get_opd_info (eh->elf.root.u.def.section) != NULL && opd_entry_value (eh->elf.root.u.def.section, @@ -5629,7 +5784,7 @@ break; default: - break; + return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym); } } } @@ -5672,6 +5827,9 @@ elf_section_data (sec)->local_dynrel = NULL; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = &elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); local_got_ents = elf_local_got_ents (abfd); @@ -5682,7 +5840,7 @@ unsigned long r_symndx; enum elf_ppc64_reloc_type r_type; struct elf_link_hash_entry *h = NULL; - char tls_type = 0; + unsigned char tls_type = 0; r_symndx = ELF64_R_SYM (rel->r_info); r_type = ELF64_R_TYPE (rel->r_info); @@ -5693,9 +5851,7 @@ struct ppc_dyn_relocs *p; 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; + h = elf_follow_link (h); eh = (struct ppc_link_hash_entry *) h; for (pp = &eh->dyn_relocs; (p = *pp) != NULL; pp = &p->next) @@ -5719,7 +5875,7 @@ { struct plt_entry **local_plt = (struct plt_entry **) (local_got_ents + symtab_hdr->sh_info); - char *local_got_tls_masks = (char *) + unsigned char *local_got_tls_masks = (unsigned char *) (local_plt + symtab_hdr->sh_info); if ((local_got_tls_masks[r_symndx] & PLT_IFUNC) != 0) ifunc = local_plt + r_symndx; @@ -5812,9 +5968,7 @@ for (ent = h->plt.plist; ent != NULL; ent = ent->next) if (ent->addend == rel->r_addend) break; - if (ent == NULL) - abort (); - if (ent->plt.refcount > 0) + if (ent != NULL && ent->plt.refcount > 0) ent->plt.refcount -= 1; } break; @@ -5839,7 +5993,7 @@ /* Auto-generate _save*, _rest* functions in .sfpr. */ -static unsigned int +static bfd_boolean sfpr_define (struct bfd_link_info *info, const struct sfpr_def_parms *parm) { struct ppc_link_hash_table *htab = ppc_hash_table (info); @@ -5848,6 +6002,9 @@ bfd_boolean writing = FALSE; char sym[16]; + if (htab == NULL) + return FALSE; + memcpy (sym, parm->name, len); sym[len + 2] = 0; @@ -6074,6 +6231,8 @@ info = inf; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; /* Resolve undefined references to dot-symbols as the value in the function descriptor, if we have one in a regular object. @@ -6081,18 +6240,17 @@ in dynamic objects are handled elsewhere. */ if (fh->elf.root.type == bfd_link_hash_undefweak && fh->was_undefined - && (fh->oh->elf.root.type == bfd_link_hash_defined - || fh->oh->elf.root.type == bfd_link_hash_defweak) - && get_opd_info (fh->oh->elf.root.u.def.section) != NULL - && opd_entry_value (fh->oh->elf.root.u.def.section, - fh->oh->elf.root.u.def.value, + && (fdh = defined_func_desc (fh)) != NULL + && get_opd_info (fdh->elf.root.u.def.section) != NULL + && opd_entry_value (fdh->elf.root.u.def.section, + fdh->elf.root.u.def.value, &fh->elf.root.u.def.section, &fh->elf.root.u.def.value) != (bfd_vma) -1) { - fh->elf.root.type = fh->oh->elf.root.type; + fh->elf.root.type = fdh->elf.root.type; fh->elf.forced_local = 1; - fh->elf.def_regular = fh->oh->elf.def_regular; - fh->elf.def_dynamic = fh->oh->elf.def_dynamic; + fh->elf.def_regular = fdh->elf.def_regular; + fh->elf.def_dynamic = fdh->elf.def_dynamic; } /* If this is a function code symbol, transfer dynamic linking @@ -6111,12 +6269,7 @@ /* Find the corresponding function descriptor symbol. Create it as undefined if necessary. */ - fdh = get_fdh (fh, htab); - if (fdh != NULL) - while (fdh->elf.root.type == bfd_link_hash_indirect - || fdh->elf.root.type == bfd_link_hash_warning) - fdh = (struct ppc_link_hash_entry *) fdh->elf.root.u.i.link; - + fdh = lookup_fdh (fh, htab); if (fdh == NULL && !info->executable && (fh->elf.root.type == bfd_link_hash_undefined @@ -6218,6 +6371,9 @@ }; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; + if (htab->sfpr == NULL) /* We don't have any relocs. */ return TRUE; @@ -6250,6 +6406,8 @@ asection *s; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; /* Deal with function syms. */ if (h->type == STT_FUNC @@ -6409,6 +6567,9 @@ save = *p; *(char *) p = '.'; htab = ppc_hash_table (info); + if (htab == NULL) + return; + fh = (struct ppc_link_hash_entry *) elf_link_hash_lookup (&htab->elf, p, FALSE, FALSE, FALSE); *(char *) p = save; @@ -6441,7 +6602,7 @@ get_sym_h (struct elf_link_hash_entry **hp, Elf_Internal_Sym **symp, asection **symsecp, - char **tls_maskp, + unsigned char **tls_maskp, Elf_Internal_Sym **locsymsp, unsigned long r_symndx, bfd *ibfd) @@ -6454,9 +6615,7 @@ struct elf_link_hash_entry *h; 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; + h = elf_follow_link (h); if (hp != NULL) *hp = h; @@ -6511,7 +6670,7 @@ if (tls_maskp != NULL) { struct got_entry **lgot_ents; - char *tls_mask; + unsigned char *tls_mask; tls_mask = NULL; lgot_ents = elf_local_got_ents (ibfd); @@ -6519,7 +6678,7 @@ { struct plt_entry **local_plt = (struct plt_entry **) (lgot_ents + symtab_hdr->sh_info); - char *lgot_masks = (char *) + unsigned char *lgot_masks = (unsigned char *) (local_plt + symtab_hdr->sh_info); tls_mask = &lgot_masks[r_symndx]; } @@ -6534,7 +6693,7 @@ type suitable for optimization, and 1 otherwise. */ static int -get_tls_mask (char **tls_maskp, +get_tls_mask (unsigned char **tls_maskp, unsigned long *toc_symndx, bfd_vma *toc_addend, Elf_Internal_Sym **locsymsp, @@ -6554,6 +6713,7 @@ if ((*tls_maskp != NULL && **tls_maskp != 0) || sec == NULL + || ppc64_elf_section_data (sec) == NULL || ppc64_elf_section_data (sec)->sec_type != sec_toc) return 1; @@ -6575,10 +6735,7 @@ *toc_addend = ppc64_elf_section_data (sec)->u.toc.add[off / 8]; if (!get_sym_h (&h, &sym, &sec, tls_maskp, locsymsp, r_symndx, ibfd)) return 0; - if ((h == NULL - || ((h->root.type == bfd_link_hash_defined - || h->root.type == bfd_link_hash_defweak) - && !h->def_dynamic)) + if ((h == NULL || is_static_defined (h)) && (next_r == -1 || next_r == -2)) return 1 - next_r; return 1; @@ -6777,8 +6934,7 @@ applications. */ bfd_boolean -ppc64_elf_edit_opd (bfd *obfd, struct bfd_link_info *info, - bfd_boolean non_overlapping) +ppc64_elf_edit_opd (struct bfd_link_info *info, bfd_boolean non_overlapping) { bfd *ibfd; bfd_boolean some_edited = FALSE; @@ -6790,12 +6946,14 @@ Elf_Internal_Rela *relstart, *rel, *relend; Elf_Internal_Shdr *symtab_hdr; Elf_Internal_Sym *local_syms; - struct elf_link_hash_entry **sym_hashes; bfd_vma offset; struct _opd_sec_data *opd; bfd_boolean need_edit, add_aux_fields; bfd_size_type cnt_16b = 0; + if (!is_ppc64_elf (ibfd)) + continue; + sec = bfd_get_section_by_name (ibfd, ".opd"); if (sec == NULL || sec->size == 0) continue; @@ -6812,7 +6970,6 @@ local_syms = NULL; symtab_hdr = &elf_symtab_hdr (ibfd); - sym_hashes = elf_sym_hashes (ibfd); /* Read the relocations. */ relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, @@ -6939,6 +7096,7 @@ if (need_edit || add_aux_fields) { Elf_Internal_Rela *write_rel; + Elf_Internal_Shdr *rel_hdr; bfd_byte *rptr, *wptr; bfd_byte *new_contents; bfd_boolean skip; @@ -6948,7 +7106,7 @@ new_contents = NULL; amt = sec->size * sizeof (long) / 8; opd = &ppc64_elf_section_data (sec)->u.opd; - opd->adjust = bfd_zalloc (obfd, amt); + opd->adjust = bfd_zalloc (sec->owner, amt); if (opd->adjust == NULL) return FALSE; ppc64_elf_section_data (sec)->sec_type = sec_opd; @@ -7024,8 +7182,12 @@ if (h != NULL && h->root.root.string[0] == '.') { - fdh = get_fdh ((struct ppc_link_hash_entry *) h, - ppc_hash_table (info)); + struct ppc_link_hash_table *htab; + + htab = ppc_hash_table (info); + if (htab != NULL) + fdh = lookup_fdh ((struct ppc_link_hash_entry *) h, + htab); if (fdh != NULL && fdh->elf.root.type != bfd_link_hash_defined && fdh->elf.root.type != bfd_link_hash_defweak) @@ -7114,9 +7276,8 @@ /* Fudge the header size too, as this is used later in elf_bfd_final_link if we are emitting relocs. */ - elf_section_data (sec)->rel_hdr.sh_size - = sec->reloc_count * elf_section_data (sec)->rel_hdr.sh_entsize; - BFD_ASSERT (elf_section_data (sec)->rel_hdr2 == NULL); + rel_hdr = _bfd_elf_single_rel_hdr (sec); + rel_hdr->sh_size = sec->reloc_count * rel_hdr->sh_entsize; some_edited = TRUE; } else if (elf_section_data (sec)->relocs != relstart) @@ -7175,18 +7336,102 @@ /* Set htab->tls_get_addr and call the generic ELF tls_setup function. */ asection * -ppc64_elf_tls_setup (bfd *obfd, struct bfd_link_info *info) +ppc64_elf_tls_setup (struct bfd_link_info *info, + int no_tls_get_addr_opt, + int *no_multi_toc) { struct ppc_link_hash_table *htab; htab = ppc_hash_table (info); + if (htab == NULL) + return NULL; + + if (*no_multi_toc) + htab->do_multi_toc = 0; + else if (!htab->do_multi_toc) + *no_multi_toc = 1; + htab->tls_get_addr = ((struct ppc_link_hash_entry *) elf_link_hash_lookup (&htab->elf, ".__tls_get_addr", FALSE, FALSE, TRUE)); + /* Move dynamic linking info to the function descriptor sym. */ + if (htab->tls_get_addr != NULL) + func_desc_adjust (&htab->tls_get_addr->elf, info); htab->tls_get_addr_fd = ((struct ppc_link_hash_entry *) elf_link_hash_lookup (&htab->elf, "__tls_get_addr", FALSE, FALSE, TRUE)); - return _bfd_elf_tls_setup (obfd, info); + if (!no_tls_get_addr_opt) + { + struct elf_link_hash_entry *opt, *opt_fd, *tga, *tga_fd; + + opt = elf_link_hash_lookup (&htab->elf, ".__tls_get_addr_opt", + FALSE, FALSE, TRUE); + if (opt != NULL) + func_desc_adjust (opt, info); + opt_fd = elf_link_hash_lookup (&htab->elf, "__tls_get_addr_opt", + FALSE, FALSE, TRUE); + if (opt_fd != NULL + && (opt_fd->root.type == bfd_link_hash_defined + || opt_fd->root.type == bfd_link_hash_defweak)) + { + /* If glibc supports an optimized __tls_get_addr call stub, + signalled by the presence of __tls_get_addr_opt, and we'll + be calling __tls_get_addr via a plt call stub, then + make __tls_get_addr point to __tls_get_addr_opt. */ + tga_fd = &htab->tls_get_addr_fd->elf; + if (htab->elf.dynamic_sections_created + && tga_fd != NULL + && (tga_fd->type == STT_FUNC + || tga_fd->needs_plt) + && !(SYMBOL_CALLS_LOCAL (info, tga_fd) + || (ELF_ST_VISIBILITY (tga_fd->other) != STV_DEFAULT + && tga_fd->root.type == bfd_link_hash_undefweak))) + { + struct plt_entry *ent; + + for (ent = tga_fd->plt.plist; ent != NULL; ent = ent->next) + if (ent->plt.refcount > 0) + break; + if (ent != NULL) + { + tga_fd->root.type = bfd_link_hash_indirect; + tga_fd->root.u.i.link = &opt_fd->root; + ppc64_elf_copy_indirect_symbol (info, opt_fd, tga_fd); + if (opt_fd->dynindx != -1) + { + /* Use __tls_get_addr_opt in dynamic relocations. */ + opt_fd->dynindx = -1; + _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr, + opt_fd->dynstr_index); + if (!bfd_elf_link_record_dynamic_symbol (info, opt_fd)) + return NULL; + } + htab->tls_get_addr_fd = (struct ppc_link_hash_entry *) opt_fd; + tga = &htab->tls_get_addr->elf; + if (opt != NULL && tga != NULL) + { + tga->root.type = bfd_link_hash_indirect; + tga->root.u.i.link = &opt->root; + ppc64_elf_copy_indirect_symbol (info, opt, tga); + _bfd_elf_link_hash_hide_symbol (info, opt, + tga->forced_local); + htab->tls_get_addr = (struct ppc_link_hash_entry *) opt; + } + htab->tls_get_addr_fd->oh = htab->tls_get_addr; + htab->tls_get_addr_fd->is_func_descriptor = 1; + if (htab->tls_get_addr != NULL) + { + htab->tls_get_addr->oh = htab->tls_get_addr_fd; + htab->tls_get_addr->is_func = 1; + } + } + } + } + else + no_tls_get_addr_opt = TRUE; + } + htab->no_tls_get_addr_opt = no_tls_get_addr_opt; + return _bfd_elf_tls_setup (info->output_bfd, info); } /* Return TRUE iff REL is a branch reloc with a global symbol matching @@ -7208,9 +7453,7 @@ struct elf_link_hash_entry *h; 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; + h = elf_follow_link (h); if (h == &hash1->elf || h == &hash2->elf) return TRUE; } @@ -7225,34 +7468,40 @@ dynamic relocations. */ bfd_boolean -ppc64_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) +ppc64_elf_tls_optimize (struct bfd_link_info *info) { bfd *ibfd; asection *sec; struct ppc_link_hash_table *htab; + unsigned char *toc_ref; int pass; if (info->relocatable || !info->executable) return TRUE; htab = ppc_hash_table (info); - for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) - { - Elf_Internal_Sym *locsyms = NULL; - asection *toc = bfd_get_section_by_name (ibfd, ".toc"); - unsigned char *toc_ref = NULL; - - /* Look at all the sections for this file. Make two passes over - the relocs. On the first pass, mark toc entries involved - with tls relocs, and check that tls relocs involved in - setting up a tls_get_addr call are indeed followed by such a - call. If they are not, exclude them from the optimizations - done on the second pass. */ - for (pass = 0; pass < 2; ++pass) + if (htab == NULL) + return FALSE; + + /* Make two passes over the relocs. On the first pass, mark toc + entries involved with tls relocs, and check that tls relocs + involved in setting up a tls_get_addr call are indeed followed by + such a call. If they are not, we can't do any tls optimization. + On the second pass twiddle tls_mask flags to notify + relocate_section that optimization can be done, and adjust got + and plt refcounts. */ + toc_ref = NULL; + for (pass = 0; pass < 2; ++pass) + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + { + Elf_Internal_Sym *locsyms = NULL; + asection *toc = bfd_get_section_by_name (ibfd, ".toc"); + for (sec = ibfd->sections; sec != NULL; sec = sec->next) if (sec->has_tls_reloc && !bfd_is_abs_section (sec->output_section)) { Elf_Internal_Rela *relstart, *rel, *relend; + bfd_boolean found_tls_get_addr_arg = 0; /* Read the relocations. */ relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, @@ -7268,12 +7517,13 @@ struct elf_link_hash_entry *h; Elf_Internal_Sym *sym; asection *sym_sec; - char *tls_mask; - char tls_set, tls_clear, tls_type = 0; + unsigned char *tls_mask; + unsigned char tls_set, tls_clear, tls_type = 0; bfd_vma value; bfd_boolean ok_tprel, is_local; long toc_ref_index = 0; int expecting_tls_get_addr = 0; + bfd_boolean ret = FALSE; r_symndx = ELF64_R_SYM (rel->r_info); if (!get_sym_h (&h, &sym, &sym_sec, &tls_mask, &locsyms, @@ -7288,15 +7538,21 @@ && (elf_symtab_hdr (ibfd).contents != (unsigned char *) locsyms)) free (locsyms); - return FALSE; + return ret; } if (h != NULL) { - if (h->root.type != bfd_link_hash_defined - && h->root.type != bfd_link_hash_defweak) - continue; - value = h->root.u.def.value; + if (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + value = h->root.u.def.value; + else if (h->root.type == bfd_link_hash_undefweak) + value = 0; + else + { + found_tls_get_addr_arg = 0; + continue; + } } else /* Symbols referenced by TLS relocs must be of type @@ -7309,19 +7565,48 @@ || !h->def_dynamic) { is_local = TRUE; - value += sym_sec->output_offset; - value += sym_sec->output_section->vma; - value -= htab->elf.tls_sec->vma; - ok_tprel = (value + TP_OFFSET + ((bfd_vma) 1 << 31) - < (bfd_vma) 1 << 32); + if (h != NULL + && h->root.type == bfd_link_hash_undefweak) + ok_tprel = TRUE; + else + { + value += sym_sec->output_offset; + value += sym_sec->output_section->vma; + value -= htab->elf.tls_sec->vma; + ok_tprel = (value + TP_OFFSET + ((bfd_vma) 1 << 31) + < (bfd_vma) 1 << 32); + } } r_type = ELF64_R_TYPE (rel->r_info); + /* If this section has old-style __tls_get_addr calls + without marker relocs, then check that each + __tls_get_addr call reloc is preceded by a reloc + that conceivably belongs to the __tls_get_addr arg + setup insn. If we don't find matching arg setup + relocs, don't do any tls optimization. */ + if (pass == 0 + && sec->has_tls_get_addr_call + && h != NULL + && (h == &htab->tls_get_addr->elf + || h == &htab->tls_get_addr_fd->elf) + && !found_tls_get_addr_arg + && is_branch_reloc (r_type)) + { + info->callbacks->minfo (_("%C __tls_get_addr lost arg, " + "TLS optimization disabled\n"), + ibfd, sec, rel->r_offset); + ret = TRUE; + goto err_free_rel; + } + + found_tls_get_addr_arg = 0; switch (r_type) { case R_PPC64_GOT_TLSLD16: case R_PPC64_GOT_TLSLD16_LO: expecting_tls_get_addr = 1; + found_tls_get_addr_arg = 1; /* Fall thru */ case R_PPC64_GOT_TLSLD16_HI: @@ -7341,6 +7626,7 @@ case R_PPC64_GOT_TLSGD16: case R_PPC64_GOT_TLSGD16_LO: expecting_tls_get_addr = 1; + found_tls_get_addr_arg = 1; /* Fall thru */ case R_PPC64_GOT_TLSGD16_HI: @@ -7369,11 +7655,14 @@ } continue; - case R_PPC64_TOC16: - case R_PPC64_TOC16_LO: - case R_PPC64_TLS: case R_PPC64_TLSGD: case R_PPC64_TLSLD: + found_tls_get_addr_arg = 1; + /* Fall thru */ + + case R_PPC64_TLS: + case R_PPC64_TOC16: + case R_PPC64_TOC16_LO: if (sym_sec == NULL || sym_sec != toc) continue; @@ -7382,18 +7671,17 @@ case of R_PPC64_TLS, and after checking for tls_get_addr for the TOC16 relocs. */ if (toc_ref == NULL) - { - toc_ref = bfd_zmalloc (toc->size / 8); - if (toc_ref == NULL) - goto err_free_rel; - } + toc_ref = bfd_zmalloc (toc->output_section->rawsize / 8); + if (toc_ref == NULL) + goto err_free_rel; + if (h != NULL) value = h->root.u.def.value; else value = sym->st_value; value += rel->r_addend; BFD_ASSERT (value < toc->size && value % 8 == 0); - toc_ref_index = value / 8; + toc_ref_index = (value + toc->output_offset) / 8; if (r_type == R_PPC64_TLS || r_type == R_PPC64_TLSGD || r_type == R_PPC64_TLSLD) @@ -7414,7 +7702,7 @@ if (pass == 0 || sec != toc || toc_ref == NULL - || !toc_ref[rel->r_offset / 8]) + || !toc_ref[(rel->r_offset + toc->output_offset) / 8]) continue; if (ok_tprel) { @@ -7429,7 +7717,7 @@ if (pass == 0 || sec != toc || toc_ref == NULL - || !toc_ref[rel->r_offset / 8]) + || !toc_ref[(rel->r_offset + toc->output_offset) / 8]) continue; if (rel + 1 < relend && (rel[1].r_info @@ -7473,7 +7761,7 @@ if (expecting_tls_get_addr == 2) { /* Check for toc tls entries. */ - char *toc_tls; + unsigned char *toc_tls; int retval; retval = get_tls_mask (&toc_tls, NULL, NULL, @@ -7481,8 +7769,13 @@ rel, ibfd); if (retval == 0) goto err_free_rel; - if (retval > 1 && toc_tls != NULL) - toc_ref[toc_ref_index] = 1; + if (toc_tls != NULL) + { + if ((*toc_tls & (TLS_GD | TLS_LD)) != 0) + found_tls_get_addr_arg = 1; + if (retval > 1) + toc_ref[toc_ref_index] = 1; + } } continue; } @@ -7493,9 +7786,12 @@ /* Uh oh, we didn't find the expected call. We could just mark this symbol to exclude it from tls optimization but it's safer to skip - the entire section. */ - sec->has_tls_reloc = 0; - break; + the entire optimization. */ + info->callbacks->minfo (_("%C arg lost __tls_get_addr, " + "TLS optimization disabled\n"), + ibfd, sec, rel->r_offset); + ret = TRUE; + goto err_free_rel; } if (expecting_tls_get_addr && htab->tls_get_addr != NULL) @@ -7581,18 +7877,18 @@ free (relstart); } - if (toc_ref != NULL) - free (toc_ref); + if (locsyms != NULL + && (elf_symtab_hdr (ibfd).contents != (unsigned char *) locsyms)) + { + if (!info->keep_memory) + free (locsyms); + else + elf_symtab_hdr (ibfd).contents = (unsigned char *) locsyms; + } + } - if (locsyms != NULL - && (elf_symtab_hdr (ibfd).contents != (unsigned char *) locsyms)) - { - if (!info->keep_memory) - free (locsyms); - else - elf_symtab_hdr (ibfd).contents = (unsigned char *) locsyms; - } - } + if (toc_ref != NULL) + free (toc_ref); return TRUE; } @@ -7609,11 +7905,14 @@ bfd_boolean global_toc_syms; }; +enum toc_skip_enum { ref_from_discarded = 1, can_optimize = 2 }; + static bfd_boolean adjust_toc_syms (struct elf_link_hash_entry *h, void *inf) { struct ppc_link_hash_entry *eh; struct adjust_toc_info *toc_inf = (struct adjust_toc_info *) inf; + unsigned long i; if (h->root.type == bfd_link_hash_indirect) return TRUE; @@ -7631,16 +7930,22 @@ if (eh->elf.root.u.def.section == toc_inf->toc) { - unsigned long skip = toc_inf->skip[eh->elf.root.u.def.value >> 3]; - if (skip != (unsigned long) -1) - eh->elf.root.u.def.value -= skip; + if (eh->elf.root.u.def.value > toc_inf->toc->rawsize) + i = toc_inf->toc->rawsize >> 3; else + i = eh->elf.root.u.def.value >> 3; + + if ((toc_inf->skip[i] & (ref_from_discarded | can_optimize)) != 0) { (*_bfd_error_handler) - (_("%s defined in removed toc entry"), eh->elf.root.root.string); - eh->elf.root.u.def.section = &bfd_abs_section; - eh->elf.root.u.def.value = 0; + (_("%s defined on removed toc entry"), eh->elf.root.root.string); + do + ++i; + while ((toc_inf->skip[i] & (ref_from_discarded | can_optimize)) != 0); + eh->elf.root.u.def.value = (bfd_vma) i << 3; } + + eh->elf.root.u.def.value -= toc_inf->skip[i]; eh->adjust_done = 1; } else if (strcmp (eh->elf.root.u.def.section->name, ".toc") == 0) @@ -7653,23 +7958,27 @@ unused .toc entries. */ bfd_boolean -ppc64_elf_edit_toc (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) +ppc64_elf_edit_toc (struct bfd_link_info *info) { bfd *ibfd; struct adjust_toc_info toc_inf; + struct ppc_link_hash_table *htab = ppc_hash_table (info); + htab->do_toc_opt = 1; toc_inf.global_toc_syms = TRUE; for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) { asection *toc, *sec; Elf_Internal_Shdr *symtab_hdr; Elf_Internal_Sym *local_syms; - struct elf_link_hash_entry **sym_hashes; - Elf_Internal_Rela *relstart, *rel; + Elf_Internal_Rela *relstart, *rel, *toc_relocs; unsigned long *skip, *drop; unsigned char *used; unsigned char *keep, last, some_unused; + if (!is_ppc64_elf (ibfd)) + continue; + toc = bfd_get_section_by_name (ibfd, ".toc"); if (toc == NULL || toc->size == 0 @@ -7677,9 +7986,9 @@ || elf_discarded_section (toc)) continue; + toc_relocs = NULL; local_syms = NULL; symtab_hdr = &elf_symtab_hdr (ibfd); - sym_hashes = elf_sym_hashes (ibfd); /* Look at sections dropped from the final link. */ skip = NULL; @@ -7747,18 +8056,101 @@ if (skip == NULL) { - skip = bfd_zmalloc (sizeof (*skip) * (toc->size + 7) / 8); + skip = bfd_zmalloc (sizeof (*skip) * (toc->size + 15) / 8); if (skip == NULL) goto error_ret; } - skip[val >> 3] = 1; + skip[val >> 3] = ref_from_discarded; } if (elf_section_data (sec)->relocs != relstart) free (relstart); } + /* For largetoc loads of address constants, we can convert + . addis rx,2,addr@got@ha + . ld ry,addr@got@l(rx) + to + . addis rx,2,addr@toc@ha + . addi ry,rx,addr@toc@l + when addr is within 2G of the toc pointer. This then means + that the word storing "addr" in the toc is no longer needed. */ + + if (!ppc64_elf_tdata (ibfd)->has_small_toc_reloc + && toc->output_section->rawsize < (bfd_vma) 1 << 31 + && toc->reloc_count != 0) + { + /* Read toc relocs. */ + toc_relocs = _bfd_elf_link_read_relocs (ibfd, toc, NULL, NULL, + info->keep_memory); + if (toc_relocs == NULL) + goto error_ret; + + for (rel = toc_relocs; rel < toc_relocs + toc->reloc_count; ++rel) + { + enum elf_ppc64_reloc_type r_type; + unsigned long r_symndx; + asection *sym_sec; + struct elf_link_hash_entry *h; + Elf_Internal_Sym *sym; + bfd_vma val, addr; + + r_type = ELF64_R_TYPE (rel->r_info); + if (r_type != R_PPC64_ADDR64) + continue; + + r_symndx = ELF64_R_SYM (rel->r_info); + if (!get_sym_h (&h, &sym, &sym_sec, NULL, &local_syms, + r_symndx, ibfd)) + goto error_ret; + + if (sym_sec == NULL + || elf_discarded_section (sym_sec)) + continue; + + if (!SYMBOL_CALLS_LOCAL (info, h)) + continue; + + if (h != NULL) + { + if (h->type == STT_GNU_IFUNC) + continue; + val = h->root.u.def.value; + } + else + { + if (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + continue; + val = sym->st_value; + } + val += rel->r_addend; + val += sym_sec->output_section->vma + sym_sec->output_offset; + + /* We don't yet know the exact toc pointer value, but we + know it will be somewhere in the toc section. Don't + optimize if the difference from any possible toc + pointer is outside [ff..f80008000, 7fff7fff]. */ + addr = toc->output_section->vma + TOC_BASE_OFF; + if (val - addr + (bfd_vma) 0x80008000 >= (bfd_vma) 1 << 32) + continue; + + addr = toc->output_section->vma + toc->output_section->rawsize; + if (val - addr + (bfd_vma) 0x80008000 >= (bfd_vma) 1 << 32) + continue; + + if (skip == NULL) + { + skip = bfd_zmalloc (sizeof (*skip) * (toc->size + 15) / 8); + if (skip == NULL) + goto error_ret; + } + + skip[rel->r_offset >> 3] + |= can_optimize | ((rel - toc_relocs) << 2); + } + } + if (skip == NULL) continue; @@ -7773,6 +8165,9 @@ && relstart != NULL && elf_section_data (sec)->relocs != relstart) free (relstart); + if (toc_relocs != NULL + && elf_section_data (toc)->relocs != toc_relocs) + free (toc_relocs); if (skip != NULL) free (skip); return FALSE; @@ -7797,7 +8192,8 @@ || (sec->flags & SEC_DEBUGGING) != 0) continue; - relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, TRUE); + relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, + info->keep_memory); if (relstart == NULL) goto error_ret; @@ -7850,12 +8246,37 @@ if (val >= toc->size) continue; + if ((skip[val >> 3] & can_optimize) != 0) + { + bfd_vma off; + unsigned char opc; + + switch (r_type) + { + case R_PPC64_TOC16_HA: + break; + + case R_PPC64_TOC16_LO_DS: + off = rel->r_offset + (bfd_big_endian (ibfd) ? -2 : 3); + if (!bfd_get_section_contents (ibfd, sec, &opc, off, 1)) + return FALSE; + if ((opc & (0x3f << 2)) == (58u << 2)) + break; + /* Fall thru */ + + default: + /* Wrong sort of reloc, or not a ld. We may + as well clear ref_from_discarded too. */ + skip[val >> 3] = 0; + } + } + /* For the toc section, we only mark as used if this entry itself isn't unused. */ if (sec == toc && !used[val >> 3] && (used[rel->r_offset >> 3] - || !skip[rel->r_offset >> 3])) + || !(skip[rel->r_offset >> 3] & ref_from_discarded))) /* Do all the relocs again, to catch reference chains. */ repeat = 1; @@ -7863,6 +8284,9 @@ used[val >> 3] = 1; } while (repeat); + + if (elf_section_data (sec)->relocs != relstart) + free (relstart); } /* Merge the used and skip arrays. Assume that TOC @@ -7874,13 +8298,15 @@ { if (*keep) { - *drop = 0; + *drop &= ~ref_from_discarded; + if ((*drop & can_optimize) != 0) + some_unused = 1; last = 0; } else if (*drop) { some_unused = 1; - last = 1; + last = ref_from_discarded; } else *drop = last; @@ -7892,6 +8318,8 @@ { bfd_byte *contents, *src; unsigned long off; + Elf_Internal_Sym *sym; + bfd_boolean local_toc_syms = FALSE; /* Shuffle the toc contents, and at the same time convert the skip array from booleans into offsets. */ @@ -7904,52 +8332,20 @@ src < contents + toc->size; src += 8, ++drop) { - if (*drop) - { - *drop = (unsigned long) -1; - off += 8; - } + if ((*drop & (can_optimize | ref_from_discarded)) != 0) + off += 8; else if (off != 0) { *drop = off; memcpy (src - off, src, 8); } } + *drop = off; toc->rawsize = toc->size; toc->size = src - contents - off; - if (toc->reloc_count != 0) - { - Elf_Internal_Rela *wrel; - bfd_size_type sz; - - /* Read toc relocs. */ - relstart = _bfd_elf_link_read_relocs (ibfd, toc, NULL, NULL, - TRUE); - if (relstart == NULL) - goto error_ret; - - /* Remove unused toc relocs, and adjust those we keep. */ - wrel = relstart; - for (rel = relstart; rel < relstart + toc->reloc_count; ++rel) - if (skip[rel->r_offset >> 3] != (unsigned long) -1) - { - wrel->r_offset = rel->r_offset - skip[rel->r_offset >> 3]; - wrel->r_info = rel->r_info; - wrel->r_addend = rel->r_addend; - ++wrel; - } - else if (!dec_dynrel_count (rel->r_info, toc, info, - &local_syms, NULL, NULL)) - goto error_ret; - - toc->reloc_count = wrel - relstart; - sz = elf_section_data (toc)->rel_hdr.sh_entsize; - elf_section_data (toc)->rel_hdr.sh_size = toc->reloc_count * sz; - BFD_ASSERT (elf_section_data (toc)->rel_hdr2 == NULL); - } - - /* Adjust addends for relocs against the toc section sym. */ + /* Adjust addends for relocs against the toc section sym, + and optimize any accesses we can. */ for (sec = ibfd->sections; sec != NULL; sec = sec->next) { if (sec->reloc_count == 0 @@ -7957,7 +8353,7 @@ continue; relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, - TRUE); + info->keep_memory); if (relstart == NULL) goto error_ret; @@ -7967,7 +8363,7 @@ unsigned long r_symndx; asection *sym_sec; struct elf_link_hash_entry *h; - Elf_Internal_Sym *sym; + bfd_vma val; r_type = ELF64_R_TYPE (rel->r_info); switch (r_type) @@ -7990,41 +8386,92 @@ r_symndx, ibfd)) goto error_ret; - if (sym_sec != toc || h != NULL || sym->st_value != 0) + if (sym_sec != toc) continue; - rel->r_addend -= skip[rel->r_addend >> 3]; + if (h != NULL) + val = h->root.u.def.value; + else + { + val = sym->st_value; + if (val != 0) + local_toc_syms = TRUE; + } + + val += rel->r_addend; + + if (val > toc->rawsize) + val = toc->rawsize; + else if ((skip[val >> 3] & ref_from_discarded) != 0) + continue; + else if ((skip[val >> 3] & can_optimize) != 0) + { + Elf_Internal_Rela *tocrel + = toc_relocs + (skip[val >> 3] >> 2); + unsigned long tsym = ELF64_R_SYM (tocrel->r_info); + + switch (r_type) + { + case R_PPC64_TOC16_HA: + rel->r_info = ELF64_R_INFO (tsym, R_PPC64_TOC16_HA); + break; + + case R_PPC64_TOC16_LO_DS: + rel->r_info = ELF64_R_INFO (tsym, R_PPC64_LO_DS_OPT); + break; + + default: + abort (); + } + rel->r_addend = tocrel->r_addend; + elf_section_data (sec)->relocs = relstart; + continue; + } + + if (h != NULL || sym->st_value != 0) + continue; + + rel->r_addend -= skip[val >> 3]; + elf_section_data (sec)->relocs = relstart; } + + if (elf_section_data (sec)->relocs != relstart) + free (relstart); } /* We shouldn't have local or global symbols defined in the TOC, but handle them anyway. */ if (local_syms != NULL) - { - Elf_Internal_Sym *sym; + for (sym = local_syms; + sym < local_syms + symtab_hdr->sh_info; + ++sym) + if (sym->st_value != 0 + && bfd_section_from_elf_index (ibfd, sym->st_shndx) == toc) + { + unsigned long i; - for (sym = local_syms; - sym < local_syms + symtab_hdr->sh_info; - ++sym) - if (sym->st_value != 0 - && bfd_section_from_elf_index (ibfd, sym->st_shndx) == toc) - { - if (skip[sym->st_value >> 3] != (unsigned long) -1) - sym->st_value -= skip[sym->st_value >> 3]; - else - { + if (sym->st_value > toc->rawsize) + i = toc->rawsize >> 3; + else + i = sym->st_value >> 3; + + if ((skip[i] & (ref_from_discarded | can_optimize)) != 0) + { + if (local_toc_syms) (*_bfd_error_handler) - (_("%s defined in removed toc entry"), - bfd_elf_sym_name (ibfd, symtab_hdr, sym, - NULL)); - sym->st_value = 0; - sym->st_shndx = SHN_ABS; - } - symtab_hdr->contents = (unsigned char *) local_syms; - } - } + (_("%s defined on removed toc entry"), + bfd_elf_sym_name (ibfd, symtab_hdr, sym, NULL)); + do + ++i; + while ((skip[i] & (ref_from_discarded | can_optimize))); + sym->st_value = (bfd_vma) i << 3; + } - /* Finally, adjust any global syms defined in the toc. */ + sym->st_value -= skip[i]; + symtab_hdr->contents = (unsigned char *) local_syms; + } + + /* Adjust any global syms defined in this toc input section. */ if (toc_inf.global_toc_syms) { toc_inf.toc = toc; @@ -8033,7 +8480,44 @@ elf_link_hash_traverse (elf_hash_table (info), adjust_toc_syms, &toc_inf); } + + if (toc->reloc_count != 0) + { + Elf_Internal_Shdr *rel_hdr; + Elf_Internal_Rela *wrel; + bfd_size_type sz; + + /* Remove unused toc relocs, and adjust those we keep. */ + if (toc_relocs == NULL) + toc_relocs = _bfd_elf_link_read_relocs (ibfd, toc, NULL, NULL, + info->keep_memory); + if (toc_relocs == NULL) + goto error_ret; + + wrel = toc_relocs; + for (rel = toc_relocs; rel < toc_relocs + toc->reloc_count; ++rel) + if ((skip[rel->r_offset >> 3] + & (ref_from_discarded | can_optimize)) == 0) + { + wrel->r_offset = rel->r_offset - skip[rel->r_offset >> 3]; + wrel->r_info = rel->r_info; + wrel->r_addend = rel->r_addend; + ++wrel; + } + else if (!dec_dynrel_count (rel->r_info, toc, info, + &local_syms, NULL, NULL)) + goto error_ret; + + elf_section_data (toc)->relocs = toc_relocs; + toc->reloc_count = wrel - toc_relocs; + rel_hdr = _bfd_elf_single_rel_hdr (toc); + sz = rel_hdr->sh_entsize; + rel_hdr->sh_size = toc->reloc_count * sz; + } } + else if (toc_relocs != NULL + && elf_section_data (toc)->relocs != toc_relocs) + free (toc_relocs); if (local_syms != NULL && symtab_hdr->contents != (unsigned char *) local_syms) @@ -8049,6 +8533,72 @@ return TRUE; } +/* Return true iff input section I references the TOC using + instructions limited to +/-32k offsets. */ + +bfd_boolean +ppc64_elf_has_small_toc_reloc (asection *i) +{ + return (is_ppc64_elf (i->owner) + && ppc64_elf_tdata (i->owner)->has_small_toc_reloc); +} + +/* Allocate space for one GOT entry. */ + +static void +allocate_got (struct elf_link_hash_entry *h, + struct bfd_link_info *info, + struct got_entry *gent) +{ + struct ppc_link_hash_table *htab = ppc_hash_table (info); + bfd_boolean dyn; + struct ppc_link_hash_entry *eh = (struct ppc_link_hash_entry *) h; + int entsize = (gent->tls_type & eh->tls_mask & (TLS_GD | TLS_LD) + ? 16 : 8); + int rentsize = (gent->tls_type & eh->tls_mask & TLS_GD + ? 2 : 1) * sizeof (Elf64_External_Rela); + asection *got = ppc64_elf_tdata (gent->owner)->got; + + gent->got.offset = got->size; + got->size += entsize; + + dyn = htab->elf.dynamic_sections_created; + if ((info->shared + || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)) + && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT + || h->root.type != bfd_link_hash_undefweak)) + { + asection *relgot = ppc64_elf_tdata (gent->owner)->relgot; + relgot->size += rentsize; + } + else if (h->type == STT_GNU_IFUNC) + { + asection *relgot = htab->reliplt; + relgot->size += rentsize; + htab->got_reli_size += rentsize; + } +} + +/* This function merges got entries in the same toc group. */ + +static void +merge_got_entries (struct got_entry **pent) +{ + struct got_entry *ent, *ent2; + + for (ent = *pent; ent != NULL; ent = ent->next) + if (!ent->is_indirect) + for (ent2 = ent->next; ent2 != NULL; ent2 = ent2->next) + if (!ent2->is_indirect + && ent2->addend == ent->addend + && ent2->tls_type == ent->tls_type + && elf_gp (ent2->owner) == elf_gp (ent->owner)) + { + ent2->is_indirect = TRUE; + ent2->got.ent = ent; + } +} + /* Allocate space in .plt, .got and associated reloc sections for dynamic relocs. */ @@ -8060,7 +8610,7 @@ asection *s; struct ppc_link_hash_entry *eh; struct ppc_dyn_relocs *p; - struct got_entry *gent; + struct got_entry **pgent, *gent; if (h->root.type == bfd_link_hash_indirect) return TRUE; @@ -8070,6 +8620,8 @@ info = (struct bfd_link_info *) inf; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; if ((htab->elf.dynamic_sections_created && h->dynindx != -1 @@ -8157,12 +8709,31 @@ gent->tls_type = TLS_TLS | TLS_TPREL; } - for (gent = h->got.glist; gent != NULL; gent = gent->next) + /* Remove any list entry that won't generate a word in the GOT before + we call merge_got_entries. Otherwise we risk merging to empty + entries. */ + pgent = &h->got.glist; + while ((gent = *pgent) != NULL) if (gent->got.refcount > 0) { - bfd_boolean dyn; - asection *rsec; + if ((gent->tls_type & TLS_LD) != 0 + && !h->def_dynamic) + { + ppc64_tlsld_got (gent->owner)->got.refcount += 1; + *pgent = gent->next; + } + else + pgent = &gent->next; + } + else + *pgent = gent->next; + if (!htab->do_multi_toc) + merge_got_entries (&h->got.glist); + + for (gent = h->got.glist; gent != NULL; gent = gent->next) + if (!gent->is_indirect) + { /* Make sure this symbol is output as a dynamic symbol. Undefined weak syms won't yet be marked as dynamic, nor will all TLS symbols. */ @@ -8175,37 +8746,11 @@ return FALSE; } - if ((gent->tls_type & TLS_LD) != 0 - && !h->def_dynamic) - { - ppc64_tlsld_got (gent->owner)->refcount += 1; - gent->got.offset = (bfd_vma) -1; - continue; - } - if (!is_ppc64_elf (gent->owner)) - continue; + abort (); - s = ppc64_elf_tdata (gent->owner)->got; - gent->got.offset = s->size; - s->size - += (gent->tls_type & eh->tls_mask & (TLS_GD | TLS_LD)) ? 16 : 8; - dyn = htab->elf.dynamic_sections_created; - rsec = NULL; - if ((info->shared - || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)) - && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT - || h->root.type != bfd_link_hash_undefweak)) - rsec = ppc64_elf_tdata (gent->owner)->relgot; - else if (h->type == STT_GNU_IFUNC) - rsec = htab->reliplt; - if (rsec != NULL) - rsec->size += (gent->tls_type & eh->tls_mask & TLS_GD - ? 2 * sizeof (Elf64_External_Rela) - : sizeof (Elf64_External_Rela)); + allocate_got (h, info, gent); } - else - gent->got.offset = (bfd_vma) -1; if (eh->dyn_relocs == NULL || (!htab->elf.dynamic_sections_created @@ -8345,8 +8890,12 @@ asection *s; bfd_boolean relocs; bfd *ibfd; + struct got_entry *first_tlsld; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; if (dynobj == NULL) abort (); @@ -8372,7 +8921,7 @@ struct got_entry **end_lgot_ents; struct plt_entry **local_plt; struct plt_entry **end_local_plt; - char *lgot_masks; + unsigned char *lgot_masks; bfd_size_type locsymcount; Elf_Internal_Shdr *symtab_hdr; asection *srel; @@ -8415,20 +8964,21 @@ end_lgot_ents = lgot_ents + locsymcount; local_plt = (struct plt_entry **) end_lgot_ents; end_local_plt = local_plt + locsymcount; - lgot_masks = (char *) end_local_plt; + lgot_masks = (unsigned char *) end_local_plt; s = ppc64_elf_tdata (ibfd)->got; srel = ppc64_elf_tdata (ibfd)->relgot; for (; lgot_ents < end_lgot_ents; ++lgot_ents, ++lgot_masks) { - struct got_entry *ent; + struct got_entry **pent, *ent; - for (ent = *lgot_ents; ent != NULL; ent = ent->next) + pent = lgot_ents; + while ((ent = *pent) != NULL) if (ent->got.refcount > 0) { if ((ent->tls_type & *lgot_masks & TLS_LD) != 0) { - ppc64_tlsld_got (ibfd)->refcount += 1; - ent->got.offset = (bfd_vma) -1; + ppc64_tlsld_got (ibfd)->got.refcount += 1; + *pent = ent->next; } else { @@ -8440,11 +8990,17 @@ if (info->shared) srel->size += num * sizeof (Elf64_External_Rela); else if ((*lgot_masks & PLT_IFUNC) != 0) - htab->reliplt->size += num * sizeof (Elf64_External_Rela); + { + htab->reliplt->size + += num * sizeof (Elf64_External_Rela); + htab->got_reli_size + += num * sizeof (Elf64_External_Rela); + } + pent = &ent->next; } } else - ent->got.offset = (bfd_vma) -1; + *pent = ent->next; } /* Allocate space for calls to local STT_GNU_IFUNC syms in .iplt. */ @@ -8455,8 +9011,7 @@ for (ent = *local_plt; ent != NULL; ent = ent->next) if (ent->plt.refcount > 0) { - asection *s = htab->iplt; - + s = htab->iplt; ent->plt.offset = s->size; s->size += PLT_ENTRY_SIZE; @@ -8471,24 +9026,39 @@ sym dynamic relocs. */ elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, info); + first_tlsld = NULL; for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) { + struct got_entry *ent; + if (!is_ppc64_elf (ibfd)) continue; - if (ppc64_tlsld_got (ibfd)->refcount > 0) + ent = ppc64_tlsld_got (ibfd); + if (ent->got.refcount > 0) { - s = ppc64_elf_tdata (ibfd)->got; - ppc64_tlsld_got (ibfd)->offset = s->size; - s->size += 16; - if (info->shared) + if (!htab->do_multi_toc && first_tlsld != NULL) { - asection *srel = ppc64_elf_tdata (ibfd)->relgot; - srel->size += sizeof (Elf64_External_Rela); + ent->is_indirect = TRUE; + ent->got.ent = first_tlsld; + } + else + { + if (first_tlsld == NULL) + first_tlsld = ent; + s = ppc64_elf_tdata (ibfd)->got; + ent->got.offset = s->size; + ent->owner = ibfd; + s->size += 16; + if (info->shared) + { + asection *srel = ppc64_elf_tdata (ibfd)->relgot; + srel->size += sizeof (Elf64_External_Rela); + } } } else - ppc64_tlsld_got (ibfd)->offset = (bfd_vma) -1; + ent->got.offset = (bfd_vma) -1; } /* We now have determined the sizes of the various dynamic sections. @@ -8511,7 +9081,7 @@ /* Strip this section if we don't need it; see the comment below. */ } - else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela")) + else if (CONST_STRNEQ (s->name, ".rela")) { if (s->size != 0) { @@ -8625,6 +9195,12 @@ return FALSE; } + if (!htab->no_tls_get_addr_opt + && htab->tls_get_addr_fd != NULL + && htab->tls_get_addr_fd->elf.plt.plist != NULL + && !add_dynamic_entry (DT_PPC64_TLSOPT, 0)) + return FALSE; + if (relocs) { if (!add_dynamic_entry (DT_RELA, 0) @@ -8668,15 +9244,17 @@ { struct plt_entry *ent; struct ppc_link_hash_entry *fdh = h; - if (fdh->oh != NULL - && fdh->oh->is_func_descriptor) - fdh = fdh->oh; + if (h->oh != NULL + && h->oh->is_func_descriptor) + { + fdh = ppc_follow_link (h->oh); + *hash = fdh; + } for (ent = fdh->elf.plt.plist; ent != NULL; ent = ent->next) if (ent->addend == rel->r_addend && ent->plt.offset != (bfd_vma) -1) { - *hash = fdh; *plt_ent = ent; return ppc_stub_plt_call; } @@ -8685,12 +9263,8 @@ either a defined function descriptor or a defined entry symbol in a regular object file, then it is pointless trying to make any other type of stub. */ - if (!((fdh->elf.root.type == bfd_link_hash_defined - || fdh->elf.root.type == bfd_link_hash_defweak) - && fdh->elf.root.u.def.section->output_section != NULL) - && !((h->elf.root.type == bfd_link_hash_defined - || h->elf.root.type == bfd_link_hash_defweak) - && h->elf.root.u.def.section->output_section != NULL)) + if (!is_static_defined (&fdh->elf) + && !is_static_defined (&h->elf)) return ppc_stub_none; } else if (elf_local_got_ents (input_sec->owner) != NULL) @@ -8818,6 +9392,49 @@ return p; } +/* Build a special .plt call stub for __tls_get_addr. */ + +#define LD_R11_0R3 0xe9630000 +#define LD_R12_0R3 0xe9830000 +#define MR_R0_R3 0x7c601b78 +#define CMPDI_R11_0 0x2c2b0000 +#define ADD_R3_R12_R13 0x7c6c6a14 +#define BEQLR 0x4d820020 +#define MR_R3_R0 0x7c030378 +#define MFLR_R11 0x7d6802a6 +#define STD_R11_0R1 0xf9610000 +#define BCTRL 0x4e800421 +#define LD_R11_0R1 0xe9610000 +#define LD_R2_0R1 0xe8410000 +#define MTLR_R11 0x7d6803a6 + +static inline bfd_byte * +build_tls_get_addr_stub (bfd *obfd, bfd_byte *p, int offset, + Elf_Internal_Rela *r) +{ + bfd_put_32 (obfd, LD_R11_0R3 + 0, p), p += 4; + bfd_put_32 (obfd, LD_R12_0R3 + 8, p), p += 4; + bfd_put_32 (obfd, MR_R0_R3, p), p += 4; + bfd_put_32 (obfd, CMPDI_R11_0, p), p += 4; + bfd_put_32 (obfd, ADD_R3_R12_R13, p), p += 4; + bfd_put_32 (obfd, BEQLR, p), p += 4; + bfd_put_32 (obfd, MR_R3_R0, p), p += 4; + bfd_put_32 (obfd, MFLR_R11, p), p += 4; + bfd_put_32 (obfd, STD_R11_0R1 + 32, p), p += 4; + + if (r != NULL) + r[0].r_offset += 9 * 4; + p = build_plt_stub (obfd, p, offset, r); + bfd_put_32 (obfd, BCTRL, p - 4); + + bfd_put_32 (obfd, LD_R11_0R1 + 32, p), p += 4; + bfd_put_32 (obfd, LD_R2_0R1 + 40, p), p += 4; + bfd_put_32 (obfd, MTLR_R11, p), p += 4; + bfd_put_32 (obfd, BLR, p), p += 4; + + return p; +} + static Elf_Internal_Rela * get_relocs (asection *sec, int count) { @@ -8834,9 +9451,13 @@ if (relocs == NULL) return NULL; elfsec_data->relocs = relocs; - elfsec_data->rel_hdr.sh_size = (sec->reloc_count - * sizeof (Elf64_External_Rela)); - elfsec_data->rel_hdr.sh_entsize = sizeof (Elf64_External_Rela); + elfsec_data->rela.hdr = bfd_zalloc (sec->owner, + sizeof (Elf_Internal_Shdr)); + if (elfsec_data->rela.hdr == NULL) + return NULL; + elfsec_data->rela.hdr->sh_size = (sec->reloc_count + * sizeof (Elf64_External_Rela)); + elfsec_data->rela.hdr->sh_entsize = sizeof (Elf64_External_Rela); sec->reloc_count = 0; } relocs += sec->reloc_count; @@ -8844,6 +9465,37 @@ return relocs; } +static bfd_vma +get_r2off (struct ppc_link_hash_table *htab, + struct ppc_stub_hash_entry *stub_entry) +{ + bfd_vma r2off = htab->stub_group[stub_entry->target_section->id].toc_off; + + if (r2off == 0) + { + /* Support linking -R objects. Get the toc pointer from the + opd entry. */ + char buf[8]; + asection *opd = stub_entry->h->elf.root.u.def.section; + bfd_vma opd_off = stub_entry->h->elf.root.u.def.value; + + if (strcmp (opd->name, ".opd") != 0 + || opd->reloc_count != 0) + { + (*_bfd_error_handler) (_("cannot find opd entry toc for %s"), + stub_entry->h->elf.root.root.string); + bfd_set_error (bfd_error_bad_value); + return 0; + } + if (!bfd_get_section_contents (opd->owner, opd, buf, opd_off + 8, 8)) + return 0; + r2off = bfd_get_64 (opd->owner, buf); + r2off -= elf_gp (stub_entry->id_sec->output_section->owner); + } + r2off -= htab->stub_group[stub_entry->id_sec->id].toc_off; + return r2off; +} + static bfd_boolean ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) { @@ -8863,6 +9515,8 @@ info = in_arg; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; /* Make a note of the offset within the stubs for this entry. */ stub_entry->stub_offset = stub_entry->stub_sec->size; @@ -8886,10 +9540,13 @@ size = 4; if (stub_entry->stub_type == ppc_stub_long_branch_r2off) { - bfd_vma r2off; + bfd_vma r2off = get_r2off (htab, stub_entry); - r2off = (htab->stub_group[stub_entry->target_section->id].toc_off - - htab->stub_group[stub_entry->id_sec->id].toc_off); + if (r2off == 0) + { + htab->stub_error = TRUE; + return FALSE; + } bfd_put_32 (htab->stub_bfd, STD_R2_40R1, loc); loc += 4; size = 12; @@ -8944,7 +9601,7 @@ hashes[symndx] = &h->elf; r->r_info = ELF64_R_INFO (symndx, R_PPC64_REL24); if (h->oh != NULL && h->oh->is_func) - h = h->oh; + h = ppc_follow_link (h->oh); if (h->elf.root.u.def.section != stub_entry->target_section) /* H is an opd symbol. The addend must be zero. */ r->r_addend = 0; @@ -9073,10 +9730,14 @@ } else { - bfd_vma r2off; + bfd_vma r2off = get_r2off (htab, stub_entry); + + if (r2off == 0) + { + htab->stub_error = TRUE; + return FALSE; + } - r2off = (htab->stub_group[stub_entry->target_section->id].toc_off - - htab->stub_group[stub_entry->id_sec->id].toc_off); bfd_put_32 (htab->stub_bfd, STD_R2_40R1, loc); loc += 4; size = 20; @@ -9109,22 +9770,20 @@ break; case ppc_stub_plt_call: - /* Do the best we can for shared libraries built without - exporting ".foo" for each "foo". This can happen when symbol - versioning scripts strip all bar a subset of symbols. */ if (stub_entry->h != NULL - && stub_entry->h->oh != NULL - && stub_entry->h->oh->elf.root.type != bfd_link_hash_defined - && stub_entry->h->oh->elf.root.type != bfd_link_hash_defweak) - { - /* Point the symbol at the stub. There may be multiple stubs, - we don't really care; The main thing is to make this sym - defined somewhere. Maybe defining the symbol in the stub - section is a silly idea. If we didn't do this, htab->top_id - could disappear. */ - stub_entry->h->oh->elf.root.type = bfd_link_hash_defined; - stub_entry->h->oh->elf.root.u.def.section = stub_entry->stub_sec; - stub_entry->h->oh->elf.root.u.def.value = stub_entry->stub_offset; + && stub_entry->h->is_func_descriptor + && stub_entry->h->oh != NULL) + { + struct ppc_link_hash_entry *fh = ppc_follow_link (stub_entry->h->oh); + + /* If the old-ABI "dot-symbol" is undefined make it weak so + we don't get a link error from RELOC_FOR_GLOBAL_SYMBOL. + FIXME: We used to define the symbol on one of the call + stubs instead, which is why we test symbol section id + against htab->top_id in various places. Likely all + these checks could now disappear. */ + if (fh->elf.root.type == bfd_link_hash_undefined) + fh->elf.root.type = bfd_link_hash_undefweak; } /* Now build the stub. */ @@ -9188,7 +9847,13 @@ r[0].r_offset += 2; r[0].r_addend = dest; } - p = build_plt_stub (htab->stub_bfd, loc, off, r); + if (stub_entry->h != NULL + && (stub_entry->h == htab->tls_get_addr_fd + || stub_entry->h == htab->tls_get_addr) + && !htab->no_tls_get_addr_opt) + p = build_tls_get_addr_stub (htab->stub_bfd, loc, off, r); + else + p = build_plt_stub (htab->stub_bfd, loc, off, r); size = p - loc; break; @@ -9255,6 +9920,8 @@ info = in_arg; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; if (stub_entry->stub_type == ppc_stub_plt_call) { @@ -9277,6 +9944,11 @@ size -= 4; if (PPC_HA (off + 16) != PPC_HA (off)) size += 4; + if (stub_entry->h != NULL + && (stub_entry->h == htab->tls_get_addr_fd + || stub_entry->h == htab->tls_get_addr) + && !htab->no_tls_get_addr_opt) + size += 13 * 4; if (info->emitrelocations) { stub_entry->stub_sec->reloc_count @@ -9305,8 +9977,12 @@ size = 4; if (stub_entry->stub_type == ppc_stub_long_branch_r2off) { - r2off = (htab->stub_group[stub_entry->target_section->id].toc_off - - htab->stub_group[stub_entry->id_sec->id].toc_off); + r2off = get_r2off (htab, stub_entry); + if (r2off == 0) + { + htab->stub_error = TRUE; + return FALSE; + } size = 12; if (PPC_HA (r2off) != 0) size = 16; @@ -9389,9 +10065,10 @@ 0 when no stubs will be needed, and 1 on success. */ int -ppc64_elf_setup_section_lists (bfd *output_bfd, - struct bfd_link_info *info, - int no_multi_toc) +ppc64_elf_setup_section_lists + (struct bfd_link_info *info, + asection *(*add_stub_section) (const char *, asection *), + void (*layout_sections_again) (void)) { bfd *input_bfd; int top_id, top_index, id; @@ -9400,7 +10077,11 @@ bfd_size_type amt; struct ppc_link_hash_table *htab = ppc_hash_table (info); - htab->no_multi_toc = no_multi_toc; + if (htab == NULL) + return -1; + /* Stash our params away. */ + htab->add_stub_section = add_stub_section; + htab->layout_sections_again = layout_sections_again; if (htab->brlt == NULL) return 0; @@ -9429,12 +10110,10 @@ for (id = 0; id < 3; id++) htab->stub_group[id].toc_off = TOC_BASE_OFF; - elf_gp (output_bfd) = htab->toc_curr = ppc64_elf_toc (output_bfd); - /* We can't use output_bfd->section_count here to find the top output section index as some sections may have been removed, and strip_excluded_output_sections doesn't renumber the indices. */ - for (section = output_bfd->sections, top_index = 0; + for (section = info->output_bfd->sections, top_index = 0; section != NULL; section = section->next) { @@ -9452,41 +10131,314 @@ return 1; } +/* Set up for first pass at multitoc partitioning. */ + +void +ppc64_elf_start_multitoc_partition (struct bfd_link_info *info) +{ + struct ppc_link_hash_table *htab = ppc_hash_table (info); + + elf_gp (info->output_bfd) = ppc64_elf_toc (info->output_bfd); + htab->toc_curr = elf_gp (info->output_bfd); + htab->toc_bfd = NULL; + htab->toc_first_sec = NULL; +} + /* The linker repeatedly calls this function for each TOC input section and linker generated GOT section. Group input bfds such that the toc - within a group is less than 64k in size. Will break with cute linker - scripts that play games with dot in the output toc section. */ + within a group is less than 64k in size. */ -void +bfd_boolean ppc64_elf_next_toc_section (struct bfd_link_info *info, asection *isec) { struct ppc_link_hash_table *htab = ppc_hash_table (info); + bfd_vma addr, off, limit; + + if (htab == NULL) + return FALSE; - if (!htab->no_multi_toc) + if (!htab->second_toc_pass) { - bfd_vma addr = isec->output_offset + isec->output_section->vma; - bfd_vma off = addr - htab->toc_curr; + /* Keep track of the first .toc or .got section for this input bfd. */ + if (htab->toc_bfd != isec->owner) + { + htab->toc_bfd = isec->owner; + htab->toc_first_sec = isec; + } + + addr = isec->output_offset + isec->output_section->vma; + off = addr - htab->toc_curr; + limit = 0x80008000; + if (ppc64_elf_tdata (isec->owner)->has_small_toc_reloc) + limit = 0x10000; + if (off + isec->size > limit) + { + addr = (htab->toc_first_sec->output_offset + + htab->toc_first_sec->output_section->vma); + htab->toc_curr = addr; + } + + /* toc_curr is the base address of this toc group. Set elf_gp + for the input section to be the offset relative to the + output toc base plus 0x8000. Making the input elf_gp an + offset allows us to move the toc as a whole without + recalculating input elf_gp. */ + off = htab->toc_curr - elf_gp (isec->output_section->owner); + off += TOC_BASE_OFF; + + /* Die if someone uses a linker script that doesn't keep input + file .toc and .got together. */ + if (elf_gp (isec->owner) != 0 + && elf_gp (isec->owner) != off) + return FALSE; + + elf_gp (isec->owner) = off; + return TRUE; + } - if (off + isec->size > 0x10000) - htab->toc_curr = addr; + /* During the second pass toc_first_sec points to the start of + a toc group, and toc_curr is used to track the old elf_gp. + We use toc_bfd to ensure we only look at each bfd once. */ + if (htab->toc_bfd == isec->owner) + return TRUE; + htab->toc_bfd = isec->owner; - elf_gp (isec->owner) = (htab->toc_curr - - elf_gp (isec->output_section->owner) - + TOC_BASE_OFF); + if (htab->toc_first_sec == NULL + || htab->toc_curr != elf_gp (isec->owner)) + { + htab->toc_curr = elf_gp (isec->owner); + htab->toc_first_sec = isec; } + addr = (htab->toc_first_sec->output_offset + + htab->toc_first_sec->output_section->vma); + off = addr - elf_gp (isec->output_section->owner) + TOC_BASE_OFF; + elf_gp (isec->owner) = off; + + return TRUE; } -/* Called after the last call to the above function. */ +/* Called via elf_link_hash_traverse to merge GOT entries for global + symbol H. */ -void -ppc64_elf_reinit_toc (bfd *output_bfd, struct bfd_link_info *info) +static bfd_boolean +merge_global_got (struct elf_link_hash_entry *h, void *inf ATTRIBUTE_UNUSED) +{ + if (h->root.type == bfd_link_hash_indirect) + return TRUE; + + if (h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + merge_got_entries (&h->got.glist); + + return TRUE; +} + +/* Called via elf_link_hash_traverse to allocate GOT entries for global + symbol H. */ + +static bfd_boolean +reallocate_got (struct elf_link_hash_entry *h, void *inf) +{ + struct got_entry *gent; + + if (h->root.type == bfd_link_hash_indirect) + return TRUE; + + if (h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + for (gent = h->got.glist; gent != NULL; gent = gent->next) + if (!gent->is_indirect) + allocate_got (h, (struct bfd_link_info *) inf, gent); + return TRUE; +} + +/* Called on the first multitoc pass after the last call to + ppc64_elf_next_toc_section. This function removes duplicate GOT + entries. */ + +bfd_boolean +ppc64_elf_layout_multitoc (struct bfd_link_info *info) { struct ppc_link_hash_table *htab = ppc_hash_table (info); + struct bfd *ibfd, *ibfd2; + bfd_boolean done_something; + + htab->multi_toc_needed = htab->toc_curr != elf_gp (info->output_bfd); + + if (!htab->do_multi_toc) + return FALSE; + + /* Merge global sym got entries within a toc group. */ + elf_link_hash_traverse (&htab->elf, merge_global_got, info); + + /* And tlsld_got. */ + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + { + struct got_entry *ent, *ent2; + + if (!is_ppc64_elf (ibfd)) + continue; + + ent = ppc64_tlsld_got (ibfd); + if (!ent->is_indirect + && ent->got.offset != (bfd_vma) -1) + { + for (ibfd2 = ibfd->link_next; ibfd2 != NULL; ibfd2 = ibfd2->link_next) + { + if (!is_ppc64_elf (ibfd2)) + continue; + + ent2 = ppc64_tlsld_got (ibfd2); + if (!ent2->is_indirect + && ent2->got.offset != (bfd_vma) -1 + && elf_gp (ibfd2) == elf_gp (ibfd)) + { + ent2->is_indirect = TRUE; + ent2->got.ent = ent; + } + } + } + } - htab->multi_toc_needed = htab->toc_curr != elf_gp (output_bfd); + /* Zap sizes of got sections. */ + htab->reliplt->rawsize = htab->reliplt->size; + htab->reliplt->size -= htab->got_reli_size; + htab->got_reli_size = 0; - /* toc_curr tracks the TOC offset used for code sections below in - ppc64_elf_next_input_section. Start off at 0x8000. */ + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + { + asection *got, *relgot; + + if (!is_ppc64_elf (ibfd)) + continue; + + got = ppc64_elf_tdata (ibfd)->got; + if (got != NULL) + { + got->rawsize = got->size; + got->size = 0; + relgot = ppc64_elf_tdata (ibfd)->relgot; + relgot->rawsize = relgot->size; + relgot->size = 0; + } + } + + /* Now reallocate the got, local syms first. We don't need to + allocate section contents again since we never increase size. */ + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + { + struct got_entry **lgot_ents; + struct got_entry **end_lgot_ents; + struct plt_entry **local_plt; + struct plt_entry **end_local_plt; + unsigned char *lgot_masks; + bfd_size_type locsymcount; + Elf_Internal_Shdr *symtab_hdr; + asection *s, *srel; + + if (!is_ppc64_elf (ibfd)) + continue; + + lgot_ents = elf_local_got_ents (ibfd); + if (!lgot_ents) + continue; + + symtab_hdr = &elf_symtab_hdr (ibfd); + locsymcount = symtab_hdr->sh_info; + end_lgot_ents = lgot_ents + locsymcount; + local_plt = (struct plt_entry **) end_lgot_ents; + end_local_plt = local_plt + locsymcount; + lgot_masks = (unsigned char *) end_local_plt; + s = ppc64_elf_tdata (ibfd)->got; + srel = ppc64_elf_tdata (ibfd)->relgot; + for (; lgot_ents < end_lgot_ents; ++lgot_ents, ++lgot_masks) + { + struct got_entry *ent; + + for (ent = *lgot_ents; ent != NULL; ent = ent->next) + { + unsigned int num = 1; + ent->got.offset = s->size; + if ((ent->tls_type & *lgot_masks & TLS_GD) != 0) + num = 2; + s->size += num * 8; + if (info->shared) + srel->size += num * sizeof (Elf64_External_Rela); + else if ((*lgot_masks & PLT_IFUNC) != 0) + { + htab->reliplt->size + += num * sizeof (Elf64_External_Rela); + htab->got_reli_size + += num * sizeof (Elf64_External_Rela); + } + } + } + } + + elf_link_hash_traverse (&htab->elf, reallocate_got, info); + + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + { + struct got_entry *ent; + + if (!is_ppc64_elf (ibfd)) + continue; + + ent = ppc64_tlsld_got (ibfd); + if (!ent->is_indirect + && ent->got.offset != (bfd_vma) -1) + { + asection *s = ppc64_elf_tdata (ibfd)->got; + ent->got.offset = s->size; + s->size += 16; + if (info->shared) + { + asection *srel = ppc64_elf_tdata (ibfd)->relgot; + srel->size += sizeof (Elf64_External_Rela); + } + } + } + + done_something = htab->reliplt->rawsize != htab->reliplt->size; + if (!done_something) + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + { + asection *got; + + if (!is_ppc64_elf (ibfd)) + continue; + + got = ppc64_elf_tdata (ibfd)->got; + if (got != NULL) + { + done_something = got->rawsize != got->size; + if (done_something) + break; + } + } + + if (done_something) + (*htab->layout_sections_again) (); + + /* Set up for second pass over toc sections to recalculate elf_gp + on input sections. */ + htab->toc_bfd = NULL; + htab->toc_first_sec = NULL; + htab->second_toc_pass = TRUE; + return done_something; +} + +/* Called after second pass of multitoc partitioning. */ + +void +ppc64_elf_finish_multitoc_partition (struct bfd_link_info *info) +{ + struct ppc_link_hash_table *htab = ppc_hash_table (info); + + /* After the second pass, toc_curr tracks the TOC offset used + for code sections below in ppc64_elf_next_input_section. */ htab->toc_curr = TOC_BASE_OFF; } @@ -9501,10 +10453,10 @@ static int toc_adjusting_stub_needed (struct bfd_link_info *info, asection *isec) { - Elf_Internal_Rela *relstart, *rel; - Elf_Internal_Sym *local_syms; int ret; - struct ppc_link_hash_table *htab; + + /* Mark this section as checked. */ + isec->call_check_done = 1; /* We know none of our code bearing sections will need toc stubs. */ if ((isec->flags & SEC_LINKER_CREATED) != 0) @@ -9516,176 +10468,189 @@ if (isec->output_section == NULL) return 0; - if (isec->reloc_count == 0) - return 0; - - relstart = _bfd_elf_link_read_relocs (isec->owner, isec, NULL, NULL, - info->keep_memory); - if (relstart == NULL) - return -1; - - /* Look for branches to outside of this section. */ - local_syms = NULL; ret = 0; - htab = ppc_hash_table (info); - for (rel = relstart; rel < relstart + isec->reloc_count; ++rel) + if (isec->reloc_count != 0) { - enum elf_ppc64_reloc_type r_type; - unsigned long r_symndx; - struct elf_link_hash_entry *h; - struct ppc_link_hash_entry *eh; - Elf_Internal_Sym *sym; - asection *sym_sec; - struct _opd_sec_data *opd; - bfd_vma sym_value; - bfd_vma dest; - - r_type = ELF64_R_TYPE (rel->r_info); - if (r_type != R_PPC64_REL24 - && r_type != R_PPC64_REL14 - && r_type != R_PPC64_REL14_BRTAKEN - && r_type != R_PPC64_REL14_BRNTAKEN) - continue; - - r_symndx = ELF64_R_SYM (rel->r_info); - if (!get_sym_h (&h, &sym, &sym_sec, NULL, &local_syms, r_symndx, - isec->owner)) - { - ret = -1; - break; - } + Elf_Internal_Rela *relstart, *rel; + Elf_Internal_Sym *local_syms; + struct ppc_link_hash_table *htab; - /* Calls to dynamic lib functions go through a plt call stub - that uses r2. */ - eh = (struct ppc_link_hash_entry *) h; - if (eh != NULL - && (eh->elf.plt.plist != NULL - || (eh->oh != NULL - && eh->oh->elf.plt.plist != NULL))) - { - ret = 1; - break; - } + relstart = _bfd_elf_link_read_relocs (isec->owner, isec, NULL, NULL, + info->keep_memory); + if (relstart == NULL) + return -1; - if (sym_sec == NULL) - /* Ignore other undefined symbols. */ - continue; + /* Look for branches to outside of this section. */ + local_syms = NULL; + htab = ppc_hash_table (info); + if (htab == NULL) + return -1; - /* Assume branches to other sections not included in the link need - stubs too, to cover -R and absolute syms. */ - if (sym_sec->output_section == NULL) + for (rel = relstart; rel < relstart + isec->reloc_count; ++rel) { - ret = 1; - break; - } + enum elf_ppc64_reloc_type r_type; + unsigned long r_symndx; + struct elf_link_hash_entry *h; + struct ppc_link_hash_entry *eh; + Elf_Internal_Sym *sym; + asection *sym_sec; + struct _opd_sec_data *opd; + bfd_vma sym_value; + bfd_vma dest; - if (h == NULL) - sym_value = sym->st_value; - else - { - if (h->root.type != bfd_link_hash_defined - && h->root.type != bfd_link_hash_defweak) - abort (); - sym_value = h->root.u.def.value; - } - sym_value += rel->r_addend; + r_type = ELF64_R_TYPE (rel->r_info); + if (r_type != R_PPC64_REL24 + && r_type != R_PPC64_REL14 + && r_type != R_PPC64_REL14_BRTAKEN + && r_type != R_PPC64_REL14_BRNTAKEN) + continue; - /* If this branch reloc uses an opd sym, find the code section. */ - opd = get_opd_info (sym_sec); - if (opd != NULL) - { - if (h == NULL && opd->adjust != NULL) + r_symndx = ELF64_R_SYM (rel->r_info); + if (!get_sym_h (&h, &sym, &sym_sec, NULL, &local_syms, r_symndx, + isec->owner)) { - long adjust; + ret = -1; + break; + } - adjust = opd->adjust[sym->st_value / 8]; - if (adjust == -1) - /* Assume deleted functions won't ever be called. */ - continue; - sym_value += adjust; + /* Calls to dynamic lib functions go through a plt call stub + that uses r2. */ + eh = (struct ppc_link_hash_entry *) h; + if (eh != NULL + && (eh->elf.plt.plist != NULL + || (eh->oh != NULL + && ppc_follow_link (eh->oh)->elf.plt.plist != NULL))) + { + ret = 1; + break; } - dest = opd_entry_value (sym_sec, sym_value, &sym_sec, NULL); - if (dest == (bfd_vma) -1) + if (sym_sec == NULL) + /* Ignore other undefined symbols. */ continue; - } - else - dest = (sym_value - + sym_sec->output_offset - + sym_sec->output_section->vma); - /* Ignore branch to self. */ - if (sym_sec == isec) - continue; + /* Assume branches to other sections not included in the + link need stubs too, to cover -R and absolute syms. */ + if (sym_sec->output_section == NULL) + { + ret = 1; + break; + } - /* If the called function uses the toc, we need a stub. */ - if (sym_sec->has_toc_reloc - || sym_sec->makes_toc_func_call) - { - ret = 1; - break; - } + if (h == NULL) + sym_value = sym->st_value; + else + { + if (h->root.type != bfd_link_hash_defined + && h->root.type != bfd_link_hash_defweak) + abort (); + sym_value = h->root.u.def.value; + } + sym_value += rel->r_addend; - /* Assume any branch that needs a long branch stub might in fact - need a plt_branch stub. A plt_branch stub uses r2. */ - else if (dest - (isec->output_offset - + isec->output_section->vma - + rel->r_offset) + (1 << 25) >= (2 << 25)) - { - ret = 1; - break; - } + /* If this branch reloc uses an opd sym, find the code section. */ + opd = get_opd_info (sym_sec); + if (opd != NULL) + { + if (h == NULL && opd->adjust != NULL) + { + long adjust; - /* If calling back to a section in the process of being tested, we - can't say for sure that no toc adjusting stubs are needed, so - don't return zero. */ - else if (sym_sec->call_check_in_progress) - ret = 2; + adjust = opd->adjust[sym->st_value / 8]; + if (adjust == -1) + /* Assume deleted functions won't ever be called. */ + continue; + sym_value += adjust; + } - /* Branches to another section that itself doesn't have any TOC - references are OK. Recursively call ourselves to check. */ - else if (sym_sec->id <= htab->top_id - && htab->stub_group[sym_sec->id].toc_off == 0) - { - int recur; + dest = opd_entry_value (sym_sec, sym_value, &sym_sec, NULL); + if (dest == (bfd_vma) -1) + continue; + } + else + dest = (sym_value + + sym_sec->output_offset + + sym_sec->output_section->vma); - /* Mark current section as indeterminate, so that other - sections that call back to current won't be marked as - known. */ - isec->call_check_in_progress = 1; - recur = toc_adjusting_stub_needed (info, sym_sec); - isec->call_check_in_progress = 0; + /* Ignore branch to self. */ + if (sym_sec == isec) + continue; - if (recur < 0) + /* If the called function uses the toc, we need a stub. */ + if (sym_sec->has_toc_reloc + || sym_sec->makes_toc_func_call) { - /* An error. Exit. */ - ret = -1; + ret = 1; break; } - else if (recur <= 1) + + /* Assume any branch that needs a long branch stub might in fact + need a plt_branch stub. A plt_branch stub uses r2. */ + else if (dest - (isec->output_offset + + isec->output_section->vma + + rel->r_offset) + (1 << 25) >= (2 << 25)) { - /* Known result. Mark as checked and set section flag. */ - htab->stub_group[sym_sec->id].toc_off = 1; + ret = 1; + break; + } + + /* If calling back to a section in the process of being + tested, we can't say for sure that no toc adjusting stubs + are needed, so don't return zero. */ + else if (sym_sec->call_check_in_progress) + ret = 2; + + /* Branches to another section that itself doesn't have any TOC + references are OK. Recursively call ourselves to check. */ + else if (!sym_sec->call_check_done) + { + int recur; + + /* Mark current section as indeterminate, so that other + sections that call back to current won't be marked as + known. */ + isec->call_check_in_progress = 1; + recur = toc_adjusting_stub_needed (info, sym_sec); + isec->call_check_in_progress = 0; + if (recur != 0) { - sym_sec->makes_toc_func_call = 1; - ret = 1; - break; + ret = recur; + if (recur != 2) + break; } } - else - { - /* Unknown result. Continue checking. */ - ret = 2; - } + } + + if (local_syms != NULL + && (elf_symtab_hdr (isec->owner).contents + != (unsigned char *) local_syms)) + free (local_syms); + if (elf_section_data (isec)->relocs != relstart) + free (relstart); + } + + if ((ret & 1) == 0 + && isec->map_head.s != NULL + && (strcmp (isec->output_section->name, ".init") == 0 + || strcmp (isec->output_section->name, ".fini") == 0)) + { + if (isec->map_head.s->has_toc_reloc + || isec->map_head.s->makes_toc_func_call) + ret = 1; + else if (!isec->map_head.s->call_check_done) + { + int recur; + isec->call_check_in_progress = 1; + recur = toc_adjusting_stub_needed (info, isec->map_head.s); + isec->call_check_in_progress = 0; + if (recur != 0) + ret = recur; } } - if (local_syms != NULL - && (elf_symtab_hdr (isec->owner).contents != (unsigned char *) local_syms)) - free (local_syms); - if (elf_section_data (isec)->relocs != relstart) - free (relstart); + if (ret == 1) + isec->makes_toc_func_call = 1; return ret; } @@ -9700,6 +10665,9 @@ { struct ppc_link_hash_table *htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; + if ((isec->output_section->flags & SEC_CODE) != 0 && isec->output_section->index <= htab->top_index) { @@ -9728,23 +10696,78 @@ if (elf_gp (isec->owner) != 0) htab->toc_curr = elf_gp (isec->owner); } - else if (htab->stub_group[isec->id].toc_off == 0) + else { - int ret = toc_adjusting_stub_needed (info, isec); - if (ret < 0) + if (!isec->call_check_done + && toc_adjusting_stub_needed (info, isec) < 0) return FALSE; - else - isec->makes_toc_func_call = ret & 1; + /* If we make a local call from this section, ie. a branch + without a following nop, then we have no place to put a + toc restoring insn. We must use the same toc group as + the callee. + Testing makes_toc_func_call actually tests for *any* + calls to functions that need a good toc pointer. A more + precise test would be better, as this one will set + incorrect values for pasted .init/.fini fragments. + (Fixed later in check_pasted_section.) */ + if (isec->makes_toc_func_call + && elf_gp (isec->owner) != 0) + htab->toc_curr = elf_gp (isec->owner); } } /* Functions that don't use the TOC can belong in any TOC group. - Use the last TOC base. This happens to make _init and _fini - pasting work. */ + Use the last TOC base. */ htab->stub_group[isec->id].toc_off = htab->toc_curr; return TRUE; } +/* Check that all .init and .fini sections use the same toc, if they + have toc relocs. */ + +static bfd_boolean +check_pasted_section (struct bfd_link_info *info, const char *name) +{ + asection *o = bfd_get_section_by_name (info->output_bfd, name); + + if (o != NULL) + { + struct ppc_link_hash_table *htab = ppc_hash_table (info); + bfd_vma toc_off = 0; + asection *i; + + for (i = o->map_head.s; i != NULL; i = i->map_head.s) + if (i->has_toc_reloc) + { + if (toc_off == 0) + toc_off = htab->stub_group[i->id].toc_off; + else if (toc_off != htab->stub_group[i->id].toc_off) + return FALSE; + } + + if (toc_off == 0) + for (i = o->map_head.s; i != NULL; i = i->map_head.s) + if (i->makes_toc_func_call) + { + toc_off = htab->stub_group[i->id].toc_off; + break; + } + + /* Make sure the whole pasted function uses the same toc offset. */ + if (toc_off != 0) + for (i = o->map_head.s; i != NULL; i = i->map_head.s) + htab->stub_group[i->id].toc_off = toc_off; + } + return TRUE; +} + +bfd_boolean +ppc64_elf_check_init_fini (struct bfd_link_info *info) +{ + return (check_pasted_section (info, ".init") + & check_pasted_section (info, ".fini")); +} + /* See whether we can group stub sections together. Grouping stub sections may result in fewer stubs. More importantly, we need to put all .init* and .fini* stubs at the beginning of the .init or @@ -9793,7 +10816,8 @@ curr = tail; total = tail->size; - big_sec = total > (ppc64_elf_section_data (tail)->has_14bit_branch + big_sec = total > (ppc64_elf_section_data (tail) != NULL + && ppc64_elf_section_data (tail)->has_14bit_branch ? stub14_group_size : stub_group_size); if (big_sec && !suppress_size_errors) (*_bfd_error_handler) (_("%B section %A exceeds stub group size"), @@ -9802,7 +10826,8 @@ while ((prev = PREV_SEC (curr)) != NULL && ((total += curr->output_offset - prev->output_offset) - < (ppc64_elf_section_data (prev)->has_14bit_branch + < (ppc64_elf_section_data (prev) != NULL + && ppc64_elf_section_data (prev)->has_14bit_branch ? stub14_group_size : stub_group_size)) && htab->stub_group[prev->id].toc_off == curr_toc) curr = prev; @@ -9835,7 +10860,8 @@ total = 0; while (prev != NULL && ((total += tail->output_offset - prev->output_offset) - < (ppc64_elf_section_data (prev)->has_14bit_branch + < (ppc64_elf_section_data (prev) != NULL + && ppc64_elf_section_data (prev)->has_14bit_branch ? stub14_group_size : stub_group_size)) && htab->stub_group[prev->id].toc_off == curr_toc) { @@ -9859,19 +10885,15 @@ instruction. */ bfd_boolean -ppc64_elf_size_stubs (bfd *output_bfd, - struct bfd_link_info *info, - bfd_signed_vma group_size, - asection *(*add_stub_section) (const char *, asection *), - void (*layout_sections_again) (void)) +ppc64_elf_size_stubs (struct bfd_link_info *info, bfd_signed_vma group_size) { bfd_size_type stub_group_size; bfd_boolean stubs_always_before_branch; struct ppc_link_hash_table *htab = ppc_hash_table (info); - /* Stash our params away. */ - htab->add_stub_section = add_stub_section; - htab->layout_sections_again = layout_sections_again; + if (htab == NULL) + return FALSE; + stubs_always_before_branch = group_size < 0; if (group_size < 0) stub_group_size = -group_size; @@ -9923,7 +10945,7 @@ /* If this section is a link-once section that will be discarded, then don't create any stubs. */ if (section->output_section == NULL - || section->output_section->owner != output_bfd) + || section->output_section->owner != info->output_bfd) continue; /* Get the relocs. */ @@ -10000,7 +11022,7 @@ use the func descriptor sym instead if it is defined. */ if (hash->elf.root.root.string[0] == '.' - && (fdh = get_fdh (hash, htab)) != NULL) + && (fdh = lookup_fdh (hash, htab)) != NULL) { if (fdh->elf.root.type == bfd_link_hash_defined || fdh->elf.root.type == bfd_link_hash_defweak) @@ -10094,7 +11116,7 @@ && irela != internal_relocs) { /* Get tls info. */ - char *tls_mask; + unsigned char *tls_mask; if (!get_tls_mask (&tls_mask, NULL, NULL, &local_syms, irela - 1, input_bfd)) @@ -10293,6 +11315,9 @@ bfd_byte *p; int stub_sec_count = 0; + if (htab == NULL) + return FALSE; + htab->emit_stub_syms = emit_stub_syms; /* Allocate memory to hold the linker stubs. */ @@ -10492,7 +11517,9 @@ ppc64_elf_restore_symbols (struct bfd_link_info *info) { struct ppc_link_hash_table *htab = ppc_hash_table (info); - elf_link_hash_traverse (&htab->elf, undo_symbol_twiddle, info); + + if (htab != NULL) + elf_link_hash_traverse (&htab->elf, undo_symbol_twiddle, info); } /* What to do when ld finds relocations against symbols defined in @@ -10513,6 +11540,63 @@ return _bfd_elf_default_action_discarded (sec); } +/* REL points to a low-part reloc on a largetoc instruction sequence. + Find the matching high-part reloc instruction and verify that it + is addis REG,x,imm. If so, set *REG to x and return a pointer to + the high-part reloc. */ + +static const Elf_Internal_Rela * +ha_reloc_match (const Elf_Internal_Rela *relocs, + const Elf_Internal_Rela *rel, + unsigned int *reg, + bfd_boolean match_addend, + const bfd *input_bfd, + const bfd_byte *contents) +{ + enum elf_ppc64_reloc_type r_type, r_type_ha; + bfd_vma r_info_ha, r_addend; + + r_type = ELF64_R_TYPE (rel->r_info); + switch (r_type) + { + case R_PPC64_GOT_TLSLD16_LO: + case R_PPC64_GOT_TLSGD16_LO: + case R_PPC64_GOT_TPREL16_LO_DS: + case R_PPC64_GOT_DTPREL16_LO_DS: + case R_PPC64_GOT16_LO: + case R_PPC64_TOC16_LO: + r_type_ha = r_type + 2; + break; + case R_PPC64_GOT16_LO_DS: + r_type_ha = R_PPC64_GOT16_HA; + break; + case R_PPC64_TOC16_LO_DS: + r_type_ha = R_PPC64_TOC16_HA; + break; + default: + abort (); + } + r_info_ha = ELF64_R_INFO (ELF64_R_SYM (rel->r_info), r_type_ha); + r_addend = rel->r_addend; + + while (--rel >= relocs) + if (rel->r_info == r_info_ha + && (!match_addend + || rel->r_addend == r_addend)) + { + const bfd_byte *p = contents + (rel->r_offset & ~3); + unsigned int insn = bfd_get_32 (input_bfd, p); + if ((insn & (0x3f << 26)) == (15u << 26) /* addis rt,x,imm */ + && (insn & (0x1f << 21)) == (*reg << 21)) + { + *reg = (insn >> 16) & 0x1f; + return rel; + } + break; + } + return NULL; +} + /* The RELOCATE_SECTION function is called by the ELF backend linker to handle the relocations for a section. @@ -10560,7 +11644,9 @@ Elf_Internal_Rela outrel; bfd_byte *loc; struct got_entry **local_got_ents; + unsigned char *ha_opt; bfd_vma TOCstart; + bfd_boolean no_ha_opt; bfd_boolean ret = TRUE; bfd_boolean is_opd; /* Disabled until we sort out how ld should choose 'y' vs 'at'. */ @@ -10572,6 +11658,8 @@ ppc_howto_init (); htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; /* Don't relocate stub sections. */ if (input_section->owner == htab->stub_bfd) @@ -10584,6 +11672,8 @@ symtab_hdr = &elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); is_opd = ppc64_elf_section_data (input_section)->sec_type == sec_opd; + ha_opt = NULL; + no_ha_opt = FALSE; rel = relocs; relend = relocs + input_section->reloc_count; @@ -10600,12 +11690,13 @@ const char *sym_name; unsigned long r_symndx, toc_symndx; bfd_vma toc_addend; - char tls_mask, tls_gd, tls_type; - char sym_type; + unsigned char tls_mask, tls_gd, tls_type; + unsigned char sym_type; bfd_vma relocation; bfd_boolean unresolved_reloc; bfd_boolean warned; - unsigned long insn, mask; + unsigned int insn; + unsigned int mask; struct ppc_stub_hash_entry *stub_entry; bfd_vma max_br_offset; bfd_vma from; @@ -10672,16 +11763,10 @@ h = (struct ppc_link_hash_entry *) h_elf; if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (ppc64_elf_howto_table[r_type], input_bfd, - contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, + ppc64_elf_howto_table[r_type], + contents); if (info->relocatable) continue; @@ -10699,7 +11784,7 @@ { struct plt_entry **local_plt = (struct plt_entry **) (local_got_ents + symtab_hdr->sh_info); - char *lgot_masks = (char *) + unsigned char *lgot_masks = (unsigned char *) (local_plt + symtab_hdr->sh_info); tls_mask = lgot_masks[r_symndx]; } @@ -10709,7 +11794,7 @@ || r_type == R_PPC64_TLSLD)) { /* Check for toc tls entries. */ - char *toc_tls; + unsigned char *toc_tls; if (!get_tls_mask (&toc_tls, &toc_symndx, &toc_addend, &local_syms, rel, input_bfd)) @@ -10721,7 +11806,7 @@ /* Check that tls relocs are used with tls syms, and non-tls relocs are used with non-tls syms. */ - if (r_symndx != 0 + if (r_symndx != STN_UNDEF && r_type != R_PPC64_NONE && (h == NULL || h->elf.root.type == bfd_link_hash_defined @@ -10767,13 +11852,23 @@ default: break; + case R_PPC64_LO_DS_OPT: + insn = bfd_get_32 (output_bfd, contents + rel->r_offset - d_offset); + if ((insn & (0x3f << 26)) != 58u << 26) + abort (); + insn += (14u << 26) - (58u << 26); + bfd_put_32 (output_bfd, insn, contents + rel->r_offset - d_offset); + r_type = R_PPC64_TOC16_LO; + rel->r_info = ELF64_R_INFO (r_symndx, r_type); + break; + case R_PPC64_TOC16: case R_PPC64_TOC16_LO: case R_PPC64_TOC16_DS: case R_PPC64_TOC16_LO_DS: { /* Check for toc tls entries. */ - char *toc_tls; + unsigned char *toc_tls; int retval; retval = get_tls_mask (&toc_tls, &toc_symndx, &toc_addend, @@ -10811,6 +11906,18 @@ } break; + case R_PPC64_GOT_TPREL16_HI: + case R_PPC64_GOT_TPREL16_HA: + if (tls_mask != 0 + && (tls_mask & TLS_TPREL) == 0) + { + rel->r_offset -= d_offset; + bfd_put_32 (output_bfd, NOP, contents + rel->r_offset); + r_type = R_PPC64_NONE; + rel->r_info = ELF64_R_INFO (r_symndx, r_type); + } + break; + case R_PPC64_GOT_TPREL16_DS: case R_PPC64_GOT_TPREL16_LO_DS: if (tls_mask != 0 @@ -10840,37 +11947,10 @@ if (tls_mask != 0 && (tls_mask & TLS_TPREL) == 0) { - bfd_vma rtra; insn = bfd_get_32 (output_bfd, contents + rel->r_offset); - if ((insn & ((0x3f << 26) | (31 << 11))) - == ((31 << 26) | (13 << 11))) - rtra = insn & ((1 << 26) - (1 << 16)); - else if ((insn & ((0x3f << 26) | (31 << 16))) - == ((31 << 26) | (13 << 16))) - rtra = (insn & (31 << 21)) | ((insn & (31 << 11)) << 5); - else - abort (); - if ((insn & ((1 << 11) - (1 << 1))) == 266 << 1) - /* add -> addi. */ - insn = 14 << 26; - else if ((insn & (31 << 1)) == 23 << 1 - && ((insn & (31 << 6)) < 14 << 6 - || ((insn & (31 << 6)) >= 16 << 6 - && (insn & (31 << 6)) < 24 << 6))) - /* load and store indexed -> dform. */ - insn = (32 | ((insn >> 6) & 31)) << 26; - else if ((insn & (31 << 1)) == 21 << 1 - && (insn & (0x1a << 6)) == 0) - /* ldx, ldux, stdx, stdux -> ld, ldu, std, stdu. */ - insn = (((58 | ((insn >> 6) & 4)) << 26) - | ((insn >> 6) & 1)); - else if ((insn & (31 << 1)) == 21 << 1 - && (insn & ((1 << 11) - (1 << 1))) == 341 << 1) - /* lwax -> lwa. */ - insn = (58 << 26) | 2; - else + insn = _bfd_elf_ppc_at_tls_transform (insn, 13); + if (insn == 0) abort (); - insn |= rtra; bfd_put_32 (output_bfd, insn, contents + rel->r_offset); /* Was PPC64_TLS which sits on insn boundary, now PPC64_TPREL16_LO which is at low-order half-word. */ @@ -10907,8 +11987,8 @@ + R_PPC64_GOT_TPREL16_DS); else { - bfd_put_32 (output_bfd, NOP, contents + rel->r_offset); rel->r_offset -= d_offset; + bfd_put_32 (output_bfd, NOP, contents + rel->r_offset); r_type = R_PPC64_NONE; } rel->r_info = ELF64_R_INFO (r_symndx, r_type); @@ -10951,8 +12031,7 @@ insn1 |= 58 << 26; /* ld */ insn2 = 0x7c636a14; /* add 3,3,13 */ if (offset != (bfd_vma) -1) - rel[1].r_info = ELF64_R_INFO (ELF64_R_SYM (rel[1].r_info), - R_PPC64_NONE); + rel[1].r_info = ELF64_R_INFO (STN_UNDEF, R_PPC64_NONE); if ((tls_mask & TLS_EXPLICIT) == 0) r_type = (((r_type - (R_PPC64_GOT_TLSGD16 & 3)) & 3) + R_PPC64_GOT_TPREL16_DS); @@ -10976,9 +12055,9 @@ if (local_sections[r_symndx] == sec) break; if (r_symndx >= symtab_hdr->sh_info) - r_symndx = 0; + r_symndx = STN_UNDEF; rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; - if (r_symndx != 0) + if (r_symndx != STN_UNDEF) rel->r_addend -= (local_syms[r_symndx].st_value + sec->output_offset + sec->output_section->vma); @@ -11051,8 +12130,7 @@ rel->r_info = ELF64_R_INFO (r_symndx, r_type); /* Zap the reloc on the _tls_get_addr call too. */ BFD_ASSERT (offset == rel[1].r_offset); - rel[1].r_info = ELF64_R_INFO (ELF64_R_SYM (rel[1].r_info), - R_PPC64_NONE); + rel[1].r_info = ELF64_R_INFO (STN_UNDEF, R_PPC64_NONE); insn3 = bfd_get_32 (output_bfd, contents + offset + 4); if (insn3 == NOP @@ -11085,9 +12163,9 @@ if (local_sections[r_symndx] == sec) break; if (r_symndx >= symtab_hdr->sh_info) - r_symndx = 0; + r_symndx = STN_UNDEF; rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET; - if (r_symndx != 0) + if (r_symndx != STN_UNDEF) rel->r_addend -= (local_syms[r_symndx].st_value + sec->output_offset + sec->output_section->vma); @@ -11097,8 +12175,7 @@ rel->r_offset = offset + d_offset; /* Zap the reloc on the _tls_get_addr call too. */ BFD_ASSERT (offset == rel[1].r_offset); - rel[1].r_info = ELF64_R_INFO (ELF64_R_SYM (rel[1].r_info), - R_PPC64_NONE); + rel[1].r_info = ELF64_R_INFO (STN_UNDEF, R_PPC64_NONE); insn2 = 0x38630000; /* addi 3,3,0 */ insn3 = bfd_get_32 (output_bfd, contents + offset + 4); @@ -11186,21 +12263,13 @@ linkage stubs needs to be followed by a nop, as the nop will be replaced with an instruction to restore the TOC base pointer. */ - stub_entry = NULL; fdh = h; - if (((h != NULL - && (((fdh = h->oh) != NULL - && fdh->elf.plt.plist != NULL) - || (fdh = h)->elf.plt.plist != NULL)) - || (sec != NULL - && sec->output_section != NULL - && sec->id <= htab->top_id - && (htab->stub_group[sec->id].toc_off - != htab->stub_group[input_section->id].toc_off)) - || (h == NULL - && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)) - && (stub_entry = ppc_get_stub_entry (input_section, sec, fdh, - rel, htab)) != NULL + if (h != NULL + && h->oh != NULL + && h->oh->is_func_descriptor) + fdh = ppc_follow_link (h->oh); + stub_entry = ppc_get_stub_entry (input_section, sec, fdh, rel, htab); + if (stub_entry != NULL && (stub_entry->stub_type == ppc_stub_plt_call || stub_entry->stub_type == ppc_stub_plt_branch_r2off || stub_entry->stub_type == ppc_stub_long_branch_r2off)) @@ -11214,8 +12283,16 @@ if (nop == NOP || nop == CROR_151515 || nop == CROR_313131) { - bfd_put_32 (input_bfd, LD_R2_40R1, - contents + rel->r_offset + 4); + if (h != NULL + && (h == htab->tls_get_addr_fd + || h == htab->tls_get_addr) + && !htab->no_tls_get_addr_opt) + { + /* Special stub used, leave nop alone. */ + } + else + bfd_put_32 (input_bfd, LD_R2_40R1, + contents + rel->r_offset + 4); can_plt_call = TRUE; } } @@ -11277,7 +12354,9 @@ unresolved_reloc = FALSE; } - if (stub_entry == NULL + if ((stub_entry == NULL + || stub_entry->stub_type == ppc_stub_long_branch + || stub_entry->stub_type == ppc_stub_plt_branch) && get_opd_info (sec) != NULL) { /* The branch destination is the value of the opd entry. */ @@ -11298,13 +12377,15 @@ + input_section->output_offset + input_section->output_section->vma); - if (stub_entry == NULL - && (relocation + addend - from + max_br_offset - >= 2 * max_br_offset) - && r_type != R_PPC64_ADDR14_BRTAKEN - && r_type != R_PPC64_ADDR14_BRNTAKEN) - stub_entry = ppc_get_stub_entry (input_section, sec, h, rel, - htab); + if (stub_entry != NULL + && (stub_entry->stub_type == ppc_stub_long_branch + || stub_entry->stub_type == ppc_stub_plt_branch) + && (r_type == R_PPC64_ADDR14_BRTAKEN + || r_type == R_PPC64_ADDR14_BRNTAKEN + || (relocation + addend - from + max_br_offset + < 2 * max_br_offset))) + /* Don't use the stub if this branch is in range. */ + stub_entry = NULL; if (stub_entry != NULL) { @@ -11345,6 +12426,7 @@ checking whether the function is defined. */ else if (h != NULL && h->elf.root.type == bfd_link_hash_undefweak + && h->elf.dynindx == -1 && r_type == R_PPC64_REL24 && relocation == 0 && addend == 0) @@ -11422,14 +12504,14 @@ bfd_vma *offp; bfd_vma off; unsigned long indx = 0; + struct got_entry *ent; if (tls_type == (TLS_TLS | TLS_LD) && (h == NULL || !h->elf.def_dynamic)) - offp = &ppc64_tlsld_got (input_bfd)->offset; + ent = ppc64_tlsld_got (input_bfd); else { - struct got_entry *ent; if (h != NULL) { @@ -11437,7 +12519,7 @@ if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, &h->elf) || (info->shared - && SYMBOL_REFERENCES_LOCAL (info, &h->elf))) + && SYMBOL_CALLS_LOCAL (info, &h->elf))) /* This is actually a static link, or it is a -Bsymbolic link and the symbol is defined locally, or the symbol was forced to be local @@ -11462,12 +12544,14 @@ && ent->owner == input_bfd && ent->tls_type == tls_type) break; - if (ent == NULL) - abort (); - offp = &ent->got.offset; } - got = ppc64_elf_tdata (input_bfd)->got; + if (ent == NULL) + abort (); + if (ent->is_indirect) + ent = ent->got.ent; + offp = &ent->got.offset; + got = ppc64_elf_tdata (ent->owner)->got; if (got == NULL) abort (); @@ -11491,11 +12575,12 @@ ? h->elf.type == STT_GNU_IFUNC : ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC); if ((info->shared || indx != 0) - && (offp == &ppc64_tlsld_got (input_bfd)->offset - || h == NULL + && (h == NULL + || (tls_type == (TLS_TLS | TLS_LD) + && !h->elf.def_dynamic) || ELF_ST_VISIBILITY (h->elf.other) == STV_DEFAULT || h->elf.root.type != bfd_link_hash_undefweak)) - relgot = ppc64_elf_tdata (input_bfd)->relgot; + relgot = ppc64_elf_tdata (ent->owner)->relgot; else if (ifunc) relgot = htab->reliplt; if (relgot != NULL) @@ -11582,10 +12667,8 @@ if (off >= (bfd_vma) -2) abort (); - relocation = got->output_offset + off; - - /* TOC base (r2) is TOC start plus 0x8000. */ - addend = -TOC_BASE_OFF; + relocation = got->output_section->vma + got->output_offset + off; + addend = -(TOCstart + htab->stub_group[input_section->id].toc_off); } break; @@ -11624,7 +12707,7 @@ case R_PPC64_TOC: /* Relocation value is TOC base. */ relocation = TOCstart; - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) relocation += htab->stub_group[input_section->id].toc_off; else if (unresolved_reloc) ; @@ -11680,6 +12763,22 @@ case R_PPC64_TPREL16_HIGHERA: case R_PPC64_TPREL16_HIGHEST: case R_PPC64_TPREL16_HIGHESTA: + if (h != NULL + && h->elf.root.type == bfd_link_hash_undefweak + && h->elf.dynindx == -1) + { + /* Make this relocation against an undefined weak symbol + resolve to zero. This is really just a tweak, since + code using weak externs ought to check that they are + defined before using them. */ + bfd_byte *p = contents + rel->r_offset - d_offset; + + insn = bfd_get_32 (output_bfd, p); + insn = _bfd_elf_ppc_at_tprel_transform (insn, 13); + if (insn != 0) + bfd_put_32 (output_bfd, insn, p); + break; + } addend -= htab->elf.tls_sec->vma + TP_OFFSET; if (info->shared) /* The TPREL16 relocs shouldn't really be used in shared @@ -11762,10 +12861,8 @@ ? h->elf.type == STT_GNU_IFUNC : ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC))) { - Elf_Internal_Rela outrel; bfd_boolean skip, relocate; asection *sreloc; - bfd_byte *loc; bfd_vma out_off; /* When generating a dynamic object, these relocations @@ -11799,7 +12896,7 @@ if (skip) memset (&outrel, 0, sizeof outrel); - else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf) + else if (!SYMBOL_CALLS_LOCAL (info, &h->elf) && !is_opd && r_type != R_PPC64_TOC) outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type); @@ -11860,7 +12957,7 @@ sym_name); ret = FALSE; } - else if (r_symndx == 0 || bfd_is_abs_section (sec)) + else if (r_symndx == STN_UNDEF || bfd_is_abs_section (sec)) ; else if (sec == NULL || sec->owner == NULL) { @@ -11967,6 +13064,100 @@ continue; } + /* Multi-instruction sequences that access the TOC can be + optimized, eg. addis ra,r2,0; addi rb,ra,x; + to nop; addi rb,r2,x; */ + switch (r_type) + { + default: + break; + + case R_PPC64_GOT_TLSLD16_HI: + case R_PPC64_GOT_TLSGD16_HI: + case R_PPC64_GOT_TPREL16_HI: + case R_PPC64_GOT_DTPREL16_HI: + case R_PPC64_GOT16_HI: + case R_PPC64_TOC16_HI: + /* These relocs would only be useful if building up an + offset to later add to r2, perhaps in an indexed + addressing mode instruction. Don't try to optimize. + Unfortunately, the possibility of someone building up an + offset like this or even with the HA relocs, means that + we need to check the high insn when optimizing the low + insn. */ + break; + + case R_PPC64_GOT_TLSLD16_HA: + case R_PPC64_GOT_TLSGD16_HA: + case R_PPC64_GOT_TPREL16_HA: + case R_PPC64_GOT_DTPREL16_HA: + case R_PPC64_GOT16_HA: + case R_PPC64_TOC16_HA: + /* nop is done later. */ + break; + + case R_PPC64_GOT_TLSLD16_LO: + case R_PPC64_GOT_TLSGD16_LO: + case R_PPC64_GOT_TPREL16_LO_DS: + case R_PPC64_GOT_DTPREL16_LO_DS: + case R_PPC64_GOT16_LO: + case R_PPC64_GOT16_LO_DS: + case R_PPC64_TOC16_LO: + case R_PPC64_TOC16_LO_DS: + if (htab->do_toc_opt && relocation + addend + 0x8000 < 0x10000) + { + bfd_byte *p = contents + (rel->r_offset & ~3); + insn = bfd_get_32 (input_bfd, p); + if ((insn & (0x3f << 26)) == 14u << 26 /* addi */ + || (insn & (0x3f << 26)) == 32u << 26 /* lwz */ + || (insn & (0x3f << 26)) == 34u << 26 /* lbz */ + || (insn & (0x3f << 26)) == 36u << 26 /* stw */ + || (insn & (0x3f << 26)) == 38u << 26 /* stb */ + || (insn & (0x3f << 26)) == 40u << 26 /* lhz */ + || (insn & (0x3f << 26)) == 42u << 26 /* lha */ + || (insn & (0x3f << 26)) == 44u << 26 /* sth */ + || (insn & (0x3f << 26)) == 46u << 26 /* lmw */ + || (insn & (0x3f << 26)) == 47u << 26 /* stmw */ + || (insn & (0x3f << 26)) == 48u << 26 /* lfs */ + || (insn & (0x3f << 26)) == 50u << 26 /* lfd */ + || (insn & (0x3f << 26)) == 52u << 26 /* stfs */ + || (insn & (0x3f << 26)) == 54u << 26 /* stfd */ + || ((insn & (0x3f << 26)) == 58u << 26 /* lwa,ld,lmd */ + && (insn & 3) != 1) + || ((insn & (0x3f << 26)) == 62u << 26 /* std, stmd */ + && ((insn & 3) == 0 || (insn & 3) == 3))) + { + unsigned int reg = (insn >> 16) & 0x1f; + const Elf_Internal_Rela *ha; + bfd_boolean match_addend; + + match_addend = (sym != NULL + && ELF_ST_TYPE (sym->st_info) == STT_SECTION); + ha = ha_reloc_match (relocs, rel, ®, match_addend, + input_bfd, contents); + if (ha != NULL) + { + insn &= ~(0x1f << 16); + insn |= reg << 16; + bfd_put_32 (input_bfd, insn, p); + if (ha_opt == NULL) + { + ha_opt = bfd_zmalloc (input_section->reloc_count); + if (ha_opt == NULL) + return FALSE; + } + ha_opt[ha - relocs] = 1; + } + else + /* If we don't find a matching high part insn, + something is fishy. Refuse to nop any high + part insn in this section. */ + no_ha_opt = TRUE; + } + } + break; + } + /* Do any further special processing. */ switch (r_type) { @@ -12041,8 +13232,8 @@ if (((relocation + addend) & mask) != 0) { (*_bfd_error_handler) - (_("%B: error: relocation %s not a multiple of %d"), - input_bfd, + (_("%B(%A+0x%lx): error: %s not a multiple of %u"), + input_bfd, input_section, (long) rel->r_offset, ppc64_elf_howto_table[r_type]->name, mask + 1); bfd_set_error (bfd_error_bad_value); @@ -12119,6 +13310,23 @@ } } + if (ha_opt != NULL) + { + if (!no_ha_opt) + { + unsigned char *opt = ha_opt; + rel = relocs; + relend = relocs + input_section->reloc_count; + for (; rel < relend; opt++, rel++) + if (*opt != 0) + { + bfd_byte *p = contents + (rel->r_offset & ~3); + bfd_put_32 (input_bfd, NOP, p); + } + } + free (ha_opt); + } + /* If we're emitting relocations, then shortly after this function returns, reloc offsets and addends for this section will be adjusted. Worse, reloc symbol indices will be for the output @@ -12185,6 +13393,8 @@ bfd_byte *loc; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; for (ent = h->plt.plist; ent != NULL; ent = ent->next) if (ent->plt.offset != (bfd_vma) -1) @@ -12226,9 +13436,6 @@ if (h->needs_copy) { - Elf_Internal_Rela rela; - bfd_byte *loc; - /* This symbol needs a copy reloc. Set it up. */ if (h->dynindx == -1 @@ -12287,6 +13494,9 @@ asection *sdyn; htab = ppc_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); @@ -12400,7 +13610,7 @@ && htab->brlt->reloc_count != 0 && !_bfd_elf_link_output_relocs (output_bfd, htab->brlt, - &elf_section_data (htab->brlt)->rel_hdr, + elf_section_data (htab->brlt)->rela.hdr, elf_section_data (htab->brlt)->relocs, NULL)) return FALSE; @@ -12409,7 +13619,7 @@ && htab->glink->reloc_count != 0 && !_bfd_elf_link_output_relocs (output_bfd, htab->glink, - &elf_section_data (htab->glink)->rel_hdr, + elf_section_data (htab->glink)->rela.hdr, elf_section_data (htab->glink)->relocs, NULL)) return FALSE; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf64-ppc.h crash-6.1.6/=unpacked-tar1=/bfd/elf64-ppc.h --- crash-5.1.6/=unpacked-tar1=/bfd/elf64-ppc.h 2008-01-15 07:25:49.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf64-ppc.h 2010-03-15 01:59:57.000000000 +0000 @@ -1,5 +1,5 @@ /* PowerPC64-specific support for 64-bit ELF. - Copyright 2002, 2003, 2004, 2005, 2007, 2008 + Copyright 2002, 2003, 2004, 2005, 2007, 2008, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -22,26 +22,34 @@ void ppc64_elf_init_stub_bfd (bfd *, struct bfd_link_info *); bfd_boolean ppc64_elf_edit_opd - (bfd *, struct bfd_link_info *, bfd_boolean); + (struct bfd_link_info *, bfd_boolean); asection *ppc64_elf_tls_setup - (bfd *, struct bfd_link_info *); + (struct bfd_link_info *, int, int *); bfd_boolean ppc64_elf_tls_optimize - (bfd *, struct bfd_link_info *); + (struct bfd_link_info *); bfd_boolean ppc64_elf_edit_toc - (bfd *, struct bfd_link_info *); + (struct bfd_link_info *); +bfd_boolean ppc64_elf_has_small_toc_reloc + (asection *); bfd_vma ppc64_elf_toc (bfd *); int ppc64_elf_setup_section_lists - (bfd *, struct bfd_link_info *, int); -void ppc64_elf_next_toc_section + (struct bfd_link_info *, asection *(*) (const char *, asection *), + void (*) (void)); +void ppc64_elf_start_multitoc_partition + (struct bfd_link_info *); +bfd_boolean ppc64_elf_next_toc_section (struct bfd_link_info *, asection *); -void ppc64_elf_reinit_toc - (bfd *, struct bfd_link_info *); +bfd_boolean ppc64_elf_layout_multitoc + (struct bfd_link_info *); +void ppc64_elf_finish_multitoc_partition + (struct bfd_link_info *); +bfd_boolean ppc64_elf_check_init_fini + (struct bfd_link_info *); bfd_boolean ppc64_elf_next_input_section (struct bfd_link_info *, asection *); bfd_boolean ppc64_elf_size_stubs - (bfd *, struct bfd_link_info *, bfd_signed_vma, - asection *(*) (const char *, asection *), void (*) (void)); + (struct bfd_link_info *, bfd_signed_vma); bfd_boolean ppc64_elf_build_stubs (bfd_boolean, struct bfd_link_info *, char **); void ppc64_elf_restore_symbols diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf64-s390.c crash-6.1.6/=unpacked-tar1=/bfd/elf64-s390.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf64-s390.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf64-s390.c 2010-10-25 15:54:15.000000000 +0000 @@ -1,6 +1,6 @@ /* IBM S/390-specific support for 64-bit ELF - Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of BFD, the Binary File Descriptor library. @@ -648,13 +648,13 @@ #define is_s390_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == S390_ELF_TDATA) + && elf_object_id (bfd) == S390_ELF_DATA) static bfd_boolean elf_s390_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct elf_s390_obj_tdata), - S390_ELF_TDATA); + S390_ELF_DATA); } static bfd_boolean @@ -692,7 +692,8 @@ /* Get the s390 ELF linker hash table from a link_info structure. */ #define elf_s390_hash_table(p) \ - ((struct elf_s390_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == S390_ELF_DATA ? ((struct elf_s390_link_hash_table *) ((p)->hash)) : NULL) /* Create an entry in an s390 ELF linker hash table. */ @@ -741,7 +742,8 @@ return NULL; if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc, - sizeof (struct elf_s390_link_hash_entry))) + sizeof (struct elf_s390_link_hash_entry), + S390_ELF_DATA)) { free (ret); return NULL; @@ -764,9 +766,8 @@ shortcuts to them in our hash table. */ static bfd_boolean -create_got_section (dynobj, info) - bfd *dynobj; - struct bfd_link_info *info; +create_got_section (bfd *dynobj, + struct bfd_link_info *info) { struct elf_s390_link_hash_table *htab; @@ -774,6 +775,9 @@ return FALSE; htab = elf_s390_hash_table (info); + if (htab == NULL) + return FALSE; + htab->sgot = bfd_get_section_by_name (dynobj, ".got"); htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); htab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); @@ -787,13 +791,15 @@ hash table. */ static bfd_boolean -elf_s390_create_dynamic_sections (dynobj, info) - bfd *dynobj; - struct bfd_link_info *info; +elf_s390_create_dynamic_sections (bfd *dynobj, + struct bfd_link_info *info) { struct elf_s390_link_hash_table *htab; htab = elf_s390_hash_table (info); + if (htab == NULL) + return FALSE; + if (!htab->sgot && !create_got_section (dynobj, info)) return FALSE; @@ -911,11 +917,10 @@ table. */ static bfd_boolean -elf_s390_check_relocs (abfd, info, sec, relocs) - bfd *abfd; - struct bfd_link_info *info; - asection *sec; - const Elf_Internal_Rela *relocs; +elf_s390_check_relocs (bfd *abfd, + struct bfd_link_info *info, + asection *sec, + const Elf_Internal_Rela *relocs) { struct elf_s390_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; @@ -932,6 +937,9 @@ BFD_ASSERT (is_s390_elf (abfd)); htab = elf_s390_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = &elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); local_got_refcounts = elf_local_got_refcounts (abfd); @@ -1353,6 +1361,7 @@ asection *sec, const Elf_Internal_Rela *relocs) { + struct elf_s390_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; @@ -1361,6 +1370,10 @@ if (info->relocatable) return TRUE; + htab = elf_s390_hash_table (info); + if (htab == NULL) + return FALSE; + elf_section_data (sec)->local_dynrel = NULL; symtab_hdr = &elf_symtab_hdr (abfd); @@ -1401,8 +1414,8 @@ switch (r_type) { case R_390_TLS_LDM64: - if (elf_s390_hash_table (info)->tls_ldm_got.refcount > 0) - elf_s390_hash_table (info)->tls_ldm_got.refcount -= 1; + if (htab->tls_ldm_got.refcount > 0) + htab->tls_ldm_got.refcount -= 1; break; case R_390_TLS_GD64: @@ -1522,9 +1535,8 @@ understand. */ static bfd_boolean -elf_s390_adjust_dynamic_symbol (info, h) - struct bfd_link_info *info; - struct elf_link_hash_entry *h; +elf_s390_adjust_dynamic_symbol (struct bfd_link_info *info, + struct elf_link_hash_entry *h) { struct elf_s390_link_hash_table *htab; asection *s; @@ -1636,6 +1648,8 @@ same memory location for the variable. */ htab = elf_s390_hash_table (info); + if (htab == NULL) + return FALSE; /* We must generate a R_390_COPY reloc to tell the dynamic linker to copy the initial value out of the dynamic object and into the @@ -1655,9 +1669,8 @@ dynamic relocs. */ static bfd_boolean -allocate_dynrelocs (h, inf) - struct elf_link_hash_entry *h; - PTR inf; +allocate_dynrelocs (struct elf_link_hash_entry *h, + void * inf) { struct bfd_link_info *info; struct elf_s390_link_hash_table *htab; @@ -1675,6 +1688,8 @@ info = (struct bfd_link_info *) inf; htab = elf_s390_hash_table (info); + if (htab == NULL) + return FALSE; if (htab->elf.dynamic_sections_created && h->plt.refcount > 0) @@ -1916,9 +1931,8 @@ /* Set the sizes of the dynamic sections. */ static bfd_boolean -elf_s390_size_dynamic_sections (output_bfd, info) - bfd *output_bfd ATTRIBUTE_UNUSED; - struct bfd_link_info *info; +elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info) { struct elf_s390_link_hash_table *htab; bfd *dynobj; @@ -1927,6 +1941,9 @@ bfd *ibfd; htab = elf_s390_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; if (dynobj == NULL) abort (); @@ -2187,16 +2204,14 @@ /* Relocate a 390 ELF section. */ static bfd_boolean -elf_s390_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_s390_relocate_section (bfd *output_bfd, + struct bfd_link_info *info, + bfd *input_bfd, + asection *input_section, + bfd_byte *contents, + Elf_Internal_Rela *relocs, + Elf_Internal_Sym *local_syms, + asection **local_sections) { struct elf_s390_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; @@ -2208,6 +2223,9 @@ BFD_ASSERT (is_s390_elf (input_bfd)); htab = elf_s390_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = &elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); local_got_offsets = elf_local_got_offsets (input_bfd); @@ -2262,15 +2280,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -3038,15 +3049,16 @@ dynamic sections here. */ static bfd_boolean -elf_s390_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; +elf_s390_finish_dynamic_symbol (bfd *output_bfd, + struct bfd_link_info *info, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym) { struct elf_s390_link_hash_table *htab; htab = elf_s390_hash_table (info); + if (htab == NULL) + return FALSE; if (h->plt.offset != (bfd_vma) -1) { @@ -3233,15 +3245,17 @@ /* Finish up the dynamic sections. */ static bfd_boolean -elf_s390_finish_dynamic_sections (output_bfd, info) - bfd *output_bfd; - struct bfd_link_info *info; +elf_s390_finish_dynamic_sections (bfd *output_bfd, + struct bfd_link_info *info) { struct elf_s390_link_hash_table *htab; bfd *dynobj; asection *sdyn; htab = elf_s390_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); @@ -3394,6 +3408,7 @@ #define TARGET_BIG_SYM bfd_elf64_s390_vec #define TARGET_BIG_NAME "elf64-s390" #define ELF_ARCH bfd_arch_s390 +#define ELF_TARGET_ID S390_ELF_DATA #define ELF_MACHINE_CODE EM_S390 #define ELF_MACHINE_ALT1 EM_S390_OLD #define ELF_MAXPAGESIZE 0x1000 diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf64-sh64.c crash-6.1.6/=unpacked-tar1=/bfd/elf64-sh64.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf64-sh64.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf64-sh64.c 2010-10-25 15:54:15.000000000 +0000 @@ -1,6 +1,6 @@ /* SuperH SH64-specific support for 64-bit ELF - Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -89,26 +89,14 @@ struct elf_sh64_pcrel_relocs_copied *pcrel_relocs_copied; }; -/* sh ELF linker hash table. */ - -struct elf_sh64_link_hash_table -{ - struct elf_link_hash_table root; -}; - /* Traverse an sh ELF linker hash table. */ -#define sh64_elf64_link_hash_traverse(table, func, info) \ - (elf_link_hash_traverse \ - (&(table)->root, \ +#define sh64_elf64_link_hash_traverse(table, func, info) \ + (elf_link_hash_traverse \ + ((table), \ (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func), \ (info))) -/* Get the sh ELF linker hash table from a link_info structure. */ - -#define sh64_elf64_hash_table(p) \ - ((struct elf_sh64_link_hash_table *) ((p)->hash)) - static bfd_reloc_status_type sh_elf64_ignore_reloc (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static bfd_reloc_status_type sh_elf64_reloc @@ -1670,15 +1658,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -3084,22 +3065,22 @@ static struct bfd_link_hash_table * sh64_elf64_link_hash_table_create (bfd *abfd) { - struct elf_sh64_link_hash_table *ret; + struct elf_link_hash_table *ret; - ret = ((struct elf_sh64_link_hash_table *) - bfd_malloc (sizeof (struct elf_sh64_link_hash_table))); - if (ret == (struct elf_sh64_link_hash_table *) NULL) + ret = (struct elf_link_hash_table *) bfd_malloc (sizeof (* ret)); + if (ret == (struct elf_link_hash_table *) NULL) return NULL; - if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, + if (!_bfd_elf_link_hash_table_init (ret, abfd, sh64_elf64_link_hash_newfunc, - sizeof (struct elf_sh64_link_hash_entry))) + sizeof (struct elf_sh64_link_hash_entry), + GENERIC_ELF_DATA)) { free (ret); return NULL; } - return &ret->root.root; + return &ret->root; } inline static void @@ -3497,7 +3478,7 @@ We allocated space for them in the check_relocs routine, but we will not fill them in in the relocate_section routine. */ if (info->shared && info->symbolic) - sh64_elf64_link_hash_traverse (sh64_elf64_hash_table (info), + sh64_elf64_link_hash_traverse (elf_hash_table (info), sh64_elf64_discard_copies, NULL); /* The check_relocs and adjust_dynamic_symbol entry points have diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf64-sparc.c crash-6.1.6/=unpacked-tar1=/bfd/elf64-sparc.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf64-sparc.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf64-sparc.c 2011-03-14 15:54:58.000000000 +0000 @@ -1,6 +1,6 @@ /* SPARC-specific support for 64-bit ELF Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -98,7 +98,7 @@ else relent->address = rela.r_offset - asect->vma; - if (ELF64_R_SYM (rela.r_info) == 0) + if (ELF64_R_SYM (rela.r_info) == STN_UNDEF) relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; else { @@ -163,10 +163,10 @@ || asect->reloc_count == 0) return TRUE; - rel_hdr = &d->rel_hdr; - rel_hdr2 = d->rel_hdr2; + rel_hdr = d->rel.hdr; + rel_hdr2 = d->rela.hdr; - BFD_ASSERT (asect->rel_filepos == rel_hdr->sh_offset + BFD_ASSERT ((rel_hdr && asect->rel_filepos == rel_hdr->sh_offset) || (rel_hdr2 && asect->rel_filepos == rel_hdr2->sh_offset)); } else @@ -193,8 +193,9 @@ canon_reloc_count. */ canon_reloc_count (asect) = 0; - if (!elf64_sparc_slurp_one_reloc_table (abfd, asect, rel_hdr, symbols, - dynamic)) + if (rel_hdr + && !elf64_sparc_slurp_one_reloc_table (abfd, asect, rel_hdr, symbols, + dynamic)) return FALSE; if (rel_hdr2 @@ -325,7 +326,7 @@ } } - rela_hdr = &elf_section_data (sec)->rel_hdr; + rela_hdr = elf_section_data (sec)->rela.hdr; rela_hdr->sh_size = rela_hdr->sh_entsize * count; rela_hdr->contents = (PTR) bfd_alloc (abfd, rela_hdr->sh_size); @@ -424,6 +425,10 @@ { static const char *const stt_types[] = { "NOTYPE", "OBJECT", "FUNCTION" }; + if ((abfd->flags & DYNAMIC) == 0 + && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE; + if (ELF_ST_TYPE (sym->st_info) == STT_REGISTER) { int reg; @@ -586,6 +591,7 @@ sym.st_other = 0; sym.st_info = ELF_ST_INFO (app_regs [reg].bind, STT_REGISTER); sym.st_shndx = app_regs [reg].shndx; + sym.st_target_internal = 0; if ((*func) (finfo, app_regs [reg].name, &sym, sym.st_shndx == SHN_ABS ? bfd_abs_section_ptr : bfd_und_section_ptr, @@ -856,6 +862,8 @@ _bfd_sparc_elf_plt_sym_val #define bfd_elf64_bfd_link_hash_table_create \ _bfd_sparc_elf_link_hash_table_create +#define bfd_elf64_bfd_link_hash_table_free \ + _bfd_sparc_elf_link_hash_table_free #define elf_info_to_howto \ _bfd_sparc_elf_info_to_howto #define elf_backend_copy_indirect_symbol \ @@ -910,6 +918,8 @@ /* Section 5.2.4 of the ABI specifies a 256-byte boundary for the table. */ #define elf_backend_plt_alignment 8 +#define elf_backend_post_process_headers _bfd_elf_set_osabi + #include "elf64-target.h" /* FreeBSD support */ @@ -920,10 +930,28 @@ #undef ELF_OSABI #define ELF_OSABI ELFOSABI_FREEBSD -#undef elf_backend_post_process_headers -#define elf_backend_post_process_headers _bfd_elf_set_osabi #undef elf64_bed #define elf64_bed elf64_sparc_fbsd_bed #include "elf64-target.h" +/* Solaris 2. */ + +#undef TARGET_BIG_SYM +#define TARGET_BIG_SYM bfd_elf64_sparc_sol2_vec +#undef TARGET_BIG_NAME +#define TARGET_BIG_NAME "elf64-sparc-sol2" + +/* Restore default: we cannot use ELFOSABI_SOLARIS, otherwise ELFOSABI_NONE + objects won't be recognized. */ +#undef ELF_OSABI + +#undef elf64_bed +#define elf64_bed elf64_sparc_sol2_bed + +/* The 64-bit static TLS arena size is rounded to the nearest 16-byte + boundary. */ +#undef elf_backend_static_tls_alignment +#define elf_backend_static_tls_alignment 16 + +#include "elf64-target.h" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elf64-x86-64.c crash-6.1.6/=unpacked-tar1=/bfd/elf64-x86-64.c --- crash-5.1.6/=unpacked-tar1=/bfd/elf64-x86-64.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elf64-x86-64.c 2011-03-12 14:38:31.000000000 +0000 @@ -1,6 +1,6 @@ -/* X86-64 specific support for 64-bit ELF - Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. +/* X86-64 specific support for ELF + Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Contributed by Jan Hubicka . This file is part of BFD, the Binary File Descriptor library. @@ -34,6 +34,14 @@ /* In case we're on a 32-bit machine, construct a 64-bit "-1" value. */ #define MINUS_ONE (~ (bfd_vma) 0) +/* Since both 32-bit and 64-bit x86-64 encode relocation type in the + identical manner, we use ELF32_R_TYPE instead of ELF64_R_TYPE to get + relocation type. We also use ELF_ST_TYPE instead of ELF64_ST_TYPE + since they are the same. */ + +#define ABI_64_P(abfd) \ + (get_elf_backend_data (abfd)->s->elfclass == ELFCLASS64) + /* The relocation "howto" table. Order of fields: type, rightshift, size, bitsize, pc_relative, bitpos, complain_on_overflow, special_function, name, partial_inplace, src_mask, dst_mask, pcrel_offset. */ @@ -222,7 +230,7 @@ }; static reloc_howto_type * -elf64_x86_64_rtype_to_howto (bfd *abfd, unsigned r_type) +elf_x86_64_rtype_to_howto (bfd *abfd, unsigned r_type) { unsigned i; @@ -245,8 +253,8 @@ /* Given a BFD reloc type, return a HOWTO structure. */ static reloc_howto_type * -elf64_x86_64_reloc_type_lookup (bfd *abfd, - bfd_reloc_code_real_type code) +elf_x86_64_reloc_type_lookup (bfd *abfd, + bfd_reloc_code_real_type code) { unsigned int i; @@ -254,15 +262,15 @@ i++) { if (x86_64_reloc_map[i].bfd_reloc_val == code) - return elf64_x86_64_rtype_to_howto (abfd, - x86_64_reloc_map[i].elf_reloc_val); + return elf_x86_64_rtype_to_howto (abfd, + x86_64_reloc_map[i].elf_reloc_val); } return 0; } static reloc_howto_type * -elf64_x86_64_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, - const char *r_name) +elf_x86_64_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, + const char *r_name) { unsigned int i; @@ -280,19 +288,19 @@ /* Given an x86_64 ELF reloc type, fill in an arelent structure. */ static void -elf64_x86_64_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, - Elf_Internal_Rela *dst) +elf_x86_64_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, + Elf_Internal_Rela *dst) { unsigned r_type; - r_type = ELF64_R_TYPE (dst->r_info); - cache_ptr->howto = elf64_x86_64_rtype_to_howto (abfd, r_type); + r_type = ELF32_R_TYPE (dst->r_info); + cache_ptr->howto = elf_x86_64_rtype_to_howto (abfd, r_type); BFD_ASSERT (r_type == cache_ptr->howto->type); } /* Support for core dump NOTE sections. */ static bfd_boolean -elf64_x86_64_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) +elf_x86_64_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) { int offset; size_t size; @@ -308,7 +316,7 @@ = bfd_get_16 (abfd, note->descdata + 12); /* pr_pid */ - elf_tdata (abfd)->core_pid + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 32); /* pr_reg */ @@ -324,7 +332,7 @@ } static bfd_boolean -elf64_x86_64_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) +elf_x86_64_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) { switch (note->descsz) { @@ -332,6 +340,8 @@ return FALSE; case 136: /* sizeof(struct elf_prpsinfo) on Linux/x86_64 */ + elf_tdata (abfd)->core_pid + = bfd_get_32 (abfd, note->descdata + 24); elf_tdata (abfd)->core_program = _bfd_elfcore_strndup (abfd, note->descdata + 40, 16); elf_tdata (abfd)->core_command @@ -358,7 +368,8 @@ /* The name of the dynamic interpreter. This is put in the .interp section. */ -#define ELF_DYNAMIC_INTERPRETER "/lib/ld64.so.1" +#define ELF64_DYNAMIC_INTERPRETER "/lib/ld64.so.1" +#define ELF32_DYNAMIC_INTERPRETER "/lib/ld32.so.1" /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid copying dynamic variables from a shared lib into an app's dynbss @@ -377,7 +388,7 @@ /* The first entry in a procedure linkage table looks like this. See the SVR4 ABI i386 supplement and the x86-64 ABI to see how this works. */ -static const bfd_byte elf64_x86_64_plt0_entry[PLT_ENTRY_SIZE] = +static const bfd_byte elf_x86_64_plt0_entry[PLT_ENTRY_SIZE] = { 0xff, 0x35, 8, 0, 0, 0, /* pushq GOT+8(%rip) */ 0xff, 0x25, 16, 0, 0, 0, /* jmpq *GOT+16(%rip) */ @@ -386,7 +397,7 @@ /* Subsequent entries in a procedure linkage table look like this. */ -static const bfd_byte elf64_x86_64_plt_entry[PLT_ENTRY_SIZE] = +static const bfd_byte elf_x86_64_plt_entry[PLT_ENTRY_SIZE] = { 0xff, 0x25, /* jmpq *name@GOTPC(%rip) */ 0, 0, 0, 0, /* replaced with offset to this symbol in .got. */ @@ -398,7 +409,7 @@ /* x86-64 ELF linker hash entry. */ -struct elf64_x86_64_link_hash_entry +struct elf_x86_64_link_hash_entry { struct elf_link_hash_entry elf; @@ -425,10 +436,10 @@ bfd_vma tlsdesc_got; }; -#define elf64_x86_64_hash_entry(ent) \ - ((struct elf64_x86_64_link_hash_entry *)(ent)) +#define elf_x86_64_hash_entry(ent) \ + ((struct elf_x86_64_link_hash_entry *)(ent)) -struct elf64_x86_64_obj_tdata +struct elf_x86_64_obj_tdata { struct elf_obj_tdata root; @@ -439,30 +450,30 @@ bfd_vma *local_tlsdesc_gotent; }; -#define elf64_x86_64_tdata(abfd) \ - ((struct elf64_x86_64_obj_tdata *) (abfd)->tdata.any) +#define elf_x86_64_tdata(abfd) \ + ((struct elf_x86_64_obj_tdata *) (abfd)->tdata.any) -#define elf64_x86_64_local_got_tls_type(abfd) \ - (elf64_x86_64_tdata (abfd)->local_got_tls_type) +#define elf_x86_64_local_got_tls_type(abfd) \ + (elf_x86_64_tdata (abfd)->local_got_tls_type) -#define elf64_x86_64_local_tlsdesc_gotent(abfd) \ - (elf64_x86_64_tdata (abfd)->local_tlsdesc_gotent) +#define elf_x86_64_local_tlsdesc_gotent(abfd) \ + (elf_x86_64_tdata (abfd)->local_tlsdesc_gotent) #define is_x86_64_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == X86_64_ELF_TDATA) + && elf_object_id (bfd) == X86_64_ELF_DATA) static bfd_boolean -elf64_x86_64_mkobject (bfd *abfd) +elf_x86_64_mkobject (bfd *abfd) { - return bfd_elf_allocate_object (abfd, sizeof (struct elf64_x86_64_obj_tdata), - X86_64_ELF_TDATA); + return bfd_elf_allocate_object (abfd, sizeof (struct elf_x86_64_obj_tdata), + X86_64_ELF_DATA); } /* x86-64 ELF linker hash table. */ -struct elf64_x86_64_link_hash_table +struct elf_x86_64_link_hash_table { struct elf_link_hash_table elf; @@ -470,16 +481,8 @@ asection *sdynbss; asection *srelbss; - /* The offset into splt of the PLT entry for the TLS descriptor - resolver. Special values are 0, if not necessary (or not found - to be necessary yet), and -1 if needed but not determined - yet. */ - bfd_vma tlsdesc_plt; - /* The offset into sgot of the GOT entry used by the PLT entry - above. */ - bfd_vma tlsdesc_got; - - union { + union + { bfd_signed_vma refcount; bfd_vma offset; } tls_ld_got; @@ -490,28 +493,44 @@ /* Small local sym cache. */ struct sym_cache sym_cache; + bfd_vma (*r_info) (bfd_vma, bfd_vma); + bfd_vma (*r_sym) (bfd_vma); + unsigned int pointer_r_type; + const char *dynamic_interpreter; + int dynamic_interpreter_size; + /* _TLS_MODULE_BASE_ symbol. */ struct bfd_link_hash_entry *tls_module_base; /* Used by local STT_GNU_IFUNC symbols. */ htab_t loc_hash_table; - void *loc_hash_memory; + void * loc_hash_memory; + + /* The offset into splt of the PLT entry for the TLS descriptor + resolver. Special values are 0, if not necessary (or not found + to be necessary yet), and -1 if needed but not determined + yet. */ + bfd_vma tlsdesc_plt; + /* The offset into sgot of the GOT entry used by the PLT entry + above. */ + bfd_vma tlsdesc_got; }; /* Get the x86-64 ELF linker hash table from a link_info structure. */ -#define elf64_x86_64_hash_table(p) \ - ((struct elf64_x86_64_link_hash_table *) ((p)->hash)) +#define elf_x86_64_hash_table(p) \ + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == X86_64_ELF_DATA ? ((struct elf_x86_64_link_hash_table *) ((p)->hash)) : NULL) -#define elf64_x86_64_compute_jump_table_size(htab) \ +#define elf_x86_64_compute_jump_table_size(htab) \ ((htab)->elf.srelplt->reloc_count * GOT_ENTRY_SIZE) /* Create an entry in an x86-64 ELF linker hash table. */ static struct bfd_hash_entry * -elf64_x86_64_link_hash_newfunc (struct bfd_hash_entry *entry, - struct bfd_hash_table *table, - const char *string) +elf_x86_64_link_hash_newfunc (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. */ @@ -519,7 +538,7 @@ { entry = (struct bfd_hash_entry *) bfd_hash_allocate (table, - sizeof (struct elf64_x86_64_link_hash_entry)); + sizeof (struct elf_x86_64_link_hash_entry)); if (entry == NULL) return entry; } @@ -528,9 +547,9 @@ entry = _bfd_elf_link_hash_newfunc (entry, table, string); if (entry != NULL) { - struct elf64_x86_64_link_hash_entry *eh; + struct elf_x86_64_link_hash_entry *eh; - eh = (struct elf64_x86_64_link_hash_entry *) entry; + eh = (struct elf_x86_64_link_hash_entry *) entry; eh->dyn_relocs = NULL; eh->tls_type = GOT_UNKNOWN; eh->tlsdesc_got = (bfd_vma) -1; @@ -545,7 +564,7 @@ hash since they aren't used by global symbols in this backend. */ static hashval_t -elf64_x86_64_local_htab_hash (const void *ptr) +elf_x86_64_local_htab_hash (const void *ptr) { struct elf_link_hash_entry *h = (struct elf_link_hash_entry *) ptr; @@ -555,7 +574,7 @@ /* Compare local hash entries. */ static int -elf64_x86_64_local_htab_eq (const void *ptr1, const void *ptr2) +elf_x86_64_local_htab_eq (const void *ptr1, const void *ptr2) { struct elf_link_hash_entry *h1 = (struct elf_link_hash_entry *) ptr1; @@ -568,18 +587,18 @@ /* Find and/or create a hash entry for local symbol. */ static struct elf_link_hash_entry * -elf64_x86_64_get_local_sym_hash (struct elf64_x86_64_link_hash_table *htab, - bfd *abfd, const Elf_Internal_Rela *rel, - bfd_boolean create) +elf_x86_64_get_local_sym_hash (struct elf_x86_64_link_hash_table *htab, + bfd *abfd, const Elf_Internal_Rela *rel, + bfd_boolean create) { - struct elf64_x86_64_link_hash_entry e, *ret; + struct elf_x86_64_link_hash_entry e, *ret; asection *sec = abfd->sections; hashval_t h = ELF_LOCAL_SYMBOL_HASH (sec->id, - ELF64_R_SYM (rel->r_info)); + htab->r_sym (rel->r_info)); void **slot; e.elf.indx = sec->id; - e.elf.dynstr_index = ELF64_R_SYM (rel->r_info); + e.elf.dynstr_index = htab->r_sym (rel->r_info); slot = htab_find_slot_with_hash (htab->loc_hash_table, &e, h, create ? INSERT : NO_INSERT); @@ -588,21 +607,19 @@ if (*slot) { - ret = (struct elf64_x86_64_link_hash_entry *) *slot; + ret = (struct elf_x86_64_link_hash_entry *) *slot; return &ret->elf; } - ret = (struct elf64_x86_64_link_hash_entry *) + ret = (struct elf_x86_64_link_hash_entry *) objalloc_alloc ((struct objalloc *) htab->loc_hash_memory, - sizeof (struct elf64_x86_64_link_hash_entry)); + sizeof (struct elf_x86_64_link_hash_entry)); if (ret) { memset (ret, 0, sizeof (*ret)); ret->elf.indx = sec->id; - ret->elf.dynstr_index = ELF64_R_SYM (rel->r_info); + ret->elf.dynstr_index = htab->r_sym (rel->r_info); ret->elf.dynindx = -1; - ret->elf.plt.offset = (bfd_vma) -1; - ret->elf.got.offset = (bfd_vma) -1; *slot = ret; } return &ret->elf; @@ -611,18 +628,19 @@ /* Create an X86-64 ELF linker hash table. */ static struct bfd_link_hash_table * -elf64_x86_64_link_hash_table_create (bfd *abfd) +elf_x86_64_link_hash_table_create (bfd *abfd) { - struct elf64_x86_64_link_hash_table *ret; - bfd_size_type amt = sizeof (struct elf64_x86_64_link_hash_table); + struct elf_x86_64_link_hash_table *ret; + bfd_size_type amt = sizeof (struct elf_x86_64_link_hash_table); - ret = (struct elf64_x86_64_link_hash_table *) bfd_malloc (amt); + ret = (struct elf_x86_64_link_hash_table *) bfd_malloc (amt); if (ret == NULL) return NULL; if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, - elf64_x86_64_link_hash_newfunc, - sizeof (struct elf64_x86_64_link_hash_entry))) + elf_x86_64_link_hash_newfunc, + sizeof (struct elf_x86_64_link_hash_entry), + X86_64_ELF_DATA)) { free (ret); return NULL; @@ -637,9 +655,26 @@ ret->sgotplt_jump_table_size = 0; ret->tls_module_base = NULL; + if (ABI_64_P (abfd)) + { + ret->r_info = elf64_r_info; + ret->r_sym = elf64_r_sym; + ret->pointer_r_type = R_X86_64_64; + ret->dynamic_interpreter = ELF64_DYNAMIC_INTERPRETER; + ret->dynamic_interpreter_size = sizeof ELF64_DYNAMIC_INTERPRETER; + } + else + { + ret->r_info = elf32_r_info; + ret->r_sym = elf32_r_sym; + ret->pointer_r_type = R_X86_64_32; + ret->dynamic_interpreter = ELF32_DYNAMIC_INTERPRETER; + ret->dynamic_interpreter_size = sizeof ELF32_DYNAMIC_INTERPRETER; + } + ret->loc_hash_table = htab_try_create (1024, - elf64_x86_64_local_htab_hash, - elf64_x86_64_local_htab_eq, + elf_x86_64_local_htab_hash, + elf_x86_64_local_htab_eq, NULL); ret->loc_hash_memory = objalloc_create (); if (!ret->loc_hash_table || !ret->loc_hash_memory) @@ -654,10 +689,10 @@ /* Destroy an X86-64 ELF linker hash table. */ static void -elf64_x86_64_link_hash_table_free (struct bfd_link_hash_table *hash) +elf_x86_64_link_hash_table_free (struct bfd_link_hash_table *hash) { - struct elf64_x86_64_link_hash_table *htab - = (struct elf64_x86_64_link_hash_table *) hash; + struct elf_x86_64_link_hash_table *htab + = (struct elf_x86_64_link_hash_table *) hash; if (htab->loc_hash_table) htab_delete (htab->loc_hash_table); @@ -671,14 +706,18 @@ hash table. */ static bfd_boolean -elf64_x86_64_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info) +elf_x86_64_create_dynamic_sections (bfd *dynobj, + struct bfd_link_info *info) { - struct elf64_x86_64_link_hash_table *htab; + struct elf_x86_64_link_hash_table *htab; if (!_bfd_elf_create_dynamic_sections (dynobj, info)) return FALSE; - htab = elf64_x86_64_hash_table (info); + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss"); if (!info->shared) htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss"); @@ -693,14 +732,14 @@ /* Copy the extra info we tack onto an elf_link_hash_entry. */ static void -elf64_x86_64_copy_indirect_symbol (struct bfd_link_info *info, - struct elf_link_hash_entry *dir, - struct elf_link_hash_entry *ind) +elf_x86_64_copy_indirect_symbol (struct bfd_link_info *info, + struct elf_link_hash_entry *dir, + struct elf_link_hash_entry *ind) { - struct elf64_x86_64_link_hash_entry *edir, *eind; + struct elf_x86_64_link_hash_entry *edir, *eind; - edir = (struct elf64_x86_64_link_hash_entry *) dir; - eind = (struct elf64_x86_64_link_hash_entry *) ind; + edir = (struct elf_x86_64_link_hash_entry *) dir; + eind = (struct elf_x86_64_link_hash_entry *) ind; if (eind->dyn_relocs != NULL) { @@ -783,18 +822,21 @@ from R_TYPE. */ static bfd_boolean -elf64_x86_64_check_tls_transition (bfd *abfd, asection *sec, - bfd_byte *contents, - Elf_Internal_Shdr *symtab_hdr, - struct elf_link_hash_entry **sym_hashes, - unsigned int r_type, - const Elf_Internal_Rela *rel, - const Elf_Internal_Rela *relend) +elf_x86_64_check_tls_transition (bfd *abfd, + struct bfd_link_info *info, + asection *sec, + bfd_byte *contents, + Elf_Internal_Shdr *symtab_hdr, + struct elf_link_hash_entry **sym_hashes, + unsigned int r_type, + const Elf_Internal_Rela *rel, + const Elf_Internal_Rela *relend) { unsigned int val; unsigned long r_symndx; struct elf_link_hash_entry *h; bfd_vma offset; + struct elf_x86_64_link_hash_table *htab; /* Get the section contents. */ if (contents == NULL) @@ -812,6 +854,7 @@ } } + htab = elf_x86_64_hash_table (info); offset = rel->r_offset; switch (r_type) { @@ -822,18 +865,34 @@ if (r_type == R_X86_64_TLSGD) { - /* Check transition from GD access model. Only + /* Check transition from GD access model. For 64bit, only .byte 0x66; leaq foo@tlsgd(%rip), %rdi .word 0x6666; rex64; call __tls_get_addr + can transit to different access model. For 32bit, only + leaq foo@tlsgd(%rip), %rdi + .word 0x6666; rex64; call __tls_get_addr can transit to different access model. */ - static x86_64_opcode32 leaq = { { 0x66, 0x48, 0x8d, 0x3d } }, - call = { { 0x66, 0x66, 0x48, 0xe8 } }; - if (offset < 4 - || (offset + 12) > sec->size - || bfd_get_32 (abfd, contents + offset - 4) != leaq.i + static x86_64_opcode32 call = { { 0x66, 0x66, 0x48, 0xe8 } }; + if ((offset + 12) > sec->size || bfd_get_32 (abfd, contents + offset + 4) != call.i) return FALSE; + + if (ABI_64_P (abfd)) + { + static x86_64_opcode32 leaq = { { 0x66, 0x48, 0x8d, 0x3d } }; + if (offset < 4 + || bfd_get_32 (abfd, contents + offset - 4) != leaq.i) + return FALSE; + } + else + { + static x86_64_opcode16 lea = { { 0x8d, 0x3d } }; + if (offset < 3 + || bfd_get_8 (abfd, contents + offset - 3) != 0x48 + || bfd_get_16 (abfd, contents + offset - 2) != lea.i) + return FALSE; + } } else { @@ -854,7 +913,7 @@ return FALSE; } - r_symndx = ELF64_R_SYM (rel[1].r_info); + r_symndx = htab->r_sym (rel[1].r_info); if (r_symndx < symtab_hdr->sh_info) return FALSE; @@ -863,23 +922,36 @@ may be versioned. */ return (h != NULL && h->root.root.string != NULL - && (ELF64_R_TYPE (rel[1].r_info) == R_X86_64_PC32 - || ELF64_R_TYPE (rel[1].r_info) == R_X86_64_PLT32) + && (ELF32_R_TYPE (rel[1].r_info) == R_X86_64_PC32 + || ELF32_R_TYPE (rel[1].r_info) == R_X86_64_PLT32) && (strncmp (h->root.root.string, "__tls_get_addr", 14) == 0)); case R_X86_64_GOTTPOFF: /* Check transition from IE access model: - movq foo@gottpoff(%rip), %reg - addq foo@gottpoff(%rip), %reg + mov foo@gottpoff(%rip), %reg + add foo@gottpoff(%rip), %reg */ - if (offset < 3 || (offset + 4) > sec->size) - return FALSE; - - val = bfd_get_8 (abfd, contents + offset - 3); - if (val != 0x48 && val != 0x4c) - return FALSE; + /* Check REX prefix first. */ + if (offset >= 3 && (offset + 4) <= sec->size) + { + val = bfd_get_8 (abfd, contents + offset - 3); + if (val != 0x48 && val != 0x4c) + { + /* X32 may have 0x44 REX prefix or no REX prefix. */ + if (ABI_64_P (abfd)) + return FALSE; + } + } + else + { + /* X32 may not have any REX prefix. */ + if (ABI_64_P (abfd)) + return FALSE; + if (offset < 2 || (offset + 3) > sec->size) + return FALSE; + } val = bfd_get_8 (abfd, contents + offset - 2); if (val != 0x8b && val != 0x03) @@ -931,20 +1003,26 @@ will be performed. Update R_TYPE if there is a transition. */ static bfd_boolean -elf64_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd, - asection *sec, bfd_byte *contents, - Elf_Internal_Shdr *symtab_hdr, - struct elf_link_hash_entry **sym_hashes, - unsigned int *r_type, int tls_type, - const Elf_Internal_Rela *rel, - const Elf_Internal_Rela *relend, - struct elf_link_hash_entry *h, - unsigned long r_symndx) +elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd, + asection *sec, bfd_byte *contents, + Elf_Internal_Shdr *symtab_hdr, + struct elf_link_hash_entry **sym_hashes, + unsigned int *r_type, int tls_type, + const Elf_Internal_Rela *rel, + const Elf_Internal_Rela *relend, + struct elf_link_hash_entry *h, + unsigned long r_symndx) { unsigned int from_type = *r_type; unsigned int to_type = from_type; bfd_boolean check = TRUE; + /* Skip TLS transition for functions. */ + if (h != NULL + && (h->type == STT_FUNC + || h->type == STT_GNU_IFUNC)) + return TRUE; + switch (from_type) { case R_X86_64_TLSGD: @@ -959,7 +1037,7 @@ to_type = R_X86_64_GOTTPOFF; } - /* When we are called from elf64_x86_64_relocate_section, + /* When we are called from elf_x86_64_relocate_section, CONTENTS isn't NULL and there may be additional transitions based on TLS_TYPE. */ if (contents != NULL) @@ -981,7 +1059,7 @@ } /* We checked the transition before when we were called from - elf64_x86_64_check_relocs. We only want to check the new + elf_x86_64_check_relocs. We only want to check the new transition which hasn't been checked before. */ check = new_to_type != to_type && from_type == to_type; to_type = new_to_type; @@ -1004,26 +1082,33 @@ /* Check if the transition can be performed. */ if (check - && ! elf64_x86_64_check_tls_transition (abfd, sec, contents, - symtab_hdr, sym_hashes, - from_type, rel, relend)) + && ! elf_x86_64_check_tls_transition (abfd, info, sec, contents, + symtab_hdr, sym_hashes, + from_type, rel, relend)) { reloc_howto_type *from, *to; const char *name; - from = elf64_x86_64_rtype_to_howto (abfd, from_type); - to = elf64_x86_64_rtype_to_howto (abfd, to_type); + from = elf_x86_64_rtype_to_howto (abfd, from_type); + to = elf_x86_64_rtype_to_howto (abfd, to_type); if (h) name = h->root.root.string; else { - Elf_Internal_Sym *isym; - struct elf64_x86_64_link_hash_table *htab; - htab = elf64_x86_64_hash_table (info); - isym = bfd_sym_from_r_symndx (&htab->sym_cache, - abfd, r_symndx); - name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); + struct elf_x86_64_link_hash_table *htab; + + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + name = "*unknown*"; + else + { + Elf_Internal_Sym *isym; + + isym = bfd_sym_from_r_symndx (&htab->sym_cache, + abfd, r_symndx); + name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); + } } (*_bfd_error_handler) @@ -1044,11 +1129,11 @@ linkage table, and dynamic reloc sections. */ static bfd_boolean -elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, - asection *sec, - const Elf_Internal_Rela *relocs) +elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info, + asection *sec, + const Elf_Internal_Rela *relocs) { - struct elf64_x86_64_link_hash_table *htab; + struct elf_x86_64_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; const Elf_Internal_Rela *rel; @@ -1060,7 +1145,10 @@ BFD_ASSERT (is_x86_64_elf (abfd)); - htab = elf64_x86_64_hash_table (info); + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + symtab_hdr = &elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); @@ -1075,8 +1163,8 @@ Elf_Internal_Sym *isym; const char *name; - r_symndx = ELF64_R_SYM (rel->r_info); - r_type = ELF64_R_TYPE (rel->r_info); + r_symndx = htab->r_sym (rel->r_info); + r_type = ELF32_R_TYPE (rel->r_info); if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr)) { @@ -1094,13 +1182,13 @@ return FALSE; /* Check relocation against local STT_GNU_IFUNC symbol. */ - if (ELF64_ST_TYPE (isym->st_info) == STT_GNU_IFUNC) + if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC) { - h = elf64_x86_64_get_local_sym_hash (htab, abfd, rel, - TRUE); + h = elf_x86_64_get_local_sym_hash (htab, abfd, rel, + TRUE); if (h == NULL) return FALSE; - + /* Fake a STT_GNU_IFUNC symbol. */ h->type = STT_GNU_IFUNC; h->def_regular = 1; @@ -1120,6 +1208,39 @@ h = (struct elf_link_hash_entry *) h->root.u.i.link; } + /* Check invalid x32 relocations. */ + if (!ABI_64_P (abfd)) + switch (r_type) + { + default: + break; + + case R_X86_64_64: + case R_X86_64_DTPOFF64: + case R_X86_64_TPOFF64: + case R_X86_64_PC64: + case R_X86_64_GOTOFF64: + case R_X86_64_GOT64: + case R_X86_64_GOTPCREL64: + case R_X86_64_GOTPC64: + case R_X86_64_GOTPLT64: + case R_X86_64_PLTOFF64: + { + if (h) + name = h->root.root.string; + else + name = bfd_elf_sym_name (abfd, symtab_hdr, isym, + NULL); + (*_bfd_error_handler) + (_("%B: relocation %s against symbol `%s' isn't " + "supported in x32 mode"), abfd, + x86_64_elf_howto_table[r_type].name, name); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + break; + } + if (h != NULL) { /* Create the ifunc sections for static executables. If we @@ -1152,7 +1273,7 @@ /* It is referenced by a non-shared object. */ h->ref_regular = 1; h->needs_plt = 1; - + /* STT_GNU_IFUNC symbol must go through PLT. */ h->plt.refcount += 1; @@ -1176,6 +1297,9 @@ bfd_set_error (bfd_error_bad_value); return FALSE; + case R_X86_64_32: + if (ABI_64_P (abfd)) + goto not_pointer; case R_X86_64_64: h->non_got_ref = 1; h->pointer_equality_needed = 1; @@ -1186,16 +1310,16 @@ make room for this reloc. */ sreloc = _bfd_elf_create_ifunc_dyn_reloc (abfd, info, sec, sreloc, - &((struct elf64_x86_64_link_hash_entry *) h)->dyn_relocs); + &((struct elf_x86_64_link_hash_entry *) h)->dyn_relocs); if (sreloc == NULL) return FALSE; } break; case R_X86_64_32S: - case R_X86_64_32: case R_X86_64_PC32: case R_X86_64_PC64: +not_pointer: h->non_got_ref = 1; if (r_type != R_X86_64_PC32 && r_type != R_X86_64_PC64) @@ -1219,10 +1343,10 @@ } } - if (! elf64_x86_64_tls_transition (info, abfd, sec, NULL, - symtab_hdr, sym_hashes, - &r_type, GOT_UNKNOWN, - rel, rel_end, h, r_symndx)) + if (! elf_x86_64_tls_transition (info, abfd, sec, NULL, + symtab_hdr, sym_hashes, + &r_type, GOT_UNKNOWN, + rel, rel_end, h, r_symndx)) return FALSE; switch (r_type) @@ -1232,7 +1356,7 @@ goto create_got; case R_X86_64_TPOFF32: - if (!info->executable) + if (!info->executable && ABI_64_P (abfd)) { if (h) name = h->root.root.string; @@ -1286,7 +1410,7 @@ h->plt.refcount += 1; } h->got.refcount += 1; - old_tls_type = elf64_x86_64_hash_entry (h)->tls_type; + old_tls_type = elf_x86_64_hash_entry (h)->tls_type; } else { @@ -1306,14 +1430,14 @@ if (local_got_refcounts == NULL) return FALSE; elf_local_got_refcounts (abfd) = local_got_refcounts; - elf64_x86_64_local_tlsdesc_gotent (abfd) + elf_x86_64_local_tlsdesc_gotent (abfd) = (bfd_vma *) (local_got_refcounts + symtab_hdr->sh_info); - elf64_x86_64_local_got_tls_type (abfd) + elf_x86_64_local_got_tls_type (abfd) = (char *) (local_got_refcounts + 2 * symtab_hdr->sh_info); } local_got_refcounts[r_symndx] += 1; old_tls_type - = elf64_x86_64_local_got_tls_type (abfd) [r_symndx]; + = elf_x86_64_local_got_tls_type (abfd) [r_symndx]; } /* If a TLS symbol is accessed using IE at least once, @@ -1344,9 +1468,9 @@ if (old_tls_type != tls_type) { if (h != NULL) - elf64_x86_64_hash_entry (h)->tls_type = tls_type; + elf_x86_64_hash_entry (h)->tls_type = tls_type; else - elf64_x86_64_local_got_tls_type (abfd) [r_symndx] = tls_type; + elf_x86_64_local_got_tls_type (abfd) [r_symndx] = tls_type; } } /* Fall through */ @@ -1392,9 +1516,11 @@ } goto create_got; + case R_X86_64_32: + if (!ABI_64_P (abfd)) + goto pointer; case R_X86_64_8: case R_X86_64_16: - case R_X86_64_32: case R_X86_64_32S: /* Let's help debug shared library creation. These relocs cannot be used in shared libs. Don't error out for @@ -1421,6 +1547,7 @@ case R_X86_64_PC32: case R_X86_64_PC64: case R_X86_64_64: +pointer: if (h != NULL && info->executable) { /* If this reloc is in a read-only section, we might @@ -1485,7 +1612,8 @@ htab->elf.dynobj = abfd; sreloc = _bfd_elf_make_dynamic_reloc_section - (sec, htab->elf.dynobj, 3, abfd, /*rela?*/ TRUE); + (sec, htab->elf.dynobj, ABI_64_P (abfd) ? 3 : 2, + abfd, /*rela?*/ TRUE); if (sreloc == NULL) return FALSE; @@ -1495,7 +1623,7 @@ relocations we need for this symbol. */ if (h != NULL) { - head = &((struct elf64_x86_64_link_hash_entry *) h)->dyn_relocs; + head = &((struct elf_x86_64_link_hash_entry *) h)->dyn_relocs; } else { @@ -1504,7 +1632,6 @@ easily. Oh well. */ asection *s; void **vpp; - Elf_Internal_Sym *isym; isym = bfd_sym_from_r_symndx (&htab->sym_cache, abfd, r_symndx); @@ -1571,14 +1698,14 @@ relocation. */ static asection * -elf64_x86_64_gc_mark_hook (asection *sec, - struct bfd_link_info *info, - Elf_Internal_Rela *rel, - struct elf_link_hash_entry *h, - Elf_Internal_Sym *sym) +elf_x86_64_gc_mark_hook (asection *sec, + struct bfd_link_info *info, + Elf_Internal_Rela *rel, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym) { if (h != NULL) - switch (ELF64_R_TYPE (rel->r_info)) + switch (ELF32_R_TYPE (rel->r_info)) { case R_X86_64_GNU_VTINHERIT: case R_X86_64_GNU_VTENTRY: @@ -1591,10 +1718,11 @@ /* Update the got entry reference counts for the section being removed. */ static bfd_boolean -elf64_x86_64_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, - asection *sec, - const Elf_Internal_Rela *relocs) +elf_x86_64_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info, + asection *sec, + const Elf_Internal_Rela *relocs) { + struct elf_x86_64_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; bfd_signed_vma *local_got_refcounts; @@ -1603,12 +1731,17 @@ if (info->relocatable) return TRUE; + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + elf_section_data (sec)->local_dynrel = NULL; symtab_hdr = &elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); local_got_refcounts = elf_local_got_refcounts (abfd); + htab = elf_x86_64_hash_table (info); relend = relocs + sec->reloc_count; for (rel = relocs; rel < relend; rel++) { @@ -1616,18 +1749,39 @@ unsigned int r_type; struct elf_link_hash_entry *h = NULL; - r_symndx = ELF64_R_SYM (rel->r_info); + r_symndx = htab->r_sym (rel->r_info); if (r_symndx >= symtab_hdr->sh_info) { - struct elf64_x86_64_link_hash_entry *eh; - struct elf_dyn_relocs **pp; - struct elf_dyn_relocs *p; - 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; - eh = (struct elf64_x86_64_link_hash_entry *) h; + } + else + { + /* A local symbol. */ + Elf_Internal_Sym *isym; + + isym = bfd_sym_from_r_symndx (&htab->sym_cache, + abfd, r_symndx); + + /* Check relocation against local STT_GNU_IFUNC symbol. */ + if (isym != NULL + && ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC) + { + h = elf_x86_64_get_local_sym_hash (htab, abfd, rel, FALSE); + if (h == NULL) + abort (); + } + } + + if (h) + { + struct elf_x86_64_link_hash_entry *eh; + struct elf_dyn_relocs **pp; + struct elf_dyn_relocs *p; + + eh = (struct elf_x86_64_link_hash_entry *) h; for (pp = &eh->dyn_relocs; (p = *pp) != NULL; pp = &p->next) if (p->sec == sec) @@ -1638,18 +1792,18 @@ } } - r_type = ELF64_R_TYPE (rel->r_info); - if (! elf64_x86_64_tls_transition (info, abfd, sec, NULL, - symtab_hdr, sym_hashes, - &r_type, GOT_UNKNOWN, - rel, relend, h, r_symndx)) + r_type = ELF32_R_TYPE (rel->r_info); + if (! elf_x86_64_tls_transition (info, abfd, sec, NULL, + symtab_hdr, sym_hashes, + &r_type, GOT_UNKNOWN, + rel, relend, h, r_symndx)) return FALSE; switch (r_type) { case R_X86_64_TLSLD: - if (elf64_x86_64_hash_table (info)->tls_ld_got.refcount > 0) - elf64_x86_64_hash_table (info)->tls_ld_got.refcount -= 1; + if (htab->tls_ld_got.refcount > 0) + htab->tls_ld_got.refcount -= 1; break; case R_X86_64_TLSGD: @@ -1667,6 +1821,11 @@ h->plt.refcount -= 1; if (h->got.refcount > 0) h->got.refcount -= 1; + if (h->type == STT_GNU_IFUNC) + { + if (h->plt.refcount > 0) + h->plt.refcount -= 1; + } } else if (local_got_refcounts != NULL) { @@ -1684,7 +1843,8 @@ case R_X86_64_PC16: case R_X86_64_PC32: case R_X86_64_PC64: - if (info->shared) + if (info->shared + && (h == NULL || h->type != STT_GNU_IFUNC)) break; /* Fall thru */ @@ -1712,10 +1872,10 @@ understand. */ static bfd_boolean -elf64_x86_64_adjust_dynamic_symbol (struct bfd_link_info *info, - struct elf_link_hash_entry *h) +elf_x86_64_adjust_dynamic_symbol (struct bfd_link_info *info, + struct elf_link_hash_entry *h) { - struct elf64_x86_64_link_hash_table *htab; + struct elf_x86_64_link_hash_table *htab; asection *s; /* STT_GNU_IFUNC symbol must go through PLT. */ @@ -1797,10 +1957,10 @@ if (ELIMINATE_COPY_RELOCS) { - struct elf64_x86_64_link_hash_entry * eh; + struct elf_x86_64_link_hash_entry * eh; struct elf_dyn_relocs *p; - eh = (struct elf64_x86_64_link_hash_entry *) h; + eh = (struct elf_x86_64_link_hash_entry *) h; for (p = eh->dyn_relocs; p != NULL; p = p->next) { s = p->sec->output_section; @@ -1834,14 +1994,18 @@ both the dynamic object and the regular object will refer to the same memory location for the variable. */ - htab = elf64_x86_64_hash_table (info); + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; /* We must generate a R_X86_64_COPY reloc to tell the dynamic linker to copy the initial value out of the dynamic object and into the runtime process image. */ if ((h->root.u.def.section->flags & SEC_ALLOC) != 0) { - htab->srelbss->size += sizeof (Elf64_External_Rela); + const struct elf_backend_data *bed; + bed = get_elf_backend_data (info->output_bfd); + htab->srelbss->size += bed->s->sizeof_rela; h->needs_copy = 1; } @@ -1854,22 +2018,26 @@ dynamic relocs. */ static bfd_boolean -elf64_x86_64_allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) +elf_x86_64_allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) { struct bfd_link_info *info; - struct elf64_x86_64_link_hash_table *htab; - struct elf64_x86_64_link_hash_entry *eh; + struct elf_x86_64_link_hash_table *htab; + struct elf_x86_64_link_hash_entry *eh; struct elf_dyn_relocs *p; + const struct elf_backend_data *bed; if (h->root.type == bfd_link_hash_indirect) return TRUE; if (h->root.type == bfd_link_hash_warning) h = (struct elf_link_hash_entry *) h->root.u.i.link; - eh = (struct elf64_x86_64_link_hash_entry *) h; + eh = (struct elf_x86_64_link_hash_entry *) h; info = (struct bfd_link_info *) inf; - htab = elf64_x86_64_hash_table (info); + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + bed = get_elf_backend_data (info->output_bfd); /* Since STT_GNU_IFUNC symbol must go through PLT, we handle it here if it is defined and referenced in a non-shared object. */ @@ -1923,7 +2091,7 @@ htab->elf.sgotplt->size += GOT_ENTRY_SIZE; /* We also need to make an entry in the .rela.plt section. */ - htab->elf.srelplt->size += sizeof (Elf64_External_Rela); + htab->elf.srelplt->size += bed->s->sizeof_rela; htab->elf.srelplt->reloc_count++; } else @@ -1945,7 +2113,7 @@ if (h->got.refcount > 0 && info->executable && h->dynindx == -1 - && elf64_x86_64_hash_entry (h)->tls_type == GOT_TLS_IE) + && elf_x86_64_hash_entry (h)->tls_type == GOT_TLS_IE) { h->got.offset = (bfd_vma) -1; } @@ -1953,7 +2121,7 @@ { asection *s; bfd_boolean dyn; - int tls_type = elf64_x86_64_hash_entry (h)->tls_type; + int tls_type = elf_x86_64_hash_entry (h)->tls_type; /* Make sure this symbol is output as a dynamic symbol. Undefined weak syms won't yet be marked as dynamic. */ @@ -1967,7 +2135,7 @@ if (GOT_TLS_GDESC_P (tls_type)) { eh->tlsdesc_got = htab->elf.sgotplt->size - - elf64_x86_64_compute_jump_table_size (htab); + - elf_x86_64_compute_jump_table_size (htab); htab->elf.sgotplt->size += 2 * GOT_ENTRY_SIZE; h->got.offset = (bfd_vma) -2; } @@ -1986,18 +2154,18 @@ R_X86_64_GOTTPOFF needs one dynamic relocation. */ if ((GOT_TLS_GD_P (tls_type) && h->dynindx == -1) || tls_type == GOT_TLS_IE) - htab->elf.srelgot->size += sizeof (Elf64_External_Rela); + htab->elf.srelgot->size += bed->s->sizeof_rela; else if (GOT_TLS_GD_P (tls_type)) - htab->elf.srelgot->size += 2 * sizeof (Elf64_External_Rela); + htab->elf.srelgot->size += 2 * bed->s->sizeof_rela; else if (! GOT_TLS_GDESC_P (tls_type) && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT || h->root.type != bfd_link_hash_undefweak) && (info->shared || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))) - htab->elf.srelgot->size += sizeof (Elf64_External_Rela); + htab->elf.srelgot->size += bed->s->sizeof_rela; if (GOT_TLS_GDESC_P (tls_type)) { - htab->elf.srelplt->size += sizeof (Elf64_External_Rela); + htab->elf.srelplt->size += bed->s->sizeof_rela; htab->tlsdesc_plt = (bfd_vma) -1; } } @@ -2093,7 +2261,7 @@ BFD_ASSERT (sreloc != NULL); - sreloc->size += p->count * sizeof (Elf64_External_Rela); + sreloc->size += p->count * bed->s->sizeof_rela; } return TRUE; @@ -2103,7 +2271,7 @@ local dynamic relocs. */ static bfd_boolean -elf64_x86_64_allocate_local_dynrelocs (void **slot, void *inf) +elf_x86_64_allocate_local_dynrelocs (void **slot, void *inf) { struct elf_link_hash_entry *h = (struct elf_link_hash_entry *) *slot; @@ -2115,21 +2283,22 @@ || h->root.type != bfd_link_hash_defined) abort (); - return elf64_x86_64_allocate_dynrelocs (h, inf); + return elf_x86_64_allocate_dynrelocs (h, inf); } /* Find any dynamic relocs that apply to read-only sections. */ static bfd_boolean -elf64_x86_64_readonly_dynrelocs (struct elf_link_hash_entry *h, void * inf) +elf_x86_64_readonly_dynrelocs (struct elf_link_hash_entry *h, + void * inf) { - struct elf64_x86_64_link_hash_entry *eh; + struct elf_x86_64_link_hash_entry *eh; struct elf_dyn_relocs *p; if (h->root.type == bfd_link_hash_warning) h = (struct elf_link_hash_entry *) h->root.u.i.link; - eh = (struct elf64_x86_64_link_hash_entry *) h; + eh = (struct elf_x86_64_link_hash_entry *) h; for (p = eh->dyn_relocs; p != NULL; p = p->next) { asection *s = p->sec->output_section; @@ -2150,16 +2319,21 @@ /* Set the sizes of the dynamic sections. */ static bfd_boolean -elf64_x86_64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, - struct bfd_link_info *info) +elf_x86_64_size_dynamic_sections (bfd *output_bfd, + struct bfd_link_info *info) { - struct elf64_x86_64_link_hash_table *htab; + struct elf_x86_64_link_hash_table *htab; bfd *dynobj; asection *s; bfd_boolean relocs; bfd *ibfd; + const struct elf_backend_data *bed; + + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + bed = get_elf_backend_data (output_bfd); - htab = elf64_x86_64_hash_table (info); dynobj = htab->elf.dynobj; if (dynobj == NULL) abort (); @@ -2172,8 +2346,8 @@ s = bfd_get_section_by_name (dynobj, ".interp"); if (s == NULL) abort (); - s->size = sizeof ELF_DYNAMIC_INTERPRETER; - s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER; + s->size = htab->dynamic_interpreter_size; + s->contents = (unsigned char *) htab->dynamic_interpreter; } } @@ -2212,7 +2386,7 @@ else if (p->count != 0) { srel = elf_section_data (p->sec)->sreloc; - srel->size += p->count * sizeof (Elf64_External_Rela); + srel->size += p->count * bed->s->sizeof_rela; if ((p->sec->output_section->flags & SEC_READONLY) != 0) info->flags |= DF_TEXTREL; } @@ -2226,8 +2400,8 @@ symtab_hdr = &elf_symtab_hdr (ibfd); locsymcount = symtab_hdr->sh_info; end_local_got = local_got + locsymcount; - local_tls_type = elf64_x86_64_local_got_tls_type (ibfd); - local_tlsdesc_gotent = elf64_x86_64_local_tlsdesc_gotent (ibfd); + local_tls_type = elf_x86_64_local_got_tls_type (ibfd); + local_tlsdesc_gotent = elf_x86_64_local_tlsdesc_gotent (ibfd); s = htab->elf.sgot; srel = htab->elf.srelgot; for (; local_got < end_local_got; @@ -2239,7 +2413,7 @@ if (GOT_TLS_GDESC_P (*local_tls_type)) { *local_tlsdesc_gotent = htab->elf.sgotplt->size - - elf64_x86_64_compute_jump_table_size (htab); + - elf_x86_64_compute_jump_table_size (htab); htab->elf.sgotplt->size += 2 * GOT_ENTRY_SIZE; *local_got = (bfd_vma) -2; } @@ -2258,12 +2432,12 @@ if (GOT_TLS_GDESC_P (*local_tls_type)) { htab->elf.srelplt->size - += sizeof (Elf64_External_Rela); + += bed->s->sizeof_rela; htab->tlsdesc_plt = (bfd_vma) -1; } if (! GOT_TLS_GDESC_P (*local_tls_type) || GOT_TLS_GD_P (*local_tls_type)) - srel->size += sizeof (Elf64_External_Rela); + srel->size += bed->s->sizeof_rela; } } else @@ -2277,19 +2451,19 @@ relocs. */ htab->tls_ld_got.offset = htab->elf.sgot->size; htab->elf.sgot->size += 2 * GOT_ENTRY_SIZE; - htab->elf.srelgot->size += sizeof (Elf64_External_Rela); + htab->elf.srelgot->size += bed->s->sizeof_rela; } else htab->tls_ld_got.offset = -1; /* Allocate global sym .plt and .got entries, and space for global sym dynamic relocs. */ - elf_link_hash_traverse (&htab->elf, elf64_x86_64_allocate_dynrelocs, + elf_link_hash_traverse (&htab->elf, elf_x86_64_allocate_dynrelocs, info); /* Allocate .plt and .got entries, and space for local symbols. */ htab_traverse (htab->loc_hash_table, - elf64_x86_64_allocate_local_dynrelocs, + elf_x86_64_allocate_local_dynrelocs, info); /* For every jump slot reserved in the sgotplt, reloc_count is @@ -2299,7 +2473,7 @@ slot size. */ if (htab->elf.srelplt) htab->sgotplt_jump_table_size - = elf64_x86_64_compute_jump_table_size (htab); + = elf_x86_64_compute_jump_table_size (htab); if (htab->tlsdesc_plt) { @@ -2320,6 +2494,30 @@ } } + if (htab->elf.sgotplt) + { + struct elf_link_hash_entry *got; + got = elf_link_hash_lookup (elf_hash_table (info), + "_GLOBAL_OFFSET_TABLE_", + FALSE, FALSE, FALSE); + + /* Don't allocate .got.plt section if there are no GOT nor PLT + entries and there is no refeence to _GLOBAL_OFFSET_TABLE_. */ + if ((got == NULL + || !got->ref_regular_nonweak) + && (htab->elf.sgotplt->size + == get_elf_backend_data (output_bfd)->got_header_size) + && (htab->elf.splt == NULL + || htab->elf.splt->size == 0) + && (htab->elf.sgot == NULL + || htab->elf.sgot->size == 0) + && (htab->elf.iplt == NULL + || htab->elf.iplt->size == 0) + && (htab->elf.igotplt == NULL + || htab->elf.igotplt->size == 0)) + htab->elf.sgotplt->size = 0; + } + /* We now have determined the sizes of the various dynamic sections. Allocate memory for them. */ relocs = FALSE; @@ -2386,7 +2584,7 @@ if (htab->elf.dynamic_sections_created) { /* Add some entries to the .dynamic section. We fill in the - values later, in elf64_x86_64_finish_dynamic_sections, but we + values later, in elf_x86_64_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. */ @@ -2417,14 +2615,14 @@ { if (!add_dynamic_entry (DT_RELA, 0) || !add_dynamic_entry (DT_RELASZ, 0) - || !add_dynamic_entry (DT_RELAENT, sizeof (Elf64_External_Rela))) + || !add_dynamic_entry (DT_RELAENT, bed->s->sizeof_rela)) return FALSE; /* If any dynamic relocs apply to a read-only section, then we need a DT_TEXTREL entry. */ if ((info->flags & DF_TEXTREL) == 0) elf_link_hash_traverse (&htab->elf, - elf64_x86_64_readonly_dynrelocs, + elf_x86_64_readonly_dynrelocs, info); if ((info->flags & DF_TEXTREL) != 0) @@ -2440,8 +2638,8 @@ } static bfd_boolean -elf64_x86_64_always_size_sections (bfd *output_bfd, - struct bfd_link_info *info) +elf_x86_64_always_size_sections (bfd *output_bfd, + struct bfd_link_info *info) { asection *tls_sec = elf_hash_table (info)->tls_sec; @@ -2455,17 +2653,22 @@ if (tlsbase && tlsbase->type == STT_TLS) { + struct elf_x86_64_link_hash_table *htab; struct bfd_link_hash_entry *bh = NULL; const struct elf_backend_data *bed = get_elf_backend_data (output_bfd); + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + if (!(_bfd_generic_link_add_one_symbol (info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL, tls_sec, 0, NULL, FALSE, bed->collect, &bh))) return FALSE; - elf64_x86_64_hash_table (info)->tls_module_base = bh; + htab->tls_module_base = bh; tlsbase = (struct elf_link_hash_entry *)bh; tlsbase->def_regular = 1; @@ -2483,19 +2686,23 @@ multiple times, it is idempotent. */ static void -elf64_x86_64_set_tls_module_base (struct bfd_link_info *info) +elf_x86_64_set_tls_module_base (struct bfd_link_info *info) { + struct elf_x86_64_link_hash_table *htab; struct bfd_link_hash_entry *base; if (!info->executable) return; - base = elf64_x86_64_hash_table (info)->tls_module_base; + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return; - if (!base) + base = htab->tls_module_base; + if (base == NULL) return; - base->u.def.value = elf_hash_table (info)->tls_size; + base->u.def.value = htab->elf.tls_size; } /* Return the base VMA address which should be subtracted from real addresses @@ -2503,7 +2710,7 @@ This is PT_TLS segment p_vaddr. */ static bfd_vma -elf64_x86_64_dtpoff_base (struct bfd_link_info *info) +elf_x86_64_dtpoff_base (struct bfd_link_info *info) { /* If tls_sec is NULL, we should have signalled an error already. */ if (elf_hash_table (info)->tls_sec == NULL) @@ -2515,14 +2722,19 @@ if STT_TLS virtual address is ADDRESS. */ static bfd_vma -elf64_x86_64_tpoff (struct bfd_link_info *info, bfd_vma address) +elf_x86_64_tpoff (struct bfd_link_info *info, bfd_vma address) { struct elf_link_hash_table *htab = elf_hash_table (info); + const struct elf_backend_data *bed = get_elf_backend_data (info->output_bfd); + bfd_vma static_tls_size; /* If tls_segment is NULL, we should have signalled an error already. */ if (htab->tls_sec == NULL) return 0; - return address - htab->tls_size - htab->tls_sec->vma; + + /* Consider special static TLS alignment requirements. */ + static_tls_size = BFD_ALIGN (htab->tls_size, bed->static_tls_alignment); + return address - static_tls_size - htab->tls_sec->vma; } /* Is the instruction before OFFSET in CONTENTS a 32bit relative @@ -2546,13 +2758,16 @@ /* Relocate an x86_64 ELF section. */ static bfd_boolean -elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info, - bfd *input_bfd, asection *input_section, - bfd_byte *contents, Elf_Internal_Rela *relocs, - Elf_Internal_Sym *local_syms, - asection **local_sections) +elf_x86_64_relocate_section (bfd *output_bfd, + struct bfd_link_info *info, + bfd *input_bfd, + asection *input_section, + bfd_byte *contents, + Elf_Internal_Rela *relocs, + Elf_Internal_Sym *local_syms, + asection **local_sections) { - struct elf64_x86_64_link_hash_table *htab; + struct elf_x86_64_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; bfd_vma *local_got_offsets; @@ -2562,13 +2777,15 @@ BFD_ASSERT (is_x86_64_elf (input_bfd)); - htab = elf64_x86_64_hash_table (info); + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; symtab_hdr = &elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); local_got_offsets = elf_local_got_offsets (input_bfd); - local_tlsdesc_gotents = elf64_x86_64_local_tlsdesc_gotent (input_bfd); + local_tlsdesc_gotents = elf_x86_64_local_tlsdesc_gotent (input_bfd); - elf64_x86_64_set_tls_module_base (info); + elf_x86_64_set_tls_module_base (info); rel = relocs; relend = relocs + input_section->reloc_count; @@ -2587,7 +2804,7 @@ int tls_type; asection *base_got; - r_type = ELF64_R_TYPE (rel->r_info); + r_type = ELF32_R_TYPE (rel->r_info); if (r_type == (int) R_X86_64_GNU_VTINHERIT || r_type == (int) R_X86_64_GNU_VTENTRY) continue; @@ -2599,7 +2816,7 @@ } howto = x86_64_elf_howto_table + r_type; - r_symndx = ELF64_R_SYM (rel->r_info); + r_symndx = htab->r_sym (rel->r_info); h = NULL; sym = NULL; sec = NULL; @@ -2614,10 +2831,10 @@ /* Relocate against local STT_GNU_IFUNC symbol. */ if (!info->relocatable - && ELF64_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) { - h = elf64_x86_64_get_local_sym_hash (htab, input_bfd, - rel, FALSE); + h = elf_x86_64_get_local_sym_hash (htab, input_bfd, + rel, FALSE); if (h == NULL) abort (); @@ -2628,7 +2845,7 @@ } else { - bfd_boolean warned; + bfd_boolean warned ATTRIBUTE_UNUSED; RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, r_symndx, symtab_hdr, sym_hashes, @@ -2637,15 +2854,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -2690,6 +2900,10 @@ abort (); goto do_relocation; + case R_X86_64_32: + if (ABI_64_P (output_bfd)) + goto do_relocation; + /* FALLTHROUGH */ case R_X86_64_64: if (rel->r_addend != 0) { @@ -2712,7 +2926,6 @@ if (info->shared && h->non_got_ref) { Elf_Internal_Rela outrel; - bfd_byte *loc; asection *sreloc; /* Need a dynamic relocation to get the real function @@ -2733,22 +2946,19 @@ || info->executable) { /* This symbol is resolved locally. */ - outrel.r_info = ELF64_R_INFO (0, R_X86_64_IRELATIVE); + outrel.r_info = htab->r_info (0, R_X86_64_IRELATIVE); outrel.r_addend = (h->root.u.def.value + h->root.u.def.section->output_section->vma + h->root.u.def.section->output_offset); } else { - outrel.r_info = ELF64_R_INFO (h->dynindx, r_type); + outrel.r_info = htab->r_info (h->dynindx, r_type); outrel.r_addend = 0; } sreloc = htab->elf.irelifunc; - loc = sreloc->contents; - loc += (sreloc->reloc_count++ - * sizeof (Elf64_External_Rela)); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf_append_rela (output_bfd, sreloc, &outrel); /* If this reloc is against an external symbol, we do not want to fiddle with the addend. Otherwise, @@ -2757,8 +2967,7 @@ internal symbol, we have updated addend. */ continue; } - - case R_X86_64_32: + /* FALLTHROUGH */ case R_X86_64_PC32: case R_X86_64_PC64: case R_X86_64_PLT32: @@ -2820,18 +3029,6 @@ relocation = (base_got->output_section->vma + base_got->output_offset + off); - if (r_type != R_X86_64_GOTPCREL - && r_type != R_X86_64_GOTPCREL64) - { - asection *gotplt; - if (htab->elf.splt != NULL) - gotplt = htab->elf.sgotplt; - else - gotplt = htab->elf.igotplt; - relocation -= (gotplt->output_section->vma - - gotplt->output_offset); - } - goto do_relocation; } } @@ -2931,7 +3128,6 @@ { asection *s; Elf_Internal_Rela outrel; - bfd_byte *loc; /* We need to generate a R_X86_64_RELATIVE reloc for the dynamic linker. */ @@ -2942,11 +3138,9 @@ outrel.r_offset = (base_got->output_section->vma + base_got->output_offset + off); - outrel.r_info = ELF64_R_INFO (0, R_X86_64_RELATIVE); + outrel.r_info = htab->r_info (0, R_X86_64_RELATIVE); outrel.r_addend = relocation; - loc = s->contents; - loc += s->reloc_count++ * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf_append_rela (output_bfd, s, &outrel); } local_got_offsets[r_symndx] |= 1; @@ -3047,6 +3241,7 @@ case R_X86_64_PC16: case R_X86_64_PC32: if (info->shared + && ABI_64_P (output_bfd) && (input_section->flags & SEC_ALLOC) != 0 && (input_section->flags & SEC_READONLY) != 0 && h != NULL) @@ -3135,7 +3330,6 @@ || h->root.type == bfd_link_hash_undefined))) { Elf_Internal_Rela outrel; - bfd_byte *loc; bfd_boolean skip, relocate; asection *sreloc; @@ -3168,16 +3362,16 @@ || ! SYMBOLIC_BIND (info, h) || ! h->def_regular)) { - outrel.r_info = ELF64_R_INFO (h->dynindx, r_type); + outrel.r_info = htab->r_info (h->dynindx, r_type); outrel.r_addend = rel->r_addend; } else { /* This symbol is local, or marked to become local. */ - if (r_type == R_X86_64_64) + if (r_type == htab->pointer_r_type) { relocate = TRUE; - outrel.r_info = ELF64_R_INFO (0, R_X86_64_RELATIVE); + outrel.r_info = htab->r_info (0, R_X86_64_RELATIVE); outrel.r_addend = relocation + rel->r_addend; } else @@ -3210,7 +3404,7 @@ BFD_ASSERT (sindx != 0); } - outrel.r_info = ELF64_R_INFO (sindx, r_type); + outrel.r_info = htab->r_info (sindx, r_type); outrel.r_addend = relocation + rel->r_addend; } } @@ -3219,9 +3413,7 @@ BFD_ASSERT (sreloc != NULL && sreloc->contents != NULL); - loc = sreloc->contents; - loc += sreloc->reloc_count++ * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf_append_rela (output_bfd, sreloc, &outrel); /* If this reloc is against an external symbol, we do not want to fiddle with the addend. Otherwise, we @@ -3239,15 +3431,15 @@ case R_X86_64_GOTTPOFF: tls_type = GOT_UNKNOWN; if (h == NULL && local_got_offsets) - tls_type = elf64_x86_64_local_got_tls_type (input_bfd) [r_symndx]; + tls_type = elf_x86_64_local_got_tls_type (input_bfd) [r_symndx]; else if (h != NULL) - tls_type = elf64_x86_64_hash_entry (h)->tls_type; + tls_type = elf_x86_64_hash_entry (h)->tls_type; - if (! elf64_x86_64_tls_transition (info, input_bfd, - input_section, contents, - symtab_hdr, sym_hashes, - &r_type, tls_type, rel, - relend, h, r_symndx)) + if (! elf_x86_64_tls_transition (info, input_bfd, + input_section, contents, + symtab_hdr, sym_hashes, + &r_type, tls_type, rel, + relend, h, r_symndx)) return FALSE; if (r_type == R_X86_64_TPOFF32) @@ -3256,38 +3448,47 @@ BFD_ASSERT (! unresolved_reloc); - if (ELF64_R_TYPE (rel->r_info) == R_X86_64_TLSGD) + if (ELF32_R_TYPE (rel->r_info) == R_X86_64_TLSGD) { - /* GD->LE transition. + /* GD->LE transition. For 64bit, change .byte 0x66; leaq foo@tlsgd(%rip), %rdi .word 0x6666; rex64; call __tls_get_addr - Change it into: + into: movq %fs:0, %rax + leaq foo@tpoff(%rax), %rax + For 32bit, change + leaq foo@tlsgd(%rip), %rdi + .word 0x6666; rex64; call __tls_get_addr + into: + movl %fs:0, %eax leaq foo@tpoff(%rax), %rax */ - memcpy (contents + roff - 4, - "\x64\x48\x8b\x04\x25\0\0\0\0\x48\x8d\x80\0\0\0", - 16); + if (ABI_64_P (output_bfd)) + memcpy (contents + roff - 4, + "\x64\x48\x8b\x04\x25\0\0\0\0\x48\x8d\x80\0\0\0", + 16); + else + memcpy (contents + roff - 3, + "\x64\x8b\x04\x25\0\0\0\0\x48\x8d\x80\0\0\0", + 15); bfd_put_32 (output_bfd, - elf64_x86_64_tpoff (info, relocation), + elf_x86_64_tpoff (info, relocation), contents + roff + 8); /* Skip R_X86_64_PC32/R_X86_64_PLT32. */ rel++; continue; } - else if (ELF64_R_TYPE (rel->r_info) == R_X86_64_GOTPC32_TLSDESC) + else if (ELF32_R_TYPE (rel->r_info) == R_X86_64_GOTPC32_TLSDESC) { /* GDesc -> LE transition. It's originally something like: leaq x@tlsdesc(%rip), %rax Change it to: - movl $x@tpoff, %rax - */ + movl $x@tpoff, %rax. */ - unsigned int val, type, type2; + unsigned int val, type; type = bfd_get_8 (input_bfd, contents + roff - 3); - type2 = bfd_get_8 (input_bfd, contents + roff - 2); val = bfd_get_8 (input_bfd, contents + roff - 1); bfd_put_8 (output_bfd, 0x48 | ((type >> 2) & 1), contents + roff - 3); @@ -3295,11 +3496,11 @@ bfd_put_8 (output_bfd, 0xc0 | ((val >> 3) & 7), contents + roff - 1); bfd_put_32 (output_bfd, - elf64_x86_64_tpoff (info, relocation), + elf_x86_64_tpoff (info, relocation), contents + roff); continue; } - else if (ELF64_R_TYPE (rel->r_info) == R_X86_64_TLSDESC_CALL) + else if (ELF32_R_TYPE (rel->r_info) == R_X86_64_TLSDESC_CALL) { /* GDesc -> LE transition. It's originally: @@ -3310,7 +3511,7 @@ bfd_put_8 (output_bfd, 0x90, contents + roff + 1); continue; } - else if (ELF64_R_TYPE (rel->r_info) == R_X86_64_GOTTPOFF) + else if (ELF32_R_TYPE (rel->r_info) == R_X86_64_GOTTPOFF) { /* IE->LE transition: Originally it can be one of: @@ -3333,6 +3534,9 @@ if (val == 0x4c) bfd_put_8 (output_bfd, 0x49, contents + roff - 3); + else if (!ABI_64_P (output_bfd) && val == 0x44) + bfd_put_8 (output_bfd, 0x41, + contents + roff - 3); bfd_put_8 (output_bfd, 0xc7, contents + roff - 2); bfd_put_8 (output_bfd, 0xc0 | reg, @@ -3345,6 +3549,9 @@ if (val == 0x4c) bfd_put_8 (output_bfd, 0x49, contents + roff - 3); + else if (!ABI_64_P (output_bfd) && val == 0x44) + bfd_put_8 (output_bfd, 0x41, + contents + roff - 3); bfd_put_8 (output_bfd, 0x81, contents + roff - 2); bfd_put_8 (output_bfd, 0xc0 | reg, @@ -3356,13 +3563,16 @@ if (val == 0x4c) bfd_put_8 (output_bfd, 0x4d, contents + roff - 3); + else if (!ABI_64_P (output_bfd) && val == 0x44) + bfd_put_8 (output_bfd, 0x45, + contents + roff - 3); bfd_put_8 (output_bfd, 0x8d, contents + roff - 2); bfd_put_8 (output_bfd, 0x80 | reg | (reg << 3), contents + roff - 1); } bfd_put_32 (output_bfd, - elf64_x86_64_tpoff (info, relocation), + elf_x86_64_tpoff (info, relocation), contents + roff); continue; } @@ -3376,7 +3586,7 @@ if (h != NULL) { off = h->got.offset; - offplt = elf64_x86_64_hash_entry (h)->tlsdesc_got; + offplt = elf_x86_64_hash_entry (h)->tlsdesc_got; } else { @@ -3392,7 +3602,6 @@ else { Elf_Internal_Rela outrel; - bfd_byte *loc; int dr_type, indx; asection *sreloc; @@ -3403,7 +3612,7 @@ if (GOT_TLS_GDESC_P (tls_type)) { - outrel.r_info = ELF64_R_INFO (indx, R_X86_64_TLSDESC); + outrel.r_info = htab->r_info (indx, R_X86_64_TLSDESC); BFD_ASSERT (htab->sgotplt_jump_table_size + offplt + 2 * GOT_ENTRY_SIZE <= htab->elf.sgotplt->size); outrel.r_offset = (htab->elf.sgotplt->output_section->vma @@ -3411,16 +3620,11 @@ + offplt + htab->sgotplt_jump_table_size); sreloc = htab->elf.srelplt; - loc = sreloc->contents; - loc += sreloc->reloc_count++ - * sizeof (Elf64_External_Rela); - BFD_ASSERT (loc + sizeof (Elf64_External_Rela) - <= sreloc->contents + sreloc->size); if (indx == 0) - outrel.r_addend = relocation - elf64_x86_64_dtpoff_base (info); + outrel.r_addend = relocation - elf_x86_64_dtpoff_base (info); else outrel.r_addend = 0; - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf_append_rela (output_bfd, sreloc, &outrel); } sreloc = htab->elf.srelgot; @@ -3439,14 +3643,10 @@ outrel.r_addend = 0; if ((dr_type == R_X86_64_TPOFF64 || dr_type == R_X86_64_TLSDESC) && indx == 0) - outrel.r_addend = relocation - elf64_x86_64_dtpoff_base (info); - outrel.r_info = ELF64_R_INFO (indx, dr_type); + outrel.r_addend = relocation - elf_x86_64_dtpoff_base (info); + outrel.r_info = htab->r_info (indx, dr_type); - loc = sreloc->contents; - loc += sreloc->reloc_count++ * sizeof (Elf64_External_Rela); - BFD_ASSERT (loc + sizeof (Elf64_External_Rela) - <= sreloc->contents + sreloc->size); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf_append_rela (output_bfd, sreloc, &outrel); if (GOT_TLS_GD_P (tls_type)) { @@ -3454,21 +3654,18 @@ { BFD_ASSERT (! unresolved_reloc); bfd_put_64 (output_bfd, - relocation - elf64_x86_64_dtpoff_base (info), + relocation - elf_x86_64_dtpoff_base (info), htab->elf.sgot->contents + off + GOT_ENTRY_SIZE); } else { bfd_put_64 (output_bfd, 0, htab->elf.sgot->contents + off + GOT_ENTRY_SIZE); - outrel.r_info = ELF64_R_INFO (indx, + outrel.r_info = htab->r_info (indx, R_X86_64_DTPOFF64); outrel.r_offset += GOT_ENTRY_SIZE; - sreloc->reloc_count++; - loc += sizeof (Elf64_External_Rela); - BFD_ASSERT (loc + sizeof (Elf64_External_Rela) - <= sreloc->contents + sreloc->size); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf_append_rela (output_bfd, sreloc, + &outrel); } } @@ -3482,7 +3679,7 @@ if (off >= (bfd_vma) -2 && ! GOT_TLS_GDESC_P (tls_type)) abort (); - if (r_type == ELF64_R_TYPE (rel->r_info)) + if (r_type == ELF32_R_TYPE (rel->r_info)) { if (r_type == R_X86_64_GOTPC32_TLSDESC || r_type == R_X86_64_TLSDESC_CALL) @@ -3498,17 +3695,28 @@ { bfd_vma roff = rel->r_offset; - if (ELF64_R_TYPE (rel->r_info) == R_X86_64_TLSGD) + if (ELF32_R_TYPE (rel->r_info) == R_X86_64_TLSGD) { - /* GD->IE transition. + /* GD->IE transition. For 64bit, change .byte 0x66; leaq foo@tlsgd(%rip), %rdi .word 0x6666; rex64; call __tls_get_addr@plt - Change it into: + into: movq %fs:0, %rax + addq foo@gottpoff(%rip), %rax + For 32bit, change + leaq foo@tlsgd(%rip), %rdi + .word 0x6666; rex64; call __tls_get_addr@plt + into: + movl %fs:0, %eax addq foo@gottpoff(%rip), %rax */ - memcpy (contents + roff - 4, - "\x64\x48\x8b\x04\x25\0\0\0\0\x48\x03\x05\0\0\0", - 16); + if (ABI_64_P (output_bfd)) + memcpy (contents + roff - 4, + "\x64\x48\x8b\x04\x25\0\0\0\0\x48\x03\x05\0\0\0", + 16); + else + memcpy (contents + roff - 3, + "\x64\x8b\x04\x25\0\0\0\0\x48\x03\x05\0\0\0", + 15); relocation = (htab->elf.sgot->output_section->vma + htab->elf.sgot->output_offset + off @@ -3522,21 +3730,14 @@ rel++; continue; } - else if (ELF64_R_TYPE (rel->r_info) == R_X86_64_GOTPC32_TLSDESC) + else if (ELF32_R_TYPE (rel->r_info) == R_X86_64_GOTPC32_TLSDESC) { /* GDesc -> IE transition. It's originally something like: leaq x@tlsdesc(%rip), %rax Change it to: - movq x@gottpoff(%rip), %rax # before xchg %ax,%ax - */ - - unsigned int val, type, type2; - - type = bfd_get_8 (input_bfd, contents + roff - 3); - type2 = bfd_get_8 (input_bfd, contents + roff - 2); - val = bfd_get_8 (input_bfd, contents + roff - 1); + movq x@gottpoff(%rip), %rax # before xchg %ax,%ax. */ /* Now modify the instruction as appropriate. To turn a leaq into a movq in the form we use it, it @@ -3554,19 +3755,15 @@ contents + roff); continue; } - else if (ELF64_R_TYPE (rel->r_info) == R_X86_64_TLSDESC_CALL) + else if (ELF32_R_TYPE (rel->r_info) == R_X86_64_TLSDESC_CALL) { /* GDesc -> IE transition. It's originally: call *(%rax) Change it to: - xchg %ax,%ax. */ - - unsigned int val, type; + xchg %ax, %ax. */ - type = bfd_get_8 (input_bfd, contents + roff); - val = bfd_get_8 (input_bfd, contents + roff + 1); bfd_put_8 (output_bfd, 0x66, contents + roff); bfd_put_8 (output_bfd, 0x90, contents + roff + 1); continue; @@ -3577,23 +3774,29 @@ break; case R_X86_64_TLSLD: - if (! elf64_x86_64_tls_transition (info, input_bfd, - input_section, contents, - symtab_hdr, sym_hashes, - &r_type, GOT_UNKNOWN, - rel, relend, h, r_symndx)) + if (! elf_x86_64_tls_transition (info, input_bfd, + input_section, contents, + symtab_hdr, sym_hashes, + &r_type, GOT_UNKNOWN, + rel, relend, h, r_symndx)) return FALSE; if (r_type != R_X86_64_TLSLD) { /* LD->LE transition: leaq foo@tlsld(%rip), %rdi; call __tls_get_addr. - We change it into: - .word 0x6666; .byte 0x66; movl %fs:0, %rax. */ + For 64bit, we change it into: + .word 0x6666; .byte 0x66; movq %fs:0, %rax. + For 32bit, we change it into: + nopl 0x0(%rax); movl %fs:0, %eax. */ BFD_ASSERT (r_type == R_X86_64_TPOFF32); - memcpy (contents + rel->r_offset - 3, - "\x66\x66\x66\x64\x48\x8b\x04\x25\0\0\0", 12); + if (ABI_64_P (output_bfd)) + memcpy (contents + rel->r_offset - 3, + "\x66\x66\x66\x64\x48\x8b\x04\x25\0\0\0", 12); + else + memcpy (contents + rel->r_offset - 3, + "\x0f\x1f\x40\x00\x64\x8b\x04\x25\0\0\0", 12); /* Skip R_X86_64_PC32/R_X86_64_PLT32. */ rel++; continue; @@ -3608,7 +3811,6 @@ else { Elf_Internal_Rela outrel; - bfd_byte *loc; if (htab->elf.srelgot == NULL) abort (); @@ -3620,11 +3822,10 @@ htab->elf.sgot->contents + off); bfd_put_64 (output_bfd, 0, htab->elf.sgot->contents + off + GOT_ENTRY_SIZE); - outrel.r_info = ELF64_R_INFO (0, R_X86_64_DTPMOD64); + outrel.r_info = htab->r_info (0, R_X86_64_DTPMOD64); outrel.r_addend = 0; - loc = htab->elf.srelgot->contents; - loc += htab->elf.srelgot->reloc_count++ * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc); + elf_append_rela (output_bfd, htab->elf.srelgot, + &outrel); htab->tls_ld_got.offset |= 1; } relocation = htab->elf.sgot->output_section->vma @@ -3634,14 +3835,14 @@ case R_X86_64_DTPOFF32: if (!info->executable|| (input_section->flags & SEC_CODE) == 0) - relocation -= elf64_x86_64_dtpoff_base (info); + relocation -= elf_x86_64_dtpoff_base (info); else - relocation = elf64_x86_64_tpoff (info, relocation); + relocation = elf_x86_64_tpoff (info, relocation); break; case R_X86_64_TPOFF32: BFD_ASSERT (info->executable); - relocation = elf64_x86_64_tpoff (info, relocation); + relocation = elf_x86_64_tpoff (info, relocation); break; default: @@ -3710,14 +3911,16 @@ dynamic sections here. */ static bfd_boolean -elf64_x86_64_finish_dynamic_symbol (bfd *output_bfd, - struct bfd_link_info *info, - struct elf_link_hash_entry *h, - Elf_Internal_Sym *sym) +elf_x86_64_finish_dynamic_symbol (bfd *output_bfd, + struct bfd_link_info *info, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym) { - struct elf64_x86_64_link_hash_table *htab; + struct elf_x86_64_link_hash_table *htab; - htab = elf64_x86_64_hash_table (info); + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; if (h->plt.offset != (bfd_vma) -1) { @@ -3726,6 +3929,7 @@ Elf_Internal_Rela rela; bfd_byte *loc; asection *plt, *gotplt, *relplt; + const struct elf_backend_data *bed; /* When building a static executable, use .iplt, .igot.plt and .rela.iplt sections for STT_GNU_IFUNC symbols. */ @@ -3757,7 +3961,7 @@ corresponds to this symbol. This is the index of this symbol in all the symbols for which we are making plt entries. The first entry in the procedure linkage table is reserved. - + Get the offset into the .got table of the entry that corresponds to this function. Each .got entry is GOT_ENTRY_SIZE bytes. The first three are reserved for the dynamic linker. @@ -3776,7 +3980,7 @@ } /* Fill in the entry in the procedure linkage table. */ - memcpy (plt->contents + h->plt.offset, elf64_x86_64_plt_entry, + memcpy (plt->contents + h->plt.offset, elf_x86_64_plt_entry, PLT_ENTRY_SIZE); /* Insert the relocation positions of the plt section. The magic @@ -3824,18 +4028,20 @@ { /* If an STT_GNU_IFUNC symbol is locally defined, generate R_X86_64_IRELATIVE instead of R_X86_64_JUMP_SLOT. */ - rela.r_info = ELF64_R_INFO (0, R_X86_64_IRELATIVE); + rela.r_info = htab->r_info (0, R_X86_64_IRELATIVE); rela.r_addend = (h->root.u.def.value + h->root.u.def.section->output_section->vma + h->root.u.def.section->output_offset); } else { - rela.r_info = ELF64_R_INFO (h->dynindx, R_X86_64_JUMP_SLOT); + rela.r_info = htab->r_info (h->dynindx, R_X86_64_JUMP_SLOT); rela.r_addend = 0; } - loc = relplt->contents + plt_index * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &rela, loc); + + bed = get_elf_backend_data (output_bfd); + loc = relplt->contents + plt_index * bed->s->sizeof_rela; + bed->s->swap_reloca_out (output_bfd, &rela, loc); if (!h->def_regular) { @@ -3854,11 +4060,10 @@ } if (h->got.offset != (bfd_vma) -1 - && ! GOT_TLS_GD_ANY_P (elf64_x86_64_hash_entry (h)->tls_type) - && elf64_x86_64_hash_entry (h)->tls_type != GOT_TLS_IE) + && ! GOT_TLS_GD_ANY_P (elf_x86_64_hash_entry (h)->tls_type) + && elf_x86_64_hash_entry (h)->tls_type != GOT_TLS_IE) { Elf_Internal_Rela rela; - bfd_byte *loc; /* This symbol has an entry in the global offset table. Set it up. */ @@ -3906,7 +4111,7 @@ if (!h->def_regular) return FALSE; BFD_ASSERT((h->got.offset & 1) != 0); - rela.r_info = ELF64_R_INFO (0, R_X86_64_RELATIVE); + rela.r_info = htab->r_info (0, R_X86_64_RELATIVE); rela.r_addend = (h->root.u.def.value + h->root.u.def.section->output_section->vma + h->root.u.def.section->output_offset); @@ -3917,19 +4122,16 @@ do_glob_dat: bfd_put_64 (output_bfd, (bfd_vma) 0, htab->elf.sgot->contents + h->got.offset); - rela.r_info = ELF64_R_INFO (h->dynindx, R_X86_64_GLOB_DAT); + rela.r_info = htab->r_info (h->dynindx, R_X86_64_GLOB_DAT); rela.r_addend = 0; } - loc = htab->elf.srelgot->contents; - loc += htab->elf.srelgot->reloc_count++ * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &rela, loc); + elf_append_rela (output_bfd, htab->elf.srelgot, &rela); } if (h->needs_copy) { Elf_Internal_Rela rela; - bfd_byte *loc; /* This symbol needs a copy reloc. Set it up. */ @@ -3942,11 +4144,9 @@ rela.r_offset = (h->root.u.def.value + h->root.u.def.section->output_section->vma + h->root.u.def.section->output_offset); - rela.r_info = ELF64_R_INFO (h->dynindx, R_X86_64_COPY); + rela.r_info = htab->r_info (h->dynindx, R_X86_64_COPY); rela.r_addend = 0; - loc = htab->srelbss->contents; - loc += htab->srelbss->reloc_count++ * sizeof (Elf64_External_Rela); - bfd_elf64_swap_reloca_out (output_bfd, &rela, loc); + elf_append_rela (output_bfd, htab->srelbss, &rela); } /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute. SYM may @@ -3963,14 +4163,14 @@ various dynamic sections here. */ static bfd_boolean -elf64_x86_64_finish_local_dynamic_symbol (void **slot, void *inf) +elf_x86_64_finish_local_dynamic_symbol (void **slot, void *inf) { struct elf_link_hash_entry *h = (struct elf_link_hash_entry *) *slot; struct bfd_link_info *info = (struct bfd_link_info *) inf; - return elf64_x86_64_finish_dynamic_symbol (info->output_bfd, + return elf_x86_64_finish_dynamic_symbol (info->output_bfd, info, h, NULL); } @@ -3978,9 +4178,9 @@ dynamic linker, before writing them out. */ static enum elf_reloc_type_class -elf64_x86_64_reloc_type_class (const Elf_Internal_Rela *rela) +elf_x86_64_reloc_type_class (const Elf_Internal_Rela *rela) { - switch ((int) ELF64_R_TYPE (rela->r_info)) + switch ((int) ELF32_R_TYPE (rela->r_info)) { case R_X86_64_RELATIVE: return reloc_class_relative; @@ -3996,31 +4196,39 @@ /* Finish up the dynamic sections. */ static bfd_boolean -elf64_x86_64_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info) +elf_x86_64_finish_dynamic_sections (bfd *output_bfd, + struct bfd_link_info *info) { - struct elf64_x86_64_link_hash_table *htab; + struct elf_x86_64_link_hash_table *htab; bfd *dynobj; asection *sdyn; - htab = elf64_x86_64_hash_table (info); + htab = elf_x86_64_hash_table (info); + if (htab == NULL) + return FALSE; + dynobj = htab->elf.dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); if (htab->elf.dynamic_sections_created) { - Elf64_External_Dyn *dyncon, *dynconend; + bfd_byte *dyncon, *dynconend; + const struct elf_backend_data *bed; + bfd_size_type sizeof_dyn; if (sdyn == NULL || htab->elf.sgot == NULL) abort (); - dyncon = (Elf64_External_Dyn *) sdyn->contents; - dynconend = (Elf64_External_Dyn *) (sdyn->contents + sdyn->size); - for (; dyncon < dynconend; dyncon++) + bed = get_elf_backend_data (dynobj); + sizeof_dyn = bed->s->sizeof_dyn; + dyncon = sdyn->contents; + dynconend = sdyn->contents + sdyn->size; + for (; dyncon < dynconend; dyncon += sizeof_dyn) { Elf_Internal_Dyn dyn; asection *s; - bfd_elf64_swap_dyn_in (dynobj, dyncon, &dyn); + (*bed->s->swap_dyn_in) (dynobj, dyncon, &dyn); switch (dyn.d_tag) { @@ -4069,14 +4277,14 @@ break; } - bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon); + (*bed->s->swap_dyn_out) (output_bfd, &dyn, dyncon); } /* Fill in the special first entry in the procedure linkage table. */ if (htab->elf.splt && htab->elf.splt->size > 0) { /* Fill in the first entry in the procedure linkage table. */ - memcpy (htab->elf.splt->contents, elf64_x86_64_plt0_entry, + memcpy (htab->elf.splt->contents, elf_x86_64_plt0_entry, PLT_ENTRY_SIZE); /* Add offset for pushq GOT+8(%rip), since the instruction uses 6 bytes subtract this value. */ @@ -4108,7 +4316,7 @@ htab->elf.sgot->contents + htab->tlsdesc_got); memcpy (htab->elf.splt->contents + htab->tlsdesc_plt, - elf64_x86_64_plt0_entry, + elf_x86_64_plt0_entry, PLT_ENTRY_SIZE); /* Add offset for pushq GOT+8(%rip), since the @@ -4140,6 +4348,13 @@ if (htab->elf.sgotplt) { + if (bfd_is_abs_section (htab->elf.sgotplt->output_section)) + { + (*_bfd_error_handler) + (_("discarded output section: `%A'"), htab->elf.sgotplt); + return FALSE; + } + /* Fill in the first three entries in the global offset table. */ if (htab->elf.sgotplt->size > 0) { @@ -4166,7 +4381,7 @@ /* Fill PLT and GOT entries for local STT_GNU_IFUNC symbols. */ htab_traverse (htab->loc_hash_table, - elf64_x86_64_finish_local_dynamic_symbol, + elf_x86_64_finish_local_dynamic_symbol, info); return TRUE; @@ -4176,8 +4391,8 @@ or (bfd_vma) -1 if it should not be included. */ static bfd_vma -elf64_x86_64_plt_sym_val (bfd_vma i, const asection *plt, - const arelent *rel ATTRIBUTE_UNUSED) +elf_x86_64_plt_sym_val (bfd_vma i, const asection *plt, + const arelent *rel ATTRIBUTE_UNUSED) { return plt->vma + (i + 1) * PLT_ENTRY_SIZE; } @@ -4186,7 +4401,7 @@ is called when elfcode.h finds a section with an unknown type. */ static bfd_boolean -elf64_x86_64_section_from_shdr (bfd *abfd, +elf_x86_64_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr, const char *name, int shindex) @@ -4205,13 +4420,13 @@ of .bss. */ static bfd_boolean -elf64_x86_64_add_symbol_hook (bfd *abfd, - struct bfd_link_info *info, - Elf_Internal_Sym *sym, - const char **namep ATTRIBUTE_UNUSED, - flagword *flagsp ATTRIBUTE_UNUSED, - asection **secp, - bfd_vma *valp) +elf_x86_64_add_symbol_hook (bfd *abfd, + struct bfd_link_info *info, + Elf_Internal_Sym *sym, + const char **namep ATTRIBUTE_UNUSED, + flagword *flagsp ATTRIBUTE_UNUSED, + asection **secp, + bfd_vma *valp) { asection *lcomm; @@ -4232,10 +4447,11 @@ } *secp = lcomm; *valp = sym->st_size; - break; + return TRUE; } - if (ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + if ((abfd->flags & DYNAMIC) == 0 + && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) elf_tdata (info->output_bfd)->has_ifunc_symbols = TRUE; return TRUE; @@ -4246,12 +4462,12 @@ index. */ static bfd_boolean -elf64_x86_64_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED, - asection *sec, int *index) +elf_x86_64_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED, + asection *sec, int *index_return) { if (sec == &_bfd_elf_large_com_section) { - *index = SHN_X86_64_LCOMMON; + *index_return = SHN_X86_64_LCOMMON; return TRUE; } return FALSE; @@ -4260,8 +4476,8 @@ /* Process a symbol. */ static void -elf64_x86_64_symbol_processing (bfd *abfd ATTRIBUTE_UNUSED, - asymbol *asym) +elf_x86_64_symbol_processing (bfd *abfd ATTRIBUTE_UNUSED, + asymbol *asym) { elf_symbol_type *elfsym = (elf_symbol_type *) asym; @@ -4277,14 +4493,14 @@ } static bfd_boolean -elf64_x86_64_common_definition (Elf_Internal_Sym *sym) +elf_x86_64_common_definition (Elf_Internal_Sym *sym) { return (sym->st_shndx == SHN_COMMON || sym->st_shndx == SHN_X86_64_LCOMMON); } static unsigned int -elf64_x86_64_common_section_index (asection *sec) +elf_x86_64_common_section_index (asection *sec) { if ((elf_section_flags (sec) & SHF_X86_64_LARGE) == 0) return SHN_COMMON; @@ -4293,7 +4509,7 @@ } static asection * -elf64_x86_64_common_section (asection *sec) +elf_x86_64_common_section (asection *sec) { if ((elf_section_flags (sec) & SHF_X86_64_LARGE) == 0) return bfd_com_section_ptr; @@ -4302,29 +4518,29 @@ } static bfd_boolean -elf64_x86_64_merge_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED, - struct elf_link_hash_entry **sym_hash ATTRIBUTE_UNUSED, - struct elf_link_hash_entry *h, - Elf_Internal_Sym *sym, - asection **psec, - bfd_vma *pvalue ATTRIBUTE_UNUSED, - unsigned int *pold_alignment ATTRIBUTE_UNUSED, - bfd_boolean *skip ATTRIBUTE_UNUSED, - bfd_boolean *override ATTRIBUTE_UNUSED, - bfd_boolean *type_change_ok ATTRIBUTE_UNUSED, - bfd_boolean *size_change_ok ATTRIBUTE_UNUSED, - bfd_boolean *newdef ATTRIBUTE_UNUSED, - bfd_boolean *newdyn, - bfd_boolean *newdyncommon ATTRIBUTE_UNUSED, - bfd_boolean *newweak ATTRIBUTE_UNUSED, - bfd *abfd ATTRIBUTE_UNUSED, - asection **sec, - bfd_boolean *olddef ATTRIBUTE_UNUSED, - bfd_boolean *olddyn, - bfd_boolean *olddyncommon ATTRIBUTE_UNUSED, - bfd_boolean *oldweak ATTRIBUTE_UNUSED, - bfd *oldbfd, - asection **oldsec) +elf_x86_64_merge_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED, + struct elf_link_hash_entry **sym_hash ATTRIBUTE_UNUSED, + struct elf_link_hash_entry *h, + Elf_Internal_Sym *sym, + asection **psec, + bfd_vma *pvalue ATTRIBUTE_UNUSED, + unsigned int *pold_alignment ATTRIBUTE_UNUSED, + bfd_boolean *skip ATTRIBUTE_UNUSED, + bfd_boolean *override ATTRIBUTE_UNUSED, + bfd_boolean *type_change_ok ATTRIBUTE_UNUSED, + bfd_boolean *size_change_ok ATTRIBUTE_UNUSED, + bfd_boolean *newdef ATTRIBUTE_UNUSED, + bfd_boolean *newdyn, + bfd_boolean *newdyncommon ATTRIBUTE_UNUSED, + bfd_boolean *newweak ATTRIBUTE_UNUSED, + bfd *abfd ATTRIBUTE_UNUSED, + asection **sec, + bfd_boolean *olddef ATTRIBUTE_UNUSED, + bfd_boolean *olddyn, + bfd_boolean *olddyncommon ATTRIBUTE_UNUSED, + bfd_boolean *oldweak ATTRIBUTE_UNUSED, + bfd *oldbfd, + asection **oldsec) { /* A normal common symbol and a large common symbol result in a normal common symbol. We turn the large common symbol into a @@ -4351,8 +4567,8 @@ } static int -elf64_x86_64_additional_program_headers (bfd *abfd, - struct bfd_link_info *info ATTRIBUTE_UNUSED) +elf_x86_64_additional_program_headers (bfd *abfd, + struct bfd_link_info *info ATTRIBUTE_UNUSED) { asection *s; int count = 0; @@ -4375,7 +4591,7 @@ /* Return TRUE if symbol should be hashed in the `.gnu.hash' section. */ static bfd_boolean -elf64_x86_64_hash_symbol (struct elf_link_hash_entry *h) +elf_x86_64_hash_symbol (struct elf_link_hash_entry *h) { if (h->plt.offset != (bfd_vma) -1 && !h->def_regular @@ -4385,8 +4601,19 @@ return _bfd_elf_hash_symbol (h); } +/* Return TRUE iff relocations for INPUT are compatible with OUTPUT. */ + +static bfd_boolean +elf_x86_64_relocs_compatible (const bfd_target *input, + const bfd_target *output) +{ + return ((xvec_get_elf_backend_data (input)->s->elfclass + == xvec_get_elf_backend_data (output)->s->elfclass) + && _bfd_elf_relocs_compatible (input, output)); +} + static const struct bfd_elf_special_section - elf64_x86_64_special_sections[]= + elf_x86_64_special_sections[]= { { STRING_COMMA_LEN (".gnu.linkonce.lb"), -2, SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_X86_64_LARGE}, { STRING_COMMA_LEN (".gnu.linkonce.lr"), -2, SHT_PROGBITS, SHF_ALLOC + SHF_X86_64_LARGE}, @@ -4400,6 +4627,7 @@ #define TARGET_LITTLE_SYM bfd_elf64_x86_64_vec #define TARGET_LITTLE_NAME "elf64-x86-64" #define ELF_ARCH bfd_arch_i386 +#define ELF_TARGET_ID X86_64_ELF_DATA #define ELF_MACHINE_CODE EM_X86_64 #define ELF_MAXPAGESIZE 0x200000 #define ELF_MINPAGESIZE 0x1000 @@ -4413,59 +4641,59 @@ #define elf_backend_got_header_size (GOT_ENTRY_SIZE*3) #define elf_backend_rela_normal 1 -#define elf_info_to_howto elf64_x86_64_info_to_howto +#define elf_info_to_howto elf_x86_64_info_to_howto #define bfd_elf64_bfd_link_hash_table_create \ - elf64_x86_64_link_hash_table_create + elf_x86_64_link_hash_table_create #define bfd_elf64_bfd_link_hash_table_free \ - elf64_x86_64_link_hash_table_free -#define bfd_elf64_bfd_reloc_type_lookup elf64_x86_64_reloc_type_lookup + elf_x86_64_link_hash_table_free +#define bfd_elf64_bfd_reloc_type_lookup elf_x86_64_reloc_type_lookup #define bfd_elf64_bfd_reloc_name_lookup \ - elf64_x86_64_reloc_name_lookup + elf_x86_64_reloc_name_lookup -#define elf_backend_adjust_dynamic_symbol elf64_x86_64_adjust_dynamic_symbol -#define elf_backend_relocs_compatible _bfd_elf_relocs_compatible -#define elf_backend_check_relocs elf64_x86_64_check_relocs -#define elf_backend_copy_indirect_symbol elf64_x86_64_copy_indirect_symbol -#define elf_backend_create_dynamic_sections elf64_x86_64_create_dynamic_sections -#define elf_backend_finish_dynamic_sections elf64_x86_64_finish_dynamic_sections -#define elf_backend_finish_dynamic_symbol elf64_x86_64_finish_dynamic_symbol -#define elf_backend_gc_mark_hook elf64_x86_64_gc_mark_hook -#define elf_backend_gc_sweep_hook elf64_x86_64_gc_sweep_hook -#define elf_backend_grok_prstatus elf64_x86_64_grok_prstatus -#define elf_backend_grok_psinfo elf64_x86_64_grok_psinfo -#define elf_backend_reloc_type_class elf64_x86_64_reloc_type_class -#define elf_backend_relocate_section elf64_x86_64_relocate_section -#define elf_backend_size_dynamic_sections elf64_x86_64_size_dynamic_sections -#define elf_backend_always_size_sections elf64_x86_64_always_size_sections +#define elf_backend_adjust_dynamic_symbol elf_x86_64_adjust_dynamic_symbol +#define elf_backend_relocs_compatible elf_x86_64_relocs_compatible +#define elf_backend_check_relocs elf_x86_64_check_relocs +#define elf_backend_copy_indirect_symbol elf_x86_64_copy_indirect_symbol +#define elf_backend_create_dynamic_sections elf_x86_64_create_dynamic_sections +#define elf_backend_finish_dynamic_sections elf_x86_64_finish_dynamic_sections +#define elf_backend_finish_dynamic_symbol elf_x86_64_finish_dynamic_symbol +#define elf_backend_gc_mark_hook elf_x86_64_gc_mark_hook +#define elf_backend_gc_sweep_hook elf_x86_64_gc_sweep_hook +#define elf_backend_grok_prstatus elf_x86_64_grok_prstatus +#define elf_backend_grok_psinfo elf_x86_64_grok_psinfo +#define elf_backend_reloc_type_class elf_x86_64_reloc_type_class +#define elf_backend_relocate_section elf_x86_64_relocate_section +#define elf_backend_size_dynamic_sections elf_x86_64_size_dynamic_sections +#define elf_backend_always_size_sections elf_x86_64_always_size_sections #define elf_backend_init_index_section _bfd_elf_init_1_index_section -#define elf_backend_plt_sym_val elf64_x86_64_plt_sym_val +#define elf_backend_plt_sym_val elf_x86_64_plt_sym_val #define elf_backend_object_p elf64_x86_64_elf_object_p -#define bfd_elf64_mkobject elf64_x86_64_mkobject +#define bfd_elf64_mkobject elf_x86_64_mkobject #define elf_backend_section_from_shdr \ - elf64_x86_64_section_from_shdr + elf_x86_64_section_from_shdr #define elf_backend_section_from_bfd_section \ - elf64_x86_64_elf_section_from_bfd_section + elf_x86_64_elf_section_from_bfd_section #define elf_backend_add_symbol_hook \ - elf64_x86_64_add_symbol_hook + elf_x86_64_add_symbol_hook #define elf_backend_symbol_processing \ - elf64_x86_64_symbol_processing + elf_x86_64_symbol_processing #define elf_backend_common_section_index \ - elf64_x86_64_common_section_index + elf_x86_64_common_section_index #define elf_backend_common_section \ - elf64_x86_64_common_section + elf_x86_64_common_section #define elf_backend_common_definition \ - elf64_x86_64_common_definition + elf_x86_64_common_definition #define elf_backend_merge_symbol \ - elf64_x86_64_merge_symbol + elf_x86_64_merge_symbol #define elf_backend_special_sections \ - elf64_x86_64_special_sections + elf_x86_64_special_sections #define elf_backend_additional_program_headers \ - elf64_x86_64_additional_program_headers + elf_x86_64_additional_program_headers #define elf_backend_hash_symbol \ - elf64_x86_64_hash_symbol + elf_x86_64_hash_symbol #undef elf_backend_post_process_headers #define elf_backend_post_process_headers _bfd_elf_set_osabi @@ -4487,6 +4715,34 @@ #include "elf64-target.h" +/* Solaris 2 support. */ + +#undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM bfd_elf64_x86_64_sol2_vec +#undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf64-x86-64-sol2" + +/* Restore default: we cannot use ELFOSABI_SOLARIS, otherwise ELFOSABI_NONE + objects won't be recognized. */ +#undef ELF_OSABI + +#undef elf64_bed +#define elf64_bed elf64_x86_64_sol2_bed + +/* The 64-bit static TLS arena size is rounded to the nearest 16-byte + boundary. */ +#undef elf_backend_static_tls_alignment +#define elf_backend_static_tls_alignment 16 + +/* The Solaris 2 ABI requires a plt symbol on all platforms. + + Cf. Linker and Libraries Guide, Ch. 2, Link-Editor, Generating the Output + File, p.63. */ +#undef elf_backend_want_plt_sym +#define elf_backend_want_plt_sym 1 + +#include "elf64-target.h" + /* Intel L1OM support. */ static bfd_boolean @@ -4516,6 +4772,10 @@ #define elf_backend_object_p elf64_l1om_elf_object_p #undef elf_backend_post_process_headers +#undef elf_backend_static_tls_alignment + +#undef elf_backend_want_plt_sym +#define elf_backend_want_plt_sym 0 #include "elf64-target.h" @@ -4536,3 +4796,53 @@ #define elf_backend_post_process_headers _bfd_elf_set_osabi #include "elf64-target.h" + +/* 32bit x86-64 support. */ + +static bfd_boolean +elf32_x86_64_elf_object_p (bfd *abfd) +{ + /* Set the right machine number for an x86-64 elf32 file. */ + bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_x64_32); + return TRUE; +} + +#undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM bfd_elf32_x86_64_vec +#undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf32-x86-64" + +#undef ELF_ARCH +#define ELF_ARCH bfd_arch_i386 + +#undef ELF_MACHINE_CODE +#define ELF_MACHINE_CODE EM_X86_64 + +#define bfd_elf32_bfd_link_hash_table_create \ + elf_x86_64_link_hash_table_create +#define bfd_elf32_bfd_link_hash_table_free \ + elf_x86_64_link_hash_table_free +#define bfd_elf32_bfd_reloc_type_lookup \ + elf_x86_64_reloc_type_lookup +#define bfd_elf32_bfd_reloc_name_lookup \ + elf_x86_64_reloc_name_lookup +#define bfd_elf32_mkobject \ + elf_x86_64_mkobject + +#undef ELF_OSABI + +#undef elf_backend_post_process_headers + +#undef elf_backend_object_p +#define elf_backend_object_p \ + elf32_x86_64_elf_object_p + +#undef elf_backend_bfd_from_remote_memory +#define elf_backend_bfd_from_remote_memory \ + _bfd_elf32_bfd_from_remote_memory + +#undef elf_backend_size_info +#define elf_backend_size_info \ + _bfd_elf32_size_info + +#include "elf32-target.h" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elfcode.h crash-6.1.6/=unpacked-tar1=/bfd/elfcode.h --- crash-5.1.6/=unpacked-tar1=/bfd/elfcode.h 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elfcode.h 2011-03-14 15:54:58.000000000 +0000 @@ -1,6 +1,6 @@ /* ELF executable support for BFD. Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Fred Fish @ Cygnus Support, from information published @@ -87,6 +87,7 @@ #define elf_core_file_failing_signal NAME(bfd_elf,core_file_failing_signal) #define elf_core_file_matches_executable_p \ NAME(bfd_elf,core_file_matches_executable_p) +#define elf_core_file_pid NAME(bfd_elf,core_file_pid) #define elf_object_p NAME(bfd_elf,object_p) #define elf_core_file_p NAME(bfd_elf,core_file_p) #define elf_get_symtab_upper_bound NAME(bfd_elf,get_symtab_upper_bound) @@ -197,6 +198,7 @@ } else if (dst->st_shndx >= (SHN_LORESERVE & 0xffff)) dst->st_shndx += SHN_LORESERVE - (SHN_LORESERVE & 0xffff); + dst->st_target_internal = 0; return TRUE; } @@ -279,7 +281,10 @@ H_PUT_32 (abfd, src->e_flags, dst->e_flags); H_PUT_16 (abfd, src->e_ehsize, dst->e_ehsize); H_PUT_16 (abfd, src->e_phentsize, dst->e_phentsize); - H_PUT_16 (abfd, src->e_phnum, dst->e_phnum); + tmp = src->e_phnum; + if (tmp > PN_XNUM) + tmp = PN_XNUM; + H_PUT_16 (abfd, tmp, dst->e_phnum); H_PUT_16 (abfd, src->e_shentsize, dst->e_shentsize); tmp = src->e_shnum; if (tmp >= (SHN_LORESERVE & 0xffff)) @@ -701,6 +706,14 @@ goto got_wrong_format_error; } + /* And program headers. */ + if (i_ehdrp->e_phnum == PN_XNUM && i_shdr.sh_info != 0) + { + i_ehdrp->e_phnum = i_shdr.sh_info; + if (i_ehdrp->e_phnum != i_shdr.sh_info) + goto got_wrong_format_error; + } + /* Sanity check that we can read all of the section headers. It ought to be good enough to just read the last one. */ if (i_ehdrp->e_shnum != 1) @@ -761,10 +774,13 @@ /* Sanity check sh_link and sh_info. */ if (i_shdrp[shindex].sh_link >= num_sec) { - /* PR 10478: Accept sparc binaries with a sh_link + /* PR 10478: Accept Solaris binaries with a sh_link field set to SHN_BEFORE or SHN_AFTER. */ switch (ebd->elf_machine_code) { + case EM_386: + case EM_486: + case EM_X86_64: case EM_OLD_SPARCV9: case EM_SPARC32PLUS: case EM_SPARCV9: @@ -944,7 +960,9 @@ if (sec->orelocation == NULL) return; - rela_hdr = &elf_section_data (sec)->rel_hdr; + rela_hdr = elf_section_data (sec)->rela.hdr; + if (rela_hdr == NULL) + rela_hdr = elf_section_data (sec)->rel.hdr; rela_hdr->sh_size = rela_hdr->sh_entsize * sec->reloc_count; rela_hdr->contents = (unsigned char *) bfd_alloc (abfd, rela_hdr->sh_size); @@ -1069,6 +1087,8 @@ /* Some fields in the first section header handle overflow of ehdr fields. */ + if (i_ehdrp->e_phnum >= PN_XNUM) + i_shdrp[0]->sh_info = i_ehdrp->e_phnum; if (i_ehdrp->e_shnum >= (SHN_LORESERVE & 0xffff)) i_shdrp[0]->sh_size = i_ehdrp->e_shnum; if (i_ehdrp->e_shstrndx >= (SHN_LORESERVE & 0xffff)) @@ -1449,7 +1469,7 @@ else relent->address = rela.r_offset - asect->vma; - if (ELF_R_SYM (rela.r_info) == 0) + if (ELF_R_SYM (rela.r_info) == STN_UNDEF) relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; else if (ELF_R_SYM (rela.r_info) > symcount) { @@ -1513,13 +1533,13 @@ || asect->reloc_count == 0) return TRUE; - rel_hdr = &d->rel_hdr; - reloc_count = NUM_SHDR_ENTRIES (rel_hdr); - rel_hdr2 = d->rel_hdr2; - reloc_count2 = (rel_hdr2 ? NUM_SHDR_ENTRIES (rel_hdr2) : 0); + rel_hdr = d->rel.hdr; + reloc_count = rel_hdr ? NUM_SHDR_ENTRIES (rel_hdr) : 0; + rel_hdr2 = d->rela.hdr; + reloc_count2 = rel_hdr2 ? NUM_SHDR_ENTRIES (rel_hdr2) : 0; BFD_ASSERT (asect->reloc_count == reloc_count + reloc_count2); - BFD_ASSERT (asect->rel_filepos == rel_hdr->sh_offset + BFD_ASSERT ((rel_hdr && asect->rel_filepos == rel_hdr->sh_offset) || (rel_hdr2 && asect->rel_filepos == rel_hdr2->sh_offset)); } @@ -1543,10 +1563,11 @@ if (relents == NULL) return FALSE; - if (!elf_slurp_reloc_table_from_section (abfd, asect, - rel_hdr, reloc_count, - relents, - symbols, dynamic)) + if (rel_hdr + && !elf_slurp_reloc_table_from_section (abfd, asect, + rel_hdr, reloc_count, + relents, + symbols, dynamic)) return FALSE; if (rel_hdr2 @@ -1825,6 +1846,8 @@ bim->buffer = contents; nbfd->iostream = bim; nbfd->flags = BFD_IN_MEMORY; + nbfd->iovec = &_bfd_memory_iovec; + nbfd->origin = 0; nbfd->direction = read_direction; nbfd->mtime = time (NULL); nbfd->mtime_set = TRUE; @@ -1833,6 +1856,22 @@ *loadbasep = loadbase; return nbfd; } + +/* Function for ELF_R_INFO. */ + +bfd_vma +NAME(elf,r_info) (bfd_vma sym, bfd_vma type) +{ + return ELF_R_INFO (sym, type); +} + +/* Function for ELF_R_SYM. */ + +bfd_vma +NAME(elf,r_sym) (bfd_vma r_info) +{ + return ELF_R_SYM (r_info); +} #include "elfcore.h" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elfcore.h crash-6.1.6/=unpacked-tar1=/bfd/elfcore.h --- crash-5.1.6/=unpacked-tar1=/bfd/elfcore.h 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elfcore.h 2010-08-18 12:24:07.000000000 +0000 @@ -1,6 +1,6 @@ /* ELF core file support for BFD. Copyright 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2007, - 2008 Free Software Foundation, Inc. + 2008, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -31,6 +31,12 @@ return elf_tdata (abfd)->core_signal; } +int +elf_core_file_pid (bfd *abfd) +{ + return elf_tdata (abfd)->core_pid; +} + bfd_boolean elf_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd) { @@ -184,6 +190,61 @@ if (i_ehdrp->e_phentsize != sizeof (Elf_External_Phdr)) goto wrong; + /* If the program header count is PN_XNUM(0xffff), the actual + count is in the first section header. */ + if (i_ehdrp->e_shoff != 0 && i_ehdrp->e_phnum == PN_XNUM) + { + Elf_External_Shdr x_shdr; + Elf_Internal_Shdr i_shdr; + bfd_signed_vma where = i_ehdrp->e_shoff; + + if (where != (file_ptr) where) + goto wrong; + + /* Seek to the section header table in the file. */ + if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0) + goto fail; + + /* Read the first section header at index 0, and convert to internal + form. */ + if (bfd_bread (&x_shdr, sizeof (x_shdr), abfd) != sizeof (x_shdr)) + goto fail; + elf_swap_shdr_in (abfd, &x_shdr, &i_shdr); + + if (i_shdr.sh_info != 0) + { + i_ehdrp->e_phnum = i_shdr.sh_info; + if (i_ehdrp->e_phnum != i_shdr.sh_info) + goto wrong; + } + } + + /* Sanity check that we can read all of the program headers. + It ought to be good enough to just read the last one. */ + if (i_ehdrp->e_phnum > 1) + { + Elf_External_Phdr x_phdr; + Elf_Internal_Phdr i_phdr; + bfd_signed_vma where; + + /* Check that we don't have a totally silly number of + program headers. */ + if (i_ehdrp->e_phnum > (unsigned int) -1 / sizeof (x_phdr) + || i_ehdrp->e_phnum > (unsigned int) -1 / sizeof (i_phdr)) + goto wrong; + + where = i_ehdrp->e_phoff + (i_ehdrp->e_phnum - 1) * sizeof (x_phdr); + if (where != (file_ptr) where) + goto wrong; + if ((bfd_size_type) where <= i_ehdrp->e_phoff) + goto wrong; + + if (bfd_seek (abfd, (file_ptr) where, SEEK_SET) != 0) + goto fail; + if (bfd_bread (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr)) + goto fail; + } + /* Move to the start of the program headers. */ if (bfd_seek (abfd, (file_ptr) i_ehdrp->e_phoff, SEEK_SET) != 0) goto wrong; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elflink.c crash-6.1.6/=unpacked-tar1=/bfd/elflink.c --- crash-5.1.6/=unpacked-tar1=/bfd/elflink.c 2009-09-09 21:38:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elflink.c 2011-03-14 15:54:58.000000000 +0000 @@ -1,6 +1,6 @@ /* ELF linking support for BFD. Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009 + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -86,6 +86,7 @@ return NULL; h = (struct elf_link_hash_entry *) bh; h->def_regular = 1; + h->non_elf = 0; h->type = STT_OBJECT; h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN; @@ -185,7 +186,7 @@ _bfd_elf_link_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) { flagword flags; - register asection *s; + asection *s; const struct elf_backend_data *bed; if (! is_elf_hash_table (info->hash)) @@ -570,8 +571,7 @@ if (provide && hidden) { - const struct elf_backend_data *bed = get_elf_backend_data (output_bfd); - + bed = get_elf_backend_data (output_bfd); h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN; (*bed->elf_backend_hide_symbol) (info, h, TRUE); } @@ -1014,6 +1014,11 @@ break; } + /* Differentiate strong and weak symbols. */ + newweak = bind == STB_WEAK; + oldweak = (h->root.type == bfd_link_hash_defweak + || h->root.type == bfd_link_hash_undefweak); + /* In cases involving weak versioned symbols, we may wind up trying to merge a symbol with itself. Catch that here, to avoid the confusion that results if we try to override a symbol with @@ -1021,6 +1026,7 @@ _GLOBAL_OFFSET_TABLE_, which are regular symbols defined in a dynamic object, which we do want to handle here. */ if (abfd == oldbfd + && (newweak || oldweak) && ((abfd->flags & DYNAMIC) == 0 || !h->def_regular)) return TRUE; @@ -1184,9 +1190,8 @@ was referenced before. */ if (h->ref_regular) { - const struct elf_backend_data *bed - = get_elf_backend_data (abfd); struct elf_link_hash_entry *vh = *sym_hash; + vh->root.type = h->root.type; h->root.type = bfd_link_hash_indirect; (*bed->elf_backend_copy_indirect_symbol) (info, vh, h); @@ -1243,11 +1248,6 @@ return TRUE; } - /* Differentiate strong and weak symbols. */ - newweak = bind == STB_WEAK; - oldweak = (h->root.type == bfd_link_hash_defweak - || h->root.type == bfd_link_hash_undefweak); - if (bind == STB_GNU_UNIQUE) h->unique_global = 1; @@ -1548,7 +1548,6 @@ /* Handle the case where we had a versioned symbol in a dynamic library and now find a definition in a normal object. In this case, we make the versioned symbol point to the normal one. */ - const struct elf_backend_data *bed = get_elf_backend_data (abfd); flip->root.type = h->root.type; flip->root.u.undef.abfd = h->root.u.undef.abfd; h->root.type = bfd_link_hash_indirect; @@ -1718,7 +1717,7 @@ { if (! dynamic) { - if (info->shared + if (! info->executable || hi->ref_dynamic) *dynsym = TRUE; } @@ -1787,7 +1786,7 @@ { if (! dynamic) { - if (info->shared + if (! info->executable || hi->ref_dynamic) *dynsym = TRUE; } @@ -2172,7 +2171,7 @@ return FALSE; } } - else if (r_symndx != 0) + else if (r_symndx != STN_UNDEF) { (*_bfd_error_handler) (_("%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A'" @@ -2197,7 +2196,7 @@ according to the KEEP_MEMORY argument. If O has two relocation sections (both REL and RELA relocations), then the REL_HDR relocations will appear first in INTERNAL_RELOCS, followed by the - REL_HDR2 relocations. */ + RELA_HDR relocations. */ Elf_Internal_Rela * _bfd_elf_link_read_relocs (bfd *abfd, @@ -2206,19 +2205,18 @@ Elf_Internal_Rela *internal_relocs, bfd_boolean keep_memory) { - Elf_Internal_Shdr *rel_hdr; void *alloc1 = NULL; Elf_Internal_Rela *alloc2 = NULL; const struct elf_backend_data *bed = get_elf_backend_data (abfd); + struct bfd_elf_section_data *esdo = elf_section_data (o); + Elf_Internal_Rela *internal_rela_relocs; - if (elf_section_data (o)->relocs != NULL) - return elf_section_data (o)->relocs; + if (esdo->relocs != NULL) + return esdo->relocs; if (o->reloc_count == 0) return NULL; - rel_hdr = &elf_section_data (o)->rel_hdr; - if (internal_relocs == NULL) { bfd_size_type size; @@ -2235,32 +2233,41 @@ if (external_relocs == NULL) { - bfd_size_type size = rel_hdr->sh_size; + bfd_size_type size = 0; + + if (esdo->rel.hdr) + size += esdo->rel.hdr->sh_size; + if (esdo->rela.hdr) + size += esdo->rela.hdr->sh_size; - if (elf_section_data (o)->rel_hdr2) - size += elf_section_data (o)->rel_hdr2->sh_size; alloc1 = bfd_malloc (size); if (alloc1 == NULL) goto error_return; external_relocs = alloc1; } - if (!elf_link_read_relocs_from_section (abfd, o, rel_hdr, - external_relocs, - internal_relocs)) - goto error_return; - if (elf_section_data (o)->rel_hdr2 - && (!elf_link_read_relocs_from_section - (abfd, o, - elf_section_data (o)->rel_hdr2, - ((bfd_byte *) external_relocs) + rel_hdr->sh_size, - internal_relocs + (NUM_SHDR_ENTRIES (rel_hdr) - * bed->s->int_rels_per_ext_rel)))) + internal_rela_relocs = internal_relocs; + if (esdo->rel.hdr) + { + if (!elf_link_read_relocs_from_section (abfd, o, esdo->rel.hdr, + external_relocs, + internal_relocs)) + goto error_return; + external_relocs = (((bfd_byte *) external_relocs) + + esdo->rel.hdr->sh_size); + internal_rela_relocs += (NUM_SHDR_ENTRIES (esdo->rel.hdr) + * bed->s->int_rels_per_ext_rel); + } + + if (esdo->rela.hdr + && (!elf_link_read_relocs_from_section (abfd, o, esdo->rela.hdr, + external_relocs, + internal_rela_relocs))) goto error_return; /* Cache the results for next time, if we can. */ if (keep_memory) - elf_section_data (o)->relocs = internal_relocs; + esdo->relocs = internal_relocs; if (alloc1 != NULL) free (alloc1); @@ -2288,24 +2295,12 @@ static bfd_boolean _bfd_elf_link_size_reloc_section (bfd *abfd, - Elf_Internal_Shdr *rel_hdr, - asection *o) + struct bfd_elf_section_reloc_data *reldata) { - bfd_size_type reloc_count; - bfd_size_type num_rel_hashes; - - /* Figure out how many relocations there will be. */ - if (rel_hdr == &elf_section_data (o)->rel_hdr) - reloc_count = elf_section_data (o)->rel_count; - else - reloc_count = elf_section_data (o)->rel_count2; - - num_rel_hashes = o->reloc_count; - if (num_rel_hashes < reloc_count) - num_rel_hashes = reloc_count; + Elf_Internal_Shdr *rel_hdr = reldata->hdr; /* That allows us to calculate the size of the section. */ - rel_hdr->sh_size = rel_hdr->sh_entsize * reloc_count; + rel_hdr->sh_size = rel_hdr->sh_entsize * reldata->count; /* The contents field must last into write_object_contents, so we allocate it with bfd_alloc rather than malloc. Also since we @@ -2315,19 +2310,16 @@ if (rel_hdr->contents == NULL && rel_hdr->sh_size != 0) return FALSE; - /* We only allocate one set of hash entries, so we only do it the - first time we are called. */ - if (elf_section_data (o)->rel_hashes == NULL - && num_rel_hashes) + if (reldata->hashes == NULL && reldata->count) { struct elf_link_hash_entry **p; p = (struct elf_link_hash_entry **) - bfd_zmalloc (num_rel_hashes * sizeof (struct elf_link_hash_entry *)); + bfd_zmalloc (reldata->count * sizeof (struct elf_link_hash_entry *)); if (p == NULL) return FALSE; - elf_section_data (o)->rel_hashes = p; + reldata->hashes = p; } return TRUE; @@ -2348,27 +2340,26 @@ Elf_Internal_Rela *irela; Elf_Internal_Rela *irelaend; bfd_byte *erel; - Elf_Internal_Shdr *output_rel_hdr; + struct bfd_elf_section_reloc_data *output_reldata; asection *output_section; - unsigned int *rel_countp = NULL; const struct elf_backend_data *bed; void (*swap_out) (bfd *, const Elf_Internal_Rela *, bfd_byte *); + struct bfd_elf_section_data *esdo; output_section = input_section->output_section; - output_rel_hdr = NULL; - if (elf_section_data (output_section)->rel_hdr.sh_entsize - == input_rel_hdr->sh_entsize) + bed = get_elf_backend_data (output_bfd); + esdo = elf_section_data (output_section); + if (esdo->rel.hdr && esdo->rel.hdr->sh_entsize == input_rel_hdr->sh_entsize) { - output_rel_hdr = &elf_section_data (output_section)->rel_hdr; - rel_countp = &elf_section_data (output_section)->rel_count; + output_reldata = &esdo->rel; + swap_out = bed->s->swap_reloc_out; } - else if (elf_section_data (output_section)->rel_hdr2 - && (elf_section_data (output_section)->rel_hdr2->sh_entsize - == input_rel_hdr->sh_entsize)) + else if (esdo->rela.hdr + && esdo->rela.hdr->sh_entsize == input_rel_hdr->sh_entsize) { - output_rel_hdr = elf_section_data (output_section)->rel_hdr2; - rel_countp = &elf_section_data (output_section)->rel_count2; + output_reldata = &esdo->rela; + swap_out = bed->s->swap_reloca_out; } else { @@ -2379,16 +2370,8 @@ return FALSE; } - bed = get_elf_backend_data (output_bfd); - if (input_rel_hdr->sh_entsize == bed->s->sizeof_rel) - swap_out = bed->s->swap_reloc_out; - else if (input_rel_hdr->sh_entsize == bed->s->sizeof_rela) - swap_out = bed->s->swap_reloca_out; - else - abort (); - - erel = output_rel_hdr->contents; - erel += *rel_countp * input_rel_hdr->sh_entsize; + erel = output_reldata->hdr->contents; + erel += output_reldata->count * input_rel_hdr->sh_entsize; irela = internal_relocs; irelaend = irela + (NUM_SHDR_ENTRIES (input_rel_hdr) * bed->s->int_rels_per_ext_rel); @@ -2401,7 +2384,7 @@ /* Bump the counter, so that we know where to add the next set of relocations. */ - *rel_countp += NUM_SHDR_ENTRIES (input_rel_hdr); + output_reldata->count += NUM_SHDR_ENTRIES (input_rel_hdr); return TRUE; } @@ -2772,7 +2755,7 @@ bfd_boolean _bfd_elf_dynamic_symbol_p (struct elf_link_hash_entry *h, struct bfd_link_info *info, - bfd_boolean ignore_protected) + bfd_boolean not_local_protected) { bfd_boolean binding_stays_local_p; const struct elf_backend_data *bed; @@ -2811,7 +2794,7 @@ /* Proper resolution for function pointer equality may require that these symbols perhaps be resolved dynamically, even though we should be resolving them to the current module. */ - if (!ignore_protected || !bed->is_function_type (h->type)) + if (!not_local_protected || !bed->is_function_type (h->type)) binding_stays_local_p = TRUE; break; @@ -2820,7 +2803,7 @@ } /* If it isn't defined locally, then clearly it's dynamic. */ - if (!h->def_regular) + if (!h->def_regular && !ELF_COMMON_DEF_P (h)) return TRUE; /* Otherwise, the symbol is dynamic if binding rules don't tell @@ -2831,7 +2814,15 @@ /* Return true if the symbol referred to by H should be considered to resolve local to the current module, and false otherwise. Differs from (the inverse of) _bfd_elf_dynamic_symbol_p in the treatment of - undefined symbols and weak symbols. */ + undefined symbols. The two functions are virtually identical except + for the place where forced_local and dynindx == -1 are tested. If + either of those tests are true, _bfd_elf_dynamic_symbol_p will say + the symbol is local, while _bfd_elf_symbol_refs_local_p will say + the symbol is local only for defined symbols. + It might seem that _bfd_elf_dynamic_symbol_p could be rewritten as + !_bfd_elf_symbol_refs_local_p, except that targets differ in their + treatment of undefined weak symbols. For those that do not make + undefined weak symbols dynamic, both functions may return false. */ bfd_boolean _bfd_elf_symbol_refs_local_p (struct elf_link_hash_entry *h, @@ -3234,6 +3225,8 @@ case DT_RUNPATH: case DT_FILTER: case DT_AUXILIARY: + case DT_AUDIT: + case DT_DEPAUDIT: dyn.d_un.d_val = _bfd_elf_strtab_offset (dynstr, dyn.d_un.d_val); break; default: @@ -3525,6 +3518,7 @@ { asection *s; const char *soname = NULL; + char *audit = NULL; struct bfd_link_needed_list *rpath = NULL, *runpath = NULL; int ret; @@ -3653,6 +3647,11 @@ ; *pn = n; } + if (dyn.d_tag == DT_AUDIT) + { + unsigned int tagv = dyn.d_un.d_val; + audit = bfd_elf_string_from_elf_section (abfd, shlink, tagv); + } } free (dynbuf); @@ -3705,6 +3704,9 @@ particular dynamic object more than once. */ if (ret > 0) return TRUE; + + /* Save the DT_AUDIT entry for the linker emulation code. */ + elf_dt_audit (abfd) = audit; } /* If this is a dynamic object, we always link against the .dynsym @@ -3866,6 +3868,7 @@ bfd_boolean common; unsigned int old_alignment; bfd *old_bfd; + bfd * undef_bfd = NULL; override = FALSE; @@ -3990,6 +3993,20 @@ unsigned int vernum = 0; bfd_boolean skip; + /* If this is a definition of a symbol which was previously + referenced in a non-weak manner then make a note of the bfd + that contained the reference. This is used if we need to + refer to the source of the reference later on. */ + if (! bfd_is_und_section (sec)) + { + h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE); + + if (h != NULL + && h->root.type == bfd_link_hash_undefined + && h->root.u.undef.abfd) + undef_bfd = h->root.u.undef.abfd; + } + if (ever == NULL) { if (info->default_imported_symver) @@ -4097,6 +4114,19 @@ name = newname; } + /* If necessary, make a second attempt to locate the bfd + containing an unresolved, non-weak reference to the + current symbol. */ + if (! bfd_is_und_section (sec) && undef_bfd == NULL) + { + h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE); + + if (h != NULL + && h->root.type == bfd_link_hash_undefined + && h->root.u.undef.abfd) + undef_bfd = h->root.u.undef.abfd; + } + if (!_bfd_elf_merge_symbol (abfd, info, name, isym, &sec, &value, &old_alignment, sym_hash, &skip, &override, @@ -4154,7 +4184,8 @@ h = (struct elf_link_hash_entry *) h->root.u.i.link; *sym_hash = h; - h->unique_global = (flags & BSF_GNU_UNIQUE) != 0; + if (is_elf_hash_table (htab)) + h->unique_global = (flags & BSF_GNU_UNIQUE) != 0; new_weakdef = FALSE; if (dynamic @@ -4362,10 +4393,12 @@ if (definition && (sec->flags & SEC_DEBUGGING) && !info->relocatable) { /* We don't want to make debug symbol dynamic. */ - (*bed->elf_backend_hide_symbol) (info, h, TRUE); dynsym = FALSE; } + if (definition) + h->target_internal = isym->st_target_internal; + /* Check to see if we need to add an indirect symbol for the default name. */ if (definition || h->root.type == bfd_link_hash_common) @@ -4433,13 +4466,18 @@ /* A symbol from a library loaded via DT_NEEDED of some other library is referenced by a regular object. Add a DT_NEEDED entry for it. Issue an error if - --no-add-needed is used. */ - if ((elf_dyn_lib_class (abfd) & DYN_NO_NEEDED) != 0) + --no-add-needed is used and the reference was not + a weak one. */ + if (undef_bfd != NULL + && (elf_dyn_lib_class (abfd) & DYN_NO_NEEDED) != 0) { (*_bfd_error_handler) - (_("%s: invalid DSO for symbol `%s' definition"), + (_("%B: undefined reference to symbol '%s'"), + undef_bfd, name); + (*_bfd_error_handler) + (_("note: '%s' is defined in DSO %B so try adding it to the linker command line"), abfd, name); - bfd_set_error (bfd_error_bad_value); + bfd_set_error (bfd_error_invalid_operation); goto error_free_vers; } @@ -4750,6 +4788,7 @@ if (! dynamic && is_elf_hash_table (htab) && bed->check_relocs != NULL + && elf_object_id (abfd) == elf_hash_table_id (htab) && (*bed->relocs_compatible) (abfd->xvec, info->output_bfd->xvec)) { asection *o; @@ -5037,10 +5076,10 @@ undefs_tail = info->hash->undefs_tail; - if (! (*info->callbacks->add_archive_element) (info, element, - symdef->name)) + if (!(*info->callbacks + ->add_archive_element) (info, element, symdef->name, &element)) goto error_return; - if (! bfd_link_add_symbols (element, info)) + if (!bfd_link_add_symbols (element, info)) goto error_return; /* If there are any new undefined symbols, we need to make @@ -5311,7 +5350,7 @@ Therefore the result is always a good payoff between few collisions (= short chain lengths) and table size. */ static size_t -compute_bucket_count (struct bfd_link_info *info, +compute_bucket_count (struct bfd_link_info *info ATTRIBUTE_UNUSED, unsigned long int *hashcodes ATTRIBUTE_UNUSED, unsigned long int nsyms, int gnu_hash) @@ -5333,6 +5372,7 @@ const struct elf_backend_data *bed = get_elf_backend_data (dynobj); unsigned long int *counts; bfd_size_type amt; + unsigned int no_improvement_count = 0; /* Possible optimization parameters: if we have NSYMS symbols we say that the hashing table must at least have NSYMS/4 and at most @@ -5417,7 +5457,12 @@ { best_chlen = max; best_size = i; + no_improvement_count = 0; } + /* PR 11843: Avoid futile long searches for the best bucket size + when there are a large number of symbols. */ + else if (++no_improvement_count == 100) + break; } free (counts); @@ -5441,6 +5486,20 @@ return best_size; } +/* Size any SHT_GROUP section for ld -r. */ + +bfd_boolean +_bfd_elf_size_group_sections (struct bfd_link_info *info) +{ + bfd *ibfd; + + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + if (bfd_get_flavour (ibfd) == bfd_target_elf_flavour + && !_bfd_elf_fixup_group_sections (ibfd, bfd_abs_section_ptr)) + return FALSE; + return TRUE; +} + /* Set up the sizes and contents of the ELF dynamic sections. This is called by the ELF linker emulation before_allocation routine. We must set the sizes of the sections before the linker sets the @@ -5451,6 +5510,8 @@ const char *soname, const char *rpath, const char *filter_shlib, + const char *audit, + const char *depaudit, const char * const *auxiliary_filters, struct bfd_link_info *info, asection **sinterpptr, @@ -5513,6 +5574,10 @@ elf_hash_table (info)->init_plt_refcount = elf_hash_table (info)->init_plt_offset; + if (info->relocatable + && !_bfd_elf_size_group_sections (info)) + return FALSE; + /* The backend may have to create some sections regardless of whether we're dynamic or not. */ if (bed->elf_backend_always_size_sections @@ -5603,6 +5668,28 @@ } } + if (audit != NULL) + { + bfd_size_type indx; + + indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, audit, + TRUE); + if (indx == (bfd_size_type) -1 + || !_bfd_elf_add_dynamic_entry (info, DT_AUDIT, indx)) + return FALSE; + } + + if (depaudit != NULL) + { + bfd_size_type indx; + + indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, depaudit, + TRUE); + if (indx == (bfd_size_type) -1 + || !_bfd_elf_add_dynamic_entry (info, DT_DEPAUDIT, indx)) + return FALSE; + } + eif.info = info; eif.verdefs = verdefs; eif.failed = FALSE; @@ -5626,11 +5713,12 @@ { const char *verstr, *name; size_t namelen, verlen, newlen; - char *newname, *p; + char *newname, *p, leading_char; struct elf_link_hash_entry *newh; + leading_char = bfd_get_symbol_leading_char (output_bfd); name = d->pattern; - namelen = strlen (name); + namelen = strlen (name) + (leading_char != '\0'); verstr = t->name; verlen = strlen (verstr); newlen = namelen + verlen + 3; @@ -5638,7 +5726,8 @@ newname = (char *) bfd_malloc (newlen); if (newname == NULL) return FALSE; - memcpy (newname, name, namelen); + newname[0] = leading_char; + memcpy (newname + (leading_char != '\0'), name, namelen); /* Check the hidden versioned definition. */ p = newname + namelen; @@ -5864,6 +5953,10 @@ { struct bfd_elf_version_deps *n; + /* Don't emit base version twice. */ + if (t->vernum == 0) + continue; + size += sizeof (Elf_External_Verdef); size += sizeof (Elf_External_Verdaux); ++cdefs; @@ -5963,6 +6056,10 @@ unsigned int cdeps; struct bfd_elf_version_deps *n; + /* Don't emit the base version twice. */ + if (t->vernum == 0) + continue; + cdeps = 0; for (n = t->deps; n != NULL; n = n->next) ++cdeps; @@ -5994,7 +6091,13 @@ def.vd_hash = bfd_elf_hash (t->name); def.vd_aux = sizeof (Elf_External_Verdef); def.vd_next = 0; - if (t->next != NULL) + + /* If a basever node is next, it *must* be the last node in + the chain, otherwise Verdef construction breaks. */ + if (t->next != NULL && t->next->vernum == 0) + BFD_ASSERT (t->next->next == NULL); + + if (t->next != NULL && t->next->vernum != 0) def.vd_next = (sizeof (Elf_External_Verdef) + (cdeps + 1) * sizeof (Elf_External_Verdaux)); @@ -6095,7 +6198,7 @@ unsigned int crefs; bfd_byte *p; - /* Build the version definition section. */ + /* Build the version dependency section. */ size = 0; crefs = 0; for (t = elf_tdata (output_bfd)->verref; @@ -6718,7 +6821,8 @@ struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *, struct bfd_hash_table *, const char *), - unsigned int entsize) + unsigned int entsize, + enum elf_target_id target_id) { bfd_boolean ret; int can_refcount = get_elf_backend_data (abfd)->can_refcount; @@ -6732,7 +6836,9 @@ table->dynsymcount = 1; ret = _bfd_link_hash_table_init (&table->root, abfd, newfunc, entsize); + table->root.type = bfd_link_elf_hash_table; + table->hash_table_id = target_id; return ret; } @@ -6750,7 +6856,8 @@ return NULL; if (! _bfd_elf_link_hash_table_init (ret, abfd, _bfd_elf_link_hash_newfunc, - sizeof (struct elf_link_hash_entry))) + sizeof (struct elf_link_hash_entry), + GENERIC_ELF_DATA)) { free (ret); return NULL; @@ -7780,7 +7887,8 @@ "chunksz %ld, start %ld, len %ld, oplen %ld\n" " dest: %8.8lx, mask: %8.8lx, reloc: %8.8lx\n", lsb0_p, signed_p, trunc_p, wordsz, chunksz, start, len, - oplen, x, mask, relocation); + oplen, (unsigned long) x, (unsigned long) mask, + (unsigned long) relocation); #endif r = bfd_reloc_ok; @@ -7800,8 +7908,8 @@ " shifted mask: %8.8lx\n" " shifted/masked reloc: %8.8lx\n" " result: %8.8lx\n", - relocation, (mask << shift), - ((relocation & mask) << shift), x); + (unsigned long) relocation, (unsigned long) (mask << shift), + (unsigned long) ((relocation & mask) << shift), (unsigned long) x); #endif /* FIXME: octets_per_byte. */ put_value (wordsz, chunksz, input_bfd, x, contents + rel->r_offset); @@ -7810,14 +7918,12 @@ /* When performing a relocatable link, the input relocations are preserved. But, if they reference global symbols, the indices - referenced must be updated. Update all the relocations in - REL_HDR (there are COUNT of them), using the data in REL_HASH. */ + referenced must be updated. Update all the relocations found in + RELDATA. */ static void elf_link_adjust_relocs (bfd *abfd, - Elf_Internal_Shdr *rel_hdr, - unsigned int count, - struct elf_link_hash_entry **rel_hash) + struct bfd_elf_section_reloc_data *reldata) { unsigned int i; const struct elf_backend_data *bed = get_elf_backend_data (abfd); @@ -7826,13 +7932,15 @@ void (*swap_out) (bfd *, const Elf_Internal_Rela *, bfd_byte *); bfd_vma r_type_mask; int r_sym_shift; + unsigned int count = reldata->count; + struct elf_link_hash_entry **rel_hash = reldata->hashes; - if (rel_hdr->sh_entsize == bed->s->sizeof_rel) + if (reldata->hdr->sh_entsize == bed->s->sizeof_rel) { swap_in = bed->s->swap_reloc_in; swap_out = bed->s->swap_reloc_out; } - else if (rel_hdr->sh_entsize == bed->s->sizeof_rela) + else if (reldata->hdr->sh_entsize == bed->s->sizeof_rela) { swap_in = bed->s->swap_reloca_in; swap_out = bed->s->swap_reloca_out; @@ -7854,8 +7962,8 @@ r_sym_shift = 32; } - erela = rel_hdr->contents; - for (i = 0; i < count; i++, rel_hash++, erela += rel_hdr->sh_entsize) + erela = reldata->hdr->contents; + for (i = 0; i < count; i++, rel_hash++, erela += reldata->hdr->sh_entsize) { Elf_Internal_Rela irela[MAX_INT_RELS_PER_EXT_REL]; unsigned int j; @@ -8443,10 +8551,14 @@ _bfd_elf_swap_versym_in (input, ever, &iver); - if ((iver.vs_vers & VERSYM_HIDDEN) == 0) + if ((iver.vs_vers & VERSYM_HIDDEN) == 0 + && !(h->def_regular + && h->forced_local)) { /* If we have a non-hidden versioned sym, then it should - have provided a definition for the undefined sym. */ + have provided a definition for the undefined sym unless + it is defined in a non-shared object and forced local. + */ abort (); } @@ -8511,7 +8623,9 @@ { /* If we have an undefined symbol reference here then it must have come from a shared library that is being linked in. (Undefined - references in regular files have already been handled). */ + references in regular files have already been handled unless + they are in unreferenced sections which are removed by garbage + collection). */ bfd_boolean ignore_undef = FALSE; /* Some symbols may be special in that the fact that they're @@ -8520,16 +8634,18 @@ ignore_undef = bed->elf_backend_ignore_undef_symbol (h); /* If we are reporting errors for this situation then do so now. */ - if (ignore_undef == FALSE + if (!ignore_undef && h->ref_dynamic - && ! h->ref_regular + && (!h->ref_regular || finfo->info->gc_sections) && ! elf_link_check_versioned_symbol (finfo->info, bed, h) && finfo->info->unresolved_syms_in_shared_libs != RM_IGNORE) { if (! (finfo->info->callbacks->undefined_symbol - (finfo->info, h->root.root.string, h->root.u.undef.abfd, + (finfo->info, h->root.root.string, + h->ref_regular ? NULL : h->root.u.undef.abfd, NULL, 0, finfo->info->unresolved_syms_in_shared_libs == RM_GENERATE_ERROR))) { + bfd_set_error (bfd_error_bad_value); eoinfo->failed = TRUE; return FALSE; } @@ -8546,16 +8662,21 @@ && !h->dynamic_weak && ! elf_link_check_versioned_symbol (finfo->info, bed, h)) { - (*_bfd_error_handler) - (_("%B: %s symbol `%s' in %B is referenced by DSO"), - finfo->output_bfd, - h->root.u.def.section == bfd_abs_section_ptr - ? finfo->output_bfd : h->root.u.def.section->owner, - ELF_ST_VISIBILITY (h->other) == STV_INTERNAL - ? "internal" - : ELF_ST_VISIBILITY (h->other) == STV_HIDDEN - ? "hidden" : "local", - h->root.root.string); + bfd *def_bfd; + const char *msg; + + if (ELF_ST_VISIBILITY (h->other) == STV_INTERNAL) + msg = _("%B: internal symbol `%s' in %B is referenced by DSO"); + else if (ELF_ST_VISIBILITY (h->other) == STV_HIDDEN) + msg = _("%B: hidden symbol `%s' in %B is referenced by DSO"); + else + msg = _("%B: local symbol `%s' in %B is referenced by DSO"); + def_bfd = finfo->output_bfd; + if (h->root.u.def.section != bfd_abs_section_ptr) + def_bfd = h->root.u.def.section->owner; + (*_bfd_error_handler) (msg, finfo->output_bfd, def_bfd, + h->root.root.string); + bfd_set_error (bfd_error_bad_value); eoinfo->failed = TRUE; return FALSE; } @@ -8587,9 +8708,11 @@ strip = FALSE; /* If we're stripping it, and it's not a dynamic symbol, there's - nothing else to do unless it is a forced local symbol. */ + nothing else to do unless it is a forced local symbol or a + STT_GNU_IFUNC symbol. */ if (strip && h->dynindx == -1 + && h->type != STT_GNU_IFUNC && !h->forced_local) return TRUE; @@ -8597,7 +8720,11 @@ sym.st_size = h->size; sym.st_other = h->other; if (h->forced_local) - sym.st_info = ELF_ST_INFO (STB_LOCAL, h->type); + { + sym.st_info = ELF_ST_INFO (STB_LOCAL, h->type); + /* Turn off visibility on local symbol. */ + sym.st_other &= ~ELF_ST_VISIBILITY (-1); + } else if (h->unique_global) sym.st_info = ELF_ST_INFO (STB_GNU_UNIQUE, h->type); else if (h->root.type == bfd_link_hash_undefweak @@ -8605,6 +8732,7 @@ sym.st_info = ELF_ST_INFO (STB_WEAK, h->type); else sym.st_info = ELF_ST_INFO (STB_GLOBAL, h->type); + sym.st_target_internal = h->target_internal; switch (h->root.type) { @@ -8634,6 +8762,7 @@ (*_bfd_error_handler) (_("%B: could not find output section %A for input section %A"), finfo->output_bfd, input_sec->output_section, input_sec); + bfd_set_error (bfd_error_nonrepresentable_section); eoinfo->failed = TRUE; return FALSE; } @@ -8751,14 +8880,16 @@ && h->root.type == bfd_link_hash_undefined && !h->def_regular) { - (*_bfd_error_handler) - (_("%B: %s symbol `%s' isn't defined"), - finfo->output_bfd, - ELF_ST_VISIBILITY (sym.st_other) == STV_PROTECTED - ? "protected" - : ELF_ST_VISIBILITY (sym.st_other) == STV_INTERNAL - ? "internal" : "hidden", - h->root.root.string); + const char *msg; + + if (ELF_ST_VISIBILITY (sym.st_other) == STV_PROTECTED) + msg = _("%B: protected symbol `%s' isn't defined"); + else if (ELF_ST_VISIBILITY (sym.st_other) == STV_INTERNAL) + msg = _("%B: internal symbol `%s' isn't defined"); + else + msg = _("%B: hidden symbol `%s' isn't defined"); + (*_bfd_error_handler) (msg, finfo->output_bfd, h->root.root.string); + bfd_set_error (bfd_error_bad_value); eoinfo->failed = TRUE; return FALSE; } @@ -9235,10 +9366,8 @@ contents = elf_section_data (o)->this_hdr.contents; else { - bfd_size_type amt = o->rawsize ? o->rawsize : o->size; - contents = finfo->contents; - if (! bfd_get_section_contents (input_bfd, o, contents, 0, amt)) + if (! bfd_get_full_section_contents (input_bfd, o, &contents)) return FALSE; } @@ -9347,7 +9476,8 @@ #ifdef DEBUG printf ("Encountered a complex symbol!"); printf (" (input_bfd %s, section %s, reloc %ld\n", - input_bfd->filename, o->name, rel - internal_relocs); + input_bfd->filename, o->name, + (long) (rel - internal_relocs)); printf (" symbol: idx %8.8lx, name %s\n", r_symndx, sym_name); printf (" reloc : info %8.8lx, addr %8.8lx\n", @@ -9370,7 +9500,7 @@ discarded section. */ if ((sec = *ps) != NULL && elf_discarded_section (sec)) { - BFD_ASSERT (r_symndx != 0); + BFD_ASSERT (r_symndx != STN_UNDEF); if (action_discarded & COMPLAIN) (*finfo->info->callbacks->einfo) (_("%X`%s' referenced in section `%A' of %B: " @@ -9432,27 +9562,32 @@ || finfo->info->emitrelocations) { Elf_Internal_Rela *irela; - Elf_Internal_Rela *irelaend; + Elf_Internal_Rela *irelaend, *irelamid; bfd_vma last_offset; struct elf_link_hash_entry **rel_hash; - struct elf_link_hash_entry **rel_hash_list; - Elf_Internal_Shdr *input_rel_hdr, *input_rel_hdr2; + struct elf_link_hash_entry **rel_hash_list, **rela_hash_list; + Elf_Internal_Shdr *input_rel_hdr, *input_rela_hdr; unsigned int next_erel; bfd_boolean rela_normal; + struct bfd_elf_section_data *esdi, *esdo; - input_rel_hdr = &elf_section_data (o)->rel_hdr; - rela_normal = (bed->rela_normal - && (input_rel_hdr->sh_entsize - == bed->s->sizeof_rela)); + esdi = elf_section_data (o); + esdo = elf_section_data (o->output_section); + rela_normal = FALSE; /* Adjust the reloc addresses and symbol indices. */ irela = internal_relocs; irelaend = irela + o->reloc_count * bed->s->int_rels_per_ext_rel; - rel_hash = (elf_section_data (o->output_section)->rel_hashes - + elf_section_data (o->output_section)->rel_count - + elf_section_data (o->output_section)->rel_count2); + rel_hash = esdo->rel.hashes + esdo->rel.count; + /* We start processing the REL relocs, if any. When we reach + IRELAMID in the loop, we switch to the RELA relocs. */ + irelamid = irela; + if (esdi->rel.hdr != NULL) + irelamid += (NUM_SHDR_ENTRIES (esdi->rel.hdr) + * bed->s->int_rels_per_ext_rel); rel_hash_list = rel_hash; + rela_hash_list = NULL; last_offset = o->output_offset; if (!finfo->info->relocatable) last_offset += o->output_section->vma; @@ -9468,6 +9603,13 @@ next_erel = 0; } + if (irela == irelamid) + { + rel_hash = esdo->rela.hashes + esdo->rela.count; + rela_hash_list = rel_hash; + rela_normal = bed->rela_normal; + } + irela->r_offset = _bfd_elf_section_offset (output_bfd, finfo->info, o, irela->r_offset); @@ -9537,7 +9679,7 @@ /* I suppose the backend ought to fill in the section of any STT_SECTION symbol against a processor specific section. */ - r_symndx = 0; + r_symndx = STN_UNDEF; if (bfd_is_abs_section (sec)) ; else if (sec == NULL || sec->owner == NULL) @@ -9566,7 +9708,7 @@ if (!bfd_is_abs_section (osec)) { r_symndx = osec->target_index; - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) { struct elf_link_hash_table *htab; asection *oi; @@ -9584,7 +9726,7 @@ } } - BFD_ASSERT (r_symndx != 0); + BFD_ASSERT (r_symndx != STN_UNDEF); } } @@ -9659,23 +9801,26 @@ } /* Swap out the relocs. */ - if (input_rel_hdr->sh_size != 0 - && !bed->elf_backend_emit_relocs (output_bfd, o, - input_rel_hdr, - internal_relocs, - rel_hash_list)) - return FALSE; - - input_rel_hdr2 = elf_section_data (o)->rel_hdr2; - if (input_rel_hdr2 && input_rel_hdr2->sh_size != 0) + input_rel_hdr = esdi->rel.hdr; + if (input_rel_hdr && input_rel_hdr->sh_size != 0) { + if (!bed->elf_backend_emit_relocs (output_bfd, o, + input_rel_hdr, + internal_relocs, + rel_hash_list)) + return FALSE; internal_relocs += (NUM_SHDR_ENTRIES (input_rel_hdr) * bed->s->int_rels_per_ext_rel); rel_hash_list += NUM_SHDR_ENTRIES (input_rel_hdr); + } + + input_rela_hdr = esdi->rela.hdr; + if (input_rela_hdr && input_rela_hdr->sh_size != 0) + { if (!bed->elf_backend_emit_relocs (output_bfd, o, - input_rel_hdr2, + input_rela_hdr, internal_relocs, - rel_hash_list)) + rela_hash_list)) return FALSE; } } @@ -9713,7 +9858,6 @@ { /* FIXME: octets_per_byte. */ if (! (o->flags & SEC_EXCLUDE) - && ! (o->output_section->flags & SEC_NEVER_LOAD) && ! bfd_set_section_contents (output_bfd, o->output_section, contents, (file_ptr) o->output_offset, @@ -9742,12 +9886,14 @@ long indx; bfd_vma offset; bfd_vma addend; + struct bfd_elf_section_reloc_data *reldata; struct elf_link_hash_entry **rel_hash_ptr; Elf_Internal_Shdr *rel_hdr; const struct elf_backend_data *bed = get_elf_backend_data (output_bfd); Elf_Internal_Rela irel[MAX_INT_RELS_PER_EXT_REL]; bfd_byte *erel; unsigned int i; + struct bfd_elf_section_data *esdo = elf_section_data (output_section); howto = bfd_reloc_type_lookup (output_bfd, link_order->u.reloc.p->reloc); if (howto == NULL) @@ -9758,10 +9904,18 @@ addend = link_order->u.reloc.p->addend; + if (esdo->rel.hdr) + reldata = &esdo->rel; + else if (esdo->rela.hdr) + reldata = &esdo->rela; + else + { + reldata = NULL; + BFD_ASSERT (0); + } + /* Figure out the symbol index. */ - rel_hash_ptr = (elf_section_data (output_section)->rel_hashes - + elf_section_data (output_section)->rel_count - + elf_section_data (output_section)->rel_count2); + rel_hash_ptr = reldata->hashes + reldata->count; if (link_order->type == bfd_section_reloc_link_order) { indx = link_order->u.reloc.p->u.section->target_index; @@ -9873,23 +10027,21 @@ else irel[0].r_info = ELF64_R_INFO (indx, howto->type); - rel_hdr = &elf_section_data (output_section)->rel_hdr; + rel_hdr = reldata->hdr; erel = rel_hdr->contents; if (rel_hdr->sh_type == SHT_REL) { - erel += (elf_section_data (output_section)->rel_count - * bed->s->sizeof_rel); + erel += reldata->count * bed->s->sizeof_rel; (*bed->s->swap_reloc_out) (output_bfd, irel, erel); } else { irel[0].r_addend = addend; - erel += (elf_section_data (output_section)->rel_count - * bed->s->sizeof_rela); + erel += reldata->count * bed->s->sizeof_rela; (*bed->s->swap_reloca_out) (output_bfd, irel, erel); } - ++elf_section_data (output_section)->rel_count; + ++reldata->count; return TRUE; } @@ -10053,9 +10205,9 @@ bfd_boolean emit_relocs; bfd *dynobj; struct elf_final_link_info finfo; - register asection *o; - register struct bfd_link_order *p; - register bfd *sub; + asection *o; + struct bfd_link_order *p; + bfd *sub; bfd_size_type max_contents_size; bfd_size_type max_external_reloc_size; bfd_size_type max_internal_reloc_count; @@ -10175,7 +10327,6 @@ { unsigned int reloc_count = 0; struct bfd_elf_section_data *esdi = NULL; - unsigned int *rel_count1; if (p->type == bfd_section_reloc_link_order || p->type == bfd_symbol_reloc_link_order) @@ -10228,9 +10379,13 @@ if ((sec->flags & SEC_RELOC) != 0) { - size_t ext_size; + size_t ext_size = 0; + + if (esdi->rel.hdr != NULL) + ext_size = esdi->rel.hdr->sh_size; + if (esdi->rela.hdr != NULL) + ext_size += esdi->rela.hdr->sh_size; - ext_size = elf_section_data (sec)->rel_hdr.sh_size; if (ext_size > max_external_reloc_size) max_external_reloc_size = ext_size; if (sec->reloc_count > max_internal_reloc_count) @@ -10244,54 +10399,21 @@ o->reloc_count += reloc_count; - /* MIPS may have a mix of REL and RELA relocs on sections. - To support this curious ABI we keep reloc counts in - elf_section_data too. We must be careful to add the - relocations from the input section to the right output - count. FIXME: Get rid of one count. We have - o->reloc_count == esdo->rel_count + esdo->rel_count2. */ - rel_count1 = &esdo->rel_count; - if (esdi != NULL) - { - bfd_boolean same_size; - bfd_size_type entsize1; - - entsize1 = esdi->rel_hdr.sh_entsize; - /* PR 9827: If the header size has not been set yet then - assume that it will match the output section's reloc type. */ - if (entsize1 == 0) - entsize1 = o->use_rela_p ? bed->s->sizeof_rela : bed->s->sizeof_rel; + if (p->type == bfd_indirect_link_order + && (info->relocatable || info->emitrelocations)) + { + if (esdi->rel.hdr) + esdo->rel.count += NUM_SHDR_ENTRIES (esdi->rel.hdr); + if (esdi->rela.hdr) + esdo->rela.count += NUM_SHDR_ENTRIES (esdi->rela.hdr); + } + else + { + if (o->use_rela_p) + esdo->rela.count += reloc_count; else - BFD_ASSERT (entsize1 == bed->s->sizeof_rel - || entsize1 == bed->s->sizeof_rela); - same_size = !o->use_rela_p == (entsize1 == bed->s->sizeof_rel); - - if (!same_size) - rel_count1 = &esdo->rel_count2; - - if (esdi->rel_hdr2 != NULL) - { - bfd_size_type entsize2 = esdi->rel_hdr2->sh_entsize; - unsigned int alt_count; - unsigned int *rel_count2; - - BFD_ASSERT (entsize2 != entsize1 - && (entsize2 == bed->s->sizeof_rel - || entsize2 == bed->s->sizeof_rela)); - - rel_count2 = &esdo->rel_count2; - if (!same_size) - rel_count2 = &esdo->rel_count; - - /* The following is probably too simplistic if the - backend counts output relocs unusually. */ - BFD_ASSERT (bed->elf_backend_count_relocs == NULL); - alt_count = NUM_SHDR_ENTRIES (esdi->rel_hdr2); - *rel_count2 += alt_count; - reloc_count -= alt_count; - } + esdo->rel.count += reloc_count; } - *rel_count1 += reloc_count; } if (o->reloc_count > 0) @@ -10328,22 +10450,22 @@ /* Set sizes, and assign file positions for reloc sections. */ for (o = abfd->sections; o != NULL; o = o->next) { + struct bfd_elf_section_data *esdo = elf_section_data (o); if ((o->flags & SEC_RELOC) != 0) { - if (!(_bfd_elf_link_size_reloc_section - (abfd, &elf_section_data (o)->rel_hdr, o))) + if (esdo->rel.hdr + && !(_bfd_elf_link_size_reloc_section (abfd, &esdo->rel))) goto error_return; - if (elf_section_data (o)->rel_hdr2 - && !(_bfd_elf_link_size_reloc_section - (abfd, elf_section_data (o)->rel_hdr2, o))) + if (esdo->rela.hdr + && !(_bfd_elf_link_size_reloc_section (abfd, &esdo->rela))) goto error_return; } /* Now, reset REL_COUNT and REL_COUNT2 so that we can use them to count upwards while actually outputting the relocations. */ - elf_section_data (o)->rel_count = 0; - elf_section_data (o)->rel_count2 = 0; + esdo->rel.count = 0; + esdo->rela.count = 0; } _bfd_elf_assign_file_positions_for_relocs (abfd); @@ -10402,6 +10524,7 @@ elfsym.st_info = 0; elfsym.st_other = 0; elfsym.st_shndx = SHN_UNDEF; + elfsym.st_target_internal = 0; if (elf_link_output_sym (&finfo, NULL, &elfsym, bfd_und_section_ptr, NULL) != 1) goto error_return; @@ -10419,6 +10542,7 @@ elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION); elfsym.st_other = 0; elfsym.st_value = 0; + elfsym.st_target_internal = 0; for (i = 1; i < elf_numsections (abfd); i++) { o = bfd_section_from_elf_index (abfd, i); @@ -10504,14 +10628,19 @@ if (size == 0 && (sec->flags & SEC_HAS_CONTENTS) == 0) { - struct bfd_link_order *o = sec->map_tail.link_order; - if (o != NULL) - size = o->offset + o->size; + struct bfd_link_order *ord = sec->map_tail.link_order; + + if (ord != NULL) + size = ord->offset + ord->size; } end = sec->vma + size; } base = elf_hash_table (info)->tls_sec->vma; - end = align_power (end, elf_hash_table (info)->tls_sec->alignment_power); + /* Only align end of TLS section if static TLS doesn't have special + alignment requirements. */ + if (bed->static_tls_alignment == 1) + end = align_power (end, + elf_hash_table (info)->tls_sec->alignment_power); elf_hash_table (info)->tls_size = end - base; } @@ -10569,7 +10698,34 @@ else { if (! _bfd_default_link_order (abfd, info, o, p)) - goto error_return; + { + if (p->type == bfd_indirect_link_order + && (bfd_get_flavour (sub) + == bfd_target_elf_flavour) + && (elf_elfheader (sub)->e_ident[EI_CLASS] + != bed->s->elfclass)) + { + const char *iclass, *oclass; + + if (bed->s->elfclass == ELFCLASS64) + { + iclass = "ELFCLASS32"; + oclass = "ELFCLASS64"; + } + else + { + iclass = "ELFCLASS64"; + oclass = "ELFCLASS32"; + } + + bfd_set_error (bfd_error_wrong_format); + (*_bfd_error_handler) + (_("%B: file class %s incompatible with %s"), + sub, iclass, oclass); + } + + goto error_return; + } } } } @@ -10637,6 +10793,7 @@ sym.st_name = 0; sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION); sym.st_other = 0; + sym.st_target_internal = 0; for (s = abfd->sections; s != NULL; s = s->next) { @@ -10669,13 +10826,11 @@ asection *s; bfd_byte *dest; - sym.st_size = e->isym.st_size; - sym.st_other = e->isym.st_other; - - /* Copy the internal symbol as is. + /* Copy the internal symbol and turn off visibility. Note that we saved a word of storage and overwrote the original st_name with the dynstr_index. */ sym = e->isym; + sym.st_other &= ~ELF_ST_VISIBILITY (-1); s = bfd_section_from_elf_index (e->input_bfd, e->isym.st_shndx); @@ -10776,17 +10931,14 @@ /* Adjust the relocs to have the correct symbol indices. */ for (o = abfd->sections; o != NULL; o = o->next) { + struct bfd_elf_section_data *esdo = elf_section_data (o); if ((o->flags & SEC_RELOC) == 0) continue; - elf_link_adjust_relocs (abfd, &elf_section_data (o)->rel_hdr, - elf_section_data (o)->rel_count, - elf_section_data (o)->rel_hashes); - if (elf_section_data (o)->rel_hdr2 != NULL) - elf_link_adjust_relocs (abfd, elf_section_data (o)->rel_hdr2, - elf_section_data (o)->rel_count2, - (elf_section_data (o)->rel_hashes - + elf_section_data (o)->rel_count)); + if (esdo->rel.hdr != NULL) + elf_link_adjust_relocs (abfd, &esdo->rel); + if (esdo->rela.hdr != NULL) + elf_link_adjust_relocs (abfd, &esdo->rela); /* Set the reloc_count field to 0 to prevent write_relocs from trying to swap the relocs out itself. */ @@ -11081,9 +11233,11 @@ free (finfo.symshndxbuf); for (o = abfd->sections; o != NULL; o = o->next) { - if ((o->flags & SEC_RELOC) != 0 - && elf_section_data (o)->rel_hashes != NULL) - free (elf_section_data (o)->rel_hashes); + struct bfd_elf_section_data *esdo = elf_section_data (o); + if ((o->flags & SEC_RELOC) != 0 && esdo->rel.hashes != NULL) + free (esdo->rel.hashes); + if ((o->flags & SEC_RELOC) != 0 && esdo->rela.hashes != NULL) + free (esdo->rela.hashes); } elf_tdata (abfd)->linker = TRUE; @@ -11125,9 +11279,11 @@ free (finfo.symshndxbuf); for (o = abfd->sections; o != NULL; o = o->next) { - if ((o->flags & SEC_RELOC) != 0 - && elf_section_data (o)->rel_hashes != NULL) - free (elf_section_data (o)->rel_hashes); + struct bfd_elf_section_data *esdo = elf_section_data (o); + if ((o->flags & SEC_RELOC) != 0 && esdo->rel.hashes != NULL) + free (esdo->rel.hashes); + if ((o->flags & SEC_RELOC) != 0 && esdo->rela.hashes != NULL) + free (esdo->rela.hashes); } return FALSE; @@ -11277,6 +11433,8 @@ struct elf_link_hash_entry *h, Elf_Internal_Sym *sym) { + const char *sec_name; + if (h != NULL) { switch (h->root.type) @@ -11288,6 +11446,33 @@ case bfd_link_hash_common: return h->root.u.c.p->section; + case bfd_link_hash_undefined: + case bfd_link_hash_undefweak: + /* To work around a glibc bug, keep all XXX input sections + when there is an as yet undefined reference to __start_XXX + or __stop_XXX symbols. The linker will later define such + symbols for orphan input sections that have a name + representable as a C identifier. */ + if (strncmp (h->root.root.string, "__start_", 8) == 0) + sec_name = h->root.root.string + 8; + else if (strncmp (h->root.root.string, "__stop_", 7) == 0) + sec_name = h->root.root.string + 7; + else + sec_name = NULL; + + if (sec_name && *sec_name != '\0') + { + bfd *i; + + for (i = info->input_bfds; i; i = i->link_next) + { + sec = bfd_get_section_by_name (i, sec_name); + if (sec) + sec->flags |= SEC_KEEP; + } + } + break; + default: break; } @@ -11311,7 +11496,7 @@ struct elf_link_hash_entry *h; r_symndx = cookie->rel->r_info >> cookie->r_sym_shift; - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) return NULL; if (r_symndx >= cookie->locsymcount @@ -11473,9 +11658,10 @@ o->gc_mark = first->gc_mark; } else if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0 - || (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0) + || (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0 + || elf_section_data (o)->this_hdr.sh_type == SHT_NOTE) { - /* Keep debug and special sections. */ + /* Keep debug, special and SHT_NOTE sections. */ o->gc_mark = 1; } @@ -12035,7 +12221,7 @@ continue; r_symndx = rcookie->rel->r_info >> rcookie->r_sym_shift; - if (r_symndx == SHN_UNDEF) + if (r_symndx == STN_UNDEF) return TRUE; if (r_symndx >= rcookie->locsymcount @@ -12418,20 +12604,6 @@ /* Routines to support the creation of dynamic relocs. */ -/* Return true if NAME is a name of a relocation - section associated with section S. */ - -static bfd_boolean -is_reloc_section (bfd_boolean rela, const char * name, asection * s) -{ - if (rela) - return CONST_STRNEQ (name, ".rela") - && strcmp (bfd_get_section_name (NULL, s), name + 5) == 0; - - return CONST_STRNEQ (name, ".rel") - && strcmp (bfd_get_section_name (NULL, s), name + 4) == 0; -} - /* Returns the name of the dynamic reloc section associated with SEC. */ static const char * @@ -12439,26 +12611,15 @@ asection * sec, bfd_boolean is_rela) { - const char * name; - unsigned int strndx = elf_elfheader (abfd)->e_shstrndx; - unsigned int shnam = elf_section_data (sec)->rel_hdr.sh_name; + char *name; + const char *old_name = bfd_get_section_name (NULL, sec); + const char *prefix = is_rela ? ".rela" : ".rel"; - name = bfd_elf_string_from_elf_section (abfd, strndx, shnam); - if (name == NULL) + if (old_name == NULL) return NULL; - if (! is_reloc_section (is_rela, name, sec)) - { - static bfd_boolean complained = FALSE; - - if (! complained) - { - (*_bfd_error_handler) - (_("%B: bad relocation section name `%s\'"), abfd, name); - complained = TRUE; - } - name = NULL; - } + name = bfd_alloc (abfd, strlen (prefix) + strlen (old_name) + 1); + sprintf (name, "%s%s", prefix, old_name); return name; } @@ -12495,7 +12656,7 @@ section does not exist it is created and attached to the DYNOBJ bfd and stored in the SRELOC field of SEC's elf_section_data structure. - + ALIGNMENT is the alignment for the newly created section and IS_RELA defines whether the name should be .rela. or .rel.. The section name is looked up in the @@ -12540,3 +12701,38 @@ return reloc_sec; } + +/* Copy the ELF symbol type associated with a linker hash entry. */ +void +_bfd_elf_copy_link_hash_symbol_type (bfd *abfd ATTRIBUTE_UNUSED, + struct bfd_link_hash_entry * hdest, + struct bfd_link_hash_entry * hsrc) +{ + struct elf_link_hash_entry *ehdest = (struct elf_link_hash_entry *)hdest; + struct elf_link_hash_entry *ehsrc = (struct elf_link_hash_entry *)hsrc; + + ehdest->type = ehsrc->type; + ehdest->target_internal = ehsrc->target_internal; +} + +/* Append a RELA relocation REL to section S in BFD. */ + +void +elf_append_rela (bfd *abfd, asection *s, Elf_Internal_Rela *rel) +{ + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + bfd_byte *loc = s->contents + (s->reloc_count++ * bed->s->sizeof_rela); + BFD_ASSERT (loc + bed->s->sizeof_rela <= s->contents + s->size); + bed->s->swap_reloca_out (abfd, rel, loc); +} + +/* Append a REL relocation REL to section S in BFD. */ + +void +elf_append_rel (bfd *abfd, asection *s, Elf_Internal_Rela *rel) +{ + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + bfd_byte *loc = s->contents + (s->reloc_count++ * bed->s->sizeof_rel); + BFD_ASSERT (loc + bed->s->sizeof_rel <= s->contents + s->size); + bed->s->swap_reloca_out (abfd, rel, loc); +} diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elfn32-mips.c crash-6.1.6/=unpacked-tar1=/bfd/elfn32-mips.c --- crash-5.1.6/=unpacked-tar1=/bfd/elfn32-mips.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elfn32-mips.c 2010-12-31 11:00:53.000000000 +0000 @@ -1301,7 +1301,7 @@ complain_overflow_dont, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPMOD32", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ 0xffffffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1315,7 +1315,7 @@ complain_overflow_dont, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPREL32", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ 0xffffffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1333,7 +1333,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_GD", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1348,7 +1348,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_LDM", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1363,7 +1363,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_HI16", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1378,7 +1378,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_LO16", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1393,7 +1393,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_GOTTPREL", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1408,7 +1408,7 @@ complain_overflow_dont, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_TPREL32", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ 0xffffffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1425,7 +1425,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_TPREL_HI16", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1440,7 +1440,7 @@ complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_TPREL_LO16", /* name */ - TRUE, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2259,8 +2259,7 @@ when we do the relocation, because the symbol manipulations done by the linker may cause us to lose track of the input BFD. */ if (((*cache_ptr->sym_ptr_ptr)->flags & BSF_SECTION_SYM) != 0 - && (r_type == (unsigned int) R_MIPS_GPREL16 - || r_type == (unsigned int) R_MIPS_LITERAL)) + && (gprel16_reloc_p (r_type) || r_type == (unsigned int) R_MIPS_LITERAL)) cache_ptr->addend = elf_gp (abfd); } @@ -2333,7 +2332,7 @@ 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); + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); /* pr_reg */ offset = 72; @@ -2432,6 +2431,7 @@ }; #define ELF_ARCH bfd_arch_mips +#define ELF_TARGET_ID MIPS_ELF_DATA #define ELF_MACHINE_CODE EM_MIPS #define elf_backend_collect TRUE @@ -2505,7 +2505,6 @@ #define bfd_elf32_set_section_contents _bfd_mips_elf_set_section_contents #define bfd_elf32_bfd_get_relocated_section_contents \ _bfd_elf_mips_get_relocated_section_contents -#define bfd_elf32_mkobject _bfd_mips_elf_mkobject #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 @@ -2548,3 +2547,36 @@ /* Include the target file again for this target. */ #include "elf32-target.h" + + +/* FreeBSD support. */ + +#undef TARGET_LITTLE_SYM +#undef TARGET_LITTLE_NAME +#undef TARGET_BIG_SYM +#undef TARGET_BIG_NAME + +#define TARGET_LITTLE_SYM bfd_elf32_ntradlittlemips_freebsd_vec +#define TARGET_LITTLE_NAME "elf32-ntradlittlemips-freebsd" +#define TARGET_BIG_SYM bfd_elf32_ntradbigmips_freebsd_vec +#define TARGET_BIG_NAME "elf32-ntradbigmips-freebsd" + +#undef ELF_OSABI +#define ELF_OSABI ELFOSABI_FREEBSD + +/* The kernel recognizes executables as valid only if they carry a + "FreeBSD" label in the ELF header. So we put this label on all + executables and (for simplicity) also all other object files. */ + +static void +elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) +{ + _bfd_elf_set_osabi (abfd, info); +} + +#undef elf_backend_post_process_headers +#define elf_backend_post_process_headers elf_fbsd_post_process_headers +#undef elf32_bed +#define elf32_bed elf32_fbsd_tradbed + +#include "elf32-target.h" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elfxx-ia64.c crash-6.1.6/=unpacked-tar1=/bfd/elfxx-ia64.c --- crash-5.1.6/=unpacked-tar1=/bfd/elfxx-ia64.c 2009-09-02 07:18:36.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elfxx-ia64.c 2011-05-17 21:23:00.000000000 +0000 @@ -1,6 +1,6 @@ /* IA-64 support for 64-bit ELF Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by David Mosberger-Tang This file is part of BFD, the Binary File Descriptor library. @@ -28,6 +28,7 @@ #include "elf/ia64.h" #include "objalloc.h" #include "hashtab.h" +#include "bfd_stdint.h" #define ARCH_SIZE NN @@ -67,10 +68,19 @@ MIN_PLT Created by PLTOFF entries against dynamic symbols. This does not require dynamic relocations. */ +/* Only add code for vms when the vms target is enabled. This is required + because it depends on vms-lib.c for its archive format and we don't want + to compile that code if it is not used. */ +#if ARCH_SIZE == 64 && \ + (defined (HAVE_bfd_elf64_ia64_vms_vec) || defined (HAVE_all_vecs)) +#define INCLUDE_IA64_VMS +#endif + + #define NELEMS(a) ((int) (sizeof (a) / sizeof ((a)[0]))) typedef struct bfd_hash_entry *(*new_hash_entry_func) - PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); /* In dynamically (linker-) created sections, we generally need to keep track of the place a symbol or expression got allocated to. This is done via hash @@ -163,15 +173,23 @@ /* The main hash table. */ struct elf_link_hash_table root; - asection *fptr_sec; /* function descriptor table (or NULL) */ - asection *rel_fptr_sec; /* dynamic relocation section for same */ - asection *pltoff_sec; /* private descriptors for plt (or NULL) */ - asection *rel_pltoff_sec; /* dynamic relocation section for same */ - - bfd_size_type minplt_entries; /* number of minplt entries */ - unsigned reltext : 1; /* are there relocs against readonly sections? */ - unsigned self_dtpmod_done : 1;/* has self DTPMOD entry been finished? */ - bfd_vma self_dtpmod_offset; /* .got offset to self DTPMOD entry */ + asection *fptr_sec; /* Function descriptor table (or NULL). */ + asection *rel_fptr_sec; /* Dynamic relocation section for same. */ + asection *pltoff_sec; /* Private descriptors for plt (or NULL). */ + asection *rel_pltoff_sec; /* Dynamic relocation section for same. */ + + bfd_size_type minplt_entries; /* Number of minplt entries. */ + unsigned reltext : 1; /* Are there relocs against readonly sections? */ + unsigned self_dtpmod_done : 1;/* Has self DTPMOD entry been finished? */ + bfd_vma self_dtpmod_offset; /* .got offset to self DTPMOD entry. */ + /* There are maybe R_IA64_GPREL22 relocations, including those + optimized from R_IA64_LTOFF22X, against non-SHF_IA_64_SHORT + sections. We need to record those sections so that we can choose + a proper GP to cover all R_IA64_GPREL22 relocations. */ + asection *max_short_sec; /* Maximum short output section. */ + bfd_vma max_short_offset; /* Maximum short offset. */ + asection *min_short_sec; /* Minimum short output section. */ + bfd_vma min_short_offset; /* Minimum short offset. */ htab_t loc_hash_table; void *loc_hash_memory; @@ -185,7 +203,8 @@ }; #define elfNN_ia64_hash_table(p) \ - ((struct elfNN_ia64_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == IA64_ELF_DATA ? ((struct elfNN_ia64_link_hash_table *) ((p)->hash)) : NULL) static struct elfNN_ia64_dyn_sym_info * get_dyn_sym_info (struct elfNN_ia64_link_hash_table *ia64_info, @@ -618,7 +637,7 @@ bfd_byte *hit_addr; hit_addr = (bfd_byte *) (contents + off); - br_slot = (long) hit_addr & 0x3; + br_slot = (intptr_t) hit_addr & 0x3; hit_addr -= br_slot; t0 = bfd_getl64 (hit_addr + 0); t1 = bfd_getl64 (hit_addr + 8); @@ -720,7 +739,7 @@ bfd_vma t0, t1, i0, i1, i2; hit_addr = (bfd_byte *) (contents + off); - hit_addr -= (long) hit_addr & 0x3; + hit_addr -= (intptr_t) hit_addr & 0x3; t0 = bfd_getl64 (hit_addr); t1 = bfd_getl64 (hit_addr + 8); @@ -746,12 +765,48 @@ /* Rename some of the generic section flags to better document how they are used here. */ -#define skip_relax_pass_0 need_finalize_relax -#define skip_relax_pass_1 has_gp_reloc +#define skip_relax_pass_0 sec_flg0 +#define skip_relax_pass_1 sec_flg1 /* These functions do relaxation for IA-64 ELF. */ +static void +elfNN_ia64_update_short_info (asection *sec, bfd_vma offset, + struct elfNN_ia64_link_hash_table *ia64_info) +{ + /* Skip ABS and SHF_IA_64_SHORT sections. */ + if (sec == bfd_abs_section_ptr + || (sec->flags & SEC_SMALL_DATA) != 0) + return; + + if (!ia64_info->min_short_sec) + { + ia64_info->max_short_sec = sec; + ia64_info->max_short_offset = offset; + ia64_info->min_short_sec = sec; + ia64_info->min_short_offset = offset; + } + else if (sec == ia64_info->max_short_sec + && offset > ia64_info->max_short_offset) + ia64_info->max_short_offset = offset; + else if (sec == ia64_info->min_short_sec + && offset < ia64_info->min_short_offset) + ia64_info->min_short_offset = offset; + else if (sec->output_section->vma + > ia64_info->max_short_sec->vma) + { + ia64_info->max_short_sec = sec; + ia64_info->max_short_offset = offset; + } + else if (sec->output_section->vma + < ia64_info->min_short_sec->vma) + { + ia64_info->min_short_sec = sec; + ia64_info->min_short_offset = offset; + } +} + static bfd_boolean elfNN_ia64_relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info, @@ -799,16 +854,19 @@ || (link_info->relax_pass == 1 && sec->skip_relax_pass_1)) return TRUE; + ia64_info = elfNN_ia64_hash_table (link_info); + if (ia64_info == NULL) + return FALSE; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; /* Load the relocations for this section. */ internal_relocs = (_bfd_elf_link_read_relocs - (abfd, sec, (PTR) NULL, (Elf_Internal_Rela *) NULL, + (abfd, sec, NULL, (Elf_Internal_Rela *) NULL, link_info->keep_memory)); if (internal_relocs == NULL) return FALSE; - ia64_info = elfNN_ia64_hash_table (link_info); irelend = internal_relocs + sec->reloc_count; /* Get the section contents. */ @@ -855,6 +913,9 @@ is_branch = TRUE; break; + case R_IA64_GPREL22: + /* Update max_short_sec/min_short_sec. */ + case R_IA64_LTOFF22X: case R_IA64_LDXMOV: /* We can't relax ldx/mov in pass 0 since br relaxations will @@ -1171,7 +1232,11 @@ ||(bfd_signed_vma) (symaddr - gp) < -0x200000) continue; - if (r_type == R_IA64_LTOFF22X) + if (r_type == R_IA64_GPREL22) + elfNN_ia64_update_short_info (tsec->output_section, + tsec->output_offset + toff, + ia64_info); + else if (r_type == R_IA64_LTOFF22X) { irel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (irel->r_info), R_IA64_GPREL22); @@ -1181,6 +1246,10 @@ dyn_i->want_gotx = 0; changed_got |= !dyn_i->want_got; } + + elfNN_ia64_update_short_info (tsec->output_section, + tsec->output_offset + toff, + ia64_info); } else { @@ -1341,8 +1410,6 @@ const char *name, int shindex) { - asection *newsect; - /* There ought to be a place to keep ELF backend specific flags, but at the moment there isn't one. We just keep track of the sections by their name, instead. Fortunately, the ABI gives @@ -1365,7 +1432,6 @@ if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex)) return FALSE; - newsect = hdr->bfd_section; return TRUE; } @@ -1392,7 +1458,7 @@ elfNN_ia64_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec) { - register const char *name; + const char *name; name = bfd_get_section_name (abfd, sec); @@ -1829,21 +1895,22 @@ derived hash table to keep information specific to the IA-64 ElF linker (without using static variables). */ -static struct bfd_link_hash_table* +static struct bfd_link_hash_table * elfNN_ia64_hash_table_create (bfd *abfd) { struct elfNN_ia64_link_hash_table *ret; ret = bfd_zmalloc ((bfd_size_type) sizeof (*ret)); if (!ret) - return 0; + return NULL; if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, elfNN_ia64_new_elf_hash_entry, - sizeof (struct elfNN_ia64_link_hash_entry))) + sizeof (struct elfNN_ia64_link_hash_entry), + IA64_ELF_DATA)) { free (ret); - return 0; + return NULL; } ret->loc_hash_table = htab_try_create (1024, elfNN_ia64_local_htab_hash, @@ -1852,7 +1919,7 @@ if (!ret->loc_hash_table || !ret->loc_hash_memory) { free (ret); - return 0; + return NULL; } return &ret->root.root; @@ -1998,6 +2065,8 @@ return FALSE; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return FALSE; { flagword flags = bfd_get_section_flags (abfd, ia64_info->root.sgot); @@ -2080,7 +2149,7 @@ unsigned int count) { bfd_vma curr, prev, got_offset; - unsigned int i, kept, dup, diff, dest, src, len; + unsigned int i, kept, dupes, diff, dest, src, len; qsort (info, count, sizeof (*info), addend_compare); @@ -2145,35 +2214,35 @@ /* Find the next duplicate. SRC will be kept. */ prev = info [src].addend; got_offset = info [src].got_offset; - for (dup = src + 1; dup < count; dup++) + for (dupes = src + 1; dupes < count; dupes ++) { - curr = info [dup].addend; + curr = info [dupes].addend; if (curr == prev) { /* Make sure that got_offset is valid. */ if (got_offset == (bfd_vma) -1) - got_offset = info [dup].got_offset; + got_offset = info [dupes].got_offset; /* For duplicates, make sure that the kept one has a valid got_offset. */ if (got_offset != (bfd_vma) -1) - info [dup - 1].got_offset = got_offset; + info [dupes - 1].got_offset = got_offset; break; } - got_offset = info [dup].got_offset; + got_offset = info [dupes].got_offset; prev = curr; } /* How much to move. */ - len = dup - src; - i = dup + 1; + len = dupes - src; + i = dupes + 1; - if (len == 1 && dup < count) + if (len == 1 && dupes < count) { /* If we only move 1 element, we combine it with the next one. There must be at least a duplicate. Find the next different one. */ - for (diff = dup + 1, src++; diff < count; diff++, src++) + for (diff = dupes + 1, src++; diff < count; diff++, src++) { if (info [diff].addend != curr) break; @@ -2194,18 +2263,18 @@ offset. */ prev = info [diff].addend; got_offset = info [diff].got_offset; - for (dup = diff + 1; dup < count; dup++) + for (dupes = diff + 1; dupes < count; dupes ++) { - curr = info [dup].addend; + curr = info [dupes].addend; if (curr == prev) { /* For duplicates, make sure that GOT_OFFSET is valid. */ if (got_offset == (bfd_vma) -1) - got_offset = info [dup].got_offset; + got_offset = info [dupes].got_offset; break; } - got_offset = info [dup].got_offset; + got_offset = info [dupes].got_offset; prev = curr; diff++; } @@ -2530,17 +2599,10 @@ srel_name = (bfd_elf_string_from_elf_section (abfd, elf_elfheader(abfd)->e_shstrndx, - elf_section_data(sec)->rel_hdr.sh_name)); + _bfd_elf_single_rel_hdr (sec)->sh_name)); if (srel_name == NULL) return NULL; - BFD_ASSERT ((CONST_STRNEQ (srel_name, ".rela") - && strcmp (bfd_get_section_name (abfd, sec), - srel_name+5) == 0) - || (CONST_STRNEQ (srel_name, ".rel") - && strcmp (bfd_get_section_name (abfd, sec), - srel_name+4) == 0)); - dynobj = ia64_info->root.dynobj; if (!dynobj) ia64_info->root.dynobj = dynobj = abfd; @@ -2625,6 +2687,8 @@ symtab_hdr = &elf_tdata (abfd)->symtab_hdr; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return FALSE; got = fptr = srel = pltoff = NULL; @@ -3052,7 +3116,7 @@ static bfd_boolean allocate_global_data_got (struct elfNN_ia64_dyn_sym_info *dyn_i, - PTR data) + void * data) { struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_data *)data; @@ -3080,6 +3144,9 @@ struct elfNN_ia64_link_hash_table *ia64_info; ia64_info = elfNN_ia64_hash_table (x->info); + if (ia64_info == NULL) + return FALSE; + if (ia64_info->self_dtpmod_offset == (bfd_vma) -1) { ia64_info->self_dtpmod_offset = x->ofs; @@ -3100,7 +3167,7 @@ static bfd_boolean allocate_global_fptr_got (struct elfNN_ia64_dyn_sym_info *dyn_i, - PTR data) + void * data) { struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_data *)data; @@ -3289,6 +3356,8 @@ bfd_boolean dynamic_symbol, shared, resolved_zero; ia64_info = elfNN_ia64_hash_table (x->info); + if (ia64_info == NULL) + return FALSE; /* Note that this can't be used in relation to FPTR relocs below. */ dynamic_symbol = elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info, 0); @@ -3436,6 +3505,8 @@ dynobj = elf_hash_table(info)->dynobj; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return FALSE; ia64_info->self_dtpmod_offset = (bfd_vma) -1; BFD_ASSERT(dynobj != NULL); data.info = info; @@ -3804,7 +3875,7 @@ switch (opnd) { case IA64_OPND_IMMU64: - hit_addr -= (long) hit_addr & 0x3; + hit_addr -= (intptr_t) hit_addr & 0x3; t0 = bfd_getl64 (hit_addr); t1 = bfd_getl64 (hit_addr + 8); @@ -3833,7 +3904,7 @@ break; case IA64_OPND_TGT64: - hit_addr -= (long) hit_addr & 0x3; + hit_addr -= (intptr_t) hit_addr & 0x3; t0 = bfd_getl64 (hit_addr); t1 = bfd_getl64 (hit_addr + 8); @@ -3858,7 +3929,7 @@ break; default: - switch ((long) hit_addr & 0x3) + switch ((intptr_t) hit_addr & 0x3) { case 0: shift = 5; break; case 1: shift = 14; hit_addr += 3; break; @@ -3941,6 +4012,9 @@ bfd_vma got_offset; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return 0; + got_sec = ia64_info->root.sgot; switch (dyn_r_type) @@ -4078,6 +4152,9 @@ asection *fptr_sec; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return 0; + fptr_sec = ia64_info->fptr_sec; if (!dyn_i->fptr_done) @@ -4128,6 +4205,9 @@ asection *pltoff_sec; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return 0; + pltoff_sec = ia64_info->pltoff_sec; /* Don't do anything if this symbol uses a real PLT entry. In @@ -4228,6 +4308,8 @@ struct elfNN_ia64_link_hash_table *ia64_info; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return FALSE; /* Find the min and max vma of all sections marked short. Also collect min and max vma of any type, for use in selecting a nice gp. */ @@ -4256,6 +4338,20 @@ } } + if (ia64_info->min_short_sec) + { + if (min_short_vma + > (ia64_info->min_short_sec->vma + + ia64_info->min_short_offset)) + min_short_vma = (ia64_info->min_short_sec->vma + + ia64_info->min_short_offset); + if (max_short_vma + < (ia64_info->max_short_sec->vma + + ia64_info->max_short_offset)) + max_short_vma = (ia64_info->max_short_sec->vma + + ia64_info->max_short_offset); + } + /* See if the user wants to force a value. */ gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", FALSE, FALSE, FALSE); @@ -4273,17 +4369,30 @@ { /* Pick a sensible value. */ - asection *got_sec = ia64_info->root.sgot; + if (ia64_info->min_short_sec) + { + bfd_vma short_range = max_short_vma - min_short_vma; - /* Start with just the address of the .got. */ - if (got_sec) - gp_val = got_sec->output_section->vma; - else if (max_short_vma != 0) - gp_val = min_short_vma; - else if (max_vma - min_vma < 0x200000) - gp_val = min_vma; + /* If min_short_sec is set, pick one in the middle bewteen + min_short_vma and max_short_vma. */ + if (short_range >= 0x400000) + goto overflow; + gp_val = min_short_vma + short_range / 2; + } else - gp_val = max_vma - 0x200000 + 8; + { + asection *got_sec = ia64_info->root.sgot; + + /* Start with just the address of the .got. */ + if (got_sec) + gp_val = got_sec->output_section->vma; + else if (max_short_vma != 0) + gp_val = min_short_vma; + else if (max_vma - min_vma < 0x200000) + gp_val = min_vma; + else + gp_val = max_vma - 0x200000 + 8; + } /* If it is possible to address the entire image, but we don't with the choice above, adjust. */ @@ -4310,6 +4419,7 @@ { if (max_short_vma - min_short_vma >= 0x400000) { +overflow: (*_bfd_error_handler) (_("%s: short data segment overflowed (0x%lx >= 0x400000)"), bfd_get_filename (abfd), @@ -4340,6 +4450,8 @@ asection *unwind_output_sec; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return FALSE; /* Make sure we've got ourselves a nice fat __gp value. */ if (!info->relocatable) @@ -4422,6 +4534,8 @@ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return FALSE; /* Infect various flags from the input section to the output section. */ if (info->relocatable) @@ -4542,16 +4656,9 @@ continue; } - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ if (sym_sec != NULL && elf_discarded_section (sym_sec)) - { - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; @@ -4575,7 +4682,7 @@ case R_IA64_DIR64LSB: /* Install a dynamic relocation for this reloc. */ if ((dynamic_symbol_p || info->shared) - && r_symndx != 0 + && r_symndx != STN_UNDEF && (input_section->flags & SEC_ALLOC) != 0) { unsigned int dyn_r_type; @@ -4804,7 +4911,7 @@ case R_IA64_PCREL64MSB: case R_IA64_PCREL64LSB: /* Install a dynamic relocation for this reloc. */ - if (dynamic_symbol_p && r_symndx != 0) + if (dynamic_symbol_p && r_symndx != STN_UNDEF) { BFD_ASSERT (srel != NULL); @@ -5150,6 +5257,9 @@ struct elfNN_ia64_dyn_sym_info *dyn_i; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return FALSE; + dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, FALSE); /* Fill in the PLT data, if required. */ @@ -5158,18 +5268,18 @@ Elf_Internal_Rela outrel; bfd_byte *loc; asection *plt_sec; - bfd_vma plt_addr, pltoff_addr, gp_val, index; + bfd_vma plt_addr, pltoff_addr, gp_val, plt_index; gp_val = _bfd_get_gp_value (output_bfd); /* Initialize the minimal PLT entry. */ - index = (dyn_i->plt_offset - PLT_HEADER_SIZE) / PLT_MIN_ENTRY_SIZE; + plt_index = (dyn_i->plt_offset - PLT_HEADER_SIZE) / PLT_MIN_ENTRY_SIZE; plt_sec = ia64_info->root.splt; loc = plt_sec->contents + dyn_i->plt_offset; memcpy (loc, plt_min_entry, PLT_MIN_ENTRY_SIZE); - elfNN_ia64_install_value (loc, index, R_IA64_IMM22); + elfNN_ia64_install_value (loc, plt_index, R_IA64_IMM22); elfNN_ia64_install_value (loc+2, -dyn_i->plt_offset, R_IA64_PCREL21B); plt_addr = (plt_sec->output_section->vma @@ -5214,7 +5324,7 @@ PLT relocations. */ loc = ia64_info->rel_pltoff_sec->contents; - loc += ((ia64_info->rel_pltoff_sec->reloc_count + index) + loc += ((ia64_info->rel_pltoff_sec->reloc_count + plt_index) * sizeof (ElfNN_External_Rela)); bfd_elfNN_swap_reloca_out (output_bfd, &outrel, loc); } @@ -5236,6 +5346,9 @@ bfd *dynobj; ia64_info = elfNN_ia64_hash_table (info); + if (ia64_info == NULL) + return FALSE; + dynobj = ia64_info->root.dynobj; if (elf_hash_table (info)->dynamic_sections_created) @@ -5603,14 +5716,14 @@ } } +#ifdef INCLUDE_IA64_VMS + static bfd_boolean elfNN_vms_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr, const char *name, int shindex) { - asection *newsect; - switch (hdr->sh_type) { case SHT_IA_64_VMS_TRACE: @@ -5624,7 +5737,6 @@ if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex)) return FALSE; - newsect = hdr->bfd_section; return TRUE; } @@ -5864,12 +5976,14 @@ return _bfd_generic_close_and_cleanup (abfd); } +#endif /* INCLUDE_IA64_VMS */ #define TARGET_LITTLE_SYM bfd_elfNN_ia64_little_vec #define TARGET_LITTLE_NAME "elfNN-ia64-little" #define TARGET_BIG_SYM bfd_elfNN_ia64_big_vec #define TARGET_BIG_NAME "elfNN-ia64-big" #define ELF_ARCH bfd_arch_ia64 +#define ELF_TARGET_ID IA64_ELF_DATA #define ELF_MACHINE_CODE EM_IA_64 #define ELF_MACHINE_ALT1 1999 /* EAS2.3 */ #define ELF_MACHINE_ALT2 1998 /* EAS2.2 */ @@ -5997,6 +6111,7 @@ #include "elfNN-target.h" /* VMS-specific vectors. */ +#ifdef INCLUDE_IA64_VMS #undef TARGET_LITTLE_SYM #define TARGET_LITTLE_SYM bfd_elfNN_ia64_vms_vec @@ -6040,4 +6155,40 @@ #undef elfNN_bed #define elfNN_bed elfNN_ia64_vms_bed +/* Use VMS-style archives (in particular, don't use the standard coff + archive format). */ +#define bfd_elfNN_archive_functions + +#undef bfd_elfNN_archive_p +#define bfd_elfNN_archive_p _bfd_vms_lib_ia64_archive_p +#undef bfd_elfNN_write_archive_contents +#define bfd_elfNN_write_archive_contents _bfd_vms_lib_write_archive_contents +#undef bfd_elfNN_mkarchive +#define bfd_elfNN_mkarchive _bfd_vms_lib_ia64_mkarchive + +#define bfd_elfNN_archive_slurp_armap \ + _bfd_vms_lib_slurp_armap +#define bfd_elfNN_archive_slurp_extended_name_table \ + _bfd_vms_lib_slurp_extended_name_table +#define bfd_elfNN_archive_construct_extended_name_table \ + _bfd_vms_lib_construct_extended_name_table +#define bfd_elfNN_archive_truncate_arname \ + _bfd_vms_lib_truncate_arname +#define bfd_elfNN_archive_write_armap \ + _bfd_vms_lib_write_armap +#define bfd_elfNN_archive_read_ar_hdr \ + _bfd_vms_lib_read_ar_hdr +#define bfd_elfNN_archive_write_ar_hdr \ + _bfd_vms_lib_write_ar_hdr +#define bfd_elfNN_archive_openr_next_archived_file \ + _bfd_vms_lib_openr_next_archived_file +#define bfd_elfNN_archive_get_elt_at_index \ + _bfd_vms_lib_get_elt_at_index +#define bfd_elfNN_archive_generic_stat_arch_elt \ + _bfd_vms_lib_generic_stat_arch_elt +#define bfd_elfNN_archive_update_armap_timestamp \ + _bfd_vms_lib_update_armap_timestamp + #include "elfNN-target.h" + +#endif /* INCLUDE_IA64_VMS */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elfxx-mips.c crash-6.1.6/=unpacked-tar1=/bfd/elfxx-mips.c --- crash-5.1.6/=unpacked-tar1=/bfd/elfxx-mips.c 2009-09-03 18:31:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elfxx-mips.c 2011-01-22 10:16:28.000000000 +0000 @@ -1,6 +1,6 @@ /* MIPS-specific support for ELF Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Most of the information added by Ian Lance Taylor, Cygnus Support, . @@ -53,7 +53,7 @@ (abfd == NULL) (2) SYMBOL + OFFSET addresses, where SYMBOL is local to an input bfd (abfd != NULL, symndx >= 0) - (3) global and forced-local symbols + (3) SYMBOL addresses, where SYMBOL is not local to an input bfd (abfd != NULL, symndx == -1) Type (3) entries are treated differently for different types of GOT. @@ -94,8 +94,9 @@ that should be added to the symbol value. */ bfd_vma addend; /* If abfd != NULL && symndx == -1, the hash table entry - corresponding to a global symbol in the got (or, local, if - h->forced_local). */ + corresponding to symbol in the GOT. The symbol's entry + is in the local area if h->global_got_area is GGA_NONE, + otherwise it is in the global area. */ struct mips_elf_link_hash_entry *h; } d; @@ -177,7 +178,8 @@ /* Map an input bfd to a got in a multi-got link. */ -struct mips_elf_bfd2got_hash { +struct mips_elf_bfd2got_hash +{ bfd *bfd; struct mips_got_info *g; }; @@ -246,7 +248,7 @@ #define is_mips_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == MIPS_ELF_TDATA) + && elf_object_id (bfd) == MIPS_ELF_DATA) /* The ABI says that every symbol used by dynamic relocations must have a global GOT entry. Among other things, this provides the dynamic @@ -372,6 +374,11 @@ /* The highest GGA_* value that satisfies all references to this symbol. */ unsigned int global_got_area : 2; + /* True if all GOT relocations against this symbol are for calls. This is + a looser condition than no_fn_stub below, because there may be other + non-call non-GOT relocations against the symbol. */ + unsigned int got_only_for_calls : 1; + /* True if one of the relocations described by possibly_dynamic_relocs is against a readonly section. */ unsigned int readonly_reloc : 1; @@ -484,8 +491,15 @@ asection *(*add_stub_section) (const char *, asection *, asection *); }; +/* Get the MIPS ELF linker hash table from a link_info structure. */ + +#define mips_elf_hash_table(p) \ + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == MIPS_ELF_DATA ? ((struct mips_elf_link_hash_table *) ((p)->hash)) : NULL) + /* A structure used to communicate with htab_traverse callbacks. */ -struct mips_htab_traverse_info { +struct mips_htab_traverse_info +{ /* The usual link-wide information. */ struct bfd_link_info *info; bfd *output_bfd; @@ -679,6 +693,11 @@ all CPUs. */ #define JALR_TO_BAL_P(abfd) 1 +/* True if ABFD is for CPUs that are faster if JR is converted to B. + This should be safe for all architectures. We enable this predicate for + all CPUs. */ +#define JR_TO_B_P(abfd) 1 + /* True if ABFD is a PIC object. */ #define PIC_OBJECT_P(abfd) \ ((elf_elfheader (abfd)->e_flags & EF_MIPS_PIC) != 0) @@ -764,23 +783,6 @@ #define MIPS_ELF_RTYPE_TO_HOWTO(abfd, rtype, rela) \ (get_elf_backend_data (abfd)->elf_backend_mips_rtype_to_howto (rtype, rela)) -/* Determine whether the internal relocation of index REL_IDX is REL - (zero) or RELA (non-zero). The assumption is that, if there are - two relocation sections for this section, one of them is REL and - the other is RELA. If the index of the relocation we're testing is - in range for the first relocation section, check that the external - relocation size is that for RELA. It is also assumed that, if - rel_idx is not in range for the first section, and this first - section contains REL relocs, then the relocation is in the second - section, that is RELA. */ -#define MIPS_RELOC_RELA_P(abfd, sec, rel_idx) \ - ((NUM_SHDR_ENTRIES (&elf_section_data (sec)->rel_hdr) \ - * get_elf_backend_data (abfd)->s->int_rels_per_ext_rel \ - > (bfd_vma)(rel_idx)) \ - == (elf_section_data (sec)->rel_hdr.sh_entsize \ - == (ABI_64_P (abfd) ? sizeof (Elf64_External_Rela) \ - : sizeof (Elf32_External_Rela)))) - /* The name of the dynamic relocation section. */ #define MIPS_ELF_REL_DYN_NAME(INFO) \ (mips_elf_hash_table (INFO)->is_vxworks ? ".rela.dyn" : ".rel.dyn") @@ -1001,11 +1003,6 @@ (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func), \ (info))) -/* Get the MIPS ELF linker hash table from a link_info structure. */ - -#define mips_elf_hash_table(p) \ - ((struct mips_elf_link_hash_table *) ((p)->hash)) - /* Find the base offsets for thread-local storage in this object, for GD/LD and IE/LE respectively. */ @@ -1064,6 +1061,7 @@ ret->call_fp_stub = NULL; ret->tls_type = GOT_NORMAL; ret->global_got_area = GGA_NONE; + ret->got_only_for_calls = TRUE; ret->readonly_reloc = FALSE; ret->has_static_relocs = FALSE; ret->no_fn_stub = FALSE; @@ -1543,6 +1541,9 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + if (htab == NULL) + return FALSE; + htab->add_stub_section = fn; htab->la25_stubs = htab_try_create (1, mips_elf_la25_stub_hash, mips_elf_la25_stub_eq, NULL); @@ -1583,6 +1584,8 @@ unsigned int align; htab = mips_elf_hash_table (info); + if (htab == NULL) + return FALSE; /* Create a unique name for the new section. */ name = bfd_malloc (11 + sizeof (".text.stub.")); @@ -1626,6 +1629,8 @@ asection *s; htab = mips_elf_hash_table (info); + if (htab == NULL) + return FALSE; /* Create a trampoline section, if we haven't already. */ s = htab->strampoline; @@ -1676,6 +1681,9 @@ /* See if we've already created an equivalent stub. */ htab = mips_elf_hash_table (info); + if (htab == NULL) + return FALSE; + slot = htab_find_slot (htab->la25_stubs, &search, INSERT); if (slot == NULL) return FALSE; @@ -1870,6 +1878,12 @@ return r_type == R_MIPS16_26 || r_type == R_MIPS16_CALL16; } +static inline bfd_boolean +jal_reloc_p (int r_type) +{ + return r_type == R_MIPS_26 || r_type == R_MIPS16_26; +} + void _bfd_mips16_elf_reloc_unshuffle (bfd *abfd, int r_type, bfd_boolean jal_shuffle, bfd_byte *data) @@ -2842,6 +2856,9 @@ bfd_boolean need_relocs = FALSE; htab = mips_elf_hash_table (info); + if (htab == NULL) + return; + sgot = htab->sgot; indx = 0; @@ -3001,6 +3018,8 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + BFD_ASSERT (h->plt.offset != (bfd_vma) -1); /* This function only works for VxWorks, because a non-VxWorks .got.plt @@ -3037,6 +3056,8 @@ struct mips_got_entry *entry; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + entry = mips_elf_create_local_got_entry (abfd, info, ibfd, value, r_symndx, h, r_type); if (!entry) @@ -3064,11 +3085,13 @@ int r_type, struct bfd_link_info *info) { struct mips_elf_link_hash_table *htab; - bfd_vma index; + bfd_vma got_index; struct mips_got_info *g, *gg; long global_got_dynindx = 0; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + gg = g = htab->got_info; if (g->bfd2got && ibfd) { @@ -3122,8 +3145,8 @@ + h->root.u.def.section->output_offset + h->root.u.def.section->output_section->vma); - index = mips_tls_got_index (abfd, hm->tls_got_offset, &hm->tls_type, - r_type, info, hm, value); + got_index = mips_tls_got_index (abfd, hm->tls_got_offset, &hm->tls_type, + r_type, info, hm, value); } else { @@ -3132,12 +3155,12 @@ indices into the GOT. That makes it easy to calculate the GOT offset. */ BFD_ASSERT (h->dynindx >= global_got_dynindx); - index = ((h->dynindx - global_got_dynindx + g->local_gotno) - * MIPS_ELF_GOT_SIZE (abfd)); + got_index = ((h->dynindx - global_got_dynindx + g->local_gotno) + * MIPS_ELF_GOT_SIZE (abfd)); } - BFD_ASSERT (index < htab->sgot->size); + BFD_ASSERT (got_index < htab->sgot->size); - return index; + return got_index; } /* Find a GOT page entry that points to within 32KB of VALUE. These @@ -3150,7 +3173,7 @@ mips_elf_got_page (bfd *abfd, bfd *ibfd, struct bfd_link_info *info, bfd_vma value, bfd_vma *offsetp) { - bfd_vma page, index; + bfd_vma page, got_index; struct mips_got_entry *entry; page = (value + 0x8000) & ~(bfd_vma) 0xffff; @@ -3160,17 +3183,17 @@ if (!entry) return MINUS_ONE; - index = entry->gotidx; + got_index = entry->gotidx; if (offsetp) *offsetp = value - entry->d.address; - return index; + return got_index; } /* Find a local GOT entry for an R_MIPS*_GOT16 relocation against VALUE. - EXTERNAL is true if the relocation was against a global symbol - that has been forced local. */ + EXTERNAL is true if the relocation was originally against a global + symbol that binds locally. */ static bfd_vma mips_elf_got16_entry (bfd *abfd, bfd *ibfd, struct bfd_link_info *info, @@ -3201,18 +3224,20 @@ static bfd_vma mips_elf_got_offset_from_index (struct bfd_link_info *info, bfd *output_bfd, - bfd *input_bfd, bfd_vma index) + bfd *input_bfd, bfd_vma got_index) { struct mips_elf_link_hash_table *htab; asection *sgot; bfd_vma gp; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + sgot = htab->sgot; gp = _bfd_get_gp_value (output_bfd) + mips_elf_adjust_gp (output_bfd, htab->got_info, input_bfd); - return sgot->output_section->vma + sgot->output_offset + index - gp; + return sgot->output_section->vma + sgot->output_offset + got_index - gp; } /* Create and return a local GOT entry for VALUE, which was calculated @@ -3232,6 +3257,7 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); entry.abfd = NULL; entry.symndx = -1; @@ -3245,11 +3271,9 @@ BFD_ASSERT (g != NULL); } - /* We might have a symbol, H, if it has been forced local. Use the - global entry then. It doesn't matter whether an entry is local - or global for TLS, since the dynamic linker does not - automatically relocate TLS GOT entries. */ - BFD_ASSERT (h == NULL || h->root.forced_local); + /* This function shouldn't be called for symbols that live in the global + area of the GOT. */ + BFD_ASSERT (h == NULL || h->global_got_area == GGA_NONE); if (TLS_RELOC_P (r_type)) { struct mips_got_entry *p; @@ -3309,7 +3333,7 @@ { Elf_Internal_Rela outrel; asection *s; - bfd_byte *loc; + bfd_byte *rloc; bfd_vma got_address; s = mips_elf_rel_dyn_section (info, FALSE); @@ -3317,11 +3341,11 @@ + htab->sgot->output_offset + entry.gotidx); - loc = s->contents + (s->reloc_count++ * sizeof (Elf32_External_Rela)); + rloc = s->contents + (s->reloc_count++ * sizeof (Elf32_External_Rela)); outrel.r_offset = got_address; outrel.r_info = ELF32_R_INFO (STN_UNDEF, R_MIPS_32); outrel.r_addend = value; - bfd_elf32_swap_reloca_out (abfd, &outrel, loc); + bfd_elf32_swap_reloca_out (abfd, &outrel, rloc); } return *loc; @@ -3367,6 +3391,8 @@ return TRUE; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + g = htab->got_info; if (g == NULL) return TRUE; @@ -3440,11 +3466,13 @@ /* 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. */ + posterity. FOR_CALL is true if the caller is only interested in + using the GOT entry for calls. */ static bfd_boolean mips_elf_record_global_got_symbol (struct elf_link_hash_entry *h, bfd *abfd, struct bfd_link_info *info, + bfd_boolean for_call, unsigned char tls_flag) { struct mips_elf_link_hash_table *htab; @@ -3453,7 +3481,11 @@ struct mips_got_info *g; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + hmips = (struct mips_elf_link_hash_entry *) h; + if (!for_call) + hmips->got_only_for_calls = FALSE; /* A global symbol in the GOT must also be in the dynamic symbol table. */ @@ -3519,6 +3551,8 @@ struct mips_got_entry entry, **loc; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + g = htab->got_info; BFD_ASSERT (g != NULL); @@ -3601,6 +3635,8 @@ void **loc; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + g = htab->got_info; BFD_ASSERT (g != NULL); @@ -3692,6 +3728,8 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + s = mips_elf_rel_dyn_section (info, FALSE); BFD_ASSERT (s != NULL); @@ -3804,25 +3842,49 @@ } /* A mips_elf_link_hash_traverse callback for which DATA points - to a mips_got_info. Count the number of type (3) entries. */ + to the link_info structure. Count the number of type (3) entries + in the master GOT. */ static int mips_elf_count_got_symbols (struct mips_elf_link_hash_entry *h, void *data) { + struct bfd_link_info *info; + struct mips_elf_link_hash_table *htab; struct mips_got_info *g; - g = (struct mips_got_info *) data; + info = (struct bfd_link_info *) data; + htab = mips_elf_hash_table (info); + g = htab->got_info; if (h->global_got_area != GGA_NONE) { - if (h->root.forced_local || h->root.dynindx == -1) - { - /* We no longer need this entry if it was only used for - relocations; those relocations will be against the - null or section symbol instead of H. */ + /* Make a final decision about whether the symbol belongs in the + local or global GOT. Symbols that bind locally can (and in the + case of forced-local symbols, must) live in the local GOT. + Those that are aren't in the dynamic symbol table must also + live in the local GOT. + + Note that the former condition does not always imply the + latter: symbols do not bind locally if they are completely + undefined. We'll report undefined symbols later if appropriate. */ + if (h->root.dynindx == -1 + || (h->got_only_for_calls + ? SYMBOL_CALLS_LOCAL (info, &h->root) + : SYMBOL_REFERENCES_LOCAL (info, &h->root))) + { + /* The symbol belongs in the local GOT. We no longer need this + entry if it was only used for relocations; those relocations + will be against the null or section symbol instead of H. */ if (h->global_got_area != GGA_RELOC_ONLY) g->local_gotno++; h->global_got_area = GGA_NONE; } + else if (htab->is_vxworks + && h->got_only_for_calls + && h->root.plt.offset != MINUS_ONE) + /* On VxWorks, calls can refer directly to the .got.plt entry; + they don't need entries in the regular GOT. .got.plt entries + will be allocated by _bfd_mips_elf_adjust_dynamic_symbol. */ + h->global_got_area = GGA_NONE; else { g->global_gotno++; @@ -3964,7 +4026,7 @@ if (entry->tls_type & GOT_TLS_IE) g->tls_gotno += 1; } - else if (entry->symndx >= 0 || entry->d.h->root.forced_local) + else if (entry->symndx >= 0 || entry->d.h->global_got_area == GGA_NONE) ++g->local_gotno; else ++g->global_gotno; @@ -4231,6 +4293,8 @@ entry = (struct mips_got_entry *) *entryp; info = (struct bfd_link_info *) data; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + if (entry->abfd != NULL && entry->symndx == -1 && entry->d.h->needs_lazy_stub) @@ -4278,6 +4342,8 @@ dynobj = elf_hash_table (info)->dynobj; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + g = htab->got_info; g->bfd2got = htab_try_create (1, mips_elf_bfd2got_entry_hash, mips_elf_bfd2got_entry_eq, NULL); @@ -4507,17 +4573,15 @@ return NULL; } -/* Return whether a relocation is against a local symbol. */ +/* Return whether an input relocation is against a local symbol. */ static bfd_boolean mips_elf_local_relocation_p (bfd *input_bfd, const Elf_Internal_Rela *relocation, - asection **local_sections, - bfd_boolean check_forced) + asection **local_sections) { unsigned long r_symndx; Elf_Internal_Shdr *symtab_hdr; - struct mips_elf_link_hash_entry *h; size_t extsymoff; r_symndx = ELF_R_SYM (input_bfd, relocation->r_info); @@ -4529,20 +4593,6 @@ 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_elf_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_elf_link_hash_entry *) h->root.root.u.i.link; - if (h->root.forced_local) - return TRUE; - } - return FALSE; } @@ -4652,6 +4702,7 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); /* This function may be called more than once. */ if (htab->sgot) @@ -4770,8 +4821,8 @@ 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. + On exit, set *CROSS_MODE_JUMP_P to true if the relocation field + is a MIPS16 jump to non-MIPS16 code, or vice versa. This function returns bfd_reloc_continue if the caller need take no further action regarding this relocation, bfd_reloc_notsupported if @@ -4786,7 +4837,8 @@ bfd_vma addend, reloc_howto_type *howto, Elf_Internal_Sym *local_syms, asection **local_sections, bfd_vma *valuep, - const char **namep, bfd_boolean *require_jalxp, + const char **namep, + bfd_boolean *cross_mode_jump_p, bfd_boolean save_addend) { /* The eventual value we will return. */ @@ -4832,6 +4884,7 @@ dynobj = elf_hash_table (info)->dynobj; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); /* Parse the relocation. */ r_symndx = ELF_R_SYM (input_bfd, relocation->r_info); @@ -4847,7 +4900,7 @@ used in the array of hash table entries. */ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; local_p = mips_elf_local_relocation_p (input_bfd, relocation, - local_sections, FALSE); + local_sections); was_local_p = local_p; if (! elf_bad_symtab (input_bfd)) extsymoff = symtab_hdr->sh_info; @@ -4973,15 +5026,17 @@ http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf */ symbol = 0; } + else if ((*info->callbacks->undefined_symbol) + (info, h->root.root.root.string, input_bfd, + input_section, relocation->r_offset, + (info->unresolved_syms_in_objects == RM_GENERATE_ERROR) + || ELF_ST_VISIBILITY (h->root.other))) + { + return bfd_reloc_undefined; + } else { - if (! ((*info->callbacks->undefined_symbol) - (info, h->root.root.root.string, input_bfd, - input_section, relocation->r_offset, - (info->unresolved_syms_in_objects == RM_GENERATE_ERROR) - || ELF_ST_VISIBILITY (h->root.other)))) - return bfd_reloc_undefined; - symbol = 0; + return bfd_reloc_notsupported; } target_is_16_bit_code_p = ELF_ST_IS_MIPS16 (h->root.other); @@ -5073,13 +5128,13 @@ + h->la25_stub->offset); /* Calls from 16-bit code to 32-bit code and vice versa require the - special jalx instruction. */ - *require_jalxp = (!info->relocatable - && (((r_type == R_MIPS16_26) && !target_is_16_bit_code_p) - || ((r_type == R_MIPS_26) && target_is_16_bit_code_p))); + mode change. */ + *cross_mode_jump_p = !info->relocatable + && ((r_type == R_MIPS16_26 && !target_is_16_bit_code_p) + || ((r_type == R_MIPS_26 || r_type == R_MIPS_JALR) + && target_is_16_bit_code_p)); - local_p = mips_elf_local_relocation_p (input_bfd, relocation, - local_sections, TRUE); + local_p = h == NULL || SYMBOL_REFERENCES_LOCAL (info, &h->root); gp0 = _bfd_get_gp_value (input_bfd); gp = _bfd_get_gp_value (abfd); @@ -5089,19 +5144,18 @@ if (gnu_local_gp_p) symbol = gp; - /* If we haven't already determined the GOT offset, oand we're going + /* Global R_MIPS_GOT_PAGE relocations are equivalent to R_MIPS_GOT_DISP. + The addend is applied by the corresponding R_MIPS_GOT_OFST. */ + if (r_type == R_MIPS_GOT_PAGE && !local_p) + { + r_type = R_MIPS_GOT_DISP; + addend = 0; + } + + /* If we haven't already determined the GOT offset, and we're going to need it, get it now. */ switch (r_type) { - case R_MIPS_GOT_PAGE: - case R_MIPS_GOT_OFST: - /* We need to decay to GOT_DISP/addend if the symbol doesn't - bind locally. */ - local_p = local_p || _bfd_elf_symbol_refs_local_p (&h->root, info, 1); - if (local_p || r_type == R_MIPS_GOT_OFST) - break; - /* Fall through. */ - case R_MIPS16_CALL16: case R_MIPS16_GOT16: case R_MIPS_CALL16: @@ -5137,21 +5191,12 @@ } else { - /* GOT_PAGE may take a non-zero addend, that is ignored in a - GOT_PAGE relocation that decays to GOT_DISP because the - symbol turns out to be global. The addend is then added - as GOT_OFST. */ - BFD_ASSERT (addend == 0 || r_type == R_MIPS_GOT_PAGE); + BFD_ASSERT (addend == 0); g = mips_elf_global_got_index (dynobj, input_bfd, &h->root, r_type, info); if (h->tls_type == GOT_NORMAL - && (! elf_hash_table(info)->dynamic_sections_created - || (info->shared - && (info->symbolic || h->root.forced_local) - && h->root.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. */ + && !elf_hash_table (info)->dynamic_sections_created) + /* This is a static link. We must initialize the GOT entry. */ MIPS_ELF_PUT_WORD (dynobj, symbol, htab->sgot->contents + g); } } @@ -5220,7 +5265,7 @@ && h->root.def_dynamic && !h->root.def_regular && !h->has_static_relocs)) - && r_symndx != 0 + && r_symndx != STN_UNDEF && (h == NULL || h->root.root.type != bfd_link_hash_undefweak || ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT) @@ -5265,7 +5310,7 @@ mips_elf_perform_relocation. So, we just fall through to the R_MIPS_26 case here. */ case R_MIPS_26: - if (local_p) + if (was_local_p) value = ((addend | ((p + 4) & 0xf0000000)) + symbol) >> 2; else { @@ -5391,12 +5436,8 @@ R_MIPS*_GOT16; every relocation evaluates to "G". */ if (!htab->is_vxworks && local_p) { - bfd_boolean forced; - - forced = ! mips_elf_local_relocation_p (input_bfd, relocation, - local_sections, FALSE); value = mips_elf_got16_entry (abfd, input_bfd, info, - symbol + addend, forced); + symbol + addend, !was_local_p); if (value == MINUS_ONE) return bfd_reloc_outofrange; value @@ -5411,7 +5452,6 @@ case R_MIPS_TLS_GOTTPREL: case R_MIPS_TLS_LDM: case R_MIPS_GOT_DISP: - got_disp: value = g; overflowed_p = mips_elf_overflow_p (value, 16); break; @@ -5446,11 +5486,6 @@ break; case R_MIPS_GOT_PAGE: - /* GOT_PAGE relocations that reference non-local symbols decay - to GOT_DISP. The corresponding GOT_OFST relocation decays to - 0. */ - if (! local_p) - goto got_disp; value = mips_elf_got_page (abfd, input_bfd, info, symbol + addend, NULL); if (value == MINUS_ONE) return bfd_reloc_outofrange; @@ -5530,9 +5565,9 @@ /* 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. + relocation applies. + CROSS_MODE_JUMP_P is true if the relocation field + is a MIPS16 jump to non-MIPS16 code, or vice versa. Returns FALSE if anything goes wrong. */ @@ -5542,7 +5577,7 @@ const Elf_Internal_Rela *relocation, bfd_vma value, bfd *input_bfd, asection *input_section, bfd_byte *contents, - bfd_boolean require_jalx) + bfd_boolean cross_mode_jump_p) { bfd_vma x; bfd_byte *location; @@ -5563,7 +5598,7 @@ x |= (value & howto->dst_mask); /* If required, turn JAL into JALX. */ - if (require_jalx) + if (cross_mode_jump_p && jal_reloc_p (r_type)) { bfd_boolean ok; bfd_vma opcode = x >> 26; @@ -5585,7 +5620,7 @@ if (!ok) { (*_bfd_error_handler) - (_("%B: %A+0x%lx: jump to stub routine which is not jal"), + (_("%B: %A+0x%lx: Direct jumps between ISA modes are not allowed; consider recompiling with interlinking enabled."), input_bfd, input_section, (unsigned long) relocation->r_offset); @@ -5597,15 +5632,19 @@ x = (x & ~(0x3f << 26)) | (jalx_opcode << 26); } - /* Try converting JAL and JALR to BAL, if the target is in range. */ + /* Try converting JAL to BAL and J(AL)R to B(AL), if the target is in + range. */ if (!info->relocatable - && !require_jalx + && !cross_mode_jump_p && ((JAL_TO_BAL_P (input_bfd) && r_type == R_MIPS_26 && (x >> 26) == 0x3) /* jal addr */ || (JALR_TO_BAL_P (input_bfd) && r_type == R_MIPS_JALR - && x == 0x0320f809))) /* jalr t9 */ + && x == 0x0320f809) /* jalr t9 */ + || (JR_TO_B_P (input_bfd) + && r_type == R_MIPS_JALR + && x == 0x03200008))) /* jr t9 */ { bfd_vma addr; bfd_vma dest; @@ -5621,7 +5660,12 @@ dest = value; off = dest - addr; if (off <= 0x1ffff && off >= -0x20000) - x = 0x04110000 | (((bfd_vma) off >> 2) & 0xffff); /* bal addr */ + { + if (x == 0x03200008) /* jr t9 */ + x = 0x10000000 | (((bfd_vma) off >> 2) & 0xffff); /* b addr */ + else + x = 0x04110000 | (((bfd_vma) off >> 2) & 0xffff); /* bal addr */ + } } /* Put the value into the output. */ @@ -5655,6 +5699,8 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + r_type = ELF_R_TYPE (output_bfd, rel->r_info); dynobj = elf_hash_table (info)->dynobj; sreloc = mips_elf_rel_dyn_section (info, FALSE); @@ -5688,10 +5734,9 @@ /* We must now calculate the dynamic symbol table index to use in the relocation. */ - if (h != NULL - && (!h->root.def_regular - || (info->shared && !info->symbolic && !h->root.forced_local))) + if (h != NULL && ! SYMBOL_REFERENCES_LOCAL (info, &h->root)) { + BFD_ASSERT (htab->is_vxworks || h->global_got_area != GGA_NONE); indx = h->root.dynindx; if (SGI_COMPAT (output_bfd)) defined_p = h->root.def_regular; @@ -5901,6 +5946,9 @@ case E_MIPS_MACH_LS2F: return bfd_mach_mips_loongson_2f; + case E_MIPS_MACH_LS3A: + return bfd_mach_mips_loongson_3a; + case E_MIPS_MACH_OCTEON: return bfd_mach_mips_octeon; @@ -6844,6 +6892,8 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED | SEC_READONLY); @@ -7046,14 +7096,14 @@ Elf_Internal_Shdr *rel_hdr; const struct elf_backend_data *bed; - /* 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 (sec)->rel_hdr; + /* To determine which flavor of relocation this is, we depend on the + fact that the INPUT_SECTION's REL_HDR is read before RELA_HDR. */ + rel_hdr = elf_section_data (sec)->rel.hdr; + if (rel_hdr == NULL) + return FALSE; bed = get_elf_backend_data (abfd); - if ((size_t) (rel - relocs) - >= (NUM_SHDR_ENTRIES (rel_hdr) * bed->s->int_rels_per_ext_rel)) - rel_hdr = elf_section_data (sec)->rel_hdr2; - return rel_hdr->sh_entsize == MIPS_ELF_REL_SIZE (abfd); + return ((size_t) (rel - relocs) + < NUM_SHDR_ENTRIES (rel_hdr) * bed->s->int_rels_per_ext_rel); } /* Read the addend for REL relocation REL, which belongs to bfd ABFD. @@ -7180,6 +7230,8 @@ return TRUE; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + dynobj = elf_hash_table (info)->dynobj; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); @@ -7534,6 +7586,25 @@ elf_hash_table (info)->dynobj = dynobj = abfd; break; } + /* For sections that are not SEC_ALLOC a copy reloc would be + output if possible (implying questionable semantics for + read-only data objects) or otherwise the final link would + fail as ld.so will not process them and could not therefore + handle any outstanding dynamic relocations. + + For such sections that are also SEC_DEBUGGING, we can avoid + these problems by simply ignoring any relocs as these + sections have a predefined use and we know it is safe to do + so. + + This is needed in cases such as a global symbol definition + in a shared library causing a common symbol from an object + file to be converted to an undefined reference. If that + happens, then all the relocations against this symbol from + SEC_DEBUGGING sections in the object file will resolve to + nil. */ + if ((sec->flags & SEC_DEBUGGING) != 0) + break; /* Fall through. */ default: @@ -7610,11 +7681,10 @@ case R_MIPS_CALL_LO16: if (h != NULL) { - /* VxWorks call relocations point at the function's .got.plt - entry, which will be allocated by adjust_dynamic_symbol. - Otherwise, this symbol requires a global GOT entry. */ - if ((!htab->is_vxworks || h->forced_local) - && !mips_elf_record_global_got_symbol (h, abfd, info, 0)) + /* Make sure there is room in the regular GOT to hold the + function's address. We may eliminate it in favour of + a .got.plt entry later; see mips_elf_count_got_symbols. */ + if (!mips_elf_record_global_got_symbol (h, abfd, info, TRUE, 0)) return FALSE; /* We need a stub, not a plt entry for the undefined @@ -7658,7 +7728,7 @@ howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, r_type, FALSE); addend = mips_elf_read_rel_addend (abfd, rel, howto, contents); - if (r_type == R_MIPS_GOT16) + if (got16_reloc_p (r_type)) mips_elf_add_lo16_rel_addend (abfd, rel, rel_end, contents, &addend); else @@ -7674,7 +7744,8 @@ /* Fall through. */ case R_MIPS_GOT_DISP: - if (h && !mips_elf_record_global_got_symbol (h, abfd, info, 0)) + if (h && !mips_elf_record_global_got_symbol (h, abfd, info, + FALSE, 0)) return FALSE; break; @@ -7686,7 +7757,7 @@ case R_MIPS_TLS_LDM: if (r_type == R_MIPS_TLS_LDM) { - r_symndx = 0; + r_symndx = STN_UNDEF; h = NULL; } /* Fall through */ @@ -7706,13 +7777,13 @@ (struct mips_elf_link_hash_entry *) h; hmips->tls_type |= flag; - if (h && !mips_elf_record_global_got_symbol (h, abfd, - info, flag)) + if (h && !mips_elf_record_global_got_symbol (h, abfd, info, + FALSE, flag)) return FALSE; } else { - BFD_ASSERT (flag == GOT_TLS_LDM || r_symndx != 0); + BFD_ASSERT (flag == GOT_TLS_LDM || r_symndx != STN_UNDEF); if (!mips_elf_record_local_got_symbol (abfd, r_symndx, rel->r_addend, @@ -7852,7 +7923,7 @@ case R_MIPS_HIGHEST: /* Don't refuse a high part relocation if it's against no symbol (e.g. part of a compound relocation). */ - if (r_symndx == 0) + if (r_symndx == STN_UNDEF) break; /* R_MIPS_HI16 against _gp_disp is used for $gp setup, @@ -7861,6 +7932,10 @@ && strcmp (h->root.root.string, "_gp_disp") == 0) break; + /* Likewise __GOTT_BASE__ and __GOTT_INDEX__ on VxWorks. */ + if (is_gott_symbol (info, h)) + break; + /* FALLTHROUGH */ case R_MIPS16_26: @@ -8053,6 +8128,8 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + dynobj = elf_hash_table (info)->dynobj; hmips = (struct mips_elf_link_hash_entry *) h; @@ -8097,10 +8174,19 @@ if (do_copy) { /* 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 (hmips->global_got_area > GGA_RELOC_ONLY) - hmips->global_got_area = GGA_RELOC_ONLY; + the SVR4 psABI requires it to have a dynamic symbol table + index greater that DT_MIPS_GOTSYM if there are dynamic + relocations against it. + + VxWorks does not enforce the same mapping between the GOT + and the symbol table, so the same requirement does not + apply there. */ + if (!htab->is_vxworks) + { + if (hmips->global_got_area > GGA_RELOC_ONLY) + hmips->global_got_area = GGA_RELOC_ONLY; + hmips->got_only_for_calls = FALSE; + } mips_elf_allocate_dynamic_relocations (dynobj, info, hmips->possibly_dynamic_relocs); @@ -8129,6 +8215,8 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + dynobj = elf_hash_table (info)->dynobj; hmips = (struct mips_elf_link_hash_entry *) h; @@ -8323,6 +8411,7 @@ struct mips_htab_traverse_info hti; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); /* The .reginfo section has a fixed size. */ ri = bfd_get_section_by_name (output_bfd, ".reginfo"); @@ -8355,6 +8444,8 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + s = htab->sgot; if (s == NULL) return TRUE; @@ -8378,7 +8469,7 @@ return FALSE; /* Count the number of GOT symbols. */ - mips_elf_link_hash_traverse (htab, mips_elf_count_got_symbols, g); + mips_elf_link_hash_traverse (htab, mips_elf_count_got_symbols, info); /* Calculate the total loadable size of the output. That will give us the maximum number of GOT_PAGE entries @@ -8480,6 +8571,8 @@ bfd_size_type dynsymcount; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + if (htab->lazy_stub_count == 0) return; @@ -8531,12 +8624,13 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + if (htab->lazy_stub_count == 0) return; htab->sstubs->size = 0; - mips_elf_link_hash_traverse (mips_elf_hash_table (info), - mips_elf_allocate_lazy_stub, htab); + mips_elf_link_hash_traverse (htab, mips_elf_allocate_lazy_stub, htab); htab->sstubs->size += htab->function_stub_size; BFD_ASSERT (htab->sstubs->size == htab->lazy_stub_count * htab->function_stub_size); @@ -8554,6 +8648,7 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); dynobj = elf_hash_table (info)->dynobj; BFD_ASSERT (dynobj != NULL); @@ -8833,7 +8928,7 @@ Elf_Internal_Sym *sym; asection *sec; - if (mips_elf_local_relocation_p (input_bfd, rel, local_sections, FALSE)) + if (mips_elf_local_relocation_p (input_bfd, rel, local_sections)) { r_type = ELF_R_TYPE (output_bfd, rel->r_info); if (r_type == R_MIPS16_GPREL @@ -8883,7 +8978,7 @@ const char *name; bfd_vma value = 0; reloc_howto_type *howto; - bfd_boolean require_jalx; + bfd_boolean cross_mode_jump_p; /* TRUE if the relocation is a RELA relocation, rather than a REL relocation. */ bfd_boolean rela_relocation_p = TRUE; @@ -8893,17 +8988,17 @@ asection *sec; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry *h; + bfd_boolean rel_reloc; + rel_reloc = (NEWABI_P (input_bfd) + && mips_elf_rel_relocation_p (input_bfd, input_section, + relocs, rel)); /* Find the relocation howto for this relocation. */ - howto = MIPS_ELF_RTYPE_TO_HOWTO (input_bfd, r_type, - NEWABI_P (input_bfd) - && (MIPS_RELOC_RELA_P - (input_bfd, input_section, - rel - relocs))); + howto = MIPS_ELF_RTYPE_TO_HOWTO (input_bfd, r_type, !rel_reloc); r_symndx = ELF_R_SYM (input_bfd, rel->r_info); symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; - if (mips_elf_local_relocation_p (input_bfd, rel, local_sections, FALSE)) + if (mips_elf_local_relocation_p (input_bfd, rel, local_sections)) { sec = local_sections[r_symndx]; h = NULL; @@ -8927,15 +9022,8 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce sections, - or sections discarded by a linker script, we just want the - section contents zeroed. Avoid any special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (r_type == R_MIPS_64 && ! NEWABI_P (input_bfd)) { @@ -8968,13 +9056,11 @@ if (hi16_reloc_p (r_type) || (got16_reloc_p (r_type) && mips_elf_local_relocation_p (input_bfd, rel, - local_sections, FALSE))) + local_sections))) { if (!mips_elf_add_lo16_rel_addend (input_bfd, rel, relend, contents, &addend)) { - const char *name; - if (h) name = h->root.root.string; else @@ -9085,7 +9171,7 @@ input_section, info, rel, addend, howto, local_syms, local_sections, &value, - &name, &require_jalx, + &name, &cross_mode_jump_p, use_saved_addend_p)) { case bfd_reloc_continue: @@ -9115,14 +9201,14 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); BFD_ASSERT (name != NULL); if (!htab->small_data_overflow_reported - && (howto->type == R_MIPS_GPREL16 + && (gprel16_reloc_p (howto->type) || howto->type == R_MIPS_LITERAL)) { - const char *msg = - _("small-data section exceeds 64KB;" - " lower small-data size limit (see option -G)"); + msg = _("small-data section exceeds 64KB;" + " lower small-data size limit (see option -G)"); htab->small_data_overflow_reported = TRUE; (*info->callbacks->einfo) ("%P: %s\n", msg); @@ -9198,7 +9284,7 @@ /* Actually perform the relocation. */ if (! mips_elf_perform_relocation (info, howto, rel, value, input_bfd, input_section, - contents, require_jalx)) + contents, cross_mode_jump_p)) return FALSE; } @@ -9221,6 +9307,7 @@ stub = (struct mips_elf_la25_stub *) *slot; hti = (struct mips_htab_traverse_info *) data; htab = mips_elf_hash_table (hti->info); + BFD_ASSERT (htab != NULL); /* Create the section contents, if we haven't already. */ s = stub->stub_section; @@ -9335,6 +9422,7 @@ struct mips_elf_link_hash_entry *hmips; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); dynobj = elf_hash_table (info)->dynobj; hmips = (struct mips_elf_link_hash_entry *) h; @@ -9494,8 +9582,7 @@ /* 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) + if (hmips->global_got_area != GGA_NONE) { bfd_vma offset; bfd_vma value; @@ -9506,7 +9593,7 @@ MIPS_ELF_PUT_WORD (output_bfd, value, sgot->contents + offset); } - if (g->next && h->dynindx != -1 && h->type != STT_TLS) + if (hmips->global_got_area != GGA_NONE && g->next && h->type != STT_TLS) { struct mips_got_entry e, *p; bfd_vma entry; @@ -9672,9 +9759,12 @@ asection *sgot; struct mips_got_info *g; struct mips_elf_link_hash_table *htab; + struct mips_elf_link_hash_entry *hmips; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); dynobj = elf_hash_table (info)->dynobj; + hmips = (struct mips_elf_link_hash_entry *) h; if (h->plt.offset != (bfd_vma) -1) { @@ -9780,8 +9870,7 @@ BFD_ASSERT (g != NULL); /* See if this symbol has an entry in the GOT. */ - if (g->global_gotsym != NULL - && h->dynindx >= g->global_gotsym->dynindx) + if (hmips->global_got_area != GGA_NONE) { bfd_vma offset; Elf_Internal_Rela outrel; @@ -9841,6 +9930,8 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + if (ABI_64_P (output_bfd)) plt_entry = mips_n64_exec_plt0_entry; else if (ABI_N32_P (output_bfd)) @@ -9884,6 +9975,8 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + plt_entry = mips_vxworks_exec_plt0_entry; /* Calculate the value of _GLOBAL_OFFSET_TABLE_. */ @@ -9954,6 +10047,7 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); /* We just need to copy the entry byte-by-byte. */ for (i = 0; i < ARRAY_SIZE (mips_vxworks_shared_plt0_entry); i++) @@ -9974,6 +10068,8 @@ struct mips_elf_link_hash_table *htab; htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + dynobj = elf_hash_table (info)->dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); @@ -10224,22 +10320,22 @@ for (g = gg->next; g->next != gg; g = g->next) { - bfd_vma index = g->next->local_gotno + g->next->global_gotno + bfd_vma got_index = g->next->local_gotno + g->next->global_gotno + g->next->tls_gotno; MIPS_ELF_PUT_WORD (output_bfd, 0, sgot->contents - + index++ * MIPS_ELF_GOT_SIZE (output_bfd)); + + got_index++ * MIPS_ELF_GOT_SIZE (output_bfd)); MIPS_ELF_PUT_WORD (output_bfd, MIPS_ELF_GNU_GOT1_MASK (output_bfd), sgot->contents - + index++ * MIPS_ELF_GOT_SIZE (output_bfd)); + + got_index++ * MIPS_ELF_GOT_SIZE (output_bfd)); if (! info->shared) continue; - while (index < g->assigned_gotno) + while (got_index < g->assigned_gotno) { rel[0].r_offset = rel[1].r_offset = rel[2].r_offset - = index++ * MIPS_ELF_GOT_SIZE (output_bfd); + = got_index++ * MIPS_ELF_GOT_SIZE (output_bfd); if (!(mips_elf_create_dynamic_relocation (output_bfd, info, rel, NULL, bfd_abs_section_ptr, @@ -10467,6 +10563,10 @@ val = E_MIPS_ARCH_64 | E_MIPS_MACH_SB1; break; + case bfd_mach_mips_loongson_3a: + val = E_MIPS_ARCH_64 | E_MIPS_MACH_LS3A; + break; + case bfd_mach_mips_octeon: val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON; break; @@ -11432,15 +11532,6 @@ return NULL; } -/* Allocate ABFD's target-dependent data. */ - -bfd_boolean -_bfd_mips_elf_mkobject (bfd *abfd) -{ - return bfd_elf_allocate_object (abfd, sizeof (struct elf_obj_tdata), - MIPS_ELF_TDATA); -} - /* Create a MIPS ELF linker hash table. */ struct bfd_link_hash_table * @@ -11455,7 +11546,8 @@ if (!_bfd_elf_link_hash_table_init (&ret->root, abfd, mips_elf_link_hash_newfunc, - sizeof (struct mips_elf_link_hash_entry))) + sizeof (struct mips_elf_link_hash_entry), + MIPS_ELF_DATA)) { free (ret); return NULL; @@ -11560,6 +11652,8 @@ /* Sort the dynamic symbols so that those with GOT entries come after those without. */ htab = mips_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + if (!mips_elf_sort_hash_table (abfd, info)) return FALSE; @@ -12171,6 +12265,7 @@ { bfd_mach_mipsisa64r2, bfd_mach_mipsisa64 }, { bfd_mach_mips_sb1, bfd_mach_mipsisa64 }, { bfd_mach_mips_xlr, bfd_mach_mipsisa64 }, + { bfd_mach_mips_loongson_3a, bfd_mach_mipsisa64 }, /* MIPS V extensions. */ { bfd_mach_mipsisa64, bfd_mach_mips5 }, @@ -12502,8 +12597,11 @@ for (sec = ibfd->sections; sec != NULL; sec = sec->next) { /* Ignore synthetic sections and empty .text, .data and .bss sections - which are automatically generated by gas. */ - if (strcmp (sec->name, ".reginfo") + which are automatically generated by gas. Also ignore fake + (s)common sections, since merely defining a common symbol does + not affect compatibility. */ + if ((sec->flags & SEC_IS_COMMON) == 0 + && strcmp (sec->name, ".reginfo") && strcmp (sec->name, ".mdebug") && (sec->size != 0 || (strcmp (sec->name, ".text") @@ -12895,6 +12993,8 @@ if (link_info) { htab = mips_elf_hash_table (link_info); + BFD_ASSERT (htab != NULL); + if (htab->use_plts_and_copy_relocs && !htab->is_vxworks) i_ehdrp->e_ident[EI_ABIVERSION] = 1; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elfxx-mips.h crash-6.1.6/=unpacked-tar1=/bfd/elfxx-mips.h --- crash-5.1.6/=unpacked-tar1=/bfd/elfxx-mips.h 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elfxx-mips.h 2010-08-25 14:53:45.000000000 +0000 @@ -21,6 +21,7 @@ #include "elf/common.h" #include "elf/internal.h" +#include "elf/mips.h" extern bfd_boolean _bfd_mips_elf_new_section_hook (bfd *, asection *); @@ -91,8 +92,6 @@ extern bfd_byte *_bfd_elf_mips_get_relocated_section_contents (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, bfd_boolean, asymbol **); -extern bfd_boolean _bfd_mips_elf_mkobject - (bfd *); extern struct bfd_link_hash_table *_bfd_mips_elf_link_hash_table_create (bfd *); extern struct bfd_link_hash_table *_bfd_mips_vxworks_link_hash_table_create @@ -153,6 +152,12 @@ extern bfd_boolean _bfd_mips_elf_common_definition (Elf_Internal_Sym *); +static inline bfd_boolean +gprel16_reloc_p (unsigned int r_type) +{ + return r_type == R_MIPS_GPREL16 || r_type == R_MIPS16_GPREL; +} + #define elf_backend_common_definition _bfd_mips_elf_common_definition #define elf_backend_name_local_section_symbols \ _bfd_mips_elf_name_local_section_symbols diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elfxx-sparc.c crash-6.1.6/=unpacked-tar1=/bfd/elfxx-sparc.c --- crash-5.1.6/=unpacked-tar1=/bfd/elfxx-sparc.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elfxx-sparc.c 2011-03-14 15:54:58.000000000 +0000 @@ -1,5 +1,5 @@ /* SPARC-specific support for ELF - Copyright 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -31,6 +31,8 @@ #include "opcode/sparc.h" #include "elfxx-sparc.h" #include "elf-vxworks.h" +#include "objalloc.h" +#include "hashtab.h" /* In case we're on a 32-bit machine, construct a 64-bit "-1" value. */ #define MINUS_ONE (~ (bfd_vma) 0) @@ -265,6 +267,10 @@ HOWTO(R_SPARC_GOTDATA_OP_LOX10,0,2,0,FALSE,0,complain_overflow_dont, sparc_elf_lox10_reloc, "R_SPARC_GOTDATA_OP_LOX10",FALSE,0,0x000003ff, FALSE), HOWTO(R_SPARC_GOTDATA_OP,0,0, 0,FALSE,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_GOTDATA_OP",FALSE,0,0x00000000,TRUE), }; +static reloc_howto_type sparc_jmp_irel_howto = + HOWTO(R_SPARC_JMP_IREL, 0,0,00,FALSE,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_JMP_IREL",FALSE,0,0x00000000,TRUE); +static reloc_howto_type sparc_irelative_howto = + HOWTO(R_SPARC_IRELATIVE, 0,0,00,FALSE,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_IRELATIVE",FALSE,0,0x00000000,TRUE); static reloc_howto_type sparc_vtinherit_howto = HOWTO (R_SPARC_GNU_VTINHERIT, 0,2,0,FALSE,0,complain_overflow_dont, NULL, "R_SPARC_GNU_VTINHERIT", FALSE,0, 0, FALSE); static reloc_howto_type sparc_vtentry_howto = @@ -272,107 +278,257 @@ static reloc_howto_type sparc_rev32_howto = HOWTO(R_SPARC_REV32, 0,2,32,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_REV32", FALSE,0,0xffffffff,TRUE); -struct elf_reloc_map { - bfd_reloc_code_real_type bfd_reloc_val; - unsigned char elf_reloc_val; -}; - -static const struct elf_reloc_map sparc_reloc_map[] = -{ - { 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 }, - { BFD_RELOC_32, R_SPARC_32 }, - { BFD_RELOC_32_PCREL, R_SPARC_DISP32 }, - { 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 }, - { BFD_RELOC_SPARC_GOT13, R_SPARC_GOT13 }, - { BFD_RELOC_SPARC_GOT22, R_SPARC_GOT22 }, - { BFD_RELOC_SPARC_PC10, R_SPARC_PC10 }, - { BFD_RELOC_SPARC_PC22, R_SPARC_PC22 }, - { BFD_RELOC_SPARC_WPLT30, R_SPARC_WPLT30 }, - { BFD_RELOC_SPARC_COPY, R_SPARC_COPY }, - { BFD_RELOC_SPARC_GLOB_DAT, R_SPARC_GLOB_DAT }, - { BFD_RELOC_SPARC_JMP_SLOT, R_SPARC_JMP_SLOT }, - { BFD_RELOC_SPARC_RELATIVE, R_SPARC_RELATIVE }, - { BFD_RELOC_SPARC_WDISP22, R_SPARC_WDISP22 }, - { BFD_RELOC_SPARC_UA16, R_SPARC_UA16 }, - { BFD_RELOC_SPARC_UA32, R_SPARC_UA32 }, - { BFD_RELOC_SPARC_UA64, R_SPARC_UA64 }, - { BFD_RELOC_SPARC_10, R_SPARC_10 }, - { BFD_RELOC_SPARC_11, R_SPARC_11 }, - { BFD_RELOC_SPARC_64, R_SPARC_64 }, - { BFD_RELOC_SPARC_OLO10, R_SPARC_OLO10 }, - { BFD_RELOC_SPARC_HH22, R_SPARC_HH22 }, - { BFD_RELOC_SPARC_HM10, R_SPARC_HM10 }, - { BFD_RELOC_SPARC_LM22, R_SPARC_LM22 }, - { BFD_RELOC_SPARC_PC_HH22, R_SPARC_PC_HH22 }, - { BFD_RELOC_SPARC_PC_HM10, R_SPARC_PC_HM10 }, - { BFD_RELOC_SPARC_PC_LM22, R_SPARC_PC_LM22 }, - { BFD_RELOC_SPARC_WDISP16, R_SPARC_WDISP16 }, - { BFD_RELOC_SPARC_WDISP19, R_SPARC_WDISP19 }, - { BFD_RELOC_SPARC_7, R_SPARC_7 }, - { BFD_RELOC_SPARC_5, R_SPARC_5 }, - { BFD_RELOC_SPARC_6, R_SPARC_6 }, - { BFD_RELOC_SPARC_DISP64, R_SPARC_DISP64 }, - { BFD_RELOC_SPARC_TLS_GD_HI22, R_SPARC_TLS_GD_HI22 }, - { BFD_RELOC_SPARC_TLS_GD_LO10, R_SPARC_TLS_GD_LO10 }, - { BFD_RELOC_SPARC_TLS_GD_ADD, R_SPARC_TLS_GD_ADD }, - { BFD_RELOC_SPARC_TLS_GD_CALL, R_SPARC_TLS_GD_CALL }, - { BFD_RELOC_SPARC_TLS_LDM_HI22, R_SPARC_TLS_LDM_HI22 }, - { BFD_RELOC_SPARC_TLS_LDM_LO10, R_SPARC_TLS_LDM_LO10 }, - { BFD_RELOC_SPARC_TLS_LDM_ADD, R_SPARC_TLS_LDM_ADD }, - { BFD_RELOC_SPARC_TLS_LDM_CALL, R_SPARC_TLS_LDM_CALL }, - { BFD_RELOC_SPARC_TLS_LDO_HIX22, R_SPARC_TLS_LDO_HIX22 }, - { BFD_RELOC_SPARC_TLS_LDO_LOX10, R_SPARC_TLS_LDO_LOX10 }, - { BFD_RELOC_SPARC_TLS_LDO_ADD, R_SPARC_TLS_LDO_ADD }, - { BFD_RELOC_SPARC_TLS_IE_HI22, R_SPARC_TLS_IE_HI22 }, - { BFD_RELOC_SPARC_TLS_IE_LO10, R_SPARC_TLS_IE_LO10 }, - { BFD_RELOC_SPARC_TLS_IE_LD, R_SPARC_TLS_IE_LD }, - { BFD_RELOC_SPARC_TLS_IE_LDX, R_SPARC_TLS_IE_LDX }, - { BFD_RELOC_SPARC_TLS_IE_ADD, R_SPARC_TLS_IE_ADD }, - { BFD_RELOC_SPARC_TLS_LE_HIX22, R_SPARC_TLS_LE_HIX22 }, - { BFD_RELOC_SPARC_TLS_LE_LOX10, R_SPARC_TLS_LE_LOX10 }, - { BFD_RELOC_SPARC_TLS_DTPMOD32, R_SPARC_TLS_DTPMOD32 }, - { BFD_RELOC_SPARC_TLS_DTPMOD64, R_SPARC_TLS_DTPMOD64 }, - { BFD_RELOC_SPARC_TLS_DTPOFF32, R_SPARC_TLS_DTPOFF32 }, - { BFD_RELOC_SPARC_TLS_DTPOFF64, R_SPARC_TLS_DTPOFF64 }, - { BFD_RELOC_SPARC_TLS_TPOFF32, R_SPARC_TLS_TPOFF32 }, - { BFD_RELOC_SPARC_TLS_TPOFF64, R_SPARC_TLS_TPOFF64 }, - { BFD_RELOC_SPARC_PLT32, R_SPARC_PLT32 }, - { BFD_RELOC_SPARC_PLT64, R_SPARC_PLT64 }, - { BFD_RELOC_SPARC_HIX22, R_SPARC_HIX22 }, - { BFD_RELOC_SPARC_LOX10, R_SPARC_LOX10 }, - { BFD_RELOC_SPARC_H44, R_SPARC_H44 }, - { BFD_RELOC_SPARC_M44, R_SPARC_M44 }, - { BFD_RELOC_SPARC_L44, R_SPARC_L44 }, - { BFD_RELOC_SPARC_GOTDATA_HIX22, R_SPARC_GOTDATA_HIX22 }, - { BFD_RELOC_SPARC_GOTDATA_LOX10, R_SPARC_GOTDATA_LOX10 }, - { BFD_RELOC_SPARC_GOTDATA_OP_HIX22, R_SPARC_GOTDATA_OP_HIX22 }, - { BFD_RELOC_SPARC_GOTDATA_OP_LOX10, R_SPARC_GOTDATA_OP_LOX10 }, - { BFD_RELOC_SPARC_GOTDATA_OP, R_SPARC_GOTDATA_OP }, - { BFD_RELOC_SPARC_REGISTER, R_SPARC_REGISTER }, - { BFD_RELOC_VTABLE_INHERIT, R_SPARC_GNU_VTINHERIT }, - { BFD_RELOC_VTABLE_ENTRY, R_SPARC_GNU_VTENTRY }, - { BFD_RELOC_SPARC_REV32, R_SPARC_REV32 }, -}; - reloc_howto_type * _bfd_sparc_elf_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, bfd_reloc_code_real_type code) { - unsigned int i; - + /* We explicitly handle each relocation type in the switch + instead of using a lookup table for efficiency. */ switch (code) { + case BFD_RELOC_NONE: + return &_bfd_sparc_elf_howto_table[R_SPARC_NONE]; + + case BFD_RELOC_8: + return &_bfd_sparc_elf_howto_table[R_SPARC_8]; + + case BFD_RELOC_16: + return &_bfd_sparc_elf_howto_table[R_SPARC_16]; + + case BFD_RELOC_32: + return &_bfd_sparc_elf_howto_table[R_SPARC_32]; + + case BFD_RELOC_8_PCREL: + return &_bfd_sparc_elf_howto_table[R_SPARC_DISP8]; + + case BFD_RELOC_16_PCREL: + return &_bfd_sparc_elf_howto_table[R_SPARC_DISP16]; + + case BFD_RELOC_32_PCREL: + return &_bfd_sparc_elf_howto_table[R_SPARC_DISP32]; + + case BFD_RELOC_32_PCREL_S2: + return &_bfd_sparc_elf_howto_table[R_SPARC_WDISP30]; + + case BFD_RELOC_SPARC_WDISP22: + return &_bfd_sparc_elf_howto_table[R_SPARC_WDISP22]; + + case BFD_RELOC_HI22: + return &_bfd_sparc_elf_howto_table[R_SPARC_HI22]; + + case BFD_RELOC_SPARC22: + return &_bfd_sparc_elf_howto_table[R_SPARC_22]; + + case BFD_RELOC_SPARC13: + return &_bfd_sparc_elf_howto_table[R_SPARC_13]; + + case BFD_RELOC_LO10: + return &_bfd_sparc_elf_howto_table[R_SPARC_LO10]; + + case BFD_RELOC_SPARC_GOT10: + return &_bfd_sparc_elf_howto_table[R_SPARC_GOT10]; + + case BFD_RELOC_SPARC_GOT13: + return &_bfd_sparc_elf_howto_table[R_SPARC_GOT13]; + + case BFD_RELOC_SPARC_GOT22: + return &_bfd_sparc_elf_howto_table[R_SPARC_GOT22]; + + case BFD_RELOC_SPARC_PC10: + return &_bfd_sparc_elf_howto_table[R_SPARC_PC10]; + + case BFD_RELOC_SPARC_PC22: + return &_bfd_sparc_elf_howto_table[R_SPARC_PC22]; + + case BFD_RELOC_SPARC_WPLT30: + return &_bfd_sparc_elf_howto_table[R_SPARC_WPLT30]; + + case BFD_RELOC_SPARC_COPY: + return &_bfd_sparc_elf_howto_table[R_SPARC_COPY]; + + case BFD_RELOC_SPARC_GLOB_DAT: + return &_bfd_sparc_elf_howto_table[R_SPARC_GLOB_DAT]; + + case BFD_RELOC_SPARC_JMP_SLOT: + return &_bfd_sparc_elf_howto_table[R_SPARC_JMP_SLOT]; + + case BFD_RELOC_SPARC_RELATIVE: + return &_bfd_sparc_elf_howto_table[R_SPARC_RELATIVE]; + + case BFD_RELOC_SPARC_UA32: + return &_bfd_sparc_elf_howto_table[R_SPARC_UA32]; + + case BFD_RELOC_SPARC_PLT32: + return &_bfd_sparc_elf_howto_table[R_SPARC_PLT32]; + + case BFD_RELOC_SPARC_10: + return &_bfd_sparc_elf_howto_table[R_SPARC_10]; + + case BFD_RELOC_SPARC_11: + return &_bfd_sparc_elf_howto_table[R_SPARC_11]; + + case BFD_RELOC_SPARC_64: + return &_bfd_sparc_elf_howto_table[R_SPARC_64]; + + case BFD_RELOC_SPARC_OLO10: + return &_bfd_sparc_elf_howto_table[R_SPARC_OLO10]; + + case BFD_RELOC_SPARC_HH22: + return &_bfd_sparc_elf_howto_table[R_SPARC_HH22]; + + case BFD_RELOC_SPARC_HM10: + return &_bfd_sparc_elf_howto_table[R_SPARC_HM10]; + + case BFD_RELOC_SPARC_LM22: + return &_bfd_sparc_elf_howto_table[R_SPARC_LM22]; + + case BFD_RELOC_SPARC_PC_HH22: + return &_bfd_sparc_elf_howto_table[R_SPARC_PC_HH22]; + + case BFD_RELOC_SPARC_PC_HM10: + return &_bfd_sparc_elf_howto_table[R_SPARC_PC_HM10]; + + case BFD_RELOC_SPARC_PC_LM22: + return &_bfd_sparc_elf_howto_table[R_SPARC_PC_LM22]; + + case BFD_RELOC_SPARC_WDISP16: + return &_bfd_sparc_elf_howto_table[R_SPARC_WDISP16]; + + case BFD_RELOC_SPARC_WDISP19: + return &_bfd_sparc_elf_howto_table[R_SPARC_WDISP19]; + + case BFD_RELOC_SPARC_7: + return &_bfd_sparc_elf_howto_table[R_SPARC_7]; + + case BFD_RELOC_SPARC_5: + return &_bfd_sparc_elf_howto_table[R_SPARC_5]; + + case BFD_RELOC_SPARC_6: + return &_bfd_sparc_elf_howto_table[R_SPARC_6]; + + case BFD_RELOC_SPARC_DISP64: + return &_bfd_sparc_elf_howto_table[R_SPARC_DISP64]; + + case BFD_RELOC_SPARC_PLT64: + return &_bfd_sparc_elf_howto_table[R_SPARC_PLT64]; + + case BFD_RELOC_SPARC_HIX22: + return &_bfd_sparc_elf_howto_table[R_SPARC_HIX22]; + + case BFD_RELOC_SPARC_LOX10: + return &_bfd_sparc_elf_howto_table[R_SPARC_LOX10]; + + case BFD_RELOC_SPARC_H44: + return &_bfd_sparc_elf_howto_table[R_SPARC_H44]; + + case BFD_RELOC_SPARC_M44: + return &_bfd_sparc_elf_howto_table[R_SPARC_M44]; + + case BFD_RELOC_SPARC_L44: + return &_bfd_sparc_elf_howto_table[R_SPARC_L44]; + + case BFD_RELOC_SPARC_REGISTER: + return &_bfd_sparc_elf_howto_table[R_SPARC_REGISTER]; + + case BFD_RELOC_SPARC_UA64: + return &_bfd_sparc_elf_howto_table[R_SPARC_UA64]; + + case BFD_RELOC_SPARC_UA16: + return &_bfd_sparc_elf_howto_table[R_SPARC_UA16]; + + case BFD_RELOC_SPARC_TLS_GD_HI22: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_GD_HI22]; + + case BFD_RELOC_SPARC_TLS_GD_LO10: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_GD_LO10]; + + case BFD_RELOC_SPARC_TLS_GD_ADD: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_GD_ADD]; + + case BFD_RELOC_SPARC_TLS_GD_CALL: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_GD_CALL]; + + case BFD_RELOC_SPARC_TLS_LDM_HI22: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_LDM_HI22]; + + case BFD_RELOC_SPARC_TLS_LDM_LO10: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_LDM_LO10]; + + case BFD_RELOC_SPARC_TLS_LDM_ADD: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_LDM_ADD]; + + case BFD_RELOC_SPARC_TLS_LDM_CALL: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_LDM_CALL]; + + case BFD_RELOC_SPARC_TLS_LDO_HIX22: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_LDO_HIX22]; + + case BFD_RELOC_SPARC_TLS_LDO_LOX10: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_LDO_LOX10]; + + case BFD_RELOC_SPARC_TLS_LDO_ADD: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_LDO_ADD]; + + case BFD_RELOC_SPARC_TLS_IE_HI22: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_IE_HI22]; + + case BFD_RELOC_SPARC_TLS_IE_LO10: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_IE_LO10]; + + case BFD_RELOC_SPARC_TLS_IE_LD: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_IE_LD]; + + case BFD_RELOC_SPARC_TLS_IE_LDX: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_IE_LDX]; + + case BFD_RELOC_SPARC_TLS_IE_ADD: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_IE_ADD]; + + case BFD_RELOC_SPARC_TLS_LE_HIX22: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_LE_HIX22]; + + case BFD_RELOC_SPARC_TLS_LE_LOX10: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_LE_LOX10]; + + case BFD_RELOC_SPARC_TLS_DTPMOD32: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_DTPMOD32]; + + case BFD_RELOC_SPARC_TLS_DTPMOD64: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_DTPMOD64]; + + case BFD_RELOC_SPARC_TLS_DTPOFF32: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_DTPOFF32]; + + case BFD_RELOC_SPARC_TLS_DTPOFF64: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_DTPOFF64]; + + case BFD_RELOC_SPARC_TLS_TPOFF32: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_TPOFF32]; + + case BFD_RELOC_SPARC_TLS_TPOFF64: + return &_bfd_sparc_elf_howto_table[R_SPARC_TLS_TPOFF64]; + + case BFD_RELOC_SPARC_GOTDATA_HIX22: + return &_bfd_sparc_elf_howto_table[R_SPARC_GOTDATA_HIX22]; + + case BFD_RELOC_SPARC_GOTDATA_LOX10: + return &_bfd_sparc_elf_howto_table[R_SPARC_GOTDATA_LOX10]; + + case BFD_RELOC_SPARC_GOTDATA_OP_HIX22: + return &_bfd_sparc_elf_howto_table[R_SPARC_GOTDATA_OP_HIX22]; + + case BFD_RELOC_SPARC_GOTDATA_OP_LOX10: + return &_bfd_sparc_elf_howto_table[R_SPARC_GOTDATA_OP_LOX10]; + + case BFD_RELOC_SPARC_GOTDATA_OP: + return &_bfd_sparc_elf_howto_table[R_SPARC_GOTDATA_OP]; + + case BFD_RELOC_SPARC_JMP_IREL: + return &sparc_jmp_irel_howto; + + case BFD_RELOC_SPARC_IRELATIVE: + return &sparc_irelative_howto; + case BFD_RELOC_VTABLE_INHERIT: return &sparc_vtinherit_howto; @@ -383,14 +539,7 @@ return &sparc_rev32_howto; default: - for (i = 0; - i < sizeof (sparc_reloc_map) / sizeof (struct elf_reloc_map); - i++) - { - if (sparc_reloc_map[i].bfd_reloc_val == code) - return (_bfd_sparc_elf_howto_table - + (int) sparc_reloc_map[i].elf_reloc_val); - } + break; } bfd_set_error (bfd_error_bad_value); return NULL; @@ -425,6 +574,12 @@ { switch (r_type) { + case R_SPARC_JMP_IREL: + return &sparc_jmp_irel_howto; + + case R_SPARC_IRELATIVE: + return &sparc_irelative_howto; + case R_SPARC_GNU_VTINHERIT: return &sparc_vtinherit_howto; @@ -523,25 +678,25 @@ #define is_sparc_elf(bfd) \ (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ && elf_tdata (bfd) != NULL \ - && elf_object_id (bfd) == SPARC_ELF_TDATA) + && elf_object_id (bfd) == SPARC_ELF_DATA) bfd_boolean _bfd_sparc_elf_mkobject (bfd *abfd) { return bfd_elf_allocate_object (abfd, sizeof (struct _bfd_sparc_elf_obj_tdata), - SPARC_ELF_TDATA); + SPARC_ELF_DATA); } static void -sparc_put_word_32 (bfd *bfd, bfd_vma val, void *ptr) +sparc_put_word_32 (bfd *abfd, bfd_vma val, void *ptr) { - bfd_put_32 (bfd, val, ptr); + bfd_put_32 (abfd, val, ptr); } static void -sparc_put_word_64 (bfd *bfd, bfd_vma val, void *ptr) +sparc_put_word_64 (bfd *abfd, bfd_vma val, void *ptr) { - bfd_put_64 (bfd, val, ptr); + bfd_put_64 (abfd, val, ptr); } static void @@ -557,10 +712,10 @@ static bfd_vma sparc_elf_r_info_64 (Elf_Internal_Rela *in_rel ATTRIBUTE_UNUSED, - bfd_vma index ATTRIBUTE_UNUSED, + bfd_vma rel_index ATTRIBUTE_UNUSED, bfd_vma type ATTRIBUTE_UNUSED) { - return ELF64_R_INFO (index, + return ELF64_R_INFO (rel_index, (in_rel ? ELF64_R_TYPE_INFO (ELF64_R_TYPE_DATA (in_rel->r_info), type) : type)); @@ -568,9 +723,9 @@ static bfd_vma sparc_elf_r_info_32 (Elf_Internal_Rela *in_rel ATTRIBUTE_UNUSED, - bfd_vma index, bfd_vma type) + bfd_vma rel_index, bfd_vma type) { - return ELF32_R_INFO (index, type); + return ELF32_R_INFO (rel_index, type); } static bfd_vma @@ -634,7 +789,7 @@ { unsigned char *entry = splt->contents + offset; const unsigned int nop = SPARC_NOP; - int index; + int plt_index; if (offset < (PLT64_LARGE_THRESHOLD * PLT64_ENTRY_SIZE)) { @@ -642,9 +797,9 @@ *r_offset = offset; - index = (offset / PLT64_ENTRY_SIZE); + plt_index = (offset / PLT64_ENTRY_SIZE); - sethi = 0x03000000 | (index * PLT64_ENTRY_SIZE); + sethi = 0x03000000 | (plt_index * PLT64_ENTRY_SIZE); ba = 0x30680000 | (((splt->contents + PLT64_ENTRY_SIZE) - (entry + 4)) / 4 & 0x7ffff); @@ -691,7 +846,7 @@ ofs = offset % block_size; - index = (PLT64_LARGE_THRESHOLD + + plt_index = (PLT64_LARGE_THRESHOLD + (block * 160) + (ofs / insn_chunk_size)); @@ -721,7 +876,7 @@ bfd_put_64 (output_bfd, (bfd_vma) (splt->contents - (entry + 4)), ptr); } - return index - 4; + return plt_index - 4; } /* The format of the first PLT entry in a VxWorks executable. */ @@ -831,6 +986,78 @@ #define ELF32_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1" #define ELF64_DYNAMIC_INTERPRETER "/usr/lib/sparcv9/ld.so.1" +/* Compute a hash of a local hash entry. We use elf_link_hash_entry + for local symbol so that we can handle local STT_GNU_IFUNC symbols + as global symbol. We reuse indx and dynstr_index for local symbol + hash since they aren't used by global symbols in this backend. */ + +static hashval_t +elf_sparc_local_htab_hash (const void *ptr) +{ + struct elf_link_hash_entry *h + = (struct elf_link_hash_entry *) ptr; + return ELF_LOCAL_SYMBOL_HASH (h->indx, h->dynstr_index); +} + +/* Compare local hash entries. */ + +static int +elf_sparc_local_htab_eq (const void *ptr1, const void *ptr2) +{ + struct elf_link_hash_entry *h1 + = (struct elf_link_hash_entry *) ptr1; + struct elf_link_hash_entry *h2 + = (struct elf_link_hash_entry *) ptr2; + + return h1->indx == h2->indx && h1->dynstr_index == h2->dynstr_index; +} + +/* Find and/or create a hash entry for local symbol. */ + +static struct elf_link_hash_entry * +elf_sparc_get_local_sym_hash (struct _bfd_sparc_elf_link_hash_table *htab, + bfd *abfd, const Elf_Internal_Rela *rel, + bfd_boolean create) +{ + struct _bfd_sparc_elf_link_hash_entry e, *ret; + asection *sec = abfd->sections; + unsigned long r_symndx; + hashval_t h; + void **slot; + + r_symndx = SPARC_ELF_R_SYMNDX (htab, rel->r_info); + h = ELF_LOCAL_SYMBOL_HASH (sec->id, r_symndx); + + e.elf.indx = sec->id; + e.elf.dynstr_index = r_symndx; + slot = htab_find_slot_with_hash (htab->loc_hash_table, &e, h, + create ? INSERT : NO_INSERT); + + if (!slot) + return NULL; + + if (*slot) + { + ret = (struct _bfd_sparc_elf_link_hash_entry *) *slot; + return &ret->elf; + } + + ret = (struct _bfd_sparc_elf_link_hash_entry *) + objalloc_alloc ((struct objalloc *) htab->loc_hash_memory, + sizeof (struct _bfd_sparc_elf_link_hash_entry)); + if (ret) + { + memset (ret, 0, sizeof (*ret)); + ret->elf.indx = sec->id; + ret->elf.dynstr_index = r_symndx; + ret->elf.dynindx = -1; + ret->elf.plt.offset = (bfd_vma) -1; + ret->elf.got.offset = (bfd_vma) -1; + *slot = ret; + } + return &ret->elf; +} + /* Create a SPARC ELF linker hash table. */ struct bfd_link_hash_table * @@ -857,6 +1084,10 @@ ret->bytes_per_rela = sizeof (Elf64_External_Rela); ret->dynamic_interpreter = ELF64_DYNAMIC_INTERPRETER; ret->dynamic_interpreter_size = sizeof ELF64_DYNAMIC_INTERPRETER; + + ret->build_plt_entry = sparc64_plt_entry_build; + ret->plt_header_size = PLT64_HEADER_SIZE; + ret->plt_entry_size = PLT64_ENTRY_SIZE; } else { @@ -872,10 +1103,26 @@ ret->bytes_per_rela = sizeof (Elf32_External_Rela); ret->dynamic_interpreter = ELF32_DYNAMIC_INTERPRETER; ret->dynamic_interpreter_size = sizeof ELF32_DYNAMIC_INTERPRETER; + + ret->build_plt_entry = sparc32_plt_entry_build; + ret->plt_header_size = PLT32_HEADER_SIZE; + ret->plt_entry_size = PLT32_ENTRY_SIZE; } if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc, - sizeof (struct _bfd_sparc_elf_link_hash_entry))) + sizeof (struct _bfd_sparc_elf_link_hash_entry), + SPARC_ELF_DATA)) + { + free (ret); + return NULL; + } + + ret->loc_hash_table = htab_try_create (1024, + elf_sparc_local_htab_hash, + elf_sparc_local_htab_eq, + NULL); + ret->loc_hash_memory = objalloc_create (); + if (!ret->loc_hash_table || !ret->loc_hash_memory) { free (ret); return NULL; @@ -884,35 +1131,19 @@ return &ret->elf.root; } -/* Create .got and .rela.got sections in DYNOBJ, and set up - shortcuts to them in our hash table. */ +/* Destroy a SPARC ELF linker hash table. */ -static bfd_boolean -create_got_section (bfd *dynobj, struct bfd_link_info *info) +void +_bfd_sparc_elf_link_hash_table_free (struct bfd_link_hash_table *hash) { - struct _bfd_sparc_elf_link_hash_table *htab; + struct _bfd_sparc_elf_link_hash_table *htab + = (struct _bfd_sparc_elf_link_hash_table *) hash; - if (! _bfd_elf_create_got_section (dynobj, info)) - return FALSE; - - htab = _bfd_sparc_elf_hash_table (info); - htab->sgot = bfd_get_section_by_name (dynobj, ".got"); - BFD_ASSERT (htab->sgot != NULL); - - htab->srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); - if (htab->srelgot == NULL - || ! bfd_set_section_alignment (dynobj, htab->srelgot, - htab->word_align_power)) - return FALSE; - - if (htab->is_vxworks) - { - htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt"); - if (!htab->sgotplt) - return FALSE; - } - - return TRUE; + if (htab->loc_hash_table) + htab_delete (htab->loc_hash_table); + if (htab->loc_hash_memory) + objalloc_free ((struct objalloc *) htab->loc_hash_memory); + _bfd_generic_link_hash_table_free (hash); } /* Create .plt, .rela.plt, .got, .rela.got, .dynbss, and @@ -926,14 +1157,11 @@ struct _bfd_sparc_elf_link_hash_table *htab; htab = _bfd_sparc_elf_hash_table (info); - if (!htab->sgot && !create_got_section (dynobj, info)) - return FALSE; + BFD_ASSERT (htab != NULL); if (!_bfd_elf_create_dynamic_sections (dynobj, info)) return FALSE; - htab->splt = bfd_get_section_by_name (dynobj, ".plt"); - htab->srelplt = bfd_get_section_by_name (dynobj, ".rela.plt"); htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss"); if (!info->shared) htab->srelbss = bfd_get_section_by_name (dynobj, ".rela.bss"); @@ -957,29 +1185,45 @@ = 4 * ARRAY_SIZE (sparc_vxworks_exec_plt_entry); } } - else - { - if (ABI_64_P (dynobj)) - { - htab->build_plt_entry = sparc64_plt_entry_build; - htab->plt_header_size = PLT64_HEADER_SIZE; - htab->plt_entry_size = PLT64_ENTRY_SIZE; - } - else - { - htab->build_plt_entry = sparc32_plt_entry_build; - htab->plt_header_size = PLT32_HEADER_SIZE; - htab->plt_entry_size = PLT32_ENTRY_SIZE; - } - } - if (!htab->splt || !htab->srelplt || !htab->sdynbss + if (!htab->elf.splt || !htab->elf.srelplt || !htab->sdynbss || (!info->shared && !htab->srelbss)) abort (); return TRUE; } +static bfd_boolean +create_ifunc_sections (bfd *abfd, struct bfd_link_info *info) +{ + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + struct elf_link_hash_table *htab = elf_hash_table (info); + flagword flags, pltflags; + asection *s; + + if (htab->irelifunc != NULL || htab->iplt != NULL) + return TRUE; + + flags = bed->dynamic_sec_flags; + pltflags = flags | SEC_ALLOC | SEC_CODE | SEC_LOAD; + + s = bfd_make_section_with_flags (abfd, ".iplt", pltflags); + if (s == NULL + || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment)) + return FALSE; + htab->iplt = s; + + s = bfd_make_section_with_flags (abfd, ".rela.iplt", + flags | SEC_READONLY); + if (s == NULL + || ! bfd_set_section_alignment (abfd, s, + bed->s->log_file_align)) + return FALSE; + htab->irelplt = s; + + return TRUE; +} + /* Copy the extra info we tack onto an elf_link_hash_entry. */ void @@ -1082,7 +1326,6 @@ struct _bfd_sparc_elf_link_hash_table *htab; Elf_Internal_Shdr *symtab_hdr; struct elf_link_hash_entry **sym_hashes; - bfd_vma *local_got_offsets; const Elf_Internal_Rela *rel; const Elf_Internal_Rela *rel_end; asection *sreloc; @@ -1093,25 +1336,31 @@ return TRUE; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); symtab_hdr = &elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); - local_got_offsets = elf_local_got_offsets (abfd); sreloc = NULL; if (ABI_64_P (abfd)) - num_relocs = NUM_SHDR_ENTRIES (& elf_section_data (sec)->rel_hdr); + num_relocs = NUM_SHDR_ENTRIES (_bfd_elf_single_rel_hdr (sec)); else num_relocs = sec->reloc_count; BFD_ASSERT (is_sparc_elf (abfd) || num_relocs == 0); + if (htab->elf.dynobj == NULL) + htab->elf.dynobj = abfd; + if (!create_ifunc_sections (htab->elf.dynobj, info)) + return FALSE; + rel_end = relocs + num_relocs; for (rel = relocs; rel < rel_end; rel++) { unsigned int r_type; unsigned long r_symndx; struct elf_link_hash_entry *h; + Elf_Internal_Sym *isym; r_symndx = SPARC_ELF_R_SYMNDX (htab, rel->r_info); r_type = SPARC_ELF_R_TYPE (rel->r_info); @@ -1123,8 +1372,33 @@ return FALSE; } + isym = NULL; if (r_symndx < symtab_hdr->sh_info) - h = NULL; + { + /* A local symbol. */ + isym = bfd_sym_from_r_symndx (&htab->sym_cache, + abfd, r_symndx); + if (isym == NULL) + return FALSE; + + /* Check relocation against local STT_GNU_IFUNC symbol. */ + if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC) + { + h = elf_sparc_get_local_sym_hash (htab, abfd, rel, + TRUE); + if (h == NULL) + return FALSE; + + /* Fake a STT_GNU_IFUNC symbol. */ + h->type = STT_GNU_IFUNC; + h->def_regular = 1; + h->ref_regular = 1; + h->forced_local = 1; + h->root.type = bfd_link_hash_defined; + } + else + h = NULL; + } else { h = sym_hashes[r_symndx - symtab_hdr->sh_info]; @@ -1133,6 +1407,15 @@ h = (struct elf_link_hash_entry *) h->root.u.i.link; } + if (h && h->type == STT_GNU_IFUNC) + { + if (h->def_regular) + { + h->ref_regular = 1; + h->plt.refcount += 1; + } + } + /* Compatibility with old R_SPARC_REV32 reloc conflicting with R_SPARC_TLS_GD_HI22. */ if (! ABI_64_P (abfd) && ! checked_tlsgd) @@ -1198,8 +1481,6 @@ case R_SPARC_GOT10: case R_SPARC_GOT13: case R_SPARC_GOT22: - case R_SPARC_GOTDATA_HIX22: - case R_SPARC_GOTDATA_LOX10: case R_SPARC_GOTDATA_OP_HIX22: case R_SPARC_GOTDATA_OP_LOX10: tls_type = GOT_NORMAL; @@ -1239,7 +1520,16 @@ _bfd_sparc_elf_local_got_tls_type (abfd) = (char *) (local_got_refcounts + symtab_hdr->sh_info); } - local_got_refcounts[r_symndx] += 1; + switch (r_type) + { + case R_SPARC_GOTDATA_OP_HIX22: + case R_SPARC_GOTDATA_OP_LOX10: + break; + + default: + local_got_refcounts[r_symndx] += 1; + break; + } old_tls_type = _bfd_sparc_elf_local_got_tls_type (abfd) [r_symndx]; } @@ -1269,11 +1559,9 @@ } } - if (htab->sgot == NULL) + if (htab->elf.sgot == NULL) { - if (htab->elf.dynobj == NULL) - htab->elf.dynobj = abfd; - if (!create_got_section (htab->elf.dynobj, info)) + if (!_bfd_elf_create_got_section (htab->elf.dynobj, info)) return FALSE; } break; @@ -1428,14 +1716,17 @@ && (sec->flags & SEC_ALLOC) != 0 && (! _bfd_sparc_elf_howto_table[r_type].pc_relative || (h != NULL - && (! info->symbolic + && (! SYMBOLIC_BIND (info, h) || h->root.type == bfd_link_hash_defweak || !h->def_regular)))) || (!info->shared && (sec->flags & SEC_ALLOC) != 0 && h != NULL && (h->root.type == bfd_link_hash_defweak - || !h->def_regular))) + || !h->def_regular)) + || (!info->shared + && h != NULL + && h->type == STT_GNU_IFUNC)) { struct _bfd_sparc_elf_dyn_relocs *p; struct _bfd_sparc_elf_dyn_relocs **head; @@ -1445,9 +1736,6 @@ section in dynobj and make room for the reloc. */ if (sreloc == NULL) { - if (htab->elf.dynobj == NULL) - htab->elf.dynobj = abfd; - sreloc = _bfd_elf_make_dynamic_reloc_section (sec, htab->elf.dynobj, htab->word_align_power, abfd, /*rela?*/ TRUE); @@ -1467,13 +1755,8 @@ easily. Oh well. */ asection *s; void *vpp; - Elf_Internal_Sym *isym; - - isym = bfd_sym_from_r_symndx (&htab->sym_cache, - abfd, r_symndx); - if (isym == NULL) - return FALSE; + BFD_ASSERT (isym != NULL); s = bfd_section_from_elf_index (abfd, isym->st_shndx); if (s == NULL) s = sec; @@ -1565,6 +1848,7 @@ elf_section_data (sec)->local_dynrel = NULL; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); symtab_hdr = &elf_symtab_hdr (abfd); sym_hashes = elf_sym_hashes (abfd); local_got_refcounts = elf_local_got_refcounts (abfd); @@ -1625,8 +1909,17 @@ } else { - if (local_got_refcounts[r_symndx] > 0) - local_got_refcounts[r_symndx]--; + switch (r_type) + { + case R_SPARC_GOTDATA_OP_HIX22: + case R_SPARC_GOTDATA_OP_LOX10: + break; + + default: + if (local_got_refcounts[r_symndx] > 0) + local_got_refcounts[r_symndx]--; + break; + } } break; @@ -1710,10 +2003,12 @@ asection *s; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); /* Make sure we know what is going on here. */ BFD_ASSERT (htab->elf.dynobj != NULL && (h->needs_plt + || h->type == STT_GNU_IFUNC || h->u.weakdef != NULL || (h->def_dynamic && h->ref_regular @@ -1727,6 +2022,7 @@ some of their functions as STT_NOTYPE when they really should be STT_FUNC. */ if (h->type == STT_FUNC + || h->type == STT_GNU_IFUNC || h->needs_plt || (h->type == STT_NOTYPE && (h->root.type == bfd_link_hash_defined @@ -1734,11 +2030,10 @@ && (h->root.u.def.section->flags & SEC_CODE) != 0)) { if (h->plt.refcount <= 0 - || (! info->shared - && !h->def_dynamic - && !h->ref_dynamic - && h->root.type != bfd_link_hash_undefweak - && h->root.type != bfd_link_hash_undefined)) + || (h->type != STT_GNU_IFUNC + && (SYMBOL_CALLS_LOCAL (info, h) + || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT + && h->root.type == bfd_link_hash_undefweak)))) { /* This case can occur if we saw a WPLT30 reloc in an input file, but the symbol was never referred to by a dynamic @@ -1781,6 +2076,13 @@ if (!h->non_got_ref) return TRUE; + /* If -z nocopyreloc was given, we won't generate them either. */ + if (info->nocopyreloc) + { + h->non_got_ref = 0; + return TRUE; + } + eh = (struct _bfd_sparc_elf_link_hash_entry *) h; for (p = eh->dyn_relocs; p != NULL; p = p->next) { @@ -1851,9 +2153,13 @@ info = (struct bfd_link_info *) inf; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); - if (htab->elf.dynamic_sections_created - && h->plt.refcount > 0) + if ((htab->elf.dynamic_sections_created + && h->plt.refcount > 0) + || (h->type == STT_GNU_IFUNC + && h->def_regular + && h->ref_regular)) { /* Make sure this symbol is output as a dynamic symbol. Undefined weak syms won't yet be marked as dynamic. */ @@ -1864,9 +2170,14 @@ return FALSE; } - if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info->shared, h)) + if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info->shared, h) + || (h->type == STT_GNU_IFUNC + && h->def_regular)) { - asection *s = htab->splt; + asection *s = htab->elf.splt; + + if (s == NULL) + s = htab->elf.iplt; /* Allocate room for the header. */ if (s->size == 0) @@ -1916,12 +2227,15 @@ s->size += htab->plt_entry_size; /* We also need to make an entry in the .rela.plt section. */ - htab->srelplt->size += SPARC_ELF_RELA_BYTES (htab); + if (s == htab->elf.splt) + htab->elf.srelplt->size += SPARC_ELF_RELA_BYTES (htab); + else + htab->elf.irelplt->size += SPARC_ELF_RELA_BYTES (htab); if (htab->is_vxworks) { /* Allocate space for the .got.plt entry. */ - htab->sgotplt->size += 4; + htab->elf.sgotplt->size += 4; /* ...and for the .rela.plt.unloaded relocations. */ if (!info->shared) @@ -1962,7 +2276,7 @@ return FALSE; } - s = htab->sgot; + s = htab->elf.sgot; h->got.offset = s->size; s->size += SPARC_ELF_WORD_BYTES (htab); /* R_SPARC_TLS_GD_HI{22,LO10} needs 2 consecutive GOT slots. */ @@ -1973,12 +2287,13 @@ R_SPARC_TLS_GD_{HI22,LO10} needs one if local symbol and two if global. */ if ((tls_type == GOT_TLS_GD && h->dynindx == -1) - || tls_type == GOT_TLS_IE) - htab->srelgot->size += SPARC_ELF_RELA_BYTES (htab); + || tls_type == GOT_TLS_IE + || h->type == STT_GNU_IFUNC) + htab->elf.srelgot->size += SPARC_ELF_RELA_BYTES (htab); else if (tls_type == GOT_TLS_GD) - htab->srelgot->size += 2 * SPARC_ELF_RELA_BYTES (htab); + htab->elf.srelgot->size += 2 * SPARC_ELF_RELA_BYTES (htab); else if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h)) - htab->srelgot->size += SPARC_ELF_RELA_BYTES (htab); + htab->elf.srelgot->size += SPARC_ELF_RELA_BYTES (htab); } else h->got.offset = (bfd_vma) -1; @@ -1995,9 +2310,7 @@ if (info->shared) { - if (h->def_regular - && (h->forced_local - || info->symbolic)) + if (SYMBOL_CALLS_LOCAL (info, h)) { struct _bfd_sparc_elf_dyn_relocs **pp; @@ -2086,6 +2399,25 @@ return TRUE; } +/* Allocate space in .plt, .got and associated reloc sections for + local dynamic relocs. */ + +static bfd_boolean +allocate_local_dynrelocs (void **slot, void *inf) +{ + struct elf_link_hash_entry *h + = (struct elf_link_hash_entry *) *slot; + + if (h->type != STT_GNU_IFUNC + || !h->def_regular + || !h->ref_regular + || !h->forced_local + || h->root.type != bfd_link_hash_defined) + abort (); + + return allocate_dynrelocs (h, inf); +} + /* Find any dynamic relocs that apply to read-only sections. */ static bfd_boolean @@ -2144,6 +2476,7 @@ bfd *ibfd; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); dynobj = htab->elf.dynobj; BFD_ASSERT (dynobj != NULL); @@ -2197,6 +2530,8 @@ else if (p->count != 0) { srel = elf_section_data (p->sec)->sreloc; + if (!htab->elf.dynamic_sections_created) + srel = htab->elf.irelplt; srel->size += p->count * SPARC_ELF_RELA_BYTES (htab); if ((p->sec->output_section->flags & SEC_READONLY) != 0) info->flags |= DF_TEXTREL; @@ -2212,8 +2547,8 @@ locsymcount = symtab_hdr->sh_info; end_local_got = local_got + locsymcount; local_tls_type = _bfd_sparc_elf_local_got_tls_type (ibfd); - s = htab->sgot; - srel = htab->srelgot; + s = htab->elf.sgot; + srel = htab->elf.srelgot; for (; local_got < end_local_got; ++local_got, ++local_tls_type) { if (*local_got > 0) @@ -2236,9 +2571,9 @@ { /* Allocate 2 got entries and 1 dynamic reloc for R_SPARC_TLS_LDM_{HI22,LO10} relocs. */ - htab->tls_ldm_got.offset = htab->sgot->size; - htab->sgot->size += (2 * SPARC_ELF_WORD_BYTES (htab)); - htab->srelgot->size += SPARC_ELF_RELA_BYTES (htab); + htab->tls_ldm_got.offset = htab->elf.sgot->size; + htab->elf.sgot->size += (2 * SPARC_ELF_WORD_BYTES (htab)); + htab->elf.srelgot->size += SPARC_ELF_RELA_BYTES (htab); } else htab->tls_ldm_got.offset = -1; @@ -2247,20 +2582,23 @@ sym dynamic relocs. */ elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, (PTR) info); + /* Allocate .plt and .got entries, and space for local symbols. */ + htab_traverse (htab->loc_hash_table, allocate_local_dynrelocs, info); + if (! ABI_64_P (output_bfd) && !htab->is_vxworks && elf_hash_table (info)->dynamic_sections_created) { /* Make space for the trailing nop in .plt. */ - if (htab->splt->size > 0) - htab->splt->size += 1 * SPARC_INSN_BYTES; + if (htab->elf.splt->size > 0) + htab->elf.splt->size += 1 * SPARC_INSN_BYTES; /* If the .got section is more than 0x1000 bytes, we add 0x1000 to the value of _GLOBAL_OFFSET_TABLE_, so that 13 bit relocations have a greater chance of working. FIXME: Make this optimization work for 64-bit too. */ - if (htab->sgot->size >= 0x1000 + if (htab->elf.sgot->size >= 0x1000 && elf_hash_table (info)->hgot->root.u.def.value == 0) elf_hash_table (info)->hgot->root.u.def.value = 0x1000; } @@ -2273,10 +2611,11 @@ if ((s->flags & SEC_LINKER_CREATED) == 0) continue; - if (s == htab->splt - || s == htab->sgot + if (s == htab->elf.splt + || s == htab->elf.sgot || s == htab->sdynbss - || s == htab->sgotplt) + || s == htab->elf.iplt + || s == htab->elf.sgotplt) { /* Strip this section if we don't need it; see the comment below. */ @@ -2338,7 +2677,7 @@ return FALSE; } - if (htab->srelplt->size != 0) + if (htab->elf.srelplt->size != 0) { if (!add_dynamic_entry (DT_PLTGOT, 0) || !add_dynamic_entry (DT_PLTRELSZ, 0) @@ -2404,6 +2743,7 @@ entry->isym.st_info = ELF_ST_INFO (app_regs [reg].bind, STT_REGISTER); entry->isym.st_shndx = app_regs [reg].shndx; + entry->isym.st_target_internal = 0; entry->next = NULL; entry->input_bfd = output_bfd; entry->input_indx = -1; @@ -2480,11 +2820,31 @@ tpoff (struct bfd_link_info *info, bfd_vma address) { struct elf_link_hash_table *htab = elf_hash_table (info); + const struct elf_backend_data *bed = get_elf_backend_data (info->output_bfd); + bfd_vma static_tls_size; /* If tls_sec is NULL, we should have signalled an error already. */ if (htab->tls_sec == NULL) return 0; - return address - htab->tls_size - htab->tls_sec->vma; + + /* Consider special static TLS alignment requirements. */ + static_tls_size = BFD_ALIGN (htab->tls_size, bed->static_tls_alignment); + return address - static_tls_size - htab->tls_sec->vma; +} + +/* Return the relocation value for a %gdop relocation. */ + +static bfd_vma +gdopoff (struct bfd_link_info *info, bfd_vma address) +{ + struct elf_link_hash_table *htab = elf_hash_table (info); + bfd_vma got_base; + + got_base = (htab->hgot->root.u.def.value + + htab->hgot->root.u.def.section->output_offset + + htab->hgot->root.u.def.section->output_section->vma); + + return address - got_base; } /* Relocate a SPARC ELF section. */ @@ -2511,6 +2871,7 @@ bfd_boolean is_vxworks_tls; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); symtab_hdr = &elf_symtab_hdr (input_bfd); sym_hashes = elf_sym_hashes (input_bfd); local_got_offsets = elf_local_got_offsets (input_bfd); @@ -2529,7 +2890,7 @@ rel = relocs; if (ABI_64_P (output_bfd)) - num_relocs = NUM_SHDR_ENTRIES (& elf_section_data (input_section)->rel_hdr); + num_relocs = NUM_SHDR_ENTRIES (_bfd_elf_single_rel_hdr (input_section)); else num_relocs = input_section->reloc_count; relend = relocs + num_relocs; @@ -2568,6 +2929,20 @@ sym = local_syms + r_symndx; sec = local_sections[r_symndx]; relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); + + if (!info->relocatable + && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC) + { + /* Relocate against local STT_GNU_IFUNC symbol. */ + h = elf_sparc_get_local_sym_hash (htab, input_bfd, + rel, FALSE); + if (h == NULL) + abort (); + + /* Set STT_GNU_IFUNC symbol value. */ + h->root.u.def.value = sym->st_value; + h->root.u.def.section = sec; + } } else { @@ -2590,42 +2965,164 @@ } if (sec != NULL && elf_discarded_section (sec)) - { - /* For relocs against symbols from removed linkonce - sections, or sections discarded by a linker script, we - just want the section contents zeroed. Avoid any - special processing. */ - _bfd_clear_contents (howto, input_bfd, contents + rel->r_offset); - rel->r_info = 0; - rel->r_addend = 0; - continue; - } + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, relend, howto, contents); if (info->relocatable) continue; + if (h != NULL + && h->type == STT_GNU_IFUNC + && h->def_regular) + { + asection *plt_sec; + const char *name; + + if ((input_section->flags & SEC_ALLOC) == 0 + || h->plt.offset == (bfd_vma) -1) + abort (); + + plt_sec = htab->elf.splt; + if (! plt_sec) + plt_sec =htab->elf.iplt; + + switch (r_type) + { + case R_SPARC_GOTDATA_OP: + continue; + + case R_SPARC_GOTDATA_OP_HIX22: + case R_SPARC_GOTDATA_OP_LOX10: + r_type = (r_type == R_SPARC_GOTDATA_OP_HIX22 + ? R_SPARC_GOT22 + : R_SPARC_GOT10); + howto = _bfd_sparc_elf_howto_table + r_type; + /* Fall through. */ + + case R_SPARC_GOT10: + case R_SPARC_GOT13: + case R_SPARC_GOT22: + if (htab->elf.sgot == NULL) + abort (); + off = h->got.offset; + if (off == (bfd_vma) -1) + abort(); + relocation = htab->elf.sgot->output_offset + off - got_base; + goto do_relocation; + + case R_SPARC_WPLT30: + case R_SPARC_WDISP30: + relocation = (plt_sec->output_section->vma + + plt_sec->output_offset + h->plt.offset); + goto do_relocation; + + case R_SPARC_32: + case R_SPARC_64: + if (info->shared && h->non_got_ref) + { + Elf_Internal_Rela outrel; + bfd_vma offset; + + offset = _bfd_elf_section_offset (output_bfd, info, + input_section, + rel->r_offset); + if (offset == (bfd_vma) -1 + || offset == (bfd_vma) -2) + abort(); + + outrel.r_offset = (input_section->output_section->vma + + input_section->output_offset + + offset); + + if (h->dynindx == -1 + || h->forced_local + || info->executable) + { + outrel.r_info = SPARC_ELF_R_INFO (htab, NULL, + 0, R_SPARC_IRELATIVE); + outrel.r_addend = relocation + rel->r_addend; + } + else + { + if (h->dynindx == -1) + abort(); + outrel.r_info = SPARC_ELF_R_INFO (htab, rel, h->dynindx, r_type); + outrel.r_addend = rel->r_addend; + } + + sparc_elf_append_rela (output_bfd, sreloc, &outrel); + continue; + } + + relocation = (plt_sec->output_section->vma + + plt_sec->output_offset + h->plt.offset); + goto do_relocation; + + case R_SPARC_HI22: + case R_SPARC_LO10: + /* We should only see such relocs in static links. */ + if (info->shared) + abort(); + relocation = (plt_sec->output_section->vma + + plt_sec->output_offset + h->plt.offset); + goto do_relocation; + + default: + if (h->root.root.string) + name = h->root.root.string; + else + name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym, + NULL); + (*_bfd_error_handler) + (_("%B: relocation %s against STT_GNU_IFUNC " + "symbol `%s' isn't handled by %s"), input_bfd, + _bfd_sparc_elf_howto_table[r_type].name, + name, __FUNCTION__); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + } + switch (r_type) { - case R_SPARC_GOTDATA_HIX22: - case R_SPARC_GOTDATA_LOX10: case R_SPARC_GOTDATA_OP_HIX22: case R_SPARC_GOTDATA_OP_LOX10: - /* We don't support these code transformation optimizations - yet, so just leave the sequence alone and treat as - GOT22/GOT10. */ - if (r_type == R_SPARC_GOTDATA_HIX22 - || r_type == R_SPARC_GOTDATA_OP_HIX22) - r_type = R_SPARC_GOT22; + if (SYMBOL_REFERENCES_LOCAL (info, h)) + r_type = (r_type == R_SPARC_GOTDATA_OP_HIX22 + ? R_SPARC_GOTDATA_HIX22 + : R_SPARC_GOTDATA_LOX10); else - r_type = R_SPARC_GOT10; - /* Fall through. */ + r_type = (r_type == R_SPARC_GOTDATA_OP_HIX22 + ? R_SPARC_GOT22 + : R_SPARC_GOT10); + howto = _bfd_sparc_elf_howto_table + r_type; + break; + + case R_SPARC_GOTDATA_OP: + if (SYMBOL_REFERENCES_LOCAL (info, h)) + { + bfd_vma insn = bfd_get_32 (input_bfd, contents + rel->r_offset); + + /* {ld,ldx} [%rs1 + %rs2], %rd --> add %rs1, %rs2, %rd */ + relocation = 0x80000000 | (insn & 0x3e07c01f); + bfd_put_32 (output_bfd, relocation, contents + rel->r_offset); + } + continue; + } + + switch (r_type) + { + case R_SPARC_GOTDATA_HIX22: + case R_SPARC_GOTDATA_LOX10: + relocation = gdopoff (info, relocation); + break; case R_SPARC_GOT10: case R_SPARC_GOT13: case R_SPARC_GOT22: /* Relocation is to the entry for this symbol in the global offset table. */ - if (htab->sgot == NULL) + if (htab->elf.sgot == NULL) abort (); if (h != NULL) @@ -2638,10 +3135,7 @@ if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info->shared, h) || (info->shared - && (info->symbolic - || h->dynindx == -1 - || h->forced_local) - && h->def_regular)) + && SYMBOL_REFERENCES_LOCAL (info, h))) { /* This is actually a static link, or it is a -Bsymbolic link and the symbol is defined @@ -2660,7 +3154,7 @@ else { SPARC_ELF_PUT_WORD (htab, output_bfd, relocation, - htab->sgot->contents + off); + htab->elf.sgot->contents + off); h->got.offset |= 1; } } @@ -2689,11 +3183,11 @@ /* We need to generate a R_SPARC_RELATIVE reloc for the dynamic linker. */ - s = htab->srelgot; + s = htab->elf.srelgot; BFD_ASSERT (s != NULL); - outrel.r_offset = (htab->sgot->output_section->vma - + htab->sgot->output_offset + outrel.r_offset = (htab->elf.sgot->output_section->vma + + htab->elf.sgot->output_offset + off); outrel.r_info = SPARC_ELF_R_INFO (htab, NULL, 0, R_SPARC_RELATIVE); @@ -2703,11 +3197,11 @@ } SPARC_ELF_PUT_WORD (htab, output_bfd, relocation, - htab->sgot->contents + off); + htab->elf.sgot->contents + off); local_got_offsets[r_symndx] |= 1; } } - relocation = htab->sgot->output_offset + off - got_base; + relocation = htab->elf.sgot->output_offset + off - got_base; break; case R_SPARC_PLT32: @@ -2746,7 +3240,7 @@ BFD_ASSERT (h != NULL); } - if (h->plt.offset == (bfd_vma) -1 || htab->splt == NULL) + if (h->plt.offset == (bfd_vma) -1 || htab->elf.splt == NULL) { /* We didn't make a PLT entry for this symbol. This happens when statically linking PIC code, or when @@ -2754,8 +3248,8 @@ break; } - relocation = (htab->splt->output_section->vma - + htab->splt->output_offset + relocation = (htab->elf.splt->output_section->vma + + htab->elf.splt->output_offset + h->plt.offset); unresolved_reloc = FALSE; if (r_type == R_SPARC_PLT32 || r_type == R_SPARC_PLT64) @@ -2818,10 +3312,7 @@ || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT || h->root.type != bfd_link_hash_undefweak) && (! howto->pc_relative - || (h != NULL - && h->dynindx != -1 - && (! info->symbolic - || !h->def_regular)))) + || !SYMBOL_CALLS_LOCAL (info, h))) || (!info->shared && h != NULL && h->dynindx != -1 @@ -2898,8 +3389,11 @@ memset (&outrel, 0, sizeof outrel); /* h->dynindx may be -1 if the symbol was marked to become local. */ - else if (h != NULL && ! is_plt - && ((! info->symbolic && h->dynindx != -1) + else if (h != NULL && + h->dynindx != -1 + && (! is_plt + || !info->shared + || !SYMBOLIC_BIND (info, h) || !h->def_regular)) { BFD_ASSERT (h->dynindx != -1); @@ -2921,7 +3415,7 @@ outrel.r_addend = relocation + rel->r_addend; if (is_plt) - sec = htab->splt; + sec = htab->elf.splt; if (bfd_is_abs_section (sec)) indx = 0; @@ -3047,7 +3541,7 @@ } r_sparc_tlsldm: - if (htab->sgot == NULL) + if (htab->elf.sgot == NULL) abort (); if ((off & 1) != 0) @@ -3057,12 +3551,13 @@ Elf_Internal_Rela outrel; int dr_type, indx; - if (htab->srelgot == NULL) + if (htab->elf.srelgot == NULL) abort (); - SPARC_ELF_PUT_WORD (htab, output_bfd, 0, htab->sgot->contents + off); - outrel.r_offset = (htab->sgot->output_section->vma - + htab->sgot->output_offset + off); + SPARC_ELF_PUT_WORD (htab, output_bfd, 0, + htab->elf.sgot->contents + off); + outrel.r_offset = (htab->elf.sgot->output_section->vma + + htab->elf.sgot->output_offset + off); indx = h && h->dynindx != -1 ? h->dynindx : 0; if (r_type == R_SPARC_TLS_IE_HI22 || r_type == R_SPARC_TLS_IE_LO10) @@ -3074,7 +3569,7 @@ else outrel.r_addend = 0; outrel.r_info = SPARC_ELF_R_INFO (htab, NULL, indx, dr_type); - sparc_elf_append_rela (output_bfd, htab->srelgot, &outrel); + sparc_elf_append_rela (output_bfd, htab->elf.srelgot, &outrel); if (r_type == R_SPARC_TLS_GD_HI22 || r_type == R_SPARC_TLS_GD_LO10) @@ -3084,25 +3579,25 @@ BFD_ASSERT (! unresolved_reloc); SPARC_ELF_PUT_WORD (htab, output_bfd, relocation - dtpoff_base (info), - (htab->sgot->contents + off + (htab->elf.sgot->contents + off + SPARC_ELF_WORD_BYTES (htab))); } else { SPARC_ELF_PUT_WORD (htab, output_bfd, 0, - (htab->sgot->contents + off + (htab->elf.sgot->contents + off + SPARC_ELF_WORD_BYTES (htab))); outrel.r_info = SPARC_ELF_R_INFO (htab, NULL, indx, SPARC_ELF_DTPOFF_RELOC (htab)); outrel.r_offset += SPARC_ELF_WORD_BYTES (htab); - sparc_elf_append_rela (output_bfd, htab->srelgot, + sparc_elf_append_rela (output_bfd, htab->elf.srelgot, &outrel); } } else if (dr_type == SPARC_ELF_DTPMOD_RELOC (htab)) { SPARC_ELF_PUT_WORD (htab, output_bfd, 0, - (htab->sgot->contents + off + (htab->elf.sgot->contents + off + SPARC_ELF_WORD_BYTES (htab))); } } @@ -3110,7 +3605,7 @@ if (off >= (bfd_vma) -2) abort (); - relocation = htab->sgot->output_offset + off - got_base; + relocation = htab->elf.sgot->output_offset + off - got_base; unresolved_reloc = FALSE; howto = _bfd_sparc_elf_howto_table + r_type; break; @@ -3143,7 +3638,7 @@ if (info->shared) { Elf_Internal_Rela outrel; - bfd_boolean skip, relocate = FALSE; + bfd_boolean skip; BFD_ASSERT (sreloc != NULL); skip = FALSE; @@ -3153,7 +3648,7 @@ if (outrel.r_offset == (bfd_vma) -1) skip = TRUE; else if (outrel.r_offset == (bfd_vma) -2) - skip = TRUE, relocate = TRUE; + skip = TRUE; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); if (skip) @@ -3273,11 +3768,6 @@ } continue; - case R_SPARC_GOTDATA_OP: - /* We don't support gotdata code transformation optimizations - yet, so simply leave the sequence as-is. */ - continue; - case R_SPARC_TLS_IE_LD: case R_SPARC_TLS_IE_LDX: if (! info->shared && (h == NULL || h->dynindx == -1)) @@ -3401,12 +3891,15 @@ r = bfd_reloc_ok; } - else if (r_type == R_SPARC_HIX22) + else if (r_type == R_SPARC_HIX22 + || r_type == R_SPARC_GOTDATA_HIX22) { bfd_vma x; relocation += rel->r_addend; - relocation = relocation ^ MINUS_ONE; + if (r_type == R_SPARC_HIX22 + || (bfd_signed_vma) relocation < 0) + relocation = relocation ^ MINUS_ONE; x = bfd_get_32 (input_bfd, contents + rel->r_offset); x = (x & ~(bfd_vma) 0x3fffff) | ((relocation >> 10) & 0x3fffff); @@ -3417,12 +3910,17 @@ bfd_arch_bits_per_address (input_bfd), relocation); } - else if (r_type == R_SPARC_LOX10) + else if (r_type == R_SPARC_LOX10 + || r_type == R_SPARC_GOTDATA_LOX10) { bfd_vma x; relocation += rel->r_addend; - relocation = (relocation & 0x3ff) | 0x1c00; + if (r_type == R_SPARC_LOX10 + || (bfd_signed_vma) relocation < 0) + relocation = (relocation & 0x3ff) | 0x1c00; + else + relocation = (relocation & 0x3ff); x = bfd_get_32 (input_bfd, contents + rel->r_offset); x = (x & ~(bfd_vma) 0x1fff) | relocation; @@ -3522,10 +4020,12 @@ } if (r == bfd_reloc_continue) - r = _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, rel->r_offset, - relocation, rel->r_addend); - + { +do_relocation: + r = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, + relocation, rel->r_addend); + } if (r != bfd_reloc_ok) { switch (r) @@ -3606,6 +4106,8 @@ Elf_Internal_Rela rela; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + if (info->shared) { plt_entry = sparc_vxworks_shared_plt_entry; @@ -3621,33 +4123,33 @@ /* Fill in the entry in the procedure linkage table. */ bfd_put_32 (output_bfd, plt_entry[0] + ((got_base + got_offset) >> 10), - htab->splt->contents + plt_offset); + htab->elf.splt->contents + plt_offset); bfd_put_32 (output_bfd, plt_entry[1] + ((got_base + got_offset) & 0x3ff), - htab->splt->contents + plt_offset + 4); + htab->elf.splt->contents + plt_offset + 4); bfd_put_32 (output_bfd, plt_entry[2], - htab->splt->contents + plt_offset + 8); + htab->elf.splt->contents + plt_offset + 8); bfd_put_32 (output_bfd, plt_entry[3], - htab->splt->contents + plt_offset + 12); + htab->elf.splt->contents + plt_offset + 12); bfd_put_32 (output_bfd, plt_entry[4], - htab->splt->contents + plt_offset + 16); + htab->elf.splt->contents + plt_offset + 16); bfd_put_32 (output_bfd, plt_entry[5] + (plt_index >> 10), - htab->splt->contents + plt_offset + 20); + htab->elf.splt->contents + plt_offset + 20); /* PC-relative displacement for a branch to the start of the PLT section. */ bfd_put_32 (output_bfd, plt_entry[6] + (((-plt_offset - 24) >> 2) & 0x003fffff), - htab->splt->contents + plt_offset + 24); + htab->elf.splt->contents + plt_offset + 24); bfd_put_32 (output_bfd, plt_entry[7] + (plt_index & 0x3ff), - htab->splt->contents + plt_offset + 28); + htab->elf.splt->contents + plt_offset + 28); /* Fill in the .got.plt entry, pointing initially at the second half of the PLT entry. */ - BFD_ASSERT (htab->sgotplt != NULL); + BFD_ASSERT (htab->elf.sgotplt != NULL); bfd_put_32 (output_bfd, - htab->splt->output_section->vma - + htab->splt->output_offset + htab->elf.splt->output_section->vma + + htab->elf.splt->output_offset + plt_offset + 20, - htab->sgotplt->contents + got_offset); + htab->elf.sgotplt->contents + got_offset); /* Add relocations to .rela.plt.unloaded. */ if (!info->shared) @@ -3656,8 +4158,8 @@ + (2 + 3 * plt_index) * sizeof (Elf32_External_Rela)); /* Relocate the initial sethi. */ - rela.r_offset = (htab->splt->output_section->vma - + htab->splt->output_offset + rela.r_offset = (htab->elf.splt->output_section->vma + + htab->elf.splt->output_offset + plt_offset); rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_SPARC_HI22); rela.r_addend = got_offset; @@ -3671,8 +4173,8 @@ loc += sizeof (Elf32_External_Rela); /* Relocate the .got.plt entry. */ - rela.r_offset = (htab->sgotplt->output_section->vma - + htab->sgotplt->output_offset + rela.r_offset = (htab->elf.sgotplt->output_section->vma + + htab->elf.sgotplt->output_offset + got_offset); rela.r_info = ELF32_R_INFO (htab->elf.hplt->indx, R_SPARC_32); rela.r_addend = plt_offset + 20; @@ -3689,12 +4191,11 @@ struct elf_link_hash_entry *h, Elf_Internal_Sym *sym) { - bfd *dynobj; struct _bfd_sparc_elf_link_hash_table *htab; const struct elf_backend_data *bed; htab = _bfd_sparc_elf_hash_table (info); - dynobj = htab->elf.dynobj; + BFD_ASSERT (htab != NULL); bed = get_elf_backend_data (output_bfd); if (h->plt.offset != (bfd_vma) -1) @@ -3706,13 +4207,21 @@ bfd_vma r_offset, got_offset; int rela_index; - /* This symbol has an entry in the PLT. Set it up. */ - - BFD_ASSERT (h->dynindx != -1); + /* When building a static executable, use .iplt and + .rela.iplt sections for STT_GNU_IFUNC symbols. */ + if (htab->elf.splt != NULL) + { + splt = htab->elf.splt; + srela = htab->elf.srelplt; + } + else + { + splt = htab->elf.iplt; + srela = htab->elf.irelplt; + } - splt = htab->splt; - srela = htab->srelplt; - BFD_ASSERT (splt != NULL && srela != NULL); + if (splt == NULL || srela == NULL) + abort (); /* Fill in the entry in the .rela.plt section. */ if (htab->is_vxworks) @@ -3731,33 +4240,77 @@ /* On VxWorks, the relocation points to the .got.plt entry, not the .plt entry. */ - rela.r_offset = (htab->sgotplt->output_section->vma - + htab->sgotplt->output_offset + rela.r_offset = (htab->elf.sgotplt->output_section->vma + + htab->elf.sgotplt->output_offset + got_offset); rela.r_addend = 0; + rela.r_info = SPARC_ELF_R_INFO (htab, NULL, h->dynindx, + R_SPARC_JMP_SLOT); } else { + bfd_boolean ifunc = FALSE; + /* Fill in the entry in the procedure linkage table. */ rela_index = SPARC_ELF_BUILD_PLT_ENTRY (htab, output_bfd, splt, h->plt.offset, splt->size, &r_offset); + if (h == NULL + || h->dynindx == -1 + || ((info->executable + || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT) + && h->def_regular + && h->type == STT_GNU_IFUNC)) + { + ifunc = TRUE; + BFD_ASSERT (h == NULL + || (h->type == STT_GNU_IFUNC + && h->def_regular + && (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak))); + } + rela.r_offset = r_offset + (splt->output_section->vma + splt->output_offset); - if (! ABI_64_P (output_bfd) - || h->plt.offset < (PLT64_LARGE_THRESHOLD * PLT64_ENTRY_SIZE)) + if (ABI_64_P (output_bfd) + && h->plt.offset >= (PLT64_LARGE_THRESHOLD * PLT64_ENTRY_SIZE)) { - rela.r_addend = 0; + if (ifunc) + { + rela.r_addend = (h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset + + h->root.u.def.value); + rela.r_info = SPARC_ELF_R_INFO (htab, NULL, 0, + R_SPARC_IRELATIVE); + } + else + { + rela.r_addend = (-(h->plt.offset + 4) + - splt->output_section->vma + - splt->output_offset); + rela.r_info = SPARC_ELF_R_INFO (htab, NULL, h->dynindx, + R_SPARC_JMP_SLOT); + } } else { - rela.r_addend = (-(h->plt.offset + 4) - - splt->output_section->vma - - splt->output_offset); + if (ifunc) + { + rela.r_addend = (h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset + + h->root.u.def.value); + rela.r_info = SPARC_ELF_R_INFO (htab, NULL, 0, + R_SPARC_JMP_IREL); + } + else + { + rela.r_addend = 0; + rela.r_info = SPARC_ELF_R_INFO (htab, NULL, h->dynindx, + R_SPARC_JMP_SLOT); + } } } - rela.r_info = SPARC_ELF_R_INFO (htab, NULL, h->dynindx, R_SPARC_JMP_SLOT); /* Adjust for the first 4 reserved elements in the .plt section when setting the offset in the .rela.plt section. @@ -3792,8 +4345,8 @@ /* This symbol has an entry in the GOT. Set it up. */ - sgot = htab->sgot; - srela = htab->srelgot; + sgot = htab->elf.sgot; + srela = htab->elf.srelgot; BFD_ASSERT (sgot != NULL && srela != NULL); rela.r_offset = (sgot->output_section->vma @@ -3805,12 +4358,29 @@ the symbol was forced to be local because of a version file. The entry in the global offset table will already have been initialized in the relocate_section function. */ - if (info->shared - && (info->symbolic || h->dynindx == -1) + if (! info->shared + && h->type == STT_GNU_IFUNC && h->def_regular) { + asection *plt; + + /* We load the GOT entry with the PLT entry. */ + plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt; + SPARC_ELF_PUT_WORD (htab, output_bfd, + (plt->output_section->vma + + plt->output_offset + h->plt.offset), + htab->elf.sgot->contents + + (h->got.offset & ~(bfd_vma) 1)); + return TRUE; + } + else if (info->shared + && SYMBOL_REFERENCES_LOCAL (info, h)) + { asection *sec = h->root.u.def.section; - rela.r_info = SPARC_ELF_R_INFO (htab, NULL, 0, R_SPARC_RELATIVE); + if (h->type == STT_GNU_IFUNC) + rela.r_info = SPARC_ELF_R_INFO (htab, NULL, 0, R_SPARC_IRELATIVE); + else + rela.r_info = SPARC_ELF_R_INFO (htab, NULL, 0, R_SPARC_RELATIVE); rela.r_addend = (h->root.u.def.value + sec->output_section->vma + sec->output_offset); @@ -3849,9 +4419,10 @@ /* Mark some specially defined symbols as absolute. On VxWorks, _GLOBAL_OFFSET_TABLE_ is not absolute: it is relative to the ".got" section. Likewise _PROCEDURE_LINKAGE_TABLE_ and ".plt". */ - if (strcmp (h->root.root.string, "_DYNAMIC") == 0 - || (!htab->is_vxworks - && (h == htab->elf.hgot || h == htab->elf.hplt))) + if (sym != NULL + && (strcmp (h->root.root.string, "_DYNAMIC") == 0 + || (!htab->is_vxworks + && (h == htab->elf.hgot || h == htab->elf.hplt)))) sym->st_shndx = SHN_ABS; return TRUE; @@ -3872,6 +4443,7 @@ bfd_boolean abi_64_p; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); bed = get_elf_backend_data (output_bfd); dynsize = bed->s->sizeof_dyn; dynconend = sdyn->contents + sdyn->size; @@ -3888,9 +4460,9 @@ { /* On VxWorks, DT_RELASZ should not include the relocations in .rela.plt. */ - if (htab->srelplt) + if (htab->elf.srelplt) { - dyn.d_un.d_val -= htab->srelplt->size; + dyn.d_un.d_val -= htab->elf.srelplt->size; bed->s->swap_dyn_out (output_bfd, &dyn, dyncon); } } @@ -3898,10 +4470,10 @@ { /* On VxWorks, DT_PLTGOT should point to the start of the GOT, not to the start of the PLT. */ - if (htab->sgotplt) + if (htab->elf.sgotplt) { - dyn.d_un.d_val = (htab->sgotplt->output_section->vma - + htab->sgotplt->output_offset); + dyn.d_un.d_val = (htab->elf.sgotplt->output_section->vma + + htab->elf.sgotplt->output_offset); bed->s->swap_dyn_out (output_bfd, &dyn, dyncon); } } @@ -3963,6 +4535,7 @@ bfd_byte *loc; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); /* Calculate the absolute value of _GLOBAL_OFFSET_TABLE_. */ got_base = (htab->elf.hgot->root.u.def.section->output_section->vma @@ -3972,25 +4545,25 @@ /* Install the initial PLT entry. */ bfd_put_32 (output_bfd, sparc_vxworks_exec_plt0_entry[0] + ((got_base + 8) >> 10), - htab->splt->contents); + htab->elf.splt->contents); bfd_put_32 (output_bfd, sparc_vxworks_exec_plt0_entry[1] + ((got_base + 8) & 0x3ff), - htab->splt->contents + 4); + htab->elf.splt->contents + 4); bfd_put_32 (output_bfd, sparc_vxworks_exec_plt0_entry[2], - htab->splt->contents + 8); + htab->elf.splt->contents + 8); bfd_put_32 (output_bfd, sparc_vxworks_exec_plt0_entry[3], - htab->splt->contents + 12); + htab->elf.splt->contents + 12); bfd_put_32 (output_bfd, sparc_vxworks_exec_plt0_entry[4], - htab->splt->contents + 16); + htab->elf.splt->contents + 16); loc = htab->srelplt2->contents; /* Add an unloaded relocation for the initial entry's "sethi". */ - rela.r_offset = (htab->splt->output_section->vma - + htab->splt->output_offset); + rela.r_offset = (htab->elf.splt->output_section->vma + + htab->elf.splt->output_offset); rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_SPARC_HI22); rela.r_addend = 8; bfd_elf32_swap_reloca_out (output_bfd, &rela, loc); @@ -4038,9 +4611,26 @@ unsigned int i; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); + for (i = 0; i < ARRAY_SIZE (sparc_vxworks_shared_plt0_entry); i++) bfd_put_32 (output_bfd, sparc_vxworks_shared_plt0_entry[i], - htab->splt->contents + i * 4); + htab->elf.splt->contents + i * 4); +} + +/* Finish up local dynamic symbol handling. We set the contents of + various dynamic sections here. */ + +static bfd_boolean +finish_local_dynamic_symbol (void **slot, void *inf) +{ + struct elf_link_hash_entry *h + = (struct elf_link_hash_entry *) *slot; + struct bfd_link_info *info + = (struct bfd_link_info *) inf; + + return _bfd_sparc_elf_finish_dynamic_symbol (info->output_bfd, info, + h, NULL); } bfd_boolean @@ -4051,6 +4641,7 @@ struct _bfd_sparc_elf_link_hash_table *htab; htab = _bfd_sparc_elf_hash_table (info); + BFD_ASSERT (htab != NULL); dynobj = htab->elf.dynobj; sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); @@ -4091,19 +4682,22 @@ /* Set the first entry in the global offset table to the address of the dynamic section. */ - if (htab->sgot && htab->sgot->size > 0) + if (htab->elf.sgot && htab->elf.sgot->size > 0) { bfd_vma val = (sdyn ? sdyn->output_section->vma + sdyn->output_offset : 0); - SPARC_ELF_PUT_WORD (htab, output_bfd, val, htab->sgot->contents); + SPARC_ELF_PUT_WORD (htab, output_bfd, val, htab->elf.sgot->contents); } - if (htab->sgot) - elf_section_data (htab->sgot->output_section)->this_hdr.sh_entsize = + if (htab->elf.sgot) + elf_section_data (htab->elf.sgot->output_section)->this_hdr.sh_entsize = SPARC_ELF_WORD_BYTES (htab); + /* Fill PLT and GOT entries for local STT_GNU_IFUNC symbols. */ + htab_traverse (htab->loc_hash_table, finish_local_dynamic_symbol, info); + return TRUE; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elfxx-sparc.h crash-6.1.6/=unpacked-tar1=/bfd/elfxx-sparc.h --- crash-5.1.6/=unpacked-tar1=/bfd/elfxx-sparc.h 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elfxx-sparc.h 2010-02-08 20:28:43.000000000 +0000 @@ -1,5 +1,5 @@ /* SPARC ELF specific backend routines. - Copyright 2005, 2006, 2007, 2009 Free Software Foundation, Inc. + Copyright 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -47,14 +47,11 @@ struct elf_link_hash_table elf; /* Short-cuts to get to dynamic linker sections. */ - asection *sgot; - asection *srelgot; - asection *splt; - asection *srelplt; asection *sdynbss; asection *srelbss; - union { + union + { bfd_signed_vma refcount; bfd_vma offset; } tls_ldm_got; @@ -62,15 +59,16 @@ /* Small local sym cache. */ struct sym_cache sym_cache; + /* Used by local STT_GNU_IFUNC symbols. */ + htab_t loc_hash_table; + void *loc_hash_memory; + /* True if the target system is VxWorks. */ int is_vxworks; /* The (unloaded but important) .rela.plt.unloaded section, for VxWorks. */ asection *srelplt2; - /* .got.plt is only used on VxWorks. */ - asection *sgotplt; - void (*put_word) (bfd *, bfd_vma, void *); bfd_vma (*r_info) (Elf_Internal_Rela *, bfd_vma, bfd_vma); bfd_vma (*r_symndx) (bfd_vma); @@ -93,7 +91,8 @@ /* Get the SPARC ELF linker hash table from a link_info structure. */ #define _bfd_sparc_elf_hash_table(p) \ - ((struct _bfd_sparc_elf_link_hash_table *) ((p)->hash)) + (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ + == SPARC_ELF_DATA ? ((struct _bfd_sparc_elf_link_hash_table *) ((p)->hash)) : NULL) extern reloc_howto_type *_bfd_sparc_elf_reloc_type_lookup (bfd *, bfd_reloc_code_real_type); @@ -107,6 +106,8 @@ (bfd *); extern struct bfd_link_hash_table *_bfd_sparc_elf_link_hash_table_create (bfd *); +extern void _bfd_sparc_elf_link_hash_table_free + (struct bfd_link_hash_table *); extern bfd_boolean _bfd_sparc_elf_create_dynamic_sections (bfd *, struct bfd_link_info *); extern void _bfd_sparc_elf_copy_indirect_symbol diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/elfxx-target.h crash-6.1.6/=unpacked-tar1=/bfd/elfxx-target.h --- crash-5.1.6/=unpacked-tar1=/bfd/elfxx-target.h 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/elfxx-target.h 2010-11-04 11:35:01.000000000 +0000 @@ -1,6 +1,6 @@ /* Target definitions for NN-bit ELF Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -260,6 +260,11 @@ #define bfd_elfNN_bfd_link_just_syms _bfd_elf_link_just_syms #endif +#ifndef bfd_elfNN_bfd_copy_link_hash_symbol_type +#define bfd_elfNN_bfd_copy_link_hash_symbol_type \ + _bfd_elf_copy_link_hash_symbol_type +#endif + #ifndef bfd_elfNN_bfd_link_split_section #define bfd_elfNN_bfd_link_split_section _bfd_generic_link_split_section #endif @@ -273,7 +278,7 @@ #endif #ifndef bfd_elfNN_mkobject -#define bfd_elfNN_mkobject bfd_elf_make_generic_object +#define bfd_elfNN_mkobject bfd_elf_make_object #endif #ifndef bfd_elfNN_mkcorefile @@ -300,6 +305,10 @@ #define elf_info_to_howto_rel 0 #endif +#ifndef ELF_TARGET_ID +#define ELF_TARGET_ID GENERIC_ELF_DATA +#endif + #ifndef ELF_OSABI #define ELF_OSABI ELFOSABI_NONE #endif @@ -468,6 +477,12 @@ #ifndef elf_backend_obj_attrs_order #define elf_backend_obj_attrs_order NULL #endif +#ifndef elf_backend_obj_attrs_handle_unknown +#define elf_backend_obj_attrs_handle_unknown NULL +#endif +#ifndef elf_backend_static_tls_alignment +#define elf_backend_static_tls_alignment 1 +#endif #ifndef elf_backend_post_process_headers #define elf_backend_post_process_headers NULL #endif @@ -633,6 +648,7 @@ static struct elf_backend_data elfNN_bed = { ELF_ARCH, /* arch */ + ELF_TARGET_ID, /* target_id */ ELF_MACHINE_CODE, /* elf_machine_code */ ELF_OSABI, /* elf_osabi */ ELF_MAXPAGESIZE, /* maxpagesize */ @@ -728,6 +744,8 @@ elf_backend_obj_attrs_arg_type, elf_backend_obj_attrs_section_type, elf_backend_obj_attrs_order, + elf_backend_obj_attrs_handle_unknown, + elf_backend_static_tls_alignment, elf_backend_collect, elf_backend_type_change_ok, elf_backend_may_use_rel_p, @@ -771,7 +789,7 @@ /* object_flags: mask of all file flags */ (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS - | DYNAMIC | WP_TEXT | D_PAGED), + | DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS), /* section_flags: mask of all section flags */ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY @@ -867,7 +885,7 @@ /* object_flags: mask of all file flags */ (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS - | DYNAMIC | WP_TEXT | D_PAGED), + | DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS), /* section_flags: mask of all section flags */ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/hash.c crash-6.1.6/=unpacked-tar1=/bfd/hash.c --- crash-5.1.6/=unpacked-tar1=/bfd/hash.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/hash.c 2010-11-08 02:48:54.000000000 +0000 @@ -1,6 +1,6 @@ /* hash.c -- hash table routines for BFD Copyright 1993, 1994, 1995, 1997, 1999, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2009 Free Software Foundation, Inc. + 2006, 2007, 2009, 2010 Free Software Foundation, Inc. Written by Steve Chamberlain This file is part of BFD, the Binary File Descriptor library. @@ -412,20 +412,13 @@ table->memory = NULL; } -/* Look up a string in a hash table. */ - -struct bfd_hash_entry * -bfd_hash_lookup (struct bfd_hash_table *table, - const char *string, - bfd_boolean create, - bfd_boolean copy) +static inline unsigned long +bfd_hash_hash (const char *string, unsigned int *lenp) { const unsigned char *s; unsigned long hash; - unsigned int c; - struct bfd_hash_entry *hashp; unsigned int len; - unsigned int index; + unsigned int c; hash = 0; len = 0; @@ -438,9 +431,27 @@ len = (s - (const unsigned char *) string) - 1; hash += len + (len << 17); hash ^= hash >> 2; + if (lenp != NULL) + *lenp = len; + return hash; +} + +/* Look up a string in a hash table. */ - index = hash % table->size; - for (hashp = table->table[index]; +struct bfd_hash_entry * +bfd_hash_lookup (struct bfd_hash_table *table, + const char *string, + bfd_boolean create, + bfd_boolean copy) +{ + unsigned long hash; + struct bfd_hash_entry *hashp; + unsigned int len; + unsigned int _index; + + hash = bfd_hash_hash (string, &len); + _index = hash % table->size; + for (hashp = table->table[_index]; hashp != NULL; hashp = hashp->next) { @@ -478,16 +489,16 @@ unsigned long hash) { struct bfd_hash_entry *hashp; - unsigned int index; + unsigned int _index; hashp = (*table->newfunc) (NULL, table, string); if (hashp == NULL) return NULL; hashp->string = string; hashp->hash = hash; - index = hash % table->size; - hashp->next = table->table[index]; - table->table[index] = hashp; + _index = hash % table->size; + hashp->next = table->table[_index]; + table->table[_index] = hashp; table->count++; if (!table->frozen && table->count > table->size * 3 / 4) @@ -524,9 +535,9 @@ chain_end = chain_end->next; table->table[hi] = chain_end->next; - index = chain->hash % newsize; - chain_end->next = newtable[index]; - newtable[index] = chain; + _index = chain->hash % newsize; + chain_end->next = newtable[_index]; + newtable[_index] = chain; } table->table = newtable; table->size = newsize; @@ -535,6 +546,31 @@ return hashp; } +/* Rename an entry in a hash table. */ + +void +bfd_hash_rename (struct bfd_hash_table *table, + const char *string, + struct bfd_hash_entry *ent) +{ + unsigned int _index; + struct bfd_hash_entry **pph; + + _index = ent->hash % table->size; + for (pph = &table->table[_index]; *pph != NULL; pph = &(*pph)->next) + if (*pph == ent) + break; + if (*pph == NULL) + abort (); + + *pph = ent->next; + ent->string = string; + ent->hash = bfd_hash_hash (string, NULL); + _index = ent->hash % table->size; + ent->next = table->table[_index]; + table->table[_index] = ent; +} + /* Replace an entry in a hash table. */ void @@ -542,11 +578,11 @@ struct bfd_hash_entry *old, struct bfd_hash_entry *nw) { - unsigned int index; + unsigned int _index; struct bfd_hash_entry **pph; - index = old->hash % table->size; - for (pph = &table->table[index]; + _index = old->hash % table->size; + for (pph = &table->table[_index]; (*pph) != NULL; pph = &(*pph)->next) { @@ -617,14 +653,14 @@ { 251, 509, 1021, 2039, 4051, 8599, 16699, 32749 }; - size_t index; + size_t _index; /* Work out best prime number near the hash_size. */ - for (index = 0; index < ARRAY_SIZE (hash_size_primes) - 1; ++index) - if (hash_size <= hash_size_primes[index]) + for (_index = 0; _index < ARRAY_SIZE (hash_size_primes) - 1; ++_index) + if (hash_size <= hash_size_primes[_index]) break; - bfd_default_hash_table_size = hash_size_primes[index]; + bfd_default_hash_table_size = hash_size_primes[_index]; } /* A few different object file formats (a.out, COFF, ELF) use a string diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/hosts/x86-64linux.h crash-6.1.6/=unpacked-tar1=/bfd/hosts/x86-64linux.h --- crash-5.1.6/=unpacked-tar1=/bfd/hosts/x86-64linux.h 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/hosts/x86-64linux.h 2010-04-10 22:52:37.000000000 +0000 @@ -0,0 +1,195 @@ +/* Copyright (C) 2006 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* This is somewhat modelled after the file of the same name on SVR4 + systems. It provides a definition of the core file format for ELF + used on Linux. It doesn't have anything to do with the /proc file + system, even though Linux has one. + + Anyway, the whole purpose of this file is for GDB and GDB only. + Don't read too much into it. Don't use it for anything other than + GDB unless you know what you are doing. */ + +#include +#include +#include + +/* We define here only the symbols differing from their 64-bit variant. */ +#include + +#ifdef HAVE_STDINT_H +#include +#else +typedef unsigned int uint32_t; +#endif + +#undef HAVE_PRPSINFO32_T +#define HAVE_PRPSINFO32_T + +#undef HAVE_PRSTATUS32_T +#define HAVE_PRSTATUS32_T + +/* These are the 32-bit x86 structures. */ + +struct user_fpregs32_struct +{ + int32_t cwd; + int32_t swd; + int32_t twd; + int32_t fip; + int32_t fcs; + int32_t foo; + int32_t fos; + int32_t st_space [20]; +}; + +struct user_fpxregs32_struct +{ + unsigned short int cwd; + unsigned short int swd; + unsigned short int twd; + unsigned short int fop; + int32_t fip; + int32_t fcs; + int32_t foo; + int32_t fos; + int32_t mxcsr; + int32_t reserved; + int32_t st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ + int32_t xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */ + int32_t padding[56]; +}; + +struct user_regs32_struct +{ + int32_t ebx; + int32_t ecx; + int32_t edx; + int32_t esi; + int32_t edi; + int32_t ebp; + int32_t eax; + int32_t xds; + int32_t xes; + int32_t xfs; + int32_t xgs; + int32_t orig_eax; + int32_t eip; + int32_t xcs; + int32_t eflags; + int32_t esp; + int32_t xss; +}; + +struct user32 +{ + struct user_regs32_struct regs; + int u_fpvalid; + struct user_fpregs32_struct i387; + uint32_t u_tsize; + uint32_t u_dsize; + uint32_t u_ssize; + uint32_t start_code; + uint32_t start_stack; + int32_t signal; + int reserved; + struct user_regs32_struct* u_ar0; + struct user_fpregs32_struct* u_fpstate; + uint32_t magic; + char u_comm [32]; + int u_debugreg [8]; +}; + +/* Type for a general-purpose register. */ +typedef unsigned int elf_greg32_t; + +/* And the whole bunch of them. We could have used `struct + user_regs_struct' directly in the typedef, but tradition says that + the register set is an array, which does have some peculiar + semantics, so leave it that way. */ +#define ELF_NGREG32 (sizeof (struct user_regs32_struct) / sizeof(elf_greg32_t)) +typedef elf_greg32_t elf_gregset32_t[ELF_NGREG32]; + +/* Register set for the floating-point registers. */ +typedef struct user_fpregs32_struct elf_fpregset32_t; + +/* Register set for the extended floating-point registers. Includes + the Pentium III SSE registers in addition to the classic + floating-point stuff. */ +typedef struct user_fpxregs32_struct elf_fpxregset32_t; + + +/* Definitions to generate Intel SVR4-like core files. These mostly + have the same names as the SVR4 types with "elf_" tacked on the + front to prevent clashes with Linux definitions, and the typedef + forms have been avoided. This is mostly like the SVR4 structure, + but more Linuxy, with things that Linux does not support and which + GDB doesn't really use excluded. */ + +struct prstatus32_timeval + { + int tv_sec; + int tv_usec; + }; + +struct elf_prstatus32 + { + struct elf_siginfo pr_info; /* Info associated with signal. */ + short int pr_cursig; /* Current signal. */ + unsigned int pr_sigpend; /* Set of pending signals. */ + unsigned int pr_sighold; /* Set of held signals. */ + __pid_t pr_pid; + __pid_t pr_ppid; + __pid_t pr_pgrp; + __pid_t pr_sid; + struct prstatus32_timeval pr_utime; /* User time. */ + struct prstatus32_timeval pr_stime; /* System time. */ + struct prstatus32_timeval pr_cutime; /* Cumulative user time. */ + struct prstatus32_timeval pr_cstime; /* Cumulative system time. */ + elf_gregset32_t pr_reg; /* GP registers. */ + int pr_fpvalid; /* True if math copro being used. */ + }; + + +struct elf_prpsinfo32 + { + char pr_state; /* Numeric process state. */ + char pr_sname; /* Char for pr_state. */ + char pr_zomb; /* Zombie. */ + char pr_nice; /* Nice val. */ + unsigned int pr_flag; /* Flags. */ + unsigned short int pr_uid; + unsigned short int pr_gid; + int pr_pid, pr_ppid, pr_pgrp, pr_sid; + /* Lots missing */ + char pr_fname[16]; /* Filename of executable. */ + char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */ + }; + + +/* The rest of this file provides the types for emulation of the + Solaris interfaces that should be implemented by + users of libthread_db. */ + +/* Register sets. Linux has different names. */ +typedef elf_gregset_t prgregset32_t; +typedef elf_fpregset_t prfpregset32_t; + +/* Process status and info. In the end we do provide typedefs for them. */ +typedef struct elf_prstatus32 prstatus32_t; +typedef struct elf_prpsinfo32 prpsinfo32_t; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/hp300bsd.c crash-6.1.6/=unpacked-tar1=/bfd/hp300bsd.c --- crash-5.1.6/=unpacked-tar1=/bfd/hp300bsd.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/hp300bsd.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for HP 9000/300 (68000-based) machines running BSD Unix. - Copyright 1992, 1994, 1995, 2001, 2003, 2005, 2007 + Copyright 1992, 1994, 1995, 2001, 2003, 2005, 2007, 2009 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -22,7 +22,6 @@ #define TARGET_IS_BIG_ENDIAN_P #define N_HEADER_IN_TEXT(x) 0 #define ENTRY_CAN_BE_ZERO -#define N_SHARED_LIB(x) 0 /* Avoids warning */ #define TEXT_START_ADDR 0 #define TARGET_PAGE_SIZE 4096 #define SEGMENT_SIZE TARGET_PAGE_SIZE diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/hp300hpux.c crash-6.1.6/=unpacked-tar1=/bfd/hp300hpux.c --- crash-5.1.6/=unpacked-tar1=/bfd/hp300hpux.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/hp300hpux.c 2010-06-27 04:07:53.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD backend for hp-ux 9000/300 Copyright 1990, 1991, 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2007 Free Software Foundation, Inc. + 2003, 2004, 2005, 2007, 2010 Free Software Foundation, Inc. Written by Glenn Engel. This file is part of BFD, the Binary File Descriptor library. @@ -592,7 +592,6 @@ /* OK, now walk the new symtable, caching symbol properties */ { aout_symbol_type *cache_ptr = cached; - aout_symbol_type cache_save; /* Run through table and copy values */ for (sym_pointer = syms, cache_ptr = cached; sym_pointer < sym_end; sym_pointer++, cache_ptr++) @@ -606,7 +605,6 @@ length = bfd_get_8 (abfd, sym_pointer->e_length); cache_ptr->other = length; /* other not used, save length here */ - cache_save = *cache_ptr; convert_sym_type (sym_pointer, cache_ptr, abfd); if (!translate_from_native_sym_flags (abfd, cache_ptr)) return FALSE; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/hppabsd-core.c crash-6.1.6/=unpacked-tar1=/bfd/hppabsd-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/hppabsd-core.c 2007-07-03 14:26:42.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/hppabsd-core.c 2010-08-18 12:24:07.000000000 +0000 @@ -59,6 +59,7 @@ static int hppabsd_core_core_file_failing_signal PARAMS ((bfd *)); #define hppabsd_core_core_file_matches_executable_p generic_core_file_matches_executable_p +#define hppabsd_core_core_file_pid _bfd_nocore_core_file_pid static void swap_abort PARAMS ((void)); diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/hpux-core.c crash-6.1.6/=unpacked-tar1=/bfd/hpux-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/hpux-core.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/hpux-core.c 2010-08-18 12:24:07.000000000 +0000 @@ -103,6 +103,7 @@ #define core_kernel_thread_id(bfd) (core_hdr(bfd)->lwpid) #define core_user_thread_id(bfd) (core_hdr(bfd)->user_tid) #define hpux_core_core_file_matches_executable_p generic_core_file_matches_executable_p +#define hpux_core_core_file_pid _bfd_nocore_core_file_pid static asection *make_bfd_asection (bfd *, const char *, flagword, bfd_size_type, bfd_vma, unsigned int); diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/i386bsd.c crash-6.1.6/=unpacked-tar1=/bfd/i386bsd.c --- crash-5.1.6/=unpacked-tar1=/bfd/i386bsd.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/i386bsd.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for i386 a.out binaries under BSD. - Copyright 1990, 1991, 1992, 1993, 1994, 2001, 2005, 2007 + Copyright 1990, 1991, 1992, 1993, 1994, 2001, 2005, 2007, 2009 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -30,7 +30,6 @@ /* ZMAGIC files start at address 0. This does not apply to QMAGIC. */ #define TEXT_START_ADDR 0 -#define N_SHARED_LIB(x) 0 #define TARGET_PAGE_SIZE 4096 #define SEGMENT_SIZE TARGET_PAGE_SIZE diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/i386linux.c crash-6.1.6/=unpacked-tar1=/bfd/i386linux.c --- crash-5.1.6/=unpacked-tar1=/bfd/i386linux.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/i386linux.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for linux flavored i386 a.out binaries. Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -23,7 +23,6 @@ #define ZMAGIC_DISK_BLOCK_SIZE 1024 #define SEGMENT_SIZE TARGET_PAGE_SIZE #define TEXT_START_ADDR 0x0 -#define N_SHARED_LIB(x) 0 #define MACHTYPE_OK(mtype) ((mtype) == M_386 || (mtype) == M_UNKNOWN) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/i386lynx.c crash-6.1.6/=unpacked-tar1=/bfd/i386lynx.c --- crash-5.1.6/=unpacked-tar1=/bfd/i386lynx.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/i386lynx.c 2010-06-27 04:07:53.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for i386 a.out binaries under LynxOS. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2001, 2002, - 2003, 2005, 2007 Free Software Foundation, Inc. + 2003, 2005, 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -19,8 +19,6 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#define N_SHARED_LIB(x) 0 - #define TEXT_START_ADDR 0 #define TARGET_PAGE_SIZE 4096 #define SEGMENT_SIZE TARGET_PAGE_SIZE @@ -138,7 +136,6 @@ unsigned int r_length; int r_pcrel; int r_baserel, r_jmptable, r_relative; - unsigned int r_addend; asection *output_section = sym->section->output_section; PUT_WORD (abfd, g->address, natptr->r_address); @@ -150,8 +147,6 @@ r_jmptable = 0; r_relative = 0; - r_addend = g->addend + (*(g->sym_ptr_ptr))->section->output_section->vma; - /* name was clobbered by aout_write_syms to be symbol index */ /* If this relocation is relative to a symbol then set the @@ -375,7 +370,6 @@ int r_extern; unsigned int r_length; int r_pcrel; - int r_baserel, r_jmptable, r_relative; struct aoutdata *su = &(abfd->tdata.aout_data->a); cache_ptr->address = H_GET_32 (abfd, bytes->r_address); @@ -383,9 +377,6 @@ r_index = bytes->r_index[1]; r_extern = (0 != (bytes->r_index[0] & RELOC_STD_BITS_EXTERN_BIG)); r_pcrel = (0 != (bytes->r_index[0] & RELOC_STD_BITS_PCREL_BIG)); - r_baserel = (0 != (bytes->r_index[0] & RELOC_STD_BITS_BASEREL_BIG)); - r_jmptable = (0 != (bytes->r_index[0] & RELOC_STD_BITS_JMPTABLE_BIG)); - r_relative = (0 != (bytes->r_index[0] & RELOC_STD_BITS_RELATIVE_BIG)); r_length = (bytes->r_index[0] & RELOC_STD_BITS_LENGTH_BIG) >> RELOC_STD_BITS_LENGTH_SH_BIG; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/i386msdos.c crash-6.1.6/=unpacked-tar1=/bfd/i386msdos.c --- crash-5.1.6/=unpacked-tar1=/bfd/i386msdos.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/i386msdos.c 2009-11-23 14:41:29.000000000 +0000 @@ -153,6 +153,8 @@ #define msdos_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define msdos_bfd_link_add_symbols _bfd_generic_link_add_symbols #define msdos_bfd_link_just_syms _bfd_generic_link_just_syms +#define msdos_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define msdos_bfd_final_link _bfd_generic_final_link #define msdos_bfd_link_split_section _bfd_generic_link_split_section #define msdos_set_arch_mach _bfd_generic_set_arch_mach diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/i386os9k.c crash-6.1.6/=unpacked-tar1=/bfd/i386os9k.c --- crash-5.1.6/=unpacked-tar1=/bfd/i386os9k.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/i386os9k.c 2009-11-23 14:41:29.000000000 +0000 @@ -177,6 +177,8 @@ #define os9k_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define os9k_bfd_link_add_symbols _bfd_generic_link_add_symbols #define os9k_bfd_link_just_syms _bfd_generic_link_just_syms +#define os9k_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define os9k_bfd_final_link _bfd_generic_final_link #define os9k_bfd_link_split_section _bfd_generic_link_split_section diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/ieee.c crash-6.1.6/=unpacked-tar1=/bfd/ieee.c --- crash-5.1.6/=unpacked-tar1=/bfd/ieee.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/ieee.c 2010-06-27 04:07:53.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for ieee-695 objects. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support. @@ -228,7 +228,7 @@ bfd_vma value, asymbol *symbol, bfd_boolean pcrel, - unsigned int index) + unsigned int sindex) { unsigned int term_count = 0; @@ -297,7 +297,7 @@ /* Subtract the pc from here by asking for PC of this section. */ if (! ieee_write_byte (abfd, ieee_variable_P_enum) || ! ieee_write_byte (abfd, - (bfd_byte) (index + IEEE_SECTION_NUMBER_BASE)) + (bfd_byte) (sindex + IEEE_SECTION_NUMBER_BASE)) || ! ieee_write_byte (abfd, ieee_function_minus_enum)) return FALSE; } @@ -533,6 +533,7 @@ next_byte (&(ieee->h)); *pcrel = TRUE; section_n = must_parse_int (&(ieee->h)); + (void) section_n; PUSH (NOSYMBOL, bfd_abs_section_ptr, 0); break; } @@ -637,6 +638,8 @@ ieee_symbol_index_type sy1; POP (sy1, section1, *extra); + (void) section1; + (void) sy1; } POP (*symbol, dummy, *value); @@ -776,6 +779,7 @@ case ieee_attribute_record_enum: symbol_name_index = must_parse_int (&(ieee->h)); symbol_type_index = must_parse_int (&(ieee->h)); + (void) symbol_type_index; symbol_attribute_def = must_parse_int (&(ieee->h)); switch (symbol_attribute_def) { @@ -850,6 +854,7 @@ next_byte (&(ieee->h)); symbol_name_index = must_parse_int (&(ieee->h)); + (void) symbol_name_index; parse_expression (ieee, &symbol->symbol.value, &symbol_ignore, @@ -1045,9 +1050,9 @@ } static asection * -get_section_entry (bfd *abfd, ieee_data_type *ieee, unsigned int index) +get_section_entry (bfd *abfd, ieee_data_type *ieee, unsigned int sindex) { - if (index >= ieee->section_table_size) + if (sindex >= ieee->section_table_size) { unsigned int c, i; asection **n; @@ -1056,7 +1061,7 @@ c = ieee->section_table_size; if (c == 0) c = 20; - while (c <= index) + while (c <= sindex) c *= 2; amt = c; @@ -1072,20 +1077,20 @@ ieee->section_table_size = c; } - if (ieee->section_table[index] == (asection *) NULL) + if (ieee->section_table[sindex] == (asection *) NULL) { char *tmp = bfd_alloc (abfd, (bfd_size_type) 11); asection *section; if (!tmp) return NULL; - sprintf (tmp, " fsec%4d", index); + sprintf (tmp, " fsec%4d", sindex); section = bfd_make_section (abfd, tmp); - ieee->section_table[index] = section; - section->target_index = index; - ieee->section_table[index] = section; + ieee->section_table[sindex] = section; + section->target_index = sindex; + ieee->section_table[sindex] = section; } - return ieee->section_table[index]; + return ieee->section_table[sindex]; } static void @@ -2669,6 +2674,7 @@ break; } } + (void) ch; OUT (0x84); buf->ptrp = output_ptr; buf->buffer = output_buffer; @@ -3743,6 +3749,7 @@ (bfd *, unsigned int, struct orl *, unsigned int, int)) \ bfd_true) #define ieee_read_ar_hdr bfd_nullvoidptr +#define ieee_write_ar_hdr ((bfd_boolean (*) (bfd *, bfd *)) bfd_false) #define ieee_update_armap_timestamp bfd_true #define ieee_get_elt_at_index _bfd_generic_get_elt_at_index @@ -3775,6 +3782,8 @@ #define ieee_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define ieee_bfd_link_add_symbols _bfd_generic_link_add_symbols #define ieee_bfd_link_just_syms _bfd_generic_link_just_syms +#define ieee_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define ieee_bfd_final_link _bfd_generic_final_link #define ieee_bfd_link_split_section _bfd_generic_link_split_section diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/ihex.c crash-6.1.6/=unpacked-tar1=/bfd/ihex.c --- crash-5.1.6/=unpacked-tar1=/bfd/ihex.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/ihex.c 2009-11-23 14:41:30.000000000 +0000 @@ -939,6 +939,8 @@ #define ihex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define ihex_bfd_link_add_symbols _bfd_generic_link_add_symbols #define ihex_bfd_link_just_syms _bfd_generic_link_just_syms +#define ihex_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define ihex_bfd_final_link _bfd_generic_final_link #define ihex_bfd_link_split_section _bfd_generic_link_split_section diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/irix-core.c crash-6.1.6/=unpacked-tar1=/bfd/irix-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/irix-core.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/irix-core.c 2010-08-18 12:24:07.000000000 +0000 @@ -44,6 +44,7 @@ #define core_command(bfd) (core_hdr(bfd)->cmd) #define irix_core_core_file_matches_executable_p generic_core_file_matches_executable_p +#define irix_core_core_file_pid _bfd_nocore_core_file_pid static asection *make_bfd_asection (bfd *, const char *, flagword, bfd_size_type, bfd_vma, file_ptr); diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/libbfd-in.h crash-6.1.6/=unpacked-tar1=/bfd/libbfd-in.h --- crash-5.1.6/=unpacked-tar1=/bfd/libbfd-in.h 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/libbfd-in.h 2010-10-29 12:10:24.000000000 +0000 @@ -2,7 +2,8 @@ (This include file is not for users of the library.) Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -90,6 +91,7 @@ struct areltdata { char * arch_header; /* it's actually a string */ unsigned int parsed_size; /* octets of filesize not including ar_hdr */ + unsigned int extra_size; /* BSD4.4: extra bytes after the header. */ char *filename; /* null-terminated */ file_ptr origin; /* for element of a thin archive */ }; @@ -116,10 +118,6 @@ /* These routines allocate and free things on the BFD's objalloc. */ -extern void *bfd_alloc - (bfd *, bfd_size_type); -extern void *bfd_zalloc - (bfd *, bfd_size_type); extern void *bfd_alloc2 (bfd *, bfd_size_type, bfd_size_type); extern void *bfd_zalloc2 @@ -135,6 +133,8 @@ (bfd *, file_ptr, bfd *); bfd_boolean _bfd_generic_mkarchive (bfd *abfd); +char *_bfd_append_relative_path + (bfd *arch, char *elt_name); const bfd_target *bfd_generic_archive_p (bfd *abfd); bfd_boolean bfd_slurp_armap @@ -207,6 +207,12 @@ extern void *_bfd_generic_read_ar_hdr_mag (bfd *, const char *); +extern bfd_boolean _bfd_generic_write_ar_hdr + (bfd *, bfd *); + +extern bfd_boolean _bfd_bsd44_write_ar_hdr + (bfd *, bfd *); + bfd * bfd_generic_openr_next_archived_file (bfd *archive, bfd *last_file); @@ -215,6 +221,8 @@ #define _bfd_read_ar_hdr(abfd) \ BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd)) +#define _bfd_write_ar_hdr(archive, abfd) \ + BFD_SEND (abfd, _bfd_write_ar_hdr_fn, (archive, abfd)) /* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use BFD_JUMP_TABLE_GENERIC (_bfd_generic). */ @@ -258,6 +266,8 @@ (bfd *); extern bfd_boolean _bfd_nocore_core_file_matches_executable_p (bfd *, bfd *); +extern int _bfd_nocore_core_file_pid + (bfd *); /* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive file support. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive). */ @@ -273,6 +283,8 @@ ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \ bfd_false) #define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr +#define _bfd_noarchive_write_ar_hdr \ + ((bfd_boolean (*) (bfd *, bfd *)) bfd_false) #define _bfd_noarchive_openr_next_archived_file \ ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr) #define _bfd_noarchive_get_elt_at_index \ @@ -291,6 +303,7 @@ #define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname #define _bfd_archive_bsd_write_armap bsd_write_armap #define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_archive_bsd_write_ar_hdr _bfd_generic_write_ar_hdr #define _bfd_archive_bsd_openr_next_archived_file \ bfd_generic_openr_next_archived_file #define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index @@ -310,6 +323,7 @@ #define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname #define _bfd_archive_coff_write_armap coff_write_armap #define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_archive_coff_write_ar_hdr _bfd_generic_write_ar_hdr #define _bfd_archive_coff_openr_next_archived_file \ bfd_generic_openr_next_archived_file #define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index @@ -317,6 +331,52 @@ bfd_generic_stat_arch_elt #define _bfd_archive_coff_update_armap_timestamp bfd_true +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD4.4 style + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd44). */ + +#define _bfd_archive_bsd44_slurp_armap bfd_slurp_bsd_armap +#define _bfd_archive_bsd44_slurp_extended_name_table \ + _bfd_slurp_extended_name_table +extern bfd_boolean _bfd_archive_bsd44_construct_extended_name_table + (bfd *, char **, bfd_size_type *, const char **); +#define _bfd_archive_bsd44_truncate_arname bfd_bsd_truncate_arname +#define _bfd_archive_bsd44_write_armap bsd_write_armap +#define _bfd_archive_bsd44_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_archive_bsd44_write_ar_hdr _bfd_bsd44_write_ar_hdr +#define _bfd_archive_bsd44_openr_next_archived_file \ + bfd_generic_openr_next_archived_file +#define _bfd_archive_bsd44_get_elt_at_index _bfd_generic_get_elt_at_index +#define _bfd_archive_bsd44_generic_stat_arch_elt \ + bfd_generic_stat_arch_elt +#define _bfd_archive_bsd44_update_armap_timestamp \ + _bfd_archive_bsd_update_armap_timestamp + +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get VMS style + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_vms_lib). Some of them + are irrelevant and never called, so defined as NULL. */ + +extern bfd_boolean _bfd_vms_lib_write_archive_contents (bfd *arch); +#define _bfd_vms_lib_slurp_armap NULL +#define _bfd_vms_lib_slurp_extended_name_table NULL +#define _bfd_vms_lib_construct_extended_name_table NULL +#define _bfd_vms_lib_truncate_arname NULL +#define _bfd_vms_lib_write_armap NULL +#define _bfd_vms_lib_read_ar_hdr NULL +#define _bfd_vms_lib_write_ar_hdr NULL +extern bfd *_bfd_vms_lib_openr_next_archived_file (bfd *, bfd *); +extern bfd *_bfd_vms_lib_get_elt_at_index (bfd *, symindex); +extern int _bfd_vms_lib_generic_stat_arch_elt (bfd *, struct stat *); +#define _bfd_vms_lib_update_armap_timestamp bfd_true + +/* Extra routines for VMS style archives. */ + +extern symindex _bfd_vms_lib_find_symbol (bfd *, const char *); +extern bfd *_bfd_vms_lib_get_imagelib_file (bfd *); +extern const bfd_target *_bfd_vms_lib_alpha_archive_p (bfd *abfd); +extern const bfd_target *_bfd_vms_lib_ia64_archive_p (bfd *abfd); +extern bfd_boolean _bfd_vms_lib_alpha_mkarchive (bfd *abfd); +extern bfd_boolean _bfd_vms_lib_ia64_mkarchive (bfd *abfd); + /* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */ @@ -410,6 +470,9 @@ ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false) #define _bfd_nolink_bfd_link_just_syms \ ((void (*) (asection *, struct bfd_link_info *)) bfd_void) +#define _bfd_nolink_bfd_copy_link_hash_symbol_type \ + ((void (*) (bfd *, struct bfd_link_hash_entry *, \ + struct bfd_link_hash_entry *)) bfd_void) #define _bfd_nolink_bfd_final_link \ ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false) #define _bfd_nolink_bfd_link_split_section \ @@ -524,6 +587,10 @@ extern void _bfd_generic_link_just_syms (asection *, struct bfd_link_info *); +/* Generic routine that does nothing. */ +extern void _bfd_generic_copy_link_hash_symbol_type + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); + /* Generic link routine. */ extern bfd_boolean _bfd_generic_final_link (bfd *, struct bfd_link_info *); @@ -557,7 +624,7 @@ /* Clear a given location using a given howto. */ extern void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd, - bfd_byte *location); + asection *input_section, bfd_byte *location); /* Link stabs in sections in the first pass. */ @@ -741,3 +808,13 @@ extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *); extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *); +struct dwarf_debug_section +{ + const char *uncompressed_name; + const char *compressed_name; +}; + +/* Map of uncompressed DWARF debug section name to compressed one. It + is terminated by NULL uncompressed_name. */ + +extern struct dwarf_debug_section dwarf_debug_sections[]; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/libbfd.c crash-6.1.6/=unpacked-tar1=/bfd/libbfd.c --- crash-5.1.6/=unpacked-tar1=/bfd/libbfd.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/libbfd.c 2011-01-14 12:35:55.000000000 +0000 @@ -1,6 +1,6 @@ /* Assorted BFD support routines, only used internally. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 + 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Written by Cygnus Support. @@ -150,6 +150,16 @@ return 0; } +/* Routine to handle the core_file_pid entry point for targets without + core file support. */ + +int +_bfd_nocore_core_file_pid (bfd *ignore_abfd ATTRIBUTE_UNUSED) +{ + bfd_set_error (bfd_error_invalid_operation); + return 0; +} + const bfd_target * _bfd_dummy_target (bfd *ignore_abfd ATTRIBUTE_UNUSED) { @@ -804,9 +814,9 @@ bytes = bits / 8; for (i = 0; i < bytes; i++) { - int index = big_p ? bytes - i - 1 : i; + int addr_index = big_p ? bytes - i - 1 : i; - addr[index] = data & 0xff; + addr[addr_index] = data & 0xff; data >>= 8; } } @@ -826,9 +836,9 @@ bytes = bits / 8; for (i = 0; i < bytes; i++) { - int index = big_p ? i : bytes - i - 1; + int addr_index = big_p ? i : bytes - i - 1; - data = (data << 8) | addr[index]; + data = (data << 8) | addr[addr_index]; } return data; @@ -847,6 +857,15 @@ if (count == 0) return TRUE; + if (section->compress_status != COMPRESS_SECTION_NONE) + { + (*_bfd_error_handler) + (_("%B: unable to get decompressed section %A"), + abfd, section); + bfd_set_error (bfd_error_invalid_operation); + return FALSE; + } + sz = section->rawsize ? section->rawsize : section->size; if (offset + count < count || offset + count > sz) @@ -1002,6 +1021,7 @@ if (~(size_t) func & ~mask) { + fflush (stdout); /* Note: separate sentences in order to allow for translation into other languages. */ if (func) @@ -1009,6 +1029,7 @@ what, file, line, func); else fprintf (stderr, _("Deprecated %s called\n"), what); + fflush (stderr); mask |= ~(size_t) func; } } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/libbfd.h crash-6.1.6/=unpacked-tar1=/bfd/libbfd.h --- crash-5.1.6/=unpacked-tar1=/bfd/libbfd.h 2009-09-02 08:10:55.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/libbfd.h 2011-03-31 08:58:20.000000000 +0000 @@ -7,7 +7,8 @@ (This include file is not for users of the library.) Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -95,6 +96,7 @@ struct areltdata { char * arch_header; /* it's actually a string */ unsigned int parsed_size; /* octets of filesize not including ar_hdr */ + unsigned int extra_size; /* BSD4.4: extra bytes after the header. */ char *filename; /* null-terminated */ file_ptr origin; /* for element of a thin archive */ }; @@ -121,10 +123,6 @@ /* These routines allocate and free things on the BFD's objalloc. */ -extern void *bfd_alloc - (bfd *, bfd_size_type); -extern void *bfd_zalloc - (bfd *, bfd_size_type); extern void *bfd_alloc2 (bfd *, bfd_size_type, bfd_size_type); extern void *bfd_zalloc2 @@ -140,6 +138,8 @@ (bfd *, file_ptr, bfd *); bfd_boolean _bfd_generic_mkarchive (bfd *abfd); +char *_bfd_append_relative_path + (bfd *arch, char *elt_name); const bfd_target *bfd_generic_archive_p (bfd *abfd); bfd_boolean bfd_slurp_armap @@ -212,6 +212,12 @@ extern void *_bfd_generic_read_ar_hdr_mag (bfd *, const char *); +extern bfd_boolean _bfd_generic_write_ar_hdr + (bfd *, bfd *); + +extern bfd_boolean _bfd_bsd44_write_ar_hdr + (bfd *, bfd *); + bfd * bfd_generic_openr_next_archived_file (bfd *archive, bfd *last_file); @@ -220,6 +226,8 @@ #define _bfd_read_ar_hdr(abfd) \ BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd)) +#define _bfd_write_ar_hdr(archive, abfd) \ + BFD_SEND (abfd, _bfd_write_ar_hdr_fn, (archive, abfd)) /* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use BFD_JUMP_TABLE_GENERIC (_bfd_generic). */ @@ -263,6 +271,8 @@ (bfd *); extern bfd_boolean _bfd_nocore_core_file_matches_executable_p (bfd *, bfd *); +extern int _bfd_nocore_core_file_pid + (bfd *); /* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive file support. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive). */ @@ -278,6 +288,8 @@ ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \ bfd_false) #define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr +#define _bfd_noarchive_write_ar_hdr \ + ((bfd_boolean (*) (bfd *, bfd *)) bfd_false) #define _bfd_noarchive_openr_next_archived_file \ ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr) #define _bfd_noarchive_get_elt_at_index \ @@ -296,6 +308,7 @@ #define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname #define _bfd_archive_bsd_write_armap bsd_write_armap #define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_archive_bsd_write_ar_hdr _bfd_generic_write_ar_hdr #define _bfd_archive_bsd_openr_next_archived_file \ bfd_generic_openr_next_archived_file #define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index @@ -315,6 +328,7 @@ #define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname #define _bfd_archive_coff_write_armap coff_write_armap #define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_archive_coff_write_ar_hdr _bfd_generic_write_ar_hdr #define _bfd_archive_coff_openr_next_archived_file \ bfd_generic_openr_next_archived_file #define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index @@ -322,6 +336,52 @@ bfd_generic_stat_arch_elt #define _bfd_archive_coff_update_armap_timestamp bfd_true +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD4.4 style + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd44). */ + +#define _bfd_archive_bsd44_slurp_armap bfd_slurp_bsd_armap +#define _bfd_archive_bsd44_slurp_extended_name_table \ + _bfd_slurp_extended_name_table +extern bfd_boolean _bfd_archive_bsd44_construct_extended_name_table + (bfd *, char **, bfd_size_type *, const char **); +#define _bfd_archive_bsd44_truncate_arname bfd_bsd_truncate_arname +#define _bfd_archive_bsd44_write_armap bsd_write_armap +#define _bfd_archive_bsd44_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_archive_bsd44_write_ar_hdr _bfd_bsd44_write_ar_hdr +#define _bfd_archive_bsd44_openr_next_archived_file \ + bfd_generic_openr_next_archived_file +#define _bfd_archive_bsd44_get_elt_at_index _bfd_generic_get_elt_at_index +#define _bfd_archive_bsd44_generic_stat_arch_elt \ + bfd_generic_stat_arch_elt +#define _bfd_archive_bsd44_update_armap_timestamp \ + _bfd_archive_bsd_update_armap_timestamp + +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get VMS style + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_vms_lib). Some of them + are irrelevant and never called, so defined as NULL. */ + +extern bfd_boolean _bfd_vms_lib_write_archive_contents (bfd *arch); +#define _bfd_vms_lib_slurp_armap NULL +#define _bfd_vms_lib_slurp_extended_name_table NULL +#define _bfd_vms_lib_construct_extended_name_table NULL +#define _bfd_vms_lib_truncate_arname NULL +#define _bfd_vms_lib_write_armap NULL +#define _bfd_vms_lib_read_ar_hdr NULL +#define _bfd_vms_lib_write_ar_hdr NULL +extern bfd *_bfd_vms_lib_openr_next_archived_file (bfd *, bfd *); +extern bfd *_bfd_vms_lib_get_elt_at_index (bfd *, symindex); +extern int _bfd_vms_lib_generic_stat_arch_elt (bfd *, struct stat *); +#define _bfd_vms_lib_update_armap_timestamp bfd_true + +/* Extra routines for VMS style archives. */ + +extern symindex _bfd_vms_lib_find_symbol (bfd *, const char *); +extern bfd *_bfd_vms_lib_get_imagelib_file (bfd *); +extern const bfd_target *_bfd_vms_lib_alpha_archive_p (bfd *abfd); +extern const bfd_target *_bfd_vms_lib_ia64_archive_p (bfd *abfd); +extern bfd_boolean _bfd_vms_lib_alpha_mkarchive (bfd *abfd); +extern bfd_boolean _bfd_vms_lib_ia64_mkarchive (bfd *abfd); + /* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */ @@ -415,6 +475,9 @@ ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false) #define _bfd_nolink_bfd_link_just_syms \ ((void (*) (asection *, struct bfd_link_info *)) bfd_void) +#define _bfd_nolink_bfd_copy_link_hash_symbol_type \ + ((void (*) (bfd *, struct bfd_link_hash_entry *, \ + struct bfd_link_hash_entry *)) bfd_void) #define _bfd_nolink_bfd_final_link \ ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false) #define _bfd_nolink_bfd_link_split_section \ @@ -529,6 +592,10 @@ extern void _bfd_generic_link_just_syms (asection *, struct bfd_link_info *); +/* Generic routine that does nothing. */ +extern void _bfd_generic_copy_link_hash_symbol_type + (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); + /* Generic link routine. */ extern bfd_boolean _bfd_generic_final_link (bfd *, struct bfd_link_info *); @@ -562,7 +629,7 @@ /* Clear a given location using a given howto. */ extern void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd, - bfd_byte *location); + asection *input_section, bfd_byte *location); /* Link stabs in sections in the first pass. */ @@ -746,6 +813,16 @@ extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *); extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *); +struct dwarf_debug_section +{ + const char *uncompressed_name; + const char *compressed_name; +}; + +/* Map of uncompressed DWARF debug section name to compressed one. It + is terminated by NULL uncompressed_name. */ + +extern struct dwarf_debug_section dwarf_debug_sections[]; /* Extracted from init.c. */ /* Extracted from libbfd.c. */ bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int); @@ -777,6 +854,7 @@ void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len, int prot, int flags, file_ptr offset); }; +extern const struct bfd_iovec _bfd_memory_iovec; /* Extracted from bfdwin.c. */ struct _bfd_window_internal { struct _bfd_window_internal *next; @@ -888,6 +966,8 @@ "BFD_RELOC_SPARC_GOTDATA_OP_HIX22", "BFD_RELOC_SPARC_GOTDATA_OP_LOX10", "BFD_RELOC_SPARC_GOTDATA_OP", + "BFD_RELOC_SPARC_JMP_IREL", + "BFD_RELOC_SPARC_IRELATIVE", "BFD_RELOC_SPARC_BASE13", "BFD_RELOC_SPARC_BASE22", "BFD_RELOC_SPARC_10", @@ -1288,6 +1368,7 @@ "BFD_RELOC_ARM_RELATIVE", "BFD_RELOC_ARM_GOTOFF", "BFD_RELOC_ARM_GOTPC", + "BFD_RELOC_ARM_GOT_PREL", "BFD_RELOC_ARM_TLS_GD32", "BFD_RELOC_ARM_TLS_LDO32", "BFD_RELOC_ARM_TLS_LDM32", @@ -1296,6 +1377,12 @@ "BFD_RELOC_ARM_TLS_TPOFF32", "BFD_RELOC_ARM_TLS_IE32", "BFD_RELOC_ARM_TLS_LE32", + "BFD_RELOC_ARM_TLS_GOTDESC", + "BFD_RELOC_ARM_TLS_CALL", + "BFD_RELOC_ARM_THM_TLS_CALL", + "BFD_RELOC_ARM_TLS_DESCSEQ", + "BFD_RELOC_ARM_THM_TLS_DESCSEQ", + "BFD_RELOC_ARM_TLS_DESC", "BFD_RELOC_ARM_ALU_PC_G0_NC", "BFD_RELOC_ARM_ALU_PC_G0", "BFD_RELOC_ARM_ALU_PC_G1_NC", @@ -1325,6 +1412,7 @@ "BFD_RELOC_ARM_LDC_SB_G1", "BFD_RELOC_ARM_LDC_SB_G2", "BFD_RELOC_ARM_V4BX", + "BFD_RELOC_ARM_IRELATIVE", "BFD_RELOC_ARM_IMMEDIATE", "BFD_RELOC_ARM_ADRL_IMMEDIATE", "BFD_RELOC_ARM_T32_IMMEDIATE", @@ -1333,6 +1421,7 @@ "BFD_RELOC_ARM_T32_ADD_PC12", "BFD_RELOC_ARM_SHIFT_IMM", "BFD_RELOC_ARM_SMC", + "BFD_RELOC_ARM_HVC", "BFD_RELOC_ARM_SWI", "BFD_RELOC_ARM_MULTI", "BFD_RELOC_ARM_CP_OFF_IMM", @@ -1440,6 +1529,13 @@ "BFD_RELOC_SH_TLS_DTPMOD32", "BFD_RELOC_SH_TLS_DTPOFF32", "BFD_RELOC_SH_TLS_TPOFF32", + "BFD_RELOC_SH_GOT20", + "BFD_RELOC_SH_GOTOFF20", + "BFD_RELOC_SH_GOTFUNCDESC", + "BFD_RELOC_SH_GOTFUNCDESC20", + "BFD_RELOC_SH_GOTOFFFUNCDESC", + "BFD_RELOC_SH_GOTOFFFUNCDESC20", + "BFD_RELOC_SH_FUNCDESC", "BFD_RELOC_ARC_B22_PCREL", "BFD_RELOC_ARC_B26", "BFD_RELOC_BFIN_16_IMM", @@ -1556,6 +1652,28 @@ "BFD_RELOC_V850_LONGJUMP", "BFD_RELOC_V850_ALIGN", "BFD_RELOC_V850_LO16_SPLIT_OFFSET", + "BFD_RELOC_V850_16_PCREL", + "BFD_RELOC_V850_17_PCREL", + "BFD_RELOC_V850_23", + "BFD_RELOC_V850_32_PCREL", + "BFD_RELOC_V850_32_ABS", + "BFD_RELOC_V850_16_SPLIT_OFFSET", + "BFD_RELOC_V850_16_S1", + "BFD_RELOC_V850_LO16_S1", + "BFD_RELOC_V850_CALLT_15_16_OFFSET", + "BFD_RELOC_V850_32_GOTPCREL", + "BFD_RELOC_V850_16_GOT", + "BFD_RELOC_V850_32_GOT", + "BFD_RELOC_V850_22_PLT_PCREL", + "BFD_RELOC_V850_32_PLT_PCREL", + "BFD_RELOC_V850_COPY", + "BFD_RELOC_V850_GLOB_DAT", + "BFD_RELOC_V850_JMP_SLOT", + "BFD_RELOC_V850_RELATIVE", + "BFD_RELOC_V850_16_GOTOFF", + "BFD_RELOC_V850_32_GOTOFF", + "BFD_RELOC_V850_CODE", + "BFD_RELOC_V850_DATA", "BFD_RELOC_MN10300_32_PCREL", "BFD_RELOC_MN10300_16_PCREL", "BFD_RELOC_TIC30_LDP", @@ -1564,6 +1682,36 @@ "BFD_RELOC_TIC54X_23", "BFD_RELOC_TIC54X_16_OF_23", "BFD_RELOC_TIC54X_MS7_OF_23", + "BFD_RELOC_C6000_PCR_S21", + "BFD_RELOC_C6000_PCR_S12", + "BFD_RELOC_C6000_PCR_S10", + "BFD_RELOC_C6000_PCR_S7", + "BFD_RELOC_C6000_ABS_S16", + "BFD_RELOC_C6000_ABS_L16", + "BFD_RELOC_C6000_ABS_H16", + "BFD_RELOC_C6000_SBR_U15_B", + "BFD_RELOC_C6000_SBR_U15_H", + "BFD_RELOC_C6000_SBR_U15_W", + "BFD_RELOC_C6000_SBR_S16", + "BFD_RELOC_C6000_SBR_L16_B", + "BFD_RELOC_C6000_SBR_L16_H", + "BFD_RELOC_C6000_SBR_L16_W", + "BFD_RELOC_C6000_SBR_H16_B", + "BFD_RELOC_C6000_SBR_H16_H", + "BFD_RELOC_C6000_SBR_H16_W", + "BFD_RELOC_C6000_SBR_GOT_U15_W", + "BFD_RELOC_C6000_SBR_GOT_L16_W", + "BFD_RELOC_C6000_SBR_GOT_H16_W", + "BFD_RELOC_C6000_DSBT_INDEX", + "BFD_RELOC_C6000_PREL31", + "BFD_RELOC_C6000_COPY", + "BFD_RELOC_C6000_JUMP_SLOT", + "BFD_RELOC_C6000_EHTYPE", + "BFD_RELOC_C6000_PCR_H16", + "BFD_RELOC_C6000_PCR_L16", + "BFD_RELOC_C6000_ALIGN", + "BFD_RELOC_C6000_FPHEAD", + "BFD_RELOC_C6000_NOCMP", "BFD_RELOC_FR30_48", "BFD_RELOC_FR30_20", "BFD_RELOC_FR30_6_IN_4", @@ -1646,6 +1794,33 @@ "BFD_RELOC_AVR_LDI", "BFD_RELOC_AVR_6", "BFD_RELOC_AVR_6_ADIW", + "BFD_RELOC_RX_NEG8", + "BFD_RELOC_RX_NEG16", + "BFD_RELOC_RX_NEG24", + "BFD_RELOC_RX_NEG32", + "BFD_RELOC_RX_16_OP", + "BFD_RELOC_RX_24_OP", + "BFD_RELOC_RX_32_OP", + "BFD_RELOC_RX_8U", + "BFD_RELOC_RX_16U", + "BFD_RELOC_RX_24U", + "BFD_RELOC_RX_DIR3U_PCREL", + "BFD_RELOC_RX_DIFF", + "BFD_RELOC_RX_GPRELB", + "BFD_RELOC_RX_GPRELW", + "BFD_RELOC_RX_GPRELL", + "BFD_RELOC_RX_SYM", + "BFD_RELOC_RX_OP_SUBTRACT", + "BFD_RELOC_RX_OP_NEG", + "BFD_RELOC_RX_ABS8", + "BFD_RELOC_RX_ABS16", + "BFD_RELOC_RX_ABS16_REV", + "BFD_RELOC_RX_ABS32", + "BFD_RELOC_RX_ABS32_REV", + "BFD_RELOC_RX_ABS16U", + "BFD_RELOC_RX_ABS16UW", + "BFD_RELOC_RX_ABS16UL", + "BFD_RELOC_RX_RELAX", "BFD_RELOC_390_12", "BFD_RELOC_390_GOT12", "BFD_RELOC_390_PLT32", @@ -2072,6 +2247,15 @@ "BFD_RELOC_LM32_RELATIVE", "BFD_RELOC_MACH_O_SECTDIFF", "BFD_RELOC_MACH_O_PAIR", + "BFD_RELOC_MACH_O_X86_64_BRANCH32", + "BFD_RELOC_MACH_O_X86_64_BRANCH8", + "BFD_RELOC_MACH_O_X86_64_GOT", + "BFD_RELOC_MACH_O_X86_64_GOT_LOAD", + "BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32", + "BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64", + "BFD_RELOC_MACH_O_X86_64_PCREL32_1", + "BFD_RELOC_MACH_O_X86_64_PCREL32_2", + "BFD_RELOC_MACH_O_X86_64_PCREL32_4", "BFD_RELOC_MICROBLAZE_32_LO", "BFD_RELOC_MICROBLAZE_32_LO_PCREL", "BFD_RELOC_MICROBLAZE_32_ROSDA", diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/libcoff-in.h crash-6.1.6/=unpacked-tar1=/bfd/libcoff-in.h --- crash-5.1.6/=unpacked-tar1=/bfd/libcoff-in.h 2009-09-05 07:56:22.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/libcoff-in.h 2011-03-31 08:08:39.000000000 +0000 @@ -26,7 +26,6 @@ /* Object file tdata; access macros. */ #define coff_data(bfd) ((bfd)->tdata.coff_obj_data) -#define exec_hdr(bfd) (coff_data (bfd)->hdr) #define obj_pe(bfd) (coff_data (bfd)->pe) #define obj_symbols(bfd) (coff_data (bfd)->symbols) #define obj_sym_filepos(bfd) (coff_data (bfd)->sym_filepos) @@ -118,6 +117,7 @@ struct internal_extra_pe_aouthdr pe_opthdr; int dll; int has_reloc_section; + int dont_strip_reloc; bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *); flagword real_flags; } pe_data_type; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/libcoff.h crash-6.1.6/=unpacked-tar1=/bfd/libcoff.h --- crash-5.1.6/=unpacked-tar1=/bfd/libcoff.h 2009-09-05 07:56:22.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/libcoff.h 2011-03-31 08:08:39.000000000 +0000 @@ -30,7 +30,6 @@ /* Object file tdata; access macros. */ #define coff_data(bfd) ((bfd)->tdata.coff_obj_data) -#define exec_hdr(bfd) (coff_data (bfd)->hdr) #define obj_pe(bfd) (coff_data (bfd)->pe) #define obj_symbols(bfd) (coff_data (bfd)->symbols) #define obj_sym_filepos(bfd) (coff_data (bfd)->sym_filepos) @@ -122,6 +121,7 @@ struct internal_extra_pe_aouthdr pe_opthdr; int dll; int has_reloc_section; + int dont_strip_reloc; bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *); flagword real_flags; } pe_data_type; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/libecoff.h crash-6.1.6/=unpacked-tar1=/bfd/libecoff.h --- crash-5.1.6/=unpacked-tar1=/bfd/libecoff.h 2009-02-18 18:23:07.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/libecoff.h 2010-03-24 15:41:59.000000000 +0000 @@ -1,6 +1,7 @@ /* BFD ECOFF object file private structure. Copyright 1993, 1994, 1995, 1996, 1999, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -270,6 +271,7 @@ extern bfd_boolean _bfd_ecoff_write_armap (bfd *, unsigned int, struct orl *, unsigned int, int); #define _bfd_ecoff_read_ar_hdr _bfd_generic_read_ar_hdr +#define _bfd_ecoff_write_ar_hdr _bfd_generic_write_ar_hdr #define _bfd_ecoff_openr_next_archived_file \ bfd_generic_openr_next_archived_file #define _bfd_ecoff_get_elt_at_index _bfd_generic_get_elt_at_index @@ -315,6 +317,8 @@ extern bfd_boolean _bfd_ecoff_bfd_link_add_symbols (bfd *, struct bfd_link_info *); #define _bfd_ecoff_bfd_link_just_syms _bfd_generic_link_just_syms +#define _bfd_ecoff_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type extern bfd_boolean _bfd_ecoff_bfd_final_link (bfd *, struct bfd_link_info *); diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/linker.c crash-6.1.6/=unpacked-tar1=/bfd/linker.c --- crash-5.1.6/=unpacked-tar1=/bfd/linker.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/linker.c 2010-12-13 01:06:16.000000000 +0000 @@ -223,7 +223,10 @@ archive and decide which elements of the archive should be included in the link. For each such element it must call the <> linker callback, and it must add the - symbols from the object file to the linker hash table. + symbols from the object file to the linker hash table. (The + callback may in fact indicate that a replacement BFD should be + used, in which case the symbols from that BFD should be added + to the linker hash table instead.) @findex _bfd_generic_link_add_archive_symbols In most cases the work of looking through the symbols in the @@ -243,9 +246,13 @@ element should be included in the link. If the element is to be included, the <> linker callback routine must be called with the element as an argument, and - the elements symbols must be added to the linker hash table + the element's symbols must be added to the linker hash table just as though the element had itself been passed to the - <<_bfd_link_add_symbols>> function. + <<_bfd_link_add_symbols>> function. The <> + callback has the option to indicate that it would like to + replace the element archive with a substitute BFD, in which + case it is the symbols of that substitute BFD that must be + added to the linker hash table instead. When the a.out <<_bfd_link_add_symbols>> function receives an archive, it calls <<_bfd_generic_link_add_archive_symbols>> @@ -257,7 +264,8 @@ symbol) it calls the <> callback and then <> calls <> to actually add the symbols to the - linker hash table. + linker hash table - possibly those of a substitute BFD, if the + <> callback avails itself of that option. The ECOFF back end is unusual in that it does not normally call <<_bfd_generic_link_add_archive_symbols>>, because ECOFF @@ -797,6 +805,17 @@ sec->output_offset = sec->vma; } +/* Copy the type of a symbol assiciated with a linker hast table entry. + Override this so that symbols created in linker scripts get their + type from the RHS of the assignment. + The default implementation does nothing. */ +void +_bfd_generic_copy_link_hash_symbol_type (bfd *abfd ATTRIBUTE_UNUSED, + struct bfd_link_hash_entry * hdest ATTRIBUTE_UNUSED, + struct bfd_link_hash_entry * hsrc ATTRIBUTE_UNUSED) +{ +} + /* Add symbols from an object file to the global hash table. */ static bfd_boolean @@ -946,8 +965,10 @@ included. CHECKFN should set *PNEEDED to TRUE if the object file should be included, and must also call the bfd_link_info add_archive_element callback function and handle adding the symbols - to the global hash table. CHECKFN should only return FALSE if some - sort of error occurs. + to the global hash table. CHECKFN must notice if the callback + indicates a substitute BFD, and arrange to add those symbols instead + if it does so. CHECKFN should only return FALSE if some sort of + error occurs. For some formats, such as a.out, it is possible to look through an object file but not actually include it in the link. The @@ -1202,10 +1223,17 @@ { bfd_size_type symcount; asymbol **symbols; + bfd *oldbfd = abfd; /* This object file defines this symbol, so pull it in. */ - if (! (*info->callbacks->add_archive_element) (info, abfd, - bfd_asymbol_name (p))) + if (!(*info->callbacks + ->add_archive_element) (info, abfd, bfd_asymbol_name (p), + &abfd)) + return FALSE; + /* Potentially, the add_archive_element hook may have set a + substitute BFD for us. */ + if (abfd != oldbfd + && !bfd_generic_link_read_symbols (abfd)) return FALSE; symcount = _bfd_generic_link_get_symcount (abfd); symbols = _bfd_generic_link_get_symbols (abfd); @@ -1230,9 +1258,13 @@ /* This symbol was created as undefined from outside BFD. We assume that we should link in the object file. This is for the -u option in the linker. */ - if (! (*info->callbacks->add_archive_element) - (info, abfd, bfd_asymbol_name (p))) + if (!(*info->callbacks + ->add_archive_element) (info, abfd, bfd_asymbol_name (p), + &abfd)) return FALSE; + /* Potentially, the add_archive_element hook may have set a + substitute BFD for us. But no symbols are going to get + registered by anything we're returning to from here. */ *pneeded = TRUE; return TRUE; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/lynx-core.c crash-6.1.6/=unpacked-tar1=/bfd/lynx-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/lynx-core.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/lynx-core.c 2010-08-18 12:24:07.000000000 +0000 @@ -53,6 +53,7 @@ #define core_command(bfd) (core_hdr(bfd)->cmd) #define lynx_core_file_matches_executable_p generic_core_file_matches_executable_p +#define lynx_core_file_pid _bfd_nocore_core_file_pid /* Handle Lynx core dump file. */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/m68klinux.c crash-6.1.6/=unpacked-tar1=/bfd/m68klinux.c --- crash-5.1.6/=unpacked-tar1=/bfd/m68klinux.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/m68klinux.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for linux flavored m68k a.out binaries. Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -23,7 +23,6 @@ #define ZMAGIC_DISK_BLOCK_SIZE 1024 #define SEGMENT_SIZE TARGET_PAGE_SIZE #define TEXT_START_ADDR 0x0 -#define N_SHARED_LIB(x) 0 #define MACHTYPE_OK(mtype) ((mtype) == M_68020 || (mtype) == M_UNKNOWN) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/m88kmach3.c crash-6.1.6/=unpacked-tar1=/bfd/m88kmach3.c --- crash-5.1.6/=unpacked-tar1=/bfd/m88kmach3.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/m88kmach3.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for Motorola m88k a.out (Mach 3) binaries. - Copyright 1990, 1991, 1993, 1994, 1995, 2001, 2003, 2005, 2007 + Copyright 1990, 1991, 1993, 1994, 1995, 2001, 2003, 2005, 2007, 2009 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -23,7 +23,6 @@ #define SEGMENT_SIZE 0x20000 #define TEXT_START_ADDR 0 #define N_HEADER_IN_TEXT(x) 1 /* (N_MAGIG(x) == ZMAGIC) */ -#define N_SHARED_LIB(x) 0 #define N_TXTSIZE(x) ((x).a_text) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/mach-o-i386.c crash-6.1.6/=unpacked-tar1=/bfd/mach-o-i386.c --- crash-5.1.6/=unpacked-tar1=/bfd/mach-o-i386.c 2009-06-25 12:39:06.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/mach-o-i386.c 2010-01-11 15:39:41.000000000 +0000 @@ -288,6 +288,7 @@ #define TARGET_NAME mach_o_i386_vec #define TARGET_STRING "mach-o-i386" +#define TARGET_ARCHITECTURE bfd_arch_i386 #define TARGET_BIG_ENDIAN 0 #define TARGET_ARCHIVE 0 #include "mach-o-target.c" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/mach-o-target.c crash-6.1.6/=unpacked-tar1=/bfd/mach-o-target.c --- crash-5.1.6/=unpacked-tar1=/bfd/mach-o-target.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/mach-o-target.c 2010-08-18 12:24:07.000000000 +0000 @@ -1,5 +1,5 @@ /* Mach-O support for BFD. - Copyright 1999, 2000, 2001, 2002, 2005, 2007, 2008, 2009 + Copyright 1999, 2000, 2001, 2002, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -25,16 +25,6 @@ #ifndef MACH_O_TARGET_COMMON_DEFINED #define MACH_O_TARGET_COMMON_DEFINED -#define bfd_mach_o_mkarchive _bfd_noarchive_mkarchive -#define bfd_mach_o_read_ar_hdr _bfd_noarchive_read_ar_hdr -#define bfd_mach_o_slurp_armap _bfd_noarchive_slurp_armap -#define bfd_mach_o_slurp_extended_name_table _bfd_noarchive_slurp_extended_name_table -#define bfd_mach_o_construct_extended_name_table _bfd_noarchive_construct_extended_name_table -#define bfd_mach_o_truncate_arname _bfd_noarchive_truncate_arname -#define bfd_mach_o_write_armap _bfd_noarchive_write_armap -#define bfd_mach_o_get_elt_at_index _bfd_noarchive_get_elt_at_index -#define bfd_mach_o_generic_stat_arch_elt _bfd_noarchive_generic_stat_arch_elt -#define bfd_mach_o_update_armap_timestamp _bfd_noarchive_update_armap_timestamp #define bfd_mach_o_close_and_cleanup _bfd_generic_close_and_cleanup #define bfd_mach_o_bfd_free_cached_info _bfd_generic_bfd_free_cached_info #define bfd_mach_o_new_section_hook _bfd_generic_new_section_hook @@ -53,9 +43,10 @@ #define bfd_mach_o_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define bfd_mach_o_bfd_link_add_symbols _bfd_generic_link_add_symbols #define bfd_mach_o_bfd_link_just_syms _bfd_generic_link_just_syms +#define bfd_mach_o_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define bfd_mach_o_bfd_final_link _bfd_generic_final_link #define bfd_mach_o_bfd_link_split_section _bfd_generic_link_split_section -#define bfd_mach_o_set_arch_mach bfd_default_set_arch_mach #define bfd_mach_o_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data #define bfd_mach_o_bfd_set_private_flags _bfd_generic_bfd_set_private_flags #define bfd_mach_o_get_section_contents _bfd_generic_get_section_contents @@ -67,10 +58,10 @@ #define bfd_mach_o_bfd_define_common_symbol bfd_generic_define_common_symbol #define bfd_mach_o_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data #define bfd_mach_o_core_file_matches_executable_p generic_core_file_matches_executable_p +#define bfd_mach_o_core_file_pid _bfd_nocore_core_file_pid #define bfd_mach_o_get_dynamic_symtab_upper_bound bfd_mach_o_get_symtab_upper_bound #define bfd_mach_o_canonicalize_dynamic_symtab bfd_mach_o_canonicalize_symtab -#define bfd_mach_o_get_synthetic_symtab _bfd_nodynamic_get_synthetic_symtab #define TARGET_NAME_BACKEND XCONCAT2(TARGET_NAME,_backend) @@ -84,6 +75,10 @@ #error TARGET_STRING must be defined #endif /* TARGET_STRING */ +#ifndef TARGET_ARCHITECTURE +#error TARGET_ARCHITECTURE must be defined +#endif /* TARGET_ARCHITECTURE */ + #ifndef TARGET_BIG_ENDIAN #error TARGET_BIG_ENDIAN must be defined #endif /* TARGET_BIG_ENDIAN */ @@ -98,6 +93,7 @@ static const bfd_mach_o_backend_data TARGET_NAME_BACKEND = { + TARGET_ARCHITECTURE, bfd_mach_o_swap_reloc_in, bfd_mach_o_swap_reloc_out, bfd_mach_o_print_thread @@ -171,7 +167,7 @@ #if TARGET_ARCHIVE BFD_JUMP_TABLE_ARCHIVE (bfd_mach_o), #else - BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd44), #endif BFD_JUMP_TABLE_SYMBOLS (bfd_mach_o), BFD_JUMP_TABLE_RELOCS (bfd_mach_o), diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/mach-o-x86-64.c crash-6.1.6/=unpacked-tar1=/bfd/mach-o-x86-64.c --- crash-5.1.6/=unpacked-tar1=/bfd/mach-o-x86-64.c 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/mach-o-x86-64.c 2010-01-13 11:49:36.000000000 +0000 @@ -0,0 +1,280 @@ +/* Intel x86-64 Mach-O support for BFD. + Copyright 2010 + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "sysdep.h" +#include "mach-o.h" +#include "bfd.h" +#include "libbfd.h" +#include "libiberty.h" + +#define bfd_mach_o_object_p bfd_mach_o_x86_64_object_p +#define bfd_mach_o_core_p bfd_mach_o_x86_64_core_p +#define bfd_mach_o_mkobject bfd_mach_o_x86_64_mkobject + +static const bfd_target * +bfd_mach_o_x86_64_object_p (bfd *abfd) +{ + return bfd_mach_o_header_p (abfd, 0, BFD_MACH_O_CPU_TYPE_X86_64); +} + +static const bfd_target * +bfd_mach_o_x86_64_core_p (bfd *abfd) +{ + return bfd_mach_o_header_p (abfd, + BFD_MACH_O_MH_CORE, BFD_MACH_O_CPU_TYPE_X86_64); +} + +static bfd_boolean +bfd_mach_o_x86_64_mkobject (bfd *abfd) +{ + bfd_mach_o_data_struct *mdata; + + if (!bfd_mach_o_mkobject_init (abfd)) + return FALSE; + + mdata = bfd_mach_o_get_data (abfd); + mdata->header.magic = BFD_MACH_O_MH_MAGIC; + mdata->header.cputype = BFD_MACH_O_CPU_TYPE_X86_64; + mdata->header.cpusubtype = BFD_MACH_O_CPU_SUBTYPE_X86_ALL; + mdata->header.byteorder = BFD_ENDIAN_LITTLE; + mdata->header.version = 1; + + return TRUE; +} + +/* In case we're on a 32-bit machine, construct a 64-bit "-1" value. */ +#define MINUS_ONE (~ (bfd_vma) 0) + +static reloc_howto_type x86_64_howto_table[]= +{ + /* 0 */ + HOWTO(BFD_RELOC_64, 0, 4, 64, FALSE, 0, + complain_overflow_bitfield, + NULL, "64", + FALSE, MINUS_ONE, MINUS_ONE, FALSE), + HOWTO(BFD_RELOC_32, 0, 2, 32, FALSE, 0, + complain_overflow_bitfield, + NULL, "32", + FALSE, 0xffffffff, 0xffffffff, FALSE), + HOWTO(BFD_RELOC_32_PCREL, 0, 2, 32, TRUE, 0, + complain_overflow_bitfield, + NULL, "DISP32", + FALSE, 0xffffffff, 0xffffffff, TRUE), + HOWTO(BFD_RELOC_MACH_O_X86_64_PCREL32_1, 0, 2, 32, TRUE, 0, + complain_overflow_bitfield, + NULL, "DISP32_1", + FALSE, 0xffffffff, 0xffffffff, TRUE), + /* 4 */ + HOWTO(BFD_RELOC_MACH_O_X86_64_PCREL32_2, 0, 2, 32, TRUE, 0, + complain_overflow_bitfield, + NULL, "DISP32_2", + FALSE, 0xffffffff, 0xffffffff, TRUE), + HOWTO(BFD_RELOC_MACH_O_X86_64_PCREL32_4, 0, 2, 32, TRUE, 0, + complain_overflow_bitfield, + NULL, "DISP32_4", + FALSE, 0xffffffff, 0xffffffff, TRUE), + HOWTO(BFD_RELOC_MACH_O_X86_64_BRANCH32, 0, 2, 32, TRUE, 0, + complain_overflow_bitfield, + NULL, "BRANCH32", + FALSE, 0xffffffff, 0xffffffff, TRUE), + HOWTO(BFD_RELOC_MACH_O_X86_64_GOT_LOAD, 0, 2, 32, TRUE, 0, + complain_overflow_bitfield, + NULL, "GOT_LOAD", + FALSE, 0xffffffff, 0xffffffff, TRUE), + /* 8 */ + HOWTO(BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32, 0, 2, 32, FALSE, 0, + complain_overflow_bitfield, + NULL, "SUBTRACTOR32", + FALSE, 0xffffffff, 0xffffffff, FALSE), + HOWTO(BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64, 0, 4, 64, FALSE, 0, + complain_overflow_bitfield, + NULL, "SUBTRACTOR64", + FALSE, MINUS_ONE, MINUS_ONE, FALSE), + HOWTO(BFD_RELOC_MACH_O_X86_64_GOT, 0, 2, 32, TRUE, 0, + complain_overflow_bitfield, + NULL, "GOT", + FALSE, 0xffffffff, 0xffffffff, TRUE), + HOWTO(BFD_RELOC_MACH_O_X86_64_BRANCH8, 0, 0, 8, TRUE, 0, + complain_overflow_bitfield, + NULL, "BRANCH8", + FALSE, 0xff, 0xff, TRUE), +}; + +static bfd_boolean +bfd_mach_o_x86_64_swap_reloc_in (arelent *res, bfd_mach_o_reloc_info *reloc) +{ + /* On x86-64, scattered relocs are not used. */ + if (reloc->r_scattered) + return FALSE; + + switch (reloc->r_type) + { + case BFD_MACH_O_X86_64_RELOC_UNSIGNED: + if (reloc->r_pcrel) + return FALSE; + switch (reloc->r_length) + { + case 2: + res->howto = &x86_64_howto_table[1]; + return TRUE; + case 3: + res->howto = &x86_64_howto_table[0]; + return TRUE; + default: + return FALSE; + } + case BFD_MACH_O_X86_64_RELOC_SIGNED: + if (reloc->r_length == 2 && reloc->r_pcrel) + { + res->howto = &x86_64_howto_table[2]; + return TRUE; + } + break; + case BFD_MACH_O_X86_64_RELOC_BRANCH: + if (!reloc->r_pcrel) + return FALSE; + switch (reloc->r_length) + { + case 2: + res->howto = &x86_64_howto_table[6]; + return TRUE; + default: + return FALSE; + } + break; + case BFD_MACH_O_X86_64_RELOC_GOT_LOAD: + if (reloc->r_length == 2 && reloc->r_pcrel && reloc->r_extern) + { + res->howto = &x86_64_howto_table[7]; + return TRUE; + } + break; + case BFD_MACH_O_X86_64_RELOC_GOT: + if (reloc->r_length == 2 && reloc->r_pcrel && reloc->r_extern) + { + res->howto = &x86_64_howto_table[10]; + return TRUE; + } + break; + case BFD_MACH_O_X86_64_RELOC_SUBTRACTOR: + if (reloc->r_pcrel) + return FALSE; + switch (reloc->r_length) + { + case 2: + res->howto = &x86_64_howto_table[8]; + return TRUE; + case 3: + res->howto = &x86_64_howto_table[9]; + return TRUE; + default: + return FALSE; + } + break; + case BFD_MACH_O_X86_64_RELOC_SIGNED_1: + if (reloc->r_length == 2 && reloc->r_pcrel) + { + res->howto = &x86_64_howto_table[3]; + return TRUE; + } + break; + case BFD_MACH_O_X86_64_RELOC_SIGNED_2: + if (reloc->r_length == 2 && reloc->r_pcrel) + { + res->howto = &x86_64_howto_table[4]; + return TRUE; + } + break; + case BFD_MACH_O_X86_64_RELOC_SIGNED_4: + if (reloc->r_length == 2 && reloc->r_pcrel) + { + res->howto = &x86_64_howto_table[5]; + return TRUE; + } + break; + default: + return FALSE; + } + return FALSE; +} + +static bfd_boolean +bfd_mach_o_x86_64_swap_reloc_out (arelent *rel, bfd_mach_o_reloc_info *rinfo) +{ + rinfo->r_address = rel->address; + switch (rel->howto->type) + { + case BFD_RELOC_64: + rinfo->r_scattered = 0; + rinfo->r_type = BFD_MACH_O_X86_64_RELOC_UNSIGNED; + rinfo->r_pcrel = 0; + rinfo->r_length = rel->howto->size; /* Correct in practice. */ + if ((*rel->sym_ptr_ptr)->flags & BSF_SECTION_SYM) + { + rinfo->r_extern = 0; + rinfo->r_value = (*rel->sym_ptr_ptr)->section->target_index; + } + else + { + rinfo->r_extern = 1; + rinfo->r_value = (*rel->sym_ptr_ptr)->udata.i; + } + break; + default: + return FALSE; + } + return TRUE; +} + +static reloc_howto_type * +bfd_mach_o_x86_64_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, + bfd_reloc_code_real_type code) +{ + unsigned int i; + + for (i = 0; + i < sizeof (x86_64_howto_table) / sizeof (*x86_64_howto_table); + i++) + if (code == x86_64_howto_table[i].type) + return &x86_64_howto_table[i]; + return NULL; +} + +static reloc_howto_type * +bfd_mach_o_x86_64_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, + const char *name ATTRIBUTE_UNUSED) +{ + return NULL; +} + +#define bfd_mach_o_swap_reloc_in bfd_mach_o_x86_64_swap_reloc_in +#define bfd_mach_o_swap_reloc_out bfd_mach_o_x86_64_swap_reloc_out + +#define bfd_mach_o_bfd_reloc_type_lookup bfd_mach_o_x86_64_bfd_reloc_type_lookup +#define bfd_mach_o_bfd_reloc_name_lookup bfd_mach_o_x86_64_bfd_reloc_name_lookup +#define bfd_mach_o_print_thread NULL + +#define TARGET_NAME mach_o_x86_64_vec +#define TARGET_STRING "mach-o-x86-64" +#define TARGET_ARCHITECTURE bfd_arch_i386 +#define TARGET_BIG_ENDIAN 0 +#define TARGET_ARCHIVE 0 +#include "mach-o-target.c" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/mach-o.c crash-6.1.6/=unpacked-tar1=/bfd/mach-o.c --- crash-5.1.6/=unpacked-tar1=/bfd/mach-o.c 2009-09-16 13:30:31.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/mach-o.c 2011-01-14 12:35:56.000000000 +0000 @@ -1,5 +1,6 @@ /* Mach-O support for BFD. - Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, + 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -29,12 +30,12 @@ #define bfd_mach_o_object_p bfd_mach_o_gen_object_p #define bfd_mach_o_core_p bfd_mach_o_gen_core_p -#define bfd_mach_o_mkobject bfd_false +#define bfd_mach_o_mkobject bfd_mach_o_gen_mkobject #define FILE_ALIGN(off, algn) \ (((off) + ((file_ptr) 1 << (algn)) - 1) & ((file_ptr) -1 << (algn))) -static int bfd_mach_o_scan_read_symtab_symbols (bfd *); +static int bfd_mach_o_read_symtab_symbols (bfd *); unsigned int bfd_mach_o_version (bfd *abfd) @@ -90,38 +91,43 @@ { const char *bfd_name; const char *mach_o_name; + flagword flags; }; static const struct mach_o_section_name_xlat dwarf_section_names_xlat[] = { - { ".debug_frame", "__debug_frame" }, - { ".debug_info", "__debug_info" }, - { ".debug_abbrev", "__debug_abbrev" }, - { ".debug_aranges", "__debug_aranges" }, - { ".debug_macinfo", "__debug_macinfo" }, - { ".debug_line", "__debug_line" }, - { ".debug_loc", "__debug_loc" }, - { ".debug_pubnames", "__debug_pubnames" }, - { ".debug_pubtypes", "__debug_pubtypes" }, - { ".debug_str", "__debug_str" }, - { ".debug_ranges", "__debug_ranges" }, - { NULL, NULL} + { ".debug_frame", "__debug_frame", SEC_DEBUGGING }, + { ".debug_info", "__debug_info", SEC_DEBUGGING }, + { ".debug_abbrev", "__debug_abbrev", SEC_DEBUGGING }, + { ".debug_aranges", "__debug_aranges", SEC_DEBUGGING }, + { ".debug_macinfo", "__debug_macinfo", SEC_DEBUGGING }, + { ".debug_line", "__debug_line", SEC_DEBUGGING }, + { ".debug_loc", "__debug_loc", SEC_DEBUGGING }, + { ".debug_pubnames", "__debug_pubnames", SEC_DEBUGGING }, + { ".debug_pubtypes", "__debug_pubtypes", SEC_DEBUGGING }, + { ".debug_str", "__debug_str", SEC_DEBUGGING }, + { ".debug_ranges", "__debug_ranges", SEC_DEBUGGING }, + { NULL, NULL, 0} }; static const struct mach_o_section_name_xlat text_section_names_xlat[] = { - { ".text", "__text" }, - { ".const", "__const" }, - { ".cstring", "__cstring" }, - { ".eh_frame", "__eh_frame" }, - { NULL, NULL} + { ".text", "__text", SEC_CODE | SEC_LOAD }, + { ".const", "__const", SEC_READONLY | SEC_DATA | SEC_LOAD }, + { ".cstring", "__cstring", SEC_READONLY | SEC_DATA | SEC_LOAD }, + { ".eh_frame", "__eh_frame", SEC_READONLY | SEC_LOAD }, + { NULL, NULL, 0} }; static const struct mach_o_section_name_xlat data_section_names_xlat[] = { - { ".data", "__data" }, - { ".bss", "__bss" }, - { NULL, NULL} + { ".data", "__data", SEC_DATA | SEC_LOAD }, + { ".const_data", "__const", SEC_DATA | SEC_LOAD }, + { ".dyld", "__dyld", SEC_DATA | SEC_LOAD }, + { ".lazy_symbol_ptr", "__la_symbol_ptr", SEC_DATA | SEC_LOAD }, + { ".non_lazy_symbol_ptr", "__nl_symbol_ptr", SEC_DATA | SEC_LOAD }, + { ".bss", "__bss", SEC_NO_FLAGS }, + { NULL, NULL, 0} }; struct mach_o_segment_name_xlat @@ -141,14 +147,18 @@ /* Mach-O to bfd names. */ -static char * -bfd_mach_o_convert_section_name_to_bfd (bfd *abfd, bfd_mach_o_section *section) +static void +bfd_mach_o_convert_section_name_to_bfd (bfd *abfd, bfd_mach_o_section *section, + char **name, flagword *flags) { const struct mach_o_segment_name_xlat *seg; char *res; unsigned int len; const char *pfx = ""; + *name = NULL; + *flags = SEC_NO_FLAGS; + for (seg = segsec_names_xlat; seg->segname; seg++) { if (strcmp (seg->segname, section->segname) == 0) @@ -163,9 +173,11 @@ res = bfd_alloc (abfd, len + 1); if (res == NULL) - return NULL; + return; strcpy (res, sec->bfd_name); - return res; + *name = res; + *flags = sec->flags; + return; } } } @@ -186,9 +198,9 @@ res = bfd_alloc (abfd, len); if (res == NULL) - return NULL; + return; snprintf (res, len, "%s%s.%s", pfx, section->segname, section->sectname); - return res; + *name = res; } /* Convert a bfd section name to a Mach-O segment + section name. */ @@ -254,6 +266,43 @@ section->sectname[len] = 0; } +/* Return the size of an entry for section SEC. + Must be called only for symbol pointer section and symbol stubs + sections. */ + +static unsigned int +bfd_mach_o_section_get_entry_size (bfd *abfd, bfd_mach_o_section *sec) +{ + switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK) + { + case BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS: + case BFD_MACH_O_S_LAZY_SYMBOL_POINTERS: + return bfd_mach_o_wide_p (abfd) ? 8 : 4; + case BFD_MACH_O_S_SYMBOL_STUBS: + return sec->reserved2; + default: + BFD_FAIL (); + return 0; + } +} + +/* Return the number of indirect symbols for a section. + Must be called only for symbol pointer section and symbol stubs + sections. */ + +static unsigned int +bfd_mach_o_section_get_nbr_indirect (bfd *abfd, bfd_mach_o_section *sec) +{ + unsigned int elsz; + + elsz = bfd_mach_o_section_get_entry_size (abfd, sec); + if (elsz == 0) + return 0; + else + return sec->size / elsz; +} + + /* Copy any private info we understand from the input symbol to the output symbol. */ @@ -327,10 +376,9 @@ if (nsyms < 0) return nsyms; - if (bfd_mach_o_scan_read_symtab_symbols (abfd) != 0) + if (bfd_mach_o_read_symtab_symbols (abfd) != 0) { - fprintf (stderr, - "bfd_mach_o_canonicalize_symtab: unable to load symbols\n"); + (*_bfd_error_handler) (_("bfd_mach_o_canonicalize_symtab: unable to load symbols")); return 0; } @@ -344,6 +392,104 @@ return nsyms; } +long +bfd_mach_o_get_synthetic_symtab (bfd *abfd, + long symcount ATTRIBUTE_UNUSED, + asymbol **syms ATTRIBUTE_UNUSED, + long dynsymcount ATTRIBUTE_UNUSED, + asymbol **dynsyms ATTRIBUTE_UNUSED, + asymbol **ret) +{ + bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); + bfd_mach_o_dysymtab_command *dysymtab = mdata->dysymtab; + bfd_mach_o_symtab_command *symtab = mdata->symtab; + asymbol *s; + unsigned long count, i, j, n; + size_t size; + char *names; + char *nul_name; + + *ret = NULL; + + if (dysymtab == NULL || symtab == NULL || symtab->symbols == NULL) + return 0; + + if (dysymtab->nindirectsyms == 0) + return 0; + + count = dysymtab->nindirectsyms; + size = count * sizeof (asymbol) + 1; + + for (j = 0; j < count; j++) + { + unsigned int isym = dysymtab->indirect_syms[j]; + + if (isym < symtab->nsyms && symtab->symbols[isym].symbol.name) + size += strlen (symtab->symbols[isym].symbol.name) + sizeof ("$stub"); + } + + s = *ret = (asymbol *) bfd_malloc (size); + if (s == NULL) + return -1; + names = (char *) (s + count); + nul_name = names; + *names++ = 0; + + n = 0; + for (i = 0; i < mdata->nsects; i++) + { + bfd_mach_o_section *sec = mdata->sections[i]; + unsigned int first, last; + bfd_vma addr; + bfd_vma entry_size; + + switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK) + { + case BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS: + case BFD_MACH_O_S_LAZY_SYMBOL_POINTERS: + case BFD_MACH_O_S_SYMBOL_STUBS: + first = sec->reserved1; + last = first + bfd_mach_o_section_get_nbr_indirect (abfd, sec); + addr = sec->addr; + entry_size = bfd_mach_o_section_get_entry_size (abfd, sec); + for (j = first; j < last; j++) + { + unsigned int isym = dysymtab->indirect_syms[j]; + + s->flags = BSF_GLOBAL | BSF_SYNTHETIC; + s->section = sec->bfdsection; + s->value = addr - sec->addr; + s->udata.p = NULL; + + if (isym < symtab->nsyms + && symtab->symbols[isym].symbol.name) + { + const char *sym = symtab->symbols[isym].symbol.name; + size_t len; + + s->name = names; + len = strlen (sym); + memcpy (names, sym, len); + names += len; + memcpy (names, "$stub", sizeof ("$stub")); + names += sizeof ("$stub"); + } + else + s->name = nul_name; + + addr += entry_size; + s++; + n++; + } + break; + default: + break; + } + } + + return n; +} + void bfd_mach_o_get_symbol_info (bfd *abfd ATTRIBUTE_UNUSED, asymbol *symbol, @@ -354,7 +500,7 @@ void bfd_mach_o_print_symbol (bfd *abfd, - PTR afile, + void * afile, asymbol *symbol, bfd_print_symbol_type how) { @@ -368,7 +514,7 @@ fprintf (file, "%s", symbol->name); break; default: - bfd_print_symbol_vandf (abfd, (PTR) file, symbol); + bfd_print_symbol_vandf (abfd, (void *) file, symbol); if (asym->n_type & BFD_MACH_O_N_STAB) name = bfd_get_stab_name (asym->n_type); else @@ -470,26 +616,24 @@ bfd_h_put_32 (abfd, header->reserved, buf + 28); if (bfd_seek (abfd, 0, SEEK_SET) != 0 - || bfd_bwrite ((PTR) buf, size, abfd) != size) + || bfd_bwrite ((void *) buf, size, abfd) != size) return FALSE; return TRUE; } static int -bfd_mach_o_scan_write_thread (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_write_thread (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_thread_command *cmd = &command->command.thread; unsigned int i; unsigned char buf[8]; unsigned int offset; - unsigned int nflavours; BFD_ASSERT ((command->type == BFD_MACH_O_LC_THREAD) || (command->type == BFD_MACH_O_LC_UNIXTHREAD)); offset = 8; - nflavours = 0; for (i = 0; i < cmd->nflavours; i++) { BFD_ASSERT ((cmd->flavours[i].size % 4) == 0); @@ -499,7 +643,7 @@ bfd_h_put_32 (abfd, (cmd->flavours[i].size / 4), buf + 4); if (bfd_seek (abfd, command->offset + offset, SEEK_SET) != 0 - || bfd_bwrite ((PTR) buf, 8, abfd) != 8) + || bfd_bwrite ((void *) buf, 8, abfd) != 8) return -1; offset += cmd->flavours[i].size + 8; @@ -559,12 +703,22 @@ res->addend = 0; res->address = addr; if (symnum & BFD_MACH_O_R_EXTERN) - sym = syms + num; + { + sym = syms + num; + reloc.r_extern = 1; + } else { BFD_ASSERT (num != 0); BFD_ASSERT (num <= mdata->nsects); sym = mdata->sections[num - 1]->bfdsection->symbol_ptr_ptr; + /* For a symbol defined in section S, the addend (stored in the + binary) contains the address of the section. To comply with + bfd conventio, substract the section address. + Use the address from the header, so that the user can modify + the vma of the section. */ + res->addend = -mdata->sections[num - 1]->addr; + reloc.r_extern = 0; } res->sym_ptr_ptr = sym; reloc.r_type = BFD_MACH_O_GET_R_TYPE (symnum); @@ -701,7 +855,7 @@ } static bfd_boolean -bfd_mach_o_scan_write_relocs (bfd *abfd, bfd_mach_o_section *section) +bfd_mach_o_write_relocs (bfd *abfd, bfd_mach_o_section *section) { bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); unsigned int i; @@ -764,7 +918,7 @@ bfd_put_32 (abfd, v, buf + 4); } - if (bfd_bwrite ((PTR) buf, BFD_MACH_O_RELENT_SIZE, abfd) + if (bfd_bwrite ((void *) buf, BFD_MACH_O_RELENT_SIZE, abfd) != BFD_MACH_O_RELENT_SIZE) return FALSE; } @@ -772,7 +926,7 @@ } static int -bfd_mach_o_scan_write_section_32 (bfd *abfd, bfd_mach_o_section *section) +bfd_mach_o_write_section_32 (bfd *abfd, bfd_mach_o_section *section) { unsigned char buf[BFD_MACH_O_SECTION_SIZE]; @@ -788,7 +942,7 @@ bfd_h_put_32 (abfd, section->reserved1, buf + 60); bfd_h_put_32 (abfd, section->reserved2, buf + 64); - if (bfd_bwrite ((PTR) buf, BFD_MACH_O_SECTION_SIZE, abfd) + if (bfd_bwrite ((void *) buf, BFD_MACH_O_SECTION_SIZE, abfd) != BFD_MACH_O_SECTION_SIZE) return -1; @@ -796,7 +950,7 @@ } static int -bfd_mach_o_scan_write_section_64 (bfd *abfd, bfd_mach_o_section *section) +bfd_mach_o_write_section_64 (bfd *abfd, bfd_mach_o_section *section) { unsigned char buf[BFD_MACH_O_SECTION_64_SIZE]; @@ -813,7 +967,7 @@ bfd_h_put_32 (abfd, section->reserved2, buf + 72); bfd_h_put_32 (abfd, section->reserved3, buf + 76); - if (bfd_bwrite ((PTR) buf, BFD_MACH_O_SECTION_64_SIZE, abfd) + if (bfd_bwrite ((void *) buf, BFD_MACH_O_SECTION_64_SIZE, abfd) != BFD_MACH_O_SECTION_64_SIZE) return -1; @@ -821,7 +975,7 @@ } static int -bfd_mach_o_scan_write_segment_32 (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_write_segment_32 (bfd *abfd, bfd_mach_o_load_command *command) { unsigned char buf[BFD_MACH_O_LC_SEGMENT_SIZE]; bfd_mach_o_segment_command *seg = &command->command.segment; @@ -830,7 +984,7 @@ BFD_ASSERT (command->type == BFD_MACH_O_LC_SEGMENT); for (i = 0; i < seg->nsects; i++) - if (!bfd_mach_o_scan_write_relocs (abfd, &seg->sections[i])) + if (!bfd_mach_o_write_relocs (abfd, &seg->sections[i])) return -1; memcpy (buf, seg->segname, 16); @@ -844,19 +998,19 @@ bfd_h_put_32 (abfd, seg->flags, buf + 44); if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || (bfd_bwrite ((PTR) buf, BFD_MACH_O_LC_SEGMENT_SIZE - 8, abfd) + || (bfd_bwrite ((void *) buf, BFD_MACH_O_LC_SEGMENT_SIZE - 8, abfd) != BFD_MACH_O_LC_SEGMENT_SIZE - 8)) return -1; for (i = 0; i < seg->nsects; i++) - if (bfd_mach_o_scan_write_section_32 (abfd, &seg->sections[i])) + if (bfd_mach_o_write_section_32 (abfd, &seg->sections[i])) return -1; return 0; } static int -bfd_mach_o_scan_write_segment_64 (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_write_segment_64 (bfd *abfd, bfd_mach_o_load_command *command) { unsigned char buf[BFD_MACH_O_LC_SEGMENT_64_SIZE]; bfd_mach_o_segment_command *seg = &command->command.segment; @@ -865,7 +1019,7 @@ BFD_ASSERT (command->type == BFD_MACH_O_LC_SEGMENT_64); for (i = 0; i < seg->nsects; i++) - if (!bfd_mach_o_scan_write_relocs (abfd, &seg->sections[i])) + if (!bfd_mach_o_write_relocs (abfd, &seg->sections[i])) return -1; memcpy (buf, seg->segname, 16); @@ -879,19 +1033,19 @@ bfd_h_put_32 (abfd, seg->flags, buf + 60); if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || (bfd_bwrite ((PTR) buf, BFD_MACH_O_LC_SEGMENT_64_SIZE - 8, abfd) + || (bfd_bwrite ((void *) buf, BFD_MACH_O_LC_SEGMENT_64_SIZE - 8, abfd) != BFD_MACH_O_LC_SEGMENT_64_SIZE - 8)) return -1; for (i = 0; i < seg->nsects; i++) - if (bfd_mach_o_scan_write_section_64 (abfd, &seg->sections[i])) + if (bfd_mach_o_write_section_64 (abfd, &seg->sections[i])) return -1; return 0; } static bfd_boolean -bfd_mach_o_scan_write_symtab (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_write_symtab (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); bfd_mach_o_symtab_command *sym = &command->command.symtab; @@ -919,21 +1073,20 @@ for (i = 0; i < sym->nsyms; i++) { - unsigned char buf[16]; - bfd_size_type index; + bfd_size_type str_index; bfd_mach_o_asymbol *s = (bfd_mach_o_asymbol *)symbols[i]; /* Compute name index. */ /* An index of 0 always means the empty string. */ if (s->symbol.name == 0 || s->symbol.name[0] == '\0') - index = 0; + str_index = 0; else { - index = _bfd_stringtab_add (strtab, s->symbol.name, TRUE, FALSE); - if (index == (bfd_size_type) -1) + str_index = _bfd_stringtab_add (strtab, s->symbol.name, TRUE, FALSE); + if (str_index == (bfd_size_type) -1) goto err; } - bfd_h_put_32 (abfd, index, buf); + bfd_h_put_32 (abfd, str_index, buf); bfd_h_put_8 (abfd, s->n_type, buf + 4); bfd_h_put_8 (abfd, s->n_sect, buf + 5); bfd_h_put_16 (abfd, s->n_desc, buf + 6); @@ -942,7 +1095,7 @@ else bfd_h_put_32 (abfd, s->symbol.section->vma + s->symbol.value, buf + 8); - if (bfd_bwrite ((PTR) buf, symlen, abfd) != symlen) + if (bfd_bwrite ((void *) buf, symlen, abfd) != symlen) goto err; } sym->strsize = _bfd_stringtab_size (strtab); @@ -960,7 +1113,7 @@ bfd_h_put_32 (abfd, sym->strsize, buf + 12); if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bwrite ((PTR) buf, 16, abfd) != 16) + || bfd_bwrite ((void *) buf, 16, abfd) != 16) return FALSE; return TRUE; @@ -1056,28 +1209,28 @@ bfd_h_put_32 (abfd, cur->len, buf + 4); if (bfd_seek (abfd, cur->offset, SEEK_SET) != 0 - || bfd_bwrite ((PTR) buf, 8, abfd) != 8) + || bfd_bwrite ((void *) buf, 8, abfd) != 8) return FALSE; switch (cur->type) { case BFD_MACH_O_LC_SEGMENT: - if (bfd_mach_o_scan_write_segment_32 (abfd, cur) != 0) + if (bfd_mach_o_write_segment_32 (abfd, cur) != 0) return FALSE; break; case BFD_MACH_O_LC_SEGMENT_64: - if (bfd_mach_o_scan_write_segment_64 (abfd, cur) != 0) + if (bfd_mach_o_write_segment_64 (abfd, cur) != 0) return FALSE; break; case BFD_MACH_O_LC_SYMTAB: - if (!bfd_mach_o_scan_write_symtab (abfd, cur)) + if (!bfd_mach_o_write_symtab (abfd, cur)) return FALSE; break; case BFD_MACH_O_LC_SYMSEG: break; case BFD_MACH_O_LC_THREAD: case BFD_MACH_O_LC_UNIXTHREAD: - if (bfd_mach_o_scan_write_thread (abfd, cur) != 0) + if (bfd_mach_o_write_thread (abfd, cur) != 0) return FALSE; break; case BFD_MACH_O_LC_LOADFVMLIB: @@ -1097,9 +1250,8 @@ case BFD_MACH_O_LC_SUB_FRAMEWORK: break; default: - fprintf (stderr, - "unable to write unknown load command 0x%lx\n", - (unsigned long) cur->type); + (*_bfd_error_handler) (_("unable to write unknown load command 0x%lx"), + (unsigned long) cur->type); return FALSE; } } @@ -1274,7 +1426,7 @@ /* Just read the magic number. */ if (bfd_seek (abfd, 0, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 4, abfd) != 4) + || bfd_bread ((void *) buf, 4, abfd) != 4) return FALSE; if (bfd_getb32 (buf) == BFD_MACH_O_MH_MAGIC) @@ -1316,7 +1468,7 @@ BFD_MACH_O_HEADER_64_SIZE : BFD_MACH_O_HEADER_SIZE; if (bfd_seek (abfd, 0, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, size, abfd) != size) + || bfd_bread ((void *) buf, size, abfd) != size) return FALSE; header->cputype = (*get32) (buf + 4); @@ -1340,27 +1492,39 @@ char *sname; flagword flags; - sname = bfd_mach_o_convert_section_name_to_bfd (abfd, section); + bfd_mach_o_convert_section_name_to_bfd (abfd, section, &sname, &flags); if (sname == NULL) return NULL; - if (section->flags & BFD_MACH_O_S_ATTR_DEBUG) - flags = SEC_HAS_CONTENTS | SEC_DEBUGGING; + if (flags == SEC_NO_FLAGS) + { + /* Try to guess flags. */ + if (section->flags & BFD_MACH_O_S_ATTR_DEBUG) + flags = SEC_DEBUGGING; + else + { + flags = SEC_ALLOC; + if ((section->flags & BFD_MACH_O_SECTION_TYPE_MASK) + != BFD_MACH_O_S_ZEROFILL) + { + flags |= SEC_LOAD; + if (prot & BFD_MACH_O_PROT_EXECUTE) + flags |= SEC_CODE; + if (prot & BFD_MACH_O_PROT_WRITE) + flags |= SEC_DATA; + else if (prot & BFD_MACH_O_PROT_READ) + flags |= SEC_READONLY; + } + } + } else { - flags = SEC_ALLOC; - if ((section->flags & BFD_MACH_O_SECTION_TYPE_MASK) - != BFD_MACH_O_S_ZEROFILL) - { - flags |= SEC_HAS_CONTENTS | SEC_LOAD; - if (prot & BFD_MACH_O_PROT_EXECUTE) - flags |= SEC_CODE; - if (prot & BFD_MACH_O_PROT_WRITE) - flags |= SEC_DATA; - else if (prot & BFD_MACH_O_PROT_READ) - flags |= SEC_READONLY; - } + if ((flags & SEC_DEBUGGING) == 0) + flags |= SEC_ALLOC; } + + if (section->offset != 0) + flags |= SEC_HAS_CONTENTS; if (section->nreloc != 0) flags |= SEC_RELOC; @@ -1381,15 +1545,15 @@ } static int -bfd_mach_o_scan_read_section_32 (bfd *abfd, - bfd_mach_o_section *section, - unsigned int offset, - unsigned long prot) +bfd_mach_o_read_section_32 (bfd *abfd, + bfd_mach_o_section *section, + unsigned int offset, + unsigned long prot) { unsigned char buf[BFD_MACH_O_SECTION_SIZE]; if (bfd_seek (abfd, offset, SEEK_SET) != 0 - || (bfd_bread ((PTR) buf, BFD_MACH_O_SECTION_SIZE, abfd) + || (bfd_bread ((void *) buf, BFD_MACH_O_SECTION_SIZE, abfd) != BFD_MACH_O_SECTION_SIZE)) return -1; @@ -1416,15 +1580,15 @@ } static int -bfd_mach_o_scan_read_section_64 (bfd *abfd, - bfd_mach_o_section *section, - unsigned int offset, - unsigned long prot) +bfd_mach_o_read_section_64 (bfd *abfd, + bfd_mach_o_section *section, + unsigned int offset, + unsigned long prot) { unsigned char buf[BFD_MACH_O_SECTION_64_SIZE]; if (bfd_seek (abfd, offset, SEEK_SET) != 0 - || (bfd_bread ((PTR) buf, BFD_MACH_O_SECTION_64_SIZE, abfd) + || (bfd_bread ((void *) buf, BFD_MACH_O_SECTION_64_SIZE, abfd) != BFD_MACH_O_SECTION_64_SIZE)) return -1; @@ -1451,23 +1615,23 @@ } static int -bfd_mach_o_scan_read_section (bfd *abfd, - bfd_mach_o_section *section, - unsigned int offset, - unsigned long prot, - unsigned int wide) +bfd_mach_o_read_section (bfd *abfd, + bfd_mach_o_section *section, + unsigned int offset, + unsigned long prot, + unsigned int wide) { if (wide) - return bfd_mach_o_scan_read_section_64 (abfd, section, offset, prot); + return bfd_mach_o_read_section_64 (abfd, section, offset, prot); else - return bfd_mach_o_scan_read_section_32 (abfd, section, offset, prot); + return bfd_mach_o_read_section_32 (abfd, section, offset, prot); } static int -bfd_mach_o_scan_read_symtab_symbol (bfd *abfd, - bfd_mach_o_symtab_command *sym, - bfd_mach_o_asymbol *s, - unsigned long i) +bfd_mach_o_read_symtab_symbol (bfd *abfd, + bfd_mach_o_symtab_command *sym, + bfd_mach_o_asymbol *s, + unsigned long i) { bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); unsigned int wide = mach_o_wide_p (&mdata->header); @@ -1485,10 +1649,10 @@ BFD_ASSERT (sym->strtab != NULL); if (bfd_seek (abfd, symoff, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, symwidth, abfd) != symwidth) + || bfd_bread ((void *) buf, symwidth, abfd) != symwidth) { - fprintf (stderr, "bfd_mach_o_scan_read_symtab_symbol: unable to read %d bytes at %lu\n", - symwidth, (unsigned long) symoff); + (*_bfd_error_handler) (_("bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %lu"), + symwidth, (unsigned long) symoff); return -1; } @@ -1504,8 +1668,9 @@ if (stroff >= sym->strsize) { - fprintf (stderr, "bfd_mach_o_scan_read_symtab_symbol: symbol name out of range (%lu >= %lu)\n", - (unsigned long) stroff, (unsigned long) sym->strsize); + (*_bfd_error_handler) (_("bfd_mach_o_read_symtab_symbol: symbol name out of range (%lu >= %lu)"), + (unsigned long) stroff, + (unsigned long) sym->strsize); return -1; } @@ -1588,23 +1753,23 @@ /* Mach-O uses 0 to mean "no section"; not an error. */ if (section != 0) { - fprintf (stderr, "bfd_mach_o_scan_read_symtab_symbol: " - "symbol \"%s\" specified invalid section %d (max %lu): setting to undefined\n", - s->symbol.name, section, mdata->nsects); + (*_bfd_error_handler) (_("bfd_mach_o_read_symtab_symbol: " + "symbol \"%s\" specified invalid section %d (max %lu): setting to undefined"), + s->symbol.name, section, mdata->nsects); } s->symbol.section = bfd_und_section_ptr; } break; case BFD_MACH_O_N_INDR: - fprintf (stderr, "bfd_mach_o_scan_read_symtab_symbol: " - "symbol \"%s\" is unsupported 'indirect' reference: setting to undefined\n", - s->symbol.name); + (*_bfd_error_handler) (_("bfd_mach_o_read_symtab_symbol: " + "symbol \"%s\" is unsupported 'indirect' reference: setting to undefined"), + s->symbol.name); s->symbol.section = bfd_und_section_ptr; break; default: - fprintf (stderr, "bfd_mach_o_scan_read_symtab_symbol: " - "symbol \"%s\" specified invalid type field 0x%x: setting to undefined\n", - s->symbol.name, symtype); + (*_bfd_error_handler) (_("bfd_mach_o_read_symtab_symbol: " + "symbol \"%s\" specified invalid type field 0x%x: setting to undefined"), + s->symbol.name, symtype); s->symbol.section = bfd_und_section_ptr; break; } @@ -1614,7 +1779,7 @@ } static int -bfd_mach_o_scan_read_symtab_strtab (bfd *abfd) +bfd_mach_o_read_symtab_strtab (bfd *abfd) { bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); bfd_mach_o_symtab_command *sym = mdata->symtab; @@ -1647,7 +1812,7 @@ return -1; if (bfd_seek (abfd, sym->stroff, SEEK_SET) != 0 - || bfd_bread ((PTR) sym->strtab, sym->strsize, abfd) != sym->strsize) + || bfd_bread ((void *) sym->strtab, sym->strsize, abfd) != sym->strsize) { bfd_set_error (bfd_error_file_truncated); return -1; @@ -1658,7 +1823,7 @@ } static int -bfd_mach_o_scan_read_symtab_symbols (bfd *abfd) +bfd_mach_o_read_symtab_symbols (bfd *abfd) { bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); bfd_mach_o_symtab_command *sym = mdata->symtab; @@ -1672,17 +1837,17 @@ if (sym->symbols == NULL) { - fprintf (stderr, "bfd_mach_o_scan_read_symtab_symbols: unable to allocate memory for symbols\n"); + (*_bfd_error_handler) (_("bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols")); return -1; } - ret = bfd_mach_o_scan_read_symtab_strtab (abfd); + ret = bfd_mach_o_read_symtab_strtab (abfd); if (ret != 0) return ret; for (i = 0; i < sym->nsyms; i++) { - ret = bfd_mach_o_scan_read_symtab_symbol (abfd, sym, &sym->symbols[i], i); + ret = bfd_mach_o_read_symtab_symbol (abfd, sym, &sym->symbols[i], i); if (ret != 0) return ret; } @@ -1691,28 +1856,28 @@ } int -bfd_mach_o_scan_read_dysymtab_symbol (bfd *abfd, - bfd_mach_o_dysymtab_command *dysym, - bfd_mach_o_symtab_command *sym, - bfd_mach_o_asymbol *s, - unsigned long i) +bfd_mach_o_read_dysymtab_symbol (bfd *abfd, + bfd_mach_o_dysymtab_command *dysym, + bfd_mach_o_symtab_command *sym, + bfd_mach_o_asymbol *s, + unsigned long i) { unsigned long isymoff = dysym->indirectsymoff + (i * 4); - unsigned long symindex; + unsigned long sym_index; unsigned char buf[4]; BFD_ASSERT (i < dysym->nindirectsyms); if (bfd_seek (abfd, isymoff, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 4, abfd) != 4) + || bfd_bread ((void *) buf, 4, abfd) != 4) { - fprintf (stderr, "bfd_mach_o_scan_read_dysymtab_symbol: unable to read %lu bytes at %lu\n", - (unsigned long) 4, isymoff); + (*_bfd_error_handler) (_("bfd_mach_o_read_dysymtab_symbol: unable to read %lu bytes at %lu"), + (unsigned long) 4, isymoff); return -1; } - symindex = bfd_h_get_32 (abfd, buf); + sym_index = bfd_h_get_32 (abfd, buf); - return bfd_mach_o_scan_read_symtab_symbol (abfd, sym, s, symindex); + return bfd_mach_o_read_symtab_symbol (abfd, sym, s, sym_index); } static const char * @@ -1753,8 +1918,7 @@ } static int -bfd_mach_o_scan_read_dylinker (bfd *abfd, - bfd_mach_o_load_command *command) +bfd_mach_o_read_dylinker (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_dylinker_command *cmd = &command->command.dylinker; unsigned char buf[4]; @@ -1764,7 +1928,7 @@ || (command->type == BFD_MACH_O_LC_LOAD_DYLINKER)); if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 4, abfd) != 4) + || bfd_bread ((void *) buf, 4, abfd) != 4) return -1; nameoff = bfd_h_get_32 (abfd, buf + 0); @@ -1781,7 +1945,7 @@ } static int -bfd_mach_o_scan_read_dylib (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_dylib (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_dylib_command *cmd = &command->command.dylib; unsigned char buf[16]; @@ -1800,7 +1964,7 @@ } if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 16, abfd) != 16) + || bfd_bread ((void *) buf, 16, abfd) != 16) return -1; nameoff = bfd_h_get_32 (abfd, buf + 0); @@ -1820,8 +1984,8 @@ } static int -bfd_mach_o_scan_read_prebound_dylib (bfd *abfd ATTRIBUTE_UNUSED, - bfd_mach_o_load_command *command ATTRIBUTE_UNUSED) +bfd_mach_o_read_prebound_dylib (bfd *abfd ATTRIBUTE_UNUSED, + bfd_mach_o_load_command *command ATTRIBUTE_UNUSED) { /* bfd_mach_o_prebound_dylib_command *cmd = &command->command.prebound_dylib; */ @@ -1830,7 +1994,7 @@ } static int -bfd_mach_o_scan_read_thread (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_thread (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); bfd_mach_o_thread_command *cmd = &command->command.thread; @@ -1851,7 +2015,7 @@ return -1; if (bfd_seek (abfd, command->offset + offset, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 8, abfd) != 8) + || bfd_bread ((void *) buf, 8, abfd) != 8) return -1; offset += 8 + bfd_h_get_32 (abfd, buf + 4) * 4; @@ -1876,7 +2040,7 @@ return -1; if (bfd_seek (abfd, command->offset + offset, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 8, abfd) != 8) + || bfd_bread ((void *) buf, 8, abfd) != 8) return -1; cmd->flavours[nflavours].flavour = bfd_h_get_32 (abfd, buf); @@ -1938,7 +2102,7 @@ } static int -bfd_mach_o_scan_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_dysymtab_command *cmd = &command->command.dysymtab; bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); @@ -1947,7 +2111,7 @@ BFD_ASSERT (command->type == BFD_MACH_O_LC_DYSYMTAB); if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 72, abfd) != 72) + || bfd_bread ((void *) buf, 72, abfd) != 72) return -1; cmd->ilocalsym = bfd_h_get_32 (abfd, buf + 0); @@ -1971,7 +2135,6 @@ if (cmd->nmodtab != 0) { - char buf[56]; unsigned int i; int wide = bfd_mach_o_wide_p (abfd); unsigned int module_len = wide ? 56 : 52; @@ -1989,7 +2152,7 @@ bfd_mach_o_dylib_module *module = &cmd->dylib_module[i]; unsigned long v; - if (bfd_bread ((PTR) buf, module_len, abfd) != module_len) + if (bfd_bread ((void *) buf, module_len, abfd) != module_len) return -1; module->module_name_idx = bfd_h_get_32 (abfd, buf + 0); @@ -2022,7 +2185,6 @@ if (cmd->ntoc != 0) { - char buf[8]; unsigned int i; cmd->dylib_toc = bfd_alloc @@ -2037,7 +2199,7 @@ { bfd_mach_o_dylib_table_of_content *toc = &cmd->dylib_toc[i]; - if (bfd_bread ((PTR) buf, 8, abfd) != 8) + if (bfd_bread ((void *) buf, 8, abfd) != 8) return -1; toc->symbol_index = bfd_h_get_32 (abfd, buf + 0); @@ -2047,7 +2209,6 @@ if (cmd->nindirectsyms != 0) { - char buf[4]; unsigned int i; cmd->indirect_syms = bfd_alloc @@ -2062,7 +2223,7 @@ { unsigned int *is = &cmd->indirect_syms[i]; - if (bfd_bread ((PTR) buf, 4, abfd) != 4) + if (bfd_bread ((void *) buf, 4, abfd) != 4) return -1; *is = bfd_h_get_32 (abfd, buf + 0); @@ -2071,7 +2232,6 @@ if (cmd->nextrefsyms != 0) { - char buf[4]; unsigned long v; unsigned int i; @@ -2087,7 +2247,7 @@ { bfd_mach_o_dylib_reference *ref = &cmd->ext_refs[i]; - if (bfd_bread ((PTR) buf, 4, abfd) != 4) + if (bfd_bread ((void *) buf, 4, abfd) != 4) return -1; /* Fields isym and flags are written as bit-fields, thus we need @@ -2114,7 +2274,7 @@ } static int -bfd_mach_o_scan_read_symtab (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_symtab (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_symtab_command *symtab = &command->command.symtab; bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); @@ -2123,7 +2283,7 @@ BFD_ASSERT (command->type == BFD_MACH_O_LC_SYMTAB); if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 16, abfd) != 16) + || bfd_bread ((void *) buf, 16, abfd) != 16) return -1; symtab->symoff = bfd_h_get_32 (abfd, buf); @@ -2143,47 +2303,27 @@ } static int -bfd_mach_o_scan_read_uuid (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_uuid (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_uuid_command *cmd = &command->command.uuid; - asection *bfdsec; - char *sname; - static const char prefix[] = "LC_UUID"; BFD_ASSERT (command->type == BFD_MACH_O_LC_UUID); if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bread ((PTR) cmd->uuid, 16, abfd) != 16) - return -1; - - sname = bfd_alloc (abfd, strlen (prefix) + 1); - if (sname == NULL) + || bfd_bread ((void *) cmd->uuid, 16, abfd) != 16) return -1; - strcpy (sname, prefix); - - bfdsec = bfd_make_section_anyway_with_flags (abfd, sname, SEC_HAS_CONTENTS); - if (bfdsec == NULL) - return -1; - - bfdsec->vma = 0; - bfdsec->lma = 0; - bfdsec->size = command->len - 8; - bfdsec->filepos = command->offset + 8; - bfdsec->alignment_power = 0; - - cmd->section = bfdsec; return 0; } static int -bfd_mach_o_scan_read_linkedit (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_linkedit (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_linkedit_command *cmd = &command->command.linkedit; char buf[8]; if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 8, abfd) != 8) + || bfd_bread ((void *) buf, 8, abfd) != 8) return -1; cmd->dataoff = bfd_get_32 (abfd, buf + 0); @@ -2192,14 +2332,14 @@ } static int -bfd_mach_o_scan_read_str (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_str (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_str_command *cmd = &command->command.str; char buf[4]; unsigned long off; if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 4, abfd) != 4) + || bfd_bread ((void *) buf, 4, abfd) != 4) return -1; off = bfd_get_32 (abfd, buf + 0); @@ -2209,19 +2349,19 @@ if (cmd->str == NULL) return -1; if (bfd_seek (abfd, cmd->stroff, SEEK_SET) != 0 - || bfd_bread ((PTR) cmd->str, cmd->str_len, abfd) != cmd->str_len) + || bfd_bread ((void *) cmd->str, cmd->str_len, abfd) != cmd->str_len) return -1; return 0; } static int -bfd_mach_o_scan_read_dyld_info (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_dyld_info (bfd *abfd, bfd_mach_o_load_command *command) { bfd_mach_o_dyld_info_command *cmd = &command->command.dyld_info; char buf[40]; if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, sizeof (buf), abfd) != sizeof (buf)) + || bfd_bread ((void *) buf, sizeof (buf), abfd) != sizeof (buf)) return -1; cmd->rebase_off = bfd_get_32 (abfd, buf + 0); @@ -2238,9 +2378,9 @@ } static int -bfd_mach_o_scan_read_segment (bfd *abfd, - bfd_mach_o_load_command *command, - unsigned int wide) +bfd_mach_o_read_segment (bfd *abfd, + bfd_mach_o_load_command *command, + unsigned int wide) { unsigned char buf[64]; bfd_mach_o_segment_command *seg = &command->command.segment; @@ -2251,7 +2391,7 @@ BFD_ASSERT (command->type == BFD_MACH_O_LC_SEGMENT_64); if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 64, abfd) != 64) + || bfd_bread ((void *) buf, 64, abfd) != 64) return -1; memcpy (seg->segname, buf, 16); @@ -2271,7 +2411,7 @@ BFD_ASSERT (command->type == BFD_MACH_O_LC_SEGMENT); if (bfd_seek (abfd, command->offset + 8, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 48, abfd) != 48) + || bfd_bread ((void *) buf, 48, abfd) != 48) return -1; memcpy (seg->segname, buf, 16); @@ -2304,7 +2444,7 @@ segoff = command->offset + BFD_MACH_O_LC_SEGMENT_SIZE + (i * BFD_MACH_O_SECTION_SIZE); - if (bfd_mach_o_scan_read_section + if (bfd_mach_o_read_section (abfd, &seg->sections[i], segoff, seg->initprot, wide) != 0) return -1; } @@ -2314,25 +2454,25 @@ } static int -bfd_mach_o_scan_read_segment_32 (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_segment_32 (bfd *abfd, bfd_mach_o_load_command *command) { - return bfd_mach_o_scan_read_segment (abfd, command, 0); + return bfd_mach_o_read_segment (abfd, command, 0); } static int -bfd_mach_o_scan_read_segment_64 (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_segment_64 (bfd *abfd, bfd_mach_o_load_command *command) { - return bfd_mach_o_scan_read_segment (abfd, command, 1); + return bfd_mach_o_read_segment (abfd, command, 1); } static int -bfd_mach_o_scan_read_command (bfd *abfd, bfd_mach_o_load_command *command) +bfd_mach_o_read_command (bfd *abfd, bfd_mach_o_load_command *command) { unsigned char buf[8]; /* Read command type and length. */ if (bfd_seek (abfd, command->offset, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 8, abfd) != 8) + || bfd_bread ((void *) buf, 8, abfd) != 8) return -1; command->type = bfd_h_get_32 (abfd, buf) & ~BFD_MACH_O_LC_REQ_DYLD; @@ -2343,38 +2483,38 @@ switch (command->type) { case BFD_MACH_O_LC_SEGMENT: - if (bfd_mach_o_scan_read_segment_32 (abfd, command) != 0) + if (bfd_mach_o_read_segment_32 (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_SEGMENT_64: - if (bfd_mach_o_scan_read_segment_64 (abfd, command) != 0) + if (bfd_mach_o_read_segment_64 (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_SYMTAB: - if (bfd_mach_o_scan_read_symtab (abfd, command) != 0) + if (bfd_mach_o_read_symtab (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_SYMSEG: break; case BFD_MACH_O_LC_THREAD: case BFD_MACH_O_LC_UNIXTHREAD: - if (bfd_mach_o_scan_read_thread (abfd, command) != 0) + if (bfd_mach_o_read_thread (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_LOAD_DYLINKER: case BFD_MACH_O_LC_ID_DYLINKER: - if (bfd_mach_o_scan_read_dylinker (abfd, command) != 0) + if (bfd_mach_o_read_dylinker (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_LOAD_DYLIB: case BFD_MACH_O_LC_ID_DYLIB: case BFD_MACH_O_LC_LOAD_WEAK_DYLIB: case BFD_MACH_O_LC_REEXPORT_DYLIB: - if (bfd_mach_o_scan_read_dylib (abfd, command) != 0) + if (bfd_mach_o_read_dylib (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_PREBOUND_DYLIB: - if (bfd_mach_o_scan_read_prebound_dylib (abfd, command) != 0) + if (bfd_mach_o_read_prebound_dylib (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_LOADFVMLIB: @@ -2388,32 +2528,33 @@ case BFD_MACH_O_LC_SUB_UMBRELLA: case BFD_MACH_O_LC_SUB_LIBRARY: case BFD_MACH_O_LC_SUB_CLIENT: - if (bfd_mach_o_scan_read_str (abfd, command) != 0) + case BFD_MACH_O_LC_RPATH: + if (bfd_mach_o_read_str (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_DYSYMTAB: - if (bfd_mach_o_scan_read_dysymtab (abfd, command) != 0) + if (bfd_mach_o_read_dysymtab (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_TWOLEVEL_HINTS: case BFD_MACH_O_LC_PREBIND_CKSUM: break; case BFD_MACH_O_LC_UUID: - if (bfd_mach_o_scan_read_uuid (abfd, command) != 0) + if (bfd_mach_o_read_uuid (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_CODE_SIGNATURE: case BFD_MACH_O_LC_SEGMENT_SPLIT_INFO: - if (bfd_mach_o_scan_read_linkedit (abfd, command) != 0) + if (bfd_mach_o_read_linkedit (abfd, command) != 0) return -1; break; case BFD_MACH_O_LC_DYLD_INFO: - if (bfd_mach_o_scan_read_dyld_info (abfd, command) != 0) + if (bfd_mach_o_read_dyld_info (abfd, command) != 0) return -1; break; default: - fprintf (stderr, "unable to read unknown load command 0x%lx\n", - (unsigned long) command->type); + (*_bfd_error_handler) (_("unable to read unknown load command 0x%lx"), + (unsigned long) command->type); break; } @@ -2539,6 +2680,23 @@ return 0; } +bfd_boolean +bfd_mach_o_set_arch_mach (bfd *abfd, + enum bfd_architecture arch, + unsigned long machine) +{ + bfd_mach_o_backend_data *bed = bfd_mach_o_get_backend_data (abfd); + + /* If this isn't the right architecture for this backend, and this + isn't the generic backend, fail. */ + if (arch != bed->arch + && arch != bfd_arch_unknown + && bed->arch != bfd_arch_unknown) + return FALSE; + + return bfd_default_set_arch_mach (abfd, arch, machine); +} + int bfd_mach_o_scan (bfd *abfd, bfd_mach_o_header *header, @@ -2575,8 +2733,8 @@ &cputype, &cpusubtype); if (cputype == bfd_arch_unknown) { - fprintf (stderr, "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx\n", - header->cputype, header->cpusubtype); + (*_bfd_error_handler) (_("bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"), + header->cputype, header->cpusubtype); return -1; } @@ -2601,7 +2759,7 @@ cur->offset = prev->offset + prev->len; } - if (bfd_mach_o_scan_read_command (abfd, cur) < 0) + if (bfd_mach_o_read_command (abfd, cur) < 0) return -1; } } @@ -2638,6 +2796,24 @@ return TRUE; } +static bfd_boolean +bfd_mach_o_gen_mkobject (bfd *abfd) +{ + bfd_mach_o_data_struct *mdata; + + if (!bfd_mach_o_mkobject_init (abfd)) + return FALSE; + + mdata = bfd_mach_o_get_data (abfd); + mdata->header.magic = BFD_MACH_O_MH_MAGIC; + mdata->header.cputype = 0; + mdata->header.cpusubtype = 0; + mdata->header.byteorder = abfd->xvec->byteorder; + mdata->header.version = 1; + + return TRUE; +} + const bfd_target * bfd_mach_o_header_p (bfd *abfd, bfd_mach_o_filetype filetype, @@ -2653,8 +2829,8 @@ if (! (header.byteorder == BFD_ENDIAN_BIG || header.byteorder == BFD_ENDIAN_LITTLE)) { - fprintf (stderr, "unknown header byte-order value 0x%lx\n", - (unsigned long) header.byteorder); + (*_bfd_error_handler) (_("unknown header byte-order value 0x%lx"), + (unsigned long) header.byteorder); goto wrong; } @@ -2759,7 +2935,7 @@ unsigned long i; if (bfd_seek (abfd, 0, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 8, abfd) != 8) + || bfd_bread ((void *) buf, 8, abfd) != 8) goto error; adata = bfd_alloc (abfd, sizeof (mach_o_fat_data_struct)); @@ -2784,7 +2960,7 @@ for (i = 0; i < adata->nfat_arch; i++) { if (bfd_seek (abfd, 8 + 20 * i, SEEK_SET) != 0 - || bfd_bread ((PTR) buf, 20, abfd) != 20) + || bfd_bread ((void *) buf, 20, abfd) != 20) goto error; adata->archentries[i].cputype = bfd_getb32 (buf); adata->archentries[i].cpusubtype = bfd_getb32 (buf + 4); @@ -3231,7 +3407,7 @@ fprintf (file, _(" filetype : %08lx (%s)\n"), h->filetype, bfd_mach_o_get_name (bfd_mach_o_filetype_name, h->filetype)); - fprintf (file, _(" ncmds : %08lx\n"), h->ncmds); + fprintf (file, _(" ncmds : %08lx (%lu)\n"), h->ncmds, h->ncmds); fprintf (file, _(" sizeofcmds: %08lx\n"), h->sizeofcmds); fprintf (file, _(" flags : %08lx ("), h->flags); bfd_mach_o_print_flags (bfd_mach_o_header_flags_name, h->flags, file); @@ -3281,42 +3457,6 @@ } } -/* Return the size of an entry for section SEC. - Must be called only for symbol pointer section and symbol stubs - sections. */ - -static unsigned int -bfd_mach_o_section_get_entry_size (bfd *abfd, bfd_mach_o_section *sec) -{ - switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK) - { - case BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS: - case BFD_MACH_O_S_LAZY_SYMBOL_POINTERS: - return bfd_mach_o_wide_p (abfd) ? 8 : 4; - case BFD_MACH_O_S_SYMBOL_STUBS: - return sec->reserved2; - default: - BFD_FAIL (); - return 0; - } -} - -/* Return the number of indirect symbols for a section. - Must be called only for symbol pointer section and symbol stubs - sections. */ - -static unsigned int -bfd_mach_o_section_get_nbr_indirect (bfd *abfd, bfd_mach_o_section *sec) -{ - unsigned int elsz; - - elsz = bfd_mach_o_section_get_entry_size (abfd, sec); - if (elsz == 0) - return 0; - else - return sec->size / elsz; -} - static void bfd_mach_o_print_section (bfd *abfd ATTRIBUTE_UNUSED, bfd_mach_o_section *sec, FILE *file) @@ -3448,12 +3588,12 @@ || dysymtab->nextrefsyms > 0) { /* Try to read the symbols to display the toc or indirect symbols. */ - bfd_mach_o_scan_read_symtab_symbols (abfd); + bfd_mach_o_read_symtab_symbols (abfd); } else if (dysymtab->nmodtab > 0) { /* Try to read the strtab to display modules name. */ - bfd_mach_o_scan_read_symtab_strtab (abfd); + bfd_mach_o_read_symtab_strtab (abfd); } for (i = 0; i < dysymtab->nmodtab; i++) @@ -3604,7 +3744,7 @@ } bfd_boolean -bfd_mach_o_bfd_print_private_bfd_data (bfd *abfd, PTR ptr) +bfd_mach_o_bfd_print_private_bfd_data (bfd *abfd, void * ptr) { bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); FILE *file = (FILE *) ptr; @@ -3628,10 +3768,10 @@ case BFD_MACH_O_LC_UUID: { bfd_mach_o_uuid_command *uuid = &cmd->command.uuid; - unsigned int i; + unsigned int j; - for (i = 0; i < sizeof (uuid->uuid); i++) - fprintf (file, " %02x", uuid->uuid[i]); + for (j = 0; j < sizeof (uuid->uuid); j ++) + fprintf (file, " %02x", uuid->uuid[j]); fputc ('\n', file); } break; @@ -3689,6 +3829,7 @@ case BFD_MACH_O_LC_SUB_UMBRELLA: case BFD_MACH_O_LC_SUB_LIBRARY: case BFD_MACH_O_LC_SUB_CLIENT: + case BFD_MACH_O_LC_RPATH: { bfd_mach_o_str_command *str = &cmd->command.str; fprintf (file, " %s\n", str->str); @@ -3862,17 +4003,20 @@ #define TARGET_NAME mach_o_be_vec #define TARGET_STRING "mach-o-be" +#define TARGET_ARCHITECTURE bfd_arch_unknown #define TARGET_BIG_ENDIAN 1 #define TARGET_ARCHIVE 0 #include "mach-o-target.c" #undef TARGET_NAME #undef TARGET_STRING +#undef TARGET_ARCHITECTURE #undef TARGET_BIG_ENDIAN #undef TARGET_ARCHIVE #define TARGET_NAME mach_o_le_vec #define TARGET_STRING "mach-o-le" +#define TARGET_ARCHITECTURE bfd_arch_unknown #define TARGET_BIG_ENDIAN 0 #define TARGET_ARCHIVE 0 @@ -3880,11 +4024,28 @@ #undef TARGET_NAME #undef TARGET_STRING +#undef TARGET_ARCHITECTURE #undef TARGET_BIG_ENDIAN #undef TARGET_ARCHIVE +/* Not yet handled: creating an archive. */ +#define bfd_mach_o_mkarchive _bfd_noarchive_mkarchive + +/* Not used. */ +#define bfd_mach_o_read_ar_hdr _bfd_noarchive_read_ar_hdr +#define bfd_mach_o_write_ar_hdr _bfd_noarchive_write_ar_hdr +#define bfd_mach_o_slurp_armap _bfd_noarchive_slurp_armap +#define bfd_mach_o_slurp_extended_name_table _bfd_noarchive_slurp_extended_name_table +#define bfd_mach_o_construct_extended_name_table _bfd_noarchive_construct_extended_name_table +#define bfd_mach_o_truncate_arname _bfd_noarchive_truncate_arname +#define bfd_mach_o_write_armap _bfd_noarchive_write_armap +#define bfd_mach_o_get_elt_at_index _bfd_noarchive_get_elt_at_index +#define bfd_mach_o_generic_stat_arch_elt _bfd_noarchive_generic_stat_arch_elt +#define bfd_mach_o_update_armap_timestamp _bfd_noarchive_update_armap_timestamp + #define TARGET_NAME mach_o_fat_vec #define TARGET_STRING "mach-o-fat" +#define TARGET_ARCHITECTURE bfd_arch_unknown #define TARGET_BIG_ENDIAN 1 #define TARGET_ARCHIVE 1 @@ -3892,5 +4053,6 @@ #undef TARGET_NAME #undef TARGET_STRING +#undef TARGET_ARCHITECTURE #undef TARGET_BIG_ENDIAN #undef TARGET_ARCHIVE diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/mach-o.h crash-6.1.6/=unpacked-tar1=/bfd/mach-o.h --- crash-5.1.6/=unpacked-tar1=/bfd/mach-o.h 2009-09-16 13:30:32.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/mach-o.h 2010-01-11 15:57:59.000000000 +0000 @@ -396,6 +396,17 @@ #define BFD_MACH_O_GENERIC_RELOC_PB_LA_PTR 3 #define BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF 4 +/* X86-64 relocations. */ +#define BFD_MACH_O_X86_64_RELOC_UNSIGNED 0 /* Absolute addresses. */ +#define BFD_MACH_O_X86_64_RELOC_SIGNED 1 /* 32-bit disp. */ +#define BFD_MACH_O_X86_64_RELOC_BRANCH 2 /* 32-bit pcrel disp. */ +#define BFD_MACH_O_X86_64_RELOC_GOT_LOAD 3 /* Movq load of a GOT entry. */ +#define BFD_MACH_O_X86_64_RELOC_GOT 4 /* GOT reference. */ +#define BFD_MACH_O_X86_64_RELOC_SUBTRACTOR 5 /* Symbol difference. */ +#define BFD_MACH_O_X86_64_RELOC_SIGNED_1 6 /* 32-bit signed disp -1. */ +#define BFD_MACH_O_X86_64_RELOC_SIGNED_2 7 /* 32-bit signed disp -2. */ +#define BFD_MACH_O_X86_64_RELOC_SIGNED_4 8 /* 32-bit signed disp -4. */ + /* Size of a relocation entry. */ #define BFD_MACH_O_RELENT_SIZE 8 @@ -751,7 +762,6 @@ typedef struct bfd_mach_o_uuid_command { unsigned char uuid[16]; - asection *section; } bfd_mach_o_uuid_command; @@ -846,6 +856,7 @@ /* Target specific routines. */ typedef struct bfd_mach_o_backend_data { + enum bfd_architecture arch; bfd_boolean (*_bfd_mach_o_swap_reloc_in)(arelent *, bfd_mach_o_reloc_info *); bfd_boolean (*_bfd_mach_o_swap_reloc_out)(arelent *, bfd_mach_o_reloc_info *); bfd_boolean (*_bfd_mach_o_print_thread)(bfd *, bfd_mach_o_thread_flavour *, @@ -858,7 +869,7 @@ ((bfd_mach_o_backend_data*)(abfd)->xvec->backend_data) bfd_boolean bfd_mach_o_valid (bfd *); -int bfd_mach_o_scan_read_dysymtab_symbol (bfd *, bfd_mach_o_dysymtab_command *, bfd_mach_o_symtab_command *, bfd_mach_o_asymbol *, unsigned long); +int bfd_mach_o_read_dysymtab_symbol (bfd *, bfd_mach_o_dysymtab_command *, bfd_mach_o_symtab_command *, bfd_mach_o_asymbol *, unsigned long); int bfd_mach_o_scan_start_address (bfd *); int bfd_mach_o_scan (bfd *, bfd_mach_o_header *, bfd_mach_o_data_struct *); bfd_boolean bfd_mach_o_mkobject_init (bfd *); @@ -866,6 +877,8 @@ const bfd_target *bfd_mach_o_core_p (bfd *); const bfd_target *bfd_mach_o_archive_p (bfd *); bfd *bfd_mach_o_openr_next_archived_file (bfd *, bfd *); +bfd_boolean bfd_mach_o_set_arch_mach (bfd *, enum bfd_architecture, + unsigned long); int bfd_mach_o_lookup_section (bfd *, asection *, bfd_mach_o_load_command **, bfd_mach_o_section **); int bfd_mach_o_lookup_command (bfd *, bfd_mach_o_load_command_type, bfd_mach_o_load_command **); bfd_boolean bfd_mach_o_write_contents (bfd *); @@ -876,6 +889,8 @@ bfd_boolean bfd_mach_o_bfd_copy_private_bfd_data (bfd *, bfd *); long bfd_mach_o_get_symtab_upper_bound (bfd *); long bfd_mach_o_canonicalize_symtab (bfd *, asymbol **); +long bfd_mach_o_get_synthetic_symtab (bfd *, long, asymbol **, long, + asymbol **, asymbol **ret); long bfd_mach_o_get_reloc_upper_bound (bfd *, asection *); long bfd_mach_o_canonicalize_reloc (bfd *, asection *, arelent **, asymbol **); long bfd_mach_o_get_dynamic_reloc_upper_bound (bfd *); diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/makefile.vms crash-6.1.6/=unpacked-tar1=/bfd/makefile.vms --- crash-5.1.6/=unpacked-tar1=/bfd/makefile.vms 2009-09-01 13:10:45.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/makefile.vms 2011-03-31 14:15:31.000000000 +0000 @@ -9,13 +9,15 @@ ifeq ($(ARCH),IA64) HOSTFILE=alphavms.h -OBJS:=cpu-ia64.obj,elf64-ia64.obj,elf-strtab.obj,corefile.obj,stabs.obj,\ +OBJS:=cpu-ia64.obj,elf64-ia64.obj,\ + vms-misc.obj,vms-lib.obj,elf-strtab.obj,corefile.obj,stabs.obj,\ merge.obj,elf-eh-frame.obj,elflink.obj,elf-attrs.obj,dwarf1.obj,elf64.obj -DEFS=SELECT_VECS="&bfd_elf64_ia64_vms_vec",SELECT_ARCHITECTURES="&bfd_ia64_arch" +DEFS=SELECT_VECS="&bfd_elf64_ia64_vms_vec",\ + SELECT_ARCHITECTURES="&bfd_ia64_arch","HAVE_bfd_elf64_ia64_vms_vec"=1 endif ifeq ($(ARCH),ALPHA) HOSTFILE=alphavms.h -OBJS:=vms.obj,vms-hdr.obj,vms-gsd.obj,vms-tir.obj,vms-misc.obj,cpu-alpha.obj +OBJS:=vms-alpha.obj,vms-lib.obj,vms-misc.obj,cpu-alpha.obj DEFS=SELECT_VECS="&vms_alpha_vec",SELECT_ARCHITECTURES="&bfd_alpha_arch" endif ifeq ($(ARCH),VAX) @@ -35,7 +37,8 @@ else OPT=/noopt/debug CFLAGS=/name=(as_is,shortened)/include=([],"../include")\ - /define=("unlink=remove",DEBUGDIR="""GNU$$DEBUGDIR:""",$(DEFS))$(OPT) + /define=("unlink=remove",DEBUGDIR="""GNU$$DEBUGDIR:""",$(DEFS))\ + /warns=(infor=(missingreturn,badansialias))$(OPT) endif libbfd.olb: $(OBJS) @@ -44,10 +47,6 @@ targmatch.h: bfd.h config.h: bfd.h -vms.c: vms.h -vms-mhd.c: vms.h -vms-gsd.c: vms.h -vms-tir.c: vms.h vms-misc.c: vms.h targets.c: targmatch.h diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/merge.c crash-6.1.6/=unpacked-tar1=/bfd/merge.c --- crash-5.1.6/=unpacked-tar1=/bfd/merge.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/merge.c 2010-10-29 12:10:24.000000000 +0000 @@ -136,12 +136,12 @@ sec_merge_hash_lookup (struct sec_merge_hash *table, const char *string, unsigned int alignment, bfd_boolean create) { - register const unsigned char *s; - register unsigned long hash; - register unsigned int c; + const unsigned char *s; + unsigned long hash; + unsigned int c; struct sec_merge_hash_entry *hashp; unsigned int len, i; - unsigned int index; + unsigned int _index; hash = 0; len = 0; @@ -192,8 +192,8 @@ len = table->entsize; } - index = hash % table->table.size; - for (hashp = (struct sec_merge_hash_entry *) table->table.table[index]; + _index = hash % table->table.size; + for (hashp = (struct sec_merge_hash_entry *) table->table.table[_index]; hashp != NULL; hashp = (struct sec_merge_hash_entry *) hashp->root.next) { @@ -263,7 +263,7 @@ sec_merge_add (struct sec_merge_hash *tab, const char *str, unsigned int alignment, struct sec_merge_sec_info *secinfo) { - register struct sec_merge_hash_entry *entry; + struct sec_merge_hash_entry *entry; entry = sec_merge_hash_lookup (tab, str, alignment, TRUE); if (entry == NULL) @@ -348,6 +348,7 @@ struct sec_merge_sec_info *secinfo; unsigned int align; bfd_size_type amt; + bfd_byte *contents; if ((abfd->flags & DYNAMIC) != 0 || (sec->flags & SEC_MERGE) == 0) @@ -432,8 +433,8 @@ sec->rawsize = sec->size; if (sec->flags & SEC_STRINGS) memset (secinfo->contents + sec->size, 0, sec->entsize); - if (! bfd_get_section_contents (sec->owner, sec, secinfo->contents, - 0, sec->size)) + contents = secinfo->contents; + if (! bfd_get_full_section_contents (sec->owner, sec, &contents)) goto error_return; return TRUE; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/mipsbsd.c crash-6.1.6/=unpacked-tar1=/bfd/mipsbsd.c --- crash-5.1.6/=unpacked-tar1=/bfd/mipsbsd.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/mipsbsd.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD backend for MIPS BSD (a.out) binaries. Copyright 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2005, 2007 Free Software Foundation, Inc. + 2005, 2007, 2009 Free Software Foundation, Inc. Written by Ralph Campbell. This file is part of BFD, the Binary File Descriptor library. @@ -23,7 +23,6 @@ /* #define ENTRY_CAN_BE_ZERO */ #define N_HEADER_IN_TEXT(x) 1 -#define N_SHARED_LIB(x) 0 #define N_TXTADDR(x) \ (N_MAGIC(x) != ZMAGIC ? (x).a_entry : /* object file or NMAGIC */\ TEXT_START_ADDR + EXEC_BYTES_SIZE /* no padding */\ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/mmo.c crash-6.1.6/=unpacked-tar1=/bfd/mmo.c --- crash-5.1.6/=unpacked-tar1=/bfd/mmo.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/mmo.c 2010-06-27 04:07:53.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for mmo objects (MMIX-specific object-format). - Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 + Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. Written by Hans-Peter Nilsson (hp@bitrange.com). Infrastructure and other bits originally copied from srec.c and @@ -1530,7 +1530,6 @@ asection *sec = bfd_make_section_old_way (abfd, MMO_TEXT_SECTION_NAME); asection *non_spec_sec = NULL; bfd_vma non_spec_vma = 0; - char *current_filename = NULL; bfd_size_type nbytes_read = 0; /* Buffer with room to read a 64-bit value. */ bfd_byte buf[8]; @@ -1789,7 +1788,6 @@ goto error_return; } - current_filename = file_names[y]; lineno = 0; break; @@ -2827,7 +2825,6 @@ mmo_write_symbols_and_terminator (bfd *abfd) { int count = bfd_get_symcount (abfd); - asymbol *maintable[2]; asymbol **table; asymbol **orig_table = bfd_get_outsymbols (abfd); int serno; @@ -2843,8 +2840,6 @@ fakemain->value = bfd_get_start_address (abfd); fakemain->name = MMIX_START_SYMBOL_NAME; fakemain->section = bfd_abs_section_ptr; - maintable[0] = fakemain; - maintable[1] = NULL; memset (&root, 0, sizeof (root)); @@ -3199,6 +3194,8 @@ #define mmo_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define mmo_bfd_link_add_symbols _bfd_generic_link_add_symbols #define mmo_bfd_link_just_syms _bfd_generic_link_just_syms +#define mmo_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define mmo_bfd_final_link _bfd_generic_final_link #define mmo_bfd_link_split_section _bfd_generic_link_split_section diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/netbsd-core.c crash-6.1.6/=unpacked-tar1=/bfd/netbsd-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/netbsd-core.c 2007-07-03 14:26:42.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/netbsd-core.c 2011-08-18 20:39:20.000000000 +0000 @@ -44,6 +44,7 @@ #define SPARC64_WCOOKIE_OFFSET 832 #define netbsd_core_file_matches_executable_p generic_core_file_matches_executable_p +#define netbsd_core_file_pid _bfd_nocore_core_file_pid struct netbsd_core_struct { @@ -280,6 +281,7 @@ 0, /* Symbol prefix. */ ' ', /* ar_pad_char. */ 16, /* ar_max_namelen. */ + 0, /* Match priority. */ NO_GET64, NO_GETS64, NO_PUT64, /* 64 bit data. */ NO_GET, NO_GETS, NO_PUT, /* 32 bit data. */ NO_GET, NO_GETS, NO_PUT, /* 16 bit data. */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/newsos3.c crash-6.1.6/=unpacked-tar1=/bfd/newsos3.c --- crash-5.1.6/=unpacked-tar1=/bfd/newsos3.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/newsos3.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for NewsOS3 (Sony, 68k) binaries. - Copyright 1990, 1991, 1994, 1995, 2000, 2001, 2003, 2005, 2007 + Copyright 1990, 1991, 1994, 1995, 2000, 2001, 2003, 2005, 2007, 2009 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -29,7 +29,6 @@ #define MY(OP) CONCAT2 (newsos3_,OP) #define TARGETNAME "a.out-newsos3" #define ENTRY_CAN_BE_ZERO -#define N_SHARED_LIB(x) 0 /* Avoids warning when compiled with -Wall. */ #define DEFAULT_ARCH bfd_arch_m68k #define TARGET_IS_BIG_ENDIAN_P #define N_HEADER_IN_TEXT(x) 0 diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/nlm-target.h crash-6.1.6/=unpacked-tar1=/bfd/nlm-target.h --- crash-5.1.6/=unpacked-tar1=/bfd/nlm-target.h 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/nlm-target.h 2009-11-23 14:41:30.000000000 +0000 @@ -54,6 +54,8 @@ #define nlm_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define nlm_bfd_link_add_symbols _bfd_generic_link_add_symbols #define nlm_bfd_link_just_syms _bfd_generic_link_just_syms +#define nlm_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define nlm_bfd_final_link _bfd_generic_final_link #define nlm_bfd_link_split_section _bfd_generic_link_split_section diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/nlm32-sparc.c crash-6.1.6/=unpacked-tar1=/bfd/nlm32-sparc.c --- crash-5.1.6/=unpacked-tar1=/bfd/nlm32-sparc.c 2007-07-03 14:26:42.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/nlm32-sparc.c 2010-06-27 04:07:53.000000000 +0000 @@ -1,6 +1,6 @@ /* Support for 32-bit SPARC NLM (NetWare Loadable Module) Copyright 1993, 1994, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2007 Free Software Foundation, Inc. + 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -93,17 +93,15 @@ arelent *rel) { bfd_vma val, addend; - unsigned int index; + unsigned int howto_index; unsigned int type; struct nlm32_sparc_reloc_ext tmp_reloc; - asection *code_sec, *data_sec; + asection *code_sec; if (bfd_bread (&tmp_reloc, (bfd_size_type) 12, abfd) != 12) return FALSE; code_sec = bfd_get_section_by_name (abfd, NLM_CODE_NAME); - data_sec = bfd_get_section_by_name (abfd, NLM_INITIALIZED_DATA_NAME); - *secp = code_sec; val = bfd_get_32 (abfd, tmp_reloc.offset); @@ -114,12 +112,12 @@ rel->addend = addend; rel->howto = NULL; - for (index = 0; - index < sizeof (nlm32_sparc_howto_table) / sizeof (reloc_howto_type); - index++) - if (nlm32_sparc_howto_table[index].type == type) + for (howto_index = 0; + howto_index < sizeof (nlm32_sparc_howto_table) / sizeof (reloc_howto_type); + howto_index++) + if (nlm32_sparc_howto_table[howto_index].type == type) { - rel->howto = &nlm32_sparc_howto_table[index]; + rel->howto = &nlm32_sparc_howto_table[howto_index]; break; } @@ -139,15 +137,15 @@ { bfd_vma val; struct nlm32_sparc_reloc_ext tmp_reloc; - unsigned int index; + unsigned int howto_index; int type = -1; reloc_howto_type *tmp; - for (index = 0; - index < sizeof (nlm32_sparc_howto_table) / sizeof (reloc_howto_type); - index++) + for (howto_index = 0; + howto_index < sizeof (nlm32_sparc_howto_table) / sizeof (reloc_howto_type); + howto_index++) { - tmp = &nlm32_sparc_howto_table[index]; + tmp = &nlm32_sparc_howto_table[howto_index]; if (tmp->rightshift == rel->howto->rightshift && tmp->size == rel->howto->size diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/oasys.c crash-6.1.6/=unpacked-tar1=/bfd/oasys.c --- crash-5.1.6/=unpacked-tar1=/bfd/oasys.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/oasys.c 2010-03-24 15:41:59.000000000 +0000 @@ -1,6 +1,7 @@ /* BFD back-end for oasys objects. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. + 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 + Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support, . This file is part of BFD, the Binary File Descriptor library. @@ -786,7 +787,7 @@ { unsigned int count; asymbol **generic = bfd_get_outsymbols (abfd); - unsigned int index = 0; + unsigned int sym_index = 0; for (count = 0; count < bfd_get_symcount (abfd); count++) { @@ -799,8 +800,8 @@ if (bfd_is_com_section (g->section)) { symbol.relb = RELOCATION_TYPE_COM; - H_PUT_16 (abfd, index, symbol.refno); - index++; + H_PUT_16 (abfd, sym_index, symbol.refno); + sym_index++; } else if (bfd_is_abs_section (g->section)) { @@ -810,9 +811,9 @@ else if (bfd_is_und_section (g->section)) { symbol.relb = RELOCATION_TYPE_UND; - H_PUT_16 (abfd, index, symbol.refno); - /* Overload the value field with the output index number */ - index++; + H_PUT_16 (abfd, sym_index, symbol.refno); + /* Overload the value field with the output sym_index number */ + sym_index++; } else if (g->flags & BSF_DEBUGGING) /* Throw it away. */ @@ -859,7 +860,7 @@ name[0]) + l)) return FALSE; } - g->value = index - 1; + g->value = sym_index - 1; } return TRUE; @@ -1179,6 +1180,7 @@ #define oasys_truncate_arname bfd_dont_truncate_arname #define oasys_write_armap ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) bfd_true) #define oasys_read_ar_hdr bfd_nullvoidptr +#define oasys_write_ar_hdr ((bfd_boolean (*) (bfd *, bfd *)) bfd_false) #define oasys_get_elt_at_index _bfd_generic_get_elt_at_index #define oasys_update_armap_timestamp bfd_true #define oasys_bfd_is_local_label_name bfd_generic_is_local_label_name @@ -1203,6 +1205,8 @@ #define oasys_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define oasys_bfd_link_add_symbols _bfd_generic_link_add_symbols #define oasys_bfd_link_just_syms _bfd_generic_link_just_syms +#define oasys_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define oasys_bfd_final_link _bfd_generic_final_link #define oasys_bfd_link_split_section _bfd_generic_link_split_section diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/opncls.c crash-6.1.6/=unpacked-tar1=/bfd/opncls.c --- crash-5.1.6/=unpacked-tar1=/bfd/opncls.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/opncls.c 2010-10-25 07:02:19.000000000 +0000 @@ -1,6 +1,6 @@ /* opncls.c -- open and close a BFD. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -38,9 +38,17 @@ #define S_IXOTH 0001 /* Execute by others. */ #endif -/* Counter used to initialize the bfd identifier. */ +/* Counters used to initialize the bfd identifier. */ -static unsigned int _bfd_id_counter = 0; +static unsigned int bfd_id_counter = 0; +static unsigned int bfd_reserved_id_counter = 0; + +/* +CODE_FRAGMENT +.{* Set to N to open the next N BFDs using an alternate id space. *} +.extern unsigned int bfd_use_reserved_id; +*/ +unsigned int bfd_use_reserved_id = 0; /* fdopen is a loser -- we should use stdio exclusively. Unfortunately if we do that we can't use fcntl. */ @@ -56,7 +64,13 @@ if (nbfd == NULL) return NULL; - nbfd->id = _bfd_id_counter++; + if (bfd_use_reserved_id) + { + nbfd->id = --bfd_reserved_id_counter; + --bfd_use_reserved_id; + } + else + nbfd->id = bfd_id_counter++; nbfd->memory = objalloc_create (); if (nbfd->memory == NULL) @@ -376,47 +390,47 @@ SYNOPSIS bfd *bfd_openr_iovec (const char *filename, const char *target, - void *(*open) (struct bfd *nbfd, - void *open_closure), + void *(*open_func) (struct bfd *nbfd, + void *open_closure), void *open_closure, - file_ptr (*pread) (struct bfd *nbfd, - void *stream, - void *buf, - file_ptr nbytes, - file_ptr offset), - int (*close) (struct bfd *nbfd, - void *stream), - int (*stat) (struct bfd *abfd, - void *stream, - struct stat *sb)); + file_ptr (*pread_func) (struct bfd *nbfd, + void *stream, + void *buf, + file_ptr nbytes, + file_ptr offset), + int (*close_func) (struct bfd *nbfd, + void *stream), + int (*stat_func) (struct bfd *abfd, + void *stream, + struct stat *sb)); DESCRIPTION Create and return a BFD backed by a read-only @var{stream}. - The @var{stream} is created using @var{open}, accessed using - @var{pread} and destroyed using @var{close}. + The @var{stream} is created using @var{open_func}, accessed using + @var{pread_func} and destroyed using @var{close_func}. Calls <>, so @var{target} is interpreted as by that function. - Calls @var{open} (which can call <> and + Calls @var{open_func} (which can call <> and <>) to obtain the read-only stream backing - the BFD. @var{open} either succeeds returning the + the BFD. @var{open_func} either succeeds returning the non-<> @var{stream}, or fails returning <> (setting <>). - Calls @var{pread} to request @var{nbytes} of data from + Calls @var{pread_func} to request @var{nbytes} of data from @var{stream} starting at @var{offset} (e.g., via a call to - <>). @var{pread} either succeeds returning the + <>). @var{pread_func} either succeeds returning the number of bytes read (which can be less than @var{nbytes} when end-of-file), or fails returning -1 (setting <>). - Calls @var{close} when the BFD is later closed using - <>. @var{close} either succeeds returning 0, or + Calls @var{close_func} when the BFD is later closed using + <>. @var{close_func} either succeeds returning 0, or fails returning -1 (setting <>). - Calls @var{stat} to fill in a stat structure for bfd_stat, - bfd_get_size, and bfd_get_mtime calls. @var{stat} returns 0 + Calls @var{stat_func} to fill in a stat structure for bfd_stat, + bfd_get_size, and bfd_get_mtime calls. @var{stat_func} returns 0 on success, or returns -1 on failure (setting <>). If <> returns <> then an error has @@ -523,19 +537,12 @@ bfd * bfd_openr_iovec (const char *filename, const char *target, - void *(*open) (struct bfd *nbfd, - void *open_closure), + void *(*open_p) (struct bfd *, void *), void *open_closure, - file_ptr (*pread) (struct bfd *abfd, - void *stream, - void *buf, - file_ptr nbytes, - file_ptr offset), - int (*close) (struct bfd *nbfd, - void *stream), - int (*stat) (struct bfd *abfd, - void *stream, - struct stat *sb)) + file_ptr (*pread_p) (struct bfd *, void *, void *, + file_ptr, file_ptr), + int (*close_p) (struct bfd *, void *), + int (*stat_p) (struct bfd *, void *, struct stat *)) { bfd *nbfd; const bfd_target *target_vec; @@ -556,8 +563,8 @@ nbfd->filename = filename; nbfd->direction = read_direction; - /* `open (...)' would get expanded by an the open(2) syscall macro. */ - stream = (*open) (nbfd, open_closure); + /* `open_p (...)' would get expanded by an the open(2) syscall macro. */ + stream = (*open_p) (nbfd, open_closure); if (stream == NULL) { _bfd_delete_bfd (nbfd); @@ -566,9 +573,9 @@ vec = (struct opncls *) bfd_zalloc (nbfd, sizeof (struct opncls)); vec->stream = stream; - vec->pread = pread; - vec->close = close; - vec->stat = stat; + vec->pread = pread_p; + vec->close = close_p; + vec->stat = stat_p; nbfd->iovec = &opncls_iovec; nbfd->iostream = vec; @@ -635,7 +642,7 @@ /* If the file was open for writing and is now executable, make it so. */ if (abfd->direction == write_direction - && abfd->flags & EXEC_P) + && (abfd->flags & (EXEC_P | DYNAMIC)) != 0) { struct stat buf; @@ -703,18 +710,7 @@ if (! BFD_SEND (abfd, _close_and_cleanup, (abfd))) return FALSE; - if ((abfd->flags & BFD_IN_MEMORY) != 0) - { - /* FIXME: cagney/2004-02-15: Need to implement a BFD_IN_MEMORY io - vector. - Until that's done, at least don't leak memory. */ - struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream; - free (bim->buffer); - free (bim); - ret = TRUE; - } - else - ret = abfd->iovec->bclose (abfd); + ret = abfd->iovec->bclose (abfd); if (ret) _maybe_make_executable (abfd); @@ -771,7 +767,7 @@ DESCRIPTION Create a new BFD in the manner of <>, but without opening a file. The new BFD takes the target from the target - used by @var{template}. The format is always set to <>. + used by @var{templ}. The format is always set to <>. */ bfd * @@ -828,6 +824,8 @@ bim->buffer = 0; abfd->flags |= BFD_IN_MEMORY; + abfd->iovec = &_bfd_memory_iovec; + abfd->origin = 0; abfd->direction = write_direction; abfd->where = 0; @@ -866,7 +864,6 @@ if (! BFD_SEND (abfd, _close_and_cleanup, (abfd))) return FALSE; - abfd->arch_info = &bfd_default_arch_struct; abfd->where = 0; @@ -895,7 +892,7 @@ } /* -INTERNAL_FUNCTION +FUNCTION bfd_alloc SYNOPSIS @@ -963,7 +960,7 @@ } /* -INTERNAL_FUNCTION +FUNCTION bfd_zalloc SYNOPSIS @@ -1232,7 +1229,7 @@ static char * find_separate_debug_file (bfd *abfd, const char *debug_file_directory) { - char *basename; + char *base; char *dir; char *debugfile; char *canon_dir; @@ -1251,13 +1248,13 @@ return NULL; } - basename = get_debug_link_info (abfd, & crc32); - if (basename == NULL) + base = get_debug_link_info (abfd, & crc32); + if (base == NULL) return NULL; - if (basename[0] == '\0') + if (base[0] == '\0') { - free (basename); + free (base); bfd_set_error (bfd_error_no_debug_section); return NULL; } @@ -1269,7 +1266,7 @@ dir = (char *) bfd_malloc (dirlen + 1); if (dir == NULL) { - free (basename); + free (base); return NULL; } memcpy (dir, abfd->filename, dirlen); @@ -1287,11 +1284,11 @@ bfd_malloc (strlen (debug_file_directory) + 1 + (canon_dirlen > dirlen ? canon_dirlen : dirlen) + strlen (".debug/") - + strlen (basename) + + strlen (base) + 1); if (debugfile == NULL) { - free (basename); + free (base); free (dir); free (canon_dir); return NULL; @@ -1299,11 +1296,11 @@ /* First try in the same directory as the original file: */ strcpy (debugfile, dir); - strcat (debugfile, basename); + strcat (debugfile, base); if (separate_debug_file_exists (debugfile, crc32)) { - free (basename); + free (base); free (dir); free (canon_dir); return debugfile; @@ -1312,11 +1309,11 @@ /* Then try in a subdirectory called .debug. */ strcpy (debugfile, dir); strcat (debugfile, ".debug/"); - strcat (debugfile, basename); + strcat (debugfile, base); if (separate_debug_file_exists (debugfile, crc32)) { - free (basename); + free (base); free (dir); free (canon_dir); return debugfile; @@ -1330,18 +1327,18 @@ && canon_dir[0] != '/') strcat (debugfile, "/"); strcat (debugfile, canon_dir); - strcat (debugfile, basename); + strcat (debugfile, base); if (separate_debug_file_exists (debugfile, crc32)) { - free (basename); + free (base); free (dir); free (canon_dir); return debugfile; } free (debugfile); - free (basename); + free (base); free (dir); free (canon_dir); return NULL; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/osf-core.c crash-6.1.6/=unpacked-tar1=/bfd/osf-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/osf-core.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/osf-core.c 2010-08-18 12:24:07.000000000 +0000 @@ -43,6 +43,7 @@ static int osf_core_core_file_failing_signal PARAMS ((bfd *)); #define osf_core_core_file_matches_executable_p generic_core_file_matches_executable_p +#define osf_core_core_file_pid _bfd_nocore_core_file_pid static void swap_abort PARAMS ((void)); diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/pc532-mach.c crash-6.1.6/=unpacked-tar1=/bfd/pc532-mach.c --- crash-5.1.6/=unpacked-tar1=/bfd/pc532-mach.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/pc532-mach.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for Mach3/532 a.out-ish binaries. - Copyright 1990, 1991, 1992, 1994, 1995, 2000, 2001, 2002, 2005, 2007 + Copyright 1990, 1991, 1992, 1994, 1995, 2000, 2001, 2002, 2005, 2007, 2009 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -46,7 +46,6 @@ #define SEGMENT_SIZE TARGET_PAGE_SIZE -#define N_SHARED_LIB(x) 0 #define SEGMENT_SIZE TARGET_PAGE_SIZE #define DEFAULT_ARCH bfd_arch_ns32k diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/pdp11.c crash-6.1.6/=unpacked-tar1=/bfd/pdp11.c --- crash-5.1.6/=unpacked-tar1=/bfd/pdp11.c 2009-08-29 22:10:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/pdp11.c 2010-12-13 01:06:15.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for PDP-11 a.out binaries. - Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 + Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -58,9 +58,6 @@ /* The header is not included in the text segment. */ #define N_HEADER_IN_TEXT(x) 0 -/* There are no shared libraries. */ -#define N_SHARED_LIB(x) 0 - /* There is no flags field. */ #define N_FLAGS(exec) 0 @@ -1572,7 +1569,7 @@ bfd_boolean copy) { bfd_boolean hash; - bfd_size_type index; + bfd_size_type str_index; /* An index of 0 always means the empty string. */ if (str == 0 || *str == '\0') @@ -1584,14 +1581,14 @@ if ((abfd->flags & BFD_TRADITIONAL_FORMAT) != 0) hash = FALSE; - index = _bfd_stringtab_add (tab, str, hash, copy); + str_index = _bfd_stringtab_add (tab, str, hash, copy); - if (index != (bfd_size_type) -1) + if (str_index != (bfd_size_type) -1) /* Add BYTES_IN_LONG to the return value to account for the space taken up by the string table size. */ - index += BYTES_IN_LONG; + str_index += BYTES_IN_LONG; - return index; + return str_index; } /* Write out a strtab. ABFD is already at the right location in the @@ -2548,7 +2545,8 @@ static bfd_boolean aout_link_check_ar_symbols (bfd *abfd, struct bfd_link_info *info, - bfd_boolean *pneeded) + bfd_boolean *pneeded, + bfd **subsbfd) { struct external_nlist *p; struct external_nlist *pend; @@ -2603,7 +2601,8 @@ but not if it is defined in the .text section. That seems a bit crazy to me, and I haven't implemented it. However, it might be correct. */ - if (! (*info->callbacks->add_archive_element) (info, abfd, name)) + if (!(*info->callbacks + ->add_archive_element) (info, abfd, name, subsbfd)) return FALSE; *pneeded = TRUE; return TRUE; @@ -2630,8 +2629,8 @@ outside BFD. We assume that we should link in the object file. This is done for the -u option in the linker. */ - if (! (*info->callbacks->add_archive_element) - (info, abfd, name)) + if (!(*info->callbacks + ->add_archive_element) (info, abfd, name, subsbfd)) return FALSE; *pneeded = TRUE; return TRUE; @@ -2683,21 +2682,36 @@ struct bfd_link_info *info, bfd_boolean *pneeded) { - if (! aout_get_external_symbols (abfd)) + bfd *oldbfd; + bfd_boolean needed; + + if (!aout_get_external_symbols (abfd)) return FALSE; - if (! aout_link_check_ar_symbols (abfd, info, pneeded)) + oldbfd = abfd; + if (!aout_link_check_ar_symbols (abfd, info, pneeded, &abfd)) return FALSE; - if (*pneeded) + needed = *pneeded; + if (needed) { - if (! aout_link_add_symbols (abfd, info)) + /* Potentially, the add_archive_element hook may have set a + substitute BFD for us. */ + if (abfd != oldbfd) + { + if (!info->keep_memory + && !aout_link_free_symbols (oldbfd)) + return FALSE; + if (!aout_get_external_symbols (abfd)) + return FALSE; + } + if (!aout_link_add_symbols (abfd, info)) return FALSE; } - if (! info->keep_memory || ! *pneeded) + if (!info->keep_memory || !needed) { - if (! aout_link_free_symbols (abfd)) + if (!aout_link_free_symbols (abfd)) return FALSE; } @@ -2772,7 +2786,9 @@ switch (type) { default: - abort (); + /* Anything else should be a debugging symbol. */ + BFD_ASSERT ((type & N_STAB) != 0); + continue; case N_UNDF: case N_ABS: @@ -3217,7 +3233,6 @@ char *strings; struct aout_link_hash_entry **sym_hashes; int *symbol_map; - bfd_size_type reloc_count; bfd_byte *rel; bfd_byte *rel_end; @@ -3234,7 +3249,6 @@ sym_hashes = obj_aout_sym_hashes (input_bfd); symbol_map = finfo->symbol_map; - reloc_count = rel_size / RELOC_SIZE; rel = relocs; rel_end = rel + rel_size; for (; rel < rel_end; rel += RELOC_SIZE) @@ -3571,8 +3585,6 @@ static bfd_boolean aout_link_input_bfd (struct aout_final_link_info *finfo, bfd *input_bfd) { - bfd_size_type sym_count; - BFD_ASSERT (bfd_get_format (input_bfd) == bfd_object); /* If this is a dynamic object, it may need special handling. */ @@ -3586,8 +3598,6 @@ if (! aout_get_external_symbols (input_bfd)) return FALSE; - sym_count = obj_aout_external_sym_count (input_bfd); - /* Write out the symbols and get a map of the new indices. The map is placed into finfo->symbol_map. */ if (! aout_link_write_symbols (finfo, input_bfd)) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/pe-mips.c crash-6.1.6/=unpacked-tar1=/bfd/pe-mips.c --- crash-5.1.6/=unpacked-tar1=/bfd/pe-mips.c 2009-02-18 18:23:07.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/pe-mips.c 2010-06-27 04:07:53.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for MIPS PE COFF files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Modified from coff-i386.c by DJ Delorie, dj@cygnus.com @@ -552,7 +552,6 @@ static unsigned int mips_swap_reloc_out (bfd * abfd, void * src, void * dst) { - static int prev_offset = 1; static bfd_vma prev_addr = 0; struct internal_reloc *reloc_src = (struct internal_reloc *)src; struct external_reloc *reloc_dst = (struct external_reloc *)dst; @@ -561,7 +560,6 @@ { case MIPS_R_REFHI: prev_addr = reloc_src->r_vaddr; - prev_offset = reloc_src->r_offset; break; case MIPS_R_REFLO: if (reloc_src->r_vaddr == prev_addr) @@ -599,13 +597,9 @@ struct internal_syment *syms, asection **sections) { - bfd_vma gp; - bfd_boolean gp_undefined; - size_t adjust; struct internal_reloc *rel; struct internal_reloc *rel_end; unsigned int i; - bfd_boolean got_lo; if (info->relocatable) { @@ -618,10 +612,6 @@ BFD_ASSERT (input_bfd->xvec->byteorder == output_bfd->xvec->byteorder); - gp = _bfd_get_gp_value (output_bfd); - gp_undefined = (gp == 0) ? TRUE : FALSE; - got_lo = FALSE; - adjust = 0; rel = relocs; rel_end = rel + input_section->reloc_count; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/pe-x86_64.c crash-6.1.6/=unpacked-tar1=/bfd/pe-x86_64.c --- crash-5.1.6/=unpacked-tar1=/bfd/pe-x86_64.c 2007-07-03 14:26:42.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/pe-x86_64.c 2010-09-14 20:40:39.000000000 +0000 @@ -28,7 +28,11 @@ #define COFF_WITH_PE #define COFF_WITH_pex64 #define PCRELOFFSET TRUE +#if defined (USE_MINGW64_LEADING_UNDERSCORES) #define TARGET_UNDERSCORE '_' +#else +#define TARGET_UNDERSCORE 0 +#endif #define COFF_LONG_SECTION_NAMES #define COFF_SUPPORT_GNU_LINKONCE #define COFF_LONG_FILENAMES @@ -36,11 +40,11 @@ #define COFF_SECTION_ALIGNMENT_ENTRIES \ { COFF_SECTION_NAME_EXACT_MATCH (".bss"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ -{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".data"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ -{ COFF_SECTION_NAME_EXACT_MATCH (".rdata"), \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".rdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ -{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".text"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/peXXigen.c crash-6.1.6/=unpacked-tar1=/bfd/peXXigen.c --- crash-5.1.6/=unpacked-tar1=/bfd/peXXigen.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/peXXigen.c 2010-12-21 15:24:38.000000000 +0000 @@ -1,6 +1,6 @@ /* Support for the generic parts of PE/PEI; the common executable parts. Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Solutions. This file is part of BFD, the Binary File Descriptor library. @@ -62,6 +62,7 @@ #include "bfd.h" #include "libbfd.h" #include "coff/internal.h" +#include "bfdver.h" /* NOTE: it's strange to be including an architecture specific header in what's supposed to be general (to PE/PEI) code. However, that's @@ -549,7 +550,7 @@ PEAOUTHDR *aouthdr_out = (PEAOUTHDR *) out; bfd_vma sa, fa, ib; IMAGE_DATA_DIRECTORY idata2, idata5, tls; - + sa = extra->SectionAlignment; fa = extra->FileAlignment; ib = extra->ImageBase; @@ -557,7 +558,7 @@ idata2 = pe->pe_opthdr.DataDirectory[PE_IMPORT_TABLE]; idata5 = pe->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE]; tls = pe->pe_opthdr.DataDirectory[PE_TLS_TABLE]; - + if (aouthdr_in->tsize) { aouthdr_in->text_start -= ib; @@ -614,7 +615,7 @@ /* Until other .idata fixes are made (pending patch), the entry for .idata is needed for backwards compatibility. FIXME. */ add_data_entry (abfd, extra, 1, ".idata", ib); - + /* For some reason, the virtual size (which is what's set by add_data_entry) for .reloc is not the same as the size recorded in this slot by MSVC; it doesn't seem to cause problems (so far), @@ -666,7 +667,8 @@ H_PUT_16 (abfd, aouthdr_in->magic, aouthdr_out->standard.magic); -#define LINKER_VERSION 256 /* That is, 2.56 */ +/* e.g. 219510000 is linker version 2.19 */ +#define LINKER_VERSION ((short) (BFD_VERSION / 1000000)) /* This piece of magic sets the "linker version" field to LINKER_VERSION. */ @@ -738,7 +740,8 @@ struct internal_filehdr *filehdr_in = (struct internal_filehdr *) in; struct external_PEI_filehdr *filehdr_out = (struct external_PEI_filehdr *) out; - if (pe_data (abfd)->has_reloc_section) + if (pe_data (abfd)->has_reloc_section + || pe_data (abfd)->dont_strip_reloc) filehdr_in->f_flags &= ~F_RELFLG; if (pe_data (abfd)->dll) @@ -923,7 +926,7 @@ (0x02000000). Also, the resource data should also be read and writable. */ - /* FIXME: Alignment is also encoded in this field, at least on PPC and + /* FIXME: Alignment is also encoded in this field, at least on PPC and ARM-WINCE. Although - how do we get the original alignment field back ? */ @@ -933,7 +936,7 @@ unsigned long must_have; } pe_required_section_flags; - + pe_required_section_flags known_sections [] = { { ".arch", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_DISCARDABLE | IMAGE_SCN_ALIGN_8BYTES }, @@ -1107,7 +1110,6 @@ section->name, (unsigned long) addr); dataoff = addr - section->vma; - datasize -= dataoff; #ifdef POWERPC_LE_PE if (rel_section != 0 && rel_section->size != 0) @@ -1180,7 +1182,7 @@ adj = section->vma - extra->ImageBase; /* Print all image import descriptors. */ - for (i = 0; i < datasize; i += onaline) + for (i = dataoff; i + onaline <= datasize; i += onaline) { bfd_vma hint_addr; bfd_vma time_stamp; @@ -1192,12 +1194,12 @@ char *dll; /* Print (i + extra->DataDirectory[PE_IMPORT_TABLE].VirtualAddress). */ - fprintf (file, " %08lx\t", (unsigned long) (i + adj + dataoff)); - hint_addr = bfd_get_32 (abfd, data + i + dataoff); - time_stamp = bfd_get_32 (abfd, data + i + 4 + dataoff); - forward_chain = bfd_get_32 (abfd, data + i + 8 + dataoff); - dll_name = bfd_get_32 (abfd, data + i + 12 + dataoff); - first_thunk = bfd_get_32 (abfd, data + i + 16 + dataoff); + fprintf (file, " %08lx\t", (unsigned long) (i + adj)); + hint_addr = bfd_get_32 (abfd, data + i); + time_stamp = bfd_get_32 (abfd, data + i + 4); + forward_chain = bfd_get_32 (abfd, data + i + 8); + dll_name = bfd_get_32 (abfd, data + i + 12); + first_thunk = bfd_get_32 (abfd, data + i + 16); fprintf (file, "%08lx %08lx %08lx %08lx %08lx\n", (unsigned long) hint_addr, @@ -1222,16 +1224,17 @@ bfd_vma ft_addr; bfd_size_type ft_datasize; int ft_idx; - int ft_allocated = 0; + int ft_allocated; fprintf (file, _("\tvma: Hint/Ord Member-Name Bound-To\n")); idx = hint_addr - adj; - + ft_addr = first_thunk + extra->ImageBase; - ft_data = data; ft_idx = first_thunk - adj; - ft_allocated = 0; + ft_data = data + ft_idx; + ft_datasize = datasize - ft_idx; + ft_allocated = 0; if (first_thunk != hint_addr) { @@ -1240,9 +1243,8 @@ ft_section != NULL; ft_section = ft_section->next) { - ft_datasize = ft_section->size; if (ft_addr >= ft_section->vma - && ft_addr < ft_section->vma + ft_datasize) + && ft_addr < ft_section->vma + ft_section->size) break; } @@ -1255,34 +1257,28 @@ /* Now check to see if this section is the same as our current section. If it is not then we will have to load its data in. */ - if (ft_section == section) - { - ft_data = data; - ft_idx = first_thunk - adj; - } - else + if (ft_section != section) { ft_idx = first_thunk - (ft_section->vma - extra->ImageBase); - ft_data = (bfd_byte *) bfd_malloc (datasize); + ft_datasize = ft_section->size - ft_idx; + ft_data = (bfd_byte *) bfd_malloc (ft_datasize); if (ft_data == NULL) continue; - /* Read datasize bfd_bytes starting at offset ft_idx. */ - if (! bfd_get_section_contents - (abfd, ft_section, ft_data, (bfd_vma) ft_idx, datasize)) + /* Read ft_datasize bytes starting at offset ft_idx. */ + if (!bfd_get_section_contents (abfd, ft_section, ft_data, + (bfd_vma) ft_idx, ft_datasize)) { free (ft_data); continue; } - - ft_idx = 0; ft_allocated = 1; } } /* Print HintName vector entries. */ #ifdef COFF_WITH_pex64 - for (j = 0; j < datasize; j += 8) + for (j = 0; idx + j + 8 <= datasize; j += 8) { unsigned long member = bfd_get_32 (abfd, data + idx + j); unsigned long member_high = bfd_get_32 (abfd, data + idx + j + 4); @@ -1307,17 +1303,18 @@ table holds actual addresses. */ if (time_stamp != 0 && first_thunk != 0 - && first_thunk != hint_addr) + && first_thunk != hint_addr + && j + 4 <= ft_datasize) fprintf (file, "\t%04lx", - (unsigned long) bfd_get_32 (abfd, ft_data + ft_idx + j)); + (unsigned long) bfd_get_32 (abfd, ft_data + j)); fprintf (file, "\n"); } #else - for (j = 0; j < datasize; j += 4) + for (j = 0; idx + j + 4 <= datasize; j += 4) { unsigned long member = bfd_get_32 (abfd, data + idx + j); - /* Print single IMAGE_IMPORT_BY_NAME vector. */ + /* Print single IMAGE_IMPORT_BY_NAME vector. */ if (member == 0) break; @@ -1339,9 +1336,10 @@ table holds actual addresses. */ if (time_stamp != 0 && first_thunk != 0 - && first_thunk != hint_addr) + && first_thunk != hint_addr + && j + 4 <= ft_datasize) fprintf (file, "\t%04lx", - (unsigned long) bfd_get_32 (abfd, ft_data + ft_idx + j)); + (unsigned long) bfd_get_32 (abfd, ft_data + j)); fprintf (file, "\n"); } @@ -1580,7 +1578,7 @@ /* This really is architecture dependent. On IA-64, a .pdata entry consists of three dwords containing relative virtual addresses that specify the start and end address of the code range the entry - covers and the address of the corresponding unwind info data. + covers and the address of the corresponding unwind info data. On ARM and SH-4, a compressed PDATA structure is used : _IMAGE_CE_RUNTIME_FUNCTION_ENTRY, whereas MIPS is documented to use @@ -1647,7 +1645,9 @@ bfd_vma eh_handler; bfd_vma eh_data; bfd_vma prolog_end_addr; +#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) int em_data; +#endif if (i + PDATA_ROW_SIZE > stop) break; @@ -1663,7 +1663,9 @@ /* We are probably into the padding of the section now. */ break; +#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) em_data = ((eh_handler & 0x1) << 2) | (prolog_end_addr & 0x3); +#endif eh_handler &= ~(bfd_vma) 0x3; prolog_end_addr &= ~(bfd_vma) 0x3; @@ -1782,7 +1784,7 @@ bfd_size_type i; bfd_size_type start, stop; int onaline = PDATA_ROW_SIZE; - struct sym_cache sym_cache = {0, 0} ; + struct sym_cache cache = {0, 0} ; if (section == NULL || coff_section_data (abfd, section) == NULL @@ -1821,7 +1823,6 @@ bfd_vma other_data; bfd_vma prolog_length, function_length; int flag32bit, exception_flag; - bfd_byte *tdata = 0; asection *tsection; if (i + PDATA_ROW_SIZE > stop) @@ -1853,12 +1854,13 @@ if (tsection && coff_section_data (abfd, tsection) && pei_section_data (abfd, tsection)) { - if (bfd_malloc_and_get_section (abfd, tsection, & tdata)) - { - int xx = (begin_addr - 8) - tsection->vma; + bfd_vma eh_off = (begin_addr - 8) - tsection->vma; + bfd_byte *tdata; - tdata = (bfd_byte *) bfd_malloc (8); - if (bfd_get_section_contents (abfd, tsection, tdata, (bfd_vma) xx, 8)) + tdata = (bfd_byte *) bfd_malloc (8); + if (tdata) + { + if (bfd_get_section_contents (abfd, tsection, tdata, eh_off, 8)) { bfd_vma eh, eh_data; @@ -1868,7 +1870,7 @@ fprintf (file, "%08x", (unsigned int) eh_data); if (eh != 0) { - const char *s = my_symbol_for_address (abfd, eh, &sym_cache); + const char *s = my_symbol_for_address (abfd, eh, &cache); if (s) fprintf (file, " (%s) ", s); @@ -1876,11 +1878,6 @@ } free (tdata); } - else - { - if (tdata) - free (tdata); - } } fprintf (file, "\n"); @@ -1888,7 +1885,7 @@ free (data); - cleanup_syms (& sym_cache); + cleanup_syms (& cache); return TRUE; #undef PDATA_ROW_SIZE @@ -1919,7 +1916,6 @@ FILE *file = (FILE *) vfile; bfd_byte *data = 0; asection *section = bfd_get_section_by_name (abfd, ".reloc"); - bfd_size_type datasize; bfd_size_type i; bfd_size_type start, stop; @@ -1932,7 +1928,6 @@ fprintf (file, _("\n\nPE File Base Relocations (interpreted .reloc section contents)\n")); - datasize = section->size; if (! bfd_malloc_and_get_section (abfd, section, &data)) { if (data != NULL) @@ -2189,7 +2184,7 @@ ipe = pe_data (ibfd); ope = pe_data (obfd); - + /* pe_opthdr is copied in copy_object. */ ope->dll = ipe->dll; @@ -2204,6 +2199,14 @@ pe_data (obfd)->pe_opthdr.DataDirectory[PE_BASE_RELOCATION_TABLE].VirtualAddress = 0; pe_data (obfd)->pe_opthdr.DataDirectory[PE_BASE_RELOCATION_TABLE].Size = 0; } + + /* For PIE, if there is .reloc, we won't add IMAGE_FILE_RELOCS_STRIPPED. + But there is no .reloc, we make sure that IMAGE_FILE_RELOCS_STRIPPED + won't be added. */ + if (! pe_data (ibfd)->has_reloc_section + && ! (pe_data (ibfd)->real_flags & IMAGE_FILE_RELOCS_STRIPPED)) + pe_data (obfd)->dont_strip_reloc = 1; + return TRUE; } @@ -2253,6 +2256,21 @@ coff_get_symbol_info (abfd, symbol, ret); } +#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64) +static int +sort_x64_pdata (const void *l, const void *r) +{ + const char *lp = (const char *) l; + const char *rp = (const char *) r; + bfd_vma vl, vr; + vl = bfd_getl32 (lp); vr = bfd_getl32 (rp); + if (vl != vr) + return (vl < vr ? -1 : 1); + /* We compare just begin address. */ + return 0; +} +#endif + /* Handle the .idata section and other things that need symbol table access. */ @@ -2275,7 +2293,7 @@ ".idata$2", FALSE, FALSE, TRUE); if (h1 != NULL) { - /* PR ld/2729: We cannot rely upon all the output sections having been + /* PR ld/2729: We cannot rely upon all the output sections having been created properly, so check before referencing them. Issue a warning message for any sections tht could not be found. */ if ((h1->root.type == bfd_link_hash_defined @@ -2289,7 +2307,7 @@ else { _bfd_error_handler - (_("%B: unable to fill in DataDictionary[1] because .idata$2 is missing"), + (_("%B: unable to fill in DataDictionary[1] because .idata$2 is missing"), abfd); result = FALSE; } @@ -2309,7 +2327,7 @@ else { _bfd_error_handler - (_("%B: unable to fill in DataDictionary[1] because .idata$4 is missing"), + (_("%B: unable to fill in DataDictionary[1] because .idata$4 is missing"), abfd); result = FALSE; } @@ -2330,7 +2348,7 @@ else { _bfd_error_handler - (_("%B: unable to fill in DataDictionary[12] because .idata$5 is missing"), + (_("%B: unable to fill in DataDictionary[12] because .idata$5 is missing"), abfd); result = FALSE; } @@ -2346,18 +2364,63 @@ ((h1->root.u.def.value + h1->root.u.def.section->output_section->vma + h1->root.u.def.section->output_offset) - - pe_data (abfd)->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE].VirtualAddress); + - pe_data (abfd)->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE].VirtualAddress); else { _bfd_error_handler - (_("%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"), + (_("%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"), abfd); result = FALSE; } } + else + { + h1 = coff_link_hash_lookup (coff_hash_table (info), + "__IAT_start__", FALSE, FALSE, TRUE); + if (h1 != NULL + && (h1->root.type == bfd_link_hash_defined + || h1->root.type == bfd_link_hash_defweak) + && h1->root.u.def.section != NULL + && h1->root.u.def.section->output_section != NULL) + { + bfd_vma iat_va; + + iat_va = + (h1->root.u.def.value + + h1->root.u.def.section->output_section->vma + + h1->root.u.def.section->output_offset); + + h1 = coff_link_hash_lookup (coff_hash_table (info), + "__IAT_end__", FALSE, FALSE, TRUE); + if (h1 != NULL + && (h1->root.type == bfd_link_hash_defined + || h1->root.type == bfd_link_hash_defweak) + && h1->root.u.def.section != NULL + && h1->root.u.def.section->output_section != NULL) + { + pe_data (abfd)->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE].Size = + ((h1->root.u.def.value + + h1->root.u.def.section->output_section->vma + + h1->root.u.def.section->output_offset) + - iat_va); + if (pe_data (abfd)->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE].Size != 0) + pe_data (abfd)->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE].VirtualAddress = + iat_va - pe_data (abfd)->pe_opthdr.ImageBase; + } + else + { + _bfd_error_handler + (_("%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)]" + " because .idata$6 is missing"), abfd); + result = FALSE; + } + } + } h1 = coff_link_hash_lookup (coff_hash_table (info), - "__tls_used", FALSE, FALSE, TRUE); + (bfd_get_symbol_leading_char(abfd) != 0 + ? "__tls_used" : "_tls_used"), + FALSE, FALSE, TRUE); if (h1 != NULL) { if ((h1->root.type == bfd_link_hash_defined @@ -2372,14 +2435,43 @@ else { _bfd_error_handler - (_("%B: unable to fill in DataDictionary[9] because __tls_used is missing"), + (_("%B: unable to fill in DataDictionary[9] because __tls_used is missing"), abfd); result = FALSE; } - + /* According to PECOFF sepcifications by Microsoft version 8.2 + the TLS data directory consists of 4 pointers, followed + by two 4-byte integer. This implies that the total size + is different for 32-bit and 64-bit executables. */ +#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x18; +#else + pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x28; +#endif } +/* If there is a .pdata section and we have linked pdata finally, we + need to sort the entries ascending. */ +#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64) + { + asection *sec = bfd_get_section_by_name (abfd, ".pdata"); + + if (sec) + { + bfd_size_type x = sec->rawsize ? sec->rawsize : sec->size; + + if (x && bfd_get_section_contents (abfd, sec, pfinfo->contents, 0, x)) + { + qsort (pfinfo->contents, + (size_t) ((sec->size size : x) / 12), + 12, sort_x64_pdata); + bfd_set_section_contents (pfinfo->output_bfd, sec, + pfinfo->contents, 0, x); + } + } + } +#endif + /* If we couldn't find idata$2, we either have an excessively trivial program or are in DEEP trouble; we have to assume trivial program.... */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/pef.c crash-6.1.6/=unpacked-tar1=/bfd/pef.c --- crash-5.1.6/=unpacked-tar1=/bfd/pef.c 2009-09-05 07:56:22.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/pef.c 2011-01-14 12:35:56.000000000 +0000 @@ -1,6 +1,6 @@ /* PEF support for BFD. - Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, + 2009, 2011 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -57,6 +57,8 @@ #define bfd_pef_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define bfd_pef_bfd_link_add_symbols _bfd_generic_link_add_symbols #define bfd_pef_bfd_link_just_syms _bfd_generic_link_just_syms +#define bfd_pef_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define bfd_pef_bfd_final_link _bfd_generic_final_link #define bfd_pef_bfd_link_split_section _bfd_generic_link_split_section #define bfd_pef_get_section_contents_in_window _bfd_generic_get_section_contents_in_window @@ -514,8 +516,8 @@ bfd_pef_convert_architecture (header->architecture, &cputype, &cpusubtype); if (cputype == bfd_arch_unknown) { - fprintf (stderr, "bfd_pef_scan: unknown architecture 0x%lx\n", - header->architecture); + (*_bfd_error_handler) (_("bfd_pef_scan: unknown architecture 0x%lx"), + header->architecture); return -1; } bfd_set_arch_mach (abfd, cputype, cpusubtype); @@ -728,14 +730,11 @@ asymbol **csym) { const char *const sprefix = "__stub_"; - size_t codepos = 0; unsigned long count = 0; - bfd_pef_loader_header header; bfd_pef_imported_library *libraries = NULL; bfd_pef_imported_symbol *imports = NULL; - unsigned long i; int ret; @@ -781,8 +780,7 @@ asymbol sym; const char *symname; char *name; - unsigned long index; - int ret; + unsigned long sym_index; if (csym && (csym[count] == NULL)) break; @@ -800,14 +798,14 @@ if ((codepos + 4) > codelen) break; - ret = bfd_pef_parse_function_stub (abfd, codebuf + codepos, 24, &index); + ret = bfd_pef_parse_function_stub (abfd, codebuf + codepos, 24, &sym_index); if (ret < 0) { codepos += 24; continue; } - if (index >= header.total_imported_symbol_count) + if (sym_index >= header.total_imported_symbol_count) { codepos += 24; continue; @@ -817,12 +815,12 @@ size_t max, namelen; const char *s; - if (loaderlen < (header.loader_strings_offset + imports[index].name)) + if (loaderlen < (header.loader_strings_offset + imports[sym_index].name)) goto error; - max = loaderlen - (header.loader_strings_offset + imports[index].name); + max = loaderlen - (header.loader_strings_offset + imports[sym_index].name); symname = (char *) loaderbuf; - symname += header.loader_strings_offset + imports[index].name; + symname += header.loader_strings_offset + imports[sym_index].name; namelen = 0; for (s = symname; s < (symname + max); s++) { diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/pei-x86_64.c crash-6.1.6/=unpacked-tar1=/bfd/pei-x86_64.c --- crash-5.1.6/=unpacked-tar1=/bfd/pei-x86_64.c 2009-04-21 02:13:47.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/pei-x86_64.c 2010-10-08 15:54:18.000000000 +0000 @@ -29,7 +29,11 @@ #define COFF_WITH_PE #define COFF_WITH_pex64 #define PCRELOFFSET TRUE +#if defined (USE_MINGW64_LEADING_UNDERSCORES) #define TARGET_UNDERSCORE '_' +#else +#define TARGET_UNDERSCORE 0 +#endif /* Long section names not allowed in executable images, only object files. */ #define COFF_LONG_SECTION_NAMES 0 #define COFF_SUPPORT_GNU_LINKONCE @@ -39,11 +43,11 @@ #define COFF_SECTION_ALIGNMENT_ENTRIES \ { COFF_SECTION_NAME_EXACT_MATCH (".bss"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ -{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".data"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ -{ COFF_SECTION_NAME_EXACT_MATCH (".rdata"), \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".rdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ -{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".text"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ @@ -110,17 +114,6 @@ ex_dta += ui->SizeOfBlock; switch (ui->Flags) { - case UNW_FLAG_EHANDLER: - ui->rva_ExceptionHandler = bfd_get_32 (abfd, ex_dta); - break; - case UNW_FLAG_UHANDLER: - ui->rva_TerminationHandler = bfd_get_32 (abfd, ex_dta); - break; - case UNW_FLAG_FHANDLER: - ui->rva_FrameHandler = bfd_get_32 (abfd, ex_dta); - ui->FrameHandlerArgument = bfd_get_32 (abfd, ex_dta + 4); - ui->SizeOfBlock += 8; - return; case UNW_FLAG_CHAININFO: ui->rva_FunctionEntry = bfd_get_32 (abfd, ex_dta); ui->SizeOfBlock += 4; @@ -128,26 +121,6 @@ default: return; } - ex_dta += 4; - ui->SizeOfBlock += 8; - ui->CountOfScopes = bfd_get_32 (abfd, ex_dta); - ex_dta += 4; - ui->rawScopeEntries = ex_dta; - ui->SizeOfBlock += (ui->CountOfScopes * PEX64_SCOPE_ENTRY_SIZE); -} - -static void -pex64_get_scope_entry (bfd *abfd, struct pex64_scope_entry *se, - bfd_vma idx, const bfd_byte *x) -{ - const struct external_pex64_scope_entry *ex_se; - x += (idx * PEX64_SCOPE_ENTRY_SIZE); - ex_se = (const struct external_pex64_scope_entry *) x; - memset (se, 0, sizeof (struct pex64_scope_entry)); - se->rva_BeginAddress = bfd_get_32 (abfd, ex_se->rva_BeginAddress); - se->rva_EndAddress = bfd_get_32 (abfd, ex_se->rva_EndAddress); - se->rva_HandlerAddress = bfd_get_32 (abfd, ex_se->rva_HandlerAddress); - se->rva_JumpAddress = bfd_get_32 (abfd, ex_se->rva_JumpAddress); } static void @@ -331,12 +304,13 @@ } static void -pex64_dump_xdata (FILE *file, bfd *abfd, bfd_vma addr, bfd_vma pc_addr) +pex64_dump_xdata (FILE *file, bfd *abfd, bfd_vma addr, bfd_vma pc_addr, + bfd_vma *endx) { asection *section = pex64_get_section_by_rva (abfd, addr, ".rdata"); bfd_vma vsize; bfd_byte *data = NULL; - bfd_vma i; + bfd_vma end_addr; if (!section) section = pex64_get_section_by_rva (abfd, addr, ".data"); @@ -354,8 +328,15 @@ } if (!section) return; + vsize = section->vma - pe_data (abfd)->pe_opthdr.ImageBase; addr -= vsize; + + if (endx) + end_addr = endx[0] - vsize; + else + end_addr = (section->rawsize != 0 ? section->rawsize : section->size); + if (bfd_malloc_and_get_section (abfd, section, &data)) { struct pex64_unwind_info ui; @@ -399,50 +380,44 @@ fprintf (file, "\tPrologue size: %u, Frame offset = 0x%x.\n", (unsigned int) ui.SizeOfPrologue, (unsigned int) ui.FrameOffset); fprintf (file, "\tFrame register is %s.\n", - ui.FrameRegister == 0 ? "CFA" + ui.FrameRegister == 0 ? "none" : pex_regs[(unsigned int) ui.FrameRegister]); pex64_xdata_print_uwd_codes (file, &ui, pc_addr); - switch (ui.Flags) - { - case UNW_FLAG_NHANDLER: - return; - case UNW_FLAG_EHANDLER: - fprintf (file, "\texception_handler at 0x%x.\n", (unsigned int) ui.rva_ExceptionHandler); - break; - case UNW_FLAG_UHANDLER: - fprintf (file, "\ttermination_handler at 0x%x.\n", (unsigned int) ui.rva_TerminationHandler); - case UNW_FLAG_FHANDLER: - fprintf (file, "\tframe_handler at 0x%x.\n", (unsigned int) ui.rva_FrameHandler); - fprintf (file, "\t Argument for FrameHandler: 0x%x.\n", - (unsigned int) ui.FrameHandlerArgument); - return; - case UNW_FLAG_CHAININFO: - fprintf (file, "\t Function Entry: 0x%x\n", (unsigned int) ui.rva_FunctionEntry); - return; - default: - fprintf (file, "\t Unknown flag value of 0x%x\n", (unsigned int) ui.Flags); - return; - } - fprintf (file, "\t 0x%x # of scope(s)\n", (unsigned int) ui.CountOfScopes); - for (i = 0; i < ui.CountOfScopes; i++) - { - struct pex64_scope_entry se; - pex64_get_scope_entry (abfd, &se, i, ui.rawScopeEntries); - fprintf (file, "\t scope #%u: BeginAddress: 0x%x, EndAddress: 0x%x," - "\n\t\tHandlerAddress:0x%x, JumpTarget:0x%x\n", - (unsigned int) (i + 1), - (unsigned int) se.rva_BeginAddress, - (unsigned int) se.rva_EndAddress, - (unsigned int) se.rva_HandlerAddress, - (unsigned int) se.rva_JumpAddress); - } + /* Now we need end of this xdata block. */ + addr += ui.SizeOfBlock; + if (addr < end_addr) + { + unsigned int i; + fprintf (file,"\tUser data:\n"); + for (i = 0; addr < end_addr; addr += 1, i++) + { + if ((i & 15) == 0) + fprintf (file, "\t %03x:", i); + fprintf (file, " %02x", data[addr]); + if ((i & 15) == 15) + fprintf (file, "\n"); + } + if ((i & 15) != 0) + fprintf (file, "\n"); + } } if (data != NULL) free (data); } +static int +sort_xdata_arr (const void *l, const void *r) +{ + const bfd_vma *lp = (const bfd_vma *) l; + const bfd_vma *rp = (const bfd_vma *) r; + + if (*lp == *rp) + return 0; + return (*lp < *rp ? -1 : 1); +} + static bfd_boolean pex64_bfd_print_pdata (bfd *abfd, void *vfile) { @@ -451,8 +426,12 @@ asection *section = bfd_get_section_by_name (abfd, ".pdata"); bfd_size_type datasize = 0; bfd_size_type i; - bfd_size_type start, stop; + bfd_size_type stop; + bfd_vma prev_beginaddress = 0; int onaline = PDATA_ROW_SIZE; + int seen_error = 0; + bfd_vma *xdata_arr; + int xdata_arr_cnt; if (section == NULL || coff_section_data (abfd, section) == NULL @@ -481,9 +460,10 @@ return FALSE; } - start = 0; - - for (i = start; i < stop; i += onaline) + xdata_arr = (bfd_vma *) xmalloc (sizeof (bfd_vma) * ((stop / onaline) + 1)); + xdata_arr_cnt = 0; + /* Do sanity check of pdata. */ + for (i = 0; i < stop; i += onaline) { struct pex64_runtime_function rf; @@ -495,33 +475,115 @@ && rf.rva_UnwindData == 0) /* We are probably into the padding of the section now. */ break; - fputc (' ', file); fprintf_vma (file, i + section->vma); fprintf (file, ":\t"); - rf.rva_BeginAddress += pe_data (abfd)->pe_opthdr.ImageBase; fprintf_vma (file, rf.rva_BeginAddress); fputc (' ', file); - rf.rva_EndAddress += pe_data (abfd)->pe_opthdr.ImageBase; fprintf_vma (file, rf.rva_EndAddress); fputc (' ', file); fprintf_vma (file, rf.rva_UnwindData); fprintf (file, "\n"); + if (i != 0 && rf.rva_BeginAddress <= prev_beginaddress) + { + seen_error = 1; + fprintf (file, " has %s begin address as predecessor\n", + (rf.rva_BeginAddress < prev_beginaddress ? "smaller" : "same")); + } + prev_beginaddress = rf.rva_BeginAddress; + /* Now we check for negative addresses. */ + if ((prev_beginaddress & 0x80000000) != 0) + { + seen_error = 1; + fprintf (file, " has negative begin address\n"); + } + if ((rf.rva_EndAddress & 0x80000000) != 0) + { + seen_error = 1; + fprintf (file, " has negative end address\n"); + } + if ((rf.rva_UnwindData & 0x80000000) != 0) + { + seen_error = 1; + fprintf (file, " has negative unwind address\n"); + } + if (rf.rva_UnwindData && !rf.isChained) + xdata_arr[xdata_arr_cnt++] = rf.rva_UnwindData; + } + + if (seen_error) + { + free (data); + free (xdata_arr); + + return TRUE; + } + + /* Add end of list marker. */ + xdata_arr[xdata_arr_cnt++] = ~((bfd_vma) 0); + + /* Sort start RVAs of xdata. */ + if (xdata_arr_cnt > 1) + qsort (xdata_arr, (size_t) xdata_arr_cnt, sizeof (bfd_vma), + sort_xdata_arr); + + /* Do dump of pdata related xdata. */ + + for (i = 0; i < stop; i += onaline) + { + struct pex64_runtime_function rf; + + if (i + PDATA_ROW_SIZE > stop) + break; + pex64_get_runtime_function (abfd, &rf, &data[i]); + + if (rf.rva_BeginAddress == 0 && rf.rva_EndAddress == 0 + && rf.rva_UnwindData == 0) + /* We are probably into the padding of the section now. */ + break; + if (i == 0) + fprintf (file, "\nDump of .xdata\n"); + fputc (' ', file); + fprintf_vma (file, rf.rva_UnwindData); + fprintf (file, ":\n"); + + rf.rva_BeginAddress += pe_data (abfd)->pe_opthdr.ImageBase; + rf.rva_EndAddress += pe_data (abfd)->pe_opthdr.ImageBase; if (rf.rva_UnwindData != 0) { if (rf.isChained) { fprintf (file, "\t shares information with pdata element at 0x"); - fprintf_vma (file, rf.rva_UnwindData + pe_data (abfd)->pe_opthdr.ImageBase); + fprintf_vma (file, rf.rva_UnwindData); fprintf (file, ".\n"); } else - pex64_dump_xdata (file, abfd, rf.rva_UnwindData, rf.rva_BeginAddress); + { + bfd_vma *p; + + /* Search for the current entry in the sorted array. */ + p = (bfd_vma *) + bsearch (&rf.rva_UnwindData, xdata_arr, + (size_t) xdata_arr_cnt, sizeof (bfd_vma), + sort_xdata_arr); + + /* Advance to the next pointer into the xdata section. We may + have shared xdata entries, which will result in a string of + identical pointers in the array; advance past all of them. */ + while (p[0] <= rf.rva_UnwindData) + ++p; + if (p[0] == ~((bfd_vma) 0)) + p = NULL; + + pex64_dump_xdata (file, abfd, rf.rva_UnwindData, + rf.rva_BeginAddress, p); + } } } free (data); + free (xdata_arr); return TRUE; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/peicode.h crash-6.1.6/=unpacked-tar1=/bfd/peicode.h --- crash-5.1.6/=unpacked-tar1=/bfd/peicode.h 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/peicode.h 2010-05-26 07:37:36.000000000 +0000 @@ -422,7 +422,6 @@ #define SIZEOF_ILF_SECTIONS (NUM_ILF_SECTIONS * sizeof (struct coff_section_tdata)) #define ILF_DATA_SIZE \ - sizeof (* vars.bim) \ + SIZEOF_ILF_SYMS \ + SIZEOF_ILF_SYM_TABLE \ + SIZEOF_ILF_NATIVE_SYMS \ @@ -780,15 +779,16 @@ We are going to construct the contents of the BFD in memory, so allocate all the space that we will need right now. */ - ptr = (bfd_byte *) bfd_zalloc (abfd, (bfd_size_type) ILF_DATA_SIZE); - if (ptr == NULL) + vars.bim + = (struct bfd_in_memory *) bfd_malloc ((bfd_size_type) sizeof (*vars.bim)); + if (vars.bim == NULL) return FALSE; - /* Create a bfd_in_memory structure. */ - vars.bim = (struct bfd_in_memory *) ptr; + ptr = (bfd_byte *) bfd_zmalloc ((bfd_size_type) ILF_DATA_SIZE); vars.bim->buffer = ptr; vars.bim->size = ILF_DATA_SIZE; - ptr += sizeof (* vars.bim); + if (ptr == NULL) + goto error_return; /* Initialise the pointers to regions of the memory and the other contents of the pe_ILF_vars structure as well. */ @@ -842,7 +842,7 @@ id4 = pe_ILF_make_a_section (& vars, ".idata$4", SIZEOF_IDATA4, 0); id5 = pe_ILF_make_a_section (& vars, ".idata$5", SIZEOF_IDATA5, 0); if (id4 == NULL || id5 == NULL) - return FALSE; + goto error_return; /* Fill in the contents of these sections. */ if (import_name_type == IMPORT_ORDINAL) @@ -869,7 +869,7 @@ /* Create .idata$6 - the Hint Name Table. */ id6 = pe_ILF_make_a_section (& vars, ".idata$6", SIZEOF_IDATA6, 0); if (id6 == NULL) - return FALSE; + goto error_return; /* If necessary, trim the import symbol name. */ symbol = symbol_name; @@ -936,7 +936,7 @@ /* Create the .text section. */ text = pe_ILF_make_a_section (& vars, ".text", jtab[i].size, SEC_CODE); if (text == NULL) - return FALSE; + goto error_return; /* Copy in the jump code. */ memcpy (text->contents, jtab[i].data, jtab[i].size); @@ -985,10 +985,10 @@ if ( ! bfd_set_start_address (abfd, (bfd_vma) 0) || ! bfd_coff_set_arch_mach_hook (abfd, & internal_f)) - return FALSE; + goto error_return; if (bfd_coff_mkobject_hook (abfd, (void *) & internal_f, NULL) == NULL) - return FALSE; + goto error_return; coff_data (abfd)->pe = 1; #ifdef THUMBPEMAGIC @@ -1002,7 +1002,9 @@ abfd->iostream = (void *) vars.bim; abfd->flags |= BFD_IN_MEMORY /* | HAS_LOCALS */; + abfd->iovec = &_bfd_memory_iovec; abfd->where = 0; + abfd->origin = 0; obj_sym_filepos (abfd) = 0; /* Now create a symbol describing the imported value. */ @@ -1050,6 +1052,12 @@ abfd->flags |= HAS_SYMS; return TRUE; + + error_return: + if (vars.bim->buffer != NULL) + free (vars.bim->buffer); + free (vars.bim); + return FALSE; } /* We have detected a Image Library Format archive element. diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/plugin.c crash-6.1.6/=unpacked-tar1=/bfd/plugin.c --- crash-5.1.6/=unpacked-tar1=/bfd/plugin.c 2009-08-29 22:10:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/plugin.c 2011-02-26 00:03:09.000000000 +0000 @@ -20,6 +20,10 @@ MA 02110-1301, USA. */ #include "config.h" +#include "bfd.h" + +#if BFD_SUPPORTS_PLUGINS + #include #include #include @@ -64,6 +68,7 @@ #define bfd_plugin_bfd_discard_group bfd_generic_discard_group #define bfd_plugin_section_already_linked _bfd_generic_section_already_linked #define bfd_plugin_bfd_define_common_symbol bfd_generic_define_common_symbol +#define bfd_plugin_bfd_copy_link_hash_symbol_type _bfd_generic_copy_link_hash_symbol_type static enum ld_plugin_status message (int level ATTRIBUTE_UNUSED, @@ -73,6 +78,7 @@ va_start (args, format); printf ("bfd plugin: "); vprintf (format, args); + putchar ('\n'); va_end (args); return LDPS_OK; } @@ -226,30 +232,51 @@ bfd_plugin_object_p (bfd *abfd) { int claimed = 0; - int t = load_plugin (); struct ld_plugin_input_file file; - if (!t) + bfd *iobfd; + static int have_loaded = 0; + static int have_plugin = 0; + + if (!have_loaded) + { + have_loaded = 1; + have_plugin = load_plugin (); + } + if (!have_plugin) return NULL; file.name = abfd->filename; - if (abfd->iostream) + if (abfd->my_archive) { - file.fd = fileno (abfd->iostream); - file.offset = 0; - file.filesize = 0; /*FIXME*/ + iobfd = abfd->my_archive; + file.offset = abfd->origin; + file.filesize = arelt_size (abfd); } else { - bfd *archive = abfd->my_archive; - BFD_ASSERT (archive); - file.fd = fileno (archive->iostream); - file.offset = abfd->origin; - file.filesize = arelt_size (abfd); + iobfd = abfd; + file.offset = 0; + file.filesize = 0; + } + + if (!iobfd->iostream && !bfd_open_file (iobfd)) + return NULL; + + file.fd = fileno ((FILE *) iobfd->iostream); + if (!abfd->my_archive) + { + struct stat stat_buf; + if (fstat (file.fd, &stat_buf)) + return NULL; + file.filesize = stat_buf.st_size; } + file.handle = abfd; + off_t cur_offset = lseek(file.fd, 0, SEEK_CUR); claim_file (&file, &claimed); + lseek(file.fd, cur_offset, SEEK_SET); if (!claimed) return NULL; @@ -314,6 +341,13 @@ return 0; } +static int +bfd_plugin_core_file_pid (bfd *abfd ATTRIBUTE_UNUSED) +{ + BFD_ASSERT (0); + return 0; +} + static long bfd_plugin_get_symtab_upper_bound (bfd *abfd) { @@ -430,13 +464,6 @@ return 0; } -static bfd_boolean -bfd_plugin_mkobject (bfd *abfd ATTRIBUTE_UNUSED) -{ - BFD_ASSERT (0); - return 0; -} - const bfd_target plugin_vec = { "plugin", /* Name. */ @@ -467,7 +494,7 @@ }, { /* bfd_set_format. */ bfd_false, - bfd_plugin_mkobject, + bfd_false, _bfd_generic_mkarchive, bfd_false, }, @@ -492,3 +519,4 @@ NULL /* backend_data. */ }; +#endif /* BFD_SUPPORTS_PLUGIN */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/SRC-POTFILES.in crash-6.1.6/=unpacked-tar1=/bfd/po/SRC-POTFILES.in --- crash-5.1.6/=unpacked-tar1=/bfd/po/SRC-POTFILES.in 2009-09-07 11:29:54.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/SRC-POTFILES.in 2010-06-29 04:17:22.000000000 +0000 @@ -37,7 +37,6 @@ coff-i960.c coff-m68k.c coff-m88k.c -coff-maxq.c coff-mips.c coff-or32.c coff-rs6000.c @@ -96,7 +95,6 @@ cpu-m68hc12.c cpu-m68k.c cpu-m88k.c -cpu-maxq.c cpu-mcore.c cpu-mep.c cpu-microblaze.c @@ -113,6 +111,7 @@ cpu-plugin.c cpu-powerpc.c cpu-rs6000.c +cpu-rx.c cpu-s390.c cpu-score.c cpu-sh.c @@ -121,6 +120,7 @@ cpu-tic30.c cpu-tic4x.c cpu-tic54x.c +cpu-tic6x.c cpu-tic80.c cpu-v850.c cpu-vax.c @@ -190,6 +190,7 @@ elf32-or32.c elf32-pj.c elf32-ppc.c +elf32-rx.c elf32-s390.c elf32-score.c elf32-score7.c @@ -199,6 +200,7 @@ elf32-sh64.c elf32-sparc.c elf32-spu.c +elf32-tic6x.c elf32-v850.c elf32-vax.c elf32-xc16x.c @@ -266,6 +268,7 @@ m88kmach3.c m88kopenbsd.c mach-o-i386.c +mach-o-x86-64.c mach-o.c mach-o.h merge.c @@ -338,11 +341,9 @@ verilog.c versados.c version.h -vms-gsd.c -vms-hdr.c +vms-alpha.c +vms-lib.c vms-misc.c -vms-tir.c -vms.c vms.h xcoff-target.h xcofflink.c diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/bfd.pot crash-6.1.6/=unpacked-tar1=/bfd/po/bfd.pot --- crash-5.1.6/=unpacked-tar1=/bfd/po/bfd.pot 2009-09-11 15:27:32.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/bfd.pot 2010-11-05 10:25:06.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" -"POT-Creation-Date: 2009-09-07 14:05+0200\n" +"POT-Creation-Date: 2010-11-05 10:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -20,156 +20,156 @@ msgid "%B: Unknown section type in a.out.adobe file: %x\n" msgstr "" -#: aout-cris.c:204 +#: aout-cris.c:199 #, c-format msgid "%s: Invalid relocation type exported: %d" msgstr "" -#: aout-cris.c:247 +#: aout-cris.c:242 msgid "%B: Invalid relocation type imported: %d" msgstr "" -#: aout-cris.c:258 +#: aout-cris.c:253 msgid "%B: Bad relocation record imported: %d" msgstr "" -#: aoutx.h:1271 aoutx.h:1609 +#: aoutx.h:1273 aoutx.h:1611 #, c-format msgid "%s: can not represent section `%s' in a.out object file format" msgstr "" -#: aoutx.h:1575 +#: aoutx.h:1577 #, c-format msgid "" "%s: can not represent section for symbol `%s' in a.out object file format" msgstr "" -#: aoutx.h:1577 +#: aoutx.h:1579 vms-alpha.c:7649 msgid "*unknown*" msgstr "" -#: aoutx.h:3994 aoutx.h:4320 +#: aoutx.h:4007 aoutx.h:4333 msgid "%P: %B: unexpected relocation type\n" msgstr "" -#: aoutx.h:5354 +#: aoutx.h:5364 #, c-format msgid "%s: relocatable link from %s to %s not supported" msgstr "" -#: archive.c:2056 +#: archive.c:2125 msgid "Warning: writing archive was slow: rewriting timestamp\n" msgstr "" -#: archive.c:2342 +#: archive.c:2416 msgid "Reading archive file mod timestamp" msgstr "" -#: archive.c:2366 +#: archive.c:2440 msgid "Writing updated armap timestamp" msgstr "" -#: bfd.c:375 +#: bfd.c:395 msgid "No error" msgstr "" -#: bfd.c:376 +#: bfd.c:396 msgid "System call error" msgstr "" -#: bfd.c:377 +#: bfd.c:397 msgid "Invalid bfd target" msgstr "" -#: bfd.c:378 +#: bfd.c:398 msgid "File in wrong format" msgstr "" -#: bfd.c:379 +#: bfd.c:399 msgid "Archive object file in wrong format" msgstr "" -#: bfd.c:380 +#: bfd.c:400 msgid "Invalid operation" msgstr "" -#: bfd.c:381 +#: bfd.c:401 msgid "Memory exhausted" msgstr "" -#: bfd.c:382 +#: bfd.c:402 msgid "No symbols" msgstr "" -#: bfd.c:383 +#: bfd.c:403 msgid "Archive has no index; run ranlib to add one" msgstr "" -#: bfd.c:384 +#: bfd.c:404 msgid "No more archived files" msgstr "" -#: bfd.c:385 +#: bfd.c:405 msgid "Malformed archive" msgstr "" -#: bfd.c:386 +#: bfd.c:406 msgid "File format not recognized" msgstr "" -#: bfd.c:387 +#: bfd.c:407 msgid "File format is ambiguous" msgstr "" -#: bfd.c:388 +#: bfd.c:408 msgid "Section has no contents" msgstr "" -#: bfd.c:389 +#: bfd.c:409 msgid "Nonrepresentable section on output" msgstr "" -#: bfd.c:390 +#: bfd.c:410 msgid "Symbol needs debug section which does not exist" msgstr "" -#: bfd.c:391 +#: bfd.c:411 msgid "Bad value" msgstr "" -#: bfd.c:392 +#: bfd.c:412 msgid "File truncated" msgstr "" -#: bfd.c:393 +#: bfd.c:413 msgid "File too big" msgstr "" -#: bfd.c:394 +#: bfd.c:414 #, c-format msgid "Error reading %s: %s" msgstr "" -#: bfd.c:395 +#: bfd.c:415 msgid "#" msgstr "" -#: bfd.c:919 +#: bfd.c:939 #, c-format msgid "BFD %s assertion fail %s:%d" msgstr "" -#: bfd.c:931 +#: bfd.c:951 #, c-format msgid "BFD %s internal error, aborting at %s line %d in %s\n" msgstr "" -#: bfd.c:935 +#: bfd.c:955 #, c-format msgid "BFD %s internal error, aborting at %s line %d\n" msgstr "" -#: bfd.c:937 +#: bfd.c:957 msgid "Please report this bug.\n" msgstr "" @@ -183,14 +183,14 @@ msgid "not mapping: env var not set\n" msgstr "" -#: binary.c:284 +#: binary.c:271 #, c-format msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." msgstr "" -#: bout.c:1150 elf-m10300.c:2078 elf32-avr.c:1639 elf32-frv.c:5743 -#: elf32-xtensa.c:6639 elfxx-sparc.c:2456 reloc.c:5386 reloc16.c:162 -#: vms.c:1918 elf32-ia64.c:788 elf64-ia64.c:788 +#: bout.c:1146 elf-m10300.c:2063 elf32-avr.c:1640 elf32-frv.c:5740 +#: elfxx-sparc.c:2795 reloc.c:5646 reloc16.c:162 elf32-ia64.c:842 +#: elf64-ia64.c:842 msgid "%P%F: --relax and -r may not be used together\n" msgstr "" @@ -198,55 +198,55 @@ msgid "reopening %B: %s\n" msgstr "" -#: coff-alpha.c:490 +#: coff-alpha.c:491 msgid "" "%B: Cannot handle compressed Alpha binaries.\n" " Use compiler flags, or objZ, to generate uncompressed binaries." msgstr "" -#: coff-alpha.c:647 +#: coff-alpha.c:648 msgid "%B: unknown/unsupported relocation type %d" msgstr "" -#: coff-alpha.c:899 coff-alpha.c:936 coff-alpha.c:2024 coff-mips.c:1003 +#: coff-alpha.c:900 coff-alpha.c:937 coff-alpha.c:2025 coff-mips.c:1003 msgid "GP relative relocation used when GP not defined" msgstr "" -#: coff-alpha.c:1501 +#: coff-alpha.c:1502 msgid "using multiple gp values" msgstr "" -#: coff-alpha.c:1560 +#: coff-alpha.c:1561 msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH" msgstr "" -#: coff-alpha.c:1567 +#: coff-alpha.c:1568 msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW" msgstr "" -#: coff-alpha.c:1574 elf32-m32r.c:2477 elf64-alpha.c:3943 elf64-alpha.c:4098 -#: elf32-ia64.c:4462 elf64-ia64.c:4462 +#: coff-alpha.c:1575 elf32-m32r.c:2493 elf64-alpha.c:3991 elf64-alpha.c:4140 +#: elf32-ia64.c:4582 elf64-ia64.c:4582 msgid "%B: unknown relocation type %d" msgstr "" -#: coff-arm.c:1039 +#: coff-arm.c:1038 #, c-format msgid "%B: unable to find THUMB glue '%s' for `%s'" msgstr "" -#: coff-arm.c:1068 +#: coff-arm.c:1067 #, c-format msgid "%B: unable to find ARM glue '%s' for `%s'" msgstr "" -#: coff-arm.c:1370 elf32-arm.c:6372 +#: coff-arm.c:1369 elf32-arm.c:6501 #, c-format msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: arm call to thumb" msgstr "" -#: coff-arm.c:1460 +#: coff-arm.c:1459 #, c-format msgid "" "%B(%s): warning: interworking not enabled.\n" @@ -254,105 +254,105 @@ " consider relinking with --support-old-code enabled" msgstr "" -#: coff-arm.c:1755 coff-tic80.c:695 cofflink.c:3027 +#: coff-arm.c:1754 coff-tic80.c:695 cofflink.c:3043 msgid "%B: bad reloc address 0x%lx in section `%A'" msgstr "" -#: coff-arm.c:2080 +#: coff-arm.c:2079 msgid "%B: illegal symbol index in reloc: %d" msgstr "" -#: coff-arm.c:2211 +#: coff-arm.c:2210 #, c-format msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" msgstr "" -#: coff-arm.c:2227 elf32-arm.c:10327 +#: coff-arm.c:2226 elf32-arm.c:14105 #, c-format msgid "" "error: %B passes floats in float registers, whereas %B passes them in " "integer registers" msgstr "" -#: coff-arm.c:2230 elf32-arm.c:10331 +#: coff-arm.c:2229 elf32-arm.c:14109 #, c-format msgid "" "error: %B passes floats in integer registers, whereas %B passes them in " "float registers" msgstr "" -#: coff-arm.c:2244 +#: coff-arm.c:2243 #, c-format msgid "" "error: %B is compiled as position independent code, whereas target %B is " "absolute position" msgstr "" -#: coff-arm.c:2247 +#: coff-arm.c:2246 #, c-format msgid "" "error: %B is compiled as absolute position code, whereas target %B is " "position independent" msgstr "" -#: coff-arm.c:2275 elf32-arm.c:10396 +#: coff-arm.c:2274 elf32-arm.c:14174 #, c-format msgid "Warning: %B supports interworking, whereas %B does not" msgstr "" -#: coff-arm.c:2278 elf32-arm.c:10402 +#: coff-arm.c:2277 elf32-arm.c:14180 #, c-format msgid "Warning: %B does not support interworking, whereas %B does" msgstr "" -#: coff-arm.c:2302 +#: coff-arm.c:2301 #, c-format msgid "private flags = %x:" msgstr "" -#: coff-arm.c:2310 elf32-arm.c:10453 +#: coff-arm.c:2309 elf32-arm.c:10492 #, c-format msgid " [floats passed in float registers]" msgstr "" -#: coff-arm.c:2312 +#: coff-arm.c:2311 #, c-format msgid " [floats passed in integer registers]" msgstr "" -#: coff-arm.c:2315 elf32-arm.c:10456 +#: coff-arm.c:2314 elf32-arm.c:10495 #, c-format msgid " [position independent]" msgstr "" -#: coff-arm.c:2317 +#: coff-arm.c:2316 #, c-format msgid " [absolute position]" msgstr "" -#: coff-arm.c:2321 +#: coff-arm.c:2320 #, c-format msgid " [interworking flag not initialised]" msgstr "" -#: coff-arm.c:2323 +#: coff-arm.c:2322 #, c-format msgid " [interworking supported]" msgstr "" -#: coff-arm.c:2325 +#: coff-arm.c:2324 #, c-format msgid " [interworking not supported]" msgstr "" -#: coff-arm.c:2371 elf32-arm.c:9360 +#: coff-arm.c:2370 elf32-arm.c:9520 #, c-format msgid "" "Warning: Not setting interworking flag of %B since it has already been " "specified as non-interworking" msgstr "" -#: coff-arm.c:2375 elf32-arm.c:9364 +#: coff-arm.c:2374 elf32-arm.c:9524 #, c-format msgid "Warning: Clearing the interworking flag of %B due to outside request" msgstr "" @@ -367,7 +367,7 @@ msgid "Relocation `%s' not yet implemented\n" msgstr "" -#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5143 +#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5147 msgid "%B: warning: illegal symbol index %ld in relocs" msgstr "" @@ -375,32 +375,12 @@ msgid "uncertain calling convention for non-COFF symbol" msgstr "" -#: coff-m68k.c:506 elf32-bfin.c:5693 elf32-cr16.c:2965 elf32-m68k.c:4615 +#: coff-m68k.c:506 elf32-bfin.c:5678 elf32-cr16.c:2897 elf32-m68k.c:4672 msgid "unsupported reloc type" msgstr "" -#: coff-maxq.c:126 -msgid "Can't Make it a Short Jump" -msgstr "" - -#: coff-maxq.c:191 -msgid "Exceeds Long Jump Range" -msgstr "" - -#: coff-maxq.c:202 coff-maxq.c:276 -msgid "Absolute address Exceeds 16 bit Range" -msgstr "" - -#: coff-maxq.c:240 -msgid "Absolute address Exceeds 8 bit Range" -msgstr "" - -#: coff-maxq.c:333 -msgid "Unrecognized Reloc Type" -msgstr "" - -#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:441 elf32-score7.c:341 -#: elf64-mips.c:2018 elfn32-mips.c:1832 +#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:430 elf32-score7.c:330 +#: elf64-mips.c:2019 elfn32-mips.c:1832 msgid "GP relative relocation when _gp not defined" msgstr "" @@ -408,17 +388,17 @@ msgid "Unrecognized reloc" msgstr "" -#: coff-rs6000.c:2787 +#: coff-rs6000.c:2794 #, c-format msgid "%s: unsupported relocation type 0x%02x" msgstr "" -#: coff-rs6000.c:2880 +#: coff-rs6000.c:2887 #, c-format msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" msgstr "" -#: coff-rs6000.c:3646 coff64-rs6000.c:2168 +#: coff-rs6000.c:3652 coff64-rs6000.c:2175 msgid "%B: symbol `%s' has unrecognized smclas %d" msgstr "" @@ -437,77 +417,81 @@ msgid "ignoring reloc %s\n" msgstr "" -#: coffcode.h:960 +#: coffcode.h:973 msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'" msgstr "" #. Generate a warning message rather using the 'unhandled' #. variable as this will allow some .sys files generate by #. other toolchains to be processed. See bugzilla issue 196. -#: coffcode.h:1176 +#: coffcode.h:1197 msgid "" "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s" msgstr "" -#: coffcode.h:1240 +#: coffcode.h:1264 msgid "%B (%s): Section flag %s (0x%x) ignored" msgstr "" -#: coffcode.h:2382 +#: coffcode.h:2390 #, c-format msgid "Unrecognized TI COFF target id '0x%x'" msgstr "" -#: coffcode.h:2696 +#: coffcode.h:2704 msgid "%B: reloc against a non-existant symbol index: %ld" msgstr "" -#: coffcode.h:3669 +#: coffcode.h:3262 +msgid "%B: too many sections (%d)" +msgstr "" + +#: coffcode.h:3676 msgid "%B: section %s: string table overflow at offset %ld" msgstr "" -#: coffcode.h:4477 +#: coffcode.h:4481 msgid "%B: warning: line number table read failed" msgstr "" -#: coffcode.h:4507 +#: coffcode.h:4511 msgid "%B: warning: illegal symbol index %ld in line numbers" msgstr "" -#: coffcode.h:4521 +#: coffcode.h:4525 msgid "%B: warning: duplicate line number information for `%s'" msgstr "" -#: coffcode.h:4912 +#: coffcode.h:4916 msgid "%B: Unrecognized storage class %d for %s symbol `%s'" msgstr "" -#: coffcode.h:5038 +#: coffcode.h:5042 msgid "warning: %B: local symbol `%s' has no section" msgstr "" -#: coffcode.h:5181 +#: coffcode.h:5186 msgid "%B: illegal relocation type %d at address 0x%lx" msgstr "" -#: coffgen.c:1571 +#: coffgen.c:1573 msgid "%B: bad string table size %lu" msgstr "" -#: cofflink.c:513 elflink.c:4307 +#: cofflink.c:524 elflink.c:4339 msgid "Warning: type of symbol `%s' changed from %d to %d in %B" msgstr "" -#: cofflink.c:2305 +#: cofflink.c:2321 msgid "%B: relocs in section `%A', but it has no contents" msgstr "" -#: cofflink.c:2636 coffswap.h:826 +#: cofflink.c:2652 coffswap.h:826 #, c-format msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" msgstr "" -#: cofflink.c:2645 coffswap.h:812 +#: cofflink.c:2661 coffswap.h:812 #, c-format msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" msgstr "" @@ -516,137 +500,143 @@ msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale" msgstr "" -#: cpu-arm.c:332 +#: cpu-arm.c:333 #, c-format msgid "warning: unable to update contents of %s section in %s" msgstr "" -#: dwarf2.c:430 +#: dwarf2.c:490 #, c-format msgid "Dwarf Error: Can't find %s section." msgstr "" -#: dwarf2.c:457 -#, c-format -msgid "Dwarf Error: unable to decompress %s section." -msgstr "" - -#: dwarf2.c:468 +#: dwarf2.c:518 #, c-format msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)." msgstr "" -#: dwarf2.c:865 +#: dwarf2.c:940 #, c-format msgid "Dwarf Error: Invalid or unhandled FORM value: %u." msgstr "" -#: dwarf2.c:1079 +#: dwarf2.c:1191 msgid "Dwarf Error: mangled line number section (bad file number)." msgstr "" -#: dwarf2.c:1413 +#: dwarf2.c:1443 +#, c-format +msgid "Dwarf Error: Unhandled .debug_line version %d." +msgstr "" + +#: dwarf2.c:1465 +msgid "Dwarf Error: Invalid maximum operations per instruction." +msgstr "" + +#: dwarf2.c:1652 msgid "Dwarf Error: mangled line number section." msgstr "" -#: dwarf2.c:1760 dwarf2.c:1867 dwarf2.c:2139 +#: dwarf2.c:1978 dwarf2.c:2098 dwarf2.c:2382 #, c-format msgid "Dwarf Error: Could not find abbrev number %u." msgstr "" -#: dwarf2.c:2100 +#: dwarf2.c:2343 #, c-format msgid "" -"Dwarf Error: found dwarf version '%u', this reader only handles version 2 " -"and 3 information." +"Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 " +"and 4 information." msgstr "" -#: dwarf2.c:2107 +#: dwarf2.c:2350 #, c-format msgid "" "Dwarf Error: found address size '%u', this reader can not handle sizes " "greater than '%u'." msgstr "" -#: dwarf2.c:2130 +#: dwarf2.c:2373 #, c-format msgid "Dwarf Error: Bad abbrev number: %u." msgstr "" -#: ecoff.c:1238 +#: ecoff.c:1237 #, c-format msgid "Unknown basic type %d" msgstr "" -#: ecoff.c:1495 +#: ecoff.c:1494 #, c-format msgid "" "\n" " End+1 symbol: %ld" msgstr "" -#: ecoff.c:1502 ecoff.c:1505 +#: ecoff.c:1501 ecoff.c:1504 #, c-format msgid "" "\n" " First symbol: %ld" msgstr "" -#: ecoff.c:1517 +#: ecoff.c:1516 #, c-format msgid "" "\n" " End+1 symbol: %-7ld Type: %s" msgstr "" -#: ecoff.c:1524 +#: ecoff.c:1523 #, c-format msgid "" "\n" " Local symbol: %ld" msgstr "" -#: ecoff.c:1532 +#: ecoff.c:1531 #, c-format msgid "" "\n" " struct; End+1 symbol: %ld" msgstr "" -#: ecoff.c:1537 +#: ecoff.c:1536 #, c-format msgid "" "\n" " union; End+1 symbol: %ld" msgstr "" -#: ecoff.c:1542 +#: ecoff.c:1541 #, c-format msgid "" "\n" " enum; End+1 symbol: %ld" msgstr "" -#: ecoff.c:1548 +#: ecoff.c:1547 #, c-format msgid "" "\n" " Type: %s" msgstr "" -#: elf-attrs.c:567 -msgid "error: %B: Must be processed by '%s' toolchain" +#: elf-attrs.c:569 +msgid "" +"error: %B: Object has vendor-specific contents that must be processed by the " +"'%s' toolchain" msgstr "" -#: elf-attrs.c:575 +#: elf-attrs.c:578 msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'" msgstr "" -#: elf-eh-frame.c:884 +#: elf-eh-frame.c:913 msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n" msgstr "" -#: elf-eh-frame.c:1122 +#: elf-eh-frame.c:1165 msgid "" "%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n" msgstr "" @@ -658,838 +648,864 @@ "pie\n" msgstr "" -#: elf-m10200.c:456 elf-m10300.c:1575 elf32-avr.c:1251 elf32-bfin.c:3200 -#: elf32-cr16.c:1517 elf32-cr16c.c:790 elf32-cris.c:2089 elf32-crx.c:933 -#: elf32-d10v.c:516 elf32-fr30.c:616 elf32-frv.c:4114 elf32-h8300.c:516 -#: elf32-i860.c:1218 elf32-ip2k.c:1499 elf32-iq2000.c:691 elf32-lm32.c:1171 -#: elf32-m32c.c:560 elf32-m32r.c:3102 elf32-m68hc1x.c:1136 elf32-mep.c:541 -#: elf32-microblaze.c:1226 elf32-moxie.c:291 elf32-msp430.c:493 elf32-mt.c:402 -#: elf32-openrisc.c:411 elf32-score.c:2752 elf32-score7.c:2591 -#: elf32-spu.c:5045 elf32-v850.c:1701 elf32-xstormy16.c:948 elf64-mmix.c:1533 +#: elf-m10200.c:450 elf-m10300.c:1560 elf32-avr.c:1263 elf32-bfin.c:3193 +#: elf32-cr16.c:1482 elf32-cr16c.c:780 elf32-cris.c:2077 elf32-crx.c:922 +#: elf32-d10v.c:509 elf32-fr30.c:609 elf32-frv.c:4111 elf32-h8300.c:509 +#: elf32-i860.c:1211 elf32-ip2k.c:1468 elf32-iq2000.c:684 elf32-lm32.c:1168 +#: elf32-m32c.c:553 elf32-m32r.c:3111 elf32-m68hc1x.c:1138 elf32-mep.c:534 +#: elf32-microblaze.c:1231 elf32-moxie.c:282 elf32-msp430.c:486 elf32-mt.c:395 +#: elf32-openrisc.c:404 elf32-score.c:2731 elf32-score7.c:2540 +#: elf32-spu.c:5042 elf32-v850.c:2143 elf32-xstormy16.c:941 elf64-mmix.c:1522 msgid "internal error: out of range error" msgstr "" -#: elf-m10200.c:460 elf-m10300.c:1579 elf32-avr.c:1255 elf32-bfin.c:3204 -#: elf32-cr16.c:1521 elf32-cr16c.c:794 elf32-cris.c:2093 elf32-crx.c:937 -#: elf32-d10v.c:520 elf32-fr30.c:620 elf32-frv.c:4118 elf32-h8300.c:520 -#: elf32-i860.c:1222 elf32-iq2000.c:695 elf32-lm32.c:1175 elf32-m32c.c:564 -#: elf32-m32r.c:3106 elf32-m68hc1x.c:1140 elf32-mep.c:545 -#: elf32-microblaze.c:1230 elf32-moxie.c:295 elf32-msp430.c:497 -#: elf32-openrisc.c:415 elf32-score.c:2756 elf32-score7.c:2595 -#: elf32-spu.c:5049 elf32-v850.c:1705 elf32-xstormy16.c:952 elf64-mmix.c:1537 -#: elfxx-mips.c:9103 +#: elf-m10200.c:454 elf-m10300.c:1564 elf32-avr.c:1267 elf32-bfin.c:3197 +#: elf32-cr16.c:1486 elf32-cr16c.c:784 elf32-cris.c:2081 elf32-crx.c:926 +#: elf32-d10v.c:513 elf32-fr30.c:613 elf32-frv.c:4115 elf32-h8300.c:513 +#: elf32-i860.c:1215 elf32-iq2000.c:688 elf32-lm32.c:1172 elf32-m32c.c:557 +#: elf32-m32r.c:3115 elf32-m68hc1x.c:1142 elf32-mep.c:538 +#: elf32-microblaze.c:1235 elf32-moxie.c:286 elf32-msp430.c:490 +#: elf32-openrisc.c:408 elf32-score.c:2735 elf32-score7.c:2544 +#: elf32-spu.c:5046 elf32-v850.c:2147 elf32-xstormy16.c:945 elf64-mmix.c:1526 +#: elfxx-mips.c:9186 msgid "internal error: unsupported relocation error" msgstr "" -#: elf-m10200.c:464 elf32-cr16.c:1525 elf32-cr16c.c:798 elf32-crx.c:941 -#: elf32-d10v.c:524 elf32-h8300.c:524 elf32-lm32.c:1179 elf32-m32r.c:3110 -#: elf32-m68hc1x.c:1144 elf32-microblaze.c:1234 elf32-score.c:2760 -#: elf32-score7.c:2599 elf32-spu.c:5053 +#: elf-m10200.c:458 elf32-cr16.c:1490 elf32-cr16c.c:788 elf32-crx.c:930 +#: elf32-d10v.c:517 elf32-h8300.c:517 elf32-lm32.c:1176 elf32-m32r.c:3119 +#: elf32-m68hc1x.c:1146 elf32-microblaze.c:1239 elf32-score.c:2739 +#: elf32-score7.c:2548 elf32-spu.c:5050 msgid "internal error: dangerous error" msgstr "" -#: elf-m10200.c:468 elf-m10300.c:1592 elf32-avr.c:1263 elf32-bfin.c:3212 -#: elf32-cr16.c:1529 elf32-cr16c.c:802 elf32-cris.c:2101 elf32-crx.c:945 -#: elf32-d10v.c:528 elf32-fr30.c:628 elf32-frv.c:4126 elf32-h8300.c:528 -#: elf32-i860.c:1230 elf32-ip2k.c:1514 elf32-iq2000.c:703 elf32-lm32.c:1183 -#: elf32-m32c.c:572 elf32-m32r.c:3114 elf32-m68hc1x.c:1148 elf32-mep.c:553 -#: elf32-microblaze.c:1238 elf32-moxie.c:303 elf32-msp430.c:505 elf32-mt.c:410 -#: elf32-openrisc.c:423 elf32-score.c:2769 elf32-score7.c:2603 -#: elf32-spu.c:5057 elf32-v850.c:1725 elf32-xstormy16.c:960 elf64-mmix.c:1545 +#: elf-m10200.c:462 elf-m10300.c:1577 elf32-avr.c:1275 elf32-bfin.c:3205 +#: elf32-cr16.c:1494 elf32-cr16c.c:792 elf32-cris.c:2089 elf32-crx.c:934 +#: elf32-d10v.c:521 elf32-fr30.c:621 elf32-frv.c:4123 elf32-h8300.c:521 +#: elf32-i860.c:1223 elf32-ip2k.c:1483 elf32-iq2000.c:696 elf32-lm32.c:1180 +#: elf32-m32c.c:565 elf32-m32r.c:3123 elf32-m68hc1x.c:1150 elf32-mep.c:546 +#: elf32-microblaze.c:1243 elf32-moxie.c:294 elf32-msp430.c:498 elf32-mt.c:403 +#: elf32-openrisc.c:416 elf32-score.c:2748 elf32-score7.c:2552 +#: elf32-spu.c:5054 elf32-v850.c:2167 elf32-xstormy16.c:953 elf64-mmix.c:1534 msgid "internal error: unknown error" msgstr "" -#: elf-m10300.c:1512 elf32-arm.c:8963 elf32-i386.c:3984 elf32-m32r.c:2588 -#: elf32-m68k.c:4099 elf32-ppc.c:7906 elf32-s390.c:3015 elf32-sh.c:3429 -#: elf32-xtensa.c:3027 elf64-ppc.c:12063 elf64-s390.c:2974 elf64-sh64.c:1648 -#: elf64-x86-64.c:3657 elfxx-sparc.c:3317 +#: elf-m10300.c:1504 elf32-arm.c:9098 elf32-i386.c:4081 elf32-m32r.c:2604 +#: elf32-m68k.c:4156 elf32-ppc.c:8089 elf32-s390.c:3010 elf32-sh.c:4223 +#: elf32-xtensa.c:3067 elf64-ppc.c:13115 elf64-s390.c:2985 elf64-sh64.c:1636 +#: elf64-x86-64.c:3719 elfxx-sparc.c:3806 msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" msgstr "" -#: elf-m10300.c:1584 +#: elf-m10300.c:1569 msgid "" "error: inappropriate relocation type for shared library (did you forget -" "fpic?)" msgstr "" -#: elf-m10300.c:1587 +#: elf-m10300.c:1572 msgid "internal error: suspicious relocation type used in shared library" msgstr "" -#: elf-m10300.c:4385 elf32-arm.c:11346 elf32-cr16.c:2519 elf32-cris.c:3030 -#: elf32-hppa.c:1891 elf32-i370.c:506 elf32-i386.c:1975 elf32-lm32.c:1873 -#: elf32-m32r.c:1921 elf32-m68k.c:3188 elf32-ppc.c:4953 elf32-s390.c:1650 -#: elf32-sh.c:2574 elf32-vax.c:1052 elf64-ppc.c:6348 elf64-s390.c:1623 -#: elf64-sh64.c:3396 elf64-x86-64.c:1821 elfxx-sparc.c:1802 +#: elf-m10300.c:4372 elf32-arm.c:11392 elf32-cr16.c:2451 elf32-cris.c:3044 +#: elf32-hppa.c:1894 elf32-i370.c:503 elf32-i386.c:2036 elf32-lm32.c:1868 +#: elf32-m32r.c:1927 elf32-m68k.c:3252 elf32-ppc.c:4994 elf32-s390.c:1652 +#: elf32-sh.c:2931 elf32-vax.c:1040 elf64-ppc.c:6483 elf64-s390.c:1635 +#: elf64-sh64.c:3377 elf64-x86-64.c:1871 elfxx-sparc.c:2104 #, c-format msgid "dynamic variable `%s' is zero size" msgstr "" -#: elf.c:329 +#: elf.c:334 msgid "%B: invalid string offset %u >= %lu for section `%s'" msgstr "" -#: elf.c:439 +#: elf.c:446 msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" msgstr "" -#: elf.c:595 +#: elf.c:602 msgid "%B: Corrupt size field in group section header: 0x%lx" msgstr "" -#: elf.c:631 +#: elf.c:638 msgid "%B: invalid SHT_GROUP entry" msgstr "" -#: elf.c:701 +#: elf.c:708 msgid "%B: no group info for section %A" msgstr "" -#: elf.c:730 elf.c:2960 elflink.c:9912 +#: elf.c:737 elf.c:3090 elflink.c:10062 msgid "%B: warning: sh_link not set for section `%A'" msgstr "" -#: elf.c:749 +#: elf.c:756 msgid "%B: sh_link [%d] in section `%A' is incorrect" msgstr "" -#: elf.c:784 +#: elf.c:791 msgid "%B: unknown [%d] section `%s' in group [%s]" msgstr "" -#: elf.c:1104 +#: elf.c:1041 +msgid "%B: unable to initialize commpress status for section %s" +msgstr "" + +#: elf.c:1050 +msgid "%B: unable to initialize decommpress status for section %s" +msgstr "" + +#: elf.c:1158 #, c-format msgid "" "\n" "Program Header:\n" msgstr "" -#: elf.c:1146 +#: elf.c:1200 #, c-format msgid "" "\n" "Dynamic Section:\n" msgstr "" -#: elf.c:1282 +#: elf.c:1336 #, c-format msgid "" "\n" "Version definitions:\n" msgstr "" -#: elf.c:1307 +#: elf.c:1361 #, c-format msgid "" "\n" "Version References:\n" msgstr "" -#: elf.c:1312 +#: elf.c:1366 #, c-format msgid " required from %s:\n" msgstr "" -#: elf.c:1702 +#: elf.c:1773 msgid "%B: invalid link %lu for reloc section %s (index %u)" msgstr "" -#: elf.c:1870 +#: elf.c:1943 msgid "" "%B: don't know how to handle allocated, application specific section `%s' [0x" "%8x]" msgstr "" -#: elf.c:1882 +#: elf.c:1955 msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]" msgstr "" -#: elf.c:1893 +#: elf.c:1966 msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]" msgstr "" -#: elf.c:1903 +#: elf.c:1976 msgid "%B: don't know how to handle section `%s' [0x%8x]" msgstr "" -#: elf.c:2500 +#: elf.c:2603 #, c-format msgid "warning: section `%A' type changed to PROGBITS" msgstr "" -#: elf.c:2917 +#: elf.c:3047 msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'" msgstr "" -#: elf.c:2940 +#: elf.c:3070 msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'" msgstr "" -#: elf.c:4311 +#: elf.c:4480 msgid "" "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section" msgstr "" -#: elf.c:4338 +#: elf.c:4507 msgid "%B: Not enough room for program headers, try linking with -N" msgstr "" -#: elf.c:4420 -msgid "%B: section %A vma 0x%lx overlaps previous sections" +#: elf.c:4594 +msgid "%B: section %A lma %#lx adjusted to %#lx" msgstr "" -#: elf.c:4515 +#: elf.c:4713 msgid "%B: section `%A' can't be allocated in segment %d" msgstr "" -#: elf.c:4565 +#: elf.c:4761 msgid "%B: warning: allocated section `%s' not in segment" msgstr "" -#: elf.c:5065 +#: elf.c:5257 msgid "%B: symbol `%s' required but not present" msgstr "" -#: elf.c:5404 +#: elf.c:5595 msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n" msgstr "" -#: elf.c:6370 +#: elf.c:6622 #, c-format msgid "" "Unable to find equivalent output section for symbol '%s' from section '%s'" msgstr "" -#: elf.c:7356 +#: elf.c:7611 msgid "%B: unsupported relocation type %s" msgstr "" -#: elf32-arm.c:3149 +#: elf32-arm.c:3183 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: Thumb call to ARM" msgstr "" -#: elf32-arm.c:3190 +#: elf32-arm.c:3226 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: ARM call to Thumb" msgstr "" -#: elf32-arm.c:3387 elf32-arm.c:4692 +#: elf32-arm.c:3432 elf32-arm.c:4807 #, c-format msgid "%s: cannot create stub entry %s" msgstr "" -#: elf32-arm.c:4804 +#: elf32-arm.c:4923 #, c-format msgid "unable to find THUMB glue '%s' for '%s'" msgstr "" -#: elf32-arm.c:4838 +#: elf32-arm.c:4959 #, c-format msgid "unable to find ARM glue '%s' for '%s'" msgstr "" -#: elf32-arm.c:5365 +#: elf32-arm.c:5485 msgid "%B: BE8 images only valid in big-endian mode." msgstr "" #. Give a warning, but do as the user requests anyway. -#: elf32-arm.c:5590 +#: elf32-arm.c:5715 msgid "" "%B: warning: selected VFP11 erratum workaround is not necessary for target " "architecture" msgstr "" -#: elf32-arm.c:6130 elf32-arm.c:6150 +#: elf32-arm.c:6259 elf32-arm.c:6279 msgid "%B: unable to find VFP11 veneer `%s'" msgstr "" -#: elf32-arm.c:6196 +#: elf32-arm.c:6327 #, c-format msgid "Invalid TARGET2 relocation type '%s'." msgstr "" -#: elf32-arm.c:6281 +#: elf32-arm.c:6411 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: thumb call to arm" msgstr "" -#: elf32-arm.c:7003 +#: elf32-arm.c:7130 msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'." msgstr "" -#: elf32-arm.c:7405 +#: elf32-arm.c:7541 msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'." msgstr "" -#: elf32-arm.c:8085 +#: elf32-arm.c:8223 msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object" msgstr "" -#: elf32-arm.c:8300 +#: elf32-arm.c:8438 msgid "" "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group " "relocations" msgstr "" -#: elf32-arm.c:8340 elf32-arm.c:8427 elf32-arm.c:8510 elf32-arm.c:8595 +#: elf32-arm.c:8478 elf32-arm.c:8565 elf32-arm.c:8648 elf32-arm.c:8733 msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s" msgstr "" -#: elf32-arm.c:8821 elf32-sh.c:3325 elf64-sh64.c:1556 +#: elf32-arm.c:8963 elf32-sh.c:4112 elf64-sh64.c:1544 msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section" msgstr "" -#: elf32-arm.c:8939 elf32-m68k.c:4134 elf32-xtensa.c:2765 elf64-ppc.c:10743 +#: elf32-arm.c:9074 elf32-m68k.c:4191 elf32-xtensa.c:2805 elf64-ppc.c:11689 msgid "%B(%A+0x%lx): %s used with TLS symbol %s" msgstr "" -#: elf32-arm.c:8940 elf32-m68k.c:4135 elf32-xtensa.c:2766 elf64-ppc.c:10744 +#: elf32-arm.c:9075 elf32-m68k.c:4192 elf32-xtensa.c:2806 elf64-ppc.c:11690 msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s" msgstr "" -#: elf32-arm.c:8997 +#: elf32-arm.c:9132 elf32-tic6x.c:1632 msgid "out of range" msgstr "" -#: elf32-arm.c:9001 +#: elf32-arm.c:9136 elf32-tic6x.c:1636 msgid "unsupported relocation" msgstr "" -#: elf32-arm.c:9009 +#: elf32-arm.c:9144 elf32-tic6x.c:1644 msgid "unknown error" msgstr "" -#: elf32-arm.c:9409 +#: elf32-arm.c:9569 msgid "" "Warning: Clearing the interworking flag of %B because non-interworking code " "in %B has been linked with it" msgstr "" -#: elf32-arm.c:9652 +#: elf32-arm.c:9663 +msgid "%B: Unknown mandatory EABI object attribute %d" +msgstr "" + +#: elf32-arm.c:9671 +msgid "Warning: %B: Unknown EABI object attribute %d" +msgstr "" + +#: elf32-arm.c:9852 msgid "error: %B: Unknown CPU architecture" msgstr "" -#: elf32-arm.c:9690 +#: elf32-arm.c:9890 msgid "error: %B: Conflicting CPU architectures %d/%d" msgstr "" -#: elf32-arm.c:9747 +#: elf32-arm.c:9942 +msgid "" +"Error: %B has both the current and legacy Tag_MPextension_use attributes" +msgstr "" + +#: elf32-arm.c:9967 msgid "error: %B uses VFP register arguments, %B does not" msgstr "" -#: elf32-arm.c:9897 +#: elf32-arm.c:10112 +msgid "error: %B: unable to merge virtualization attributes with %B" +msgstr "" + +#: elf32-arm.c:10138 msgid "error: %B: Conflicting architecture profiles %c/%c" msgstr "" -#: elf32-arm.c:9921 +#: elf32-arm.c:10239 msgid "Warning: %B: Conflicting platform configuration" msgstr "" -#: elf32-arm.c:9930 +#: elf32-arm.c:10248 msgid "error: %B: Conflicting use of R9" msgstr "" -#: elf32-arm.c:9942 +#: elf32-arm.c:10260 msgid "error: %B: SB relative addressing conflicts with use of R9" msgstr "" -#: elf32-arm.c:9955 +#: elf32-arm.c:10273 msgid "" "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; " "use of wchar_t values across objects may fail" msgstr "" -#: elf32-arm.c:9986 +#: elf32-arm.c:10304 msgid "" "warning: %B uses %s enums yet the output is to use %s enums; use of enum " "values across objects may fail" msgstr "" -#: elf32-arm.c:9998 +#: elf32-arm.c:10316 msgid "error: %B uses iWMMXt register arguments, %B does not" msgstr "" -#: elf32-arm.c:10020 +#: elf32-arm.c:10333 msgid "error: fp16 format mismatch between %B and %B" msgstr "" -#: elf32-arm.c:10063 elf32-arm.c:10156 -msgid "%B: Unknown mandatory EABI object attribute %d" -msgstr "" - -#: elf32-arm.c:10071 elf32-arm.c:10164 -msgid "Warning: %B: Unknown EABI object attribute %d" -msgstr "" - -#: elf32-arm.c:10224 -msgid "error: %B is already in final BE8 format" -msgstr "" - -#: elf32-arm.c:10300 -msgid "" -"error: Source object %B has EABI version %d, but target %B has EABI version %" -"d" -msgstr "" - -#: elf32-arm.c:10316 -msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" -msgstr "" - -#: elf32-arm.c:10341 -msgid "error: %B uses VFP instructions, whereas %B does not" -msgstr "" - -#: elf32-arm.c:10345 -msgid "error: %B uses FPA instructions, whereas %B does not" -msgstr "" - -#: elf32-arm.c:10355 -msgid "error: %B uses Maverick instructions, whereas %B does not" -msgstr "" - -#: elf32-arm.c:10359 -msgid "error: %B does not use Maverick instructions, whereas %B does" -msgstr "" - -#: elf32-arm.c:10378 -msgid "error: %B uses software FP, whereas %B uses hardware FP" +#: elf32-arm.c:10357 +msgid "DIV usage mismatch between %B and %B" msgstr "" -#: elf32-arm.c:10382 -msgid "error: %B uses hardware FP, whereas %B uses software FP" +#: elf32-arm.c:10376 +msgid "%B has has both the current and legacy Tag_MPextension_use attributes" msgstr "" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. #. Ignore init flag - it may not be set, despite the flags field containing valid data. -#: elf32-arm.c:10429 elf32-bfin.c:5082 elf32-cris.c:4110 elf32-m68hc1x.c:1280 -#: elf32-m68k.c:1169 elf32-score.c:4039 elf32-score7.c:3876 elf32-vax.c:540 -#: elfxx-mips.c:12755 +#: elf32-arm.c:10468 elf32-bfin.c:5065 elf32-cris.c:4162 elf32-m68hc1x.c:1282 +#: elf32-m68k.c:1235 elf32-score.c:3996 elf32-score7.c:3803 elf32-vax.c:528 +#: elfxx-mips.c:12842 #, c-format msgid "private flags = %lx:" msgstr "" -#: elf32-arm.c:10438 +#: elf32-arm.c:10477 #, c-format msgid " [interworking enabled]" msgstr "" -#: elf32-arm.c:10446 +#: elf32-arm.c:10485 #, c-format msgid " [VFP float format]" msgstr "" -#: elf32-arm.c:10448 +#: elf32-arm.c:10487 #, c-format msgid " [Maverick float format]" msgstr "" -#: elf32-arm.c:10450 +#: elf32-arm.c:10489 #, c-format msgid " [FPA float format]" msgstr "" -#: elf32-arm.c:10459 +#: elf32-arm.c:10498 #, c-format msgid " [new ABI]" msgstr "" -#: elf32-arm.c:10462 +#: elf32-arm.c:10501 #, c-format msgid " [old ABI]" msgstr "" -#: elf32-arm.c:10465 +#: elf32-arm.c:10504 #, c-format msgid " [software FP]" msgstr "" -#: elf32-arm.c:10474 +#: elf32-arm.c:10513 #, c-format msgid " [Version1 EABI]" msgstr "" -#: elf32-arm.c:10477 elf32-arm.c:10488 +#: elf32-arm.c:10516 elf32-arm.c:10527 #, c-format msgid " [sorted symbol table]" msgstr "" -#: elf32-arm.c:10479 elf32-arm.c:10490 +#: elf32-arm.c:10518 elf32-arm.c:10529 #, c-format msgid " [unsorted symbol table]" msgstr "" -#: elf32-arm.c:10485 +#: elf32-arm.c:10524 #, c-format msgid " [Version2 EABI]" msgstr "" -#: elf32-arm.c:10493 +#: elf32-arm.c:10532 #, c-format msgid " [dynamic symbols use segment index]" msgstr "" -#: elf32-arm.c:10496 +#: elf32-arm.c:10535 #, c-format msgid " [mapping symbols precede others]" msgstr "" -#: elf32-arm.c:10503 +#: elf32-arm.c:10542 #, c-format msgid " [Version3 EABI]" msgstr "" -#: elf32-arm.c:10507 +#: elf32-arm.c:10546 #, c-format msgid " [Version4 EABI]" msgstr "" -#: elf32-arm.c:10511 +#: elf32-arm.c:10550 #, c-format msgid " [Version5 EABI]" msgstr "" -#: elf32-arm.c:10514 +#: elf32-arm.c:10553 #, c-format msgid " [BE8]" msgstr "" -#: elf32-arm.c:10517 +#: elf32-arm.c:10556 #, c-format msgid " [LE8]" msgstr "" -#: elf32-arm.c:10523 +#: elf32-arm.c:10562 #, c-format msgid " " msgstr "" -#: elf32-arm.c:10530 +#: elf32-arm.c:10569 #, c-format msgid " [relocatable executable]" msgstr "" -#: elf32-arm.c:10533 +#: elf32-arm.c:10572 #, c-format msgid " [has entry point]" msgstr "" -#: elf32-arm.c:10538 +#: elf32-arm.c:10577 #, c-format msgid "" msgstr "" -#: elf32-arm.c:10783 elf32-i386.c:1300 elf32-s390.c:998 elf32-xtensa.c:1000 -#: elf64-s390.c:952 elf64-x86-64.c:1082 elfxx-sparc.c:1121 +#: elf32-arm.c:10824 elf32-i386.c:1322 elf32-s390.c:1000 elf32-xtensa.c:1009 +#: elf64-s390.c:960 elf64-x86-64.c:1105 elfxx-sparc.c:1370 msgid "%B: bad symbol index: %d" msgstr "" -#: elf32-arm.c:10904 elf64-x86-64.c:1242 elf64-x86-64.c:1411 elfxx-mips.c:7870 +#: elf32-arm.c:10946 elf64-x86-64.c:1265 elf64-x86-64.c:1434 elfxx-mips.c:7942 msgid "" "%B: relocation %s against `%s' can not be used when making a shared object; " "recompile with -fPIC" msgstr "" -#: elf32-arm.c:11893 +#: elf32-arm.c:11948 #, c-format msgid "Errors encountered processing file %s" msgstr "" -#: elf32-arm.c:13339 +#: elf32-arm.c:13334 msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location" msgstr "" #. There's not much we can do apart from complain if this #. happens. -#: elf32-arm.c:13366 +#: elf32-arm.c:13361 msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)" msgstr "" -#: elf32-arm.c:13457 elf32-arm.c:13479 +#: elf32-arm.c:13455 elf32-arm.c:13477 msgid "%B: error: VFP11 veneer out of range" msgstr "" -#: elf32-avr.c:1259 elf32-bfin.c:3208 elf32-cris.c:2097 elf32-fr30.c:624 -#: elf32-frv.c:4122 elf32-i860.c:1226 elf32-ip2k.c:1510 elf32-iq2000.c:699 -#: elf32-m32c.c:568 elf32-mep.c:549 elf32-moxie.c:299 elf32-msp430.c:501 -#: elf32-mt.c:406 elf32-openrisc.c:419 elf32-v850.c:1709 elf32-xstormy16.c:956 -#: elf64-mmix.c:1541 +#: elf32-arm.c:14002 +msgid "error: %B is already in final BE8 format" +msgstr "" + +#: elf32-arm.c:14078 +msgid "" +"error: Source object %B has EABI version %d, but target %B has EABI version %" +"d" +msgstr "" + +#: elf32-arm.c:14094 +msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" +msgstr "" + +#: elf32-arm.c:14119 +msgid "error: %B uses VFP instructions, whereas %B does not" +msgstr "" + +#: elf32-arm.c:14123 +msgid "error: %B uses FPA instructions, whereas %B does not" +msgstr "" + +#: elf32-arm.c:14133 +msgid "error: %B uses Maverick instructions, whereas %B does not" +msgstr "" + +#: elf32-arm.c:14137 +msgid "error: %B does not use Maverick instructions, whereas %B does" +msgstr "" + +#: elf32-arm.c:14156 +msgid "error: %B uses software FP, whereas %B uses hardware FP" +msgstr "" + +#: elf32-arm.c:14160 +msgid "error: %B uses hardware FP, whereas %B uses software FP" +msgstr "" + +#: elf32-avr.c:1271 elf32-bfin.c:3201 elf32-cris.c:2085 elf32-fr30.c:617 +#: elf32-frv.c:4119 elf32-i860.c:1219 elf32-ip2k.c:1479 elf32-iq2000.c:692 +#: elf32-m32c.c:561 elf32-mep.c:542 elf32-moxie.c:290 elf32-msp430.c:494 +#: elf32-mt.c:399 elf32-openrisc.c:412 elf32-v850.c:2151 elf32-xstormy16.c:949 +#: elf64-mmix.c:1530 msgid "internal error: dangerous relocation" msgstr "" -#: elf32-avr.c:2409 elf32-hppa.c:605 elf32-m68hc1x.c:165 elf64-ppc.c:4141 +#: elf32-avr.c:2400 elf32-hppa.c:598 elf32-m68hc1x.c:166 elf64-ppc.c:4175 msgid "%B: cannot create stub entry %s" msgstr "" -#: elf32-bfin.c:1581 +#: elf32-bfin.c:1575 msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'" msgstr "" -#: elf32-bfin.c:1614 elf32-i386.c:4026 elf32-m68k.c:4176 elf32-s390.c:3067 -#: elf64-s390.c:3026 elf64-x86-64.c:3697 +#: elf32-bfin.c:1608 elf32-i386.c:4123 elf32-m68k.c:4233 elf32-s390.c:3062 +#: elf64-s390.c:3037 elf64-x86-64.c:3759 msgid "%B(%A+0x%lx): reloc against `%s': error %d" msgstr "" -#: elf32-bfin.c:2714 +#: elf32-bfin.c:2707 msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend" msgstr "" -#: elf32-bfin.c:2728 elf32-frv.c:2904 +#: elf32-bfin.c:2721 elf32-frv.c:2901 msgid "relocation references symbol not defined in the module" msgstr "" -#: elf32-bfin.c:2825 +#: elf32-bfin.c:2818 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend" msgstr "" -#: elf32-bfin.c:2866 elf32-bfin.c:2989 elf32-frv.c:3641 elf32-frv.c:3762 +#: elf32-bfin.c:2859 elf32-bfin.c:2982 elf32-frv.c:3638 elf32-frv.c:3759 msgid "cannot emit fixups in read-only section" msgstr "" -#: elf32-bfin.c:2897 elf32-bfin.c:3027 elf32-frv.c:3672 elf32-frv.c:3806 -#: elf32-lm32.c:1104 +#: elf32-bfin.c:2890 elf32-bfin.c:3020 elf32-frv.c:3669 elf32-frv.c:3803 +#: elf32-lm32.c:1103 elf32-sh.c:5021 msgid "cannot emit dynamic relocations in read-only section" msgstr "" -#: elf32-bfin.c:2947 +#: elf32-bfin.c:2940 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "" -#: elf32-bfin.c:3112 +#: elf32-bfin.c:3105 msgid "relocations between different segments are not supported" msgstr "" -#: elf32-bfin.c:3113 +#: elf32-bfin.c:3106 msgid "warning: relocation references a different segment" msgstr "" -#: elf32-bfin.c:4974 elf32-frv.c:6408 +#: elf32-bfin.c:4957 elf32-frv.c:6406 msgid "%B: unsupported relocation type %i" msgstr "" -#: elf32-bfin.c:5127 elf32-frv.c:6816 +#: elf32-bfin.c:5111 elf32-frv.c:6814 #, c-format msgid "%s: cannot link non-fdpic object file into fdpic executable" msgstr "" -#: elf32-bfin.c:5131 elf32-frv.c:6820 +#: elf32-bfin.c:5115 elf32-frv.c:6818 #, c-format msgid "%s: cannot link fdpic object file into non-fdpic executable" msgstr "" -#: elf32-cris.c:1169 +#: elf32-cris.c:1172 msgid "%B, section %A: unresolvable relocation %s against symbol `%s'" msgstr "" -#: elf32-cris.c:1238 +#: elf32-cris.c:1234 msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'" msgstr "" -#: elf32-cris.c:1240 +#: elf32-cris.c:1236 msgid "%B, section %A: No PLT for relocation %s against symbol `%s'" msgstr "" -#: elf32-cris.c:1246 elf32-cris.c:1379 elf32-cris.c:1641 elf32-cris.c:1730 -#: elf32-cris.c:1883 +#: elf32-cris.c:1242 elf32-cris.c:1375 elf32-cris.c:1635 elf32-cris.c:1718 +#: elf32-cris.c:1871 msgid "[whose name is lost]" msgstr "" -#: elf32-cris.c:1365 +#: elf32-cris.c:1361 msgid "" "%B, section %A: relocation %s with non-zero addend %d against local symbol" msgstr "" -#: elf32-cris.c:1373 elf32-cris.c:1724 elf32-cris.c:1877 +#: elf32-cris.c:1369 elf32-cris.c:1712 elf32-cris.c:1865 msgid "" "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'" msgstr "" -#: elf32-cris.c:1399 +#: elf32-cris.c:1395 msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'" msgstr "" -#: elf32-cris.c:1415 +#: elf32-cris.c:1411 msgid "%B, section %A: relocation %s with no GOT created" msgstr "" #. We shouldn't get here for GCC-emitted code. -#: elf32-cris.c:1632 +#: elf32-cris.c:1626 msgid "" "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a " "declaration mixup?" msgstr "" -#: elf32-cris.c:2010 +#: elf32-cris.c:1998 msgid "" "%B, section %A: relocation %s is not allowed for symbol: `%s' which is " "defined outside the program, perhaps a declaration mixup?" msgstr "" -#: elf32-cris.c:2063 +#: elf32-cris.c:2051 msgid "(too many global variables for -fpic: recompile with -fPIC)" msgstr "" -#: elf32-cris.c:2070 +#: elf32-cris.c:2058 msgid "" "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or " "-mno-small-tls)" msgstr "" -#: elf32-cris.c:3204 +#: elf32-cris.c:3248 msgid "" "%B, section %A:\n" " v10/v32 compatible object %s must not contain a PIC relocation" msgstr "" -#: elf32-cris.c:3309 +#: elf32-cris.c:3353 msgid "" "%B, section %A:\n" " relocation %s not valid in a shared object; typically an option mixup, " "recompile with -fPIC" msgstr "" -#: elf32-cris.c:3523 +#: elf32-cris.c:3567 msgid "" "%B, section %A:\n" " relocation %s should not be used in a shared object; recompile with -fPIC" msgstr "" -#: elf32-cris.c:3940 +#: elf32-cris.c:3992 msgid "" "%B, section `%A', to symbol `%s':\n" " relocation %s should not be used in a shared object; recompile with -fPIC" msgstr "" -#: elf32-cris.c:4059 +#: elf32-cris.c:4111 msgid "Unexpected machine number" msgstr "" -#: elf32-cris.c:4113 +#: elf32-cris.c:4165 #, c-format msgid " [symbols have a _ prefix]" msgstr "" -#: elf32-cris.c:4116 +#: elf32-cris.c:4168 #, c-format msgid " [v10 and v32]" msgstr "" -#: elf32-cris.c:4119 +#: elf32-cris.c:4171 #, c-format msgid " [v32]" msgstr "" -#: elf32-cris.c:4164 +#: elf32-cris.c:4216 msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols" msgstr "" -#: elf32-cris.c:4165 +#: elf32-cris.c:4217 msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols" msgstr "" -#: elf32-cris.c:4184 +#: elf32-cris.c:4236 msgid "%B contains CRIS v32 code, incompatible with previous objects" msgstr "" -#: elf32-cris.c:4186 +#: elf32-cris.c:4238 msgid "%B contains non-CRIS-v32 code, incompatible with previous objects" msgstr "" -#: elf32-frv.c:1507 elf32-frv.c:1656 +#: elf32-frv.c:1509 elf32-frv.c:1658 msgid "relocation requires zero addend" msgstr "" -#: elf32-frv.c:2891 +#: elf32-frv.c:2888 msgid "%B(%A+0x%x): relocation to `%s+%x' may have caused the error above" msgstr "" -#: elf32-frv.c:2980 +#: elf32-frv.c:2977 msgid "R_FRV_GETTLSOFF not applied to a call instruction" msgstr "" -#: elf32-frv.c:3022 +#: elf32-frv.c:3019 msgid "R_FRV_GOTTLSDESC12 not applied to an lddi instruction" msgstr "" -#: elf32-frv.c:3093 +#: elf32-frv.c:3090 msgid "R_FRV_GOTTLSDESCHI not applied to a sethi instruction" msgstr "" -#: elf32-frv.c:3130 +#: elf32-frv.c:3127 msgid "R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction" msgstr "" -#: elf32-frv.c:3178 +#: elf32-frv.c:3175 msgid "R_FRV_TLSDESC_RELAX not applied to an ldd instruction" msgstr "" -#: elf32-frv.c:3262 +#: elf32-frv.c:3259 msgid "R_FRV_GETTLSOFF_RELAX not applied to a calll instruction" msgstr "" -#: elf32-frv.c:3317 +#: elf32-frv.c:3314 msgid "R_FRV_GOTTLSOFF12 not applied to an ldi instruction" msgstr "" -#: elf32-frv.c:3347 +#: elf32-frv.c:3344 msgid "R_FRV_GOTTLSOFFHI not applied to a sethi instruction" msgstr "" -#: elf32-frv.c:3376 +#: elf32-frv.c:3373 msgid "R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction" msgstr "" -#: elf32-frv.c:3407 +#: elf32-frv.c:3404 msgid "R_FRV_TLSOFF_RELAX not applied to an ld instruction" msgstr "" -#: elf32-frv.c:3452 +#: elf32-frv.c:3449 msgid "R_FRV_TLSMOFFHI not applied to a sethi instruction" msgstr "" -#: elf32-frv.c:3479 +#: elf32-frv.c:3476 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction" msgstr "" -#: elf32-frv.c:3600 +#: elf32-frv.c:3597 msgid "R_FRV_FUNCDESC references dynamic symbol with nonzero addend" msgstr "" -#: elf32-frv.c:3720 +#: elf32-frv.c:3717 msgid "R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "" -#: elf32-frv.c:3977 elf32-frv.c:4133 +#: elf32-frv.c:3974 elf32-frv.c:4130 msgid "%B(%A+0x%lx): reloc against `%s': %s" msgstr "" -#: elf32-frv.c:3979 elf32-frv.c:3983 +#: elf32-frv.c:3976 elf32-frv.c:3980 msgid "relocation references a different segment" msgstr "" -#: elf32-frv.c:6730 +#: elf32-frv.c:6728 #, c-format msgid "" "%s: compiled with %s and linked with modules that use non-pic relocations" msgstr "" -#: elf32-frv.c:6783 elf32-iq2000.c:852 elf32-m32c.c:814 +#: elf32-frv.c:6781 elf32-iq2000.c:845 elf32-m32c.c:807 #, c-format msgid "%s: compiled with %s and linked with modules compiled with %s" msgstr "" -#: elf32-frv.c:6795 +#: elf32-frv.c:6793 #, c-format msgid "" "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%" "lx)" msgstr "" -#: elf32-frv.c:6845 elf32-iq2000.c:889 elf32-m32c.c:850 elf32-mt.c:583 +#: elf32-frv.c:6843 elf32-iq2000.c:882 elf32-m32c.c:843 elf32-mt.c:576 +#: elf32-rx.c:2925 #, c-format msgid "private flags = 0x%lx:" msgstr "" @@ -1498,122 +1514,129 @@ msgid "%B: Relocations in generic ELF (EM: %d)" msgstr "" -#: elf32-hppa.c:854 elf32-hppa.c:3570 +#: elf32-hppa.c:850 elf32-hppa.c:3610 msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections" msgstr "" -#: elf32-hppa.c:1286 +#: elf32-hppa.c:1284 msgid "" "%B: relocation %s can not be used when making a shared object; recompile " "with -fPIC" msgstr "" -#: elf32-hppa.c:2780 +#: elf32-hppa.c:2803 msgid "%B: duplicate export stub %s" msgstr "" -#: elf32-hppa.c:3406 +#: elf32-hppa.c:3449 msgid "" "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link" msgstr "" -#: elf32-hppa.c:4260 +#: elf32-hppa.c:4296 msgid "%B(%A+0x%lx): cannot handle %s for %s" msgstr "" -#: elf32-hppa.c:4567 +#: elf32-hppa.c:4608 msgid ".got section not immediately after .plt section" msgstr "" -#: elf32-i386.c:371 elf32-ppc.c:1666 elf32-s390.c:379 elf64-ppc.c:2283 -#: elf64-s390.c:403 elf64-x86-64.c:234 +#. Unknown relocation. +#: elf32-i386.c:371 elf32-m68k.c:383 elf32-ppc.c:1674 elf32-s390.c:379 +#: elf32-tic6x.c:1563 elf64-ppc.c:2284 elf64-s390.c:403 elf64-x86-64.c:234 msgid "%B: invalid relocation type %d" msgstr "" -#: elf32-i386.c:1246 elf64-x86-64.c:1029 +#: elf32-i386.c:1265 elf64-x86-64.c:1049 msgid "" "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed" msgstr "" -#: elf32-i386.c:1387 elf32-i386.c:2970 elf64-x86-64.c:1171 elf64-x86-64.c:2680 +#: elf32-i386.c:1408 elf32-i386.c:3068 elf64-x86-64.c:1194 elf64-x86-64.c:2780 +#: elfxx-sparc.c:3076 msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" msgstr "" -#: elf32-i386.c:1548 elf32-s390.c:1180 elf32-sh.c:5065 elf32-xtensa.c:1173 -#: elf64-s390.c:1143 elfxx-sparc.c:1257 +#: elf32-i386.c:1570 elf32-s390.c:1182 elf32-sh.c:6367 elf32-xtensa.c:1182 +#: elf64-s390.c:1151 elfxx-sparc.c:1547 msgid "%B: `%s' accessed both as normal and thread local symbol" msgstr "" -#: elf32-i386.c:2805 +#: elf32-i386.c:2910 msgid "%B: unrecognized relocation (0x%x) in section `%A'" msgstr "" -#: elf32-i386.c:3219 elf64-x86-64.c:3081 +#: elf32-i386.c:3317 elf64-x86-64.c:3174 msgid "hidden symbol" msgstr "" -#: elf32-i386.c:3222 elf64-x86-64.c:3084 +#: elf32-i386.c:3320 elf64-x86-64.c:3177 msgid "internal symbol" msgstr "" -#: elf32-i386.c:3225 elf64-x86-64.c:3087 +#: elf32-i386.c:3323 elf64-x86-64.c:3180 msgid "protected symbol" msgstr "" -#: elf32-i386.c:3228 elf64-x86-64.c:3090 +#: elf32-i386.c:3326 elf64-x86-64.c:3183 msgid "symbol" msgstr "" -#: elf32-i386.c:3233 +#: elf32-i386.c:3331 msgid "" "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when " "making a shared object" msgstr "" -#: elf32-i386.c:3243 +#: elf32-i386.c:3341 msgid "" "%B: relocation R_386_GOTOFF against protected function `%s' can not be used " "when making a shared object" msgstr "" -#: elf32-ip2k.c:868 elf32-ip2k.c:874 elf32-ip2k.c:941 elf32-ip2k.c:947 +#: elf32-i386.c:4633 elf64-x86-64.c:4206 +#, c-format +msgid "discarded output section: `%A'" +msgstr "" + +#: elf32-ip2k.c:857 elf32-ip2k.c:863 elf32-ip2k.c:930 elf32-ip2k.c:936 msgid "" "ip2k relaxer: switch table without complete matching relocation information." msgstr "" -#: elf32-ip2k.c:891 elf32-ip2k.c:974 +#: elf32-ip2k.c:880 elf32-ip2k.c:963 msgid "ip2k relaxer: switch table header corrupt." msgstr "" -#: elf32-ip2k.c:1316 +#: elf32-ip2k.c:1292 #, c-format msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)." msgstr "" -#: elf32-ip2k.c:1332 +#: elf32-ip2k.c:1308 #, c-format msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)." msgstr "" #. Only if it's not an unresolved symbol. -#: elf32-ip2k.c:1506 +#: elf32-ip2k.c:1475 msgid "unsupported relocation between data/insn address spaces" msgstr "" -#: elf32-iq2000.c:865 elf32-m32c.c:826 +#: elf32-iq2000.c:858 elf32-m32c.c:819 #, c-format msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "" -#: elf32-lm32.c:698 +#: elf32-lm32.c:706 msgid "global pointer relative relocation when _gp not defined" msgstr "" -#: elf32-lm32.c:753 +#: elf32-lm32.c:761 msgid "global pointer relative address out of range" msgstr "" -#: elf32-lm32.c:1058 +#: elf32-lm32.c:1057 msgid "internal error: addend should be zero for R_LM32_16_GOT" msgstr "" @@ -1621,133 +1644,133 @@ msgid "SDA relocation when _SDA_BASE_ not defined" msgstr "" -#: elf32-m32r.c:3039 +#: elf32-m32r.c:3048 msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)" msgstr "" -#: elf32-m32r.c:3567 +#: elf32-m32r.c:3576 msgid "%B: Instruction set mismatch with previous modules" msgstr "" -#: elf32-m32r.c:3588 +#: elf32-m32r.c:3597 #, c-format msgid "private flags = %lx" msgstr "" -#: elf32-m32r.c:3593 +#: elf32-m32r.c:3602 #, c-format msgid ": m32r instructions" msgstr "" -#: elf32-m32r.c:3594 +#: elf32-m32r.c:3603 #, c-format msgid ": m32rx instructions" msgstr "" -#: elf32-m32r.c:3595 +#: elf32-m32r.c:3604 #, c-format msgid ": m32r2 instructions" msgstr "" -#: elf32-m68hc1x.c:1048 +#: elf32-m68hc1x.c:1050 #, c-format msgid "" "Reference to the far symbol `%s' using a wrong relocation may result in " "incorrect execution" msgstr "" -#: elf32-m68hc1x.c:1071 +#: elf32-m68hc1x.c:1073 #, c-format msgid "" "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked " "address [%lx:%04lx] (%lx)" msgstr "" -#: elf32-m68hc1x.c:1090 +#: elf32-m68hc1x.c:1092 #, c-format msgid "" "reference to a banked address [%lx:%04lx] in the normal address space at %" "04lx" msgstr "" -#: elf32-m68hc1x.c:1223 +#: elf32-m68hc1x.c:1225 msgid "" "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-" "bit integers" msgstr "" -#: elf32-m68hc1x.c:1230 +#: elf32-m68hc1x.c:1232 msgid "" "%B: linking files compiled for 32-bit double (-fshort-double) and others for " "64-bit double" msgstr "" -#: elf32-m68hc1x.c:1239 +#: elf32-m68hc1x.c:1241 msgid "%B: linking files compiled for HCS12 with others compiled for HC12" msgstr "" -#: elf32-m68hc1x.c:1255 elf32-ppc.c:4255 elf64-sparc.c:698 elfxx-mips.c:12617 +#: elf32-m68hc1x.c:1257 elf32-ppc.c:4232 elf64-sparc.c:703 elfxx-mips.c:12704 msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "" -#: elf32-m68hc1x.c:1283 +#: elf32-m68hc1x.c:1285 #, c-format msgid "[abi=32-bit int, " msgstr "" -#: elf32-m68hc1x.c:1285 +#: elf32-m68hc1x.c:1287 #, c-format msgid "[abi=16-bit int, " msgstr "" -#: elf32-m68hc1x.c:1288 +#: elf32-m68hc1x.c:1290 #, c-format msgid "64-bit double, " msgstr "" -#: elf32-m68hc1x.c:1290 +#: elf32-m68hc1x.c:1292 #, c-format msgid "32-bit double, " msgstr "" -#: elf32-m68hc1x.c:1293 +#: elf32-m68hc1x.c:1295 #, c-format msgid "cpu=HC11]" msgstr "" -#: elf32-m68hc1x.c:1295 +#: elf32-m68hc1x.c:1297 #, c-format msgid "cpu=HCS12]" msgstr "" -#: elf32-m68hc1x.c:1297 +#: elf32-m68hc1x.c:1299 #, c-format msgid "cpu=HC12]" msgstr "" -#: elf32-m68hc1x.c:1300 +#: elf32-m68hc1x.c:1302 #, c-format msgid " [memory=bank-model]" msgstr "" -#: elf32-m68hc1x.c:1302 +#: elf32-m68hc1x.c:1304 #, c-format msgid " [memory=flat]" msgstr "" -#: elf32-m68k.c:1184 elf32-m68k.c:1185 +#: elf32-m68k.c:1250 elf32-m68k.c:1251 vms-alpha.c:7292 vms-alpha.c:7307 msgid "unknown" msgstr "" -#: elf32-m68k.c:1645 +#: elf32-m68k.c:1714 msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d" msgstr "" -#: elf32-m68k.c:1651 +#: elf32-m68k.c:1720 msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d" msgstr "" -#: elf32-m68k.c:3902 +#: elf32-m68k.c:3959 msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object" msgstr "" @@ -1759,200 +1782,238 @@ msgid "%B: Unknown relocation type %d\n" msgstr "" -#: elf32-mep.c:654 +#: elf32-mep.c:647 msgid "%B and %B are for different cores" msgstr "" -#: elf32-mep.c:671 +#: elf32-mep.c:664 msgid "%B and %B are for different configurations" msgstr "" -#: elf32-mep.c:708 +#: elf32-mep.c:701 #, c-format msgid "private flags = 0x%lx" msgstr "" -#: elf32-microblaze.c:737 +#: elf32-microblaze.c:742 #, c-format msgid "%s: unknown relocation type %d" msgstr "" -#: elf32-microblaze.c:862 elf32-microblaze.c:907 +#: elf32-microblaze.c:867 elf32-microblaze.c:912 #, c-format msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" msgstr "" -#: elf32-microblaze.c:1150 elfxx-sparc.c:2957 +#: elf32-microblaze.c:1155 elfxx-sparc.c:3450 msgid "%B: probably compiled without -fPIC?" msgstr "" -#: elf32-microblaze.c:2086 elflink.c:12444 +#: elf32-microblaze.c:2074 elflink.c:12601 msgid "%B: bad relocation section name `%s'" msgstr "" -#: elf32-mips.c:1045 elf64-mips.c:2083 elfn32-mips.c:1888 +#: elf32-mips.c:1045 elf64-mips.c:2084 elfn32-mips.c:1888 msgid "literal relocation occurs for an external symbol" msgstr "" -#: elf32-mips.c:1085 elf32-score.c:580 elf32-score7.c:480 elf64-mips.c:2126 +#: elf32-mips.c:1085 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:2127 #: elfn32-mips.c:1929 msgid "32bits gp relative relocation occurs for an external symbol" msgstr "" -#: elf32-ppc.c:1731 +#: elf32-ppc.c:1739 #, c-format msgid "generic linker can't handle %s" msgstr "" -#: elf32-ppc.c:2211 -msgid "corrupt or empty %s section in %B" +#: elf32-ppc.c:2180 +msgid "corrupt %s section in %B" msgstr "" -#: elf32-ppc.c:2218 +#: elf32-ppc.c:2199 msgid "unable to read in %s section from %B" msgstr "" -#: elf32-ppc.c:2224 -msgid "corrupt %s section in %B" -msgstr "" - -#: elf32-ppc.c:2267 +#: elf32-ppc.c:2240 msgid "warning: unable to set size of %s section in %B" msgstr "" -#: elf32-ppc.c:2315 +#: elf32-ppc.c:2290 msgid "failed to allocate space for new APUinfo section." msgstr "" -#: elf32-ppc.c:2334 +#: elf32-ppc.c:2309 msgid "failed to compute new APUinfo section." msgstr "" -#: elf32-ppc.c:2337 +#: elf32-ppc.c:2312 msgid "failed to install new APUinfo section." msgstr "" -#: elf32-ppc.c:3364 +#: elf32-ppc.c:3358 msgid "%B: relocation %s cannot be used when making a shared object" msgstr "" #. It does not make sense to have a procedure linkage #. table entry for a local symbol. -#: elf32-ppc.c:3723 +#: elf32-ppc.c:3702 msgid "%B(%A+0x%lx): %s reloc against local symbol" msgstr "" -#: elf32-ppc.c:4067 elf32-ppc.c:4082 elfxx-mips.c:12324 elfxx-mips.c:12350 -#: elfxx-mips.c:12372 elfxx-mips.c:12398 +#: elf32-ppc.c:4044 elf32-ppc.c:4059 elfxx-mips.c:12411 elfxx-mips.c:12437 +#: elfxx-mips.c:12459 elfxx-mips.c:12485 msgid "Warning: %B uses hard float, %B uses soft float" msgstr "" -#: elf32-ppc.c:4070 elf32-ppc.c:4074 +#: elf32-ppc.c:4047 elf32-ppc.c:4051 msgid "" "Warning: %B uses double-precision hard float, %B uses single-precision hard " "float" msgstr "" -#: elf32-ppc.c:4078 +#: elf32-ppc.c:4055 msgid "Warning: %B uses soft float, %B uses single-precision hard float" msgstr "" -#: elf32-ppc.c:4085 elf32-ppc.c:4089 elfxx-mips.c:12304 elfxx-mips.c:12308 +#: elf32-ppc.c:4062 elf32-ppc.c:4066 elfxx-mips.c:12391 elfxx-mips.c:12395 msgid "Warning: %B uses unknown floating point ABI %d" msgstr "" -#: elf32-ppc.c:4131 elf32-ppc.c:4135 +#: elf32-ppc.c:4108 elf32-ppc.c:4112 msgid "Warning: %B uses unknown vector ABI %d" msgstr "" -#: elf32-ppc.c:4139 +#: elf32-ppc.c:4116 msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\"" msgstr "" -#: elf32-ppc.c:4156 elf32-ppc.c:4159 +#: elf32-ppc.c:4133 elf32-ppc.c:4136 msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory" msgstr "" -#: elf32-ppc.c:4162 elf32-ppc.c:4166 +#: elf32-ppc.c:4139 elf32-ppc.c:4143 msgid "Warning: %B uses unknown small structure return convention %d" msgstr "" -#: elf32-ppc.c:4220 +#: elf32-ppc.c:4197 msgid "" "%B: compiled with -mrelocatable and linked with modules compiled normally" msgstr "" -#: elf32-ppc.c:4228 +#: elf32-ppc.c:4205 msgid "" "%B: compiled normally and linked with modules compiled with -mrelocatable" msgstr "" -#: elf32-ppc.c:4314 +#: elf32-ppc.c:4293 msgid "Using bss-plt due to %B" msgstr "" -#: elf32-ppc.c:7056 elf64-ppc.c:11364 +#: elf32-ppc.c:7192 elf64-ppc.c:12307 msgid "%B: unknown relocation type %d for symbol %s" msgstr "" -#: elf32-ppc.c:7316 +#: elf32-ppc.c:7453 msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'" msgstr "" -#: elf32-ppc.c:7499 elf64-ppc.c:11854 +#: elf32-ppc.c:7651 elf64-ppc.c:12812 msgid "%B(%A+0x%lx): relocation %s for indirect function %s unsupported" msgstr "" -#: elf32-ppc.c:7709 elf32-ppc.c:7736 elf32-ppc.c:7787 +#: elf32-ppc.c:7881 elf32-ppc.c:7911 elf32-ppc.c:7958 msgid "" "%B: the target (%s) of a %s relocation is in the wrong output section (%s)" msgstr "" -#: elf32-ppc.c:7847 +#: elf32-ppc.c:8030 msgid "%B: relocation %s is not yet supported for symbol %s." msgstr "" -#: elf32-ppc.c:7955 elf64-ppc.c:12110 +#: elf32-ppc.c:8138 elf64-ppc.c:13162 msgid "%B(%A+0x%lx): %s reloc against `%s': error %d" msgstr "" -#: elf32-ppc.c:8423 +#: elf32-ppc.c:8629 #, c-format msgid "%s not defined in linker created %s" msgstr "" -#: elf32-s390.c:2207 elf64-s390.c:2179 +#: elf32-rx.c:544 +msgid "%B:%A: Warning: deprecated Red Hat reloc " +msgstr "" + +#: elf32-rx.c:1086 +msgid "Warning: RX_SYM reloc with an unknown symbol" +msgstr "" + +#: elf32-rx.c:1251 +msgid "%B(%A): error: call to undefined function '%s'" +msgstr "" + +#: elf32-rx.c:1265 +msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area" +msgstr "" + +#: elf32-rx.c:1269 +msgid "%B(%A): internal error: out of range error" +msgstr "" + +#: elf32-rx.c:1273 +msgid "%B(%A): internal error: unsupported relocation error" +msgstr "" + +#: elf32-rx.c:1277 +msgid "%B(%A): internal error: dangerous relocation" +msgstr "" + +#: elf32-rx.c:1281 +msgid "%B(%A): internal error: unknown error" +msgstr "" + +#: elf32-rx.c:2928 +#, c-format +msgid " [64-bit doubles]" +msgstr "" + +#: elf32-rx.c:2930 +#, c-format +msgid " [dsp]" +msgstr "" + +#: elf32-s390.c:2209 elf64-s390.c:2196 msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s" msgstr "" -#: elf32-score.c:1533 elf32-score7.c:1424 elfxx-mips.c:3299 +#: elf32-score.c:1522 elf32-score7.c:1382 elfxx-mips.c:3323 msgid "not enough GOT space for local GOT entries" msgstr "" -#: elf32-score.c:2765 +#: elf32-score.c:2744 msgid "address not word align" msgstr "" -#: elf32-score.c:2850 elf32-score7.c:2685 +#: elf32-score.c:2829 elf32-score7.c:2634 #, c-format msgid "%s: Malformed reloc detected for section %s" msgstr "" -#: elf32-score.c:2901 elf32-score7.c:2736 +#: elf32-score.c:2880 elf32-score7.c:2685 msgid "%B: CALL15 reloc at 0x%lx not against global symbol" msgstr "" -#: elf32-score.c:4042 elf32-score7.c:3879 +#: elf32-score.c:3999 elf32-score7.c:3806 #, c-format msgid " [pic]" msgstr "" -#: elf32-score.c:4046 elf32-score7.c:3883 +#: elf32-score.c:4003 elf32-score7.c:3810 #, c-format msgid " [fix dep]" msgstr "" -#: elf32-score.c:4088 elf32-score7.c:3925 +#: elf32-score.c:4045 elf32-score7.c:3852 msgid "%B: warning: linking PIC files with non-PIC files" msgstr "" @@ -1968,105 +2029,135 @@ msgid "%B: Failed to add renamed symbol %s" msgstr "" -#: elf32-sh.c:533 +#: elf32-sh.c:568 msgid "%B: 0x%lx: warning: bad R_SH_USES offset" msgstr "" -#: elf32-sh.c:545 +#: elf32-sh.c:580 msgid "%B: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" msgstr "" -#: elf32-sh.c:562 +#: elf32-sh.c:597 msgid "%B: 0x%lx: warning: bad R_SH_USES load offset" msgstr "" -#: elf32-sh.c:577 +#: elf32-sh.c:612 msgid "%B: 0x%lx: warning: could not find expected reloc" msgstr "" -#: elf32-sh.c:605 +#: elf32-sh.c:640 msgid "%B: 0x%lx: warning: symbol in unexpected section" msgstr "" -#: elf32-sh.c:731 +#: elf32-sh.c:766 msgid "%B: 0x%lx: warning: could not find expected COUNT reloc" msgstr "" -#: elf32-sh.c:740 +#: elf32-sh.c:775 msgid "%B: 0x%lx: warning: bad count" msgstr "" -#: elf32-sh.c:1144 elf32-sh.c:1514 +#: elf32-sh.c:1179 elf32-sh.c:1549 msgid "%B: 0x%lx: fatal: reloc overflow while relaxing" msgstr "" -#: elf32-sh.c:3270 elf64-sh64.c:1526 +#: elf32-sh.c:4057 elf64-sh64.c:1514 msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" msgstr "" -#: elf32-sh.c:3507 +#: elf32-sh.c:4304 msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation" msgstr "" -#: elf32-sh.c:3540 elf32-sh.c:3555 +#: elf32-sh.c:4337 elf32-sh.c:4352 msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx" msgstr "" -#: elf32-sh.c:3569 +#: elf32-sh.c:4366 msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32" msgstr "" -#: elf32-sh.c:3583 +#: elf32-sh.c:4380 msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32" msgstr "" -#: elf32-sh.c:5256 elf64-alpha.c:4525 +#: elf32-sh.c:4524 elf32-sh.c:4994 +msgid "%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section" +msgstr "" + +#: elf32-sh.c:5101 +msgid "%B(%A+0x%lx): %s relocation against external symbol \"%s\"" +msgstr "" + +#: elf32-sh.c:5574 +#, c-format +msgid "%X%C: relocation to \"%s\" references a different segment\n" +msgstr "" + +#: elf32-sh.c:5580 +#, c-format +msgid "%C: warning: relocation to \"%s\" references a different segment\n" +msgstr "" + +#: elf32-sh.c:6358 elf32-sh.c:6441 +msgid "%B: `%s' accessed both as normal and FDPIC symbol" +msgstr "" + +#: elf32-sh.c:6363 elf32-sh.c:6445 +msgid "%B: `%s' accessed both as FDPIC and thread local symbol" +msgstr "" + +#: elf32-sh.c:6393 +msgid "%B: Function descriptor relocation with non-zero addend" +msgstr "" + +#: elf32-sh.c:6629 elf64-alpha.c:4560 msgid "%B: TLS local exec code cannot be linked into shared objects" msgstr "" -#: elf32-sh64.c:222 elf64-sh64.c:2333 +#: elf32-sh64.c:223 elf64-sh64.c:2314 #, c-format msgid "%s: compiled as 32-bit object and %s is 64-bit" msgstr "" -#: elf32-sh64.c:225 elf64-sh64.c:2336 +#: elf32-sh64.c:226 elf64-sh64.c:2317 #, c-format msgid "%s: compiled as 64-bit object and %s is 32-bit" msgstr "" -#: elf32-sh64.c:227 elf64-sh64.c:2338 +#: elf32-sh64.c:228 elf64-sh64.c:2319 #, c-format msgid "%s: object size does not match that of target %s" msgstr "" -#: elf32-sh64.c:450 elf64-sh64.c:2852 +#: elf32-sh64.c:451 elf64-sh64.c:2833 #, c-format msgid "%s: encountered datalabel symbol in input" msgstr "" -#: elf32-sh64.c:527 +#: elf32-sh64.c:528 msgid "PTB mismatch: a SHmedia address (bit 0 == 1)" msgstr "" -#: elf32-sh64.c:530 +#: elf32-sh64.c:531 msgid "PTA mismatch: a SHcompact address (bit 0 == 0)" msgstr "" -#: elf32-sh64.c:548 +#: elf32-sh64.c:549 #, c-format msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16" msgstr "" -#: elf32-sh64.c:597 +#: elf32-sh64.c:598 msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n" msgstr "" -#: elf32-sh64.c:673 +#: elf32-sh64.c:674 #, c-format msgid "%s: could not write out added .cranges entries" msgstr "" -#: elf32-sh64.c:733 +#: elf32-sh64.c:734 #, c-format msgid "%s: could not write out sorted .cranges entries" msgstr "" @@ -2079,67 +2170,67 @@ msgid "%B: linking little endian files with big endian files" msgstr "" -#: elf32-spu.c:723 +#: elf32-spu.c:719 msgid "%X%P: overlay section %A does not start on a cache line.\n" msgstr "" -#: elf32-spu.c:731 +#: elf32-spu.c:727 msgid "%X%P: overlay section %A is larger than a cache line.\n" msgstr "" -#: elf32-spu.c:751 +#: elf32-spu.c:747 msgid "%X%P: overlay section %A is not in cache area.\n" msgstr "" -#: elf32-spu.c:791 +#: elf32-spu.c:787 msgid "%X%P: overlay sections %A and %A do not start at the same address.\n" msgstr "" -#: elf32-spu.c:1015 +#: elf32-spu.c:1011 msgid "warning: call to non-function symbol %s defined in %B" msgstr "" -#: elf32-spu.c:1365 +#: elf32-spu.c:1361 msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" msgstr "" -#: elf32-spu.c:1884 +#: elf32-spu.c:1880 msgid "%B is not allowed to define %s" msgstr "" -#: elf32-spu.c:1892 +#: elf32-spu.c:1888 #, c-format msgid "you are not allowed to define %s in a script" msgstr "" -#: elf32-spu.c:1926 +#: elf32-spu.c:1922 #, c-format msgid "%s in overlay section" msgstr "" -#: elf32-spu.c:1955 +#: elf32-spu.c:1951 msgid "overlay stub relocation overflow" msgstr "" -#: elf32-spu.c:1964 elf64-ppc.c:10441 +#: elf32-spu.c:1960 elf64-ppc.c:11327 msgid "stubs don't match calculated size" msgstr "" -#: elf32-spu.c:2546 +#: elf32-spu.c:2542 #, c-format msgid "warning: %s overlaps %s\n" msgstr "" -#: elf32-spu.c:2562 +#: elf32-spu.c:2558 #, c-format msgid "warning: %s exceeds section size\n" msgstr "" -#: elf32-spu.c:2593 +#: elf32-spu.c:2589 msgid "%A:0x%v not found in function table\n" msgstr "" -#: elf32-spu.c:2740 +#: elf32-spu.c:2729 msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n" msgstr "" @@ -2165,264 +2256,321 @@ msgid " %s%s %s\n" msgstr "" -#: elf32-spu.c:4304 +#: elf32-spu.c:4307 #, c-format msgid "%s duplicated in %s\n" msgstr "" -#: elf32-spu.c:4308 +#: elf32-spu.c:4311 #, c-format msgid "%s duplicated\n" msgstr "" -#: elf32-spu.c:4315 +#: elf32-spu.c:4318 msgid "sorry, no support for duplicate object files in auto-overlay script\n" msgstr "" -#: elf32-spu.c:4356 +#: elf32-spu.c:4359 msgid "" "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local " "store\n" msgstr "" -#: elf32-spu.c:4512 +#: elf32-spu.c:4514 msgid "%B:%A%s exceeds overlay size\n" msgstr "" -#: elf32-spu.c:4669 +#: elf32-spu.c:4676 msgid "Stack size for call graph root nodes.\n" msgstr "" -#: elf32-spu.c:4670 +#: elf32-spu.c:4677 msgid "" "\n" "Stack size for functions. Annotations: '*' max stack, 't' tail call\n" msgstr "" -#: elf32-spu.c:4680 +#: elf32-spu.c:4687 msgid "Maximum stack required is 0x%v\n" msgstr "" -#: elf32-spu.c:4771 +#: elf32-spu.c:4778 msgid "fatal error while creating .fixup" msgstr "" -#: elf32-spu.c:5009 +#: elf32-spu.c:5006 msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'" msgstr "" -#: elf32-v850.c:163 +#: elf32-tic6x.c:1539 +msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined" +msgstr "" + +#. Shared libraries and exception handling support not +#. implemented. +#: elf32-tic6x.c:1554 +msgid "%B: relocation type %d not implemented" +msgstr "" + +#: elf32-tic6x.c:1640 +msgid "dangerous relocation" +msgstr "" + +#: elf32-tic6x.c:1788 elf32-tic6x.c:1796 +msgid "error: %B requires more stack alignment than %B preserves" +msgstr "" + +#: elf32-tic6x.c:1806 elf32-tic6x.c:1815 +msgid "error: unknown Tag_ABI_array_object_alignment value in %B" +msgstr "" + +#: elf32-tic6x.c:1824 elf32-tic6x.c:1833 +msgid "error: unknown Tag_ABI_array_object_align_expected value in %B" +msgstr "" + +#: elf32-tic6x.c:1841 elf32-tic6x.c:1848 +msgid "error: %B requires more array alignment than %B preserves" +msgstr "" + +#: elf32-tic6x.c:1870 +msgid "warning: %B and %B differ in wchar_t size" +msgstr "" + +#: elf32-tic6x.c:1888 +msgid "warning: %B and %B differ in whether code is compiled for DSBT" +msgstr "" + +#: elf32-tic6x.c:1898 +msgid "warning: %B and %B differ in position-dependence of data addressing" +msgstr "" + +#: elf32-tic6x.c:1908 +msgid "warning: %B and %B differ in position-dependence of code addressing" +msgstr "" + +#: elf32-v850.c:173 #, c-format msgid "Variable `%s' cannot occupy in multiple small data regions" msgstr "" -#: elf32-v850.c:166 +#: elf32-v850.c:176 #, c-format msgid "" "Variable `%s' can only be in one of the small, zero, and tiny data regions" msgstr "" -#: elf32-v850.c:169 +#: elf32-v850.c:179 #, c-format msgid "" "Variable `%s' cannot be in both small and zero data regions simultaneously" msgstr "" -#: elf32-v850.c:172 +#: elf32-v850.c:182 #, c-format msgid "" "Variable `%s' cannot be in both small and tiny data regions simultaneously" msgstr "" -#: elf32-v850.c:175 +#: elf32-v850.c:185 #, c-format msgid "" "Variable `%s' cannot be in both zero and tiny data regions simultaneously" msgstr "" -#: elf32-v850.c:478 +#: elf32-v850.c:483 #, c-format msgid "FAILED to find previous HI16 reloc\n" msgstr "" -#: elf32-v850.c:1713 +#: elf32-v850.c:2155 msgid "could not locate special linker symbol __gp" msgstr "" -#: elf32-v850.c:1717 +#: elf32-v850.c:2159 msgid "could not locate special linker symbol __ep" msgstr "" -#: elf32-v850.c:1721 +#: elf32-v850.c:2163 msgid "could not locate special linker symbol __ctbp" msgstr "" -#: elf32-v850.c:1871 +#: elf32-v850.c:2341 msgid "%B: Architecture mismatch with previous modules" msgstr "" -#: elf32-v850.c:1890 +#. xgettext:c-format. +#: elf32-v850.c:2360 #, c-format msgid "private flags = %lx: " msgstr "" -#: elf32-v850.c:1895 +#: elf32-v850.c:2365 #, c-format msgid "v850 architecture" msgstr "" -#: elf32-v850.c:1896 +#: elf32-v850.c:2366 #, c-format msgid "v850e architecture" msgstr "" -#: elf32-v850.c:1897 +#: elf32-v850.c:2367 #, c-format msgid "v850e1 architecture" msgstr "" -#: elf32-vax.c:543 +#: elf32-v850.c:2368 +#, c-format +msgid "v850e2 architecture" +msgstr "" + +#: elf32-v850.c:2369 +#, c-format +msgid "v850e2v3 architecture" +msgstr "" + +#: elf32-vax.c:531 #, c-format msgid " [nonpic]" msgstr "" -#: elf32-vax.c:546 +#: elf32-vax.c:534 #, c-format msgid " [d-float]" msgstr "" -#: elf32-vax.c:549 +#: elf32-vax.c:537 #, c-format msgid " [g-float]" msgstr "" -#: elf32-vax.c:666 +#: elf32-vax.c:654 #, c-format msgid "" "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of " "%ld" msgstr "" -#: elf32-vax.c:1608 +#: elf32-vax.c:1587 #, c-format msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" msgstr "" -#: elf32-vax.c:1735 +#: elf32-vax.c:1714 #, c-format msgid "%s: warning: %s relocation against symbol `%s' from %s section" msgstr "" -#: elf32-vax.c:1741 +#: elf32-vax.c:1720 #, c-format msgid "%s: warning: %s relocation to 0x%x from %s section" msgstr "" -#: elf32-xstormy16.c:451 elf32-ia64.c:2791 elf64-ia64.c:2791 +#: elf32-xstormy16.c:451 elf32-ia64.c:2861 elf64-ia64.c:2861 msgid "non-zero addend in @fptr reloc" msgstr "" -#: elf32-xtensa.c:912 +#: elf32-xtensa.c:918 msgid "%B(%A): invalid property table" msgstr "" -#: elf32-xtensa.c:2740 +#: elf32-xtensa.c:2780 msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)" msgstr "" -#: elf32-xtensa.c:2819 elf32-xtensa.c:2940 +#: elf32-xtensa.c:2859 elf32-xtensa.c:2980 msgid "dynamic relocation in read-only section" msgstr "" -#: elf32-xtensa.c:2916 +#: elf32-xtensa.c:2956 msgid "TLS relocation invalid without dynamic sections" msgstr "" -#: elf32-xtensa.c:3133 +#: elf32-xtensa.c:3173 msgid "internal inconsistency in size of .got.loc section" msgstr "" -#: elf32-xtensa.c:3443 +#: elf32-xtensa.c:3486 msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x" msgstr "" -#: elf32-xtensa.c:4672 elf32-xtensa.c:4680 +#: elf32-xtensa.c:4715 elf32-xtensa.c:4723 msgid "Attempt to convert L32R/CALLX to CALL failed" msgstr "" -#: elf32-xtensa.c:6290 elf32-xtensa.c:6366 elf32-xtensa.c:7486 +#: elf32-xtensa.c:6333 elf32-xtensa.c:6409 elf32-xtensa.c:7525 msgid "" "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch" msgstr "" -#: elf32-xtensa.c:7226 +#: elf32-xtensa.c:7265 msgid "" "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY " "relocation; possible configuration mismatch" msgstr "" -#: elf32-xtensa.c:8987 +#: elf32-xtensa.c:9024 msgid "invalid relocation address" msgstr "" -#: elf32-xtensa.c:9036 +#: elf32-xtensa.c:9073 msgid "overflow after relaxation" msgstr "" -#: elf32-xtensa.c:10167 +#: elf32-xtensa.c:10205 msgid "%B(%A+0x%lx): unexpected fix for %s relocation" msgstr "" -#: elf64-alpha.c:452 +#: elf64-alpha.c:460 msgid "GPDISP relocation did not find ldah and lda instructions" msgstr "" -#: elf64-alpha.c:2389 +#: elf64-alpha.c:2408 msgid "%B: .got subsegment exceeds 64K (size %d)" msgstr "" -#: elf64-alpha.c:4269 elf64-alpha.c:4281 +#: elf64-alpha.c:4304 elf64-alpha.c:4316 msgid "%B: gp-relative relocation against dynamic symbol %s" msgstr "" -#: elf64-alpha.c:4307 elf64-alpha.c:4442 +#: elf64-alpha.c:4342 elf64-alpha.c:4477 msgid "%B: pc-relative relocation against dynamic symbol %s" msgstr "" -#: elf64-alpha.c:4335 +#: elf64-alpha.c:4370 msgid "%B: change in gp: BRSGP %s" msgstr "" -#: elf64-alpha.c:4360 +#: elf64-alpha.c:4395 msgid "" msgstr "" -#: elf64-alpha.c:4365 +#: elf64-alpha.c:4400 msgid "%B: !samegp reloc against symbol without .prologue: %s" msgstr "" -#: elf64-alpha.c:4417 +#: elf64-alpha.c:4452 msgid "%B: unhandled dynamic relocation against %s" msgstr "" -#: elf64-alpha.c:4449 +#: elf64-alpha.c:4484 msgid "%B: pc-relative relocation against undefined weak symbol %s" msgstr "" -#: elf64-alpha.c:4509 +#: elf64-alpha.c:4544 msgid "%B: dtp-relative relocation against dynamic symbol %s" msgstr "" -#: elf64-alpha.c:4532 +#: elf64-alpha.c:4567 msgid "%B: tp-relative relocation against dynamic symbol %s" msgstr "" -#: elf64-hppa.c:2091 +#: elf64-hppa.c:2101 #, c-format msgid "stub entry for %s cannot load .plt, dp offset = %ld" msgstr "" -#: elf64-hppa.c:3273 +#: elf64-hppa.c:3299 msgid "%B(%A+0x%lx): cannot reach %s" msgstr "" @@ -2434,118 +2582,118 @@ "08lx\n" msgstr "" -#: elf64-mmix.c:1618 +#: elf64-mmix.c:1607 #, c-format msgid "" "%s: base-plus-offset relocation against register symbol: (unknown) in %s" msgstr "" -#: elf64-mmix.c:1623 +#: elf64-mmix.c:1612 #, c-format msgid "%s: base-plus-offset relocation against register symbol: %s in %s" msgstr "" -#: elf64-mmix.c:1667 +#: elf64-mmix.c:1656 #, c-format msgid "%s: register relocation against non-register symbol: (unknown) in %s" msgstr "" -#: elf64-mmix.c:1672 +#: elf64-mmix.c:1661 #, c-format msgid "%s: register relocation against non-register symbol: %s in %s" msgstr "" -#: elf64-mmix.c:1709 +#: elf64-mmix.c:1698 #, c-format msgid "%s: directive LOCAL valid only with a register or absolute value" msgstr "" -#: elf64-mmix.c:1737 +#: elf64-mmix.c:1726 #, c-format msgid "" "%s: LOCAL directive: Register $%ld is not a local register. First global " "register is $%ld." msgstr "" -#: elf64-mmix.c:2201 +#: elf64-mmix.c:2190 #, c-format msgid "" "%s: Error: multiple definition of `%s'; start of %s is set in a earlier " "linked file\n" msgstr "" -#: elf64-mmix.c:2259 +#: elf64-mmix.c:2248 msgid "Register section has contents\n" msgstr "" -#: elf64-mmix.c:2451 +#: elf64-mmix.c:2440 #, c-format msgid "" "Internal inconsistency: remaining %u != max %u.\n" " Please report this bug." msgstr "" -#: elf64-ppc.c:2691 libbfd.c:978 +#: elf64-ppc.c:2741 libbfd.c:997 msgid "%B: compiled for a big endian system and target is little endian" msgstr "" -#: elf64-ppc.c:2694 libbfd.c:980 +#: elf64-ppc.c:2744 libbfd.c:999 msgid "%B: compiled for a little endian system and target is big endian" msgstr "" -#: elf64-ppc.c:6338 +#: elf64-ppc.c:6473 #, c-format msgid "" "copy reloc against `%s' requires lazy plt linking; avoid setting " "LD_BIND_NOW=1 or upgrade gcc" msgstr "" -#: elf64-ppc.c:6767 +#: elf64-ppc.c:6901 msgid "dynreloc miscount for %B, section %A" msgstr "" -#: elf64-ppc.c:6851 +#: elf64-ppc.c:6985 msgid "%B: .opd is not a regular array of opd entries" msgstr "" -#: elf64-ppc.c:6860 +#: elf64-ppc.c:6994 msgid "%B: unexpected reloc type %u in .opd section" msgstr "" -#: elf64-ppc.c:6881 +#: elf64-ppc.c:7015 msgid "%B: undefined sym `%s' in .opd section" msgstr "" -#: elf64-ppc.c:7640 elf64-ppc.c:8017 +#: elf64-ppc.c:7877 elf64-ppc.c:8392 #, c-format -msgid "%s defined in removed toc entry" +msgid "%s defined on removed toc entry" msgstr "" -#: elf64-ppc.c:8910 +#: elf64-ppc.c:9459 #, c-format msgid "long branch stub `%s' offset overflow" msgstr "" -#: elf64-ppc.c:8969 +#: elf64-ppc.c:9518 #, c-format msgid "can't find branch stub `%s'" msgstr "" -#: elf64-ppc.c:9031 elf64-ppc.c:9169 +#: elf64-ppc.c:9580 elf64-ppc.c:9716 #, c-format msgid "linkage table error against `%s'" msgstr "" -#: elf64-ppc.c:9326 +#: elf64-ppc.c:9886 #, c-format msgid "can't build branch stub `%s'" msgstr "" -#: elf64-ppc.c:9799 +#: elf64-ppc.c:10684 msgid "%B section %A exceeds stub group size" msgstr "" -#: elf64-ppc.c:10453 +#: elf64-ppc.c:11339 #, c-format msgid "" "linker stubs in %u group%s\n" @@ -2556,449 +2704,455 @@ " plt call %lu" msgstr "" -#: elf64-ppc.c:11252 +#: elf64-ppc.c:12190 msgid "" "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; " "recompile with -mminimal-toc or upgrade gcc" msgstr "" -#: elf64-ppc.c:11260 +#: elf64-ppc.c:12198 msgid "" "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic " "multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, " "or make `%s' extern" msgstr "" -#: elf64-ppc.c:11961 +#: elf64-ppc.c:12919 msgid "%B: relocation %s is not supported for symbol %s." msgstr "" -#: elf64-ppc.c:12044 +#: elf64-ppc.c:13096 msgid "%B: error: relocation %s not a multiple of %d" msgstr "" -#: elf64-sh64.c:1701 +#: elf64-sh64.c:1682 #, c-format msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n" msgstr "" -#: elf64-sparc.c:439 +#: elf64-sparc.c:444 msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER" msgstr "" -#: elf64-sparc.c:459 +#: elf64-sparc.c:464 msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B" msgstr "" -#: elf64-sparc.c:482 +#: elf64-sparc.c:487 msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B" msgstr "" -#: elf64-sparc.c:527 +#: elf64-sparc.c:532 msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B" msgstr "" -#: elf64-sparc.c:679 +#: elf64-sparc.c:684 msgid "%B: linking UltraSPARC specific with HAL specific code" msgstr "" -#: elf64-x86-64.c:1337 +#: elf64-x86-64.c:1360 msgid "%B: '%s' accessed both as normal and thread local symbol" msgstr "" -#: elf64-x86-64.c:2701 +#: elf64-x86-64.c:2801 msgid "" "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d" msgstr "" -#: elf64-x86-64.c:2980 +#: elf64-x86-64.c:3073 msgid "" "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be " "used when making a shared object" msgstr "" -#: elf64-x86-64.c:3091 +#: elf64-x86-64.c:3184 msgid "; recompile with -fPIC" msgstr "" -#: elf64-x86-64.c:3096 +#: elf64-x86-64.c:3189 msgid "" "%B: relocation %s against %s `%s' can not be used when making a shared object" "%s" msgstr "" -#: elf64-x86-64.c:3098 +#: elf64-x86-64.c:3191 msgid "" "%B: relocation %s against undefined %s `%s' can not be used when making a " "shared object%s" msgstr "" -#: elfcode.h:795 +#: elfcode.h:826 #, c-format msgid "warning: %s has a corrupt string table index - ignoring" msgstr "" -#: elfcode.h:1201 +#: elfcode.h:1236 #, c-format msgid "%s: version count (%ld) does not match symbol count (%ld)" msgstr "" -#: elfcode.h:1441 +#: elfcode.h:1476 #, c-format msgid "%s(%s): relocation %d has invalid symbol index %ld" msgstr "" -#: elfcore.h:251 +#: elfcore.h:312 msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu." msgstr "" -#: elflink.c:1113 +#: elflink.c:1119 msgid "" "%s: TLS definition in %B section %A mismatches non-TLS definition in %B " "section %A" msgstr "" -#: elflink.c:1117 +#: elflink.c:1123 msgid "%s: TLS reference in %B mismatches non-TLS reference in %B" msgstr "" -#: elflink.c:1121 +#: elflink.c:1127 msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B" msgstr "" -#: elflink.c:1125 +#: elflink.c:1131 msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A" msgstr "" -#: elflink.c:1764 +#: elflink.c:1763 msgid "%B: unexpected redefinition of indirect versioned symbol `%s'" msgstr "" -#: elflink.c:2077 +#: elflink.c:2076 msgid "%B: version node not found for symbol %s" msgstr "" -#: elflink.c:2167 +#: elflink.c:2166 msgid "" "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'" msgstr "" -#: elflink.c:2178 +#: elflink.c:2177 msgid "" "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the " "object file has no symbol table" msgstr "" -#: elflink.c:2375 +#: elflink.c:2367 msgid "%B: relocation size mismatch in %B section %A" msgstr "" -#: elflink.c:2678 +#: elflink.c:2662 #, c-format msgid "warning: type and size of dynamic symbol `%s' are not defined" msgstr "" -#: elflink.c:3424 +#: elflink.c:3418 msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n" msgstr "" -#: elflink.c:4032 +#: elflink.c:4050 msgid "%B: %s: invalid version %u (max %d)" msgstr "" -#: elflink.c:4068 +#: elflink.c:4086 msgid "%B: %s: invalid needed version %d" msgstr "" -#: elflink.c:4253 +#: elflink.c:4285 msgid "" "Warning: alignment %u of common symbol `%s' in %B is greater than the " "alignment (%u) of its section %A" msgstr "" -#: elflink.c:4259 +#: elflink.c:4291 msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B" msgstr "" -#: elflink.c:4274 +#: elflink.c:4306 msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B" msgstr "" -#: elflink.c:4438 -#, c-format -msgid "%s: invalid DSO for symbol `%s' definition" +#: elflink.c:4472 +msgid "%B: undefined reference to symbol '%s'" msgstr "" -#: elflink.c:5688 +#: elflink.c:4475 +msgid "" +"note: '%s' is defined in DSO %B so try adding it to the linker command line" +msgstr "" + +#: elflink.c:5779 #, c-format msgid "%s: undefined version: %s" msgstr "" -#: elflink.c:5756 +#: elflink.c:5847 msgid "%B: .preinit_array section is not allowed in DSO" msgstr "" -#: elflink.c:7484 +#: elflink.c:7598 #, c-format msgid "undefined %s reference in complex symbol: %s" msgstr "" -#: elflink.c:7638 +#: elflink.c:7752 #, c-format msgid "unknown operator '%c' in complex symbol" msgstr "" -#: elflink.c:7976 elflink.c:7993 elflink.c:8030 elflink.c:8047 +#: elflink.c:8091 elflink.c:8108 elflink.c:8145 elflink.c:8162 msgid "%B: Unable to sort relocs - they are in more than one size" msgstr "" -#: elflink.c:8007 elflink.c:8061 +#: elflink.c:8122 elflink.c:8176 msgid "%B: Unable to sort relocs - they are of an unknown size" msgstr "" -#: elflink.c:8112 +#: elflink.c:8227 msgid "Not enough memory to sort relocations" msgstr "" -#: elflink.c:8304 +#: elflink.c:8420 msgid "%B: Too many sections: %d (>= %d)" msgstr "" -#: elflink.c:8540 +#: elflink.c:8663 msgid "%B: %s symbol `%s' in %B is referenced by DSO" msgstr "" -#: elflink.c:8625 +#: elflink.c:8754 msgid "%B: could not find output section %A for input section %A" msgstr "" -#: elflink.c:8745 +#: elflink.c:8874 msgid "%B: %s symbol `%s' isn't defined" msgstr "" -#: elflink.c:9301 +#: elflink.c:9428 msgid "" "error: %B contains a reloc (0x%s) for section %A that references a non-" "existent global symbol" msgstr "" -#: elflink.c:9366 +#: elflink.c:9494 msgid "" "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' " "of %B\n" msgstr "" -#: elflink.c:9991 +#: elflink.c:10141 msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections" msgstr "" -#: elflink.c:9996 +#: elflink.c:10146 #, c-format msgid "%A has both ordered and unordered sections" msgstr "" -#: elflink.c:10872 elflink.c:10916 +#: elflink.c:10992 elflink.c:11036 msgid "%B: could not find output section %s" msgstr "" -#: elflink.c:10877 +#: elflink.c:10997 #, c-format msgid "warning: %s section has zero size" msgstr "" -#: elflink.c:10982 +#: elflink.c:11102 msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n" msgstr "" -#: elflink.c:11165 +#: elflink.c:11289 msgid "%P%X: can not read symbols: %E\n" msgstr "" -#: elflink.c:11483 +#: elflink.c:11638 msgid "Removing unused section '%s' in file '%B'" msgstr "" -#: elflink.c:11695 +#: elflink.c:11850 msgid "Warning: gc-sections option ignored" msgstr "" -#: elflink.c:12242 +#: elflink.c:12399 msgid "%B: ignoring duplicate section `%A'" msgstr "" -#: elflink.c:12249 elflink.c:12256 +#: elflink.c:12406 elflink.c:12413 msgid "%B: duplicate section `%A' has different size" msgstr "" -#: elflink.c:12264 elflink.c:12269 +#: elflink.c:12421 elflink.c:12426 msgid "%B: warning: could not read contents of section `%A'" msgstr "" -#: elflink.c:12273 +#: elflink.c:12430 msgid "%B: warning: duplicate section `%A' has different contents" msgstr "" -#: elflink.c:12374 linker.c:3098 +#: elflink.c:12531 linker.c:3138 msgid "%F%P: already_linked_table: %E\n" msgstr "" -#: elfxx-mips.c:1222 +#: elfxx-mips.c:1220 msgid "static procedure (no name)" msgstr "" -#: elfxx-mips.c:5588 -msgid "%B: %A+0x%lx: jump to stub routine which is not jal" +#: elfxx-mips.c:5623 +msgid "" +"%B: %A+0x%lx: Direct jumps between ISA modes are not allowed; consider " +"recompiling with interlinking enabled." msgstr "" -#: elfxx-mips.c:6235 elfxx-mips.c:6458 +#: elfxx-mips.c:6280 elfxx-mips.c:6503 msgid "%B: Warning: bad `%s' option size %u smaller than its header" msgstr "" -#: elfxx-mips.c:7205 elfxx-mips.c:7330 +#: elfxx-mips.c:7254 elfxx-mips.c:7379 msgid "%B: Warning: cannot determine the target function for stub section `%s'" msgstr "" -#: elfxx-mips.c:7459 +#: elfxx-mips.c:7508 msgid "%B: Malformed reloc detected for section %s" msgstr "" -#: elfxx-mips.c:7499 +#: elfxx-mips.c:7548 msgid "%B: GOT reloc at 0x%lx not expected in executables" msgstr "" -#: elfxx-mips.c:7602 +#: elfxx-mips.c:7670 msgid "%B: CALL16 reloc at 0x%lx not against global symbol" msgstr "" -#: elfxx-mips.c:8280 +#: elfxx-mips.c:8365 #, c-format msgid "non-dynamic relocations refer to dynamic symbol %s" msgstr "" -#: elfxx-mips.c:8985 +#: elfxx-mips.c:9068 msgid "" "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%" "A'" msgstr "" -#: elfxx-mips.c:9124 +#: elfxx-mips.c:9207 msgid "" "small-data section exceeds 64KB; lower small-data size limit (see option -G)" msgstr "" -#: elfxx-mips.c:11940 +#: elfxx-mips.c:12027 #, c-format msgid "%s: illegal section name `%s'" msgstr "" -#: elfxx-mips.c:12318 elfxx-mips.c:12344 +#: elfxx-mips.c:12405 elfxx-mips.c:12431 msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float" msgstr "" -#: elfxx-mips.c:12330 elfxx-mips.c:12386 +#: elfxx-mips.c:12417 elfxx-mips.c:12473 msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64" msgstr "" -#: elfxx-mips.c:12356 elfxx-mips.c:12392 +#: elfxx-mips.c:12443 elfxx-mips.c:12479 msgid "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64" msgstr "" -#: elfxx-mips.c:12434 +#: elfxx-mips.c:12521 msgid "%B: endianness incompatible with that of the selected emulation" msgstr "" -#: elfxx-mips.c:12445 +#: elfxx-mips.c:12532 msgid "%B: ABI is incompatible with that of the selected emulation" msgstr "" -#: elfxx-mips.c:12526 +#: elfxx-mips.c:12613 msgid "%B: warning: linking abicalls files with non-abicalls files" msgstr "" -#: elfxx-mips.c:12543 +#: elfxx-mips.c:12630 msgid "%B: linking 32-bit code with 64-bit code" msgstr "" -#: elfxx-mips.c:12571 +#: elfxx-mips.c:12658 msgid "%B: linking %s module with previous %s modules" msgstr "" -#: elfxx-mips.c:12594 +#: elfxx-mips.c:12681 msgid "%B: ABI mismatch: linking %s module with previous %s modules" msgstr "" -#: elfxx-mips.c:12758 +#: elfxx-mips.c:12845 #, c-format msgid " [abi=O32]" msgstr "" -#: elfxx-mips.c:12760 +#: elfxx-mips.c:12847 #, c-format msgid " [abi=O64]" msgstr "" -#: elfxx-mips.c:12762 +#: elfxx-mips.c:12849 #, c-format msgid " [abi=EABI32]" msgstr "" -#: elfxx-mips.c:12764 +#: elfxx-mips.c:12851 #, c-format msgid " [abi=EABI64]" msgstr "" -#: elfxx-mips.c:12766 +#: elfxx-mips.c:12853 #, c-format msgid " [abi unknown]" msgstr "" -#: elfxx-mips.c:12768 +#: elfxx-mips.c:12855 #, c-format msgid " [abi=N32]" msgstr "" -#: elfxx-mips.c:12770 +#: elfxx-mips.c:12857 #, c-format msgid " [abi=64]" msgstr "" -#: elfxx-mips.c:12772 +#: elfxx-mips.c:12859 #, c-format msgid " [no abi set]" msgstr "" -#: elfxx-mips.c:12793 +#: elfxx-mips.c:12880 #, c-format msgid " [unknown ISA]" msgstr "" -#: elfxx-mips.c:12804 +#: elfxx-mips.c:12891 #, c-format msgid " [not 32bitmode]" msgstr "" -#: elfxx-sparc.c:440 +#: elfxx-sparc.c:595 #, c-format msgid "invalid relocation type %d" msgstr "" -#: i386linux.c:455 m68klinux.c:459 sparclinux.c:453 +#: i386linux.c:454 m68klinux.c:458 sparclinux.c:452 #, c-format msgid "Output file requires shared library `%s'\n" msgstr "" -#: i386linux.c:463 m68klinux.c:467 sparclinux.c:461 +#: i386linux.c:462 m68klinux.c:466 sparclinux.c:460 #, c-format msgid "Output file requires shared library `%s.so.%s'\n" msgstr "" -#: i386linux.c:652 i386linux.c:702 m68klinux.c:659 m68klinux.c:707 -#: sparclinux.c:651 sparclinux.c:701 +#: i386linux.c:651 i386linux.c:701 m68klinux.c:658 m68klinux.c:706 +#: sparclinux.c:650 sparclinux.c:700 #, c-format msgid "Symbol %s not defined for fixups\n" msgstr "" -#: i386linux.c:726 m68klinux.c:731 sparclinux.c:725 +#: i386linux.c:725 m68klinux.c:730 sparclinux.c:724 msgid "Warning: fixup count mismatch\n" msgstr "" @@ -3012,15 +3166,15 @@ msgid "%s: unrecognized symbol `%s' flags 0x%x" msgstr "" -#: ieee.c:788 +#: ieee.c:792 msgid "%B: unimplemented ATI record %u for symbol %u" msgstr "" -#: ieee.c:812 +#: ieee.c:816 msgid "%B: unexpected ATN type %d in external part" msgstr "" -#: ieee.c:834 +#: ieee.c:838 msgid "%B: unexpected type after ATN" msgstr "" @@ -3060,99 +3214,99 @@ msgid "%B: bad section length in ihex_read_section" msgstr "" -#: ihex.c:825 +#: ihex.c:826 #, c-format msgid "%s: address 0x%s out of range for Intel Hex file" msgstr "" -#: libbfd.c:1008 +#: libbfd.c:863 +msgid "%B: unable to get decompressed section %A" +msgstr "" + +#: libbfd.c:1027 #, c-format msgid "Deprecated %s called at %s line %d in %s\n" msgstr "" -#: libbfd.c:1011 +#: libbfd.c:1030 #, c-format msgid "Deprecated %s called\n" msgstr "" -#: linker.c:1874 +#: linker.c:1911 msgid "%B: indirect symbol `%s' to `%s' is a loop" msgstr "" -#: linker.c:2740 +#: linker.c:2778 #, c-format msgid "Attempt to do relocatable link with %s input and %s output" msgstr "" -#: linker.c:3065 +#: linker.c:3105 msgid "%B: warning: ignoring duplicate section `%A'\n" msgstr "" -#: linker.c:3079 +#: linker.c:3119 msgid "%B: warning: duplicate section `%A' has different size\n" msgstr "" -#: mach-o.c:3195 -#, c-format +#: mach-o.c:3403 msgid "Mach-O header:\n" msgstr "" -#: mach-o.c:3196 +#: mach-o.c:3404 #, c-format msgid " magic : %08lx\n" msgstr "" -#: mach-o.c:3197 +#: mach-o.c:3405 #, c-format msgid " cputype : %08lx (%s)\n" msgstr "" -#: mach-o.c:3199 +#: mach-o.c:3407 #, c-format msgid " cpusubtype: %08lx\n" msgstr "" -#: mach-o.c:3200 +#: mach-o.c:3408 #, c-format msgid " filetype : %08lx (%s)\n" msgstr "" -#: mach-o.c:3203 +#: mach-o.c:3411 #, c-format -msgid " ncmds : %08lx\n" +msgid " ncmds : %08lx (%lu)\n" msgstr "" -#: mach-o.c:3204 +#: mach-o.c:3412 #, c-format msgid " sizeofcmds: %08lx\n" msgstr "" -#: mach-o.c:3205 +#: mach-o.c:3413 #, c-format msgid " flags : %08lx (" msgstr "" -#: mach-o.c:3207 -#, c-format +#: mach-o.c:3415 vms-alpha.c:7652 msgid ")\n" msgstr "" -#: mach-o.c:3208 +#: mach-o.c:3416 #, c-format msgid " reserved : %08x\n" msgstr "" -#: mach-o.c:3218 -#, c-format +#: mach-o.c:3426 msgid "Segments and Sections:\n" msgstr "" -#: mach-o.c:3219 -#, c-format +#: mach-o.c:3427 msgid " #: Segment name Section name Address\n" msgstr "" -#: merge.c:829 +#: merge.c:832 #, c-format msgid "%s: access beyond end of merged section (%ld)" msgstr "" @@ -3179,137 +3333,137 @@ "starting with `%s'\n" msgstr "" -#: mmo.c:1566 +#: mmo.c:1565 #, c-format msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" msgstr "" -#: mmo.c:1576 +#: mmo.c:1575 #, c-format msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" msgstr "" -#: mmo.c:1612 +#: mmo.c:1611 #, c-format msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" msgstr "" -#: mmo.c:1658 +#: mmo.c:1657 #, c-format msgid "" "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" msgstr "" -#: mmo.c:1697 +#: mmo.c:1696 #, c-format msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" msgstr "" -#: mmo.c:1706 +#: mmo.c:1705 #, c-format msgid "" "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" msgstr "" -#: mmo.c:1729 +#: mmo.c:1728 #, 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:1752 +#: mmo.c:1751 #, c-format msgid "%s: cannot allocate file name for file number %d, %d bytes\n" msgstr "" -#: mmo.c:1772 +#: mmo.c:1771 #, c-format msgid "" "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" msgstr "" -#: mmo.c:1785 +#: mmo.c:1784 #, c-format msgid "" "%s: invalid mmo file: file name for number %d was not specified before use\n" msgstr "" -#: mmo.c:1892 +#: mmo.c:1890 #, c-format msgid "" "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" msgstr "" -#: mmo.c:1928 +#: mmo.c:1926 #, c-format msgid "%s: invalid mmo file: lop_end not last item in file\n" msgstr "" -#: mmo.c:1941 +#: mmo.c:1939 #, 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:2651 +#: mmo.c:2649 #, c-format msgid "%s: invalid symbol table: duplicate symbol `%s'\n" msgstr "" -#: mmo.c:2894 +#: mmo.c:2889 #, c-format msgid "" "%s: Bad symbol definition: `Main' set to %s rather than the start address %" "s\n" msgstr "" -#: mmo.c:2986 +#: mmo.c:2981 #, 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:3031 +#: mmo.c:3026 #, c-format msgid "%s: internal error, symbol table changed size from %d to %d words\n" msgstr "" -#: mmo.c:3083 +#: mmo.c:3078 #, c-format msgid "%s: internal error, internal register section %s had contents\n" msgstr "" -#: mmo.c:3134 +#: mmo.c:3129 #, c-format msgid "%s: no initialized registers; section length 0\n" msgstr "" -#: mmo.c:3140 +#: mmo.c:3135 #, c-format msgid "%s: too many initialized registers; section length %ld\n" msgstr "" -#: mmo.c:3145 +#: mmo.c:3140 #, c-format msgid "" "%s: invalid start address for initialized registers of length %ld: 0x%lx%" "08lx\n" msgstr "" -#: oasys.c:881 +#: oasys.c:882 #, c-format msgid "%s: can not represent section `%s' in oasys" msgstr "" -#: osf-core.c:139 +#: osf-core.c:140 #, c-format msgid "Unhandled OSF/1 core file section type %d\n" msgstr "" -#: pe-mips.c:613 +#: pe-mips.c:607 msgid "%B: `ld -r' not supported with PE MIPS objects\n" msgstr "" @@ -3317,64 +3471,64 @@ #. 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:729 +#: pe-mips.c:719 msgid "%B: unimplemented %s\n" msgstr "" -#: pe-mips.c:755 +#: pe-mips.c:745 msgid "%B: jump too far away\n" msgstr "" -#: pe-mips.c:781 +#: pe-mips.c:771 msgid "%B: bad pair/reflo after refhi\n" msgstr "" -#: pei-x86_64.c:465 +#: pei-x86_64.c:444 #, c-format msgid "warning: .pdata section size (%ld) is not a multiple of %d\n" msgstr "" -#: pei-x86_64.c:469 peigen.c:1620 peigen.c:1799 pepigen.c:1620 pepigen.c:1799 -#: pex64igen.c:1620 pex64igen.c:1799 +#: pei-x86_64.c:448 peigen.c:1618 peigen.c:1801 pepigen.c:1618 pepigen.c:1801 +#: pex64igen.c:1618 pex64igen.c:1801 #, c-format msgid "" "\n" "The Function Table (interpreted .pdata section contents)\n" msgstr "" -#: pei-x86_64.c:471 +#: pei-x86_64.c:450 #, c-format msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" msgstr "" #. XXX code yet to be written. -#: peicode.h:752 +#: peicode.h:751 msgid "%B: Unhandled import type; %x" msgstr "" -#: peicode.h:757 +#: peicode.h:756 msgid "%B: Unrecognised import type; %x" msgstr "" -#: peicode.h:771 +#: peicode.h:770 msgid "%B: Unrecognised import name type; %x" msgstr "" -#: peicode.h:1154 +#: peicode.h:1162 msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive" msgstr "" -#: peicode.h:1166 +#: peicode.h:1174 msgid "" "%B: Recognised but unhandled machine type (0x%x) in Import Library Format " "archive" msgstr "" -#: peicode.h:1184 +#: peicode.h:1192 msgid "%B: size field is zero in Import Library Format header" msgstr "" -#: peicode.h:1215 +#: peicode.h:1223 msgid "%B: string not null terminated in ILF object file." msgstr "" @@ -3427,14 +3581,14 @@ msgid "Partition[%d] length = 0x%.8lx (%ld)\n" msgstr "" -#: som.c:5114 +#: som.c:5471 #, c-format msgid "" "\n" "Exec Auxiliary Header\n" msgstr "" -#: som.c:5417 +#: som.c:5776 msgid "som_sizeof_headers unimplemented" msgstr "" @@ -3454,239 +3608,1900 @@ msgid "Unsupported .stab relocation" msgstr "" -#: vms-gsd.c:350 +#: vms-alpha.c:1287 #, c-format -msgid "bfd_make_section (%s) failed" +msgid "Unknown EGSD subtype %d" msgstr "" -#: vms-gsd.c:365 +#: vms-alpha.c:1318 #, c-format -msgid "bfd_set_section_flags (%s, %x) failed" +msgid "Stack overflow (%d) in _bfd_vms_push" msgstr "" -#: vms-gsd.c:399 -#, c-format -msgid "Size mismatch section %s=%lx, %s=%lx" +#: vms-alpha.c:1331 +msgid "Stack underflow in _bfd_vms_pop" msgstr "" -#: vms-gsd.c:754 +#. These names have not yet been added to this switch statement. +#: vms-alpha.c:1568 #, c-format -msgid "Unknown GSD/EGSD subtype %d" +msgid "unknown ETIR command %d" msgstr "" -#: vms-hdr.c:364 -msgid "Object module NOT error-free !\n" +#: vms-alpha.c:1755 +#, c-format +msgid "bad section index in %s" msgstr "" -#: vms-hdr.c:878 +#: vms-alpha.c:1768 #, c-format -msgid "unknown source command %d" +msgid "unsupported STA cmd %s" msgstr "" -#: vms-hdr.c:951 -msgid "DST_S_C_SET_LINUM_INCR not implemented" +#. Insert field. +#. Unsigned shift. +#. Rotate. +#. Redefine symbol to current location. +#. Define a literal. +#: vms-alpha.c:1944 vms-alpha.c:1975 vms-alpha.c:2222 +#, c-format +msgid "%s: not supported" msgstr "" -#: vms-hdr.c:957 -msgid "DST_S_C_SET_LINUM_INCR_W not implemented" +#: vms-alpha.c:1950 +#, c-format +msgid "%s: not implemented" msgstr "" -#: vms-hdr.c:963 -msgid "DST_S_C_RESET_LINUM_INCR not implemented" +#: vms-alpha.c:2206 +#, c-format +msgid "invalid use of %s with contexts" msgstr "" -#: vms-hdr.c:969 -msgid "DST_S_C_BEG_STMT_MODE not implemented" +#: vms-alpha.c:2240 +#, c-format +msgid "reserved cmd %d" msgstr "" -#: vms-hdr.c:975 -msgid "DST_S_C_END_STMT_MODE not implemented" +#: vms-alpha.c:2325 +msgid "Object module NOT error-free !\n" msgstr "" -#: vms-hdr.c:1008 -msgid "DST_S_C_SET_PC not implemented" +#: vms-alpha.c:2754 +#, c-format +msgid "Symbol %s replaced by %s\n" msgstr "" -#: vms-hdr.c:1014 -msgid "DST_S_C_SET_PC_W not implemented" +#: vms-alpha.c:3757 +#, c-format +msgid "SEC_RELOC with no relocs in section %s" msgstr "" -#: vms-hdr.c:1020 -msgid "DST_S_C_SET_PC_L not implemented" +#: vms-alpha.c:3810 vms-alpha.c:4041 +#, c-format +msgid "Size error in section %s" msgstr "" -#: vms-hdr.c:1026 -msgid "DST_S_C_SET_STMTNUM not implemented" +#: vms-alpha.c:3980 +msgid "Spurious ALPHA_R_BSR reloc" msgstr "" -#: vms-hdr.c:1079 +#: vms-alpha.c:4028 #, c-format -msgid "unknown line command %d" +msgid "Unhandled relocation %s" msgstr "" -#: vms-misc.c:588 +#: vms-alpha.c:4318 #, c-format -msgid "Stack overflow (%d) in _bfd_vms_push" +msgid "unknown source command %d" msgstr "" -#: vms-misc.c:603 -msgid "Stack underflow in _bfd_vms_pop" +#: vms-alpha.c:4379 +msgid "DST__K_SET_LINUM_INCR not implemented" msgstr "" -#: vms-misc.c:844 -msgid "_bfd_vms_output_counted called with zero bytes" +#: vms-alpha.c:4385 +msgid "DST__K_SET_LINUM_INCR_W not implemented" msgstr "" -#: vms-misc.c:849 -msgid "_bfd_vms_output_counted called with too many bytes" +#: vms-alpha.c:4391 +msgid "DST__K_RESET_LINUM_INCR not implemented" msgstr "" -#: vms-misc.c:967 -#, c-format -msgid "Symbol %s replaced by %s\n" +#: vms-alpha.c:4397 +msgid "DST__K_BEG_STMT_MODE not implemented" msgstr "" -#: vms-misc.c:1026 -#, c-format -msgid "failed to enter %s" +#: vms-alpha.c:4403 +msgid "DST__K_END_STMT_MODE not implemented" msgstr "" -#: vms-tir.c:83 -msgid "No Mem !" +#: vms-alpha.c:4430 +msgid "DST__K_SET_PC not implemented" msgstr "" -#. These names have not yet been added to this switch statement. -#: vms-tir.c:346 -#, c-format -msgid "unknown ETIR command %d" +#: vms-alpha.c:4436 +msgid "DST__K_SET_PC_W not implemented" msgstr "" -#: vms-tir.c:440 -#, c-format -msgid "bad section index in %s" +#: vms-alpha.c:4442 +msgid "DST__K_SET_PC_L not implemented" msgstr "" -#: vms-tir.c:459 -#, c-format -msgid "unsupported STA cmd %s" +#: vms-alpha.c:4448 +msgid "DST__K_SET_STMTNUM not implemented" msgstr "" -#: vms-tir.c:464 vms-tir.c:1304 +#: vms-alpha.c:4491 #, c-format -msgid "reserved STA cmd %d" +msgid "unknown line command %d" msgstr "" -#. Unsigned shift. -#. Rotate. -#. Redefine symbol to current location. -#. Define a literal. -#: vms-tir.c:655 vms-tir.c:774 vms-tir.c:894 vms-tir.c:1624 +#: vms-alpha.c:4938 vms-alpha.c:4955 vms-alpha.c:4969 vms-alpha.c:4984 +#: vms-alpha.c:4996 vms-alpha.c:5007 vms-alpha.c:5019 #, c-format -msgid "%s: not supported" +msgid "Unknown reloc %s + %s" msgstr "" -#: vms-tir.c:661 vms-tir.c:1481 +#: vms-alpha.c:5074 #, c-format -msgid "%s: not implemented" +msgid "Unknown reloc %s" +msgstr "" + +#: vms-alpha.c:5087 +msgid "Invalid section index in ETIR" +msgstr "" + +#: vms-alpha.c:5134 +#, c-format +msgid "Unknown symbol in command %s" +msgstr "" + +#: vms-alpha.c:5649 +#, c-format +msgid " EMH %u (len=%u): " +msgstr "" + +#: vms-alpha.c:5658 +#, c-format +msgid "Module header\n" +msgstr "" + +#: vms-alpha.c:5659 +#, c-format +msgid " structure level: %u\n" +msgstr "" + +#: vms-alpha.c:5660 +#, c-format +msgid " max record size: %u\n" +msgstr "" + +#: vms-alpha.c:5663 +#, c-format +msgid " module name : %.*s\n" +msgstr "" + +#: vms-alpha.c:5665 +#, c-format +msgid " module version : %.*s\n" +msgstr "" + +#: vms-alpha.c:5667 +#, c-format +msgid " compile date : %.17s\n" +msgstr "" + +#: vms-alpha.c:5672 +#, c-format +msgid "Language Processor Name\n" +msgstr "" + +#: vms-alpha.c:5673 +#, c-format +msgid " language name: %.*s\n" +msgstr "" + +#: vms-alpha.c:5680 +#, c-format +msgid "Source Files Header\n" +msgstr "" + +#: vms-alpha.c:5681 +#, c-format +msgid " file: %.*s\n" +msgstr "" + +#: vms-alpha.c:5688 +#, c-format +msgid "Title Text Header\n" +msgstr "" + +#: vms-alpha.c:5689 +#, c-format +msgid " title: %.*s\n" +msgstr "" + +#: vms-alpha.c:5696 +#, c-format +msgid "Copyright Header\n" +msgstr "" + +#: vms-alpha.c:5697 +#, c-format +msgid " copyright: %.*s\n" +msgstr "" + +#: vms-alpha.c:5703 +#, c-format +msgid "unhandled emh subtype %u\n" +msgstr "" + +#: vms-alpha.c:5713 +#, c-format +msgid " EEOM (len=%u):\n" +msgstr "" + +#: vms-alpha.c:5714 +#, c-format +msgid " number of cond linkage pairs: %u\n" +msgstr "" + +#: vms-alpha.c:5716 +#, c-format +msgid " completion code: %u\n" +msgstr "" + +#: vms-alpha.c:5720 +#, c-format +msgid " transfer addr flags: 0x%02x\n" +msgstr "" + +#: vms-alpha.c:5721 +#, c-format +msgid " transfer addr psect: %u\n" +msgstr "" + +#: vms-alpha.c:5723 +#, c-format +msgid " transfer address : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5732 +msgid " WEAK" +msgstr "" + +#: vms-alpha.c:5734 +msgid " DEF" +msgstr "" + +#: vms-alpha.c:5736 +msgid " UNI" +msgstr "" + +#: vms-alpha.c:5738 vms-alpha.c:5759 +msgid " REL" +msgstr "" + +#: vms-alpha.c:5740 +msgid " COMM" +msgstr "" + +#: vms-alpha.c:5742 +msgid " VECEP" +msgstr "" + +#: vms-alpha.c:5744 +msgid " NORM" +msgstr "" + +#: vms-alpha.c:5746 +msgid " QVAL" +msgstr "" + +#: vms-alpha.c:5753 +msgid " PIC" +msgstr "" + +#: vms-alpha.c:5755 +msgid " LIB" +msgstr "" + +#: vms-alpha.c:5757 +msgid " OVR" +msgstr "" + +#: vms-alpha.c:5761 +msgid " GBL" +msgstr "" + +#: vms-alpha.c:5763 +msgid " SHR" +msgstr "" + +#: vms-alpha.c:5765 +msgid " EXE" +msgstr "" + +#: vms-alpha.c:5767 +msgid " RD" +msgstr "" + +#: vms-alpha.c:5769 +msgid " WRT" +msgstr "" + +#: vms-alpha.c:5771 +msgid " VEC" +msgstr "" + +#: vms-alpha.c:5773 +msgid " NOMOD" +msgstr "" + +#: vms-alpha.c:5775 +msgid " COM" +msgstr "" + +#: vms-alpha.c:5777 +msgid " 64B" +msgstr "" + +#: vms-alpha.c:5786 +#, c-format +msgid " EGSD (len=%u):\n" +msgstr "" + +#: vms-alpha.c:5798 +#, c-format +msgid " EGSD entry %2u (type: %u, len: %u): " +msgstr "" + +#: vms-alpha.c:5810 +#, c-format +msgid "PSC - Program section definition\n" +msgstr "" + +#: vms-alpha.c:5811 vms-alpha.c:5828 +#, c-format +msgid " alignment : 2**%u\n" +msgstr "" + +#: vms-alpha.c:5812 vms-alpha.c:5829 +#, c-format +msgid " flags : 0x%04x" +msgstr "" + +#: vms-alpha.c:5816 +#, c-format +msgid " alloc (len): %u (0x%08x)\n" +msgstr "" + +#: vms-alpha.c:5817 vms-alpha.c:5874 vms-alpha.c:5923 +#, c-format +msgid " name : %.*s\n" +msgstr "" + +#: vms-alpha.c:5827 +#, c-format +msgid "SPSC - Shared Image Program section def\n" +msgstr "" + +#: vms-alpha.c:5833 +#, c-format +msgid " alloc (len) : %u (0x%08x)\n" +msgstr "" + +#: vms-alpha.c:5834 +#, c-format +msgid " image offset : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5836 +#, c-format +msgid " symvec offset : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5838 +#, c-format +msgid " name : %.*s\n" +msgstr "" + +#: vms-alpha.c:5851 +#, c-format +msgid "SYM - Global symbol definition\n" +msgstr "" + +#: vms-alpha.c:5852 vms-alpha.c:5912 vms-alpha.c:5933 vms-alpha.c:5952 +#, c-format +msgid " flags: 0x%04x" +msgstr "" + +#: vms-alpha.c:5855 +#, c-format +msgid " psect offset: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5859 +#, c-format +msgid " code address: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5861 +#, c-format +msgid " psect index for entry point : %u\n" +msgstr "" + +#: vms-alpha.c:5864 vms-alpha.c:5940 vms-alpha.c:5959 +#, c-format +msgid " psect index : %u\n" +msgstr "" + +#: vms-alpha.c:5866 vms-alpha.c:5942 vms-alpha.c:5961 +#, c-format +msgid " name : %.*s\n" +msgstr "" + +#: vms-alpha.c:5873 +#, c-format +msgid "SYM - Global symbol reference\n" +msgstr "" + +#: vms-alpha.c:5885 +#, c-format +msgid "IDC - Ident Consistency check\n" +msgstr "" + +#: vms-alpha.c:5886 +#, c-format +msgid " flags : 0x%08x" +msgstr "" + +#: vms-alpha.c:5890 +#, c-format +msgid " id match : %x\n" +msgstr "" + +#: vms-alpha.c:5892 +#, c-format +msgid " error severity: %x\n" +msgstr "" + +#: vms-alpha.c:5895 +#, c-format +msgid " entity name : %.*s\n" +msgstr "" + +#: vms-alpha.c:5897 +#, c-format +msgid " object name : %.*s\n" +msgstr "" + +#: vms-alpha.c:5900 +#, c-format +msgid " binary ident : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5903 +#, c-format +msgid " ascii ident : %.*s\n" +msgstr "" + +#: vms-alpha.c:5911 +#, c-format +msgid "SYMG - Universal symbol definition\n" +msgstr "" + +#: vms-alpha.c:5915 +#, c-format +msgid " symbol vector offset: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5917 +#, c-format +msgid " entry point: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5919 +#, c-format +msgid " proc descr : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5921 +#, c-format +msgid " psect index: %u\n" +msgstr "" + +#: vms-alpha.c:5932 +#, c-format +msgid "SYMV - Vectored symbol definition\n" +msgstr "" + +#: vms-alpha.c:5936 +#, c-format +msgid " vector : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5938 vms-alpha.c:5957 +#, c-format +msgid " psect offset: %u\n" +msgstr "" + +#: vms-alpha.c:5951 +#, c-format +msgid "SYMM - Global symbol definition with version\n" +msgstr "" + +#: vms-alpha.c:5955 +#, c-format +msgid " version mask: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5966 +#, c-format +msgid "unhandled egsd entry type %u\n" +msgstr "" + +#: vms-alpha.c:6000 +#, c-format +msgid " linkage index: %u, replacement insn: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6003 +#, c-format +msgid " psect idx 1: %u, offset 1: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6007 +#, c-format +msgid " psect idx 2: %u, offset 2: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6012 +#, c-format +msgid " psect idx 3: %u, offset 3: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6017 +#, c-format +msgid " global name: %.*s\n" +msgstr "" + +#: vms-alpha.c:6027 +#, c-format +msgid " %s (len=%u+%u):\n" +msgstr "" + +#: vms-alpha.c:6042 +#, c-format +msgid " (type: %3u, size: 4+%3u): " +msgstr "" + +#: vms-alpha.c:6046 +#, c-format +msgid "STA_GBL (stack global) %.*s\n" +msgstr "" + +#: vms-alpha.c:6050 +#, c-format +msgid "STA_LW (stack longword) 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6054 +#, c-format +msgid "STA_QW (stack quadword) 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6059 +#, c-format +msgid "STA_PQ (stack psect base + offset)\n" +msgstr "" + +#: vms-alpha.c:6060 +#, c-format +msgid " psect: %u, offset: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6066 +#, c-format +msgid "STA_LI (stack literal)\n" +msgstr "" + +#: vms-alpha.c:6069 +#, c-format +msgid "STA_MOD (stack module)\n" +msgstr "" + +#: vms-alpha.c:6072 +#, c-format +msgid "STA_CKARG (compare procedure argument)\n" +msgstr "" + +#: vms-alpha.c:6076 +#, c-format +msgid "STO_B (store byte)\n" +msgstr "" + +#: vms-alpha.c:6079 +#, c-format +msgid "STO_W (store word)\n" +msgstr "" + +#: vms-alpha.c:6082 +#, c-format +msgid "STO_LW (store longword)\n" +msgstr "" + +#: vms-alpha.c:6085 +#, c-format +msgid "STO_QW (store quadword)\n" +msgstr "" + +#: vms-alpha.c:6091 +#, c-format +msgid "STO_IMMR (store immediate repeat) %u bytes\n" +msgstr "" + +#: vms-alpha.c:6098 +#, c-format +msgid "STO_GBL (store global) %.*s\n" +msgstr "" + +#: vms-alpha.c:6102 +#, c-format +msgid "STO_CA (store code address) %.*s\n" +msgstr "" + +#: vms-alpha.c:6106 +#, c-format +msgid "STO_RB (store relative branch)\n" +msgstr "" + +#: vms-alpha.c:6109 +#, c-format +msgid "STO_AB (store absolute branch)\n" +msgstr "" + +#: vms-alpha.c:6112 +#, c-format +msgid "STO_OFF (store offset to psect)\n" +msgstr "" + +#: vms-alpha.c:6118 +#, c-format +msgid "STO_IMM (store immediate) %u bytes\n" +msgstr "" + +#: vms-alpha.c:6125 +#, c-format +msgid "STO_GBL_LW (store global longword) %.*s\n" +msgstr "" + +#: vms-alpha.c:6129 +#, c-format +msgid "STO_OFF (store LP with procedure signature)\n" +msgstr "" + +#: vms-alpha.c:6132 +#, c-format +msgid "STO_BR_GBL (store branch global) *todo*\n" +msgstr "" + +#: vms-alpha.c:6135 +#, c-format +msgid "STO_BR_PS (store branch psect + offset) *todo*\n" +msgstr "" + +#: vms-alpha.c:6139 +#, c-format +msgid "OPR_NOP (no-operation)\n" +msgstr "" + +#: vms-alpha.c:6142 +#, c-format +msgid "OPR_ADD (add)\n" +msgstr "" + +#: vms-alpha.c:6145 +#, c-format +msgid "OPR_SUB (substract)\n" +msgstr "" + +#: vms-alpha.c:6148 +#, c-format +msgid "OPR_MUL (multiply)\n" +msgstr "" + +#: vms-alpha.c:6151 +#, c-format +msgid "OPR_DIV (divide)\n" +msgstr "" + +#: vms-alpha.c:6154 +#, c-format +msgid "OPR_AND (logical and)\n" +msgstr "" + +#: vms-alpha.c:6157 +#, c-format +msgid "OPR_IOR (logical inclusive or)\n" +msgstr "" + +#: vms-alpha.c:6160 +#, c-format +msgid "OPR_EOR (logical exclusive or)\n" +msgstr "" + +#: vms-alpha.c:6163 +#, c-format +msgid "OPR_NEG (negate)\n" +msgstr "" + +#: vms-alpha.c:6166 +#, c-format +msgid "OPR_COM (complement)\n" +msgstr "" + +#: vms-alpha.c:6169 +#, c-format +msgid "OPR_INSV (insert field)\n" +msgstr "" + +#: vms-alpha.c:6172 +#, c-format +msgid "OPR_ASH (arithmetic shift)\n" +msgstr "" + +#: vms-alpha.c:6175 +#, c-format +msgid "OPR_USH (unsigned shift)\n" +msgstr "" + +#: vms-alpha.c:6178 +#, c-format +msgid "OPR_ROT (rotate)\n" +msgstr "" + +#: vms-alpha.c:6181 +#, c-format +msgid "OPR_SEL (select)\n" +msgstr "" + +#: vms-alpha.c:6184 +#, c-format +msgid "OPR_REDEF (redefine symbol to curr location)\n" +msgstr "" + +#: vms-alpha.c:6187 +#, c-format +msgid "OPR_REDEF (define a literal)\n" +msgstr "" + +#: vms-alpha.c:6191 +#, c-format +msgid "STC_LP (store cond linkage pair)\n" +msgstr "" + +#: vms-alpha.c:6195 +#, c-format +msgid "STC_LP_PSB (store cond linkage pair + signature)\n" +msgstr "" + +#: vms-alpha.c:6196 +#, c-format +msgid " linkage index: %u, procedure: %.*s\n" +msgstr "" + +#: vms-alpha.c:6199 +#, c-format +msgid " signature: %.*s\n" +msgstr "" + +#: vms-alpha.c:6202 +#, c-format +msgid "STC_GBL (store cond global)\n" +msgstr "" + +#: vms-alpha.c:6203 +#, c-format +msgid " linkage index: %u, global: %.*s\n" +msgstr "" + +#: vms-alpha.c:6207 +#, c-format +msgid "STC_GCA (store cond code address)\n" +msgstr "" + +#: vms-alpha.c:6208 +#, c-format +msgid " linkage index: %u, procedure name: %.*s\n" +msgstr "" + +#: vms-alpha.c:6212 +#, c-format +msgid "STC_PS (store cond psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6214 +#, c-format +msgid " linkage index: %u, psect: %u, offset: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6221 +#, c-format +msgid "STC_NOP_GBL (store cond NOP at global addr)\n" +msgstr "" + +#: vms-alpha.c:6225 +#, c-format +msgid "STC_NOP_PS (store cond NOP at psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6229 +#, c-format +msgid "STC_BSR_GBL (store cond BSR at global addr)\n" +msgstr "" + +#: vms-alpha.c:6233 +#, c-format +msgid "STC_BSR_PS (store cond BSR at psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6237 +#, c-format +msgid "STC_LDA_GBL (store cond LDA at global addr)\n" +msgstr "" + +#: vms-alpha.c:6241 +#, c-format +msgid "STC_LDA_PS (store cond LDA at psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6245 +#, c-format +msgid "STC_BOH_GBL (store cond BOH at global addr)\n" +msgstr "" + +#: vms-alpha.c:6249 +#, c-format +msgid "STC_BOH_PS (store cond BOH at psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6254 +#, c-format +msgid "STC_NBH_GBL (store cond or hint at global addr)\n" +msgstr "" + +#: vms-alpha.c:6258 +#, c-format +msgid "STC_NBH_PS (store cond or hint at psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6262 +#, c-format +msgid "CTL_SETRB (set relocation base)\n" +msgstr "" + +#: vms-alpha.c:6268 +#, c-format +msgid "CTL_AUGRB (augment relocation base) %u\n" +msgstr "" + +#: vms-alpha.c:6272 +#, c-format +msgid "CTL_DFLOC (define location)\n" +msgstr "" + +#: vms-alpha.c:6275 +#, c-format +msgid "CTL_STLOC (set location)\n" +msgstr "" + +#: vms-alpha.c:6278 +#, c-format +msgid "CTL_STKDL (stack defined location)\n" +msgstr "" + +#: vms-alpha.c:6281 vms-alpha.c:6695 +#, c-format +msgid "*unhandled*\n" +msgstr "" + +#: vms-alpha.c:6311 vms-alpha.c:6350 +#, c-format +msgid "cannot read GST record length\n" +msgstr "" + +#. Ill-formed. +#: vms-alpha.c:6332 +#, c-format +msgid "cannot find EMH in first GST record\n" +msgstr "" + +#: vms-alpha.c:6358 +#, c-format +msgid "cannot read GST record header\n" +msgstr "" + +#: vms-alpha.c:6371 +#, c-format +msgid " corrupted GST\n" +msgstr "" + +#: vms-alpha.c:6379 +#, c-format +msgid "cannot read GST record\n" +msgstr "" + +#: vms-alpha.c:6408 +#, c-format +msgid " unhandled EOBJ record type %u\n" +msgstr "" + +#: vms-alpha.c:6431 +#, c-format +msgid " bitcount: %u, base addr: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6444 +#, c-format +msgid " bitmap: 0x%08x (count: %u):\n" +msgstr "" + +#: vms-alpha.c:6451 +#, c-format +msgid " %08x" +msgstr "" + +#: vms-alpha.c:6476 +#, c-format +msgid " image %u (%u entries)\n" +msgstr "" + +#: vms-alpha.c:6481 +#, c-format +msgid " offset: 0x%08x, val: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6502 +#, c-format +msgid " image %u (%u entries), offsets:\n" +msgstr "" + +#: vms-alpha.c:6509 +#, c-format +msgid " 0x%08x" +msgstr "" + +#. 64 bits. +#: vms-alpha.c:6631 +#, c-format +msgid "64 bits *unhandled*\n" +msgstr "" + +#: vms-alpha.c:6635 +#, c-format +msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6646 +#, c-format +msgid "non-contiguous array of %s\n" +msgstr "" + +#: vms-alpha.c:6650 +#, c-format +msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n" +msgstr "" + +#: vms-alpha.c:6654 +#, c-format +msgid "arsize: %u, a0: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6658 +#, c-format +msgid "Strides:\n" +msgstr "" + +#: vms-alpha.c:6663 +#, c-format +msgid "[%u]: %u\n" +msgstr "" + +#: vms-alpha.c:6668 +#, c-format +msgid "Bounds:\n" +msgstr "" + +#: vms-alpha.c:6673 +#, c-format +msgid "[%u]: Lower: %u, upper: %u\n" +msgstr "" + +#: vms-alpha.c:6685 +#, c-format +msgid "unaligned bit-string of %s\n" +msgstr "" + +#: vms-alpha.c:6689 +#, c-format +msgid "base: %u, pos: %u\n" +msgstr "" + +#: vms-alpha.c:6709 +#, c-format +msgid "vflags: 0x%02x, value: 0x%08x " +msgstr "" + +#: vms-alpha.c:6715 +#, c-format +msgid "(no value)\n" +msgstr "" + +#: vms-alpha.c:6718 +#, c-format +msgid "(not active)\n" +msgstr "" + +#: vms-alpha.c:6721 +#, c-format +msgid "(not allocated)\n" +msgstr "" + +#: vms-alpha.c:6724 +#, c-format +msgid "(descriptor)\n" +msgstr "" + +#: vms-alpha.c:6728 +#, c-format +msgid "(trailing value)\n" +msgstr "" + +#: vms-alpha.c:6731 +#, c-format +msgid "(value spec follows)\n" +msgstr "" + +#: vms-alpha.c:6734 +#, c-format +msgid "(at bit offset %u)\n" +msgstr "" + +#: vms-alpha.c:6737 +#, c-format +msgid "(reg: %u, disp: %u, indir: %u, kind: " +msgstr "" + +#: vms-alpha.c:6744 +msgid "literal" +msgstr "" + +#: vms-alpha.c:6747 +msgid "address" +msgstr "" + +#: vms-alpha.c:6750 +msgid "desc" +msgstr "" + +#: vms-alpha.c:6753 +msgid "reg" +msgstr "" + +#: vms-alpha.c:6828 +#, c-format +msgid "Debug symbol table:\n" +msgstr "" + +#: vms-alpha.c:6839 +#, c-format +msgid "cannot read DST header\n" +msgstr "" + +#: vms-alpha.c:6844 +#, c-format +msgid " type: %3u, len: %3u (at 0x%08x): " +msgstr "" + +#: vms-alpha.c:6858 +#, c-format +msgid "cannot read DST symbol\n" +msgstr "" + +#: vms-alpha.c:6901 +#, c-format +msgid "standard data: %s\n" +msgstr "" + +#: vms-alpha.c:6904 vms-alpha.c:6988 +#, c-format +msgid " name: %.*s\n" +msgstr "" + +#: vms-alpha.c:6911 +#, c-format +msgid "modbeg\n" +msgstr "" + +#: vms-alpha.c:6912 +#, c-format +msgid " flags: %d, language: %u, major: %u, minor: %u\n" +msgstr "" + +#: vms-alpha.c:6918 vms-alpha.c:7184 +#, c-format +msgid " module name: %.*s\n" +msgstr "" + +#: vms-alpha.c:6921 +#, c-format +msgid " compiler : %.*s\n" +msgstr "" + +#: vms-alpha.c:6926 +#, c-format +msgid "modend\n" +msgstr "" + +#: vms-alpha.c:6933 +msgid "rtnbeg\n" +msgstr "" + +#: vms-alpha.c:6934 +#, c-format +msgid " flags: %u, address: 0x%08x, pd-address: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6939 +#, c-format +msgid " routine name: %.*s\n" +msgstr "" + +#: vms-alpha.c:6947 +#, c-format +msgid "rtnend: size 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6955 +#, c-format +msgid "prolog: bkpt address 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6963 +#, c-format +msgid "epilog: flags: %u, count: %u\n" +msgstr "" + +#: vms-alpha.c:6972 +#, c-format +msgid "blkbeg: address: 0x%08x, name: %.*s\n" +msgstr "" + +#: vms-alpha.c:6981 +#, c-format +msgid "blkend: size: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6987 +#, c-format +msgid "typspec (len: %u)\n" +msgstr "" + +#: vms-alpha.c:6994 +#, c-format +msgid "septyp, name: %.*s\n" +msgstr "" + +#: vms-alpha.c:7003 +#, c-format +msgid "recbeg: name: %.*s\n" +msgstr "" + +#: vms-alpha.c:7010 +#, c-format +msgid "recend\n" +msgstr "" + +#: vms-alpha.c:7013 +#, c-format +msgid "enumbeg, len: %u, name: %.*s\n" +msgstr "" + +#: vms-alpha.c:7017 +#, c-format +msgid "enumelt, name: %.*s\n" +msgstr "" + +#: vms-alpha.c:7021 +#, c-format +msgid "enumend\n" +msgstr "" + +#: vms-alpha.c:7038 +#, c-format +msgid "discontiguous range (nbr: %u)\n" +msgstr "" + +#: vms-alpha.c:7040 +#, c-format +msgid " address: 0x%08x, size: %u\n" +msgstr "" + +#: vms-alpha.c:7050 +#, c-format +msgid "line num (len: %u)\n" +msgstr "" + +#: vms-alpha.c:7067 +#, c-format +msgid "delta_pc_w %u\n" +msgstr "" + +#: vms-alpha.c:7074 +#, c-format +msgid "incr_linum(b): +%u\n" +msgstr "" + +#: vms-alpha.c:7080 +#, c-format +msgid "incr_linum_w: +%u\n" +msgstr "" + +#: vms-alpha.c:7086 +#, c-format +msgid "incr_linum_l: +%u\n" +msgstr "" + +#: vms-alpha.c:7092 +#, c-format +msgid "set_line_num(w) %u\n" +msgstr "" + +#: vms-alpha.c:7097 +#, c-format +msgid "set_line_num_b %u\n" +msgstr "" + +#: vms-alpha.c:7102 +#, c-format +msgid "set_line_num_l %u\n" +msgstr "" + +#: vms-alpha.c:7107 +#, c-format +msgid "set_abs_pc: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:7111 +#, c-format +msgid "delta_pc_l: +0x%08x\n" +msgstr "" + +#: vms-alpha.c:7116 +#, c-format +msgid "term(b): 0x%02x" +msgstr "" + +#: vms-alpha.c:7118 +#, c-format +msgid " pc: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:7123 +#, c-format +msgid "term_w: 0x%04x" +msgstr "" + +#: vms-alpha.c:7125 +#, c-format +msgid " pc: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:7131 +#, c-format +msgid "delta pc +%-4d" +msgstr "" + +#: vms-alpha.c:7134 +#, c-format +msgid " pc: 0x%08x line: %5u\n" +msgstr "" + +#: vms-alpha.c:7139 +#, c-format +msgid " *unhandled* cmd %u\n" +msgstr "" + +#: vms-alpha.c:7154 +#, c-format +msgid "source (len: %u)\n" +msgstr "" + +#: vms-alpha.c:7168 +#, c-format +msgid " declfile: len: %u, flags: %u, fileid: %u\n" +msgstr "" + +#: vms-alpha.c:7172 +#, c-format +msgid " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" +msgstr "" + +#: vms-alpha.c:7181 +#, c-format +msgid " filename : %.*s\n" +msgstr "" + +#: vms-alpha.c:7190 +#, c-format +msgid " setfile %u\n" +msgstr "" + +#: vms-alpha.c:7195 vms-alpha.c:7200 +#, c-format +msgid " setrec %u\n" +msgstr "" + +#: vms-alpha.c:7205 vms-alpha.c:7210 +#, c-format +msgid " setlnum %u\n" +msgstr "" + +#: vms-alpha.c:7215 vms-alpha.c:7220 +#, c-format +msgid " deflines %u\n" +msgstr "" + +#: vms-alpha.c:7224 +#, c-format +msgid " formfeed\n" +msgstr "" + +#: vms-alpha.c:7228 +#, c-format +msgid " *unhandled* cmd %u\n" +msgstr "" + +#: vms-alpha.c:7240 +#, c-format +msgid "*unhandled* dst type %u\n" +msgstr "" + +#: vms-alpha.c:7272 +#, c-format +msgid "cannot read EIHD\n" +msgstr "" + +#: vms-alpha.c:7275 +#, c-format +msgid "EIHD: (size: %u, nbr blocks: %u)\n" +msgstr "" + +#: vms-alpha.c:7278 +#, c-format +msgid " majorid: %u, minorid: %u\n" +msgstr "" + +#: vms-alpha.c:7286 +msgid "executable" +msgstr "" + +#: vms-alpha.c:7289 +msgid "linkable image" +msgstr "" + +#: vms-alpha.c:7295 +#, c-format +msgid " image type: %u (%s)" +msgstr "" + +#: vms-alpha.c:7301 +msgid "native" +msgstr "" + +#: vms-alpha.c:7304 +msgid "CLI" +msgstr "" + +#: vms-alpha.c:7310 +#, c-format +msgid ", subtype: %u (%s)\n" +msgstr "" + +#: vms-alpha.c:7316 +#, c-format +msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n" +msgstr "" + +#: vms-alpha.c:7320 +#, c-format +msgid " fixup info rva: " +msgstr "" + +#: vms-alpha.c:7322 +#, c-format +msgid ", symbol vector rva: " +msgstr "" + +#: vms-alpha.c:7325 +#, c-format +msgid "" +"\n" +" version array off: %u\n" +msgstr "" + +#: vms-alpha.c:7329 +#, c-format +msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n" +msgstr "" + +#: vms-alpha.c:7335 +#, c-format +msgid " linker flags: %08x:" +msgstr "" + +#: vms-alpha.c:7365 +#, c-format +msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n" +msgstr "" + +#: vms-alpha.c:7371 +#, c-format +msgid " BPAGE: %u" +msgstr "" + +#: vms-alpha.c:7377 +#, c-format +msgid ", ext fixup offset: %u, no_opt psect off: %u" +msgstr "" + +#: vms-alpha.c:7380 +#, c-format +msgid ", alias: %u\n" msgstr "" -#: vms-tir.c:666 vms-tir.c:1485 +#: vms-alpha.c:7388 #, c-format -msgid "reserved STO cmd %d" +msgid "system version array information:\n" msgstr "" -#: vms-tir.c:789 vms-tir.c:1629 +#: vms-alpha.c:7392 #, c-format -msgid "reserved OPR cmd %d" +msgid "cannot read EIHVN header\n" msgstr "" -#: vms-tir.c:852 vms-tir.c:1693 +#: vms-alpha.c:7402 #, c-format -msgid "reserved CTL cmd %d" +msgid "cannot read EIHVN version\n" msgstr "" -#: vms-tir.c:966 +#: vms-alpha.c:7405 #, c-format -msgid "reserved STC cmd %d" +msgid " %02u " +msgstr "" + +#: vms-alpha.c:7409 +msgid "BASE_IMAGE " +msgstr "" + +#: vms-alpha.c:7412 +msgid "MEMORY_MANAGEMENT" +msgstr "" + +#: vms-alpha.c:7415 +msgid "IO " +msgstr "" + +#: vms-alpha.c:7418 +msgid "FILES_VOLUMES " +msgstr "" + +#: vms-alpha.c:7421 +msgid "PROCESS_SCHED " +msgstr "" + +#: vms-alpha.c:7424 +msgid "SYSGEN " +msgstr "" + +#: vms-alpha.c:7427 +msgid "CLUSTERS_LOCKMGR " +msgstr "" + +#: vms-alpha.c:7430 +msgid "LOGICAL_NAMES " +msgstr "" + +#: vms-alpha.c:7433 +msgid "SECURITY " +msgstr "" + +#: vms-alpha.c:7436 +msgid "IMAGE_ACTIVATOR " +msgstr "" + +#: vms-alpha.c:7439 +msgid "NETWORKS " +msgstr "" + +#: vms-alpha.c:7442 +msgid "COUNTERS " +msgstr "" + +#: vms-alpha.c:7445 +msgid "STABLE " +msgstr "" + +#: vms-alpha.c:7448 +msgid "MISC " +msgstr "" + +#: vms-alpha.c:7451 +msgid "CPU " msgstr "" -#. stack byte from image -#. arg: none. -#: vms-tir.c:1212 -msgid "stack-from-image not implemented" +#: vms-alpha.c:7454 +msgid "VOLATILE " msgstr "" -#: vms-tir.c:1230 -msgid "stack-entry-mask not fully implemented" +#: vms-alpha.c:7457 +msgid "SHELL " 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:1244 -msgid "PASSMECH not fully implemented" +#: vms-alpha.c:7460 +msgid "POSIX " msgstr "" -#: vms-tir.c:1263 -msgid "stack-local-symbol not fully implemented" +#: vms-alpha.c:7463 +msgid "MULTI_PROCESSING " msgstr "" -#: vms-tir.c:1276 -msgid "stack-literal not fully implemented" +#: vms-alpha.c:7466 +msgid "GALAXY " msgstr "" -#: vms-tir.c:1297 -msgid "stack-local-symbol-entry-point-mask not fully implemented" +#: vms-alpha.c:7469 +msgid "*unknown* " msgstr "" -#: vms-tir.c:1571 vms-tir.c:1583 vms-tir.c:1595 vms-tir.c:1607 vms-tir.c:1672 -#: vms-tir.c:1680 vms-tir.c:1688 +#: vms-alpha.c:7472 #, c-format -msgid "%s: not fully implemented" +msgid ": %u.%u\n" msgstr "" -#: vms-tir.c:1746 +#: vms-alpha.c:7485 vms-alpha.c:7744 #, c-format -msgid "obj code %d not found" +msgid "cannot read EIHA\n" msgstr "" -#: vms-tir.c:2019 +#: vms-alpha.c:7488 #, c-format -msgid "Reloc size error in section %s" +msgid "Image activation: (size=%u)\n" msgstr "" -#: vms-tir.c:2112 vms-tir.c:2129 vms-tir.c:2147 vms-tir.c:2159 vms-tir.c:2170 -#: vms-tir.c:2182 +#: vms-alpha.c:7490 #, c-format -msgid "Unknown reloc %s + %s" +msgid " First address : 0x%08x 0x%08x\n" msgstr "" -#: vms-tir.c:2249 +#: vms-alpha.c:7493 #, c-format -msgid "Unknown symbol %s in command %s" +msgid " Second address: 0x%08x 0x%08x\n" msgstr "" -#: vms-tir.c:2504 +#: vms-alpha.c:7496 #, c-format -msgid "SEC_RELOC with no relocs in section %s" +msgid " Third address : 0x%08x 0x%08x\n" msgstr "" -#: vms-tir.c:2556 vms-tir.c:2783 +#: vms-alpha.c:7499 #, c-format -msgid "Size error in section %s" +msgid " Fourth address: 0x%08x 0x%08x\n" msgstr "" -#: vms-tir.c:2725 -msgid "Spurious ALPHA_R_BSR reloc" +#: vms-alpha.c:7502 +#, c-format +msgid " Shared image : 0x%08x 0x%08x\n" msgstr "" -#: vms-tir.c:2770 +#: vms-alpha.c:7513 #, c-format -msgid "Unhandled relocation %s" +msgid "cannot read EIHI\n" +msgstr "" + +#: vms-alpha.c:7516 +#, c-format +msgid "Image identification: (major: %u, minor: %u)\n" +msgstr "" + +#: vms-alpha.c:7519 +#, c-format +msgid " image name : %.*s\n" +msgstr "" + +#: vms-alpha.c:7521 +#, c-format +msgid " link time : %s\n" +msgstr "" + +#: vms-alpha.c:7523 +#, c-format +msgid " image ident : %.*s\n" +msgstr "" + +#: vms-alpha.c:7525 +#, c-format +msgid " linker ident : %.*s\n" +msgstr "" + +#: vms-alpha.c:7527 +#, c-format +msgid " image build ident: %.*s\n" +msgstr "" + +#: vms-alpha.c:7537 +#, c-format +msgid "cannot read EIHS\n" +msgstr "" + +#: vms-alpha.c:7540 +#, c-format +msgid "Image symbol & debug table: (major: %u, minor: %u)\n" +msgstr "" + +#: vms-alpha.c:7545 +#, c-format +msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n" +msgstr "" + +#: vms-alpha.c:7549 +#, c-format +msgid " global symbol table: vbn: %u, records: %u\n" +msgstr "" + +#: vms-alpha.c:7553 +#, c-format +msgid " debug module table : vbn: %u, size: %u\n" +msgstr "" + +#: vms-alpha.c:7566 +#, c-format +msgid "cannot read EISD\n" +msgstr "" + +#: vms-alpha.c:7576 +#, c-format +msgid "" +"Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n" +msgstr "" + +#: vms-alpha.c:7583 +#, c-format +msgid " section: base: 0x%08x%08x size: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:7588 +#, c-format +msgid " flags: 0x%04x" +msgstr "" + +#: vms-alpha.c:7625 +#, c-format +msgid " vbn: %u, pfc: %u, matchctl: %u type: %u (" +msgstr "" + +#: vms-alpha.c:7631 +msgid "NORMAL" +msgstr "" + +#: vms-alpha.c:7634 +msgid "SHRFXD" +msgstr "" + +#: vms-alpha.c:7637 +msgid "PRVFXD" +msgstr "" + +#: vms-alpha.c:7640 +msgid "SHRPIC" +msgstr "" + +#: vms-alpha.c:7643 +msgid "PRVPIC" +msgstr "" + +#: vms-alpha.c:7646 +msgid "USRSTACK" +msgstr "" + +#: vms-alpha.c:7654 +#, c-format +msgid " ident: 0x%08x, name: %.*s\n" +msgstr "" + +#: vms-alpha.c:7664 +#, c-format +msgid "cannot read DMT\n" +msgstr "" + +#: vms-alpha.c:7668 +#, c-format +msgid "Debug module table:\n" +msgstr "" + +#: vms-alpha.c:7677 +#, c-format +msgid "cannot read DMT header\n" +msgstr "" + +#: vms-alpha.c:7682 +#, c-format +msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n" +msgstr "" + +#: vms-alpha.c:7692 +#, c-format +msgid "cannot read DMT psect\n" +msgstr "" + +#: vms-alpha.c:7695 +#, c-format +msgid " psect start: 0x%08x, length: %u\n" +msgstr "" + +#: vms-alpha.c:7708 +#, c-format +msgid "cannot read DST\n" +msgstr "" + +#: vms-alpha.c:7718 +#, c-format +msgid "cannot read GST\n" +msgstr "" + +#: vms-alpha.c:7722 +#, c-format +msgid "Global symbol table:\n" +msgstr "" + +#: vms-alpha.c:7750 +#, c-format +msgid "Image activator fixup: (major: %u, minor: %u)\n" +msgstr "" + +#: vms-alpha.c:7753 +#, c-format +msgid " iaflink : 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:7756 +#, c-format +msgid " fixuplnk: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:7759 +#, c-format +msgid " size : %u\n" +msgstr "" + +#: vms-alpha.c:7761 +#, c-format +msgid " flags: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:7765 +#, c-format +msgid " qrelfixoff: %5u, lrelfixoff: %5u\n" +msgstr "" + +#: vms-alpha.c:7769 +#, c-format +msgid " qdotadroff: %5u, ldotadroff: %5u\n" +msgstr "" + +#: vms-alpha.c:7773 +#, c-format +msgid " codeadroff: %5u, lpfixoff : %5u\n" +msgstr "" + +#: vms-alpha.c:7776 +#, c-format +msgid " chgprtoff : %5u\n" +msgstr "" + +#: vms-alpha.c:7779 +#, c-format +msgid " shlstoff : %5u, shrimgcnt : %5u\n" +msgstr "" + +#: vms-alpha.c:7781 +#, c-format +msgid " shlextra : %5u, permctx : %5u\n" +msgstr "" + +#: vms-alpha.c:7784 +#, c-format +msgid " base_va : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:7786 +#, c-format +msgid " lppsbfixoff: %5u\n" +msgstr "" + +#: vms-alpha.c:7794 +#, c-format +msgid " Shareable images:\n" +msgstr "" + +#: vms-alpha.c:7798 +#, c-format +msgid " %u: size: %u, flags: 0x%02x, name: %.*s\n" +msgstr "" + +#: vms-alpha.c:7805 +#, c-format +msgid " quad-word relocation fixups:\n" +msgstr "" + +#: vms-alpha.c:7810 +#, c-format +msgid " long-word relocation fixups:\n" +msgstr "" + +#: vms-alpha.c:7815 +#, c-format +msgid " quad-word .address reference fixups:\n" +msgstr "" + +#: vms-alpha.c:7820 +#, c-format +msgid " long-word .address reference fixups:\n" +msgstr "" + +#: vms-alpha.c:7825 +#, c-format +msgid " Code Address Reference Fixups:\n" +msgstr "" + +#: vms-alpha.c:7830 +#, c-format +msgid " Linkage Pairs Referece Fixups:\n" +msgstr "" + +#: vms-alpha.c:7839 +#, c-format +msgid " Change Protection (%u entries):\n" +msgstr "" + +#: vms-alpha.c:7844 +#, c-format +msgid " base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x " +msgstr "" + +#. FIXME: we do not yet support relocatable link. It is not obvious +#. how to do it for debug infos. +#: vms-alpha.c:8676 +msgid "%P: relocatable link is not supported\n" +msgstr "" + +#: vms-alpha.c:8746 +msgid "%P: multiple entry points: in modules %B and %B\n" +msgstr "" + +#: vms-lib.c:1421 +#, c-format +msgid "could not open shared image '%s' from '%s'" +msgstr "" + +#: vms-misc.c:360 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "" + +#: vms-misc.c:365 +msgid "_bfd_vms_output_counted called with too many bytes" msgstr "" #: xcofflink.c:836 @@ -3731,274 +5546,274 @@ msgid "%B: reloc %s:%d not in csect" msgstr "" -#: xcofflink.c:3177 +#: xcofflink.c:3186 #, c-format msgid "%s: no such symbol" msgstr "" -#: xcofflink.c:3282 +#: xcofflink.c:3291 #, c-format msgid "warning: attempt to export undefined symbol `%s'" msgstr "" -#: xcofflink.c:3664 +#: xcofflink.c:3673 msgid "error: undefined symbol __rtinit" msgstr "" -#: xcofflink.c:4041 +#: xcofflink.c:4052 msgid "%B: loader reloc in unrecognized section `%s'" msgstr "" -#: xcofflink.c:4052 +#: xcofflink.c:4063 msgid "%B: `%s' in loader reloc but not loader sym" msgstr "" -#: xcofflink.c:4068 +#: xcofflink.c:4079 msgid "%B: loader reloc in read-only section %A" msgstr "" -#: xcofflink.c:5086 +#: xcofflink.c:5097 #, c-format msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" msgstr "" -#: elf32-ia64.c:1050 elf64-ia64.c:1050 +#: elf32-ia64.c:1110 elf64-ia64.c:1110 msgid "" "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect " "branch." msgstr "" -#: elf32-ia64.c:2739 elf64-ia64.c:2739 +#: elf32-ia64.c:2809 elf64-ia64.c:2809 msgid "@pltoff reloc against local symbol" msgstr "" -#: elf32-ia64.c:4314 elf64-ia64.c:4314 +#: elf32-ia64.c:4430 elf64-ia64.c:4430 #, c-format msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" msgstr "" -#: elf32-ia64.c:4325 elf64-ia64.c:4325 +#: elf32-ia64.c:4441 elf64-ia64.c:4441 #, c-format msgid "%s: __gp does not cover short data segment" msgstr "" -#: elf32-ia64.c:4595 elf64-ia64.c:4595 +#: elf32-ia64.c:4708 elf64-ia64.c:4708 msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" msgstr "" -#: elf32-ia64.c:4662 elf64-ia64.c:4662 +#: elf32-ia64.c:4775 elf64-ia64.c:4775 msgid "%B: @gprel relocation against dynamic symbol %s" msgstr "" -#: elf32-ia64.c:4725 elf64-ia64.c:4725 +#: elf32-ia64.c:4838 elf64-ia64.c:4838 msgid "%B: linking non-pic code in a position independent executable" msgstr "" -#: elf32-ia64.c:4862 elf64-ia64.c:4862 +#: elf32-ia64.c:4975 elf64-ia64.c:4975 msgid "%B: @internal branch to dynamic symbol %s" msgstr "" -#: elf32-ia64.c:4864 elf64-ia64.c:4864 +#: elf32-ia64.c:4977 elf64-ia64.c:4977 msgid "%B: speculation fixup to dynamic symbol %s" msgstr "" -#: elf32-ia64.c:4866 elf64-ia64.c:4866 +#: elf32-ia64.c:4979 elf64-ia64.c:4979 msgid "%B: @pcrel relocation against dynamic symbol %s" msgstr "" -#: elf32-ia64.c:5063 elf64-ia64.c:5063 +#: elf32-ia64.c:5176 elf64-ia64.c:5176 msgid "unsupported reloc" msgstr "" -#: elf32-ia64.c:5101 elf64-ia64.c:5101 +#: elf32-ia64.c:5214 elf64-ia64.c:5214 msgid "" "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%" "A'." msgstr "" -#: elf32-ia64.c:5116 elf64-ia64.c:5116 +#: elf32-ia64.c:5229 elf64-ia64.c:5229 msgid "" "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> " "0x1000000)." msgstr "" -#: elf32-ia64.c:5372 elf64-ia64.c:5372 +#: elf32-ia64.c:5491 elf64-ia64.c:5491 msgid "%B: linking trap-on-NULL-dereference with non-trapping files" msgstr "" -#: elf32-ia64.c:5381 elf64-ia64.c:5381 +#: elf32-ia64.c:5500 elf64-ia64.c:5500 msgid "%B: linking big-endian files with little-endian files" msgstr "" -#: elf32-ia64.c:5390 elf64-ia64.c:5390 +#: elf32-ia64.c:5509 elf64-ia64.c:5509 msgid "%B: linking 64-bit files with 32-bit files" msgstr "" -#: elf32-ia64.c:5399 elf64-ia64.c:5399 +#: elf32-ia64.c:5518 elf64-ia64.c:5518 msgid "%B: linking constant-gp files with non-constant-gp files" msgstr "" -#: elf32-ia64.c:5409 elf64-ia64.c:5409 +#: elf32-ia64.c:5528 elf64-ia64.c:5528 msgid "%B: linking auto-pic files with non-auto-pic files" msgstr "" -#: peigen.c:999 pepigen.c:999 pex64igen.c:999 +#: peigen.c:1002 pepigen.c:1002 pex64igen.c:1002 #, c-format msgid "%s: line number overflow: 0x%lx > 0xffff" msgstr "" -#: peigen.c:1026 pepigen.c:1026 pex64igen.c:1026 +#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 msgid "Export Directory [.edata (or where ever we found it)]" msgstr "" -#: peigen.c:1027 pepigen.c:1027 pex64igen.c:1027 +#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 msgid "Import Directory [parts of .idata]" msgstr "" -#: peigen.c:1028 pepigen.c:1028 pex64igen.c:1028 +#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 msgid "Resource Directory [.rsrc]" msgstr "" -#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 +#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 msgid "Exception Directory [.pdata]" msgstr "" -#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 +#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 msgid "Security Directory" msgstr "" -#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 +#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 msgid "Base Relocation Directory [.reloc]" msgstr "" -#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 +#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 msgid "Debug Directory" msgstr "" -#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 +#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 msgid "Description Directory" msgstr "" -#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 +#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 msgid "Special Directory" msgstr "" -#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 +#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 msgid "Thread Storage Directory [.tls]" msgstr "" -#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 +#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 msgid "Load Configuration Directory" msgstr "" -#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 +#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 msgid "Bound Import Directory" msgstr "" -#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 +#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 msgid "Import Address Table Directory" msgstr "" -#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 +#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 msgid "Delay Import Directory" msgstr "" -#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 +#: peigen.c:1043 pepigen.c:1043 pex64igen.c:1043 msgid "CLR Runtime Header" msgstr "" -#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 +#: peigen.c:1044 pepigen.c:1044 pex64igen.c:1044 msgid "Reserved" msgstr "" -#: peigen.c:1101 pepigen.c:1101 pex64igen.c:1101 +#: peigen.c:1104 pepigen.c:1104 pex64igen.c:1104 #, c-format msgid "" "\n" "There is an import table, but the section containing it could not be found\n" msgstr "" -#: peigen.c:1106 pepigen.c:1106 pex64igen.c:1106 +#: peigen.c:1109 pepigen.c:1109 pex64igen.c:1109 #, c-format msgid "" "\n" "There is an import table in %s at 0x%lx\n" msgstr "" -#: peigen.c:1149 pepigen.c:1149 pex64igen.c:1149 +#: peigen.c:1151 pepigen.c:1151 pex64igen.c:1151 #, c-format msgid "" "\n" "Function descriptor located at the start address: %04lx\n" msgstr "" -#: peigen.c:1152 pepigen.c:1152 pex64igen.c:1152 +#: peigen.c:1154 pepigen.c:1154 pex64igen.c:1154 #, c-format msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" msgstr "" -#: peigen.c:1160 pepigen.c:1160 pex64igen.c:1160 +#: peigen.c:1162 pepigen.c:1162 pex64igen.c:1162 #, c-format msgid "" "\n" "No reldata section! Function descriptor not decoded.\n" msgstr "" -#: peigen.c:1165 pepigen.c:1165 pex64igen.c:1165 +#: peigen.c:1167 pepigen.c:1167 pex64igen.c:1167 #, c-format msgid "" "\n" "The Import Tables (interpreted %s section contents)\n" msgstr "" -#: peigen.c:1168 pepigen.c:1168 pex64igen.c:1168 +#: peigen.c:1170 pepigen.c:1170 pex64igen.c:1170 #, c-format msgid "" " vma: Hint Time Forward DLL First\n" " Table Stamp Chain Name Thunk\n" msgstr "" -#: peigen.c:1216 pepigen.c:1216 pex64igen.c:1216 +#: peigen.c:1218 pepigen.c:1218 pex64igen.c:1218 #, c-format msgid "" "\n" "\tDLL Name: %s\n" msgstr "" -#: peigen.c:1227 pepigen.c:1227 pex64igen.c:1227 +#: peigen.c:1229 pepigen.c:1229 pex64igen.c:1229 #, c-format msgid "\tvma: Hint/Ord Member-Name Bound-To\n" msgstr "" -#: peigen.c:1252 pepigen.c:1252 pex64igen.c:1252 +#: peigen.c:1254 pepigen.c:1254 pex64igen.c:1254 #, c-format msgid "" "\n" "There is a first thunk, but the section containing it could not be found\n" msgstr "" -#: peigen.c:1417 pepigen.c:1417 pex64igen.c:1417 +#: peigen.c:1415 pepigen.c:1415 pex64igen.c:1415 #, c-format msgid "" "\n" "There is an export table, but the section containing it could not be found\n" msgstr "" -#: peigen.c:1426 pepigen.c:1426 pex64igen.c:1426 +#: peigen.c:1424 pepigen.c:1424 pex64igen.c:1424 #, c-format msgid "" "\n" "There is an export table in %s, but it does not fit into that section\n" msgstr "" -#: peigen.c:1432 pepigen.c:1432 pex64igen.c:1432 +#: peigen.c:1430 pepigen.c:1430 pex64igen.c:1430 #, c-format msgid "" "\n" "There is an export table in %s at 0x%lx\n" msgstr "" -#: peigen.c:1460 pepigen.c:1460 pex64igen.c:1460 +#: peigen.c:1458 pepigen.c:1458 pex64igen.c:1458 #, c-format msgid "" "\n" @@ -4006,129 +5821,129 @@ "\n" msgstr "" -#: peigen.c:1464 pepigen.c:1464 pex64igen.c:1464 +#: peigen.c:1462 pepigen.c:1462 pex64igen.c:1462 #, c-format msgid "Export Flags \t\t\t%lx\n" msgstr "" -#: peigen.c:1467 pepigen.c:1467 pex64igen.c:1467 +#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 #, c-format msgid "Time/Date stamp \t\t%lx\n" msgstr "" -#: peigen.c:1470 pepigen.c:1470 pex64igen.c:1470 +#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 #, c-format msgid "Major/Minor \t\t\t%d/%d\n" msgstr "" -#: peigen.c:1473 pepigen.c:1473 pex64igen.c:1473 +#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 #, c-format msgid "Name \t\t\t\t" msgstr "" -#: peigen.c:1479 pepigen.c:1479 pex64igen.c:1479 +#: peigen.c:1477 pepigen.c:1477 pex64igen.c:1477 #, c-format msgid "Ordinal Base \t\t\t%ld\n" msgstr "" -#: peigen.c:1482 pepigen.c:1482 pex64igen.c:1482 +#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 #, c-format msgid "Number in:\n" msgstr "" -#: peigen.c:1485 pepigen.c:1485 pex64igen.c:1485 +#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 #, c-format msgid "\tExport Address Table \t\t%08lx\n" msgstr "" -#: peigen.c:1489 pepigen.c:1489 pex64igen.c:1489 +#: peigen.c:1487 pepigen.c:1487 pex64igen.c:1487 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" msgstr "" -#: peigen.c:1492 pepigen.c:1492 pex64igen.c:1492 +#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 #, c-format msgid "Table Addresses\n" msgstr "" -#: peigen.c:1495 pepigen.c:1495 pex64igen.c:1495 +#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 #, c-format msgid "\tExport Address Table \t\t" msgstr "" -#: peigen.c:1500 pepigen.c:1500 pex64igen.c:1500 +#: peigen.c:1498 pepigen.c:1498 pex64igen.c:1498 #, c-format msgid "\tName Pointer Table \t\t" msgstr "" -#: peigen.c:1505 pepigen.c:1505 pex64igen.c:1505 +#: peigen.c:1503 pepigen.c:1503 pex64igen.c:1503 #, c-format msgid "\tOrdinal Table \t\t\t" msgstr "" -#: peigen.c:1519 pepigen.c:1519 pex64igen.c:1519 +#: peigen.c:1517 pepigen.c:1517 pex64igen.c:1517 #, c-format msgid "" "\n" "Export Address Table -- Ordinal Base %ld\n" msgstr "" -#: peigen.c:1538 pepigen.c:1538 pex64igen.c:1538 +#: peigen.c:1536 pepigen.c:1536 pex64igen.c:1536 msgid "Forwarder RVA" msgstr "" -#: peigen.c:1549 pepigen.c:1549 pex64igen.c:1549 +#: peigen.c:1547 pepigen.c:1547 pex64igen.c:1547 msgid "Export RVA" msgstr "" -#: peigen.c:1556 pepigen.c:1556 pex64igen.c:1556 +#: peigen.c:1554 pepigen.c:1554 pex64igen.c:1554 #, c-format msgid "" "\n" "[Ordinal/Name Pointer] Table\n" msgstr "" -#: peigen.c:1616 peigen.c:1795 pepigen.c:1616 pepigen.c:1795 pex64igen.c:1616 -#: pex64igen.c:1795 +#: peigen.c:1614 peigen.c:1797 pepigen.c:1614 pepigen.c:1797 pex64igen.c:1614 +#: pex64igen.c:1797 #, c-format msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" msgstr "" -#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 +#: peigen.c:1621 pepigen.c:1621 pex64igen.c:1621 #, c-format msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" msgstr "" -#: peigen.c:1625 pepigen.c:1625 pex64igen.c:1625 +#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 #, c-format msgid "" " vma:\t\tBegin End EH EH PrologEnd Exception\n" " \t\tAddress Address Handler Data Address Mask\n" msgstr "" -#: peigen.c:1695 pepigen.c:1695 pex64igen.c:1695 +#: peigen.c:1697 pepigen.c:1697 pex64igen.c:1697 #, c-format msgid " Register save millicode" msgstr "" -#: peigen.c:1698 pepigen.c:1698 pex64igen.c:1698 +#: peigen.c:1700 pepigen.c:1700 pex64igen.c:1700 #, c-format msgid " Register restore millicode" msgstr "" -#: peigen.c:1701 pepigen.c:1701 pex64igen.c:1701 +#: peigen.c:1703 pepigen.c:1703 pex64igen.c:1703 #, c-format msgid " Glue code sequence" msgstr "" -#: peigen.c:1801 pepigen.c:1801 pex64igen.c:1801 +#: peigen.c:1803 pepigen.c:1803 pex64igen.c:1803 #, c-format msgid "" " vma:\t\tBegin Prolog Function Flags Exception EH\n" " \t\tAddress Length Length 32b exc Handler Data\n" msgstr "" -#: peigen.c:1933 pepigen.c:1933 pex64igen.c:1933 +#: peigen.c:1929 pepigen.c:1929 pex64igen.c:1929 #, c-format msgid "" "\n" @@ -4136,14 +5951,14 @@ "PE File Base Relocations (interpreted .reloc section contents)\n" msgstr "" -#: peigen.c:1963 pepigen.c:1963 pex64igen.c:1963 +#: peigen.c:1958 pepigen.c:1958 pex64igen.c:1958 #, c-format msgid "" "\n" "Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" msgstr "" -#: peigen.c:1976 pepigen.c:1976 pex64igen.c:1976 +#: peigen.c:1971 pepigen.c:1971 pex64igen.c:1971 #, c-format msgid "\treloc %4d offset %4x [%4lx] %s" msgstr "" @@ -4151,31 +5966,37 @@ #. The MS dumpbin program reportedly ands with 0xff0f before #. printing the characteristics field. Not sure why. No reason to #. emulate it here. -#: peigen.c:2015 pepigen.c:2015 pex64igen.c:2015 +#: peigen.c:2010 pepigen.c:2010 pex64igen.c:2010 #, c-format msgid "" "\n" "Characteristics 0x%x\n" msgstr "" -#: peigen.c:2292 pepigen.c:2292 pex64igen.c:2292 +#: peigen.c:2310 pepigen.c:2310 pex64igen.c:2310 msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing" msgstr "" -#: peigen.c:2312 pepigen.c:2312 pex64igen.c:2312 +#: peigen.c:2330 pepigen.c:2330 pex64igen.c:2330 msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing" msgstr "" -#: peigen.c:2333 pepigen.c:2333 pex64igen.c:2333 +#: peigen.c:2351 pepigen.c:2351 pex64igen.c:2351 msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing" msgstr "" -#: peigen.c:2353 pepigen.c:2353 pex64igen.c:2353 +#: peigen.c:2371 pepigen.c:2371 pex64igen.c:2371 msgid "" "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because ." "idata$6 is missing" msgstr "" -#: peigen.c:2375 pepigen.c:2375 pex64igen.c:2375 +#: peigen.c:2413 pepigen.c:2413 pex64igen.c:2413 +msgid "" +"%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because ." +"idata$6 is missing" +msgstr "" + +#: peigen.c:2436 pepigen.c:2436 pex64igen.c:2436 msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing" msgstr "" Binary files /tmp/wqm3boRCeK/crash-5.1.6/=unpacked-tar1=/bfd/po/da.gmo and /tmp/OqnMAz5teu/crash-6.1.6/=unpacked-tar1=/bfd/po/da.gmo differ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/da.po crash-6.1.6/=unpacked-tar1=/bfd/po/da.po --- crash-5.1.6/=unpacked-tar1=/bfd/po/da.po 2003-03-03 10:08:02.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/da.po 2011-03-30 15:23:22.000000000 +0000 @@ -1,499 +1,575 @@ # Danish messages for bfd. -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2011 Free Software Foundation, Inc. +# This file is distributed under the same license as the binutils package. +# # Keld Simonsen , 2002-2003 +# Ask Hjorth Larsen , 2011 +# +# Følgende konventioner bruges, men jeg er ikke sikker pÃ¥ at de nødvendigvis er de bedste: # +# entry (alene) -> post +# entry point -> startpunkt +# link -> lænke +# overlay -> overlay +# relax -> forenkle +# record -> post +# image -> aftryk +# TOC -> TOC (=table of contents, evt. indholdsfortegnelse) msgid "" msgstr "" -"Project-Id-Version: bfd 2.12.91\n" -"POT-Creation-Date: 2002-07-23 15:55-0400\n" -"PO-Revision-Date: 2003-03-01 23:25+0100\n" -"Last-Translator: Keld Simonsen \n" -"Language-Team: Danish \n" +"Project-Id-Version: bfd-2.20.90\n" +"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" +"POT-Creation-Date: 2010-11-05 11:31+0100\n" +"PO-Revision-Date: 2011-03-16 02:31+0100\n" +"Last-Translator: Ask Hjorth Larsen \n" +"Language-Team: Danish \n" +"Language: da\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -#: aout-adobe.c:197 -#, c-format -msgid "%s: Unknown section type in a.out.adobe file: %x\n" -msgstr "%s: Ukendt sektionstype i a.out.adobe-fil: %x\n" +#: aout-adobe.c:127 +msgid "%B: Unknown section type in a.out.adobe file: %x\n" +msgstr "%B: Ukendt sektionstype i a.out.adobe-fil: %x\n" -#: aout-cris.c:208 +#: aout-cris.c:199 #, c-format msgid "%s: Invalid relocation type exported: %d" msgstr "%s: Ugyldig relokeringstype eksporteret: %d" -#: aout-cris.c:252 -#, c-format -msgid "%s: Invalid relocation type imported: %d" -msgstr "%s: Ugyldig relokeringstype importeret: %d" - -#: aout-cris.c:263 -#, c-format -msgid "%s: Bad relocation record imported: %d" -msgstr "%s: Fejlagtig relokeringstype importeret: %d" +#: aout-cris.c:242 +msgid "%B: Invalid relocation type imported: %d" +msgstr "%B: Ugyldig relokeringstype importeret: %d" + +#: aout-cris.c:253 +msgid "%B: Bad relocation record imported: %d" +msgstr "%B: Fejlagtig relokeringspost importeret: %d" -#: aoutx.h:1282 aoutx.h:1699 +#: aoutx.h:1273 aoutx.h:1611 #, c-format msgid "%s: can not represent section `%s' in a.out object file format" -msgstr "%s: kan ikke repræsentere sektionen \"%s\" i a.out-objektfilformat" +msgstr "%s: kan ikke repræsentere sektionen \"%s\" i a.out-objektfilformat" -#: aoutx.h:1669 +#: aoutx.h:1577 #, c-format msgid "%s: can not represent section for symbol `%s' in a.out object file format" -msgstr "%s: kan ikke repræsentere sektion for symbolet \"%s\" i a.out-objektfilformat" +msgstr "%s: kan ikke repræsentere sektion for symbolet \"%s\" i a.out-objektfilformat" -#: aoutx.h:1671 +#: aoutx.h:1579 vms-alpha.c:7649 msgid "*unknown*" msgstr "*ukendt*" -#: aoutx.h:3732 +#: aoutx.h:4007 aoutx.h:4333 +msgid "%P: %B: unexpected relocation type\n" +msgstr "%P: %B: uventet relokeringstype\n" + +#: aoutx.h:5364 #, c-format -msgid "%s: relocateable link from %s to %s not supported" -msgstr "%s: relokérbar lænke fra %s til %s understøttes ikke" +msgid "%s: relocatable link from %s to %s not supported" +msgstr "%s: relokérbar lænke fra %s til %s understøttes ikke" -#: archive.c:1826 +#: archive.c:2125 msgid "Warning: writing archive was slow: rewriting timestamp\n" msgstr "Advarsel: arkivskrivning var langsom: genskriver tidsstempel\n" -#: archive.c:2093 +#: archive.c:2416 msgid "Reading archive file mod timestamp" -msgstr "Læser arkivfilens ændringstidsstempel" +msgstr "Læser arkivfilens ændringstidsstempel" -#. FIXME: bfd can't call perror. -#: archive.c:2120 +#: archive.c:2440 msgid "Writing updated armap timestamp" msgstr "Skriver opdateret armap-tidsstempel" -#: bfd.c:274 +#: bfd.c:395 msgid "No error" msgstr "Ingen fejl" -#: bfd.c:275 +#: bfd.c:396 msgid "System call error" msgstr "Systemkaldsfejl" -#: bfd.c:276 +#: bfd.c:397 msgid "Invalid bfd target" -msgstr "Ugyldigt bfd-mål" +msgstr "Ugyldigt bfd-mÃ¥l" -#: bfd.c:277 +#: bfd.c:398 msgid "File in wrong format" msgstr "Filen er i forkert format" -#: bfd.c:278 +#: bfd.c:399 msgid "Archive object file in wrong format" msgstr "Arkivobjektfil er i forkert format" -#: bfd.c:279 +#: bfd.c:400 msgid "Invalid operation" msgstr "Ugyldig handling" -#: bfd.c:280 +#: bfd.c:401 msgid "Memory exhausted" msgstr "Hukommelsen er opbrugt" -#: bfd.c:281 +#: bfd.c:402 msgid "No symbols" msgstr "Ingen symboler" -#: bfd.c:282 +#: bfd.c:403 msgid "Archive has no index; run ranlib to add one" -msgstr "Arkivet har intet indeks; kør ranlib til at tilføje ét" +msgstr "Arkivet har intet indeks; kør ranlib til at tilføje ét" -#: bfd.c:283 +#: bfd.c:404 msgid "No more archived files" msgstr "Ikke flere arkiverede filer" -#: bfd.c:284 +#: bfd.c:405 msgid "Malformed archive" msgstr "Forvansket arkiv" -#: bfd.c:285 +#: bfd.c:406 msgid "File format not recognized" msgstr "Filformatet ikke genkendt" -#: bfd.c:286 +#: bfd.c:407 msgid "File format is ambiguous" msgstr "Filformatet er flertydigt" -#: bfd.c:287 +#: bfd.c:408 msgid "Section has no contents" msgstr "Sektionen har intet indhold" -#: bfd.c:288 +#: bfd.c:409 msgid "Nonrepresentable section on output" -msgstr "Ikkerepræsenterbar sektion i uddata" +msgstr "Ikkerepræsenterbar sektion i uddata" -#: bfd.c:289 +#: bfd.c:410 msgid "Symbol needs debug section which does not exist" -msgstr "Symbolet kræver fejlsøgningssektion som ikke eksisterer" +msgstr "Symbolet kræver fejlsøgningssektion som ikke eksisterer" -#: bfd.c:290 +#: bfd.c:411 msgid "Bad value" -msgstr "Fejlagtigt værdi" +msgstr "Fejlagtigt værdi" -#: bfd.c:291 +#: bfd.c:412 msgid "File truncated" msgstr "Filen trunkeret" -#: bfd.c:292 +#: bfd.c:413 msgid "File too big" msgstr "Filen er for stor" -#: bfd.c:293 +#: bfd.c:414 +#, c-format +msgid "Error reading %s: %s" +msgstr "Fejl ved læsning af %s: %s" + +#: bfd.c:415 msgid "#" msgstr "#" -#: bfd.c:700 +#: bfd.c:939 #, c-format msgid "BFD %s assertion fail %s:%d" msgstr "BFD %s-forsikring mislykkedes %s:%d" -#: bfd.c:719 +#: bfd.c:951 #, c-format msgid "BFD %s internal error, aborting at %s line %d in %s\n" msgstr "Intern BFD %s-fejl, afbryder ved %s linje %d i %s\n" -#: bfd.c:723 +#: bfd.c:955 #, c-format msgid "BFD %s internal error, aborting at %s line %d\n" msgstr "Internt BFD %s-fejl, afbryder ved %s linje %d\n" -#: bfd.c:725 +#: bfd.c:957 msgid "Please report this bug.\n" -msgstr "Rapportér gerne denne fejl.\n" +msgstr "Rapportér gerne denne fejl.\n" -#: binary.c:306 +#: bfdwin.c:206 #, c-format -msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." -msgstr "Advarsel: Skrivning af sektionen \"%s\" til enorm (dvs negativ) afsætsbyte 0x%lx." +msgid "not mapping: data=%lx mapped=%d\n" +msgstr "mapper ikke: data=%lx mappet=%d\n" -# src/menus.c:341 -#: coff-a29k.c:119 -msgid "Missing IHCONST" -msgstr "IHCONST mangler" +#: bfdwin.c:209 +#, c-format +msgid "not mapping: env var not set\n" +msgstr "mapper ikke: miljøvariabel er ikke sat\n" -# src/menus.c:341 -#: coff-a29k.c:180 -msgid "Missing IHIHALF" -msgstr "IHIHALF mangler" +#: binary.c:271 +#, c-format +msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." +msgstr "Advarsel: Skrivning af sektionen \"%s\" til enorm (dvs negativ) afsætsbyte 0x%lx." -#: coff-a29k.c:212 coff-or32.c:229 -msgid "Unrecognized reloc" -msgstr "Ukendt relokering" +#: bout.c:1146 elf-m10300.c:2063 elf32-avr.c:1640 elf32-frv.c:5740 +#: elfxx-sparc.c:2795 reloc.c:5646 reloc16.c:162 elf32-ia64.c:842 +#: elf64-ia64.c:842 +msgid "%P%F: --relax and -r may not be used together\n" +msgstr "%P%F: --relax og -r kan ikke bruges sammen\n" + +#: cache.c:226 +msgid "reopening %B: %s\n" +msgstr "genÃ¥bner %B: %s\n" -#: coff-a29k.c:408 -msgid "missing IHCONST reloc" -msgstr "IHCONST-relokering mangler" - -#: coff-a29k.c:498 -msgid "missing IHIHALF reloc" -msgstr "IHIHALF-relokering mangler" +#: coff-alpha.c:491 +msgid "" +"%B: Cannot handle compressed Alpha binaries.\n" +" Use compiler flags, or objZ, to generate uncompressed binaries." +msgstr "" +"%B: Kan ikke hÃ¥ndtere komprimerede Alpha-binærfiler.\n" +" Brug kompilerflag eller objZ til at generere ukomprimerede binærfiler." -#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1989 coff-mips.c:1432 +#: coff-alpha.c:648 +msgid "%B: unknown/unsupported relocation type %d" +msgstr "%B: relokeringstypen %d kendes eller understøttes ikke" + +#: coff-alpha.c:900 coff-alpha.c:937 coff-alpha.c:2025 coff-mips.c:1003 msgid "GP relative relocation used when GP not defined" -msgstr "GP-relativ relokering bruges når GP ikke er defineret" +msgstr "GP-relativ relokering bruges nÃ¥r GP ikke er defineret" -#: coff-alpha.c:1485 +#: coff-alpha.c:1502 msgid "using multiple gp values" -msgstr "bruger flere gp-værdier" +msgstr "bruger flere gp-værdier" -#: coff-arm.c:1066 elf32-arm.h:285 -#, c-format -msgid "%s: unable to find THUMB glue '%s' for `%s'" -msgstr "%s: kunne ikke finde THUMB-klistret \"%s\" til \"%s\"" +#: coff-alpha.c:1561 +msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH" +msgstr "%B: relokering understøttes ikke: ALPHA_R_GPRELHIGH" -#: coff-arm.c:1096 elf32-arm.h:320 -#, c-format -msgid "%s: unable to find ARM glue '%s' for `%s'" -msgstr "%s: kunne ikke finde ARM-klistret \"%s\" til \"%s\"" +#: coff-alpha.c:1568 +msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW" +msgstr "%B: relokering understøttes ikke: ALPHA_R_GPRELLOW" -#: coff-arm.c:1391 coff-arm.c:1486 elf32-arm.h:887 elf32-arm.h:991 -#, c-format -msgid "%s(%s): warning: interworking not enabled." -msgstr "%s(%s): advarsel: samvirken er ikke aktiveret." +#: coff-alpha.c:1575 elf32-m32r.c:2493 elf64-alpha.c:3991 elf64-alpha.c:4140 +#: elf32-ia64.c:4582 elf64-ia64.c:4582 +msgid "%B: unknown relocation type %d" +msgstr "%B: ukendt relokeringstype %d" -#: coff-arm.c:1395 elf32-arm.h:994 +#: coff-arm.c:1038 #, c-format -msgid " first occurrence: %s: arm call to thumb" -msgstr " første forekomst: %s: arm-kald til thumb" +msgid "%B: unable to find THUMB glue '%s' for `%s'" +msgstr "%B: kan ikke finde THUMB-klistret \"%s\" til \"%s\"" -#: coff-arm.c:1490 elf32-arm.h:890 +#: coff-arm.c:1067 #, c-format -msgid " first occurrence: %s: thumb call to arm" -msgstr " første forekomst: %s: thumb-kald til arm" +msgid "%B: unable to find ARM glue '%s' for `%s'" +msgstr "%B: kan ikke finde ARM-klistret \"%s\" til \"%s\"" -#: coff-arm.c:1493 -msgid " consider relinking with --support-old-code enabled" -msgstr " overvej omlænkning med --support-old-code aktiveret" - -#: coff-arm.c:1785 coff-tic80.c:686 cofflink.c:3031 +#: coff-arm.c:1369 elf32-arm.c:6501 #, c-format -msgid "%s: bad reloc address 0x%lx in section `%s'" -msgstr "%s: fejlagtig relokeringsadresse 0x%lx i sektionen \"%s\"" +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: arm call to thumb" +msgstr "" +"%B(%s): advarsel: samvirken (interworking) er ikke aktiveret.\n" +" første forekomst: %B: arm-kald til thumb" -#: coff-arm.c:2127 +#: coff-arm.c:1459 #, c-format -msgid "%s: illegal symbol index in reloc: %d" -msgstr "%s: ikke tilladt symbolindeks i relokering: %d" +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: thumb call to arm\n" +" consider relinking with --support-old-code enabled" +msgstr "" +"%B(%s): advarsel: \"Interworking\" er ikke slÃ¥et til.\n" +" første forekomst: %B: thumb-kald til arm\n" +" overvej at genlænke med --support-old-code tilvalgt" + +#: coff-arm.c:1754 coff-tic80.c:695 cofflink.c:3043 +msgid "%B: bad reloc address 0x%lx in section `%A'" +msgstr "%B: fejlagtig relokeringsadresse 0x%lx i sektionen \"%s\"" -#: coff-arm.c:2255 +#: coff-arm.c:2079 +msgid "%B: illegal symbol index in reloc: %d" +msgstr "%B: illegalt symbolindeks i relokering: %d" + +#: coff-arm.c:2210 #, c-format -msgid "ERROR: %s is compiled for APCS-%d, whereas %s is compiled for APCS-%d" -msgstr "FEJL: %s oversat for APCS-%d, mens %s er oversat for APCS-%d" +msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" +msgstr "fejl: %B er kompileret til APCS-%d, mens %B er kompileret til APCS-%d" -#: coff-arm.c:2270 elf32-arm.h:2297 +#: coff-arm.c:2226 elf32-arm.c:14105 #, c-format -msgid "ERROR: %s passes floats in float registers, whereas %s passes them in integer registers" -msgstr "FEJL: %s overfører flydende tal i flydendetalsregister, mens %s overfører dem i heltalsregister" +msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers" +msgstr "fejl: %B overfører flydende tal i flydendetalsregistre, mens %B overfører dem i heltalsregistre" -#: coff-arm.c:2273 elf32-arm.h:2302 +#: coff-arm.c:2229 elf32-arm.c:14109 #, c-format -msgid "ERROR: %s passes floats in integer registers, whereas %s passes them in float registers" -msgstr "FEJL: %s overfører flydende tal i heltalsregister, mens %s overfører dem i flydendetalsregister" +msgid "error: %B passes floats in integer registers, whereas %B passes them in float registers" +msgstr "fejl: %B overfører flydende tal i heltalsregistre, mens %B overfører dem i flydendetalsregistre" -#: coff-arm.c:2288 +#: coff-arm.c:2243 #, c-format -msgid "ERROR: %s is compiled as position independent code, whereas target %s is absolute position" -msgstr "FEJL: %s er oversat som positionsuafhængig kode, mens målet %s har absolut position" +msgid "error: %B is compiled as position independent code, whereas target %B is absolute position" +msgstr "fejl: %s er kompileret som positionsuafhængig kode, mens mÃ¥let %B har absolut position" -#: coff-arm.c:2291 +#: coff-arm.c:2246 #, c-format -msgid "ERROR: %s is compiled as absolute position code, whereas target %s is position independent" -msgstr "FEJL: %s er oversat som kode med absolut position, mens målet %s er positionsuafhængigt" +msgid "error: %B is compiled as absolute position code, whereas target %B is position independent" +msgstr "fejl: %B er kompileret som kode med absolut position, mens mÃ¥let %B er positionsuafhængigt" -#: coff-arm.c:2320 elf32-arm.h:2358 +#: coff-arm.c:2274 elf32-arm.c:14174 #, c-format -msgid "Warning: %s supports interworking, whereas %s does not" -msgstr "Advarsel: %s understøtter samvirken, mens %s derimod ikke gør det" +msgid "Warning: %B supports interworking, whereas %B does not" +msgstr "Advarsel: %B understøtter samvirken (interworking), mens %B ikke gør det" -#: coff-arm.c:2323 elf32-arm.h:2365 +#: coff-arm.c:2277 elf32-arm.c:14180 #, c-format -msgid "Warning: %s does not support interworking, whereas %s does" -msgstr "Advarsel: %s understøtter ikke samvirken, mens %s derimod gør det" +msgid "Warning: %B does not support interworking, whereas %B does" +msgstr "Advarsel: %B understøtter ikke samvirken (interworking), mens %B gør det" -#: coff-arm.c:2350 +#: coff-arm.c:2301 #, c-format msgid "private flags = %x:" msgstr "private flag = %x:" -#: coff-arm.c:2358 elf32-arm.h:2418 +#: coff-arm.c:2309 elf32-arm.c:10492 +#, c-format msgid " [floats passed in float registers]" -msgstr " [flydende tal overført i flydendetalsregistre]" +msgstr " [flydende tal overført i flydendetalsregistre]" -#: coff-arm.c:2360 +#: coff-arm.c:2311 +#, c-format msgid " [floats passed in integer registers]" -msgstr " [flydende tal overført i heltalsregistre]" +msgstr " [flydende tal overført i heltalsregistre]" -#: coff-arm.c:2363 elf32-arm.h:2421 +#: coff-arm.c:2314 elf32-arm.c:10495 +#, c-format msgid " [position independent]" -msgstr " [positionsuafhængigt]" +msgstr " [positionsuafhængigt]" -#: coff-arm.c:2365 +#: coff-arm.c:2316 +#, c-format msgid " [absolute position]" msgstr " [absolut position]" -#: coff-arm.c:2369 +#: coff-arm.c:2320 +#, c-format msgid " [interworking flag not initialised]" msgstr " [samvirkendeflag er ikke initieret]" -#: coff-arm.c:2371 +#: coff-arm.c:2322 +#, c-format msgid " [interworking supported]" -msgstr " [samvirken understøttes]" +msgstr " [samvirken understøttes]" -#: coff-arm.c:2373 +#: coff-arm.c:2324 +#, c-format msgid " [interworking not supported]" -msgstr " [samvirken understøttes ikke]" +msgstr " [samvirken understøttes ikke]" -#: coff-arm.c:2421 elf32-arm.h:2124 +#: coff-arm.c:2370 elf32-arm.c:9520 #, c-format -msgid "Warning: Not setting interworking flag of %s since it has already been specified as non-interworking" -msgstr "Advarsel: Sætter ikke samvirkeflaget for %s da den allerede er angivet som ikke-samvirkende" +msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking" +msgstr "Advarsel: Sætter ikke samvirkeflaget (interworking) for %B, da den allerede er angivet som ikke-samvirkende" -#: coff-arm.c:2425 elf32-arm.h:2128 +#: coff-arm.c:2374 elf32-arm.c:9524 #, c-format -msgid "Warning: Clearing the interworking flag of %s due to outside request" -msgstr "Advarsel: Fjerner samvirkeflaget for %s på grund af anmodning udefra" +msgid "Warning: Clearing the interworking flag of %B due to outside request" +msgstr "Advarsel: Fjerner samvirkeflaget (interworking) for %B pÃ¥ grund af anmodning udefra" -#: coff-i960.c:136 coff-i960.c:485 +#: coff-h8300.c:1122 +#, c-format +msgid "cannot handle R_MEM_INDIRECT reloc when using %s output" +msgstr "kan ikke hÃ¥ndtere R_MEM_INDIRECT-relokering ved brug af %s-uddata" + +#: coff-i860.c:147 +#, c-format +msgid "Relocation `%s' not yet implemented\n" +msgstr "Relokeringen \"%s\" er endnu ikke implementeret\n" + +#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5147 +msgid "%B: warning: illegal symbol index %ld in relocs" +msgstr "%B: advarsel: illegalt symbolindeks %ld i relokeringerne" + +#: coff-i960.c:143 coff-i960.c:506 msgid "uncertain calling convention for non-COFF symbol" msgstr "usikker kaldskonvention for ikke-COFF-symbol" -#: coff-m68k.c:481 coff-mips.c:2429 elf32-m68k.c:2157 elf32-mips.c:1844 +#: coff-m68k.c:506 elf32-bfin.c:5678 elf32-cr16.c:2897 elf32-m68k.c:4672 msgid "unsupported reloc type" -msgstr "relokeringstypen understøttes ikke" +msgstr "relokeringstypen understøttes ikke" -#: coff-mips.c:874 elf32-mips.c:1062 elf64-mips.c:1609 +#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:430 elf32-score7.c:330 +#: elf64-mips.c:2019 elfn32-mips.c:1832 msgid "GP relative relocation when _gp not defined" -msgstr "GP-relativ relokering når _gp ikke var defineret" +msgstr "GP-relativ relokering nÃ¥r _gp ikke var defineret" -#. No other sections should appear in -membedded-pic -#. code. -#: coff-mips.c:2466 -msgid "reloc against unsupported section" -msgstr "relokering mod sektion som ikke understøttes" - -#: coff-mips.c:2474 -msgid "reloc not properly aligned" -msgstr "relokering ikke på passende afrundet adresse" +#: coff-or32.c:229 +msgid "Unrecognized reloc" +msgstr "Ukendt relokering" -#: coff-rs6000.c:2766 +#: coff-rs6000.c:2794 #, c-format msgid "%s: unsupported relocation type 0x%02x" -msgstr "%s: relokeringstypen 0x%02x understøttes ikke" +msgstr "%s: relokeringstypen 0x%02x understøttes ikke" -#: coff-rs6000.c:2859 +#: coff-rs6000.c:2887 #, c-format msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" msgstr "%s: TOC-relokering ved 0x%x til symbolet \"%s\" uden nogen TOC-post" -#: coff-rs6000.c:3590 coff64-rs6000.c:2091 -#, c-format -msgid "%s: symbol `%s' has unrecognized smclas %d" -msgstr "%s: symbolet \"%s\" har ukendt smclas %d" +#: coff-rs6000.c:3652 coff64-rs6000.c:2175 +msgid "%B: symbol `%s' has unrecognized smclas %d" +msgstr "%B: symbolet \"%s\" har ukendt smclas %d" -#: coff-tic54x.c:279 coff-tic80.c:449 +#: coff-tic4x.c:195 coff-tic54x.c:299 coff-tic80.c:458 #, c-format msgid "Unrecognized reloc type 0x%x" msgstr "Ukendt relokeringstype 0x%x" -#: coff-tic54x.c:390 coffcode.h:4974 +#: coff-tic4x.c:240 #, c-format msgid "%s: warning: illegal symbol index %ld in relocs" msgstr "%s: advarsel: ikke tilladt symbolindeks %ld i relokeringerne" -#: coff-w65.c:363 +#: coff-w65.c:367 #, c-format msgid "ignoring reloc %s\n" msgstr "ignorerer relokering %s\n" -#: coffcode.h:1086 -#, c-format -msgid "%s (%s): Section flag %s (0x%x) ignored" -msgstr "%s (%s): Sektionsflaget %s (0x%x) ignoreredes" +#: coffcode.h:973 +msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'" +msgstr "%B: advarsel: COMDAT-symbol \"%s\" passer ikke til sektionsnavnet \"%s\"" + +#. Generate a warning message rather using the 'unhandled' +#. variable as this will allow some .sys files generate by +#. other toolchains to be processed. See bugzilla issue 196. +#: coffcode.h:1197 +msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s" +msgstr "%B: Advarsel: Ignorerer sektionsflag IMAGE_SCN_MEM_NOT_PAGED i sektionen %s" + +#: coffcode.h:1264 +msgid "%B (%s): Section flag %s (0x%x) ignored" +msgstr "%B (%s): Sektionsflag %s (0x%x) ignoreret" -#: coffcode.h:2143 +#: coffcode.h:2390 #, c-format msgid "Unrecognized TI COFF target id '0x%x'" -msgstr "Ukendt TI COFF-mål-id \"0x%x\"" - -#: coffcode.h:4365 -#, c-format -msgid "%s: warning: illegal symbol index %ld in line numbers" -msgstr "%s: advarsel: ikke tilladt symbolindeks %ld i linjenumre" - -#: coffcode.h:4379 -#, c-format -msgid "%s: warning: duplicate line number information for `%s'" -msgstr "%s: advarsel: dobbelt linjenummersinformation for \"%s\"" - -#: coffcode.h:4736 -#, c-format -msgid "%s: Unrecognized storage class %d for %s symbol `%s'" -msgstr "%s: Ukendt lagringsklasse %d for %s-symbolet \"%s\"" - -#: coffcode.h:4867 -#, c-format -msgid "warning: %s: local symbol `%s' has no section" -msgstr "advarsel: %s: lokalt symbol \"%s\" har ingen sektion" - -#: coffcode.h:5012 -#, c-format -msgid "%s: illegal relocation type %d at address 0x%lx" -msgstr "%s: ikke tilladt relokeringstype %d på adresse 0x%lx" - -#: coffgen.c:1661 -#, c-format -msgid "%s: bad string table size %lu" -msgstr "%s: fejlagtig strengtabelstørrelse %lu" +msgstr "Ukendt TI COFF-mÃ¥l-id \"0x%x\"" -#: cofflink.c:534 elflink.h:1912 -#, c-format -msgid "Warning: type of symbol `%s' changed from %d to %d in %s" -msgstr "Advarsel: typen på symbol \"%s\" ændredes fra %d til %d i %s" +#: coffcode.h:2704 +msgid "%B: reloc against a non-existant symbol index: %ld" +msgstr "%B: relokering mod et ikke-eksisterende symbolindeks: %ld" + +#: coffcode.h:3262 +msgid "%B: too many sections (%d)" +msgstr "%B: for mange sektioner (%d)" + +#: coffcode.h:3676 +msgid "%B: section %s: string table overflow at offset %ld" +msgstr "%B: sektion %s: overløb i strengtabel ved afsæt %ld" + +#: coffcode.h:4481 +msgid "%B: warning: line number table read failed" +msgstr "%B: advarsel: læsning af linjenummertabel mislykkedes" + +#: coffcode.h:4511 +msgid "%B: warning: illegal symbol index %ld in line numbers" +msgstr "%B: advarsel: illegalt symbolindeks %ld i linjetal" + +#: coffcode.h:4525 +msgid "%B: warning: duplicate line number information for `%s'" +msgstr "%B: advarsel: dobbelt linjenummersinformation for \"%s\"" + +#: coffcode.h:4916 +msgid "%B: Unrecognized storage class %d for %s symbol `%s'" +msgstr "%B: Ukendt lagringsklasse %d for %s-symbolet \"%s\"" + +#: coffcode.h:5042 +msgid "warning: %B: local symbol `%s' has no section" +msgstr "advarsel: %B: lokalt symbol \"%s\" har ingen sektion" + +#: coffcode.h:5186 +msgid "%B: illegal relocation type %d at address 0x%lx" +msgstr "%B: ikke tilladt relokeringstype %d pÃ¥ adresse 0x%lx" + +#: coffgen.c:1573 +msgid "%B: bad string table size %lu" +msgstr "%B: fejlagtig strengtabelstørrelse %lu" + +#: cofflink.c:524 elflink.c:4339 +msgid "Warning: type of symbol `%s' changed from %d to %d in %B" +msgstr "Advarsel: typen pÃ¥ symbol \"%s\" ændredes fra %d til %d i %B" #: cofflink.c:2321 -#, c-format -msgid "%s: relocs in section `%s', but it has no contents" -msgstr "%s: relokeringer i sektionen \"%s\", men den har intet indhold" +msgid "%B: relocs in section `%A', but it has no contents" +msgstr "%B: relokeringer i sektionen \"%s\", men den har intet indhold" -#: cofflink.c:2664 coffswap.h:877 +#: cofflink.c:2652 coffswap.h:826 #, c-format msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" -msgstr "%s: %s: relokering giver overløb: 0x%lx > 0xffff" +msgstr "%s: %s: relokering giver overløb: 0x%lx > 0xffff" -#: cofflink.c:2673 coffswap.h:864 +#: cofflink.c:2661 coffswap.h:812 #, c-format msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" -msgstr "%s: advarsel: %s: linjenummer giver overløb: 0x%lx > 0xffff" +msgstr "%s: advarsel: %s: linjenummer giver overløb: 0x%lx > 0xffff" -#: dwarf2.c:382 -msgid "Dwarf Error: Can't find .debug_str section." -msgstr "Dwarf-fejl: Kan ikke finde sektionen .debug_str." +#: cpu-arm.c:189 cpu-arm.c:200 +msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale" +msgstr "fejl: %B kompileret til EP9312, mens %B er kompileret til XScale" -#: dwarf2.c:399 +#: cpu-arm.c:333 #, c-format -msgid "Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)." -msgstr "Dwarf-fejl: DW_FORM_strp-afstanden (%lu) større end eller lig med størrelsen på .debug_str (%lu)." +msgid "warning: unable to update contents of %s section in %s" +msgstr "advarsel: kan ikke opdatere indholdet af %s-sektion i %s" -#: dwarf2.c:543 -msgid "Dwarf Error: Can't find .debug_abbrev section." -msgstr "Dwarf-fejl: Kan ikke finde sektionen .debug_abbrev." +#: dwarf2.c:490 +#, c-format +msgid "Dwarf Error: Can't find %s section." +msgstr "Dwarf-fejl: Kan ikke finde %s-sektion." -#: dwarf2.c:560 +#: dwarf2.c:518 #, c-format -msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)." -msgstr "Dwarf-fejl: Forkortelsesafstanden (%lu) større end eller lig med størrelsen .debug_abbrev (%lu)." +msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)." +msgstr "Dwarf-fejl: Afsæt (%lu) større end eller lig med %s-størrelse (%lu)." -#: dwarf2.c:757 +#: dwarf2.c:940 #, c-format msgid "Dwarf Error: Invalid or unhandled FORM value: %u." -msgstr "Dwarf-fejl: Ugyldig eller ubehandlet FORM-værdi: %u." +msgstr "Dwarf-fejl: Ugyldig eller ubehandlet FORM-værdi: %u." -#: dwarf2.c:852 +#: dwarf2.c:1191 msgid "Dwarf Error: mangled line number section (bad file number)." msgstr "Dwarf-fejl: vanskabt linjenummerssektion (fejlagtigt filnummer)." -#: dwarf2.c:938 -msgid "Dwarf Error: Can't find .debug_line section." -msgstr "Dwarf-fejl: Kan ikke finde sektionen .debug_line." - -#: dwarf2.c:961 +#: dwarf2.c:1443 #, c-format -msgid "Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu)." -msgstr "Dwarf-fejl: Linjeafstanden (%lu) større end eller lig med størrelsen .debug_line (%lu)." +msgid "Dwarf Error: Unhandled .debug_line version %d." +msgstr "Dwarf-fejl: UhÃ¥ndteret .debug_line-version %d." + +#: dwarf2.c:1465 +msgid "Dwarf Error: Invalid maximum operations per instruction." +msgstr "Dwarf-fejl: Ugyldigt maksimalt antal operationer per instruktion." -#: dwarf2.c:1159 +#: dwarf2.c:1652 msgid "Dwarf Error: mangled line number section." msgstr "Dwarf-fejl: vanskabt linjenummerssektion." -#: dwarf2.c:1355 dwarf2.c:1566 +#: dwarf2.c:1978 dwarf2.c:2098 dwarf2.c:2382 #, c-format msgid "Dwarf Error: Could not find abbrev number %u." msgstr "Dwarf-fejl: Kunne ikke finde forkortelsesnumret %u." -#: dwarf2.c:1527 +#: dwarf2.c:2343 #, c-format -msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information." -msgstr "Dwarf-fejl: fandt dwarf version \"%u\", denne læser håndterer kun information fra version 2." +msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information." +msgstr "Dwarf-fejl: fandt dwarf version \"%u\", men denne læser kan kun hÃ¥ndtere information fra version 2, 3 og 4." -#: dwarf2.c:1534 +#: dwarf2.c:2350 #, c-format msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'." -msgstr "Dwarf-fejl: fandt adressestørrelsen \"%u\", denne læser kan ikke håndtere størrelser større end \"%u\"." +msgstr "Dwarf-fejl: fandt adressestørrelsen \"%u\", denne læser kan ikke hÃ¥ndtere størrelser større end \"%u\"." -#: dwarf2.c:1557 +#: dwarf2.c:2373 #, c-format msgid "Dwarf Error: Bad abbrev number: %u." msgstr "Dwarf-fejl: Fejlagtigt forkortelsesnummer: %u." -#: ecoff.c:1318 +#: ecoff.c:1237 #, c-format msgid "Unknown basic type %d" msgstr "Ukendt grundtype %d" -#: ecoff.c:1578 +#: ecoff.c:1494 #, c-format msgid "" "\n" @@ -502,16 +578,16 @@ "\n" " Symbol slut+1: %ld" -#: ecoff.c:1585 ecoff.c:1588 +#: ecoff.c:1501 ecoff.c:1504 #, c-format msgid "" "\n" " First symbol: %ld" msgstr "" "\n" -" Første symbol: %ld" +" Første symbol: %ld" -#: ecoff.c:1600 +#: ecoff.c:1516 #, c-format msgid "" "\n" @@ -520,7 +596,7 @@ "\n" " Symbol slut+1: %-7ld Type: %s" -#: ecoff.c:1607 +#: ecoff.c:1523 #, c-format msgid "" "\n" @@ -529,7 +605,7 @@ "\n" " Lokalt symbol: %ld" -#: ecoff.c:1615 +#: ecoff.c:1531 #, c-format msgid "" "\n" @@ -538,7 +614,7 @@ "\n" " struct; symbol slut+1: %ld" -#: ecoff.c:1620 +#: ecoff.c:1536 #, c-format msgid "" "\n" @@ -547,7 +623,7 @@ "\n" " union; symbol slut+1: %ld" -#: ecoff.c:1625 +#: ecoff.c:1541 #, c-format msgid "" "\n" @@ -556,7 +632,7 @@ "\n" " enum; symbol slut+1: %ld" -#: ecoff.c:1631 +#: ecoff.c:1547 #, c-format msgid "" "\n" @@ -565,54 +641,133 @@ "\n" " Type: %s" -#: elf-hppa.h:1476 elf-hppa.h:1509 elf32-ppc.c:3091 elf32-sh.c:4213 -#: elf64-sh64.c:1659 -#, c-format -msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section" -msgstr "%s: advarsel: uløselig relokering mod symbol \"%s\" fra sektionen %s" - -#: elf-m10200.c:446 elf-m10300.c:656 elf32-arm.h:2084 elf32-avr.c:833 -#: elf32-cris.c:1403 elf32-d10v.c:481 elf32-fr30.c:635 elf32-frv.c:809 -#: elf32-h8300.c:548 elf32-i860.c:1031 elf32-m32r.c:1278 elf32-openrisc.c:439 -#: elf32-v850.c:1691 elf32-xstormy16.c:933 elf64-mmix.c:1302 +#: elf-attrs.c:569 +msgid "error: %B: Object has vendor-specific contents that must be processed by the '%s' toolchain" +msgstr "fejl: %B: Objekt har leverandørspecifikt indhold, som skal behandles med '%s'-værktøjerne" + +#: elf-attrs.c:578 +msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'" +msgstr "fejl: %B: Objektmærke \"%d, %d\" er ikke kompatibelt med mærket \"%d, %s\"" + +#: elf-eh-frame.c:913 +msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n" +msgstr "%P: fejl i %B(%A); ingen .eh_frame_hdr-tabel vil blive oprettet.\n" + +#: elf-eh-frame.c:1165 +msgid "%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n" +msgstr "%P: fde-kodning i %B(%A) forhindrer .eh_frame_hdr-tabel i at blive oprettet.\n" + +#: elf-ifunc.c:179 +msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%B' can not be used when making an executable; recompile with -fPIE and relink with -pie\n" +msgstr "%F%P: dynamisk STT_GNU_IFUNC-symbol \"%s\" med pointerlighed i \"%B\" kan ikke bruges nÃ¥r der oprettes en eksekverbar fil; genkompilér med -fPIE og genlænk med -pie\n" + +#: elf-m10200.c:450 elf-m10300.c:1560 elf32-avr.c:1263 elf32-bfin.c:3193 +#: elf32-cr16.c:1482 elf32-cr16c.c:780 elf32-cris.c:2077 elf32-crx.c:922 +#: elf32-d10v.c:509 elf32-fr30.c:609 elf32-frv.c:4111 elf32-h8300.c:509 +#: elf32-i860.c:1211 elf32-ip2k.c:1468 elf32-iq2000.c:684 elf32-lm32.c:1168 +#: elf32-m32c.c:553 elf32-m32r.c:3111 elf32-m68hc1x.c:1138 elf32-mep.c:534 +#: elf32-microblaze.c:1231 elf32-moxie.c:282 elf32-msp430.c:486 elf32-mt.c:395 +#: elf32-openrisc.c:404 elf32-score.c:2731 elf32-score7.c:2540 +#: elf32-spu.c:5042 elf32-v850.c:2143 elf32-xstormy16.c:941 elf64-mmix.c:1522 msgid "internal error: out of range error" msgstr "intern fejl: uden for intervallet" -#: elf-m10200.c:450 elf-m10300.c:660 elf32-arm.h:2088 elf32-avr.c:837 -#: elf32-cris.c:1407 elf32-d10v.c:485 elf32-fr30.c:639 elf32-frv.c:813 -#: elf32-h8300.c:552 elf32-i860.c:1035 elf32-m32r.c:1282 elf32-openrisc.c:443 -#: elf32-v850.c:1695 elf32-xstormy16.c:937 elf64-mmix.c:1306 elfxx-mips.c:5264 +#: elf-m10200.c:454 elf-m10300.c:1564 elf32-avr.c:1267 elf32-bfin.c:3197 +#: elf32-cr16.c:1486 elf32-cr16c.c:784 elf32-cris.c:2081 elf32-crx.c:926 +#: elf32-d10v.c:513 elf32-fr30.c:613 elf32-frv.c:4115 elf32-h8300.c:513 +#: elf32-i860.c:1215 elf32-iq2000.c:688 elf32-lm32.c:1172 elf32-m32c.c:557 +#: elf32-m32r.c:3115 elf32-m68hc1x.c:1142 elf32-mep.c:538 +#: elf32-microblaze.c:1235 elf32-moxie.c:286 elf32-msp430.c:490 +#: elf32-openrisc.c:408 elf32-score.c:2735 elf32-score7.c:2544 +#: elf32-spu.c:5046 elf32-v850.c:2147 elf32-xstormy16.c:945 elf64-mmix.c:1526 +#: elfxx-mips.c:9186 msgid "internal error: unsupported relocation error" -msgstr "intern fejl: relokeringen understøttes ikke" +msgstr "intern fejl: relokeringen understøttes ikke" -#: elf-m10200.c:454 elf-m10300.c:664 elf32-arm.h:2092 elf32-d10v.c:489 -#: elf32-h8300.c:556 elf32-m32r.c:1286 +#: elf-m10200.c:458 elf32-cr16.c:1490 elf32-cr16c.c:788 elf32-crx.c:930 +#: elf32-d10v.c:517 elf32-h8300.c:517 elf32-lm32.c:1176 elf32-m32r.c:3119 +#: elf32-m68hc1x.c:1146 elf32-microblaze.c:1239 elf32-score.c:2739 +#: elf32-score7.c:2548 elf32-spu.c:5050 msgid "internal error: dangerous error" msgstr "intern fejl: farlig fejl" -#: elf-m10200.c:458 elf-m10300.c:668 elf32-arm.h:2096 elf32-avr.c:845 -#: elf32-cris.c:1415 elf32-d10v.c:493 elf32-fr30.c:647 elf32-frv.c:821 -#: elf32-h8300.c:560 elf32-i860.c:1043 elf32-m32r.c:1290 elf32-openrisc.c:451 -#: elf32-v850.c:1715 elf32-xstormy16.c:945 elf64-mmix.c:1314 +#: elf-m10200.c:462 elf-m10300.c:1577 elf32-avr.c:1275 elf32-bfin.c:3205 +#: elf32-cr16.c:1494 elf32-cr16c.c:792 elf32-cris.c:2089 elf32-crx.c:934 +#: elf32-d10v.c:521 elf32-fr30.c:621 elf32-frv.c:4123 elf32-h8300.c:521 +#: elf32-i860.c:1223 elf32-ip2k.c:1483 elf32-iq2000.c:696 elf32-lm32.c:1180 +#: elf32-m32c.c:565 elf32-m32r.c:3123 elf32-m68hc1x.c:1150 elf32-mep.c:546 +#: elf32-microblaze.c:1243 elf32-moxie.c:294 elf32-msp430.c:498 elf32-mt.c:403 +#: elf32-openrisc.c:416 elf32-score.c:2748 elf32-score7.c:2552 +#: elf32-spu.c:5054 elf32-v850.c:2167 elf32-xstormy16.c:953 elf64-mmix.c:1534 msgid "internal error: unknown error" msgstr "intern fejl: ukendt fejl" -#: elf.c:343 -#, c-format -msgid "%s: invalid string offset %u >= %lu for section `%s'" -msgstr "%s: ugyldig strengafstand %u >= %lu for sektionen \"%s\"" - -#: elf.c:589 -#, c-format -msgid "%s: invalid SHT_GROUP entry" -msgstr "%s: ugyldig SHT_GROUP-post" +#: elf-m10300.c:1504 elf32-arm.c:9098 elf32-i386.c:4081 elf32-m32r.c:2604 +#: elf32-m68k.c:4156 elf32-ppc.c:8089 elf32-s390.c:3010 elf32-sh.c:4223 +#: elf32-xtensa.c:3067 elf64-ppc.c:13115 elf64-s390.c:2985 elf64-sh64.c:1636 +#: elf64-x86-64.c:3719 elfxx-sparc.c:3806 +msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%B(%A+0x%lx): uløselig %s-relokering mod symbol \"%s\"" + +#: elf-m10300.c:1569 +msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)" +msgstr "fejl: upassende relokeringstype til delt bibliotek (glemte du -fpic?)" + +#: elf-m10300.c:1572 +msgid "internal error: suspicious relocation type used in shared library" +msgstr "intern fejl: mistænkelig relokeringstype brugt i delt bibliotek" + +#: elf-m10300.c:4372 elf32-arm.c:11392 elf32-cr16.c:2451 elf32-cris.c:3044 +#: elf32-hppa.c:1894 elf32-i370.c:503 elf32-i386.c:2036 elf32-lm32.c:1868 +#: elf32-m32r.c:1927 elf32-m68k.c:3252 elf32-ppc.c:4994 elf32-s390.c:1652 +#: elf32-sh.c:2931 elf32-vax.c:1040 elf64-ppc.c:6483 elf64-s390.c:1635 +#: elf64-sh64.c:3377 elf64-x86-64.c:1871 elfxx-sparc.c:2104 +#, c-format +msgid "dynamic variable `%s' is zero size" +msgstr "dynamisk variabel \"%s\" har størrelse nul" + +#: elf.c:334 +msgid "%B: invalid string offset %u >= %lu for section `%s'" +msgstr "%B: ugyldigt strengafsæt %u >= %lu for sektionen \"%s\"" + +#: elf.c:446 +msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" +msgstr "%B-symbol nummer %lu refererer SHT_SYMTAB_SHNDX-sektion, der ikke findes" + +#: elf.c:602 +msgid "%B: Corrupt size field in group section header: 0x%lx" +msgstr "%B: Beskadiget størrelsesfelt i gruppesektionshoved: 0x%lx" + +#: elf.c:638 +msgid "%B: invalid SHT_GROUP entry" +msgstr "%B: ugyldig SHT_GROUP-post" + +#: elf.c:708 +msgid "%B: no group info for section %A" +msgstr "%B: ingen gruppeinformation for sektionen %A" + +#: elf.c:737 elf.c:3090 elflink.c:10062 +msgid "%B: warning: sh_link not set for section `%A'" +msgstr "%B: advarsel: sh_link ikke givet for sektionen \"%s\"" + +#: elf.c:756 +msgid "%B: sh_link [%d] in section `%A' is incorrect" +msgstr "%B: sh_link [%d] sektionen \"%s\" er forkert" + +#: elf.c:791 +msgid "%B: unknown [%d] section `%s' in group [%s]" +msgstr "%B: ukendt [%d] sektion \"%s\" i gruppe [%s]" + +#: elf.c:1041 +msgid "%B: unable to initialize commpress status for section %s" +msgstr "%B: kan ikke initiere commpress-status for sektion %s" + +#: elf.c:1050 +msgid "%B: unable to initialize decommpress status for section %s" +msgstr "%B: kan ikke klargøre afkomprimeringsstatus for sektion %s" -#: elf.c:660 +#: elf.c:1158 #, c-format -msgid "%s: no group info for section %s" -msgstr "%s: ingen gruppeinformation for sektionen %s" - -#: elf.c:1023 msgid "" "\n" "Program Header:\n" @@ -620,7 +775,8 @@ "\n" "Programhoved:\n" -#: elf.c:1073 +#: elf.c:1200 +#, c-format msgid "" "\n" "Dynamic Section:\n" @@ -628,7 +784,8 @@ "\n" "Dynamisk sektion:\n" -#: elf.c:1202 +#: elf.c:1336 +#, c-format msgid "" "\n" "Version definitions:\n" @@ -636,7 +793,8 @@ "\n" "Versionsdefinitioner:\n" -#: elf.c:1225 +#: elf.c:1361 +#, c-format msgid "" "\n" "Version References:\n" @@ -644,1850 +802,4873 @@ "\n" "Versionsreferencer:\n" -#: elf.c:1230 +#: elf.c:1366 #, c-format msgid " required from %s:\n" -msgstr " kræves fra %s:\n" +msgstr " kræves fra %s:\n" -#: elf.c:1902 -#, c-format -msgid "%s: invalid link %lu for reloc section %s (index %u)" -msgstr "%s: ugyldig lænke %lu for relokeringssektion %s (indeks %u)" +#: elf.c:1773 +msgid "%B: invalid link %lu for reloc section %s (index %u)" +msgstr "%B: ugyldig lænke %lu for relokeringssektion %s (indeks %u)" -#: elf.c:3603 -#, c-format -msgid "%s: Not enough room for program headers (allocated %u, need %u)" -msgstr "%s: Ikke tilstrækkeligt med plads for programhoveder (allokerede %u, behøver %u)" +#: elf.c:1943 +msgid "%B: don't know how to handle allocated, application specific section `%s' [0x%8x]" +msgstr "%B: ved ikke hvordan allokeret, programspecifik sektion \"%s\" [0x%8x] skal hÃ¥ndteres" -#: elf.c:3708 -#, c-format -msgid "%s: Not enough room for program headers, try linking with -N" -msgstr "%s: Ikke tilstrækkeligt med plads for programhoveder, forsøg at lænke med -N" +#: elf.c:1955 +msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]" +msgstr "%B: ved ikke hvordan processorspecifik sektion \"%s\" [0x%8x] skal hÃ¥ndteres" -#: elf.c:3833 -#, c-format -msgid "Error: First section in segment (%s) starts at 0x%x whereas the segment starts at 0x%x" -msgstr "Fejl: Første sektion i segmentet (%s) begynder ved 0x%x mens segmentet begynder ved 0x%x" +#: elf.c:1966 +msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]" +msgstr "%B: ved ikke hvordan OS-specifik sektion \"%s\" [0x%8x] skal hÃ¥ndteres" -#: elf.c:4148 -#, c-format -msgid "%s: warning: allocated section `%s' not in segment" -msgstr "%s: advarsel: allokeret sektion \"%s\" ikke i segment" +#: elf.c:1976 +msgid "%B: don't know how to handle section `%s' [0x%8x]" +msgstr "%B: ved ikke hvordan sektion \"%s\" [0x%8x] skal hÃ¥ndteres" -#: elf.c:4472 +#: elf.c:2603 #, c-format -msgid "%s: symbol `%s' required but not present" -msgstr "%s: symbol \"%s\" kræves, men er ikke tilstede" +msgid "warning: section `%A' type changed to PROGBITS" +msgstr "advarsel: typen af sektionen \"%A\" ændret til PROGBITS" -#: elf.c:4749 -#, c-format -msgid "%s: warning: Empty loadable segment detected, is this intentional ?\n" -msgstr "%s: advarsel: Tomt indlæsningsbart segment opdaget, er dette meningen?\n" +#: elf.c:3047 +msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'" +msgstr "%B: sh_link af sektion \"%A\" peger pÃ¥ forkastet sektion \"%A\" i \"%B\"" -#: elf.c:6193 -#, c-format -msgid "%s: unsupported relocation type %s" -msgstr "%s: relokeringstypen %s understøttes ikke" +#: elf.c:3070 +msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'" +msgstr "%B: sh_link af sektion \"%A\" peger pÃ¥ fjernet sektion \"%A\" af \"%B\"" -#: elf32-arm.h:1221 -#, c-format -msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." -msgstr "%s: Advarsel: Arm BLX-instruktion bruger Arm-funktionen \"%s\" som mål." +#: elf.c:4480 +msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section" +msgstr "%B: Første sektion i segmentet PT_DYNAMIC er ikke .dynamic-sektionen" -#: elf32-arm.h:1417 -#, c-format -msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." -msgstr "%s: Advarsel: Thumb BLX-instruktionen bruger thumb-funktionen \"%s\" som mål." +#: elf.c:4507 +msgid "%B: Not enough room for program headers, try linking with -N" +msgstr "%s: Ikke tilstrækkeligt med plads til programhoveder, forsøg at lænke med -N" -#: elf32-arm.h:1914 elf32-sh.c:4125 -#, c-format -msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section" -msgstr "%s(%s+0x%lx): %s relokering mod SEC_MERGE-sektion" +#: elf.c:4594 +msgid "%B: section %A lma %#lx adjusted to %#lx" +msgstr "%B: sektion %A lma %#lx justeret til %#lx" -#: elf32-arm.h:2008 -#, c-format -msgid "%s: warning: unresolvable relocation %d against symbol `%s' from %s section" -msgstr "%s: advarsel: uløselig relokering %d mod symbol \"%s\" fra sektionen %s" +#: elf.c:4713 +msgid "%B: section `%A' can't be allocated in segment %d" +msgstr "%B: sektion \"%A\" kan ikke allokeres i segment %d" -#: elf32-arm.h:2176 -#, c-format -msgid "Warning: Clearing the interworking flag of %s because non-interworking code in %s has been linked with it" -msgstr "Advarsel: Fjerner samvirkendeflaget i %s eftersom ikke-samvirkende kode i %s er lænket med det" +#: elf.c:4761 +msgid "%B: warning: allocated section `%s' not in segment" +msgstr "%B: advarsel: allokeret sektion \"%s\" ikke i segment" -#: elf32-arm.h:2271 -#, c-format -msgid "ERROR: %s is compiled for EABI version %d, whereas %s is compiled for version %d" -msgstr "FEJL: %s er oversat for EABI version %d, mens %s er oversat for version %d" +#: elf.c:5257 +msgid "%B: symbol `%s' required but not present" +msgstr "%B: symbol \"%s\" kræves, men er ikke tilstede" -#: elf32-arm.h:2285 +#: elf.c:5595 +msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n" +msgstr "%B: advarsel: Tomt indlæseligt segment opdaget, er dette meningen?\n" + +#: elf.c:6622 #, c-format -msgid "ERROR: %s is compiled for APCS-%d, whereas target %s uses APCS-%d" -msgstr "FEJL: %s er oversat for APCS-%d, mens målet %s bruger APCS-%d" +msgid "Unable to find equivalent output section for symbol '%s' from section '%s'" +msgstr "Kunne ikke finde ækvivalent uddatasektion for symbolet \"%s\" fra sektionen \"%s\"" + +#: elf.c:7611 +msgid "%B: unsupported relocation type %s" +msgstr "%B: relokeringstypen %s understøttes ikke" + +#: elf32-arm.c:3183 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: Thumb call to ARM" +msgstr "" +"%s(%s): advarsel: samvirken (interworking) er ikke aktiveret.\n" +" første forekomst: %B: Thumb-kald til ARM" + +#: elf32-arm.c:3226 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: ARM call to Thumb" +msgstr "" +"%B(%s): advarsel: samvirken (interworking) er ikke aktiveret.\n" +" første forekomst: %B: ARM-kald til Thumb" -#: elf32-arm.h:2313 +#: elf32-arm.c:3432 elf32-arm.c:4807 #, c-format -msgid "ERROR: %s uses VFP instructions, whereas %s uses FPA instructions" -msgstr "FEJL: %s bruger VFP-instruktioner, mens %s bruger FPA-instruktioner" +msgid "%s: cannot create stub entry %s" +msgstr "%s: kan ikke oprette stub-posten %s" -#: elf32-arm.h:2318 +#: elf32-arm.c:4923 #, c-format -msgid "ERROR: %s uses FPA instructions, whereas %s uses VFP instructions" -msgstr "FEJL: %s bruger FPA-instruktioner, mens %s bruger VFP-instruktioner" +msgid "unable to find THUMB glue '%s' for '%s'" +msgstr "kan ikke finde finde THUMB-klistret \"%s\" til \"%s\"" -#: elf32-arm.h:2338 +#: elf32-arm.c:4959 #, c-format -msgid "ERROR: %s uses software FP, whereas %s uses hardware FP" -msgstr "FEJL: %s bruger programmeret flydende tal, mens %s bruger maskinens flydende tal" +msgid "unable to find ARM glue '%s' for '%s'" +msgstr "kan ikke finde ARM-klistret \"%s\" til \"%s\"" + +#: elf32-arm.c:5485 +msgid "%B: BE8 images only valid in big-endian mode." +msgstr "%B: BE8-aftryk er kun gyldige i big-endian-tilstanden." + +#. Give a warning, but do as the user requests anyway. +#: elf32-arm.c:5715 +msgid "%B: warning: selected VFP11 erratum workaround is not necessary for target architecture" +msgstr "%B: advarsel: valgte omgÃ¥else af VFP11-erratum er ikke nødvendig for mÃ¥larkitekturen" + +#: elf32-arm.c:6259 elf32-arm.c:6279 +msgid "%B: unable to find VFP11 veneer `%s'" +msgstr "%B: kan ikke finde VFP11-veneer \"%s\"" -#: elf32-arm.h:2343 +#: elf32-arm.c:6327 #, c-format -msgid "ERROR: %s uses hardware FP, whereas %s uses software FP" -msgstr "FEJL: %s bruger maskinens flydende tal, mens %s bruger programmeret flydende tal" +msgid "Invalid TARGET2 relocation type '%s'." +msgstr "Ugyldig TARGET2-relokeringstype \"%s\"." + +#: elf32-arm.c:6411 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: thumb call to arm" +msgstr "" +"%B(%s): advarsel: samvirken (interworking) er ikke aktiveret.\n" +" første forekomst: %B: thumb-kald til arm" + +#: elf32-arm.c:7130 +msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'." +msgstr "\\%B: Advarsel: Arm BLX-instruktion bruger Arm-funktionen \"%s\" som mÃ¥l." + +#: elf32-arm.c:7541 +msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'." +msgstr "%B: Advarsel: Thumb BLX-instruktionen bruger thumb-funktionen \"%s\" som mÃ¥l." + +#: elf32-arm.c:8223 +msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object" +msgstr "%B(%A+0x%lx): Relokering af R_ARM_TLS_LE32 er ikke tilladt i delt objekt" + +#: elf32-arm.c:8438 +msgid "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group relocations" +msgstr "%B(%A+0x%lx): Kun instruktionerne ADD og SUB er tilladt for ALU-grupperelokeringer" + +#: elf32-arm.c:8478 elf32-arm.c:8565 elf32-arm.c:8648 elf32-arm.c:8733 +msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s" +msgstr "%B(%A+0x%lx): Overløb ved opdeling af 0x%lx til grupperelokering %s" + +#: elf32-arm.c:8963 elf32-sh.c:4112 elf64-sh64.c:1544 +msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section" +msgstr "%B(%A+0x%lx): %s-relokering mod SEC_MERGE-sektion" + +#: elf32-arm.c:9074 elf32-m68k.c:4191 elf32-xtensa.c:2805 elf64-ppc.c:11689 +msgid "%B(%A+0x%lx): %s used with TLS symbol %s" +msgstr "%B(%A+0x%lx): %s bruges med TLS-symbol %s" + +#: elf32-arm.c:9075 elf32-m68k.c:4192 elf32-xtensa.c:2806 elf64-ppc.c:11690 +msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s" +msgstr "%B(%A+0x%lx): %s bruges med ikke-TLS-symbol %s" + +#: elf32-arm.c:9132 elf32-tic6x.c:1632 +msgid "out of range" +msgstr "uden for gyldigt interval" + +#: elf32-arm.c:9136 elf32-tic6x.c:1636 +msgid "unsupported relocation" +msgstr "relokeringen understøttes ikke" + +#: elf32-arm.c:9144 elf32-tic6x.c:1644 +msgid "unknown error" +msgstr "ukendt fejl" + +#: elf32-arm.c:9569 +msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it" +msgstr "Advarsel: Fjerner samvirkendeflaget (interworking) i %B eftersom ikke-samvirkende kode i %B er lænket med det" + +#: elf32-arm.c:9663 +msgid "%B: Unknown mandatory EABI object attribute %d" +msgstr "%B: Ukendt obligatorisk EABI-objekt-attribut %d" + +#: elf32-arm.c:9671 +msgid "Warning: %B: Unknown EABI object attribute %d" +msgstr "Advarsel: %B: Ukendt EABI-objekt-attribut %d" + +#: elf32-arm.c:9852 +msgid "error: %B: Unknown CPU architecture" +msgstr "Fejl: %B: Ukendt CPU-arkitektur" + +#: elf32-arm.c:9890 +msgid "error: %B: Conflicting CPU architectures %d/%d" +msgstr "fejl: %B: Modstridende CPU-arkitekturer %d/%d" + +#: elf32-arm.c:9942 +msgid "Error: %B has both the current and legacy Tag_MPextension_use attributes" +msgstr "Fejl: %B har bÃ¥de nuværende og ældre Tag_MPextension_use-attributter" + +#: elf32-arm.c:9967 +msgid "error: %B uses VFP register arguments, %B does not" +msgstr "fejl: %B bruger VFP-registerargumenter, mens %B ikke gør" + +#: elf32-arm.c:10112 +msgid "error: %B: unable to merge virtualization attributes with %B" +msgstr "fejl: %B: kan ikke sammenføje virtualiseringsattributter med %B" + +#: elf32-arm.c:10138 +msgid "error: %B: Conflicting architecture profiles %c/%c" +msgstr "fejl: %B: Modstridende arkitekturprofiler %c/%c" + +#: elf32-arm.c:10239 +msgid "Warning: %B: Conflicting platform configuration" +msgstr "Advarsel: %B: Modstridende platformkonfiguration" + +#: elf32-arm.c:10248 +msgid "error: %B: Conflicting use of R9" +msgstr "fejl: %B: Modstridende brug af R9" + +#: elf32-arm.c:10260 +msgid "error: %B: SB relative addressing conflicts with use of R9" +msgstr "fejl: %B: SB-relativ adressering strider med brugen af R9" + +#: elf32-arm.c:10273 +msgid "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail" +msgstr "advarsel: %B bruger wchar_t pÃ¥ %u byte, men uddata skal bruge wchar_t pÃ¥ %u byte; brug af wchar_t-værdier pÃ¥ tværs af objekter kan gÃ¥ galt" + +#: elf32-arm.c:10304 +msgid "warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail" +msgstr "advarsel: %B bruger %s-enum'er, men uddata skal bruge %s-enum'er; brug af enum-værdier pÃ¥ tværs af objekter kan gÃ¥ galt" + +#: elf32-arm.c:10316 +msgid "error: %B uses iWMMXt register arguments, %B does not" +msgstr "fejl: %B bruger iWMMXt-registerargumenter, mens %B ikke gør" + +#: elf32-arm.c:10333 +msgid "error: fp16 format mismatch between %B and %B" +msgstr "fejl: uoverensstemmelse i fp16-format mellem %B og %B" + +#: elf32-arm.c:10357 +msgid "DIV usage mismatch between %B and %B" +msgstr "Uoverensstemmelse i DIV-forbrug mellem %B og %B" + +#: elf32-arm.c:10376 +msgid "%B has has both the current and legacy Tag_MPextension_use attributes" +msgstr "%B har bÃ¥de nuværende og ældre Tag_MPextension_use-attributter" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. -#: elf32-arm.h:2396 elf32-cris.c:2988 elf32-m68k.c:410 elf32-vax.c:543 -#: elfxx-mips.c:7756 +#. Ignore init flag - it may not be set, despite the flags field containing valid data. +#: elf32-arm.c:10468 elf32-bfin.c:5065 elf32-cris.c:4162 elf32-m68hc1x.c:1282 +#: elf32-m68k.c:1235 elf32-score.c:3996 elf32-score7.c:3803 elf32-vax.c:528 +#: elfxx-mips.c:12842 #, c-format msgid "private flags = %lx:" msgstr "private flag = %lx:" -#: elf32-arm.h:2405 +#: elf32-arm.c:10477 +#, c-format msgid " [interworking enabled]" msgstr " [samvirkende er aktiveret]" -#: elf32-arm.h:2413 +#: elf32-arm.c:10485 +#, c-format msgid " [VFP float format]" -msgstr " [VFP-flydende talsformat]" +msgstr " [VFP-flydendetalsformat]" + +#: elf32-arm.c:10487 +#, c-format +msgid " [Maverick float format]" +msgstr " [Maverick-flydendetalformat]" -#: elf32-arm.h:2415 +#: elf32-arm.c:10489 +#, c-format msgid " [FPA float format]" -msgstr " [FPA-flydende talsformat]" +msgstr " [FPA-flydendetalformat]" -#: elf32-arm.h:2424 +#: elf32-arm.c:10498 +#, c-format msgid " [new ABI]" msgstr " [nyt ABI]" -#: elf32-arm.h:2427 +#: elf32-arm.c:10501 +#, c-format msgid " [old ABI]" msgstr " [gammelt ABI]" -#: elf32-arm.h:2430 +#: elf32-arm.c:10504 +#, c-format msgid " [software FP]" msgstr " [programmeret FP]" -#: elf32-arm.h:2438 +#: elf32-arm.c:10513 +#, c-format msgid " [Version1 EABI]" msgstr " [Version1 EABI]" -#: elf32-arm.h:2441 elf32-arm.h:2452 +#: elf32-arm.c:10516 elf32-arm.c:10527 +#, c-format msgid " [sorted symbol table]" msgstr " [sorteret symboltabel]" -#: elf32-arm.h:2443 elf32-arm.h:2454 +#: elf32-arm.c:10518 elf32-arm.c:10529 +#, c-format msgid " [unsorted symbol table]" msgstr " [usorteret symboltabel]" -#: elf32-arm.h:2449 +#: elf32-arm.c:10524 +#, c-format msgid " [Version2 EABI]" msgstr " [Version2 EABI]" -#: elf32-arm.h:2457 +#: elf32-arm.c:10532 +#, c-format msgid " [dynamic symbols use segment index]" msgstr " [dynamiske symboler bruger segmentindeks]" -#: elf32-arm.h:2460 +#: elf32-arm.c:10535 +#, c-format msgid " [mapping symbols precede others]" -msgstr " [mapningssymboler foretrækkes frem for andre]" +msgstr " [mapningssymboler foretrækkes frem for andre]" + +#: elf32-arm.c:10542 +#, c-format +msgid " [Version3 EABI]" +msgstr " [Version3 EABI]" + +#: elf32-arm.c:10546 +#, c-format +msgid " [Version4 EABI]" +msgstr " [Version4 EABI]" + +#: elf32-arm.c:10550 +#, c-format +msgid " [Version5 EABI]" +msgstr " [Version5 EABI]" + +#: elf32-arm.c:10553 +#, c-format +msgid " [BE8]" +msgstr " [BE8]" + +#: elf32-arm.c:10556 +#, c-format +msgid " [LE8]" +msgstr " [LE8]" -#: elf32-arm.h:2467 +#: elf32-arm.c:10562 +#, c-format msgid " " msgstr " " -#: elf32-arm.h:2474 +#: elf32-arm.c:10569 +#, c-format msgid " [relocatable executable]" -msgstr " [relokérbar kørbar fil]" +msgstr " [relokérbar kørbar fil]" -#: elf32-arm.h:2477 +#: elf32-arm.c:10572 +#, c-format msgid " [has entry point]" msgstr " [har startpunkt]" -#: elf32-arm.h:2482 +#: elf32-arm.c:10577 +#, c-format msgid "" msgstr "" -#: elf32-avr.c:841 elf32-cris.c:1411 elf32-fr30.c:643 elf32-frv.c:817 -#: elf32-i860.c:1039 elf32-openrisc.c:447 elf32-v850.c:1699 -#: elf32-xstormy16.c:941 elf64-mmix.c:1310 +#: elf32-arm.c:10824 elf32-i386.c:1322 elf32-s390.c:1000 elf32-xtensa.c:1009 +#: elf64-s390.c:960 elf64-x86-64.c:1105 elfxx-sparc.c:1370 +msgid "%B: bad symbol index: %d" +msgstr "%B: fejlagtigt symbolindeks: %d" + +#: elf32-arm.c:10946 elf64-x86-64.c:1265 elf64-x86-64.c:1434 elfxx-mips.c:7942 +msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" +msgstr "%B: relokeringen %s mod \"%s\" kan ikke bruges nÃ¥r et delt objekt oprettes; genkompilér med -fPIC" + +#: elf32-arm.c:11948 +#, c-format +msgid "Errors encountered processing file %s" +msgstr "Stødte pÃ¥ fejl ved behandling af filen %s" + +#: elf32-arm.c:13334 +msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location" +msgstr "%B: fejl: Cortex-A8-erratum-stub er allokeret pÃ¥ et usikkert sted" + +#. There's not much we can do apart from complain if this +#. happens. +#: elf32-arm.c:13361 +msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)" +msgstr "%B: fejl: Cortex-A8-erratum-stub er uden for gyldigt interval (inddatafil for stor)" + +#: elf32-arm.c:13455 elf32-arm.c:13477 +msgid "%B: error: VFP11 veneer out of range" +msgstr "%B: fejl: VFP11-veneer uden for gyldigt interval" + +#: elf32-arm.c:14002 +msgid "error: %B is already in final BE8 format" +msgstr "fejl: %B er allerede i endeligt BE8-format" + +#: elf32-arm.c:14078 +msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d" +msgstr "fejl: Kildeobjektet %B har EABI-version %d, men mÃ¥let %B har EABI-version %d" + +#: elf32-arm.c:14094 +msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" +msgstr "fejl: %B er kompileret til APCS-%d, mens mÃ¥let %B bruger APCS-%d" + +#: elf32-arm.c:14119 +msgid "error: %B uses VFP instructions, whereas %B does not" +msgstr "fejl: %B bruger VFP-instruktioner, mens %B ikke gør" + +#: elf32-arm.c:14123 +msgid "error: %B uses FPA instructions, whereas %B does not" +msgstr "fejl: %B bruger FPA-instruktioner, mens %B ikke gør" + +#: elf32-arm.c:14133 +msgid "error: %B uses Maverick instructions, whereas %B does not" +msgstr "fejl: %B bruger Maverick-instruktioner, mens %B ikke gør" + +#: elf32-arm.c:14137 +msgid "error: %B does not use Maverick instructions, whereas %B does" +msgstr "fejl: %B bruger ikke Maverick-instruktioner, men %B gør" + +#: elf32-arm.c:14156 +msgid "error: %B uses software FP, whereas %B uses hardware FP" +msgstr "fejl: %B bruger flydende tal i software, mens %B bruger hardware" + +#: elf32-arm.c:14160 +msgid "error: %B uses hardware FP, whereas %B uses software FP" +msgstr "fejl: %B bruger flydende tal i hardware, mens %B bruger software" + +#: elf32-avr.c:1271 elf32-bfin.c:3201 elf32-cris.c:2085 elf32-fr30.c:617 +#: elf32-frv.c:4119 elf32-i860.c:1219 elf32-ip2k.c:1479 elf32-iq2000.c:692 +#: elf32-m32c.c:561 elf32-mep.c:542 elf32-moxie.c:290 elf32-msp430.c:494 +#: elf32-mt.c:399 elf32-openrisc.c:412 elf32-v850.c:2151 elf32-xstormy16.c:949 +#: elf64-mmix.c:1530 msgid "internal error: dangerous relocation" msgstr "intern fejl: farlig relokering" -#: elf32-cris.c:949 +#: elf32-avr.c:2400 elf32-hppa.c:598 elf32-m68hc1x.c:166 elf64-ppc.c:4175 +msgid "%B: cannot create stub entry %s" +msgstr "%B: kan ikke oprette stub-post %s" + +#: elf32-bfin.c:1575 +msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'" +msgstr "%B(%A+0x%lx): uløselig relokering mod symbol \"%s\"" + +#: elf32-bfin.c:1608 elf32-i386.c:4123 elf32-m68k.c:4233 elf32-s390.c:3062 +#: elf64-s390.c:3037 elf64-x86-64.c:3759 +msgid "%B(%A+0x%lx): reloc against `%s': error %d" +msgstr "%B(%A+0x%lx): relokering mod \"%s\": fejl %d" + +#: elf32-bfin.c:2707 +msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend" +msgstr "%B: relokering ved \"%A+0x%x\" refererer til symbolet \"%s\" med addend forskellig fra nul" + +#: elf32-bfin.c:2721 elf32-frv.c:2901 +msgid "relocation references symbol not defined in the module" +msgstr "relokering refererer symbol som ikke er defineret i modulet" + +#: elf32-bfin.c:2818 +msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend" +msgstr "R_BFIN_FUNCDESC refererer til dynamisk symbol med addend forskellig fra nul" + +#: elf32-bfin.c:2859 elf32-bfin.c:2982 elf32-frv.c:3638 elf32-frv.c:3759 +msgid "cannot emit fixups in read-only section" +msgstr "kan ikke udsende fixup'er i skrivebeskyttet sektion %s" + +#: elf32-bfin.c:2890 elf32-bfin.c:3020 elf32-frv.c:3669 elf32-frv.c:3803 +#: elf32-lm32.c:1103 elf32-sh.c:5021 +msgid "cannot emit dynamic relocations in read-only section" +msgstr "kan ikke udsende dynamiske relokeringer i skrivebeskyttet sektion" + +#: elf32-bfin.c:2940 +msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend" +msgstr "R_BFIN_FUNCDESC_VALUE refererer dynamisk symbol med addend forskellig fra nul" + +#: elf32-bfin.c:3105 +msgid "relocations between different segments are not supported" +msgstr "relokeringer mellem forskellige segmenter understøttes ikke" + +#: elf32-bfin.c:3106 +msgid "warning: relocation references a different segment" +msgstr "advarsel: relokering refererer til et andet segment" + +#: elf32-bfin.c:4957 elf32-frv.c:6406 +msgid "%B: unsupported relocation type %i" +msgstr "%B: relokeringstypen %i understøttes ikke" + +#: elf32-bfin.c:5111 elf32-frv.c:6814 #, c-format -msgid "%s: unresolvable relocation %s against symbol `%s' from %s section" -msgstr "%s: uløselig relokering %s mod symbol \"%s\" fra sektionen %s" +msgid "%s: cannot link non-fdpic object file into fdpic executable" +msgstr "%s: kan ikke lænke ikke-fdpic-objektfil ind i fdpic-eksekveringsfil" -#: elf32-cris.c:1012 +#: elf32-bfin.c:5115 elf32-frv.c:6818 #, c-format -msgid "%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section" -msgstr "%s: Hverken nogen PLT eller GOT for relokering %s mod symbol \"%s\" fra sektionen %s" +msgid "%s: cannot link fdpic object file into non-fdpic executable" +msgstr "%s: kan ikke lænke fdpic-objektfil ind i en ikke-fdpic-eksekveringsfil" -#: elf32-cris.c:1015 elf32-cris.c:1141 +#: elf32-cris.c:1172 +msgid "%B, section %A: unresolvable relocation %s against symbol `%s'" +msgstr "%B, sektion %A: uløselig relokering %s mod symbol \"%s\"" + +#: elf32-cris.c:1234 +msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'" +msgstr "%B, sektion %A: Hverken nogen PLT eller GOT til relokering %s mod symbol \"%s\"" + +#: elf32-cris.c:1236 +msgid "%B, section %A: No PLT for relocation %s against symbol `%s'" +msgstr "%B, sektion %A: Ingen PLT til relokering %s mod symbol \"%s\"" + +#: elf32-cris.c:1242 elf32-cris.c:1375 elf32-cris.c:1635 elf32-cris.c:1718 +#: elf32-cris.c:1871 msgid "[whose name is lost]" msgstr "[hvis navn er tabt]" -#: elf32-cris.c:1130 -#, c-format -msgid "%s: relocation %s with non-zero addend %d against local symbol from %s section" -msgstr "%s: relokering %s med ikke-tomt addendum %d mod lokalt symbol fra sektionen %s" - -#: elf32-cris.c:1137 -#, c-format -msgid "%s: relocation %s with non-zero addend %d against symbol `%s' from %s section" -msgstr "%s: relokering %s med ikke-tomt addendum %d mod symbol \"%s\" fra sektionen %s" +#: elf32-cris.c:1361 +msgid "%B, section %A: relocation %s with non-zero addend %d against local symbol" +msgstr "%B, sektion %A: relokering %s med ikke-tom addend %d mod lokalt symbol" + +#: elf32-cris.c:1369 elf32-cris.c:1712 elf32-cris.c:1865 +msgid "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'" +msgstr "%B, sektion %A: relokering %s med ikke-tom addend %d mod symbol \"%s\"" + +#: elf32-cris.c:1395 +msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'" +msgstr "%B, sektion %A: relokeringen %s er ikke tilladt for globalt symbol: \"%s\"" + +#: elf32-cris.c:1411 +msgid "%B, section %A: relocation %s with no GOT created" +msgstr "%B, sektion %A: relokering %s oprettet uden nogen GOT" + +#. We shouldn't get here for GCC-emitted code. +#: elf32-cris.c:1626 +msgid "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?" +msgstr "%B, sektion %A: relokeringen %s har en udefineret reference til \"%s\". MÃ¥ske er der noget galt med erklæringen?" + +#: elf32-cris.c:1998 +msgid "%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?" +msgstr "%B: relokeringen %A er ikke tilladt for symbol: \"%s\", som er defineret uden for programmet. MÃ¥ske er der noget galt med erklæringen?" + +#: elf32-cris.c:2051 +msgid "(too many global variables for -fpic: recompile with -fPIC)" +msgstr "(for mange globale variable til -fpic: genkompilér med -fPIC)" + +#: elf32-cris.c:2058 +msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)" +msgstr "(trÃ¥dlokale data er for store til -fpic eller -msmall-tls: genkompilér med -fPIC eller -mno-small-tls)" -#: elf32-cris.c:1155 -#, c-format -msgid "%s: relocation %s is not allowed for global symbol: `%s' from %s section" -msgstr "%s: relokeringen %s er ikke tilladt for globalt symbol: \"%s\" fra sektionen %s" +#: elf32-cris.c:3248 +msgid "" +"%B, section %A:\n" +" v10/v32 compatible object %s must not contain a PIC relocation" +msgstr "" +"%B, sektion %A:\n" +" v10/v32-kompatibelt objekt %s mÃ¥ ikke indeholde en PIC-relokering" -#: elf32-cris.c:1170 -#, c-format -msgid "%s: relocation %s in section %s with no GOT created" -msgstr "%s: relokering %s i sektionen %s uden GOT oprettet" +#: elf32-cris.c:3353 +msgid "" +"%B, section %A:\n" +" relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC" +msgstr "" +"%B, sektion %A:\n" +" relokeringen %s er ikke gyldig i et delt objekt; dette er typisk en fejl i tilvalgende - genkompilér med -fPIC" -#: elf32-cris.c:1288 -#, c-format -msgid "%s: Internal inconsistency; no relocation section %s" -msgstr "%s: Intern inkonsistens; ingen relokeringssektion %s" +#: elf32-cris.c:3567 +msgid "" +"%B, section %A:\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%B, sektion %A:\n" +" relokeringen %s bør ikke bruges i et delt objekt; genoversæt med -fPIC" -#: elf32-cris.c:2514 -#, c-format +#: elf32-cris.c:3992 msgid "" -"%s, section %s:\n" +"%B, section `%A', to symbol `%s':\n" " relocation %s should not be used in a shared object; recompile with -fPIC" msgstr "" -"%s, sektion %s:\n" -" relokeringen %s bør ikke bruges i et delt objekt; genoversæt med -fPIC" +"%B, sektion %A til symbol \"%s\":\n" +" relokeringen %s bør ikke bruges i et delt objekt; genkompilér med -fPIC" + +#: elf32-cris.c:4111 +msgid "Unexpected machine number" +msgstr "Uventet maskinnummer" -#: elf32-cris.c:2991 +#: elf32-cris.c:4165 +#, c-format msgid " [symbols have a _ prefix]" -msgstr " [symboler har et _-præfiks]" +msgstr " [symboler har et _-præfiks]" -#: elf32-cris.c:3030 +#: elf32-cris.c:4168 #, c-format -msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols" -msgstr "%s: bruger symboler med _-præfiks, men skriver fil med symboler uden præfiks" +msgid " [v10 and v32]" +msgstr " [v10 og v32]" -#: elf32-cris.c:3031 +#: elf32-cris.c:4171 #, c-format -msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols" -msgstr "%s: bruger symboler uden præfiks, men skriver fil med symboler med _-præfiks" +msgid " [v32]" +msgstr " [v32]" + +#: elf32-cris.c:4216 +msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols" +msgstr "%B: bruger symboler med _-præfiks, men skriver fil med symboler uden præfiks" + +#: elf32-cris.c:4217 +msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols" +msgstr "%B: bruger symboler uden præfiks, men skriver fil med symboler med _-præfiks" + +#: elf32-cris.c:4236 +msgid "%B contains CRIS v32 code, incompatible with previous objects" +msgstr "%B indeholder CRIS v32-kode, som er inkompatibel med tidligere objekter" + +#: elf32-cris.c:4238 +msgid "%B contains non-CRIS-v32 code, incompatible with previous objects" +msgstr "%B indeholder ikke-CRIS-v32-kode, som er inkompatibel med tidligere objekter" + +#: elf32-frv.c:1509 elf32-frv.c:1658 +msgid "relocation requires zero addend" +msgstr "relokering kræver addend pÃ¥ nul" + +#: elf32-frv.c:2888 +msgid "%B(%A+0x%x): relocation to `%s+%x' may have caused the error above" +msgstr "%B(%A+0x%x): relokering til \"%s+%x\" kan have forÃ¥rsaget ovenstÃ¥ende fejl" + +#: elf32-frv.c:2977 +msgid "R_FRV_GETTLSOFF not applied to a call instruction" +msgstr "R_FRV_GETTLSOFF ikke anvendt til call-instruktion" + +#: elf32-frv.c:3019 +msgid "R_FRV_GOTTLSDESC12 not applied to an lddi instruction" +msgstr "R_FRV_GOTTLSDESC12 ikke anvendt til en lddi-instruktion" + +#: elf32-frv.c:3090 +msgid "R_FRV_GOTTLSDESCHI not applied to a sethi instruction" +msgstr "R_FRV_GOTTLSDESCHI ikke anvendt til en sethi-instruktion" + +#: elf32-frv.c:3127 +msgid "R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction" +msgstr "R_FRV_GOTTLSDESCLO ikke anvendt til en setlo- eller setlos-instruktion" + +#: elf32-frv.c:3175 +msgid "R_FRV_TLSDESC_RELAX not applied to an ldd instruction" +msgstr "R_FRV_TLSDESC_RELAX ikke anvendt til en ldd-instruktion" + +# virkelig? +#: elf32-frv.c:3259 +msgid "R_FRV_GETTLSOFF_RELAX not applied to a calll instruction" +msgstr "R_FRV_GETTLSOFF_RELAX ikke anvendt til en calll-instruktion" + +#: elf32-frv.c:3314 +msgid "R_FRV_GOTTLSOFF12 not applied to an ldi instruction" +msgstr "R_FRV_GOTTLSOFF12 ikke anvendt til en ldi-instruktion" -#: elf32-frv.c:1217 +#: elf32-frv.c:3344 +msgid "R_FRV_GOTTLSOFFHI not applied to a sethi instruction" +msgstr "R_FRV_GOTTLSOFFHI ikke anvendt til en sethi-instruktion" + +#: elf32-frv.c:3373 +msgid "R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction" +msgstr "R_FRV_GOTTLSOFFLO ikke anvendt til en setlos-instruktion" + +#: elf32-frv.c:3404 +msgid "R_FRV_TLSOFF_RELAX not applied to an ld instruction" +msgstr "R_FRV_TLSOFF_RELAX ikke anvendt til en ld-instruktion" + +#: elf32-frv.c:3449 +msgid "R_FRV_TLSMOFFHI not applied to a sethi instruction" +msgstr "R_FRV_TLSMOFFHI ikke anvendt til en sethi-instruktion" + +#: elf32-frv.c:3476 +msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction" +msgstr "R_FRV_TLSMOFFLO ikke anvendt til en setlos-instruktion" + +#: elf32-frv.c:3597 +msgid "R_FRV_FUNCDESC references dynamic symbol with nonzero addend" +msgstr "R_FRV_FUNCDESC refererer dynamisk symbol med addend forskellig fra nul" + +#: elf32-frv.c:3717 +msgid "R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend" +msgstr "R_FRV_FUNCDESC_VALUE refererer dynamisk symbol med addend forskellig fra nul" + +#: elf32-frv.c:3974 elf32-frv.c:4130 +msgid "%B(%A+0x%lx): reloc against `%s': %s" +msgstr "%B(%A+0x%lx): relokering mod \"%s\": %s" + +#: elf32-frv.c:3976 elf32-frv.c:3980 +msgid "relocation references a different segment" +msgstr "relokering refererer et andet segment" + +#: elf32-frv.c:6728 #, c-format msgid "%s: compiled with %s and linked with modules that use non-pic relocations" -msgstr "%s: oversat med %s og lænket med moduler som bruger ikke-pic-relokering" +msgstr "%s: oversat med %s og lænket med moduler som bruger ikke-pic-relokering" -#: elf32-frv.c:1267 +#: elf32-frv.c:6781 elf32-iq2000.c:845 elf32-m32c.c:807 #, c-format msgid "%s: compiled with %s and linked with modules compiled with %s" -msgstr "%s: oversat med %s og lænket med moduler som oversattes med %s" +msgstr "%s: oversat med %s og lænket med moduler som oversattes med %s" -#: elf32-frv.c:1279 +#: elf32-frv.c:6793 #, c-format msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%s: bruger andre ukendte e_flags-felter (0x%lx) end tidligere moduler (0x%lx)" -#: elf32-frv.c:1315 +#: elf32-frv.c:6843 elf32-iq2000.c:882 elf32-m32c.c:843 elf32-mt.c:576 +#: elf32-rx.c:2925 #, c-format msgid "private flags = 0x%lx:" msgstr "private flag = 0x%lx:" -#: elf32-gen.c:82 elf64-gen.c:82 -#, c-format -msgid "%s: Relocations in generic ELF (EM: %d)" -msgstr "%s: Relokering i generisk ELF (EM: %d)" +#: elf32-gen.c:69 elf64-gen.c:69 +msgid "%B: Relocations in generic ELF (EM: %d)" +msgstr "%B: Relokeringer i generisk ELF (EM: %d)" + +#: elf32-hppa.c:850 elf32-hppa.c:3610 +msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections" +msgstr "%B(%A+0x%lx): kan ikke nÃ¥ %s, genkompilér med -ffunction-sections" + +#: elf32-hppa.c:1284 +msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC" +msgstr "%B: relokeringen %s kan ikke bruges nÃ¥r et delt objekt oprettes; genkompilér med -fPIC" + +#: elf32-hppa.c:2803 +msgid "%B: duplicate export stub %s" +msgstr "%B: dobbelt eksportstub %s" + +#: elf32-hppa.c:3449 +msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link" +msgstr "%B(%A+0x%lx): %s-\"fixup\" for instruktion 0x%x understøttes ikke i et ikke-delt lænke" + +#: elf32-hppa.c:4296 +msgid "%B(%A+0x%lx): cannot handle %s for %s" +msgstr "%B(%A+0x%lx): kan ikke hÃ¥ndtere %s til %s" -#: elf32-hppa.c:671 elf64-ppc.c:2323 -#, c-format -msgid "%s: cannot create stub entry %s" -msgstr "%s: kan ikke oprette stubstarten %s" +#: elf32-hppa.c:4608 +msgid ".got section not immediately after .plt section" +msgstr ".got-sektionen følger ikke umiddelbart efter .plt-sektion" -#: elf32-hppa.c:956 elf32-hppa.c:3555 -#, c-format -msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" -msgstr "%s(%s+0x%lx): kan ikke nå %s, genoversæt med -ffunction-sections" +#. Unknown relocation. +#: elf32-i386.c:371 elf32-m68k.c:383 elf32-ppc.c:1674 elf32-s390.c:379 +#: elf32-tic6x.c:1563 elf64-ppc.c:2284 elf64-s390.c:403 elf64-x86-64.c:234 +msgid "%B: invalid relocation type %d" +msgstr "%B: ugyldig relokeringstype %d" -#: elf32-hppa.c:1338 elf64-x86-64.c:673 -#, c-format -msgid "%s: relocation %s can not be used when making a shared object; recompile with -fPIC" -msgstr "%s: relokeringen %s kan ikke bruges når et delt objekt oprettes; genoversæt med -fPIC" +#: elf32-i386.c:1265 elf64-x86-64.c:1049 +msgid "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed" +msgstr "%B: TLS-overgang fra %s til %s mod \"%s\" ved 0x%lx i afsnittet \"%A\" mislykkedes" -#: elf32-hppa.c:1358 -#, c-format -msgid "%s: relocation %s should not be used when making a shared object; recompile with -fPIC" -msgstr "%s: relokeringen %s bør ikke bruges når et delt objekt oprettes; genoversæt med -fPIC" +#: elf32-i386.c:1408 elf32-i386.c:3068 elf64-x86-64.c:1194 elf64-x86-64.c:2780 +#: elfxx-sparc.c:3076 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" +msgstr "%B: relokeringen %s mod STT_GNU_IFUNC-symbolet \"%s\" hÃ¥ndteres ikke af %s" -#: elf32-hppa.c:1551 -#, c-format -msgid "Could not find relocation section for %s" -msgstr "Kunne ikke finde relokeringssektion for %s" +#: elf32-i386.c:1570 elf32-s390.c:1182 elf32-sh.c:6367 elf32-xtensa.c:1182 +#: elf64-s390.c:1151 elfxx-sparc.c:1547 +msgid "%B: `%s' accessed both as normal and thread local symbol" +msgstr "%B: \"%s\" tilgÃ¥s bÃ¥de som normalt symbol og trÃ¥dlokalt symbol" -#: elf32-hppa.c:2855 -#, c-format -msgid "%s: duplicate export stub %s" -msgstr "%s: dobbelt eksportstub %s" +#: elf32-i386.c:2910 +msgid "%B: unrecognized relocation (0x%x) in section `%A'" +msgstr "%B: ukendt relokering (0x%x) i sektionen \"%A\"" -#: elf32-hppa.c:3433 -#, c-format -msgid "%s(%s+0x%lx): fixing %s" -msgstr "%s(%s+0x%lx): retter %s" +#: elf32-i386.c:3317 elf64-x86-64.c:3174 +msgid "hidden symbol" +msgstr "skjult symbol" -#: elf32-hppa.c:4080 -#, c-format -msgid "%s(%s+0x%lx): cannot handle %s for %s" -msgstr "%s(%s+0x%lx): kan ikke håndtere %s for %s" +#: elf32-i386.c:3320 elf64-x86-64.c:3177 +msgid "internal symbol" +msgstr "internt symbol" -#: elf32-hppa.c:4393 -msgid ".got section not immediately after .plt section" -msgstr ".got-sektionen følger ikke umiddelbart efter .plt-sektion" +#: elf32-i386.c:3323 elf64-x86-64.c:3180 +msgid "protected symbol" +msgstr "beskyttet symbol" -#: elf32-i386.c:379 -#, c-format -msgid "%s: invalid relocation type %d" -msgstr "%s: ugyldig relokeringstype %d" +#: elf32-i386.c:3326 elf64-x86-64.c:3183 +msgid "symbol" +msgstr "symbol" -#: elf32-i386.c:876 elf32-s390.c:649 elf64-s390.c:595 elf64-x86-64.c:591 -#, c-format -msgid "%s: bad symbol index: %d" -msgstr "%s: fejlagtigt symbolindeks: %d" +#: elf32-i386.c:3331 +msgid "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object" +msgstr "%B: relokeringen R_386_GOTOFF mod udefineret %s \"%s\" kan ikke bruges nÃ¥r et delt objekt oprettes" -#: elf32-i386.c:948 -#, c-format -msgid "%s: `%s' accessed both as normal and thread local symbol" -msgstr "%s: \"%s\" kaldt både som lokalt normalt symbol og lokalt trådsymbol" +#: elf32-i386.c:3341 +msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object" +msgstr "%B: relokeringen R_386_GOTOFF mod beskyttet funktion \"%s\" kan ikke bruges nÃ¥r et delt objekt oprettes" -#: elf32-i386.c:1072 elf32-s390.c:808 elf64-ppc.c:2827 elf64-s390.c:759 -#: elf64-x86-64.c:761 +#: elf32-i386.c:4633 elf64-x86-64.c:4206 #, c-format -msgid "%s: bad relocation section name `%s'" -msgstr "%s: fejlagtig relokeringssektionsnavn \"%s\"" +msgid "discarded output section: `%A'" +msgstr "forkastet uddatasektion: \"%A\"" -#: elf32-i386.c:1159 elf64-alpha.c:4768 -#, c-format -msgid "%s: TLS local exec code cannot be linked into shared objects" -msgstr "%s: lokal TLS-eksekveringskode kan ikke lænkes ind i delte objekter" +#: elf32-ip2k.c:857 elf32-ip2k.c:863 elf32-ip2k.c:930 elf32-ip2k.c:936 +msgid "ip2k relaxer: switch table without complete matching relocation information." +msgstr "ip2k relaxer: switch-tabel uden fuldstændig passende relokeringsinformation." + +#: elf32-ip2k.c:880 elf32-ip2k.c:963 +msgid "ip2k relaxer: switch table header corrupt." +msgstr "ip2k relaxer: switch-tabelhoved beskadiget." -#: elf32-i386.c:2747 elf32-s390.c:1981 elf32-sparc.c:1571 elf64-ppc.c:5918 -#: elf64-s390.c:1945 elf64-sparc.c:2578 elf64-x86-64.c:1948 +#: elf32-ip2k.c:1292 #, c-format -msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'" -msgstr "%s(%s+0x%lx): uløselig relokering mod symbol \"%s\"" +msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)." +msgstr "ip2k linker: manglende sideinstruktion ved 0x%08lx (dest = 0x%08lx)." -#: elf32-i386.c:2784 elf32-s390.c:2019 elf64-ppc.c:5977 elf64-s390.c:1983 -#: elf64-x86-64.c:1986 +#: elf32-ip2k.c:1308 #, c-format -msgid "%s(%s+0x%lx): reloc against `%s': error %d" -msgstr "%s(%s+0x%lx): relokering mod \"%s\": fejl %d" +msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)." +msgstr "ip2k linker: gentaget sideinstruktion ved 0x%08lx (dest = 0x%08lx)." -#: elf32-m32r.c:924 -msgid "SDA relocation when _SDA_BASE_ not defined" -msgstr "SDA-relokering når _SDA_BASE_ ikke er defineret" +#. Only if it's not an unresolved symbol. +#: elf32-ip2k.c:1475 +msgid "unsupported relocation between data/insn address spaces" +msgstr "ikke-understøttet relokering mellem data/insn-adresserum" -#: elf32-ia64.c:3687 elf32-m32r.c:1013 elf32-ppc.c:2987 elf64-alpha.c:4185 -#: elf64-alpha.c:4313 elf64-ia64.c:3687 +#: elf32-iq2000.c:858 elf32-m32c.c:819 #, c-format -msgid "%s: unknown relocation type %d" -msgstr "%s: ukendt relokeringstype %d" +msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "%s: bruger andre e_flags-felter (0x%lx) end tidligere moduler (0x%lx)" -#: elf32-m32r.c:1221 -#, c-format -msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" -msgstr "%s: Målet (%s) for en %s-relokering er i forkert sektion (%s)" +#: elf32-lm32.c:706 +msgid "global pointer relative relocation when _gp not defined" +msgstr "global pointer-relativ relokering, nÃ¥r _gp ikke er defineret" + +#: elf32-lm32.c:761 +msgid "global pointer relative address out of range" +msgstr "global pointer-relativ adresse er uden for det gyldige interval" + +#: elf32-lm32.c:1057 +msgid "internal error: addend should be zero for R_LM32_16_GOT" +msgstr "intern fejl: addend burde være nul for R_LM32_16_GOT" -#: elf32-m32r.c:1947 -#, c-format -msgid "%s: Instruction set mismatch with previous modules" -msgstr "%s: Instruktionsopsætning passer ikke med tidligere moduler" +#: elf32-m32r.c:1453 +msgid "SDA relocation when _SDA_BASE_ not defined" +msgstr "SDA-relokering nÃ¥r _SDA_BASE_ ikke er defineret" + +#: elf32-m32r.c:3048 +msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)" +msgstr "%B: MÃ¥let (%s) for en %s-relokering er i forkert sektion (%A)" -#: elf32-m32r.c:1970 +#: elf32-m32r.c:3576 +msgid "%B: Instruction set mismatch with previous modules" +msgstr "%B: Instruktionssæt passer ikke med tidligere moduler" + +#: elf32-m32r.c:3597 #, c-format msgid "private flags = %lx" msgstr "private flag = %lx" -#: elf32-m32r.c:1975 +#: elf32-m32r.c:3602 +#, c-format msgid ": m32r instructions" msgstr ": m32r-instruktioner" -#: elf32-m32r.c:1976 +#: elf32-m32r.c:3603 +#, c-format msgid ": m32rx instructions" msgstr ": m32rx-instruktioner" -#: elf32-m68k.c:413 -msgid " [cpu32]" -msgstr " [cpu32]" +#: elf32-m32r.c:3604 +#, c-format +msgid ": m32r2 instructions" +msgstr ": m32r2-instruktioner" -#: elf32-m68k.c:416 -msgid " [m68000]" -msgstr " [m68000]" +#: elf32-m68hc1x.c:1050 +#, c-format +msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution" +msgstr "Reference til fjernsymbol \"%s\", der bruger en forkert relokering, kan resultere i forkert udførelse" -#: elf32-mcore.c:354 elf32-mcore.c:457 +#: elf32-m68hc1x.c:1073 #, c-format -msgid "%s: Relocation %s (%d) is not currently supported.\n" -msgstr "%s: Relokering %s (%d) understøttes ikke i øjeblikket.\n" +msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)" +msgstr "bankadresse [%lx:%04lx] (%lx) er ikke i samme bank som nuværende bankadresse [%lx:%04lx] (%lx)" -#: elf32-mcore.c:442 +#: elf32-m68hc1x.c:1092 #, c-format -msgid "%s: Unknown relocation type %d\n" -msgstr "%s: Ukendt relokeringstype %d\n" +msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx" +msgstr "reference til bankadresse [%lx:%04lx] i det normale adresserum ved %04lx" -#: elf32-mips.c:1152 elf64-mips.c:1783 -msgid "32bits gp relative relocation occurs for an external symbol" -msgstr "32-bit gp-relativ relokering forekom for et eksternt symbol" +#: elf32-m68hc1x.c:1225 +msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers" +msgstr "%B: lænker filer, der er kompileret til 16 bit-heltal (-mshort), og andre til 32 bit-heltal" -#: elf32-mips.c:1301 -#, c-format -msgid "Linking mips16 objects into %s format is not supported" -msgstr "Lænkning af mips16-objekter til %s-format understøttes ikke" +#: elf32-m68hc1x.c:1232 +msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double" +msgstr "%B: lænker filer, der er kompileret til 32 bit-double (-fshort-double), og andre til 64 bit-double" -#: elf32-ppc.c:1460 -#, c-format -msgid "%s: compiled with -mrelocatable and linked with modules compiled normally" -msgstr "%s: oversat med -mrelocatable og lænket med moduler som oversattes normalt" +#: elf32-m68hc1x.c:1241 +msgid "%B: linking files compiled for HCS12 with others compiled for HC12" +msgstr "%B: lænkning af filer kompileret til HCS12 med andre, der er kompileret til HC12" -#: elf32-ppc.c:1468 -#, c-format -msgid "%s: compiled normally and linked with modules compiled with -mrelocatable" -msgstr "%s: oversat normalt og lænket med moduler som oversattes med -mrelocatable" +#: elf32-m68hc1x.c:1257 elf32-ppc.c:4232 elf64-sparc.c:703 elfxx-mips.c:12704 +msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "%B: bruger andre e_flags-felter (0x%lx) end tidligere moduler (0x%lx)" -#: elf32-ppc.c:1494 elf64-sparc.c:2989 elfxx-mips.c:7713 +#: elf32-m68hc1x.c:1285 #, c-format -msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" -msgstr "%s: bruger andre e_flags-felter (0x%lx) end tidligere moduler (0x%lx)" +msgid "[abi=32-bit int, " +msgstr "[abi=32-bit int, " -#: elf32-ppc.c:1592 +#: elf32-m68hc1x.c:1287 #, c-format -msgid "%s: Unknown special linker type %d" -msgstr "%s: Ukendt speciallænkertype %d" +msgid "[abi=16-bit int, " +msgstr "[abi=16-bit int, " -#: elf32-ppc.c:2273 elf32-ppc.c:2307 elf32-ppc.c:2342 +#: elf32-m68hc1x.c:1290 #, c-format -msgid "%s: relocation %s cannot be used when making a shared object" -msgstr "%s: relokeringen %s kan ikke bruges når et delt objekt oprettes" +msgid "64-bit double, " +msgstr "64-bit double, " -#: elf32-ppc.c:3126 elf64-ppc.c:5473 +#: elf32-m68hc1x.c:1292 #, c-format -msgid "%s: unknown relocation type %d for symbol %s" -msgstr "%s: ukendt relokeringstype %d for symbol %s" +msgid "32-bit double, " +msgstr "32-bit double, " -#: elf32-ppc.c:3482 elf32-ppc.c:3503 elf32-ppc.c:3553 +#: elf32-m68hc1x.c:1295 #, c-format -msgid "%s: The target (%s) of a %s relocation is in the wrong output section (%s)" -msgstr "%s: Målet (%s) for en %s-relokering er i forkert uddatasektion (%s)" +msgid "cpu=HC11]" +msgstr "cpu=HC11]" -#: elf32-ppc.c:3619 +#: elf32-m68hc1x.c:1297 #, c-format -msgid "%s: Relocation %s is not yet supported for symbol %s." -msgstr "%s: Relokeringen %s understøttes ikke endnu for symbol %s." +msgid "cpu=HCS12]" +msgstr "cpu=HCS12]" -#: elf32-sh.c:1964 +#: elf32-m68hc1x.c:1299 #, c-format -msgid "%s: 0x%lx: warning: bad R_SH_USES offset" -msgstr "%s: 0x%lx: advarsel: fejlagtig R_SH_USES-afstand" +msgid "cpu=HC12]" +msgstr "cpu=HC12]" -#: elf32-sh.c:1976 +# ? +#: elf32-m68hc1x.c:1302 #, c-format -msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" -msgstr "%s: 0x%lx: advarsel: R_SH_USES peger til ukendt instruktion 0x%x" +msgid " [memory=bank-model]" +msgstr " [memory=bank-model]" -#: elf32-sh.c:1993 +# ? +#: elf32-m68hc1x.c:1304 #, c-format -msgid "%s: 0x%lx: warning: bad R_SH_USES load offset" -msgstr "%s: 0x%lx: advarsel: fejlagtig R_SH_USES-indlæsningsafstand" +msgid " [memory=flat]" +msgstr " [memory=flat]" -#: elf32-sh.c:2008 -#, c-format -msgid "%s: 0x%lx: warning: could not find expected reloc" -msgstr "%s: 0x%lx: advarsel: kunne ikke finde forventet relokering" +#: elf32-m68k.c:1250 elf32-m68k.c:1251 vms-alpha.c:7292 vms-alpha.c:7307 +msgid "unknown" +msgstr "ukendt" -#: elf32-sh.c:2036 -#, c-format -msgid "%s: 0x%lx: warning: symbol in unexpected section" -msgstr "%s: 0x%lx: advarsel: symbol i uventet sektion" +#: elf32-m68k.c:1714 +msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d" +msgstr "%B: GOT-overløb: Antallet af relokeringer med 8 bit-afsæt > %d" -#: elf32-sh.c:2153 -#, c-format -msgid "%s: 0x%lx: warning: could not find expected COUNT reloc" -msgstr "%s: 0x%lx: advarsel: kunne ikke finde forventet COUNT-relokering" +#: elf32-m68k.c:1720 +msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d" +msgstr "%B: GOT-overløb: Antallet af relokeringer med 8 eller 16 bit-afsæt > %d" -#: elf32-sh.c:2162 -#, c-format -msgid "%s: 0x%lx: warning: bad count" -msgstr "%s: 0x%lx: advarsel: fejlagtigt antal" +#: elf32-m68k.c:3959 +msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object" +msgstr "%B(%A+0x%lx): R_68K_TLS_LE32-relokering tillades ikke i delt objekt" -#: elf32-sh.c:2550 elf32-sh.c:2926 -#, c-format -msgid "%s: 0x%lx: fatal: reloc overflow while relaxing" -msgstr "%s: 0x%lx: fatalt: relokering giver overløb ved forenklingen" +#: elf32-mcore.c:99 elf32-mcore.c:442 +msgid "%B: Relocation %s (%d) is not currently supported.\n" +msgstr "%B: Relokering %s (%d) understøttes ikke i øjeblikket.\n" -#: elf32-sh.c:4073 elf64-sh64.c:1576 -msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" -msgstr "Uventet STO_SH5_ISA32 på lokalt symbol håndteres ikke" +#: elf32-mcore.c:428 +msgid "%B: Unknown relocation type %d\n" +msgstr "%B: Ukendt relokeringstype %d\n" -#: elf32-sh.c:4284 -#, c-format -msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation" -msgstr "%s: 0x%lx: fatalt: ujusteret grenmål for relokering for forenklingsunderstøttelse" +# ? +#: elf32-mep.c:647 +msgid "%B and %B are for different cores" +msgstr "%B og %B er til forskellige cpu-kerner" -#: elf32-sh64.c:203 elf64-sh64.c:2364 -#, c-format -msgid "%s: compiled as 32-bit object and %s is 64-bit" -msgstr "%s: oversat som 32-bitsobjekt og %s er 64-bit" +#: elf32-mep.c:664 +msgid "%B and %B are for different configurations" +msgstr "%B og %B er til forskellige konfigurationer" -#: elf32-sh64.c:206 elf64-sh64.c:2367 +#: elf32-mep.c:701 #, c-format -msgid "%s: compiled as 64-bit object and %s is 32-bit" -msgstr "%s: oversat som 64-bitsobjekt og %s er 32-bit" +msgid "private flags = 0x%lx" +msgstr "private flag = 0x%lx" -#: elf32-sh64.c:208 elf64-sh64.c:2369 +#: elf32-microblaze.c:742 #, c-format -msgid "%s: object size does not match that of target %s" -msgstr "%s: objektstørrelsen stemmer ikke overens med den hos målet %s" +msgid "%s: unknown relocation type %d" +msgstr "%s: ukendt relokeringstype %d" -#: elf32-sh64.c:440 elf64-sh64.c:2941 +#: elf32-microblaze.c:867 elf32-microblaze.c:912 #, c-format -msgid "%s: encountered datalabel symbol in input" -msgstr "%s: mødte dataetikettesymbol i inddata" +msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" +msgstr "%s: MÃ¥let (%s) for en %s-relokering er i forkert sektion (%s)" -#: elf32-sh64.c:523 -msgid "PTB mismatch: a SHmedia address (bit 0 == 1)" -msgstr "PTB passer ikke: en SHmedia-adresse (bit 0 == 1)" +#: elf32-microblaze.c:1155 elfxx-sparc.c:3450 +msgid "%B: probably compiled without -fPIC?" +msgstr "%B: nok oversat uden -fPIC?" + +#: elf32-microblaze.c:2074 elflink.c:12601 +msgid "%B: bad relocation section name `%s'" +msgstr "%B: fejlagtigt relokeringssektionsnavn \"%s\"" + +#: elf32-mips.c:1045 elf64-mips.c:2084 elfn32-mips.c:1888 +msgid "literal relocation occurs for an external symbol" +msgstr "der sker ordret relokering for et eksternt symbol" -#: elf32-sh64.c:526 -msgid "PTA mismatch: a SHcompact address (bit 0 == 0)" -msgstr "PTA passer ikke: en SHcompact-adresse (bit 0 == 0)" +#: elf32-mips.c:1085 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:2127 +#: elfn32-mips.c:1929 +msgid "32bits gp relative relocation occurs for an external symbol" +msgstr "32-bit gp-relativ relokering forekommer for et eksternt symbol" -#: elf32-sh64.c:544 +#: elf32-ppc.c:1739 #, c-format -msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16" -msgstr "%s: GAS-fejl: uventet PTB-instruktion med R_SH_PT_16" +msgid "generic linker can't handle %s" +msgstr "generisk lænker kan ikke hÃ¥ndtere %s" -#: elf32-sh64.c:593 elf64-sh64.c:1703 -#, c-format -msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n" -msgstr "%s: fejl: ujusteret relokeringstype %d på %08x relokering %08x\n" +#: elf32-ppc.c:2180 +msgid "corrupt %s section in %B" +msgstr "beskadiget %s-sektion i %B" -#: elf32-sh64.c:677 -#, c-format -msgid "%s: could not write out added .cranges entries" -msgstr "%s: kunne ikke udskrive tilføjede .cranges-poster" +#: elf32-ppc.c:2199 +msgid "unable to read in %s section from %B" +msgstr "kan ikke læse i %s-sektion fra %B" -#: elf32-sh64.c:739 -#, c-format -msgid "%s: could not write out sorted .cranges entries" -msgstr "%s: kunne ikke udskrive sorterede cranges-poster" +#: elf32-ppc.c:2240 +msgid "warning: unable to set size of %s section in %B" +msgstr "advarsel: kan ikke sætte størrelsen af %s-sektion i %B" -#: elf32-sparc.c:1535 elf64-sparc.c:2224 -#, c-format -msgid "%s: probably compiled without -fPIC?" -msgstr "%s: nok oversat uden -fPIC?" +#: elf32-ppc.c:2290 +msgid "failed to allocate space for new APUinfo section." +msgstr "kunne ikke tildele plads til ny APUinfo-sektion." -#: elf32-sparc.c:2002 -#, c-format -msgid "%s: compiled for a 64 bit system and target is 32 bit" -msgstr "%s: oversat for et 64-bitssystem og målet er 32-bit" +#: elf32-ppc.c:2309 +msgid "failed to compute new APUinfo section." +msgstr "kunne ikke beregne ny APUinfo-sektion." -#: elf32-sparc.c:2016 +#: elf32-ppc.c:2312 +msgid "failed to install new APUinfo section." +msgstr "kunne ikke installere ny APUinfo-sektion." + +#: elf32-ppc.c:3358 +msgid "%B: relocation %s cannot be used when making a shared object" +msgstr "%B: relokeringen %s kan ikke bruges nÃ¥r et delt objekt oprettes" + +#. It does not make sense to have a procedure linkage +#. table entry for a local symbol. +#: elf32-ppc.c:3702 +msgid "%B(%A+0x%lx): %s reloc against local symbol" +msgstr "%B(%A+0x%lx): %s-relokering mod lokalt symbol" + +#: elf32-ppc.c:4044 elf32-ppc.c:4059 elfxx-mips.c:12411 elfxx-mips.c:12437 +#: elfxx-mips.c:12459 elfxx-mips.c:12485 +msgid "Warning: %B uses hard float, %B uses soft float" +msgstr "Advarsel: %B bruger flydende tal i hardware, %B bruger flydende tal i software" + +#: elf32-ppc.c:4047 elf32-ppc.c:4051 +msgid "Warning: %B uses double-precision hard float, %B uses single-precision hard float" +msgstr "Advarsel: %B bruger dobbeltpræcisions-float i hardware, mens %B bruger enkeltpræcisions-float i hardware" + +#: elf32-ppc.c:4055 +msgid "Warning: %B uses soft float, %B uses single-precision hard float" +msgstr "Advarsel: %B bruger software-float, mens %B bruger enkeltpræcisions-float i hardware" + +#: elf32-ppc.c:4062 elf32-ppc.c:4066 elfxx-mips.c:12391 elfxx-mips.c:12395 +msgid "Warning: %B uses unknown floating point ABI %d" +msgstr "Advarsel: %B bruger ukendt ABI %d til flydende tal" + +#: elf32-ppc.c:4108 elf32-ppc.c:4112 +msgid "Warning: %B uses unknown vector ABI %d" +msgstr "Advarsel: %B bruger ukendt vektor-ABI %d" + +#: elf32-ppc.c:4116 +msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\"" +msgstr "Advarsel: %B bruger vektor-ABI \"%s\", mens %B bruger \"%s\"" + +#: elf32-ppc.c:4133 elf32-ppc.c:4136 +msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory" +msgstr "Advarsel: %B bruger r3/r4 til smÃ¥ struktur-returneringer, mens %B bruger hukommelsen" + +#: elf32-ppc.c:4139 elf32-ppc.c:4143 +msgid "Warning: %B uses unknown small structure return convention %d" +msgstr "Advarsel: %B bruger ukendt returkonvention %d for smÃ¥strukturer" + +#: elf32-ppc.c:4197 +msgid "%B: compiled with -mrelocatable and linked with modules compiled normally" +msgstr "%B: kompileret med -mrelocatable og lænket med moduler som er kompileret normalt" + +#: elf32-ppc.c:4205 +msgid "%B: compiled normally and linked with modules compiled with -mrelocatable" +msgstr "%B: kompileret normalt og lænket med moduler som er kompileret med -mrelocatable" + +#: elf32-ppc.c:4293 +msgid "Using bss-plt due to %B" +msgstr "Bruger bss-plt pÃ¥ grund af %B" + +#: elf32-ppc.c:7192 elf64-ppc.c:12307 +msgid "%B: unknown relocation type %d for symbol %s" +msgstr "%B: ukendt relokeringstype %d for symbol %s" + +#: elf32-ppc.c:7453 +msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'" +msgstr "%B(%A+0x%lx): addend forskellig fra nul pÃ¥ %s-relokering mod \"%s\"" + +#: elf32-ppc.c:7651 elf64-ppc.c:12812 +msgid "%B(%A+0x%lx): relocation %s for indirect function %s unsupported" +msgstr "%B(%A+0x%lx): relokering %s for indirekte funktion %s understøttes ikke" + +#: elf32-ppc.c:7881 elf32-ppc.c:7911 elf32-ppc.c:7958 +msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)" +msgstr "%B: mÃ¥let (%s) for en %s-relokering er i den forkerte uddatasektion (%s)" + +#: elf32-ppc.c:8030 +msgid "%B: relocation %s is not yet supported for symbol %s." +msgstr "%B: relokeringen %s understøttes endnu ikke for symbolet %s." + +#: elf32-ppc.c:8138 elf64-ppc.c:13162 +msgid "%B(%A+0x%lx): %s reloc against `%s': error %d" +msgstr "%B(%A+0x%lx): relokering af %s mod \"%s\": fejl %d" + +#: elf32-ppc.c:8629 +#, c-format +msgid "%s not defined in linker created %s" +msgstr "%s er ikke defineret i lænker-oprettet %s" + +#: elf32-rx.c:544 +msgid "%B:%A: Warning: deprecated Red Hat reloc " +msgstr "%B:%A: Advarsel: forældet Red Hat-relokering " + +#: elf32-rx.c:1086 +msgid "Warning: RX_SYM reloc with an unknown symbol" +msgstr "Advarsel: RX_SYM-relokering med et ukendt symbol" + +#: elf32-rx.c:1251 +msgid "%B(%A): error: call to undefined function '%s'" +msgstr "%B(%A): fejl: kald til udefineret funktion \"%s\"" + +#: elf32-rx.c:1265 +msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area" +msgstr "%B(%A): advarsel: ikke-justeret tilgang til symbol \"%s\" i det lille dataomrÃ¥de" + +#: elf32-rx.c:1269 +msgid "%B(%A): internal error: out of range error" +msgstr "%B(%A): intern fejl: uden for intervallet" + +#: elf32-rx.c:1273 +msgid "%B(%A): internal error: unsupported relocation error" +msgstr "%B(%A): intern fejl: relokeringen understøttes ikke" + +#: elf32-rx.c:1277 +msgid "%B(%A): internal error: dangerous relocation" +msgstr "%B(%A): intern fejl: farlig relokering" + +#: elf32-rx.c:1281 +msgid "%B(%A): internal error: unknown error" +msgstr "%B(%A): intern fejl: ukendt fejl" + +#: elf32-rx.c:2928 +#, c-format +msgid " [64-bit doubles]" +msgstr " [64 bit-doubles]" + +#: elf32-rx.c:2930 +#, c-format +msgid " [dsp]" +msgstr " [dsp]" + +#: elf32-s390.c:2209 elf64-s390.c:2196 +msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s" +msgstr "%B(%A+0x%lx): ugyldig instruktion til TLS-relokering %s" + +#: elf32-score.c:1522 elf32-score7.c:1382 elfxx-mips.c:3323 +msgid "not enough GOT space for local GOT entries" +msgstr "ikke nok med GOT-plads for lokale GOT-poster" + +# word er en datatype +#: elf32-score.c:2744 +msgid "address not word align" +msgstr "adresse er ikke justeret til word-position" + +#: elf32-score.c:2829 elf32-score7.c:2634 +#, c-format +msgid "%s: Malformed reloc detected for section %s" +msgstr "%s: Fejlagtig relokering for sektion %s opdaget" + +#: elf32-score.c:2880 elf32-score7.c:2685 +msgid "%B: CALL15 reloc at 0x%lx not against global symbol" +msgstr "%B: CALL15-relokering ved 0x%lx er ikke mod globalt symbol" + +#: elf32-score.c:3999 elf32-score7.c:3806 +#, c-format +msgid " [pic]" +msgstr " [pic]" + +#: elf32-score.c:4003 elf32-score7.c:3810 +#, c-format +msgid " [fix dep]" +msgstr " [fix dep]" + +#: elf32-score.c:4045 elf32-score7.c:3852 +msgid "%B: warning: linking PIC files with non-PIC files" +msgstr "%B: advarsel: lænker PIC-filer med ikke-PIC-filer" + +#: elf32-sh-symbian.c:130 +msgid "%B: IMPORT AS directive for %s conceals previous IMPORT AS" +msgstr "%B: IMPORT AS-direktiv til %s skjuler forrige IMPORT AS" + +#: elf32-sh-symbian.c:383 +msgid "%B: Unrecognised .directive command: %s" +msgstr "%B: Ukendt .directive-kommando: %s" + +#: elf32-sh-symbian.c:503 +msgid "%B: Failed to add renamed symbol %s" +msgstr "%B: Kunne ikke tilføje omdøbt symbol %s" + +#: elf32-sh.c:568 +msgid "%B: 0x%lx: warning: bad R_SH_USES offset" +msgstr "%B: 0x%lx: advarsel: fejlagtig R_SH_USES-afstand" + +#: elf32-sh.c:580 +msgid "%B: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" +msgstr "%B: 0x%lx: advarsel: R_SH_USES peger pÃ¥ ukendt instruktion 0x%x" + +#: elf32-sh.c:597 +msgid "%B: 0x%lx: warning: bad R_SH_USES load offset" +msgstr "%B: 0x%lx: advarsel: fejlagtig R_SH_USES-indlæsningsafstand" + +#: elf32-sh.c:612 +msgid "%B: 0x%lx: warning: could not find expected reloc" +msgstr "%B: 0x%lx: advarsel: kunne ikke finde forventet relokering" + +#: elf32-sh.c:640 +msgid "%B: 0x%lx: warning: symbol in unexpected section" +msgstr "%B: 0x%lx: advarsel: symbol i uventet sektion" + +#: elf32-sh.c:766 +msgid "%B: 0x%lx: warning: could not find expected COUNT reloc" +msgstr "%B: 0x%lx: advarsel: kunne ikke finde forventet COUNT-relokering" + +#: elf32-sh.c:775 +msgid "%B: 0x%lx: warning: bad count" +msgstr "%B: 0x%lx: advarsel: fejlagtigt antal" + +#: elf32-sh.c:1179 elf32-sh.c:1549 +msgid "%B: 0x%lx: fatal: reloc overflow while relaxing" +msgstr "%B: 0x%lx: fatalt: relokering giver overløb ved forenklingen" + +#: elf32-sh.c:4057 elf64-sh64.c:1514 +msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" +msgstr "Uventet STO_SH5_ISA32 pÃ¥ lokalt symbol hÃ¥ndteres ikke" + +#: elf32-sh.c:4304 +msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation" +msgstr "%B: 0x%lx: fatalt: ujusteret grenmÃ¥l for relokering for forenklingsunderstøttelse" + +#: elf32-sh.c:4337 elf32-sh.c:4352 +msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx" +msgstr "%s: 0x%lx: fatalt: ujusteret %s-relokering 0x%lx" + +#: elf32-sh.c:4366 +msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32" +msgstr "%B: 0x%lx: fatalt: R_SH_PSHA-relokering %d er uden for gyldigt interval -32..32" + +#: elf32-sh.c:4380 +msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32" +msgstr "%B: 0x%lx: fatalt: R_SH_PSHL-relokering %d er uden for gyldigt interval -32..32" + +#: elf32-sh.c:4524 elf32-sh.c:4994 +msgid "%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section" +msgstr "%B(%A+0x%lx): kan ikke udsende \"fixup\" til \"%s\" i skrivebeskyttet sektion" + +#: elf32-sh.c:5101 +msgid "%B(%A+0x%lx): %s relocation against external symbol \"%s\"" +msgstr "%B(%A+0x%lx): %s-relokering mod eksternt symbol \"%s\"" + +#: elf32-sh.c:5574 +#, c-format +msgid "%X%C: relocation to \"%s\" references a different segment\n" +msgstr "%X%C: relokering til \"%s\" refererer et andet segment\n" + +#: elf32-sh.c:5580 +#, c-format +msgid "%C: warning: relocation to \"%s\" references a different segment\n" +msgstr "%C: advarsel: relokering til \"%s\" refererer et andet segment\n" + +#: elf32-sh.c:6358 elf32-sh.c:6441 +msgid "%B: `%s' accessed both as normal and FDPIC symbol" +msgstr "%B: \"%s\" tilgÃ¥s bÃ¥de som normalt symbol og FDPIC-symbol" + +#: elf32-sh.c:6363 elf32-sh.c:6445 +msgid "%B: `%s' accessed both as FDPIC and thread local symbol" +msgstr "%B: \"%s\" tilgÃ¥s bÃ¥de som FDPIC-symbol og trÃ¥dlokalt symbol" + +#: elf32-sh.c:6393 +msgid "%B: Function descriptor relocation with non-zero addend" +msgstr "%B: Relokering af funktionsdeskriptor med addend forskellig fra nul" + +#: elf32-sh.c:6629 elf64-alpha.c:4560 +msgid "%B: TLS local exec code cannot be linked into shared objects" +msgstr "%B: lokal TLS-eksekveringskode kan ikke lænkes ind i delte objekter" + +#: elf32-sh64.c:223 elf64-sh64.c:2314 +#, c-format +msgid "%s: compiled as 32-bit object and %s is 64-bit" +msgstr "%s: oversat som 32-bitsobjekt og %s er 64-bit" + +#: elf32-sh64.c:226 elf64-sh64.c:2317 +#, c-format +msgid "%s: compiled as 64-bit object and %s is 32-bit" +msgstr "%s: oversat som 64-bitsobjekt og %s er 32-bit" + +#: elf32-sh64.c:228 elf64-sh64.c:2319 +#, c-format +msgid "%s: object size does not match that of target %s" +msgstr "%s: objektstørrelsen stemmer ikke overens med den hos mÃ¥let %s" + +#: elf32-sh64.c:451 elf64-sh64.c:2833 +#, c-format +msgid "%s: encountered datalabel symbol in input" +msgstr "%s: mødte dataetikettesymbol i inddata" + +#: elf32-sh64.c:528 +msgid "PTB mismatch: a SHmedia address (bit 0 == 1)" +msgstr "PTB passer ikke: en SHmedia-adresse (bit 0 == 1)" + +#: elf32-sh64.c:531 +msgid "PTA mismatch: a SHcompact address (bit 0 == 0)" +msgstr "PTA passer ikke: en SHcompact-adresse (bit 0 == 0)" + +#: elf32-sh64.c:549 +#, c-format +msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16" +msgstr "%s: GAS-fejl: uventet PTB-instruktion med R_SH_PT_16" + +#: elf32-sh64.c:598 +msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n" +msgstr "%B: fejl: ujusteret relokeringstype %d pÃ¥ %08x-relokering %08x\n" + +#: elf32-sh64.c:674 +#, c-format +msgid "%s: could not write out added .cranges entries" +msgstr "%s: kunne ikke udskrive tilføjede .cranges-poster" + +#: elf32-sh64.c:734 +#, c-format +msgid "%s: could not write out sorted .cranges entries" +msgstr "%s: kunne ikke udskrive sorterede cranges-poster" + +#: elf32-sparc.c:89 +msgid "%B: compiled for a 64 bit system and target is 32 bit" +msgstr "%B: kompileret til et 64-bitssystem, men mÃ¥let er 32-bit" + +#: elf32-sparc.c:102 +msgid "%B: linking little endian files with big endian files" +msgstr "%B: lænker little endian-filer med big endian-filer" + +#: elf32-spu.c:719 +msgid "%X%P: overlay section %A does not start on a cache line.\n" +msgstr "%X%P: overlay-sektion %A starter ikke pÃ¥ en cachelinje.\n" + +#: elf32-spu.c:727 +msgid "%X%P: overlay section %A is larger than a cache line.\n" +msgstr "%X%P: overlay-sektion %A er større end en cachelinje.\n" + +#: elf32-spu.c:747 +msgid "%X%P: overlay section %A is not in cache area.\n" +msgstr "%X%P: overlay-sektion %A er ikke i cacheomrÃ¥det.\n" + +#: elf32-spu.c:787 +msgid "%X%P: overlay sections %A and %A do not start at the same address.\n" +msgstr "%X%P: overlay-sektionerne %A og %A starter ikke pÃ¥ samme adresse.\n" + +#: elf32-spu.c:1011 +msgid "warning: call to non-function symbol %s defined in %B" +msgstr "advarsel: kald til ikke-funktionssymbol %s defineret i %B" + +#: elf32-spu.c:1361 +msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" +msgstr "%A:0x%v lrlive .brinfo (%u) afviger fra analyse (%u)\n" + +#: elf32-spu.c:1880 +msgid "%B is not allowed to define %s" +msgstr "%B mÃ¥ ikke definere %s" + +#: elf32-spu.c:1888 +#, c-format +msgid "you are not allowed to define %s in a script" +msgstr "du har ikke lov til at definere %s i et script" + +#: elf32-spu.c:1922 +#, c-format +msgid "%s in overlay section" +msgstr "%s i overlay-sektion" + +#: elf32-spu.c:1951 +msgid "overlay stub relocation overflow" +msgstr "overløb ved overlay-stub-relokering" + +#: elf32-spu.c:1960 elf64-ppc.c:11327 +msgid "stubs don't match calculated size" +msgstr "stubbe stemmer ikke overens med beregnet størrelse" + +#: elf32-spu.c:2542 +#, c-format +msgid "warning: %s overlaps %s\n" +msgstr "advarsel: %s overlapper %s\n" + +#: elf32-spu.c:2558 +#, c-format +msgid "warning: %s exceeds section size\n" +msgstr "advarsel: %s overstiger sektionsstørrelse\n" + +#: elf32-spu.c:2589 +msgid "%A:0x%v not found in function table\n" +msgstr "%A:0x%v ikke fundet i funktionstabel\n" + +#: elf32-spu.c:2729 +msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n" +msgstr "%B(%A+0x%v): kald til ikke-kodesektion %B(%A), analyse ufuldstændig\n" + +#: elf32-spu.c:3297 +#, c-format +msgid "Stack analysis will ignore the call from %s to %s\n" +msgstr "Stak-analyse vil ignorere kaldet fra %s til %s\n" + +#: elf32-spu.c:3988 +msgid " %s: 0x%v\n" +msgstr " %s: 0x%v\n" + +#: elf32-spu.c:3989 +msgid "%s: 0x%v 0x%v\n" +msgstr "%s: 0x%v 0x%v\n" + +#: elf32-spu.c:3994 +msgid " calls:\n" +msgstr " kald:\n" + +#: elf32-spu.c:4002 +#, c-format +msgid " %s%s %s\n" +msgstr " %s%s %s\n" + +#: elf32-spu.c:4307 +#, c-format +msgid "%s duplicated in %s\n" +msgstr "%s er duplikeret i %s\n" + +#: elf32-spu.c:4311 +#, c-format +msgid "%s duplicated\n" +msgstr "%s duplikeret\n" + +#: elf32-spu.c:4318 +msgid "sorry, no support for duplicate object files in auto-overlay script\n" +msgstr "beklager, men auto-overlay-scriptet understøtter ikke duplikerede objektfiler\n" + +#: elf32-spu.c:4359 +msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n" +msgstr "ikke-overlay-størrelse af 0x%v plus den maksimale overlaystørrelse af 0x%v overstiger lokalt lager\n" + +#: elf32-spu.c:4514 +msgid "%B:%A%s exceeds overlay size\n" +msgstr "%B:%A%s overstiger overlay-størrelsen\n" + +#: elf32-spu.c:4676 +msgid "Stack size for call graph root nodes.\n" +msgstr "Stakstørrelsen for rodknuder i funktionskaldsgrafen.\n" + +#: elf32-spu.c:4677 +msgid "" +"\n" +"Stack size for functions. Annotations: '*' max stack, 't' tail call\n" +msgstr "" +"\n" +"Stakstørrelse til funktioner. Annotationer: '*' maks stak, 't' tail call\n" + +#: elf32-spu.c:4687 +msgid "Maximum stack required is 0x%v\n" +msgstr "Maksimum pÃ¥krævet stak er 0x%v\n" + +#: elf32-spu.c:4778 +msgid "fatal error while creating .fixup" +msgstr "fatal fejl ved oprettelse af .fixup" + +#: elf32-spu.c:5006 +msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%B(%s+0x%lx): uløselig %s-relokering mod symbol \"%s\"" + +#: elf32-tic6x.c:1539 +msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined" +msgstr "%B: SB-relativ relokering, men __c6xabi_DSBT_BASE er ikke defineret" + +#. Shared libraries and exception handling support not +#. implemented. +#: elf32-tic6x.c:1554 +msgid "%B: relocation type %d not implemented" +msgstr "%B: relokeringstypen %d er ikke implementeret" + +#: elf32-tic6x.c:1640 +msgid "dangerous relocation" +msgstr "farlig relokering" + +# ikke sikker pÃ¥ hvad det her betyder, sÃ¥ bruger mere direkte oversættelse end hvad der mÃ¥ske er nødvendigt +#: elf32-tic6x.c:1788 elf32-tic6x.c:1796 +msgid "error: %B requires more stack alignment than %B preserves" +msgstr "fejl: %B kræver mere stakjustering end %B præserverer" + +#: elf32-tic6x.c:1806 elf32-tic6x.c:1815 +msgid "error: unknown Tag_ABI_array_object_alignment value in %B" +msgstr "fejl: ukendt værdi for Tag_ABI_array_object_alignment i %B" + +#: elf32-tic6x.c:1824 elf32-tic6x.c:1833 +msgid "error: unknown Tag_ABI_array_object_align_expected value in %B" +msgstr "error: ukendt værdi for Tag_ABI_array_object_align_expected i %B" + +#: elf32-tic6x.c:1841 elf32-tic6x.c:1848 +msgid "error: %B requires more array alignment than %B preserves" +msgstr "fejl: %B kræver mere array-justering end %B præserverer" + +#: elf32-tic6x.c:1870 +msgid "warning: %B and %B differ in wchar_t size" +msgstr "advarsel: %B og %B har forskellig størrelse af wchar_t" + +#: elf32-tic6x.c:1888 +msgid "warning: %B and %B differ in whether code is compiled for DSBT" +msgstr "advarsel: forskel pÃ¥ om %B og %B er kompileret til DSBT" + +#: elf32-tic6x.c:1898 +msgid "warning: %B and %B differ in position-dependence of data addressing" +msgstr "advarsel: %B og %B har forskellig positionsafhængighed af dataadressering" + +#: elf32-tic6x.c:1908 +msgid "warning: %B and %B differ in position-dependence of code addressing" +msgstr "advarsel: %B og %B har forskellig positionsafhængighed af kodeadressering" + +#: elf32-v850.c:173 +#, c-format +msgid "Variable `%s' cannot occupy in multiple small data regions" +msgstr "Variabel \"%s\" kan ikke befinde sig i flere smÃ¥ dataomrÃ¥der" + +#: elf32-v850.c:176 +#, c-format +msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions" +msgstr "Variabel \"%s\" kan kun være i ét af de smÃ¥, tomme og bittesmÃ¥ dataomrÃ¥der" + +#: elf32-v850.c:179 +#, c-format +msgid "Variable `%s' cannot be in both small and zero data regions simultaneously" +msgstr "Variabel \"%s\" kan ikke være i bÃ¥de smÃ¥ og tomme dataomrÃ¥der samtidigt" + +#: elf32-v850.c:182 +#, c-format +msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously" +msgstr "Variabel \"%s\" kan ikke være i bÃ¥de smÃ¥ og bittesmÃ¥ dataomrÃ¥der samtidigt" + +#: elf32-v850.c:185 +#, c-format +msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously" +msgstr "Variabel \"%s\" kan ikke være i bÃ¥de tomme og bittesmÃ¥ dataomrÃ¥der samtidigt" + +#: elf32-v850.c:483 +#, c-format +msgid "FAILED to find previous HI16 reloc\n" +msgstr "MISLYKKEDES med at finde tidligere HI16-relokering\n" + +#: elf32-v850.c:2155 +msgid "could not locate special linker symbol __gp" +msgstr "kunne ikke lokalisere specielt lænkersymbol __gp" + +#: elf32-v850.c:2159 +msgid "could not locate special linker symbol __ep" +msgstr "kunne ikke lokalisere specielt lænkersymbol __ep" + +#: elf32-v850.c:2163 +msgid "could not locate special linker symbol __ctbp" +msgstr "kunne ikke lokalisere specielt lænkersymbol __ctbp" + +#: elf32-v850.c:2341 +msgid "%B: Architecture mismatch with previous modules" +msgstr "%B: Arkitekturen passer ikke sammen med tidligere moduler" + +#. xgettext:c-format. +#: elf32-v850.c:2360 +#, c-format +msgid "private flags = %lx: " +msgstr "private flag = %lx: " + +#: elf32-v850.c:2365 +#, c-format +msgid "v850 architecture" +msgstr "v850-arkitektur" + +#: elf32-v850.c:2366 +#, c-format +msgid "v850e architecture" +msgstr "v850e-arkitektur" + +#: elf32-v850.c:2367 +#, c-format +msgid "v850e1 architecture" +msgstr "v850e1-arkitektur" + +#: elf32-v850.c:2368 +#, c-format +msgid "v850e2 architecture" +msgstr "v850e2-arkitektur" + +#: elf32-v850.c:2369 +#, c-format +msgid "v850e2v3 architecture" +msgstr "v850e2v3-arkitektur" + +#: elf32-vax.c:531 +#, c-format +msgid " [nonpic]" +msgstr " [ikke-pic]" + +#: elf32-vax.c:534 +#, c-format +msgid " [d-float]" +msgstr " [d-flydende tal]" + +#: elf32-vax.c:537 +#, c-format +msgid " [g-float]" +msgstr " [g-flydende tal]" + +#: elf32-vax.c:654 +#, c-format +msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld" +msgstr "%s: advarsel: GOT-addendum %ld til \"%s\" stemmer ikke overens med tidligere GOT-addendum %ld" + +#: elf32-vax.c:1587 +#, c-format +msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" +msgstr "%s: advarsel: PLT-addendum %d til \"%s\" fra sektionen %s ignoreredes" + +#: elf32-vax.c:1714 +#, c-format +msgid "%s: warning: %s relocation against symbol `%s' from %s section" +msgstr "%s: advarsel: %s-relokering mod symbol \"%s\" fra sektionen %s" + +#: elf32-vax.c:1720 +#, c-format +msgid "%s: warning: %s relocation to 0x%x from %s section" +msgstr "%s: advarsel: %s-relokering til 0x%x fra sektionen %s" + +#: elf32-xstormy16.c:451 elf32-ia64.c:2861 elf64-ia64.c:2861 +msgid "non-zero addend in @fptr reloc" +msgstr "ikke-tomt addendum i @fptr-relokering" + +#: elf32-xtensa.c:918 +msgid "%B(%A): invalid property table" +msgstr "%B(%A): ugyldig egenskabstabel" + +#: elf32-xtensa.c:2780 +msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)" +msgstr "%B(%A+0x%lx): relokeringsafsæt uden for gyldigt interval (størrelse=0x%x)" + +#: elf32-xtensa.c:2859 elf32-xtensa.c:2980 +msgid "dynamic relocation in read-only section" +msgstr "dynamisk relokering i skrivebeskyttet sektion" + +#: elf32-xtensa.c:2956 +msgid "TLS relocation invalid without dynamic sections" +msgstr "TLS-relokering er ugyldig uden dynamiske sektioner" + +#: elf32-xtensa.c:3173 +msgid "internal inconsistency in size of .got.loc section" +msgstr "intern inkonsistens i størrelsen af .got.loc-sektion" + +#: elf32-xtensa.c:3486 +msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x" +msgstr "%B: inkompatibel maskintype. Uddata er 0x%x. Inddata er 0x%x" + +#: elf32-xtensa.c:4715 elf32-xtensa.c:4723 +msgid "Attempt to convert L32R/CALLX to CALL failed" +msgstr "Forsøg pÃ¥ at konvertere L32R/CALLX til CALL mislykkedes" + +#: elf32-xtensa.c:6333 elf32-xtensa.c:6409 elf32-xtensa.c:7525 +msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch" +msgstr "%B(%A+0x%lx): kunne ikke afkode instruktion; mulig konfigurationsmodstrid" + +#: elf32-xtensa.c:7265 +msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch" +msgstr "%B(%A+0x%lx): kunne ikke afkode instruktion til XTENSA_ASM_SIMPLIFY-relokering; mulig konfigurationsmodstrid" + +#: elf32-xtensa.c:9024 +msgid "invalid relocation address" +msgstr "ugyldig relokeringsadresse" + +#: elf32-xtensa.c:9073 +msgid "overflow after relaxation" +msgstr "overløb efter forenkling" + +#: elf32-xtensa.c:10205 +msgid "%B(%A+0x%lx): unexpected fix for %s relocation" +msgstr "%B(%A+0x%lx): uventet fiks til %s-relokering" + +#: elf64-alpha.c:460 +msgid "GPDISP relocation did not find ldah and lda instructions" +msgstr "GPDISP-relokering fandt ingen ldah- og lda-instruktioner" + +#: elf64-alpha.c:2408 +msgid "%B: .got subsegment exceeds 64K (size %d)" +msgstr "%B: .got-subsegment overskrider 64K (størrelse %d)" + +#: elf64-alpha.c:4304 elf64-alpha.c:4316 +msgid "%B: gp-relative relocation against dynamic symbol %s" +msgstr "%B: gp-relativ relokering mod dynamisk symbol %s" + +#: elf64-alpha.c:4342 elf64-alpha.c:4477 +msgid "%B: pc-relative relocation against dynamic symbol %s" +msgstr "%B: pc-relativ relokering mod dynamisk symbol %s" + +#: elf64-alpha.c:4370 +msgid "%B: change in gp: BRSGP %s" +msgstr "%B: ændring i gp: BRSGP %s" + +#: elf64-alpha.c:4395 +msgid "" +msgstr "" + +#: elf64-alpha.c:4400 +msgid "%B: !samegp reloc against symbol without .prologue: %s" +msgstr "%B: !samegp-relokering mod symbol uden .prologue: %s" + +#: elf64-alpha.c:4452 +msgid "%B: unhandled dynamic relocation against %s" +msgstr "%B: uhÃ¥ndteret dynamisk relokering mod %s" + +#: elf64-alpha.c:4484 +msgid "%B: pc-relative relocation against undefined weak symbol %s" +msgstr "%B: pc-relativ relokering mod udefineret svagt symbol %s" + +#: elf64-alpha.c:4544 +msgid "%B: dtp-relative relocation against dynamic symbol %s" +msgstr "%B: dtp-relativ relokering mod dynamisk symbol %s" + +#: elf64-alpha.c:4567 +msgid "%B: tp-relative relocation against dynamic symbol %s" +msgstr "%B: tp-relativ relokering mod dynamisk symbol %s" + +#: elf64-hppa.c:2101 +#, c-format +msgid "stub entry for %s cannot load .plt, dp offset = %ld" +msgstr "stubpost for %s kan ikke indlæse .plt, dp-afstand = %ld" + +#: elf64-hppa.c:3299 +msgid "%B(%A+0x%lx): cannot reach %s" +msgstr "%B(%A+0x%lx): kan ikke nÃ¥ %s" + +#: elf64-mmix.c:1177 +#, c-format +msgid "" +"%s: Internal inconsistency error for value for\n" +" linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx\n" +msgstr "" +"%s: Intern inkonsistensfejl for værdien for\n" +" lænkerallokeret globalt register: lænket: 0x%lx%08lx != forenklet: 0x%lx%08lx\n" + +#: elf64-mmix.c:1607 +#, c-format +msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s" +msgstr "%s: base-plus-afstandsrelokering mod registersymbol: (ukendt) i %s" + +#: elf64-mmix.c:1612 +#, c-format +msgid "%s: base-plus-offset relocation against register symbol: %s in %s" +msgstr "%s: base-plus-afstandsrelokering mod registersymbol: %s i %s" + +#: elf64-mmix.c:1656 +#, c-format +msgid "%s: register relocation against non-register symbol: (unknown) in %s" +msgstr "%s: registerrelokering mod ikke-registersymbol: (ukendt) i %s" + +#: elf64-mmix.c:1661 +#, c-format +msgid "%s: register relocation against non-register symbol: %s in %s" +msgstr "%s: registerrelokering mod ikke-registersymbol: %s i %s" + +#: elf64-mmix.c:1698 +#, c-format +msgid "%s: directive LOCAL valid only with a register or absolute value" +msgstr "%s: LOCAL-direktivet er kun gyldigt med et register eller en absolutværdi" + +#: elf64-mmix.c:1726 +#, c-format +msgid "%s: LOCAL directive: Register $%ld is not a local register. First global register is $%ld." +msgstr "%s: LOCAL-direktiv: Register $%ld er ikke et lokalt register. Første globale register er $%ld." + +#: elf64-mmix.c:2190 +#, c-format +msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n" +msgstr "%s: Fejl: flere definitioner af \"%s\"; begyndelsen pÃ¥ %s er sat i en tidligere lænket fil\n" + +#: elf64-mmix.c:2248 +msgid "Register section has contents\n" +msgstr "Registersektion har indhold\n" + +#: elf64-mmix.c:2440 +#, c-format +msgid "" +"Internal inconsistency: remaining %u != max %u.\n" +" Please report this bug." +msgstr "" +"Intern inkonsekvens: genstÃ¥ende %u != max %u.\n" +" Rapportér gerne denne fejl." + +#: elf64-ppc.c:2741 libbfd.c:997 +msgid "%B: compiled for a big endian system and target is little endian" +msgstr "%B: kompileret til et big endian-system, men mÃ¥let er little endian" + +#: elf64-ppc.c:2744 libbfd.c:999 +msgid "%B: compiled for a little endian system and target is big endian" +msgstr "%B: kompileret til et little endian-system, men mÃ¥let er big endian" + +# lazy (i computersammenhæng) ~ først at gøre noget, nÃ¥r det er nødvendigt. Hvis programmøren skriver x = 2 + 2 men først bruger variablen x senere, vil udregningen 2+2 altsÃ¥ først ske senere. +#: elf64-ppc.c:6473 +#, c-format +msgid "copy reloc against `%s' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc" +msgstr "kopiering af relokering mod \"%s\" kræver forsinket plt-lænkning; undgÃ¥ at sætte LD_BIND_NOW=1 eller opgradér gcc" + +#: elf64-ppc.c:6901 +msgid "dynreloc miscount for %B, section %A" +msgstr "dynreloc-fejloptælling for %B, sektion %A" + +#: elf64-ppc.c:6985 +msgid "%B: .opd is not a regular array of opd entries" +msgstr "%B: .opd er ikke et almindeligt array af opd-poster" + +#: elf64-ppc.c:6994 +msgid "%B: unexpected reloc type %u in .opd section" +msgstr "%B: uventet relokeringstype %u i .opd-sektion" + +#: elf64-ppc.c:7015 +msgid "%B: undefined sym `%s' in .opd section" +msgstr "%B: udefineret symbol \"%s\" i .opd-sektion" + +#: elf64-ppc.c:7877 elf64-ppc.c:8392 +#, c-format +msgid "%s defined on removed toc entry" +msgstr "%s defineret pÃ¥ fjernet toc-post" + +#: elf64-ppc.c:9459 +#, c-format +msgid "long branch stub `%s' offset overflow" +msgstr "afsætoverløb for lang grenstub \"%s\"" + +#: elf64-ppc.c:9518 +#, c-format +msgid "can't find branch stub `%s'" +msgstr "kan ikke finde grenstub \"%s\"" + +#: elf64-ppc.c:9580 elf64-ppc.c:9716 +#, c-format +msgid "linkage table error against `%s'" +msgstr "lænketabelsfejl mod \"%s\"" + +#: elf64-ppc.c:9886 +#, c-format +msgid "can't build branch stub `%s'" +msgstr "kan ikke bygge grenstub \"%s\"" + +#: elf64-ppc.c:10684 +msgid "%B section %A exceeds stub group size" +msgstr "%B-sektionen %A overstiger stub-gruppestørrelsen" + +# ? +#: elf64-ppc.c:11339 +#, c-format +msgid "" +"linker stubs in %u group%s\n" +" branch %lu\n" +" toc adjust %lu\n" +" long branch %lu\n" +" long toc adj %lu\n" +" plt call %lu" +msgstr "" +"lænkerstubbe i %u gruppe%s\n" +" branch %lu\n" +" toc adjust %lu\n" +" long branch %lu\n" +" long toc adj %lu\n" +" plt call %lu" + +#: elf64-ppc.c:12190 +msgid "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc" +msgstr "%B(%A+0x%lx): flere automatiske TOC'er understøttes ikke med dine crt-filer; genkompilér med -mminimal-toc eller opgradér gcc" + +#: elf64-ppc.c:12198 +msgid "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern" +msgstr "%B(%A+0x%lx): \"sibling call\"-optimering til \"%s\" tillader ikke flere indholdsfortegnelser; genkompilér med -mminimal-toc eller -fno-optimize-sibling-calls eller gør \"%s\" ekstern" + +#: elf64-ppc.c:12919 +msgid "%B: relocation %s is not supported for symbol %s." +msgstr "%B: relokeringen %s understøttes ikke for symbol %s." + +#: elf64-ppc.c:13096 +msgid "%B: error: relocation %s not a multiple of %d" +msgstr "%B: fejl: relokeringen %s er ikke et multiplum af %d" + +#: elf64-sh64.c:1682 +#, c-format +msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n" +msgstr "%s: fejl: ujusteret relokeringstype %d pÃ¥ %08x relokering %08x\n" + +#: elf64-sparc.c:444 +msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER" +msgstr "%B: Kun registrene %%g[2367] kan erklæres med STT_REGISTER" + +#: elf64-sparc.c:464 +msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B" +msgstr "Register %%g%d bruges inkompatibelt: %s i %B, tidligere %s i %B" + +#: elf64-sparc.c:487 +msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B" +msgstr "Symbolet \"%s\" har forskellige typer: REGISTER i %B, tidligere %s i %B" + +#: elf64-sparc.c:532 +msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B" +msgstr "Symbolet \"%s\" har forskellige typer: %s i %B, tidligere REGISTER i %B" + +#: elf64-sparc.c:684 +msgid "%B: linking UltraSPARC specific with HAL specific code" +msgstr "%B: lænker UltraSPARC-specifik med HAL-specifik kode" + +#: elf64-x86-64.c:1360 +msgid "%B: '%s' accessed both as normal and thread local symbol" +msgstr "%B: \"%s\" tilgÃ¥s bÃ¥de som normalt og trÃ¥dlokalt symbol" + +#: elf64-x86-64.c:2801 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d" +msgstr "%B: relokering %s mod STT_GNU_IFUNC-symbol \"%s\" har addend forskellig fra nul: %d" + +#: elf64-x86-64.c:3073 +msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object" +msgstr "%B: relokeringen R_X86_64_GOTOFF64 mod beskyttet funktion \"%s\" kan ikke bruges nÃ¥r et delt objekt oprettes" + +#: elf64-x86-64.c:3184 +msgid "; recompile with -fPIC" +msgstr "; genkompilér med -fPIC" + +#: elf64-x86-64.c:3189 +msgid "%B: relocation %s against %s `%s' can not be used when making a shared object%s" +msgstr "%B: relokeringen %s mod %s \"%s\" kan ikke bruges nÃ¥r et delt objekt oprettes%s" + +#: elf64-x86-64.c:3191 +msgid "%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s" +msgstr "%B: relokeringen %s mod udefineret %s \"%s\" kan ikke bruges nÃ¥r et delt objekt oprettes%s" + +#: elfcode.h:826 +#, c-format +msgid "warning: %s has a corrupt string table index - ignoring" +msgstr "advarsel: %s har et beskadiget strengtabelindeks - ignorerer" + +#: elfcode.h:1236 +#, c-format +msgid "%s: version count (%ld) does not match symbol count (%ld)" +msgstr "%s: versionsantal (%ld) stemmer ikke med symbolantal (%ld)" + +#: elfcode.h:1476 +#, c-format +msgid "%s(%s): relocation %d has invalid symbol index %ld" +msgstr "%s(%s): relokering %d har ugyligt symbolindeks %ld" + +#: elfcore.h:312 +msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu." +msgstr "Advarsel: %B er afkortet: forventede kernefilstørrelse >= %lu, fandt: %lu." + +#: elflink.c:1119 +msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A" +msgstr "%s: TLS-definition i %B sektion %A stemmer ikke med ikke-TLS-definition i %B sektion %A" + +#: elflink.c:1123 +msgid "%s: TLS reference in %B mismatches non-TLS reference in %B" +msgstr "%s: TLS-reference i %B stemmer ikke med ikke-TLS-reference i %B" + +#: elflink.c:1127 +msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B" +msgstr "%s: TLS-definition i %B sektion %A stemmer ikke med ikke-TLS-reference i %B" + +#: elflink.c:1131 +msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A" +msgstr "%s: TLS-reference i %B stemmer ikke med ikke-TLS-definition i %B sektion %A" + +#: elflink.c:1763 +msgid "%B: unexpected redefinition of indirect versioned symbol `%s'" +msgstr "%B: uventet omdefinition af indirekte versionstildelt symbol \"%s\"" + +#: elflink.c:2076 +msgid "%B: version node not found for symbol %s" +msgstr "%B: versionsknude ikke fundet for symbolet %s" + +#: elflink.c:2166 +msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'" +msgstr "%B: fejlagtig relokeringssymbolindeks (0x%lx >= 0x%lx) for afsæt 0x%lx i sektionen \"%A\"" + +#: elflink.c:2177 +msgid "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the object file has no symbol table" +msgstr "%B: symboltabellen (0x%lx) forskelligt fra nul for afsæt 0x%lx i sektion \"%s\" mens objektfilen ikke har nogen symboltabelc" + +#: elflink.c:2367 +msgid "%B: relocation size mismatch in %B section %A" +msgstr "%B: relokeringsstørrelsen stemmer ikke overens i %B-sektionen %A" + +#: elflink.c:2662 +#, c-format +msgid "warning: type and size of dynamic symbol `%s' are not defined" +msgstr "advarsel: typen og størrelsen pÃ¥ dynamisk symbol \"%s\" er ikke defineret" + +#: elflink.c:3418 +msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n" +msgstr "%P: alternativ ELF-maskinkode fundet (%d) i %B; forventer %d\n" + +#: elflink.c:4050 +msgid "%B: %s: invalid version %u (max %d)" +msgstr "%B: %s: ugyldig version %u (max %d)" + +#: elflink.c:4086 +msgid "%B: %s: invalid needed version %d" +msgstr "%B: %s: ugyldig krævet version %d" + +#: elflink.c:4285 +msgid "Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %A" +msgstr "Advarsel: justering %u af fælles symbol \"%s\" i %B er større end justeringen (%u) af dets sektion %A" + +#: elflink.c:4291 +msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B" +msgstr "Advarsel: justeringen %u pÃ¥ symbolet \"%s\" i %B er mindre end %u i %B" + +#: elflink.c:4306 +msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B" +msgstr "Advarsel: størrelsen pÃ¥ symbol \"%s\" ændredes fra %lu i %B til %lu i %B" + +#: elflink.c:4472 +msgid "%B: undefined reference to symbol '%s'" +msgstr "%B: udefineret reference til symbol \"%s\"" + +#: elflink.c:4475 +msgid "note: '%s' is defined in DSO %B so try adding it to the linker command line" +msgstr "bemærk: \"%s\" er defineret i DSO %B, sÃ¥ prøv at tilføje den til lænker-kommandolinjen" + +#: elflink.c:5779 +#, c-format +msgid "%s: undefined version: %s" +msgstr "%s: udefineret version: %s" + +#: elflink.c:5847 +msgid "%B: .preinit_array section is not allowed in DSO" +msgstr "%B: .preinit_array-sektionen er ikke tilladt i DSO" + +#: elflink.c:7598 +#, c-format +msgid "undefined %s reference in complex symbol: %s" +msgstr "udefineret %s-reference i komplekst symbol: %s" + +#: elflink.c:7752 +#, c-format +msgid "unknown operator '%c' in complex symbol" +msgstr "ukendt operator \"%c\" i komplekst symbol" + +#: elflink.c:8091 elflink.c:8108 elflink.c:8145 elflink.c:8162 +msgid "%B: Unable to sort relocs - they are in more than one size" +msgstr "%B: Kan ikke sortere relokeringer - de har flere forskellige størrelser" + +#: elflink.c:8122 elflink.c:8176 +msgid "%B: Unable to sort relocs - they are of an unknown size" +msgstr "%B: Kan ikke sortere relokeringer - de har ukendt størrelse" + +#: elflink.c:8227 +msgid "Not enough memory to sort relocations" +msgstr "Ikke nok hukommelse til at sortere relokeringer" + +#: elflink.c:8420 +msgid "%B: Too many sections: %d (>= %d)" +msgstr "%B: For mange sektioner: %d (>= %d)" + +#: elflink.c:8663 +msgid "%B: %s symbol `%s' in %B is referenced by DSO" +msgstr "%B: %s-symbol \"%s\" i %B refereres af DSO" + +#: elflink.c:8754 +msgid "%B: could not find output section %A for input section %A" +msgstr "%B: kunne ikke finde uddatasektionen %A for inddatasektionen %A" + +#: elflink.c:8874 +msgid "%B: %s symbol `%s' isn't defined" +msgstr "%B: %s-symbolet \"%s\" er udefineret" + +#: elflink.c:9428 +msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol" +msgstr "fejl: %B indeholder en relokering (0x%s) til sektionen %A, som refererer et ikke-eksisterende global symbol" + +#: elflink.c:9494 +msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n" +msgstr "%X\"%s\" refereret i sektion \"%A\" af %B: defineret i forkastet sektion \"%A\" af %B\n" + +#: elflink.c:10141 +msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections" +msgstr "%A har bÃ¥de ordnede [\"%A\" i %B] og uordnede [\"%A\" i %B] sektioner" + +#: elflink.c:10146 +#, c-format +msgid "%A has both ordered and unordered sections" +msgstr "%A har bÃ¥de ordnede og uordnede sektioner" + +#: elflink.c:10992 elflink.c:11036 +msgid "%B: could not find output section %s" +msgstr "%B: kunne ikke finde uddatasektionen %s" + +#: elflink.c:10997 +#, c-format +msgid "warning: %s section has zero size" +msgstr "advarsel: %s-sektionen har nulstørrelse" + +#: elflink.c:11102 +msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n" +msgstr "%P: advarsel: opretter en DT_TEXTREL i et delt objekt.\n" + +#: elflink.c:11289 +msgid "%P%X: can not read symbols: %E\n" +msgstr "%P%X: kan ikke læse symboler: %E\n" + +#: elflink.c:11638 +msgid "Removing unused section '%s' in file '%B'" +msgstr "Fjerner ubrugt sektion \"%s\" i filen \"%B\"" + +# gc-sections- eller gc-sektions-? +#: elflink.c:11850 +msgid "Warning: gc-sections option ignored" +msgstr "Advarsel: gc-sections-tilvalg ignoreret" + +#: elflink.c:12399 +msgid "%B: ignoring duplicate section `%A'" +msgstr "%B: ignorerer gentaget sektion \"%A\"" + +#: elflink.c:12406 elflink.c:12413 +msgid "%B: duplicate section `%A' has different size" +msgstr "%B: gentaget sektion \"%A\" har forskellig størrelse" + +#: elflink.c:12421 elflink.c:12426 +msgid "%B: warning: could not read contents of section `%A'" +msgstr "%B: advarsel: kunne ikke læse indholdet af sektionen \"%A\"" + +#: elflink.c:12430 +msgid "%B: warning: duplicate section `%A' has different contents" +msgstr "%B: advarsel: gentaget sektion \"%A\" har forskelligt indhold" + +#: elflink.c:12531 linker.c:3138 +msgid "%F%P: already_linked_table: %E\n" +msgstr "%F%P: already_linked_table: %E\n" + +#: elfxx-mips.c:1220 +msgid "static procedure (no name)" +msgstr "statisk procedure (intet navn)" + +#: elfxx-mips.c:5623 +msgid "%B: %A+0x%lx: Direct jumps between ISA modes are not allowed; consider recompiling with interlinking enabled." +msgstr "%B: %A+0x%lx: Direkte hop mellem ISA-tilstande er ikke tilladt; overvej at genkompilere med interlinking slÃ¥et til." + +#: elfxx-mips.c:6280 elfxx-mips.c:6503 +msgid "%B: Warning: bad `%s' option size %u smaller than its header" +msgstr "%B: Advarsel: Ugyldig \"%s\"-tilvalgsstørrelse %u mindre end dens header" + +#: elfxx-mips.c:7254 elfxx-mips.c:7379 +msgid "%B: Warning: cannot determine the target function for stub section `%s'" +msgstr "%B: Advarsel: Kan ikke bestemme mÃ¥lfunktionen for stubsektionen \"%s\"" + +#: elfxx-mips.c:7508 +msgid "%B: Malformed reloc detected for section %s" +msgstr "%B: Fejlagtig relokering for sektion %s opdaget" + +#: elfxx-mips.c:7548 +msgid "%B: GOT reloc at 0x%lx not expected in executables" +msgstr "%B: GOT-relokering ved 0x%lx forventes ikke i eksekveringsfiler" + +#: elfxx-mips.c:7670 +msgid "%B: CALL16 reloc at 0x%lx not against global symbol" +msgstr "%B: CALL16-relokering ved 0x%lx er ikke mod globalt symbol" + +#: elfxx-mips.c:8365 +#, c-format +msgid "non-dynamic relocations refer to dynamic symbol %s" +msgstr "udynamiske relokeringer refererer til dynamisk symbol %s" + +#: elfxx-mips.c:9068 +msgid "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'" +msgstr "%B: Kan ikke finde matchende LO16-relokering mod \"%s\" for %s ved 0x%lx i sektion \"%A\"" + +#: elfxx-mips.c:9207 +msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)" +msgstr "sektionen small-data overstiger 6KB; gør størrelsesgrænsen for small-data mindre (se tilvalget -G)" + +#: elfxx-mips.c:12027 +#, c-format +msgid "%s: illegal section name `%s'" +msgstr "%s: ugyldigt sektionsnavn \"%s\"" + +#: elfxx-mips.c:12405 elfxx-mips.c:12431 +msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float" +msgstr "Advarsel: %B bruger -msingle-float, %B bruger -mdouble-float" + +#: elfxx-mips.c:12417 elfxx-mips.c:12473 +msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64" +msgstr "Advarsel: %B bruger -msingle-float, %B bruger -mips32r2 -mfp64" + +#: elfxx-mips.c:12443 elfxx-mips.c:12479 +msgid "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64" +msgstr "Advarsel: %B bruger -mdouble-float, %B bruger -mips32r2 -mfp64" + +#: elfxx-mips.c:12521 +msgid "%B: endianness incompatible with that of the selected emulation" +msgstr "%B: endian-hed er ikke kompatibel den valgte emulerings endian-hed" + +#: elfxx-mips.c:12532 +msgid "%B: ABI is incompatible with that of the selected emulation" +msgstr "%B: ABI er ikke kompatibel med den valgte emulerings ABI" + +#: elfxx-mips.c:12613 +msgid "%B: warning: linking abicalls files with non-abicalls files" +msgstr "%B: advarsel: lænker abicalls-filer med ikke-abicalls-filer" + +#: elfxx-mips.c:12630 +msgid "%B: linking 32-bit code with 64-bit code" +msgstr "%B: lænker 32 bit-kode med 64 bit-kode" + +#: elfxx-mips.c:12658 +msgid "%B: linking %s module with previous %s modules" +msgstr "%B: lænker %s-modul med tidligere %s-moduler" + +#: elfxx-mips.c:12681 +msgid "%B: ABI mismatch: linking %s module with previous %s modules" +msgstr "%B: ABI passer ikke: lænker %s-modul med tidligere %s-moduler" + +#: elfxx-mips.c:12845 +#, c-format +msgid " [abi=O32]" +msgstr " [abi=O32]" + +#: elfxx-mips.c:12847 +#, c-format +msgid " [abi=O64]" +msgstr " [abi=O64]" + +#: elfxx-mips.c:12849 +#, c-format +msgid " [abi=EABI32]" +msgstr " [abi=EABI32]" + +#: elfxx-mips.c:12851 +#, c-format +msgid " [abi=EABI64]" +msgstr " [abi=EABI64]" + +#: elfxx-mips.c:12853 +#, c-format +msgid " [abi unknown]" +msgstr " [ukendt abi]" + +#: elfxx-mips.c:12855 +#, c-format +msgid " [abi=N32]" +msgstr " [abi=N32]" + +#: elfxx-mips.c:12857 +#, c-format +msgid " [abi=64]" +msgstr " [abi=64]" + +#: elfxx-mips.c:12859 +#, c-format +msgid " [no abi set]" +msgstr " [intet abi sat]" + +#: elfxx-mips.c:12880 +#, c-format +msgid " [unknown ISA]" +msgstr " [ukendt ISA]" + +#: elfxx-mips.c:12891 +#, c-format +msgid " [not 32bitmode]" +msgstr " [ikke 32-bittilstand]" + +#: elfxx-sparc.c:595 +#, c-format +msgid "invalid relocation type %d" +msgstr "ugyldig relokeringstype %d" + +#: i386linux.c:454 m68klinux.c:458 sparclinux.c:452 +#, c-format +msgid "Output file requires shared library `%s'\n" +msgstr "Uddatafilen kræver delt bibliotek \"%s\"\n" + +#: i386linux.c:462 m68klinux.c:466 sparclinux.c:460 +#, c-format +msgid "Output file requires shared library `%s.so.%s'\n" +msgstr "Uddatafilen kræver delt bibliotek \"%s.so.%s\"\n" + +#: i386linux.c:651 i386linux.c:701 m68klinux.c:658 m68klinux.c:706 +#: sparclinux.c:650 sparclinux.c:700 +#, c-format +msgid "Symbol %s not defined for fixups\n" +msgstr "Symbol %s er ikke defineret for rettelser\n" + +#: i386linux.c:725 m68klinux.c:730 sparclinux.c:724 +msgid "Warning: fixup count mismatch\n" +msgstr "Advarsel: antal rettelser stemmer ikke\n" + +#: ieee.c:159 +#, c-format +msgid "%s: string too long (%d chars, max 65535)" +msgstr "%s: strengen er for lang (%d tegn, max 65535)" + +#: ieee.c:286 +#, c-format +msgid "%s: unrecognized symbol `%s' flags 0x%x" +msgstr "%s: ukendt symbol \"%s\" flag 0x%x" + +#: ieee.c:792 +msgid "%B: unimplemented ATI record %u for symbol %u" +msgstr "%B: ikke-implementeret ATI-post %u for symbol %u" + +#: ieee.c:816 +msgid "%B: unexpected ATN type %d in external part" +msgstr "%B: uventet ATN-type %d i ekstern del" + +#: ieee.c:838 +msgid "%B: unexpected type after ATN" +msgstr "%B: uventet type efter ATN" + +#: ihex.c:230 +msgid "%B:%d: unexpected character `%s' in Intel Hex file" +msgstr "%B:%d: uventet tegn \"%s\" i heksadecimal Intel-fil" + +#: ihex.c:337 +msgid "%B:%u: bad checksum in Intel Hex file (expected %u, found %u)" +msgstr "%B:%u: fejlagtig kontrolsum i heksadecimal Intel-fil (forventede %u, fandt %u)" + +#: ihex.c:392 +msgid "%B:%u: bad extended address record length in Intel Hex file" +msgstr "%B:%u: fejlagtig længde pÃ¥ post for udvidet adresse i heksadecimal Intel-fil" + +#: ihex.c:409 +msgid "%B:%u: bad extended start address length in Intel Hex file" +msgstr "%B:%u: fejlagtig længde pÃ¥ udvidet startadresse i heksadecimal Intel-fil" + +#: ihex.c:426 +msgid "%B:%u: bad extended linear address record length in Intel Hex file" +msgstr "%B:%u: fejlagtig længde pÃ¥ post for udvidet lineær adresse i heksadecimal Intel-fil" + +#: ihex.c:443 +msgid "%B:%u: bad extended linear start address length in Intel Hex file" +msgstr "%B:%u: fejlagtig længde pÃ¥ udvidet lineær startadresse i heksadecimal Intel-fil" + +#: ihex.c:460 +msgid "%B:%u: unrecognized ihex type %u in Intel Hex file" +msgstr "%B:%u: ukendt ihex-type %u i heksadecimal Intel-fil" + +#: ihex.c:579 +msgid "%B: internal error in ihex_read_section" +msgstr "%B: intern fejl i ihex_read_section" + +#: ihex.c:613 +msgid "%B: bad section length in ihex_read_section" +msgstr "%B: fejlagtig sektionslængde i ihex_read_sektion" + +#: ihex.c:826 +#, c-format +msgid "%s: address 0x%s out of range for Intel Hex file" +msgstr "%s: adressen 0x%s er uden for intervallet for heksadecimal Intel-fil" + +#: libbfd.c:863 +msgid "%B: unable to get decompressed section %A" +msgstr "%B: kan ikke hente dekomprimeret sektion %A" + +#: libbfd.c:1027 +#, c-format +msgid "Deprecated %s called at %s line %d in %s\n" +msgstr "Forældet %s kaldt ved %s linje %d i %s\n" + +#: libbfd.c:1030 +#, c-format +msgid "Deprecated %s called\n" +msgstr "Forældet %s kaldt\n" + +#: linker.c:1911 +msgid "%B: indirect symbol `%s' to `%s' is a loop" +msgstr "%B: indirekte symbol \"%s\" til \"%s\" er en løkke" + +#: linker.c:2778 +#, c-format +msgid "Attempt to do relocatable link with %s input and %s output" +msgstr "Forsøg at lave en relokérbar lænke med %s-inddata og %s-uddata" + +#: linker.c:3105 +msgid "%B: warning: ignoring duplicate section `%A'\n" +msgstr "%B: advarsel: ignorerer gentaget sektion \"%A\"\n" + +#: linker.c:3119 +msgid "%B: warning: duplicate section `%A' has different size\n" +msgstr "%B: advarsel: gentaget sektion \"%A\" har forskellig længde\n" + +#: mach-o.c:3403 +msgid "Mach-O header:\n" +msgstr "Mach-O-header:\n" + +# eller skal det være magisk tal? +#: mach-o.c:3404 +#, c-format +msgid " magic : %08lx\n" +msgstr " magi : %08lx\n" + +#: mach-o.c:3405 +#, c-format +msgid " cputype : %08lx (%s)\n" +msgstr " cputype : %08lx (%s)\n" + +#: mach-o.c:3407 +#, c-format +msgid " cpusubtype: %08lx\n" +msgstr " cpusubtype: %08lx\n" + +#: mach-o.c:3408 +#, c-format +msgid " filetype : %08lx (%s)\n" +msgstr " filtype : %08lx (%s)\n" + +# ? +#: mach-o.c:3411 +#, c-format +msgid " ncmds : %08lx (%lu)\n" +msgstr " nkmd'er : %08lx (%lu)\n" + +# kan ikke sÃ¥ godt gøre de her konsistente +#: mach-o.c:3412 +#, c-format +msgid " sizeofcmds: %08lx\n" +msgstr " sizeofcmds: %08lx\n" + +#: mach-o.c:3413 +#, c-format +msgid " flags : %08lx (" +msgstr " flag : %08lx (" + +#: mach-o.c:3415 vms-alpha.c:7652 +msgid ")\n" +msgstr ")\n" + +#: mach-o.c:3416 +#, c-format +msgid " reserved : %08x\n" +msgstr " reserveret: %08x\n" + +#: mach-o.c:3426 +msgid "Segments and Sections:\n" +msgstr "Segmenter og sektioner:\n" + +#: mach-o.c:3427 +msgid " #: Segment name Section name Address\n" +msgstr " #: Segmentnavn Sektionsnavn Adresse\n" + +#: merge.c:832 +#, c-format +msgid "%s: access beyond end of merged section (%ld)" +msgstr "%s: tilgang ud over slutningen pÃ¥ sammenflettet sektion (%ld)" + +#: mmo.c:456 +#, c-format +msgid "%s: No core to allocate section name %s\n" +msgstr "%s: Ingen kerne til at allokere sektionsnavn %s\n" + +#: mmo.c:531 +#, c-format +msgid "%s: No core to allocate a symbol %d bytes long\n" +msgstr "%s: Ingen kerne til at allokere et %d byte langt symbol\n" + +#: mmo.c:1187 +#, c-format +msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" +msgstr "%s: ugyldig mmo-fil: initieringsværdi for $255 er ikke \"Main\"\n" + +#: mmo.c:1332 +#, c-format +msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n" +msgstr "%s: bred tegn-sekvens som ikke understøttes 0x%02X 0x%02X efter symbolnavnet som begynder med \"%s\"\n" + +#: mmo.c:1565 +#, c-format +msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgstr "%s: ugyldig mmo-fil: lopkode \"%d\" understøttes ikke\n" + +#: mmo.c:1575 +#, c-format +msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" +msgstr "%s: ugyldig mmo-fil: forventede YZ = 1 fik YZ = %d for lop_quote\n" + +#: mmo.c:1611 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" +msgstr "%s: ugyldig mmo-fil: forventede z = 1 eller z = 2, fik z = %d for lop_loc\n" + +#: mmo.c:1657 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" +msgstr "%s: ugyldig mmo-fil: forventede z = 1 eller z = 2, fik z = %d for lop_fixo\n" + +#: mmo.c:1696 +#, c-format +msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" +msgstr "%s: ugyldig mmo-fil: forventede y = 0, fik y = %d for lop_fixrx\n" + +#: mmo.c:1705 +#, c-format +msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" +msgstr "%s: ugyldig mmo-fil: forventede z = 16 eller z = 24, fik z = %d for lop_fixr\n" + +#: mmo.c:1728 +#, 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: ugyldig mmo-fil: indledende byte i operandord skal være 0 eller 1, fik %d for lop_fixrx\n" + +#: mmo.c:1751 +#, c-format +msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgstr "%s: kan ikke allokere filnavn for fil nummer %d, %d byte\n" + +#: mmo.c:1771 +#, c-format +msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" +msgstr "%s: ugyldig mmo-fil: fil nummer %d \"%s\", var allerede angivet som \"%s\"\n" + +#: mmo.c:1784 +#, c-format +msgid "%s: invalid mmo file: file name for number %d was not specified before use\n" +msgstr "%s: ugyldig mmo-fil: filnavnet for nummer %d blev ikke angivet inden brug\n" + +#: mmo.c:1890 +#, c-format +msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" +msgstr "%s: ugyldig mmo-fil: felter y og z i lop_stab er ikke-tomme, y: %d, z: %d\n" + +#: mmo.c:1926 +#, c-format +msgid "%s: invalid mmo file: lop_end not last item in file\n" +msgstr "%s: ugyldig mmo-fil: lop_end er ikke sidste objekt i fil\n" + +#: mmo.c:1939 +#, 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: ugyldig mmo-fil: YZ i lop_end (%ld) er ikke lig med antal af tetraer til den foregÃ¥ende lop_stab (%ld)\n" + +#: mmo.c:2649 +#, c-format +msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgstr "%s: ugyldig symboltabel: dubletsymbol \"%s\"\n" + +#: mmo.c:2889 +#, c-format +msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n" +msgstr "%s: Fejlagtig symboldefinition: \"Main\" er sat til %s i stedet for startadressen %s\n" + +#: mmo.c:2981 +#, 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: advarsel: symboltabellen er for stor for mmo, større end 65535 32-bit ord: %d. Kun \"Main\" vil blive sendt.\n" + +#: mmo.c:3026 +#, c-format +msgid "%s: internal error, symbol table changed size from %d to %d words\n" +msgstr "%s: intern fejl, symboltabellen ændrede størrelse fra %d til %d ord\n" + +#: mmo.c:3078 +#, c-format +msgid "%s: internal error, internal register section %s had contents\n" +msgstr "%s: intern fejl, den interne registersektion %s havde indhold\n" + +#: mmo.c:3129 +#, c-format +msgid "%s: no initialized registers; section length 0\n" +msgstr "%s: ingen initierede registre; sektionslængde 0\n" + +#: mmo.c:3135 +#, c-format +msgid "%s: too many initialized registers; section length %ld\n" +msgstr "%s: for mange initierede registre; sektionslængde %ld\n" + +#: mmo.c:3140 +#, c-format +msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n" +msgstr "%s: ugyldig startadresse for initierede registre med længden %ld: 0x%lx%08lx\n" + +#: oasys.c:882 +#, c-format +msgid "%s: can not represent section `%s' in oasys" +msgstr "%s: kan ikke repræsentere sektionen \"%s\" i oasys" + +#: osf-core.c:140 +#, c-format +msgid "Unhandled OSF/1 core file section type %d\n" +msgstr "UhÃ¥ndteret sektionstype %d for OSF/1-hukommelsesfil\n" + +#: pe-mips.c:607 +msgid "%B: `ld -r' not supported with PE MIPS objects\n" +msgstr "%B: \"ld -r\" understøttes ikke med PE MIPS-objekter\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:719 +msgid "%B: unimplemented %s\n" +msgstr "%B: uimplementeret %s\n" + +#: pe-mips.c:745 +msgid "%B: jump too far away\n" +msgstr "%B: hop for langt bort\n" + +#: pe-mips.c:771 +msgid "%B: bad pair/reflo after refhi\n" +msgstr "%B: fejlagtigt par/reflo efter refhi\n" + +#: pei-x86_64.c:444 +#, c-format +msgid "warning: .pdata section size (%ld) is not a multiple of %d\n" +msgstr "advarsel: størrelsen pÃ¥ .pdata-sektionen (%ld) er ikke et multiplum af %d\n" + +#: pei-x86_64.c:448 peigen.c:1618 peigen.c:1801 pepigen.c:1618 pepigen.c:1801 +#: pex64igen.c:1618 pex64igen.c:1801 +#, c-format +msgid "" +"\n" +"The Function Table (interpreted .pdata section contents)\n" +msgstr "" +"\n" +"Funktionstabellen (tolket indhold fra .pdata-sektionen)\n" + +#: pei-x86_64.c:450 +#, c-format +msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" +msgstr "vma:\t\t\tStartadresse\t Slutadresse\t Tilbagespolingsdata\n" + +#. XXX code yet to be written. +#: peicode.h:751 +msgid "%B: Unhandled import type; %x" +msgstr "%B: UhÃ¥ndteret importtype; %x" + +#: peicode.h:756 +msgid "%B: Unrecognised import type; %x" +msgstr "%B: Ukendt importtype; %x" + +#: peicode.h:770 +msgid "%B: Unrecognised import name type; %x" +msgstr "%B: Ukendt importnavnstype; %x" + +#: peicode.h:1162 +msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive" +msgstr "%B: Ukendt maskintype (0x%x) i Import Library Format-arkiv" + +#: peicode.h:1174 +msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive" +msgstr "%B: Genkendt men uhÃ¥ndteret maskintype (0x%x) i Import Library Format-arkiv" + +#: peicode.h:1192 +msgid "%B: size field is zero in Import Library Format header" +msgstr "%B: størrelsesfeltet er nul i Import Library Format-header" + +#: peicode.h:1223 +msgid "%B: string not null terminated in ILF object file." +msgstr "%B: streng ikke nultermineret i ILF-objektfil." + +#: ppcboot.c:414 +#, c-format +msgid "" +"\n" +"ppcboot header:\n" +msgstr "" +"\n" +"ppcboot-hoved:\n" + +#: ppcboot.c:415 +#, c-format +msgid "Entry offset = 0x%.8lx (%ld)\n" +msgstr "Startafstand = 0x%.8lx (%ld)\n" + +#: ppcboot.c:417 +#, c-format +msgid "Length = 0x%.8lx (%ld)\n" +msgstr "Længde = 0x%.8lx (%ld)\n" + +#: ppcboot.c:421 +#, c-format +msgid "Flag field = 0x%.2x\n" +msgstr "Flagfelt = 0x%.2x\n" + +#: ppcboot.c:427 +#, c-format +msgid "Partition name = \"%s\"\n" +msgstr "Partitionsnavn = \"%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 for partition[%d] = 0x%.8lx (%ld)\n" + +#: ppcboot.c:460 +#, c-format +msgid "Partition[%d] length = 0x%.8lx (%ld)\n" +msgstr "Længde pÃ¥ partition[%d] = 0x%.8lx (%ld)\n" + +#: som.c:5471 +#, c-format +msgid "" +"\n" +"Exec Auxiliary Header\n" +msgstr "" +"\n" +"Ekstraheader til kørsel\n" + +#: som.c:5776 +msgid "som_sizeof_headers unimplemented" +msgstr "som_sizeof_headers er ikke implementeret" + +#: srec.c:261 +msgid "%B:%d: Unexpected character `%s' in S-record file\n" +msgstr "%B:%d: Uventet tegn \"%s\" i S-post-fil\n" + +#: srec.c:567 srec.c:600 +msgid "%B:%d: Bad checksum in S-record file\n" +msgstr "%B:%d: DÃ¥rlig tjeksum i S-post-fil\n" + +# Hvad er stabs? +#: stabs.c:279 +msgid "%B(%A+0x%lx): Stabs entry has invalid string index." +msgstr "%B(%A+0x%lx): Stabs-post har ugyldigt strengindeks." + +#: syms.c:1079 +msgid "Unsupported .stab relocation" +msgstr ".stab-relokering som ikke understøttes" + +#: vms-alpha.c:1287 +#, c-format +msgid "Unknown EGSD subtype %d" +msgstr "Ukendt EGSD-undertype %d" + +#: vms-alpha.c:1318 +#, c-format +msgid "Stack overflow (%d) in _bfd_vms_push" +msgstr "Stakken giver overløb (%d) i _bfd_vms_push" + +#: vms-alpha.c:1331 +msgid "Stack underflow in _bfd_vms_pop" +msgstr "Stakken giver underløb i _bfd_vms_pop" + +#. These names have not yet been added to this switch statement. +#: vms-alpha.c:1568 +#, c-format +msgid "unknown ETIR command %d" +msgstr "ukendt ETIR-kommando %d" + +#: vms-alpha.c:1755 +#, c-format +msgid "bad section index in %s" +msgstr "fejlagtigt sektionsindeks i %s" + +#: vms-alpha.c:1768 +#, c-format +msgid "unsupported STA cmd %s" +msgstr "STA-kommando %s understøttes ikke" + +#. Insert field. +#. Unsigned shift. +#. Rotate. +#. Redefine symbol to current location. +#. Define a literal. +#: vms-alpha.c:1944 vms-alpha.c:1975 vms-alpha.c:2222 +#, c-format +msgid "%s: not supported" +msgstr "%s: understøttes ikke" + +#: vms-alpha.c:1950 +#, c-format +msgid "%s: not implemented" +msgstr "%s: ikke implementeret" + +#: vms-alpha.c:2206 +#, c-format +msgid "invalid use of %s with contexts" +msgstr "ugyldig brug af %s med kontekster" + +#: vms-alpha.c:2240 +#, c-format +msgid "reserved cmd %d" +msgstr "reserveret kommando %d" + +#: vms-alpha.c:2325 +msgid "Object module NOT error-free !\n" +msgstr "Objektmodulet IKKE fejlfri!\n" + +#: vms-alpha.c:2754 +#, c-format +msgid "Symbol %s replaced by %s\n" +msgstr "Symbol %s erstattet med %s\n" + +#: vms-alpha.c:3757 +#, c-format +msgid "SEC_RELOC with no relocs in section %s" +msgstr "SEC_RELOC uden relokeringer i sektion %s" + +#: vms-alpha.c:3810 vms-alpha.c:4041 +#, c-format +msgid "Size error in section %s" +msgstr "Størrelsesfejl i sektion %s" + +#: vms-alpha.c:3980 +msgid "Spurious ALPHA_R_BSR reloc" +msgstr "Uægte ALPHA_R_BSD-relokering" + +#: vms-alpha.c:4028 +#, c-format +msgid "Unhandled relocation %s" +msgstr "UhÃ¥ndteret relokering %s" + +#: vms-alpha.c:4318 +#, c-format +msgid "unknown source command %d" +msgstr "ukendt kildekommando %d" + +#: vms-alpha.c:4379 +msgid "DST__K_SET_LINUM_INCR not implemented" +msgstr "DST__K_SET_LINUM_INCR er ikke implementeret" + +#: vms-alpha.c:4385 +msgid "DST__K_SET_LINUM_INCR_W not implemented" +msgstr "DST__K_SET_LINUM_INCR_W er ikke implementeret" + +#: vms-alpha.c:4391 +msgid "DST__K_RESET_LINUM_INCR not implemented" +msgstr "DST__K_RESET_LINUM_INCR ikke implementeret" + +#: vms-alpha.c:4397 +msgid "DST__K_BEG_STMT_MODE not implemented" +msgstr "DST__K_BEG_STMT_MODE er ikke implementeret" + +#: vms-alpha.c:4403 +msgid "DST__K_END_STMT_MODE not implemented" +msgstr "DST__K_END_STMT_MODE er ikke implementeret" + +#: vms-alpha.c:4430 +msgid "DST__K_SET_PC not implemented" +msgstr "DST__K_SET_PC er ikke implementeret" + +#: vms-alpha.c:4436 +msgid "DST__K_SET_PC_W not implemented" +msgstr "DST__K_SET_PC_W er ikke implementeret" + +#: vms-alpha.c:4442 +msgid "DST__K_SET_PC_L not implemented" +msgstr "DST__K_SET_PC_L er ikke implementeret" + +#: vms-alpha.c:4448 +msgid "DST__K_SET_STMTNUM not implemented" +msgstr "DST__K_SET_STMTNUM er ikke implementeret" + +#: vms-alpha.c:4491 +#, c-format +msgid "unknown line command %d" +msgstr "ukendt linjekommando %d" + +#: vms-alpha.c:4938 vms-alpha.c:4955 vms-alpha.c:4969 vms-alpha.c:4984 +#: vms-alpha.c:4996 vms-alpha.c:5007 vms-alpha.c:5019 +#, c-format +msgid "Unknown reloc %s + %s" +msgstr "Ukendt relokering %s + %s" + +#: vms-alpha.c:5074 +#, c-format +msgid "Unknown reloc %s" +msgstr "Ukendt relokering %s" + +#: vms-alpha.c:5087 +msgid "Invalid section index in ETIR" +msgstr "Fejlagtigt sektionsindeks i ETIR" + +#: vms-alpha.c:5134 +#, c-format +msgid "Unknown symbol in command %s" +msgstr "Ugyldigt symbol i kommando %s" + +#: vms-alpha.c:5649 +#, c-format +msgid " EMH %u (len=%u): " +msgstr " EMH %u (længde=%u): " + +#: vms-alpha.c:5658 +#, c-format +msgid "Module header\n" +msgstr "Modulheader\n" + +#: vms-alpha.c:5659 +#, c-format +msgid " structure level: %u\n" +msgstr " strukturniveau : %u\n" + +#: vms-alpha.c:5660 +#, c-format +msgid " max record size: %u\n" +msgstr " maks post-str: %u\n" + +#: vms-alpha.c:5663 +#, c-format +msgid " module name : %.*s\n" +msgstr " modulnavn : %.*s\n" + +#: vms-alpha.c:5665 +#, c-format +msgid " module version : %.*s\n" +msgstr " modulversion : %.*s\n" + +#: vms-alpha.c:5667 +#, c-format +msgid " compile date : %.17s\n" +msgstr " kompileringsdag: %.17s\n" + +#: vms-alpha.c:5672 +#, c-format +msgid "Language Processor Name\n" +msgstr "Navn pÃ¥ sprogprocessor\n" + +#: vms-alpha.c:5673 +#, c-format +msgid " language name: %.*s\n" +msgstr " sprognavn: %.*s\n" + +#: vms-alpha.c:5680 +#, c-format +msgid "Source Files Header\n" +msgstr "Kildefilheader\n" + +#: vms-alpha.c:5681 +#, c-format +msgid " file: %.*s\n" +msgstr " fil: %.*s\n" + +#: vms-alpha.c:5688 +#, c-format +msgid "Title Text Header\n" +msgstr "Titeltekstheader\n" + +#: vms-alpha.c:5689 +#, c-format +msgid " title: %.*s\n" +msgstr " titel: %.*s\n" + +#: vms-alpha.c:5696 +#, c-format +msgid "Copyright Header\n" +msgstr "Ophavsretsheader\n" + +#: vms-alpha.c:5697 +#, c-format +msgid " copyright: %.*s\n" +msgstr " ophavsret: %.*s\n" + +#: vms-alpha.c:5703 +#, c-format +msgid "unhandled emh subtype %u\n" +msgstr "uhÃ¥ndteret emh-undertype %u\n" + +#: vms-alpha.c:5713 +#, c-format +msgid " EEOM (len=%u):\n" +msgstr " EEOM (længde=%u):\n" + +#: vms-alpha.c:5714 +#, c-format +msgid " number of cond linkage pairs: %u\n" +msgstr " antal cond-lænkningspar: %u\n" + +#: vms-alpha.c:5716 +#, c-format +msgid " completion code: %u\n" +msgstr " fuldførelseskode: %u\n" + +#: vms-alpha.c:5720 +#, c-format +msgid " transfer addr flags: 0x%02x\n" +msgstr " overførselsadresseflag: 0x%02x\n" + +#: vms-alpha.c:5721 +#, c-format +msgid " transfer addr psect: %u\n" +msgstr " overførselsadresse-psect: %u\n" + +#: vms-alpha.c:5723 +#, c-format +msgid " transfer address : 0x%08x\n" +msgstr " overførselsadresse : 0x%08x\n" + +#: vms-alpha.c:5732 +msgid " WEAK" +msgstr " WEAK" + +#: vms-alpha.c:5734 +msgid " DEF" +msgstr " DEF" + +#: vms-alpha.c:5736 +msgid " UNI" +msgstr " UNI" + +#: vms-alpha.c:5738 vms-alpha.c:5759 +msgid " REL" +msgstr " REL" + +#: vms-alpha.c:5740 +msgid " COMM" +msgstr " COMM" + +#: vms-alpha.c:5742 +msgid " VECEP" +msgstr " VECEP" + +#: vms-alpha.c:5744 +msgid " NORM" +msgstr " NORM" + +#: vms-alpha.c:5746 +msgid " QVAL" +msgstr " QVAL" + +#: vms-alpha.c:5753 +msgid " PIC" +msgstr " PIC" + +#: vms-alpha.c:5755 +msgid " LIB" +msgstr " LIB" + +#: vms-alpha.c:5757 +msgid " OVR" +msgstr " OVR" + +#: vms-alpha.c:5761 +msgid " GBL" +msgstr " GBL" + +#: vms-alpha.c:5763 +msgid " SHR" +msgstr " SHR" + +#: vms-alpha.c:5765 +msgid " EXE" +msgstr " EXE" + +#: vms-alpha.c:5767 +msgid " RD" +msgstr " RD" + +#: vms-alpha.c:5769 +msgid " WRT" +msgstr " WRT" + +#: vms-alpha.c:5771 +msgid " VEC" +msgstr " VEC" + +#: vms-alpha.c:5773 +msgid " NOMOD" +msgstr " NOMOD" + +#: vms-alpha.c:5775 +msgid " COM" +msgstr " COM" + +#: vms-alpha.c:5777 +msgid " 64B" +msgstr " 64B" + +#: vms-alpha.c:5786 +#, c-format +msgid " EGSD (len=%u):\n" +msgstr " EGSD (længde=%u):\n" + +#: vms-alpha.c:5798 +#, c-format +msgid " EGSD entry %2u (type: %u, len: %u): " +msgstr " EGSD-post %2u (type: %u, længde: %u): " + +#: vms-alpha.c:5810 +#, c-format +msgid "PSC - Program section definition\n" +msgstr "PSC - Programsektionsdefinition\n" + +#: vms-alpha.c:5811 vms-alpha.c:5828 +#, c-format +msgid " alignment : 2**%u\n" +msgstr " justering : 2**%u\n" + +#: vms-alpha.c:5812 vms-alpha.c:5829 +#, c-format +msgid " flags : 0x%04x" +msgstr " flag : 0x%04x" + +#: vms-alpha.c:5816 +#, c-format +msgid " alloc (len): %u (0x%08x)\n" +msgstr " allok (lgd): %u (0x%08x)\n" + +#: vms-alpha.c:5817 vms-alpha.c:5874 vms-alpha.c:5923 +#, c-format +msgid " name : %.*s\n" +msgstr " navn : %.*s\n" + +#: vms-alpha.c:5827 +#, c-format +msgid "SPSC - Shared Image Program section def\n" +msgstr "SPSC - Shared Image Program-sektionsdefinition\n" + +#: vms-alpha.c:5833 +#, c-format +msgid " alloc (len) : %u (0x%08x)\n" +msgstr " allok (længde): %u (0x%08x)\n" + +#: vms-alpha.c:5834 +#, c-format +msgid " image offset : 0x%08x\n" +msgstr " image-afsæt : 0x%08x\n" + +#: vms-alpha.c:5836 +#, c-format +msgid " symvec offset : 0x%08x\n" +msgstr " symvec-afsæt : 0x%08x\n" + +#: vms-alpha.c:5838 +#, c-format +msgid " name : %.*s\n" +msgstr " navn : %.*s\n" + +#: vms-alpha.c:5851 +#, c-format +msgid "SYM - Global symbol definition\n" +msgstr "SYM - Global symboldefinition\n" + +#: vms-alpha.c:5852 vms-alpha.c:5912 vms-alpha.c:5933 vms-alpha.c:5952 +#, c-format +msgid " flags: 0x%04x" +msgstr " flag : 0x%04x" + +#: vms-alpha.c:5855 +#, c-format +msgid " psect offset: 0x%08x\n" +msgstr " psect-afsæt : 0x%08x\n" + +#: vms-alpha.c:5859 +#, c-format +msgid " code address: 0x%08x\n" +msgstr " kodeadresse : 0x%08x\n" + +#: vms-alpha.c:5861 +#, c-format +msgid " psect index for entry point : %u\n" +msgstr " psect-indeks for indgangspunkt : %u\n" + +#: vms-alpha.c:5864 vms-alpha.c:5940 vms-alpha.c:5959 +#, c-format +msgid " psect index : %u\n" +msgstr " psect-indeks : %u\n" + +#: vms-alpha.c:5866 vms-alpha.c:5942 vms-alpha.c:5961 +#, c-format +msgid " name : %.*s\n" +msgstr " navn : %.*s\n" + +#: vms-alpha.c:5873 +#, c-format +msgid "SYM - Global symbol reference\n" +msgstr "SYM - Global symbolreference\n" + +#: vms-alpha.c:5885 +#, c-format +msgid "IDC - Ident Consistency check\n" +msgstr "IDC - identitetskonsistenstjek\n" + +#: vms-alpha.c:5886 +#, c-format +msgid " flags : 0x%08x" +msgstr " flag : 0x%08x" + +#: vms-alpha.c:5890 +#, c-format +msgid " id match : %x\n" +msgstr " id-match : %x\n" + +#: vms-alpha.c:5892 #, c-format -msgid "%s: linking little endian files with big endian files" -msgstr "%s: lænker little endian-filer med big endian-filer" +msgid " error severity: %x\n" +msgstr " fejlalvorlighed: %x\n" -#: elf32-v850.c:682 +#: vms-alpha.c:5895 #, c-format -msgid "Variable `%s' cannot occupy in multiple small data regions" -msgstr "Variabel \"%s\" kan ikke befinde sig i flere små dataområder" +msgid " entity name : %.*s\n" +msgstr " entitetsnavn : %.*s\n" -#: elf32-v850.c:685 +#: vms-alpha.c:5897 #, c-format -msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions" -msgstr "Variabel \"%s\" kan kun være i ét af de små, tomme og bittesmå dataområder" +msgid " object name : %.*s\n" +msgstr " objektnavn : %.*s\n" -#: elf32-v850.c:688 +#: vms-alpha.c:5900 #, c-format -msgid "Variable `%s' cannot be in both small and zero data regions simultaneously" -msgstr "Variabel \"%s\" kan ikke være i både små og tomme dataområder samtidigt" +msgid " binary ident : 0x%08x\n" +msgstr " binær id : 0x%08x\n" -#: elf32-v850.c:691 +#: vms-alpha.c:5903 #, c-format -msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously" -msgstr "Variabel \"%s\" kan ikke være i både små og bittesmå dataområder samtidigt" +msgid " ascii ident : %.*s\n" +msgstr " ascii-id : %.*s\n" -#: elf32-v850.c:694 +#: vms-alpha.c:5911 #, c-format -msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously" -msgstr "Variabel \"%s\" kan ikke være i både tomme og bittesmå dataområder samtidigt" +msgid "SYMG - Universal symbol definition\n" +msgstr "SYMG - Universel symboldefinition\n" -#: elf32-v850.c:1072 -msgid "FAILED to find previous HI16 reloc\n" -msgstr "MISLYKKEDES med at finde tidligere HI16-relokering\n" +#: vms-alpha.c:5915 +#, c-format +msgid " symbol vector offset: 0x%08x\n" +msgstr " symbolvektorafsæt : 0x%08x\n" -#: elf32-v850.c:1703 -msgid "could not locate special linker symbol __gp" -msgstr "kunne ikke lokalisere specielt lænkersymbol __gp" +#: vms-alpha.c:5917 +#, c-format +msgid " entry point: 0x%08x\n" +msgstr " indgangspunkt: 0x%08x\n" -#: elf32-v850.c:1707 -msgid "could not locate special linker symbol __ep" -msgstr "kunne ikke lokalisere specielt lænkersymbol __ep" +#: vms-alpha.c:5919 +#, c-format +msgid " proc descr : 0x%08x\n" +msgstr " proc-beskr : 0x%08x\n" -#: elf32-v850.c:1711 -msgid "could not locate special linker symbol __ctbp" -msgstr "kunne ikke lokalisere specielt lænkersymbol __ctbp" +#: vms-alpha.c:5921 +#, c-format +msgid " psect index: %u\n" +msgstr " psect-indeks: %u\n" -#: elf32-v850.c:1875 +#: vms-alpha.c:5932 #, c-format -msgid "%s: Architecture mismatch with previous modules" -msgstr "%s: Arkitekturen passer ikke sammen med tidligere moduler" +msgid "SYMV - Vectored symbol definition\n" +msgstr "SYMV - vektoriseret symboldefinition\n" -#: elf32-v850.c:1895 +#: vms-alpha.c:5936 #, c-format -msgid "private flags = %lx: " -msgstr "private flag = %lx: " +msgid " vector : 0x%08x\n" +msgstr " vektor : 0x%08x\n" -#: elf32-v850.c:1900 -msgid "v850 architecture" -msgstr "v850-arkitektur" +#: vms-alpha.c:5938 vms-alpha.c:5957 +#, c-format +msgid " psect offset: %u\n" +msgstr " psect-afsæt : %u\n" -#: elf32-v850.c:1901 -msgid "v850e architecture" -msgstr "v850e-arkitektur" +#: vms-alpha.c:5951 +#, c-format +msgid "SYMM - Global symbol definition with version\n" +msgstr "SYMM - Global symboldefinition med version\n" -#: elf32-v850.c:1902 -msgid "v850ea architecture" -msgstr "v850ea-arkitektur" +#: vms-alpha.c:5955 +#, c-format +msgid " version mask: 0x%08x\n" +msgstr " versionsmaske: 0x%08x\n" -#: elf32-vax.c:546 -msgid " [nonpic]" -msgstr " [ikke-pic]" +#: vms-alpha.c:5966 +#, c-format +msgid "unhandled egsd entry type %u\n" +msgstr "uhÃ¥ndteret egsd-post-type %u\n" -#: elf32-vax.c:549 -msgid " [d-float]" -msgstr " [d-flydende tal]" +#: vms-alpha.c:6000 +#, c-format +msgid " linkage index: %u, replacement insn: 0x%08x\n" +msgstr " lænkningsindeks: %u, erstatnings-insn: 0x%08x\n" -#: elf32-vax.c:552 -msgid " [g-float]" -msgstr " [g-flydende tal]" +#: vms-alpha.c:6003 +#, c-format +msgid " psect idx 1: %u, offset 1: 0x%08x %08x\n" +msgstr " psect-idx 1: %u, afsæt 1: 0x%08x %08x\n" -#: elf32-vax.c:674 +#: vms-alpha.c:6007 #, c-format -msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld" -msgstr "%s: advarsel: GOT-addendum %ld til \"%s\" stemmer ikke overens med tidligere GOT-addendum %ld" +msgid " psect idx 2: %u, offset 2: 0x%08x %08x\n" +msgstr " psect-idx 2: %u, afsæt 2: 0x%08x %08x\n" -#: elf32-vax.c:1679 +#: vms-alpha.c:6012 #, c-format -msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" -msgstr "%s: advarsel: PLT-addendum %d til \"%s\" fra sektionen %s ignoreredes" +msgid " psect idx 3: %u, offset 3: 0x%08x %08x\n" +msgstr " psect-idx 3: %u, afsæt 3: 0x%08x %08x\n" -#: elf32-vax.c:1814 +#: vms-alpha.c:6017 #, c-format -msgid "%s: warning: %s relocation against symbol `%s' from %s section" -msgstr "%s: advarsel: %s-relokering mod symbol \"%s\" fra sektionen %s" +msgid " global name: %.*s\n" +msgstr " globalt navn: %.*s\n" -#: elf32-vax.c:1820 +#: vms-alpha.c:6027 #, c-format -msgid "%s: warning: %s relocation to 0x%x from %s section" -msgstr "%s: advarsel: %s-relokering til 0x%x fra sektionen %s" +msgid " %s (len=%u+%u):\n" +msgstr " %s (længde=%u+%u):\n" -#: elf32-ia64.c:2280 elf32-xstormy16.c:414 elf64-ia64.c:2280 -msgid "non-zero addend in @fptr reloc" -msgstr "ikke-tomt addendum i @fptr-relokering" +#: vms-alpha.c:6042 +#, c-format +msgid " (type: %3u, size: 4+%3u): " +msgstr " (type: %3u, størrelse: 4+%3u): " -#: elf64-alpha.c:1097 -msgid "GPDISP relocation did not find ldah and lda instructions" -msgstr "GPDISP-relokering fandt ingen ldah- og lda-instruktioner" +#: vms-alpha.c:6046 +#, c-format +msgid "STA_GBL (stack global) %.*s\n" +msgstr "STA_GBL (stak-global) %.*s\n" -#: elf64-alpha.c:3675 +#: vms-alpha.c:6050 #, c-format -msgid "%s: .got subsegment exceeds 64K (size %d)" -msgstr "%s: .got-subsegment overskrider 64 kB (størrelse %d)" +msgid "STA_LW (stack longword) 0x%08x\n" +msgstr "STA_LW (stak-longword) 0x%08x\n" -#: elf64-alpha.c:4498 elf64-alpha.c:4510 +#: vms-alpha.c:6054 #, c-format -msgid "%s: gp-relative relocation against dynamic symbol %s" -msgstr "%s: gp-relativ relokering mod dynamisk symbol %s" +msgid "STA_QW (stack quadword) 0x%08x %08x\n" +msgstr "STA_QW (stak-quadword) 0x%08x %08x\n" -#: elf64-alpha.c:4536 elf64-alpha.c:4676 +#: vms-alpha.c:6059 #, c-format -msgid "%s: pc-relative relocation against dynamic symbol %s" -msgstr "%s: pc-relativ relokering mod dynamisk symbol %s" +msgid "STA_PQ (stack psect base + offset)\n" +msgstr "STA_PQ (stak-psect base + afsæt)\n" -#: elf64-alpha.c:4564 +#: vms-alpha.c:6060 #, c-format -msgid "%s: change in gp: BRSGP %s" -msgstr "%s: ændring i gp: BRSGP %s" +msgid " psect: %u, offset: 0x%08x %08x\n" +msgstr " psect: %u, afsæt: 0x%08x %08x\n" -#: elf64-alpha.c:4589 -msgid "" -msgstr "" +#: vms-alpha.c:6066 +#, c-format +msgid "STA_LI (stack literal)\n" +msgstr "STA_LI (stak-literal)\n" -#: elf64-alpha.c:4594 +#: vms-alpha.c:6069 #, c-format -msgid "%s: !samegp reloc against symbol without .prologue: %s" -msgstr "%s: !samegp-relokering mod symbol uden .prologue: %s" +msgid "STA_MOD (stack module)\n" +msgstr "STA_MOD (stakmodul)\n" -#: elf64-alpha.c:4639 +#: vms-alpha.c:6072 #, c-format -msgid "%s: unhandled dynamic relocation against %s" -msgstr "%s: uhåndteret dynamisk relokering mod %s" +msgid "STA_CKARG (compare procedure argument)\n" +msgstr "STA_CKARG (argument til sammenligningsprocedure)\n" -#: elf64-alpha.c:4752 +#: vms-alpha.c:6076 #, c-format -msgid "%s: dtp-relative relocation against dynamic symbol %s" -msgstr "%s: dtp-relativ relokering mod dynamisk symbol %s" +msgid "STO_B (store byte)\n" +msgstr "STO_B (gem byte)\n" -#: elf64-alpha.c:4775 +#: vms-alpha.c:6079 #, c-format -msgid "%s: tp-relative relocation against dynamic symbol %s" -msgstr "%s: tp-relativ relokering mod dynamisk symbol %s" +msgid "STO_W (store word)\n" +msgstr "STO_W (gem word)\n" -#: elf64-hppa.c:2080 +#: vms-alpha.c:6082 #, c-format -msgid "stub entry for %s cannot load .plt, dp offset = %ld" -msgstr "stubpost for %s kan ikke indlæse .plt, dp-afstand = %ld" +msgid "STO_LW (store longword)\n" +msgstr "STO_LW (gem longword)\n" -#: elf64-mmix.c:1002 +#: vms-alpha.c:6085 #, c-format -msgid "" -"%s: Internal inconsistency error for value for\n" -" linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx\n" -msgstr "" -"%s: Intern inkonsistensfejl for værdien for\n" -" lænkerallokeret globalt register: lænket: 0x%lx%08lx != forenklet: 0x%lx%08lx\n" +msgid "STO_QW (store quadword)\n" +msgstr "STO_QW (gem quadword)\n" -#: elf64-mmix.c:1386 +#: vms-alpha.c:6091 #, c-format -msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s" -msgstr "%s: base-plus-afstandsrelokering mod registersymbol: (ukendt) i %s" +msgid "STO_IMMR (store immediate repeat) %u bytes\n" +msgstr "STO_IMMR (gem omgÃ¥ende gentagelse) %u byte\n" -#: elf64-mmix.c:1391 +#: vms-alpha.c:6098 #, c-format -msgid "%s: base-plus-offset relocation against register symbol: %s in %s" -msgstr "%s: base-plus-afstandsrelokering mod registersymbol: %s i %s" +msgid "STO_GBL (store global) %.*s\n" +msgstr "STO_GBL (gem global) %.*s\n" -#: elf64-mmix.c:1435 +#: vms-alpha.c:6102 #, c-format -msgid "%s: register relocation against non-register symbol: (unknown) in %s" -msgstr "%s: registerrelokering mod ikke-registersymbol: (ukendt) i %s" +msgid "STO_CA (store code address) %.*s\n" +msgstr "STO_CA (gem kodeadresse) %.*s\n" -#: elf64-mmix.c:1440 +#: vms-alpha.c:6106 #, c-format -msgid "%s: register relocation against non-register symbol: %s in %s" -msgstr "%s: registerrelokering mod ikke-registersymbol: %s i %s" +msgid "STO_RB (store relative branch)\n" +msgstr "STO_RB (gem relativ gren)\n" -#: elf64-mmix.c:1477 +#: vms-alpha.c:6109 #, c-format -msgid "%s: directive LOCAL valid only with a register or absolute value" -msgstr "%s: LOCAL-direktivet er kun gyldigt med et register eller en absolutværdi" +msgid "STO_AB (store absolute branch)\n" +msgstr "STO_AB (gem absolut gren)\n" -#: elf64-mmix.c:1505 +#: vms-alpha.c:6112 #, c-format -msgid "%s: LOCAL directive: Register $%ld is not a local register. First global register is $%ld." -msgstr "%s: LOCAL-direktiv: Register $%ld er ikke et lokalt register. Første globale register er $%ld." +msgid "STO_OFF (store offset to psect)\n" +msgstr "STO_OFF (gem afsæt til psect)\n" -#: elf64-mmix.c:1965 +#: vms-alpha.c:6118 #, c-format -msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n" -msgstr "%s: Fejl: flere definitioner af \"%s\"; begyndelsen på %s er sat i en tidligere lænket fil\n" +msgid "STO_IMM (store immediate) %u bytes\n" +msgstr "STO_IMM (gem omgÃ¥ende) %u byte\n" -#: elf64-mmix.c:2024 -msgid "Register section has contents\n" -msgstr "Registersektion har indhold\n" +#: vms-alpha.c:6125 +#, c-format +msgid "STO_GBL_LW (store global longword) %.*s\n" +msgstr "STO_GBL_LW (gem globalt longword) %.*s\n" -#: elf64-mmix.c:2186 +#: vms-alpha.c:6129 #, c-format -msgid "" -"Internal inconsistency: remaining %u != max %u.\n" -" Please report this bug." -msgstr "" -"Intern inkonsekvens: genstående %u != max %u.\n" -" Rapportér gerne denne fejl." +msgid "STO_OFF (store LP with procedure signature)\n" +msgstr "STO_OFF (gem LP med proceduresignatur)\n" -#: elf64-ppc.c:1669 libbfd.c:1435 +#: vms-alpha.c:6132 #, c-format -msgid "%s: compiled for a big endian system and target is little endian" -msgstr "%s: oversat for et big endian-system og målet er little endian" +msgid "STO_BR_GBL (store branch global) *todo*\n" +msgstr "STO_BR_GBL (gem gren globalt) *todo*\n" -#: elf64-ppc.c:1671 libbfd.c:1437 +#: vms-alpha.c:6135 #, c-format -msgid "%s: compiled for a little endian system and target is big endian" -msgstr "%s: oversat for et little endian-system og målet er big endian" +msgid "STO_BR_PS (store branch psect + offset) *todo*\n" +msgstr "STO_BR_PS (gem gren-psect + afsæt) *todo*\n" -#: elf64-ppc.c:3610 +#: vms-alpha.c:6139 #, c-format -msgid "%s: unexpected reloc type %u in .opd section" -msgstr "%s: uventet relokeringstype %u i .opd-sektion" +msgid "OPR_NOP (no-operation)\n" +msgstr "OPR_NOP (ingen operation)\n" -#: elf64-ppc.c:3630 +#: vms-alpha.c:6142 #, c-format -msgid "%s: .opd is not a regular array of opd entries" -msgstr "%s: .opd er ikke en almindelig vektor med opd-poster" +msgid "OPR_ADD (add)\n" +msgstr "OPR_ADD (læg sammen)\n" -#: elf64-ppc.c:3672 +#: vms-alpha.c:6145 #, c-format -msgid "%s: undefined sym `%s' in .opd section" -msgstr "%s: udefineret symbol \"%s\" i .opd-sektion" +msgid "OPR_SUB (substract)\n" +msgstr "OPR_SUB (træk fra)\n" -#: elf64-ppc.c:4397 +#: vms-alpha.c:6148 #, c-format -msgid "can't find branch stub `%s'" -msgstr "kan ikke finde grenstub \"%s\"" +msgid "OPR_MUL (multiply)\n" +msgstr "OPR_MUL (multiplicér)\n" -#: elf64-ppc.c:4436 elf64-ppc.c:4501 +#: vms-alpha.c:6151 #, c-format -msgid "linkage table error against `%s'" -msgstr "lænketabelsfejl mod \"%s\"" +msgid "OPR_DIV (divide)\n" +msgstr "OPR_DIV (dividér)\n" -#: elf64-ppc.c:4573 +#: vms-alpha.c:6154 #, c-format -msgid "can't build branch stub `%s'" -msgstr "kan ikke bygge grenstub \"%s\"" +msgid "OPR_AND (logical and)\n" +msgstr "OPR_AND (logisk og)\n" -#: elf64-ppc.c:5179 -msgid "stubs don't match calculated size" -msgstr "stubbe stemmer ikke overens med beregnet størrelse" +#: vms-alpha.c:6157 +#, c-format +msgid "OPR_IOR (logical inclusive or)\n" +msgstr "OPR_IOR (logisk inklusiv eller)\n" -#: elf64-ppc.c:5828 +#: vms-alpha.c:6160 #, c-format -msgid "%s: Relocation %s is not supported for symbol %s." -msgstr "%s: Relokeringen %s understøttes ikke for symbol %s." +msgid "OPR_EOR (logical exclusive or)\n" +msgstr "OPR_EOR (logisk eksklusiv eller)\n" -#: elf64-ppc.c:5872 +#: vms-alpha.c:6163 #, c-format -msgid "%s: error: relocation %s not a multiple of 4" -msgstr "%s: fejl: relokeringen %s er ikke en multipel af 4" +msgid "OPR_NEG (negate)\n" +msgstr "OPR_NEG (negation)\n" -#: elf64-sparc.c:1280 +#: vms-alpha.c:6166 #, c-format -msgid "%s: check_relocs: unhandled reloc type %d" -msgstr "%s: check_relocs: uhåndteret relokeringstype %d" +msgid "OPR_COM (complement)\n" +msgstr "OPR_COM (komplement)\n" -#: elf64-sparc.c:1317 +#: vms-alpha.c:6169 #, c-format -msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER" -msgstr "%s: Kun register %%g[2367] kan deklareres med STT_REGISTER" +msgid "OPR_INSV (insert field)\n" +msgstr "OPR_INSV (indsæt felt)\n" -#: elf64-sparc.c:1337 +#: vms-alpha.c:6172 #, c-format -msgid "Register %%g%d used incompatibly: %s in %s, previously %s in %s" -msgstr "Register %%g%d brugt inkompatibelt: %s i %s, tidligere %s i %s" +msgid "OPR_ASH (arithmetic shift)\n" +msgstr "OPR_ASH (aritmetisk skift)\n" -#: elf64-sparc.c:1360 +#: vms-alpha.c:6175 #, c-format -msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s" -msgstr "Symbol \"%s\" har forskellige typer: REGISTER i %s, tidligere %s i %s" +msgid "OPR_USH (unsigned shift)\n" +msgstr "OPR_USH (skift uden fortegn)\n" -#: elf64-sparc.c:1406 +#: vms-alpha.c:6178 #, c-format -msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s" -msgstr "Symbol \"%s\" har forskellige typer: %s i %s, tidligere REGISTER i %s" +msgid "OPR_ROT (rotate)\n" +msgstr "OPR_ROT (rotér)\n" -#: elf64-sparc.c:2970 +#: vms-alpha.c:6181 #, c-format -msgid "%s: linking UltraSPARC specific with HAL specific code" -msgstr "%s: lænker UltraSPARC-specifik med HAL-specifik kode" +msgid "OPR_SEL (select)\n" +msgstr "OPR_SEL (vælg)\n" -#: elfcode.h:1198 +#: vms-alpha.c:6184 #, c-format -msgid "%s: version count (%ld) does not match symbol count (%ld)" -msgstr "%s: versionsantal (%ld) stemmer ikke med symbolantal (%ld)" +msgid "OPR_REDEF (redefine symbol to curr location)\n" +msgstr "OPR_REDEF (omdefinér symbol til nuværende placering)\n" -#: elflink.c:440 +#: vms-alpha.c:6187 #, c-format -msgid "%s: Section %s is too large to add hole of %ld bytes" -msgstr "%s: Sektionen %s er for stor til at stoppe hul med %ld byte i" +msgid "OPR_REDEF (define a literal)\n" +msgstr "OPR_REDEF (definér en literal)\n" -#: elflink.h:1090 +#: vms-alpha.c:6191 #, c-format -msgid "%s: warning: unexpected redefinition of `%s'" -msgstr "%s: advarsel: uventet omdefinition af \"%s\"" +msgid "STC_LP (store cond linkage pair)\n" +msgstr "STC_LP (gem cond-lænkningspar)\n" -#: elflink.h:1727 +#: vms-alpha.c:6195 #, c-format -msgid "%s: %s: invalid version %u (max %d)" -msgstr "%s: %s: ugyldig version %u (max %d)" +msgid "STC_LP_PSB (store cond linkage pair + signature)\n" +msgstr "STC_LP_PSB (gem cond-lænkningspar + signatur)\n" -#: elflink.h:1768 +#: vms-alpha.c:6196 #, c-format -msgid "%s: %s: invalid needed version %d" -msgstr "%s: %s: ugyldig krævet version %d" +msgid " linkage index: %u, procedure: %.*s\n" +msgstr " lænkningsindeks: %u, procedure: %.*s\n" -#: elflink.h:1890 +#: vms-alpha.c:6199 #, c-format -msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s" -msgstr "Advarsel: størrelsen på symbol \"%s\" ændredes fra %lu til %lu i %s" +msgid " signature: %.*s\n" +msgstr " signatur: %.*s\n" -#: elflink.h:3174 +#: vms-alpha.c:6202 #, c-format -msgid "%s: .preinit_array section is not allowed in DSO" -msgstr "%s: .preinit_array-sektionen er ikke tilladt i DSO" +msgid "STC_GBL (store cond global)\n" +msgstr "STC_GBL (gem cond globalt)\n" -#: elflink.h:4030 +#: vms-alpha.c:6203 #, c-format -msgid "warning: type and size of dynamic symbol `%s' are not defined" -msgstr "advarsel: typen og størrelsen på dynamisk symbol \"%s\" er ikke defineret" +msgid " linkage index: %u, global: %.*s\n" +msgstr " lænkningsindeks: %u, global: %.*s\n" -#: elflink.h:4345 +#: vms-alpha.c:6207 #, c-format -msgid "%s: undefined versioned symbol name %s" -msgstr "%s: udefineret symbolnavn med version %s" +msgid "STC_GCA (store cond code address)\n" +msgstr "STC_GCA (gem cond-kodeadresse)\n" -#: elflink.h:4611 elflink.h:4619 elflink.h:6508 elflink.h:7600 -msgid "Error: out of memory" -msgstr "Fejl: ikke mere hukommelse" +#: vms-alpha.c:6208 +#, c-format +msgid " linkage index: %u, procedure name: %.*s\n" +msgstr " lænkningsindeks: %u, procedurenavn: %.*s\n" -#: elflink.h:4781 -msgid "Not enough memory to sort relocations" -msgstr "Ikke nok hukommelse til at sortere relokeringer" +#: vms-alpha.c:6212 +#, c-format +msgid "STC_PS (store cond psect + offset)\n" +msgstr "STC_PS (gem cond-psect + afsæt)\n" -#: elflink.h:5682 elflink.h:5725 +#: vms-alpha.c:6214 #, c-format -msgid "%s: could not find output section %s" -msgstr "%s: kunne ikke finde uddatasektionen %s" +msgid " linkage index: %u, psect: %u, offset: 0x%08x %08x\n" +msgstr " lænkningsindeks: %u, psect: %u, afsæt: 0x%08x %08x\n" -#: elflink.h:5688 +#: vms-alpha.c:6221 #, c-format -msgid "warning: %s section has zero size" -msgstr "advarsel: %s-sektionen har nulstørrelse" +msgid "STC_NOP_GBL (store cond NOP at global addr)\n" +msgstr "STC_NOP_GBL (gem cond NOP pÃ¥ global adresse)\n" -#: elflink.h:6275 +#: vms-alpha.c:6225 #, c-format -msgid "%s: could not find output section %s for input section %s" -msgstr "%s: kunne ikke finde uddatasektionen %s for inddatasektionen %s" +msgid "STC_NOP_PS (store cond NOP at psect + offset)\n" +msgstr "STC_NOP_PS (gem cond NOP pÃ¥ psect + afsæt)\n" -#: elflink.h:6486 +#: vms-alpha.c:6229 #, c-format -msgid "%s: relocation size mismatch in %s section %s" -msgstr "%s: relokeringsstørrelsen stemmer ikke overens i %s-sektionen %s" +msgid "STC_BSR_GBL (store cond BSR at global addr)\n" +msgstr "STC_BSR_GBL (gem cond BSR pÃ¥ global adresse)\n" -#: elflink.h:6849 -msgid "warning: relocation against removed section; zeroing" -msgstr "advarsel: relokering mod fjernet sektion; nulstiller" +#: vms-alpha.c:6233 +#, c-format +msgid "STC_BSR_PS (store cond BSR at psect + offset)\n" +msgstr "STC_BSR_PS (gem cond BSR pÃ¥ psect + afsæt)\n" -#: elflink.h:6879 -msgid "warning: relocation against removed section" -msgstr "advarsel: relokering mod fjernet sektion" +#: vms-alpha.c:6237 +#, c-format +msgid "STC_LDA_GBL (store cond LDA at global addr)\n" +msgstr "STC_LDA_GBL (gem cond LDA pÃ¥ global adresse)\n" -#: elflink.h:6892 +#: vms-alpha.c:6241 #, c-format -msgid "local symbols in discarded section %s" -msgstr "lokale symboler i bortkastet sektion %s" +msgid "STC_LDA_PS (store cond LDA at psect + offset)\n" +msgstr "STC_LDA_PS (gem cond LDA pÃ¥ psect + afsæt)\n" -#: elfxx-mips.c:734 -msgid "static procedure (no name)" -msgstr "statisk procedure (intet navn)" +#: vms-alpha.c:6245 +#, c-format +msgid "STC_BOH_GBL (store cond BOH at global addr)\n" +msgstr "STC_BOH_GBL (gem cond BOH pÃ¥ global adresse)\n" -#: elfxx-mips.c:1601 -msgid "not enough GOT space for local GOT entries" -msgstr "ikke nok med GOT-plads for lokale GOT-poster" +#: vms-alpha.c:6249 +#, c-format +msgid "STC_BOH_PS (store cond BOH at psect + offset)\n" +msgstr "STC_BOH_PS (gem cond BOH pÃ¥ psect + afsæt)\n" -#: elfxx-mips.c:2750 +#: vms-alpha.c:6254 #, c-format -msgid "%s: %s+0x%lx: jump to stub routine which is not jal" -msgstr "%s: %s+0x%lx: hop til stubrutine som ikke er jal" +msgid "STC_NBH_GBL (store cond or hint at global addr)\n" +msgstr "STC_NBH_GBL (gem cond eller hint pÃ¥ global adresse)\n" -#: elfxx-mips.c:4270 +#: vms-alpha.c:6258 #, c-format -msgid "%s: Malformed reloc detected for section %s" -msgstr "%s: Fejlagtig relokering for sektion %s opdaget" +msgid "STC_NBH_PS (store cond or hint at psect + offset)\n" +msgstr "STC_NBH_PS (gem cond eller hint pÃ¥ psect + afsæt)\n" -#: elfxx-mips.c:4348 +#: vms-alpha.c:6262 #, c-format -msgid "%s: CALL16 reloc at 0x%lx not against global symbol" -msgstr "%s: CALL16-relokering ved 0x%lx er ikke mod globalt symbol" +msgid "CTL_SETRB (set relocation base)\n" +msgstr "CTL_SETRB (sæt relokeringsbase)\n" -#: elfxx-mips.c:7301 +#: vms-alpha.c:6268 #, c-format -msgid "%s: illegal section name `%s'" -msgstr "%s: ugyldigt sektionsnavn \"%s\"" +msgid "CTL_AUGRB (augment relocation base) %u\n" +msgstr "CTL_AUGRB (sammensæt (augment) relokeringsbase) %u\n" -#: elfxx-mips.c:7615 +#: vms-alpha.c:6272 #, c-format -msgid "%s: linking PIC files with non-PIC files" -msgstr "%s: lænker PIC-filer med ikke-PIC-filer" +msgid "CTL_DFLOC (define location)\n" +msgstr "CTL_DFLOC (defineÅ• placering)\n" -#: elfxx-mips.c:7625 +#: vms-alpha.c:6275 #, c-format -msgid "%s: linking abicalls files with non-abicalls files" -msgstr "%s: lænker abicalls-filer med ikke-abicalls-filer" +msgid "CTL_STLOC (set location)\n" +msgstr "CTL_STLOC (indstil placering)\n" -#: elfxx-mips.c:7654 +#: vms-alpha.c:6278 #, c-format -msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" -msgstr "%s: ISA (-mips%d) passer ikke med tidligere moduler (-mips%d)" +msgid "CTL_STKDL (stack defined location)\n" +msgstr "CTL_STKDL (stakdefineret placering)\n" -#: elfxx-mips.c:7676 +#: vms-alpha.c:6281 vms-alpha.c:6695 #, c-format -msgid "%s: ISA mismatch (%d) with previous modules (%d)" -msgstr "%s: ISA (%d) passer ikke med tidligere moduler (%d)" +msgid "*unhandled*\n" +msgstr "*uhÃ¥ndteret*\n" -#: elfxx-mips.c:7699 +#: vms-alpha.c:6311 vms-alpha.c:6350 #, c-format -msgid "%s: ABI mismatch: linking %s module with previous %s modules" -msgstr "%s: ABI passer ikke: lænker %s-modul med tidligere %s-moduler" +msgid "cannot read GST record length\n" +msgstr "kan ikke læse GST-post-længde\n" -#: elfxx-mips.c:7759 -msgid " [abi=O32]" -msgstr " [abi=O32]" +#. Ill-formed. +#: vms-alpha.c:6332 +#, c-format +msgid "cannot find EMH in first GST record\n" +msgstr "kan ikke finde EMH i første GST-post\n" -#: elfxx-mips.c:7761 -msgid " [abi=O64]" -msgstr " [abi=O64]" +#: vms-alpha.c:6358 +#, c-format +msgid "cannot read GST record header\n" +msgstr "kan ikke læse GST-post-header\n" -#: elfxx-mips.c:7763 -msgid " [abi=EABI32]" -msgstr " [abi=EABI32]" +#: vms-alpha.c:6371 +#, c-format +msgid " corrupted GST\n" +msgstr " beskadiget GST\n" -#: elfxx-mips.c:7765 -msgid " [abi=EABI64]" -msgstr " [abi=EABI64]" +#: vms-alpha.c:6379 +#, c-format +msgid "cannot read GST record\n" +msgstr "kan ikke læse GST-post\n" -#: elfxx-mips.c:7767 -msgid " [abi unknown]" -msgstr " [ukendt abi]" +#: vms-alpha.c:6408 +#, c-format +msgid " unhandled EOBJ record type %u\n" +msgstr " uhÃ¥ndteret EOBJ-post-type %u\n" -#: elfxx-mips.c:7769 -msgid " [abi=N32]" -msgstr " [abi=N32]" +#: vms-alpha.c:6431 +#, c-format +msgid " bitcount: %u, base addr: 0x%08x\n" +msgstr " antal bit: %u, basisadresse: 0x%08x\n" -#: elfxx-mips.c:7771 -msgid " [abi=64]" -msgstr " [abi=64]" +#: vms-alpha.c:6444 +#, c-format +msgid " bitmap: 0x%08x (count: %u):\n" +msgstr " bitmap: 0x%08x (antal: %u):\n" -#: elfxx-mips.c:7773 -msgid " [no abi set]" -msgstr " [intet abi sat]" +#: vms-alpha.c:6451 +#, c-format +msgid " %08x" +msgstr " %08x" + +#: vms-alpha.c:6476 +#, c-format +msgid " image %u (%u entries)\n" +msgstr " aftryk %u (%u elementer)\n" -#: elfxx-mips.c:7776 -msgid " [mips1]" -msgstr " [mips1]" - -#: elfxx-mips.c:7778 -msgid " [mips2]" -msgstr " [mips2]" - -#: elfxx-mips.c:7780 -msgid " [mips3]" -msgstr " [mips3]" - -#: elfxx-mips.c:7782 -msgid " [mips4]" -msgstr " [mips4]" - -#: elfxx-mips.c:7784 -msgid " [mips5]" -msgstr " [mips5]" - -#: elfxx-mips.c:7786 -msgid " [mips32]" -msgstr " [mips32]" - -#: elfxx-mips.c:7788 -msgid " [mips64]" -msgstr " [mips64]" +#: vms-alpha.c:6481 +#, c-format +msgid " offset: 0x%08x, val: 0x%08x\n" +msgstr " afsæt: 0x%08x, værdi: 0x%08x\n" -#: elfxx-mips.c:7790 -msgid " [unknown ISA]" -msgstr " [ukendt ISA]" +#: vms-alpha.c:6502 +#, c-format +msgid " image %u (%u entries), offsets:\n" +msgstr " aftryk %u (%u elementer), afsæt:\n" -#: elfxx-mips.c:7793 -msgid " [mdmx]" -msgstr " [mdmx]" - -#: elfxx-mips.c:7796 -msgid " [mips16]" -msgstr " [mips16]" - -#: elfxx-mips.c:7799 -msgid " [32bitmode]" -msgstr " [32-bittilstand]" +#: vms-alpha.c:6509 +#, c-format +msgid " 0x%08x" +msgstr " 0x%08x" -#: elfxx-mips.c:7801 -msgid " [not 32bitmode]" -msgstr " [ikke 32-bittilstand]" +#. 64 bits. +#: vms-alpha.c:6631 +#, c-format +msgid "64 bits *unhandled*\n" +msgstr "64 bit *uhÃ¥ndteret*\n" -#: i386linux.c:458 m68klinux.c:462 sparclinux.c:459 +#: vms-alpha.c:6635 #, c-format -msgid "Output file requires shared library `%s'\n" -msgstr "Uddatafilen kræver delt bibliotek \"%s\"\n" +msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n" +msgstr "klasse: %u, dtype: %u, længde: %u, pointer: 0x%08x\n" -#: i386linux.c:466 m68klinux.c:470 sparclinux.c:467 +#: vms-alpha.c:6646 #, c-format -msgid "Output file requires shared library `%s.so.%s'\n" -msgstr "Uddatafilen kræver delt bibliotek \"%s.so.%s\"\n" +msgid "non-contiguous array of %s\n" +msgstr "usammenhængende array af %s\n" -#: i386linux.c:655 i386linux.c:705 m68klinux.c:662 m68klinux.c:710 -#: sparclinux.c:657 sparclinux.c:707 +#: vms-alpha.c:6650 #, c-format -msgid "Symbol %s not defined for fixups\n" -msgstr "Symbol %s er ikke defineret for rettelser\n" +msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n" +msgstr "dimct: %u, aflags: 0x%02x, cifre: %u, skala: %u\n" -#: i386linux.c:729 m68klinux.c:734 sparclinux.c:731 -msgid "Warning: fixup count mismatch\n" -msgstr "Advarsel: antal rettelser stemmer ikke\n" +#: vms-alpha.c:6654 +#, c-format +msgid "arsize: %u, a0: 0x%08x\n" +msgstr "arsize: %u, a0: 0x%08x\n" -#: ieee.c:235 +#: vms-alpha.c:6658 #, c-format -msgid "%s: string too long (%d chars, max 65535)" -msgstr "%s: strengen er for lang (%d tegn, max 65535)" +msgid "Strides:\n" +msgstr "Trinstørrelser:\n" -#: ieee.c:365 +#: vms-alpha.c:6663 #, c-format -msgid "%s: unrecognized symbol `%s' flags 0x%x" -msgstr "%s: ukendt symbol \"%s\" flag 0x%x" +msgid "[%u]: %u\n" +msgstr "[%u]: %u\n" -#: ieee.c:877 +#: vms-alpha.c:6668 #, c-format -msgid "%s: unimplemented ATI record %u for symbol %u" -msgstr "%s: ikke implementeret ATI-post %u for symbol %u" +msgid "Bounds:\n" +msgstr "Grænser:\n" -#: ieee.c:902 +#: vms-alpha.c:6673 #, c-format -msgid "%s: unexpected ATN type %d in external part" -msgstr "%s: uventet ATN-type %d i ekstern del" +msgid "[%u]: Lower: %u, upper: %u\n" +msgstr "[%u]: Nedre: %u, øvre: %u\n" -#: ieee.c:924 +#: vms-alpha.c:6685 #, c-format -msgid "%s: unexpected type after ATN" -msgstr "%s: uventet type efter ATN" +msgid "unaligned bit-string of %s\n" +msgstr "ujusteret bit-streng af %s\n" -#: ihex.c:258 +#: vms-alpha.c:6689 #, c-format -msgid "%s:%d: unexpected character `%s' in Intel Hex file\n" -msgstr "%s:%d: uventet tegn \"%s\" i heksadecimal Intel-fil\n" +msgid "base: %u, pos: %u\n" +msgstr "base: %u, pos: %u\n" -#: ihex.c:366 +#: vms-alpha.c:6709 #, c-format -msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)" -msgstr "%s:%u: fejlagtig kontrolsum i heksadecimal Intel-fil (forventede %u, fandt %u)" +msgid "vflags: 0x%02x, value: 0x%08x " +msgstr "vflags: 0x%02x, værdi: 0x%08x " -#: ihex.c:420 +#: vms-alpha.c:6715 #, c-format -msgid "%s:%u: bad extended address record length in Intel Hex file" -msgstr "%s:%u: fejlagtig længde på post for udvidet adresse i heksadecimal Intel-fil" +msgid "(no value)\n" +msgstr "(ingen værdi)\n" -#: ihex.c:437 +#: vms-alpha.c:6718 #, c-format -msgid "%s:%u: bad extended start address length in Intel Hex file" -msgstr "%s:%u: fejlagtig længde på udvidet startadresse i heksadecimal Intel-fil" +msgid "(not active)\n" +msgstr "(ikke aktiv)\n" -#: ihex.c:454 +#: vms-alpha.c:6721 #, c-format -msgid "%s:%u: bad extended linear address record length in Intel Hex file" -msgstr "%s:%u: fejlagtig længde på post for udvidet lineær adresse i heksadecimal Intel-fil" +msgid "(not allocated)\n" +msgstr "(ikke tildelt)\n" -#: ihex.c:471 +#: vms-alpha.c:6724 #, c-format -msgid "%s:%u: bad extended linear start address length in Intel Hex file" -msgstr "%s:%u: fejlagtig længde på post for udvidet lineær startadresse i heksadecimal Intel-fil" +msgid "(descriptor)\n" +msgstr "(deskriptor)\n" -#: ihex.c:488 +#: vms-alpha.c:6728 #, c-format -msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n" -msgstr "%s:%u: ukendt ihex-type %u i heksadecimal Intel-fil\n" +msgid "(trailing value)\n" +msgstr "(afsluttende værdi)\n" -#: ihex.c:607 +#: vms-alpha.c:6731 #, c-format -msgid "%s: internal error in ihex_read_section" -msgstr "%s: intern fejl i ihex_read_section" +msgid "(value spec follows)\n" +msgstr "(værdi-spec følger)\n" -#: ihex.c:642 +#: vms-alpha.c:6734 #, c-format -msgid "%s: bad section length in ihex_read_section" -msgstr "%s: fejlagtig sektionslængde i ihex_read_sektion" +msgid "(at bit offset %u)\n" +msgstr "(ved bitafsæt %u)\n" -#: ihex.c:860 +#: vms-alpha.c:6737 #, c-format -msgid "%s: address 0x%s out of range for Intel Hex file" -msgstr "%s: adressen 0x%s er uden for intervallet for heksadecimal Intel-fil" +msgid "(reg: %u, disp: %u, indir: %u, kind: " +msgstr "(reg: %u, disp: %u, indir: %u, type: " + +#: vms-alpha.c:6744 +msgid "literal" +msgstr "literal" + +#: vms-alpha.c:6747 +msgid "address" +msgstr "adresse" -#: libbfd.c:492 +#: vms-alpha.c:6750 +msgid "desc" +msgstr "beskr" + +#: vms-alpha.c:6753 +msgid "reg" +msgstr "reg" + +#: vms-alpha.c:6828 #, c-format -msgid "not mapping: data=%lx mapped=%d\n" -msgstr "mapper ikke: data=%lx mappet=%d\n" +msgid "Debug symbol table:\n" +msgstr "Fejlsøgningssymboltabel:\n" -#: libbfd.c:495 -msgid "not mapping: env var not set\n" -msgstr "mapper ikke: miljøvariabel er ikke sat\n" +#: vms-alpha.c:6839 +#, c-format +msgid "cannot read DST header\n" +msgstr "kan ikke læse DST-header\n" -#: libbfd.c:1466 +#: vms-alpha.c:6844 #, c-format -msgid "Deprecated %s called at %s line %d in %s\n" -msgstr "Forældet %s kaldt ved %s linje %d i %s\n" +msgid " type: %3u, len: %3u (at 0x%08x): " +msgstr " type: %3u, længde: %3u (pÃ¥ 0x%08x): " -#: libbfd.c:1469 +#: vms-alpha.c:6858 #, c-format -msgid "Deprecated %s called\n" -msgstr "Forældet %s kaldt\n" +msgid "cannot read DST symbol\n" +msgstr "kan ikke læse DST-symbol\n" -#: linker.c:1873 +#: vms-alpha.c:6901 #, c-format -msgid "%s: indirect symbol `%s' to `%s' is a loop" -msgstr "%s: indirekte symbol \"%s\" til \"%s\" er en løkke" +msgid "standard data: %s\n" +msgstr "standarddata : %s\n" -#: linker.c:2776 +#: vms-alpha.c:6904 vms-alpha.c:6988 #, c-format -msgid "Attempt to do relocateable link with %s input and %s output" -msgstr "Forsøg at lave en relokérbar lænke med %s-inddata og %s-uddata" +msgid " name: %.*s\n" +msgstr " navn: %.*s\n" -#: merge.c:892 +#: vms-alpha.c:6911 #, c-format -msgid "%s: access beyond end of merged section (%ld + %ld)" -msgstr "%s: adgang udover slutningen på sammenslagt sektion (%ld + %ld)" +msgid "modbeg\n" +msgstr "modbeg\n" -#: mmo.c:460 +#: vms-alpha.c:6912 #, c-format -msgid "%s: No core to allocate section name %s\n" -msgstr "%s: Ingen kerne til at allokere sektionsnavn %s\n" +msgid " flags: %d, language: %u, major: %u, minor: %u\n" +msgstr " flag: %d, sprog: %u, hoved: %u, under: %u\n" -#: mmo.c:536 +#: vms-alpha.c:6918 vms-alpha.c:7184 #, c-format -msgid "%s: No core to allocate a symbol %d bytes long\n" -msgstr "%s: Ingen kerne til at allokere et %d byte langt symbol\n" +msgid " module name: %.*s\n" +msgstr " modulnavn : %.*s\n" -#: mmo.c:1245 +#: vms-alpha.c:6921 #, c-format -msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" -msgstr "%s: ugyldig mmo-fil: initieringsværdi for $255 er ikke \"Main\"\n" +msgid " compiler : %.*s\n" +msgstr " kompiler : %.*s\n" -#: mmo.c:1391 +#: vms-alpha.c:6926 #, c-format -msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n" -msgstr "%s: bred tegn-sekvens som ikke understøttes 0x%02X 0x%02X efter symbolnavnet som begynder med \"%s\"\n" +msgid "modend\n" +msgstr "modend\n" -#: mmo.c:1633 +#: vms-alpha.c:6933 +msgid "rtnbeg\n" +msgstr "rtnbeg\n" + +#: vms-alpha.c:6934 #, c-format -msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" -msgstr "%s: ugyldig mmo-fil: lopkode \"%d\" understøttes ikke\n" +msgid " flags: %u, address: 0x%08x, pd-address: 0x%08x\n" +msgstr " flag: %u, adresse: 0x%08x, pd-adresse: 0x%08x\n" -#: mmo.c:1643 +#: vms-alpha.c:6939 #, c-format -msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" -msgstr "%s: ugyldig mmo-fil: forventede YZ = 1 fik YZ = %d for lop_quote\n" +msgid " routine name: %.*s\n" +msgstr " rutinenavn: %.*s\n" -#: mmo.c:1679 +#: vms-alpha.c:6947 #, c-format -msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" -msgstr "%s: ugyldig mmo-fil: forventede z = 1 eller z = 2, fik z = %d for lop_loc\n" +msgid "rtnend: size 0x%08x\n" +msgstr "rtnend: størrelse 0x%08x\n" -#: mmo.c:1725 +#: vms-alpha.c:6955 #, c-format -msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" -msgstr "%s: ugyldig mmo-fil: forventede z = 1 eller z = 2, fik z = %d for lop_fixo\n" +msgid "prolog: bkpt address 0x%08x\n" +msgstr "prolog: bkpt-adresse 0x%08x\n" -#: mmo.c:1764 +#: vms-alpha.c:6963 #, c-format -msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" -msgstr "%s: ugyldig mmo-fil: forventede y = 0, fik y = %d for lop_fixrx\n" +msgid "epilog: flags: %u, count: %u\n" +msgstr "epilog: flag: %u, antal: %u\n" -#: mmo.c:1773 +#: vms-alpha.c:6972 #, c-format -msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" -msgstr "%s: ugyldig mmo-fil: forventede z = 16 eller z = 24, fik z = %d for lop_fixr\n" +msgid "blkbeg: address: 0x%08x, name: %.*s\n" +msgstr "blkbeg: adresse: 0x%08x, navn: %.*s\n" -#: mmo.c:1796 +#: vms-alpha.c:6981 #, 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: ugyldig mmo-fil: indledende byte i operandord skal være 0 eller 1, fik %d for lop_fixrx\n" +msgid "blkend: size: 0x%08x\n" +msgstr "blkend: størrelse: 0x%08x\n" -#: mmo.c:1819 +#: vms-alpha.c:6987 #, c-format -msgid "%s: cannot allocate file name for file number %d, %d bytes\n" -msgstr "%s: kan ikke allokere filnavn for fil nummer %d, %d byte\n" +msgid "typspec (len: %u)\n" +msgstr "typspec (længde: %u)\n" -#: mmo.c:1839 +#: vms-alpha.c:6994 #, c-format -msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" -msgstr "%s: ugyldig mmo-fil: fil nummer %d \"%s\", var allerede angivet som \"%s\"\n" +msgid "septyp, name: %.*s\n" +msgstr "septyp, navn: %.*s\n" -#: mmo.c:1852 +#: vms-alpha.c:7003 #, c-format -msgid "%s: invalid mmo file: file name for number %d was not specified before use\n" -msgstr "%s: ugyldig mmo-fil: filnavnet for nummer %d blev ikke angivet inden brug\n" +msgid "recbeg: name: %.*s\n" +msgstr "recbeg: navn: %.*s\n" + +#: vms-alpha.c:7010 +#, c-format +msgid "recend\n" +msgstr "recend\n" + +#: vms-alpha.c:7013 +#, c-format +msgid "enumbeg, len: %u, name: %.*s\n" +msgstr "enumbeg, længde: %u, navn: %.*s\n" + +#: vms-alpha.c:7017 +#, c-format +msgid "enumelt, name: %.*s\n" +msgstr "enumelt, navn: %.*s\n" + +#: vms-alpha.c:7021 +#, c-format +msgid "enumend\n" +msgstr "enumend\n" + +#: vms-alpha.c:7038 +#, c-format +msgid "discontiguous range (nbr: %u)\n" +msgstr "usammenhængende interval (nbr: %u)\n" + +#: vms-alpha.c:7040 +#, c-format +msgid " address: 0x%08x, size: %u\n" +msgstr " adresse: 0x%08x, størrelse: %u\n" + +#: vms-alpha.c:7050 +#, c-format +msgid "line num (len: %u)\n" +msgstr "linjenummer (længde: %u)\n" + +#: vms-alpha.c:7067 +#, c-format +msgid "delta_pc_w %u\n" +msgstr "delta_pc_w %u\n" + +#: vms-alpha.c:7074 +#, c-format +msgid "incr_linum(b): +%u\n" +msgstr "incr_linum(b): +%u\n" + +#: vms-alpha.c:7080 +#, c-format +msgid "incr_linum_w: +%u\n" +msgstr "incr_linum_w: +%u\n" + +#: vms-alpha.c:7086 +#, c-format +msgid "incr_linum_l: +%u\n" +msgstr "incr_linum_l: +%u\n" + +#: vms-alpha.c:7092 +#, c-format +msgid "set_line_num(w) %u\n" +msgstr "set_line_num(w) %u\n" + +#: vms-alpha.c:7097 +#, c-format +msgid "set_line_num_b %u\n" +msgstr "set_line_num_b %u\n" + +#: vms-alpha.c:7102 +#, c-format +msgid "set_line_num_l %u\n" +msgstr "set_line_num_l %u\n" + +#: vms-alpha.c:7107 +#, c-format +msgid "set_abs_pc: 0x%08x\n" +msgstr "set_abs_pc: 0x%08x\n" + +#: vms-alpha.c:7111 +#, c-format +msgid "delta_pc_l: +0x%08x\n" +msgstr "delta_pc_l: +0x%08x\n" + +#: vms-alpha.c:7116 +#, c-format +msgid "term(b): 0x%02x" +msgstr "term(b): 0x%02x" + +#: vms-alpha.c:7118 +#, c-format +msgid " pc: 0x%08x\n" +msgstr " pc: 0x%08x\n" + +#: vms-alpha.c:7123 +#, c-format +msgid "term_w: 0x%04x" +msgstr "term_w: 0x%04x" + +#: vms-alpha.c:7125 +#, c-format +msgid " pc: 0x%08x\n" +msgstr " pc: 0x%08x\n" + +#: vms-alpha.c:7131 +#, c-format +msgid "delta pc +%-4d" +msgstr "delta pc +%-4d" + +#: vms-alpha.c:7134 +#, c-format +msgid " pc: 0x%08x line: %5u\n" +msgstr " pc: 0x%08x linje: %5u\n" + +#: vms-alpha.c:7139 +#, c-format +msgid " *unhandled* cmd %u\n" +msgstr " *uhÃ¥ndteret* kommando %u\n" + +#: vms-alpha.c:7154 +#, c-format +msgid "source (len: %u)\n" +msgstr "kilde (længde: %u)\n" + +#: vms-alpha.c:7168 +#, c-format +msgid " declfile: len: %u, flags: %u, fileid: %u\n" +msgstr " declfile: længde: %u, flag: %u, fil-id: %u\n" + +#: vms-alpha.c:7172 +#, c-format +msgid " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" +msgstr " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" + +#: vms-alpha.c:7181 +#, c-format +msgid " filename : %.*s\n" +msgstr " filnavn : %.*s\n" + +#: vms-alpha.c:7190 +#, c-format +msgid " setfile %u\n" +msgstr " setfile %u\n" + +#: vms-alpha.c:7195 vms-alpha.c:7200 +#, c-format +msgid " setrec %u\n" +msgstr " setrec %u\n" + +#: vms-alpha.c:7205 vms-alpha.c:7210 +#, c-format +msgid " setlnum %u\n" +msgstr " setlnum %u\n" + +#: vms-alpha.c:7215 vms-alpha.c:7220 +#, c-format +msgid " deflines %u\n" +msgstr " deflines %u\n" + +#: vms-alpha.c:7224 +#, c-format +msgid " formfeed\n" +msgstr " formfeed\n" + +#: vms-alpha.c:7228 +#, c-format +msgid " *unhandled* cmd %u\n" +msgstr " *uhÃ¥ndteret* kommando %u\n" + +#: vms-alpha.c:7240 +#, c-format +msgid "*unhandled* dst type %u\n" +msgstr "*uhÃ¥ndteret dst-type %u\n" + +#: vms-alpha.c:7272 +#, c-format +msgid "cannot read EIHD\n" +msgstr "kan ikke læse EIHD\n" + +#: vms-alpha.c:7275 +#, c-format +msgid "EIHD: (size: %u, nbr blocks: %u)\n" +msgstr "EIHD: (størrelse: %u, bloktal: %u)\n" + +#: vms-alpha.c:7278 +#, c-format +msgid " majorid: %u, minorid: %u\n" +msgstr " hovednr: %u, undernr: %u\n" + +#: vms-alpha.c:7286 +msgid "executable" +msgstr "eksekverbar fil" -#: mmo.c:1958 +#: vms-alpha.c:7289 +msgid "linkable image" +msgstr "lænkbart aftryk" + +#: vms-alpha.c:7295 #, c-format -msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" -msgstr "%s: ugyldig mmo-fil: felter y og z i lop_stab er ikke-tomme, y: %d, z: %d\n" +msgid " image type: %u (%s)" +msgstr " aftrykstype: %u (%s)" + +#: vms-alpha.c:7301 +msgid "native" +msgstr "native" -#: mmo.c:1994 +#: vms-alpha.c:7304 +msgid "CLI" +msgstr "CLI" + +#: vms-alpha.c:7310 #, c-format -msgid "%s: invalid mmo file: lop_end not last item in file\n" -msgstr "%s: ugyldig mmo-fil: lop_end er ikke sidste objekt i fil\n" +msgid ", subtype: %u (%s)\n" +msgstr ", undertype: %u (%s)\n" -#: mmo.c:2007 +#: vms-alpha.c:7316 #, 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: ugyldig mmo-fil: YZ i lop_end (%ld) er ikke lig med antal af tetraer til den foregående lop_stab (%ld)\n" +msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n" +msgstr " afsæt: isd: %u, aktiv: %u, symdbg: %u, imgid: %u, patch: %u\n" -#: mmo.c:2670 +#: vms-alpha.c:7320 #, c-format -msgid "%s: invalid symbol table: duplicate symbol `%s'\n" -msgstr "%s: ugyldig symboltabel: dubletsymbol \"%s\"\n" +msgid " fixup info rva: " +msgstr " fixup info-rva: " -#: mmo.c:2921 +#: vms-alpha.c:7322 #, c-format -msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n" -msgstr "%s: Fejlagtig symboldefinition: \"Main\" er sat til %s i stedet for startadressen %s\n" +msgid ", symbol vector rva: " +msgstr ", symbolvektor-rva: " -#: mmo.c:3011 +#: vms-alpha.c:7325 #, 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: advarsel: symboltabellen er for stor for mmo, større end 65535 32-bit ord: %d. Kun \"Main\" vil blive sendt.\n" +msgid "" +"\n" +" version array off: %u\n" +msgstr "" +"\n" +" versions-arrayafsæt: %u\n" -#: mmo.c:3056 +#: vms-alpha.c:7329 #, c-format -msgid "%s: internal error, symbol table changed size from %d to %d words\n" -msgstr "%s: intern fejl, symboltabellen ændrede størrelse fra %d til %d ord\n" +msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n" +msgstr " img-I/O-tal: %u, antal kanaler: %u, req pri: %08x%08x\n" -#: mmo.c:3111 +#: vms-alpha.c:7335 #, c-format -msgid "%s: internal error, internal register section %s had contents\n" -msgstr "%s: intern fejl, den interne registersektion %s havde indhold\n" +msgid " linker flags: %08x:" +msgstr " lænkerflag: %08x:" -#: mmo.c:3163 +#: vms-alpha.c:7365 #, c-format -msgid "%s: no initialized registers; section length 0\n" -msgstr "%s: ingen initierede registre; sektionslængde 0\n" +msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n" +msgstr " ident: 0x%08x, sysver: 0x%08x, match-ktrl: %u, symvect_size: %u\n" -#: mmo.c:3169 +#: vms-alpha.c:7371 #, c-format -msgid "%s: too many initialized registers; section length %ld\n" -msgstr "%s: for mange initierede registre; sektionslængde %ld\n" +msgid " BPAGE: %u" +msgstr " BPAGE: %u" -#: mmo.c:3174 +#: vms-alpha.c:7377 #, c-format -msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n" -msgstr "%s: ugyldig startadresse for initierede registre med længden %ld: 0x%lx%08lx\n" +msgid ", ext fixup offset: %u, no_opt psect off: %u" +msgstr ", ext-fixup-afsæt: %u, no_opt psect slÃ¥et fra: %u" -#: oasys.c:1029 +#: vms-alpha.c:7380 #, c-format -msgid "%s: can not represent section `%s' in oasys" -msgstr "%s: kan ikke repræsentere sektionen \"%s\" i oasys" +msgid ", alias: %u\n" +msgstr ", alias: %u\n" -#: osf-core.c:132 +#: vms-alpha.c:7388 #, c-format -msgid "Unhandled OSF/1 core file section type %d\n" -msgstr "Uhåndteret sektionstype %d for OSF/1-hukommelsesfil\n" +msgid "system version array information:\n" +msgstr "arrayinformation om systemversion:\n" -#: pe-mips.c:658 +#: vms-alpha.c:7392 #, c-format -msgid "%s: `ld -r' not supported with PE MIPS objects\n" -msgstr "%s: \"ld -r\" understøttes ikke med PE MIPS-objekt\n" +msgid "cannot read EIHVN header\n" +msgstr "kan ikke læse EIHVN-header\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 +#: vms-alpha.c:7402 #, c-format -msgid "%s: unimplemented %s\n" -msgstr "%s: uimplementeret %s\n" +msgid "cannot read EIHVN version\n" +msgstr "kan ikke læse EIHVN-version\n" -#: pe-mips.c:820 +#: vms-alpha.c:7405 #, c-format -msgid "%s: jump too far away\n" -msgstr "%s: hop for langt bort\n" +msgid " %02u " +msgstr " %02u " + +# ? +#: vms-alpha.c:7409 +msgid "BASE_IMAGE " +msgstr "BASE_IMAGE " + +#: vms-alpha.c:7412 +msgid "MEMORY_MANAGEMENT" +msgstr "MEMORY_MANAGEMENT" + +#: vms-alpha.c:7415 +msgid "IO " +msgstr "IO " + +#: vms-alpha.c:7418 +msgid "FILES_VOLUMES " +msgstr "FILES_VOLUMES " -#: pe-mips.c:847 +#: vms-alpha.c:7421 +msgid "PROCESS_SCHED " +msgstr "PROCESS_SCHED " + +#: vms-alpha.c:7424 +msgid "SYSGEN " +msgstr "SYSGEN " + +#: vms-alpha.c:7427 +msgid "CLUSTERS_LOCKMGR " +msgstr "CLUSTERS_LOCKMGR " + +#: vms-alpha.c:7430 +msgid "LOGICAL_NAMES " +msgstr "LOGICAL_NAMES " + +#: vms-alpha.c:7433 +msgid "SECURITY " +msgstr "SECURITY " + +#: vms-alpha.c:7436 +msgid "IMAGE_ACTIVATOR " +msgstr "IMAGE_ACTIVATOR " + +#: vms-alpha.c:7439 +msgid "NETWORKS " +msgstr "NETWORKS " + +#: vms-alpha.c:7442 +msgid "COUNTERS " +msgstr "COUNTERS " + +#: vms-alpha.c:7445 +msgid "STABLE " +msgstr "STABLE " + +#: vms-alpha.c:7448 +msgid "MISC " +msgstr "MISC " + +#: vms-alpha.c:7451 +msgid "CPU " +msgstr "CPU " + +#: vms-alpha.c:7454 +msgid "VOLATILE " +msgstr "VOLATILE " + +#: vms-alpha.c:7457 +msgid "SHELL " +msgstr "SHELL " + +#: vms-alpha.c:7460 +msgid "POSIX " +msgstr "POSIX " + +#: vms-alpha.c:7463 +msgid "MULTI_PROCESSING " +msgstr "MULTI_PROCESSING " + +#: vms-alpha.c:7466 +msgid "GALAXY " +msgstr "GALAXY " + +#: vms-alpha.c:7469 +msgid "*unknown* " +msgstr "*ukendt* " + +#: vms-alpha.c:7472 #, c-format -msgid "%s: bad pair/reflo after refhi\n" -msgstr "%s: fejlagtigt par/reflo efter refhi\n" +msgid ": %u.%u\n" +msgstr ": %u.%u\n" -#. XXX code yet to be written. -#: peicode.h:785 +#: vms-alpha.c:7485 vms-alpha.c:7744 #, c-format -msgid "%s: Unhandled import type; %x" -msgstr "%s: Uhåndteret importtype; %x" +msgid "cannot read EIHA\n" +msgstr "kan ikke læse EIHA\n" -#: peicode.h:790 +#: vms-alpha.c:7488 #, c-format -msgid "%s: Unrecognised import type; %x" -msgstr "%s: Ukendt importtype; %x" +msgid "Image activation: (size=%u)\n" +msgstr "Aftryksaktivering: (størrelse=%u)\n" -#: peicode.h:804 +# Den her og de nedenstÃ¥ende skal tilsyneladende passe sammen med placering af kolon +#: vms-alpha.c:7490 #, c-format -msgid "%s: Unrecognised import name type; %x" -msgstr "%s: Ukendt importnavnstype; %x" +msgid " First address : 0x%08x 0x%08x\n" +msgstr " Første adresse: 0x%08x 0x%08x\n" -#: peicode.h:1162 +#: vms-alpha.c:7493 #, c-format -msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive" -msgstr "%s: Ukendt maskintype (0x%x) i Import Library Format-arkiv" +msgid " Second address: 0x%08x 0x%08x\n" +msgstr " Anden adresse : 0x%08x 0x%08x\n" -#: peicode.h:1174 +#: vms-alpha.c:7496 #, c-format -msgid "%s: Recognised but unhandled machine type (0x%x) in Import Library Format archive" -msgstr "%s: Kendt, men uhåndteret maskintype (0x%x) i Import Library Format-arkiv" +msgid " Third address : 0x%08x 0x%08x\n" +msgstr " Tredje adresse: 0x%08x 0x%08x\n" -#: peicode.h:1191 +#: vms-alpha.c:7499 #, c-format -msgid "%s: size field is zero in Import Library Format header" -msgstr "%s: størrelsesfeltet er nul i Import Library Format-hoved" +msgid " Fourth address: 0x%08x 0x%08x\n" +msgstr " Fjerde adresse: 0x%08x 0x%08x\n" -#: peicode.h:1219 +#: vms-alpha.c:7502 #, c-format -msgid "%s: string not null terminated in ILF object file." -msgstr "%s: streng ikke nultermineret i ILF-objektfil." +msgid " Shared image : 0x%08x 0x%08x\n" +msgstr " Delt aftryk : 0x%08x 0x%08x\n" -#: ppcboot.c:416 -msgid "" -"\n" -"ppcboot header:\n" -msgstr "" -"\n" -"ppcboot-hoved:\n" +#: vms-alpha.c:7513 +#, c-format +msgid "cannot read EIHI\n" +msgstr "kan ikke læse EIHI\n" -#: ppcboot.c:417 +#: vms-alpha.c:7516 #, c-format -msgid "Entry offset = 0x%.8lx (%ld)\n" -msgstr "Startafstand = 0x%.8lx (%ld)\n" +msgid "Image identification: (major: %u, minor: %u)\n" +msgstr "Aftryksidentifikation: (hoved: %u, under: %u)\n" -#: ppcboot.c:418 +#: vms-alpha.c:7519 #, c-format -msgid "Length = 0x%.8lx (%ld)\n" -msgstr "Længde = 0x%.8lx (%ld)\n" +msgid " image name : %.*s\n" +msgstr " aftryksnavn : %.*s\n" -#: ppcboot.c:421 +#: vms-alpha.c:7521 #, c-format -msgid "Flag field = 0x%.2x\n" -msgstr "Flagfelt = 0x%.2x\n" +msgid " link time : %s\n" +msgstr " lænketidspunkt : %s\n" -#: ppcboot.c:427 +#: vms-alpha.c:7523 #, c-format -msgid "Partition name = \"%s\"\n" -msgstr "Partitionsnavn = \"%s\"\n" +msgid " image ident : %.*s\n" +msgstr " aftryks-id : %.*s\n" -#: ppcboot.c:446 +#: vms-alpha.c:7525 #, 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" +msgid " linker ident : %.*s\n" +msgstr " lænker-id : %.*s\n" -#: ppcboot.c:452 +#: vms-alpha.c:7527 #, 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" +msgid " image build ident: %.*s\n" +msgstr " aftryks bygge-id : %.*s\n" -#: ppcboot.c:458 +#: vms-alpha.c:7537 #, c-format -msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" -msgstr "Sektor for partition[%d] = 0x%.8lx (%ld)\n" +msgid "cannot read EIHS\n" +msgstr "kan ikke læse EIHS\n" -#: ppcboot.c:459 +#: vms-alpha.c:7540 #, c-format -msgid "Partition[%d] length = 0x%.8lx (%ld)\n" -msgstr "Længde på partition[%d] = 0x%.8lx (%ld)\n" +msgid "Image symbol & debug table: (major: %u, minor: %u)\n" +msgstr "Aftrykssymbol- og fejlsøgningstabel: (hoved: %u, under: %u)\n" -#: som.c:5398 -msgid "som_sizeof_headers unimplemented" -msgstr "som_sizeof_headers er ikke implementeret" +#: vms-alpha.c:7545 +#, c-format +msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n" +msgstr " symboltabel til fejlsøgning : vbn: %u, størrelse: %u (0x%x)\n" -#: srec.c:301 +#: vms-alpha.c:7549 #, c-format -msgid "%s:%d: Unexpected character `%s' in S-record file\n" -msgstr "%s:%d: Uventet tegn \"%s\" i S-postfil\n" +msgid " global symbol table: vbn: %u, records: %u\n" +msgstr " global symboltabel: vbn: %u, poster: %u\n" -# Hvad er stabs? -#: stabs.c:319 +#: vms-alpha.c:7553 #, c-format -msgid "%s(%s+0x%lx): Stabs entry has invalid string index." -msgstr "%s(%s+0x%lx): Stabpost har ugyldigt strengindeks." +msgid " debug module table : vbn: %u, size: %u\n" +msgstr " fejlsøgningsmodultabel : vbn: %u, størrelse: %u\n" -#: syms.c:1044 -msgid "Unsupported .stab relocation" -msgstr ".stab-relokering som ikke understøttes" +#: vms-alpha.c:7566 +#, c-format +msgid "cannot read EISD\n" +msgstr "kan ikke læse EISD\n" -#: vms-gsd.c:356 +#: vms-alpha.c:7576 #, c-format -msgid "bfd_make_section (%s) failed" -msgstr "bfd_make_section (%s) mislykkedes" +msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n" +msgstr "Aftrykssektionsdeskriptor: (hoved: %u, under: %u, størrelse: %u, afsæt: %u)\n" -#: vms-gsd.c:371 +#: vms-alpha.c:7583 #, c-format -msgid "bfd_set_section_flags (%s, %x) failed" -msgstr "bfd_set_section_flags (%s, %x) mislykkedes" +msgid " section: base: 0x%08x%08x size: 0x%08x\n" +msgstr " sektion: base: 0x%08x%08x size: 0x%08x\n" -#: vms-gsd.c:407 +#: vms-alpha.c:7588 #, c-format -msgid "Size mismatch section %s=%lx, %s=%lx" -msgstr "Størrelsen passer ikke på sektion %s=%lx, %s=%lx" +msgid " flags: 0x%04x" +msgstr " flag: 0x%04x" -#: vms-gsd.c:702 +#: vms-alpha.c:7625 #, c-format -msgid "unknown gsd/egsd subtype %d" -msgstr "ukendt gsd/egsd-undertype %d" +msgid " vbn: %u, pfc: %u, matchctl: %u type: %u (" +msgstr " vbn: %u, pfc: %u, matchktl: %u type: %u (" -#: vms-hdr.c:406 -msgid "Object module NOT error-free !\n" -msgstr "Objektmodulet IKKE fejlfri!\n" +#: vms-alpha.c:7631 +msgid "NORMAL" +msgstr "NORMAL" + +#: vms-alpha.c:7634 +msgid "SHRFXD" +msgstr "SHRFXD" + +#: vms-alpha.c:7637 +msgid "PRVFXD" +msgstr "PRVFXD" + +#: vms-alpha.c:7640 +msgid "SHRPIC" +msgstr "SHRPIC" -#: vms-misc.c:543 +#: vms-alpha.c:7643 +msgid "PRVPIC" +msgstr "PRVPIC" + +#: vms-alpha.c:7646 +msgid "USRSTACK" +msgstr "USRSTACK" + +#: vms-alpha.c:7654 #, c-format -msgid "Stack overflow (%d) in _bfd_vms_push" -msgstr "Stakken giver overløb (%d) i _bfd_vms_push" +msgid " ident: 0x%08x, name: %.*s\n" +msgstr " ident: 0x%08x, navn: %.*s\n" -#: vms-misc.c:561 -msgid "Stack underflow in _bfd_vms_pop" -msgstr "Stakken giver underløb i _bfd_vms_pop" +#: vms-alpha.c:7664 +#, c-format +msgid "cannot read DMT\n" +msgstr "kan ikke læse DMT\n" -#: vms-misc.c:919 -msgid "_bfd_vms_output_counted called with zero bytes" -msgstr "_bfd_vms_output_counted kaldt med nul byte" +#: vms-alpha.c:7668 +#, c-format +msgid "Debug module table:\n" +msgstr "Fejlsøgningsmodultabel:\n" -#: vms-misc.c:924 -msgid "_bfd_vms_output_counted called with too many bytes" -msgstr "_bfd_vms_output_counted kaldt med for mange byte" +#: vms-alpha.c:7677 +#, c-format +msgid "cannot read DMT header\n" +msgstr "kan ikke læse DMT-header\n" -#: vms-misc.c:1055 +#: vms-alpha.c:7682 #, c-format -msgid "Symbol %s replaced by %s\n" -msgstr "Symbol %s erstattet med %s\n" +msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n" +msgstr " modulafsæt: 0x%08x, størrelse: 0x%08x, (%u psect'er)\n" -#: vms-misc.c:1117 +#: vms-alpha.c:7692 #, c-format -msgid "failed to enter %s" -msgstr "mislykkedes med at gå ind i %s" +msgid "cannot read DMT psect\n" +msgstr "kan ikke læse DMT-psect\n" -#: vms-tir.c:81 -msgid "No Mem !" -msgstr "Ingen hukommelse!" +#: vms-alpha.c:7695 +#, c-format +msgid " psect start: 0x%08x, length: %u\n" +msgstr " psect-start: 0x%08x, længde: %u\n" -#: vms-tir.c:362 +#: vms-alpha.c:7708 #, c-format -msgid "bad section index in %s" -msgstr "fejlagtigt sektionsindeks i %s" +msgid "cannot read DST\n" +msgstr "kan ikke læse DST\n" -#: vms-tir.c:375 +#: vms-alpha.c:7718 #, c-format -msgid "unsupported STA cmd %s" -msgstr "STA-kommando %s understøttes ikke" +msgid "cannot read GST\n" +msgstr "kan ikke læse GST\n" -#: vms-tir.c:380 vms-tir.c:1240 +#: vms-alpha.c:7722 #, c-format -msgid "reserved STA cmd %d" -msgstr "reserveret STA-kommando %d" +msgid "Global symbol table:\n" +msgstr "Global symboltabel:\n" -#: vms-tir.c:491 vms-tir.c:514 +#: vms-alpha.c:7750 #, c-format -msgid "%s: no symbol \"%s\"" -msgstr "%s: intet symbol \"%s\"" +msgid "Image activator fixup: (major: %u, minor: %u)\n" +msgstr "Fixup til aftryksaktivator: (hoved: %u, under: %u)\n" -#. 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 +#: vms-alpha.c:7753 #, c-format -msgid "%s: not supported" -msgstr "%s: understøttes ikke" +msgid " iaflink : 0x%08x %08x\n" +msgstr " iaflink : 0x%08x %08x\n" -#: vms-tir.c:586 vms-tir.c:1418 +#: vms-alpha.c:7756 #, c-format -msgid "%s: not implemented" -msgstr "%s: ikke implementeret" +msgid " fixuplnk: 0x%08x %08x\n" +msgstr " fixuplnk: 0x%08x %08x\n" -#: vms-tir.c:590 vms-tir.c:1422 +#: vms-alpha.c:7759 #, c-format -msgid "reserved STO cmd %d" -msgstr "reserveret STO-kommando %d" +msgid " size : %u\n" +msgstr " størrelse: %u\n" -#: vms-tir.c:708 vms-tir.c:1568 +#: vms-alpha.c:7761 #, c-format -msgid "reserved OPR cmd %d" -msgstr "reserveret OPR-kommando %d" +msgid " flags: 0x%08x\n" +msgstr " flag: 0x%08x\n" -#: vms-tir.c:776 vms-tir.c:1632 +#: vms-alpha.c:7765 #, c-format -msgid "reserved CTL cmd %d" -msgstr "reserveret CTL-kommando %d" +msgid " qrelfixoff: %5u, lrelfixoff: %5u\n" +msgstr " qrelfixoff: %5u, lrelfixoff: %5u\n" -#. stack byte from image -#. arg: none. -#: vms-tir.c:1148 -msgid "stack-from-image not implemented" -msgstr "stack-from-image er ikke implementeret" +#: vms-alpha.c:7769 +#, c-format +msgid " qdotadroff: %5u, ldotadroff: %5u\n" +msgstr " qdotadroff: %5u, ldotadroff: %5u\n" -#: vms-tir.c:1166 -msgid "stack-entry-mask not fully implemented" -msgstr "stack-entry-mask er ikke helt implementeret" +#: vms-alpha.c:7773 +#, c-format +msgid " codeadroff: %5u, lpfixoff : %5u\n" +msgstr " codeadroff: %5u, lpfixoff : %5u\n" -#. 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 er ikke helt implementeret" +#: vms-alpha.c:7776 +#, c-format +msgid " chgprtoff : %5u\n" +msgstr " chgprtoff : %5u\n" -#: vms-tir.c:1199 -msgid "stack-local-symbol not fully implemented" -msgstr "stack-local-symbol er ikke helt implementeret" +#: vms-alpha.c:7779 +#, c-format +msgid " shlstoff : %5u, shrimgcnt : %5u\n" +msgstr " shlstoff : %5u, shrimgcnt : %5u\n" -#: vms-tir.c:1212 -msgid "stack-literal not fully implemented" -msgstr "stack-literal er ikke helt implementeret" +#: vms-alpha.c:7781 +#, c-format +msgid " shlextra : %5u, permctx : %5u\n" +msgstr " shlextra : %5u, permctx : %5u\n" -#: vms-tir.c:1233 -msgid "stack-local-symbol-entry-point-mask not fully implemented" -msgstr "stack-local-symbol-entry-point-mask er ikke helt implementeret" +#: vms-alpha.c:7784 +#, c-format +msgid " base_va : 0x%08x\n" +msgstr " base_va : 0x%08x\n" -#: 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 +#: vms-alpha.c:7786 #, c-format -msgid "%s: not fully implemented" -msgstr "%s: ikke helt implementeret" +msgid " lppsbfixoff: %5u\n" +msgstr " lppsbfixoff: %5u\n" -#: vms-tir.c:1684 +#: vms-alpha.c:7794 #, c-format -msgid "obj code %d not found" -msgstr "objektkode %d kunne ikke findes" +msgid " Shareable images:\n" +msgstr " Delelige aftryk:\n" -#: vms-tir.c:2019 +#: vms-alpha.c:7798 #, c-format -msgid "SEC_RELOC with no relocs in section %s" -msgstr "SEC_RELOC uden relokeringer i sektion %s" +msgid " %u: size: %u, flags: 0x%02x, name: %.*s\n" +msgstr " %u: størrelse: %u, flag: 0x%02x, navn: %.*s\n" -#: vms-tir.c:2307 +#: vms-alpha.c:7805 #, c-format -msgid "Unhandled relocation %s" -msgstr "Uhåndteret relokering %s" +msgid " quad-word relocation fixups:\n" +msgstr " fixup'er til quad-word-relokeringer:\n" -#: xcofflink.c:1243 +#: vms-alpha.c:7810 #, c-format -msgid "%s: `%s' has line numbers but no enclosing section" -msgstr "%s: \"%s\" har linjenumre, men ingen omsluttende sektion" +msgid " long-word relocation fixups:\n" +msgstr " fixup'er til long-word-relokeringer:\n" -#: xcofflink.c:1296 +#: vms-alpha.c:7815 #, c-format -msgid "%s: class %d symbol `%s' has no aux entries" -msgstr "%s: klasse %d-symbol \"%s\" har ingen ydre poster" +msgid " quad-word .address reference fixups:\n" +msgstr " fixup'er til quad-word .address-referencer:\n" -#: xcofflink.c:1319 +#: vms-alpha.c:7820 #, c-format -msgid "%s: symbol `%s' has unrecognized csect type %d" -msgstr "%s: symbol \"%s\" har ukendt csect-type %d" +msgid " long-word .address reference fixups:\n" +msgstr " fixup'er til long-word .address-referencer:\n" -#: xcofflink.c:1331 +#: vms-alpha.c:7825 #, c-format -msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" -msgstr "%s: fejlagtig XTY_ER-symbol \"%s\": klasse %d scnum %d scnlen %d" +msgid " Code Address Reference Fixups:\n" +msgstr " Fixup'er til kodeadressereferencer:\n" -#: xcofflink.c:1367 +#: vms-alpha.c:7830 #, c-format -msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d" -msgstr "%s: XMC_TC0-symbol \"%s\" er klasse %d scnlen %d" +msgid " Linkage Pairs Referece Fixups:\n" +msgstr " Reference-fixup'er til lænkningspar:\n" -#: xcofflink.c:1519 +#: vms-alpha.c:7839 #, c-format -msgid "%s: csect `%s' not in enclosing section" -msgstr "%s: csect \"%s\" er ikke i omsluttende sektion" +msgid " Change Protection (%u entries):\n" +msgstr " Ændringsbeskyttelse (%u elementer):\n" -#: xcofflink.c:1626 +#: vms-alpha.c:7844 #, c-format -msgid "%s: misplaced XTY_LD `%s'" -msgstr "%s: fejlagtigt placeret XTY_LD \"%s\"" +msgid " base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x " +msgstr " base: 0x%08x %08x, størrelse: 0x%08x, beskyttelse: 0x%08x " + +#. FIXME: we do not yet support relocatable link. It is not obvious +#. how to do it for debug infos. +#: vms-alpha.c:8676 +msgid "%P: relocatable link is not supported\n" +msgstr "%P: relokérbar lænke understøttes ikke\n" -#: xcofflink.c:1957 +#: vms-alpha.c:8746 +msgid "%P: multiple entry points: in modules %B and %B\n" +msgstr "%P: flere indgangspunkter: i modulerne %B og %B\n" + +#: vms-lib.c:1421 #, c-format -msgid "%s: reloc %s:%d not in csect" -msgstr "%s: relokeringen %s:%d er ikke i csect" +msgid "could not open shared image '%s' from '%s'" +msgstr "kunne ikke Ã¥bne delt aftryk \"%s\" fra \"%s\"" + +#: vms-misc.c:360 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "_bfd_vms_output_counted kaldt med nul byte" -#: xcofflink.c:2092 +#: vms-misc.c:365 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "_bfd_vms_output_counted kaldt med for mange byte" + +#: xcofflink.c:836 #, c-format msgid "%s: XCOFF shared object when not producing XCOFF output" -msgstr "%s: XCOFF delt objekt når ikke XCOFF-uddata produceres" +msgstr "%s: XCOFF delt objekt nÃ¥r ikke XCOFF-uddata produceres" -#: xcofflink.c:2113 +#: xcofflink.c:857 #, c-format msgid "%s: dynamic object with no .loader section" msgstr "%s: dynamisk objekt uden nogen .loader-sektion" -#: xcofflink.c:2758 +#: xcofflink.c:1415 +msgid "%B: `%s' has line numbers but no enclosing section" +msgstr "%B: \"%s\" har linjenumre, men ingen omsluttende sektion" + +#: xcofflink.c:1467 +msgid "%B: class %d symbol `%s' has no aux entries" +msgstr "%B: klasse %d-symbol \"%s\" har ingen aux-poster" + +#: xcofflink.c:1489 +msgid "%B: symbol `%s' has unrecognized csect type %d" +msgstr "%B: symbol \"%s\" har ukendt csect-type %d" + +#: xcofflink.c:1501 +msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%B: fejlagtigt XTY_ER-symbol \"%s\": klasse %d scnum %d scnlen %d" + +#: xcofflink.c:1530 +msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%B: XMC_TC0-symbol \"%s\" er klasse %d scnlen %d" + +#: xcofflink.c:1676 +msgid "%B: csect `%s' not in enclosing section" +msgstr "%B: csect \"%s\" er ikke i omsluttende sektion" + +#: xcofflink.c:1783 +msgid "%B: misplaced XTY_LD `%s'" +msgstr "%B: fejlagtigt placeret XTY_LD \"%s\"" + +#: xcofflink.c:2102 +msgid "%B: reloc %s:%d not in csect" +msgstr "%B: relokeringen %s:%d er ikke i csect" + +#: xcofflink.c:3186 #, c-format msgid "%s: no such symbol" -msgstr "%s: intet sådant symbol" +msgstr "%s: intet sÃ¥dant symbol" -#: xcofflink.c:2891 -msgid "error: undefined symbol __rtinit" -msgstr "fejl: udefineret symbol __rtinit" - -#: xcofflink.c:3453 +#: xcofflink.c:3291 #, c-format msgid "warning: attempt to export undefined symbol `%s'" -msgstr "advarsel: forsøg på at eksportere udefineret symbol \"%s\"" +msgstr "advarsel: forsøg pÃ¥ at eksportere udefineret symbol \"%s\"" -#: xcofflink.c:4447 -#, c-format -msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" -msgstr "TOC giver overløb: 0x%lx > 0x10000; prøv -mminimal-toc ved oversættelse" +#: xcofflink.c:3673 +msgid "error: undefined symbol __rtinit" +msgstr "fejl: udefineret symbol __rtinit" -#: xcofflink.c:5287 xcofflink.c:5756 xcofflink.c:5818 xcofflink.c:6119 -#, c-format -msgid "%s: loader reloc in unrecognized section `%s'" -msgstr "%s: indlæserrelokering i ukendt sektion \"%s\"" +#: xcofflink.c:4052 +msgid "%B: loader reloc in unrecognized section `%s'" +msgstr "%B: indlæserrelokering i ukendt sektion \"%s\"" + +#: xcofflink.c:4063 +msgid "%B: `%s' in loader reloc but not loader sym" +msgstr "%B: \"%s\" i indlæserrelokering, men ikke indlæsersym" + +#: xcofflink.c:4079 +msgid "%B: loader reloc in read-only section %A" +msgstr "%B: indlæserrelokering i skrivebeskyttet sektion %A" -#: xcofflink.c:5309 xcofflink.c:6130 +#: xcofflink.c:5097 #, c-format -msgid "%s: `%s' in loader reloc but not loader sym" -msgstr "%s: \"%s\" i indlæserrelokering, men ikke indlæsersym" +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "TOC giver overløb: 0x%lx > 0x10000; prøv -mminimal-toc ved oversættelse" -#: xcofflink.c:5324 -#, c-format -msgid "%s: loader reloc in read-only section %s" -msgstr "%s: indlæserrelokering i skrivebeskyttet sektion %s" +#: elf32-ia64.c:1110 elf64-ia64.c:1110 +msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch." +msgstr "%B: Kan ikke forenkle br ved 0x%lx i sektionen \"%A\". Brug venligst brl eller indirekte gren." -#: elf32-ia64.c:2222 elf64-ia64.c:2222 +#: elf32-ia64.c:2809 elf64-ia64.c:2809 msgid "@pltoff reloc against local symbol" msgstr "@pltoff-relokering mod lokalt symbol" -#: elf32-ia64.c:3562 elf64-ia64.c:3562 +#: elf32-ia64.c:4430 elf64-ia64.c:4430 #, c-format msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" -msgstr "%s: kort datasegment løb over (0x%lx >= 0x400000)" +msgstr "%s: kort datasegment løb over (0x%lx >= 0x400000)" -#: elf32-ia64.c:3573 elf64-ia64.c:3573 +#: elf32-ia64.c:4441 elf64-ia64.c:4441 #, c-format msgid "%s: __gp does not cover short data segment" -msgstr "%s: __gp dækker ikke kort datasegment" +msgstr "%s: __gp dækker ikke kort datasegment" -#: elf32-ia64.c:3858 elf64-ia64.c:3858 -#, c-format -msgid "%s: linking non-pic code in a shared library" -msgstr "%s: lænker ikke-pic-kode i delt bibliotek" +#: elf32-ia64.c:4708 elf64-ia64.c:4708 +msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" +msgstr "%B: ikke-pic-kode med imm-relokering mod dynamisk symbol \"%s\"" -#: elf32-ia64.c:3891 elf64-ia64.c:3891 -#, c-format -msgid "%s: @gprel relocation against dynamic symbol %s" -msgstr "%s: @gprel-relokering mod dynamisk symbol %s" +#: elf32-ia64.c:4775 elf64-ia64.c:4775 +msgid "%B: @gprel relocation against dynamic symbol %s" +msgstr "%B: @gprel-relokering mod dynamisk symbol %s" -#: elf32-ia64.c:4030 elf64-ia64.c:4030 -#, c-format -msgid "%s: dynamic relocation against speculation fixup" -msgstr "%s: dynamisk relokering uden spekulationsrettelser" +#: elf32-ia64.c:4838 elf64-ia64.c:4838 +msgid "%B: linking non-pic code in a position independent executable" +msgstr "%B: lænker ikke-pic-kode i en positionsuafhængig eksekverbar fil" -#: elf32-ia64.c:4038 elf64-ia64.c:4038 -#, c-format -msgid "%s: speculation fixup against undefined weak symbol" -msgstr "%s: spekulationsfix mod udefineret svagt symbol" +#: elf32-ia64.c:4975 elf64-ia64.c:4975 +msgid "%B: @internal branch to dynamic symbol %s" +msgstr "%B: @intern gren til dynamisk symbol %s" + +#: elf32-ia64.c:4977 elf64-ia64.c:4977 +msgid "%B: speculation fixup to dynamic symbol %s" +msgstr "%B: spekulations-fixup til dynamisk symbol %s" + +#: elf32-ia64.c:4979 elf64-ia64.c:4979 +msgid "%B: @pcrel relocation against dynamic symbol %s" +msgstr "%B: @pcrel-relokering mod dynamisk symbol %s" -#: elf32-ia64.c:4271 elf64-ia64.c:4271 +#: elf32-ia64.c:5176 elf64-ia64.c:5176 msgid "unsupported reloc" -msgstr "relokeringen understøttes ikke" +msgstr "relokeringen understøttes ikke" -#: elf32-ia64.c:4551 elf64-ia64.c:4551 -#, c-format -msgid "%s: linking trap-on-NULL-dereference with non-trapping files" -msgstr "%s: lænker fang-ved-NULL-dereference med ikkefangende filer" +#: elf32-ia64.c:5214 elf64-ia64.c:5214 +msgid "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'." +msgstr "%B: manglende TLS-sektion til relokering %s mod \"%s\" ved 0x%lx i sektionen \"%A\"." -#: elf32-ia64.c:4560 elf64-ia64.c:4560 -#, c-format -msgid "%s: linking big-endian files with little-endian files" -msgstr "%s: lænker big endian-filer med little endian-filer" +#: elf32-ia64.c:5229 elf64-ia64.c:5229 +msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)." +msgstr "%B: Kan ikke forenkle br (%s) til \"%s\" pÃ¥ 0x%lx i sektionen \"%A\" med størrelsen 0x%lx (> 0x1000000)." -#: elf32-ia64.c:4569 elf64-ia64.c:4569 -#, c-format -msgid "%s: linking 64-bit files with 32-bit files" -msgstr "%s: lænker 64-bitfiler med 32-bitfiler" +#: elf32-ia64.c:5491 elf64-ia64.c:5491 +msgid "%B: linking trap-on-NULL-dereference with non-trapping files" +msgstr "%B: lænker fang-ved-NULL-dereference med ikkefangende filer" -#: elf32-ia64.c:4578 elf64-ia64.c:4578 -#, c-format -msgid "%s: linking constant-gp files with non-constant-gp files" -msgstr "%s: lænker konstant-gp-filer med ikke-konstant-gp-filer" +#: elf32-ia64.c:5500 elf64-ia64.c:5500 +msgid "%B: linking big-endian files with little-endian files" +msgstr "%B: lænker big-endian-filer med little endian-filer" -#: elf32-ia64.c:4588 elf64-ia64.c:4588 -#, c-format -msgid "%s: linking auto-pic files with non-auto-pic files" -msgstr "%s: lænker auto-pic-filer med ikke-auto-pic-filer" +#: elf32-ia64.c:5509 elf64-ia64.c:5509 +msgid "%B: linking 64-bit files with 32-bit files" +msgstr "%B: lænker 64 bit-filer med 32 bit-filer" -#: peigen.c:962 pepigen.c:962 -#, c-format -msgid "%s: line number overflow: 0x%lx > 0xffff" -msgstr "%s: linjenummer giver overløb: 0x%lx > 0xffff" +#: elf32-ia64.c:5518 elf64-ia64.c:5518 +msgid "%B: linking constant-gp files with non-constant-gp files" +msgstr "%B: lænker konstant-gp-filer med ikke-konstant-gp-filer" + +#: elf32-ia64.c:5528 elf64-ia64.c:5528 +msgid "%B: linking auto-pic files with non-auto-pic files" +msgstr "%B: lænker auto-pic-filer med ikke-auto-pic-filer" -#: peigen.c:979 pepigen.c:979 +#: peigen.c:1002 pepigen.c:1002 pex64igen.c:1002 #, c-format -msgid "%s: reloc overflow 1: 0x%lx > 0xffff" -msgstr "%s: relokering giver overløb 1: 0x%lx > 0xffff" +msgid "%s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: linjenummer giver overløb: 0x%lx > 0xffff" -#: peigen.c:993 pepigen.c:993 +#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 msgid "Export Directory [.edata (or where ever we found it)]" msgstr "Eksportkatalog [.edata (eller hvor vi fandt det)]" -#: peigen.c:994 pepigen.c:994 +#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 msgid "Import Directory [parts of .idata]" msgstr "Importkatalog [dele af .idata]" -#: peigen.c:995 pepigen.c:995 +#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 msgid "Resource Directory [.rsrc]" msgstr "Resursekatalog [.rsrc]" -#: peigen.c:996 pepigen.c:996 +#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 msgid "Exception Directory [.pdata]" msgstr "Undtagelseskatalog [.pdata]" -#: peigen.c:997 pepigen.c:997 +#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 msgid "Security Directory" msgstr "Sikkerhedskatalog" -#: peigen.c:998 pepigen.c:998 +#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 msgid "Base Relocation Directory [.reloc]" msgstr "Baserelokeringskatalog [.reloc]" -#: peigen.c:999 pepigen.c:999 +#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 msgid "Debug Directory" -msgstr "Fejlsøgningskatalog" +msgstr "Fejlsøgningskatalog" -#: peigen.c:1000 pepigen.c:1000 +#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 msgid "Description Directory" msgstr "Beskrivelseskatalog" -#: peigen.c:1001 pepigen.c:1001 +#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 msgid "Special Directory" msgstr "Specialkatalog" -#: peigen.c:1002 pepigen.c:1002 +#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 msgid "Thread Storage Directory [.tls]" -msgstr "Trådlagringskatalog [.tls]" +msgstr "TrÃ¥dlagringskatalog [.tls]" -#: peigen.c:1003 pepigen.c:1003 +#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 msgid "Load Configuration Directory" -msgstr "Indlæsningskonfigurationskatalog" +msgstr "Indlæsningskonfigurationskatalog" -#: peigen.c:1004 pepigen.c:1004 +#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 msgid "Bound Import Directory" msgstr "Katalog over bundne importer" -#: peigen.c:1005 pepigen.c:1005 +#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 msgid "Import Address Table Directory" msgstr "Importadressetabelkatalog" -#: peigen.c:1006 pepigen.c:1006 +#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 msgid "Delay Import Directory" msgstr "Katalog over forskinkede importer" -#: peigen.c:1007 peigen.c:1008 pepigen.c:1007 pepigen.c:1008 +#: peigen.c:1043 pepigen.c:1043 pex64igen.c:1043 +msgid "CLR Runtime Header" +msgstr "CLR-runtime-header" + +#: peigen.c:1044 pepigen.c:1044 pex64igen.c:1044 msgid "Reserved" msgstr "Reserveret" -#: peigen.c:1071 pepigen.c:1071 +#: peigen.c:1104 pepigen.c:1104 pex64igen.c:1104 +#, c-format msgid "" "\n" "There is an import table, but the section containing it could not be found\n" @@ -2495,30 +5676,31 @@ "\n" "Der findes en importtabel, men sektionen som indeholder den kunne ikke findes\n" -#: peigen.c:1076 pepigen.c:1076 +#: peigen.c:1109 pepigen.c:1109 pex64igen.c:1109 #, c-format msgid "" "\n" "There is an import table in %s at 0x%lx\n" msgstr "" "\n" -"Der findes en importtabel i %s på 0x%lx\n" +"Der findes en importtabel i %s pÃ¥ 0x%lx\n" -#: peigen.c:1113 pepigen.c:1113 +#: peigen.c:1151 pepigen.c:1151 pex64igen.c:1151 #, c-format msgid "" "\n" "Function descriptor located at the start address: %04lx\n" msgstr "" "\n" -"Funktionsidentifikatorer fundet på startadressen: %04lx\n" +"Funktionsidentifikatorer fundet pÃ¥ startadressen: %04lx\n" -#: peigen.c:1116 pepigen.c:1116 +#: peigen.c:1154 pepigen.c:1154 pex64igen.c:1154 #, c-format msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" -msgstr "\tkodebase %08lx toc (indlæsningsbar/reelt) %08lx/%08lx\n" +msgstr "\tkodebase %08lx toc (indlæseligt/reelt) %08lx/%08lx\n" -#: peigen.c:1122 pepigen.c:1122 +#: peigen.c:1162 pepigen.c:1162 pex64igen.c:1162 +#, c-format msgid "" "\n" "No reldata section! Function descriptor not decoded.\n" @@ -2526,7 +5708,7 @@ "\n" "Ingen reldata-sektion! Funktionsidentifikatorer afkodedes ikke.\n" -#: peigen.c:1127 pepigen.c:1127 +#: peigen.c:1167 pepigen.c:1167 pex64igen.c:1167 #, c-format msgid "" "\n" @@ -2536,15 +5718,16 @@ "Importtabellerne (tolket indhold i %s-sektion)\n" # Hvad er thunk? -#: peigen.c:1130 pepigen.c:1130 +#: peigen.c:1170 pepigen.c:1170 pex64igen.c:1170 +#, c-format msgid "" " vma: Hint Time Forward DLL First\n" " Table Stamp Chain Name Thunk\n" msgstr "" -" vma: Tips- Tids- Fremad- DLL- Første\n" -" tabel stempel kæde navn thunk\n" +" vma: Tips- Tids- Fremad- DLL- Første\n" +" tabel stempel kæde navn thunk\n" -#: peigen.c:1181 pepigen.c:1181 +#: peigen.c:1218 pepigen.c:1218 pex64igen.c:1218 #, c-format msgid "" "\n" @@ -2553,19 +5736,22 @@ "\n" "\tDLL-navn: %s\n" -#: peigen.c:1192 pepigen.c:1192 +#: peigen.c:1229 pepigen.c:1229 pex64igen.c:1229 +#, c-format msgid "\tvma: Hint/Ord Member-Name Bound-To\n" msgstr "\tvma: Tips/Ordn Medlemsnavn Bundet til\n" -#: peigen.c:1217 pepigen.c:1217 +#: peigen.c:1254 pepigen.c:1254 pex64igen.c:1254 +#, c-format msgid "" "\n" "There is a first thunk, but the section containing it could not be found\n" msgstr "" "\n" -"Der findes en første thunk, men sektionen som indeholder den kunne ikke findes\n" +"Der findes en første thunk, men sektionen som indeholder den kunne ikke findes\n" -#: peigen.c:1357 pepigen.c:1357 +#: peigen.c:1415 pepigen.c:1415 pex64igen.c:1415 +#, c-format msgid "" "\n" "There is an export table, but the section containing it could not be found\n" @@ -2573,7 +5759,16 @@ "\n" "Der findes en eksporttabel, men sektionen som indeholder den kunne ikke findes\n" -#: peigen.c:1362 pepigen.c:1362 +#: peigen.c:1424 pepigen.c:1424 pex64igen.c:1424 +#, c-format +msgid "" +"\n" +"There is an export table in %s, but it does not fit into that section\n" +msgstr "" +"\n" +"Der findes en eksporttabel i %s, men den passer ikke ind i den pÃ¥gældende sektion\n" + +#: peigen.c:1430 pepigen.c:1430 pex64igen.c:1430 #, c-format msgid "" "\n" @@ -2582,7 +5777,7 @@ "\n" "Der findes en eksporttabel i %s ved 0x%lx\n" -#: peigen.c:1393 pepigen.c:1393 +#: peigen.c:1458 pepigen.c:1458 pex64igen.c:1458 #, c-format msgid "" "\n" @@ -2592,61 +5787,67 @@ "\n" "Eksporttabellerne (tolket indhold i %s-sektion)\n" -#: peigen.c:1397 pepigen.c:1397 +#: peigen.c:1462 pepigen.c:1462 pex64igen.c:1462 #, c-format msgid "Export Flags \t\t\t%lx\n" msgstr "Eksportflag \t\t\t%lx\n" -#: peigen.c:1400 pepigen.c:1400 +#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 #, c-format msgid "Time/Date stamp \t\t%lx\n" msgstr "Tids-/datostempel \t\t%lx\n" -#: peigen.c:1403 pepigen.c:1403 +#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 #, c-format msgid "Major/Minor \t\t\t%d/%d\n" -msgstr "Større/mindre \t\t\t%d/%d\n" +msgstr "Større/mindre \t\t\t%d/%d\n" -#: peigen.c:1406 pepigen.c:1406 +#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 +#, c-format msgid "Name \t\t\t\t" msgstr "Navn \t\t\t\t" -#: peigen.c:1412 pepigen.c:1412 +#: peigen.c:1477 pepigen.c:1477 pex64igen.c:1477 #, c-format msgid "Ordinal Base \t\t\t%ld\n" msgstr "Ordningsbase \t\t\t%ld\n" -#: peigen.c:1415 pepigen.c:1415 +#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 +#, c-format msgid "Number in:\n" msgstr "Tal i:\n" -#: peigen.c:1418 pepigen.c:1418 +#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 #, c-format msgid "\tExport Address Table \t\t%08lx\n" msgstr "\tEksportadressetabel \t\t%08lx\n" -#: peigen.c:1422 pepigen.c:1422 +#: peigen.c:1487 pepigen.c:1487 pex64igen.c:1487 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" msgstr "\t[Navnepeger/Ordningstal]-tabel\t%08lx\n" -#: peigen.c:1425 pepigen.c:1425 +#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 +#, c-format msgid "Table Addresses\n" msgstr "Tabeladresser\n" -#: peigen.c:1428 pepigen.c:1428 +#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 +#, c-format msgid "\tExport Address Table \t\t" msgstr "\tEksportadressetabel \t\t" -#: peigen.c:1433 pepigen.c:1433 +#: peigen.c:1498 pepigen.c:1498 pex64igen.c:1498 +#, c-format msgid "\tName Pointer Table \t\t" msgstr "\tNavnepegertabel \t\t" -#: peigen.c:1438 pepigen.c:1438 +#: peigen.c:1503 pepigen.c:1503 pex64igen.c:1503 +#, c-format msgid "\tOrdinal Table \t\t\t" msgstr "\tOrdningstalstabel \t\t\t" -#: peigen.c:1453 pepigen.c:1453 +#: peigen.c:1517 pepigen.c:1517 pex64igen.c:1517 #, c-format msgid "" "\n" @@ -2655,15 +5856,16 @@ "\n" "Eksportadressetabel -- Ordningsbase %ld\n" -#: peigen.c:1472 pepigen.c:1472 +#: peigen.c:1536 pepigen.c:1536 pex64igen.c:1536 msgid "Forwarder RVA" msgstr "Videresender-RVA" -#: peigen.c:1483 pepigen.c:1483 +#: peigen.c:1547 pepigen.c:1547 pex64igen.c:1547 msgid "Export RVA" msgstr "Eksport-RVA" -#: peigen.c:1490 pepigen.c:1490 +#: peigen.c:1554 pepigen.c:1554 pex64igen.c:1554 +#, c-format msgid "" "\n" "[Ordinal/Name Pointer] Table\n" @@ -2671,44 +5873,53 @@ "\n" "[Ordningstals-/Navnepeger-]tabel\n" -#: peigen.c:1545 pepigen.c:1545 +#: peigen.c:1614 peigen.c:1797 pepigen.c:1614 pepigen.c:1797 pex64igen.c:1614 +#: pex64igen.c:1797 #, c-format msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" -msgstr "Advarsel, størrelsen på .pdata-sektionen (%ld) er ikke en multipel af %d\n" - -#: peigen.c:1549 pepigen.c:1549 -msgid "" -"\n" -"The Function Table (interpreted .pdata section contents)\n" -msgstr "" -"\n" -"Funktionstabellen (tolket indhold fra .pdata-sektionen)\n" +msgstr "Advarsel, størrelsen pÃ¥ .pdata-sektionen (%ld) er ikke en multipel af %d\n" -#: peigen.c:1552 pepigen.c:1552 +#: peigen.c:1621 pepigen.c:1621 pex64igen.c:1621 +#, c-format msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" msgstr " vma:\t\t\tStartadresse Slutadresse Tilbagespolings-information\n" -#: peigen.c:1554 pepigen.c:1554 +#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 +#, c-format 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- Prologsluts- Undtagelses-\n" -" \t\tadresse adresse håndterer data adresse maske\n" +" \t\tadresse adresse hÃ¥ndterer data adresse maske\n" -#: peigen.c:1624 pepigen.c:1624 +#: peigen.c:1697 pepigen.c:1697 pex64igen.c:1697 +#, c-format msgid " Register save millicode" msgstr " Registergemnings millikode" -#: peigen.c:1627 pepigen.c:1627 +#: peigen.c:1700 pepigen.c:1700 pex64igen.c:1700 +#, c-format msgid " Register restore millicode" msgstr " Registergenskabnings millikode" -#: peigen.c:1630 pepigen.c:1630 +#: peigen.c:1703 pepigen.c:1703 pex64igen.c:1703 +#, c-format msgid " Glue code sequence" msgstr " Klisterkodesekvens" -#: peigen.c:1682 pepigen.c:1682 +# Et bogstav for meget i Undtagelse og HÃ¥ndtering, mon ikke det gÃ¥r? +#: peigen.c:1803 pepigen.c:1803 pex64igen.c:1803 +#, c-format +msgid "" +" vma:\t\tBegin Prolog Function Flags Exception EH\n" +" \t\tAddress Length Length 32b exc Handler Data\n" +msgstr "" +" vma:\t\tStart Prolog Funktion Flag Undtagelse EH\n" +" \t\tAdresse Længde Længde 32b exc HÃ¥ndtering Data\n" + +#: peigen.c:1929 pepigen.c:1929 pex64igen.c:1929 +#, c-format msgid "" "\n" "\n" @@ -2718,16 +5929,16 @@ "\n" "PE-filbaserelokeringer (tolket indhold i .reloc-sektionen)\n" -#: peigen.c:1712 pepigen.c:1712 +#: peigen.c:1958 pepigen.c:1958 pex64igen.c:1958 #, c-format msgid "" "\n" "Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" msgstr "" "\n" -"Virtuel adresse: %08lx Områdesstørrelse %ld (0x%lx) Antal rettelser %ld\n" +"Virtuel adresse: %08lx OmrÃ¥desstørrelse %ld (0x%lx) Antal rettelser %ld\n" -#: peigen.c:1725 pepigen.c:1725 +#: peigen.c:1971 pepigen.c:1971 pex64igen.c:1971 #, c-format msgid "\treloc %4d offset %4x [%4lx] %s" msgstr "\trelokering %4d afstand %4x [%4lx] %s" @@ -2735,7 +5946,7 @@ #. The MS dumpbin program reportedly ands with 0xff0f before #. printing the characteristics field. Not sure why. No reason to #. emulate it here. -#: peigen.c:1765 pepigen.c:1765 +#: peigen.c:2010 pepigen.c:2010 pex64igen.c:2010 #, c-format msgid "" "\n" @@ -2743,3 +5954,206 @@ msgstr "" "\n" "Karakteristik 0x%x\n" + +#: peigen.c:2310 pepigen.c:2310 pex64igen.c:2310 +msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing" +msgstr "%B: kan ikke udfylde DataDictionary[1] fordi .idata$2 mangler" + +#: peigen.c:2330 pepigen.c:2330 pex64igen.c:2330 +msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing" +msgstr "%B: kan ikke udfylde DataDictionary[1] fordi .idata$4 mangler" + +#: peigen.c:2351 pepigen.c:2351 pex64igen.c:2351 +msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing" +msgstr "%B: kan ikke udfylde DataDictionary[12] fordi .idata$5 mangler" + +#: peigen.c:2371 pepigen.c:2371 pex64igen.c:2371 +msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing" +msgstr "%B: kan ikke udfylde DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)], da .idata$6 mangler" + +#: peigen.c:2413 pepigen.c:2413 pex64igen.c:2413 +msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing" +msgstr "%B: kan ikke udfylde DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)], da .idata$6 mangler" + +#: peigen.c:2436 pepigen.c:2436 pex64igen.c:2436 +msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing" +msgstr "%B: kan ikke udfylde DataDictionary[9], da __tls_used mangler" + +# src/menus.c:341 +#~ msgid "Missing IHCONST" +#~ msgstr "IHCONST mangler" + +# src/menus.c:341 +#~ msgid "Missing IHIHALF" +#~ msgstr "IHIHALF mangler" + +#~ msgid "missing IHCONST reloc" +#~ msgstr "IHCONST-relokering mangler" + +#~ msgid "missing IHIHALF reloc" +#~ msgstr "IHIHALF-relokering mangler" + +#~ msgid " first occurrence: %s: arm call to thumb" +#~ msgstr " første forekomst: %s: arm-kald til thumb" + +#~ msgid " first occurrence: %s: thumb call to arm" +#~ msgstr " første forekomst: %s: thumb-kald til arm" + +#~ msgid " consider relinking with --support-old-code enabled" +#~ msgstr " overvej omlænkning med --support-old-code aktiveret" + +#~ msgid "reloc against unsupported section" +#~ msgstr "relokering mod sektion som ikke understøttes" + +#~ msgid "Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)." +#~ msgstr "Dwarf-fejl: DW_FORM_strp-afstanden (%lu) større end eller lig med størrelsen pÃ¥ .debug_str (%lu)." + +#~ msgid "Dwarf Error: Can't find .debug_abbrev section." +#~ msgstr "Dwarf-fejl: Kan ikke finde sektionen .debug_abbrev." + +#~ msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)." +#~ msgstr "Dwarf-fejl: Forkortelsesafstanden (%lu) større end eller lig med størrelsen .debug_abbrev (%lu)." + +#~ msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section" +#~ msgstr "%s: advarsel: uløselig relokering mod symbol \"%s\" fra sektionen %s" + +#~ msgid "%s: Not enough room for program headers (allocated %u, need %u)" +#~ msgstr "%s: Ikke tilstrækkeligt med plads for programhoveder (allokerede %u, behøver %u)" + +#~ msgid "Error: First section in segment (%s) starts at 0x%x whereas the segment starts at 0x%x" +#~ msgstr "Fejl: Første sektion i segmentet (%s) begynder ved 0x%x mens segmentet begynder ved 0x%x" + +#~ msgid "%s: warning: unresolvable relocation %d against symbol `%s' from %s section" +#~ msgstr "%s: advarsel: uløselig relokering %d mod symbol \"%s\" fra sektionen %s" + +#~ msgid "ERROR: %s is compiled for EABI version %d, whereas %s is compiled for version %d" +#~ msgstr "FEJL: %s er oversat for EABI version %d, mens %s er oversat for version %d" + +#~ msgid "%s: unresolvable relocation %s against symbol `%s' from %s section" +#~ msgstr "%s: uløselig relokering %s mod symbol \"%s\" fra sektionen %s" + +#~ msgid "%s: relocation %s should not be used when making a shared object; recompile with -fPIC" +#~ msgstr "%s: relokeringen %s bør ikke bruges nÃ¥r et delt objekt oprettes; genoversæt med -fPIC" + +#~ msgid "%s(%s+0x%lx): fixing %s" +#~ msgstr "%s(%s+0x%lx): retter %s" + +#~ msgid " [m68000]" +#~ msgstr " [m68000]" + +#~ msgid "Linking mips16 objects into %s format is not supported" +#~ msgstr "Lænkning af mips16-objekter til %s-format understøttes ikke" + +#~ msgid "%s: Unknown special linker type %d" +#~ msgstr "%s: Ukendt speciallænkertype %d" + +#~ msgid "v850ea architecture" +#~ msgstr "v850ea-arkitektur" + +#~ msgid "%s: check_relocs: unhandled reloc type %d" +#~ msgstr "%s: check_relocs: uhÃ¥ndteret relokeringstype %d" + +#~ msgid "%s: Section %s is too large to add hole of %ld bytes" +#~ msgstr "%s: Sektionen %s er for stor til at stoppe hul med %ld byte i" + +#~ msgid "Error: out of memory" +#~ msgstr "Fejl: ikke mere hukommelse" + +#~ msgid "warning: relocation against removed section; zeroing" +#~ msgstr "advarsel: relokering mod fjernet sektion; nulstiller" + +#~ msgid "local symbols in discarded section %s" +#~ msgstr "lokale symboler i bortkastet sektion %s" + +#~ msgid "%s: %s+0x%lx: jump to stub routine which is not jal" +#~ msgstr "%s: %s+0x%lx: hop til stubrutine som ikke er jal" + +#~ msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" +#~ msgstr "%s: ISA (-mips%d) passer ikke med tidligere moduler (-mips%d)" + +#~ msgid "%s: ISA mismatch (%d) with previous modules (%d)" +#~ msgstr "%s: ISA (%d) passer ikke med tidligere moduler (%d)" + +#~ msgid " [mips1]" +#~ msgstr " [mips1]" + +#~ msgid " [mips2]" +#~ msgstr " [mips2]" + +#~ msgid " [mips3]" +#~ msgstr " [mips3]" + +#~ msgid " [mips4]" +#~ msgstr " [mips4]" + +#~ msgid " [mips5]" +#~ msgstr " [mips5]" + +#~ msgid " [mips32]" +#~ msgstr " [mips32]" + +#~ msgid " [mips64]" +#~ msgstr " [mips64]" + +#~ msgid " [mips16]" +#~ msgstr " [mips16]" + +#~ msgid " [32bitmode]" +#~ msgstr " [32-bittilstand]" + +#~ msgid "bfd_make_section (%s) failed" +#~ msgstr "bfd_make_section (%s) mislykkedes" + +#~ msgid "bfd_set_section_flags (%s, %x) failed" +#~ msgstr "bfd_set_section_flags (%s, %x) mislykkedes" + +#~ msgid "Size mismatch section %s=%lx, %s=%lx" +#~ msgstr "Størrelsen passer ikke pÃ¥ sektion %s=%lx, %s=%lx" + +#~ msgid "unknown gsd/egsd subtype %d" +#~ msgstr "ukendt gsd/egsd-undertype %d" + +#~ msgid "failed to enter %s" +#~ msgstr "mislykkedes med at gÃ¥ ind i %s" + +#~ msgid "No Mem !" +#~ msgstr "Ingen hukommelse!" + +#~ msgid "%s: no symbol \"%s\"" +#~ msgstr "%s: intet symbol \"%s\"" + +#~ msgid "reserved STO cmd %d" +#~ msgstr "reserveret STO-kommando %d" + +#~ msgid "reserved OPR cmd %d" +#~ msgstr "reserveret OPR-kommando %d" + +#~ msgid "reserved CTL cmd %d" +#~ msgstr "reserveret CTL-kommando %d" + +#~ msgid "stack-from-image not implemented" +#~ msgstr "stack-from-image er ikke implementeret" + +#~ msgid "stack-entry-mask not fully implemented" +#~ msgstr "stack-entry-mask er ikke helt implementeret" + +#~ msgid "stack-local-symbol not fully implemented" +#~ msgstr "stack-local-symbol er ikke helt implementeret" + +#~ msgid "stack-literal not fully implemented" +#~ msgstr "stack-literal er ikke helt implementeret" + +#~ msgid "stack-local-symbol-entry-point-mask not fully implemented" +#~ msgstr "stack-local-symbol-entry-point-mask er ikke helt implementeret" + +#~ msgid "obj code %d not found" +#~ msgstr "objektkode %d kunne ikke findes" + +#~ msgid "%s: dynamic relocation against speculation fixup" +#~ msgstr "%s: dynamisk relokering uden spekulationsrettelser" + +#~ msgid "%s: speculation fixup against undefined weak symbol" +#~ msgstr "%s: spekulationsfix mod udefineret svagt symbol" + +#~ msgid "%s: reloc overflow 1: 0x%lx > 0xffff" +#~ msgstr "%s: relokering giver overløb 1: 0x%lx > 0xffff" Binary files /tmp/wqm3boRCeK/crash-5.1.6/=unpacked-tar1=/bfd/po/es.gmo and /tmp/OqnMAz5teu/crash-6.1.6/=unpacked-tar1=/bfd/po/es.gmo differ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/es.po crash-6.1.6/=unpacked-tar1=/bfd/po/es.po --- crash-5.1.6/=unpacked-tar1=/bfd/po/es.po 2009-03-06 12:14:38.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/es.po 2010-11-25 06:08:42.000000000 +0000 @@ -1,14 +1,14 @@ -# Mensajes en español para bfd 2.18.90. -# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# Mensajes en español para bfd 2.20.90. +# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the binutils package. -# Cristian Othón Martínez Vera , 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Cristian Othón Martínez Vera , 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # msgid "" msgstr "" -"Project-Id-Version: bfd 2.18.90\n" +"Project-Id-Version: bfd 2.20.90\n" "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" -"POT-Creation-Date: 2008-09-09 15:56+0930\n" -"PO-Revision-Date: 2009-03-03 22:20-0600\n" +"POT-Creation-Date: 2010-11-05 11:31+0100\n" +"PO-Revision-Date: 2010-11-18 18:25-0600\n" "Last-Translator: Cristian Othón Martínez Vera \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" @@ -19,179 +19,185 @@ msgid "%B: Unknown section type in a.out.adobe file: %x\n" msgstr "%B: Tipo de sección desconocido en el fichero a.out.adobe: %x\n" -#: aout-cris.c:204 +#: aout-cris.c:199 #, c-format msgid "%s: Invalid relocation type exported: %d" -msgstr "%s: Tipo de reubicación exportado inválido: %d" +msgstr "%s: Se exportó un tipo de reubicación inválido: %d" -#: aout-cris.c:247 +#: aout-cris.c:242 msgid "%B: Invalid relocation type imported: %d" -msgstr "%B: Tipo de reubicación importado inválido: %d" +msgstr "%B: Se importó un tipo de reubicación inválido: %d" -#: aout-cris.c:258 +#: aout-cris.c:253 msgid "%B: Bad relocation record imported: %d" -msgstr "%B: Registro de reubicación importado erróneo: %d" +msgstr "%B: Se importó un registro de reubicación erróneo: %d" -#: aoutx.h:1268 aoutx.h:1604 +#: aoutx.h:1273 aoutx.h:1611 #, 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" +msgstr "%s: no se puede representar la sección `%s' en el formato de fichero objeto a.out" -#: aoutx.h:1570 +#: aoutx.h:1577 #, 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" +msgstr "%s: no se puede representar la sección para el símbolo `%s' en el formato de fichero objeto a.out" -#: aoutx.h:1572 +#: aoutx.h:1579 vms-alpha.c:7649 msgid "*unknown*" msgstr "*desconocido*" -#: aoutx.h:3989 aoutx.h:4315 +#: aoutx.h:4007 aoutx.h:4333 msgid "%P: %B: unexpected relocation type\n" msgstr "%P: %B: tipo de reubicación inesperado\n" -#: aoutx.h:5349 +#: aoutx.h:5364 #, c-format msgid "%s: relocatable link from %s to %s not supported" msgstr "%s: no se admite el enlace reubicable de %s a %s" -#: archive.c:2046 +#: archive.c:2125 msgid "Warning: writing archive was slow: rewriting timestamp\n" msgstr "Aviso: la escritura del fichero fue lenta: se reescribe la marca de tiempo\n" # ¡Uff! Si utilizáramos file=archivo, esta traducción sería imposible. cfuga -#: archive.c:2309 +#: archive.c:2416 msgid "Reading archive file mod timestamp" -msgstr "Se lee el archivo de la modificación de marca de tiempo del fichero" +msgstr "Se lee la marca de tiempo modificada del fichero en el archivo" -#: archive.c:2333 +#: archive.c:2440 msgid "Writing updated armap timestamp" msgstr "Se escribe la marca de tiempo actualizada de armap" -#: bfd.c:368 +#: bfd.c:395 msgid "No error" msgstr "No hay error" -#: bfd.c:369 +#: bfd.c:396 msgid "System call error" msgstr "Error en la llamada al sistema" -#: bfd.c:370 +#: bfd.c:397 msgid "Invalid bfd target" msgstr "Objetivo bfd inválido" -#: bfd.c:371 +#: bfd.c:398 msgid "File in wrong format" msgstr "Fichero en formato erróneo" -#: bfd.c:372 +#: bfd.c:399 msgid "Archive object file in wrong format" msgstr "Archivo de ficheros objeto en formato erróneo" -#: bfd.c:373 +#: bfd.c:400 msgid "Invalid operation" msgstr "Operación inválida" -#: bfd.c:374 +#: bfd.c:401 msgid "Memory exhausted" msgstr "Memoria agotada" -#: bfd.c:375 +#: bfd.c:402 msgid "No symbols" msgstr "No hay símbolos" -#: bfd.c:376 +#: bfd.c:403 msgid "Archive has no index; run ranlib to add one" msgstr "El archivo no tiene índice; ejecute ranlib para agregar uno" -#: bfd.c:377 +#: bfd.c:404 msgid "No more archived files" msgstr "No hay más ficheros archivados" -#: bfd.c:378 +#: bfd.c:405 msgid "Malformed archive" msgstr "Archivo malformado" -#: bfd.c:379 +#: bfd.c:406 msgid "File format not recognized" msgstr "No se reconoce el formato del fichero" -#: bfd.c:380 +#: bfd.c:407 msgid "File format is ambiguous" msgstr "El formato del fichero es ambiguo" -#: bfd.c:381 +#: bfd.c:408 msgid "Section has no contents" -msgstr "La sección no tiene contenidos" +msgstr "La sección no tiene contenido" -#: bfd.c:382 +#: bfd.c:409 msgid "Nonrepresentable section on output" msgstr "Sección no representable en la salida" -#: bfd.c:383 +#: bfd.c:410 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:384 +#: bfd.c:411 msgid "Bad value" msgstr "Valor erróneo" -#: bfd.c:385 +#: bfd.c:412 msgid "File truncated" msgstr "Fichero truncado" -#: bfd.c:386 +#: bfd.c:413 msgid "File too big" -msgstr "Fichero demasiado grande" +msgstr "El fichero es demasiado grande" -#: bfd.c:387 +#: bfd.c:414 #, c-format msgid "Error reading %s: %s" msgstr "Error al leer %s: %s" -#: bfd.c:388 +#: bfd.c:415 msgid "#" msgstr "#" -#: bfd.c:912 +#: bfd.c:939 #, c-format msgid "BFD %s assertion fail %s:%d" msgstr "falló la aseveración BFD %s %s:%d" -#: bfd.c:924 +#: bfd.c:951 #, c-format msgid "BFD %s internal error, aborting at %s line %d in %s\n" msgstr "error interno de BFD %s, se aborta en %s línea %d en %s\n" -#: bfd.c:928 +#: bfd.c:955 #, c-format msgid "BFD %s internal error, aborting at %s line %d\n" msgstr "error interno de BFD %s, se aborta en %s línea %d\n" -#: bfd.c:930 +#: bfd.c:957 msgid "Please report this bug.\n" msgstr "Por favor reporte este bicho.\n" -#: bfdwin.c:208 +#: bfdwin.c:206 #, c-format msgid "not mapping: data=%lx mapped=%d\n" msgstr "no se mapea: datos=%lx mapeados%d\n" -#: bfdwin.c:211 +#: bfdwin.c:209 #, c-format msgid "not mapping: env var not set\n" msgstr "no se mapea: no se estableció la variable de ambiente\n" -#: binary.c:284 +#: binary.c:271 #, c-format msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." msgstr "Aviso: Se escribe la sección `%s' a un desplazamiento de fichero grande (pe negativo) 0x%lx." -#: cache.c:222 +#: bout.c:1146 elf-m10300.c:2063 elf32-avr.c:1640 elf32-frv.c:5740 +#: elfxx-sparc.c:2795 reloc.c:5646 reloc16.c:162 elf32-ia64.c:842 +#: elf64-ia64.c:842 +msgid "%P%F: --relax and -r may not be used together\n" +msgstr "%P%F: --relax y -r no se pueden usar juntos\n" + +#: cache.c:226 msgid "reopening %B: %s\n" msgstr "se reabre %B: %s\n" -#: coff-alpha.c:490 +#: coff-alpha.c:491 msgid "" "%B: Cannot handle compressed Alpha binaries.\n" " Use compiler flags, or objZ, to generate uncompressed binaries." @@ -199,42 +205,42 @@ "%B: No se pueden manejar binarios Alpha comprimidos.\n" " Use las opciones del compilador, o objZ, para generar binarios sin comprimir." -#: coff-alpha.c:647 +#: coff-alpha.c:648 msgid "%B: unknown/unsupported relocation type %d" msgstr "%B: tipo de reubicación %d desconocida/no admitida" -#: coff-alpha.c:899 coff-alpha.c:936 coff-alpha.c:2024 coff-mips.c:1003 +#: coff-alpha.c:900 coff-alpha.c:937 coff-alpha.c:2025 coff-mips.c:1003 msgid "GP relative relocation used when GP not defined" -msgstr "se usó una reubicación GP relativa cuando GP no estaba definido" +msgstr "se usó una reubicación relativa a GP cuando GP no estaba definido" -#: coff-alpha.c:1501 +#: coff-alpha.c:1502 msgid "using multiple gp values" msgstr "se usan valores múltiples de gp" -#: coff-alpha.c:1560 +#: coff-alpha.c:1561 msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH" msgstr "%B: tipo de reubicación no admitida: ALPHA_R_GPRELHIGH" -#: coff-alpha.c:1567 +#: coff-alpha.c:1568 msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW" msgstr "%B: tipo de reubicación no admitida: ALPHA_R_GPRELLOW" -#: coff-alpha.c:1574 elf32-m32r.c:2487 elf64-alpha.c:3970 elf64-alpha.c:4125 -#: elf32-ia64.c:4465 elf64-ia64.c:4465 +#: coff-alpha.c:1575 elf32-m32r.c:2493 elf64-alpha.c:3991 elf64-alpha.c:4140 +#: elf32-ia64.c:4582 elf64-ia64.c:4582 msgid "%B: unknown relocation type %d" msgstr "%B: tipo de reubicación %d desconocido" -#: coff-arm.c:1039 +#: coff-arm.c:1038 #, c-format msgid "%B: unable to find THUMB glue '%s' for `%s'" msgstr "%B: no se puede encontrar el pegamento THUMB '%s' para `%s'" -#: coff-arm.c:1068 +#: coff-arm.c:1067 #, c-format msgid "%B: unable to find ARM glue '%s' for `%s'" msgstr "%B: no se puede encontrar el pegamento ARM '%s' para `%s'" -#: coff-arm.c:1370 elf32-arm.c:5453 +#: coff-arm.c:1369 elf32-arm.c:6501 #, c-format msgid "" "%B(%s): warning: interworking not enabled.\n" @@ -243,7 +249,7 @@ "%B(%s): aviso: no se activó la interoperabilidad.\n" " primer suceso: %B: llamada arm a thumb" -#: coff-arm.c:1460 +#: coff-arm.c:1459 #, c-format msgid "" "%B(%s): warning: interworking not enabled.\n" @@ -251,98 +257,98 @@ " consider relinking with --support-old-code enabled" msgstr "" "%B(%s): aviso: no se activó la interoperabilidad.\n" -" primer suceso: %B: llamada arm a thumb\n" +" primer suceso: %B: llamada thumb a arm\n" " considere reenlazar con --support-old-code activado" -#: coff-arm.c:1755 coff-tic80.c:695 cofflink.c:3018 +#: coff-arm.c:1754 coff-tic80.c:695 cofflink.c:3043 msgid "%B: bad reloc address 0x%lx in section `%A'" msgstr "%B: dirección de reubicación 0x%lx errónea en la sección `%A'" -#: coff-arm.c:2080 +#: coff-arm.c:2079 msgid "%B: illegal symbol index in reloc: %d" msgstr "%B: índice de símbolos ilegal en la reubicación: %d" -#: coff-arm.c:2211 +#: coff-arm.c:2210 #, c-format -msgid "ERROR: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" -msgstr "ERROR: %B está compilado para APCS-%d, mientras que %B está compilado para APCS-%d" +msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" +msgstr "error: %B está compilado para APCS-%d, mientras que %B está compilado para APCS-%d" -#: coff-arm.c:2227 elf32-arm.c:8563 +#: coff-arm.c:2226 elf32-arm.c:14105 #, c-format -msgid "ERROR: %B passes floats in float registers, whereas %B passes them in integer registers" -msgstr "ERROR: %B pasa números de coma flotante en registros de coma flotante, mientras que %B los pasa en registros enteros" +msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers" +msgstr "error: %B pasa números de coma flotante en registros de coma flotante, mientras que %B los pasa en registros enteros" -#: coff-arm.c:2230 elf32-arm.c:8567 +#: coff-arm.c:2229 elf32-arm.c:14109 #, c-format -msgid "ERROR: %B passes floats in integer registers, whereas %B passes them in float registers" -msgstr "ERROR: %B pasa números de coma flotante en registros enteros, mientras que %B los pasa en registros de coma flotante" +msgid "error: %B passes floats in integer registers, whereas %B passes them in float registers" +msgstr "error: %B pasa números de coma flotante en registros enteros, mientras que %B los pasa en registros de coma flotante" -#: coff-arm.c:2244 +#: coff-arm.c:2243 #, c-format -msgid "ERROR: %B is compiled as position independent code, whereas target %B is absolute position" -msgstr "ERROR: %B está compilado como código independiente de posición, mientras que el objetivo %B es de posición absoluta" +msgid "error: %B is compiled as position independent code, whereas target %B is absolute position" +msgstr "error: %B está compilado como código independiente de posición, mientras que el objetivo %B es de posición absoluta" -#: coff-arm.c:2247 +#: coff-arm.c:2246 #, c-format -msgid "ERROR: %B is compiled as absolute position code, whereas target %B is position independent" -msgstr "ERROR: %B está compilado como código de posición absoluta, mientras que el objetivo %B es independiente de posición" +msgid "error: %B is compiled as absolute position code, whereas target %B is position independent" +msgstr "error: %B está compilado como código de posición absoluta, mientras que el objetivo %B es independiente de posición" -#: coff-arm.c:2275 elf32-arm.c:8632 +#: coff-arm.c:2274 elf32-arm.c:14174 #, c-format msgid "Warning: %B supports interworking, whereas %B does not" msgstr "Aviso: %B admite interoperabilidad, mientras que %B no" -#: coff-arm.c:2278 elf32-arm.c:8638 +#: coff-arm.c:2277 elf32-arm.c:14180 #, c-format msgid "Warning: %B does not support interworking, whereas %B does" msgstr "Aviso: %B no admite interoperabilidad, mientras que %B sí" -#: coff-arm.c:2302 +#: coff-arm.c:2301 #, c-format msgid "private flags = %x:" msgstr "opciones privadas = %x:" -#: coff-arm.c:2310 elf32-arm.c:8689 +#: coff-arm.c:2309 elf32-arm.c:10492 #, c-format msgid " [floats passed in float registers]" msgstr "[números de coma flotante pasados en registros de coma flotante]" -#: coff-arm.c:2312 +#: coff-arm.c:2311 #, c-format msgid " [floats passed in integer registers]" msgstr "[números de coma flotante pasados en registros enteros]" -#: coff-arm.c:2315 elf32-arm.c:8692 +#: coff-arm.c:2314 elf32-arm.c:10495 #, c-format msgid " [position independent]" msgstr "[independiente de posición]" -#: coff-arm.c:2317 +#: coff-arm.c:2316 #, c-format msgid " [absolute position]" msgstr "[posición absoluta]" -#: coff-arm.c:2321 +#: coff-arm.c:2320 #, c-format msgid " [interworking flag not initialised]" msgstr "[no se inicializó la opción de interoperabilidad]" -#: coff-arm.c:2323 +#: coff-arm.c:2322 #, c-format msgid " [interworking supported]" msgstr "[admite interoperabilidad]" -#: coff-arm.c:2325 +#: coff-arm.c:2324 #, c-format msgid " [interworking not supported]" msgstr "[no admite interoperabilidad]" -#: coff-arm.c:2371 elf32-arm.c:8050 +#: coff-arm.c:2370 elf32-arm.c:9520 #, c-format msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking" msgstr "Aviso: No se establece la opción de interoperabilidad de %B ya que se había especificado con anterioridad como no interoperable" -#: coff-arm.c:2375 elf32-arm.c:8054 +#: coff-arm.c:2374 elf32-arm.c:9524 #, c-format msgid "Warning: Clearing the interworking flag of %B due to outside request" msgstr "Aviso: Se limpia la opción de interoperabilidad de %B debido a una petición externa" @@ -357,7 +363,7 @@ msgid "Relocation `%s' not yet implemented\n" msgstr "La reubicación `%s' aún no está implementada\n" -#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:4975 +#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5147 msgid "%B: warning: illegal symbol index %ld in relocs" msgstr "%B: aviso: índice de símbolos %ld ilegal en reubicaciones" @@ -365,201 +371,193 @@ 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:506 elf32-bfin.c:5510 elf32-m68k.c:3938 +#: coff-m68k.c:506 elf32-bfin.c:5678 elf32-cr16.c:2897 elf32-m68k.c:4672 msgid "unsupported reloc type" msgstr "no se admite el tipo de reubicación" -#: coff-maxq.c:126 -msgid "Can't Make it a Short Jump" -msgstr "No se Puede Convertir en un Salto Corto" - -#: coff-maxq.c:191 -msgid "Exceeds Long Jump Range" -msgstr "Excede el Rango de Salto Largo" - -#: coff-maxq.c:202 coff-maxq.c:276 -msgid "Absolute address Exceeds 16 bit Range" -msgstr "La dirección Absoluta Excede el Rango de 16 bit" - -#: coff-maxq.c:240 -msgid "Absolute address Exceeds 8 bit Range" -msgstr "La dirección Absoluta Excede el Rango de 8 bit" - -#: coff-maxq.c:333 -msgid "Unrecognized Reloc Type" -msgstr "Tipo de Reubicación no Reconocida" - -#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:345 elf64-mips.c:1991 -#: elfn32-mips.c:1832 +#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:430 elf32-score7.c:330 +#: elf64-mips.c:2019 elfn32-mips.c:1832 msgid "GP relative relocation when _gp not defined" -msgstr "reubicación GP relativa cuando _gp no está definido" +msgstr "reubicación relativa a GP cuando _gp no está definido" #: coff-or32.c:229 msgid "Unrecognized reloc" -msgstr "Reubicación no reconocida" +msgstr "No se reconoce la reubicación" -#: coff-rs6000.c:2803 +#: coff-rs6000.c:2794 #, c-format msgid "%s: unsupported relocation type 0x%02x" msgstr "%s: no se admite el tipo de reubicación 0x%02x" -#: coff-rs6000.c:2896 +#: coff-rs6000.c:2887 #, 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:3628 coff64-rs6000.c:2130 +#: coff-rs6000.c:3652 coff64-rs6000.c:2175 msgid "%B: symbol `%s' has unrecognized smclas %d" msgstr "%B: el símbolo `%s' tiene smclas %d que no se reconoce" #: coff-tic4x.c:195 coff-tic54x.c:299 coff-tic80.c:458 #, c-format msgid "Unrecognized reloc type 0x%x" -msgstr "Tipo de reubicación 0x%x no reconocida" +msgstr "No se reconoce el tipo de reubicación 0x%x" #: coff-tic4x.c:240 #, c-format msgid "%s: warning: illegal symbol index %ld in relocs" -msgstr "%s: aviso: íncide de símbolos %ld ilegal en reubicaciones" +msgstr "%s: aviso: índice de símbolos %ld ilegal en reubicaciones" #: coff-w65.c:367 #, c-format msgid "ignoring reloc %s\n" msgstr "se descarta la reubicación %s\n" -#: coffcode.h:850 +#: coffcode.h:973 msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'" msgstr "%B: aviso: el símbolo COMDAT '%s' no coincide con el nombre de sección '%s'" #. Generate a warning message rather using the 'unhandled' #. variable as this will allow some .sys files generate by #. other toolchains to be processed. See bugzilla issue 196. -#: coffcode.h:1062 +#: coffcode.h:1197 msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s" msgstr "%B: Aviso: Se descarta la opción de sección IMAGE_SCN_MEM_NOT_PAGED en la sección %s" -#: coffcode.h:1117 +#: coffcode.h:1264 msgid "%B (%s): Section flag %s (0x%x) ignored" msgstr "%B (%s): Se descarta la opción de sección %s (0x%x)" -#: coffcode.h:2244 +#: coffcode.h:2390 #, c-format msgid "Unrecognized TI COFF target id '0x%x'" -msgstr "No se reconoce el id de objetivo TI COFF '0x%x'" +msgstr "No se reconoce el id de objetivo COFF TI '0x%x'" -#: coffcode.h:2559 +#: coffcode.h:2704 msgid "%B: reloc against a non-existant symbol index: %ld" -msgstr "%B: reubicación contra un índice símbolo que no existe: %ld" +msgstr "%B: reubicación contra un índice de símbolo que no existe: %ld" + +#: coffcode.h:3262 +msgid "%B: too many sections (%d)" +msgstr "%B: Demasiadas secciones (%d)" + +#: coffcode.h:3676 +msgid "%B: section %s: string table overflow at offset %ld" +msgstr "%B: sección %s: desbordamiento de tabla de cadenas en el desplazamiento %ld" -#: coffcode.h:4309 +#: coffcode.h:4481 msgid "%B: warning: line number table read failed" msgstr "%B: aviso: falló la lectura de tabla de números de línea" -#: coffcode.h:4339 +#: coffcode.h:4511 msgid "%B: warning: illegal symbol index %ld in line numbers" msgstr "%B: aviso: índice de símbolos %ld ilegal en los números de línea" -#: coffcode.h:4353 +#: coffcode.h:4525 msgid "%B: warning: duplicate line number information for `%s'" -msgstr "%B: aviso: información duplicada de números de línea para `%s'" +msgstr "%B: aviso: información de números de línea duplicada para `%s'" -#: coffcode.h:4744 +#: coffcode.h:4916 msgid "%B: Unrecognized storage class %d for %s symbol `%s'" -msgstr "%B: Clase de almacenamiento %d no reconocida para %s símbolo `%s'" +msgstr "%B: No se reconoce la clase de almacenamiento %d para %s símbolo `%s'" -#: coffcode.h:4870 +#: coffcode.h:5042 msgid "warning: %B: local symbol `%s' has no section" msgstr "aviso: %B: el símbolo local `%s' no tiene sección" -#: coffcode.h:5013 +#: coffcode.h:5186 msgid "%B: illegal relocation type %d at address 0x%lx" msgstr "%B: tipo de reubicación %d ilegal en la dirección 0x%lx" -#: coffgen.c:1518 +#: coffgen.c:1573 msgid "%B: bad string table size %lu" msgstr "%B: tamaño de tabla de cadenas %lu erróneo" -#: cofflink.c:513 elflink.c:4218 +#: cofflink.c:524 elflink.c:4339 msgid "Warning: type of symbol `%s' changed from %d to %d in %B" msgstr "Aviso: el tipo del símbolo `%s' cambió de %d a %d en %B" -#: cofflink.c:2296 +#: cofflink.c:2321 msgid "%B: relocs in section `%A', but it has no contents" msgstr "%B: reubicaciones en la sección `%A', pero no tiene contenido" -#: cofflink.c:2627 coffswap.h:824 +#: cofflink.c:2652 coffswap.h:826 #, c-format msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" msgstr "%s: %s: desbordamiento de reubicación: 0x%lx > 0xffff" -#: cofflink.c:2636 coffswap.h:810 +#: cofflink.c:2661 coffswap.h:812 #, 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" #: cpu-arm.c:189 cpu-arm.c:200 -msgid "ERROR: %B is compiled for the EP9312, whereas %B is compiled for XScale" -msgstr "ERROR: %B está compilado para el EP9312, mientras que %B está compilado para XScale" +msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale" +msgstr "error: %B está compilado para el EP9312, mientras que %B está compilado para XScale" -#: cpu-arm.c:332 +#: cpu-arm.c:333 #, c-format msgid "warning: unable to update contents of %s section in %s" msgstr "aviso: no se puede actualizar el contenido de la sección %s en %s" -#: dwarf2.c:424 +#: dwarf2.c:490 #, c-format msgid "Dwarf Error: Can't find %s section." msgstr "Error de Dwarf: No se puede encontrar la sección %s." -#: dwarf2.c:452 -#, c-format -msgid "Dwarf Error: unable to decompress %s section." -msgstr "Error de Dwarf: no se puede descomprimir la sección %s." - -#: dwarf2.c:462 +#: dwarf2.c:518 #, c-format msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)." msgstr "Error de Dwarf: El desplazamiento (%lu) es mayor que o igual que el tamaño de %s (%lu)." -#: dwarf2.c:849 +#: dwarf2.c:940 #, c-format msgid "Dwarf Error: Invalid or unhandled FORM value: %u." -msgstr "Error de Dwarf: Valor de FORM inválido o no manejado: %u." +msgstr "Error de Dwarf: Valor de FORM sin manejar o inválido: %u." -#: dwarf2.c:1063 +#: dwarf2.c:1191 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)." +msgstr "Error de Dwarf: sección de números de línea revuelta (número de fichero erróneo)." + +#: dwarf2.c:1443 +#, c-format +msgid "Dwarf Error: Unhandled .debug_line version %d." +msgstr "Error de Dwarf: .debug_line versión %d sin manejar." -#: dwarf2.c:1393 +#: dwarf2.c:1465 +msgid "Dwarf Error: Invalid maximum operations per instruction." +msgstr "Error de Dwarf: Máximo de operaciones por instrucción inválido." + +#: dwarf2.c:1652 msgid "Dwarf Error: mangled line number section." msgstr "Error de Dwarf: sección de números de línea revuelta." -#: dwarf2.c:1726 dwarf2.c:1842 dwarf2.c:2114 +#: dwarf2.c:1978 dwarf2.c:2098 dwarf2.c:2382 #, c-format msgid "Dwarf Error: Could not find abbrev number %u." msgstr "Error de Dwarf: No se puede encontrar el número de abreviatura %u." -#: dwarf2.c:2075 +#: dwarf2.c:2343 #, c-format -msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information." -msgstr "Error de Dwarf: se encontró la versión de dwarf '%u', este lector solamente maneja información de la versión 2." +msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information." +msgstr "Error de Dwarf: se encontró la versión de dwarf '%u', este lector solamente maneja información de las versiones 2, 3 y 4." -#: dwarf2.c:2082 +#: dwarf2.c:2350 #, 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:2105 +#: dwarf2.c:2373 #, c-format msgid "Dwarf Error: Bad abbrev number: %u." msgstr "Error de Dwarf: Número de abreviación erróneo: %u." -#: ecoff.c:1227 +#: ecoff.c:1237 #, c-format msgid "Unknown basic type %d" msgstr "Tipo básico %d desconocido" -#: ecoff.c:1484 +#: ecoff.c:1494 #, c-format msgid "" "\n" @@ -568,7 +566,7 @@ "\n" " Símbolo final+1: %ld" -#: ecoff.c:1491 ecoff.c:1494 +#: ecoff.c:1501 ecoff.c:1504 #, c-format msgid "" "\n" @@ -577,7 +575,7 @@ "\n" " Primer símbolo: %ld" -#: ecoff.c:1506 +#: ecoff.c:1516 #, c-format msgid "" "\n" @@ -586,7 +584,7 @@ "\n" " Símbolo final+1: %-7ld Tipo: %s" -#: ecoff.c:1513 +#: ecoff.c:1523 #, c-format msgid "" "\n" @@ -595,7 +593,7 @@ "\n" " Símbolo local: %ld" -#: ecoff.c:1521 +#: ecoff.c:1531 #, c-format msgid "" "\n" @@ -604,7 +602,7 @@ "\n" " struct; símbolo final+1: %ld" -#: ecoff.c:1526 +#: ecoff.c:1536 #, c-format msgid "" "\n" @@ -613,7 +611,7 @@ "\n" " union; símbolo final+1: %ld" -#: ecoff.c:1531 +#: ecoff.c:1541 #, c-format msgid "" "\n" @@ -622,7 +620,7 @@ "\n" " enum; símbolo final+1: %ld" -#: ecoff.c:1537 +#: ecoff.c:1547 #, c-format msgid "" "\n" @@ -631,119 +629,132 @@ "\n" " Tipo: %s" -#: elf-attrs.c:582 -msgid "ERROR: %B: Must be processed by '%s' toolchain" -msgstr "ERROR: %B: Se debe procesar por la cadena de compilación '%s'" - -#: elf-attrs.c:602 elf-attrs.c:621 -msgid "ERROR: %B: Incompatible object tag '%s':%d" -msgstr "ERROR: %B: Etiqueta de objeto '%s' incompatible:%d" +#: elf-attrs.c:569 +msgid "error: %B: Object has vendor-specific contents that must be processed by the '%s' toolchain" +msgstr "error: %B: El objeto tiene contenido específico del vendedor que se debe procesar con la cadena de compilación '%s'" + +#: elf-attrs.c:578 +msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'" +msgstr "error: %B: La etiqueta de objeto '%d, %s' es incompatible con la etiqueta '%d, %s'" -#: elf-eh-frame.c:866 +#: elf-eh-frame.c:913 msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n" msgstr "%P: error en %B(%A); no se creará la tabla .eh_frame_hdr.\n" -#: elf-eh-frame.c:1102 +#: elf-eh-frame.c:1165 msgid "%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n" msgstr "%P: la codificación fde en %B(%A) previene la creación de la tabla .eh_frame_hdr.\n" -#: elf-hppa.h:2241 elf-m10300.c:1546 elf32-arm.c:7954 elf32-i386.c:3582 -#: elf32-m32r.c:2598 elf32-m68k.c:3516 elf32-ppc.c:7223 elf32-s390.c:3058 -#: elf32-sh.c:3438 elf32-xtensa.c:3021 elf64-ppc.c:11528 elf64-s390.c:3019 -#: elf64-sh64.c:1648 elf64-x86-64.c:3239 elfxx-sparc.c:3336 -msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" -msgstr "%B(%A+0x%lx): reubicación %s sin resolución contra el símbolo `%s'" - -#: elf-hppa.h:2266 elf-hppa.h:2280 -msgid "%B(%A): warning: unresolvable relocation against symbol `%s'" -msgstr "%B(%A): aviso: reubicación sin resolución contra el símbolo `%s'" - -#: elf-m10200.c:456 elf-m10300.c:1609 elf32-avr.c:1250 elf32-bfin.c:3214 -#: elf32-cr16.c:959 elf32-cr16c.c:790 elf32-cris.c:1538 elf32-crx.c:933 -#: elf32-d10v.c:516 elf32-fr30.c:616 elf32-frv.c:4114 elf32-h8300.c:516 -#: elf32-i860.c:1218 elf32-ip2k.c:1499 elf32-iq2000.c:691 elf32-m32c.c:560 -#: elf32-m32r.c:3124 elf32-m68hc1x.c:1135 elf32-mep.c:541 elf32-msp430.c:493 -#: elf32-mt.c:402 elf32-openrisc.c:411 elf32-score.c:2451 elf32-spu.c:4132 -#: elf32-v850.c:1703 elf32-xstormy16.c:948 elf64-mmix.c:1533 +#: elf-ifunc.c:179 +msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%B' can not be used when making an executable; recompile with -fPIE and relink with -pie\n" +msgstr "%F%P: el símbolo STT_GNU_IFUNC dinámico `%s' con igualdad de puntero en `%B' no se puede usar al hacer un ejecutable; recompile con -fPIE y reenlace con -pie\n" + +#: elf-m10200.c:450 elf-m10300.c:1560 elf32-avr.c:1263 elf32-bfin.c:3193 +#: elf32-cr16.c:1482 elf32-cr16c.c:780 elf32-cris.c:2077 elf32-crx.c:922 +#: elf32-d10v.c:509 elf32-fr30.c:609 elf32-frv.c:4111 elf32-h8300.c:509 +#: elf32-i860.c:1211 elf32-ip2k.c:1468 elf32-iq2000.c:684 elf32-lm32.c:1168 +#: elf32-m32c.c:553 elf32-m32r.c:3111 elf32-m68hc1x.c:1138 elf32-mep.c:534 +#: elf32-microblaze.c:1231 elf32-moxie.c:282 elf32-msp430.c:486 elf32-mt.c:395 +#: elf32-openrisc.c:404 elf32-score.c:2731 elf32-score7.c:2540 +#: elf32-spu.c:5042 elf32-v850.c:2143 elf32-xstormy16.c:941 elf64-mmix.c:1522 msgid "internal error: out of range error" msgstr "error interno: error fuera de rango" -#: elf-m10200.c:460 elf-m10300.c:1613 elf32-avr.c:1254 elf32-bfin.c:3218 -#: elf32-cr16.c:963 elf32-cr16c.c:794 elf32-cris.c:1542 elf32-crx.c:937 -#: elf32-d10v.c:520 elf32-fr30.c:620 elf32-frv.c:4118 elf32-h8300.c:520 -#: elf32-i860.c:1222 elf32-iq2000.c:695 elf32-m32c.c:564 elf32-m32r.c:3128 -#: elf32-m68hc1x.c:1139 elf32-mep.c:545 elf32-msp430.c:497 -#: elf32-openrisc.c:415 elf32-score.c:2455 elf32-spu.c:4136 elf32-v850.c:1707 -#: elf32-xstormy16.c:952 elf64-mmix.c:1537 elfxx-mips.c:9065 +#: elf-m10200.c:454 elf-m10300.c:1564 elf32-avr.c:1267 elf32-bfin.c:3197 +#: elf32-cr16.c:1486 elf32-cr16c.c:784 elf32-cris.c:2081 elf32-crx.c:926 +#: elf32-d10v.c:513 elf32-fr30.c:613 elf32-frv.c:4115 elf32-h8300.c:513 +#: elf32-i860.c:1215 elf32-iq2000.c:688 elf32-lm32.c:1172 elf32-m32c.c:557 +#: elf32-m32r.c:3115 elf32-m68hc1x.c:1142 elf32-mep.c:538 +#: elf32-microblaze.c:1235 elf32-moxie.c:286 elf32-msp430.c:490 +#: elf32-openrisc.c:408 elf32-score.c:2735 elf32-score7.c:2544 +#: elf32-spu.c:5046 elf32-v850.c:2147 elf32-xstormy16.c:945 elf64-mmix.c:1526 +#: elfxx-mips.c:9186 msgid "internal error: unsupported relocation error" -msgstr "error interno: error de reubicación no admitida" +msgstr "error interno: no se admite el error de reubicación" -#: elf-m10200.c:464 elf32-cr16.c:967 elf32-cr16c.c:798 elf32-crx.c:941 -#: elf32-d10v.c:524 elf32-h8300.c:524 elf32-m32r.c:3132 elf32-m68hc1x.c:1143 -#: elf32-score.c:2459 elf32-spu.c:4140 +#: elf-m10200.c:458 elf32-cr16.c:1490 elf32-cr16c.c:788 elf32-crx.c:930 +#: elf32-d10v.c:517 elf32-h8300.c:517 elf32-lm32.c:1176 elf32-m32r.c:3119 +#: elf32-m68hc1x.c:1146 elf32-microblaze.c:1239 elf32-score.c:2739 +#: elf32-score7.c:2548 elf32-spu.c:5050 msgid "internal error: dangerous error" msgstr "error interno: error peligroso" -#: elf-m10200.c:468 elf-m10300.c:1626 elf32-avr.c:1262 elf32-bfin.c:3226 -#: elf32-cr16.c:971 elf32-cr16c.c:802 elf32-cris.c:1550 elf32-crx.c:945 -#: elf32-d10v.c:528 elf32-fr30.c:628 elf32-frv.c:4126 elf32-h8300.c:528 -#: elf32-i860.c:1230 elf32-ip2k.c:1514 elf32-iq2000.c:703 elf32-m32c.c:572 -#: elf32-m32r.c:3136 elf32-m68hc1x.c:1147 elf32-mep.c:553 elf32-msp430.c:505 -#: elf32-mt.c:410 elf32-openrisc.c:423 elf32-score.c:2463 elf32-spu.c:4144 -#: elf32-v850.c:1727 elf32-xstormy16.c:960 elf64-mmix.c:1545 +#: elf-m10200.c:462 elf-m10300.c:1577 elf32-avr.c:1275 elf32-bfin.c:3205 +#: elf32-cr16.c:1494 elf32-cr16c.c:792 elf32-cris.c:2089 elf32-crx.c:934 +#: elf32-d10v.c:521 elf32-fr30.c:621 elf32-frv.c:4123 elf32-h8300.c:521 +#: elf32-i860.c:1223 elf32-ip2k.c:1483 elf32-iq2000.c:696 elf32-lm32.c:1180 +#: elf32-m32c.c:565 elf32-m32r.c:3123 elf32-m68hc1x.c:1150 elf32-mep.c:546 +#: elf32-microblaze.c:1243 elf32-moxie.c:294 elf32-msp430.c:498 elf32-mt.c:403 +#: elf32-openrisc.c:416 elf32-score.c:2748 elf32-score7.c:2552 +#: elf32-spu.c:5054 elf32-v850.c:2167 elf32-xstormy16.c:953 elf64-mmix.c:1534 msgid "internal error: unknown error" msgstr "error interno: error desconocido" -#: elf-m10300.c:1618 +#: elf-m10300.c:1504 elf32-arm.c:9098 elf32-i386.c:4081 elf32-m32r.c:2604 +#: elf32-m68k.c:4156 elf32-ppc.c:8089 elf32-s390.c:3010 elf32-sh.c:4223 +#: elf32-xtensa.c:3067 elf64-ppc.c:13115 elf64-s390.c:2985 elf64-sh64.c:1636 +#: elf64-x86-64.c:3719 elfxx-sparc.c:3806 +msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%B(%A+0x%lx): reubicación %s sin resolución contra el símbolo `%s'" + +#: elf-m10300.c:1569 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)" msgstr "error: tipo de reubicación inapropiada para la biblioteca compartida (¿olvidó -fpic?)" -#: elf-m10300.c:1621 +#: elf-m10300.c:1572 msgid "internal error: suspicious relocation type used in shared library" -msgstr "error interno: se usó un tipo de reubicación sospechosa en una biblioteca compartida" +msgstr "error interno: se usó un tipo de reubicación sospechosa en la biblioteca compartida" -#: elf-m10300.c:4397 elf32-arm.c:9578 elf32-cris.c:2403 elf32-hppa.c:1921 -#: elf32-i370.c:506 elf32-i386.c:1807 elf32-m32r.c:1931 elf32-m68k.c:2787 -#: elf32-ppc.c:4693 elf32-s390.c:1687 elf32-sh.c:2583 elf32-vax.c:1055 -#: elf64-ppc.c:6075 elf64-s390.c:1662 elf64-sh64.c:3432 elf64-x86-64.c:1641 -#: elfxx-sparc.c:1828 +#: elf-m10300.c:4372 elf32-arm.c:11392 elf32-cr16.c:2451 elf32-cris.c:3044 +#: elf32-hppa.c:1894 elf32-i370.c:503 elf32-i386.c:2036 elf32-lm32.c:1868 +#: elf32-m32r.c:1927 elf32-m68k.c:3252 elf32-ppc.c:4994 elf32-s390.c:1652 +#: elf32-sh.c:2931 elf32-vax.c:1040 elf64-ppc.c:6483 elf64-s390.c:1635 +#: elf64-sh64.c:3377 elf64-x86-64.c:1871 elfxx-sparc.c:2104 #, c-format msgid "dynamic variable `%s' is zero size" msgstr "la variable dinámica `%s' es de tamaño cero" -#: elf.c:328 +#: elf.c:334 msgid "%B: invalid string offset %u >= %lu for section `%s'" msgstr "%B: desplazamiento de cadena inválido %u >= %lu para la sección `%s'" -#: elf.c:438 +#: elf.c:446 msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" msgstr "%B el número de símbolo %lu hace referencia a la sección inexistente SHT_SYMTAB_SHNDX" -#: elf.c:594 +#: elf.c:602 msgid "%B: Corrupt size field in group section header: 0x%lx" -msgstr "%B: Tamaño de campo corrupto en el encabezado de la sección de grupo: 0x%lx" +msgstr "%B: Campo de tamaño corrupto en el encabezado de la sección de grupo: 0x%lx" -#: elf.c:630 +#: elf.c:638 msgid "%B: invalid SHT_GROUP entry" msgstr "%B: entrada SHT_GROUP inválida" -#: elf.c:700 +#: elf.c:708 msgid "%B: no group info for section %A" msgstr "%B: no hay información de grupo para la sección %A" -#: elf.c:729 elf.c:2976 elflink.c:9746 +#: elf.c:737 elf.c:3090 elflink.c:10062 msgid "%B: warning: sh_link not set for section `%A'" -msgstr "%B: aviso: no se estableción sh_link para la sección `%A'" +msgstr "%B: aviso: no se estableció sh_link para la sección `%A'" -#: elf.c:748 +#: elf.c:756 msgid "%B: sh_link [%d] in section `%A' is incorrect" msgstr "%B: sh_link [%d] en la sección `%A', es incorrecto" -#: elf.c:783 +#: elf.c:791 msgid "%B: unknown [%d] section `%s' in group [%s]" msgstr "%B: sección [%d] desconocida `%s' en el grupo [%s]" -#: elf.c:1159 +#: elf.c:1041 +msgid "%B: unable to initialize commpress status for section %s" +msgstr "%B: no se puede inicializar el estado comprimido de la sección %s" + +#: elf.c:1050 +msgid "%B: unable to initialize decommpress status for section %s" +msgstr "%B: no se puede inicializar el estado descomprimido de la sección %s" + +#: elf.c:1158 #, c-format msgid "" "\n" @@ -752,7 +763,7 @@ "\n" "Encabezado del Programa:\n" -#: elf.c:1201 +#: elf.c:1200 #, c-format msgid "" "\n" @@ -761,7 +772,7 @@ "\n" "Sección Dinámica:\n" -#: elf.c:1337 +#: elf.c:1336 #, c-format msgid "" "\n" @@ -770,496 +781,566 @@ "\n" "Definiciones de versión:\n" -#: elf.c:1362 +#: elf.c:1361 #, c-format msgid "" "\n" "Version References:\n" msgstr "" "\n" -"Referencias de Versión:\n" +"Referencias de versión:\n" -#: elf.c:1367 +#: elf.c:1366 #, c-format msgid " required from %s:\n" -msgstr " requerido desde %s:\n" +msgstr " se requere desde %s:\n" -#: elf.c:1755 +#: elf.c:1773 msgid "%B: invalid link %lu for reloc section %s (index %u)" msgstr "%B: enlace %lu inválido para la sección de reubicación %s (índice %u)" -#: elf.c:1924 +#: elf.c:1943 msgid "%B: don't know how to handle allocated, application specific section `%s' [0x%8x]" -msgstr "%B: no se sabe cómo manejar lo reservado, aplicación específica de la sección `%s' [0x%8x]" +msgstr "%B: no se sabe cómo manejar la sección específica alojada de la aplicación `%s' [0x%8x]" -#: elf.c:1936 +#: elf.c:1955 msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]" msgstr "%B: no se sabe cómo manejar la sección específica de procesador `%s' [0x%8x]" -#: elf.c:1947 +#: elf.c:1966 msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]" msgstr "%B: no se sabe cómo manejar la sección específica de SO `%s' [0x%8x]" -#: elf.c:1957 +#: elf.c:1976 msgid "%B: don't know how to handle section `%s' [0x%8x]" msgstr "%B: no se sabe cómo manejar la sección `%s' [0x%8x]" -#: elf.c:2555 +#: elf.c:2603 #, c-format msgid "warning: section `%A' type changed to PROGBITS" msgstr "aviso: el tipo de la sección `%A' cambió a PROGBITS" -#: elf.c:2933 +#: elf.c:3047 msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'" msgstr "%B: sh_link de la sección `%A' apunta a la sección descartada `%A' de `%B'" -#: elf.c:2956 +#: elf.c:3070 msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'" -msgstr "%B: sh_link de la sección `%A' apunta a la sección descartada `%A' de `%B'" +msgstr "%B: sh_link de la sección `%A' apunta a la sección eliminada `%A' de `%B'" -#: elf.c:4300 +#: elf.c:4480 msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section" msgstr "%B: La primera sección en el segmento PT_DYNAMIC no es la sección .dynamic" -#: elf.c:4327 +#: elf.c:4507 msgid "%B: Not enough room for program headers, try linking with -N" msgstr "%B: No hay suficiente espacio para los encabezados del programa, pruebe enlazar con -N" -#: elf.c:4404 -msgid "%B: section %A vma 0x%lx overlaps previous sections" -msgstr "%B: la sección %A vma 0x%lx traslapa las secciones anteriores" +#: elf.c:4594 +msgid "%B: section %A lma %#lx adjusted to %#lx" +msgstr "%B: la sección %A lma %#lx se ajusta a %#lx" -#: elf.c:4499 +#: elf.c:4713 msgid "%B: section `%A' can't be allocated in segment %d" msgstr "%B: la sección `%A' no se puede asignar en el segmento %d" -#: elf.c:4549 +#: elf.c:4761 msgid "%B: warning: allocated section `%s' not in segment" msgstr "%B: aviso: la sección asignada `%s' no está en el segmento" -#: elf.c:5064 +#: elf.c:5257 msgid "%B: symbol `%s' required but not present" msgstr "%B: se requiere el símbolo `%s' pero no está presente" -#: elf.c:5403 +#: elf.c:5595 msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n" msgstr "%B: aviso: Se detectó un segmento cargable vacío, ¿ esto es intencional ?\n" -#: elf.c:6366 +#: elf.c:6622 #, c-format msgid "Unable to find equivalent output section for symbol '%s' from section '%s'" msgstr "No se puede encontrar la sección de salida equivalente para el símbolo '%s' de la sección '%s'" -#: elf.c:7346 +#: elf.c:7611 msgid "%B: unsupported relocation type %s" msgstr "%B: no se admite el tipo de reubicación %s" -#: elf32-arm.c:2846 elf32-arm.c:2878 +#: elf32-arm.c:3183 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: Thumb call to ARM" msgstr "" "%B(%s): aviso: no se activó la interoperabilidad.\n" -" primer suceso: %B: llamada Thumb para ARM" +" primer suceso: %B: llamada Thumb a ARM" + +#: elf32-arm.c:3226 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: ARM call to Thumb" +msgstr "" +"%B(%s): aviso: no se activó la interoperabilidad.\n" +" primer suceso: %B: llamada ARM a Thumb" -#: elf32-arm.c:3041 +#: elf32-arm.c:3432 elf32-arm.c:4807 #, c-format msgid "%s: cannot create stub entry %s" msgstr "%s: no se puede crear la entrada de cabo %s" -#: elf32-arm.c:3825 +#: elf32-arm.c:4923 #, c-format msgid "unable to find THUMB glue '%s' for '%s'" msgstr "no se puede encontrar el pegamento THUMB '%s' para `%s'" -#: elf32-arm.c:3859 +#: elf32-arm.c:4959 #, c-format msgid "unable to find ARM glue '%s' for '%s'" msgstr "no se puede encontrar el pegamento ARM '%s' para `%s'" -#: elf32-arm.c:4463 +#: elf32-arm.c:5485 msgid "%B: BE8 images only valid in big-endian mode." msgstr "%B: las imágenes BE8 sólo son válidas en modo big-endian." #. Give a warning, but do as the user requests anyway. -#: elf32-arm.c:4678 +#: elf32-arm.c:5715 msgid "%B: warning: selected VFP11 erratum workaround is not necessary for target architecture" -msgstr "%B: aviso: no se necesita la alternativa para evita la errata del VFP11 seleccionado para la arquitectura objetivo" +msgstr "%B: aviso: no se necesita la alternativa para evitar la errata del VFP11 seleccionado para la arquitectura objetivo" -#: elf32-arm.c:5212 elf32-arm.c:5232 +#: elf32-arm.c:6259 elf32-arm.c:6279 msgid "%B: unable to find VFP11 veneer `%s'" msgstr "%B: no se puede encontrar la chapa de VFP11 `%s'" -#: elf32-arm.c:5278 +#: elf32-arm.c:6327 #, c-format msgid "Invalid TARGET2 relocation type '%s'." msgstr "Tipo de reubicación TARGET2 '%s' inválido." -#: elf32-arm.c:5362 +#: elf32-arm.c:6411 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: thumb call to arm" msgstr "" "%s(%s): aviso: no se activó la interoperabilidad.\n" -" primer suceso: %B: llamada thumb para arm" +" primer suceso: %B: llamada thumb a arm" -#: elf32-arm.c:6094 +#: elf32-arm.c:7130 msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'." msgstr "\\%B: Aviso: La instrucción Arm BLX apunta a la función Arm '%s'." -#: elf32-arm.c:6418 +#: elf32-arm.c:7541 msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'." msgstr "%B: Aviso: La instrucción Thumb BLX apunta a la función thumb '%s'." -#: elf32-arm.c:7095 +#: elf32-arm.c:8223 msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object" msgstr "%B(%A+0x%lx): la reubicación R_ARM_TLS_LE32 no se permite en objetos compartidos" -#: elf32-arm.c:7310 +#: elf32-arm.c:8438 msgid "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group relocations" -msgstr "%B(%A+0x%lx): Sólo se permiten las instrucciones ADD o SUB para la reubicación de grupo ALU" +msgstr "%B(%A+0x%lx): Sólo se permiten las instrucciones ADD o SUB en las reubicaciones de grupo ALU" -#: elf32-arm.c:7350 elf32-arm.c:7437 elf32-arm.c:7520 elf32-arm.c:7605 +#: elf32-arm.c:8478 elf32-arm.c:8565 elf32-arm.c:8648 elf32-arm.c:8733 msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s" msgstr "%B(%A+0x%lx): Desborde al dividirse 0x%lx para la reubicación de grupo %s" -#: elf32-arm.c:7812 elf32-sh.c:3334 elf64-sh64.c:1556 +#: elf32-arm.c:8963 elf32-sh.c:4112 elf64-sh64.c:1544 msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section" msgstr "%B(%A+0x%lx): reubicación %s contra la sección SEC_MERGE" -#: elf32-arm.c:7930 elf32-xtensa.c:2759 elf64-ppc.c:10374 +#: elf32-arm.c:9074 elf32-m68k.c:4191 elf32-xtensa.c:2805 elf64-ppc.c:11689 msgid "%B(%A+0x%lx): %s used with TLS symbol %s" msgstr "%B(%A+0x%lx): se usó %s con el símbolo TLS %s" -#: elf32-arm.c:7931 elf32-xtensa.c:2760 elf64-ppc.c:10375 +#: elf32-arm.c:9075 elf32-m68k.c:4192 elf32-xtensa.c:2806 elf64-ppc.c:11690 msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s" msgstr "%B(%A+0x%lx): se usó %s con el símbolo %s que no es TLS" -#: elf32-arm.c:7988 +#: elf32-arm.c:9132 elf32-tic6x.c:1632 msgid "out of range" msgstr "fuera de rango" -#: elf32-arm.c:7992 +#: elf32-arm.c:9136 elf32-tic6x.c:1636 msgid "unsupported relocation" msgstr "no se admite la reubicación" -#: elf32-arm.c:8000 +#: elf32-arm.c:9144 elf32-tic6x.c:1644 msgid "unknown error" msgstr "error desconocido" -#: elf32-arm.c:8099 +#: elf32-arm.c:9569 msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it" msgstr "Aviso: Se limpia la opción de interoperación en %B porque se ha enlazado con él código no interoperable en %B" -#: elf32-arm.c:8205 -msgid "ERROR: %B uses VFP register arguments, %B does not" -msgstr "ERROR: %B utiliza argumentos de registro VFP, mientras que %B no" - -#: elf32-arm.c:8254 -msgid "ERROR: %B: Conflicting architecture profiles %c/%c" -msgstr "ERROR: %B: Perfiles de arquitecturas en conflicto %c/%c" +#: elf32-arm.c:9663 +msgid "%B: Unknown mandatory EABI object attribute %d" +msgstr "%B: Atributo de objeto EABI obligatorio %d desconocido" -#: elf32-arm.c:8274 +#: elf32-arm.c:9671 +msgid "Warning: %B: Unknown EABI object attribute %d" +msgstr "Aviso: %B: Atributo de objeto EABI %d desconocido" + +#: elf32-arm.c:9852 +msgid "error: %B: Unknown CPU architecture" +msgstr "error: %B: Arquitectura de CPU desconocida" + +#: elf32-arm.c:9890 +msgid "error: %B: Conflicting CPU architectures %d/%d" +msgstr "error: %B: Arquitecturas de CPU en conflicto %d/%d" + +#: elf32-arm.c:9942 +msgid "Error: %B has both the current and legacy Tag_MPextension_use attributes" +msgstr "Error: %B tiene al mismo tiempo los atributos Tag_MPextension_use actuales y antiguos" + +#: elf32-arm.c:9967 +msgid "error: %B uses VFP register arguments, %B does not" +msgstr "error: %B utiliza argumentos de registro VFP, mientras que %B no" + +#: elf32-arm.c:10112 +msgid "error: %B: unable to merge virtualization attributes with %B" +msgstr "error: %B: no se pueden mezclar los atributos de virtualización con %B" + +#: elf32-arm.c:10138 +msgid "error: %B: Conflicting architecture profiles %c/%c" +msgstr "error: %B: Perfiles de arquitecturas en conflicto %c/%c" + +#: elf32-arm.c:10239 msgid "Warning: %B: Conflicting platform configuration" msgstr "Aviso: %B: Configuración de plataformas en conflicto" -#: elf32-arm.c:8283 -msgid "ERROR: %B: Conflicting use of R9" -msgstr "ERROR: %B: Uso en conflicto de R9" - -#: elf32-arm.c:8295 -msgid "ERROR: %B: SB relative addressing conflicts with use of R9" -msgstr "ERROR: %B: El direccionamiento relativo a SB tiene conflictos con el uso de R9" +#: elf32-arm.c:10248 +msgid "error: %B: Conflicting use of R9" +msgstr "error: %B: Uso en conflicto de R9" + +#: elf32-arm.c:10260 +msgid "error: %B: SB relative addressing conflicts with use of R9" +msgstr "error: %B: El direccionamiento relativo a SB tiene conflictos con el uso de R9" -#: elf32-arm.c:8318 +#: elf32-arm.c:10273 msgid "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail" msgstr "aviso: %B usa wchar_t de %u bytes aunque la salida usa wchar_t de %u bytes; el uso de valores wchar_t entre objetos puede fallar" -#: elf32-arm.c:8347 +#: elf32-arm.c:10304 msgid "warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail" -msgstr "aviso: %B usa %s enums aunque la salida usa %s enums; el uso de valores enum entre objetos puede fallar" - -#: elf32-arm.c:8360 -msgid "ERROR: %B uses iWMMXt register arguments, %B does not" -msgstr "ERROR: %B utiliza argumentos de registro iWMMXt, mientras que %B no" - -#: elf32-arm.c:8400 -msgid "Warning: %B: Unknown EABI object attribute %d" -msgstr "Aviso: %B: Atributo de objeto EABI %d desconocido" +msgstr "aviso: %B usa enums %s aunque la salida usa enums %s; el uso de valores enum entre objetos puede fallar" -#: elf32-arm.c:8460 -msgid "ERROR: %B is already in final BE8 format" -msgstr "ERROR: %B ya está en el formato BE8 final" - -#: elf32-arm.c:8536 -msgid "ERROR: Source object %B has EABI version %d, but target %B has EABI version %d" -msgstr "ERROR: El objeto fuente %B tiene EABI versión %d, pero el objetivo %B tiene EABI versión %d" - -#: elf32-arm.c:8552 -msgid "ERROR: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" -msgstr "ERROR: %B está compilado para APCS-%d mientras que el objetivo %B usa APCS-%d" - -#: elf32-arm.c:8577 -msgid "ERROR: %B uses VFP instructions, whereas %B does not" -msgstr "ERROR: %B utiliza instrucciones VFP, mientras que %B no" - -#: elf32-arm.c:8581 -msgid "ERROR: %B uses FPA instructions, whereas %B does not" -msgstr "ERROR: %B utiliza instrucciones FPA, mientras que %B no" - -#: elf32-arm.c:8591 -msgid "ERROR: %B uses Maverick instructions, whereas %B does not" -msgstr "ERROR: %B utiliza instrucciones Maverick, mientras que %B no" - -#: elf32-arm.c:8595 -msgid "ERROR: %B does not use Maverick instructions, whereas %B does" -msgstr "ERROR: %B no utiliza instrucciones Maverick, mientras que %B sí" - -#: elf32-arm.c:8614 -msgid "ERROR: %B uses software FP, whereas %B uses hardware FP" -msgstr "ERROR: %B utiliza FP de software, mientras que %B utiliza FP de hardware" - -#: elf32-arm.c:8618 -msgid "ERROR: %B uses hardware FP, whereas %B uses software FP" -msgstr "ERROR: %B utiliza FP de hardware, mientras que %B utiliza FP de software" +#: elf32-arm.c:10316 +msgid "error: %B uses iWMMXt register arguments, %B does not" +msgstr "error: %B utiliza argumentos de registro iWMMXt, mientras que %B no" + +#: elf32-arm.c:10333 +msgid "error: fp16 format mismatch between %B and %B" +msgstr "error: no coincide el formato fp16 entre %B y %B" + +#: elf32-arm.c:10357 +msgid "DIV usage mismatch between %B and %B" +msgstr "no coincide el uso de DIV entre %B y %B" + +#: elf32-arm.c:10376 +msgid "%B has has both the current and legacy Tag_MPextension_use attributes" +msgstr "%B tiene al mismo tiempo los atributos actuales y antiguos de Tag_MPextension" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. #. Ignore init flag - it may not be set, despite the flags field containing valid data. -#: elf32-arm.c:8665 elf32-bfin.c:4899 elf32-cris.c:3235 elf32-m68hc1x.c:1279 -#: elf32-m68k.c:774 elf32-score.c:3750 elf32-vax.c:538 elfxx-mips.c:12699 +#: elf32-arm.c:10468 elf32-bfin.c:5065 elf32-cris.c:4162 elf32-m68hc1x.c:1282 +#: elf32-m68k.c:1235 elf32-score.c:3996 elf32-score7.c:3803 elf32-vax.c:528 +#: elfxx-mips.c:12842 #, c-format msgid "private flags = %lx:" msgstr "opciones privadas = %lx:" -#: elf32-arm.c:8674 +#: elf32-arm.c:10477 #, c-format msgid " [interworking enabled]" msgstr " [interoperabilidad activada]" -#: elf32-arm.c:8682 +#: elf32-arm.c:10485 #, c-format msgid " [VFP float format]" msgstr " [formato de coma flotante VFP]" -#: elf32-arm.c:8684 +#: elf32-arm.c:10487 #, c-format msgid " [Maverick float format]" msgstr " [formato de coma flotante Maverick]" -#: elf32-arm.c:8686 +#: elf32-arm.c:10489 #, c-format msgid " [FPA float format]" msgstr " [formato de coma flotante FPA]" -#: elf32-arm.c:8695 +#: elf32-arm.c:10498 #, c-format msgid " [new ABI]" msgstr " [ABI nuevo]" -#: elf32-arm.c:8698 +#: elf32-arm.c:10501 #, c-format msgid " [old ABI]" msgstr " [ABI antiguo]" -#: elf32-arm.c:8701 +#: elf32-arm.c:10504 #, c-format msgid " [software FP]" msgstr " [FP por software]" -#: elf32-arm.c:8710 +#: elf32-arm.c:10513 #, c-format msgid " [Version1 EABI]" msgstr " [EABI Version1]" -#: elf32-arm.c:8713 elf32-arm.c:8724 +#: elf32-arm.c:10516 elf32-arm.c:10527 #, c-format msgid " [sorted symbol table]" msgstr " [tabla de símbolos ordenados]" -#: elf32-arm.c:8715 elf32-arm.c:8726 +#: elf32-arm.c:10518 elf32-arm.c:10529 #, c-format msgid " [unsorted symbol table]" msgstr " [tabla de símbolos sin ordenar]" -#: elf32-arm.c:8721 +#: elf32-arm.c:10524 #, c-format msgid " [Version2 EABI]" msgstr " [EABI Version2]" -#: elf32-arm.c:8729 +#: elf32-arm.c:10532 #, c-format msgid " [dynamic symbols use segment index]" msgstr " [los símbolos dinámicos utilizan índices de segmento]" -#: elf32-arm.c:8732 +#: elf32-arm.c:10535 #, c-format msgid " [mapping symbols precede others]" msgstr " [el mapeo de símbolos precede a otros]" -#: elf32-arm.c:8739 +#: elf32-arm.c:10542 #, c-format msgid " [Version3 EABI]" msgstr " [EABI Version3]" -#: elf32-arm.c:8743 +#: elf32-arm.c:10546 #, c-format msgid " [Version4 EABI]" msgstr " [EABI Version4]" -#: elf32-arm.c:8747 +#: elf32-arm.c:10550 #, c-format msgid " [Version5 EABI]" msgstr " [EABI Version5]" -#: elf32-arm.c:8750 +#: elf32-arm.c:10553 #, c-format msgid " [BE8]" msgstr " [BE8]" -#: elf32-arm.c:8753 +#: elf32-arm.c:10556 #, c-format msgid " [LE8]" msgstr " [LE8]" -#: elf32-arm.c:8759 +#: elf32-arm.c:10562 #, c-format msgid " " -msgstr " " +msgstr " " -#: elf32-arm.c:8766 +#: elf32-arm.c:10569 #, c-format msgid " [relocatable executable]" msgstr " [ejecutable reubicable]" -#: elf32-arm.c:8769 +#: elf32-arm.c:10572 #, c-format msgid " [has entry point]" msgstr " [tiene punto de entrada]" -#: elf32-arm.c:8774 +#: elf32-arm.c:10577 #, c-format msgid "" -msgstr "" +msgstr "" -#: elf32-arm.c:9013 elf32-i386.c:1236 elf32-s390.c:1006 elf32-xtensa.c:999 -#: elf64-s390.c:961 elf64-x86-64.c:1016 elfxx-sparc.c:1127 +#: elf32-arm.c:10824 elf32-i386.c:1322 elf32-s390.c:1000 elf32-xtensa.c:1009 +#: elf64-s390.c:960 elf64-x86-64.c:1105 elfxx-sparc.c:1370 msgid "%B: bad symbol index: %d" msgstr "%B: índice de símbolos erróneo: %d" -#: elf32-arm.c:10125 +#: elf32-arm.c:10946 elf64-x86-64.c:1265 elf64-x86-64.c:1434 elfxx-mips.c:7942 +msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" +msgstr "%B: no se puede usar la reubicación %s contra `%s' cuando se hace un objeto compartido; recompile con -fPIC" + +#: elf32-arm.c:11948 #, c-format msgid "Errors encountered processing file %s" msgstr "Se encontraron errores al procesar el fichero %s" -#: elf32-arm.c:11526 elf32-arm.c:11548 +#: elf32-arm.c:13334 +msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location" +msgstr "%B: error: el cabo de errores Cortex-A8 se aloja en una ubicación insegura" + +#. There's not much we can do apart from complain if this +#. happens. +#: elf32-arm.c:13361 +msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)" +msgstr "%B: error: el cabo de errores Cortex-A8 está fuera de rango (el fichero de entrada es demasiado grande)" + +#: elf32-arm.c:13455 elf32-arm.c:13477 msgid "%B: error: VFP11 veneer out of range" msgstr "%B: error: la chapa VFP11 está fuera de rango" -#: elf32-avr.c:1258 elf32-bfin.c:3222 elf32-cris.c:1546 elf32-fr30.c:624 -#: elf32-frv.c:4122 elf32-i860.c:1226 elf32-ip2k.c:1510 elf32-iq2000.c:699 -#: elf32-m32c.c:568 elf32-mep.c:549 elf32-msp430.c:501 elf32-mt.c:406 -#: elf32-openrisc.c:419 elf32-v850.c:1711 elf32-xstormy16.c:956 -#: elf64-mmix.c:1541 +#: elf32-arm.c:14002 +msgid "error: %B is already in final BE8 format" +msgstr "error: %B ya está en el formato BE8 final" + +#: elf32-arm.c:14078 +msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d" +msgstr "error: El objeto fuente %B tiene EABI versión %d, pero el objetivo %B tiene EABI versión %d" + +#: elf32-arm.c:14094 +msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" +msgstr "error: %B está compilado para APCS-%d mientras que el objetivo %B usa APCS-%d" + +#: elf32-arm.c:14119 +msgid "error: %B uses VFP instructions, whereas %B does not" +msgstr "error: %B utiliza instrucciones VFP, mientras que %B no" + +#: elf32-arm.c:14123 +msgid "error: %B uses FPA instructions, whereas %B does not" +msgstr "error: %B utiliza instrucciones FPA, mientras que %B no" + +#: elf32-arm.c:14133 +msgid "error: %B uses Maverick instructions, whereas %B does not" +msgstr "error: %B utiliza instrucciones Maverick, mientras que %B no" + +#: elf32-arm.c:14137 +msgid "error: %B does not use Maverick instructions, whereas %B does" +msgstr "error: %B no utiliza instrucciones Maverick, mientras que %B sí" + +#: elf32-arm.c:14156 +msgid "error: %B uses software FP, whereas %B uses hardware FP" +msgstr "error: %B utiliza FP de software, mientras que %B utiliza FP de hardware" + +#: elf32-arm.c:14160 +msgid "error: %B uses hardware FP, whereas %B uses software FP" +msgstr "error: %B utiliza FP de hardware, mientras que %B utiliza FP de software" + +#: elf32-avr.c:1271 elf32-bfin.c:3201 elf32-cris.c:2085 elf32-fr30.c:617 +#: elf32-frv.c:4119 elf32-i860.c:1219 elf32-ip2k.c:1479 elf32-iq2000.c:692 +#: elf32-m32c.c:561 elf32-mep.c:542 elf32-moxie.c:290 elf32-msp430.c:494 +#: elf32-mt.c:399 elf32-openrisc.c:412 elf32-v850.c:2151 elf32-xstormy16.c:949 +#: elf64-mmix.c:1530 msgid "internal error: dangerous relocation" msgstr "error interno: reubicación peligrosa" -#: elf32-avr.c:2396 elf32-hppa.c:605 elf32-m68hc1x.c:164 elf64-ppc.c:3983 +#: elf32-avr.c:2400 elf32-hppa.c:598 elf32-m68hc1x.c:166 elf64-ppc.c:4175 msgid "%B: cannot create stub entry %s" msgstr "%B: no se puede crear la entrada de cabo %s" -#: elf32-bfin.c:1585 +#: elf32-bfin.c:1575 msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'" msgstr "%B(%A+0x%lx): reubicación sin resolución contra el símbolo `%s'" -#: elf32-bfin.c:1618 elf32-i386.c:3623 elf32-m68k.c:3557 elf32-s390.c:3110 -#: elf64-s390.c:3071 elf64-x86-64.c:3278 +#: elf32-bfin.c:1608 elf32-i386.c:4123 elf32-m68k.c:4233 elf32-s390.c:3062 +#: elf64-s390.c:3037 elf64-x86-64.c:3759 msgid "%B(%A+0x%lx): reloc against `%s': error %d" msgstr "%B(%A+0x%lx): reubicación contra `%s': error %d" -#: elf32-bfin.c:2711 +#: elf32-bfin.c:2707 msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend" msgstr "%B: la reubicación en `%A+0x%x' referencía al símbolo `%s' con adición que no es cero" -#: elf32-bfin.c:2725 elf32-frv.c:2904 +#: elf32-bfin.c:2721 elf32-frv.c:2901 msgid "relocation references symbol not defined in the module" msgstr "la reubicación referencía un símbolo que no está definido en el módulo" -#: elf32-bfin.c:2822 +#: elf32-bfin.c:2818 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend" msgstr "R_BFIN_FUNCDESC referencía un símbolo dinámico con adición que no es cero" -#: elf32-bfin.c:2861 elf32-bfin.c:2987 elf32-frv.c:3641 elf32-frv.c:3762 +#: elf32-bfin.c:2859 elf32-bfin.c:2982 elf32-frv.c:3638 elf32-frv.c:3759 msgid "cannot emit fixups in read-only section" msgstr "no se pueden emitir composturas en la sección de sólo lectura" -#: elf32-bfin.c:2889 elf32-bfin.c:3036 elf32-frv.c:3672 elf32-frv.c:3806 +#: elf32-bfin.c:2890 elf32-bfin.c:3020 elf32-frv.c:3669 elf32-frv.c:3803 +#: elf32-lm32.c:1103 elf32-sh.c:5021 msgid "cannot emit dynamic relocations in read-only section" msgstr "no se pueden emitir reubicaciones dinámicas en la sección de sólo lectura" -#: elf32-bfin.c:2945 +#: elf32-bfin.c:2940 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "R_BFIN_FUNCDESC_VALUE referencía un símbolo dinámico con adición que no es cero" -#: elf32-bfin.c:3126 +#: elf32-bfin.c:3105 msgid "relocations between different segments are not supported" msgstr "no se admiten las reubicaciones entre segmentos diferentes" -#: elf32-bfin.c:3127 +#: elf32-bfin.c:3106 msgid "warning: relocation references a different segment" msgstr "aviso: la reubicación referencía un segmento diferente" -#: elf32-bfin.c:4791 elf32-frv.c:6404 +#: elf32-bfin.c:4957 elf32-frv.c:6406 msgid "%B: unsupported relocation type %i" msgstr "%B: no se admite el tipo de reubicación %i" -#: elf32-bfin.c:4944 elf32-frv.c:6812 +#: elf32-bfin.c:5111 elf32-frv.c:6814 #, c-format msgid "%s: cannot link non-fdpic object file into fdpic executable" msgstr "%s: no se puede enlazar el fichero objeto que no es fdpic en un ejecutable fdpic" -#: elf32-bfin.c:4948 elf32-frv.c:6816 +#: elf32-bfin.c:5115 elf32-frv.c:6818 #, c-format msgid "%s: cannot link fdpic object file into non-fdpic executable" msgstr "%s: no se puede enlazar el fichero objeto fdpic en un ejecutable que no es fdpic" -#: elf32-cris.c:1060 +#: elf32-cris.c:1172 msgid "%B, section %A: unresolvable relocation %s against symbol `%s'" msgstr "%B, sección %A: reubicación %s sin resolución contra el símbolo `%s'" -#: elf32-cris.c:1129 +#: elf32-cris.c:1234 msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'" msgstr "%B, sección %A: No hay PLT ni GOT para la reubicación %s contra el símbolo `%s'" -#: elf32-cris.c:1131 +#: elf32-cris.c:1236 msgid "%B, section %A: No PLT for relocation %s against symbol `%s'" msgstr "%B, sección %A: No hay PLT para la reubicación %s contra el símbolo `%s'" -#: elf32-cris.c:1137 elf32-cris.c:1269 +#: elf32-cris.c:1242 elf32-cris.c:1375 elf32-cris.c:1635 elf32-cris.c:1718 +#: elf32-cris.c:1871 msgid "[whose name is lost]" -msgstr "[cuyo nombre se pierde]" +msgstr "[cuyo nombre está perdido]" -#: elf32-cris.c:1255 +#: elf32-cris.c:1361 msgid "%B, section %A: relocation %s with non-zero addend %d against local symbol" msgstr "%B, sección %A: reubicación %s con adición %d que no es cero contra el símbolo local" -#: elf32-cris.c:1263 +#: elf32-cris.c:1369 elf32-cris.c:1712 elf32-cris.c:1865 msgid "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'" msgstr "%B, sección %A: reubicación %s con adición %d que no es cero contra el símbolo `%s'" -#: elf32-cris.c:1289 +#: elf32-cris.c:1395 msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'" msgstr "%B, sección %A: no se permite la reubicación %s para el símbolo global: `%s'" -#: elf32-cris.c:1305 +#: elf32-cris.c:1411 msgid "%B, section %A: relocation %s with no GOT created" msgstr "%B, sección %A: la reubicación %s sin GOT creado" -#: elf32-cris.c:1423 -msgid "%B: Internal inconsistency; no relocation section %s" -msgstr "%B: Inconsistencia interna; no se encuentra la sección de reubicación %s" +#. We shouldn't get here for GCC-emitted code. +#: elf32-cris.c:1626 +msgid "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?" +msgstr "%B, sección %A: la reubicación %s tiene una referencia sin definir a `%s', ¿tal vez una confusión en la declaración?" + +#: elf32-cris.c:1998 +msgid "%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?" +msgstr "%B, sección %A: no se permite la reubicación %s para el símbolo: `%s' el cual se define fuera del programa, ¿tal vez una confusión en la declaración?" + +#: elf32-cris.c:2051 +msgid "(too many global variables for -fpic: recompile with -fPIC)" +msgstr "(demasiadas variables globales para -fpic: recompile con -fPIC)" + +#: elf32-cris.c:2058 +msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)" +msgstr "(datos thread-local demasiado grandes para -fpic o -msmall-tls: recompile con -fPIC o -mno-small-tls)" -#: elf32-cris.c:2510 +#: elf32-cris.c:3248 msgid "" "%B, section %A:\n" " v10/v32 compatible object %s must not contain a PIC relocation" @@ -1267,7 +1348,15 @@ "%B, sección %A:\n" " el objeto %s compatible con v10/v32 no debe contener una reubicación PIC" -#: elf32-cris.c:2697 elf32-cris.c:2765 +#: elf32-cris.c:3353 +msgid "" +"%B, section %A:\n" +" relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC" +msgstr "" +"%B, sección %A:\n" +" la reubicación %s no es válida en un objeto compartido; es una confusión de opción típica, recompile con -fPIC" + +#: elf32-cris.c:3567 msgid "" "%B, section %A:\n" " relocation %s should not be used in a shared object; recompile with -fPIC" @@ -1275,129 +1364,138 @@ "%B, sección %A:\n" " la reubicación %s no se debe usar en un objeto compartido; recompile con -fPIC" -#: elf32-cris.c:3184 +#: elf32-cris.c:3992 +msgid "" +"%B, section `%A', to symbol `%s':\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%B, sección `%A', para el símbolo `%s':\n" +" la reubicación %s no se debe usar en un objeto compartido; recompile con -fPIC" + +#: elf32-cris.c:4111 msgid "Unexpected machine number" msgstr "Número de máquina inesperado" -#: elf32-cris.c:3238 +#: elf32-cris.c:4165 #, c-format msgid " [symbols have a _ prefix]" msgstr " [los símbolos tiene un prefijo _]" -#: elf32-cris.c:3241 +#: elf32-cris.c:4168 #, c-format msgid " [v10 and v32]" msgstr " [v10 y v32]" -#: elf32-cris.c:3244 +#: elf32-cris.c:4171 #, c-format msgid " [v32]" msgstr " [v32]" -#: elf32-cris.c:3289 +#: elf32-cris.c:4216 msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols" -msgstr "%B: utiliza símbolos con prefijo _, pero escribe el fichero con símbolos sin prefijo" +msgstr "%B: se usan símbolos con prefijo _, pero se escribe el fichero con símbolos sin prefijo" -#: elf32-cris.c:3290 +#: elf32-cris.c:4217 msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols" -msgstr "%B: utiliza símbolos sin prefijo, pero escribe el fichero con símbolos con prefijo _" +msgstr "%B: se usan símbolos sin prefijo, pero se escribe el fichero con símbolos con prefijo _" -#: elf32-cris.c:3309 +#: elf32-cris.c:4236 msgid "%B contains CRIS v32 code, incompatible with previous objects" msgstr "%B contiene código CRIS v32, incompatible con objetos previos" -#: elf32-cris.c:3311 +#: elf32-cris.c:4238 msgid "%B contains non-CRIS-v32 code, incompatible with previous objects" msgstr "%B contiene código que no es CRIS v32, incompatible con objetos previos" -#: elf32-frv.c:1507 elf32-frv.c:1656 +#: elf32-frv.c:1509 elf32-frv.c:1658 msgid "relocation requires zero addend" msgstr "la reubicación requiere una adición cero" -#: elf32-frv.c:2891 +#: elf32-frv.c:2888 msgid "%B(%A+0x%x): relocation to `%s+%x' may have caused the error above" msgstr "%B(%A+0x%x): la reubicación a `%s+%x' tal vez causó el error anterior" -#: elf32-frv.c:2980 +#: elf32-frv.c:2977 msgid "R_FRV_GETTLSOFF not applied to a call instruction" msgstr "no se aplicó R_FRV_GETTLSOFF a una instrucción call" -#: elf32-frv.c:3022 +#: elf32-frv.c:3019 msgid "R_FRV_GOTTLSDESC12 not applied to an lddi instruction" msgstr "no se aplicó R_FRV_GOTTLSDESC12 a una instrucción lddi" -#: elf32-frv.c:3093 +#: elf32-frv.c:3090 msgid "R_FRV_GOTTLSDESCHI not applied to a sethi instruction" msgstr "no se aplicó R_FRV_GOTTLSDESCHI a una instrucción sethi" -#: elf32-frv.c:3130 +#: elf32-frv.c:3127 msgid "R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction" msgstr "no se aplicó R_FRV_GOTTLSDESCLO a una instrucción setlo o setlos" -#: elf32-frv.c:3178 +#: elf32-frv.c:3175 msgid "R_FRV_TLSDESC_RELAX not applied to an ldd instruction" msgstr "no se aplicó R_FRV_GOTTLSDESC_RELAX a una instrucción ldd" -#: elf32-frv.c:3262 +#: elf32-frv.c:3259 msgid "R_FRV_GETTLSOFF_RELAX not applied to a calll instruction" msgstr "no se aplicó R_FRV_GETTLSOFF_RELAX a una instrucción calll" -#: elf32-frv.c:3317 +#: elf32-frv.c:3314 msgid "R_FRV_GOTTLSOFF12 not applied to an ldi instruction" msgstr "no se aplicó R_FRV_GOTTLSOFF12 a una instrucción ldi" -#: elf32-frv.c:3347 +#: elf32-frv.c:3344 msgid "R_FRV_GOTTLSOFFHI not applied to a sethi instruction" msgstr "no se aplicó R_FRV_GOTTLSOFFHI a una instrucción sethi" -#: elf32-frv.c:3376 +#: elf32-frv.c:3373 msgid "R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction" msgstr "no se aplicó R_FRV_GOTTLSOFFLO a una instrucción setlo o setlos" -#: elf32-frv.c:3407 +#: elf32-frv.c:3404 msgid "R_FRV_TLSOFF_RELAX not applied to an ld instruction" msgstr "no se aplicó R_FRV_TLSOFF_RELAX a una instrucción ld" -#: elf32-frv.c:3452 +#: elf32-frv.c:3449 msgid "R_FRV_TLSMOFFHI not applied to a sethi instruction" msgstr "no se aplicó R_FRV_TLSMOFFHI a una instrucción sethi" -#: elf32-frv.c:3479 +#: elf32-frv.c:3476 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction" msgstr "no se aplicó R_FRV_TLSMOFFLO a una instrucción setlo o setlos" -#: elf32-frv.c:3600 +#: elf32-frv.c:3597 msgid "R_FRV_FUNCDESC references dynamic symbol with nonzero addend" msgstr "R_FRV_FUNCDESC referencía un símbolo dinámico con adición que no es cero" -#: elf32-frv.c:3720 +#: elf32-frv.c:3717 msgid "R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "R_FRV_FUNCDESC_VALUE referencía un símbolo dinámico con adición que no es cero" -#: elf32-frv.c:3977 elf32-frv.c:4133 +#: elf32-frv.c:3974 elf32-frv.c:4130 msgid "%B(%A+0x%lx): reloc against `%s': %s" msgstr "%B(%A+0x%lx): reubicación contra `%s': %s" -#: elf32-frv.c:3979 elf32-frv.c:3983 +#: elf32-frv.c:3976 elf32-frv.c:3980 msgid "relocation references a different segment" msgstr "la reubicación referencía un segmento diferente" -#: elf32-frv.c:6726 +#: elf32-frv.c:6728 #, c-format msgid "%s: compiled with %s and linked with modules that use non-pic relocations" msgstr "%s: compilado con %s y enlazado con módulos que usan reubicaciones que no son pic" -#: elf32-frv.c:6779 elf32-iq2000.c:852 elf32-m32c.c:814 +#: elf32-frv.c:6781 elf32-iq2000.c:845 elf32-m32c.c:807 #, c-format msgid "%s: compiled with %s and linked with modules compiled with %s" msgstr "%s: compilado con %s y enlazado con módulos compilados con %s" -#: elf32-frv.c:6791 +#: elf32-frv.c:6793 #, c-format msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%s: usa campos e_flags desconocidos (0x%lx) diferentes a aquéllos de los módulos previos (0x%lx)" -#: elf32-frv.c:6841 elf32-iq2000.c:889 elf32-m32c.c:850 elf32-mt.c:583 +#: elf32-frv.c:6843 elf32-iq2000.c:882 elf32-m32c.c:843 elf32-mt.c:576 +#: elf32-rx.c:2925 #, c-format msgid "private flags = 0x%lx:" msgstr "opciones privadas = 0x%lx:" @@ -1406,387 +1504,482 @@ msgid "%B: Relocations in generic ELF (EM: %d)" msgstr "%B: Reubicaciones en ELF genérico (EM: %d)" -#: elf32-hppa.c:854 elf32-hppa.c:3600 +#: elf32-hppa.c:850 elf32-hppa.c:3610 msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections" msgstr "%B(%A+0x%lx): no se puede alcanzar %s, recompile con -ffuntion-sections" -#: elf32-hppa.c:1263 +#: elf32-hppa.c:1284 msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC" msgstr "%B: no se puede usar la reubicación %s cuando se hace un objeto compartido; recompile con -fPIC" -#: elf32-hppa.c:1518 -#, 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:2810 +#: elf32-hppa.c:2803 msgid "%B: duplicate export stub %s" msgstr "%B: cabo de exportación %s duplicado" -#: elf32-hppa.c:3436 +#: elf32-hppa.c:3449 msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link" msgstr "%B(%A+0x%lx): la compostura %s para la insn 0x%x no se admite en un enlazado que no es compartido" -#: elf32-hppa.c:4290 +#: elf32-hppa.c:4296 msgid "%B(%A+0x%lx): cannot handle %s for %s" msgstr "%B(%A+0x%lx): no se puede manejar %s para %s" -#: elf32-hppa.c:4597 +#: elf32-hppa.c:4608 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:362 elf32-ppc.c:1616 elf32-s390.c:379 elf64-ppc.c:2153 -#: elf64-s390.c:403 elf64-x86-64.c:222 +#. Unknown relocation. +#: elf32-i386.c:371 elf32-m68k.c:383 elf32-ppc.c:1674 elf32-s390.c:379 +#: elf32-tic6x.c:1563 elf64-ppc.c:2284 elf64-s390.c:403 elf64-x86-64.c:234 msgid "%B: invalid relocation type %d" msgstr "%B: tipo de reubicación %d inválido" -#: elf32-i386.c:1183 elf64-x86-64.c:964 +#: elf32-i386.c:1265 elf64-x86-64.c:1049 msgid "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed" msgstr "%B: falló la transición TLS de %s para %s contra `%s' en 0x%lx en la sección `%A'" -#: elf32-i386.c:1364 elf32-s390.c:1188 elf32-sh.c:5098 elf32-xtensa.c:1162 -#: elf64-s390.c:1152 elfxx-sparc.c:1263 -msgid "%B: `%s' accessed both as normal and thread local symbol" -msgstr "%B: se accesó `%s' como un símbolo normal y un símbolo local de hilo" +#: elf32-i386.c:1408 elf32-i386.c:3068 elf64-x86-64.c:1194 elf64-x86-64.c:2780 +#: elfxx-sparc.c:3076 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" +msgstr "%B: la reubicación %s contra el símbolo STT_GNU_IFUNC `%s' no es manejada por %s" -#: elf32-i386.c:1479 elf32-s390.c:1297 elf64-ppc.c:5046 elf64-s390.c:1264 -#: elf64-x86-64.c:1299 -msgid "%B: bad relocation section name `%s'" -msgstr "%B: nombre de sección de reubicación `%s' erróneo" +#: elf32-i386.c:1570 elf32-s390.c:1182 elf32-sh.c:6367 elf32-xtensa.c:1182 +#: elf64-s390.c:1151 elfxx-sparc.c:1547 +msgid "%B: `%s' accessed both as normal and thread local symbol" +msgstr "%B: se accedió `%s' como un símbolo normal y un símbolo local de hilo" -#: elf32-i386.c:2598 +#: elf32-i386.c:2910 msgid "%B: unrecognized relocation (0x%x) in section `%A'" msgstr "%B: no se reconoce la dirección de reubicación (0x%lx) en la sección `%A'" -#: elf32-i386.c:2822 elf64-x86-64.c:2660 +#: elf32-i386.c:3317 elf64-x86-64.c:3174 msgid "hidden symbol" msgstr "símbolo oculto" -#: elf32-i386.c:2825 elf64-x86-64.c:2663 +#: elf32-i386.c:3320 elf64-x86-64.c:3177 msgid "internal symbol" msgstr "símbolo interno" -#: elf32-i386.c:2828 elf64-x86-64.c:2666 +#: elf32-i386.c:3323 elf64-x86-64.c:3180 msgid "protected symbol" -msgstr "símbolos protegido" +msgstr "símbolo protegido" -#: elf32-i386.c:2831 elf64-x86-64.c:2669 +#: elf32-i386.c:3326 elf64-x86-64.c:3183 msgid "symbol" msgstr "símbolo" -#: elf32-i386.c:2836 +#: elf32-i386.c:3331 msgid "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object" msgstr "%B: no se puede usar la reubicación R_386_GOTOFF contra %s indefinida `%s' cuando se hace un objeto compartido" -#: elf32-i386.c:2846 +#: elf32-i386.c:3341 msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object" msgstr "%B: no se puede usar la reubicación R_386_GOTOFF contra la función protegida `%s' cuando se hace un objeto compartido" -#: elf32-ip2k.c:868 elf32-ip2k.c:874 elf32-ip2k.c:941 elf32-ip2k.c:947 +#: elf32-i386.c:4633 elf64-x86-64.c:4206 +#, c-format +msgid "discarded output section: `%A'" +msgstr "se descarta la sección de salida: `%A'" + +#: elf32-ip2k.c:857 elf32-ip2k.c:863 elf32-ip2k.c:930 elf32-ip2k.c:936 msgid "ip2k relaxer: switch table without complete matching relocation information." msgstr "relajador ip2k: tabla switch sin información completa de reubicación de coincidencias." -#: elf32-ip2k.c:891 elf32-ip2k.c:974 +#: elf32-ip2k.c:880 elf32-ip2k.c:963 msgid "ip2k relaxer: switch table header corrupt." msgstr "relajador ip2k: encabezado de tabla switch corrupto." -#: elf32-ip2k.c:1316 +#: elf32-ip2k.c:1292 #, c-format msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)." -msgstr "enlazador ip2k: instrucción de página faltante en 0x%08lx (dest = 0x%08lx)." +msgstr "enlazador ip2k: falta la instrucción de página en 0x%08lx (dest = 0x%08lx)." -#: elf32-ip2k.c:1332 +#: elf32-ip2k.c:1308 #, c-format msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)." msgstr "enlazador ip2k: instrucción de página redundante en 0x%08lx (dest = 0x%08lx)." #. Only if it's not an unresolved symbol. -#: elf32-ip2k.c:1506 +#: elf32-ip2k.c:1475 msgid "unsupported relocation between data/insn address spaces" msgstr "no se admite la reubicación entre espacios de direcciones datos/insn" -#: elf32-iq2000.c:865 elf32-m32c.c:826 +#: elf32-iq2000.c:858 elf32-m32c.c:819 #, 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-lm32.c:706 +msgid "global pointer relative relocation when _gp not defined" +msgstr "reubicación relativa al puntero global cuando _gp no está definido" + +#: elf32-lm32.c:761 +msgid "global pointer relative address out of range" +msgstr "dirección relativa al puntero global fuera de rango" + +#: elf32-lm32.c:1057 +msgid "internal error: addend should be zero for R_LM32_16_GOT" +msgstr "error interno: addend debe ser cero para R_LM32_16_GOT" + #: elf32-m32r.c:1453 msgid "SDA relocation when _SDA_BASE_ not defined" msgstr "reubicación SDA cuando _SDA_BASE_ no está definido" -#: elf32-m32r.c:3061 +#: elf32-m32r.c:3048 msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)" msgstr "%B: El objetivo (%s) de una reubicación %s está en la sección errónea (%A)" -#: elf32-m32r.c:3589 +#: elf32-m32r.c:3576 msgid "%B: Instruction set mismatch with previous modules" -msgstr "%B: Conjunto de instrucciones no coincidente con módulos previos" +msgstr "%B: El conjunto de instrucciones no coincide con módulos previos" -#: elf32-m32r.c:3610 +#: elf32-m32r.c:3597 #, c-format msgid "private flags = %lx" msgstr "opciones privadas = %lx" -#: elf32-m32r.c:3615 +#: elf32-m32r.c:3602 #, c-format msgid ": m32r instructions" msgstr ": instrucciones m32r" -#: elf32-m32r.c:3616 +#: elf32-m32r.c:3603 #, c-format msgid ": m32rx instructions" msgstr ": instrucciones m32rx" -#: elf32-m32r.c:3617 +#: elf32-m32r.c:3604 #, c-format msgid ": m32r2 instructions" msgstr ": instrucciones m32r2" -#: elf32-m68hc1x.c:1047 +#: elf32-m68hc1x.c:1050 #, c-format msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution" msgstr "El referenciar al símbolo far `%s' usando una reubicación incorrecta puede resultar en una ejecución incorrecta" -#: elf32-m68hc1x.c:1070 +#: elf32-m68hc1x.c:1073 #, c-format msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)" msgstr "la dirección almacenada [%lx:%04lx] (%lx) no está en el mismo banco que la dirección almacenada actual [%lx:%04lx] (%lx)" -#: elf32-m68hc1x.c:1089 +#: elf32-m68hc1x.c:1092 #, c-format msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx" msgstr "referencia a una dirección almacenada [%lx:%04lx] en el espacio normal de direcciones en %04lx" -#: elf32-m68hc1x.c:1222 +#: elf32-m68hc1x.c:1225 msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers" msgstr "%B: se enlazan ficheros compilados con enteros de 16-bit (-mshort) y otros con enteros de 32-bit" -#: elf32-m68hc1x.c:1229 +#: elf32-m68hc1x.c:1232 msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double" msgstr "%B: se enlazan ficheros compilados con dobles de 32-bit (-fshort-double) y otros con dobles de 64-bit" -#: elf32-m68hc1x.c:1238 +#: elf32-m68hc1x.c:1241 msgid "%B: linking files compiled for HCS12 with others compiled for HC12" msgstr "%B: se enlazan ficheros compilados para HCS12, con otros compilados para HC12" -#: elf32-m68hc1x.c:1254 elf32-ppc.c:4046 elf64-sparc.c:697 elfxx-mips.c:12561 +#: elf32-m68hc1x.c:1257 elf32-ppc.c:4232 elf64-sparc.c:703 elfxx-mips.c:12704 msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%B: usa campos de e_flags diferentes (0x%lx) que los módulos previos (0x%lx)" -#: elf32-m68hc1x.c:1282 +#: elf32-m68hc1x.c:1285 #, c-format msgid "[abi=32-bit int, " msgstr "[abi=int de 32-bit, " -#: elf32-m68hc1x.c:1284 +#: elf32-m68hc1x.c:1287 #, c-format msgid "[abi=16-bit int, " msgstr "[abi=int de 16-bit, " -#: elf32-m68hc1x.c:1287 +#: elf32-m68hc1x.c:1290 #, c-format msgid "64-bit double, " msgstr "doble de 64-bit, " -#: elf32-m68hc1x.c:1289 +#: elf32-m68hc1x.c:1292 #, c-format msgid "32-bit double, " msgstr "doble de 32-bit, " -#: elf32-m68hc1x.c:1292 +#: elf32-m68hc1x.c:1295 #, c-format msgid "cpu=HC11]" msgstr "cpu=HC11]" -#: elf32-m68hc1x.c:1294 +#: elf32-m68hc1x.c:1297 #, c-format msgid "cpu=HCS12]" msgstr "cpu=HCS12]" -#: elf32-m68hc1x.c:1296 +#: elf32-m68hc1x.c:1299 #, c-format msgid "cpu=HC12]" msgstr "cpu=HC12]" -#: elf32-m68hc1x.c:1299 +#: elf32-m68hc1x.c:1302 #, c-format msgid " [memory=bank-model]" msgstr " [memoria=modelo de bancos]" -#: elf32-m68hc1x.c:1301 +#: elf32-m68hc1x.c:1304 #, c-format msgid " [memory=flat]" msgstr " [memoria=plana]" -#: elf32-m68k.c:789 elf32-m68k.c:790 +#: elf32-m68k.c:1250 elf32-m68k.c:1251 vms-alpha.c:7292 vms-alpha.c:7307 msgid "unknown" msgstr "desconocido" -#: elf32-m68k.c:1216 -msgid "%B: GOT overflow: Number of R_68K_GOT8O relocations > %d" -msgstr "%B: desbordamiento de GOT: Número de reubicaciones R_68K_GOT80 > %d" - -#: elf32-m68k.c:1221 -msgid "%B: GOT overflow: Number of R_68K_GOT8O and R_68K_GOT16O relocations > %d" -msgstr "%B desbordamiento de GOT: Número de reubicaciones R_68K_GOT80 Y R_68K_GOT160 > %d" +#: elf32-m68k.c:1714 +msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d" +msgstr "%B: desbordamiento de GOT: Número de reubicaciones con desplazamiento de 8-bit > %d" + +#: elf32-m68k.c:1720 +msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d" +msgstr "%B: desbordamiento de GOT: Número de reubicaciones con desplazamiento de 8 o 16-bit > %d" + +#: elf32-m68k.c:3959 +msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object" +msgstr "%B(%A+0x%lx): la reubicación R_68K_TLS_LE32 no se permite en objetos compartidos" #: elf32-mcore.c:99 elf32-mcore.c:442 msgid "%B: Relocation %s (%d) is not currently supported.\n" -msgstr "%B: La reubicación %s (%d) actualmente no se admite.\n" +msgstr "%B: Actualmente no se admite la reubicación %s (%d).\n" #: elf32-mcore.c:428 msgid "%B: Unknown relocation type %d\n" msgstr "%B: Tipo de reubicación %d desconocido\n" -#: elf32-mep.c:654 +#: elf32-mep.c:647 msgid "%B and %B are for different cores" msgstr "%B y %B son para núcleos diferentes" -#: elf32-mep.c:671 +#: elf32-mep.c:664 msgid "%B and %B are for different configurations" msgstr "%B y %B son para configuraciones diferentes" -#: elf32-mep.c:709 +#: elf32-mep.c:701 #, c-format msgid "private flags = 0x%lx" msgstr "opciones privadas = 0x%lx" -#: elf32-mips.c:1045 elf64-mips.c:2056 elfn32-mips.c:1888 +#: elf32-microblaze.c:742 +#, c-format +msgid "%s: unknown relocation type %d" +msgstr "%s: tipo de reubicación %d desconocido" + +#: elf32-microblaze.c:867 elf32-microblaze.c:912 +#, 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-microblaze.c:1155 elfxx-sparc.c:3450 +msgid "%B: probably compiled without -fPIC?" +msgstr "%B: ¿Compilado probablemente sin -fPIC?" + +#: elf32-microblaze.c:2074 elflink.c:12601 +msgid "%B: bad relocation section name `%s'" +msgstr "%B: nombre de sección de reubicación `%s' erróneo" + +#: elf32-mips.c:1045 elf64-mips.c:2084 elfn32-mips.c:1888 msgid "literal relocation occurs for an external symbol" msgstr "la reubicación literal sucede para un símbolo externo" -#: elf32-mips.c:1085 elf32-score.c:484 elf64-mips.c:2099 elfn32-mips.c:1929 +#: elf32-mips.c:1085 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:2127 +#: elfn32-mips.c:1929 msgid "32bits gp relative relocation occurs for an external symbol" -msgstr "la reubicación gp relativa de 32bits sucede para un símbolo externo" +msgstr "la reubicación relativa a gp de 32bits sucede para un símbolo externo" -#: elf32-ppc.c:1681 +#: elf32-ppc.c:1739 #, c-format msgid "generic linker can't handle %s" msgstr "el enlazador genérico no puede manejar %s" -#: elf32-ppc.c:2161 -msgid "corrupt or empty %s section in %B" -msgstr "sección %s corrupta o vacía en %B" +#: elf32-ppc.c:2180 +msgid "corrupt %s section in %B" +msgstr "sección %s corrupta en %B" -#: elf32-ppc.c:2168 +#: elf32-ppc.c:2199 msgid "unable to read in %s section from %B" msgstr "no se puede leer en la sección %s desde %B" -#: elf32-ppc.c:2174 -msgid "corrupt %s section in %B" -msgstr "sección %s corrupta en %B" - -#: elf32-ppc.c:2217 +#: elf32-ppc.c:2240 msgid "warning: unable to set size of %s section in %B" msgstr "aviso: no se puede establecer el tamaño de la sección %s en %B" -#: elf32-ppc.c:2265 +#: elf32-ppc.c:2290 msgid "failed to allocate space for new APUinfo section." msgstr "no se puede reservar espacio para la nueva sección APUinfo." -#: elf32-ppc.c:2284 +#: elf32-ppc.c:2309 msgid "failed to compute new APUinfo section." msgstr "no se puede calcular la nueva sección APUinfo." -#: elf32-ppc.c:2287 +#: elf32-ppc.c:2312 msgid "failed to install new APUinfo section." msgstr "no se puede instalar la nueva sección APUinfo." -#: elf32-ppc.c:3263 +#: elf32-ppc.c:3358 msgid "%B: relocation %s cannot be used when making a shared object" msgstr "%B: no se puede usar la reubicación %s cuando se hace un objeto compartido" #. It does not make sense to have a procedure linkage #. table entry for a local symbol. -#: elf32-ppc.c:3534 +#: elf32-ppc.c:3702 msgid "%B(%A+0x%lx): %s reloc against local symbol" msgstr "%B(%A+0x%lx): reubicación %s contra un símbolo local" -#: elf32-ppc.c:3885 elf32-ppc.c:3900 elfxx-mips.c:12268 elfxx-mips.c:12294 -#: elfxx-mips.c:12316 elfxx-mips.c:12342 +#: elf32-ppc.c:4044 elf32-ppc.c:4059 elfxx-mips.c:12411 elfxx-mips.c:12437 +#: elfxx-mips.c:12459 elfxx-mips.c:12485 msgid "Warning: %B uses hard float, %B uses soft float" msgstr "Aviso: %B usa coma flotante hard, %B usa coma flotante soft" -#: elf32-ppc.c:3888 elf32-ppc.c:3892 +#: elf32-ppc.c:4047 elf32-ppc.c:4051 msgid "Warning: %B uses double-precision hard float, %B uses single-precision hard float" msgstr "Aviso: %B usa coma flotante hard de doble precisión, %B usa coma flotante hard de precisión simple" -#: elf32-ppc.c:3896 +#: elf32-ppc.c:4055 msgid "Warning: %B uses soft float, %B uses single-precision hard float" msgstr "Aviso: %B usa coma flotante soft, %B usa coma flotante hard de precisión simple" -#: elf32-ppc.c:3903 elf32-ppc.c:3907 elfxx-mips.c:12248 elfxx-mips.c:12252 +#: elf32-ppc.c:4062 elf32-ppc.c:4066 elfxx-mips.c:12391 elfxx-mips.c:12395 msgid "Warning: %B uses unknown floating point ABI %d" msgstr "Aviso: %B usa la ABI de coma flotante desconocida %d" -#: elf32-ppc.c:3949 elf32-ppc.c:3953 +#: elf32-ppc.c:4108 elf32-ppc.c:4112 msgid "Warning: %B uses unknown vector ABI %d" msgstr "Aviso: %B usa la ABI de vector desconocida %d" -#: elf32-ppc.c:3957 +#: elf32-ppc.c:4116 msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\"" msgstr "Aviso: %B usa la ABI de vector \"%s\", %B usa \"%s\"" -#: elf32-ppc.c:4011 +#: elf32-ppc.c:4133 elf32-ppc.c:4136 +msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory" +msgstr "Aviso: %B usa r3/r4 para devoluciones de estructura small, %B usa memoria" + +#: elf32-ppc.c:4139 elf32-ppc.c:4143 +msgid "Warning: %B uses unknown small structure return convention %d" +msgstr "Aviso: %B usa la convención de devolución de estructura small %d" + +#: elf32-ppc.c:4197 msgid "%B: compiled with -mrelocatable and linked with modules compiled normally" msgstr "%B: compilado con -mrelocatable y enlazado con módulos compilados de forma normal" -#: elf32-ppc.c:4019 +#: elf32-ppc.c:4205 msgid "%B: compiled normally and linked with modules compiled with -mrelocatable" msgstr "%B: compilado de forma normal y enlazado con módulos compilados con -mrelocatable" -#: elf32-ppc.c:4105 +#: elf32-ppc.c:4293 msgid "Using bss-plt due to %B" msgstr "Se usa bss-plt debido a %B" -#: elf32-ppc.c:6418 elf64-ppc.c:10881 +#: elf32-ppc.c:7192 elf64-ppc.c:12307 msgid "%B: unknown relocation type %d for symbol %s" msgstr "%B: tipo de reubicación %d desconocido para el símbolo %s" -#: elf32-ppc.c:6668 +#: elf32-ppc.c:7453 msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'" msgstr "%B(%A+0x%lx): adición que no es cero en la reubicación %s contra `%s'" -#: elf32-ppc.c:7024 elf32-ppc.c:7050 elf32-ppc.c:7109 +#: elf32-ppc.c:7651 elf64-ppc.c:12812 +msgid "%B(%A+0x%lx): relocation %s for indirect function %s unsupported" +msgstr "%B(%A+0x%lx): no se admite la reubicación %s para la función indirecta %s" + +#: elf32-ppc.c:7881 elf32-ppc.c:7911 elf32-ppc.c:7958 msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)" msgstr "%B: el objetivo (%s) de una reubicación %s está en la sección de salida errónea (%s)" -#: elf32-ppc.c:7164 +#: elf32-ppc.c:8030 msgid "%B: relocation %s is not yet supported for symbol %s." msgstr "%B: la reubicación %s aún no se admite para el símbolo %s." -#: elf32-ppc.c:7272 elf64-ppc.c:11575 +#: elf32-ppc.c:8138 elf64-ppc.c:13162 msgid "%B(%A+0x%lx): %s reloc against `%s': error %d" msgstr "%B(%A+0x%lx): reubicación %s contra `%s': error %d" -#: elf32-s390.c:2246 elf64-s390.c:2220 +#: elf32-ppc.c:8629 +#, c-format +msgid "%s not defined in linker created %s" +msgstr "no se definió %s en el %s creado por el enlazador" + +#: elf32-rx.c:544 +msgid "%B:%A: Warning: deprecated Red Hat reloc " +msgstr "%B:%A: Aviso: reubicación Red Hat obsoleta" + +#: elf32-rx.c:1086 +msgid "Warning: RX_SYM reloc with an unknown symbol" +msgstr "Aviso: reubicación RX_SYM con un símbolo desconocido" + +#: elf32-rx.c:1251 +msgid "%B(%A): error: call to undefined function '%s'" +msgstr "%B(%A): error: llamada a la función sin definir '%s'" + +#: elf32-rx.c:1265 +msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area" +msgstr "%B(%A): aviso: acceso sin alinear al símbolo '%s' en el área de datos small" + +#: elf32-rx.c:1269 +msgid "%B(%A): internal error: out of range error" +msgstr "%B(%A): error interno: error fuera de rango" + +#: elf32-rx.c:1273 +msgid "%B(%A): internal error: unsupported relocation error" +msgstr "%B(%A): error interno: no se admite el error de reubicación" + +#: elf32-rx.c:1277 +msgid "%B(%A): internal error: dangerous relocation" +msgstr "%B(%A): error interno: reubicación peligrosa" + +#: elf32-rx.c:1281 +msgid "%B(%A): internal error: unknown error" +msgstr "%B(%A): error interno: error desconocido" + +#: elf32-rx.c:2928 +#, c-format +msgid " [64-bit doubles]" +msgstr " [dobles de 64-bit]" + +#: elf32-rx.c:2930 +#, c-format +msgid " [dsp]" +msgstr " [dsp]" + +#: elf32-s390.c:2209 elf64-s390.c:2196 msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s" msgstr "%B(%A+0x%lx): instrucción inválida para la reubicación TLS %s" -#: elf32-score.c:1415 elfxx-mips.c:3273 +#: elf32-score.c:1522 elf32-score7.c:1382 elfxx-mips.c:3323 msgid "not enough GOT space for local GOT entries" msgstr "no hay suficiente espacio GOT para entradas GOT locales" -#: elf32-score.c:2545 +#: elf32-score.c:2744 +msgid "address not word align" +msgstr "la dirección no está alineada a word" + +#: elf32-score.c:2829 elf32-score7.c:2634 #, c-format msgid "%s: Malformed reloc detected for section %s" msgstr "%s: Se detectó una reubicación malformada para la sección %s" -#: elf32-score.c:2596 +#: elf32-score.c:2880 elf32-score7.c:2685 msgid "%B: CALL15 reloc at 0x%lx not against global symbol" msgstr "%B: la reubicación CALL15 en 0x%lx no es contra un símbolo global" -#: elf32-score.c:3753 +#: elf32-score.c:3999 elf32-score7.c:3806 #, c-format msgid " [pic]" msgstr " [pic]" -#: elf32-score.c:3757 +#: elf32-score.c:4003 elf32-score7.c:3810 #, c-format msgid " [fix dep]" msgstr " [fix dep]" -#: elf32-score.c:3799 +#: elf32-score.c:4045 elf32-score7.c:3852 msgid "%B: warning: linking PIC files with non-PIC files" msgstr "%B: aviso: se enlazan ficheros PIC con ficheros que no son PIC" @@ -1796,111 +1989,141 @@ #: elf32-sh-symbian.c:383 msgid "%B: Unrecognised .directive command: %s" -msgstr "%B: Orden .directive no reconocida: %s" +msgstr "%B: No se reconoce la orden .directive: %s" -#: elf32-sh-symbian.c:504 +#: elf32-sh-symbian.c:503 msgid "%B: Failed to add renamed symbol %s" msgstr "%B: Falló al agregar el símbolo renombrado %s" -#: elf32-sh.c:533 +#: elf32-sh.c:568 msgid "%B: 0x%lx: warning: bad R_SH_USES offset" msgstr "%B: 0x%lx: aviso: desplazamiento R_SH_USES erróneo" -#: elf32-sh.c:545 +#: elf32-sh.c:580 msgid "%B: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" msgstr "%B: 0x%lx: aviso: R_SH_USES señala al insn 0x%x que no se reconoce" -#: elf32-sh.c:562 +#: elf32-sh.c:597 msgid "%B: 0x%lx: warning: bad R_SH_USES load offset" msgstr "%B: 0x%lx: aviso: desplazamiento de carga R_SH_USES erróneo" -#: elf32-sh.c:577 +#: elf32-sh.c:612 msgid "%B: 0x%lx: warning: could not find expected reloc" msgstr "%B: 0x%lx: aviso: no se puede encontrar la reubicación esperada" -#: elf32-sh.c:605 +#: elf32-sh.c:640 msgid "%B: 0x%lx: warning: symbol in unexpected section" msgstr "%B: 0x%lx: aviso: símbolo en una sección inesperada" -#: elf32-sh.c:731 +#: elf32-sh.c:766 msgid "%B: 0x%lx: warning: could not find expected COUNT reloc" msgstr "%B: 0x%lx: aviso: no se puede encontrar la reubicación COUNT esperada" -#: elf32-sh.c:740 +#: elf32-sh.c:775 msgid "%B: 0x%lx: warning: bad count" msgstr "%B: 0x%lx: aviso: cuenta errónea" -#: elf32-sh.c:1144 elf32-sh.c:1514 +#: elf32-sh.c:1179 elf32-sh.c:1549 msgid "%B: 0x%lx: fatal: reloc overflow while relaxing" msgstr "%B: 0x%lx: fatal: desbordamiento de reubicación durante la relajación" -#: elf32-sh.c:3279 elf64-sh64.c:1526 +#: elf32-sh.c:4057 elf64-sh64.c:1514 msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" msgstr "No se maneja un STO_SH5_ISA32 inesperado en un símbolo local" -#: elf32-sh.c:3516 +#: elf32-sh.c:4304 msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation" msgstr "%B: 0x%lx: fatal: objetivo de ramificación sin alineación para la reubicación de soporte de relajamiento" -#: elf32-sh.c:3549 elf32-sh.c:3564 +#: elf32-sh.c:4337 elf32-sh.c:4352 msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx" msgstr "%B: 0x%lx: fatal: reubicación %s sin alineación 0x%lx" -#: elf32-sh.c:3578 +#: elf32-sh.c:4366 msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32" msgstr "%B: 0x%lx: fatal: la reubicación R_SH_PSHA %d no está en el rango -32..32" -#: elf32-sh.c:3592 +#: elf32-sh.c:4380 msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32" msgstr "%B: 0x%lx: fatal: la reubicación R_SH_PSHL %d no está en el rango -32..32" -#: elf32-sh.c:5310 elf64-alpha.c:4552 +#: elf32-sh.c:4524 elf32-sh.c:4994 +msgid "%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section" +msgstr "%B(%A+0x%lx): no se pueden emitir composturas para `%s' en la sección de sólo lectura" + +#: elf32-sh.c:5101 +msgid "%B(%A+0x%lx): %s relocation against external symbol \"%s\"" +msgstr "%B(%A+0x%lx): reubicación %s contra el símbolo externo \"%s\"" + +#: elf32-sh.c:5574 +#, c-format +msgid "%X%C: relocation to \"%s\" references a different segment\n" +msgstr "%X%C: la reubicación de \"%s\" referencía un segmento diferente\n" + +#: elf32-sh.c:5580 +#, c-format +msgid "%C: warning: relocation to \"%s\" references a different segment\n" +msgstr "%C: aviso: la reubicación de \"%s\" referencía un segmento diferente\n" + +#: elf32-sh.c:6358 elf32-sh.c:6441 +msgid "%B: `%s' accessed both as normal and FDPIC symbol" +msgstr "%B: se accedió `%s' como un símbolo normal y un símbolo FDPIC" + +#: elf32-sh.c:6363 elf32-sh.c:6445 +msgid "%B: `%s' accessed both as FDPIC and thread local symbol" +msgstr "%B: se accedió `%s' como un símbolo FDPIC y un símbolo local de hilo" + +#: elf32-sh.c:6393 +msgid "%B: Function descriptor relocation with non-zero addend" +msgstr "%B: Reubicación de descriptor de función con adición que no es cero" + +#: elf32-sh.c:6629 elf64-alpha.c:4560 msgid "%B: TLS local exec code cannot be linked into shared objects" msgstr "%B: el código de ejecución local TLS no se puede enlazar en objetos compartidos" -#: elf32-sh64.c:222 elf64-sh64.c:2345 +#: elf32-sh64.c:223 elf64-sh64.c:2314 #, c-format msgid "%s: compiled as 32-bit object and %s is 64-bit" msgstr "%s: compilado como un objeto de 32-bit y %s es de 64-bit" -#: elf32-sh64.c:225 elf64-sh64.c:2348 +#: elf32-sh64.c:226 elf64-sh64.c:2317 #, c-format msgid "%s: compiled as 64-bit object and %s is 32-bit" msgstr "%s: compilado como un objeto de 64-bit y %s es de 32-bit" -#: elf32-sh64.c:227 elf64-sh64.c:2350 +#: elf32-sh64.c:228 elf64-sh64.c:2319 #, c-format msgid "%s: object size does not match that of target %s" msgstr "%s: el tamaño del objeto no coincide con el tamaño del objetivo %s" -#: elf32-sh64.c:450 elf64-sh64.c:2888 +#: elf32-sh64.c:451 elf64-sh64.c:2833 #, c-format msgid "%s: encountered datalabel symbol in input" msgstr "%s: se encontró un símbolo datalabel en la entrada" -#: elf32-sh64.c:527 +#: elf32-sh64.c:528 msgid "PTB mismatch: a SHmedia address (bit 0 == 1)" msgstr "No coincide PTB: una dirección SHmedia (bit 0 == 1)" -#: elf32-sh64.c:530 +#: elf32-sh64.c:531 msgid "PTA mismatch: a SHcompact address (bit 0 == 0)" msgstr "No coincide PTA: una dirección SHcompact (bit 0 == 0)" -#: elf32-sh64.c:548 +#: elf32-sh64.c:549 #, c-format msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16" -msgstr "%s: error de GAS: instrucción PTB inesperada con R_SH_PT_16" +msgstr "%s: error de GAS: insn PTB inesperada con R_SH_PT_16" -#: elf32-sh64.c:597 +#: elf32-sh64.c:598 msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n" msgstr "%B: error: tipo de reubicación %d sin alinear en %08x reubicación %p\n" -#: elf32-sh64.c:673 +#: elf32-sh64.c:674 #, c-format msgid "%s: could not write out added .cranges entries" msgstr "%s: no se pueden escribir las entradas .cranges agregadas" -#: elf32-sh64.c:733 +#: elf32-sh64.c:734 #, c-format msgid "%s: could not write out sorted .cranges entries" msgstr "%s: no se pueden escribir las entradas .cranges ordenadas" @@ -1913,103 +2136,119 @@ msgid "%B: linking little endian files with big endian files" msgstr "%B: se enlazan ficheros little endian con ficheros big endian" -#: elf32-spu.c:607 +#: elf32-spu.c:719 +msgid "%X%P: overlay section %A does not start on a cache line.\n" +msgstr "%X%P: la sección de sobreescritura %A no inicia en una línea de caché.\n" + +#: elf32-spu.c:727 +msgid "%X%P: overlay section %A is larger than a cache line.\n" +msgstr "%X%P: la sección de sobreescritura %A es más grande que una línea de caché.\n" + +#: elf32-spu.c:747 +msgid "%X%P: overlay section %A is not in cache area.\n" +msgstr "%X%P: la sección de sobreescritura %A no está en el área de caché.\n" + +#: elf32-spu.c:787 msgid "%X%P: overlay sections %A and %A do not start at the same address.\n" msgstr "%X%P: las secciones de sobreescritura %A y %A no inician en la misma dirección.\n" -#: elf32-spu.c:805 +#: elf32-spu.c:1011 msgid "warning: call to non-function symbol %s defined in %B" msgstr "aviso: se llama al símbolo %s que no es función, definido en %B" -#: elf32-spu.c:1406 +#: elf32-spu.c:1361 +msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" +msgstr "%A:0x%v lrlive .brinfo (%u) difiere del análisis (%u)\n" + +#: elf32-spu.c:1880 msgid "%B is not allowed to define %s" -msgstr "%B no se permite para definir %s" +msgstr "%B no tiene permitido definir %s" -#: elf32-spu.c:1453 +#: elf32-spu.c:1888 +#, c-format +msgid "you are not allowed to define %s in a script" +msgstr "no se le permite definir %s en un guión" + +#: elf32-spu.c:1922 #, c-format msgid "%s in overlay section" msgstr "%s en la sección de sobreescritura" -#: elf32-spu.c:1469 +#: elf32-spu.c:1951 msgid "overlay stub relocation overflow" -msgstr "desbordamiento del segmento de reubicación de sobreescritura" +msgstr "desbordamiento de la reubicación de cabo de sobreescritura" -#: elf32-spu.c:1478 elf64-ppc.c:10078 +#: elf32-spu.c:1960 elf64-ppc.c:11327 msgid "stubs don't match calculated size" msgstr "los cabos no coinciden con el tamaño calculado" -#: elf32-spu.c:1976 +#: elf32-spu.c:2542 #, c-format msgid "warning: %s overlaps %s\n" msgstr "aviso: %s sobreescribe %s\n" -#: elf32-spu.c:1992 +#: elf32-spu.c:2558 #, c-format msgid "warning: %s exceeds section size\n" msgstr "aviso: %s excede el tamaño de la sección\n" -#: elf32-spu.c:2023 +#: elf32-spu.c:2589 msgid "%A:0x%v not found in function table\n" msgstr "%A:0x%v no se encuentra en la tabla de función\n" -#: elf32-spu.c:2165 +#: elf32-spu.c:2729 msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n" msgstr "%B(%A+0x%v): se llama a la sección %B(%A) que no es de código, análisis incompleto\n" -#: elf32-spu.c:2339 -#, c-format -msgid "%A link_order not found\n" -msgstr "no se encontró link_order %A\n" - -#: elf32-spu.c:2706 +#: elf32-spu.c:3297 #, c-format msgid "Stack analysis will ignore the call from %s to %s\n" msgstr "El análisis de pila descartará la llamada de %s a %s\n" -#: elf32-spu.c:3348 +#: elf32-spu.c:3988 msgid " %s: 0x%v\n" msgstr " %s: 0x%v\n" -#: elf32-spu.c:3349 +#: elf32-spu.c:3989 msgid "%s: 0x%v 0x%v\n" msgstr "%s: 0x%v 0x%v\n" -#: elf32-spu.c:3354 +#: elf32-spu.c:3994 msgid " calls:\n" msgstr " llama:\n" -#: elf32-spu.c:3362 +#: elf32-spu.c:4002 #, c-format msgid " %s%s %s\n" msgstr " %s%s %s\n" -#: elf32-spu.c:3564 +#: elf32-spu.c:4307 #, c-format msgid "%s duplicated in %s\n" msgstr "%s duplicado en %s\n" -#: elf32-spu.c:3568 +#: elf32-spu.c:4311 #, c-format msgid "%s duplicated\n" msgstr "%s duplicado\n" -#: elf32-spu.c:3575 +#: elf32-spu.c:4318 msgid "sorry, no support for duplicate object files in auto-overlay script\n" msgstr "perdón, no se admiten ficheros objeto duplicados en el guión de sobreescritura automática\n" -#: elf32-spu.c:3605 +#: elf32-spu.c:4359 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n" msgstr "eltamaño 0x%v que no es de sobreescritura mas el tamaño de sobreescritura máximo de 0x%v excede el almacenamiento local\n" -#: elf32-spu.c:3741 +#: elf32-spu.c:4514 msgid "%B:%A%s exceeds overlay size\n" msgstr "%B:%A%s excede el tamaño de sobreescritura\n" -#: elf32-spu.c:3862 +#: elf32-spu.c:4676 msgid "Stack size for call graph root nodes.\n" msgstr "Tamaño de la pila para los nodos raíz del grafo de llamadas.\n" -#: elf32-spu.c:3863 +#: elf32-spu.c:4677 msgid "" "\n" "Stack size for functions. Annotations: '*' max stack, 't' tail call\n" @@ -2017,216 +2256,281 @@ "\n" "Tamaño de la pila para funciones. Anotaciones: '*' max de pila, 't' llamada cola\n" -#: elf32-spu.c:3871 +#: elf32-spu.c:4687 msgid "Maximum stack required is 0x%v\n" msgstr "La pila máxima requerida es 0x%v\n" -#: elf32-spu.c:4067 +#: elf32-spu.c:4778 +msgid "fatal error while creating .fixup" +msgstr "error fatal al crear .fixup" + +#: elf32-spu.c:5006 msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'" msgstr "%B(%s+0x%lx): reubicación %s sin resolución contra el símbolo `%s'" -#: elf32-v850.c:165 +#: elf32-tic6x.c:1539 +msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined" +msgstr "%B: reubicación relativa a SB pero _c6xabi_DSBT_BASE no está definido" + +#. Shared libraries and exception handling support not +#. implemented. +#: elf32-tic6x.c:1554 +msgid "%B: relocation type %d not implemented" +msgstr "%B: el tipo de reubicación %d aún no está implementado" + +#: elf32-tic6x.c:1640 +msgid "dangerous relocation" +msgstr "reubicación peligrosa" + +#: elf32-tic6x.c:1788 elf32-tic6x.c:1796 +msgid "error: %B requires more stack alignment than %B preserves" +msgstr "error: %B requiere más alineación de pila que la que %B preserva" + +#: elf32-tic6x.c:1806 elf32-tic6x.c:1815 +msgid "error: unknown Tag_ABI_array_object_alignment value in %B" +msgstr "error: valor de Tag_ABI_array_object_alignment desconocido en %B" + +#: elf32-tic6x.c:1824 elf32-tic6x.c:1833 +msgid "error: unknown Tag_ABI_array_object_align_expected value in %B" +msgstr "error: valor de Tag_ABI_array_object_align_expected desconocido en %B" + +#: elf32-tic6x.c:1841 elf32-tic6x.c:1848 +msgid "error: %B requires more array alignment than %B preserves" +msgstr "error: %B requiere más alineación de matriz que la que %B preserva" + +#: elf32-tic6x.c:1870 +msgid "warning: %B and %B differ in wchar_t size" +msgstr "aviso: %B y %B difieren en tamaño wchar_t" + +#: elf32-tic6x.c:1888 +msgid "warning: %B and %B differ in whether code is compiled for DSBT" +msgstr "aviso: %B y %B difieren en si el código está compilado para DSBT" + +#: elf32-tic6x.c:1898 +msgid "warning: %B and %B differ in position-dependence of data addressing" +msgstr "aviso: %B y %B difieren en el direccionamiento de datos dependiente de posición" + +#: elf32-tic6x.c:1908 +msgid "warning: %B and %B differ in position-dependence of code addressing" +msgstr "aviso: %B y %B difieren en el direccionamiento de código dependiente de posición" + +#: elf32-v850.c:173 #, 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:168 +#: elf32-v850.c:176 #, 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" +msgstr "La variable `%s' solamente puede estar en una de las regiones de datos small, zero, y tiny" -#: elf32-v850.c:171 +#: elf32-v850.c:179 #, 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" +msgstr "La variable `%s' no puede estar simultáneamente en las regiones de datos small y zero" -#: elf32-v850.c:174 +#: elf32-v850.c:182 #, 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:177 +#: elf32-v850.c:185 #, 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" +msgstr "La variable `%s' no puede estar simultáneamente en las regiones de datos zero y tiny" -#: elf32-v850.c:480 +#: elf32-v850.c:483 #, c-format msgid "FAILED to find previous HI16 reloc\n" msgstr "FALLO para encontrar la reubicación HI16 previa\n" -#: elf32-v850.c:1715 +#: elf32-v850.c:2155 msgid "could not locate special linker symbol __gp" msgstr "no se puede localizar el símbolo especial del enlazador __gp" -#: elf32-v850.c:1719 +#: elf32-v850.c:2159 msgid "could not locate special linker symbol __ep" msgstr "no se puede localizar el símbolo especial del enlazador __ep" -#: elf32-v850.c:1723 +#: elf32-v850.c:2163 msgid "could not locate special linker symbol __ctbp" msgstr "no se puede localizar el símbolo especial del enlazador __ctbp" -#: elf32-v850.c:1873 +#: elf32-v850.c:2341 msgid "%B: Architecture mismatch with previous modules" msgstr "%B: No coincide la arquitectura con los módulos previos" -#: elf32-v850.c:1892 +#. xgettext:c-format. +#: elf32-v850.c:2360 #, c-format msgid "private flags = %lx: " msgstr "opciones privadas = %lx: " -#: elf32-v850.c:1897 +#: elf32-v850.c:2365 #, c-format msgid "v850 architecture" msgstr "arquitectura v850" -#: elf32-v850.c:1898 +#: elf32-v850.c:2366 #, c-format msgid "v850e architecture" msgstr "arquitectura v850e" -#: elf32-v850.c:1899 +#: elf32-v850.c:2367 #, c-format msgid "v850e1 architecture" msgstr "arquitectura v850e1" -#: elf32-vax.c:541 +#: elf32-v850.c:2368 +#, c-format +msgid "v850e2 architecture" +msgstr "arquitectura v850e2" + +#: elf32-v850.c:2369 +#, c-format +msgid "v850e2v3 architecture" +msgstr "arquitectura v850e2v3" + +#: elf32-vax.c:531 #, c-format msgid " [nonpic]" msgstr " [no pic]" -#: elf32-vax.c:544 +#: elf32-vax.c:534 #, c-format msgid " [d-float]" msgstr " [flotante-d]" -#: elf32-vax.c:547 +#: elf32-vax.c:537 #, c-format msgid " [g-float]" msgstr " [flotante-g]" -#: elf32-vax.c:657 +#: elf32-vax.c:654 #, c-format msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld" msgstr "%s: aviso: la adición GOT de %ld a `%s' no coincide con la adición previa GOT de %ld" -#: elf32-vax.c:1589 +#: elf32-vax.c:1587 #, c-format msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" msgstr "%s: aviso: se descarta la adición PLT de %d a `%s' de la sección %s" -#: elf32-vax.c:1726 +#: elf32-vax.c:1714 #, c-format msgid "%s: warning: %s relocation against symbol `%s' from %s section" msgstr "%s: aviso: reubicación %s contra el símbolo `%s' de la sección %s" -#: elf32-vax.c:1732 +#: elf32-vax.c:1720 #, c-format msgid "%s: warning: %s relocation to 0x%x from %s section" msgstr "%s: aviso: reubicación %s a 0x%x de la sección %s" -#: elf32-xstormy16.c:451 elf32-ia64.c:2794 elf64-ia64.c:2794 +#: elf32-xstormy16.c:451 elf32-ia64.c:2861 elf64-ia64.c:2861 msgid "non-zero addend in @fptr reloc" msgstr "adición que no es cero en la reubicación @fptr" -#: elf32-xtensa.c:911 +#: elf32-xtensa.c:918 msgid "%B(%A): invalid property table" msgstr "%B(%A): tabla de propiedades inválida" -#: elf32-xtensa.c:2734 +#: elf32-xtensa.c:2780 msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)" msgstr "%B(%A+0x%lx): desplazamiento de reubicación fuera de rango (tamaño=0x%x)" -#: elf32-xtensa.c:2813 elf32-xtensa.c:2934 +#: elf32-xtensa.c:2859 elf32-xtensa.c:2980 msgid "dynamic relocation in read-only section" msgstr "reubicación dinámica en la sección de sólo lectura" -#: elf32-xtensa.c:2910 +#: elf32-xtensa.c:2956 msgid "TLS relocation invalid without dynamic sections" msgstr "reubicación TLS inválida sin secciones dinámicas" -#: elf32-xtensa.c:3127 +#: elf32-xtensa.c:3173 msgid "internal inconsistency in size of .got.loc section" msgstr "inconsistencia interna en el tamaño de la sección .got.loc" -#: elf32-xtensa.c:3437 +#: elf32-xtensa.c:3486 msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x" msgstr "%B: tipo de máquina incompatible. La salida es 0x%x. La entrada es 0x%x" -#: elf32-xtensa.c:4666 elf32-xtensa.c:4674 +#: elf32-xtensa.c:4715 elf32-xtensa.c:4723 msgid "Attempt to convert L32R/CALLX to CALL failed" msgstr "Falló el intento de convertir L32R/CALLX a CALL" -#: elf32-xtensa.c:6276 elf32-xtensa.c:6352 elf32-xtensa.c:7468 +#: elf32-xtensa.c:6333 elf32-xtensa.c:6409 elf32-xtensa.c:7525 msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch" msgstr "%B(%A+0x%lx): no se puede decodificar la instrucción; posible falta de coincidencia de la configuración" -#: elf32-xtensa.c:7208 +#: elf32-xtensa.c:7265 msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch" msgstr "%B(%A+0x%lx): no se puede decodificar la instrucción para la reubicación XTENSA_ASM_SIMPLIFY; posible falta de coincidencia de la configuración" -#: elf32-xtensa.c:8969 +#: elf32-xtensa.c:9024 msgid "invalid relocation address" msgstr "dirección de reubicación inválida" -#: elf32-xtensa.c:9018 +#: elf32-xtensa.c:9073 msgid "overflow after relaxation" msgstr "desbordamiento después de la relajación" -#: elf32-xtensa.c:10154 +#: elf32-xtensa.c:10205 msgid "%B(%A+0x%lx): unexpected fix for %s relocation" msgstr "%B(%A+0x%lx): compostura inesperada para la reubicación %s" -#: elf64-alpha.c:452 +#: elf64-alpha.c:460 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:2416 +#: elf64-alpha.c:2408 msgid "%B: .got subsegment exceeds 64K (size %d)" msgstr "%B: el subsegmento .got excede los 64K (tamaño %d)" -#: elf64-alpha.c:4296 elf64-alpha.c:4308 +#: elf64-alpha.c:4304 elf64-alpha.c:4316 msgid "%B: gp-relative relocation against dynamic symbol %s" -msgstr "%B: reubicación gp relativa contra el símbolo dinámico %s" +msgstr "%B: reubicación relativa a gp contra el símbolo dinámico %s" -#: elf64-alpha.c:4334 elf64-alpha.c:4469 +#: elf64-alpha.c:4342 elf64-alpha.c:4477 msgid "%B: pc-relative relocation against dynamic symbol %s" -msgstr "%B: reubicación relativa al pc contra el símbolo dinámico %s" +msgstr "%B: reubicación relativa a pc contra el símbolo dinámico %s" -#: elf64-alpha.c:4362 +#: elf64-alpha.c:4370 msgid "%B: change in gp: BRSGP %s" msgstr "%B: cambio en gp: BRSGP %s" -#: elf64-alpha.c:4387 +#: elf64-alpha.c:4395 msgid "" msgstr "" -#: elf64-alpha.c:4392 +#: elf64-alpha.c:4400 msgid "%B: !samegp reloc against symbol without .prologue: %s" msgstr "%B: reubicación !samegp contra un símbolo sin .prologue: %s" -#: elf64-alpha.c:4444 +#: elf64-alpha.c:4452 msgid "%B: unhandled dynamic relocation against %s" msgstr "%B: reubicación dinámica sin manejar contra %s" -#: elf64-alpha.c:4476 +#: elf64-alpha.c:4484 msgid "%B: pc-relative relocation against undefined weak symbol %s" -msgstr "%B: reubicación relativa al pc contra el símbolo débil sin definir %s" +msgstr "%B: reubicación relativa a pc contra el símbolo débil sin definir %s" -#: elf64-alpha.c:4536 +#: elf64-alpha.c:4544 msgid "%B: dtp-relative relocation against dynamic symbol %s" msgstr "%B: reubicación relativa a dtp contra el símbolo dinámico %s" -#: elf64-alpha.c:4559 +#: elf64-alpha.c:4567 msgid "%B: tp-relative relocation against dynamic symbol %s" msgstr "%B: reubicación relativa a tp contra el símbolo dinámico %s" -#: elf64-hppa.c:2071 +#: elf64-hppa.c:2101 #, 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-hppa.c:3299 +msgid "%B(%A+0x%lx): cannot reach %s" +msgstr "%B(%A+0x%lx): no se puede alcanzar %s" + #: elf64-mmix.c:1177 #, c-format msgid "" @@ -2236,46 +2540,46 @@ "%s: Error de inconsistencia interna para el valor para\n" " un registro global colocado por el enlazador: enlazado: 0x%lx%08lx != relajado: 0x%lx%08lx\n" -#: elf64-mmix.c:1618 +#: elf64-mmix.c:1607 #, c-format msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s" msgstr "%s: reubicación base-más-desplazamiento contra un símbolo de registro: (desconocido) en %s" -#: elf64-mmix.c:1623 +#: elf64-mmix.c:1612 #, c-format msgid "%s: base-plus-offset relocation against register symbol: %s in %s" msgstr "%s: reubicación base-más-desplazamiento contra un símbolo de registro: %s en %s" -#: elf64-mmix.c:1667 +#: elf64-mmix.c:1656 #, 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: (desconocido) en %s" -#: elf64-mmix.c:1672 +#: elf64-mmix.c:1661 #, 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:1709 +#: elf64-mmix.c:1698 #, 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:1737 +#: elf64-mmix.c:1726 #, 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:2201 +#: elf64-mmix.c:2190 #, 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:2259 +#: elf64-mmix.c:2248 msgid "Register section has contents\n" msgstr "La sección de registros no tiene contenido\n" -#: elf64-mmix.c:2451 +#: elf64-mmix.c:2440 #, c-format msgid "" "Internal inconsistency: remaining %u != max %u.\n" @@ -2284,65 +2588,65 @@ "Inconsistencia interna: %u restante != %u máximo.\n" " Por favor reporte este bicho." -#: elf64-ppc.c:2561 libbfd.c:978 +#: elf64-ppc.c:2741 libbfd.c:997 msgid "%B: compiled for a big endian system and target is little endian" msgstr "%B: compilado para un sistema big endian y el objetivo es little endian" -#: elf64-ppc.c:2564 libbfd.c:980 +#: elf64-ppc.c:2744 libbfd.c:999 msgid "%B: compiled for a little endian system and target is big endian" msgstr "%B: compilado para un sistema little endian y el objetivo es big endian" -#: elf64-ppc.c:6065 +#: elf64-ppc.c:6473 #, c-format msgid "copy reloc against `%s' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc" -msgstr "la reubicación de copia contra `%s' requiere de enlazado plt suelto; evite establecer LD_BIND_NOW=1 o actualice gcc" +msgstr "la reubicación de copia contra `%s' requiere de enlazado plt flojo; evite establecer LD_BIND_NOW=1 o actualice gcc" -#: elf64-ppc.c:6486 +#: elf64-ppc.c:6901 msgid "dynreloc miscount for %B, section %A" msgstr "cuenta errónea de la reubicación dinámica de %B, sección %A" -#: elf64-ppc.c:6570 +#: elf64-ppc.c:6985 msgid "%B: .opd is not a regular array of opd entries" msgstr "%B: .opd no es una matriz regular de entradas opd" -#: elf64-ppc.c:6579 +#: elf64-ppc.c:6994 msgid "%B: unexpected reloc type %u in .opd section" msgstr "%B: tipo de reubicación %u inesperado en la sección .opd" -#: elf64-ppc.c:6600 +#: elf64-ppc.c:7015 msgid "%B: undefined sym `%s' in .opd section" -msgstr "%B: símbolo `%s' indefinido en la sección .opd" +msgstr "%B: símbolo `%s' sin definir en la sección .opd" -#: elf64-ppc.c:7377 elf64-ppc.c:7754 +#: elf64-ppc.c:7877 elf64-ppc.c:8392 #, c-format -msgid "%s defined in removed toc entry" +msgid "%s defined on removed toc entry" msgstr "se definió %s en la entrada toc eliminada" -#: elf64-ppc.c:8581 +#: elf64-ppc.c:9459 #, c-format msgid "long branch stub `%s' offset overflow" msgstr "desbordamiento del desplazamiento de stub de ramificación long `%s'" -#: elf64-ppc.c:8640 +#: elf64-ppc.c:9518 #, c-format msgid "can't find branch stub `%s'" msgstr "no se puede encontrar la ramificación de cabo `%s'" -#: elf64-ppc.c:8702 elf64-ppc.c:8822 +#: elf64-ppc.c:9580 elf64-ppc.c:9716 #, c-format msgid "linkage table error against `%s'" msgstr "error de la tabla de enlazado contra `%s'" -#: elf64-ppc.c:8978 +#: elf64-ppc.c:9886 #, c-format msgid "can't build branch stub `%s'" msgstr "no se puede construir la ramificación de cabos `%s'" -#: elf64-ppc.c:9451 +#: elf64-ppc.c:10684 msgid "%B section %A exceeds stub group size" -msgstr "%B sección %A excede el tamaño de grupo de stub" +msgstr "%B sección %A excede el tamaño de grupo de cabos" -#: elf64-ppc.c:10090 +#: elf64-ppc.c:11339 #, c-format msgid "" "linker stubs in %u group%s\n" @@ -2359,419 +2663,426 @@ " ajuste toc long %lu\n" " llamada plt %lu" -#: elf64-ppc.c:10769 +#: elf64-ppc.c:12190 msgid "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc" msgstr "%B(%A+0x%lx): no se admiten los TOCs múltiples automáticos, utilizando sus ficheros crt; recompile con -mminimal-toc o actualice gcc" -#: elf64-ppc.c:10777 +#: elf64-ppc.c:12198 msgid "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern" msgstr "%B(%A+0x%lx): la optimización de llamada hermana a `%s' no permite TOCs múltiples automáticos; recompile con -mminimal-toc ó -fno-optimize-sibling-calls, o vuelva `%s' externa" -#: elf64-ppc.c:11427 +#: elf64-ppc.c:12919 msgid "%B: relocation %s is not supported for symbol %s." msgstr "%B: no se admite la reubicación %s para el símbolo %s." -#: elf64-ppc.c:11509 +#: elf64-ppc.c:13096 msgid "%B: error: relocation %s not a multiple of %d" msgstr "%B: error: la reubicación %s no es un múltiplo de %d" -#: elf64-sh64.c:1701 +#: elf64-sh64.c:1682 #, c-format msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n" msgstr "%s: error: tipo de reubicación %d sin alinear en %08x reubicación %08x\n" -#: elf64-sparc.c:439 +#: elf64-sparc.c:444 msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER" msgstr "%B: Solamente los registros %%g[2367] se pueden declarar utilizando STT_REGISTER" -#: elf64-sparc.c:459 +#: elf64-sparc.c:464 msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B" msgstr "El registro %%g%d se usó de forma incompatible: %s en %B, previamente %s en %B" -#: elf64-sparc.c:482 +#: elf64-sparc.c:487 msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B" msgstr "El símbolo `%s' tiene tipos divergentes: REGISTER en %B, previamente %s en %B" -#: elf64-sparc.c:527 +#: elf64-sparc.c:532 msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B" msgstr "El símbolo `%s' tiene tipos divergentes: %s en %B, previamente REGISTER en %B" -#: elf64-sparc.c:678 +#: elf64-sparc.c:684 msgid "%B: linking UltraSPARC specific with HAL specific code" msgstr "%B: se enlaza código específico de UltraSPARC con código específico de HAL" -#: elf64-x86-64.c:1047 elf64-x86-64.c:1207 elfxx-mips.c:7834 -msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" -msgstr "%B: no se puede usar la reubicación %s contra `%s' cuando se hace un objeto compartido; recompile con -fPIC" - -#: elf64-x86-64.c:1138 +#: elf64-x86-64.c:1360 msgid "%B: '%s' accessed both as normal and thread local symbol" msgstr "%B: se accedió a '%s' como un símbolo normal y como un símbolo local de hilo" -#: elf64-x86-64.c:2559 +#: elf64-x86-64.c:2801 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d" +msgstr "%B: la reubicación %s contra el símbolo STT_GNU_IFUNC `%s' con adición que no es cero: %d" + +#: elf64-x86-64.c:3073 msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object" msgstr "%B: no se puede usar la reubicación R_X86_64_GOTOFF contra la función protegida `%s' cuando se hace un objeto compartido" -#: elf64-x86-64.c:2670 +#: elf64-x86-64.c:3184 msgid "; recompile with -fPIC" msgstr "; recompile con -fPIC" -#: elf64-x86-64.c:2675 +#: elf64-x86-64.c:3189 msgid "%B: relocation %s against %s `%s' can not be used when making a shared object%s" msgstr "%B: no se puede usar la reubicación %s contra %s `%s' cuando se hace un objeto compartido%s" -#: elf64-x86-64.c:2677 +#: elf64-x86-64.c:3191 msgid "%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s" msgstr "%B: no se puede usar la reubicación %s contra %s sin definir `%s' cuando se hace un objeto compartido%s" -#: elfcode.h:795 +#: elfcode.h:826 #, c-format msgid "warning: %s has a corrupt string table index - ignoring" msgstr "aviso: %s tiene un índice de tablas de cadenas corrupto - se descarta" -#: elfcode.h:1201 +#: elfcode.h:1236 #, 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)" -#: elfcode.h:1435 +#: elfcode.h:1476 #, c-format msgid "%s(%s): relocation %d has invalid symbol index %ld" msgstr "%s(%s): la reubicación %d tiene un índice de símbolo %ld inválido" -#: elfcore.h:251 +#: elfcore.h:312 msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu." msgstr "Aviso: se truncó %B: se esperaba el tamaño de fichero core >= %lu, se encontró: %lu." -#: elflink.c:1028 +#: elflink.c:1119 msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A" msgstr "%s: la definición TLS en %B sección %A no coincide con la definición que no es TLS en %B sección %A" -#: elflink.c:1032 +#: elflink.c:1123 msgid "%s: TLS reference in %B mismatches non-TLS reference in %B" -msgstr "%s: la referencia TLS en %b no coincide con la referencia que no es TLS en %B" +msgstr "%s: la referencia TLS en %B no coincide con la referencia que no es TLS en %B" -#: elflink.c:1036 +#: elflink.c:1127 msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B" msgstr "%s: la definición TLS en %B sección %A no coincide con la referencia que no es TLS en %B" -#: elflink.c:1040 +#: elflink.c:1131 msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A" msgstr "%s: la referencia TLS en %B no coincide con la definición que no es TLS en %B sección %A" -#: elflink.c:1654 +#: elflink.c:1763 msgid "%B: unexpected redefinition of indirect versioned symbol `%s'" msgstr "%B: redefinición inesperada del símbolo con versión indirecta `%s'" -#: elflink.c:1982 +#: elflink.c:2076 msgid "%B: version node not found for symbol %s" msgstr "%B: no se encuentra la versión del nodo para el símbolo %s" -#: elflink.c:2130 +#: elflink.c:2166 msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'" msgstr "%B: índice de símbolos de reubicación inválido (0x%lx >= 0x%lx) erróneo para el desplazamiento 0x%lx en la sección `%A'" -#: elflink.c:2327 +#: elflink.c:2177 +msgid "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the object file has no symbol table" +msgstr "%B: índice de símbolos que no es cero (0x%lx) para el desplazamiento 0x%lx) en la sección `%A' cuando el fichero objeto no tiene tabla de símbolos" + +#: elflink.c:2367 msgid "%B: relocation size mismatch in %B section %A" msgstr "%B: el tamaño de reubicación no coincide en %B sección %A" -#: elflink.c:2629 +#: elflink.c:2662 #, 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.c:3953 +#: elflink.c:3418 +msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n" +msgstr "%P: se encontró código máquina ELF alternativo (%d) en %B, se espera %d\n" + +#: elflink.c:4050 msgid "%B: %s: invalid version %u (max %d)" msgstr "%B: %s: versión %u inválida (máximo %d)" -#: elflink.c:3989 +#: elflink.c:4086 msgid "%B: %s: invalid needed version %d" msgstr "%B: %s: versión requerida %d inválida" -#: elflink.c:4172 +#: elflink.c:4285 msgid "Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %A" msgstr "Aviso: la alineación %u del símbolo común `%s' en %B es más grande que la alineación (%u) de su sección %A" -#: elflink.c:4178 +#: elflink.c:4291 msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B" msgstr "Aviso: la alineación %u del símbolo `%s' en %B es más pequeña que %u en %B" -#: elflink.c:4193 +#: elflink.c:4306 msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B" msgstr "Aviso: el tamaño del símbolo `%s' cambió de %lu en %B a %lu en %B" -#: elflink.c:4371 -#, c-format -msgid "%s: invalid DSO for symbol `%s' definition" -msgstr "%s: DSO inválido para la definición del símbolo `%s'" +#: elflink.c:4472 +msgid "%B: undefined reference to symbol '%s'" +msgstr "%B: referencia sin definir al símbolo '%s'" + +#: elflink.c:4475 +msgid "note: '%s' is defined in DSO %B so try adding it to the linker command line" +msgstr "nota: se define '%s' en DSO %B así que se tratará de agregarlo a la línea de órdenes del enlazador" -#: elflink.c:5621 +#: elflink.c:5779 #, c-format msgid "%s: undefined version: %s" msgstr "%s: versión sin definir: %s" -#: elflink.c:5689 +#: elflink.c:5847 msgid "%B: .preinit_array section is not allowed in DSO" msgstr "%B: no se permite la sección .preinit_array en DSO" -#: elflink.c:7414 +#: elflink.c:7598 #, c-format msgid "undefined %s reference in complex symbol: %s" -msgstr "referencia %s indefinida en el símbolo complejo: %s" +msgstr "referencia %s sin definir en el símbolo complejo: %s" -#: elflink.c:7568 +#: elflink.c:7752 #, c-format msgid "unknown operator '%c' in complex symbol" msgstr "operador desconocido '%c' en el símbolo complejo" -#: elflink.c:7904 elflink.c:7921 elflink.c:7958 elflink.c:7975 +#: elflink.c:8091 elflink.c:8108 elflink.c:8145 elflink.c:8162 msgid "%B: Unable to sort relocs - they are in more than one size" msgstr "%B: No se pueden ordenar las reubicaciones - son de tamaños diferentes" -#: elflink.c:7935 elflink.c:7989 +#: elflink.c:8122 elflink.c:8176 msgid "%B: Unable to sort relocs - they are of an unknown size" msgstr "%B: No se pueden ordenar las reubicaciones - son de tamaño desconocido" -#: elflink.c:8038 +#: elflink.c:8227 msgid "Not enough memory to sort relocations" msgstr "No hay suficiente memoria para ordenar las reubicaciones" -#: elflink.c:8227 +#: elflink.c:8420 msgid "%B: Too many sections: %d (>= %d)" msgstr "%B: Demasiadas secciones: %d (>= %d)" -#: elflink.c:8461 +#: elflink.c:8663 msgid "%B: %s symbol `%s' in %B is referenced by DSO" msgstr "%B: el símbolo %s `%s' en %B está referenciado por DSO" -#: elflink.c:8544 +#: elflink.c:8754 msgid "%B: could not find output section %A for input section %A" msgstr "%B: no se puede encontrar la sección de salida %A para la sección de entrada %A" -#: elflink.c:8655 +#: elflink.c:8874 msgid "%B: %s symbol `%s' isn't defined" msgstr "%B: el símbolo %s `%s' no está definido" -#: elflink.c:9141 +#: elflink.c:9428 msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol" msgstr "error: %B contiene una reubicación (0x%s) para la sección %A que refiere a un símbolo global que no existe" -#: elflink.c:9205 +#: elflink.c:9494 msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n" msgstr "%X`%s' referido en la sección `%A' de %B: se definió en la sección descartada `%A' de %B\n" -#: elflink.c:9825 +#: elflink.c:10141 msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections" msgstr "%A tiene tanto secciones ordenadas [`%A' en %B] como desordenadas [`%A' en %B]" -#: elflink.c:9830 +#: elflink.c:10146 #, c-format msgid "%A has both ordered and unordered sections" -msgstr "%A tiene tanto secciones ordenadas como desordenadas" +msgstr "%A tiene secciones tanto ordenadas como desordenadas" -#: elflink.c:10715 elflink.c:10759 +#: elflink.c:10992 elflink.c:11036 msgid "%B: could not find output section %s" msgstr "%B: no se puede encontrar la sección de salida %s" -#: elflink.c:10720 +#: elflink.c:10997 #, c-format msgid "warning: %s section has zero size" msgstr "aviso: la sección %s es de tamaño cero" -#: elflink.c:10824 +#: elflink.c:11102 msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n" msgstr "%P: aviso: se crea un DT_TEXTREL en un objeto compartido.\n" -#: elflink.c:11006 +#: elflink.c:11289 msgid "%P%X: can not read symbols: %E\n" msgstr "%P%X: no se pueden leer símbolos: %E\n" -#: elflink.c:11313 +#: elflink.c:11638 msgid "Removing unused section '%s' in file '%B'" msgstr "Se elimina la sección sin uso '%s' en el fichero '%B'" -#: elflink.c:11525 +#: elflink.c:11850 msgid "Warning: gc-sections option ignored" msgstr "Aviso: se descarta la opción gc-sections" -#: elflink.c:12056 +#: elflink.c:12399 msgid "%B: ignoring duplicate section `%A'" msgstr "%B: se descarta la sección duplicada `%A'" -#: elflink.c:12063 elflink.c:12070 +#: elflink.c:12406 elflink.c:12413 msgid "%B: duplicate section `%A' has different size" msgstr "%B: la sección duplicada `%A' tiene tamaño diferente" -#: elflink.c:12078 elflink.c:12083 +#: elflink.c:12421 elflink.c:12426 msgid "%B: warning: could not read contents of section `%A'" msgstr "%B: aviso: no se puede leer el contenido de la sección `%A'" -#: elflink.c:12087 +#: elflink.c:12430 msgid "%B: warning: duplicate section `%A' has different contents" msgstr "%B: aviso: la sección duplicada `%A' tiene contenido diferente" -#: elflink.c:12166 linker.c:3080 -msgid "%F%P: already_linked_table: %E" -msgstr "%F%P: already_linked_table: %E" +#: elflink.c:12531 linker.c:3138 +msgid "%F%P: already_linked_table: %E\n" +msgstr "%F%P: already_linked_table: %E\n" -#: elfxx-mips.c:1197 +#: elfxx-mips.c:1220 msgid "static procedure (no name)" msgstr "procedimiento estático (sin nombre)" -#: elfxx-mips.c:5562 -msgid "%B: %A+0x%lx: jump to stub routine which is not jal" -msgstr "%B: %A+0x%lx: salto a una rutina cabo la cual no es jal" +#: elfxx-mips.c:5623 +msgid "%B: %A+0x%lx: Direct jumps between ISA modes are not allowed; consider recompiling with interlinking enabled." +msgstr "%B: %A+0x%lx: No se permiten los saltos directos entre modos ISA; considere recompilar con el entrelazado activado." -#: elfxx-mips.c:6206 elfxx-mips.c:6427 +#: elfxx-mips.c:6280 elfxx-mips.c:6503 msgid "%B: Warning: bad `%s' option size %u smaller than its header" msgstr "%B: Aviso: el tamaño de opción `%s' %u erróneo es más pequeño que su encabezado" -#: elfxx-mips.c:7174 elfxx-mips.c:7299 +#: elfxx-mips.c:7254 elfxx-mips.c:7379 msgid "%B: Warning: cannot determine the target function for stub section `%s'" msgstr "%B: Aviso: no se puede determinar la función objetivo para la sección de cabo `%s'" -#: elfxx-mips.c:7428 +#: elfxx-mips.c:7508 msgid "%B: Malformed reloc detected for section %s" msgstr "%B: Se detectó una reubicación malformada para la sección %s" -#: elfxx-mips.c:7468 +#: elfxx-mips.c:7548 msgid "%B: GOT reloc at 0x%lx not expected in executables" msgstr "%B: no se esperaba la reubicación GOT en 0x%lx en ejecutables" -#: elfxx-mips.c:7566 +#: elfxx-mips.c:7670 msgid "%B: CALL16 reloc at 0x%lx not against global symbol" msgstr "%B: la reubicación CALL16 en 0x%lx no es contra un símbolo global" -#: elfxx-mips.c:8244 +#: elfxx-mips.c:8365 #, c-format msgid "non-dynamic relocations refer to dynamic symbol %s" msgstr "reubicaciones que no son dinámicas se refieren al símbolo dinámico %s" -#: elfxx-mips.c:8947 +#: elfxx-mips.c:9068 msgid "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'" msgstr "%B: No se puede encontrar una reubicación LO16 coincidente contra `%s' para %s en 0x%lx en la sección `%A'" -#: elfxx-mips.c:9086 +#: elfxx-mips.c:9207 msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)" msgstr "la sección small-data excede los 64KB; disminuya el límite de tamaño de small-data (vea la opción -G)" -#: elfxx-mips.c:11887 +#: elfxx-mips.c:12027 #, c-format msgid "%s: illegal section name `%s'" msgstr "%s: nombre de sección `%s' ilegal" -#: elfxx-mips.c:12262 elfxx-mips.c:12288 +#: elfxx-mips.c:12405 elfxx-mips.c:12431 msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float" msgstr "Aviso: %B usa -msingle-float, %B usa -mdouble-float" -#: elfxx-mips.c:12274 elfxx-mips.c:12330 +#: elfxx-mips.c:12417 elfxx-mips.c:12473 msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64" msgstr "Aviso: %B usa -msingle-float, %B usa -mips32r2 -mfp64" -#: elfxx-mips.c:12300 elfxx-mips.c:12336 +#: elfxx-mips.c:12443 elfxx-mips.c:12479 msgid "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64" msgstr "Aviso: %B usa -mdouble-float, %B usa -mips32r2 -mfp64" -#: elfxx-mips.c:12378 +#: elfxx-mips.c:12521 msgid "%B: endianness incompatible with that of the selected emulation" msgstr "%B: la endianez es incompatible con aquella de la emulación seleccionada" -#: elfxx-mips.c:12389 +#: elfxx-mips.c:12532 msgid "%B: ABI is incompatible with that of the selected emulation" msgstr "%B: la ABI es incompatible con aquella de la emulación seleccionada" -#: elfxx-mips.c:12470 +#: elfxx-mips.c:12613 msgid "%B: warning: linking abicalls files with non-abicalls files" msgstr "%B: aviso: se enlazan ficheros de llamadas abi con ficheros que no son de llamadas abi" -#: elfxx-mips.c:12487 +#: elfxx-mips.c:12630 msgid "%B: linking 32-bit code with 64-bit code" msgstr "%B: se enlaza código de 32-bit con código de 64-bit" -#: elfxx-mips.c:12515 +#: elfxx-mips.c:12658 msgid "%B: linking %s module with previous %s modules" msgstr "%B: se enlaza el módulo %s con módulos %s previos" -#: elfxx-mips.c:12538 +#: elfxx-mips.c:12681 msgid "%B: ABI mismatch: linking %s module with previous %s modules" -msgstr "%B: no coincide el ABI: se enlaza el módulo %s con módulos %s previos" +msgstr "%B: no coincide ABI: se enlaza el módulo %s con módulos %s previos" -#: elfxx-mips.c:12702 +#: elfxx-mips.c:12845 #, c-format msgid " [abi=O32]" msgstr " [abi=O32]" -#: elfxx-mips.c:12704 +#: elfxx-mips.c:12847 #, c-format msgid " [abi=O64]" msgstr " [abi=O64]" -#: elfxx-mips.c:12706 +#: elfxx-mips.c:12849 #, c-format msgid " [abi=EABI32]" msgstr " [abi=EABI32]" -#: elfxx-mips.c:12708 +#: elfxx-mips.c:12851 #, c-format msgid " [abi=EABI64]" msgstr " [abi=EABI64]" -#: elfxx-mips.c:12710 +#: elfxx-mips.c:12853 #, c-format msgid " [abi unknown]" msgstr " [abi desconocido]" -#: elfxx-mips.c:12712 +#: elfxx-mips.c:12855 #, c-format msgid " [abi=N32]" msgstr " [abi=N32]" -#: elfxx-mips.c:12714 +#: elfxx-mips.c:12857 #, c-format msgid " [abi=64]" msgstr " [abi=64]" -#: elfxx-mips.c:12716 +#: elfxx-mips.c:12859 #, c-format msgid " [no abi set]" msgstr " [no hay conjunto abi]" -#: elfxx-mips.c:12737 +#: elfxx-mips.c:12880 #, c-format msgid " [unknown ISA]" msgstr " [ISA desconocido]" -#: elfxx-mips.c:12748 +#: elfxx-mips.c:12891 #, c-format msgid " [not 32bitmode]" msgstr " [no es modo 32bit]" -#: elfxx-sparc.c:440 +#: elfxx-sparc.c:595 #, c-format msgid "invalid relocation type %d" msgstr "tipo de reubicación %d inválido" -#: elfxx-sparc.c:2976 -msgid "%B: probably compiled without -fPIC?" -msgstr "%B: ¿Compilado probablemente sin -fPIC?" - -#: i386linux.c:455 m68klinux.c:459 sparclinux.c:453 +#: i386linux.c:454 m68klinux.c:458 sparclinux.c:452 #, 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:461 +#: i386linux.c:462 m68klinux.c:466 sparclinux.c:460 #, 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:652 i386linux.c:702 m68klinux.c:659 m68klinux.c:707 -#: sparclinux.c:651 sparclinux.c:701 +#: i386linux.c:651 i386linux.c:701 m68klinux.c:658 m68klinux.c:706 +#: sparclinux.c:650 sparclinux.c:700 #, c-format msgid "Symbol %s not defined for fixups\n" msgstr "El símbolo %s no está definido para composturas\n" -#: i386linux.c:726 m68klinux.c:731 sparclinux.c:725 +#: i386linux.c:725 m68klinux.c:730 sparclinux.c:724 msgid "Warning: fixup count mismatch\n" msgstr "Aviso: no coincide la cuenta de composturas\n" @@ -2785,15 +3096,15 @@ msgid "%s: unrecognized symbol `%s' flags 0x%x" msgstr "%s: no se reconoce el símbolo `%s' opciones 0x%x" -#: ieee.c:788 +#: ieee.c:792 msgid "%B: unimplemented ATI record %u for symbol %u" msgstr "%B: grabación ATI %u sin implementar para el símbolo %u" -#: ieee.c:812 +#: ieee.c:816 msgid "%B: unexpected ATN type %d in external part" msgstr "%B: tipo ATN %d inesperado en la parte externa" -#: ieee.c:834 +#: ieee.c:838 msgid "%B: unexpected type after ATN" msgstr "%B: tipo inesperado después de ATN" @@ -2833,39 +3144,99 @@ msgid "%B: bad section length in ihex_read_section" msgstr "%B: longitud de sección errónea en ihex_read_section" -#: ihex.c:825 +#: ihex.c:826 #, 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:1008 +#: libbfd.c:863 +msgid "%B: unable to get decompressed section %A" +msgstr "%B: no se puede obtener la sección %A descomprimida" + +#: libbfd.c:1027 #, c-format msgid "Deprecated %s called at %s line %d in %s\n" msgstr "Se llamó a %s que es obsoleto en %s línea %d en %s\n" -#: libbfd.c:1011 +#: libbfd.c:1030 #, c-format msgid "Deprecated %s called\n" msgstr "Se llamó a %s que es obsoleto\n" -#: linker.c:1874 +#: linker.c:1911 msgid "%B: indirect symbol `%s' to `%s' is a loop" msgstr "%B: el símbolo indirecto `%s' para `%s' es un ciclo" -#: linker.c:2740 +#: linker.c:2778 #, c-format msgid "Attempt to do relocatable link with %s input and %s output" msgstr "Se intentó hacer un enlace reubicable con entrada %s y salida %s" -#: linker.c:3047 +#: linker.c:3105 msgid "%B: warning: ignoring duplicate section `%A'\n" msgstr "%B: aviso: se descarta la sección duplicada `%A'\n" -#: linker.c:3061 +#: linker.c:3119 msgid "%B: warning: duplicate section `%A' has different size\n" msgstr "%B: aviso: la sección duplicada `%A' es de tamaño diferente\n" -#: merge.c:828 +#: mach-o.c:3403 +msgid "Mach-O header:\n" +msgstr "encabezado de Mach-O:\n" + +#: mach-o.c:3404 +#, c-format +msgid " magic : %08lx\n" +msgstr " magic : %08lx\n" + +#: mach-o.c:3405 +#, c-format +msgid " cputype : %08lx (%s)\n" +msgstr " tipocpu : %08lx (%s)\n" + +#: mach-o.c:3407 +#, c-format +msgid " cpusubtype: %08lx\n" +msgstr " subtipocpu: %08lx\n" + +#: mach-o.c:3408 +#, c-format +msgid " filetype : %08lx (%s)\n" +msgstr " tipofich : %08lx (%s)\n" + +#: mach-o.c:3411 +#, c-format +msgid " ncmds : %08lx (%lu)\n" +msgstr " nordenes : %08lx (%lu)\n" + +#: mach-o.c:3412 +#, c-format +msgid " sizeofcmds: %08lx\n" +msgstr " tamordenes: %08lx\n" + +#: mach-o.c:3413 +#, c-format +msgid " flags : %08lx (" +msgstr " opciones : %08lx (" + +#: mach-o.c:3415 vms-alpha.c:7652 +msgid ")\n" +msgstr ")\n" + +#: mach-o.c:3416 +#, c-format +msgid " reserved : %08x\n" +msgstr " reservado : %08x\n" + +#: mach-o.c:3426 +msgid "Segments and Sections:\n" +msgstr "Segmentos y Secciones:\n" + +#: mach-o.c:3427 +msgid " #: Segment name Section name Address\n" +msgstr " #: Nombre segmento Nombre sección Dirección\n" + +#: merge.c:832 #, c-format msgid "%s: access beyond end of merged section (%ld)" msgstr "%s: acceso más allá del final de la sección mezclada (%ld)" @@ -2890,117 +3261,117 @@ msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n" msgstr "%s: no se admite la secuencia de caracteres anchos 0x%02X 0x%02X después del nombre de símbolo que inicia con `%s'\n" -#: mmo.c:1566 +#: mmo.c:1565 #, c-format msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" msgstr "%s: fichero mmo inválido: no se admite el código de operación-l `%d'\n" -#: mmo.c:1576 +#: mmo.c:1575 #, 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:1612 +#: mmo.c:1611 #, 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:1658 +#: mmo.c:1657 #, 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:1697 +#: mmo.c:1696 #, 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:1706 +#: mmo.c:1705 #, 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:1729 +#: mmo.c:1728 #, 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" +msgstr "%s: fichero mmo inválido: el byte inicial del operando word debe ser 0 ó 1, se obtuvo %d para lop_fixrx\n" -#: mmo.c:1752 +#: mmo.c:1751 #, 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:1772 +#: mmo.c:1771 #, 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:1785 +#: mmo.c:1784 #, 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:1892 +#: mmo.c:1890 #, 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:1928 +#: mmo.c:1926 #, 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:1941 +#: mmo.c:1939 #, 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:2651 +#: mmo.c:2649 #, 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:2894 +#: mmo.c:2889 #, 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" +msgstr "%s: Definición de símbolo errónea: `Main' se estableció como %s en lugar de la dirección de inicio %s\n" -#: mmo.c:2986 +#: mmo.c:2981 #, 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:3031 +#: mmo.c:3026 #, 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:3083 +#: mmo.c:3078 #, 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:3134 +#: mmo.c:3129 #, 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:3140 +#: mmo.c:3135 #, 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:3145 +#: mmo.c:3140 #, 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" +msgstr "%s: dirección de inicio inválida para los registros inicializados de longitud %ld: 0x%lx%08lx\n" -#: oasys.c:881 +#: oasys.c:882 #, 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:139 +#: osf-core.c:140 #, 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" @@ -3013,46 +3384,66 @@ #. 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:723 +#: pe-mips.c:719 msgid "%B: unimplemented %s\n" msgstr "%B: %s sin implementar\n" -#: pe-mips.c:749 +#: pe-mips.c:745 msgid "%B: jump too far away\n" msgstr "%B: salto demasiado lejos\n" -#: pe-mips.c:775 +#: pe-mips.c:771 msgid "%B: bad pair/reflo after refhi\n" msgstr "%B: pair/reflo erróneo después de refhi\n" +#: pei-x86_64.c:444 +#, 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" + +#: pei-x86_64.c:448 peigen.c:1618 peigen.c:1801 pepigen.c:1618 pepigen.c:1801 +#: pex64igen.c:1618 pex64igen.c:1801 +#, c-format +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" + +#: pei-x86_64.c:450 +#, c-format +msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" +msgstr "vma:\t\t\tDireccInicio\t DireccFin \t InformaciónDesenvuelta\n" + #. XXX code yet to be written. -#: peicode.h:759 +#: peicode.h:751 msgid "%B: Unhandled import type; %x" msgstr "%B: Tipo de importación sin manejar; %x" -#: peicode.h:764 +#: peicode.h:756 msgid "%B: Unrecognised import type; %x" -msgstr "%B: Tipo de importación no reconocida; %x" +msgstr "%B: No se reconocer el tipo de importación; %x" -#: peicode.h:778 +#: peicode.h:770 msgid "%B: Unrecognised import name type; %x" -msgstr "%B: Tipo de nombre de importación no reconocida; %x" +msgstr "%B: No se reconoce el tipo de nombre de importación; %x" -#: peicode.h:1161 +#: peicode.h:1162 msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive" -msgstr "%B: Tipo de máquina (0x%x) no reconocida en el archivo de Formato de Importación de Bibliotecas" +msgstr "%B: No se reconoce el tipo de máquina (0x%x) en el archivo de Formato de Importación de Bibliotecas" -#: peicode.h:1173 +#: peicode.h:1174 msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive" -msgstr "%B: Tipo de máquina (0x%x) reconocida pero sin manejar en el archivo de Formato de Importación de Bibliotecas" +msgstr "%B: Se reconoce el tipo de máquina (0x%x) pero no se maneja en el archivo de Formato de Importación de Bibliotecas" -#: peicode.h:1191 +#: peicode.h:1192 msgid "%B: size field is zero in Import Library Format header" msgstr "%B: el tamaño del campo es cero en el encabezado del Formato de Importación de Bibliotecas" -#: peicode.h:1222 +#: peicode.h:1223 msgid "%B: string not null terminated in ILF object file." -msgstr "%B: cadena no terminada en null en el fichero objeto ILF." +msgstr "%B: cadena que no termina en null en el fichero objeto ILF." #: ppcboot.c:414 #, c-format @@ -3107,7 +3498,7 @@ msgid "Partition[%d] length = 0x%.8lx (%ld)\n" msgstr "Partición[%d] longitud = 0x%.8lx (%ld)\n" -#: som.c:5137 +#: som.c:5471 #, c-format msgid "" "\n" @@ -3116,13 +3507,13 @@ "\n" "Encabezado Auxiliar de Ejecución\n" -#: som.c:5440 +#: som.c:5776 msgid "som_sizeof_headers unimplemented" msgstr "som_sizeof_headers sin implementar" #: srec.c:261 msgid "%B:%d: Unexpected character `%s' in S-record file\n" -msgstr "%B:%d: Caractér `%s' inesperado en el fichero S-record\n" +msgstr "%B:%d: Carácter `%s' inesperado en el fichero S-record\n" #: srec.c:567 srec.c:600 msgid "%B:%d: Bad checksum in S-record file\n" @@ -3132,405 +3523,2133 @@ msgid "%B(%A+0x%lx): Stabs entry has invalid string index." msgstr "%B(%A+0x%lx): La entrada de cabos tiene una cadena índice inválida." -#: syms.c:1067 +#: syms.c:1079 msgid "Unsupported .stab relocation" msgstr "No se admite la reubicación .stab" -#: vms-gsd.c:338 -#, c-format -msgid "bfd_make_section (%s) failed" -msgstr "bfd_make_section (%s) falló" - -#: vms-gsd.c:353 -#, c-format -msgid "bfd_set_section_flags (%s, %x) failed" -msgstr "bfd_set_section_flags (%s, %x) falló" - -#: vms-gsd.c:388 -#, 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:679 +#: vms-alpha.c:1287 #, c-format -msgid "unknown gsd/egsd subtype %d" -msgstr "subtipo de gsd/egsd %d desconocido" +msgid "Unknown EGSD subtype %d" +msgstr "Subtipo de EGSD %d desconocido" -#: vms-hdr.c:328 -msgid "Object module NOT error-free !\n" -msgstr "¡ El módulo objeto NO está libre de errores !\n" - -#: vms-misc.c:474 +#: vms-alpha.c:1318 #, c-format msgid "Stack overflow (%d) in _bfd_vms_push" msgstr "Desbordamiento de la pila (%d) en _bfd_vms_push" -#: vms-misc.c:489 +#: vms-alpha.c:1331 msgid "Stack underflow in _bfd_vms_pop" msgstr "Desbordamiento por debajo de la pila en _bfd_vms_pop" -#: vms-misc.c:808 -msgid "_bfd_vms_output_counted called with zero bytes" -msgstr "se llamó _bfd_vms_output_counted con cero bytes" - -#: vms-misc.c:813 -msgid "_bfd_vms_output_counted called with too many bytes" -msgstr "se llamó _bfd_vms_output_counted con demasiados bytes" - -#: vms-misc.c:931 -#, c-format -msgid "Symbol %s replaced by %s\n" -msgstr "El símbolo %s fue reemplazado por %s\n" - -#: vms-misc.c:990 +#. These names have not yet been added to this switch statement. +#: vms-alpha.c:1568 #, c-format -msgid "failed to enter %s" -msgstr "falló la introducción de %s" +msgid "unknown ETIR command %d" +msgstr "orden ETIR %d desconocida" -#: vms-tir.c:57 -msgid "No Mem !" -msgstr "¡ No hay Memoria !" - -#: vms-tir.c:300 +#: vms-alpha.c:1755 #, c-format msgid "bad section index in %s" -msgstr "Índice de sección erróneo en %s" +msgstr "índice de sección erróneo en %s" -#: vms-tir.c:313 +#: vms-alpha.c:1768 #, c-format msgid "unsupported STA cmd %s" msgstr "no se admite la orden STA %s" -#: vms-tir.c:318 vms-tir.c:1120 -#, c-format -msgid "reserved STA cmd %d" -msgstr "orden STA %d reservada" - -#: vms-tir.c:410 vms-tir.c:432 -#, c-format -msgid "%s: no symbol \"%s\"" -msgstr "%s: no existe el símbolo \"%s\"" - +#. Insert field. #. Unsigned shift. #. Rotate. #. Redefine symbol to current location. #. Define a literal. -#: vms-tir.c:497 vms-tir.c:606 vms-tir.c:704 vms-tir.c:721 vms-tir.c:728 -#: vms-tir.c:736 vms-tir.c:1440 +#: vms-alpha.c:1944 vms-alpha.c:1975 vms-alpha.c:2222 #, c-format msgid "%s: not supported" msgstr "%s: no se admite" -#: vms-tir.c:502 vms-tir.c:1297 +#: vms-alpha.c:1950 #, c-format msgid "%s: not implemented" msgstr "%s: sin implementar" -#: vms-tir.c:506 vms-tir.c:1301 -#, c-format -msgid "reserved STO cmd %d" -msgstr "orden STO %d reservada" - -#: vms-tir.c:621 vms-tir.c:1445 +#: vms-alpha.c:2206 #, c-format -msgid "reserved OPR cmd %d" -msgstr "orden OPR %d reservada" +msgid "invalid use of %s with contexts" +msgstr "uso inválido de %s en contextos" -#: vms-tir.c:681 vms-tir.c:1509 +#: vms-alpha.c:2240 #, c-format -msgid "reserved CTL cmd %d" -msgstr "orden CTL %d reservada" - -#. stack byte from image -#. arg: none. -#: vms-tir.c:1028 -msgid "stack-from-image not implemented" -msgstr "pila-desde-imagen sin implementar" - -#: vms-tir.c:1046 -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:1060 -msgid "PASSMECH not fully implemented" -msgstr "PASSMECH no está completamente implementado" - -#: vms-tir.c:1079 -msgid "stack-local-symbol not fully implemented" -msgstr "pila-símbolo-local no está completamente implementado" - -#: vms-tir.c:1092 -msgid "stack-literal not fully implemented" -msgstr "pila-literal no está completamente implementado" +msgid "reserved cmd %d" +msgstr "orden %d reservada" -#: vms-tir.c:1113 -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:1387 vms-tir.c:1399 vms-tir.c:1411 vms-tir.c:1423 vms-tir.c:1488 -#: vms-tir.c:1496 vms-tir.c:1504 -#, c-format -msgid "%s: not fully implemented" -msgstr "%s: no está completamente implementado" +#: vms-alpha.c:2325 +msgid "Object module NOT error-free !\n" +msgstr "¡ El módulo objeto NO está libre de errores !\n" -#: vms-tir.c:1562 +#: vms-alpha.c:2754 #, c-format -msgid "obj code %d not found" -msgstr "no se encontró el código objeto %d" +msgid "Symbol %s replaced by %s\n" +msgstr "Se reemplazó el símbolo %s por %s\n" -#: vms-tir.c:1870 +#: vms-alpha.c:3757 #, c-format msgid "SEC_RELOC with no relocs in section %s" msgstr "SEC_RELOC sin reubicaciones en la sección %s" -#: vms-tir.c:2152 +#: vms-alpha.c:3810 vms-alpha.c:4041 +#, c-format +msgid "Size error in section %s" +msgstr "Error de tamaño en la sección %s" + +#: vms-alpha.c:3980 +msgid "Spurious ALPHA_R_BSR reloc" +msgstr "Reubicación ALPHA_R_BSR espuria" + +#: vms-alpha.c:4028 #, c-format msgid "Unhandled relocation %s" msgstr "Reubicación %s sin manejar" -#: xcofflink.c:566 +#: vms-alpha.c:4318 #, c-format -msgid "%s: XCOFF shared object when not producing XCOFF output" -msgstr "%s: objeto compartido XCOFF cuando no se produce salida XCOFF" +msgid "unknown source command %d" +msgstr "orden fuente %d desconocida" -#: xcofflink.c:587 -#, c-format -msgid "%s: dynamic object with no .loader section" -msgstr "%s: objeto dinámico sin sección .loader" +#: vms-alpha.c:4379 +msgid "DST__K_SET_LINUM_INCR not implemented" +msgstr "DST__K_SET_LINUM_INCR sin implementar" -#: xcofflink.c:1150 -msgid "%B: `%s' has line numbers but no enclosing section" -msgstr "%B: `%s' tiene números de línea pero no una sección contenedora" +#: vms-alpha.c:4385 +msgid "DST__K_SET_LINUM_INCR_W not implemented" +msgstr "DST__K_SET_LINUM_INCR_W sin implementar" -#: xcofflink.c:1202 -msgid "%B: class %d symbol `%s' has no aux entries" -msgstr "%B: clase %d símbolo `%s' no tiene entradas auxiliares" +#: vms-alpha.c:4391 +msgid "DST__K_RESET_LINUM_INCR not implemented" +msgstr "DST__K_RESET_LINUM_INCR sin implementar" -#: xcofflink.c:1225 -msgid "%B: symbol `%s' has unrecognized csect type %d" -msgstr "%B: el símbolo `%s' tiene un tipo csect %d que no se reconoce" +#: vms-alpha.c:4397 +msgid "DST__K_BEG_STMT_MODE not implemented" +msgstr "DST__K_BEG_STMT_MODE sin implementar" -#: xcofflink.c:1237 -msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" -msgstr "%B: símbolo XTY_ER `%s' erróneo: clase %d scnum %d scnlen %d" +#: vms-alpha.c:4403 +msgid "DST__K_END_STMT_MODE not implemented" +msgstr "DST__K_END_STMT_MODE sin implementar" -#: xcofflink.c:1273 -msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" -msgstr "%B: símbolo XMC_TCO `%s' es clase %d scnlen %d" +#: vms-alpha.c:4430 +msgid "DST__K_SET_PC not implemented" +msgstr "DST__K_SET_PC sin implementar" -#: xcofflink.c:1419 -msgid "%B: csect `%s' not in enclosing section" -msgstr "%B: csect `%s' no está contenido en una sección" +#: vms-alpha.c:4436 +msgid "DST__K_SET_PC_W not implemented" +msgstr "DST__K_SET_PC_W sin implementar" -#: xcofflink.c:1526 -msgid "%B: misplaced XTY_LD `%s'" -msgstr "%B: XTY_LD `%s' mal ubicado" +#: vms-alpha.c:4442 +msgid "DST__K_SET_PC_L not implemented" +msgstr "DST__K_SET_PC_L sin implementar" -#: xcofflink.c:1842 -msgid "%B: reloc %s:%d not in csect" -msgstr "%B: la reubicación %s:%d no está en csect" +#: vms-alpha.c:4448 +msgid "DST__K_SET_STMTNUM not implemented" +msgstr "DST__K_SET_STMTNUM sin implementar" -#: xcofflink.c:2640 +#: vms-alpha.c:4491 #, c-format -msgid "%s: no such symbol" -msgstr "%s: no hay tal símbolo" +msgid "unknown line command %d" +msgstr "orden de línea %d desconocida" -#: xcofflink.c:2869 +#: vms-alpha.c:4938 vms-alpha.c:4955 vms-alpha.c:4969 vms-alpha.c:4984 +#: vms-alpha.c:4996 vms-alpha.c:5007 vms-alpha.c:5019 #, c-format -msgid "warning: attempt to export undefined symbol `%s'" -msgstr "aviso: intento de exportar el símbolo sin definir `%s'" +msgid "Unknown reloc %s + %s" +msgstr "Reubicación %s + %s desconocida" -#: xcofflink.c:3036 -msgid "error: undefined symbol __rtinit" -msgstr "error: símbolo __rtinit indefinido" - -#: xcofflink.c:3656 +#: vms-alpha.c:5074 #, 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" +msgid "Unknown reloc %s" +msgstr "Reubicación %s desconocida" -#: xcofflink.c:4492 -msgid "%B: loader reloc in unrecognized section `%A'" -msgstr "%B: reubicación del cargador en la sección `%A' no reconocida" +#: vms-alpha.c:5087 +msgid "Invalid section index in ETIR" +msgstr "Índice de sección inválido en ETIR" -#: xcofflink.c:4513 -msgid "%B: `%s' in loader reloc but not loader sym" -msgstr "%B: `%s' en la reubicación del cargador pero no es un símbolo del cargador" +#: vms-alpha.c:5134 +#, c-format +msgid "Unknown symbol in command %s" +msgstr "Símbolo desconocido en la orden %s" -#: xcofflink.c:4528 -msgid "%B: loader reloc in read-only section %A" -msgstr "%B: reubicación del cargador en la sección de sólo lectura %A" +#: vms-alpha.c:5649 +#, c-format +msgid " EMH %u (len=%u): " +msgstr " EMH %u (lon=%u): " -#: xcofflink.c:4937 xcofflink.c:4999 xcofflink.c:5294 +#: vms-alpha.c:5658 #, c-format -msgid "%s: loader reloc in unrecognized section `%s'" -msgstr "%s: reubicación del cargador en la sección `%s' no reconocida" +msgid "Module header\n" +msgstr "Encabezado de módulo\n" -#: xcofflink.c:5305 +#: vms-alpha.c:5659 #, 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" +msgid " structure level: %u\n" +msgstr " nivel estruct : %u\n" -#: elf32-ia64.c:1037 elf64-ia64.c:1037 -msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch." -msgstr "%B: No se puede relajar br en 0x%lx en la sección `%A'. Por favor use brl o ramificación indirecta." +#: vms-alpha.c:5660 +#, c-format +msgid " max record size: %u\n" +msgstr " tam reg máximo : %u\n" -#: elf32-ia64.c:2742 elf64-ia64.c:2742 -msgid "@pltoff reloc against local symbol" -msgstr "reubicación @pltoff contra un símbolo local" +#: vms-alpha.c:5663 +#, c-format +msgid " module name : %.*s\n" +msgstr " nombre módulo : %.*s\n" -#: elf32-ia64.c:4317 elf64-ia64.c:4317 +#: vms-alpha.c:5665 #, c-format -msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" -msgstr "%s: segmento de datos short desbordado (0x%lx >= 0x400000)" +msgid " module version : %.*s\n" +msgstr " versión módulo : %.*s\n" -#: elf32-ia64.c:4328 elf64-ia64.c:4328 +#: vms-alpha.c:5667 #, c-format -msgid "%s: __gp does not cover short data segment" -msgstr "%s: __gp no cubre el segmento de datos short" +msgid " compile date : %.17s\n" +msgstr " fecha compil : %.17s\n" -#: elf32-ia64.c:4598 elf64-ia64.c:4598 -msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" -msgstr "%B: código que no es pic con reubicación imm contra el símbolo dinámico %s" +#: vms-alpha.c:5672 +#, c-format +msgid "Language Processor Name\n" +msgstr "Nombre de Procesador de Lenguaje\n" -#: elf32-ia64.c:4665 elf64-ia64.c:4665 -msgid "%B: @gprel relocation against dynamic symbol %s" -msgstr "%B: reubicación @gprel contra el símbolo dinámico %s" +#: vms-alpha.c:5673 +#, c-format +msgid " language name: %.*s\n" +msgstr " nombre lenguaje: %.*s\n" -#: elf32-ia64.c:4728 elf64-ia64.c:4728 -msgid "%B: linking non-pic code in a position independent executable" -msgstr "%B: se enlaza código que no es pic en un ejecutable independiente de posición" +#: vms-alpha.c:5680 +#, c-format +msgid "Source Files Header\n" +msgstr "Encabezado de Ficheros Fuente\n" -#: elf32-ia64.c:4865 elf64-ia64.c:4865 -msgid "%B: @internal branch to dynamic symbol %s" -msgstr "%B: ramificación @internal al símbolo dinámico %s" +#: vms-alpha.c:5681 +#, c-format +msgid " file: %.*s\n" +msgstr " fichero: %.*s\n" -#: elf32-ia64.c:4867 elf64-ia64.c:4867 +#: vms-alpha.c:5688 +#, c-format +msgid "Title Text Header\n" +msgstr "Encabezado de Texto de Título\n" + +#: vms-alpha.c:5689 +#, c-format +msgid " title: %.*s\n" +msgstr " título: %.*s\n" + +#: vms-alpha.c:5696 +#, c-format +msgid "Copyright Header\n" +msgstr "Encabezado de Copyright\n" + +#: vms-alpha.c:5697 +#, c-format +msgid " copyright: %.*s\n" +msgstr " copyright: %.*s\n" + +#: vms-alpha.c:5703 +#, c-format +msgid "unhandled emh subtype %u\n" +msgstr "subtipo emh %u sin manejar\n" + +#: vms-alpha.c:5713 +#, c-format +msgid " EEOM (len=%u):\n" +msgstr " EEOM (lon=%u):\n" + +#: vms-alpha.c:5714 +#, c-format +msgid " number of cond linkage pairs: %u\n" +msgstr " número de pares de enlace cond: %u\n" + +#: vms-alpha.c:5716 +#, c-format +msgid " completion code: %u\n" +msgstr " código de completado: %u\n" + +#: vms-alpha.c:5720 +#, c-format +msgid " transfer addr flags: 0x%02x\n" +msgstr " ops dirección transf: 0x%02x\n" + +#: vms-alpha.c:5721 +#, c-format +msgid " transfer addr psect: %u\n" +msgstr " psect dirección transf: %u\n" + +#: vms-alpha.c:5723 +#, c-format +msgid " transfer address : 0x%08x\n" +msgstr " dirección transf : 0x%08x\n" + +#: vms-alpha.c:5732 +msgid " WEAK" +msgstr " WEAK" + +#: vms-alpha.c:5734 +msgid " DEF" +msgstr " DEF" + +#: vms-alpha.c:5736 +msgid " UNI" +msgstr " UNI" + +#: vms-alpha.c:5738 vms-alpha.c:5759 +msgid " REL" +msgstr " REL" + +#: vms-alpha.c:5740 +msgid " COMM" +msgstr " COMM" + +#: vms-alpha.c:5742 +msgid " VECEP" +msgstr " VECEP" + +#: vms-alpha.c:5744 +msgid " NORM" +msgstr " NORM" + +#: vms-alpha.c:5746 +msgid " QVAL" +msgstr " QVAL" + +#: vms-alpha.c:5753 +msgid " PIC" +msgstr " PIC" + +#: vms-alpha.c:5755 +msgid " LIB" +msgstr " LIB" + +#: vms-alpha.c:5757 +msgid " OVR" +msgstr " OVR" + +#: vms-alpha.c:5761 +msgid " GBL" +msgstr " GBL" + +#: vms-alpha.c:5763 +msgid " SHR" +msgstr " SHR" + +#: vms-alpha.c:5765 +msgid " EXE" +msgstr " EXE" + +#: vms-alpha.c:5767 +msgid " RD" +msgstr " RD" + +#: vms-alpha.c:5769 +msgid " WRT" +msgstr " WRT" + +#: vms-alpha.c:5771 +msgid " VEC" +msgstr " VEC" + +#: vms-alpha.c:5773 +msgid " NOMOD" +msgstr " NOMOD" + +#: vms-alpha.c:5775 +msgid " COM" +msgstr " COM" + +#: vms-alpha.c:5777 +msgid " 64B" +msgstr " 64B" + +#: vms-alpha.c:5786 +#, c-format +msgid " EGSD (len=%u):\n" +msgstr " EGSD (lon=%u):\n" + +#: vms-alpha.c:5798 +#, c-format +msgid " EGSD entry %2u (type: %u, len: %u): " +msgstr " entrada EGSD %2u (tipo: %u, lon: %u): " + +#: vms-alpha.c:5810 +#, c-format +msgid "PSC - Program section definition\n" +msgstr "PSC - Definición de sección de programa\n" + +#: vms-alpha.c:5811 vms-alpha.c:5828 +#, c-format +msgid " alignment : 2**%u\n" +msgstr " alineación : 2**%u\n" + +#: vms-alpha.c:5812 vms-alpha.c:5829 +#, c-format +msgid " flags : 0x%04x" +msgstr " opciones : 0x%04x" + +#: vms-alpha.c:5816 +#, c-format +msgid " alloc (len): %u (0x%08x)\n" +msgstr " aloj (lon) : %u (0x%08x)\n" + +#: vms-alpha.c:5817 vms-alpha.c:5874 vms-alpha.c:5923 +#, c-format +msgid " name : %.*s\n" +msgstr " nombre : %.*s\n" + +#: vms-alpha.c:5827 +#, c-format +msgid "SPSC - Shared Image Program section def\n" +msgstr "SPSC - def sección Programa de Imagen Compartida\n" + +#: vms-alpha.c:5833 +#, c-format +msgid " alloc (len) : %u (0x%08x)\n" +msgstr " aloj (lon) : %u (0x%08x)\n" + +#: vms-alpha.c:5834 +#, c-format +msgid " image offset : 0x%08x\n" +msgstr " despl imagen : 0x%08x\n" + +#: vms-alpha.c:5836 +#, c-format +msgid " symvec offset : 0x%08x\n" +msgstr " despl symvec : 0x%08x\n" + +#: vms-alpha.c:5838 +#, c-format +msgid " name : %.*s\n" +msgstr " name : %.*s\n" + +#: vms-alpha.c:5851 +#, c-format +msgid "SYM - Global symbol definition\n" +msgstr "SYM - Definición de símbolo global\n" + +#: vms-alpha.c:5852 vms-alpha.c:5912 vms-alpha.c:5933 vms-alpha.c:5952 +#, c-format +msgid " flags: 0x%04x" +msgstr " opciones: 0x%04x" + +#: vms-alpha.c:5855 +#, c-format +msgid " psect offset: 0x%08x\n" +msgstr " despl psect: 0x%08x\n" + +#: vms-alpha.c:5859 +#, c-format +msgid " code address: 0x%08x\n" +msgstr " dirección código: 0x%08x\n" + +#: vms-alpha.c:5861 +#, c-format +msgid " psect index for entry point : %u\n" +msgstr " índice psect para punto de entrada : %u\n" + +#: vms-alpha.c:5864 vms-alpha.c:5940 vms-alpha.c:5959 +#, c-format +msgid " psect index : %u\n" +msgstr " índice psect : %u\n" + +#: vms-alpha.c:5866 vms-alpha.c:5942 vms-alpha.c:5961 +#, c-format +msgid " name : %.*s\n" +msgstr " nombre : %.*s\n" + +#: vms-alpha.c:5873 +#, c-format +msgid "SYM - Global symbol reference\n" +msgstr "SYM - Referencia de símbolo global\n" + +#: vms-alpha.c:5885 +#, c-format +msgid "IDC - Ident Consistency check\n" +msgstr "IDC - Revisor de Consistencia de Identación\n" + +#: vms-alpha.c:5886 +#, c-format +msgid " flags : 0x%08x" +msgstr " opciones : 0x%08x" + +#: vms-alpha.c:5890 +#, c-format +msgid " id match : %x\n" +msgstr " coinc id : %x\n" + +#: vms-alpha.c:5892 +#, c-format +msgid " error severity: %x\n" +msgstr " severidad err : %x\n" + +#: vms-alpha.c:5895 +#, c-format +msgid " entity name : %.*s\n" +msgstr " nombre entidad: %.*s\n" + +#: vms-alpha.c:5897 +#, c-format +msgid " object name : %.*s\n" +msgstr " nombre objeto : %.*s\n" + +#: vms-alpha.c:5900 +#, c-format +msgid " binary ident : 0x%08x\n" +msgstr " ident binaria : 0x%08x\n" + +#: vms-alpha.c:5903 +#, c-format +msgid " ascii ident : %.*s\n" +msgstr " ident ascii : %.*s\n" + +#: vms-alpha.c:5911 +#, c-format +msgid "SYMG - Universal symbol definition\n" +msgstr "SYMG - Definición de símbolo universal\n" + +#: vms-alpha.c:5915 +#, c-format +msgid " symbol vector offset: 0x%08x\n" +msgstr " despl vector símbolo: 0x%08x\n" + +#: vms-alpha.c:5917 +#, c-format +msgid " entry point: 0x%08x\n" +msgstr " punto de entrada: 0x%08x\n" + +#: vms-alpha.c:5919 +#, c-format +msgid " proc descr : 0x%08x\n" +msgstr " descr proc : 0x%08x\n" + +#: vms-alpha.c:5921 +#, c-format +msgid " psect index: %u\n" +msgstr " índice psect: %u\n" + +#: vms-alpha.c:5932 +#, c-format +msgid "SYMV - Vectored symbol definition\n" +msgstr "SYMV - Definición de símbolo vectorizado\n" + +#: vms-alpha.c:5936 +#, c-format +msgid " vector : 0x%08x\n" +msgstr " vector : 0x%08x\n" + +#: vms-alpha.c:5938 vms-alpha.c:5957 +#, c-format +msgid " psect offset: %u\n" +msgstr " despl psect : %u\n" + +#: vms-alpha.c:5951 +#, c-format +msgid "SYMM - Global symbol definition with version\n" +msgstr "SYMM - Definición de símbolo global con versión\n" + +#: vms-alpha.c:5955 +#, c-format +msgid " version mask: 0x%08x\n" +msgstr " máscara versión: 0x%08x\n" + +#: vms-alpha.c:5966 +#, c-format +msgid "unhandled egsd entry type %u\n" +msgstr "tipo de entrada egsd %u sin manejar\n" + +#: vms-alpha.c:6000 +#, c-format +msgid " linkage index: %u, replacement insn: 0x%08x\n" +msgstr " índice enlace: %u, insn reemplazo: 0x%08x\n" + +#: vms-alpha.c:6003 +#, c-format +msgid " psect idx 1: %u, offset 1: 0x%08x %08x\n" +msgstr " ind psect 1: %u, despl 1: 0x%08x %08x\n" + +#: vms-alpha.c:6007 +#, c-format +msgid " psect idx 2: %u, offset 2: 0x%08x %08x\n" +msgstr " ind psect 2: %u, despl 2: 0x%08x %08x\n" + +#: vms-alpha.c:6012 +#, c-format +msgid " psect idx 3: %u, offset 3: 0x%08x %08x\n" +msgstr " ind psect 3: %u, despl 3: 0x%08x %08x\n" + +#: vms-alpha.c:6017 +#, c-format +msgid " global name: %.*s\n" +msgstr " nombre global: %.*s\n" + +#: vms-alpha.c:6027 +#, c-format +msgid " %s (len=%u+%u):\n" +msgstr " %s (lon=%u+%u):\n" + +#: vms-alpha.c:6042 +#, c-format +msgid " (type: %3u, size: 4+%3u): " +msgstr " (tipo: %3u, tam: 4+%3u): " + +#: vms-alpha.c:6046 +#, c-format +msgid "STA_GBL (stack global) %.*s\n" +msgstr "STA_GBL (pila global) %.*s\n" + +#: vms-alpha.c:6050 +#, c-format +msgid "STA_LW (stack longword) 0x%08x\n" +msgstr "STA_LW (pila longword) 0x%08x\n" + +#: vms-alpha.c:6054 +#, c-format +msgid "STA_QW (stack quadword) 0x%08x %08x\n" +msgstr "STA_QW (pila quadword) 0x%08x %08x\n" + +#: vms-alpha.c:6059 +#, c-format +msgid "STA_PQ (stack psect base + offset)\n" +msgstr "STA_PQ (pila psect base + despl)\n" + +#: vms-alpha.c:6060 +#, c-format +msgid " psect: %u, offset: 0x%08x %08x\n" +msgstr " psect: %u, despl: 0x%08x %08x\n" + +#: vms-alpha.c:6066 +#, c-format +msgid "STA_LI (stack literal)\n" +msgstr "STA_LI (pila literal)\n" + +#: vms-alpha.c:6069 +#, c-format +msgid "STA_MOD (stack module)\n" +msgstr "STA_MOD (pila módulo)\n" + +#: vms-alpha.c:6072 +#, c-format +msgid "STA_CKARG (compare procedure argument)\n" +msgstr "STA_CKARG (compara argumentos de procedimientos)\n" + +#: vms-alpha.c:6076 +#, c-format +msgid "STO_B (store byte)\n" +msgstr "STO_B (almacena byte)\n" + +#: vms-alpha.c:6079 +#, c-format +msgid "STO_W (store word)\n" +msgstr "STO_W (almacena word)\n" + +#: vms-alpha.c:6082 +#, c-format +msgid "STO_LW (store longword)\n" +msgstr "STO_LW (almacena longword)\n" + +#: vms-alpha.c:6085 +#, c-format +msgid "STO_QW (store quadword)\n" +msgstr "STO_QW (almacena quadword)\n" + +#: vms-alpha.c:6091 +#, c-format +msgid "STO_IMMR (store immediate repeat) %u bytes\n" +msgstr "STO_IMMR (almacena inmediato repetido) %u bytes\n" + +#: vms-alpha.c:6098 +#, c-format +msgid "STO_GBL (store global) %.*s\n" +msgstr "STO_GBL (almacena global) %.*s\n" + +#: vms-alpha.c:6102 +#, c-format +msgid "STO_CA (store code address) %.*s\n" +msgstr "STO_CA (almacena direcc código) %.*s\n" + +#: vms-alpha.c:6106 +#, c-format +msgid "STO_RB (store relative branch)\n" +msgstr "STO_RB (almacena ramif relativa)\n" + +#: vms-alpha.c:6109 +#, c-format +msgid "STO_AB (store absolute branch)\n" +msgstr "STO_AB (almacena ramif absoluta)\n" + +#: vms-alpha.c:6112 +#, c-format +msgid "STO_OFF (store offset to psect)\n" +msgstr "STO_OFF (almacena despl para psect)\n" + +#: vms-alpha.c:6118 +#, c-format +msgid "STO_IMM (store immediate) %u bytes\n" +msgstr "STO_IMM (almacena inmediato) %u bytes\n" + +#: vms-alpha.c:6125 +#, c-format +msgid "STO_GBL_LW (store global longword) %.*s\n" +msgstr "STO_GBL_LW (almacena global longword) %.*s\n" + +#: vms-alpha.c:6129 +#, c-format +msgid "STO_OFF (store LP with procedure signature)\n" +msgstr "STO_OFF (almacena LP con firma de procedimiento)\n" + +#: vms-alpha.c:6132 +#, c-format +msgid "STO_BR_GBL (store branch global) *todo*\n" +msgstr "STO_BR_GBL (almacena ramif global) *pend*\n" + +#: vms-alpha.c:6135 +#, c-format +msgid "STO_BR_PS (store branch psect + offset) *todo*\n" +msgstr "STO_BR_PS (almacena ramif psect + despl) *pend*\n" + +#: vms-alpha.c:6139 +#, c-format +msgid "OPR_NOP (no-operation)\n" +msgstr "OPR_NOP (no operación)\n" + +#: vms-alpha.c:6142 +#, c-format +msgid "OPR_ADD (add)\n" +msgstr "OPR_ADD (adición)\n" + +#: vms-alpha.c:6145 +#, c-format +msgid "OPR_SUB (substract)\n" +msgstr "OPR_SUB (sustracción)\n" + +#: vms-alpha.c:6148 +#, c-format +msgid "OPR_MUL (multiply)\n" +msgstr "OPR_MUL (multiplicación)\n" + +#: vms-alpha.c:6151 +#, c-format +msgid "OPR_DIV (divide)\n" +msgstr "OPR_DIV (división)\n" + +#: vms-alpha.c:6154 +#, c-format +msgid "OPR_AND (logical and)\n" +msgstr "OPR_AND (and lógico)\n" + +#: vms-alpha.c:6157 +#, c-format +msgid "OPR_IOR (logical inclusive or)\n" +msgstr "OPR_IOR (or lógico inclusivo)\n" + +#: vms-alpha.c:6160 +#, c-format +msgid "OPR_EOR (logical exclusive or)\n" +msgstr "OPR_EOR (or lógico exclusivo)\n" + +#: vms-alpha.c:6163 +#, c-format +msgid "OPR_NEG (negate)\n" +msgstr "OPR_NEG (negación)\n" + +#: vms-alpha.c:6166 +#, c-format +msgid "OPR_COM (complement)\n" +msgstr "OPR_COM (complemento)\n" + +#: vms-alpha.c:6169 +#, c-format +msgid "OPR_INSV (insert field)\n" +msgstr "OPR_INSV (insertar campo)\n" + +#: vms-alpha.c:6172 +#, c-format +msgid "OPR_ASH (arithmetic shift)\n" +msgstr "OPR_ASH (despl aritmético)\n" + +#: vms-alpha.c:6175 +#, c-format +msgid "OPR_USH (unsigned shift)\n" +msgstr "OPR_USH (despl sin signo)\n" + +#: vms-alpha.c:6178 +#, c-format +msgid "OPR_ROT (rotate)\n" +msgstr "OPR_ROT (rotación)\n" + +#: vms-alpha.c:6181 +#, c-format +msgid "OPR_SEL (select)\n" +msgstr "OPR_SEL (selección)\n" + +#: vms-alpha.c:6184 +#, c-format +msgid "OPR_REDEF (redefine symbol to curr location)\n" +msgstr "OPR_REDEF (redefine símbolo a la ubicación actual)\n" + +#: vms-alpha.c:6187 +#, c-format +msgid "OPR_REDEF (define a literal)\n" +msgstr "OPR_REDEF (define una literal)\n" + +#: vms-alpha.c:6191 +#, c-format +msgid "STC_LP (store cond linkage pair)\n" +msgstr "STC_LP (almacena par de enlace cond)\n" + +#: vms-alpha.c:6195 +#, c-format +msgid "STC_LP_PSB (store cond linkage pair + signature)\n" +msgstr "STC_LP_PSB (almacena par de enlace cond + firma)\n" + +#: vms-alpha.c:6196 +#, c-format +msgid " linkage index: %u, procedure: %.*s\n" +msgstr " índice enlace: %u, procedimiento: %.*s\n" + +#: vms-alpha.c:6199 +#, c-format +msgid " signature: %.*s\n" +msgstr " firma: %.*s\n" + +#: vms-alpha.c:6202 +#, c-format +msgid "STC_GBL (store cond global)\n" +msgstr "STC_GBL (almacena cond global)\n" + +#: vms-alpha.c:6203 +#, c-format +msgid " linkage index: %u, global: %.*s\n" +msgstr " índice enlace: %u, global: %.*s\n" + +#: vms-alpha.c:6207 +#, c-format +msgid "STC_GCA (store cond code address)\n" +msgstr "STC_GCA (almacena dirección de código cond)\n" + +#: vms-alpha.c:6208 +#, c-format +msgid " linkage index: %u, procedure name: %.*s\n" +msgstr " índice enlace: %u, nombre procedimiento: %.*s\n" + +#: vms-alpha.c:6212 +#, c-format +msgid "STC_PS (store cond psect + offset)\n" +msgstr "STC_PS (almacena psect cond + despl)\n" + +#: vms-alpha.c:6214 +#, c-format +msgid " linkage index: %u, psect: %u, offset: 0x%08x %08x\n" +msgstr " índice enlace: %u, psect: %u, despl: 0x%08x %08x\n" + +#: vms-alpha.c:6221 +#, c-format +msgid "STC_NOP_GBL (store cond NOP at global addr)\n" +msgstr "STC_NOP_GBL (almacena NOP cond en dirección global)\n" + +#: vms-alpha.c:6225 +#, c-format +msgid "STC_NOP_PS (store cond NOP at psect + offset)\n" +msgstr "STC_NOP_PS (almacena NOP cond en psect + despl)\n" + +#: vms-alpha.c:6229 +#, c-format +msgid "STC_BSR_GBL (store cond BSR at global addr)\n" +msgstr "STC_BSR_GBL (almacena BSR cond en dirección global)\n" + +#: vms-alpha.c:6233 +#, c-format +msgid "STC_BSR_PS (store cond BSR at psect + offset)\n" +msgstr "STC_BSR_PS (almacena BSR cond en psect + despl)\n" + +#: vms-alpha.c:6237 +#, c-format +msgid "STC_LDA_GBL (store cond LDA at global addr)\n" +msgstr "STC_LDA_GBL (almacena LDA cond en dirección global)\n" + +#: vms-alpha.c:6241 +#, c-format +msgid "STC_LDA_PS (store cond LDA at psect + offset)\n" +msgstr "STC_LDA_PS (almacena LDA cond en psect + despl)\n" + +#: vms-alpha.c:6245 +#, c-format +msgid "STC_BOH_GBL (store cond BOH at global addr)\n" +msgstr "STC_BOH_GBL (almacena BOH cond en dirección global)\n" + +#: vms-alpha.c:6249 +#, c-format +msgid "STC_BOH_PS (store cond BOH at psect + offset)\n" +msgstr "STC_BOH_PS (almacena BOH cond en psect + despl)\n" + +#: vms-alpha.c:6254 +#, c-format +msgid "STC_NBH_GBL (store cond or hint at global addr)\n" +msgstr "STC_NBH_GBL (almacena cond o pista en dirección global)\n" + +#: vms-alpha.c:6258 +#, c-format +msgid "STC_NBH_PS (store cond or hint at psect + offset)\n" +msgstr "STC_NBH_PS (almacena cond o pista en psect + despl)\n" + +#: vms-alpha.c:6262 +#, c-format +msgid "CTL_SETRB (set relocation base)\n" +msgstr "CTL_SETRB (define base de reubicación)\n" + +#: vms-alpha.c:6268 +#, c-format +msgid "CTL_AUGRB (augment relocation base) %u\n" +msgstr "CTL_AUGRB (aumenta base de reubicación) %u\n" + +#: vms-alpha.c:6272 +#, c-format +msgid "CTL_DFLOC (define location)\n" +msgstr "CTL_DFLOC (define ubicación)\n" + +#: vms-alpha.c:6275 +#, c-format +msgid "CTL_STLOC (set location)\n" +msgstr "CTL_STLOC (establece ubicación)\n" + +#: vms-alpha.c:6278 +#, c-format +msgid "CTL_STKDL (stack defined location)\n" +msgstr "CTL_STKDL (ubicación definida de pila)\n" + +#: vms-alpha.c:6281 vms-alpha.c:6695 +#, c-format +msgid "*unhandled*\n" +msgstr "*sin manejar*\n" + +#: vms-alpha.c:6311 vms-alpha.c:6350 +#, c-format +msgid "cannot read GST record length\n" +msgstr "no se puede leer la longitud del registro GST\n" + +#. Ill-formed. +#: vms-alpha.c:6332 +#, c-format +msgid "cannot find EMH in first GST record\n" +msgstr "no se puede encontrar EMH en el primer registro GST\n" + +#: vms-alpha.c:6358 +#, c-format +msgid "cannot read GST record header\n" +msgstr "no se puede leer el encabezado del registro GST\n" + +#: vms-alpha.c:6371 +#, c-format +msgid " corrupted GST\n" +msgstr " GST corrupto\n" + +#: vms-alpha.c:6379 +#, c-format +msgid "cannot read GST record\n" +msgstr "no se puede leer el registro GST\n" + +#: vms-alpha.c:6408 +#, c-format +msgid " unhandled EOBJ record type %u\n" +msgstr " tipo de registro EOBJ %u sin manejar\n" + +#: vms-alpha.c:6431 +#, c-format +msgid " bitcount: %u, base addr: 0x%08x\n" +msgstr " cuenta bit: %u, direcc base: 0x%08x\n" + +#: vms-alpha.c:6444 +#, c-format +msgid " bitmap: 0x%08x (count: %u):\n" +msgstr " mapa bit: 0x%08x (cuenta: %u):\n" + +#: vms-alpha.c:6451 +#, c-format +msgid " %08x" +msgstr " %08x" + +#: vms-alpha.c:6476 +#, c-format +msgid " image %u (%u entries)\n" +msgstr " imagen %u (%u entradas)\n" + +#: vms-alpha.c:6481 +#, c-format +msgid " offset: 0x%08x, val: 0x%08x\n" +msgstr " despl: 0x%08x, val: 0x%08x\n" + +#: vms-alpha.c:6502 +#, c-format +msgid " image %u (%u entries), offsets:\n" +msgstr " imagen %u (%u entradas), desplazamientos:\n" + +#: vms-alpha.c:6509 +#, c-format +msgid " 0x%08x" +msgstr " 0x%08x" + +#. 64 bits. +#: vms-alpha.c:6631 +#, c-format +msgid "64 bits *unhandled*\n" +msgstr "64 bits *sin manejar*\n" + +#: vms-alpha.c:6635 +#, c-format +msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n" +msgstr "clase: %u, tipod: %u, long: %u, puntero: 0x%08x\n" + +#: vms-alpha.c:6646 +#, c-format +msgid "non-contiguous array of %s\n" +msgstr "matriz no contigua de %s\n" + +#: vms-alpha.c:6650 +#, c-format +msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n" +msgstr "dimct: %u, aops: 0x%02x, dígitos: %u, escala: %u\n" + +#: vms-alpha.c:6654 +#, c-format +msgid "arsize: %u, a0: 0x%08x\n" +msgstr "artam: %u, a0: 0x%08x\n" + +#: vms-alpha.c:6658 +#, c-format +msgid "Strides:\n" +msgstr "Estribos:\n" + +#: vms-alpha.c:6663 +#, c-format +msgid "[%u]: %u\n" +msgstr "[%u]: %u\n" + +#: vms-alpha.c:6668 +#, c-format +msgid "Bounds:\n" +msgstr "Límites:\n" + +#: vms-alpha.c:6673 +#, c-format +msgid "[%u]: Lower: %u, upper: %u\n" +msgstr "[%u]: Inferior: %u, superior: %u\n" + +#: vms-alpha.c:6685 +#, c-format +msgid "unaligned bit-string of %s\n" +msgstr "cadena de bit sin alinear de %s\n" + +#: vms-alpha.c:6689 +#, c-format +msgid "base: %u, pos: %u\n" +msgstr "base: %u, pos: %u\n" + +#: vms-alpha.c:6709 +#, c-format +msgid "vflags: 0x%02x, value: 0x%08x " +msgstr "vops: 0x%02x, valor: 0x%08x " + +#: vms-alpha.c:6715 +#, c-format +msgid "(no value)\n" +msgstr "(sin valor)\n" + +#: vms-alpha.c:6718 +#, c-format +msgid "(not active)\n" +msgstr "(no activo)\n" + +#: vms-alpha.c:6721 +#, c-format +msgid "(not allocated)\n" +msgstr "(sin ubicar)\n" + +#: vms-alpha.c:6724 +#, c-format +msgid "(descriptor)\n" +msgstr "(descriptor)\n" + +#: vms-alpha.c:6728 +#, c-format +msgid "(trailing value)\n" +msgstr "(valor restante)\n" + +#: vms-alpha.c:6731 +#, c-format +msgid "(value spec follows)\n" +msgstr "(valor spec a continuación)\n" + +#: vms-alpha.c:6734 +#, c-format +msgid "(at bit offset %u)\n" +msgstr "(en el despl de bit %u)\n" + +#: vms-alpha.c:6737 +#, c-format +msgid "(reg: %u, disp: %u, indir: %u, kind: " +msgstr "(reg: %u, disp: %u, indir: %u, género: " + +#: vms-alpha.c:6744 +msgid "literal" +msgstr "literal" + +#: vms-alpha.c:6747 +msgid "address" +msgstr "dirección" + +#: vms-alpha.c:6750 +msgid "desc" +msgstr "desc" + +#: vms-alpha.c:6753 +msgid "reg" +msgstr "reg" + +#: vms-alpha.c:6828 +#, c-format +msgid "Debug symbol table:\n" +msgstr "Tabla de símbolos de depuración:\n" + +#: vms-alpha.c:6839 +#, c-format +msgid "cannot read DST header\n" +msgstr "no se puede leer el encabezado DST\n" + +#: vms-alpha.c:6844 +#, c-format +msgid " type: %3u, len: %3u (at 0x%08x): " +msgstr " tipo: %3u, lon: %3u (en 0x%08x): " + +#: vms-alpha.c:6858 +#, c-format +msgid "cannot read DST symbol\n" +msgstr "no se puede leer el símbolo DST\n" + +#: vms-alpha.c:6901 +#, c-format +msgid "standard data: %s\n" +msgstr "datos estándar: %s\n" + +#: vms-alpha.c:6904 vms-alpha.c:6988 +#, c-format +msgid " name: %.*s\n" +msgstr " nombre: %.*s\n" + +#: vms-alpha.c:6911 +#, c-format +msgid "modbeg\n" +msgstr "modini\n" + +#: vms-alpha.c:6912 +#, c-format +msgid " flags: %d, language: %u, major: %u, minor: %u\n" +msgstr " ops: %d, lenguaje: %u, mayor: %u, menor: %u\n" + +#: vms-alpha.c:6918 vms-alpha.c:7184 +#, c-format +msgid " module name: %.*s\n" +msgstr " nom módulo : %.*s\n" + +#: vms-alpha.c:6921 +#, c-format +msgid " compiler : %.*s\n" +msgstr " compilador : %.*s\n" + +#: vms-alpha.c:6926 +#, c-format +msgid "modend\n" +msgstr "modfin\n" + +#: vms-alpha.c:6933 +msgid "rtnbeg\n" +msgstr "rtnini\n" + +#: vms-alpha.c:6934 +#, c-format +msgid " flags: %u, address: 0x%08x, pd-address: 0x%08x\n" +msgstr " ops: %u, dirección: 0x%08x, direcc-pd: 0x%08x\n" + +#: vms-alpha.c:6939 +#, c-format +msgid " routine name: %.*s\n" +msgstr " nom rutina : %.*s\n" + +#: vms-alpha.c:6947 +#, c-format +msgid "rtnend: size 0x%08x\n" +msgstr "rtnfin: tam 0x%08x\n" + +#: vms-alpha.c:6955 +#, c-format +msgid "prolog: bkpt address 0x%08x\n" +msgstr "prolog: dirección bkpt 0x%08x\n" + +#: vms-alpha.c:6963 +#, c-format +msgid "epilog: flags: %u, count: %u\n" +msgstr "epilog: ops: %u, cuenta: %u\n" + +#: vms-alpha.c:6972 +#, c-format +msgid "blkbeg: address: 0x%08x, name: %.*s\n" +msgstr "blkini: dirección: 0x%08x, nombre: %.*s\n" + +#: vms-alpha.c:6981 +#, c-format +msgid "blkend: size: 0x%08x\n" +msgstr "blkfin: tam: 0x%08x\n" + +#: vms-alpha.c:6987 +#, c-format +msgid "typspec (len: %u)\n" +msgstr "espectip (lon: %u)\n" + +#: vms-alpha.c:6994 +#, c-format +msgid "septyp, name: %.*s\n" +msgstr "septip, nombre: %.*s\n" + +#: vms-alpha.c:7003 +#, c-format +msgid "recbeg: name: %.*s\n" +msgstr "recini: nombre: %.*s\n" + +#: vms-alpha.c:7010 +#, c-format +msgid "recend\n" +msgstr "recfin\n" + +#: vms-alpha.c:7013 +#, c-format +msgid "enumbeg, len: %u, name: %.*s\n" +msgstr "enuini, lon: %u, nombre: %.*s\n" + +#: vms-alpha.c:7017 +#, c-format +msgid "enumelt, name: %.*s\n" +msgstr "enufin, nombre: %.*s\n" + +#: vms-alpha.c:7021 +#, c-format +msgid "enumend\n" +msgstr "enufin\n" + +#: vms-alpha.c:7038 +#, c-format +msgid "discontiguous range (nbr: %u)\n" +msgstr "rango discontinuo (nbr: %u)\n" + +#: vms-alpha.c:7040 +#, c-format +msgid " address: 0x%08x, size: %u\n" +msgstr " dirección: 0x%08x, tamaño: %u\n" + +#: vms-alpha.c:7050 +#, c-format +msgid "line num (len: %u)\n" +msgstr "num línea (lon: %u)\n" + +#: vms-alpha.c:7067 +#, c-format +msgid "delta_pc_w %u\n" +msgstr "delta_pc_w %u\n" + +#: vms-alpha.c:7074 +#, c-format +msgid "incr_linum(b): +%u\n" +msgstr "incr_linum(b): +%u\n" + +#: vms-alpha.c:7080 +#, c-format +msgid "incr_linum_w: +%u\n" +msgstr "incr_linum_w: +%u\n" + +#: vms-alpha.c:7086 +#, c-format +msgid "incr_linum_l: +%u\n" +msgstr "incr_linum_l: +%u\n" + +#: vms-alpha.c:7092 +#, c-format +msgid "set_line_num(w) %u\n" +msgstr "set_line_num(w) %u\n" + +#: vms-alpha.c:7097 +#, c-format +msgid "set_line_num_b %u\n" +msgstr "set_line_num_b %u\n" + +#: vms-alpha.c:7102 +#, c-format +msgid "set_line_num_l %u\n" +msgstr "set_line_num_l %u\n" + +#: vms-alpha.c:7107 +#, c-format +msgid "set_abs_pc: 0x%08x\n" +msgstr "set_abs_pc: 0x%08x\n" + +#: vms-alpha.c:7111 +#, c-format +msgid "delta_pc_l: +0x%08x\n" +msgstr "delta_pc_l: +0x%08x\n" + +#: vms-alpha.c:7116 +#, c-format +msgid "term(b): 0x%02x" +msgstr "term(b): 0x%02x" + +#: vms-alpha.c:7118 +#, c-format +msgid " pc: 0x%08x\n" +msgstr " pc: 0x%08x\n" + +#: vms-alpha.c:7123 +#, c-format +msgid "term_w: 0x%04x" +msgstr "term_w: 0x%04x" + +#: vms-alpha.c:7125 +#, c-format +msgid " pc: 0x%08x\n" +msgstr " pc: 0x%08x\n" + +#: vms-alpha.c:7131 +#, c-format +msgid "delta pc +%-4d" +msgstr "delta pc +%-4d" + +#: vms-alpha.c:7134 +#, c-format +msgid " pc: 0x%08x line: %5u\n" +msgstr " pc: 0x%08x línea: %5u\n" + +#: vms-alpha.c:7139 +#, c-format +msgid " *unhandled* cmd %u\n" +msgstr " *sin manejar* ord %u\n" + +#: vms-alpha.c:7154 +#, c-format +msgid "source (len: %u)\n" +msgstr "fuente (lon: %u)\n" + +#: vms-alpha.c:7168 +#, c-format +msgid " declfile: len: %u, flags: %u, fileid: %u\n" +msgstr " declfich: lon: %u, ops: %u, fichid: %u\n" + +#: vms-alpha.c:7172 +#, c-format +msgid " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" +msgstr " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" + +#: vms-alpha.c:7181 +#, c-format +msgid " filename : %.*s\n" +msgstr " nomfichero : %.*s\n" + +#: vms-alpha.c:7190 +#, c-format +msgid " setfile %u\n" +msgstr " setfile %u\n" + +#: vms-alpha.c:7195 vms-alpha.c:7200 +#, c-format +msgid " setrec %u\n" +msgstr " setrect %u\n" + +#: vms-alpha.c:7205 vms-alpha.c:7210 +#, c-format +msgid " setlnum %u\n" +msgstr " setlnum %u\n" + +#: vms-alpha.c:7215 vms-alpha.c:7220 +#, c-format +msgid " deflines %u\n" +msgstr " deflines %u\n" + +#: vms-alpha.c:7224 +#, c-format +msgid " formfeed\n" +msgstr " alimforma\n" + +#: vms-alpha.c:7228 +#, c-format +msgid " *unhandled* cmd %u\n" +msgstr " *sin manejar* ord %u\n" + +#: vms-alpha.c:7240 +#, c-format +msgid "*unhandled* dst type %u\n" +msgstr "tipo dst %u *sin manejar*\n" + +#: vms-alpha.c:7272 +#, c-format +msgid "cannot read EIHD\n" +msgstr "no se puede leer EIHD\n" + +#: vms-alpha.c:7275 +#, c-format +msgid "EIHD: (size: %u, nbr blocks: %u)\n" +msgstr "EIHD: (tamaño: %u, bloques nbr: %u)\n" + +#: vms-alpha.c:7278 +#, c-format +msgid " majorid: %u, minorid: %u\n" +msgstr " idmayor: %u, idmenor: %u\n" + +#: vms-alpha.c:7286 +msgid "executable" +msgstr "ejecutable" + +#: vms-alpha.c:7289 +msgid "linkable image" +msgstr "imagen enlazable" + +#: vms-alpha.c:7295 +#, c-format +msgid " image type: %u (%s)" +msgstr " tipo imagen: %u (%s)" + +#: vms-alpha.c:7301 +msgid "native" +msgstr "nativa" + +#: vms-alpha.c:7304 +msgid "CLI" +msgstr "CLI" + +#: vms-alpha.c:7310 +#, c-format +msgid ", subtype: %u (%s)\n" +msgstr ", subtipo: %u (%s)\n" + +#: vms-alpha.c:7316 +#, c-format +msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n" +msgstr " despls: isd: %u, activ: %u, simdep: %u, idimg: %u, parche: %u\n" + +#: vms-alpha.c:7320 +#, c-format +msgid " fixup info rva: " +msgstr " info compos rva: " + +#: vms-alpha.c:7322 +#, c-format +msgid ", symbol vector rva: " +msgstr " vector símbolo rva: " + +#: vms-alpha.c:7325 +#, c-format +msgid "" +"\n" +" version array off: %u\n" +msgstr "" +"\n" +" matriz versión despl: %u\n" + +#: vms-alpha.c:7329 +#, c-format +msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n" +msgstr " cuenta I/O img: %u, canales nbr: %u, pri req: %08x%08x\n" + +#: vms-alpha.c:7335 +#, c-format +msgid " linker flags: %08x:" +msgstr " opciones de enlazador: %08x:" + +#: vms-alpha.c:7365 +#, c-format +msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n" +msgstr " ident: 0x%08x, versis: 0x%08x, ctrl coinc: %u, tam_vectsim: %u\n" + +#: vms-alpha.c:7371 +#, c-format +msgid " BPAGE: %u" +msgstr " BPAGE: %u" + +#: vms-alpha.c:7377 +#, c-format +msgid ", ext fixup offset: %u, no_opt psect off: %u" +msgstr ", ext comp despl: %u, no_opt desp psect: %u" + +#: vms-alpha.c:7380 +#, c-format +msgid ", alias: %u\n" +msgstr ", alias: %u\n" + +#: vms-alpha.c:7388 +#, c-format +msgid "system version array information:\n" +msgstr "información de matriz de versión de sistema:\n" + +#: vms-alpha.c:7392 +#, c-format +msgid "cannot read EIHVN header\n" +msgstr "no se puede leer el encabezado EIHVN\n" + +#: vms-alpha.c:7402 +#, c-format +msgid "cannot read EIHVN version\n" +msgstr "no se puede leer la versión EIHVN\n" + +#: vms-alpha.c:7405 +#, c-format +msgid " %02u " +msgstr " %02u " + +#: vms-alpha.c:7409 +msgid "BASE_IMAGE " +msgstr "IMAGEN_BASE " + +#: vms-alpha.c:7412 +msgid "MEMORY_MANAGEMENT" +msgstr "ADMIN_MEMORIA" + +#: vms-alpha.c:7415 +msgid "IO " +msgstr "ES " + +#: vms-alpha.c:7418 +msgid "FILES_VOLUMES " +msgstr "VOL_FICHEROS " + +#: vms-alpha.c:7421 +msgid "PROCESS_SCHED " +msgstr "CALEND_PROCESOS " + +#: vms-alpha.c:7424 +msgid "SYSGEN " +msgstr "GENSIS " + +#: vms-alpha.c:7427 +msgid "CLUSTERS_LOCKMGR " +msgstr "ADMBLOQ_CLUSTERS " + +#: vms-alpha.c:7430 +msgid "LOGICAL_NAMES " +msgstr "NOMBRES_LOGICOS " + +#: vms-alpha.c:7433 +msgid "SECURITY " +msgstr "SEGURIDAD " + +#: vms-alpha.c:7436 +msgid "IMAGE_ACTIVATOR " +msgstr "ACTIVADOR_IMAGEN " + +#: vms-alpha.c:7439 +msgid "NETWORKS " +msgstr "REDES " + +#: vms-alpha.c:7442 +msgid "COUNTERS " +msgstr "CONTADORES " + +#: vms-alpha.c:7445 +msgid "STABLE " +msgstr "ESTABLE " + +#: vms-alpha.c:7448 +msgid "MISC " +msgstr "MISC " + +#: vms-alpha.c:7451 +msgid "CPU " +msgstr "CPU " + +#: vms-alpha.c:7454 +msgid "VOLATILE " +msgstr "VOLÁTIL " + +#: vms-alpha.c:7457 +msgid "SHELL " +msgstr "SHELL " + +#: vms-alpha.c:7460 +msgid "POSIX " +msgstr "POSIX " + +#: vms-alpha.c:7463 +msgid "MULTI_PROCESSING " +msgstr "MULTI_PROCESAM " + +#: vms-alpha.c:7466 +msgid "GALAXY " +msgstr "GALAXIA " + +#: vms-alpha.c:7469 +msgid "*unknown* " +msgstr "*desconocido* " + +#: vms-alpha.c:7472 +#, c-format +msgid ": %u.%u\n" +msgstr ": %u.%u\n" + +#: vms-alpha.c:7485 vms-alpha.c:7744 +#, c-format +msgid "cannot read EIHA\n" +msgstr "no se puede leer EIHA\n" + +#: vms-alpha.c:7488 +#, c-format +msgid "Image activation: (size=%u)\n" +msgstr "Activa imagen : (tamaño=%u)\n" + +#: vms-alpha.c:7490 +#, c-format +msgid " First address : 0x%08x 0x%08x\n" +msgstr " Primera direcc: 0x%08x 0x%08x\n" + +#: vms-alpha.c:7493 +#, c-format +msgid " Second address: 0x%08x 0x%08x\n" +msgstr " Segunda direcc: 0x%08x 0x%08x\n" + +#: vms-alpha.c:7496 +#, c-format +msgid " Third address : 0x%08x 0x%08x\n" +msgstr " Tercera direcc: 0x%08x 0x%08x\n" + +#: vms-alpha.c:7499 +#, c-format +msgid " Fourth address: 0x%08x 0x%08x\n" +msgstr " Cuarta direcc : 0x%08x 0x%08x\n" + +#: vms-alpha.c:7502 +#, c-format +msgid " Shared image : 0x%08x 0x%08x\n" +msgstr " Imagen compar : 0x%08x 0x%08x\n" + +#: vms-alpha.c:7513 +#, c-format +msgid "cannot read EIHI\n" +msgstr "no se puede leer EIHI\n" + +#: vms-alpha.c:7516 +#, c-format +msgid "Image identification: (major: %u, minor: %u)\n" +msgstr "Identificación de imagen: (mayor: %u, menor: %u)\n" + +#: vms-alpha.c:7519 +#, c-format +msgid " image name : %.*s\n" +msgstr " nombre de imagen : %.*s\n" + +#: vms-alpha.c:7521 +#, c-format +msgid " link time : %s\n" +msgstr " hora enlazado : %s\n" + +#: vms-alpha.c:7523 +#, c-format +msgid " image ident : %.*s\n" +msgstr " ident imagen : %.*s\n" + +#: vms-alpha.c:7525 +#, c-format +msgid " linker ident : %.*s\n" +msgstr " ident enlazador : %.*s\n" + +#: vms-alpha.c:7527 +#, c-format +msgid " image build ident: %.*s\n" +msgstr " ident const imagen: %.*s\n" + +#: vms-alpha.c:7537 +#, c-format +msgid "cannot read EIHS\n" +msgstr "no se puede leer EIHS\n" + +#: vms-alpha.c:7540 +#, c-format +msgid "Image symbol & debug table: (major: %u, minor: %u)\n" +msgstr "Símbolo de imagen y tabla de depuración: (mayor: %u, menor %u)\n" + +#: vms-alpha.c:7545 +#, c-format +msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n" +msgstr " tabla de símbolos de depuración : vbn: %u, tam: %u (0x%x)\n" + +#: vms-alpha.c:7549 +#, c-format +msgid " global symbol table: vbn: %u, records: %u\n" +msgstr " tabla de símbolos globales : vbn: %u, registros: %u\n" + +#: vms-alpha.c:7553 +#, c-format +msgid " debug module table : vbn: %u, size: %u\n" +msgstr " tabla de módulo de depuración : vbn: %u, tam: %u\n" + +#: vms-alpha.c:7566 +#, c-format +msgid "cannot read EISD\n" +msgstr "no se puede leer EISD\n" + +#: vms-alpha.c:7576 +#, c-format +msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n" +msgstr "Descriptor de sección de imagen: (mayor: %u, menor: %u, tam: %u, despl: %u)\n" + +#: vms-alpha.c:7583 +#, c-format +msgid " section: base: 0x%08x%08x size: 0x%08x\n" +msgstr " sección: base: 0x%08x%08x tam: 0x%08x\n" + +#: vms-alpha.c:7588 +#, c-format +msgid " flags: 0x%04x" +msgstr " opciones: %04x" + +#: vms-alpha.c:7625 +#, c-format +msgid " vbn: %u, pfc: %u, matchctl: %u type: %u (" +msgstr " vbn: %u, pfc: %u, coincctl: %u tipo: %u (" + +#: vms-alpha.c:7631 +msgid "NORMAL" +msgstr "NORMAL" + +#: vms-alpha.c:7634 +msgid "SHRFXD" +msgstr "SHRFXD" + +#: vms-alpha.c:7637 +msgid "PRVFXD" +msgstr "PRVFXD" + +#: vms-alpha.c:7640 +msgid "SHRPIC" +msgstr "SHRPIC" + +#: vms-alpha.c:7643 +msgid "PRVPIC" +msgstr "PRVPIC" + +#: vms-alpha.c:7646 +msgid "USRSTACK" +msgstr "USRSTACK" + +#: vms-alpha.c:7654 +#, c-format +msgid " ident: 0x%08x, name: %.*s\n" +msgstr " ident: 0x%08x, nombre: %.*s\n" + +#: vms-alpha.c:7664 +#, c-format +msgid "cannot read DMT\n" +msgstr "no se puede leer DMT\n" + +#: vms-alpha.c:7668 +#, c-format +msgid "Debug module table:\n" +msgstr "Tabla de módulos de depuración\n" + +#: vms-alpha.c:7677 +#, c-format +msgid "cannot read DMT header\n" +msgstr "no se puede leer el encabezado DMT\n" + +#: vms-alpha.c:7682 +#, c-format +msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n" +msgstr " despl módulo: 0x%08x, tam: 0x%08x, (%u psects)\n" + +#: vms-alpha.c:7692 +#, c-format +msgid "cannot read DMT psect\n" +msgstr "no se puede leer el psect DMT\n" + +#: vms-alpha.c:7695 +#, c-format +msgid " psect start: 0x%08x, length: %u\n" +msgstr " psect inicio: 0x%08x, long: %u\n" + +#: vms-alpha.c:7708 +#, c-format +msgid "cannot read DST\n" +msgstr "no se puede leer DST\n" + +#: vms-alpha.c:7718 +#, c-format +msgid "cannot read GST\n" +msgstr "no se puede leer GST\n" + +#: vms-alpha.c:7722 +#, c-format +msgid "Global symbol table:\n" +msgstr "Tabla de símbolos global:\n" + +#: vms-alpha.c:7750 +#, c-format +msgid "Image activator fixup: (major: %u, minor: %u)\n" +msgstr "Compostura de activador de imagen: (mayor: %u, menor: %u)\n" + +#: vms-alpha.c:7753 +#, c-format +msgid " iaflink : 0x%08x %08x\n" +msgstr " iafenl : 0x%08x %08x\n" + +#: vms-alpha.c:7756 +#, c-format +msgid " fixuplnk: 0x%08x %08x\n" +msgstr " compenl : 0x%08x %08x\n" + +#: vms-alpha.c:7759 +#, c-format +msgid " size : %u\n" +msgstr " tam : %u\n" + +#: vms-alpha.c:7761 +#, c-format +msgid " flags: 0x%08x\n" +msgstr " ops : 0x%08x\n" + +#: vms-alpha.c:7765 +#, c-format +msgid " qrelfixoff: %5u, lrelfixoff: %5u\n" +msgstr " qrelfixoff: %5u, lrelfixoff: %5u\n" + +#: vms-alpha.c:7769 +#, c-format +msgid " qdotadroff: %5u, ldotadroff: %5u\n" +msgstr " qdotadroff: %5u, ldotadroff: %5u\n" + +#: vms-alpha.c:7773 +#, c-format +msgid " codeadroff: %5u, lpfixoff : %5u\n" +msgstr " codeadroff: %5u, lpfixoff : %5u\n" + +#: vms-alpha.c:7776 +#, c-format +msgid " chgprtoff : %5u\n" +msgstr " chgprtoff : %5u\n" + +#: vms-alpha.c:7779 +#, c-format +msgid " shlstoff : %5u, shrimgcnt : %5u\n" +msgstr " shlstoff : %5u, shrimgcnt : %5u\n" + +#: vms-alpha.c:7781 +#, c-format +msgid " shlextra : %5u, permctx : %5u\n" +msgstr " shlextra : %5u, permctx : %5u\n" + +#: vms-alpha.c:7784 +#, c-format +msgid " base_va : 0x%08x\n" +msgstr " base_va : 0x%08x\n" + +#: vms-alpha.c:7786 +#, c-format +msgid " lppsbfixoff: %5u\n" +msgstr " lppsbfixoff: %5u\n" + +#: vms-alpha.c:7794 +#, c-format +msgid " Shareable images:\n" +msgstr " Imágenes compartibles:\n" + +#: vms-alpha.c:7798 +#, c-format +msgid " %u: size: %u, flags: 0x%02x, name: %.*s\n" +msgstr " %u: tam: %u, opts: 0x%02x, nombre: %.*s\n" + +#: vms-alpha.c:7805 +#, c-format +msgid " quad-word relocation fixups:\n" +msgstr " composturas de reubicación quad-word:\n" + +#: vms-alpha.c:7810 +#, c-format +msgid " long-word relocation fixups:\n" +msgstr " composturas de reubicación long-word:\n" + +#: vms-alpha.c:7815 +#, c-format +msgid " quad-word .address reference fixups:\n" +msgstr " composturas de referencia .address quad-word:\n" + +#: vms-alpha.c:7820 +#, c-format +msgid " long-word .address reference fixups:\n" +msgstr " composturas de referencia .address long-word:\n" + +#: vms-alpha.c:7825 +#, c-format +msgid " Code Address Reference Fixups:\n" +msgstr " Composturas de Referencias de Dirección de Código:\n" + +#: vms-alpha.c:7830 +#, c-format +msgid " Linkage Pairs Referece Fixups:\n" +msgstr " Composturas de Referencias de Pares de Enlazado\n" + +#: vms-alpha.c:7839 +#, c-format +msgid " Change Protection (%u entries):\n" +msgstr " Cambiar Protección (%u entradas):\n" + +#: vms-alpha.c:7844 +#, c-format +msgid " base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x " +msgstr " base: 0x%08x %08x, tam: 0x%08x, prot: 0x%08x " + +#. FIXME: we do not yet support relocatable link. It is not obvious +#. how to do it for debug infos. +#: vms-alpha.c:8676 +msgid "%P: relocatable link is not supported\n" +msgstr "%P: no se admite el enlace reubicable\n" + +#: vms-alpha.c:8746 +msgid "%P: multiple entry points: in modules %B and %B\n" +msgstr "%P: puntos de entrada múltiples: en los módulos %B y %B\n" + +#: vms-lib.c:1421 +#, c-format +msgid "could not open shared image '%s' from '%s'" +msgstr "no se puede abrir la imagen compartida '%s' desde '%s'" + +#: vms-misc.c:360 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "se llamó _bfd_vms_output_counted con cero bytes" + +#: vms-misc.c:365 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "se llamó _bfd_vms_output_counted con demasiados bytes" + +#: xcofflink.c:836 +#, 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:857 +#, c-format +msgid "%s: dynamic object with no .loader section" +msgstr "%s: objeto dinámico sin sección .loader" + +#: xcofflink.c:1415 +msgid "%B: `%s' has line numbers but no enclosing section" +msgstr "%B: `%s' tiene números de línea pero no una sección contenedora" + +#: xcofflink.c:1467 +msgid "%B: class %d symbol `%s' has no aux entries" +msgstr "%B: clase %d símbolo `%s' no tiene entradas auxiliares" + +#: xcofflink.c:1489 +msgid "%B: symbol `%s' has unrecognized csect type %d" +msgstr "%B: el símbolo `%s' tiene un tipo csect %d que no se reconoce" + +#: xcofflink.c:1501 +msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%B: símbolo XTY_ER `%s' erróneo: clase %d scnum %d scnlen %d" + +#: xcofflink.c:1530 +msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%B: símbolo XMC_TCO `%s' es clase %d scnlen %d" + +#: xcofflink.c:1676 +msgid "%B: csect `%s' not in enclosing section" +msgstr "%B: csect `%s' no está contenido en una sección" + +#: xcofflink.c:1783 +msgid "%B: misplaced XTY_LD `%s'" +msgstr "%B: XTY_LD `%s' mal ubicado" + +#: xcofflink.c:2102 +msgid "%B: reloc %s:%d not in csect" +msgstr "%B: la reubicación %s:%d no está en csect" + +#: xcofflink.c:3186 +#, c-format +msgid "%s: no such symbol" +msgstr "%s: no hay tal símbolo" + +#: xcofflink.c:3291 +#, c-format +msgid "warning: attempt to export undefined symbol `%s'" +msgstr "aviso: se intenta exportar el símbolo sin definir `%s'" + +#: xcofflink.c:3673 +msgid "error: undefined symbol __rtinit" +msgstr "error: símbolo __rtinit sin definir" + +#: xcofflink.c:4052 +msgid "%B: loader reloc in unrecognized section `%s'" +msgstr "%B: reubicación del cargador en la sección `%s' que no se reconoce" + +#: xcofflink.c:4063 +msgid "%B: `%s' in loader reloc but not loader sym" +msgstr "%B: `%s' en la reubicación del cargador pero no es un símbolo del cargador" + +#: xcofflink.c:4079 +msgid "%B: loader reloc in read-only section %A" +msgstr "%B: reubicación del cargador en la sección de sólo lectura %A" + +#: xcofflink.c:5097 +#, 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" + +#: elf32-ia64.c:1110 elf64-ia64.c:1110 +msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch." +msgstr "%B: No se puede relajar br en 0x%lx en la sección `%A'. Por favor use brl o ramificación indirecta." + +#: elf32-ia64.c:2809 elf64-ia64.c:2809 +msgid "@pltoff reloc against local symbol" +msgstr "reubicación @pltoff contra un símbolo local" + +#: elf32-ia64.c:4430 elf64-ia64.c:4430 +#, c-format +msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" +msgstr "%s: segmento de datos short desbordado (0x%lx >= 0x400000)" + +#: elf32-ia64.c:4441 elf64-ia64.c:4441 +#, c-format +msgid "%s: __gp does not cover short data segment" +msgstr "%s: __gp no cubre el segmento de datos short" + +#: elf32-ia64.c:4708 elf64-ia64.c:4708 +msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" +msgstr "%B: código que no es pic con reubicación imm contra el símbolo dinámico %s" + +#: elf32-ia64.c:4775 elf64-ia64.c:4775 +msgid "%B: @gprel relocation against dynamic symbol %s" +msgstr "%B: reubicación @gprel contra el símbolo dinámico %s" + +#: elf32-ia64.c:4838 elf64-ia64.c:4838 +msgid "%B: linking non-pic code in a position independent executable" +msgstr "%B: se enlaza código que no es pic en un ejecutable independiente de posición" + +#: elf32-ia64.c:4975 elf64-ia64.c:4975 +msgid "%B: @internal branch to dynamic symbol %s" +msgstr "%B: ramificación @internal al símbolo dinámico %s" + +#: elf32-ia64.c:4977 elf64-ia64.c:4977 msgid "%B: speculation fixup to dynamic symbol %s" msgstr "%B: compostura de especulación al símbolo dinámico %s" -#: elf32-ia64.c:4869 elf64-ia64.c:4869 +#: elf32-ia64.c:4979 elf64-ia64.c:4979 msgid "%B: @pcrel relocation against dynamic symbol %s" msgstr "%B: reubicación @pcrel contra el símbolo dinámico %s" -#: elf32-ia64.c:5066 elf64-ia64.c:5066 +#: elf32-ia64.c:5176 elf64-ia64.c:5176 msgid "unsupported reloc" msgstr "no se admite la reubicación" -#: elf32-ia64.c:5104 elf64-ia64.c:5104 +#: elf32-ia64.c:5214 elf64-ia64.c:5214 msgid "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'." msgstr "%B: falta la sección TLS para la reubicación %s contra `%s' en 0x%lx en la sección `%A'." -#: elf32-ia64.c:5119 elf64-ia64.c:5119 +#: elf32-ia64.c:5229 elf64-ia64.c:5229 msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)." msgstr "%B: No se puede relajar br (%s) a `%s' en 0x%lx en la sección `%A' con tamaño 0x%lx (> 0x1000000)." -#: elf32-ia64.c:5375 elf64-ia64.c:5375 +#: elf32-ia64.c:5491 elf64-ia64.c:5491 msgid "%B: linking trap-on-NULL-dereference with non-trapping files" msgstr "%B: se enlaza deferencias-captura-en-NULL con ficheros que no son de captura" -#: elf32-ia64.c:5384 elf64-ia64.c:5384 +#: elf32-ia64.c:5500 elf64-ia64.c:5500 msgid "%B: linking big-endian files with little-endian files" msgstr "%B: se enlazan ficheros big-endian con ficheros little-endian" -#: elf32-ia64.c:5393 elf64-ia64.c:5393 +#: elf32-ia64.c:5509 elf64-ia64.c:5509 msgid "%B: linking 64-bit files with 32-bit files" msgstr "%B: se enlazan ficheros de 64-bit con ficheros de 32-bit" -#: elf32-ia64.c:5402 elf64-ia64.c:5402 +#: elf32-ia64.c:5518 elf64-ia64.c:5518 msgid "%B: linking constant-gp files with non-constant-gp files" msgstr "%B: se enlazan ficheros de gp constante con ficheros con gp no constante" -#: elf32-ia64.c:5412 elf64-ia64.c:5412 +#: elf32-ia64.c:5528 elf64-ia64.c:5528 msgid "%B: linking auto-pic files with non-auto-pic files" msgstr "%B: se enlazan ficheros de pic automático con ficheros sin pic automático" -#: peigen.c:1000 pepigen.c:1000 pex64igen.c:1000 +#: peigen.c:1002 pepigen.c:1002 pex64igen.c:1002 #, c-format msgid "%s: line number overflow: 0x%lx > 0xffff" msgstr "%s: desbordamiento de número de línea: 0x%lx > 0xffff" -#: peigen.c:1027 pepigen.c:1027 pex64igen.c:1027 +#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 msgid "Export Directory [.edata (or where ever we found it)]" msgstr "Directorio de Exportación [.edata (o donde quiera que se encuentre)]" -#: peigen.c:1028 pepigen.c:1028 pex64igen.c:1028 +#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 msgid "Import Directory [parts of .idata]" msgstr "Directorio de Importación [partes de .idata]" -#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 +#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 msgid "Resource Directory [.rsrc]" msgstr "Directorio de Recursos [.rsrc]" -#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 +#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 msgid "Exception Directory [.pdata]" msgstr "Directorio de Excepciones [.pdata]" -#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 +#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 msgid "Security Directory" msgstr "Directorio de Seguridad" -#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 +#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 msgid "Base Relocation Directory [.reloc]" msgstr "Directorio de Reubicación Base [.reloc]" -#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 +#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 msgid "Debug Directory" msgstr "Directorio de Depuración" -#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 +#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 msgid "Description Directory" msgstr "Directorio de Descripciones" -#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 +#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 msgid "Special Directory" msgstr "Directorio Especial" -#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 +#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 msgid "Thread Storage Directory [.tls]" msgstr "Directorio de Almacenamiento de Hilos [.tls]" -#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 +#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 msgid "Load Configuration Directory" msgstr "Directorio de Carga de Configuraciones" -#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 +#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 msgid "Bound Import Directory" msgstr "Directorio de Importación de Relaciones" -#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 +#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 msgid "Import Address Table Directory" -msgstr "Directorio de Importación de Tablas de Direcciones" +msgstr "Directorio de Tablas de Direcciones de Importación" -#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 +#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 msgid "Delay Import Directory" msgstr "Directorio de Retardo de Importación" -#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 +#: peigen.c:1043 pepigen.c:1043 pex64igen.c:1043 msgid "CLR Runtime Header" msgstr "Encabezado de Tiempo de Ejecución CLR" -#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 +#: peigen.c:1044 pepigen.c:1044 pex64igen.c:1044 msgid "Reserved" msgstr "Reservado" -#: peigen.c:1102 pepigen.c:1102 pex64igen.c:1102 +#: peigen.c:1104 pepigen.c:1104 pex64igen.c:1104 #, c-format 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" +"Hay una tabla de importación, pero no se puede encontrar la sección que la contiene\n" -#: peigen.c:1107 pepigen.c:1107 pex64igen.c:1107 +#: peigen.c:1109 pepigen.c:1109 pex64igen.c:1109 #, c-format msgid "" "\n" @@ -3539,7 +5658,7 @@ "\n" "Hay una tabla de importación en %s en 0x%lx\n" -#: peigen.c:1150 pepigen.c:1150 pex64igen.c:1150 +#: peigen.c:1151 pepigen.c:1151 pex64igen.c:1151 #, c-format msgid "" "\n" @@ -3548,12 +5667,12 @@ "\n" "Se localizó el descriptor de función en la dirección de inicio: %04lx\n" -#: peigen.c:1153 pepigen.c:1153 pex64igen.c:1153 +#: peigen.c:1154 pepigen.c:1154 pex64igen.c:1154 #, 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:1161 pepigen.c:1161 pex64igen.c:1161 +#: peigen.c:1162 pepigen.c:1162 pex64igen.c:1162 #, c-format msgid "" "\n" @@ -3562,7 +5681,7 @@ "\n" "¡No está la sección reldata! No se decodificó el descriptor de función.\n" -#: peigen.c:1166 pepigen.c:1166 pex64igen.c:1166 +#: peigen.c:1167 pepigen.c:1167 pex64igen.c:1167 #, c-format msgid "" "\n" @@ -3571,7 +5690,7 @@ "\n" "Las Tablas de Importación (se interpretaron los contenidos de la sección %s)\n" -#: peigen.c:1169 pepigen.c:1169 pex64igen.c:1169 +#: peigen.c:1170 pepigen.c:1170 pex64igen.c:1170 #, c-format msgid "" " vma: Hint Time Forward DLL First\n" @@ -3580,7 +5699,7 @@ " vma: Pista Fecha Adelante DLL Primero\n" " Tabla Estampa Cadena Nombre Thunk\n" -#: peigen.c:1217 pepigen.c:1217 pex64igen.c:1217 +#: peigen.c:1218 pepigen.c:1218 pex64igen.c:1218 #, c-format msgid "" "\n" @@ -3589,30 +5708,30 @@ "\n" "\tNombre de la DLL: %s\n" -#: peigen.c:1228 pepigen.c:1228 pex64igen.c:1228 +#: peigen.c:1229 pepigen.c:1229 pex64igen.c:1229 #, c-format msgid "\tvma: Hint/Ord Member-Name Bound-To\n" msgstr "\tvma: Pista/Ord Nombre-Miembro Unido-A\n" -#: peigen.c:1253 pepigen.c:1253 pex64igen.c:1253 +#: peigen.c:1254 pepigen.c:1254 pex64igen.c:1254 #, c-format msgid "" "\n" "There is a first thunk, but the section containing it could not be found\n" msgstr "" "\n" -"Hay un thunk inicial, pero la sección que lo contiene no se puede encontrar\n" +"Hay un thunk inicial, pero no se puede encontrar la sección que lo contiene\n" -#: peigen.c:1418 pepigen.c:1418 pex64igen.c:1418 +#: peigen.c:1415 pepigen.c:1415 pex64igen.c:1415 #, c-format 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" +"Hay una tabla de exportación, pero no se puede encontrar la sección que la contiene\n" -#: peigen.c:1427 pepigen.c:1427 pex64igen.c:1427 +#: peigen.c:1424 pepigen.c:1424 pex64igen.c:1424 #, c-format msgid "" "\n" @@ -3621,7 +5740,7 @@ "\n" "Hay una tabla de exportación en %s, pero no cabe en esa sección\n" -#: peigen.c:1433 pepigen.c:1433 pex64igen.c:1433 +#: peigen.c:1430 pepigen.c:1430 pex64igen.c:1430 #, c-format msgid "" "\n" @@ -3630,7 +5749,7 @@ "\n" "Hay una tabla de exportación en %s en 0x%lx\n" -#: peigen.c:1461 pepigen.c:1461 pex64igen.c:1461 +#: peigen.c:1458 pepigen.c:1458 pex64igen.c:1458 #, c-format msgid "" "\n" @@ -3641,68 +5760,68 @@ "Las Tablas de Exportación (se interpretaron los contenidos de la sección %s)\n" "\n" -#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 +#: peigen.c:1462 pepigen.c:1462 pex64igen.c:1462 #, c-format msgid "Export Flags \t\t\t%lx\n" msgstr "Opciones de Exportación \t\t\t%lx\n" -#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 +#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 #, c-format msgid "Time/Date stamp \t\t%lx\n" msgstr "marca de Hora/Fecha \t\t%lx\n" -#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 +#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 #, c-format msgid "Major/Minor \t\t\t%d/%d\n" msgstr "Mayor/Menor \t\t\t%d/%d\n" -#: peigen.c:1474 pepigen.c:1474 pex64igen.c:1474 +#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 #, c-format msgid "Name \t\t\t\t" msgstr "Nombre \t\t\t\t" -#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 +#: peigen.c:1477 pepigen.c:1477 pex64igen.c:1477 #, c-format msgid "Ordinal Base \t\t\t%ld\n" msgstr "Base Ordinal \t\t\t%ld\n" -#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 +#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 #, c-format msgid "Number in:\n" msgstr "Número en:\n" -#: peigen.c:1486 pepigen.c:1486 pex64igen.c:1486 +#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 #, c-format msgid "\tExport Address Table \t\t%08lx\n" msgstr "\tTabla de Exportación de Direcciones \t\t%08lx\n" -#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 +#: peigen.c:1487 pepigen.c:1487 pex64igen.c:1487 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" msgstr "\tTabla [Nombre Puntero/Ordinal]\t%08lx\n" -#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 +#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 #, c-format msgid "Table Addresses\n" msgstr "Direcciones de la Tabla\n" -#: peigen.c:1496 pepigen.c:1496 pex64igen.c:1496 +#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 #, c-format msgid "\tExport Address Table \t\t" msgstr "\tTabla de Exportación de Direcciones \t\t" -#: peigen.c:1501 pepigen.c:1501 pex64igen.c:1501 +#: peigen.c:1498 pepigen.c:1498 pex64igen.c:1498 #, c-format msgid "\tName Pointer Table \t\t" msgstr "\tNombre de la Tabla de Punteros \t\t" # continuar aqui -#: peigen.c:1506 pepigen.c:1506 pex64igen.c:1506 +#: peigen.c:1503 pepigen.c:1503 pex64igen.c:1503 #, c-format msgid "\tOrdinal Table \t\t\t" msgstr "\tTabla Ordinal \t\t\t" -#: peigen.c:1520 pepigen.c:1520 pex64igen.c:1520 +#: peigen.c:1517 pepigen.c:1517 pex64igen.c:1517 #, c-format msgid "" "\n" @@ -3711,15 +5830,15 @@ "\n" "Tabla de Exportación de Direcciones -- Base Ordinal %ld\n" -#: peigen.c:1539 pepigen.c:1539 pex64igen.c:1539 +#: peigen.c:1536 pepigen.c:1536 pex64igen.c:1536 msgid "Forwarder RVA" msgstr "RVA Adelantador" -#: peigen.c:1550 pepigen.c:1550 pex64igen.c:1550 +#: peigen.c:1547 pepigen.c:1547 pex64igen.c:1547 msgid "Export RVA" msgstr "RVA Exportador" -#: peigen.c:1557 pepigen.c:1557 pex64igen.c:1557 +#: peigen.c:1554 pepigen.c:1554 pex64igen.c:1554 #, c-format msgid "" "\n" @@ -3728,28 +5847,18 @@ "\n" "Tabla [Puntero a Ordinal/Nombre]\n" -#: peigen.c:1617 peigen.c:1796 pepigen.c:1617 pepigen.c:1796 pex64igen.c:1617 -#: pex64igen.c:1796 +#: peigen.c:1614 peigen.c:1797 pepigen.c:1614 pepigen.c:1797 pex64igen.c:1614 +#: pex64igen.c:1797 #, 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:1621 peigen.c:1800 pepigen.c:1621 pepigen.c:1800 pex64igen.c:1621 -#: pex64igen.c:1800 -#, c-format -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:1624 pepigen.c:1624 pex64igen.c:1624 +#: peigen.c:1621 pepigen.c:1621 pex64igen.c:1621 #, c-format 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:1626 pepigen.c:1626 pex64igen.c:1626 +#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 #, c-format msgid "" " vma:\t\tBegin End EH EH PrologEnd Exception\n" @@ -3758,22 +5867,22 @@ " vma:\t\tInicio Fin EH EH FinPrólogo Excepción\n" " \t\tDirecc Direcc Asa Datos Dirección Máscara\n" -#: peigen.c:1696 pepigen.c:1696 pex64igen.c:1696 +#: peigen.c:1697 pepigen.c:1697 pex64igen.c:1697 #, c-format msgid " Register save millicode" msgstr " Registro para guardar milicódigo" -#: peigen.c:1699 pepigen.c:1699 pex64igen.c:1699 +#: peigen.c:1700 pepigen.c:1700 pex64igen.c:1700 #, c-format msgid " Register restore millicode" msgstr " Registro para restaurar milicódigo" -#: peigen.c:1702 pepigen.c:1702 pex64igen.c:1702 +#: peigen.c:1703 pepigen.c:1703 pex64igen.c:1703 #, c-format msgid " Glue code sequence" msgstr " Secuencia de código pegamento" -#: peigen.c:1802 pepigen.c:1802 pex64igen.c:1802 +#: peigen.c:1803 pepigen.c:1803 pex64igen.c:1803 #, c-format msgid "" " vma:\t\tBegin Prolog Function Flags Exception EH\n" @@ -3782,7 +5891,7 @@ " vma:\t\tInicio Prólogo Función Opciones Excepción EH\n" " \t\tDirecc Longitud Longitud 32b exc Manejador Datos\n" -#: peigen.c:1933 pepigen.c:1933 pex64igen.c:1933 +#: peigen.c:1929 pepigen.c:1929 pex64igen.c:1929 #, c-format msgid "" "\n" @@ -3793,7 +5902,7 @@ "\n" "Reubicaciones de Fichero Base PE (se interpretaron los contenidos de la sección .reloc)\n" -#: peigen.c:1963 pepigen.c:1963 pex64igen.c:1963 +#: peigen.c:1958 pepigen.c:1958 pex64igen.c:1958 #, c-format msgid "" "\n" @@ -3802,7 +5911,7 @@ "\n" "Dirección Virtual: %08lx Tamaño del trozo %ld (0x%lx) Número de composturas %ld\n" -#: peigen.c:1976 pepigen.c:1976 pex64igen.c:1976 +#: peigen.c:1971 pepigen.c:1971 pex64igen.c:1971 #, c-format msgid "\treloc %4d offset %4x [%4lx] %s" msgstr "\treubicación %4d desplazamiento %4x [%4lx] %s" @@ -3810,7 +5919,7 @@ #. The MS dumpbin program reportedly ands with 0xff0f before #. printing the characteristics field. Not sure why. No reason to #. emulate it here. -#: peigen.c:2015 pepigen.c:2015 pex64igen.c:2015 +#: peigen.c:2010 pepigen.c:2010 pex64igen.c:2010 #, c-format msgid "" "\n" @@ -3819,26 +5928,135 @@ "\n" "Características 0x%x\n" -#: peigen.c:2289 pepigen.c:2289 pex64igen.c:2289 +#: peigen.c:2310 pepigen.c:2310 pex64igen.c:2310 msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing" msgstr "%B: no se puede llenar DataDictionary[1] porque falta .idata$2" -#: peigen.c:2307 pepigen.c:2307 pex64igen.c:2307 +#: peigen.c:2330 pepigen.c:2330 pex64igen.c:2330 msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing" msgstr "%B: no se puede llenar DataDictionary[1] porque falta .idata$4" -#: peigen.c:2326 pepigen.c:2326 pex64igen.c:2326 +#: peigen.c:2351 pepigen.c:2351 pex64igen.c:2351 msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing" msgstr "%B: no se puede llenar DataDictionary[12] porque falta .idata$5" -#: peigen.c:2344 pepigen.c:2344 pex64igen.c:2344 +#: peigen.c:2371 pepigen.c:2371 pex64igen.c:2371 msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing" msgstr "%B: no se puede llenar DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] porque falta .idata$6" -#: peigen.c:2364 pepigen.c:2364 pex64igen.c:2364 +#: peigen.c:2413 pepigen.c:2413 pex64igen.c:2413 +msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing" +msgstr "%B: no se puede llenar DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] porque falta .idata$6" + +#: peigen.c:2436 pepigen.c:2436 pex64igen.c:2436 msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing" msgstr "%B: no se puede llenar DataDictionary[9] porque falta __tls_used" +#~ msgid "Can't Make it a Short Jump" +#~ msgstr "No se Puede Convertir en un Salto Corto" + +#~ msgid "Exceeds Long Jump Range" +#~ msgstr "Excede el Rango de Salto Largo" + +#~ msgid "Absolute address Exceeds 16 bit Range" +#~ msgstr "La dirección Absoluta Excede el Rango de 16 bit" + +#~ msgid "Absolute address Exceeds 8 bit Range" +#~ msgstr "La dirección Absoluta Excede el Rango de 8 bit" + +#~ msgid "Unrecognized Reloc Type" +#~ msgstr "No se reconoce el Tipo de Reubicación" + +#~ msgid "corrupt or empty %s section in %B" +#~ msgstr "sección %s corrupta o vacía en %B" + +#~ msgid "%s: invalid DSO for symbol `%s' definition" +#~ msgstr "%s: DSO inválido para la definición del símbolo `%s'" + +#~ msgid "%B: %A+0x%lx: jump to stub routine which is not jal" +#~ msgstr "%B: %A+0x%lx: salto a una rutina cabo la cual no es jal" + +#~ msgid "bfd_make_section (%s) failed" +#~ msgstr "bfd_make_section (%s) falló" + +#~ msgid "bfd_set_section_flags (%s, %x) failed" +#~ msgstr "bfd_set_section_flags (%s, %x) falló" + +#~ msgid "Size mismatch section %s=%lx, %s=%lx" +#~ msgstr "No coincide el tamaño de la sección %s=%lx, %s=%lx" + +#~ msgid "failed to enter %s" +#~ msgstr "falló la introducción de %s" + +#~ msgid "No Mem !" +#~ msgstr "¡ No hay Memoria !" + +#~ msgid "reserved STO cmd %d" +#~ msgstr "orden STO %d reservada" + +#~ msgid "reserved OPR cmd %d" +#~ msgstr "orden OPR %d reservada" + +#~ msgid "reserved CTL cmd %d" +#~ msgstr "orden CTL %d reservada" + +#~ msgid "reserved STC cmd %d" +#~ msgstr "orden STC %d reservada" + +#~ msgid "stack-from-image not implemented" +#~ msgstr "pila-desde-imagen sin implementar" + +#~ msgid "stack-entry-mask not fully implemented" +#~ msgstr "pila-máscara-entrada no está completamente implementado" + +#~ msgid "PASSMECH not fully implemented" +#~ msgstr "PASSMECH no está completamente implementado" + +#~ msgid "stack-local-symbol not fully implemented" +#~ msgstr "pila-símbolo-local no está completamente implementado" + +#~ msgid "stack-literal not fully implemented" +#~ msgstr "pila-literal no está completamente implementado" + +#~ msgid "stack-local-symbol-entry-point-mask not fully implemented" +#~ msgstr "pila-símbolo-local-máscara-punto-entrada no está completamente implementado" + +#~ msgid "%s: not fully implemented" +#~ msgstr "%s: no está completamente implementado" + +#~ msgid "obj code %d not found" +#~ msgstr "no se encontró el código objeto %d" + +#~ msgid "Reloc size error in section %s" +#~ msgstr "Error del tamaño de reubicación en la sección %s" + +#~ msgid "ERROR: %B: Incompatible object tag '%s':%d" +#~ msgstr "ERROR: %B: Etiqueta de objeto '%s' incompatible:%d" + +#~ msgid "%B(%A): warning: unresolvable relocation against symbol `%s'" +#~ msgstr "%B(%A): aviso: reubicación sin resolución contra el símbolo `%s'" + +#~ msgid "%B: Internal inconsistency; no relocation section %s" +#~ msgstr "%B: Inconsistencia interna; no se encuentra la sección de reubicación %s" + +#~ msgid "Could not find relocation section for %s" +#~ msgstr "No se puede encontrar la sección de reubicación para %s" + +#~ msgid "%B: GOT overflow: Number of R_68K_GOT8O and R_68K_GOT16O relocations > %d" +#~ msgstr "%B desbordamiento de GOT: Número de reubicaciones R_68K_GOT80 Y R_68K_GOT160 > %d" + +#~ msgid "%A link_order not found\n" +#~ msgstr "no se encontró link_order %A\n" + +#~ msgid "%s: no symbol \"%s\"" +#~ msgstr "%s: no existe el símbolo \"%s\"" + +#~ msgid "%s: loader reloc in unrecognized section `%s'" +#~ msgstr "%s: reubicación del cargador en la sección `%s' no reconocida" + +#~ 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" + #~ msgid "Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)." #~ msgstr "Error de Dwarf: El desplazamiento DW_FROM_strp (%lu) es más grande o igual que el tamaño de .debug_str (%lu)." @@ -3848,9 +6066,6 @@ #~ msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)." #~ msgstr "Error de Dwarf: El desplazamiento de abreviatura (%lu) es más grande o igual que el tamaño de .debug_abbrev (%lu)." -#~ msgid "Dwarf Error: Can't find .debug_line section." -#~ msgstr "Error de Dwarf: No se puede encontrar lan sección .debug_line." - #~ msgid "Dwarf Error: Can't find .debug_ranges section." #~ msgstr "Error de Dwarf: No se puede encontrar lan sección .debug_ranges." @@ -3959,9 +6174,6 @@ #~ msgid "reloc against unsupported section" #~ msgstr "reubicación contra una sección no admitida" -#~ msgid "reloc not properly aligned" -#~ msgstr "reubicación no alineada adecuadamente" - #~ 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" @@ -4081,12 +6293,6 @@ #~ msgid "ETIR_S_C_STO_LP_PSB: Not supported" #~ msgstr "ETIR_S_C_STO_LP_PSB: No se admite" -#~ 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: No se admite" @@ -4166,9 +6372,6 @@ #~ 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" Binary files /tmp/wqm3boRCeK/crash-5.1.6/=unpacked-tar1=/bfd/po/fi.gmo and /tmp/OqnMAz5teu/crash-6.1.6/=unpacked-tar1=/bfd/po/fi.gmo differ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/fi.po crash-6.1.6/=unpacked-tar1=/bfd/po/fi.po --- crash-5.1.6/=unpacked-tar1=/bfd/po/fi.po 2009-09-14 12:24:28.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/fi.po 2010-11-25 06:08:42.000000000 +0000 @@ -1,14 +1,14 @@ -# translation of bfd-2.19.90.po to Finnish -# Copyright © 2007, 2009 Free Software Foundation, Inc. +# Finnish messages for bfd +# Copyright © 2007, 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the binutils package. -# Jorma Karvonen , 2007, 2009. +# Jorma Karvonen , 2007, 2009, 2010. # msgid "" msgstr "" -"Project-Id-Version: bfd 2.19.90\n" +"Project-Id-Version: bfd 2.20.90\n" "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" -"POT-Creation-Date: 2009-09-07 14:05+0200\n" -"PO-Revision-Date: 2009-09-11 21:15+0200\n" +"POT-Creation-Date: 2010-11-05 11:31+0100\n" +"PO-Revision-Date: 2010-11-10 18:55+0200\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" @@ -21,156 +21,156 @@ msgid "%B: Unknown section type in a.out.adobe file: %x\n" msgstr "%B: Tuntematon lohkotyyppi â€a.out.adobeâ€-tiedostossa: %x\n" -#: aout-cris.c:204 +#: aout-cris.c:199 #, c-format msgid "%s: Invalid relocation type exported: %d" msgstr "%s: Virheellinen sijoitustyyppi viety: %d" -#: aout-cris.c:247 +#: aout-cris.c:242 msgid "%B: Invalid relocation type imported: %d" msgstr "%B: Virheellinen sijoitustyyppi tuotu: %d" -#: aout-cris.c:258 +#: aout-cris.c:253 msgid "%B: Bad relocation record imported: %d" msgstr "%B: Väärä sijoitustietue tuotu: %d" -#: aoutx.h:1271 aoutx.h:1609 +#: aoutx.h:1273 aoutx.h:1611 #, c-format msgid "%s: can not represent section `%s' in a.out object file format" msgstr "%s: ei voi edustaa lohkoa ’%s’ â€a.outâ€-objektitiedostomuodossa" -#: aoutx.h:1575 +#: aoutx.h:1577 #, c-format msgid "%s: can not represent section for symbol `%s' in a.out object file format" msgstr "%s: ei voi edustaa lohkoa symbolille ’%s’ â€a.outâ€-objektitiedostomuodossa" -#: aoutx.h:1577 +#: aoutx.h:1579 vms-alpha.c:7649 msgid "*unknown*" msgstr "*tuntematon*" -#: aoutx.h:3994 aoutx.h:4320 +#: aoutx.h:4007 aoutx.h:4333 msgid "%P: %B: unexpected relocation type\n" msgstr "%P: %B: odottamaton sijoitustyyppi\n" -#: aoutx.h:5354 +#: aoutx.h:5364 #, c-format msgid "%s: relocatable link from %s to %s not supported" msgstr "%s: sijoitettava linkki kohteesta %s kohteeseen %s ei ole tuettu" -#: archive.c:2056 +#: archive.c:2125 msgid "Warning: writing archive was slow: rewriting timestamp\n" msgstr "Varoitus: arkiston kirjoitus oli hidasta: aikaleiman uudelleenkirjoitus\n" -#: archive.c:2342 +#: archive.c:2416 msgid "Reading archive file mod timestamp" msgstr "Luetaan arkistotiedoston muokkausaikaleima" # Intel coff armap -#: archive.c:2366 +#: archive.c:2440 msgid "Writing updated armap timestamp" msgstr "Kirjoitetaan päivitetty â€armapâ€-aikaleima" -#: bfd.c:375 +#: bfd.c:395 msgid "No error" msgstr "Ei virhettä" -#: bfd.c:376 +#: bfd.c:396 msgid "System call error" msgstr "Järjestelmäkutsuvirhe" -#: bfd.c:377 +#: bfd.c:397 msgid "Invalid bfd target" msgstr "Virheellinen bfd-kohde" -#: bfd.c:378 +#: bfd.c:398 msgid "File in wrong format" msgstr "Tiedosto väärässä muodossa" -#: bfd.c:379 +#: bfd.c:399 msgid "Archive object file in wrong format" msgstr "Arkisto-objektitiedosto väärässä muodossa" -#: bfd.c:380 +#: bfd.c:400 msgid "Invalid operation" msgstr "Virheellinen toiminta" -#: bfd.c:381 +#: bfd.c:401 msgid "Memory exhausted" msgstr "Muisti loppunut" -#: bfd.c:382 +#: bfd.c:402 msgid "No symbols" msgstr "Ei symboleja" -#: bfd.c:383 +#: bfd.c:403 msgid "Archive has no index; run ranlib to add one" msgstr "Arkistossa ei ole hakemistoa; lisää sellainen suorittamalla ranlib" -#: bfd.c:384 +#: bfd.c:404 msgid "No more archived files" msgstr "Ei enää arkistoituja tiedostoja" -#: bfd.c:385 +#: bfd.c:405 msgid "Malformed archive" msgstr "Muodoltaan virheellinen arkisto" -#: bfd.c:386 +#: bfd.c:406 msgid "File format not recognized" msgstr "Tiedostomuotoa ei tunnistettu" -#: bfd.c:387 +#: bfd.c:407 msgid "File format is ambiguous" msgstr "Tiedostomuoto ei ole yksiselitteinen" -#: bfd.c:388 +#: bfd.c:408 msgid "Section has no contents" msgstr "Lohkossa ei ole sisältöä" -#: bfd.c:389 +#: bfd.c:409 msgid "Nonrepresentable section on output" msgstr "Ei-edustava lohko tulosteessa" -#: bfd.c:390 +#: bfd.c:410 msgid "Symbol needs debug section which does not exist" -msgstr "Symboli tarvitsee virheenjäljityslohkon, jota ei ole" +msgstr "Symboli tarvitsee vianjäljityslohkon, jota ei ole" -#: bfd.c:391 +#: bfd.c:411 msgid "Bad value" msgstr "Väärä arvo" -#: bfd.c:392 +#: bfd.c:412 msgid "File truncated" msgstr "Tiedosto typistetty" -#: bfd.c:393 +#: bfd.c:413 msgid "File too big" msgstr "Tiedosto on liian iso" -#: bfd.c:394 +#: bfd.c:414 #, c-format msgid "Error reading %s: %s" msgstr "Virhe luettaessa %s: %s" -#: bfd.c:395 +#: bfd.c:415 msgid "#" msgstr "#" -#: bfd.c:919 +#: bfd.c:939 #, c-format msgid "BFD %s assertion fail %s:%d" msgstr "BFD %s suoritusehto epäonnistui %s:%d" -#: bfd.c:931 +#: bfd.c:951 #, c-format msgid "BFD %s internal error, aborting at %s line %d in %s\n" -msgstr "BFD %s sisäinen virhe, lopetetaan tiedostossa %s rivillä %d funktiossa %s\n" +msgstr "BFD %s sisäinen virhe, keskeytetään tiedostossa %s rivillä %d funktiossa %s\n" -#: bfd.c:935 +#: bfd.c:955 #, c-format msgid "BFD %s internal error, aborting at %s line %d\n" -msgstr "BFD %s sisäinen virhe, lopetetaan tiedostossa %s rivillä %d\n" +msgstr "BFD %s sisäinen virhe, keskeytetään tiedostossa %s rivillä %d\n" -#: bfd.c:937 +#: bfd.c:957 msgid "Please report this bug.\n" msgstr "Ilmoita tästä virheestä.\n" @@ -185,14 +185,14 @@ msgid "not mapping: env var not set\n" msgstr "ei kuvausta: ympäristömuuttuja ei ole asetettu\n" -#: binary.c:284 +#: binary.c:271 #, c-format msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." msgstr "Varoitus: Kirjoitetaan lohko â€%s†valtavaan (ts. negatiiviseen) tiedostosiirrososoitteeseen 0x%lx." -#: bout.c:1150 elf-m10300.c:2078 elf32-avr.c:1639 elf32-frv.c:5743 -#: elf32-xtensa.c:6639 elfxx-sparc.c:2456 reloc.c:5386 reloc16.c:162 -#: vms.c:1918 elf32-ia64.c:788 elf64-ia64.c:788 +#: bout.c:1146 elf-m10300.c:2063 elf32-avr.c:1640 elf32-frv.c:5740 +#: elfxx-sparc.c:2795 reloc.c:5646 reloc16.c:162 elf32-ia64.c:842 +#: elf64-ia64.c:842 msgid "%P%F: --relax and -r may not be used together\n" msgstr "%P%F: valitsimia --relax ja -r ei saa käyttää yhdessä\n" @@ -200,7 +200,7 @@ msgid "reopening %B: %s\n" msgstr "avataan uudelleen %B: %s\n" -#: coff-alpha.c:490 +#: coff-alpha.c:491 msgid "" "%B: Cannot handle compressed Alpha binaries.\n" " Use compiler flags, or objZ, to generate uncompressed binaries." @@ -208,42 +208,42 @@ "%B: Ei voi käsitellä tiivistettyjä Alpha-binaareja.\n" " Käytä kääntäjälippuja, tai objZ:aa, tiivistämättömien binaarien luomiseksi." -#: coff-alpha.c:647 +#: coff-alpha.c:648 msgid "%B: unknown/unsupported relocation type %d" msgstr "%B: tuntematon/ei-tuettu sijoitustyyppi %d" -#: coff-alpha.c:899 coff-alpha.c:936 coff-alpha.c:2024 coff-mips.c:1003 +#: coff-alpha.c:900 coff-alpha.c:937 coff-alpha.c:2025 coff-mips.c:1003 msgid "GP relative relocation used when GP not defined" msgstr "Yleisosoitinsuhteellista sijoitusta käytetty kun yleisosoitinta ei ole määritelty" -#: coff-alpha.c:1501 +#: coff-alpha.c:1502 msgid "using multiple gp values" msgstr "käytetään useita yleisosoitinarvoja" -#: coff-alpha.c:1560 +#: coff-alpha.c:1561 msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH" msgstr "%B: ei-tuettu sijoitus: ALPHA_R_GPRELHIGH" -#: coff-alpha.c:1567 +#: coff-alpha.c:1568 msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW" msgstr "%B: ei-tuettu sijoitus: ALPHA_R_GPRELLOW" -#: coff-alpha.c:1574 elf32-m32r.c:2477 elf64-alpha.c:3943 elf64-alpha.c:4098 -#: elf32-ia64.c:4462 elf64-ia64.c:4462 +#: coff-alpha.c:1575 elf32-m32r.c:2493 elf64-alpha.c:3991 elf64-alpha.c:4140 +#: elf32-ia64.c:4582 elf64-ia64.c:4582 msgid "%B: unknown relocation type %d" msgstr "%B: tuntematon sijoitustyyppi %d" -#: coff-arm.c:1039 +#: coff-arm.c:1038 #, c-format msgid "%B: unable to find THUMB glue '%s' for `%s'" msgstr "%B: ei löydetty THUMB-vihjettä â€%s†nimelle â€%sâ€" -#: coff-arm.c:1068 +#: coff-arm.c:1067 #, c-format msgid "%B: unable to find ARM glue '%s' for `%s'" msgstr "%B: ei löydetty ARM-vihjettä â€%s†nimelle â€%sâ€" -#: coff-arm.c:1370 elf32-arm.c:6372 +#: coff-arm.c:1369 elf32-arm.c:6501 #, c-format msgid "" "%B(%s): warning: interworking not enabled.\n" @@ -252,7 +252,7 @@ "%B(%s): varoitus: yhteistoimivuus vanhan koodin kanssa ei ole käytössä.\n" " ensimmäinen esiintymä: %B: â€armâ€-kutsu thumb-koodiin" -#: coff-arm.c:1460 +#: coff-arm.c:1459 #, c-format msgid "" "%B(%s): warning: interworking not enabled.\n" @@ -263,95 +263,95 @@ " ensimmäinen esiintymä: %B: thumb-kutsu arm-koodiin\n" " harkitse uudelleenlinkitystä --support-old-code aktivoituna" -#: coff-arm.c:1755 coff-tic80.c:695 cofflink.c:3027 +#: coff-arm.c:1754 coff-tic80.c:695 cofflink.c:3043 msgid "%B: bad reloc address 0x%lx in section `%A'" msgstr "%B: virheellinen reloc-tietueosoite 0x%lx lohkossa â€%Aâ€" -#: coff-arm.c:2080 +#: coff-arm.c:2079 msgid "%B: illegal symbol index in reloc: %d" msgstr "%B: virheellinen symboli-indeksi reloc-tietueessa: %d" -#: coff-arm.c:2211 +#: coff-arm.c:2210 #, c-format msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" msgstr "virhe: %B on käännetty APCS-%d:lle, kun taas %B on käännetty APCS-%d:lle" -#: coff-arm.c:2227 elf32-arm.c:10327 +#: coff-arm.c:2226 elf32-arm.c:14105 #, c-format msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers" msgstr "virhe: %B välittää float-liukuluvut liukulukurekistereissa, kun taas %B välittää ne kokonaislukurekistereissa" -#: coff-arm.c:2230 elf32-arm.c:10331 +#: coff-arm.c:2229 elf32-arm.c:14109 #, c-format msgid "error: %B passes floats in integer registers, whereas %B passes them in float registers" msgstr "virhe: %B välittää float-liukuluvut kokonaislukurekistereissa, kun taas %B välittää ne float-liukulukurekistereissa" -#: coff-arm.c:2244 +#: coff-arm.c:2243 #, c-format msgid "error: %B is compiled as position independent code, whereas target %B is absolute position" msgstr "virhe: %B käännetään paikkariippumattomana koodina, kun taas kohde %B on absoluuttipaikkainen" -#: coff-arm.c:2247 +#: coff-arm.c:2246 #, c-format msgid "error: %B is compiled as absolute position code, whereas target %B is position independent" msgstr "virhe: %B käännetään absoluuttisella paikkakoodilla, kun taas kohde %B on paikkariippumaton" -#: coff-arm.c:2275 elf32-arm.c:10396 +#: coff-arm.c:2274 elf32-arm.c:14174 #, c-format msgid "Warning: %B supports interworking, whereas %B does not" msgstr "Varoitus: %B tukee yhteistoimivuutta vanhan koodin kanssa, kun taas %B ei tue" -#: coff-arm.c:2278 elf32-arm.c:10402 +#: coff-arm.c:2277 elf32-arm.c:14180 #, c-format msgid "Warning: %B does not support interworking, whereas %B does" msgstr "Varoitus: %B ei tue yhteistoimivuutta vanhan koodin kanssa, kun taas %B tukee" -#: coff-arm.c:2302 +#: coff-arm.c:2301 #, c-format msgid "private flags = %x:" msgstr "yksityiset liput = %x:" -#: coff-arm.c:2310 elf32-arm.c:10453 +#: coff-arm.c:2309 elf32-arm.c:10492 #, c-format msgid " [floats passed in float registers]" msgstr " [liukuluvut välitetty liukulukurekistereissä]" -#: coff-arm.c:2312 +#: coff-arm.c:2311 #, c-format msgid " [floats passed in integer registers]" msgstr " [liukuluvut välitetty kokonaislukurekistereissä]" -#: coff-arm.c:2315 elf32-arm.c:10456 +#: coff-arm.c:2314 elf32-arm.c:10495 #, c-format msgid " [position independent]" msgstr " [paikkariippumaton]" -#: coff-arm.c:2317 +#: coff-arm.c:2316 #, c-format msgid " [absolute position]" msgstr " [absoluuttinen paikka]" -#: coff-arm.c:2321 +#: coff-arm.c:2320 #, c-format msgid " [interworking flag not initialised]" msgstr " [vanhan koodin kanssa toimimisen yhteistoimivuulippua ei ole alustettu]" -#: coff-arm.c:2323 +#: coff-arm.c:2322 #, c-format msgid " [interworking supported]" msgstr " [yhteistoimivuutta vanhan koodin kanssa tuettu]" -#: coff-arm.c:2325 +#: coff-arm.c:2324 #, c-format msgid " [interworking not supported]" msgstr " [yhteistoimivuutta vanhan koodin kanssa ei tueta]" -#: coff-arm.c:2371 elf32-arm.c:9360 +#: coff-arm.c:2370 elf32-arm.c:9520 #, c-format msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking" msgstr "Varoitus: Ei aseteta %B:n lippua yhteistoimivuudesta vanhan koodin kanssa koska se on jo määritelty ei-yhteistoimivuuskohteena" -#: coff-arm.c:2375 elf32-arm.c:9364 +#: coff-arm.c:2374 elf32-arm.c:9524 #, c-format msgid "Warning: Clearing the interworking flag of %B due to outside request" msgstr "Varoitus: %B:n yhteistoimivuuslipun nollaus johtuu ulkopuolisesta pyynnöstä" @@ -366,7 +366,7 @@ msgid "Relocation `%s' not yet implemented\n" msgstr "Sijoitusta â€%s†ei ole vielä toteutettu\n" -#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5143 +#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5147 msgid "%B: warning: illegal symbol index %ld in relocs" msgstr "%B: varoitus: virheellinen symboli-indeksi %ld relocs-tietueissa" @@ -374,32 +374,12 @@ msgid "uncertain calling convention for non-COFF symbol" msgstr "epävarma kutsukäytäntö ei-COFF-symbolille" -#: coff-m68k.c:506 elf32-bfin.c:5693 elf32-cr16.c:2965 elf32-m68k.c:4615 +#: coff-m68k.c:506 elf32-bfin.c:5678 elf32-cr16.c:2897 elf32-m68k.c:4672 msgid "unsupported reloc type" msgstr "ei-tuettu reloc-tyyppi" -#: coff-maxq.c:126 -msgid "Can't Make it a Short Jump" -msgstr "Sitä ei voi tehdä lyhyeksi hypyksi" - -#: coff-maxq.c:191 -msgid "Exceeds Long Jump Range" -msgstr "Ylittää pitkän hypyn arvoalueen" - -#: coff-maxq.c:202 coff-maxq.c:276 -msgid "Absolute address Exceeds 16 bit Range" -msgstr "Absoluuttinen osoite ylittää 16-bittialueen" - -#: coff-maxq.c:240 -msgid "Absolute address Exceeds 8 bit Range" -msgstr "Absoluuttinen osoite ylittää 8-bittialueen" - -#: coff-maxq.c:333 -msgid "Unrecognized Reloc Type" -msgstr "Tunnistamaton Reloc-tyyppi" - -#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:441 elf32-score7.c:341 -#: elf64-mips.c:2018 elfn32-mips.c:1832 +#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:430 elf32-score7.c:330 +#: elf64-mips.c:2019 elfn32-mips.c:1832 msgid "GP relative relocation when _gp not defined" msgstr "Yleisosoitinsuhteellinen sijoitus kun â€_gp†ei ole määritelty" @@ -407,17 +387,17 @@ msgid "Unrecognized reloc" msgstr "Tunnistamaton reloc-tietue" -#: coff-rs6000.c:2787 +#: coff-rs6000.c:2794 #, c-format msgid "%s: unsupported relocation type 0x%02x" msgstr "%s: ei-tuettu sijoitustyyppi 0x%02x" -#: coff-rs6000.c:2880 +#: coff-rs6000.c:2887 #, c-format msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" msgstr "%s: â€Sisältöluettelo-relocâ€-tietue osoitteessa 0x%x symboliin â€%s†ilman sisältöluettelotulokohtaa" -#: coff-rs6000.c:3646 coff64-rs6000.c:2168 +#: coff-rs6000.c:3652 coff64-rs6000.c:2175 msgid "%B: symbol `%s' has unrecognized smclas %d" msgstr "%B: symbolissa â€%s†on tunnistamaton â€smclasâ€-arvo %d" @@ -441,78 +421,82 @@ # C++ ABI-ryhmä on pyrkinyt ratkaisemaan tämän pulman sallimalla kääntäjän lähettää vaaditut # tiedot useisiin käännösyksiköihin, mikä sallii linkkerin poistaa kaikki muuta paitsi yhden # kopion. Tätä ominaisuutta kutsutaan useissa olemassa olevissa toteutuksissa nimellä COMDAT. -#: coffcode.h:960 +#: coffcode.h:973 msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'" msgstr "%B: varoitus: COMDAT-symboli â€%s†ei täsmää lohkonimen â€%s†kanssa" #. Generate a warning message rather using the 'unhandled' #. variable as this will allow some .sys files generate by #. other toolchains to be processed. See bugzilla issue 196. -#: coffcode.h:1176 +#: coffcode.h:1197 msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s" msgstr "%B: Varoitus: Ei oteta huomioon lohkolippua IMAGE_SCN_MEM_NOT_PAGED lohkossa %s" -#: coffcode.h:1240 +#: coffcode.h:1264 msgid "%B (%s): Section flag %s (0x%x) ignored" msgstr "%B (%s): Lohkolippua %s (0x%x) ei oteta huomioon" # TI tarkoittaa luultavasti Texas Instruments -#: coffcode.h:2382 +#: coffcode.h:2390 #, c-format msgid "Unrecognized TI COFF target id '0x%x'" msgstr "Tunnistamaton â€TI COFFâ€-kohdetunniste â€0x%xâ€" -#: coffcode.h:2696 +#: coffcode.h:2704 msgid "%B: reloc against a non-existant symbol index: %ld" msgstr "%B: reloc-tietue käyttäen ei-olemassaolevaa symboli-indeksiä: %ld" -#: coffcode.h:3669 +#: coffcode.h:3262 +msgid "%B: too many sections (%d)" +msgstr "%B: liian monia lohkoja (%d)" + +#: coffcode.h:3676 msgid "%B: section %s: string table overflow at offset %ld" msgstr "%B: lohko %s: merkkijonotaulun ylitys siirrososoitteessa %ld" -#: coffcode.h:4477 +#: coffcode.h:4481 msgid "%B: warning: line number table read failed" msgstr "%B: varoitus: rivinumerotaulun lukeminen ei onnistunut" -#: coffcode.h:4507 +#: coffcode.h:4511 msgid "%B: warning: illegal symbol index %ld in line numbers" msgstr "%B: varoitus: virheellinen symboli-indeksi %ld rivinumeroissa" -#: coffcode.h:4521 +#: coffcode.h:4525 msgid "%B: warning: duplicate line number information for `%s'" msgstr "%B: varoitus: rivinumerojen kaksoiskappaleita symbolille â€%sâ€" -#: coffcode.h:4912 +#: coffcode.h:4916 msgid "%B: Unrecognized storage class %d for %s symbol `%s'" msgstr "%B: Tunnistamaton tallennusluokka: %d lohkonimi: %s symbolinimi: â€%sâ€" -#: coffcode.h:5038 +#: coffcode.h:5042 msgid "warning: %B: local symbol `%s' has no section" msgstr "varoitus: %B: paikallisessa symbolissa â€%s†ei ole lohkoa" -#: coffcode.h:5181 +#: coffcode.h:5186 msgid "%B: illegal relocation type %d at address 0x%lx" msgstr "%B: virheellinen sijoitustyyppi %d osoitteessa 0x%lx" -#: coffgen.c:1571 +#: coffgen.c:1573 msgid "%B: bad string table size %lu" msgstr "%B: virheellinen merkkijonotaulukoko %lu" # Epäilen, että lähdekoodissa on virhe: tyypit ovat kaksi viimeistä parametriä. -#: cofflink.c:513 elflink.c:4307 +#: cofflink.c:524 elflink.c:4339 msgid "Warning: type of symbol `%s' changed from %d to %d in %B" msgstr "Varoitus: symbolityyppi â€%s†vaihtui tyypistä %d tyyppiin %d kohteessa %B" -#: cofflink.c:2305 +#: cofflink.c:2321 msgid "%B: relocs in section `%A', but it has no contents" msgstr "%B: relocs-tietueet lohkossa â€%Aâ€, mutta ilman sisältöä" -#: cofflink.c:2636 coffswap.h:826 +#: cofflink.c:2652 coffswap.h:826 #, c-format msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" msgstr "%s: %s: reloc-tietueylivuoto: 0x%lx > 0xffff" -#: cofflink.c:2645 coffswap.h:812 +#: cofflink.c:2661 coffswap.h:812 #, c-format msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" msgstr "%s: varoitus: %s: rivinumeroylivuoto: 0x%lx > 0xffff" @@ -521,65 +505,69 @@ msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale" msgstr "virhe: %B on käännetty EP9312:lle, kun taas %B on käännetty XScalelle" -#: cpu-arm.c:332 +#: cpu-arm.c:333 #, c-format msgid "warning: unable to update contents of %s section in %s" msgstr "varoitus: ei voi päivittää %s-lohkon sisältöä kohteessa %s" -#: dwarf2.c:430 +#: dwarf2.c:490 #, c-format msgid "Dwarf Error: Can't find %s section." msgstr "Dwarf-virhe: Ei löydy %s-lohkoa." -#: dwarf2.c:457 -#, c-format -msgid "Dwarf Error: unable to decompress %s section." -msgstr "Dwarf-virhe: lohkon %s pakkausta ei kyetä purkamaan." - -#: dwarf2.c:468 +#: dwarf2.c:518 #, c-format msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)." msgstr "Dwarf-virhe: Siirrososoite (%lu) suurempi tai yhtäsuuri kuin %s-koko (%lu)." -#: dwarf2.c:865 +#: dwarf2.c:940 #, c-format msgid "Dwarf Error: Invalid or unhandled FORM value: %u." msgstr "Dwarf-virhe: Virheellinen tai käsittelemätön FORM-arvo: %u." -#: dwarf2.c:1079 +#: dwarf2.c:1191 msgid "Dwarf Error: mangled line number section (bad file number)." msgstr "Dwarf-virhe: runneltu rivinumerolohko (virheellinen tiedostonumero)." -#: dwarf2.c:1413 +#: dwarf2.c:1443 +#, c-format +msgid "Dwarf Error: Unhandled .debug_line version %d." +msgstr "Dwarf-virhe: Käsittelemätön â€.debug_lineâ€-versio %d." + +#: dwarf2.c:1465 +msgid "Dwarf Error: Invalid maximum operations per instruction." +msgstr "Dwarf-virhe: Virheellinen toimintojen enimmäismäärä per käsky." + +#: dwarf2.c:1652 msgid "Dwarf Error: mangled line number section." msgstr "Dwarf-virhe: runneltu rivinumerolohko." -#: dwarf2.c:1760 dwarf2.c:1867 dwarf2.c:2139 +#: dwarf2.c:1978 dwarf2.c:2098 dwarf2.c:2382 #, c-format msgid "Dwarf Error: Could not find abbrev number %u." msgstr "Dwarf-virhe: Ei löytynyt lyhennenumeroa %u." -#: dwarf2.c:2100 +#: dwarf2.c:2343 #, c-format -msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 and 3 information." -msgstr "Dwarf-virhe: löytyi dwarf-versio â€%uâ€, tämä lukija käsittelee vain version 2 ja 3 tietoja." +msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information." +msgstr "Dwarf-virhe: löytyi dwarf-versio ’%u’, tämä lukija käsittelee vain version 2, 3 ja 4 tietoja." -#: dwarf2.c:2107 +#: dwarf2.c:2350 #, c-format msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'." -msgstr "Dwarf-virhe: löytyi osoitekoko â€%uâ€, tämä lukija ei voi käsitellä kokoja, jotka ovat suurempia kuin â€%uâ€." +msgstr "Dwarf-virhe: löytyi osoitekoko ’%u’, tämä lukija ei voi käsitellä kokoja, jotka ovat suurempia kuin ’%u’." -#: dwarf2.c:2130 +#: dwarf2.c:2373 #, c-format msgid "Dwarf Error: Bad abbrev number: %u." msgstr "Dwarf-virhe: Väärä lyhennenumero: %u." -#: ecoff.c:1238 +#: ecoff.c:1237 #, c-format msgid "Unknown basic type %d" msgstr "Tuntematon perustyyppi %d" -#: ecoff.c:1495 +#: ecoff.c:1494 #, c-format msgid "" "\n" @@ -588,7 +576,7 @@ "\n" " Loppu+1 symboli: %ld" -#: ecoff.c:1502 ecoff.c:1505 +#: ecoff.c:1501 ecoff.c:1504 #, c-format msgid "" "\n" @@ -597,7 +585,7 @@ "\n" " Ensimmäinen symboli: %ld" -#: ecoff.c:1517 +#: ecoff.c:1516 #, c-format msgid "" "\n" @@ -606,7 +594,7 @@ "\n" " Loppu+1 symboli: %-7ld Tyyppi: %s" -#: ecoff.c:1524 +#: ecoff.c:1523 #, c-format msgid "" "\n" @@ -615,7 +603,7 @@ "\n" " Paikallinen symboli: %ld" -#: ecoff.c:1532 +#: ecoff.c:1531 #, c-format msgid "" "\n" @@ -624,7 +612,7 @@ "\n" " struct; Loppu+1 symboli: %ld" -#: ecoff.c:1537 +#: ecoff.c:1536 #, c-format msgid "" "\n" @@ -633,7 +621,7 @@ "\n" " union; Loppu+1 symboli: %ld" -#: ecoff.c:1542 +#: ecoff.c:1541 #, c-format msgid "" "\n" @@ -642,7 +630,7 @@ "\n" " enum; Loppu+1 symboli: %ld" -#: ecoff.c:1548 +#: ecoff.c:1547 #, c-format msgid "" "\n" @@ -651,19 +639,19 @@ "\n" " Tyyppi: %s" -#: elf-attrs.c:567 -msgid "error: %B: Must be processed by '%s' toolchain" -msgstr "virhe: %B: Tämän on â€%sâ€-työkaluketjun käsiteltävä" +#: elf-attrs.c:569 +msgid "error: %B: Object has vendor-specific contents that must be processed by the '%s' toolchain" +msgstr "virhe: %B: Objektilla on toimittajakohtainen sisältö, joka on käsiteltävä ’%s’-työkaluketjulla" -#: elf-attrs.c:575 +#: elf-attrs.c:578 msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'" -msgstr "virhe: %B: Objektitunniste â€%d, %s†ei ole yhteensopiva tunnisteen â€%d, %s†kanssa" +msgstr "virhe: %B: Objektitunniste ’%d, %s’ ei ole yhteensopiva tunnisteen ’%d, %s’ kanssa" -#: elf-eh-frame.c:884 +#: elf-eh-frame.c:913 msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n" msgstr "%P: virhe kohteessa %B(%A); â€.eh_frame_hdrâ€-taulua ei luotu.\n" -#: elf-eh-frame.c:1122 +#: elf-eh-frame.c:1165 msgid "%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n" msgstr "%P: fde-koodaus kohteessa %B(%A) estää â€.eh_frame_hdrâ€-taulun luomisen.\n" @@ -671,104 +659,112 @@ msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%B' can not be used when making an executable; recompile with -fPIE and relink with -pie\n" msgstr "%F%P: dynaamista STT_GNU_IFUNC symbolia â€%s†osoitinyhtäläisyydellä kohteessa â€%B†ei voida käyttää tekemään suoritettavaa tiedostoa; käännä uudelleen valitsimella -fPIE ja linkitä uudelleen valitsemella -pie\n" -#: elf-m10200.c:456 elf-m10300.c:1575 elf32-avr.c:1251 elf32-bfin.c:3200 -#: elf32-cr16.c:1517 elf32-cr16c.c:790 elf32-cris.c:2089 elf32-crx.c:933 -#: elf32-d10v.c:516 elf32-fr30.c:616 elf32-frv.c:4114 elf32-h8300.c:516 -#: elf32-i860.c:1218 elf32-ip2k.c:1499 elf32-iq2000.c:691 elf32-lm32.c:1171 -#: elf32-m32c.c:560 elf32-m32r.c:3102 elf32-m68hc1x.c:1136 elf32-mep.c:541 -#: elf32-microblaze.c:1226 elf32-moxie.c:291 elf32-msp430.c:493 elf32-mt.c:402 -#: elf32-openrisc.c:411 elf32-score.c:2752 elf32-score7.c:2591 -#: elf32-spu.c:5045 elf32-v850.c:1701 elf32-xstormy16.c:948 elf64-mmix.c:1533 +#: elf-m10200.c:450 elf-m10300.c:1560 elf32-avr.c:1263 elf32-bfin.c:3193 +#: elf32-cr16.c:1482 elf32-cr16c.c:780 elf32-cris.c:2077 elf32-crx.c:922 +#: elf32-d10v.c:509 elf32-fr30.c:609 elf32-frv.c:4111 elf32-h8300.c:509 +#: elf32-i860.c:1211 elf32-ip2k.c:1468 elf32-iq2000.c:684 elf32-lm32.c:1168 +#: elf32-m32c.c:553 elf32-m32r.c:3111 elf32-m68hc1x.c:1138 elf32-mep.c:534 +#: elf32-microblaze.c:1231 elf32-moxie.c:282 elf32-msp430.c:486 elf32-mt.c:395 +#: elf32-openrisc.c:404 elf32-score.c:2731 elf32-score7.c:2540 +#: elf32-spu.c:5042 elf32-v850.c:2143 elf32-xstormy16.c:941 elf64-mmix.c:1522 msgid "internal error: out of range error" msgstr "sisäinen virhe: â€lukualueen ulkopuolellaâ€-virhe" -#: elf-m10200.c:460 elf-m10300.c:1579 elf32-avr.c:1255 elf32-bfin.c:3204 -#: elf32-cr16.c:1521 elf32-cr16c.c:794 elf32-cris.c:2093 elf32-crx.c:937 -#: elf32-d10v.c:520 elf32-fr30.c:620 elf32-frv.c:4118 elf32-h8300.c:520 -#: elf32-i860.c:1222 elf32-iq2000.c:695 elf32-lm32.c:1175 elf32-m32c.c:564 -#: elf32-m32r.c:3106 elf32-m68hc1x.c:1140 elf32-mep.c:545 -#: elf32-microblaze.c:1230 elf32-moxie.c:295 elf32-msp430.c:497 -#: elf32-openrisc.c:415 elf32-score.c:2756 elf32-score7.c:2595 -#: elf32-spu.c:5049 elf32-v850.c:1705 elf32-xstormy16.c:952 elf64-mmix.c:1537 -#: elfxx-mips.c:9103 +#: elf-m10200.c:454 elf-m10300.c:1564 elf32-avr.c:1267 elf32-bfin.c:3197 +#: elf32-cr16.c:1486 elf32-cr16c.c:784 elf32-cris.c:2081 elf32-crx.c:926 +#: elf32-d10v.c:513 elf32-fr30.c:613 elf32-frv.c:4115 elf32-h8300.c:513 +#: elf32-i860.c:1215 elf32-iq2000.c:688 elf32-lm32.c:1172 elf32-m32c.c:557 +#: elf32-m32r.c:3115 elf32-m68hc1x.c:1142 elf32-mep.c:538 +#: elf32-microblaze.c:1235 elf32-moxie.c:286 elf32-msp430.c:490 +#: elf32-openrisc.c:408 elf32-score.c:2735 elf32-score7.c:2544 +#: elf32-spu.c:5046 elf32-v850.c:2147 elf32-xstormy16.c:945 elf64-mmix.c:1526 +#: elfxx-mips.c:9186 msgid "internal error: unsupported relocation error" msgstr "sisäinen virhe: ei-tuettu sijoitusvirhe" -#: elf-m10200.c:464 elf32-cr16.c:1525 elf32-cr16c.c:798 elf32-crx.c:941 -#: elf32-d10v.c:524 elf32-h8300.c:524 elf32-lm32.c:1179 elf32-m32r.c:3110 -#: elf32-m68hc1x.c:1144 elf32-microblaze.c:1234 elf32-score.c:2760 -#: elf32-score7.c:2599 elf32-spu.c:5053 +#: elf-m10200.c:458 elf32-cr16.c:1490 elf32-cr16c.c:788 elf32-crx.c:930 +#: elf32-d10v.c:517 elf32-h8300.c:517 elf32-lm32.c:1176 elf32-m32r.c:3119 +#: elf32-m68hc1x.c:1146 elf32-microblaze.c:1239 elf32-score.c:2739 +#: elf32-score7.c:2548 elf32-spu.c:5050 msgid "internal error: dangerous error" msgstr "sisäinen virhe: vaarallinen virhe" -#: elf-m10200.c:468 elf-m10300.c:1592 elf32-avr.c:1263 elf32-bfin.c:3212 -#: elf32-cr16.c:1529 elf32-cr16c.c:802 elf32-cris.c:2101 elf32-crx.c:945 -#: elf32-d10v.c:528 elf32-fr30.c:628 elf32-frv.c:4126 elf32-h8300.c:528 -#: elf32-i860.c:1230 elf32-ip2k.c:1514 elf32-iq2000.c:703 elf32-lm32.c:1183 -#: elf32-m32c.c:572 elf32-m32r.c:3114 elf32-m68hc1x.c:1148 elf32-mep.c:553 -#: elf32-microblaze.c:1238 elf32-moxie.c:303 elf32-msp430.c:505 elf32-mt.c:410 -#: elf32-openrisc.c:423 elf32-score.c:2769 elf32-score7.c:2603 -#: elf32-spu.c:5057 elf32-v850.c:1725 elf32-xstormy16.c:960 elf64-mmix.c:1545 +#: elf-m10200.c:462 elf-m10300.c:1577 elf32-avr.c:1275 elf32-bfin.c:3205 +#: elf32-cr16.c:1494 elf32-cr16c.c:792 elf32-cris.c:2089 elf32-crx.c:934 +#: elf32-d10v.c:521 elf32-fr30.c:621 elf32-frv.c:4123 elf32-h8300.c:521 +#: elf32-i860.c:1223 elf32-ip2k.c:1483 elf32-iq2000.c:696 elf32-lm32.c:1180 +#: elf32-m32c.c:565 elf32-m32r.c:3123 elf32-m68hc1x.c:1150 elf32-mep.c:546 +#: elf32-microblaze.c:1243 elf32-moxie.c:294 elf32-msp430.c:498 elf32-mt.c:403 +#: elf32-openrisc.c:416 elf32-score.c:2748 elf32-score7.c:2552 +#: elf32-spu.c:5054 elf32-v850.c:2167 elf32-xstormy16.c:953 elf64-mmix.c:1534 msgid "internal error: unknown error" msgstr "sisäinen virhe: tuntematon virhe" -#: elf-m10300.c:1512 elf32-arm.c:8963 elf32-i386.c:3984 elf32-m32r.c:2588 -#: elf32-m68k.c:4099 elf32-ppc.c:7906 elf32-s390.c:3015 elf32-sh.c:3429 -#: elf32-xtensa.c:3027 elf64-ppc.c:12063 elf64-s390.c:2974 elf64-sh64.c:1648 -#: elf64-x86-64.c:3657 elfxx-sparc.c:3317 +#: elf-m10300.c:1504 elf32-arm.c:9098 elf32-i386.c:4081 elf32-m32r.c:2604 +#: elf32-m68k.c:4156 elf32-ppc.c:8089 elf32-s390.c:3010 elf32-sh.c:4223 +#: elf32-xtensa.c:3067 elf64-ppc.c:13115 elf64-s390.c:2985 elf64-sh64.c:1636 +#: elf64-x86-64.c:3719 elfxx-sparc.c:3806 msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" msgstr "%B(%A+0x%lx): ratkaisematon %s sijoitus symbolia â€%s†varten" -#: elf-m10300.c:1584 +#: elf-m10300.c:1569 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)" msgstr "virhe: sopimaton sijoitustyyppi jaetulle kirjastolle (unohtuiko -fpic?)" -#: elf-m10300.c:1587 +#: elf-m10300.c:1572 msgid "internal error: suspicious relocation type used in shared library" msgstr "sisäinen virhe: epäilyttävää sijoitustyyppiä käytetään jaetussa kirjastossa" -#: elf-m10300.c:4385 elf32-arm.c:11346 elf32-cr16.c:2519 elf32-cris.c:3030 -#: elf32-hppa.c:1891 elf32-i370.c:506 elf32-i386.c:1975 elf32-lm32.c:1873 -#: elf32-m32r.c:1921 elf32-m68k.c:3188 elf32-ppc.c:4953 elf32-s390.c:1650 -#: elf32-sh.c:2574 elf32-vax.c:1052 elf64-ppc.c:6348 elf64-s390.c:1623 -#: elf64-sh64.c:3396 elf64-x86-64.c:1821 elfxx-sparc.c:1802 +#: elf-m10300.c:4372 elf32-arm.c:11392 elf32-cr16.c:2451 elf32-cris.c:3044 +#: elf32-hppa.c:1894 elf32-i370.c:503 elf32-i386.c:2036 elf32-lm32.c:1868 +#: elf32-m32r.c:1927 elf32-m68k.c:3252 elf32-ppc.c:4994 elf32-s390.c:1652 +#: elf32-sh.c:2931 elf32-vax.c:1040 elf64-ppc.c:6483 elf64-s390.c:1635 +#: elf64-sh64.c:3377 elf64-x86-64.c:1871 elfxx-sparc.c:2104 #, c-format msgid "dynamic variable `%s' is zero size" msgstr "dynaaminen muuttuja â€%s†on nollakokoinen" -#: elf.c:329 +#: elf.c:334 msgid "%B: invalid string offset %u >= %lu for section `%s'" msgstr "%B: virheellinen merkkijonosiirrososoite %u >= %lu lohkolle â€%sâ€" -#: elf.c:439 +#: elf.c:446 msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" msgstr "%B symbolinumero %lu viittaa puuttuvaan SHT_SYMTAB_SHNDX-lohkoon" -#: elf.c:595 +#: elf.c:602 msgid "%B: Corrupt size field in group section header: 0x%lx" msgstr "%B: Rikkinäinen kokokenttä ryhmälohko-otsakkeessa: 0x%lx" -#: elf.c:631 +#: elf.c:638 msgid "%B: invalid SHT_GROUP entry" msgstr "%B: virheellinen SHT_GROUP-tulokohta" -#: elf.c:701 +#: elf.c:708 msgid "%B: no group info for section %A" msgstr "%B: ei ryhmätietoja lohkolle %A" -#: elf.c:730 elf.c:2960 elflink.c:9912 +#: elf.c:737 elf.c:3090 elflink.c:10062 msgid "%B: warning: sh_link not set for section `%A'" msgstr "%B: varoitus: sh_link-kenttää ei aseteta lohkolle â€%Aâ€" -#: elf.c:749 +#: elf.c:756 msgid "%B: sh_link [%d] in section `%A' is incorrect" msgstr "%B: sh_link [%d]-kenttä lohkossa â€%A†on virheellinen" -#: elf.c:784 +#: elf.c:791 msgid "%B: unknown [%d] section `%s' in group [%s]" msgstr "%B: tuntematon [%d] lohko â€%s†ryhmässä [%s]" -#: elf.c:1104 +#: elf.c:1041 +msgid "%B: unable to initialize commpress status for section %s" +msgstr "%B: ei kyetä alustamaan tiivistystilaa lohkolle %s" + +#: elf.c:1050 +msgid "%B: unable to initialize decommpress status for section %s" +msgstr "%B: ei kyetä alustamaan tiivistyksenpurkutilaa lohkolle %s" + +#: elf.c:1158 #, c-format msgid "" "\n" @@ -777,7 +773,7 @@ "\n" "Ohjelmaotsake:\n" -#: elf.c:1146 +#: elf.c:1200 #, c-format msgid "" "\n" @@ -786,7 +782,7 @@ "\n" "Dynaaminen lohko:\n" -#: elf.c:1282 +#: elf.c:1336 #, c-format msgid "" "\n" @@ -795,7 +791,7 @@ "\n" "Versiomäärittelyt:\n" -#: elf.c:1307 +#: elf.c:1361 #, c-format msgid "" "\n" @@ -804,82 +800,82 @@ "\n" "Versioviitteet:\n" -#: elf.c:1312 +#: elf.c:1366 #, c-format msgid " required from %s:\n" msgstr " kysytty kohteesta %s:\n" -#: elf.c:1702 +#: elf.c:1773 msgid "%B: invalid link %lu for reloc section %s (index %u)" msgstr "%B: virheellinen linkki %lu reloc-tietueelle %s (indeksi %u)" -#: elf.c:1870 +#: elf.c:1943 msgid "%B: don't know how to handle allocated, application specific section `%s' [0x%8x]" msgstr "%B: ei tiedä kuinka käsitellä varattua, sovelluskohtaista lohkoa â€%s†[0x%8x]" -#: elf.c:1882 +#: elf.c:1955 msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]" msgstr "%B: ei tiedä, kuinka käsitellä prosessorikohtaista lohkoa â€%s†[0x%8x]" -#: elf.c:1893 +#: elf.c:1966 msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]" msgstr "%B: ei tiedä, kuinka käsitellä käyttöjärjestelmäkohtaista lohkoa â€%s†[0x%8x]" -#: elf.c:1903 +#: elf.c:1976 msgid "%B: don't know how to handle section `%s' [0x%8x]" msgstr "%B: ei tiedä kuinka käsitellä lohkoa â€%s†[0x%8x]" -#: elf.c:2500 +#: elf.c:2603 #, c-format msgid "warning: section `%A' type changed to PROGBITS" msgstr "varoitus: lohkon â€%A†tyyppi vaihtunut tyypiksi PROGBITS" -#: elf.c:2917 +#: elf.c:3047 msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'" msgstr "%B: sh_link-lohko â€%A†osoittaa hylättyyn lohkoon â€%A†kohteessa â€%Bâ€" -#: elf.c:2940 +#: elf.c:3070 msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'" msgstr "%B: sh_link-lohko â€%A†osoittaa poistettuun lohkoon â€%A†kohteessa â€%Bâ€" -#: elf.c:4311 +#: elf.c:4480 msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section" msgstr "%B: Ensimmäinen lohko PT_DYNAMIC-segmentissä ei ole â€.dynamicâ€-lohko" -#: elf.c:4338 +#: elf.c:4507 msgid "%B: Not enough room for program headers, try linking with -N" msgstr "%B: Ei tarpeeksi tilaa ohjelmaotsakkeille, yritä linkittää â€-Nâ€-argumentilla" -#: elf.c:4420 -msgid "%B: section %A vma 0x%lx overlaps previous sections" -msgstr "%B: lohkon %A vma 0x%lx menee päällekkäin edellisten lohkojen kanssa" +#: elf.c:4594 +msgid "%B: section %A lma %#lx adjusted to %#lx" +msgstr "%B: lohko %A vma %#lx säädetty kohteeseen %#lx" -#: elf.c:4515 +#: elf.c:4713 msgid "%B: section `%A' can't be allocated in segment %d" msgstr "%B: lohkoa â€%A†ei voida varata segmentissä %d" -#: elf.c:4565 +#: elf.c:4761 msgid "%B: warning: allocated section `%s' not in segment" msgstr "%B: varoitus: varattu lohko â€%s†ei ole segmentissä" -#: elf.c:5065 +#: elf.c:5257 msgid "%B: symbol `%s' required but not present" msgstr "%B: symboli â€%s†vaadittu, mutta ei ole annettu" -#: elf.c:5404 +#: elf.c:5595 msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n" msgstr "%B: varoitus: Tyhjä ladattava segmentti havaittu, onko tämä tarkoituksellinen ?\n" -#: elf.c:6370 +#: elf.c:6622 #, c-format msgid "Unable to find equivalent output section for symbol '%s' from section '%s'" msgstr "Ei löydy samanlaista tulostelohkoa symbolille â€%s†lohkosta â€%sâ€" -#: elf.c:7356 +#: elf.c:7611 msgid "%B: unsupported relocation type %s" msgstr "%B: ei-tuettu sijoitustyyppi %s" -#: elf32-arm.c:3149 +#: elf32-arm.c:3183 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: Thumb call to ARM" @@ -887,7 +883,7 @@ "%B(%s): varoitus: yhteistoimivuus vanhan koodin kanssa ei ole käytössä.\n" " ensimmäinen esiintymä: %B: Thumb-kutsu ARM-koodiin" -#: elf32-arm.c:3190 +#: elf32-arm.c:3226 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: ARM call to Thumb" @@ -895,41 +891,41 @@ "%B(%s): varoitus: yhteistoimivuus vanhan koodin kanssa ei ole käytössä.\n" " ensimmäinen esiintymä: %B: ARM-kutsu Thumb-koodiin" -#: elf32-arm.c:3387 elf32-arm.c:4692 +#: elf32-arm.c:3432 elf32-arm.c:4807 #, c-format msgid "%s: cannot create stub entry %s" msgstr "%s: ei voi luoda stub-tulokohtaa %s" -#: elf32-arm.c:4804 +#: elf32-arm.c:4923 #, c-format msgid "unable to find THUMB glue '%s' for '%s'" msgstr "ei löydy THUMB-vihjettä â€%s†kohteelle â€%sâ€" -#: elf32-arm.c:4838 +#: elf32-arm.c:4959 #, c-format msgid "unable to find ARM glue '%s' for '%s'" msgstr "ei löydy ARM-vihjettä â€%s†kohteelle â€%sâ€" -#: elf32-arm.c:5365 +#: elf32-arm.c:5485 msgid "%B: BE8 images only valid in big-endian mode." msgstr "%B: BE8-vedokset ovat oikeita vain big-endian-tavujärjestyksessä." # Vector Floating Point (VFP) #. Give a warning, but do as the user requests anyway. -#: elf32-arm.c:5590 +#: elf32-arm.c:5715 msgid "%B: warning: selected VFP11 erratum workaround is not necessary for target architecture" msgstr "%B: varoitus: valittu VFP11-virheenkiertotapa ei ole välttämätön kohdearkkitehtuurille" -#: elf32-arm.c:6130 elf32-arm.c:6150 +#: elf32-arm.c:6259 elf32-arm.c:6279 msgid "%B: unable to find VFP11 veneer `%s'" msgstr "%B: ei löydy VFP11-julkisivua â€%sâ€" -#: elf32-arm.c:6196 +#: elf32-arm.c:6327 #, c-format msgid "Invalid TARGET2 relocation type '%s'." msgstr "Virheellinen TARGET2-sijoitustyyppi â€%sâ€." -#: elf32-arm.c:6281 +#: elf32-arm.c:6411 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: thumb call to arm" @@ -937,424 +933,440 @@ "%B(%s): varoitus: yhteistoimivuus vanhan koodin kanssa ei ole käytössä.\n" " ensimmäinen esiintymä: %B: thumb-kutsu arm-koodiin" -#: elf32-arm.c:7003 +#: elf32-arm.c:7130 msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'." msgstr "\\%B: Varoitus: â€Arm BLXâ€-käskykohteet Arm-funktiossa â€%sâ€." -#: elf32-arm.c:7405 +#: elf32-arm.c:7541 msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'." msgstr "%B: Varoitus: â€Thumb BLXâ€-käskykohteet thumb-funktiossa â€%sâ€." -#: elf32-arm.c:8085 +#: elf32-arm.c:8223 msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object" msgstr "%B(%A+0x%lx): R_ARM_TLS_LE32-sijoitukset eivät ole sallittuja jaetuissa objekteissa" -#: elf32-arm.c:8300 +#: elf32-arm.c:8438 msgid "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group relocations" msgstr "%B(%A+0x%lx): Vain ADD- tai SUB-käskyt ovat sallittuja ALU-ryhmän sijoituksille" -#: elf32-arm.c:8340 elf32-arm.c:8427 elf32-arm.c:8510 elf32-arm.c:8595 +#: elf32-arm.c:8478 elf32-arm.c:8565 elf32-arm.c:8648 elf32-arm.c:8733 msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s" msgstr "%B(%A+0x%lx): Ylivuoto, kun halkaistaan 0x%lx ryhmäsijoitukselle %s" -#: elf32-arm.c:8821 elf32-sh.c:3325 elf64-sh64.c:1556 +#: elf32-arm.c:8963 elf32-sh.c:4112 elf64-sh64.c:1544 msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section" msgstr "%B(%A+0x%lx): %s sijoitus SEC_MERGE-lohkoa varten" # TLS: transport layer security -#: elf32-arm.c:8939 elf32-m68k.c:4134 elf32-xtensa.c:2765 elf64-ppc.c:10743 +#: elf32-arm.c:9074 elf32-m68k.c:4191 elf32-xtensa.c:2805 elf64-ppc.c:11689 msgid "%B(%A+0x%lx): %s used with TLS symbol %s" msgstr "%B(%A+0x%lx): %s käytetään TLS-symbolin %s kanssa" -#: elf32-arm.c:8940 elf32-m68k.c:4135 elf32-xtensa.c:2766 elf64-ppc.c:10744 +#: elf32-arm.c:9075 elf32-m68k.c:4192 elf32-xtensa.c:2806 elf64-ppc.c:11690 msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s" msgstr "%B(%A+0x%lx): %s käytetään ei-TLS-symbolin %s kanssa" -#: elf32-arm.c:8997 +#: elf32-arm.c:9132 elf32-tic6x.c:1632 msgid "out of range" msgstr "lukualueen ulkopuolella" -#: elf32-arm.c:9001 +#: elf32-arm.c:9136 elf32-tic6x.c:1636 msgid "unsupported relocation" msgstr "ei-tuettu sijoitus" -#: elf32-arm.c:9009 +#: elf32-arm.c:9144 elf32-tic6x.c:1644 msgid "unknown error" msgstr "tuntematon virhe" -#: elf32-arm.c:9409 +#: elf32-arm.c:9569 msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it" msgstr "Varoitus: Nollataan %B:n vanhan koodin kanssa toimimisen yhteistoimivuuslippu, koska se on linkitetty ei-yhteistoimivuuskoodiin %B:ssa" -#: elf32-arm.c:9652 +#: elf32-arm.c:9663 +msgid "%B: Unknown mandatory EABI object attribute %d" +msgstr "%B: Tuntematon pakollinen EABI-objektiattribuutti %d" + +#: elf32-arm.c:9671 +msgid "Warning: %B: Unknown EABI object attribute %d" +msgstr "Varoitus: %B: Tuntematon EABI-objektiattribuutti %d" + +#: elf32-arm.c:9852 msgid "error: %B: Unknown CPU architecture" msgstr "virhe: %B: Tuntematon prosessoriarkkitehtuuri" -#: elf32-arm.c:9690 +#: elf32-arm.c:9890 msgid "error: %B: Conflicting CPU architectures %d/%d" msgstr "virhe: %B: Ristiriitaisia prosessoriarkkitehtuureja %d/%d" -#: elf32-arm.c:9747 +#: elf32-arm.c:9942 +msgid "Error: %B has both the current and legacy Tag_MPextension_use attributes" +msgstr "Virhe: kohteessa %B on sekä nykyisiä että perinne-Tag_MPextension_use-attribuutteja" + +#: elf32-arm.c:9967 msgid "error: %B uses VFP register arguments, %B does not" msgstr "virhe: %B käyttää VFP-rekisteriargumentteja, %B ei käytä" -#: elf32-arm.c:9897 +#: elf32-arm.c:10112 +msgid "error: %B: unable to merge virtualization attributes with %B" +msgstr "virhe: %B: ei kyetä yhdistämään virtualisointiattribuutteja kohteen %B kanssa" + +#: elf32-arm.c:10138 msgid "error: %B: Conflicting architecture profiles %c/%c" msgstr "virhe: %B: Ristiriitaisia arkkitehtuuriprofiileja %c/%c" -#: elf32-arm.c:9921 +#: elf32-arm.c:10239 msgid "Warning: %B: Conflicting platform configuration" msgstr "Varoitus: %B: Ristiriitainen käyttöjärjestemäkonfiguraatio" -#: elf32-arm.c:9930 +#: elf32-arm.c:10248 msgid "error: %B: Conflicting use of R9" msgstr "virhe: %B: Ristiriitainen R9:n käyttö" -#: elf32-arm.c:9942 +#: elf32-arm.c:10260 msgid "error: %B: SB relative addressing conflicts with use of R9" msgstr "virhe: %B: SB-suhteellinen osoitteitus on ristiriidassa R9:n käytön kanssa" -#: elf32-arm.c:9955 +#: elf32-arm.c:10273 msgid "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail" msgstr "varoitus: %B käyttää %u-tavuista wchar_t-merkkiä vaikka tuloste käyttää %u-tavuista wchar_t-merkkiä; wchart_t-käyttöarvot objekteissa saattavat olla virheellisiä" -#: elf32-arm.c:9986 +#: elf32-arm.c:10304 msgid "warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail" msgstr "varoitus: %B käyttää %s enums-alkioita vaikka tuloste käyttää %s enums-alkioita; enum-arvojen käyttö objekteissa saattaa olla virheellinen" -#: elf32-arm.c:9998 +#: elf32-arm.c:10316 msgid "error: %B uses iWMMXt register arguments, %B does not" msgstr "virhe: %B käyttää iWMMXt-rekisteriargumentteja, %B ei käytä" -#: elf32-arm.c:10020 +#: elf32-arm.c:10333 msgid "error: fp16 format mismatch between %B and %B" msgstr "virhe: fp16-muototäsmäämättömyys kohteiden %B ja %B välillä" -#: elf32-arm.c:10063 elf32-arm.c:10156 -msgid "%B: Unknown mandatory EABI object attribute %d" -msgstr "%B: Tuntematon pakollinen EABI-objektiattribuutti %d" - -#: elf32-arm.c:10071 elf32-arm.c:10164 -msgid "Warning: %B: Unknown EABI object attribute %d" -msgstr "Varoitus: %B: Tuntematon EABI-objektiattribuutti %d" - -#: elf32-arm.c:10224 -msgid "error: %B is already in final BE8 format" -msgstr "virhe: %B on jo lopullisessa BE8-muodossa" - -#: elf32-arm.c:10300 -msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d" -msgstr "virhe: Lähdeobjektissa %B on EABI-versio %d, mutta kohteessa %B on EABI-versio %d" - -#: elf32-arm.c:10316 -msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" -msgstr "virhe: %B on käännetty APCS-%d:lle, kun taas kohde %B käyttää APCS-%d:ta" - -# Vector floating point (coprosessor) -#: elf32-arm.c:10341 -msgid "error: %B uses VFP instructions, whereas %B does not" -msgstr "virhe: %B käyttää vektoriliukulukukäskyjä, kun taas %B ei käytä" - -# Floating Point Accelerator (chip) -#: elf32-arm.c:10345 -msgid "error: %B uses FPA instructions, whereas %B does not" -msgstr "virhe: %B käyttää liukulukukiihdytinkäskyjä, kun taas %B ei käytä" - -#: elf32-arm.c:10355 -msgid "error: %B uses Maverick instructions, whereas %B does not" -msgstr "virhe: %B käyttää Maverick-käskyjä, kun taas %B ei käytä" - -#: elf32-arm.c:10359 -msgid "error: %B does not use Maverick instructions, whereas %B does" -msgstr "virhe: %B ei käytä Maverick-käskyjä, kun taas %B käyttää" - -#: elf32-arm.c:10378 -msgid "error: %B uses software FP, whereas %B uses hardware FP" -msgstr "virhe: %B käyttää ohjelmistoliukulukuja, kun taas %B käyttää laitteistoliukulukuja" - -#: elf32-arm.c:10382 -msgid "error: %B uses hardware FP, whereas %B uses software FP" -msgstr "virhe: %B käyttää laitteistoliukulukuja, kun taas %B käyttää ohjelmistoliukulukuja" +#: elf32-arm.c:10357 +msgid "DIV usage mismatch between %B and %B" +msgstr "DIV-käyttötäsmäämättömyys kohteiden %B ja %B välillä" + +#: elf32-arm.c:10376 +msgid "%B has has both the current and legacy Tag_MPextension_use attributes" +msgstr "kohteella %B on sekä nykyisiä että perinne-Tag_MPextension_use-attribuutteja" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. #. Ignore init flag - it may not be set, despite the flags field containing valid data. -#: elf32-arm.c:10429 elf32-bfin.c:5082 elf32-cris.c:4110 elf32-m68hc1x.c:1280 -#: elf32-m68k.c:1169 elf32-score.c:4039 elf32-score7.c:3876 elf32-vax.c:540 -#: elfxx-mips.c:12755 +#: elf32-arm.c:10468 elf32-bfin.c:5065 elf32-cris.c:4162 elf32-m68hc1x.c:1282 +#: elf32-m68k.c:1235 elf32-score.c:3996 elf32-score7.c:3803 elf32-vax.c:528 +#: elfxx-mips.c:12842 #, c-format msgid "private flags = %lx:" msgstr "yksityiset liput = %lx:" -#: elf32-arm.c:10438 +#: elf32-arm.c:10477 #, c-format msgid " [interworking enabled]" msgstr " [yhteistoimivuus vanhan koodin kanssa on käytössä]" -#: elf32-arm.c:10446 +#: elf32-arm.c:10485 #, c-format msgid " [VFP float format]" msgstr " [vektoriliukulukumuoto]" -#: elf32-arm.c:10448 +#: elf32-arm.c:10487 #, c-format msgid " [Maverick float format]" msgstr " [Maverick-liukulukumuoto]" -#: elf32-arm.c:10450 +#: elf32-arm.c:10489 #, c-format msgid " [FPA float format]" msgstr " [Liukulukukiihdytin-liukulukumuoto]" -#: elf32-arm.c:10459 +#: elf32-arm.c:10498 #, c-format msgid " [new ABI]" msgstr " [uusi ABI]" -#: elf32-arm.c:10462 +#: elf32-arm.c:10501 #, c-format msgid " [old ABI]" msgstr " [vanha ABI]" -#: elf32-arm.c:10465 +#: elf32-arm.c:10504 #, c-format msgid " [software FP]" msgstr " [ohjelmistoliukuluku]" -#: elf32-arm.c:10474 +#: elf32-arm.c:10513 #, c-format msgid " [Version1 EABI]" msgstr " [Versio 1 EABI]" -#: elf32-arm.c:10477 elf32-arm.c:10488 +#: elf32-arm.c:10516 elf32-arm.c:10527 #, c-format msgid " [sorted symbol table]" msgstr " [lajiteltu symbolitaulu]" -#: elf32-arm.c:10479 elf32-arm.c:10490 +#: elf32-arm.c:10518 elf32-arm.c:10529 #, c-format msgid " [unsorted symbol table]" msgstr " [lajittelematon symbolitaulu]" -#: elf32-arm.c:10485 +#: elf32-arm.c:10524 #, c-format msgid " [Version2 EABI]" msgstr " [Versio 2 EABI]" -#: elf32-arm.c:10493 +#: elf32-arm.c:10532 #, c-format msgid " [dynamic symbols use segment index]" msgstr " [dynaamiset symbolit käyttävät segmentti-indeksiä]" -#: elf32-arm.c:10496 +#: elf32-arm.c:10535 #, c-format msgid " [mapping symbols precede others]" msgstr " [kuvaussymbolit ylittävät tärkeydessä muut]" -#: elf32-arm.c:10503 +#: elf32-arm.c:10542 #, c-format msgid " [Version3 EABI]" msgstr " [Versio 3 EABI]" -#: elf32-arm.c:10507 +#: elf32-arm.c:10546 #, c-format msgid " [Version4 EABI]" msgstr " [Versio 4 EABI]" -#: elf32-arm.c:10511 +#: elf32-arm.c:10550 #, c-format msgid " [Version5 EABI]" msgstr " [Versio 5 EABI]" -#: elf32-arm.c:10514 +#: elf32-arm.c:10553 #, c-format msgid " [BE8]" msgstr " [BE8]" -#: elf32-arm.c:10517 +#: elf32-arm.c:10556 #, c-format msgid " [LE8]" msgstr " [LE8]" -#: elf32-arm.c:10523 +#: elf32-arm.c:10562 #, c-format msgid " " msgstr " " -#: elf32-arm.c:10530 +#: elf32-arm.c:10569 #, c-format msgid " [relocatable executable]" msgstr " [sijoitettava suoritettava tiedosto]" -#: elf32-arm.c:10533 +#: elf32-arm.c:10572 #, c-format msgid " [has entry point]" msgstr " [on tulokohta]" -#: elf32-arm.c:10538 +#: elf32-arm.c:10577 #, c-format msgid "" msgstr "" -#: elf32-arm.c:10783 elf32-i386.c:1300 elf32-s390.c:998 elf32-xtensa.c:1000 -#: elf64-s390.c:952 elf64-x86-64.c:1082 elfxx-sparc.c:1121 +#: elf32-arm.c:10824 elf32-i386.c:1322 elf32-s390.c:1000 elf32-xtensa.c:1009 +#: elf64-s390.c:960 elf64-x86-64.c:1105 elfxx-sparc.c:1370 msgid "%B: bad symbol index: %d" msgstr "%B: virheellinen symboli-indeksi: %d" -#: elf32-arm.c:10904 elf64-x86-64.c:1242 elf64-x86-64.c:1411 elfxx-mips.c:7870 +#: elf32-arm.c:10946 elf64-x86-64.c:1265 elf64-x86-64.c:1434 elfxx-mips.c:7942 msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" msgstr "%B: sijoitusta %s kohdetta â€%s†varten ei voida käyttää kun tehdään jaettua objektia; käännä uudelleen -fPIC-argumentilla" -#: elf32-arm.c:11893 +#: elf32-arm.c:11948 #, c-format msgid "Errors encountered processing file %s" msgstr "Kohdattiin virheitä prosessoitaessa tiedostoa %s" -#: elf32-arm.c:13339 +#: elf32-arm.c:13334 msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location" msgstr "%B: virhe: Cortex-A8 virhe-stub on varattu turvattomaan paikkaan" #. There's not much we can do apart from complain if this #. happens. -#: elf32-arm.c:13366 +#: elf32-arm.c:13361 msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)" msgstr "%B: virhe: Cortex-A8 virhe-stub lukualueen ulkopuolella (syötetiedoston on liian iso)" -#: elf32-arm.c:13457 elf32-arm.c:13479 +#: elf32-arm.c:13455 elf32-arm.c:13477 msgid "%B: error: VFP11 veneer out of range" msgstr "%B: virhe: VFP11-julkisivu lukualueen ulkopuolella" -#: elf32-avr.c:1259 elf32-bfin.c:3208 elf32-cris.c:2097 elf32-fr30.c:624 -#: elf32-frv.c:4122 elf32-i860.c:1226 elf32-ip2k.c:1510 elf32-iq2000.c:699 -#: elf32-m32c.c:568 elf32-mep.c:549 elf32-moxie.c:299 elf32-msp430.c:501 -#: elf32-mt.c:406 elf32-openrisc.c:419 elf32-v850.c:1709 elf32-xstormy16.c:956 -#: elf64-mmix.c:1541 +#: elf32-arm.c:14002 +msgid "error: %B is already in final BE8 format" +msgstr "virhe: %B on jo lopullisessa BE8-muodossa" + +#: elf32-arm.c:14078 +msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d" +msgstr "virhe: Lähdeobjektissa %B on EABI-versio %d, mutta kohteessa %B on EABI-versio %d" + +#: elf32-arm.c:14094 +msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" +msgstr "virhe: %B on käännetty APCS-%d:lle, kun taas kohde %B käyttää APCS-%d:ta" + +# Vector floating point (coprosessor) +#: elf32-arm.c:14119 +msgid "error: %B uses VFP instructions, whereas %B does not" +msgstr "virhe: %B käyttää vektoriliukulukukäskyjä, kun taas %B ei käytä" + +# Floating Point Accelerator (chip) +#: elf32-arm.c:14123 +msgid "error: %B uses FPA instructions, whereas %B does not" +msgstr "virhe: %B käyttää liukulukukiihdytinkäskyjä, kun taas %B ei käytä" + +#: elf32-arm.c:14133 +msgid "error: %B uses Maverick instructions, whereas %B does not" +msgstr "virhe: %B käyttää Maverick-käskyjä, kun taas %B ei käytä" + +#: elf32-arm.c:14137 +msgid "error: %B does not use Maverick instructions, whereas %B does" +msgstr "virhe: %B ei käytä Maverick-käskyjä, kun taas %B käyttää" + +#: elf32-arm.c:14156 +msgid "error: %B uses software FP, whereas %B uses hardware FP" +msgstr "virhe: %B käyttää ohjelmistoliukulukuja, kun taas %B käyttää laitteistoliukulukuja" + +#: elf32-arm.c:14160 +msgid "error: %B uses hardware FP, whereas %B uses software FP" +msgstr "virhe: %B käyttää laitteistoliukulukuja, kun taas %B käyttää ohjelmistoliukulukuja" + +#: elf32-avr.c:1271 elf32-bfin.c:3201 elf32-cris.c:2085 elf32-fr30.c:617 +#: elf32-frv.c:4119 elf32-i860.c:1219 elf32-ip2k.c:1479 elf32-iq2000.c:692 +#: elf32-m32c.c:561 elf32-mep.c:542 elf32-moxie.c:290 elf32-msp430.c:494 +#: elf32-mt.c:399 elf32-openrisc.c:412 elf32-v850.c:2151 elf32-xstormy16.c:949 +#: elf64-mmix.c:1530 msgid "internal error: dangerous relocation" msgstr "sisäinen virhe: vaarallinen sijoitus" -#: elf32-avr.c:2409 elf32-hppa.c:605 elf32-m68hc1x.c:165 elf64-ppc.c:4141 +#: elf32-avr.c:2400 elf32-hppa.c:598 elf32-m68hc1x.c:166 elf64-ppc.c:4175 msgid "%B: cannot create stub entry %s" msgstr "%B: ei voi luoda stub-tulokohtaa %s" -#: elf32-bfin.c:1581 +#: elf32-bfin.c:1575 msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'" msgstr "%B(%A+0x%lx): ratkaisematon sijoitus symboliin â€%sâ€" -#: elf32-bfin.c:1614 elf32-i386.c:4026 elf32-m68k.c:4176 elf32-s390.c:3067 -#: elf64-s390.c:3026 elf64-x86-64.c:3697 +#: elf32-bfin.c:1608 elf32-i386.c:4123 elf32-m68k.c:4233 elf32-s390.c:3062 +#: elf64-s390.c:3037 elf64-x86-64.c:3759 msgid "%B(%A+0x%lx): reloc against `%s': error %d" msgstr "%B(%A+0x%lx): reloc-tietue kohdetta â€%s†varten: virhe %d" -#: elf32-bfin.c:2714 +#: elf32-bfin.c:2707 msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend" msgstr "%B: sijoitus kohteessa â€%A+0x%x†viittaa symboliin â€%sâ€, jossa on ei-nolla-yhteenlaskettava" -#: elf32-bfin.c:2728 elf32-frv.c:2904 +#: elf32-bfin.c:2721 elf32-frv.c:2901 msgid "relocation references symbol not defined in the module" msgstr "sijoitusviitteet-symboli ei ole määritelty modulissa" -#: elf32-bfin.c:2825 +#: elf32-bfin.c:2818 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend" msgstr "R_BFIN_FUNCDESC viittaa dynaamiseen symboliin, jossa on ei-nolla-yhteenlaskettava" -#: elf32-bfin.c:2866 elf32-bfin.c:2989 elf32-frv.c:3641 elf32-frv.c:3762 +#: elf32-bfin.c:2859 elf32-bfin.c:2982 elf32-frv.c:3638 elf32-frv.c:3759 msgid "cannot emit fixups in read-only section" msgstr "ei voi lähettää korjauksia kirjoitussuojattuun lohkoon" -#: elf32-bfin.c:2897 elf32-bfin.c:3027 elf32-frv.c:3672 elf32-frv.c:3806 -#: elf32-lm32.c:1104 +#: elf32-bfin.c:2890 elf32-bfin.c:3020 elf32-frv.c:3669 elf32-frv.c:3803 +#: elf32-lm32.c:1103 elf32-sh.c:5021 msgid "cannot emit dynamic relocations in read-only section" msgstr "ei voi lähettää dynaamisia sijoituksia kirjoitussuojattussa lohkossa" -#: elf32-bfin.c:2947 +#: elf32-bfin.c:2940 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "R_BFIN_FUNCDESC_VALUE viittaa dynaamiseen symboliin, jossa on ei-nolla-yhteenlaskettava" -#: elf32-bfin.c:3112 +#: elf32-bfin.c:3105 msgid "relocations between different segments are not supported" msgstr "sijoituksia eri segmenttien välillä ei tueta" -#: elf32-bfin.c:3113 +#: elf32-bfin.c:3106 msgid "warning: relocation references a different segment" msgstr "varoitus: sijoitus viittaa eri segmenttiin" -#: elf32-bfin.c:4974 elf32-frv.c:6408 +#: elf32-bfin.c:4957 elf32-frv.c:6406 msgid "%B: unsupported relocation type %i" msgstr "%B: ei-tuettu sijoitustyyppi %i" # The FR-V FDPIC ABI: The FDPIC register is used as a base register for accessing the global offset table (GOT) and function descriptors. # Yksi prosessorin rekistereistä on nimetty fdpic-rekisteriksi milloin data- ja tekstilohkot ovat sijoitettavia (eli niiden siirros ei ole vakio). -#: elf32-bfin.c:5127 elf32-frv.c:6816 +#: elf32-bfin.c:5111 elf32-frv.c:6814 #, c-format msgid "%s: cannot link non-fdpic object file into fdpic executable" msgstr "%s: ei voi linkittää objektitiedostoa ilman fdpic-rekisteriä suoritettavaan tiedostoon, joka käyttää fdpic-rekisteriä" -#: elf32-bfin.c:5131 elf32-frv.c:6820 +#: elf32-bfin.c:5115 elf32-frv.c:6818 #, c-format msgid "%s: cannot link fdpic object file into non-fdpic executable" msgstr "%s: ei voi linkittää fdpic-rekisteriä käyttävää objektitiedostoa suoritettavaan tiedostoon, joka ei käytä fdpic-rekisteriä" -#: elf32-cris.c:1169 +#: elf32-cris.c:1172 msgid "%B, section %A: unresolvable relocation %s against symbol `%s'" msgstr "%B, lohko %A: ratkaisematon sijoitus %s symbolia â€%s†varten" # Procedure Linkage Table (PLT) and Global Offset Table (GOT) -#: elf32-cris.c:1238 +#: elf32-cris.c:1234 msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'" msgstr "%B, lohko %A: Ei proseduurilinkitystaulua eikä yleissiirrostaulua sijoitukselle %s symbolia â€%s†varten" -#: elf32-cris.c:1240 +#: elf32-cris.c:1236 msgid "%B, section %A: No PLT for relocation %s against symbol `%s'" msgstr "%B, lohko %A: Ei proseduurilinkitystaulua sijoituksille %s symbolia â€%s†varten" -#: elf32-cris.c:1246 elf32-cris.c:1379 elf32-cris.c:1641 elf32-cris.c:1730 -#: elf32-cris.c:1883 +#: elf32-cris.c:1242 elf32-cris.c:1375 elf32-cris.c:1635 elf32-cris.c:1718 +#: elf32-cris.c:1871 msgid "[whose name is lost]" msgstr "[jonka nimi on kadonnut]" -#: elf32-cris.c:1365 +#: elf32-cris.c:1361 msgid "%B, section %A: relocation %s with non-zero addend %d against local symbol" msgstr "%B, lohko %A: sijoitus %s ei-nolla-yhteenlaskettavalla %d paikallista symbolia varten" -#: elf32-cris.c:1373 elf32-cris.c:1724 elf32-cris.c:1877 +#: elf32-cris.c:1369 elf32-cris.c:1712 elf32-cris.c:1865 msgid "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'" msgstr "%B, lohko %A: sijoitus %s ei-nolla-yhteenlaskettavalla %d symbolia â€%s†varten" -#: elf32-cris.c:1399 +#: elf32-cris.c:1395 msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'" msgstr "%B, lohko %A: sijoitusta %s ei sallita yleissymbolille: â€%sâ€" -#: elf32-cris.c:1415 +#: elf32-cris.c:1411 msgid "%B, section %A: relocation %s with no GOT created" msgstr "%B, lohko %A: sijoitus %s ilman yleissiirrostaulun luontia" #. We shouldn't get here for GCC-emitted code. -#: elf32-cris.c:1632 +#: elf32-cris.c:1626 msgid "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?" msgstr "%B, lohkon %A: sijoituksella %s on määrittelemätön viite â€%sâ€, ehkä esittelysekaannus?" -#: elf32-cris.c:2010 +#: elf32-cris.c:1998 msgid "%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?" msgstr "%B, lohko %A: sijoitusta %s ei sallita symbolille: â€%sâ€, joka määritellään ohjelman ulkopuolella, ehkä esittelysekaannus?" -#: elf32-cris.c:2063 +#: elf32-cris.c:2051 msgid "(too many global variables for -fpic: recompile with -fPIC)" msgstr "(liian monta yleismuuttujaa valitsimelle -fpic: käännä uudelleen valitsimella -fPIC)" -#: elf32-cris.c:2070 +#: elf32-cris.c:2058 msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)" msgstr "(säikeen paikallinen data liian iso valitsimelle -fpic tai -msmall-tls: käännä uudelleen valitsimella -fPIC tai -mno-small-tls)" # position-independent code (PIC) -#: elf32-cris.c:3204 +#: elf32-cris.c:3248 msgid "" "%B, section %A:\n" " v10/v32 compatible object %s must not contain a PIC relocation" msgstr "" "%B, lohko %A:\n" -" v10/v32 yhteensopiva objekti %s ei saa sisältää sijaintiriippumatonta koodisijoitusta" +" v10/v32 yhteensopiva objekti %s ei saa sisältää paikkariippumatonta koodisijoitusta" -#: elf32-cris.c:3309 +#: elf32-cris.c:3353 msgid "" "%B, section %A:\n" " relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC" @@ -1362,7 +1374,7 @@ "%B, lohko %A:\n" " sijoitusta %s ei pitäisi käyttää jaetussa objektissa; tyypillisesti valitsinsekaannus, käännä uudelleen argumentilla -fPIC" -#: elf32-cris.c:3523 +#: elf32-cris.c:3567 msgid "" "%B, section %A:\n" " relocation %s should not be used in a shared object; recompile with -fPIC" @@ -1370,7 +1382,7 @@ "%B, lohko %A:\n" " sijoitusta %s ei pitäisi käyttää jaettussa objektissa; käännä uudelleen argumentilla -fPIC" -#: elf32-cris.c:3940 +#: elf32-cris.c:3992 msgid "" "%B, section `%A', to symbol `%s':\n" " relocation %s should not be used in a shared object; recompile with -fPIC" @@ -1378,131 +1390,132 @@ "%B, lohko â€%Aâ€, symboliin â€%sâ€:\n" " sijoitusta %s ei pitäisi käyttää jaettussa objektissa; käännä uudelleen argumentilla -fPIC" -#: elf32-cris.c:4059 +#: elf32-cris.c:4111 msgid "Unexpected machine number" msgstr "Odottamaton konenumero" -#: elf32-cris.c:4113 +#: elf32-cris.c:4165 #, c-format msgid " [symbols have a _ prefix]" msgstr " [symboleissa on â€_â€-etuliite]" -#: elf32-cris.c:4116 +#: elf32-cris.c:4168 #, c-format msgid " [v10 and v32]" msgstr " [v10 ja v32]" -#: elf32-cris.c:4119 +#: elf32-cris.c:4171 #, c-format msgid " [v32]" msgstr " [v32]" -#: elf32-cris.c:4164 +#: elf32-cris.c:4216 msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols" msgstr "%B: käyttää â€_â€-etuliitesymboleja, mutta kirjoittaa tiedoston ilman etuliitesymboleja" -#: elf32-cris.c:4165 +#: elf32-cris.c:4217 msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols" msgstr "%B: käyttää ilman etuliitesymboleja, mutta kirjoittaa tiedoston â€_â€-etuliitesymboleilla" # CRIS v32 info: The chip with the CRIS v32 core. -#: elf32-cris.c:4184 +#: elf32-cris.c:4236 msgid "%B contains CRIS v32 code, incompatible with previous objects" msgstr "%B sisältää â€CRIS v32â€-koodia, ei ole yhteensopiva aiempien objektien kanssa" -#: elf32-cris.c:4186 +#: elf32-cris.c:4238 msgid "%B contains non-CRIS-v32 code, incompatible with previous objects" msgstr "%B ei sisällä â€CRIS-v32â€-koodia, yhteensopimaton aiempien objektien kanssa" -#: elf32-frv.c:1507 elf32-frv.c:1656 +#: elf32-frv.c:1509 elf32-frv.c:1658 msgid "relocation requires zero addend" msgstr "sijoitus vaatii nolla-yhteenlaskettavan" -#: elf32-frv.c:2891 +#: elf32-frv.c:2888 msgid "%B(%A+0x%x): relocation to `%s+%x' may have caused the error above" msgstr "%B(%A+0x%x): sijoitus kohteeseen â€%s+%x†saatta olla yläpuolella olevan virheen aiheuttama" -#: elf32-frv.c:2980 +#: elf32-frv.c:2977 msgid "R_FRV_GETTLSOFF not applied to a call instruction" msgstr "R_FRV_GETTLSOFF ei sovelleta kutsukäskyyn" -#: elf32-frv.c:3022 +#: elf32-frv.c:3019 msgid "R_FRV_GOTTLSDESC12 not applied to an lddi instruction" msgstr "R_FRV_GOTTLSDESC12 ei sovelleta â€lddiâ€-käskyyn" -#: elf32-frv.c:3093 +#: elf32-frv.c:3090 msgid "R_FRV_GOTTLSDESCHI not applied to a sethi instruction" msgstr "R_FRV_GOTTLSDESCHI ei sovelleta â€sethiâ€-käskyyn" -#: elf32-frv.c:3130 +#: elf32-frv.c:3127 msgid "R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction" msgstr "R_FRV_GOTTLSDESCLO ei sovelleta â€setloâ€- tai â€setlosâ€-käskyyn" -#: elf32-frv.c:3178 +#: elf32-frv.c:3175 msgid "R_FRV_TLSDESC_RELAX not applied to an ldd instruction" msgstr "R_FRV_TLSDESC_RELAX ei sovelleta â€lddâ€-käskyyn" # msgid-virhe: calll, eli yksi ällä liikaa -#: elf32-frv.c:3262 +#: elf32-frv.c:3259 msgid "R_FRV_GETTLSOFF_RELAX not applied to a calll instruction" msgstr "R_FRV_GETTLSOFF_RELAX ei sovelleta kutsukäskyyn" -#: elf32-frv.c:3317 +#: elf32-frv.c:3314 msgid "R_FRV_GOTTLSOFF12 not applied to an ldi instruction" msgstr "R_FRV_GOTTLSOFF12 ei sovelleta â€ldiâ€-käskyyn" -#: elf32-frv.c:3347 +#: elf32-frv.c:3344 msgid "R_FRV_GOTTLSOFFHI not applied to a sethi instruction" msgstr "R_FRV_GOTTLSOFFHI ei sovelleta â€sethiâ€-käskyyn" -#: elf32-frv.c:3376 +#: elf32-frv.c:3373 msgid "R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction" msgstr "R_FRV_GOTTLSOFFLO ei sovelleta â€setloâ€- tai â€setlosâ€-käskyyn" -#: elf32-frv.c:3407 +#: elf32-frv.c:3404 msgid "R_FRV_TLSOFF_RELAX not applied to an ld instruction" msgstr "R_FRV_TLSOFF_RELAX ei sovelleta â€ldâ€-käskyyn" -#: elf32-frv.c:3452 +#: elf32-frv.c:3449 msgid "R_FRV_TLSMOFFHI not applied to a sethi instruction" msgstr "R_FRV_TLSMOFFHI ei sovelleta â€sethiâ€-käskyyn" -#: elf32-frv.c:3479 +#: elf32-frv.c:3476 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction" msgstr "R_FRV_TLSMOFFLO ei sovelleta â€setloâ€- tai â€setlosâ€-käskyyn" -#: elf32-frv.c:3600 +#: elf32-frv.c:3597 msgid "R_FRV_FUNCDESC references dynamic symbol with nonzero addend" msgstr "R_FRV_FUNCDESC viittaa dynaamiseen symboliin ei-nolla-yhteenlaskettavalla" -#: elf32-frv.c:3720 +#: elf32-frv.c:3717 msgid "R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "R_FRV_FUNCDESC_VALUE viittaa dynaamiseen symboliin ei-nolla-yhteenlaskettavalla" -#: elf32-frv.c:3977 elf32-frv.c:4133 +#: elf32-frv.c:3974 elf32-frv.c:4130 msgid "%B(%A+0x%lx): reloc against `%s': %s" msgstr "%B(%A+0x%lx): reloc-tietue â€%sâ€: %s varten" -#: elf32-frv.c:3979 elf32-frv.c:3983 +#: elf32-frv.c:3976 elf32-frv.c:3980 msgid "relocation references a different segment" msgstr "sijoitus viittaa eri segmenttiin" -#: elf32-frv.c:6730 +#: elf32-frv.c:6728 #, c-format msgid "%s: compiled with %s and linked with modules that use non-pic relocations" msgstr "%s: käännetty %s:n kanssa ja linkitetty paikkariippuvaisia koodisijoituksia käyttävien modulien kanssa" -#: elf32-frv.c:6783 elf32-iq2000.c:852 elf32-m32c.c:814 +#: elf32-frv.c:6781 elf32-iq2000.c:845 elf32-m32c.c:807 #, c-format msgid "%s: compiled with %s and linked with modules compiled with %s" msgstr "%s: käännetty %s:n kanssa ja linkitetty moduleihin, jotka on käännetty %s:n kanssa" -#: elf32-frv.c:6795 +#: elf32-frv.c:6793 #, c-format msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%s: käyttää erilaisia tuntemattomia â€e_flags (0x%lx)â€-kenttiä kuin edelliset modulit (0x%lx)" -#: elf32-frv.c:6845 elf32-iq2000.c:889 elf32-m32c.c:850 elf32-mt.c:583 +#: elf32-frv.c:6843 elf32-iq2000.c:882 elf32-m32c.c:843 elf32-mt.c:576 +#: elf32-rx.c:2925 #, c-format msgid "private flags = 0x%lx:" msgstr "yksityiset liput = 0x%lx:" @@ -1511,123 +1524,130 @@ msgid "%B: Relocations in generic ELF (EM: %d)" msgstr "%B: Sijoituksia geneerisessä ELF (EM: %d):ssa" -#: elf32-hppa.c:854 elf32-hppa.c:3570 +#: elf32-hppa.c:850 elf32-hppa.c:3610 msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections" msgstr "%B(%A+0x%lx): ei tavoita kohdetta %s, käännä uudelleen â€-ffunction-sectionsâ€-valitsimilla" -#: elf32-hppa.c:1286 +#: elf32-hppa.c:1284 msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC" msgstr "%B: sijoitusta %s ei voi käyttää kun tehdään jaettua objektia; käännä uudelleen â€-fPICâ€-argumentilla" -#: elf32-hppa.c:2780 +#: elf32-hppa.c:2803 msgid "%B: duplicate export stub %s" msgstr "%B: vienti-stubin %s kaksoiskappale" -#: elf32-hppa.c:3406 +#: elf32-hppa.c:3449 msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link" msgstr "%B(%A+0x%lx): %s korjaus käskylle 0x%x ei ole tuettu ei-jaetussa linkissä" -#: elf32-hppa.c:4260 +#: elf32-hppa.c:4296 msgid "%B(%A+0x%lx): cannot handle %s for %s" msgstr "%B(%A+0x%lx): ei voi käsitellä %s kohteelle %s" -#: elf32-hppa.c:4567 +#: elf32-hppa.c:4608 msgid ".got section not immediately after .plt section" msgstr "â€.gotâ€-alilohko ei ole välittömästi â€.pltâ€-lohkon jälkeen" -#: elf32-i386.c:371 elf32-ppc.c:1666 elf32-s390.c:379 elf64-ppc.c:2283 -#: elf64-s390.c:403 elf64-x86-64.c:234 +#. Unknown relocation. +#: elf32-i386.c:371 elf32-m68k.c:383 elf32-ppc.c:1674 elf32-s390.c:379 +#: elf32-tic6x.c:1563 elf64-ppc.c:2284 elf64-s390.c:403 elf64-x86-64.c:234 msgid "%B: invalid relocation type %d" msgstr "%B: virheellinen sijoitustyyppi %d" -#: elf32-i386.c:1246 elf64-x86-64.c:1029 +#: elf32-i386.c:1265 elf64-x86-64.c:1049 msgid "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed" msgstr "%B: TLS-siirros kohteesta %s kohteeseen %s kohdetta â€%s†varten osoitteessa 0x%lx lohkossa â€%A†epäonnistui" -#: elf32-i386.c:1387 elf32-i386.c:2970 elf64-x86-64.c:1171 elf64-x86-64.c:2680 +#: elf32-i386.c:1408 elf32-i386.c:3068 elf64-x86-64.c:1194 elf64-x86-64.c:2780 +#: elfxx-sparc.c:3076 msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" msgstr "%B: sijoitusta %s kohteen STT_GNU_IFUNC-symbolia `%s' varten ei käsittele %s" -#: elf32-i386.c:1548 elf32-s390.c:1180 elf32-sh.c:5065 elf32-xtensa.c:1173 -#: elf64-s390.c:1143 elfxx-sparc.c:1257 +#: elf32-i386.c:1570 elf32-s390.c:1182 elf32-sh.c:6367 elf32-xtensa.c:1182 +#: elf64-s390.c:1151 elfxx-sparc.c:1547 msgid "%B: `%s' accessed both as normal and thread local symbol" msgstr "%B: â€%s†haettu sekä normaalina että säikeisenä paikallissymbolina" -#: elf32-i386.c:2805 +#: elf32-i386.c:2910 msgid "%B: unrecognized relocation (0x%x) in section `%A'" msgstr "%B: tunnistamaton sijoitus (0x%x) lohkossa â€%Aâ€" -#: elf32-i386.c:3219 elf64-x86-64.c:3081 +#: elf32-i386.c:3317 elf64-x86-64.c:3174 msgid "hidden symbol" msgstr "piilotettu symboli" -#: elf32-i386.c:3222 elf64-x86-64.c:3084 +#: elf32-i386.c:3320 elf64-x86-64.c:3177 msgid "internal symbol" msgstr "sisäinen symboli" -#: elf32-i386.c:3225 elf64-x86-64.c:3087 +#: elf32-i386.c:3323 elf64-x86-64.c:3180 msgid "protected symbol" msgstr "suojattu symboli" -#: elf32-i386.c:3228 elf64-x86-64.c:3090 +#: elf32-i386.c:3326 elf64-x86-64.c:3183 msgid "symbol" msgstr "symboli" -#: elf32-i386.c:3233 +#: elf32-i386.c:3331 msgid "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object" msgstr "%B: R_386_GOTOFF-sijoitusta määrittelemätöntä %s â€%s†varten ei voida käyttää kun tehdään jaettua objektia" -#: elf32-i386.c:3243 +#: elf32-i386.c:3341 msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object" msgstr "%B: R_386_GOTOFF-sijoitusta suojattua funktiota â€%s†varten ei voida käyttää kun tehdään jaettua objektia" -# Kun käskykohdemuuttuja on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, +#: elf32-i386.c:4633 elf64-x86-64.c:4206 +#, c-format +msgid "discarded output section: `%A'" +msgstr "hylätty tulostelohko: â€%Aâ€" + +# Kun käskyoperandi on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, # assembler voi muuntaa koodin käyttämään toiminnallisesti samanlaista käskyä tai käskysekvenssiä. # Tämä prosessi tunnetaan nimellä relaxation. Tätä tehdään tyypillisesti haarautumiskäskyissä, koska # haarautumiskohteen etäisyyttä ei tunneta ennen linkitystä. Tavallaan tällä tavalla kumotaan lukualueen # rajoitteet (constraints). Siksi olen suomentanut sen termillä avartaminen. -#: elf32-ip2k.c:868 elf32-ip2k.c:874 elf32-ip2k.c:941 elf32-ip2k.c:947 +#: elf32-ip2k.c:857 elf32-ip2k.c:863 elf32-ip2k.c:930 elf32-ip2k.c:936 msgid "ip2k relaxer: switch table without complete matching relocation information." msgstr "ip2k-avartaja: kytkintaulu ilman täydellisesti täsmääviä sijoitustietoja." -# Kun käskykohdemuuttuja on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, +# Kun käskyoperandi on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, # assembler voi muuntaa koodin käyttämään toiminnallisesti samanlaista käskyä tai käskysekvenssiä. # Tämä prosessi tunnetaan nimellä relaxation. Tätä tehdään tyypillisesti haarautumiskäskyissä, koska # haarautumiskohteen etäisyyttä ei tunneta ennen linkitystä. Tavallaan tällä tavalla kumotaan lukualueen # rajoitteet (constraints). Siksi olen suomentanut sen termillä avartaminen. -#: elf32-ip2k.c:891 elf32-ip2k.c:974 +#: elf32-ip2k.c:880 elf32-ip2k.c:963 msgid "ip2k relaxer: switch table header corrupt." msgstr "ip2k-avartaja: kytkintauluotsake rikkinäinen." -#: elf32-ip2k.c:1316 +#: elf32-ip2k.c:1292 #, c-format msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)." msgstr "ip2k-linkkeri: puuttuva sivukäsky kohteessa 0x%08lx (kohde = 0x%08lx)." -#: elf32-ip2k.c:1332 +#: elf32-ip2k.c:1308 #, c-format msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)." msgstr "ip2k-linkkeri: redundanssisivukäsky kohteessa 0x%08lx (kohde = 0x%08lx)." #. Only if it's not an unresolved symbol. -#: elf32-ip2k.c:1506 +#: elf32-ip2k.c:1475 msgid "unsupported relocation between data/insn address spaces" msgstr "ei-tuettu sijoitus data/käskyosoitetilojen välillä" -#: elf32-iq2000.c:865 elf32-m32c.c:826 +#: elf32-iq2000.c:858 elf32-m32c.c:819 #, c-format msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%s: käyttää eri â€e_flags (0x%lx)â€-kenttiä kuin edelliset modulit (0x%lx)" -#: elf32-lm32.c:698 +#: elf32-lm32.c:706 msgid "global pointer relative relocation when _gp not defined" msgstr "yleisosoitinsuhteellinen sijoitus kun â€_gp†ei ole määritelty" -#: elf32-lm32.c:753 +#: elf32-lm32.c:761 msgid "global pointer relative address out of range" msgstr "yleisosoittimen suhteellinen osoite lukualueen ulkopuolella" -#: elf32-lm32.c:1058 +#: elf32-lm32.c:1057 msgid "internal error: addend should be zero for R_LM32_16_GOT" msgstr "sisäinen virhe: yhteenlaskettavan pitäisi olla nolla kohteelle R_LM32_16_GOT" @@ -1635,124 +1655,124 @@ msgid "SDA relocation when _SDA_BASE_ not defined" msgstr "SDA-sijoitus kun â€_SDA_BASE_†ei ole määritelty" -#: elf32-m32r.c:3039 +#: elf32-m32r.c:3048 msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)" msgstr "%B: Kohteen (%s) sijoitus %s on väärässä lohkossa (%A)" -#: elf32-m32r.c:3567 +#: elf32-m32r.c:3576 msgid "%B: Instruction set mismatch with previous modules" msgstr "%B: Käskyjoukko ei täsmää edellisten modulien kanssa" -#: elf32-m32r.c:3588 +#: elf32-m32r.c:3597 #, c-format msgid "private flags = %lx" msgstr "yksityiset liput = %lx" -#: elf32-m32r.c:3593 +#: elf32-m32r.c:3602 #, c-format msgid ": m32r instructions" msgstr ": m32r-käskyt" -#: elf32-m32r.c:3594 +#: elf32-m32r.c:3603 #, c-format msgid ": m32rx instructions" msgstr ": m32rx-käskyt" -#: elf32-m32r.c:3595 +#: elf32-m32r.c:3604 #, c-format msgid ": m32r2 instructions" msgstr ": m32r2-käskyt" -#: elf32-m68hc1x.c:1048 +#: elf32-m68hc1x.c:1050 #, c-format msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution" msgstr "Viite etäsymboliin â€%s†väärää sijoitusta käyttäen saattaa aiheuttaa virheellisen suorituksen" # memory bank: A physical section of memory. -#: elf32-m68hc1x.c:1071 +#: elf32-m68hc1x.c:1073 #, c-format msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)" msgstr "muistilohkottu osoite [%lx:%04lx] (%lx) ei ole samassa muistilohkossa kuin nykyinen muistilohkottu osoite [%lx:%04lx] (%lx)" -#: elf32-m68hc1x.c:1090 +#: elf32-m68hc1x.c:1092 #, c-format msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx" msgstr "viite muistilohkottuun osoitteeseen [%lx:%04lx] tavallisessa osoitetilassa osoitteessa %04lx" -#: elf32-m68hc1x.c:1223 +#: elf32-m68hc1x.c:1225 msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers" msgstr "%B: linkitystiedostot käännetty 16-bittisille kokonaisluvuille (-mshort) ja muut 32-bittisille kokonaisluvuille" -#: elf32-m68hc1x.c:1230 +#: elf32-m68hc1x.c:1232 msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double" msgstr "%B: linkitystiedostot käännetty 32-bittiselle double-liukuluvulle (-fshort-double) ja muut 64-bittiselle double-liukuluvulle" -#: elf32-m68hc1x.c:1239 +#: elf32-m68hc1x.c:1241 msgid "%B: linking files compiled for HCS12 with others compiled for HC12" msgstr "%B: linkitystiedostot käännetty HCS12:lle, muut käännetty HC12:lle" -#: elf32-m68hc1x.c:1255 elf32-ppc.c:4255 elf64-sparc.c:698 elfxx-mips.c:12617 +#: elf32-m68hc1x.c:1257 elf32-ppc.c:4232 elf64-sparc.c:703 elfxx-mips.c:12704 msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%B: käyttää eri â€e_flags (0x%lx)â€-kenttiä kuin edelliset modulit (0x%lx)" -#: elf32-m68hc1x.c:1283 +#: elf32-m68hc1x.c:1285 #, c-format msgid "[abi=32-bit int, " msgstr "[abi=32-bittinen kokonaisluku, " -#: elf32-m68hc1x.c:1285 +#: elf32-m68hc1x.c:1287 #, c-format msgid "[abi=16-bit int, " msgstr "[abi=16-bittinen kokonaisluku, " -#: elf32-m68hc1x.c:1288 +#: elf32-m68hc1x.c:1290 #, c-format msgid "64-bit double, " msgstr "64-bittinen double-liukuluku, " -#: elf32-m68hc1x.c:1290 +#: elf32-m68hc1x.c:1292 #, c-format msgid "32-bit double, " msgstr "32-bittinen double-liukuluku, " -#: elf32-m68hc1x.c:1293 +#: elf32-m68hc1x.c:1295 #, c-format msgid "cpu=HC11]" msgstr "prosessori=HC11]" -#: elf32-m68hc1x.c:1295 +#: elf32-m68hc1x.c:1297 #, c-format msgid "cpu=HCS12]" msgstr "prosessori=HCS12]" -#: elf32-m68hc1x.c:1297 +#: elf32-m68hc1x.c:1299 #, c-format msgid "cpu=HC12]" msgstr "prosessori=HC12]" -#: elf32-m68hc1x.c:1300 +#: elf32-m68hc1x.c:1302 #, c-format msgid " [memory=bank-model]" msgstr " [muisti=muistilohkomalli]" -#: elf32-m68hc1x.c:1302 +#: elf32-m68hc1x.c:1304 #, c-format msgid " [memory=flat]" msgstr " [muisti=litteä]" -#: elf32-m68k.c:1184 elf32-m68k.c:1185 +#: elf32-m68k.c:1250 elf32-m68k.c:1251 vms-alpha.c:7292 vms-alpha.c:7307 msgid "unknown" msgstr "tuntematon" -#: elf32-m68k.c:1645 +#: elf32-m68k.c:1714 msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d" msgstr "%B: Yleissiirrostaulun ylivuoto: 8-bittisellä siirrososoitteella varustettujen sijoitusten lukumäärä > %d" -#: elf32-m68k.c:1651 +#: elf32-m68k.c:1720 msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d" msgstr "%B: Yleissiirrostaulun ylivuoto: 8-bittisellä tai 16-bittisellä siirrososoitteella varustettujen sijoitusten lukumäärä > %d" -#: elf32-m68k.c:3902 +#: elf32-m68k.c:3959 msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object" msgstr "%B(%A+0x%lx): R_68K_TLS_LE32-sijoitukset eivät ole sallittuja jaetuissa objekteissa" @@ -1764,200 +1784,238 @@ msgid "%B: Unknown relocation type %d\n" msgstr "%B: Tuntematon sijoitustyyppi %d\n" -#: elf32-mep.c:654 +#: elf32-mep.c:647 msgid "%B and %B are for different cores" msgstr "%B ja %B ovat eri käyttöjärjestelmäytimille" -#: elf32-mep.c:671 +#: elf32-mep.c:664 msgid "%B and %B are for different configurations" msgstr "%B ja %B ovat eri konfiguraatioille" -#: elf32-mep.c:708 +#: elf32-mep.c:701 #, c-format msgid "private flags = 0x%lx" msgstr "yksityiset liput = 0x%lx" -#: elf32-microblaze.c:737 +#: elf32-microblaze.c:742 #, c-format msgid "%s: unknown relocation type %d" msgstr "%s: tuntematon sijoitustyyppi %d" -#: elf32-microblaze.c:862 elf32-microblaze.c:907 +#: elf32-microblaze.c:867 elf32-microblaze.c:912 #, c-format msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" msgstr "%s: Kohteen (%s) sijoitus %s on väärässä lohkossa (%s)" -#: elf32-microblaze.c:1150 elfxx-sparc.c:2957 +#: elf32-microblaze.c:1155 elfxx-sparc.c:3450 msgid "%B: probably compiled without -fPIC?" msgstr "%B: luultavasti käännetty ilman -fPIC-argumenttia?" -#: elf32-microblaze.c:2086 elflink.c:12444 +#: elf32-microblaze.c:2074 elflink.c:12601 msgid "%B: bad relocation section name `%s'" msgstr "%B: virheellinen sijoituslohkonimi â€%sâ€" -#: elf32-mips.c:1045 elf64-mips.c:2083 elfn32-mips.c:1888 +#: elf32-mips.c:1045 elf64-mips.c:2084 elfn32-mips.c:1888 msgid "literal relocation occurs for an external symbol" msgstr "literaali sijoitus tapahtuu ulkoiselle symbolille" -#: elf32-mips.c:1085 elf32-score.c:580 elf32-score7.c:480 elf64-mips.c:2126 +#: elf32-mips.c:1085 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:2127 #: elfn32-mips.c:1929 msgid "32bits gp relative relocation occurs for an external symbol" msgstr "32-bittinen yleisosoitinsuhteellinen sijoitus tapahtuu ulkoiselle symbolille" -#: elf32-ppc.c:1731 +#: elf32-ppc.c:1739 #, c-format msgid "generic linker can't handle %s" msgstr "geneerinen linkkeri ei voi käsitellä kohdetta %s" -#: elf32-ppc.c:2211 -msgid "corrupt or empty %s section in %B" -msgstr "rikkinäinen tai tyhjä %s-lohko kohteessa %B" +#: elf32-ppc.c:2180 +msgid "corrupt %s section in %B" +msgstr "rikkinäinen %s-lohko kohteessa %B" -#: elf32-ppc.c:2218 +#: elf32-ppc.c:2199 msgid "unable to read in %s section from %B" msgstr "ei voi lukea %s-lohkoon kohteesta %B" -#: elf32-ppc.c:2224 -msgid "corrupt %s section in %B" -msgstr "rikkinäinen %s-lohko kohteessa %B" - -#: elf32-ppc.c:2267 +#: elf32-ppc.c:2240 msgid "warning: unable to set size of %s section in %B" msgstr "varoitus: ei voi asettaa %s-lohkon kokoa kohteessa %B" -#: elf32-ppc.c:2315 +#: elf32-ppc.c:2290 msgid "failed to allocate space for new APUinfo section." msgstr "ei onnistuttu varaamaan muistitilaa uudelle APUinfo-lohkolle." -#: elf32-ppc.c:2334 +#: elf32-ppc.c:2309 msgid "failed to compute new APUinfo section." msgstr "ei onnistuttu laskemaan uutta APUinfo-lohkoa" -#: elf32-ppc.c:2337 +#: elf32-ppc.c:2312 msgid "failed to install new APUinfo section." msgstr "ei onnistuttu asentamaan uutta APUinfo-lohkoa" -#: elf32-ppc.c:3364 +#: elf32-ppc.c:3358 msgid "%B: relocation %s cannot be used when making a shared object" msgstr "%B: sijoitusta %s ei voi käyttää kun tehdään jaettua objektia" #. It does not make sense to have a procedure linkage #. table entry for a local symbol. -#: elf32-ppc.c:3723 +#: elf32-ppc.c:3702 msgid "%B(%A+0x%lx): %s reloc against local symbol" msgstr "%B(%A+0x%lx): %s reloc-tietue paikallista symbolia varten" # Otaksun tässä että hard float tarkoittaa tässä muistipaikkaa (esim. rekisteriä), joka on varattu float-tyyppisille liukuluvuille -#: elf32-ppc.c:4067 elf32-ppc.c:4082 elfxx-mips.c:12324 elfxx-mips.c:12350 -#: elfxx-mips.c:12372 elfxx-mips.c:12398 +#: elf32-ppc.c:4044 elf32-ppc.c:4059 elfxx-mips.c:12411 elfxx-mips.c:12437 +#: elfxx-mips.c:12459 elfxx-mips.c:12485 msgid "Warning: %B uses hard float, %B uses soft float" msgstr "Varoitus: %B käyttää laitteistoliukulukua, %B käyttää ohjelmistoliukulukua" # Otaksun tässä että hard float tarkoittaa tässä muistipaikkaa (esim. rekisteriä), joka on varattu float-tyyppisille liukuluvuille -#: elf32-ppc.c:4070 elf32-ppc.c:4074 +#: elf32-ppc.c:4047 elf32-ppc.c:4051 msgid "Warning: %B uses double-precision hard float, %B uses single-precision hard float" msgstr "Varoitus: %B käyttää kaksoistarkkuuden laitteistoliukulukua, %B käyttää yksittäistarkkuuden laitteistoliukulukua" # Otaksun tässä että hard float tarkoittaa tässä muistipaikkaa (esim. rekisteriä), joka on varattu float-tyyppisille liukuluvuille -#: elf32-ppc.c:4078 +#: elf32-ppc.c:4055 msgid "Warning: %B uses soft float, %B uses single-precision hard float" msgstr "Varoitus: %B käyttää ohjelmistoliukulukua, %B käyttää yksittäistarkkuuden laitteistoliukulukua" -#: elf32-ppc.c:4085 elf32-ppc.c:4089 elfxx-mips.c:12304 elfxx-mips.c:12308 +#: elf32-ppc.c:4062 elf32-ppc.c:4066 elfxx-mips.c:12391 elfxx-mips.c:12395 msgid "Warning: %B uses unknown floating point ABI %d" msgstr "Varoitus: %B käyttää tuntematonta liukuluku-ABI:a %d" -#: elf32-ppc.c:4131 elf32-ppc.c:4135 +#: elf32-ppc.c:4108 elf32-ppc.c:4112 msgid "Warning: %B uses unknown vector ABI %d" msgstr "Varoitus: %B käyttää tuntematonta vektori-ABI:a %d" -#: elf32-ppc.c:4139 +#: elf32-ppc.c:4116 msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\"" msgstr "Varoitus: %B käyttää vektori-ABI:a â€%sâ€, %B käyttää â€%sâ€" -#: elf32-ppc.c:4156 elf32-ppc.c:4159 +#: elf32-ppc.c:4133 elf32-ppc.c:4136 msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory" msgstr "Varoitus: %B käyttää r3/r4 pienille rakennepaluille, %B käyttää muistia" -#: elf32-ppc.c:4162 elf32-ppc.c:4166 +#: elf32-ppc.c:4139 elf32-ppc.c:4143 msgid "Warning: %B uses unknown small structure return convention %d" msgstr "Varoitus: %B käyttää tuntematonta pientä rakennepaluusopimusta %d" -#: elf32-ppc.c:4220 +#: elf32-ppc.c:4197 msgid "%B: compiled with -mrelocatable and linked with modules compiled normally" msgstr "%B: käännetty â€-mrelocatableâ€-argumentilla ja linkitetty tavallisesti käännetyillä moduleilla" -#: elf32-ppc.c:4228 +#: elf32-ppc.c:4205 msgid "%B: compiled normally and linked with modules compiled with -mrelocatable" msgstr "%B: käännetty tavallisesti ja linkitetty moduleilla, jotka on käännetty â€-mrelocatableâ€-argumentilla" -#: elf32-ppc.c:4314 +#: elf32-ppc.c:4293 msgid "Using bss-plt due to %B" msgstr "Käytetään bss-plt-argumenttia %B:n vuoksi" -#: elf32-ppc.c:7056 elf64-ppc.c:11364 +#: elf32-ppc.c:7192 elf64-ppc.c:12307 msgid "%B: unknown relocation type %d for symbol %s" msgstr "%B: tuntematon sijoitustyyppi %d symbolille %s" -#: elf32-ppc.c:7316 +#: elf32-ppc.c:7453 msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'" msgstr "%B(%A+0x%lx): ei-nolla-yhteenlaskettava %s reloc-tietueessa symbolia â€%s†varten" -#: elf32-ppc.c:7499 elf64-ppc.c:11854 +#: elf32-ppc.c:7651 elf64-ppc.c:12812 msgid "%B(%A+0x%lx): relocation %s for indirect function %s unsupported" msgstr "%B(%A+0x%lx): sijoitusta %s epäsuoralle funktiolle %s ei tueta" -#: elf32-ppc.c:7709 elf32-ppc.c:7736 elf32-ppc.c:7787 +#: elf32-ppc.c:7881 elf32-ppc.c:7911 elf32-ppc.c:7958 msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)" msgstr "%B: kohde (%s) sijoituksessa %s on väärässä tulostelohkossa (%s)" -#: elf32-ppc.c:7847 +#: elf32-ppc.c:8030 msgid "%B: relocation %s is not yet supported for symbol %s." msgstr "%B: sijoitus %s ei ole vielä tuettu symbolille %s." -#: elf32-ppc.c:7955 elf64-ppc.c:12110 +#: elf32-ppc.c:8138 elf64-ppc.c:13162 msgid "%B(%A+0x%lx): %s reloc against `%s': error %d" msgstr "%B(%A+0x%lx): %s reloc-tietuetta â€%s†varten: virhe %d" -#: elf32-ppc.c:8423 +#: elf32-ppc.c:8629 #, c-format msgid "%s not defined in linker created %s" msgstr "%s ei ole määritelty linkkerissä luodussa %s" -#: elf32-s390.c:2207 elf64-s390.c:2179 +#: elf32-rx.c:544 +msgid "%B:%A: Warning: deprecated Red Hat reloc " +msgstr "%B:%A: Varoitus: vanhentunut Red Hat reloc -tietue " + +#: elf32-rx.c:1086 +msgid "Warning: RX_SYM reloc with an unknown symbol" +msgstr "Varoitus: RX_SYM-reloc tuntemattomalla symbolilla" + +#: elf32-rx.c:1251 +msgid "%B(%A): error: call to undefined function '%s'" +msgstr "%B(%A): virhe: kutsu määrittelemättömään funktioon '%s'" + +#: elf32-rx.c:1265 +msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area" +msgstr "%B(%A): varoitus: tasaamaton pääsy symboliin ’%s’ pienellä data-alueella" + +#: elf32-rx.c:1269 +msgid "%B(%A): internal error: out of range error" +msgstr "%B(%A): sisäinen virhe: â€lukualueen ulkopuolellaâ€-virhe" + +#: elf32-rx.c:1273 +msgid "%B(%A): internal error: unsupported relocation error" +msgstr "%B(%A): sisäinen virhe: ei-tuettu sijoitusvirhe" + +#: elf32-rx.c:1277 +msgid "%B(%A): internal error: dangerous relocation" +msgstr "%B(%A): sisäinen virhe: vaarallinen sijoitus" + +#: elf32-rx.c:1281 +msgid "%B(%A): internal error: unknown error" +msgstr "%B(%A): sisäinen virhe: tuntematon virhe" + +#: elf32-rx.c:2928 +#, c-format +msgid " [64-bit doubles]" +msgstr " [64-bittiset double-liukuluvut]" + +#: elf32-rx.c:2930 +#, c-format +msgid " [dsp]" +msgstr " [paikkariippumaton koodi]" + +#: elf32-s390.c:2209 elf64-s390.c:2196 msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s" msgstr "%B(%A+0x%lx): virheellinen käsky TLS-sijoitukselle %s" -#: elf32-score.c:1533 elf32-score7.c:1424 elfxx-mips.c:3299 +#: elf32-score.c:1522 elf32-score7.c:1382 elfxx-mips.c:3323 msgid "not enough GOT space for local GOT entries" msgstr "ei tarpeeksi yleissiirrostaulutilaa paikallisille yleissiirrostaulutulokohdille" -#: elf32-score.c:2765 +#: elf32-score.c:2744 msgid "address not word align" msgstr "osoite ei ole word-tasattu" -#: elf32-score.c:2850 elf32-score7.c:2685 +#: elf32-score.c:2829 elf32-score7.c:2634 #, c-format msgid "%s: Malformed reloc detected for section %s" msgstr "%s: Väärän muotoinen reloc-tietue havaittu lohkolle %s" -#: elf32-score.c:2901 elf32-score7.c:2736 +#: elf32-score.c:2880 elf32-score7.c:2685 msgid "%B: CALL15 reloc at 0x%lx not against global symbol" msgstr "%B: CALL15 reloc-tietue kohteessa 0x%lx ei ole yleissymbolia varten" -#: elf32-score.c:4042 elf32-score7.c:3879 +#: elf32-score.c:3999 elf32-score7.c:3806 #, c-format msgid " [pic]" -msgstr " [sijaintiriippumaton koodi]" +msgstr " [paikkariippumaton koodi]" -#: elf32-score.c:4046 elf32-score7.c:3883 +#: elf32-score.c:4003 elf32-score7.c:3810 #, c-format msgid " [fix dep]" msgstr " [korjaussyvyys]" -#: elf32-score.c:4088 elf32-score7.c:3925 +#: elf32-score.c:4045 elf32-score7.c:3852 msgid "%B: warning: linking PIC files with non-PIC files" -msgstr "%B: varoitus: linkitetään sijaintiriippumattomia kooditiedostoja sijaintiriippuvaisten kooditiedostojen kanssa" +msgstr "%B: varoitus: linkitetään paikkariippumattomia kooditiedostoja paikkariippuvaisten kooditiedostojen kanssa" #: elf32-sh-symbian.c:130 msgid "%B: IMPORT AS directive for %s conceals previous IMPORT AS" @@ -1971,116 +2029,146 @@ msgid "%B: Failed to add renamed symbol %s" msgstr "%B: Ei onnistuttu lisäämään uudelleennimettyä symbolia %s" -#: elf32-sh.c:533 +#: elf32-sh.c:568 msgid "%B: 0x%lx: warning: bad R_SH_USES offset" msgstr "%B: 0x%lx: varoitus: virheellinen R_SH_USES-siirrososoite" -#: elf32-sh.c:545 +#: elf32-sh.c:580 msgid "%B: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" msgstr "%B: 0x%lx: varoitus: R_SH_USES osoittaa tunnistamattomaan käskyyn 0x%x" -#: elf32-sh.c:562 +#: elf32-sh.c:597 msgid "%B: 0x%lx: warning: bad R_SH_USES load offset" msgstr "%B: 0x%lx: varoitus: virheellinen R_SH_USES lataussiirrososoite" -#: elf32-sh.c:577 +#: elf32-sh.c:612 msgid "%B: 0x%lx: warning: could not find expected reloc" msgstr "%B: 0x%lx: varoitus: ei voitu löytää odotettua reloc-tietuetta" -#: elf32-sh.c:605 +#: elf32-sh.c:640 msgid "%B: 0x%lx: warning: symbol in unexpected section" msgstr "%B: 0x%lx: varoitus: symboli odottamattomassa lohkossa" -#: elf32-sh.c:731 +#: elf32-sh.c:766 msgid "%B: 0x%lx: warning: could not find expected COUNT reloc" msgstr "%B: 0x%lx: varoitus: ei voitu löytää odotettua â€COUNT relocâ€-tietuetta" -#: elf32-sh.c:740 +#: elf32-sh.c:775 msgid "%B: 0x%lx: warning: bad count" msgstr "%B: 0x%lx: varoitus: virheellinen lukumäärä" -# Kun käskykohdemuuttuja on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, +# Kun käskyoperandi on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, # assembler voi muuntaa koodin käyttämään toiminnallisesti samanlaista käskyä tai käskysekvenssiä. # Tämä prosessi tunnetaan nimellä relaxation. Tätä tehdään tyypillisesti haarautumiskäskyissä, koska # haarautumiskohteen etäisyyttä ei tunneta ennen linkitystä. Tavallaan tällä tavalla kumotaan lukualueen # rajoitteet (constraints). Siksi olen suomentanut sen termillä avartaminen. -#: elf32-sh.c:1144 elf32-sh.c:1514 +#: elf32-sh.c:1179 elf32-sh.c:1549 msgid "%B: 0x%lx: fatal: reloc overflow while relaxing" msgstr "%B: 0x%lx: vakava: reloc-tietue ylivuoto avartamisen aikana" -#: elf32-sh.c:3270 elf64-sh64.c:1526 +#: elf32-sh.c:4057 elf64-sh64.c:1514 msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" msgstr "Odottamatonta STO_SH5_ISA32 paikallisessa symbolissa ei käsitellä" -# Kun käskykohdemuuttuja on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, +# Kun käskyoperandi on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, # assembler voi muuntaa koodin käyttämään toiminnallisesti samanlaista käskyä tai käskysekvenssiä. # Tämä prosessi tunnetaan nimellä relaxation. Tätä tehdään tyypillisesti haarautumiskäskyissä, koska # haarautumiskohteen etäisyyttä ei tunneta ennen linkitystä. Tavallaan tällä tavalla kumotaan lukualueen # rajoitteet (constraints). Siksi olen suomentanut sen termillä avartaminen. -#: elf32-sh.c:3507 +#: elf32-sh.c:4304 msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation" msgstr "%B: 0x%lx: vakava: tasaamaton haarautumiskohde avarrustuetulle sijoitukselle" -#: elf32-sh.c:3540 elf32-sh.c:3555 +#: elf32-sh.c:4337 elf32-sh.c:4352 msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx" msgstr "%B: 0x%lx: vakava: tasaamaton %s sijoitus 0x%lx" -#: elf32-sh.c:3569 +#: elf32-sh.c:4366 msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32" msgstr "%B: 0x%lx: vakava: R_SH_PSHA-sijoitus %d ei ole lukualueella -32..32" -#: elf32-sh.c:3583 +#: elf32-sh.c:4380 msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32" msgstr "%B: 0x%lx: vakava: R_SH_PSHL-sijoitus %d ei ole lukualueella -32..32" -#: elf32-sh.c:5256 elf64-alpha.c:4525 +#: elf32-sh.c:4524 elf32-sh.c:4994 +msgid "%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section" +msgstr "%B(%A+0x%lx): ei voi lähettää korjauksia kohteeseen â€%s†kirjoitussuojatussa lohkossa" + +#: elf32-sh.c:5101 +msgid "%B(%A+0x%lx): %s relocation against external symbol \"%s\"" +msgstr "%B(%A+0x%lx): %s sijoitus ulkoista symbolia â€%s†varten" + +#: elf32-sh.c:5574 +#, c-format +msgid "%X%C: relocation to \"%s\" references a different segment\n" +msgstr "%X%C: sijoitus kohteeseen â€%s†viittaa eri segmenttiin\n" + +#: elf32-sh.c:5580 +#, c-format +msgid "%C: warning: relocation to \"%s\" references a different segment\n" +msgstr "%C: varoitus: sijoitus kohteeseen â€%s†viittaa eri segmenttiin\n" + +#: elf32-sh.c:6358 elf32-sh.c:6441 +msgid "%B: `%s' accessed both as normal and FDPIC symbol" +msgstr "%B: â€%s†haettu sekä normaalina että FDPIC-symbolina" + +#: elf32-sh.c:6363 elf32-sh.c:6445 +msgid "%B: `%s' accessed both as FDPIC and thread local symbol" +msgstr "%B: â€%s†haettu sekä FDPIC-symbolina että säikeisenä paikallissymbolina" + +#: elf32-sh.c:6393 +msgid "%B: Function descriptor relocation with non-zero addend" +msgstr "%B: Funktiokuvaajasijoitus nollasta poikeavalla yhteenlaskettavalla" + +#: elf32-sh.c:6629 elf64-alpha.c:4560 msgid "%B: TLS local exec code cannot be linked into shared objects" msgstr "%B: TLS-tyyppistä paikallista suoritettavaa koodia ei voida linkittää jaettuihin objekteihin" -#: elf32-sh64.c:222 elf64-sh64.c:2333 +#: elf32-sh64.c:223 elf64-sh64.c:2314 #, c-format msgid "%s: compiled as 32-bit object and %s is 64-bit" msgstr "%s: käännetty 32-bittisenä objektina ja %s on 64-bittinen" -#: elf32-sh64.c:225 elf64-sh64.c:2336 +#: elf32-sh64.c:226 elf64-sh64.c:2317 #, c-format msgid "%s: compiled as 64-bit object and %s is 32-bit" msgstr "%s: käännetty 64-bittisenä objektina ja %s on 32-bittinen" -#: elf32-sh64.c:227 elf64-sh64.c:2338 +#: elf32-sh64.c:228 elf64-sh64.c:2319 #, c-format msgid "%s: object size does not match that of target %s" msgstr "%s: objektikoko ei täsmää kohteen %s objektikoon kanssa" -#: elf32-sh64.c:450 elf64-sh64.c:2852 +#: elf32-sh64.c:451 elf64-sh64.c:2833 #, c-format msgid "%s: encountered datalabel symbol in input" msgstr "%s: kohdattiin datalabel-symboli syötteessä" # prepare-to-branch (PTB) instruction -#: elf32-sh64.c:527 +#: elf32-sh64.c:528 msgid "PTB mismatch: a SHmedia address (bit 0 == 1)" msgstr "PTB-täsmäämättömyys: SHmedia-osoite (bitti 0 == 1)" -#: elf32-sh64.c:530 +#: elf32-sh64.c:531 msgid "PTA mismatch: a SHcompact address (bit 0 == 0)" msgstr "PTA-täsmäämättömyys: SHcompact-osoite (bitti 0 == 0)" -#: elf32-sh64.c:548 +#: elf32-sh64.c:549 #, c-format msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16" msgstr "%s: GAS-virhe: odottamaton PTB-käsky R_SH_PT_16-tyypillä" -#: elf32-sh64.c:597 +#: elf32-sh64.c:598 msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n" msgstr "%B: virhe: tasaamaton sijoitustyyppi %d siirroksessa %08x reloc-tietue %p\n" -#: elf32-sh64.c:673 +#: elf32-sh64.c:674 #, c-format msgid "%s: could not write out added .cranges entries" msgstr "%s: ei voitu kirjoittaa lisättyjä â€.crangesâ€-tulokohtia kokonaisuudessaan" -#: elf32-sh64.c:733 +#: elf32-sh64.c:734 #, c-format msgid "%s: could not write out sorted .cranges entries" msgstr "%s: ei voitu kirjoittaa lajiteltuja â€.crangesâ€-tulokohtia kokonaisuudessaan" @@ -2093,67 +2181,67 @@ msgid "%B: linking little endian files with big endian files" msgstr "%B: linkitetty â€little endianâ€-tiedostoja â€big endianâ€-tiedostojen kanssa" -#: elf32-spu.c:723 +#: elf32-spu.c:719 msgid "%X%P: overlay section %A does not start on a cache line.\n" msgstr "%X%P: päällyslohko %A ei ala välimuistissa olevalta riviltä.\n" -#: elf32-spu.c:731 +#: elf32-spu.c:727 msgid "%X%P: overlay section %A is larger than a cache line.\n" msgstr "%X%P: päällyslohko %A on laajempi kuin välimuistissa oleva rivi.\n" -#: elf32-spu.c:751 +#: elf32-spu.c:747 msgid "%X%P: overlay section %A is not in cache area.\n" msgstr "%X%P: päällyslohko %A ei ole välimuistialueella.\n" -#: elf32-spu.c:791 +#: elf32-spu.c:787 msgid "%X%P: overlay sections %A and %A do not start at the same address.\n" msgstr "%X%P: päällyslohkot %A ja %A eivät ala samasta osoitteesta.\n" -#: elf32-spu.c:1015 +#: elf32-spu.c:1011 msgid "warning: call to non-function symbol %s defined in %B" msgstr "varoitus: kutsu ei-funktiosymboliin %s määritelty kohteessa %B" -#: elf32-spu.c:1365 +#: elf32-spu.c:1361 msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" msgstr "%A:0x%v lrlive .brinfo (%u) eroaa analyysistä (%u)\n" -#: elf32-spu.c:1884 +#: elf32-spu.c:1880 msgid "%B is not allowed to define %s" msgstr "%B ei saa määritellä kohdetta %s" -#: elf32-spu.c:1892 +#: elf32-spu.c:1888 #, c-format msgid "you are not allowed to define %s in a script" msgstr "et saa määritellä kohdetta %s skriptissä" -#: elf32-spu.c:1926 +#: elf32-spu.c:1922 #, c-format msgid "%s in overlay section" msgstr "%s päällyslohkossa" -#: elf32-spu.c:1955 +#: elf32-spu.c:1951 msgid "overlay stub relocation overflow" msgstr "päällys-stub-sijoitusylivuoto" -#: elf32-spu.c:1964 elf64-ppc.c:10441 +#: elf32-spu.c:1960 elf64-ppc.c:11327 msgid "stubs don't match calculated size" msgstr "stubit ei täsmää lasketun koon kanssa" -#: elf32-spu.c:2546 +#: elf32-spu.c:2542 #, c-format msgid "warning: %s overlaps %s\n" msgstr "varoitus: %s menee päällekkäin %s:n kanssa\n" -#: elf32-spu.c:2562 +#: elf32-spu.c:2558 #, c-format msgid "warning: %s exceeds section size\n" msgstr "varoitus: %s ylittää lohkokoon\n" -#: elf32-spu.c:2593 +#: elf32-spu.c:2589 msgid "%A:0x%v not found in function table\n" msgstr "%A:0x%v ei löytynyt funktiotaulusta\n" -#: elf32-spu.c:2740 +#: elf32-spu.c:2729 msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n" msgstr "%B(%A+0x%v): kutsu ei-koodilohkoon %B(%A), analyysi ei ole täydellinen\n" @@ -2179,34 +2267,34 @@ msgid " %s%s %s\n" msgstr " %s%s %s\n" -#: elf32-spu.c:4304 +#: elf32-spu.c:4307 #, c-format msgid "%s duplicated in %s\n" msgstr "%s kaksoiskappale kohteessa %s\n" -#: elf32-spu.c:4308 +#: elf32-spu.c:4311 #, c-format msgid "%s duplicated\n" msgstr "%s on tehty kahteen kertaan\n" -#: elf32-spu.c:4315 +#: elf32-spu.c:4318 msgid "sorry, no support for duplicate object files in auto-overlay script\n" msgstr "ei tukea objektitiedostojen kaksoiskappaleille automaattisessa päällysskriptissä\n" -#: elf32-spu.c:4356 +#: elf32-spu.c:4359 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n" msgstr "ei-päällyksen koko 0x%v plus päällyksen maksimikoko 0x%v ylittävät paikallisen varaston\n" -#: elf32-spu.c:4512 +#: elf32-spu.c:4514 msgid "%B:%A%s exceeds overlay size\n" msgstr "%B:%A%s ylittää päällyskoon\n" -#: elf32-spu.c:4669 +#: elf32-spu.c:4676 msgid "Stack size for call graph root nodes.\n" msgstr "Pinokoko kutsugraafijuurinodeille.\n" # Wikipedia: A tail call is a subroutine call just before the end of a subroutine. -#: elf32-spu.c:4670 +#: elf32-spu.c:4677 msgid "" "\n" "Stack size for functions. Annotations: '*' max stack, 't' tail call\n" @@ -2214,232 +2302,289 @@ "\n" "Pinokoko funktioille. Sivuhuomautukset: â€*†maksimipino, â€t†alikutsu\n" -#: elf32-spu.c:4680 +#: elf32-spu.c:4687 msgid "Maximum stack required is 0x%v\n" msgstr "Vaadittu maksimipino on 0x%v\n" -#: elf32-spu.c:4771 +#: elf32-spu.c:4778 msgid "fatal error while creating .fixup" msgstr "vakava virhe kun luodaan .fixup" -#: elf32-spu.c:5009 +#: elf32-spu.c:5006 msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'" msgstr "%B(%s+0x%lx): ratkaisematon %s sijoitus symbolia â€%s†varten" +#: elf32-tic6x.c:1539 +msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined" +msgstr "%B: SB-suhteellinen sijoitus, mutta __c6xabi_DSBT_BASE ei ole määritelty" + +#. Shared libraries and exception handling support not +#. implemented. +#: elf32-tic6x.c:1554 +msgid "%B: relocation type %d not implemented" +msgstr "%B: sijoitustyyppiä %d ei ole toteutettu" + +#: elf32-tic6x.c:1640 +msgid "dangerous relocation" +msgstr "vaarallinen sijoitus" + +#: elf32-tic6x.c:1788 elf32-tic6x.c:1796 +msgid "error: %B requires more stack alignment than %B preserves" +msgstr "virhe: %B vaatii enemmän pinotasausta kuin %B säilyttää" + +#: elf32-tic6x.c:1806 elf32-tic6x.c:1815 +msgid "error: unknown Tag_ABI_array_object_alignment value in %B" +msgstr "virhe: tuntematon Tag_ABI_array_object_alignment-arvo kohteessa %B" + +#: elf32-tic6x.c:1824 elf32-tic6x.c:1833 +msgid "error: unknown Tag_ABI_array_object_align_expected value in %B" +msgstr "virhe: tuntematon Tag_ABI_array_object_align_expected-arvo kohteessa %B" + +#: elf32-tic6x.c:1841 elf32-tic6x.c:1848 +msgid "error: %B requires more array alignment than %B preserves" +msgstr "virhe: %B vaatii enemmän taulukkotasausta kuin %B säilyttää" + +#: elf32-tic6x.c:1870 +msgid "warning: %B and %B differ in wchar_t size" +msgstr "varoitus: %B ja %B eroavat wchar_t size-koossa" + +#: elf32-tic6x.c:1888 +msgid "warning: %B and %B differ in whether code is compiled for DSBT" +msgstr "varoitus: %B ja %B eroavat siinä, että koodi on käännetty kohteelle DSBT" + +#: elf32-tic6x.c:1898 +msgid "warning: %B and %B differ in position-dependence of data addressing" +msgstr "varoitus: %B ja %B eroavat siinä, että datan osoitteet ovat paikkariippuvaisia" + +#: elf32-tic6x.c:1908 +msgid "warning: %B and %B differ in position-dependence of code addressing" +msgstr "varoitus: %B ja %B eroavat siinä, että koodin osoitteet ovat paikkariippuvaisia" + # small data region on sama kuin .scommon data region -#: elf32-v850.c:163 +#: elf32-v850.c:173 #, c-format msgid "Variable `%s' cannot occupy in multiple small data regions" msgstr "Muuttuja â€%s†ei voi sijaita useissa â€smallâ€-data-alueissa" # small on .scommon, zero on .zcommon ja tiny on .tcommon -#: elf32-v850.c:166 +#: elf32-v850.c:176 #, c-format msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions" msgstr "Muuttuja â€%s†voi olla vain yhdessä â€smallâ€-, â€zeroâ€- ja â€tinyâ€-data-alueista" -#: elf32-v850.c:169 +#: elf32-v850.c:179 #, c-format msgid "Variable `%s' cannot be in both small and zero data regions simultaneously" msgstr "Muuttuja â€%s†ei voi olla sekä â€smallâ€- että â€zeroâ€-data-alueissa samanaikaisesti" -#: elf32-v850.c:172 +#: elf32-v850.c:182 #, c-format msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously" msgstr "Muuttuja â€%s†ei voi olla sekä â€smallâ€- että â€tinyâ€-data-alueissa samanaikaisesti" -#: elf32-v850.c:175 +#: elf32-v850.c:185 #, c-format msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously" msgstr "Muuttuja â€%s†ei voi olla sekä â€zeroâ€- että â€tinyâ€-data-alueissa samanaikaisesti" -#: elf32-v850.c:478 +#: elf32-v850.c:483 #, c-format msgid "FAILED to find previous HI16 reloc\n" msgstr "EI ONNISTUTTU löytämään edellistä HI16 reloc-tietuetta\n" -#: elf32-v850.c:1713 +#: elf32-v850.c:2155 msgid "could not locate special linker symbol __gp" msgstr "ei voitu paikallistaa erityistä linkkerisymbolia â€__gpâ€" -#: elf32-v850.c:1717 +#: elf32-v850.c:2159 msgid "could not locate special linker symbol __ep" msgstr "ei voitu paikallistaa erityistä linkkerisymbolia â€__epâ€" -#: elf32-v850.c:1721 +#: elf32-v850.c:2163 msgid "could not locate special linker symbol __ctbp" msgstr "ei voitu paikallistaa erityistä linkkerisymbolia â€__ctbpâ€" -#: elf32-v850.c:1871 +#: elf32-v850.c:2341 msgid "%B: Architecture mismatch with previous modules" msgstr "%B: Arkkitehtuuri ei täsmännyt edellisten modulien kanssa" -#: elf32-v850.c:1890 +#. xgettext:c-format. +#: elf32-v850.c:2360 #, c-format msgid "private flags = %lx: " msgstr "yksityiset liput = %lx: " -#: elf32-v850.c:1895 +#: elf32-v850.c:2365 #, c-format msgid "v850 architecture" msgstr "v850-arkkitehtuuri" -#: elf32-v850.c:1896 +#: elf32-v850.c:2366 #, c-format msgid "v850e architecture" msgstr "v850e-arkkitehtuuri" -#: elf32-v850.c:1897 +#: elf32-v850.c:2367 #, c-format msgid "v850e1 architecture" msgstr "v850e1-arkkitehtuuri" -#: elf32-vax.c:543 +#: elf32-v850.c:2368 +#, c-format +msgid "v850e2 architecture" +msgstr "v850e2-arkkitehtuuri" + +#: elf32-v850.c:2369 +#, c-format +msgid "v850e2v3 architecture" +msgstr "v850e2v3-arkkitehtuuri" + +#: elf32-vax.c:531 #, c-format msgid " [nonpic]" -msgstr " [sijaintiriippuvaisen koodin lippu]" +msgstr " [paikkariippuvaisen koodin lippu]" -#: elf32-vax.c:546 +#: elf32-vax.c:534 #, c-format msgid " [d-float]" msgstr " [d-float-liukulukulippu]" -#: elf32-vax.c:549 +#: elf32-vax.c:537 #, c-format msgid " [g-float]" msgstr " [g-float-liukulukulippu]" -#: elf32-vax.c:666 +#: elf32-vax.c:654 #, c-format msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld" msgstr "%s: varoitus: Yleissiirrostaulun %ld-yhteenlaskettava kohteelle â€%s†ei täsmää edellisen yleissiirrostaulun %ld-yhteenlaskettavan kanssa" -#: elf32-vax.c:1608 +#: elf32-vax.c:1587 #, c-format msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" msgstr "%s: varoitus: %d:n PLT-yhteenlaskettavaa kohteelle â€%s†lohkosta %s ei oteta huomioon" -#: elf32-vax.c:1735 +#: elf32-vax.c:1714 #, c-format msgid "%s: warning: %s relocation against symbol `%s' from %s section" msgstr "%s: varoitus: %s sijoitus symbolia â€%s†varten %s-lohkosta" -#: elf32-vax.c:1741 +#: elf32-vax.c:1720 #, c-format msgid "%s: warning: %s relocation to 0x%x from %s section" msgstr "%s: varoitus: %s sijoitus kohteeseen 0x%x â€%sâ€-lohkosta" -#: elf32-xstormy16.c:451 elf32-ia64.c:2791 elf64-ia64.c:2791 +#: elf32-xstormy16.c:451 elf32-ia64.c:2861 elf64-ia64.c:2861 msgid "non-zero addend in @fptr reloc" msgstr "ei-nolla-yhteenlaskettava â€@fptr relocâ€-tietueessa" -#: elf32-xtensa.c:912 +#: elf32-xtensa.c:918 msgid "%B(%A): invalid property table" msgstr "%B(%A): virheellinen ominaisuustaulu" -#: elf32-xtensa.c:2740 +#: elf32-xtensa.c:2780 msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)" msgstr "%B(%A+0x%lx): sijoitussiirrososoite lukualueen (koko=0x%x) ulkopuolella" -#: elf32-xtensa.c:2819 elf32-xtensa.c:2940 +#: elf32-xtensa.c:2859 elf32-xtensa.c:2980 msgid "dynamic relocation in read-only section" msgstr "dynaaminen sijoitus kirjoitussuojatussa lohkossa" -#: elf32-xtensa.c:2916 +#: elf32-xtensa.c:2956 msgid "TLS relocation invalid without dynamic sections" msgstr "TLS-siirros virheellinen ilman dynaamisia lohkoja" -#: elf32-xtensa.c:3133 +#: elf32-xtensa.c:3173 msgid "internal inconsistency in size of .got.loc section" msgstr "sisäinen epäjohdonmukaisuus â€.got.locâ€-alilohkokoossa" -#: elf32-xtensa.c:3443 +#: elf32-xtensa.c:3486 msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x" msgstr "%B: yhteensopimaton konetyyppi. Tuloste on 0x%x. Syöte on 0x%x" -#: elf32-xtensa.c:4672 elf32-xtensa.c:4680 +#: elf32-xtensa.c:4715 elf32-xtensa.c:4723 msgid "Attempt to convert L32R/CALLX to CALL failed" msgstr "Yritys muuttaa â€L32R/CALLXâ€-kutsu â€CALLâ€-kutsuksi ei onnistunut" -#: elf32-xtensa.c:6290 elf32-xtensa.c:6366 elf32-xtensa.c:7486 +#: elf32-xtensa.c:6333 elf32-xtensa.c:6409 elf32-xtensa.c:7525 msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch" msgstr "%B(%A+0x%lx): ei voitu avata käskyä; mahdollinen konfiguraatiotäsmäämättömyys" -#: elf32-xtensa.c:7226 +#: elf32-xtensa.c:7265 msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch" msgstr "%B(%A+0x%lx): ei voitu avata käskyä XTENSA_ASM_SIMPLIFY-sijoitukselle; mahdollinen konfiguraatiotäsmäämättömyys" -#: elf32-xtensa.c:8987 +#: elf32-xtensa.c:9024 msgid "invalid relocation address" msgstr "virheellinen sijoitusosoite" -# Kun käskykohdemuuttuja on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, +# Kun käskyoperandi on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, # assembler voi muuntaa koodin käyttämään toiminnallisesti samanlaista käskyä tai käskysekvenssiä. # Tämä prosessi tunnetaan nimellä relaxation. Tätä tehdään tyypillisesti haarautumiskäskyissä, koska # haarautumiskohteen etäisyyttä ei tunneta ennen linkitystä. Tavallaan tällä tavalla kumotaan lukualueen # rajoitteet (constraints). Siksi olen suomentanut sen termillä avartaminen. -#: elf32-xtensa.c:9036 +#: elf32-xtensa.c:9073 msgid "overflow after relaxation" msgstr "ylivuoto avartamisen jälkeen" -#: elf32-xtensa.c:10167 +#: elf32-xtensa.c:10205 msgid "%B(%A+0x%lx): unexpected fix for %s relocation" msgstr "%B(%A+0x%lx): odottamaton korjaus %s-sijoitukselle" -#: elf64-alpha.c:452 +#: elf64-alpha.c:460 msgid "GPDISP relocation did not find ldah and lda instructions" msgstr "GPDISP-sijoitus ei löytänyt â€ldahâ€- ja â€ldaâ€-käskyjä" -#: elf64-alpha.c:2389 +#: elf64-alpha.c:2408 msgid "%B: .got subsegment exceeds 64K (size %d)" -msgstr "%B: â€.gotâ€-alisegmentti ylittää 64kilotavun rajan (koko %d)" +msgstr "%B: â€.gotâ€-alisegmentti ylittää 64 kilotavun rajan (koko %d)" -#: elf64-alpha.c:4269 elf64-alpha.c:4281 +#: elf64-alpha.c:4304 elf64-alpha.c:4316 msgid "%B: gp-relative relocation against dynamic symbol %s" msgstr "%B: yleisosoitinsuhteellinen sijoitus dynaamista symbolia %s varten" -#: elf64-alpha.c:4307 elf64-alpha.c:4442 +#: elf64-alpha.c:4342 elf64-alpha.c:4477 msgid "%B: pc-relative relocation against dynamic symbol %s" msgstr "%B: ohjelmalaskurisuhteellinen sijoitus dynaamista symbolia %s varten" -#: elf64-alpha.c:4335 +#: elf64-alpha.c:4370 msgid "%B: change in gp: BRSGP %s" msgstr "%B: vaihto yleisosoittimessa: BRSGP %s" -#: elf64-alpha.c:4360 +#: elf64-alpha.c:4395 msgid "" msgstr "" -#: elf64-alpha.c:4365 +#: elf64-alpha.c:4400 msgid "%B: !samegp reloc against symbol without .prologue: %s" msgstr "%B: â€!samegp relocâ€-tietue symbolia varten ilman â€.prologueâ€-lohkoa: %s" -#: elf64-alpha.c:4417 +#: elf64-alpha.c:4452 msgid "%B: unhandled dynamic relocation against %s" msgstr "%B: käsittelemätön dynaaminen sijoitus %s:ta varten" -#: elf64-alpha.c:4449 +#: elf64-alpha.c:4484 msgid "%B: pc-relative relocation against undefined weak symbol %s" msgstr "%B: ohjelmalaskurisuhteellinen sijoitus määrittelemätöntä heikkoa symbolia %s varten" -#: elf64-alpha.c:4509 +#: elf64-alpha.c:4544 msgid "%B: dtp-relative relocation against dynamic symbol %s" msgstr "%B: dtp-suhteellinen sijoitus dynaamista symbolia %s varten" -#: elf64-alpha.c:4532 +#: elf64-alpha.c:4567 msgid "%B: tp-relative relocation against dynamic symbol %s" msgstr "%B: tp-suhteellinen sijoitus dynaamista symbolia %s varten" -#: elf64-hppa.c:2091 +#: elf64-hppa.c:2101 #, c-format msgid "stub entry for %s cannot load .plt, dp offset = %ld" msgstr "stub-tulokohta kohteelle %s ei voi ladata â€.pltâ€, dp-siirrososoite = %ld" -#: elf64-hppa.c:3273 +#: elf64-hppa.c:3299 msgid "%B(%A+0x%lx): cannot reach %s" msgstr "%B(%A+0x%lx): kohdetta %s ei voi tavoittaa" -# Kun käskykohdemuuttuja on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, +# Kun käskyoperandi on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, # assembler voi muuntaa koodin käyttämään toiminnallisesti samanlaista käskyä tai käskysekvenssiä. # Tämä prosessi tunnetaan nimellä relaxation. Tätä tehdään tyypillisesti haarautumiskäskyissä, koska # haarautumiskohteen etäisyyttä ei tunneta ennen linkitystä. Tavallaan tällä tavalla kumotaan lukualueen @@ -2453,46 +2598,46 @@ "%s: Sisäinen yhteensopimattomuusvirhe linkkerin varaamalle\n" " yleisrekisteriarvolle: linkitetty: 0x%lx%08lx != avarrettu: 0x%lx%08lx\n" -#: elf64-mmix.c:1618 +#: elf64-mmix.c:1607 #, c-format msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s" msgstr "%s: â€base-plus-offsetâ€-sijoitus rekisterisymbolia varten: (tuntematon) kohteessa %s" -#: elf64-mmix.c:1623 +#: elf64-mmix.c:1612 #, c-format msgid "%s: base-plus-offset relocation against register symbol: %s in %s" msgstr "%s: â€base-plus-offsetâ€-sijoitus rekisterisymbolia varten: %s kohteessa %s" -#: elf64-mmix.c:1667 +#: elf64-mmix.c:1656 #, c-format msgid "%s: register relocation against non-register symbol: (unknown) in %s" msgstr "%s: rekisterisijoitus ei-rekisterisymbolia varten: (tuntematon) kohteessa %s" -#: elf64-mmix.c:1672 +#: elf64-mmix.c:1661 #, c-format msgid "%s: register relocation against non-register symbol: %s in %s" msgstr "%s: rekisterisijoitus ei-rekisterisymbolia varten: %s kohteessa %s" -#: elf64-mmix.c:1709 +#: elf64-mmix.c:1698 #, c-format msgid "%s: directive LOCAL valid only with a register or absolute value" msgstr "%s: direktiivi LOCAL on oikea vain rekisterissä tai absoluuttiarvona" -#: elf64-mmix.c:1737 +#: elf64-mmix.c:1726 #, c-format msgid "%s: LOCAL directive: Register $%ld is not a local register. First global register is $%ld." msgstr "%s: LOCAL-direktiivi: Rekisteri $%ld ei ole paikallinen rekisteri. Ensimmäinen yleisrekisteri on $%ld." -#: elf64-mmix.c:2201 +#: elf64-mmix.c:2190 #, c-format msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n" msgstr "%s: Virhe: useita â€%sâ€-määrittelyjä; %s-alku on asetettu aiemmin linkitetyssä tiedostossa\n" -#: elf64-mmix.c:2259 +#: elf64-mmix.c:2248 msgid "Register section has contents\n" msgstr "Rekisterilohkossa on sisältö\n" -#: elf64-mmix.c:2451 +#: elf64-mmix.c:2440 #, c-format msgid "" "Internal inconsistency: remaining %u != max %u.\n" @@ -2501,65 +2646,65 @@ "Sisäinen yhteensopimattomuus: jäljelle jäävä %u != maksimi %u.\n" " Lähetä raportit ohjelmistovioista (englanniksi) osoitteeseen http://sourceware.org/bugzilla/." -#: elf64-ppc.c:2691 libbfd.c:978 +#: elf64-ppc.c:2741 libbfd.c:997 msgid "%B: compiled for a big endian system and target is little endian" msgstr "%B: käännetty â€big endianâ€-järjestelmälle ja kohde on â€little endianâ€" -#: elf64-ppc.c:2694 libbfd.c:980 +#: elf64-ppc.c:2744 libbfd.c:999 msgid "%B: compiled for a little endian system and target is big endian" msgstr "%B: käännetty â€little endianâ€-järjestelmälle ja kohde on â€big endianâ€" -#: elf64-ppc.c:6338 +#: elf64-ppc.c:6473 #, c-format msgid "copy reloc against `%s' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc" msgstr "kopio-reloc-tietue â€%sâ€:ta varten vaatii laiskan plt-linkityksen; vältä asettamasta LD_BIND_NOW=1 tai päivitä gcc" -#: elf64-ppc.c:6767 +#: elf64-ppc.c:6901 msgid "dynreloc miscount for %B, section %A" msgstr "dynreloc-väärinlaskenta kohteelle %B, lohko %A" -#: elf64-ppc.c:6851 +#: elf64-ppc.c:6985 msgid "%B: .opd is not a regular array of opd entries" msgstr "%B: â€.opd†ei ole säännönmukainen opd-tulokohtien taulukko" -#: elf64-ppc.c:6860 +#: elf64-ppc.c:6994 msgid "%B: unexpected reloc type %u in .opd section" msgstr "%B: odottamaton reloc-tyyppi %u â€.opdâ€-lohkossa" -#: elf64-ppc.c:6881 +#: elf64-ppc.c:7015 msgid "%B: undefined sym `%s' in .opd section" msgstr "%B: määrittelemätön symboli â€%s†â€.opdâ€-lohkossa" -#: elf64-ppc.c:7640 elf64-ppc.c:8017 +#: elf64-ppc.c:7877 elf64-ppc.c:8392 #, c-format -msgid "%s defined in removed toc entry" -msgstr "%s määritelty poistetussa â€sisällysluetteloâ€-tulokohdassa" +msgid "%s defined on removed toc entry" +msgstr "%s määritelty poistetussa sisällysluettelotulokohdassa" -#: elf64-ppc.c:8910 +#: elf64-ppc.c:9459 #, c-format msgid "long branch stub `%s' offset overflow" msgstr "pitkä haarautumis-stub â€%s†siirrososoitteen ylivuoto" -#: elf64-ppc.c:8969 +#: elf64-ppc.c:9518 #, c-format msgid "can't find branch stub `%s'" msgstr "ei löydy haarautumis-stub-kohdetta â€%sâ€" -#: elf64-ppc.c:9031 elf64-ppc.c:9169 +#: elf64-ppc.c:9580 elf64-ppc.c:9716 #, c-format msgid "linkage table error against `%s'" msgstr "linkitystauluvirhe â€%sâ€:ta varten" -#: elf64-ppc.c:9326 +#: elf64-ppc.c:9886 #, c-format msgid "can't build branch stub `%s'" msgstr "ei voi muodostaa haaroitus-stub-kohdetta â€%sâ€" -#: elf64-ppc.c:9799 +#: elf64-ppc.c:10684 msgid "%B section %A exceeds stub group size" msgstr "%B lohko %A ylittää stub-ryhmäkoon" -#: elf64-ppc.c:10453 +#: elf64-ppc.c:11339 #, c-format msgid "" "linker stubs in %u group%s\n" @@ -2576,424 +2721,427 @@ " pitkä sisältöluettelosäätö %lu\n" " plt-kutsu %lu" -#: elf64-ppc.c:11252 +#: elf64-ppc.c:12190 msgid "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc" msgstr "%B(%A+0x%lx): automaattisia useita sisältöluettelotauluja ei ole tuettu crt-tiedostoissasi; käännä uudelleen â€-mminimal-tocâ€-argumentilla tai päivitä gcc" -#: elf64-ppc.c:11260 +#: elf64-ppc.c:12198 msgid "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern" msgstr "%B(%A+0x%lx): sisarruskutsuoptimointi kohteeseen â€%s†ei salli automaattisia useita sisällysluettelotauluja; käännä uudelleen â€-mminimal-tocâ€-argumentilla tai â€-fno-optimize-sibling-callsâ€-argumentilla, tai tee kohteesta â€%s†ulkoinen" -#: elf64-ppc.c:11961 +#: elf64-ppc.c:12919 msgid "%B: relocation %s is not supported for symbol %s." msgstr "%B: sijoitus %s ei ole tuettu symbolille %s." -#: elf64-ppc.c:12044 +#: elf64-ppc.c:13096 msgid "%B: error: relocation %s not a multiple of %d" msgstr "%B: virhe: sijoitus %s ei ole %d:n kerrannainen" -#: elf64-sh64.c:1701 +#: elf64-sh64.c:1682 #, c-format msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n" msgstr "%s: virhe: tasaamaton sijoitustyyppi %d kohteessa %08x reloc-tietue %08x\n" -#: elf64-sparc.c:439 +#: elf64-sparc.c:444 msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER" msgstr "%B: Vain rekisterit %%g[2367] voidaan esitellä käyttäen STT_REGISTER-symbolia" -#: elf64-sparc.c:459 +#: elf64-sparc.c:464 msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B" msgstr "Rekisteriä %%g%d käytetty yhteensopimattomasti: %s kohteessa %B, aikaisemmin %s kohteessa %B" -#: elf64-sparc.c:482 +#: elf64-sparc.c:487 msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B" msgstr "Symbolissa â€%s†on eri tyyppejä: REGISTER kohteessa %B, aiemmin %s kohteessa %B" -#: elf64-sparc.c:527 +#: elf64-sparc.c:532 msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B" msgstr "Symbolissa â€%s†on eri tyyppejä: %s kohteessa %B, aiemmin REGISTER kohteessa %B" -#: elf64-sparc.c:679 +#: elf64-sparc.c:684 msgid "%B: linking UltraSPARC specific with HAL specific code" msgstr "%B: linkitetään UltraSPARC-kohtainen HAL-kohtaisella koodilla" -#: elf64-x86-64.c:1337 +#: elf64-x86-64.c:1360 msgid "%B: '%s' accessed both as normal and thread local symbol" msgstr "%B: â€%s†kutsuttu sekä normaalina että säikeisenä paikallissymbolina" -#: elf64-x86-64.c:2701 +#: elf64-x86-64.c:2801 msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d" msgstr "%B: sijoituksella %s kohteen STT_GNU_IFUNC-symbolia â€%s†varten on ei-nolla-yhteenlaskettava: %d" -#: elf64-x86-64.c:2980 +#: elf64-x86-64.c:3073 msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object" msgstr "%B: sijoitusta R_X86_64_GOTOFF64 suojattua funktiota â€%s†varten ei voida käyttää kun tehdään jaettua objektia" -#: elf64-x86-64.c:3091 +#: elf64-x86-64.c:3184 msgid "; recompile with -fPIC" msgstr "; käännetty uudelleen -fPIC-parametrillä" -#: elf64-x86-64.c:3096 +#: elf64-x86-64.c:3189 msgid "%B: relocation %s against %s `%s' can not be used when making a shared object%s" msgstr "%B: sijoitusta %s kohteeseen %s â€%s†ei voi käyttää kun tehdään jaettua objektia %s" -#: elf64-x86-64.c:3098 +#: elf64-x86-64.c:3191 msgid "%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s" msgstr "%B: sijoitusta %s kohteeseen %s â€%s†ei voi käyttää kun tehdään jaettua objektia %s" -#: elfcode.h:795 +#: elfcode.h:826 #, c-format msgid "warning: %s has a corrupt string table index - ignoring" msgstr "varoitus: %s:ssa on rikkinäinen merkkijonotauluindeksi - ei oteta huomioon" -#: elfcode.h:1201 +#: elfcode.h:1236 #, c-format msgid "%s: version count (%ld) does not match symbol count (%ld)" msgstr "%s: versiolukumäärä (%ld) ei täsmää symbolilukumäärän (%ld) kanssa" -#: elfcode.h:1441 +#: elfcode.h:1476 #, c-format msgid "%s(%s): relocation %d has invalid symbol index %ld" msgstr "%s(%s): sijoituksessa %d on virheellinen symboli-indeksi %ld" -#: elfcore.h:251 +#: elfcore.h:312 msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu." msgstr "Varoitus: %B typistettiin: odotettu käyttöjärjestelmäydintiedoston koko >= %lu, löytyi: %lu." -#: elflink.c:1113 +#: elflink.c:1119 msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A" msgstr "%s: TLS-määrittely kohteessa %B lohko %A ei täsmää ei-TLS-määrittelyn kanssa kohteessa %B lohko %A" -#: elflink.c:1117 +#: elflink.c:1123 msgid "%s: TLS reference in %B mismatches non-TLS reference in %B" msgstr "%s: TLS-viite kohteessa %B ei täsmää ei-TLS-viitteen kanssa kohteessa %B" -#: elflink.c:1121 +#: elflink.c:1127 msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B" msgstr "%s: TLS-määrittely kohteessa %B lohko %A ei täsmää ei-TLS-viitteen kanssa kohteessa %B" -#: elflink.c:1125 +#: elflink.c:1131 msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A" msgstr "%s: TLS-viite kohteessa %B ei täsmää ei-TLS-määrittelyn kanssa kohteessa %B lohko %A" -#: elflink.c:1764 +#: elflink.c:1763 msgid "%B: unexpected redefinition of indirect versioned symbol `%s'" msgstr "%B: epäsuoran versioidun symbolin â€%s†odottamaton uudelleenmäärittely" -#: elflink.c:2077 +#: elflink.c:2076 msgid "%B: version node not found for symbol %s" msgstr "%B: versiosolmua ei löydetty symbolille %s" -#: elflink.c:2167 +#: elflink.c:2166 msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'" msgstr "%B: virheellinen reloc-tietuesymboli-indeksi (0x%lx >= 0x%lx) siirrososoitteelle 0x%lx lohkossa â€%Aâ€" -#: elflink.c:2178 +#: elflink.c:2177 msgid "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the object file has no symbol table" msgstr "%B: ei-nolla symboli-indeksi (0x%lx) siirrososoitetta 0x%lx varten lohkossa â€%A†kun objektitiedostolla ei ole symbolitaulua" -#: elflink.c:2375 +#: elflink.c:2367 msgid "%B: relocation size mismatch in %B section %A" msgstr "%B: sijoituskokotäsmäämättömyys %B:n tulolohkossa %A" -#: elflink.c:2678 +#: elflink.c:2662 #, c-format msgid "warning: type and size of dynamic symbol `%s' are not defined" msgstr "varoitus: dynaamisen symbolin â€%s†tyyppi ja koko ei ole määritelty" # USA:ssa alternate-sanaa käytetään yleisesti, kun tarkoitetaan alternative. -#: elflink.c:3424 +#: elflink.c:3418 msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n" msgstr "%P: vaihtoehtoinen ELF-konekoodi löydetty (%d) kohteessa %B, otetaan %d\n" -#: elflink.c:4032 +#: elflink.c:4050 msgid "%B: %s: invalid version %u (max %d)" msgstr "%B: %s: virheellinen versio %u (maksimi %d)" -#: elflink.c:4068 +#: elflink.c:4086 msgid "%B: %s: invalid needed version %d" msgstr "%B: %s: virheellinen tarvittu versio %d" -#: elflink.c:4253 +#: elflink.c:4285 msgid "Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %A" msgstr "Varoitus: tasaus %u yhteissymbolissa â€%s†kohteessa %B on suurempi kuin tasaus (%u) sen lohkossa %A" -#: elflink.c:4259 +#: elflink.c:4291 msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B" msgstr "Varoitus: tasaus %u symbolissa â€%s†kohteessa %B on pienempi kuin %u kohteessa %B" -#: elflink.c:4274 +#: elflink.c:4306 msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B" msgstr "Varoitus: symbolin â€%s†koko vaihtui koosta %lu kohteessa %B kokoon %lu kohteessa %B" -#: elflink.c:4438 -#, c-format -msgid "%s: invalid DSO for symbol `%s' definition" -msgstr "%s: virheellinen DSO symbolin â€%s†määrittelylle" +#: elflink.c:4472 +msgid "%B: undefined reference to symbol '%s'" +msgstr "%B: määrittelemätön viite symboliin ’%s’" + +#: elflink.c:4475 +msgid "note: '%s' is defined in DSO %B so try adding it to the linker command line" +msgstr "huomatus: ’%s’ on määritelty kohteessa DSO %B, joten yritä lisätä se linkkittäjän komentoriville" -#: elflink.c:5688 +#: elflink.c:5779 #, c-format msgid "%s: undefined version: %s" msgstr "%s: määrittelemätön versio: %s" -#: elflink.c:5756 +#: elflink.c:5847 msgid "%B: .preinit_array section is not allowed in DSO" msgstr "%B: â€.preinit_arrayâ€-lohkoa ei sallita kohteessa DSO" -#: elflink.c:7484 +#: elflink.c:7598 #, c-format msgid "undefined %s reference in complex symbol: %s" msgstr "määrittelemätön %s-viite kompleksisymbolissa: %s" -#: elflink.c:7638 +#: elflink.c:7752 #, c-format msgid "unknown operator '%c' in complex symbol" msgstr "tuntematon operaattori â€%c†kompleksisymbolissa" -#: elflink.c:7976 elflink.c:7993 elflink.c:8030 elflink.c:8047 +#: elflink.c:8091 elflink.c:8108 elflink.c:8145 elflink.c:8162 msgid "%B: Unable to sort relocs - they are in more than one size" msgstr "%B: Ei voi lajitella relocs-tietueita - niitä on useampia kuin yhtä kokoa" -#: elflink.c:8007 elflink.c:8061 +#: elflink.c:8122 elflink.c:8176 msgid "%B: Unable to sort relocs - they are of an unknown size" msgstr "%B: Ei voi lajitella relocs-tietueita - niiden koko on tuntematon" -#: elflink.c:8112 +#: elflink.c:8227 msgid "Not enough memory to sort relocations" msgstr "Ei tarpeeksi muistia sijoitusten lajittelemiseen" -#: elflink.c:8304 +#: elflink.c:8420 msgid "%B: Too many sections: %d (>= %d)" msgstr "%B: Liian monia lohkoja: %d (>= %d)" -#: elflink.c:8540 +#: elflink.c:8663 msgid "%B: %s symbol `%s' in %B is referenced by DSO" msgstr "%B: %s symboli â€%s†kohteessa %B on DSO:n viitteenä" -#: elflink.c:8625 +#: elflink.c:8754 msgid "%B: could not find output section %A for input section %A" msgstr "%B: ei löytynyt tulostelohkoa %A syötelohkolle %A" -#: elflink.c:8745 +#: elflink.c:8874 msgid "%B: %s symbol `%s' isn't defined" msgstr "%B: %s symbolia â€%s†ei ole määritelty" -#: elflink.c:9301 +#: elflink.c:9428 msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol" msgstr "virhe: %B sisältää reloc-tietueen (0x%s) lohkolle %A, joka viittaa puuttuvaan yleissymboliin" -#: elflink.c:9366 +#: elflink.c:9494 msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n" msgstr "%Xâ€%s†viitattu lohkossa â€%A†kohteessa %B: määritelty hylätyssä lohkossa â€%A†/ %B\n" -#: elflink.c:9991 +#: elflink.c:10141 msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections" msgstr "%A:ssa on sekä järjestettyjä [â€%A†kohteessa %B] että järjestämättömiä [â€%A†kohteessa %B] lohkoja" -#: elflink.c:9996 +#: elflink.c:10146 #, c-format msgid "%A has both ordered and unordered sections" msgstr "%A:ssa on sekä järjestettyjä että järjestämättömiä lohkoja" -#: elflink.c:10872 elflink.c:10916 +#: elflink.c:10992 elflink.c:11036 msgid "%B: could not find output section %s" msgstr "%B: ei löytynyt tulostelohkoa %s" -#: elflink.c:10877 +#: elflink.c:10997 #, c-format msgid "warning: %s section has zero size" msgstr "varoitus: %s-lohkossa on nollakoko" -#: elflink.c:10982 +#: elflink.c:11102 msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n" -msgstr "%P: varoitus: luodaan DT_TEXTREL-tunniste jaettussa objektissa.\n" +msgstr "%P: varoitus: luodaan DT_TEXTREL-tunniste jaetussa objektissa.\n" -#: elflink.c:11165 +#: elflink.c:11289 msgid "%P%X: can not read symbols: %E\n" msgstr "%P%X: ei voi lukea symboleja: %E\n" -#: elflink.c:11483 +#: elflink.c:11638 msgid "Removing unused section '%s' in file '%B'" msgstr "Poistetaan käyttämätön lohko â€%s†tiedostossa â€%Bâ€" -#: elflink.c:11695 +#: elflink.c:11850 msgid "Warning: gc-sections option ignored" msgstr "Varoitus: â€gc-sectionsâ€-valitsinta ei oteta huomioon" -#: elflink.c:12242 +#: elflink.c:12399 msgid "%B: ignoring duplicate section `%A'" msgstr "%B: ei oteta huomioon lohkon â€%A†kaksoiskappaletta" -#: elflink.c:12249 elflink.c:12256 +#: elflink.c:12406 elflink.c:12413 msgid "%B: duplicate section `%A' has different size" msgstr "%B: lohkon â€%A†kaksoiskappaleessa on eri koko" -#: elflink.c:12264 elflink.c:12269 +#: elflink.c:12421 elflink.c:12426 msgid "%B: warning: could not read contents of section `%A'" msgstr "%B: varoitus: ei voitu lukea lohkon â€%A†sisältöä" -#: elflink.c:12273 +#: elflink.c:12430 msgid "%B: warning: duplicate section `%A' has different contents" msgstr "%B: varoitus: lohkon â€%A†kaksoiskappaleella on erilainen sisältö" -#: elflink.c:12374 linker.c:3098 +#: elflink.c:12531 linker.c:3138 msgid "%F%P: already_linked_table: %E\n" msgstr "%F%P: already_linked_table: %E\n" -#: elfxx-mips.c:1222 +#: elfxx-mips.c:1220 msgid "static procedure (no name)" msgstr "staattinen proseduuri (ei nimeä)" -#: elfxx-mips.c:5588 -msgid "%B: %A+0x%lx: jump to stub routine which is not jal" -msgstr "%B: %A+0x%lx: hyppää stub-rutiiniin, joka ei ole jal-käsky" +#: elfxx-mips.c:5623 +msgid "%B: %A+0x%lx: Direct jumps between ISA modes are not allowed; consider recompiling with interlinking enabled." +msgstr "%B: %A+0x%lx: Suorat hypyt ISA-tilojen välillä eivät ole sallittuja; harkitse uudelleenkääntämistä käyttäen yhteislinkitystä." -#: elfxx-mips.c:6235 elfxx-mips.c:6458 +#: elfxx-mips.c:6280 elfxx-mips.c:6503 msgid "%B: Warning: bad `%s' option size %u smaller than its header" msgstr "%B: Varoitus: virheellinen â€%sâ€-valitsinkoko %u pienempi kuin sen otsake" -#: elfxx-mips.c:7205 elfxx-mips.c:7330 +#: elfxx-mips.c:7254 elfxx-mips.c:7379 msgid "%B: Warning: cannot determine the target function for stub section `%s'" -msgstr "%B: varoitus: ei voi määritellä stub-lohkon â€%s†kohdefunktiota" +msgstr "%B: Varoitus: ei voi määritellä stub-lohkon â€%s†kohdefunktiota" -#: elfxx-mips.c:7459 +#: elfxx-mips.c:7508 msgid "%B: Malformed reloc detected for section %s" msgstr "%B: Muodoltaan virheellinen reloc-tietue havaittu lohkossa %s" -#: elfxx-mips.c:7499 +#: elfxx-mips.c:7548 msgid "%B: GOT reloc at 0x%lx not expected in executables" msgstr "%B: Yleissiirrostaulu-reloc-tietue siirroksessa 0x%lx ei ole odotettu suoritettavissa tiedostoissa" -#: elfxx-mips.c:7602 +#: elfxx-mips.c:7670 msgid "%B: CALL16 reloc at 0x%lx not against global symbol" msgstr "%B: â€CALL16 relocâ€-tietue siirroksessa 0x%lx ei ole yleissymbolia varten" -#: elfxx-mips.c:8280 +#: elfxx-mips.c:8365 #, c-format msgid "non-dynamic relocations refer to dynamic symbol %s" msgstr "ei-dynaaminen sijoitus viittaa dynaamiseen symboliin %s" -#: elfxx-mips.c:8985 +#: elfxx-mips.c:9068 msgid "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'" msgstr "%B: Ei löydy täsmäävää â€LO16 relocâ€-tietuetta tulolohkoa â€%s†varten symbolinimelle %s kohteessa 0x%lx lohkossa â€%Aâ€" -#: elfxx-mips.c:9124 +#: elfxx-mips.c:9207 msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)" msgstr "â€smallâ€-datalohko ylittää 64 kilotavua; alenna â€smallâ€-datalohkon kokorajaa (katso valitsin -G)" -#: elfxx-mips.c:11940 +#: elfxx-mips.c:12027 #, c-format msgid "%s: illegal section name `%s'" msgstr "%s: virheellinen lohkonimi â€%sâ€" -#: elfxx-mips.c:12318 elfxx-mips.c:12344 +#: elfxx-mips.c:12405 elfxx-mips.c:12431 msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float" msgstr "Varoitus: %B käyttää â€-msingle-floatâ€-valitsinta, %B käyttää â€-mdouble-floatâ€-valitsinta" -#: elfxx-mips.c:12330 elfxx-mips.c:12386 +#: elfxx-mips.c:12417 elfxx-mips.c:12473 msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64" msgstr "Varoitus: %B käyttää â€-msingle-floatâ€-valitsinta, %B käyttää â€-mips32r2 -mfp64â€-valitsimia" -#: elfxx-mips.c:12356 elfxx-mips.c:12392 +#: elfxx-mips.c:12443 elfxx-mips.c:12479 msgid "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64" msgstr "Varoitus: %B käyttää â€-mdouble-floatâ€-valitsinta, %B käyttää â€-mips32r2 -mfp64â€-valitsimia" -#: elfxx-mips.c:12434 +#: elfxx-mips.c:12521 msgid "%B: endianness incompatible with that of the selected emulation" msgstr "%B: tavujärjestys tyypiltään sopimaton valitun emuloinnin tavujärjestystyypin kanssa" -#: elfxx-mips.c:12445 +#: elfxx-mips.c:12532 msgid "%B: ABI is incompatible with that of the selected emulation" msgstr "%B: ABI ei ole yhteensopiva valitun emuloinnin ABIn kanssa" -#: elfxx-mips.c:12526 +#: elfxx-mips.c:12613 msgid "%B: warning: linking abicalls files with non-abicalls files" msgstr "%B: varoitus: linkitetään abi-kutsutiedostoja ei-abi-kutsutiedostoihin" -#: elfxx-mips.c:12543 +#: elfxx-mips.c:12630 msgid "%B: linking 32-bit code with 64-bit code" msgstr "%B: linkitetään 32-bittinen koodi 64-bittisen koodin kanssa" -#: elfxx-mips.c:12571 +#: elfxx-mips.c:12658 msgid "%B: linking %s module with previous %s modules" msgstr "%B: linkitetään %s-moduli edellisten %s-modulien kanssa" -#: elfxx-mips.c:12594 +#: elfxx-mips.c:12681 msgid "%B: ABI mismatch: linking %s module with previous %s modules" msgstr "%B: ABI-täsmäämättömyys: linkitetään %s-moduli edellisten %s-modulien kanssa" -#: elfxx-mips.c:12758 +#: elfxx-mips.c:12845 #, c-format msgid " [abi=O32]" msgstr " [abi=O32]" -#: elfxx-mips.c:12760 +#: elfxx-mips.c:12847 #, c-format msgid " [abi=O64]" msgstr " [abi=O64]" -#: elfxx-mips.c:12762 +#: elfxx-mips.c:12849 #, c-format msgid " [abi=EABI32]" msgstr " [abi=EABI32]" -#: elfxx-mips.c:12764 +#: elfxx-mips.c:12851 #, c-format msgid " [abi=EABI64]" msgstr " [abi=EABI64]" -#: elfxx-mips.c:12766 +#: elfxx-mips.c:12853 #, c-format msgid " [abi unknown]" msgstr " [abi tuntematon]" -#: elfxx-mips.c:12768 +#: elfxx-mips.c:12855 #, c-format msgid " [abi=N32]" msgstr " [abi=N32]" -#: elfxx-mips.c:12770 +#: elfxx-mips.c:12857 #, c-format msgid " [abi=64]" msgstr " [abi=64]" -#: elfxx-mips.c:12772 +#: elfxx-mips.c:12859 #, c-format msgid " [no abi set]" msgstr " [ei abia asetettu]" -#: elfxx-mips.c:12793 +#: elfxx-mips.c:12880 #, c-format msgid " [unknown ISA]" msgstr " [tuntematon ISA]" -#: elfxx-mips.c:12804 +#: elfxx-mips.c:12891 #, c-format msgid " [not 32bitmode]" msgstr " [ei 32-bittitila]" -#: elfxx-sparc.c:440 +#: elfxx-sparc.c:595 #, c-format msgid "invalid relocation type %d" msgstr "virheellinen sijoitustyyppi %d" -#: i386linux.c:455 m68klinux.c:459 sparclinux.c:453 +#: i386linux.c:454 m68klinux.c:458 sparclinux.c:452 #, c-format msgid "Output file requires shared library `%s'\n" msgstr "Tulostetiedosto vaatii jaetun kirjaston â€%sâ€\n" -#: i386linux.c:463 m68klinux.c:467 sparclinux.c:461 +#: i386linux.c:462 m68klinux.c:466 sparclinux.c:460 #, c-format msgid "Output file requires shared library `%s.so.%s'\n" msgstr "Tulostetiedosto vaatii jaetun kirjaston â€%s.so.%sâ€\n" -#: i386linux.c:652 i386linux.c:702 m68klinux.c:659 m68klinux.c:707 -#: sparclinux.c:651 sparclinux.c:701 +#: i386linux.c:651 i386linux.c:701 m68klinux.c:658 m68klinux.c:706 +#: sparclinux.c:650 sparclinux.c:700 #, c-format msgid "Symbol %s not defined for fixups\n" msgstr "Symbolia %s ei ole määritelty korjauksia varten\n" -#: i386linux.c:726 m68klinux.c:731 sparclinux.c:725 +#: i386linux.c:725 m68klinux.c:730 sparclinux.c:724 msgid "Warning: fixup count mismatch\n" msgstr "Varoitus: korjauslukumäärän täsmäämättömyys\n" @@ -3007,15 +3155,15 @@ msgid "%s: unrecognized symbol `%s' flags 0x%x" msgstr "%s: tunnistamaton symboli â€%s†liput 0x%x" -#: ieee.c:788 +#: ieee.c:792 msgid "%B: unimplemented ATI record %u for symbol %u" msgstr "%B: toteuttamaton ATI-tietue %u symbolille %u" -#: ieee.c:812 +#: ieee.c:816 msgid "%B: unexpected ATN type %d in external part" msgstr "%B: odottamaton ATN-tyyppi %d ulkoisessa osassa" -#: ieee.c:834 +#: ieee.c:838 msgid "%B: unexpected type after ATN" msgstr "%B: odottamaton tyyppi ATN:n jälkeen" @@ -3055,99 +3203,99 @@ msgid "%B: bad section length in ihex_read_section" msgstr "%B: virheellinen lohkopituus â€ihex_read_sectionâ€-lohkossa" -#: ihex.c:825 +#: ihex.c:826 #, c-format msgid "%s: address 0x%s out of range for Intel Hex file" msgstr "%s: osoite 0x%s lukualueen ulkopuolella Intel-heksatiedostolle" -#: libbfd.c:1008 +#: libbfd.c:863 +msgid "%B: unable to get decompressed section %A" +msgstr "%B: ei kyetä hakemaan tiivistyksestä purettua lohkoa %A" + +#: libbfd.c:1027 #, c-format msgid "Deprecated %s called at %s line %d in %s\n" msgstr "Käytöstä poistettu %s kutsuttiin tiedostossa %s rivillä %d funktiossa %s\n" -#: libbfd.c:1011 +#: libbfd.c:1030 #, c-format msgid "Deprecated %s called\n" msgstr "Käytöstä poistettu %s kutsuttu\n" -#: linker.c:1874 +#: linker.c:1911 msgid "%B: indirect symbol `%s' to `%s' is a loop" msgstr "%B: epäsuora symboli â€%s†kohteeseen â€%s†on silmukka" -#: linker.c:2740 +#: linker.c:2778 #, c-format msgid "Attempt to do relocatable link with %s input and %s output" msgstr "Yritettiin tehdä sijoitettava linkki %s-syötteellä ja %s-tulosteella" -#: linker.c:3065 +#: linker.c:3105 msgid "%B: warning: ignoring duplicate section `%A'\n" msgstr "%B: varoitus: ei oteta huomioon lohkon â€%A†kaksoiskappaletta\n" -#: linker.c:3079 +#: linker.c:3119 msgid "%B: warning: duplicate section `%A' has different size\n" msgstr "%B: varoitus: lohkon â€%A†kaksoiskappaleessa on eri koko\n" -#: mach-o.c:3195 -#, c-format +#: mach-o.c:3403 msgid "Mach-O header:\n" msgstr "Mach-O otsake:\n" -#: mach-o.c:3196 +#: mach-o.c:3404 #, c-format msgid " magic : %08lx\n" msgstr " maaginen : %08lx\n" -#: mach-o.c:3197 +#: mach-o.c:3405 #, c-format msgid " cputype : %08lx (%s)\n" msgstr " prosessorityyppi : %08lx (%s)\n" -#: mach-o.c:3199 +#: mach-o.c:3407 #, c-format msgid " cpusubtype: %08lx\n" msgstr " prosessorialityyppi : %08lx\n" -#: mach-o.c:3200 +#: mach-o.c:3408 #, c-format msgid " filetype : %08lx (%s)\n" msgstr " tiedostotyyppi : %08lx (%s)\n" -#: mach-o.c:3203 +#: mach-o.c:3411 #, c-format -msgid " ncmds : %08lx\n" -msgstr " ncmds : %08lx\n" +msgid " ncmds : %08lx (%lu)\n" +msgstr "ncmds : %08lx (%lu)\n" -#: mach-o.c:3204 +#: mach-o.c:3412 #, c-format msgid " sizeofcmds: %08lx\n" msgstr " komentojenkoko : %08lx\n" -#: mach-o.c:3205 +#: mach-o.c:3413 #, c-format msgid " flags : %08lx (" msgstr " liput : %08lx (" -#: mach-o.c:3207 -#, c-format +#: mach-o.c:3415 vms-alpha.c:7652 msgid ")\n" msgstr ")\n" -#: mach-o.c:3208 +#: mach-o.c:3416 #, c-format msgid " reserved : %08x\n" msgstr " varattu : %08x\n" -#: mach-o.c:3218 -#, c-format +#: mach-o.c:3426 msgid "Segments and Sections:\n" msgstr "Segmentit ja lohkot:\n" -#: mach-o.c:3219 -#, c-format +#: mach-o.c:3427 msgid " #: Segment name Section name Address\n" msgstr " #: Segmenttinimi Lohkonnimi Osoite\n" -#: merge.c:829 +#: merge.c:832 #, c-format msgid "%s: access beyond end of merged section (%ld)" msgstr "%s: pääsy lomitetun lohkon (%ld) lopun yli" @@ -3172,122 +3320,122 @@ msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n" msgstr "%s: ei-tuettu leveämerkkisekvenssi 0x%02X 0x%02X symbolinimen jälkeen alkaen arvolla â€%sâ€\n" -#: mmo.c:1566 +#: mmo.c:1565 #, c-format msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" msgstr "%s: virheellinen mmo-tiedosto: ei-tuettu lopcode â€%dâ€\n" -#: mmo.c:1576 +#: mmo.c:1575 #, c-format msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" msgstr "%s: virheellinen mmo-tiedosto: odotettu YZ = 1 saatiin YZ = %d kohteelle lop_quote\n" -#: mmo.c:1612 +#: mmo.c:1611 #, c-format msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" msgstr "%s: virheellinen mmo-tiedosto: odotettiin z = 1 tai z = 2, saatiin z = %d kohteelle lop_loc\n" -#: mmo.c:1658 +#: mmo.c:1657 #, c-format msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" msgstr "%s: virheellinen mmo-tiedosto: odotettiin z = 1 tai z = 2, saatiin z = %d kohteelle lop_fixo\n" -#: mmo.c:1697 +#: mmo.c:1696 #, c-format msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" msgstr "%s: virheellinen mmo-tiedosto: odotettiin y = 0, saatiin y = %d kohteelle lop_fixrx\n" -#: mmo.c:1706 +#: mmo.c:1705 #, c-format msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" msgstr "%s: virheellinen mmo-tiedosto: odotettiin z = 16 tai z = 24, saatiin z = %d kohteelle lop_fixrx\n" -#: mmo.c:1729 +#: mmo.c:1728 #, 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: virheellinen mmo-tiedosto: operandisanan etutavun on oltava 0 tai 1, saatiin %d kohteelle lop_fixrx\n" -#: mmo.c:1752 +#: mmo.c:1751 #, c-format msgid "%s: cannot allocate file name for file number %d, %d bytes\n" msgstr "%s: ei voi varata tiedostonimeä tiedostonumerolle %d, %d tavua\n" -#: mmo.c:1772 +#: mmo.c:1771 #, c-format msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" msgstr "%s: virheellinen mmo-tiedosto: tiedostonumero %d â€%sâ€, oli jo kirjoitettu arvona â€%sâ€\n" -#: mmo.c:1785 +#: mmo.c:1784 #, c-format msgid "%s: invalid mmo file: file name for number %d was not specified before use\n" msgstr "%s: virheellinen mmo-tiedosto: tiedostonimi numerolle %d ei ole määritelty ennen käyttöä\n" -#: mmo.c:1892 +#: mmo.c:1890 #, c-format msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" msgstr "%s: virheellinen mmo-tiedosto: lop_stab:n kentät y ja z ovat nollasta poikkeavia, y: %d, z: %d\n" -#: mmo.c:1928 +#: mmo.c:1926 #, c-format msgid "%s: invalid mmo file: lop_end not last item in file\n" msgstr "%s: virheellinen mmo-tiedosto: lop_end ei ole viimeinen alkio tiedostossa\n" -#: mmo.c:1941 +#: mmo.c:1939 #, 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: virheellinen mmo-tiedosto: lop_end:n YZ (%ld) ei ole sama kuin tetras-numero edeltävään kohteeseen lop_stab (%ld)\n" -#: mmo.c:2651 +#: mmo.c:2649 #, c-format msgid "%s: invalid symbol table: duplicate symbol `%s'\n" msgstr "%s: virheellinen symbolitaulu: symbolin â€%s†kaksoiskappale\n" -#: mmo.c:2894 +#: mmo.c:2889 #, c-format msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n" msgstr "%s: Virheellinen symbolimäärittely: â€Main†asetettu kohteeseen %s pikemmin kuin aloitusosoitteeseen %s\n" -#: mmo.c:2986 +#: mmo.c:2981 #, 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: varoitus: symbolitaulu liian laaja kohteelle mmo, laajempi kuin 65535 32-bittistä sanaa: %d. Vain â€Main†lähetetään.\n" -#: mmo.c:3031 +#: mmo.c:3026 #, c-format msgid "%s: internal error, symbol table changed size from %d to %d words\n" msgstr "%s: sisäinen virhe, symbolitaulu vaihtoi kokoa %d:sta sanasta %d sanaan\n" -#: mmo.c:3083 +#: mmo.c:3078 #, c-format msgid "%s: internal error, internal register section %s had contents\n" msgstr "%s: sisäinen virhe, sisäisessä rekisterilohkossa %s oli sisältöä\n" -#: mmo.c:3134 +#: mmo.c:3129 #, c-format msgid "%s: no initialized registers; section length 0\n" msgstr "%s: ei alustettuja rekistereitä; lohkopituus 0\n" -#: mmo.c:3140 +#: mmo.c:3135 #, c-format msgid "%s: too many initialized registers; section length %ld\n" msgstr "%s: liian monia alustettuja rekistereitä; lohkopituus %ld\n" -#: mmo.c:3145 +#: mmo.c:3140 #, c-format msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n" msgstr "%s: virheellinen aloitusosoite alustetuille rekistereille pituudeltaan %ld: 0x%lx%08lx\n" -#: oasys.c:881 +#: oasys.c:882 #, c-format msgid "%s: can not represent section `%s' in oasys" msgstr "%s: ei voi edustaa lohkoa â€%s†oasys-lohkossa" -#: osf-core.c:139 +#: osf-core.c:140 #, c-format msgid "Unhandled OSF/1 core file section type %d\n" msgstr "Käsittelemätön OSF/1-käyttöjärjestelmäydintiedoston lohkotyyppi %d\n" -#: pe-mips.c:613 +#: pe-mips.c:607 msgid "%B: `ld -r' not supported with PE MIPS objects\n" msgstr "%B: â€ld -r†ei tuettu â€PE MIPSâ€-objekteilla\n" @@ -3295,25 +3443,25 @@ #. 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:729 +#: pe-mips.c:719 msgid "%B: unimplemented %s\n" msgstr "%B: toteuttamaton %s\n" -#: pe-mips.c:755 +#: pe-mips.c:745 msgid "%B: jump too far away\n" msgstr "%B: hyppy liian kauas\n" -#: pe-mips.c:781 +#: pe-mips.c:771 msgid "%B: bad pair/reflo after refhi\n" msgstr "%B: virheellinen pari/reflo refhi:n jälkeen\n" -#: pei-x86_64.c:465 +#: pei-x86_64.c:444 #, c-format msgid "warning: .pdata section size (%ld) is not a multiple of %d\n" msgstr "varoitus: â€.pdataâ€-lohkokoko (%ld) ei ole %d:n monikerta\n" -#: pei-x86_64.c:469 peigen.c:1620 peigen.c:1799 pepigen.c:1620 pepigen.c:1799 -#: pex64igen.c:1620 pex64igen.c:1799 +#: pei-x86_64.c:448 peigen.c:1618 peigen.c:1801 pepigen.c:1618 pepigen.c:1801 +#: pex64igen.c:1618 pex64igen.c:1801 #, c-format msgid "" "\n" @@ -3322,37 +3470,37 @@ "\n" "Funktiotaulu (tulkittu â€.pdataâ€-lohkosisältö)\n" -#: pei-x86_64.c:471 +#: pei-x86_64.c:450 #, c-format msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" msgstr "vma:\t\t\tAlkuosoite\t Loppuosoite\t Unwind-tiedot\n" #. XXX code yet to be written. -#: peicode.h:752 +#: peicode.h:751 msgid "%B: Unhandled import type; %x" msgstr "%B: Käsittelemätön tuontityyppi; %x" -#: peicode.h:757 +#: peicode.h:756 msgid "%B: Unrecognised import type; %x" msgstr "%B: Tunnistamaton tuontityyppi; %x" -#: peicode.h:771 +#: peicode.h:770 msgid "%B: Unrecognised import name type; %x" msgstr "%B: Tunnistamaton tuontinimityyppi; %x" -#: peicode.h:1154 +#: peicode.h:1162 msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive" msgstr "%B: Tunnistamaton konetyyppi (0x%x) â€Import Library Formatâ€-arkistossa" -#: peicode.h:1166 +#: peicode.h:1174 msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive" msgstr "%B: Tunnistettu, mutta käsittelemätön konetyyppi (0x%x) â€Import Library Formatâ€-arkistossa" -#: peicode.h:1184 +#: peicode.h:1192 msgid "%B: size field is zero in Import Library Format header" msgstr "%B: kokokenttä on nolla â€Import Library Formatâ€-otsakkeessa" -#: peicode.h:1215 +#: peicode.h:1223 msgid "%B: string not null terminated in ILF object file." msgstr "%B: merkkijonoa ei ole päätetty nollaan ILF-objektitiedostossa." @@ -3409,7 +3557,7 @@ msgid "Partition[%d] length = 0x%.8lx (%ld)\n" msgstr "Osio[%d] pituus = 0x%.8lx (%ld)\n" -#: som.c:5114 +#: som.c:5471 #, c-format msgid "" "\n" @@ -3418,7 +3566,7 @@ "\n" "Suoritettavan tiedoston apuotsake\n" -#: som.c:5417 +#: som.c:5776 msgid "som_sizeof_headers unimplemented" msgstr "som_sizeof_headers ei ole toteutettu" @@ -3438,468 +3586,2131 @@ msgid "Unsupported .stab relocation" msgstr "â€Ei-tuettu .stabâ€-sijoitus" -#: vms-gsd.c:350 -#, c-format -msgid "bfd_make_section (%s) failed" -msgstr "bfd_make_section (%s) ei onnistunut" - -#: vms-gsd.c:365 +#: vms-alpha.c:1287 #, c-format -msgid "bfd_set_section_flags (%s, %x) failed" -msgstr "bfd_set_section_flags (%s, %x) ei onnistunut" - -#: vms-gsd.c:399 -#, c-format -msgid "Size mismatch section %s=%lx, %s=%lx" -msgstr "Kokotäsmäämätön lohko %s=%lx, %s=%lx" - -#: vms-gsd.c:754 -#, c-format -msgid "Unknown GSD/EGSD subtype %d" -msgstr "tuntematon GSD/EGSD-alityyppi %d" - -#: vms-hdr.c:364 -msgid "Object module NOT error-free !\n" -msgstr "Objektimoduli EI ole virheetön !\n" - -#: vms-hdr.c:878 -#, c-format -msgid "unknown source command %d" -msgstr "tuntematon lähdekomento %d" - -#: vms-hdr.c:951 -msgid "DST_S_C_SET_LINUM_INCR not implemented" -msgstr "DST_S_C_SET_LINUM_INCR ei ole toteutettu" - -#: vms-hdr.c:957 -msgid "DST_S_C_SET_LINUM_INCR_W not implemented" -msgstr "DST_S_C_SET_LINUM_INCR_W ei ole toteutettu" - -#: vms-hdr.c:963 -msgid "DST_S_C_RESET_LINUM_INCR not implemented" -msgstr "DST_S_C_RESET_LINUM_INCR ei ole toteutettu" - -#: vms-hdr.c:969 -msgid "DST_S_C_BEG_STMT_MODE not implemented" -msgstr "DST_S_C_BEG_STMT_MODE ei ole toteutettu" - -#: vms-hdr.c:975 -msgid "DST_S_C_END_STMT_MODE not implemented" -msgstr "DST_S_C_END_STMT_MODE ei ole toteutettu" - -#: vms-hdr.c:1008 -msgid "DST_S_C_SET_PC not implemented" -msgstr "DST_S_C_SET_PC ei ole toteutettu" - -#: vms-hdr.c:1014 -msgid "DST_S_C_SET_PC_W not implemented" -msgstr "DST_S_C_SET_PC_W ei ole toteutettu" - -#: vms-hdr.c:1020 -msgid "DST_S_C_SET_PC_L not implemented" -msgstr "DST_S_C_SET_PC_L ei ole toteutettu" - -#: vms-hdr.c:1026 -msgid "DST_S_C_SET_STMTNUM not implemented" -msgstr "DST_S_C_SET_STMTNUM ei ole toteutettu" - -#: vms-hdr.c:1079 -#, c-format -msgid "unknown line command %d" -msgstr "tuntematon rivikomento %d" +msgid "Unknown EGSD subtype %d" +msgstr "Tuntematon EGSD-alityyppi %d" -#: vms-misc.c:588 +#: vms-alpha.c:1318 #, c-format msgid "Stack overflow (%d) in _bfd_vms_push" msgstr "Pinon ylivuoto (%d) kohteessa _bfd_vms_push" -#: vms-misc.c:603 +#: vms-alpha.c:1331 msgid "Stack underflow in _bfd_vms_pop" msgstr "Pinon ylivuoto kohteessa _bfd_vms_pop" -#: vms-misc.c:844 -msgid "_bfd_vms_output_counted called with zero bytes" -msgstr "_bfd_vms_output_counted kutsuttu nollatavuilla" - -#: vms-misc.c:849 -msgid "_bfd_vms_output_counted called with too many bytes" -msgstr "_bfd_vms_output_counted kutsuttu liian monilla tavuilla" - -#: vms-misc.c:967 -#, c-format -msgid "Symbol %s replaced by %s\n" -msgstr "Symboli %s korvattu kohteella %s\n" - -#: vms-misc.c:1026 -#, c-format -msgid "failed to enter %s" -msgstr "ei onnistuttu kirjoittamaan %s" - -#: vms-tir.c:83 -msgid "No Mem !" -msgstr "Ei muistia !" - #. These names have not yet been added to this switch statement. -#: vms-tir.c:346 +#: vms-alpha.c:1568 #, c-format msgid "unknown ETIR command %d" msgstr "tuntematon ETIR-komento %d" -#: vms-tir.c:440 +#: vms-alpha.c:1755 #, c-format msgid "bad section index in %s" msgstr "virheellinen lohkoindeksi kohteessa %s" -#: vms-tir.c:459 +#: vms-alpha.c:1768 #, c-format msgid "unsupported STA cmd %s" msgstr "ei-tuettu STA-komento %s" -#: vms-tir.c:464 vms-tir.c:1304 -#, c-format -msgid "reserved STA cmd %d" -msgstr "varattu STA-komento %d" - +#. Insert field. #. Unsigned shift. #. Rotate. #. Redefine symbol to current location. #. Define a literal. -#: vms-tir.c:655 vms-tir.c:774 vms-tir.c:894 vms-tir.c:1624 +#: vms-alpha.c:1944 vms-alpha.c:1975 vms-alpha.c:2222 #, c-format msgid "%s: not supported" msgstr "%s: ei tuettu" -#: vms-tir.c:661 vms-tir.c:1481 +#: vms-alpha.c:1950 #, c-format msgid "%s: not implemented" msgstr "%s: ei toteutettu" -#: vms-tir.c:666 vms-tir.c:1485 +#: vms-alpha.c:2206 #, c-format -msgid "reserved STO cmd %d" -msgstr "varattu STO-komento %d" +msgid "invalid use of %s with contexts" +msgstr "virheellinen %s-käyttö sisällöillä" -#: vms-tir.c:789 vms-tir.c:1629 +#: vms-alpha.c:2240 #, c-format -msgid "reserved OPR cmd %d" -msgstr "varattu OPR-komento %d" +msgid "reserved cmd %d" +msgstr "varattu komento %d" + +#: vms-alpha.c:2325 +msgid "Object module NOT error-free !\n" +msgstr "Objektimoduli EI ole virheetön !\n" -#: vms-tir.c:852 vms-tir.c:1693 +#: vms-alpha.c:2754 #, c-format -msgid "reserved CTL cmd %d" -msgstr "varattu CTL-komento %d" +msgid "Symbol %s replaced by %s\n" +msgstr "Symboli %s korvattu kohteella %s\n" -#: vms-tir.c:966 +#: vms-alpha.c:3757 #, c-format -msgid "reserved STC cmd %d" -msgstr "varattu STC-komento %d" +msgid "SEC_RELOC with no relocs in section %s" +msgstr "SEC_RELOC ilman relocs-tietueita lohkossa %s" -#. stack byte from image -#. arg: none. -#: vms-tir.c:1212 -msgid "stack-from-image not implemented" -msgstr "stack-from-image ei ole toteutettu" +#: vms-alpha.c:3810 vms-alpha.c:4041 +#, c-format +msgid "Size error in section %s" +msgstr "Kokovirhe lohkossa %s" -#: vms-tir.c:1230 -msgid "stack-entry-mask not fully implemented" -msgstr "stack-entry-mask ei ole täysin toteutettu" +#: vms-alpha.c:3980 +msgid "Spurious ALPHA_R_BSR reloc" +msgstr "Väärä ALPHA_R_BSR reloc-tietue" -#. 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:1244 -msgid "PASSMECH not fully implemented" -msgstr "PASSMECH ei ole täysin toteutettu" +#: vms-alpha.c:4028 +#, c-format +msgid "Unhandled relocation %s" +msgstr "Käsittelemätön sijoitus %s" -#: vms-tir.c:1263 -msgid "stack-local-symbol not fully implemented" -msgstr "stack-local-symbol ei ole täysin toteutettu" +#: vms-alpha.c:4318 +#, c-format +msgid "unknown source command %d" +msgstr "tuntematon lähdekomento %d" -#: vms-tir.c:1276 -msgid "stack-literal not fully implemented" -msgstr "stack-literal ei ole täysin toteutettu" +#: vms-alpha.c:4379 +msgid "DST__K_SET_LINUM_INCR not implemented" +msgstr "DST__K_SET_LINUM_INCR ei ole toteutettu" + +#: vms-alpha.c:4385 +msgid "DST__K_SET_LINUM_INCR_W not implemented" +msgstr "DST__K_SET_LINUM_INCR_W ei ole toteutettu" + +#: vms-alpha.c:4391 +msgid "DST__K_RESET_LINUM_INCR not implemented" +msgstr "DST__K_RESET_LINUM_INCR ei ole toteutettu" + +#: vms-alpha.c:4397 +msgid "DST__K_BEG_STMT_MODE not implemented" +msgstr "DST__K_BEG_STMT_MODE ei ole toteutettu" + +#: vms-alpha.c:4403 +msgid "DST__K_END_STMT_MODE not implemented" +msgstr "DST__K_END_STMT_MODE ei ole toteutettu" + +#: vms-alpha.c:4430 +msgid "DST__K_SET_PC not implemented" +msgstr "DST__K_SET_PC ei ole toteutettu" + +#: vms-alpha.c:4436 +msgid "DST__K_SET_PC_W not implemented" +msgstr "DST__K_SET_PC_W ei ole toteutettu" + +#: vms-alpha.c:4442 +msgid "DST__K_SET_PC_L not implemented" +msgstr "DST__K_SET_PC_L ei ole toteutettu" + +#: vms-alpha.c:4448 +msgid "DST__K_SET_STMTNUM not implemented" +msgstr "DST__K_SET_STMTNUM ei ole toteutettu" -#: vms-tir.c:1297 -msgid "stack-local-symbol-entry-point-mask not fully implemented" -msgstr "stack-local-symbol-entry-point-mask ei ole täysin toteutettu" +#: vms-alpha.c:4491 +#, c-format +msgid "unknown line command %d" +msgstr "tuntematon rivikomento %d" -#: vms-tir.c:1571 vms-tir.c:1583 vms-tir.c:1595 vms-tir.c:1607 vms-tir.c:1672 -#: vms-tir.c:1680 vms-tir.c:1688 +#: vms-alpha.c:4938 vms-alpha.c:4955 vms-alpha.c:4969 vms-alpha.c:4984 +#: vms-alpha.c:4996 vms-alpha.c:5007 vms-alpha.c:5019 #, c-format -msgid "%s: not fully implemented" -msgstr "%s: ei ole täysin toteutettu" +msgid "Unknown reloc %s + %s" +msgstr "Tuntematon reloc-tietue %s + %s" -#: vms-tir.c:1746 +#: vms-alpha.c:5074 #, c-format -msgid "obj code %d not found" -msgstr "obj-koodia %d ei löytynyt" +msgid "Unknown reloc %s" +msgstr "Tuntematon reloc-tietue %s" -#: vms-tir.c:2019 +#: vms-alpha.c:5087 +msgid "Invalid section index in ETIR" +msgstr "virheellinen lohkoindeksi kohteessa ETIR" + +#: vms-alpha.c:5134 #, c-format -msgid "Reloc size error in section %s" -msgstr "Reloc-kokovirhe lohkossa %s" +msgid "Unknown symbol in command %s" +msgstr "Tuntematon symboli komennossa %s" -#: vms-tir.c:2112 vms-tir.c:2129 vms-tir.c:2147 vms-tir.c:2159 vms-tir.c:2170 -#: vms-tir.c:2182 +#: vms-alpha.c:5649 #, c-format -msgid "Unknown reloc %s + %s" -msgstr "Tuntematon reloc-tietue %s + %s" +msgid " EMH %u (len=%u): " +msgstr " EMH %u (pituus=%u): " -#: vms-tir.c:2249 +#: vms-alpha.c:5658 #, c-format -msgid "Unknown symbol %s in command %s" -msgstr "Tuntematon symboli %s komennossa %s" +msgid "Module header\n" +msgstr "Moduliotsake\n" -#: vms-tir.c:2504 +#: vms-alpha.c:5659 #, c-format -msgid "SEC_RELOC with no relocs in section %s" -msgstr "SEC_RELOC ilman relocs-tietueita lohkossa %s" +msgid " structure level: %u\n" +msgstr " tietuetaso: %u\n" -#: vms-tir.c:2556 vms-tir.c:2783 +#: vms-alpha.c:5660 #, c-format -msgid "Size error in section %s" -msgstr "Kokovirhe lohkossa %s" +msgid " max record size: %u\n" +msgstr " tietueen enimmäiskoko: %u\n" -#: vms-tir.c:2725 -msgid "Spurious ALPHA_R_BSR reloc" -msgstr "Väärä ALPHA_R_BSR reloc-tietue" +#: vms-alpha.c:5663 +#, c-format +msgid " module name : %.*s\n" +msgstr " modulinimi : %.*s\n" -#: vms-tir.c:2770 +#: vms-alpha.c:5665 #, c-format -msgid "Unhandled relocation %s" -msgstr "Käsittelemätön sijoitus %s" +msgid " module version : %.*s\n" +msgstr " moduliversio : %.*s\n" -#: xcofflink.c:836 +#: vms-alpha.c:5667 #, c-format -msgid "%s: XCOFF shared object when not producing XCOFF output" -msgstr "%s: XCOFF jaettu objekti kun ei tuoteta XCOFF-tulostetta" +msgid " compile date : %.17s\n" +msgstr " käännöspäivämäärä : %.17s\n" -#: xcofflink.c:857 +#: vms-alpha.c:5672 #, c-format -msgid "%s: dynamic object with no .loader section" -msgstr "%s: dynaaminen objekti ilman â€.loaderâ€-lohkoa" +msgid "Language Processor Name\n" +msgstr "Kielisuorittimen nimi\n" -#: xcofflink.c:1415 -msgid "%B: `%s' has line numbers but no enclosing section" -msgstr "%B: â€%s†on rivinumerot, mutta ei sulkevaa lohkoa" +#: vms-alpha.c:5673 +#, c-format +msgid " language name: %.*s\n" +msgstr " kielinimi: %.*s\n" -#: xcofflink.c:1467 -msgid "%B: class %d symbol `%s' has no aux entries" -msgstr "%B: luokassa %d symbolissa â€%s†ei ole aputulokohtia" +#: vms-alpha.c:5680 +#, c-format +msgid "Source Files Header\n" +msgstr "Lähdetiedostot-otsake\n" -#: xcofflink.c:1489 -msgid "%B: symbol `%s' has unrecognized csect type %d" -msgstr "%B: symbolissa â€%s†on tunnistamaton ohjauslohkotyyppi %d" +#: vms-alpha.c:5681 +#, c-format +msgid " file: %.*s\n" +msgstr " tiedosto: %.*s\n" -#: xcofflink.c:1501 -msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" -msgstr "%B: virheellinen XTY_ER-symboli â€%sâ€: luokka %d ohjauslohkonumero %d ohjauslohkopituus %d" +#: vms-alpha.c:5688 +#, c-format +msgid "Title Text Header\n" +msgstr "Otsikkotekstiotsake\n" -#: xcofflink.c:1530 -msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" -msgstr "%B: XMC_TC0-symboli â€%s†on luokka %d ohjauslohkopituus %d" +#: vms-alpha.c:5689 +#, c-format +msgid " title: %.*s\n" +msgstr " otsikko: %.*s\n" -#: xcofflink.c:1676 -msgid "%B: csect `%s' not in enclosing section" -msgstr "%B: ohjauslohkoa â€%s†ei ole sulkeutuvassa lohkossa" +#: vms-alpha.c:5696 +#, c-format +msgid "Copyright Header\n" +msgstr "Copyright-otsake\n" -#: xcofflink.c:1783 -msgid "%B: misplaced XTY_LD `%s'" -msgstr "%B: väärin sijoitettu XTY_LD â€%sâ€" +#: vms-alpha.c:5697 +#, c-format +msgid " copyright: %.*s\n" +msgstr " copyright: %.*s\n" -#: xcofflink.c:2102 -msgid "%B: reloc %s:%d not in csect" -msgstr "%B: reloc-tietue %s:%d ei ole ohjauslohkossa" +#: vms-alpha.c:5703 +#, c-format +msgid "unhandled emh subtype %u\n" +msgstr "käsittelemätön emh-alityyppi %u\n" -#: xcofflink.c:3177 +#: vms-alpha.c:5713 #, c-format -msgid "%s: no such symbol" -msgstr "%s: tuntematon symboli" +msgid " EEOM (len=%u):\n" +msgstr " EEOM (pituus=%u):\n" -#: xcofflink.c:3282 +#: vms-alpha.c:5714 #, c-format -msgid "warning: attempt to export undefined symbol `%s'" -msgstr "varoitus: yritettiin viedä määrittelemätön symboli â€%sâ€" +msgid " number of cond linkage pairs: %u\n" +msgstr " ehdollisten linkitysparien lukumäärä: %u\n" -#: xcofflink.c:3664 -msgid "error: undefined symbol __rtinit" -msgstr "virhe: määrittelemätön symboli â€__rtinitâ€" +#: vms-alpha.c:5716 +#, c-format +msgid " completion code: %u\n" +msgstr " täydentämiskoodi: %u\n" -#: xcofflink.c:4041 -msgid "%B: loader reloc in unrecognized section `%s'" -msgstr "%B: â€loader relocâ€-tietue tunnistamattomassa lohkossa â€%s" +#: vms-alpha.c:5720 +#, c-format +msgid " transfer addr flags: 0x%02x\n" +msgstr " siirto-osoiteliput: 0x%02x\n" + +#: vms-alpha.c:5721 +#, c-format +msgid " transfer addr psect: %u\n" +msgstr " siirrososoite psect: %u\n" + +#: vms-alpha.c:5723 +#, c-format +msgid " transfer address : 0x%08x\n" +msgstr " siirto-osoite : 0x%08x\n" + +# Käännettäväksi on merkitty monia (vianjäljitys)symboleja ja vastaavia, joita ei oikeastaan pitäisi suomentaa. Joissakin kohdissa vain selväkieliset sanat on suomennettu. +#: vms-alpha.c:5732 +msgid " WEAK" +msgstr " WEAK" + +#: vms-alpha.c:5734 +msgid " DEF" +msgstr " DEF" + +#: vms-alpha.c:5736 +msgid " UNI" +msgstr " UNI" + +#: vms-alpha.c:5738 vms-alpha.c:5759 +msgid " REL" +msgstr " REL" + +#: vms-alpha.c:5740 +msgid " COMM" +msgstr " COMM" + +#: vms-alpha.c:5742 +msgid " VECEP" +msgstr " VECEP" + +#: vms-alpha.c:5744 +msgid " NORM" +msgstr " NORM" + +#: vms-alpha.c:5746 +msgid " QVAL" +msgstr " QVAL" + +#: vms-alpha.c:5753 +msgid " PIC" +msgstr " PIC" + +#: vms-alpha.c:5755 +msgid " LIB" +msgstr " LIB" + +#: vms-alpha.c:5757 +msgid " OVR" +msgstr " OVR" + +#: vms-alpha.c:5761 +msgid " GBL" +msgstr " GBL" + +#: vms-alpha.c:5763 +msgid " SHR" +msgstr " SHR" + +#: vms-alpha.c:5765 +msgid " EXE" +msgstr " EXE" + +#: vms-alpha.c:5767 +msgid " RD" +msgstr " RD" + +#: vms-alpha.c:5769 +msgid " WRT" +msgstr " WRT" + +#: vms-alpha.c:5771 +msgid " VEC" +msgstr " VEC" + +#: vms-alpha.c:5773 +msgid " NOMOD" +msgstr " NOMOD" + +#: vms-alpha.c:5775 +msgid " COM" +msgstr " COM" + +#: vms-alpha.c:5777 +msgid " 64B" +msgstr " 64B" + +#: vms-alpha.c:5786 +#, c-format +msgid " EGSD (len=%u):\n" +msgstr " EGSD (pituus=%u):\n" + +#: vms-alpha.c:5798 +#, c-format +msgid " EGSD entry %2u (type: %u, len: %u): " +msgstr " EGSD tulopiste %2u (tyyppi: %u, pituus: %u): " + +#: vms-alpha.c:5810 +#, c-format +msgid "PSC - Program section definition\n" +msgstr "PSC - Ohjelmalohkomäärittely\n" + +#: vms-alpha.c:5811 vms-alpha.c:5828 +#, c-format +msgid " alignment : 2**%u\n" +msgstr " tasaus : 2**%u\n" + +#: vms-alpha.c:5812 vms-alpha.c:5829 +#, c-format +msgid " flags : 0x%04x" +msgstr " liput : 0x%04x" + +#: vms-alpha.c:5816 +#, c-format +msgid " alloc (len): %u (0x%08x)\n" +msgstr " alloc (pituus): %u (0x%08x)\n" + +#: vms-alpha.c:5817 vms-alpha.c:5874 vms-alpha.c:5923 +#, c-format +msgid " name : %.*s\n" +msgstr " nimi : %.*s\n" + +#: vms-alpha.c:5827 +#, c-format +msgid "SPSC - Shared Image Program section def\n" +msgstr "SPSC - Jaettu vedosohjelmalohkomäärittely\n" + +#: vms-alpha.c:5833 +#, c-format +msgid " alloc (len) : %u (0x%08x)\n" +msgstr " alloc (pitus) : %u (0x%08x)\n" + +#: vms-alpha.c:5834 +#, c-format +msgid " image offset : 0x%08x\n" +msgstr " vedossiirros : 0x%08x\n" + +#: vms-alpha.c:5836 +#, c-format +msgid " symvec offset : 0x%08x\n" +msgstr " symvec-siirros : 0x%08x\n" + +#: vms-alpha.c:5838 +#, c-format +msgid " name : %.*s\n" +msgstr " nimi : %.*s\n" + +#: vms-alpha.c:5851 +#, c-format +msgid "SYM - Global symbol definition\n" +msgstr "SYM - Yleinen symbolimäärittely\n" + +#: vms-alpha.c:5852 vms-alpha.c:5912 vms-alpha.c:5933 vms-alpha.c:5952 +#, c-format +msgid " flags: 0x%04x" +msgstr " liput: 0x%04x" + +#: vms-alpha.c:5855 +#, c-format +msgid " psect offset: 0x%08x\n" +msgstr " psect-siirros: 0x%08x\n" + +#: vms-alpha.c:5859 +#, c-format +msgid " code address: 0x%08x\n" +msgstr " koodiosoite: 0x%08x\n" + +#: vms-alpha.c:5861 +#, c-format +msgid " psect index for entry point : %u\n" +msgstr " psect-indeksi tulokohdalle : %u\n" + +#: vms-alpha.c:5864 vms-alpha.c:5940 vms-alpha.c:5959 +#, c-format +msgid " psect index : %u\n" +msgstr " psect-indeksi : %u\n" + +#: vms-alpha.c:5866 vms-alpha.c:5942 vms-alpha.c:5961 +#, c-format +msgid " name : %.*s\n" +msgstr " nimi : %.*s\n" + +#: vms-alpha.c:5873 +#, c-format +msgid "SYM - Global symbol reference\n" +msgstr "SYM - Yleinen symboliviite\n" + +#: vms-alpha.c:5885 +#, c-format +msgid "IDC - Ident Consistency check\n" +msgstr "IDC - Ident-johdonmukaisuustarkistus\n" + +#: vms-alpha.c:5886 +#, c-format +msgid " flags : 0x%08x" +msgstr " liput : 0x%08x" + +#: vms-alpha.c:5890 +#, c-format +msgid " id match : %x\n" +msgstr " tunnistetäsmäys: %x\n" + +#: vms-alpha.c:5892 +#, c-format +msgid " error severity: %x\n" +msgstr " virhevakavuus : %x\n" + +#: vms-alpha.c:5895 +#, c-format +msgid " entity name : %.*s\n" +msgstr " yksilönimi : %.*s\n" + +#: vms-alpha.c:5897 +#, c-format +msgid " object name : %.*s\n" +msgstr " objektinimi : %.*s\n" + +#: vms-alpha.c:5900 +#, c-format +msgid " binary ident : 0x%08x\n" +msgstr " binaari-ident : 0x%08x\n" + +#: vms-alpha.c:5903 +#, c-format +msgid " ascii ident : %.*s\n" +msgstr " ascii-ident : %.*s\n" + +#: vms-alpha.c:5911 +#, c-format +msgid "SYMG - Universal symbol definition\n" +msgstr "SYMG - Yleinen symbolimäärittely\n" + +#: vms-alpha.c:5915 +#, c-format +msgid " symbol vector offset: 0x%08x\n" +msgstr " symbolivektorisiirros: 0x%08x\n" + +#: vms-alpha.c:5917 +#, c-format +msgid " entry point: 0x%08x\n" +msgstr " tulokohta: 0x%08x\n" + +#: vms-alpha.c:5919 +#, c-format +msgid " proc descr : 0x%08x\n" +msgstr " ohjelmakuvaus : 0x%08x\n" + +#: vms-alpha.c:5921 +#, c-format +msgid " psect index: %u\n" +msgstr " psect-indeksi : %u\n" + +#: vms-alpha.c:5932 +#, c-format +msgid "SYMV - Vectored symbol definition\n" +msgstr "SYMV - Vektoroitu symbolimäärittely\n" + +#: vms-alpha.c:5936 +#, c-format +msgid " vector : 0x%08x\n" +msgstr " vektori : 0x%08x\n" + +#: vms-alpha.c:5938 vms-alpha.c:5957 +#, c-format +msgid " psect offset: %u\n" +msgstr " psect-siirros: %u\n" + +#: vms-alpha.c:5951 +#, c-format +msgid "SYMM - Global symbol definition with version\n" +msgstr "SYMM - Yleinen symbolimäärittely versiolla\n" + +#: vms-alpha.c:5955 +#, c-format +msgid " version mask: 0x%08x\n" +msgstr " versiopeite : 0x%08x\n" + +#: vms-alpha.c:5966 +#, c-format +msgid "unhandled egsd entry type %u\n" +msgstr "käsittelemätön egsd-tulokohtatyyppi %u\n" + +#: vms-alpha.c:6000 +#, c-format +msgid " linkage index: %u, replacement insn: 0x%08x\n" +msgstr " linkitysindeksi: %u, korvauskäsky: 0x%08x\n" + +#: vms-alpha.c:6003 +#, c-format +msgid " psect idx 1: %u, offset 1: 0x%08x %08x\n" +msgstr " psect idx 1: %u, siirros 1: 0x%08x %08x\n" + +#: vms-alpha.c:6007 +#, c-format +msgid " psect idx 2: %u, offset 2: 0x%08x %08x\n" +msgstr " psect idx 2: %u, siirros 2: 0x%08x %08x\n" + +#: vms-alpha.c:6012 +#, c-format +msgid " psect idx 3: %u, offset 3: 0x%08x %08x\n" +msgstr " psect idx 3: %u, siirros 3: 0x%08x %08x\n" + +#: vms-alpha.c:6017 +#, c-format +msgid " global name: %.*s\n" +msgstr " yleisnimi: %.*s\n" + +#: vms-alpha.c:6027 +#, c-format +msgid " %s (len=%u+%u):\n" +msgstr " %s (pituus=%u+%u):\n" + +#: vms-alpha.c:6042 +#, c-format +msgid " (type: %3u, size: 4+%3u): " +msgstr " (tyyppi: %3u, koko: 4+%3u): " + +#: vms-alpha.c:6046 +#, c-format +msgid "STA_GBL (stack global) %.*s\n" +msgstr "STA_GBL (pino yleinen) %.*s\n" + +#: vms-alpha.c:6050 +#, c-format +msgid "STA_LW (stack longword) 0x%08x\n" +msgstr "STA_LW (pino longword) 0x%08x\n" + +#: vms-alpha.c:6054 +#, c-format +msgid "STA_QW (stack quadword) 0x%08x %08x\n" +msgstr "STA_QW (pino quadword) 0x%08x %08x\n" + +#: vms-alpha.c:6059 +#, c-format +msgid "STA_PQ (stack psect base + offset)\n" +msgstr "STA_PQ (pino psect-kanta + siirros)\n" + +#: vms-alpha.c:6060 +#, c-format +msgid " psect: %u, offset: 0x%08x %08x\n" +msgstr " psect: %u, siirros: 0x%08x %08x\n" + +#: vms-alpha.c:6066 +#, c-format +msgid "STA_LI (stack literal)\n" +msgstr "STA_LI (pinoliteraali)\n" + +#: vms-alpha.c:6069 +#, c-format +msgid "STA_MOD (stack module)\n" +msgstr "STA_MOD (pinomoduli)\n" + +#: vms-alpha.c:6072 +#, c-format +msgid "STA_CKARG (compare procedure argument)\n" +msgstr "STA_CKARG (vertaa proseduuriargumenttia)\n" + +#: vms-alpha.c:6076 +#, c-format +msgid "STO_B (store byte)\n" +msgstr "STO_B (tallenna byte)\n" + +#: vms-alpha.c:6079 +#, c-format +msgid "STO_W (store word)\n" +msgstr "STO_W (tallenna word)\n" + +#: vms-alpha.c:6082 +#, c-format +msgid "STO_LW (store longword)\n" +msgstr "STO_LW (tallenna longword)\n" + +#: vms-alpha.c:6085 +#, c-format +msgid "STO_QW (store quadword)\n" +msgstr "STO_QW (tallenna quadword)\n" + +#: vms-alpha.c:6091 +#, c-format +msgid "STO_IMMR (store immediate repeat) %u bytes\n" +msgstr "STO_IMMR (tallenna välitön toisto) %u tavua\n" + +#: vms-alpha.c:6098 +#, c-format +msgid "STO_GBL (store global) %.*s\n" +msgstr "STO_GBL (tallenna yleinen) %.*s\n" + +#: vms-alpha.c:6102 +#, c-format +msgid "STO_CA (store code address) %.*s\n" +msgstr "STO_CA (tallenna koodiosoite) %.*s\n" + +#: vms-alpha.c:6106 +#, c-format +msgid "STO_RB (store relative branch)\n" +msgstr "STO_RB (tallenna suhteellinen haarautuminen)\n" + +#: vms-alpha.c:6109 +#, c-format +msgid "STO_AB (store absolute branch)\n" +msgstr "STO_AB (tallenna absoluuttinen haarautuminen)\n" + +#: vms-alpha.c:6112 +#, c-format +msgid "STO_OFF (store offset to psect)\n" +msgstr "STO_OFF (tallenna siirros kohteeseen psect)\n" + +#: vms-alpha.c:6118 +#, c-format +msgid "STO_IMM (store immediate) %u bytes\n" +msgstr "STO_IMM (tallenna välitön) %u tavua\n" + +#: vms-alpha.c:6125 +#, c-format +msgid "STO_GBL_LW (store global longword) %.*s\n" +msgstr "STO_GBL_LW (tallenna yleinen longword) %.*s\n" + +#: vms-alpha.c:6129 +#, c-format +msgid "STO_OFF (store LP with procedure signature)\n" +msgstr "STO_OFF (tallenna LP-proseduurituntomerkillä)\n" + +#: vms-alpha.c:6132 +#, c-format +msgid "STO_BR_GBL (store branch global) *todo*\n" +msgstr "STO_BR_GBL (tallenna haarautuminen yleinen) *todo*\n" + +#: vms-alpha.c:6135 +#, c-format +msgid "STO_BR_PS (store branch psect + offset) *todo*\n" +msgstr "STO_BR_PS (tallenna haarautuminen psect + siirros) *todo*\n" + +#: vms-alpha.c:6139 +#, c-format +msgid "OPR_NOP (no-operation)\n" +msgstr "OPR_NOP (ei-toimintoa)\n" + +#: vms-alpha.c:6142 +#, c-format +msgid "OPR_ADD (add)\n" +msgstr "OPR_ADD (lisää)\n" + +#: vms-alpha.c:6145 +#, c-format +msgid "OPR_SUB (substract)\n" +msgstr "OPR_SUB (vähennä)\n" + +#: vms-alpha.c:6148 +#, c-format +msgid "OPR_MUL (multiply)\n" +msgstr "OPR_MUL (kerro)\n" + +#: vms-alpha.c:6151 +#, c-format +msgid "OPR_DIV (divide)\n" +msgstr "OPR_DIV (jaa)\n" + +#: vms-alpha.c:6154 +#, c-format +msgid "OPR_AND (logical and)\n" +msgstr "OPR_AND (looginen ja)\n" + +#: vms-alpha.c:6157 +#, c-format +msgid "OPR_IOR (logical inclusive or)\n" +msgstr "OPR_IOR (looginen kattava tai)\n" + +#: vms-alpha.c:6160 +#, c-format +msgid "OPR_EOR (logical exclusive or)\n" +msgstr "OPR_EOR (loogisesti poissulkeva tai)\n" + +#: vms-alpha.c:6163 +#, c-format +msgid "OPR_NEG (negate)\n" +msgstr "OPR_NEG (kieltävä)\n" + +#: vms-alpha.c:6166 +#, c-format +msgid "OPR_COM (complement)\n" +msgstr "OPR_COM (komplementti)\n" + +#: vms-alpha.c:6169 +#, c-format +msgid "OPR_INSV (insert field)\n" +msgstr "OPR_INSV (lisää kenttä)\n" + +#: vms-alpha.c:6172 +#, c-format +msgid "OPR_ASH (arithmetic shift)\n" +msgstr "OPR_ASH (aritmeettinen sivuttaissiirto)\n" + +#: vms-alpha.c:6175 +#, c-format +msgid "OPR_USH (unsigned shift)\n" +msgstr "OPR_USH (etumerkitön sivuttaissiirto)\n" + +#: vms-alpha.c:6178 +#, c-format +msgid "OPR_ROT (rotate)\n" +msgstr "OPR_ROT (pyöritä)\n" + +#: vms-alpha.c:6181 +#, c-format +msgid "OPR_SEL (select)\n" +msgstr "OPR_SEL (valitse)\n" + +#: vms-alpha.c:6184 +#, c-format +msgid "OPR_REDEF (redefine symbol to curr location)\n" +msgstr "OPR_REDEF (määritä symboli uudelleen nykyiseen paikkaan)\n" + +#: vms-alpha.c:6187 +#, c-format +msgid "OPR_REDEF (define a literal)\n" +msgstr "OPR_REDEF (määritä literaali)\n" + +#: vms-alpha.c:6191 +#, c-format +msgid "STC_LP (store cond linkage pair)\n" +msgstr "STC_LP (tallenna ehdollinen linkityspari)\n" + +#: vms-alpha.c:6195 +#, c-format +msgid "STC_LP_PSB (store cond linkage pair + signature)\n" +msgstr "STC_LP_PSB (tallenna ehdollinen linkityspari + tuntomerkki)\n" + +#: vms-alpha.c:6196 +#, c-format +msgid " linkage index: %u, procedure: %.*s\n" +msgstr " linkitysindeksi: %u, proseduuri: %.*s\n" + +#: vms-alpha.c:6199 +#, c-format +msgid " signature: %.*s\n" +msgstr " tuntomerkki: %.*s\n" + +#: vms-alpha.c:6202 +#, c-format +msgid "STC_GBL (store cond global)\n" +msgstr "STC_GBL (tallenna ehdollinen yleinen)\n" + +#: vms-alpha.c:6203 +#, c-format +msgid " linkage index: %u, global: %.*s\n" +msgstr " linkitysindeksi: %u, yleinen: %.*s\n" + +#: vms-alpha.c:6207 +#, c-format +msgid "STC_GCA (store cond code address)\n" +msgstr "STC_GCA (tallenna ehdollinen koodiosoite)\n" + +#: vms-alpha.c:6208 +#, c-format +msgid " linkage index: %u, procedure name: %.*s\n" +msgstr " linkitysindeksi: %u, proseduurinimi: %.*s\n" + +#: vms-alpha.c:6212 +#, c-format +msgid "STC_PS (store cond psect + offset)\n" +msgstr "STC_PS (tallenna ehdollinen psect + siirros)\n" + +#: vms-alpha.c:6214 +#, c-format +msgid " linkage index: %u, psect: %u, offset: 0x%08x %08x\n" +msgstr " linkitysindeksi: %u, psect: %u, siirros: 0x%08x %08x\n" + +#: vms-alpha.c:6221 +#, c-format +msgid "STC_NOP_GBL (store cond NOP at global addr)\n" +msgstr "STC_NOP_GBL (tallenna ehdollinen NOP yleisosoitteessa)\n" + +#: vms-alpha.c:6225 +#, c-format +msgid "STC_NOP_PS (store cond NOP at psect + offset)\n" +msgstr "STC_NOP_PS (tallenna ehdollinen NOP kohteessa psect + siirros)\n" + +#: vms-alpha.c:6229 +#, c-format +msgid "STC_BSR_GBL (store cond BSR at global addr)\n" +msgstr "STC_BSR_GBL (tallenna ehdollinen BSR yleisosoitteessa)\n" + +#: vms-alpha.c:6233 +#, c-format +msgid "STC_BSR_PS (store cond BSR at psect + offset)\n" +msgstr "STC_BSR_PS (tallenna ehdollinen BSR kohteessa psect + siirros)\n" + +#: vms-alpha.c:6237 +#, c-format +msgid "STC_LDA_GBL (store cond LDA at global addr)\n" +msgstr "STC_LDA_GBL (tallenna ehdollinen LDA yleisosoitteessa)\n" + +#: vms-alpha.c:6241 +#, c-format +msgid "STC_LDA_PS (store cond LDA at psect + offset)\n" +msgstr "STC_LDA_PS (tallenna ehdollinen LDA kohteessa psect + siirros)\n" + +#: vms-alpha.c:6245 +#, c-format +msgid "STC_BOH_GBL (store cond BOH at global addr)\n" +msgstr "STC_BOH_GBL (tallenna ehdollinen BOH yleisosoitteessa)\n" + +#: vms-alpha.c:6249 +#, c-format +msgid "STC_BOH_PS (store cond BOH at psect + offset)\n" +msgstr "STC_BOH_PS (tallenna ehdollinen BOH kohteessa psect + siirros)\n" + +#: vms-alpha.c:6254 +#, c-format +msgid "STC_NBH_GBL (store cond or hint at global addr)\n" +msgstr "STC_NBH_GBL (tallenna ehdollinen tai vihje yleisosoitteessa)\n" + +#: vms-alpha.c:6258 +#, c-format +msgid "STC_NBH_PS (store cond or hint at psect + offset)\n" +msgstr "STC_NBH_PS (tallenna ehdollinen tai vihje kohteessa psect + siirros)\n" + +#: vms-alpha.c:6262 +#, c-format +msgid "CTL_SETRB (set relocation base)\n" +msgstr "CTL_SETRB (aseta sijoituskanta)\n" + +#: vms-alpha.c:6268 +#, c-format +msgid "CTL_AUGRB (augment relocation base) %u\n" +msgstr "CTL_AUGRB (lisäyssijoituskanta) %u\n" + +#: vms-alpha.c:6272 +#, c-format +msgid "CTL_DFLOC (define location)\n" +msgstr "CTL_DFLOC (määritä paikka)\n" + +#: vms-alpha.c:6275 +#, c-format +msgid "CTL_STLOC (set location)\n" +msgstr "CTL_STLOC (aseta paikka)\n" + +#: vms-alpha.c:6278 +#, c-format +msgid "CTL_STKDL (stack defined location)\n" +msgstr "CTL_STKDL (pinomääritelty paikka)\n" + +#: vms-alpha.c:6281 vms-alpha.c:6695 +#, c-format +msgid "*unhandled*\n" +msgstr "*käsittelemätön*\n" + +#: vms-alpha.c:6311 vms-alpha.c:6350 +#, c-format +msgid "cannot read GST record length\n" +msgstr "ei voida lukea GST-tietuepituutta\n" + +#. Ill-formed. +#: vms-alpha.c:6332 +#, c-format +msgid "cannot find EMH in first GST record\n" +msgstr "ei voi löytää kohdetta EMH ensimmäisessä GST-tietueessa\n" + +#: vms-alpha.c:6358 +#, c-format +msgid "cannot read GST record header\n" +msgstr "ei voida lukea GST-tietueotsaketta\n" + +#: vms-alpha.c:6371 +#, c-format +msgid " corrupted GST\n" +msgstr " rikkoutunut kohde GST\n" + +#: vms-alpha.c:6379 +#, c-format +msgid "cannot read GST record\n" +msgstr "ei voida lukea GST-tietuetta\n" + +#: vms-alpha.c:6408 +#, c-format +msgid " unhandled EOBJ record type %u\n" +msgstr " käsittelemätön EOBJ-tietuetyyppi %u\n" + +#: vms-alpha.c:6431 +#, c-format +msgid " bitcount: %u, base addr: 0x%08x\n" +msgstr " bittilukumäärä: %u, perusosoite: 0x%08x\n" + +#: vms-alpha.c:6444 +#, c-format +msgid " bitmap: 0x%08x (count: %u):\n" +msgstr " bitmap: 0x%08x (lukumäärä: %u):\n" + +#: vms-alpha.c:6451 +#, c-format +msgid " %08x" +msgstr " %08x" + +#: vms-alpha.c:6476 +#, c-format +msgid " image %u (%u entries)\n" +msgstr " vedos %u (%u alkiota)\n" + +#: vms-alpha.c:6481 +#, c-format +msgid " offset: 0x%08x, val: 0x%08x\n" +msgstr " siirros: 0x%08x, arvo: 0x%08x\n" + +#: vms-alpha.c:6502 +#, c-format +msgid " image %u (%u entries), offsets:\n" +msgstr " vedos %u (%u alkiota), siirrokset:\n" + +#: vms-alpha.c:6509 +#, c-format +msgid " 0x%08x" +msgstr " 0x%08x" + +#. 64 bits. +#: vms-alpha.c:6631 +#, c-format +msgid "64 bits *unhandled*\n" +msgstr "64 bittinen *käsittelemätön*\n" + +#: vms-alpha.c:6635 +#, c-format +msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n" +msgstr "luokka: %u, dtype: %u, pituus: %u, osoitin: 0x%08x\n" + +#: vms-alpha.c:6646 +#, c-format +msgid "non-contiguous array of %s\n" +msgstr "ei-yhtenäinen %s-taulukko\n" + +#: vms-alpha.c:6650 +#, c-format +msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n" +msgstr "dimct: %u, a-liput: 0x%02x, numerot: %u, skaala: %u\n" + +#: vms-alpha.c:6654 +#, c-format +msgid "arsize: %u, a0: 0x%08x\n" +msgstr "arsize: %u, a0: 0x%08x\n" + +#: vms-alpha.c:6658 +#, c-format +msgid "Strides:\n" +msgstr "Askeleet:\n" + +#: vms-alpha.c:6663 +#, c-format +msgid "[%u]: %u\n" +msgstr "[%u]: %u\n" + +#: vms-alpha.c:6668 +#, c-format +msgid "Bounds:\n" +msgstr "Rajat:\n" + +#: vms-alpha.c:6673 +#, c-format +msgid "[%u]: Lower: %u, upper: %u\n" +msgstr "[%u]: Alempi: %u, ylempi: %u\n" + +#: vms-alpha.c:6685 +#, c-format +msgid "unaligned bit-string of %s\n" +msgstr "tasaamaton %s-bittimerkkijono\n" + +#: vms-alpha.c:6689 +#, c-format +msgid "base: %u, pos: %u\n" +msgstr "kanta: %u, paikka: %u\n" + +#: vms-alpha.c:6709 +#, c-format +msgid "vflags: 0x%02x, value: 0x%08x " +msgstr "v-liput: 0x%02x, arvo: 0x%08x " + +#: vms-alpha.c:6715 +#, c-format +msgid "(no value)\n" +msgstr "(ei arvoa)\n" + +#: vms-alpha.c:6718 +#, c-format +msgid "(not active)\n" +msgstr "(ei käytössä)\n" + +#: vms-alpha.c:6721 +#, c-format +msgid "(not allocated)\n" +msgstr "(ei varattu)\n" + +#: vms-alpha.c:6724 +#, c-format +msgid "(descriptor)\n" +msgstr "(kuvaaja)\n" + +#: vms-alpha.c:6728 +#, c-format +msgid "(trailing value)\n" +msgstr "(jälkiarvo)\n" + +#: vms-alpha.c:6731 +#, c-format +msgid "(value spec follows)\n" +msgstr "(arvomäärittely seuraa)\n" + +#: vms-alpha.c:6734 +#, c-format +msgid "(at bit offset %u)\n" +msgstr "(bittisiirroksessa %u)\n" + +#: vms-alpha.c:6737 +#, c-format +msgid "(reg: %u, disp: %u, indir: %u, kind: " +msgstr "(rekisteri: %u, sijoitus: %u, suunta: %u, tyyppi: " + +#: vms-alpha.c:6744 +msgid "literal" +msgstr "literaali" + +#: vms-alpha.c:6747 +msgid "address" +msgstr "osoite" + +#: vms-alpha.c:6750 +msgid "desc" +msgstr "kuvaus" + +#: vms-alpha.c:6753 +msgid "reg" +msgstr "rekisteri" + +#: vms-alpha.c:6828 +#, c-format +msgid "Debug symbol table:\n" +msgstr "Vianjäljityssymbolitaulu:\n" + +#: vms-alpha.c:6839 +#, c-format +msgid "cannot read DST header\n" +msgstr "ei voida lukea DST-otsaketta\n" + +#: vms-alpha.c:6844 +#, c-format +msgid " type: %3u, len: %3u (at 0x%08x): " +msgstr " tyyppi: %3u, pituus: %3u (osoitteessa 0x%08x): " + +#: vms-alpha.c:6858 +#, c-format +msgid "cannot read DST symbol\n" +msgstr "ei voida lukea DST-symbolia\n" + +#: vms-alpha.c:6901 +#, c-format +msgid "standard data: %s\n" +msgstr "vakiotiedot: %s\n" + +#: vms-alpha.c:6904 vms-alpha.c:6988 +#, c-format +msgid " name: %.*s\n" +msgstr " nimi: %.*s\n" + +#: vms-alpha.c:6911 +#, c-format +msgid "modbeg\n" +msgstr "modbeg-alku\n" + +#: vms-alpha.c:6912 +#, c-format +msgid " flags: %d, language: %u, major: %u, minor: %u\n" +msgstr " liput: %d, kieli: %u, major: %u, minor: %u\n" + +#: vms-alpha.c:6918 vms-alpha.c:7184 +#, c-format +msgid " module name: %.*s\n" +msgstr " modulinimi: %.*s\n" + +#: vms-alpha.c:6921 +#, c-format +msgid " compiler : %.*s\n" +msgstr " kääntäjä : %.*s\n" + +#: vms-alpha.c:6926 +#, c-format +msgid "modend\n" +msgstr "modend-loppu\n" + +#: vms-alpha.c:6933 +msgid "rtnbeg\n" +msgstr "rtnbeg-alku\n" + +#: vms-alpha.c:6934 +#, c-format +msgid " flags: %u, address: 0x%08x, pd-address: 0x%08x\n" +msgstr " liput: %u, osoite: 0x%08x, pd-osoite: 0x%08x\n" + +#: vms-alpha.c:6939 +#, c-format +msgid " routine name: %.*s\n" +msgstr " rutiininimi: %.*s\n" + +#: vms-alpha.c:6947 +#, c-format +msgid "rtnend: size 0x%08x\n" +msgstr "rtnend-loppu: koko 0x%08x\n" + +#: vms-alpha.c:6955 +#, c-format +msgid "prolog: bkpt address 0x%08x\n" +msgstr "prolog: bkpt-osoite 0x%08x\n" + +#: vms-alpha.c:6963 +#, c-format +msgid "epilog: flags: %u, count: %u\n" +msgstr "epilog: liput: %u, lukumäärä: %u\n" + +#: vms-alpha.c:6972 +#, c-format +msgid "blkbeg: address: 0x%08x, name: %.*s\n" +msgstr "blkbeg-alku: osoite: 0x%08x, nimi: %.*s\n" + +#: vms-alpha.c:6981 +#, c-format +msgid "blkend: size: 0x%08x\n" +msgstr "blkend-loppu: koko: 0x%08x\n" + +#: vms-alpha.c:6987 +#, c-format +msgid "typspec (len: %u)\n" +msgstr "typspec (pituus: %u)\n" + +#: vms-alpha.c:6994 +#, c-format +msgid "septyp, name: %.*s\n" +msgstr "septyp, nimi: %.*s\n" + +#: vms-alpha.c:7003 +#, c-format +msgid "recbeg: name: %.*s\n" +msgstr "recbeg-alku: nimi: %.*s\n" + +#: vms-alpha.c:7010 +#, c-format +msgid "recend\n" +msgstr "recend-loppu\n" + +#: vms-alpha.c:7013 +#, c-format +msgid "enumbeg, len: %u, name: %.*s\n" +msgstr "enumbeg-alku, pituus: %u, nimi: %.*s\n" + +#: vms-alpha.c:7017 +#, c-format +msgid "enumelt, name: %.*s\n" +msgstr "enumelt, nimi: %.*s\n" + +#: vms-alpha.c:7021 +#, c-format +msgid "enumend\n" +msgstr "enumend-loppu\n" + +#: vms-alpha.c:7038 +#, c-format +msgid "discontiguous range (nbr: %u)\n" +msgstr "ei-yhtenäinen lukualue (numero: %u)\n" + +#: vms-alpha.c:7040 +#, c-format +msgid " address: 0x%08x, size: %u\n" +msgstr " osoite: 0x%08x, koko: %u\n" + +#: vms-alpha.c:7050 +#, c-format +msgid "line num (len: %u)\n" +msgstr "rivinumero (pituus: %u)\n" + +#: vms-alpha.c:7067 +#, c-format +msgid "delta_pc_w %u\n" +msgstr "delta_pc_w %u\n" + +#: vms-alpha.c:7074 +#, c-format +msgid "incr_linum(b): +%u\n" +msgstr "incr_linum(b): +%u\n" + +#: vms-alpha.c:7080 +#, c-format +msgid "incr_linum_w: +%u\n" +msgstr "incr_linum_w: +%u\n" + +#: vms-alpha.c:7086 +#, c-format +msgid "incr_linum_l: +%u\n" +msgstr "incr_linum_l: +%u\n" + +#: vms-alpha.c:7092 +#, c-format +msgid "set_line_num(w) %u\n" +msgstr "set_line_num(w) %u\n" + +#: vms-alpha.c:7097 +#, c-format +msgid "set_line_num_b %u\n" +msgstr "set_line_num_b %u\n" + +#: vms-alpha.c:7102 +#, c-format +msgid "set_line_num_l %u\n" +msgstr "set_line_num_l %u\n" + +#: vms-alpha.c:7107 +#, c-format +msgid "set_abs_pc: 0x%08x\n" +msgstr "set_abs_pc: 0x%08x\n" + +#: vms-alpha.c:7111 +#, c-format +msgid "delta_pc_l: +0x%08x\n" +msgstr "delta_pc_l: +0x%08x\n" + +#: vms-alpha.c:7116 +#, c-format +msgid "term(b): 0x%02x" +msgstr "term(b): 0x%02x" + +#: vms-alpha.c:7118 +#, c-format +msgid " pc: 0x%08x\n" +msgstr " pc: 0x%08x\n" + +#: vms-alpha.c:7123 +#, c-format +msgid "term_w: 0x%04x" +msgstr "term_w: 0x%04x" + +#: vms-alpha.c:7125 +#, c-format +msgid " pc: 0x%08x\n" +msgstr " pc: 0x%08x\n" + +#: vms-alpha.c:7131 +#, c-format +msgid "delta pc +%-4d" +msgstr "delta pc +%-4d" + +#: vms-alpha.c:7134 +#, c-format +msgid " pc: 0x%08x line: %5u\n" +msgstr " pc: 0x%08x rivi: %5u\n" + +#: vms-alpha.c:7139 +#, c-format +msgid " *unhandled* cmd %u\n" +msgstr " *käsittelemätön* komento %u\n" + +#: vms-alpha.c:7154 +#, c-format +msgid "source (len: %u)\n" +msgstr "lähde (pituus: %u)\n" + +#: vms-alpha.c:7168 +#, c-format +msgid " declfile: len: %u, flags: %u, fileid: %u\n" +msgstr " declfile: pituus: %u, liput: %u, tiedostotunniste: %u\n" + +#: vms-alpha.c:7172 +#, c-format +msgid " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" +msgstr " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" + +#: vms-alpha.c:7181 +#, c-format +msgid " filename : %.*s\n" +msgstr " tiedostonimi: %.*s\n" + +#: vms-alpha.c:7190 +#, c-format +msgid " setfile %u\n" +msgstr " setfile %u\n" + +#: vms-alpha.c:7195 vms-alpha.c:7200 +#, c-format +msgid " setrec %u\n" +msgstr " setrec %u\n" + +#: vms-alpha.c:7205 vms-alpha.c:7210 +#, c-format +msgid " setlnum %u\n" +msgstr " setlnum %u\n" + +#: vms-alpha.c:7215 vms-alpha.c:7220 +#, c-format +msgid " deflines %u\n" +msgstr " deflines %u\n" + +#: vms-alpha.c:7224 +#, c-format +msgid " formfeed\n" +msgstr " formfeed\n" + +#: vms-alpha.c:7228 +#, c-format +msgid " *unhandled* cmd %u\n" +msgstr " *käsittelemätön* komento %u\n" + +#: vms-alpha.c:7240 +#, c-format +msgid "*unhandled* dst type %u\n" +msgstr "*käsittelemätön* kohdetyyppi %u\n" + +#: vms-alpha.c:7272 +#, c-format +msgid "cannot read EIHD\n" +msgstr "ei voida lukea kohdetta EIHD\n" + +#: vms-alpha.c:7275 +#, c-format +msgid "EIHD: (size: %u, nbr blocks: %u)\n" +msgstr "EIHD: (koko: %u, nbr lohkoa: %u)\n" + +#: vms-alpha.c:7278 +#, c-format +msgid " majorid: %u, minorid: %u\n" +msgstr " majorid: %u, minorid: %u\n" + +#: vms-alpha.c:7286 +msgid "executable" +msgstr "suoritettava tiedosto" + +#: vms-alpha.c:7289 +msgid "linkable image" +msgstr "linkitettävä vedos" + +#: vms-alpha.c:7295 +#, c-format +msgid " image type: %u (%s)" +msgstr " vedostyyppi: %u (%s)" + +#: vms-alpha.c:7301 +msgid "native" +msgstr "kotoperäinen" + +#: vms-alpha.c:7304 +msgid "CLI" +msgstr "CLI" + +#: vms-alpha.c:7310 +#, c-format +msgid ", subtype: %u (%s)\n" +msgstr ", alityyppi: %u (%s)\n" + +#: vms-alpha.c:7316 +#, c-format +msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n" +msgstr " siirrokset: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n" + +#: vms-alpha.c:7320 +#, c-format +msgid " fixup info rva: " +msgstr " korjaustiedot rva: " + +#: vms-alpha.c:7322 +#, c-format +msgid ", symbol vector rva: " +msgstr ", symbolivektori rva: " + +#: vms-alpha.c:7325 +#, c-format +msgid "" +"\n" +" version array off: %u\n" +msgstr "" +"\n" +" versiotaulukkosiirros: %u\n" + +#: vms-alpha.c:7329 +#, c-format +msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n" +msgstr " img I/O lukumäärä: %u, kanavien lukumäärä: %u, req pri: %08x%08x\n" + +#: vms-alpha.c:7335 +#, c-format +msgid " linker flags: %08x:" +msgstr " linkkeriliput: %08x:" + +#: vms-alpha.c:7365 +#, c-format +msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n" +msgstr " ident: 0x%08x, sysver: 0x%08x, täsmää ctrl: %u, symvect_size: %u\n" + +#: vms-alpha.c:7371 +#, c-format +msgid " BPAGE: %u" +msgstr " BPAGE: %u" + +#: vms-alpha.c:7377 +#, c-format +msgid ", ext fixup offset: %u, no_opt psect off: %u" +msgstr ", ext korjaussiirros: %u, no_opt psect -siirros: %u" + +#: vms-alpha.c:7380 +#, c-format +msgid ", alias: %u\n" +msgstr ", alias: %u\n" + +#: vms-alpha.c:7388 +#, c-format +msgid "system version array information:\n" +msgstr "järjestelmäversion taulukkotiedot:\n" + +#: vms-alpha.c:7392 +#, c-format +msgid "cannot read EIHVN header\n" +msgstr "ei voida lukea EIHVN-otsaketta\n" + +#: vms-alpha.c:7402 +#, c-format +msgid "cannot read EIHVN version\n" +msgstr "ei voida lukea EIHVN-versiota\n" + +#: vms-alpha.c:7405 +#, c-format +msgid " %02u " +msgstr " %02u " + +#: vms-alpha.c:7409 +msgid "BASE_IMAGE " +msgstr "PERUS_VEDOS " + +#: vms-alpha.c:7412 +msgid "MEMORY_MANAGEMENT" +msgstr "MUISTI_HALLINTA " + +#: vms-alpha.c:7415 +msgid "IO " +msgstr "SIIRRÄNTÄ " + +#: vms-alpha.c:7418 +msgid "FILES_VOLUMES " +msgstr "TIEDOSTOT_TALTIOT" + +#: vms-alpha.c:7421 +msgid "PROCESS_SCHED " +msgstr "PROSESSI_AIKAT. " + +#: vms-alpha.c:7424 +msgid "SYSGEN " +msgstr "SYSGEN " + +#: vms-alpha.c:7427 +msgid "CLUSTERS_LOCKMGR " +msgstr "KLUSTERIEN_LUKOT " + +#: vms-alpha.c:7430 +msgid "LOGICAL_NAMES " +msgstr "LOOGISET_NIMET " + +#: vms-alpha.c:7433 +msgid "SECURITY " +msgstr "TURVALLISUUS " + +#: vms-alpha.c:7436 +msgid "IMAGE_ACTIVATOR " +msgstr "VEDOS_AKTIVOIJA " + +#: vms-alpha.c:7439 +msgid "NETWORKS " +msgstr "VERKOT " + +#: vms-alpha.c:7442 +msgid "COUNTERS " +msgstr "LASKURIT " + +#: vms-alpha.c:7445 +msgid "STABLE " +msgstr "STABIILI " + +#: vms-alpha.c:7448 +msgid "MISC " +msgstr "SEKALAISET " + +#: vms-alpha.c:7451 +msgid "CPU " +msgstr "PROSESSORI " + +#: vms-alpha.c:7454 +msgid "VOLATILE " +msgstr "KATOAVA " + +#: vms-alpha.c:7457 +msgid "SHELL " +msgstr "KUORI " + +#: vms-alpha.c:7460 +msgid "POSIX " +msgstr "POSIX " + +#: vms-alpha.c:7463 +msgid "MULTI_PROCESSING " +msgstr "MONI_PROSESSOINTI" + +#: vms-alpha.c:7466 +msgid "GALAXY " +msgstr "GALAKSI " + +#: vms-alpha.c:7469 +msgid "*unknown* " +msgstr "*tuntematon* " + +#: vms-alpha.c:7472 +#, c-format +msgid ": %u.%u\n" +msgstr ": %u.%u\n" + +#: vms-alpha.c:7485 vms-alpha.c:7744 +#, c-format +msgid "cannot read EIHA\n" +msgstr "ei voida lukea kohdetta EIHA\n" + +#: vms-alpha.c:7488 +#, c-format +msgid "Image activation: (size=%u)\n" +msgstr "Vedosaktivointi: (koko=%u)\n" + +#: vms-alpha.c:7490 +#, c-format +msgid " First address : 0x%08x 0x%08x\n" +msgstr " Ensimmäinen osoite : 0x%08x 0x%08x\n" + +#: vms-alpha.c:7493 +#, c-format +msgid " Second address: 0x%08x 0x%08x\n" +msgstr " Toinen osoite : 0x%08x 0x%08x\n" + +#: vms-alpha.c:7496 +#, c-format +msgid " Third address : 0x%08x 0x%08x\n" +msgstr " Kolmas osoite : 0x%08x 0x%08x\n" + +#: vms-alpha.c:7499 +#, c-format +msgid " Fourth address: 0x%08x 0x%08x\n" +msgstr " Neljäs osoite : 0x%08x 0x%08x\n" + +#: vms-alpha.c:7502 +#, c-format +msgid " Shared image : 0x%08x 0x%08x\n" +msgstr " Jaettu vedos : 0x%08x 0x%08x\n" + +#: vms-alpha.c:7513 +#, c-format +msgid "cannot read EIHI\n" +msgstr "ei voida lukea kohdetta EIHI\n" + +#: vms-alpha.c:7516 +#, c-format +msgid "Image identification: (major: %u, minor: %u)\n" +msgstr "Vedostunnistus: (major: %u, minor: %u)\n" + +#: vms-alpha.c:7519 +#, c-format +msgid " image name : %.*s\n" +msgstr " vedosnimi : %.*s\n" + +#: vms-alpha.c:7521 +#, c-format +msgid " link time : %s\n" +msgstr " linkitysaika : %s\n" + +#: vms-alpha.c:7523 +#, c-format +msgid " image ident : %.*s\n" +msgstr " vedossisennys : %.*s\n" + +#: vms-alpha.c:7525 +#, c-format +msgid " linker ident : %.*s\n" +msgstr " linkkeri-ident : %.*s\n" + +#: vms-alpha.c:7527 +#, c-format +msgid " image build ident: %.*s\n" +msgstr " vedoksen rakennusident: %.*s\n" + +#: vms-alpha.c:7537 +#, c-format +msgid "cannot read EIHS\n" +msgstr "ei voida lukea kohdetta EIHS\n" + +#: vms-alpha.c:7540 +#, c-format +msgid "Image symbol & debug table: (major: %u, minor: %u)\n" +msgstr "Vedossymboli- ja vianjäljitystaulu: (major: %u, minor: %u)\n" + +#: vms-alpha.c:7545 +#, c-format +msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n" +msgstr " vianjäljityssymbolitaulu : vbn: %u, koko: %u (0x%x)\n" + +#: vms-alpha.c:7549 +#, c-format +msgid " global symbol table: vbn: %u, records: %u\n" +msgstr " yleinen symbolitaulu: vbn: %u, tietueet: %u\n" + +#: vms-alpha.c:7553 +#, c-format +msgid " debug module table : vbn: %u, size: %u\n" +msgstr " vianjäljitysmodulitaulu : vbn: %u, koko: %u\n" + +#: vms-alpha.c:7566 +#, c-format +msgid "cannot read EISD\n" +msgstr "ei voida lukea kohdetta EISD\n" + +#: vms-alpha.c:7576 +#, c-format +msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n" +msgstr "Vedoslohkokuvaaja: (major: %u, minor: %u, koko: %u, siirros: %u)\n" + +#: vms-alpha.c:7583 +#, c-format +msgid " section: base: 0x%08x%08x size: 0x%08x\n" +msgstr " lohko: kanta: 0x%08x%08x koko: 0x%08x\n" + +#: vms-alpha.c:7588 +#, c-format +msgid " flags: 0x%04x" +msgstr " liput: 0x%04x" + +#: vms-alpha.c:7625 +#, c-format +msgid " vbn: %u, pfc: %u, matchctl: %u type: %u (" +msgstr " vbn: %u, pfc: %u, matchctl: %u tyyppi: %u (" + +#: vms-alpha.c:7631 +msgid "NORMAL" +msgstr "NORMAALI" + +#: vms-alpha.c:7634 +msgid "SHRFXD" +msgstr "SHRFXD" + +#: vms-alpha.c:7637 +msgid "PRVFXD" +msgstr "PRVFXD" + +#: vms-alpha.c:7640 +msgid "SHRPIC" +msgstr "SHRPIC" + +#: vms-alpha.c:7643 +msgid "PRVPIC" +msgstr "PRVPIC" + +#: vms-alpha.c:7646 +msgid "USRSTACK" +msgstr "USRSTACK" + +#: vms-alpha.c:7654 +#, c-format +msgid " ident: 0x%08x, name: %.*s\n" +msgstr " ident: 0x%08x, nimi: %.*s\n" + +#: vms-alpha.c:7664 +#, c-format +msgid "cannot read DMT\n" +msgstr "ei voida lukea kohdetta DMT\n" + +#: vms-alpha.c:7668 +#, c-format +msgid "Debug module table:\n" +msgstr "Vianjäljitysmodulitaulu:\n" + +#: vms-alpha.c:7677 +#, c-format +msgid "cannot read DMT header\n" +msgstr "ei voida lukea DMT-otsaketta\n" + +#: vms-alpha.c:7682 +#, c-format +msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n" +msgstr " modulisiirros: 0x%08x, koko: 0x%08x, (%u psects)\n" + +#: vms-alpha.c:7692 +#, c-format +msgid "cannot read DMT psect\n" +msgstr "ei voida lukea kohdetta DMT psect\n" + +#: vms-alpha.c:7695 +#, c-format +msgid " psect start: 0x%08x, length: %u\n" +msgstr " psect-alku: 0x%08x, pituus: %u\n" + +#: vms-alpha.c:7708 +#, c-format +msgid "cannot read DST\n" +msgstr "ei voida lukea kohdetta DST\n" + +#: vms-alpha.c:7718 +#, c-format +msgid "cannot read GST\n" +msgstr "ei voida lukea kohdetta GST\n" + +#: vms-alpha.c:7722 +#, c-format +msgid "Global symbol table:\n" +msgstr "Yleinen symbolitaulu:\n" + +#: vms-alpha.c:7750 +#, c-format +msgid "Image activator fixup: (major: %u, minor: %u)\n" +msgstr "Vedosaktivaattorikorjaus: (major: %u, minor: %u)\n" + +#: vms-alpha.c:7753 +#, c-format +msgid " iaflink : 0x%08x %08x\n" +msgstr " iaflink : 0x%08x %08x\n" + +#: vms-alpha.c:7756 +#, c-format +msgid " fixuplnk: 0x%08x %08x\n" +msgstr " fixuplnk: 0x%08x %08x\n" + +#: vms-alpha.c:7759 +#, c-format +msgid " size : %u\n" +msgstr " koko : %u\n" + +#: vms-alpha.c:7761 +#, c-format +msgid " flags: 0x%08x\n" +msgstr " liput: 0x%08x\n" + +#: vms-alpha.c:7765 +#, c-format +msgid " qrelfixoff: %5u, lrelfixoff: %5u\n" +msgstr " qrelfixoff: %5u, lrelfixoff: %5u\n" + +#: vms-alpha.c:7769 +#, c-format +msgid " qdotadroff: %5u, ldotadroff: %5u\n" +msgstr " qdotadroff: %5u, ldotadroff: %5u\n" + +#: vms-alpha.c:7773 +#, c-format +msgid " codeadroff: %5u, lpfixoff : %5u\n" +msgstr " codeadroff: %5u, lpfixoff : %5u\n" + +#: vms-alpha.c:7776 +#, c-format +msgid " chgprtoff : %5u\n" +msgstr " chgprtoff : %5u\n" + +#: vms-alpha.c:7779 +#, c-format +msgid " shlstoff : %5u, shrimgcnt : %5u\n" +msgstr " shlstoff : %5u, shrimgcnt : %5u\n" + +#: vms-alpha.c:7781 +#, c-format +msgid " shlextra : %5u, permctx : %5u\n" +msgstr " shlextra : %5u, permctx : %5u\n" + +#: vms-alpha.c:7784 +#, c-format +msgid " base_va : 0x%08x\n" +msgstr " base_va : 0x%08x\n" + +#: vms-alpha.c:7786 +#, c-format +msgid " lppsbfixoff: %5u\n" +msgstr " lppsbfixoff: %5u\n" + +#: vms-alpha.c:7794 +#, c-format +msgid " Shareable images:\n" +msgstr " Jaettavat vedokset:\n" + +#: vms-alpha.c:7798 +#, c-format +msgid " %u: size: %u, flags: 0x%02x, name: %.*s\n" +msgstr " %u: koko: %u, liput: 0x%02x, nimi: %.*s\n" + +#: vms-alpha.c:7805 +#, c-format +msgid " quad-word relocation fixups:\n" +msgstr " quad-sanaiset sijoituskorjaukset:\n" + +#: vms-alpha.c:7810 +#, c-format +msgid " long-word relocation fixups:\n" +msgstr " long-word-sijoituskorjaukset:\n" + +#: vms-alpha.c:7815 +#, c-format +msgid " quad-word .address reference fixups:\n" +msgstr " quad-word .address -viitekorjaukset:\n" + +#: vms-alpha.c:7820 +#, c-format +msgid " long-word .address reference fixups:\n" +msgstr " long-word .address -viitekorjaukset:\n" + +#: vms-alpha.c:7825 +#, c-format +msgid " Code Address Reference Fixups:\n" +msgstr " Koodiosoiteviitekorjaukset:\n" + +#: vms-alpha.c:7830 +#, c-format +msgid " Linkage Pairs Referece Fixups:\n" +msgstr " Linkitysparien viitekorjaukset:\n" + +#: vms-alpha.c:7839 +#, c-format +msgid " Change Protection (%u entries):\n" +msgstr " Vaihda suoja (%u alkiota):\n" + +#: vms-alpha.c:7844 +#, c-format +msgid " base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x " +msgstr " kanta: 0x%08x %08x, koko: 0x%08x, prot: 0x%08x " + +#. FIXME: we do not yet support relocatable link. It is not obvious +#. how to do it for debug infos. +#: vms-alpha.c:8676 +msgid "%P: relocatable link is not supported\n" +msgstr "%P: sijoitettava linkki ei ole tuettu\n" + +#: vms-alpha.c:8746 +msgid "%P: multiple entry points: in modules %B and %B\n" +msgstr "%P: useita tulokohtia: moduuleissa %B ja %B\n" + +#: vms-lib.c:1421 +#, c-format +msgid "could not open shared image '%s' from '%s'" +msgstr "ei voitu avata jaettua vedosta '%s' kohteesta '%s'" + +#: vms-misc.c:360 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "_bfd_vms_output_counted kutsuttu nollatavuilla" + +#: vms-misc.c:365 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "_bfd_vms_output_counted kutsuttu liian monilla tavuilla" + +#: xcofflink.c:836 +#, c-format +msgid "%s: XCOFF shared object when not producing XCOFF output" +msgstr "%s: XCOFF jaettu objekti kun ei tuoteta XCOFF-tulostetta" + +#: xcofflink.c:857 +#, c-format +msgid "%s: dynamic object with no .loader section" +msgstr "%s: dynaaminen objekti ilman â€.loaderâ€-lohkoa" + +#: xcofflink.c:1415 +msgid "%B: `%s' has line numbers but no enclosing section" +msgstr "%B: â€%s†on rivinumerot, mutta ei sulkevaa lohkoa" + +#: xcofflink.c:1467 +msgid "%B: class %d symbol `%s' has no aux entries" +msgstr "%B: luokassa %d symbolissa â€%s†ei ole aputulokohtia" + +#: xcofflink.c:1489 +msgid "%B: symbol `%s' has unrecognized csect type %d" +msgstr "%B: symbolissa â€%s†on tunnistamaton ohjauslohkotyyppi %d" + +#: xcofflink.c:1501 +msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%B: virheellinen XTY_ER-symboli â€%sâ€: luokka %d ohjauslohkonumero %d ohjauslohkopituus %d" + +#: xcofflink.c:1530 +msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%B: XMC_TC0-symboli â€%s†on luokka %d ohjauslohkopituus %d" + +#: xcofflink.c:1676 +msgid "%B: csect `%s' not in enclosing section" +msgstr "%B: ohjauslohkoa â€%s†ei ole sulkeutuvassa lohkossa" + +#: xcofflink.c:1783 +msgid "%B: misplaced XTY_LD `%s'" +msgstr "%B: väärin sijoitettu XTY_LD â€%sâ€" + +#: xcofflink.c:2102 +msgid "%B: reloc %s:%d not in csect" +msgstr "%B: reloc-tietue %s:%d ei ole ohjauslohkossa" + +#: xcofflink.c:3186 +#, c-format +msgid "%s: no such symbol" +msgstr "%s: tuntematon symboli" + +#: xcofflink.c:3291 +#, c-format +msgid "warning: attempt to export undefined symbol `%s'" +msgstr "varoitus: yritettiin viedä määrittelemätön symboli â€%sâ€" + +#: xcofflink.c:3673 +msgid "error: undefined symbol __rtinit" +msgstr "virhe: määrittelemätön symboli â€__rtinitâ€" #: xcofflink.c:4052 +msgid "%B: loader reloc in unrecognized section `%s'" +msgstr "%B: â€loader relocâ€-tietue tunnistamattomassa lohkossa â€%s" + +#: xcofflink.c:4063 msgid "%B: `%s' in loader reloc but not loader sym" msgstr "%B: â€%s†â€loader relocâ€-tietueessa, mutta ei â€loader.symâ€-binaarissa" -#: xcofflink.c:4068 +#: xcofflink.c:4079 msgid "%B: loader reloc in read-only section %A" msgstr "%B: â€loader relocâ€-tietue kirjoitussuojatussa lohkossa %A" -#: xcofflink.c:5086 +#: xcofflink.c:5097 #, c-format msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" msgstr "Sisältöluettelon ylivuoto: 0x%lx > 0x10000; yritä â€-mminimal-toc†käännettäessä" -# Kun käskykohdemuuttuja on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, +# Kun käskyoperandi on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, # assembler voi muuntaa koodin käyttämään toiminnallisesti samanlaista käskyä tai käskysekvenssiä. # Tämä prosessi tunnetaan nimellä relaxation. Tätä tehdään tyypillisesti haarautumiskäskyissä, koska # haarautumiskohteen etäisyyttä ei tunneta ennen linkitystä. Tavallaan tällä tavalla kumotaan lukualueen # rajoitteet (constraints). Siksi olen suomentanut sen termillä avartaminen. -#: elf32-ia64.c:1050 elf64-ia64.c:1050 +#: elf32-ia64.c:1110 elf64-ia64.c:1110 msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch." msgstr "%B: Ei voi avartaa br-käskyä kohteessa 0x%lx lohkossa â€%Aâ€. Käytä â€brlâ€-käskyä tai epäsuoraa haarautumista." -#: elf32-ia64.c:2739 elf64-ia64.c:2739 +#: elf32-ia64.c:2809 elf64-ia64.c:2809 msgid "@pltoff reloc against local symbol" msgstr "â€@pltoff relocâ€-tietue paikallista symbolia varten" -#: elf32-ia64.c:4314 elf64-ia64.c:4314 +#: elf32-ia64.c:4430 elf64-ia64.c:4430 #, c-format msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" msgstr "%s: â€shortâ€-datasegmentti ylivuotanut (0x%lx >= 0x400000)" -#: elf32-ia64.c:4325 elf64-ia64.c:4325 +#: elf32-ia64.c:4441 elf64-ia64.c:4441 #, c-format msgid "%s: __gp does not cover short data segment" msgstr "%s: â€__gp†ei kata â€shortâ€-datasegmenttiä" -#: elf32-ia64.c:4595 elf64-ia64.c:4595 +#: elf32-ia64.c:4708 elf64-ia64.c:4708 msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" msgstr "%B: paikkariippuvainen koodi välittömällä sijoituksella dynaamista symbolia â€%s†varten" -#: elf32-ia64.c:4662 elf64-ia64.c:4662 +#: elf32-ia64.c:4775 elf64-ia64.c:4775 msgid "%B: @gprel relocation against dynamic symbol %s" msgstr "%B: â€@gprelâ€-sijoitus dynaamista symbolia %s varten" -#: elf32-ia64.c:4725 elf64-ia64.c:4725 +#: elf32-ia64.c:4838 elf64-ia64.c:4838 msgid "%B: linking non-pic code in a position independent executable" msgstr "%B: linkitetään paikkariippuvainen koodi paikkariippumattomassa suoritettavassa tiedostossa" -#: elf32-ia64.c:4862 elf64-ia64.c:4862 +#: elf32-ia64.c:4975 elf64-ia64.c:4975 msgid "%B: @internal branch to dynamic symbol %s" msgstr "%B: @sisäinen haarautuminen dynaamiseen symboliin %s" -#: elf32-ia64.c:4864 elf64-ia64.c:4864 +#: elf32-ia64.c:4977 elf64-ia64.c:4977 msgid "%B: speculation fixup to dynamic symbol %s" msgstr "%B: spekulaatiokorjaus dynaamiseen symboliin %s" -#: elf32-ia64.c:4866 elf64-ia64.c:4866 +#: elf32-ia64.c:4979 elf64-ia64.c:4979 msgid "%B: @pcrel relocation against dynamic symbol %s" msgstr "%B: â€@pcrelâ€-sijoitus dynaamista symbolia %s varten" -#: elf32-ia64.c:5063 elf64-ia64.c:5063 +#: elf32-ia64.c:5176 elf64-ia64.c:5176 msgid "unsupported reloc" msgstr "ei-tuettu reloc-tietue" -#: elf32-ia64.c:5101 elf64-ia64.c:5101 +#: elf32-ia64.c:5214 elf64-ia64.c:5214 msgid "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'." msgstr "%B: siirroksen %s puuttuva TLS-lohko kohdetta â€%s†varten osoitteessa 0x%lx lohkossa â€%Aâ€." -# Kun käskykohdemuuttuja on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, +# Kun käskyoperandi on sen lukualueen ulkopuolella, joka sallitaan kullekin käskykentälle, # assembler voi muuntaa koodin käyttämään toiminnallisesti samanlaista käskyä tai käskysekvenssiä. # Tämä prosessi tunnetaan nimellä relaxation. Tätä tehdään tyypillisesti haarautumiskäskyissä, koska # haarautumiskohteen etäisyyttä ei tunneta ennen linkitystä. Tavallaan tällä tavalla kumotaan lukualueen # rajoitteet (constraints). Siksi olen suomentanut sen termillä avartaminen. -#: elf32-ia64.c:5116 elf64-ia64.c:5116 +#: elf32-ia64.c:5229 elf64-ia64.c:5229 msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)." msgstr "%B: Ei voi avartaa br-käskyä (%s) kohteelle â€%s†kohteessa 0x%lx lohkossa â€%A†koolla 0x%lx (> 0x1000000)." -#: elf32-ia64.c:5372 elf64-ia64.c:5372 +#: elf32-ia64.c:5491 elf64-ia64.c:5491 msgid "%B: linking trap-on-NULL-dereference with non-trapping files" msgstr "%B: linkitetään keskeytysnollassa uudelleenviite â€ei-keskeytetäâ€-tiedostojen kanssa" -#: elf32-ia64.c:5381 elf64-ia64.c:5381 +#: elf32-ia64.c:5500 elf64-ia64.c:5500 msgid "%B: linking big-endian files with little-endian files" msgstr "%B: linkitetään â€big-endianâ€-tiedostoja â€little-endianâ€-tiedostojen kanssa" -#: elf32-ia64.c:5390 elf64-ia64.c:5390 +#: elf32-ia64.c:5509 elf64-ia64.c:5509 msgid "%B: linking 64-bit files with 32-bit files" msgstr "%B: linkitetään 64-bittiset tiedostot 32-bittisten tiedostojen kanssa" -#: elf32-ia64.c:5399 elf64-ia64.c:5399 +#: elf32-ia64.c:5518 elf64-ia64.c:5518 msgid "%B: linking constant-gp files with non-constant-gp files" msgstr "%B: linkitetään vakioyleisosoitintiedostot ei-vakioiden yleisosoitintiedostojen kanssa" -#: elf32-ia64.c:5409 elf64-ia64.c:5409 +#: elf32-ia64.c:5528 elf64-ia64.c:5528 msgid "%B: linking auto-pic files with non-auto-pic files" msgstr "%B: linkitetään automaattiset paikkariippumattomat kooditiedostot ei-automaattisten paikkariippumattomien kooditiedostojen kanssa" -#: peigen.c:999 pepigen.c:999 pex64igen.c:999 +#: peigen.c:1002 pepigen.c:1002 pex64igen.c:1002 #, c-format msgid "%s: line number overflow: 0x%lx > 0xffff" msgstr "%s: rivinumeroylivuoto: 0x%lx > 0xffff" -#: peigen.c:1026 pepigen.c:1026 pex64igen.c:1026 +#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 msgid "Export Directory [.edata (or where ever we found it)]" msgstr "Vientihakemisto [.edata (tai missä sen sitten löysimmekin)]" -#: peigen.c:1027 pepigen.c:1027 pex64igen.c:1027 +#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 msgid "Import Directory [parts of .idata]" msgstr "Tuontihakemisto [â€.idataâ€-osat]" -#: peigen.c:1028 pepigen.c:1028 pex64igen.c:1028 +#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 msgid "Resource Directory [.rsrc]" msgstr "Resurssihakemisto [.rsrc]" -#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 +#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 msgid "Exception Directory [.pdata]" msgstr "Poikkeushakemisto [.pdata]" -#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 +#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 msgid "Security Directory" msgstr "Turvallisuushakemisto" -#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 +#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 msgid "Base Relocation Directory [.reloc]" msgstr "Perussijoitushakemisto [.reloc]" -#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 +#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 msgid "Debug Directory" msgstr "Virheenetsintähakemisto" -#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 +#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 msgid "Description Directory" msgstr "Kuvaushakemisto" -#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 +#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 msgid "Special Directory" msgstr "Erityishakemisto" -#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 +#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 msgid "Thread Storage Directory [.tls]" msgstr "Säievarastohakemisto [.tls]" -#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 +#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 msgid "Load Configuration Directory" msgstr "Lataa konfigurationhakemisto" -#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 +#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 msgid "Bound Import Directory" msgstr "Sidottu tuontihakemisto" -#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 +#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 msgid "Import Address Table Directory" msgstr "Tuontiosoitetauluhakemisto" -#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 +#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 msgid "Delay Import Directory" msgstr "Viivetuontihakemisto" -#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 +#: peigen.c:1043 pepigen.c:1043 pex64igen.c:1043 msgid "CLR Runtime Header" msgstr "CLR ajoaikaotsake" -#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 +#: peigen.c:1044 pepigen.c:1044 pex64igen.c:1044 msgid "Reserved" msgstr "Varattu" -#: peigen.c:1101 pepigen.c:1101 pex64igen.c:1101 +#: peigen.c:1104 pepigen.c:1104 pex64igen.c:1104 #, c-format msgid "" "\n" @@ -3908,7 +5719,7 @@ "\n" "Tuontitaulu löytyi, mutta ei lohkoa, joka sisältää sen\n" -#: peigen.c:1106 pepigen.c:1106 pex64igen.c:1106 +#: peigen.c:1109 pepigen.c:1109 pex64igen.c:1109 #, c-format msgid "" "\n" @@ -3917,7 +5728,7 @@ "\n" "Tuontitaulu lohkossa %s osoitteessa 0x%lx\n" -#: peigen.c:1149 pepigen.c:1149 pex64igen.c:1149 +#: peigen.c:1151 pepigen.c:1151 pex64igen.c:1151 #, c-format msgid "" "\n" @@ -3926,12 +5737,12 @@ "\n" "Funktiokuvaaja sijaitsi alkuosoitteessa: %04lx\n" -#: peigen.c:1152 pepigen.c:1152 pex64igen.c:1152 +#: peigen.c:1154 pepigen.c:1154 pex64igen.c:1154 #, c-format msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" msgstr "\tkoodipohja %08lx sisältöluettelo (ladattava/todellinen) %08lx/%08lx\n" -#: peigen.c:1160 pepigen.c:1160 pex64igen.c:1160 +#: peigen.c:1162 pepigen.c:1162 pex64igen.c:1162 #, c-format msgid "" "\n" @@ -3940,7 +5751,7 @@ "\n" "Ei reldata-lohkoa! Funktiokuvaaja ei ole koodattu.\n" -#: peigen.c:1165 pepigen.c:1165 pex64igen.c:1165 +#: peigen.c:1167 pepigen.c:1167 pex64igen.c:1167 #, c-format msgid "" "\n" @@ -3950,7 +5761,7 @@ "Tuontitaulut (tulkittu %s lohkosisältö)\n" # Taulukko-otsake, jossa sanat on kahdella rivillä (ilman tavuviivaa), esimerkiksi: Vihjetaulu -#: peigen.c:1168 pepigen.c:1168 pex64igen.c:1168 +#: peigen.c:1170 pepigen.c:1170 pex64igen.c:1170 #, c-format msgid "" " vma: Hint Time Forward DLL First\n" @@ -3959,7 +5770,7 @@ " vma: Vihje- Aika- Jatkoläh. DLL- Ensimmäinen\n" " taulu leima ketju nimi Thunk-funktio\n" -#: peigen.c:1216 pepigen.c:1216 pex64igen.c:1216 +#: peigen.c:1218 pepigen.c:1218 pex64igen.c:1218 #, c-format msgid "" "\n" @@ -3968,12 +5779,12 @@ "\n" "\tDLL-nimi: %s\n" -#: peigen.c:1227 pepigen.c:1227 pex64igen.c:1227 +#: peigen.c:1229 pepigen.c:1229 pex64igen.c:1229 #, c-format msgid "\tvma: Hint/Ord Member-Name Bound-To\n" msgstr "\tvma: Vihje/Jär Jäsen-Nimi Sidottu\n" -#: peigen.c:1252 pepigen.c:1252 pex64igen.c:1252 +#: peigen.c:1254 pepigen.c:1254 pex64igen.c:1254 #, c-format msgid "" "\n" @@ -3982,7 +5793,7 @@ "\n" "Ensimmäinen thunk-funktio löytyi, mutta ei sen sisältävää lohkoa\n" -#: peigen.c:1417 pepigen.c:1417 pex64igen.c:1417 +#: peigen.c:1415 pepigen.c:1415 pex64igen.c:1415 #, c-format msgid "" "\n" @@ -3991,7 +5802,7 @@ "\n" "Vientitaulu löytyi, mutta ei sen sisältävää lohkoa\n" -#: peigen.c:1426 pepigen.c:1426 pex64igen.c:1426 +#: peigen.c:1424 pepigen.c:1424 pex64igen.c:1424 #, c-format msgid "" "\n" @@ -4000,7 +5811,7 @@ "\n" "Vientitaulu kohteessa %s, mutta ei sovi tuohon lohkoon\n" -#: peigen.c:1432 pepigen.c:1432 pex64igen.c:1432 +#: peigen.c:1430 pepigen.c:1430 pex64igen.c:1430 #, c-format msgid "" "\n" @@ -4009,7 +5820,7 @@ "\n" "Vientitaulu lohkossa %s osoitteessa 0x%lx\n" -#: peigen.c:1460 pepigen.c:1460 pex64igen.c:1460 +#: peigen.c:1458 pepigen.c:1458 pex64igen.c:1458 #, c-format msgid "" "\n" @@ -4020,67 +5831,67 @@ "Vientitaulut (tulkittu %s lohkosisältö)\n" "\n" -#: peigen.c:1464 pepigen.c:1464 pex64igen.c:1464 +#: peigen.c:1462 pepigen.c:1462 pex64igen.c:1462 #, c-format msgid "Export Flags \t\t\t%lx\n" msgstr "Vientiliput \t\t\t%lx\n" -#: peigen.c:1467 pepigen.c:1467 pex64igen.c:1467 +#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 #, c-format msgid "Time/Date stamp \t\t%lx\n" msgstr "Aika/Päivämääräleima \t\t%lx\n" -#: peigen.c:1470 pepigen.c:1470 pex64igen.c:1470 +#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 #, c-format msgid "Major/Minor \t\t\t%d/%d\n" msgstr "Suurempi/Pienempi \t\t\t%d/%d\n" -#: peigen.c:1473 pepigen.c:1473 pex64igen.c:1473 +#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 #, c-format msgid "Name \t\t\t\t" msgstr "Nimi \t\t\t\t" -#: peigen.c:1479 pepigen.c:1479 pex64igen.c:1479 +#: peigen.c:1477 pepigen.c:1477 pex64igen.c:1477 #, c-format msgid "Ordinal Base \t\t\t%ld\n" msgstr "Järjestyslukukanta \t\t\t%ld\n" -#: peigen.c:1482 pepigen.c:1482 pex64igen.c:1482 +#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 #, c-format msgid "Number in:\n" msgstr "Numero kohteessa:\n" -#: peigen.c:1485 pepigen.c:1485 pex64igen.c:1485 +#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 #, c-format msgid "\tExport Address Table \t\t%08lx\n" msgstr "\tVientiosoitetaulu \t\t%08lx\n" -#: peigen.c:1489 pepigen.c:1489 pex64igen.c:1489 +#: peigen.c:1487 pepigen.c:1487 pex64igen.c:1487 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" msgstr "\t[Nimiosoitin/Järjestysnumero] taulu\t%08lx\n" -#: peigen.c:1492 pepigen.c:1492 pex64igen.c:1492 +#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 #, c-format msgid "Table Addresses\n" msgstr "Tauluosoitteet\n" -#: peigen.c:1495 pepigen.c:1495 pex64igen.c:1495 +#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 #, c-format msgid "\tExport Address Table \t\t" msgstr "\tVientiosoitetaulu \t\t" -#: peigen.c:1500 pepigen.c:1500 pex64igen.c:1500 +#: peigen.c:1498 pepigen.c:1498 pex64igen.c:1498 #, c-format msgid "\tName Pointer Table \t\t" msgstr "\tNimiosoitintaulu \t\t" -#: peigen.c:1505 pepigen.c:1505 pex64igen.c:1505 +#: peigen.c:1503 pepigen.c:1503 pex64igen.c:1503 #, c-format msgid "\tOrdinal Table \t\t\t" msgstr "\tJärjestysnumerotaulu \t\t\t" -#: peigen.c:1519 pepigen.c:1519 pex64igen.c:1519 +#: peigen.c:1517 pepigen.c:1517 pex64igen.c:1517 #, c-format msgid "" "\n" @@ -4089,15 +5900,15 @@ "\n" "Vientiosoitetaulu -- Järjestyslukukanta %ld\n" -#: peigen.c:1538 pepigen.c:1538 pex64igen.c:1538 +#: peigen.c:1536 pepigen.c:1536 pex64igen.c:1536 msgid "Forwarder RVA" msgstr "Jatkolähetyksen suhteellinen muuttujaosoite" -#: peigen.c:1549 pepigen.c:1549 pex64igen.c:1549 +#: peigen.c:1547 pepigen.c:1547 pex64igen.c:1547 msgid "Export RVA" msgstr "Viennin suhteellinen muuttujaosoite" -#: peigen.c:1556 pepigen.c:1556 pex64igen.c:1556 +#: peigen.c:1554 pepigen.c:1554 pex64igen.c:1554 #, c-format msgid "" "\n" @@ -4106,19 +5917,19 @@ "\n" "[Järjestysnumero/Nimiosoitin] Taulu\n" -#: peigen.c:1616 peigen.c:1795 pepigen.c:1616 pepigen.c:1795 pex64igen.c:1616 -#: pex64igen.c:1795 +#: peigen.c:1614 peigen.c:1797 pepigen.c:1614 pepigen.c:1797 pex64igen.c:1614 +#: pex64igen.c:1797 #, c-format msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" msgstr "Varoitus,†.pdataâ€-lohkokoko (%ld) ei ole %d:n monikerta\n" -#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 +#: peigen.c:1621 pepigen.c:1621 pex64igen.c:1621 #, c-format msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" msgstr " vma:\t\t\tAlkuosoite Loppuosoite Unwind-tiedot\n" # Taulukko-otsake, jossa sanat jakautuvat taas alekkain kahdelle riville ilman tavuviivoja -#: peigen.c:1625 pepigen.c:1625 pex64igen.c:1625 +#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 #, c-format msgid "" " vma:\t\tBegin End EH EH PrologEnd Exception\n" @@ -4127,22 +5938,22 @@ " vma:\t\tAlku- Loppu- EH-käsit- EH- PrologEnd Poikkeus-\n" " \t\tosoite osoite telijä data osoite peite\n" -#: peigen.c:1695 pepigen.c:1695 pex64igen.c:1695 +#: peigen.c:1697 pepigen.c:1697 pex64igen.c:1697 #, c-format msgid " Register save millicode" msgstr " Rekisteri tallentaa millicode-bitin" -#: peigen.c:1698 pepigen.c:1698 pex64igen.c:1698 +#: peigen.c:1700 pepigen.c:1700 pex64igen.c:1700 #, c-format msgid " Register restore millicode" msgstr " Rekisteri palauttaa millicode-bitin" -#: peigen.c:1701 pepigen.c:1701 pex64igen.c:1701 +#: peigen.c:1703 pepigen.c:1703 pex64igen.c:1703 #, c-format msgid " Glue code sequence" msgstr " Vihje-koodisekvenssi" -#: peigen.c:1801 pepigen.c:1801 pex64igen.c:1801 +#: peigen.c:1803 pepigen.c:1803 pex64igen.c:1803 #, c-format msgid "" " vma:\t\tBegin Prolog Function Flags Exception EH\n" @@ -4151,7 +5962,7 @@ " vma:\t\tAlku- Prologi- Funktio- Liput Poikkeus- EH-\n" " \t\tosoite pituus pituus 32b exc käsittelijä Data\n" -#: peigen.c:1933 pepigen.c:1933 pex64igen.c:1933 +#: peigen.c:1929 pepigen.c:1929 pex64igen.c:1929 #, c-format msgid "" "\n" @@ -4163,7 +5974,7 @@ "PE-tiedostokantasijoitukset (tulkittu â€.relocâ€-lohkosisältö)\n" # Esimerkiksi välimuistissa RAM-alue koostuu usein pienistä palasista, joita kutsutaan nimellä chunk. Suomensin sen tässä sanalla alilohko -#: peigen.c:1963 pepigen.c:1963 pex64igen.c:1963 +#: peigen.c:1958 pepigen.c:1958 pex64igen.c:1958 #, c-format msgid "" "\n" @@ -4172,7 +5983,7 @@ "\n" "Virtuaaliosoite: %08lx alilohkokoko %ld (0x%lx) Korjausten lukumäärä %ld\n" -#: peigen.c:1976 pepigen.c:1976 pex64igen.c:1976 +#: peigen.c:1971 pepigen.c:1971 pex64igen.c:1971 #, c-format msgid "\treloc %4d offset %4x [%4lx] %s" msgstr "\treloc-tietue %4d siirrososoite %4x [%4lx] %s" @@ -4180,7 +5991,7 @@ #. The MS dumpbin program reportedly ands with 0xff0f before #. printing the characteristics field. Not sure why. No reason to #. emulate it here. -#: peigen.c:2015 pepigen.c:2015 pex64igen.c:2015 +#: peigen.c:2010 pepigen.c:2010 pex64igen.c:2010 #, c-format msgid "" "\n" @@ -4189,26 +6000,108 @@ "\n" "Luonteenominaisuus 0x%x\n" -#: peigen.c:2292 pepigen.c:2292 pex64igen.c:2292 +#: peigen.c:2310 pepigen.c:2310 pex64igen.c:2310 msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing" msgstr "%B: DataDictionary[1]:ia ei voi täyttää, koska â€.idata$2†puuttuu" -#: peigen.c:2312 pepigen.c:2312 pex64igen.c:2312 +#: peigen.c:2330 pepigen.c:2330 pex64igen.c:2330 msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing" msgstr "%B: DataDictionary[1]:ia ei voi täyttää, koska â€.idata$4†puuttuu" -#: peigen.c:2333 pepigen.c:2333 pex64igen.c:2333 +#: peigen.c:2351 pepigen.c:2351 pex64igen.c:2351 msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing" msgstr "%B: DataDictionary[12]:ia ei voi täyttää, koska â€.idata$5†puuttuu" -#: peigen.c:2353 pepigen.c:2353 pex64igen.c:2353 +#: peigen.c:2371 pepigen.c:2371 pex64igen.c:2371 msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing" msgstr "%B: DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)]:ia ei voi täyttää, koska â€.idata$6†puuttuu" -#: peigen.c:2375 pepigen.c:2375 pex64igen.c:2375 +#: peigen.c:2413 pepigen.c:2413 pex64igen.c:2413 +msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing" +msgstr "%B: DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)]:ia ei voi täyttää, koska â€.idata$6†puuttuu" + +#: peigen.c:2436 pepigen.c:2436 pex64igen.c:2436 msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing" msgstr "%B: DataDictionary[9]:ia ei voi täyttää, koska â€__tls_used†puuttuu" +#~ msgid "Can't Make it a Short Jump" +#~ msgstr "Sitä ei voi tehdä lyhyeksi hypyksi" + +#~ msgid "Exceeds Long Jump Range" +#~ msgstr "Ylittää pitkän hypyn arvoalueen" + +#~ msgid "Absolute address Exceeds 16 bit Range" +#~ msgstr "Absoluuttinen osoite ylittää 16-bittialueen" + +#~ msgid "Absolute address Exceeds 8 bit Range" +#~ msgstr "Absoluuttinen osoite ylittää 8-bittialueen" + +#~ msgid "Unrecognized Reloc Type" +#~ msgstr "Tunnistamaton Reloc-tyyppi" + +#~ msgid "corrupt or empty %s section in %B" +#~ msgstr "rikkinäinen tai tyhjä %s-lohko kohteessa %B" + +#~ msgid "%s: invalid DSO for symbol `%s' definition" +#~ msgstr "%s: virheellinen DSO symbolin â€%s†määrittelylle" + +#~ msgid "%B: %A+0x%lx: jump to stub routine which is not jal" +#~ msgstr "%B: %A+0x%lx: hyppää stub-rutiiniin, joka ei ole jal-käsky" + +#~ msgid "bfd_make_section (%s) failed" +#~ msgstr "bfd_make_section (%s) ei onnistunut" + +#~ msgid "bfd_set_section_flags (%s, %x) failed" +#~ msgstr "bfd_set_section_flags (%s, %x) ei onnistunut" + +#~ msgid "Size mismatch section %s=%lx, %s=%lx" +#~ msgstr "Kokotäsmäämätön lohko %s=%lx, %s=%lx" + +#~ msgid "failed to enter %s" +#~ msgstr "ei onnistuttu kirjoittamaan %s" + +#~ msgid "No Mem !" +#~ msgstr "Ei muistia !" + +#~ msgid "reserved STO cmd %d" +#~ msgstr "varattu STO-komento %d" + +#~ msgid "reserved OPR cmd %d" +#~ msgstr "varattu OPR-komento %d" + +#~ msgid "reserved CTL cmd %d" +#~ msgstr "varattu CTL-komento %d" + +#~ msgid "reserved STC cmd %d" +#~ msgstr "varattu STC-komento %d" + +#~ msgid "stack-from-image not implemented" +#~ msgstr "stack-from-image ei ole toteutettu" + +#~ msgid "stack-entry-mask not fully implemented" +#~ msgstr "stack-entry-mask ei ole täysin toteutettu" + +#~ msgid "PASSMECH not fully implemented" +#~ msgstr "PASSMECH ei ole täysin toteutettu" + +#~ msgid "stack-local-symbol not fully implemented" +#~ msgstr "stack-local-symbol ei ole täysin toteutettu" + +#~ msgid "stack-literal not fully implemented" +#~ msgstr "stack-literal ei ole täysin toteutettu" + +#~ msgid "stack-local-symbol-entry-point-mask not fully implemented" +#~ msgstr "stack-local-symbol-entry-point-mask ei ole täysin toteutettu" + +#~ msgid "%s: not fully implemented" +#~ msgstr "%s: ei ole täysin toteutettu" + +#~ msgid "obj code %d not found" +#~ msgstr "obj-koodia %d ei löytynyt" + +#~ msgid "Reloc size error in section %s" +#~ msgstr "Reloc-kokovirhe lohkossa %s" + #~ msgid "ERROR: %B: Incompatible object tag '%s':%d" #~ msgstr "VIRHE: %B: Yhteensopimaton objektitunnus â€%sâ€:%d" @@ -4245,9 +6138,6 @@ #~ msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)." #~ msgstr "Dwarf-virhe: Lyhennesiirrososoite (%lu) suurempi tai sama kuin â€.debug_abbrevâ€-koko (%lu)." -#~ msgid "Dwarf Error: Can't find .debug_line section." -#~ msgstr "Dwarf-virhe: Ei löydy â€.debug_lineâ€-lohkoa." - #~ msgid "Dwarf Error: Can't find .debug_ranges section." #~ msgstr "Dwarf-virhe: Ei löydy â€.debug_rangesâ€-lohkoa." @@ -4256,3 +6146,12 @@ #~ msgid "%B: relocation R_X86_64_PC32 against protected function `%s' can not be used when making a shared object" #~ msgstr "%B: sijoitusta R_X86_64_PC32 suojattua funktiota â€%s†varten ei voida käyttää kun tehdään jaettua objektia" + +#~ msgid "%B: unable to initialize compress status for section %s" +#~ msgstr "%B: ei kyetä alustamaan tiivistystilaa lohkolle %s" + +#~ msgid "%B: unable to initialize decompress status for section %s" +#~ msgstr "%B: ei kyetä alustamaan tiivistyksenpurkutilaa lohkolle %s" + +#~ msgid "R_FRV_GETTLSOFF_RELAX not applied to a call instruction" +#~ msgstr "R_FRV_GETTLSOFF_RELAX ei sovelleta kutsukäskyyn" Binary files /tmp/wqm3boRCeK/crash-5.1.6/=unpacked-tar1=/bfd/po/fr.gmo and /tmp/OqnMAz5teu/crash-6.1.6/=unpacked-tar1=/bfd/po/fr.gmo differ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/fr.po crash-6.1.6/=unpacked-tar1=/bfd/po/fr.po --- crash-5.1.6/=unpacked-tar1=/bfd/po/fr.po 2004-05-13 12:54:32.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/fr.po 2010-11-25 06:08:42.000000000 +0000 @@ -1,521 +1,564 @@ -# Messages français pour GNU concernant bfd. -# Copyright © 2004 Free Software Foundation, Inc. +# Messages français pour GNU concernant bfd. +# Copyright © 2010 Free Software Foundation, Inc. +# This file is distributed under the same license as the binutils package. # Michel Robitaille , traducteur depuis/since 1996. -# +# Frédéric Marchal , 2010. msgid "" msgstr "" -"Project-Id-Version: GNU bfd 2.14rel030712\n" -"POT-Creation-Date: 2003-07-11 13:53+0930\n" -"PO-Revision-Date: 2004-05-10 08:00-0500\n" -"Last-Translator: Michel Robitaille \n" +"Project-Id-Version: bfd-2.20.90\n" +"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" +"POT-Creation-Date: 2010-11-05 11:31+0100\n" +"PO-Revision-Date: 2010-11-11 20:08+0100\n" +"Last-Translator: Frédéric Marchal \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" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.0\n" + +#: aout-adobe.c:127 +msgid "%B: Unknown section type in a.out.adobe file: %x\n" +msgstr "%B: Type de section inconnu dans le fichier a.out.adobe: %x\n" -#: aout-adobe.c:204 -#, 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:207 +#: aout-cris.c:199 #, c-format msgid "%s: Invalid relocation type exported: %d" -msgstr "%s: relocalisation invalide du type exporté: %d" +msgstr "%s: relocalisation invalide du type exporté: %d" -#: aout-cris.c:251 -#, c-format -msgid "%s: Invalid relocation type imported: %d" -msgstr "%s: relocalisation invalide du type importé: %d" +#: aout-cris.c:242 +msgid "%B: Invalid relocation type imported: %d" +msgstr "%B: Relocalisation invalide du type importé: %d" -#: aout-cris.c:262 -#, c-format -msgid "%s: Bad relocation record imported: %d" -msgstr "%s: mauvais enregistrement de relocalisation importé: %d" +#: aout-cris.c:253 +msgid "%B: Bad relocation record imported: %d" +msgstr "%B: Mauvais enregistrement de relocalisation importé: %d" -#: aoutx.h:1295 aoutx.h:1716 +#: aoutx.h:1273 aoutx.h:1611 #, 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:1682 +#: aoutx.h:1577 #, 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" +msgstr "%s: ne peut représenter la section pour le symbole «%s» dans le fichier format objet a.out" -#: aoutx.h:1684 +#: aoutx.h:1579 vms-alpha.c:7649 msgid "*unknown*" msgstr "*inconnu*" -#: aoutx.h:3776 +#: aoutx.h:4007 aoutx.h:4333 +msgid "%P: %B: unexpected relocation type\n" +msgstr "%P: %B: type de relocalisation non supporté\n" + +#: aoutx.h:5364 #, c-format msgid "%s: relocatable link from %s to %s not supported" -msgstr "%s: lien relocalisable de %s vers %s n'est pas supporté" +msgstr "%s: lien relocalisable de %s vers %s n'est pas supporté" -#: archive.c:1751 +#: archive.c:2125 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 "Attention: l'écriture de l'archive était lente: réécriture du cachet de date-heure\n" -#: archive.c:2014 +#: archive.c:2416 msgid "Reading archive file mod timestamp" -msgstr "Lecture du cachet date-heure modifé du fichier d'archive" +msgstr "Lecture du cachet date-heure modifié du fichier d'archive" -#: archive.c:2040 +#: archive.c:2440 msgid "Writing updated armap timestamp" -msgstr "Écriture du cachet date-heure armap mise à jour" +msgstr "Écriture du cachet date-heure armap mise à jour" -#: bfd.c:280 +#: bfd.c:395 msgid "No error" msgstr "Pas d'erreur" -#: bfd.c:281 +#: bfd.c:396 msgid "System call error" -msgstr "Erreur d'appel système" +msgstr "Erreur d'appel système" -#: bfd.c:282 +#: bfd.c:397 msgid "Invalid bfd target" -msgstr "cible bfd invalide" +msgstr "Cible bfd invalide" -#: bfd.c:283 +#: bfd.c:398 msgid "File in wrong format" msgstr "Fichier dans un mauvais format" -#: bfd.c:284 +#: bfd.c:399 msgid "Archive object file in wrong format" msgstr "Fichier objet d'archive dans un mauvais format" -#: bfd.c:285 +#: bfd.c:400 msgid "Invalid operation" -msgstr "Opération invalide" +msgstr "Opération invalide" -#: bfd.c:286 +#: bfd.c:401 msgid "Memory exhausted" -msgstr "Mémoire épuisée" +msgstr "Mémoire épuisée" -#: bfd.c:287 +#: bfd.c:402 msgid "No symbols" msgstr "Aucun symbole" -#: bfd.c:288 +#: bfd.c:403 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" +msgstr "L'archive n'a pas d'index; exécuter ranlib pour en ajouter un" -#: bfd.c:289 +#: bfd.c:404 msgid "No more archived files" msgstr "Aucun autre fichier d'archive" -#: bfd.c:290 +#: bfd.c:405 msgid "Malformed archive" -msgstr "Archive mal formé" +msgstr "Archive mal formée" -#: bfd.c:291 +#: bfd.c:406 msgid "File format not recognized" msgstr "Format de fichier non reconnu" -#: bfd.c:292 +#: bfd.c:407 msgid "File format is ambiguous" -msgstr "Format de fichier ambiguë" +msgstr "Format de fichier ambigu" -#: bfd.c:293 +#: bfd.c:408 msgid "Section has no contents" msgstr "Section sans contenu" -#: bfd.c:294 +#: bfd.c:409 msgid "Nonrepresentable section on output" -msgstr "Section non-représentable pour la sortie" +msgstr "Section non-représentable sur la sortie" -#: bfd.c:295 +#: bfd.c:410 msgid "Symbol needs debug section which does not exist" -msgstr "Symboles ont besoin de la section de débug qui est inexistente" +msgstr "Symboles ont besoin de la section de débug qui est inexistente" -#: bfd.c:296 +#: bfd.c:411 msgid "Bad value" msgstr "Mauvaise valeur" -#: bfd.c:297 +#: bfd.c:412 msgid "File truncated" -msgstr "Fichier tronqué" +msgstr "Fichier tronqué" -#: bfd.c:298 +#: bfd.c:413 msgid "File too big" msgstr "Fichier trop gros" -#: bfd.c:299 +#: bfd.c:414 +#, c-format +msgid "Error reading %s: %s" +msgstr "Erreur lors de la lecture de %s: %s" + +#: bfd.c:415 msgid "#" msgstr "#" -#: bfd.c:687 +#: bfd.c:939 #, c-format msgid "BFD %s assertion fail %s:%d" -msgstr "BFD assertion %s a échoué %s:%d" +msgstr "BFD assertion %s a échoué %s:%d" -#: bfd.c:703 +#: bfd.c:951 #, c-format 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" +msgstr "BFD erreur interne %s, abandon à %s, ligne %d dans %s\n" -#: bfd.c:707 +#: bfd.c:955 #, c-format msgid "BFD %s internal error, aborting at %s line %d\n" -msgstr "BFD erreur interne %s, abandon à %s, ligne %d\n" +msgstr "BFD erreur interne %s, abandon à %s, ligne %d\n" -#: bfd.c:709 +#: bfd.c:957 msgid "Please report this bug.\n" -msgstr "SVP rapporter cette anomalie.\n" +msgstr "Merci de rapporter cette anomalie.\n" -#: bfdwin.c:202 +#: bfdwin.c:206 #, 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" +msgstr "pas de table de projection: données=%lx adresse de la table=%d\n" -#: bfdwin.c:205 +#: bfdwin.c:209 +#, c-format msgid "not mapping: env var not set\n" -msgstr "pas de table de projection: variable d'environnement pas initialisée\n" +msgstr "pas de table de projection: variable d'environnement pas initialisée\n" -#: binary.c:306 +#: binary.c:271 #, 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 négatif) dans le fichier 0x%lx." +msgstr "Attention: Écriture de la section «%s» vers un énorme décalage (ie négatif) dans le fichier 0x%lx." -#: coff-a29k.c:120 -msgid "Missing IHCONST" -msgstr "IHCONST manquant" +#: bout.c:1146 elf-m10300.c:2063 elf32-avr.c:1640 elf32-frv.c:5740 +#: elfxx-sparc.c:2795 reloc.c:5646 reloc16.c:162 elf32-ia64.c:842 +#: elf64-ia64.c:842 +msgid "%P%F: --relax and -r may not be used together\n" +msgstr "%P%F: --relax et -r ne peuvent pas être utilisés en même temps\n" + +#: cache.c:226 +msgid "reopening %B: %s\n" +msgstr "réouverture de %B: %s\n" -#: coff-a29k.c:181 -msgid "Missing IHIHALF" -msgstr "IHIHALF manquant" - -#: coff-a29k.c:213 coff-or32.c:236 -msgid "Unrecognized reloc" -msgstr "Relocalisation non reconnue" +#: coff-alpha.c:491 +msgid "" +"%B: Cannot handle compressed Alpha binaries.\n" +" Use compiler flags, or objZ, to generate uncompressed binaries." +msgstr "" +"%B: Les binaires compressés pour Alpha ne sont pas supportés.\n" +" Utilisez les options du compilateur ou objZ pour produire des binaires non compressés." -#: coff-a29k.c:409 -msgid "missing IHCONST reloc" -msgstr "IHCONST de relocalisation manquant" - -#: coff-a29k.c:499 -msgid "missing IHIHALF reloc" -msgstr "IHIHALF de relocalisation manquant" +#: coff-alpha.c:648 +msgid "%B: unknown/unsupported relocation type %d" +msgstr "%B: type de relocalisation %d inconnu ou non supporté" -#: coff-alpha.c:884 coff-alpha.c:921 coff-alpha.c:1992 coff-mips.c:1397 +#: coff-alpha.c:900 coff-alpha.c:937 coff-alpha.c:2025 coff-mips.c:1003 msgid "GP relative relocation used when GP not defined" -msgstr "Relocalisation relative GP utilisé alors que GP n'est pas défini" +msgstr "Relocalisation relative GP utilisé alors que GP n'est pas défini" -#: coff-alpha.c:1488 +#: coff-alpha.c:1502 msgid "using multiple gp values" -msgstr "utilisation de valeurs multiples gp" +msgstr "utilisation de valeurs gp multiples" -#: coff-arm.c:1066 elf32-arm.h:294 -#, 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-alpha.c:1561 +msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH" +msgstr "%B: type de relocalisation non supporté: ALPHA_R_GPRELHIGH" -#: coff-arm.c:1096 elf32-arm.h:329 -#, 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-alpha.c:1568 +msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW" +msgstr "%B: type de relocalisation non supporté: ALPHA_R_GPRELLOW" -#: coff-arm.c:1394 coff-arm.c:1489 elf32-arm.h:892 elf32-arm.h:999 -#, c-format -msgid "%s(%s): warning: interworking not enabled." -msgstr "%s(%s): AVERTISSEMENT: l'inter-réseautage n'est pas permis." +#: coff-alpha.c:1575 elf32-m32r.c:2493 elf64-alpha.c:3991 elf64-alpha.c:4140 +#: elf32-ia64.c:4582 elf64-ia64.c:4582 +msgid "%B: unknown relocation type %d" +msgstr "%B: type de relocalisation %d inconnu" -#: coff-arm.c:1398 elf32-arm.h:1002 +#: coff-arm.c:1038 #, c-format -msgid " first occurrence: %s: arm call to thumb" -msgstr " première occurrence: %s: appel arm de repérage" +msgid "%B: unable to find THUMB glue '%s' for `%s'" +msgstr "%B: incapable de repérer le REPÈRE de liant «%s» pour «%s»" -#: coff-arm.c:1493 elf32-arm.h:895 +#: coff-arm.c:1067 #, c-format -msgid " first occurrence: %s: thumb call to arm" -msgstr " première occurrence: %s: appel de repérage à ARM" +msgid "%B: unable to find ARM glue '%s' for `%s'" +msgstr "%B: incapable de repérer le liant ARM «%s» pour «%s»" -#: coff-arm.c:1496 -msgid " consider relinking with --support-old-code enabled" -msgstr " considérer de rafaire les liens avec --support-old-code enabled" - -#: coff-arm.c:1788 coff-tic80.c:687 cofflink.c:3038 +#: coff-arm.c:1369 elf32-arm.c:6501 #, c-format -msgid "%s: bad reloc address 0x%lx in section `%s'" -msgstr "%s: mauvaise adresse de relocalisation 0x%lx dans la section « %s »" +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: arm call to thumb" +msgstr "" +"%B(%s): attention: l'inter-réseautage n'est pas activé.\n" +" première occurrence: %B: appel arm au repère" -#: coff-arm.c:2132 +#: coff-arm.c:1459 #, c-format -msgid "%s: illegal symbol index in reloc: %d" -msgstr "%s: symbole index illégal dans la relocalisation: %d" +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: thumb call to arm\n" +" consider relinking with --support-old-code enabled" +msgstr "" +"%B(%s): attention: l'inter-réseautage n'est pas activé.\n" +" première occurrence: %B: appel arm au repère\n" +" reliez avec --support-old-code activé" + +#: coff-arm.c:1754 coff-tic80.c:695 cofflink.c:3043 +msgid "%B: bad reloc address 0x%lx in section `%A'" +msgstr "%B: mauvaise adresse de relocalisation 0x%lx dans la section «%A»" -#: coff-arm.c:2265 +#: coff-arm.c:2079 +msgid "%B: illegal symbol index in reloc: %d" +msgstr "%B: symbole index illégal dans la relocalisation: %d" + +#: coff-arm.c:2210 #, c-format -msgid "ERROR: %s is 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 "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" +msgstr "erreur: %B compilé pour APCS-%d alors que %B a été compilé pour APCS-%d" -#: coff-arm.c:2280 elf32-arm.h:2328 +#: coff-arm.c:2226 elf32-arm.c:14105 #, c-format -msgid "ERROR: %s passes floats in float 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" +msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers" +msgstr "erreur: %B passage de valeurs en virgule flottante dans les registres FP alors que %B les passe dans les registres entiers" -#: coff-arm.c:2283 elf32-arm.h:2333 +#: coff-arm.c:2229 elf32-arm.c:14109 #, c-format -msgid "ERROR: %s passes floats in integer registers, whereas %s passes them in float registers" -msgstr "Erreur: %s passage de valeurs en virgule flottante dans les registres entiers alors que %s les passe dans les registres FP" +msgid "error: %B passes floats in integer registers, whereas %B passes them in float registers" +msgstr "erreur: %B passage de valeurs en virgule flottante dans les registres entiers alors que %B les passe dans les registres FP" -#: coff-arm.c:2298 +#: coff-arm.c:2243 #, c-format -msgid "ERROR: %s is compiled as position independent code, whereas target %s is absolute position" -msgstr "ERREUR: %s compilé avec du code à position indépendante alors que la cible %s est à position absolue" +msgid "error: %B is compiled as position independent code, whereas target %B is absolute position" +msgstr "erreur: %B compilé avec du code à position indépendante alors que la cible %B est à position absolue" -#: coff-arm.c:2301 +#: coff-arm.c:2246 #, c-format -msgid "ERROR: %s is compiled as absolute position code, whereas target %s is position independent" -msgstr "ERREUR: %s compilé avec du code à position absolu alors que la cible %s est à position indépendante" +msgid "error: %B is compiled as absolute position code, whereas target %B is position independent" +msgstr "erreur: %B compilé avec du code à position absolu alors que la cible %B est à position indépendante" -#: coff-arm.c:2330 elf32-arm.h:2405 +#: coff-arm.c:2274 elf32-arm.c:14174 #, c-format -msgid "Warning: %s supports interworking, whereas %s does not" -msgstr "AVERTISSEMENT: %s supporte l'inter-réseautage, contrairement à %s." +msgid "Warning: %B supports interworking, whereas %B does not" +msgstr "Attention: %B supporte l'inter-réseautage, contrairement à %B" -#: coff-arm.c:2333 elf32-arm.h:2412 +#: coff-arm.c:2277 elf32-arm.c:14180 #, c-format -msgid "Warning: %s does not support interworking, whereas %s does" -msgstr "AVERTISSEMENT: %s ne supporte pas l'inter-réseautage, contrairement à %s." +msgid "Warning: %B does not support interworking, whereas %B does" +msgstr "Attention: %B ne supporte pas l'inter-réseautage, contrairement à %B" -#: coff-arm.c:2360 +#: coff-arm.c:2301 #, c-format msgid "private flags = %x:" -msgstr "fanions privés = %x" +msgstr "fanions privés = %x:" -#: coff-arm.c:2368 elf32-arm.h:2467 +#: coff-arm.c:2309 elf32-arm.c:10492 +#, c-format 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:2370 +#: coff-arm.c:2311 +#, c-format 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:2373 elf32-arm.h:2470 +#: coff-arm.c:2314 elf32-arm.c:10495 +#, c-format msgid " [position independent]" -msgstr " [position indépendante]" +msgstr " [position indépendante]" -#: coff-arm.c:2375 +#: coff-arm.c:2316 +#, c-format msgid " [absolute position]" msgstr " [position absolue]" -#: coff-arm.c:2379 +#: coff-arm.c:2320 +#, c-format msgid " [interworking flag not initialised]" -msgstr " [fanion d'inter-réseautage n'a pas été initialisé]" +msgstr " [fanion d'inter-réseautage n'a pas été initialisé]" -#: coff-arm.c:2381 +#: coff-arm.c:2322 +#, c-format msgid " [interworking supported]" -msgstr " [inter-réseautage supporté]" +msgstr " [inter-réseautage supporté]" -#: coff-arm.c:2383 +#: coff-arm.c:2324 +#, c-format msgid " [interworking not supported]" -msgstr " [inter-réseautage non supporté]" +msgstr " [inter-réseautage non supporté]" -#: coff-arm.c:2431 elf32-arm.h:2150 +#: coff-arm.c:2370 elf32-arm.c:9520 #, 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é sans inter-réseautage" +msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking" +msgstr "Attention: Pas d'initialisation du fanion d'inter-réseautage de %B puisqu'il a déjà été spécifié sans inter-réseautage" -#: coff-arm.c:2435 elf32-arm.h:2154 +#: coff-arm.c:2374 elf32-arm.c:9524 #, 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" +msgid "Warning: Clearing the interworking flag of %B due to outside request" +msgstr "Attention: Mise à zéro du fanion d'inter-réseautage de %B en raison d'une requête externe" -#: coff-h8300.c:1096 +#: coff-h8300.c:1122 #, c-format msgid "cannot handle R_MEM_INDIRECT reloc when using %s output" -msgstr "ne peut traiter la relocalisation R_MEM_INDIRECT lorsque %s est utilisé en sortie" +msgstr "ne peut traiter la relocalisation R_MEM_INDIRECT lorsque %s est utilisé en sortie" -#: coff-i960.c:137 coff-i960.c:486 +#: coff-i860.c:147 +#, c-format +msgid "Relocation `%s' not yet implemented\n" +msgstr "Relocalisation «%s» pas encore implémentée\n" + +#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5147 +msgid "%B: warning: illegal symbol index %ld in relocs" +msgstr "%B: attention: symbole index illégal %ld dans les relocalisations" + +#: coff-i960.c:143 coff-i960.c:506 msgid "uncertain calling convention for non-COFF symbol" msgstr "convention d'appel incertaine pour un symbole non COFF" -#: coff-m68k.c:482 coff-mips.c:2394 elf32-m68k.c:2193 elf32-mips.c:1783 +#: coff-m68k.c:506 elf32-bfin.c:5678 elf32-cr16.c:2897 elf32-m68k.c:4672 msgid "unsupported reloc type" -msgstr "type de relocalisation non supporté" +msgstr "type de relocalisation non supporté" -#: coff-mips.c:839 elf32-mips.c:1088 elf64-mips.c:1590 elfn32-mips.c:1554 +#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:430 elf32-score7.c:330 +#: elf64-mips.c:2019 elfn32-mips.c:1832 msgid "GP relative relocation when _gp not defined" -msgstr "relocalisation relative GP sans que _gp ne soit défini" +msgstr "relocalisation relative GP sans que _gp ne soit défini" -#. No other sections should appear in -membedded-pic -#. code. -#: coff-mips.c:2431 -msgid "reloc against unsupported section" -msgstr "relocalisation vers une section non supportée" - -#: coff-mips.c:2439 -msgid "reloc not properly aligned" -msgstr "relocalisation n'est pas alignée correctement" +#: coff-or32.c:229 +msgid "Unrecognized reloc" +msgstr "Relocalisation non reconnue" -#: coff-rs6000.c:2790 +#: coff-rs6000.c:2794 #, c-format msgid "%s: unsupported relocation type 0x%02x" -msgstr "%s: type de relocalisation non supporté 0x%02x" +msgstr "%s: type de relocalisation non supporté 0x%02x" -#: coff-rs6000.c:2883 +#: coff-rs6000.c:2887 #, 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" +msgstr "%s: table des matières des relocalisations à 0x%x pour le symbole «%s» sans aucune entrée" -#: coff-rs6000.c:3616 coff64-rs6000.c:2109 -#, c-format -msgid "%s: symbol `%s' has unrecognized smclas %d" -msgstr "%s: symbole « %s » a une classe smclas non reconnue %d" +#: coff-rs6000.c:3652 coff64-rs6000.c:2175 +msgid "%B: symbol `%s' has unrecognized smclas %d" +msgstr "%B: symbole «%s» a une classe smclas %d non reconnue" -#: coff-tic4x.c:170 coff-tic54x.c:288 coff-tic80.c:450 +#: coff-tic4x.c:195 coff-tic54x.c:299 coff-tic80.c:458 #, c-format msgid "Unrecognized reloc type 0x%x" msgstr "Type de relocalisation non reconnu 0x%x" -#: coff-tic4x.c:218 coff-tic54x.c:373 coffcode.h:5045 +#: coff-tic4x.c:240 #, c-format msgid "%s: warning: illegal symbol index %ld in relocs" -msgstr "%s: AVERTISSEMENT: symbole index illégal %ld dans les relocalisations" +msgstr "%s: attention: symbole index illégal %ld dans les relocalisations" -#: coff-w65.c:364 +#: coff-w65.c:367 #, c-format msgid "ignoring reloc %s\n" -msgstr "relocalisation de %s ignorée\n" +msgstr "relocalisation %s ignorée\n" -#: coffcode.h:1108 -#, c-format -msgid "%s (%s): Section flag %s (0x%x) ignored" -msgstr "%s (%s): fanion de section %s (0x%x) ignoré" +#: coffcode.h:973 +msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'" +msgstr "%B: attention: symbole COMDAT «%s» ne concorde par avec le nom de section «%s»" + +#. Generate a warning message rather using the 'unhandled' +#. variable as this will allow some .sys files generate by +#. other toolchains to be processed. See bugzilla issue 196. +#: coffcode.h:1197 +msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s" +msgstr "%B: Attention: Ignore le fanion de section IMAGE_SCN_MEM_NOT_PAGED dans la section %s" + +#: coffcode.h:1264 +msgid "%B (%s): Section flag %s (0x%x) ignored" +msgstr "%B (%s): Fanion de section %s (0x%x) ignoré" -#: coffcode.h:2214 +#: coffcode.h:2390 #, c-format msgid "Unrecognized TI COFF target id '0x%x'" -msgstr "cible TI COFF non reconnue identificateur '0x%x'" +msgstr "Identificateur de cible TI COFF non reconnu «0x%x»" -#: coffcode.h:4437 -#, 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:2704 +msgid "%B: reloc against a non-existant symbol index: %ld" +msgstr "%B: relocalisation par rapport à un indexe de symbole inexistant: %ld" -#: coffcode.h:4451 -#, 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:3262 +msgid "%B: too many sections (%d)" +msgstr "%B: trop de sections (%d)" -#: coffcode.h:4805 -#, 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:3676 +msgid "%B: section %s: string table overflow at offset %ld" +msgstr "%B: section %s: débordement de la table de chaînes à l'offset %ld" -#: coffcode.h:4938 -#, c-format -msgid "warning: %s: local symbol `%s' has no section" -msgstr "AVERTISSEMENT: %s: symbole local « %s » n'a pas de section" +#: coffcode.h:4481 +msgid "%B: warning: line number table read failed" +msgstr "%B: attention: erreur lors de la lecture de la table des numéros de ligne" -#: coffcode.h:5083 -#, c-format -msgid "%s: illegal relocation type %d at address 0x%lx" -msgstr "%s: type de relocalisation illégal %d à l'adresse 0x%lx" +#: coffcode.h:4511 +msgid "%B: warning: illegal symbol index %ld in line numbers" +msgstr "%B: attention: symbole d'index illégal %ld dans les numéros de ligne" -#: coffgen.c:1666 -#, c-format -msgid "%s: bad string table size %lu" -msgstr "%s: chaîne erronée de la taille de table %lu" +#: coffcode.h:4525 +msgid "%B: warning: duplicate line number information for `%s'" +msgstr "%B: attention: information de numéro de ligne dédoublée pour «%s»" -#: cofflink.c:538 elflink.h:1276 -#, c-format -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" +#: coffcode.h:4916 +msgid "%B: Unrecognized storage class %d for %s symbol `%s'" +msgstr "%B: Classe de stockage %d non reconnue pour %s symbole «%s»" -#: cofflink.c:2328 -#, 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" +#: coffcode.h:5042 +msgid "warning: %B: local symbol `%s' has no section" +msgstr "attention: %B: symbole local «%s» n'a pas de section" + +#: coffcode.h:5186 +msgid "%B: illegal relocation type %d at address 0x%lx" +msgstr "%B: type de relocalisation %d illégal à l'adresse 0x%lx" -#: cofflink.c:2671 coffswap.h:890 +#: coffgen.c:1573 +msgid "%B: bad string table size %lu" +msgstr "%B: mauvaise taille de la table des chaînes %lu" + +#: cofflink.c:524 elflink.c:4339 +msgid "Warning: type of symbol `%s' changed from %d to %d in %B" +msgstr "Attention: type de symbole «%s» a changé de %d à %d dans %B" + +#: cofflink.c:2321 +msgid "%B: relocs in section `%A', but it has no contents" +msgstr "%B: relocalisations dans la section «%A» qui est vide" + +#: cofflink.c:2652 coffswap.h:826 #, c-format msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" -msgstr "%s: %s: débordement de relocalisation: 0x%lx > 0xffff" +msgstr "%s: %s: débordement de relocalisation: 0x%lx > 0xffff" -#: cofflink.c:2680 coffswap.h:876 +#: cofflink.c:2661 coffswap.h:812 #, 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" +msgstr "%s: attention: %s: débordement du compteur de numéro de ligne: 0x%lx > 0xffff" -#: cpu-arm.c:196 cpu-arm.c:206 -#, c-format -msgid "ERROR: %s is compiled for the EP9312, whereas %s is compiled for XScale" -msgstr "ERREUR: %s compilé pour EP9312 alors que %s a été compilé pour XScale" +#: cpu-arm.c:189 cpu-arm.c:200 +msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale" +msgstr "erreur: %B compilé pour EP9312 alors que %B a été compilé pour XScale" -#: cpu-arm.c:344 +#: cpu-arm.c:333 #, c-format msgid "warning: unable to update contents of %s section in %s" -msgstr "AVERTISSEMENT: incapable de mettre à jour le contenu de la section %s dans %s" +msgstr "attention: incapable de mettre à jour le contenu de la section %s dans %s" -#: dwarf2.c:380 -msgid "Dwarf Error: Can't find .debug_str section." -msgstr "Erreur DWARF: ne peut repérer la section .debug_str" - -#: dwarf2.c:397 +#: dwarf2.c:490 #, c-format -msgid "Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)." -msgstr "Erreur DWARF: décalage DW_FORM_strp (%lu) est >= à la taille de .debug_str (%lu)." - -#: dwarf2.c:541 -msgid "Dwarf Error: Can't find .debug_abbrev section." -msgstr "Erreur DWARF: ne peut repérer la section .debug_abbrev" +msgid "Dwarf Error: Can't find %s section." +msgstr "Erreur DWARF: ne peut repérer la section %s" -#: dwarf2.c:556 +#: dwarf2.c:518 #, c-format -msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)." -msgstr "Erreur DWARF: décalage Abbrev (%lu) est >= à la taille .debug_abbrev (%lu)." +msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)." +msgstr "Erreur DWARF: décalage de ligne (%lu) est >= à la taille de %s (%lu)" -#: dwarf2.c:756 +#: dwarf2.c:940 #, c-format msgid "Dwarf Error: Invalid or unhandled FORM value: %u." -msgstr "Erreur DWARF: valeur de FORME invalide ou mal traitée: %u" +msgstr "Erreur DWARF: valeur de FORME invalide ou non supportée: %u" -#: dwarf2.c:933 +#: dwarf2.c:1191 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 de ligne de section mutilé (mauvais no. de fichier)" -#: dwarf2.c:1032 -msgid "Dwarf Error: Can't find .debug_line section." -msgstr "Erreur DWARF: ne peut repérer la section .debug_line" - -#: dwarf2.c:1049 +#: dwarf2.c:1443 #, c-format -msgid "Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu)." -msgstr "Erreur DWARF: décalage de ligne (%lu) est >= à la taille de .debug_line (%lu)" +msgid "Dwarf Error: Unhandled .debug_line version %d." +msgstr "Erreur DWARF: Version .debug_line %d non prise en charge." + +#: dwarf2.c:1465 +msgid "Dwarf Error: Invalid maximum operations per instruction." +msgstr "Erreur DWARF: Opérations maximum par instruction invalide." -#: dwarf2.c:1255 +#: dwarf2.c:1652 msgid "Dwarf Error: mangled line number section." -msgstr "Erreur DWARF: numéro mutilé de ligne de section" +msgstr "Erreur DWARF: numéro de ligne de section mutilé" -#: dwarf2.c:1470 dwarf2.c:1620 +#: dwarf2.c:1978 dwarf2.c:2098 dwarf2.c:2382 #, c-format msgid "Dwarf Error: Could not find abbrev number %u." -msgstr "Erreur DWARF: ne peut repérer le numéro abrégé %u" +msgstr "Erreur DWARF: ne peut repérer le numéro abrégé %u" -#: dwarf2.c:1581 +#: dwarf2.c:2343 #, c-format -msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information." -msgstr "Erreur DWARF: version DWARF retrouvée « %u », ce lecteur ne supporte que les informations de la version 2." +msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information." +msgstr "Erreur DWARF: version DWARF trouvée «%u», ce lecteur ne supporte que les informations des versions 2, 3 et 4." -#: dwarf2.c:1588 +#: dwarf2.c:2350 #, 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 »." +msgstr "Erreur DWARF: taille d'adresse obtenue «%u», ce lecteur ne peut traiter des tailles plus grandes que «%u»." -#: dwarf2.c:1611 +#: dwarf2.c:2373 #, c-format msgid "Dwarf Error: Bad abbrev number: %u." -msgstr "Erreur DWARF: mauvais numéro abrégé: %u" +msgstr "Erreur DWARF: mauvais numéro abrégé: %u" -#: ecoff.c:1339 +#: ecoff.c:1237 #, c-format msgid "Unknown basic type %d" -msgstr "type de base inconnu %d" +msgstr "Type de base %d inconnu" -#: ecoff.c:1599 +#: ecoff.c:1494 #, c-format msgid "" "\n" @@ -524,7 +567,7 @@ "\n" " Dernier+1 symbole: %ld" -#: ecoff.c:1606 ecoff.c:1609 +#: ecoff.c:1501 ecoff.c:1504 #, c-format msgid "" "\n" @@ -533,7 +576,7 @@ "\n" " Premier symbole: %ld" -#: ecoff.c:1621 +#: ecoff.c:1516 #, c-format msgid "" "\n" @@ -542,7 +585,7 @@ "\n" " Dernier+1 symbole: %-7ld Type: %s" -#: ecoff.c:1628 +#: ecoff.c:1523 #, c-format msgid "" "\n" @@ -551,7 +594,7 @@ "\n" " Symbole local: %ld" -#: ecoff.c:1636 +#: ecoff.c:1531 #, c-format msgid "" "\n" @@ -560,7 +603,7 @@ "\n" " struct; Symbole Fin+1: %ld" -#: ecoff.c:1641 +#: ecoff.c:1536 #, c-format msgid "" "\n" @@ -569,7 +612,7 @@ "\n" " union; Dernier+1 symbole: %ld" -#: ecoff.c:1646 +#: ecoff.c:1541 #, c-format msgid "" "\n" @@ -578,7 +621,7 @@ "\n" " enum; Dernier+1 symbol: %ld" -#: ecoff.c:1652 +#: ecoff.c:1547 #, c-format msgid "" "\n" @@ -587,66 +630,142 @@ "\n" " Type: %s" -#: elf-hppa.h:1458 elf-hppa.h:1491 elf-m10300.c:1628 elf64-sh64.c:1704 -#, c-format -msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section" -msgstr "%s: AVERTISSEMENT: relocalisation sans solution vers le symbole « %s » de la section %s" - -#: elf-m10200.c:442 elf-m10300.c:1695 elf32-arm.h:2088 elf32-avr.c:812 -#: elf32-cris.c:1390 elf32-d10v.c:570 elf32-fr30.c:634 elf32-frv.c:815 -#: elf32-h8300.c:528 elf32-i860.c:1028 elf32-ip2k.c:1586 elf32-iq2000.c:699 -#: elf32-m32r.c:1283 elf32-m68hc1x.c:1305 elf32-msp430.c:510 -#: elf32-openrisc.c:436 elf32-v850.c:1777 elf32-xstormy16.c:976 -#: elf64-mmix.c:1332 +#: elf-attrs.c:569 +msgid "error: %B: Object has vendor-specific contents that must be processed by the '%s' toolchain" +msgstr "erreur: %B: L'objet a un contenu spécific à un vendeur qui doit être traité par la chaîne d'outils «%s»" + +#: elf-attrs.c:578 +msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'" +msgstr "erreur: %B: Étiquette d'objet «%d, %s» incompatible avec l'étiquette «%d, %s»" + +#: elf-eh-frame.c:913 +msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n" +msgstr "%P: erreur dans %B(%A); aucune table .eh_frame_hdr ne sera créée.\n" + +#: elf-eh-frame.c:1165 +msgid "%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n" +msgstr "%P: encodage fde dans %B(%A) empêche la création de la table .eh_frame_hdr.\n" + +#: elf-ifunc.c:179 +msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%B' can not be used when making an executable; recompile with -fPIE and relink with -pie\n" +msgstr "%P%P: symbole dynamique STT_GNU_IFUNC «%s» avec une égalité de pointeur dans «%B» ne peut pas être utilisé lors de la création d'un exécutable. Recompilez avec -fPIE et reliez avec -pie\n" + +#: elf-m10200.c:450 elf-m10300.c:1560 elf32-avr.c:1263 elf32-bfin.c:3193 +#: elf32-cr16.c:1482 elf32-cr16c.c:780 elf32-cris.c:2077 elf32-crx.c:922 +#: elf32-d10v.c:509 elf32-fr30.c:609 elf32-frv.c:4111 elf32-h8300.c:509 +#: elf32-i860.c:1211 elf32-ip2k.c:1468 elf32-iq2000.c:684 elf32-lm32.c:1168 +#: elf32-m32c.c:553 elf32-m32r.c:3111 elf32-m68hc1x.c:1138 elf32-mep.c:534 +#: elf32-microblaze.c:1231 elf32-moxie.c:282 elf32-msp430.c:486 elf32-mt.c:395 +#: elf32-openrisc.c:404 elf32-score.c:2731 elf32-score7.c:2540 +#: elf32-spu.c:5042 elf32-v850.c:2143 elf32-xstormy16.c:941 elf64-mmix.c:1522 msgid "internal error: out of range error" msgstr "erreur interne: hors limite" -#: elf-m10200.c:446 elf-m10300.c:1699 elf32-arm.h:2092 elf32-avr.c:816 -#: elf32-cris.c:1394 elf32-d10v.c:574 elf32-fr30.c:638 elf32-frv.c:819 -#: elf32-h8300.c:532 elf32-i860.c:1032 elf32-iq2000.c:703 elf32-m32r.c:1287 -#: elf32-m68hc1x.c:1309 elf32-msp430.c:514 elf32-openrisc.c:440 -#: elf32-v850.c:1781 elf32-xstormy16.c:980 elf64-mmix.c:1336 elfxx-mips.c:6452 +#: elf-m10200.c:454 elf-m10300.c:1564 elf32-avr.c:1267 elf32-bfin.c:3197 +#: elf32-cr16.c:1486 elf32-cr16c.c:784 elf32-cris.c:2081 elf32-crx.c:926 +#: elf32-d10v.c:513 elf32-fr30.c:613 elf32-frv.c:4115 elf32-h8300.c:513 +#: elf32-i860.c:1215 elf32-iq2000.c:688 elf32-lm32.c:1172 elf32-m32c.c:557 +#: elf32-m32r.c:3115 elf32-m68hc1x.c:1142 elf32-mep.c:538 +#: elf32-microblaze.c:1235 elf32-moxie.c:286 elf32-msp430.c:490 +#: elf32-openrisc.c:408 elf32-score.c:2735 elf32-score7.c:2544 +#: elf32-spu.c:5046 elf32-v850.c:2147 elf32-xstormy16.c:945 elf64-mmix.c:1526 +#: elfxx-mips.c:9186 msgid "internal error: unsupported relocation error" -msgstr "erreur interne: erreur de relocalisation non supportée" +msgstr "erreur interne: erreur de relocalisation non supportée" -#: elf-m10200.c:450 elf-m10300.c:1703 elf32-arm.h:2096 elf32-d10v.c:578 -#: elf32-h8300.c:536 elf32-m32r.c:1291 elf32-m68hc1x.c:1313 +#: elf-m10200.c:458 elf32-cr16.c:1490 elf32-cr16c.c:788 elf32-crx.c:930 +#: elf32-d10v.c:517 elf32-h8300.c:517 elf32-lm32.c:1176 elf32-m32r.c:3119 +#: elf32-m68hc1x.c:1146 elf32-microblaze.c:1239 elf32-score.c:2739 +#: elf32-score7.c:2548 elf32-spu.c:5050 msgid "internal error: dangerous error" msgstr "erreur interne: erreur dangereuse" -#: elf-m10200.c:454 elf-m10300.c:1707 elf32-arm.h:2100 elf32-avr.c:824 -#: elf32-cris.c:1402 elf32-d10v.c:582 elf32-fr30.c:646 elf32-frv.c:827 -#: elf32-h8300.c:540 elf32-i860.c:1040 elf32-ip2k.c:1601 elf32-iq2000.c:711 -#: elf32-m32r.c:1295 elf32-m68hc1x.c:1317 elf32-msp430.c:522 -#: elf32-openrisc.c:448 elf32-v850.c:1801 elf32-xstormy16.c:988 -#: elf64-mmix.c:1344 +#: elf-m10200.c:462 elf-m10300.c:1577 elf32-avr.c:1275 elf32-bfin.c:3205 +#: elf32-cr16.c:1494 elf32-cr16c.c:792 elf32-cris.c:2089 elf32-crx.c:934 +#: elf32-d10v.c:521 elf32-fr30.c:621 elf32-frv.c:4123 elf32-h8300.c:521 +#: elf32-i860.c:1223 elf32-ip2k.c:1483 elf32-iq2000.c:696 elf32-lm32.c:1180 +#: elf32-m32c.c:565 elf32-m32r.c:3123 elf32-m68hc1x.c:1150 elf32-mep.c:546 +#: elf32-microblaze.c:1243 elf32-moxie.c:294 elf32-msp430.c:498 elf32-mt.c:403 +#: elf32-openrisc.c:416 elf32-score.c:2748 elf32-score7.c:2552 +#: elf32-spu.c:5054 elf32-v850.c:2167 elf32-xstormy16.c:953 elf64-mmix.c:1534 msgid "internal error: unknown error" msgstr "erreur interne: erreur inconnue" -#: elf.c:372 -#, 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 »" - -#: elf.c:624 -#, c-format -msgid "%s: invalid SHT_GROUP entry" -msgstr "%s: entrée SHT_GROUP invalide" +#: elf-m10300.c:1504 elf32-arm.c:9098 elf32-i386.c:4081 elf32-m32r.c:2604 +#: elf32-m68k.c:4156 elf32-ppc.c:8089 elf32-s390.c:3010 elf32-sh.c:4223 +#: elf32-xtensa.c:3067 elf64-ppc.c:13115 elf64-s390.c:2985 elf64-sh64.c:1636 +#: elf64-x86-64.c:3719 elfxx-sparc.c:3806 +msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%B(%A+0x%lx): relocalisation %s sans solution vers le symbole «%s»" + +#: elf-m10300.c:1569 +msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)" +msgstr "erreur: type de relocalisation inapproprié pour une librairie partagée (avez vous oublié -fpic ?)" + +#: elf-m10300.c:1572 +msgid "internal error: suspicious relocation type used in shared library" +msgstr "erreur interne: type de relocalisation douteux utilisé dans une librairie partagée" + +#: elf-m10300.c:4372 elf32-arm.c:11392 elf32-cr16.c:2451 elf32-cris.c:3044 +#: elf32-hppa.c:1894 elf32-i370.c:503 elf32-i386.c:2036 elf32-lm32.c:1868 +#: elf32-m32r.c:1927 elf32-m68k.c:3252 elf32-ppc.c:4994 elf32-s390.c:1652 +#: elf32-sh.c:2931 elf32-vax.c:1040 elf64-ppc.c:6483 elf64-s390.c:1635 +#: elf64-sh64.c:3377 elf64-x86-64.c:1871 elfxx-sparc.c:2104 +#, c-format +msgid "dynamic variable `%s' is zero size" +msgstr "la variable dynamique «%s» a une taille nulle" + +#: elf.c:334 +msgid "%B: invalid string offset %u >= %lu for section `%s'" +msgstr "%B: chaîne de décalage invalide %u >= %lu pour la section «%s»" + +#: elf.c:446 +msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" +msgstr "%B le symbole numéro %lu fait référence à une section SHT_SYMTAB_SHNDX inexistante" + +#: elf.c:602 +msgid "%B: Corrupt size field in group section header: 0x%lx" +msgstr "%B: Champ de taille corrompu dans l'en-tête du groupe de section: 0x%lx" + +#: elf.c:638 +msgid "%B: invalid SHT_GROUP entry" +msgstr "%B: entrée SHT_GROUP invalide" + +#: elf.c:708 +msgid "%B: no group info for section %A" +msgstr "%B: aucune info de groupe pour la section %A" + +#: elf.c:737 elf.c:3090 elflink.c:10062 +msgid "%B: warning: sh_link not set for section `%A'" +msgstr "%B: attention: sh_link n'a pas de valeur pour la section «%A»" + +#: elf.c:756 +msgid "%B: sh_link [%d] in section `%A' is incorrect" +msgstr "%B: sh_link [%d] n'est pas correct dans la section «%A»" + +#: elf.c:791 +msgid "%B: unknown [%d] section `%s' in group [%s]" +msgstr "%B: [%d] inconnu dans la section «%s» du groupe [%s]" + +#: elf.c:1041 +msgid "%B: unable to initialize commpress status for section %s" +msgstr "%B: impossible d'initialiser le statut de compression de la section %s" + +#: elf.c:1050 +msgid "%B: unable to initialize decommpress status for section %s" +msgstr "%B: impossible d'initialiser le statut de décompression de la section %s" -#: elf.c:695 +#: elf.c:1158 #, c-format -msgid "%s: no group info for section %s" -msgstr "%s: aucune info de groupe pour la section %s" - -#: elf.c:1055 msgid "" "\n" "Program Header:\n" msgstr "" "\n" -"En-tête de programme:\n" +"En-tête de programme:\n" -#: elf.c:1106 +#: elf.c:1200 +#, c-format msgid "" "\n" "Dynamic Section:\n" @@ -654,2150 +773,4938 @@ "\n" "Section dynamique:\n" -#: elf.c:1235 +#: elf.c:1336 +#, c-format msgid "" "\n" "Version definitions:\n" msgstr "" "\n" -"Définitions des versions:\n" +"Définitions des versions:\n" -#: elf.c:1258 +#: elf.c:1361 +#, c-format msgid "" "\n" "Version References:\n" msgstr "" "\n" -"Références de version:\n" +"Références de version:\n" -#: elf.c:1263 +#: elf.c:1366 #, c-format msgid " required from %s:\n" msgstr " requis par %s:\n" -#: elf.c:1944 -#, 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)" +#: elf.c:1773 +msgid "%B: invalid link %lu for reloc section %s (index %u)" +msgstr "%B: lien invalide %lu pour la section de relocalisation %s (index %u)" -#: elf.c:3686 -#, 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)" +#: elf.c:1943 +msgid "%B: don't know how to handle allocated, application specific section `%s' [0x%8x]" +msgstr "%B: je ne sais pas comment traiter la section «%s» [0x%8x] allouée et spécifique à l'application" -#: elf.c:3791 -#, 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" +#: elf.c:1955 +msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]" +msgstr "%B: je ne sais pas comment traiter la section «%s» [0x%8x] spécifique au processeur" -#: elf.c:3922 -#, 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" +#: elf.c:1966 +msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]" +msgstr "%B: je ne sais pas comment traiter la section «%s» [0x%8x] spécifique au système d'exploitation" -#: elf.c:4242 -#, c-format -msgid "%s: warning: allocated section `%s' not in segment" -msgstr "%s: AVERTISSEMENT: section allouée « %s » n'est pas dans le segment" +#: elf.c:1976 +msgid "%B: don't know how to handle section `%s' [0x%8x]" +msgstr "%B: je ne sais pas comment traiter la section «%s» [0x%8x]" -#: elf.c:4566 +#: elf.c:2603 #, c-format -msgid "%s: symbol `%s' required but not present" -msgstr "%s: symbole « %s » requis mais absent" +msgid "warning: section `%A' type changed to PROGBITS" +msgstr "attention: type de la section «%A» changé en PROGBITS" -#: elf.c:4854 -#, c-format -msgid "%s: warning: Empty loadable segment detected, is this intentional ?\n" -msgstr "%s: AVERTISSEMENT: segment chargeable vide détecté, est-ce intentionnel ?\n" +#: elf.c:3047 +msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'" +msgstr "%B: le sh_link de la section «%A» pointe vers la section abandonnée «%A» de «%B»" -#: elf.c:5485 -#, c-format -msgid "Unable to find equivalent output section for symbol '%s' from section '%s'" -msgstr "Incapable de trouver un équivalent pour le symbole « %s » de la section « %s »" +#: elf.c:3070 +msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'" +msgstr "%B: le sh_link de la section «%A» pointe vers la section supprimée «%A» de «%B»" -#: elf.c:6298 -#, c-format -msgid "%s: unsupported relocation type %s" -msgstr "%s: type de relocalisation non supporté %s" +#: elf.c:4480 +msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section" +msgstr "%B: La première section dans le segment PT_DYNAMIC n'est pas la section .dynamic" -#: elf32-arm.h:1228 -#, c-format -msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." -msgstr "%s: AVERTISSEMENT: instruction Arm BLX vise la fonction Arm « %s »." +#: elf.c:4507 +msgid "%B: Not enough room for program headers, try linking with -N" +msgstr "%B: Pas suffisamment d'espace pour les en-têtes du programme, essayer l'option -N" -#: elf32-arm.h:1424 -#, 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 »." +#: elf.c:4594 +msgid "%B: section %A lma %#lx adjusted to %#lx" +msgstr "%B: section %A avec lma %#lx ajustée à %#lx" -#: elf32-arm.h:1918 elf32-sh.c:4706 elf64-sh64.c:1613 -#, c-format -msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section" -msgstr "%s(%s+0x%lx): %s relocation vers une section SEC_MERGE" +#: elf.c:4713 +msgid "%B: section `%A' can't be allocated in segment %d" +msgstr "%B: la section «%A» ne peut pas être allouée dans le segment %d" -#: elf32-arm.h:2012 -#, 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" +#: elf.c:4761 +msgid "%B: warning: allocated section `%s' not in segment" +msgstr "%B: attention: section allouée «%s» n'est pas dans le segment" -#: elf32-arm.h:2202 -#, c-format -msgid "Warning: Clearing the interworking flag of %s because non-interworking code in %s has been linked with it" -msgstr "AVERTISSEMENT: mise à zéro du fanion d'inter-réseautage %s en raison du code sans inter-réseautage dans %s lié avec lui" +#: elf.c:5257 +msgid "%B: symbol `%s' required but not present" +msgstr "%B: symbole «%s» requis mais absent" -#: elf32-arm.h:2302 -#, c-format -msgid "ERROR: %s is 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" +#: elf.c:5595 +msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n" +msgstr "%B: attention: segment chargeable vide détecté, est-ce intentionnel ?\n" -#: elf32-arm.h:2316 +#: elf.c:6622 #, c-format -msgid "ERROR: %s is compiled for APCS-%d, whereas target %s uses APCS-%d" -msgstr "ERREUR: %s compilé pour APCS-%d alors que la cible %s utilise APCS-%d" +msgid "Unable to find equivalent output section for symbol '%s' from section '%s'" +msgstr "Incapable de trouver un équivalent pour le symbole «%s» de la section «%s»" -#: elf32-arm.h:2344 -#, c-format -msgid "ERROR: %s uses VFP instructions, whereas %s does not" -msgstr "ERREUR: %s utilise les instructions VFP alors que %s ne les utilise pas" +#: elf.c:7611 +msgid "%B: unsupported relocation type %s" +msgstr "%B: type de relocalisation %s non supporté" + +#: elf32-arm.c:3183 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: Thumb call to ARM" +msgstr "" +"%B(%s): attention: l'inter-réseautage n'est pas activé.\n" +" première occurrence: %B: appel de repère vers ARM" + +#: elf32-arm.c:3226 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: ARM call to Thumb" +msgstr "" +"%B(%s): attention: l'inter-réseautage n'est pas activé.\n" +" première occurrence: %B: appel ARM vers repère" -#: elf32-arm.h:2349 +#: elf32-arm.c:3432 elf32-arm.c:4807 #, c-format -msgid "ERROR: %s uses FPA instructions, whereas %s does not" -msgstr "ERREUR: %s utilise les instructions FPA alors que %s ne les utilise pas" +msgid "%s: cannot create stub entry %s" +msgstr "%s: ne peut créer l'entrée d'ébauche %s" -#: elf32-arm.h:2360 elf32-arm.h:2365 +#: elf32-arm.c:4923 #, c-format -msgid "ERROR: %s uses Maverick instructions, whereas %s does not" -msgstr "ERREUR: %s utilise les instructions Maverick alors que %s ne les utilise pas" +msgid "unable to find THUMB glue '%s' for '%s'" +msgstr "incapable de repérer le REPÈRE de liant «%s» pour «%s»" -#: elf32-arm.h:2385 +#: elf32-arm.c:4959 #, 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" +msgid "unable to find ARM glue '%s' for '%s'" +msgstr "incapable de repérer le liant ARM «%s» pour «%s»" + +#: elf32-arm.c:5485 +msgid "%B: BE8 images only valid in big-endian mode." +msgstr "%B: les images BE8 ne sont valables qu'en mode gros boutiste." + +#. Give a warning, but do as the user requests anyway. +#: elf32-arm.c:5715 +msgid "%B: warning: selected VFP11 erratum workaround is not necessary for target architecture" +msgstr "%B: attention: le palliatif VFP11 n'est pas nécessaire avec l'architecture cible" + +#: elf32-arm.c:6259 elf32-arm.c:6279 +msgid "%B: unable to find VFP11 veneer `%s'" +msgstr "%B: incapable de trouver le vernis VFP11 «%s»" -#: elf32-arm.h:2390 +#: elf32-arm.c:6327 #, 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" +msgid "Invalid TARGET2 relocation type '%s'." +msgstr "Type de relocalisation TARGET2 «%s» invalide" + +#: elf32-arm.c:6411 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: thumb call to arm" +msgstr "" +"%B(%s): attention: l'inter-réseautage n'est pas activé.\n" +" première occurrence: %B: appel de repère vers arm" + +#: elf32-arm.c:7130 +msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'." +msgstr "\\%B: Attention: instruction Arm BLX vise la fonction Arm «%s»." + +#: elf32-arm.c:7541 +msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'." +msgstr "%B: Attention: instruction de repérage BLX vise la fonction de repérage «%s»." + +#: elf32-arm.c:8223 +msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object" +msgstr "%B(%A+0x%lx): relocalisation R_ARM_TLS_LE32 pas permise dans un objet partagé" + +#: elf32-arm.c:8438 +msgid "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group relocations" +msgstr "%B(%A+0x%lx): Seuls ADD ou SUB sont permis dans les relocalisations du groupe ALU" + +#: elf32-arm.c:8478 elf32-arm.c:8565 elf32-arm.c:8648 elf32-arm.c:8733 +msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s" +msgstr "%B(%A+0x%lx): Débordement en scindant 0x%lx pour la relocalisation du group %s" + +#: elf32-arm.c:8963 elf32-sh.c:4112 elf64-sh64.c:1544 +msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section" +msgstr "%B(%A+0x%lx): %s relocalisation vers une section SEC_MERGE" + +#: elf32-arm.c:9074 elf32-m68k.c:4191 elf32-xtensa.c:2805 elf64-ppc.c:11689 +msgid "%B(%A+0x%lx): %s used with TLS symbol %s" +msgstr "%B(%A+0x%lx): %s utilisé avec le symbole TLS %s" + +#: elf32-arm.c:9075 elf32-m68k.c:4192 elf32-xtensa.c:2806 elf64-ppc.c:11690 +msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s" +msgstr "%B(%A+0x%lx): %s utilisé avec le symbole non-TLS %s" + +#: elf32-arm.c:9132 elf32-tic6x.c:1632 +msgid "out of range" +msgstr "hors limite" + +#: elf32-arm.c:9136 elf32-tic6x.c:1636 +msgid "unsupported relocation" +msgstr "relocalisation non supportée" + +#: elf32-arm.c:9144 elf32-tic6x.c:1644 +msgid "unknown error" +msgstr "erreur inconnue" + +#: elf32-arm.c:9569 +msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it" +msgstr "Attention: mise à zéro du fanion d'inter-réseautage %B en raison du code sans inter-réseautage dans %B lié avec lui" + +#: elf32-arm.c:9663 +msgid "%B: Unknown mandatory EABI object attribute %d" +msgstr "%B: L'attribut d'objet EABI obligatoire %d est manquant" + +#: elf32-arm.c:9671 +msgid "Warning: %B: Unknown EABI object attribute %d" +msgstr "Attention: %B: Attribut d'objet EABI %d inconnu" + +#: elf32-arm.c:9852 +msgid "error: %B: Unknown CPU architecture" +msgstr "erreur: %B: Architecture CPU inconnue" + +#: elf32-arm.c:9890 +msgid "error: %B: Conflicting CPU architectures %d/%d" +msgstr "erreur: %B: Architectures CPU conflictuelles %d/%d" + +#: elf32-arm.c:9942 +msgid "Error: %B has both the current and legacy Tag_MPextension_use attributes" +msgstr "Erreur: %B utilise les deux attributs Tag_MPextension_use actuel et hérité" + +#: elf32-arm.c:9967 +msgid "error: %B uses VFP register arguments, %B does not" +msgstr "erreur: %B passe les paramètres dans un registre VFP alors que %B ne le fait pas" + +#: elf32-arm.c:10112 +msgid "error: %B: unable to merge virtualization attributes with %B" +msgstr "erreur: %B: impossible de fusionner les attributs de visualisation avec %B" + +#: elf32-arm.c:10138 +msgid "error: %B: Conflicting architecture profiles %c/%c" +msgstr "erreur: %B: Profils d'architecture conflictuels %c/%c" + +#: elf32-arm.c:10239 +msgid "Warning: %B: Conflicting platform configuration" +msgstr "Attention: %B: Configuration de platforme conflictuelle" + +#: elf32-arm.c:10248 +msgid "error: %B: Conflicting use of R9" +msgstr "erreur: %B: Utilisation conflictuelle de R9" + +#: elf32-arm.c:10260 +msgid "error: %B: SB relative addressing conflicts with use of R9" +msgstr "erreur: %B: Adressage relatif SB entre en conflit avec l'utilisation de R9" + +#: elf32-arm.c:10273 +msgid "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail" +msgstr "attention: %B utilise des wchar_t de %u octets alors que la sortie doit utiliser des wchar_t de %u octets. L'utilisation de wchar_t entre objets peu échouer" + +#: elf32-arm.c:10304 +msgid "warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail" +msgstr "attantion: %B utilise des enums %s alors que la sortie doit utiliser des enums %s. L'utilisation des valeurs enum entre objets peu échouer" + +#: elf32-arm.c:10316 +msgid "error: %B uses iWMMXt register arguments, %B does not" +msgstr "erreur: %B passe les paramètres dans le registre iWMMXt contrairement à %B" + +#: elf32-arm.c:10333 +msgid "error: fp16 format mismatch between %B and %B" +msgstr "erreur: désaccord de format fp16 entre %B et %B" + +#: elf32-arm.c:10357 +msgid "DIV usage mismatch between %B and %B" +msgstr "incohérence d'utilisation de DIV entre %B et %B" + +#: elf32-arm.c:10376 +msgid "%B has has both the current and legacy Tag_MPextension_use attributes" +msgstr "%B utilise les deux attributs Tag_MPextension_use actuel et hérité" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. -#: elf32-arm.h:2443 elf32-cris.c:2975 elf32-m68hc1x.c:1459 elf32-m68k.c:397 -#: elf32-vax.c:546 elfxx-mips.c:9238 +#. Ignore init flag - it may not be set, despite the flags field containing valid data. +#: elf32-arm.c:10468 elf32-bfin.c:5065 elf32-cris.c:4162 elf32-m68hc1x.c:1282 +#: elf32-m68k.c:1235 elf32-score.c:3996 elf32-score7.c:3803 elf32-vax.c:528 +#: elfxx-mips.c:12842 #, c-format msgid "private flags = %lx:" -msgstr "fanions privés = %lx" +msgstr "fanions privés = %lx" -#: elf32-arm.h:2452 +#: elf32-arm.c:10477 +#, c-format msgid " [interworking enabled]" -msgstr " [inter-réseautage autorisé]" +msgstr " [inter-réseautage autorisé]" -#: elf32-arm.h:2460 +#: elf32-arm.c:10485 +#, c-format msgid " [VFP float format]" msgstr " [format flottant VFP]" -#: elf32-arm.h:2462 +#: elf32-arm.c:10487 +#, c-format msgid " [Maverick float format]" msgstr " [format flottant Maverick]" -#: elf32-arm.h:2464 +#: elf32-arm.c:10489 +#, c-format msgid " [FPA float format]" msgstr " [format flottant FPA]" -#: elf32-arm.h:2473 +#: elf32-arm.c:10498 +#, c-format msgid " [new ABI]" msgstr " [nouvel ABI]" -#: elf32-arm.h:2476 +#: elf32-arm.c:10501 +#, c-format msgid " [old ABI]" msgstr " [ancien ABI]" -#: elf32-arm.h:2479 +#: elf32-arm.c:10504 +#, c-format msgid " [software FP]" msgstr " [virgule flottante logiciel]" -#: elf32-arm.h:2488 +#: elf32-arm.c:10513 +#, c-format msgid " [Version1 EABI]" -msgstr " [Version 1 EABI]" +msgstr " [Version1 EABI]" -#: elf32-arm.h:2491 elf32-arm.h:2502 +#: elf32-arm.c:10516 elf32-arm.c:10527 +#, c-format msgid " [sorted symbol table]" -msgstr " [table des symboles triés]" +msgstr " [table des symboles triés]" -#: elf32-arm.h:2493 elf32-arm.h:2504 +#: elf32-arm.c:10518 elf32-arm.c:10529 +#, c-format msgid " [unsorted symbol table]" -msgstr " [table des symboles non triés]" +msgstr " [table des symboles non triés]" -#: elf32-arm.h:2499 +#: elf32-arm.c:10524 +#, c-format msgid " [Version2 EABI]" msgstr " [Version2 EABI]" -#: elf32-arm.h:2507 +#: elf32-arm.c:10532 +#, c-format msgid " [dynamic symbols use segment index]" msgstr " [symboles dynamiques utilisent un index de segment]" -#: elf32-arm.h:2510 +#: elf32-arm.c:10535 +#, c-format msgid " [mapping symbols precede others]" -msgstr " [mapping de symboles précèdes les autres]" +msgstr " [mapping de symboles précèdes les autres]" + +#: elf32-arm.c:10542 +#, c-format +msgid " [Version3 EABI]" +msgstr " [Version3 EABI]" + +#: elf32-arm.c:10546 +#, c-format +msgid " [Version4 EABI]" +msgstr " [Version4 EABI]" + +#: elf32-arm.c:10550 +#, c-format +msgid " [Version5 EABI]" +msgstr " [Version5 EABI]" + +#: elf32-arm.c:10553 +#, c-format +msgid " [BE8]" +msgstr " [BE8]" + +#: elf32-arm.c:10556 +#, c-format +msgid " [LE8]" +msgstr " [LE8]" -#: elf32-arm.h:2517 +#: elf32-arm.c:10562 +#, c-format msgid " " msgstr " " -#: elf32-arm.h:2524 +#: elf32-arm.c:10569 +#, c-format msgid " [relocatable executable]" -msgstr " [exécutables relocalisés]" +msgstr " [exécutables relocalisés]" -#: elf32-arm.h:2527 +#: elf32-arm.c:10572 +#, c-format msgid " [has entry point]" -msgstr " [a des points d'entrées]" +msgstr " [a des points d'entrées]" -#: elf32-arm.h:2532 +#: elf32-arm.c:10577 +#, c-format msgid "" msgstr "" -#: elf32-avr.c:820 elf32-cris.c:1398 elf32-fr30.c:642 elf32-frv.c:823 -#: elf32-i860.c:1036 elf32-ip2k.c:1597 elf32-iq2000.c:707 elf32-msp430.c:518 -#: elf32-openrisc.c:444 elf32-v850.c:1785 elf32-xstormy16.c:984 -#: elf64-mmix.c:1340 +#: elf32-arm.c:10824 elf32-i386.c:1322 elf32-s390.c:1000 elf32-xtensa.c:1009 +#: elf64-s390.c:960 elf64-x86-64.c:1105 elfxx-sparc.c:1370 +msgid "%B: bad symbol index: %d" +msgstr "%B: symbole index erroné: %d" + +#: elf32-arm.c:10946 elf64-x86-64.c:1265 elf64-x86-64.c:1434 elfxx-mips.c:7942 +msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" +msgstr "%B: relocalisation de %s en vertu de «%s» ne peut être utilisée lors de la création d'un objet partagé; recompiler avec -fPIC" + +#: elf32-arm.c:11948 +#, c-format +msgid "Errors encountered processing file %s" +msgstr "Erreurs rencontrées pendant le traitement du fichier %s" + +#: elf32-arm.c:13334 +msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location" +msgstr "%B: erreur: L'ébauche d'erratum du Cortex A8 est allouée à un emplacement peu sûr" + +#. There's not much we can do apart from complain if this +#. happens. +#: elf32-arm.c:13361 +msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)" +msgstr "%B: erreur: L'ébauche d'erratum du Cortex A8 est hors limite (fichier d'entrée trop grand)" + +#: elf32-arm.c:13455 elf32-arm.c:13477 +msgid "%B: error: VFP11 veneer out of range" +msgstr "%B: erreur: vernis VFP11 hors limite" + +#: elf32-arm.c:14002 +msgid "error: %B is already in final BE8 format" +msgstr "erreur: %B est déjà au format final BE8" + +#: elf32-arm.c:14078 +msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d" +msgstr "erreur: L'objet source %B a l'EABI version %d alors que la cible %B a l'EABI version %d" + +#: elf32-arm.c:14094 +msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" +msgstr "erreur: %B compilé pour APCS-%d alors que la cible %B utilise APCS-%d" + +#: elf32-arm.c:14119 +msgid "error: %B uses VFP instructions, whereas %B does not" +msgstr "erreur: %B utilise les instructions VFP alors que %B ne les utilise pas" + +#: elf32-arm.c:14123 +msgid "error: %B uses FPA instructions, whereas %B does not" +msgstr "erreur: %B utilise les instructions FPA alors que %B ne les utilise pas" + +#: elf32-arm.c:14133 +msgid "error: %B uses Maverick instructions, whereas %B does not" +msgstr "erreur: %B utilise les instructions Maverick alors que %B ne les utilise pas" + +#: elf32-arm.c:14137 +msgid "error: %B does not use Maverick instructions, whereas %B does" +msgstr "erreur: %B n'utilise pas les instructions Maverick alors que %B les utilise" + +#: elf32-arm.c:14156 +msgid "error: %B uses software FP, whereas %B uses hardware FP" +msgstr "erreur: %B utilise le logiciel pour virgule flottante alors que %B utilise le matériel pour virgule flottante" + +#: elf32-arm.c:14160 +msgid "error: %B uses hardware FP, whereas %B uses software FP" +msgstr "erreur: %B utilise le matériel pour virgule flottante alors que %B utilise le logiciel pour virgule flottante" + +#: elf32-avr.c:1271 elf32-bfin.c:3201 elf32-cris.c:2085 elf32-fr30.c:617 +#: elf32-frv.c:4119 elf32-i860.c:1219 elf32-ip2k.c:1479 elf32-iq2000.c:692 +#: elf32-m32c.c:561 elf32-mep.c:542 elf32-moxie.c:290 elf32-msp430.c:494 +#: elf32-mt.c:399 elf32-openrisc.c:412 elf32-v850.c:2151 elf32-xstormy16.c:949 +#: elf64-mmix.c:1530 msgid "internal error: dangerous relocation" msgstr "erreur interne: relocalisation dangereuse" -#: elf32-cris.c:931 -#, 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-avr.c:2400 elf32-hppa.c:598 elf32-m68hc1x.c:166 elf64-ppc.c:4175 +msgid "%B: cannot create stub entry %s" +msgstr "%B: ne peut créer l'entrée de l'ébauche %s" -#: elf32-cris.c:993 -#, 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-bfin.c:1575 +msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'" +msgstr "%B(%A+0x%lx): relocalisation sans solution vers le symbole «%s»" -#: elf32-cris.c:996 elf32-cris.c:1122 -msgid "[whose name is lost]" -msgstr "[où le nom est perdu]" +#: elf32-bfin.c:1608 elf32-i386.c:4123 elf32-m68k.c:4233 elf32-s390.c:3062 +#: elf64-s390.c:3037 elf64-x86-64.c:3759 +msgid "%B(%A+0x%lx): reloc against `%s': error %d" +msgstr "%B(%A+0x%lx): relocalisation vers «%s»: erreur %d" -#: elf32-cris.c:1111 -#, 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-bfin.c:2707 +msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend" +msgstr "%B: relocalisation à «%A+0x%x» fait référence au symbole «%s» avec un opérande non nul" -#: elf32-cris.c:1118 -#, 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-bfin.c:2721 elf32-frv.c:2901 +msgid "relocation references symbol not defined in the module" +msgstr "la relocalisation fait référence à un symbole non défini dans le module" -#: elf32-cris.c:1143 -#, 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-bfin.c:2818 +msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend" +msgstr "R_BFIN_FUNCDESC fait référence à un symbole dynamique avec un opérande non nul" -#: elf32-cris.c:1158 -#, c-format -msgid "%s: relocation %s in section %s with no GOT created" -msgstr "%s: relocalisation %s dans la section %s mais aucun GOT créé" +#: elf32-bfin.c:2859 elf32-bfin.c:2982 elf32-frv.c:3638 elf32-frv.c:3759 +msgid "cannot emit fixups in read-only section" +msgstr "impossible d'apporter des corrections dans une section en lecture seule" + +#: elf32-bfin.c:2890 elf32-bfin.c:3020 elf32-frv.c:3669 elf32-frv.c:3803 +#: elf32-lm32.c:1103 elf32-sh.c:5021 +msgid "cannot emit dynamic relocations in read-only section" +msgstr "impossible d'éditer les relocalisations dynamiques dans une section en lecture seule" + +#: elf32-bfin.c:2940 +msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend" +msgstr "R_BFIN_FUNCDESC_VALUE fait référence à un symbole dynamique avec un opérande non nul" -#: elf32-cris.c:1277 +#: elf32-bfin.c:3105 +msgid "relocations between different segments are not supported" +msgstr "les relocalisations entre segments différents ne sont pas supportées" + +#: elf32-bfin.c:3106 +msgid "warning: relocation references a different segment" +msgstr "attention: relocalisation fait référence à un segment différent" + +#: elf32-bfin.c:4957 elf32-frv.c:6406 +msgid "%B: unsupported relocation type %i" +msgstr "%B: type de relocalisation %i non supporté" + +#: elf32-bfin.c:5111 elf32-frv.c:6814 #, c-format -msgid "%s: Internal inconsistency; no relocation section %s" -msgstr "%s: inconsistence interne; pas de section de relocalisation %s" +msgid "%s: cannot link non-fdpic object file into fdpic executable" +msgstr "%s: ne peut lier un fichier objet non fdpic dans un exécutable fdpic" -#: elf32-cris.c:2500 +#: elf32-bfin.c:5115 elf32-frv.c:6818 #, c-format +msgid "%s: cannot link fdpic object file into non-fdpic executable" +msgstr "%s: ne peut lier un fichier objet fdpic dans un exécutable non fdpic" + +#: elf32-cris.c:1172 +msgid "%B, section %A: unresolvable relocation %s against symbol `%s'" +msgstr "%B, section %A: relocalisation %s non résolue sur le symbole «%s»" + +#: elf32-cris.c:1234 +msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'" +msgstr "%B, section %a: Pas de PLT ni de GOT pour relocaliser %s sur le symbole «%s»" + +#: elf32-cris.c:1236 +msgid "%B, section %A: No PLT for relocation %s against symbol `%s'" +msgstr "%B, section %A: Pas de PLT pour relocaliser %s sur le symbole «%s»" + +#: elf32-cris.c:1242 elf32-cris.c:1375 elf32-cris.c:1635 elf32-cris.c:1718 +#: elf32-cris.c:1871 +msgid "[whose name is lost]" +msgstr "[dont le nom est perdu]" + +#: elf32-cris.c:1361 +msgid "%B, section %A: relocation %s with non-zero addend %d against local symbol" +msgstr "%B, section %A: relocalisation de %s avec un opérande non nul %d sur le symbole local" + +#: elf32-cris.c:1369 elf32-cris.c:1712 elf32-cris.c:1865 +msgid "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'" +msgstr "%B, section %A: relocalisation de %s avec un opérande non nul %d sur le symbole «%s»" + +#: elf32-cris.c:1395 +msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'" +msgstr "%B, section %A: la relocation de %s n'est pas permise pour le symbole global: «%s»" + +#: elf32-cris.c:1411 +msgid "%B, section %A: relocation %s with no GOT created" +msgstr "%B, section %A: relocalisation de %s sans GOT" + +#. We shouldn't get here for GCC-emitted code. +#: elf32-cris.c:1626 +msgid "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?" +msgstr "%B, section %A: relocalisation de %s a une référence non définie vers «%s», peut-être un mélange dans les déclarations ?" + +#: elf32-cris.c:1998 +msgid "%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?" +msgstr "%B, section %A: relocalisation de %s n'est pas permise pour le symbole «%s» qui est défini en dehors du programme, peut-être un mélange dans les déclarations ?" + +#: elf32-cris.c:2051 +msgid "(too many global variables for -fpic: recompile with -fPIC)" +msgstr "(trop de variables globales pour -fpic: recompilez avec -fPIC)" + +#: elf32-cris.c:2058 +msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)" +msgstr "(donnée locale au thread trop grande pour -fpic or -msmall-tls: recompilez avec -fPIC ou -mno-small-tls)" + +#: elf32-cris.c:3248 +msgid "" +"%B, section %A:\n" +" v10/v32 compatible object %s must not contain a PIC relocation" +msgstr "" +"%B, section %A:\n" +" l'objet compatible v10/v32 %s ne peut pas contenir de relocalisation PIC" + +#: elf32-cris.c:3353 +msgid "" +"%B, section %A:\n" +" relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC" +msgstr "" +"%B, section %A:\n" +" relocalisation de %s pas valable dans un objet partagé; typiquement un mélange dans les options. Recompilez avec -fPIC" + +#: elf32-cris.c:3567 msgid "" -"%s, section %s:\n" +"%B, section %A:\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" +"%B, section %A:\n" +" relocalisation de %s ne devrait pas être utilisée dans un objet partagé; recompilez avec -fPIC" -#: elf32-cris.c:2978 -msgid " [symbols have a _ prefix]" -msgstr " [symboles sont préfixés par « _ »]" +#: elf32-cris.c:3992 +msgid "" +"%B, section `%A', to symbol `%s':\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%B, section «%A», vers le symbole «%s»:\n" +" relocalisation de %s ne devrait pas être utilisée dans un objet partagé; recompilez avec -fPIC" -#: elf32-cris.c:3017 -#, 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" +#: elf32-cris.c:4111 +msgid "Unexpected machine number" +msgstr "Numéro de machine inattendu" -#: elf32-cris.c:3018 +#: elf32-cris.c:4165 #, 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" +msgid " [symbols have a _ prefix]" +msgstr " [symboles sont préfixés par « _ »]" -#: elf32-frv.c:1223 +#: elf32-cris.c:4168 #, c-format -msgid "%s: compiled with %s and linked with modules that use non-pic relocations" -msgstr "%s: compilé avec %s et lié avec les modules qui utilisent de la relocalisation non PIC" +msgid " [v10 and v32]" +msgstr " [v10 et v32]" -#: elf32-frv.c:1273 elf32-iq2000.c:895 +#: elf32-cris.c:4171 #, c-format -msgid "%s: compiled with %s and linked with modules compiled with %s" -msgstr "%s: compilé avec %s et lié avec les modules compilés avec %s" +msgid " [v32]" +msgstr " [v32]" -#: elf32-frv.c:1285 -#, c-format -msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)" -msgstr "%s: utilise différents champs e_flags (0x%lx) que les modules précédents (0x%lx)" +#: elf32-cris.c:4216 +msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols" +msgstr "%B: utilise des symboles préfixés par _ mais écrits les symboles sans préfixes dans le fichier" -#: elf32-frv.c:1321 elf32-iq2000.c:933 -#, c-format -msgid "private flags = 0x%lx:" -msgstr "fanions privés = 0x%lx:" +#: elf32-cris.c:4217 +msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols" +msgstr "%B: utilise des symboles sans préfixe mais ajoute le préfixe _ aux symboles dans le fichier" -#: elf32-gen.c:83 elf64-gen.c:82 -#, c-format -msgid "%s: Relocations in generic ELF (EM: %d)" -msgstr "%s: relocalisation en format ELF générique (EM: %d)" +#: elf32-cris.c:4236 +msgid "%B contains CRIS v32 code, incompatible with previous objects" +msgstr "%B contient du code CRIS v32 incompatible avec les objets précédents" -#: elf32-hppa.c:672 elf32-m68hc1x.c:176 elf64-ppc.c:3118 -#, c-format -msgid "%s: cannot create stub entry %s" -msgstr "%s: ne peut créer l'entrée du talon %s" +#: elf32-cris.c:4238 +msgid "%B contains non-CRIS-v32 code, incompatible with previous objects" +msgstr "%B contient du code non CRIS v32 incompatible avec les objets précédents" -#: elf32-hppa.c:957 elf32-hppa.c:3538 -#, c-format -msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" -msgstr "%s(%s+0x%lx): ne peut atteindre %s, recompiler avec -ffunction-sections" +#: elf32-frv.c:1509 elf32-frv.c:1658 +msgid "relocation requires zero addend" +msgstr "la relocalisation exige un opérande nul" -#: elf32-hppa.c:1340 elf64-x86-64.c:672 elf64-x86-64.c:797 -#, c-format -msgid "%s: relocation %s can not be used when making a shared object; recompile with -fPIC" -msgstr "%s: relocalisation de %s ne peut être utilisée lors de la création d'un objet partagé; recompiler avec -fPIC" +#: elf32-frv.c:2888 +msgid "%B(%A+0x%x): relocation to `%s+%x' may have caused the error above" +msgstr "%B(%A+0x%x): la relocalisation en «%s+%x» peut avoir causé le problème ci-dessus" -#: elf32-hppa.c:1360 -#, 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" +#: elf32-frv.c:2977 +msgid "R_FRV_GETTLSOFF not applied to a call instruction" +msgstr "R_FRV_GETTLSOFF pas appliqué à une instruction d'appel" -#: elf32-hppa.c:1553 -#, c-format -msgid "Could not find relocation section for %s" -msgstr "Ne peut repérer la section de relocalisation pour %s" +#: elf32-frv.c:3019 +msgid "R_FRV_GOTTLSDESC12 not applied to an lddi instruction" +msgstr "R_FRV_GOTTLSDESC12 pas appliqué à une instruction lddi" -#: elf32-hppa.c:2828 -#, c-format -msgid "%s: duplicate export stub %s" -msgstr "%s: talon d'exportation en double %s" +#: elf32-frv.c:3090 +msgid "R_FRV_GOTTLSDESCHI not applied to a sethi instruction" +msgstr "R_FRV_GOTTLSDESCHI pas appliqué à une instruction sethi" -#: elf32-hppa.c:3416 -#, c-format -msgid "%s(%s+0x%lx): fixing %s" -msgstr "%s(%s+0x%lx): corrigeant %s" +#: elf32-frv.c:3127 +msgid "R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction" +msgstr "R_FRV_GOTTLSDESCLO pas appliqué à une instruction setlo ou setlos" -#: elf32-hppa.c:4039 -#, c-format -msgid "%s(%s+0x%lx): cannot handle %s for %s" -msgstr "%s(%s+0x%lx): ne traiter %s pour %s" +#: elf32-frv.c:3175 +msgid "R_FRV_TLSDESC_RELAX not applied to an ldd instruction" +msgstr "R_FRV_TLSDESC_RELAX pas appliqué à une instruction ldd" -#: elf32-hppa.c:4357 -msgid ".got section not immediately after .plt section" -msgstr "section .got pas immédiatement après la section .plt" +#: elf32-frv.c:3259 +msgid "R_FRV_GETTLSOFF_RELAX not applied to a calll instruction" +msgstr "R_FRV_GETTLSOFF_RELAX pas appliqué à une instruction calll" -#: elf32-i386.c:326 -#, c-format -msgid "%s: invalid relocation type %d" -msgstr "%s: type de relocalisation invalide %d" +#: elf32-frv.c:3314 +msgid "R_FRV_GOTTLSOFF12 not applied to an ldi instruction" +msgstr "R_FRV_GOTTLSOFF12 pas appliqué à une instruction ldi" + +#: elf32-frv.c:3344 +msgid "R_FRV_GOTTLSOFFHI not applied to a sethi instruction" +msgstr "R_FRV_GOTTLSOFFHI pas appliqué à une instruction sethi" + +#: elf32-frv.c:3373 +msgid "R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction" +msgstr "R_FRV_GOTTLSOFFLO pas appliqué à une instruction setlo ou setlos" + +#: elf32-frv.c:3404 +msgid "R_FRV_TLSOFF_RELAX not applied to an ld instruction" +msgstr "R_FRV_TLSOFF_RELAX pas appliqué à une instruction ld" + +#: elf32-frv.c:3449 +msgid "R_FRV_TLSMOFFHI not applied to a sethi instruction" +msgstr "R_FRV_TLSMOFFHI pas appliqué à une instruction sethi" -#: elf32-i386.c:841 elf32-s390.c:990 elf32-sparc.c:887 elf32-xtensa.c:637 -#: elf64-s390.c:943 elf64-x86-64.c:650 +#: elf32-frv.c:3476 +msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction" +msgstr "R_FRV_TLSMOFFLO pas appliqué à une instruction setlo ou setlos" + +#: elf32-frv.c:3597 +msgid "R_FRV_FUNCDESC references dynamic symbol with nonzero addend" +msgstr "R_FRV_FUNCDESC fait référence à un symbole dynamique avec un opérande non nul" + +#: elf32-frv.c:3717 +msgid "R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend" +msgstr "R_FRV_FUNCDESC_VALUE fait référence à un symbole dynamique avec un opérande non nul" + +#: elf32-frv.c:3974 elf32-frv.c:4130 +msgid "%B(%A+0x%lx): reloc against `%s': %s" +msgstr "%B(%A+0x%lx): relocalisation vers «%s»: %s" + +#: elf32-frv.c:3976 elf32-frv.c:3980 +msgid "relocation references a different segment" +msgstr "la relocalisation fait référence à un segment différent" + +#: elf32-frv.c:6728 #, c-format -msgid "%s: bad symbol index: %d" -msgstr "%s: symbole index erroné: %d" +msgid "%s: compiled with %s and linked with modules that use non-pic relocations" +msgstr "%s: compilé avec %s et lié avec les modules qui utilisent de la relocalisation non PIC" -#: elf32-i386.c:949 elf32-s390.c:1168 elf32-sh.c:6426 elf32-sparc.c:1011 -#: elf64-s390.c:1129 +#: elf32-frv.c:6781 elf32-iq2000.c:845 elf32-m32c.c:807 #, c-format -msgid "%s: `%s' accessed both as normal and thread local symbol" -msgstr "%s: « %s » symbole local accéder à la fois comme normal et avec thread" +msgid "%s: compiled with %s and linked with modules compiled with %s" +msgstr "%s: compilé avec %s et lié avec les modules compilés avec %s" -#: elf32-i386.c:1064 elf32-s390.c:1279 elf64-ppc.c:3929 elf64-s390.c:1243 -#: elf64-x86-64.c:886 +#: elf32-frv.c:6793 #, c-format -msgid "%s: bad relocation section name `%s'" -msgstr "%s: nom de section de relocalisation erroné « %s »" +msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "%s: utilise différents champs e_flags (0x%lx) que les modules précédents (0x%lx)" -#: elf32-i386.c:2908 elf32-m68k.c:1757 elf32-s390.c:3022 elf32-sparc.c:2879 -#: elf32-xtensa.c:2193 elf64-s390.c:3018 elf64-sparc.c:2664 -#: elf64-x86-64.c:2452 +#: elf32-frv.c:6843 elf32-iq2000.c:882 elf32-m32c.c:843 elf32-mt.c:576 +#: elf32-rx.c:2925 #, c-format -msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'" -msgstr "%s(%s+0x%lx): relocalisation sans solution vers le symbole « %s »" +msgid "private flags = 0x%lx:" +msgstr "fanions privés = 0x%lx:" + +#: elf32-gen.c:69 elf64-gen.c:69 +msgid "%B: Relocations in generic ELF (EM: %d)" +msgstr "%B: Relocalisation en format ELF générique (EM: %d)" + +#: elf32-hppa.c:850 elf32-hppa.c:3610 +msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections" +msgstr "%B(%A+0x%lx): ne peut atteindre %s, recompilez avec -ffunction-sections" + +#: elf32-hppa.c:1284 +msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC" +msgstr "%B: relocalisation de %s ne peut être utilisée lors de la création d'un objet partagé; recompilez avec -fPIC" + +#: elf32-hppa.c:2803 +msgid "%B: duplicate export stub %s" +msgstr "%B: ébauche d'exportation en double %s" + +#: elf32-hppa.c:3449 +msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link" +msgstr "%B(%A+0x%lx): correction %s pour insn 0x%x n'est pas supporté dans un lien non partagé" + +#: elf32-hppa.c:4296 +msgid "%B(%A+0x%lx): cannot handle %s for %s" +msgstr "%B(%A+0x%lx): ne sait pas traiter %s pour %s" + +#: elf32-hppa.c:4608 +msgid ".got section not immediately after .plt section" +msgstr "section .got pas immédiatement après la section .plt" + +#. Unknown relocation. +#: elf32-i386.c:371 elf32-m68k.c:383 elf32-ppc.c:1674 elf32-s390.c:379 +#: elf32-tic6x.c:1563 elf64-ppc.c:2284 elf64-s390.c:403 elf64-x86-64.c:234 +msgid "%B: invalid relocation type %d" +msgstr "%B: type de relocalisation %d invalide" + +#: elf32-i386.c:1265 elf64-x86-64.c:1049 +msgid "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed" +msgstr "%B: Échec de la transition TLS de %s vers %s sur «%s» à 0x%lx dans la section «%A»" + +#: elf32-i386.c:1408 elf32-i386.c:3068 elf64-x86-64.c:1194 elf64-x86-64.c:2780 +#: elfxx-sparc.c:3076 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" +msgstr "%B: la relocalisation %s sur le symbole STT_GNU_IFUNC «%s» n'est pas gérée par %s" + +#: elf32-i386.c:1570 elf32-s390.c:1182 elf32-sh.c:6367 elf32-xtensa.c:1182 +#: elf64-s390.c:1151 elfxx-sparc.c:1547 +msgid "%B: `%s' accessed both as normal and thread local symbol" +msgstr "%B: «%s» accédé à la fois comme symbole normal et comme symbole locale au thread" + +#: elf32-i386.c:2910 +msgid "%B: unrecognized relocation (0x%x) in section `%A'" +msgstr "%B: relocalisation inconnue (0x%x) dans la section «%A»" + +#: elf32-i386.c:3317 elf64-x86-64.c:3174 +msgid "hidden symbol" +msgstr "symbole caché" + +#: elf32-i386.c:3320 elf64-x86-64.c:3177 +msgid "internal symbol" +msgstr "symbole interne" + +#: elf32-i386.c:3323 elf64-x86-64.c:3180 +msgid "protected symbol" +msgstr "symbole protégé" + +#: elf32-i386.c:3326 elf64-x86-64.c:3183 +msgid "symbol" +msgstr "symbole" + +#: elf32-i386.c:3331 +msgid "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object" +msgstr "%B: relocalisation R_386_GOTOFF sur le symbole %s «%s» non défini ne peut pas être utilisée lors de la création d'un objet partagé" + +#: elf32-i386.c:3341 +msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object" +msgstr "%B: relocaliastion R_386_GOTOFF vers la fonction protégée «%s» ne peut pas être utilisée lors de la création d'un objet partagé" -#: elf32-i386.c:2947 elf32-m68k.c:1796 elf32-s390.c:3072 elf64-s390.c:3068 -#: elf64-x86-64.c:2490 +#: elf32-i386.c:4633 elf64-x86-64.c:4206 #, c-format -msgid "%s(%s+0x%lx): reloc against `%s': error %d" -msgstr "%s(%s+0x%lx): relocalisation vers « %s »: erreur %d" +msgid "discarded output section: `%A'" +msgstr "section de sortie rejetée: «%A»" -#: elf32-ip2k.c:565 elf32-ip2k.c:571 elf32-ip2k.c:734 elf32-ip2k.c:740 +#: elf32-ip2k.c:857 elf32-ip2k.c:863 elf32-ip2k.c:930 elf32-ip2k.c:936 msgid "ip2k relaxer: switch table without complete matching relocation information." -msgstr "relâche ip2k: table de commutation sans concordance complète des informations de relocalisation" +msgstr "relâche ip2k: table de commutation sans concordance complète des informations de relocalisation" -#: elf32-ip2k.c:588 elf32-ip2k.c:767 +#: elf32-ip2k.c:880 elf32-ip2k.c:963 msgid "ip2k relaxer: switch table header corrupt." -msgstr "relâche ip2k: en-tête de table de commutation corrompue" +msgstr "relâche ip2k: en-tête de table de commutation corrompue" -#: elf32-ip2k.c:1395 +#: elf32-ip2k.c:1292 #, c-format msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)." -msgstr "liaison ip2k: instruction de page manquante à 0x%08lx (cible = 0x%08lx)." +msgstr "liaison ip2k: instruction de page manquante à 0x%08lx (cible = 0x%08lx)." -#: elf32-ip2k.c:1409 +#: elf32-ip2k.c:1308 #, c-format msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)." -msgstr "liaison ip2k: instruction de page redondante à 0x%08lx (cible = 0x%08lx)." +msgstr "liaison ip2k: instruction de page redondante à 0x%08lx (cible = 0x%08lx)." #. Only if it's not an unresolved symbol. -#: elf32-ip2k.c:1593 +#: elf32-ip2k.c:1475 msgid "unsupported relocation between data/insn address spaces" -msgstr "relocalisation non supporté entre les espaces d'adresses data/insn" +msgstr "relocalisation non supporté entre les espaces d'adresses data/insn" -#: elf32-iq2000.c:907 elf32-m68hc1x.c:1431 elf32-ppc.c:2175 elf64-sparc.c:3072 -#: elfxx-mips.c:9195 +#: elf32-iq2000.c:858 elf32-m32c.c:819 #, 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 des champs e_flags (0x%lx) différents des modules précédents (0x%lx)" -#: elf32-m32r.c:930 -msgid "SDA relocation when _SDA_BASE_ not defined" -msgstr "relocalisation SDA alors que _SDA_BASE_ n'est pas définie" +#: elf32-lm32.c:706 +msgid "global pointer relative relocation when _gp not defined" +msgstr "relocalisation relative au pointeur global sans que _gp ne soit défini" -#: elf32-m32r.c:1018 elf64-alpha.c:4279 elf64-alpha.c:4407 elf32-ia64.c:3958 -#: elf64-ia64.c:3958 -#, c-format -msgid "%s: unknown relocation type %d" -msgstr "%s: type de relocalisation inconnu %d" +#: elf32-lm32.c:761 +msgid "global pointer relative address out of range" +msgstr "adresse relative du pointeur global hors limites" -#: elf32-m32r.c:1226 -#, 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)" +#: elf32-lm32.c:1057 +msgid "internal error: addend should be zero for R_LM32_16_GOT" +msgstr "erreur interne: opérande devrait être zéro pour R_LM32_16_GOT" -#: elf32-m32r.c:1952 -#, 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:1453 +msgid "SDA relocation when _SDA_BASE_ not defined" +msgstr "relocalisation SDA alors que _SDA_BASE_ n'est pas définie" + +#: elf32-m32r.c:3048 +msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)" +msgstr "%B: la cible (%s) de la relocalisation %s est dans la mauvaise section (%A)" + +#: elf32-m32r.c:3576 +msgid "%B: Instruction set mismatch with previous modules" +msgstr "%B: jeu d'instructions ne concorde par avec les modules précédents" -#: elf32-m32r.c:1975 +#: elf32-m32r.c:3597 #, c-format msgid "private flags = %lx" -msgstr "fanions privés = %lx" +msgstr "fanions privés = %lx" -#: elf32-m32r.c:1980 +#: elf32-m32r.c:3602 +#, c-format msgid ": m32r instructions" msgstr ": instructions m32r" -#: elf32-m32r.c:1981 +#: elf32-m32r.c:3603 +#, c-format msgid ": m32rx instructions" msgstr ": instruction m32rx" -#: elf32-m68hc1x.c:1217 +#: elf32-m32r.c:3604 +#, c-format +msgid ": m32r2 instructions" +msgstr ": instructions m32r2" + +#: elf32-m68hc1x.c:1050 #, c-format msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution" -msgstr "Référence à un symbole far « %s » utilisant la mauvaise relocalisation peut provoquer une exécution incorrecte" +msgstr "Référence à un symbole far «%s» utilisant la mauvaise relocalisation peut provoquer une exécution incorrecte" -#: elf32-m68hc1x.c:1240 +#: elf32-m68hc1x.c:1073 #, c-format msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)" -msgstr "banque d'adresses [%lx:%04lx] (%lx) n'es pas dans la même banque que la banque courante d'adresses [%lx:%04lx] (%lx)" +msgstr "banque d'adresses [%lx:%04lx] (%lx) n'es pas dans la même banque que la banque courante d'adresses [%lx:%04lx] (%lx)" -#: elf32-m68hc1x.c:1259 +#: elf32-m68hc1x.c:1092 #, c-format msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx" -msgstr "référence à une banque d'adresses [%lx:%04lx] dans l'espace normal d'adresses à %04lx" +msgstr "référence à une banque d'adresses [%lx:%04lx] dans l'espace normal d'adresses à %04lx" -#: elf32-m68hc1x.c:1396 -#, c-format -msgid "%s: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers" -msgstr "%s: fichiers liés compilés pour des entiers de 16 bits (-mshort) et d'autres pour des entiers de 32 bits" +#: elf32-m68hc1x.c:1225 +msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers" +msgstr "%B: fichiers liés compilés pour des entiers de 16 bits (-mshort) et d'autres pour des entiers de 32 bits" -#: elf32-m68hc1x.c:1404 -#, c-format -msgid "%s: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double" -msgstr "%s: fichiers liés compilés pour des doubles de 32 bits (-fshort-double) et d'autres pour des doubles de 64 bits" +#: elf32-m68hc1x.c:1232 +msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double" +msgstr "%B: fichiers liés compilés pour des doubles de 32 bits (-fshort-double) et d'autres pour des doubles de 64 bits" -#: elf32-m68hc1x.c:1414 -#, c-format -msgid "%s: linking files compiled for HCS12 with others compiled for HC12" -msgstr "%s: certains fichiers liés compilés pour HCS12 avec d'autres compilés pour HC12" +#: elf32-m68hc1x.c:1241 +msgid "%B: linking files compiled for HCS12 with others compiled for HC12" +msgstr "%B: certains fichiers liés compilés pour HCS12 avec d'autres compilés pour HC12" + +#: elf32-m68hc1x.c:1257 elf32-ppc.c:4232 elf64-sparc.c:703 elfxx-mips.c:12704 +msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "%B: utilise des champs e_flags (0x%lx) différents des modules précédents (0x%lx)" -#: elf32-m68hc1x.c:1462 +#: elf32-m68hc1x.c:1285 +#, c-format msgid "[abi=32-bit int, " msgstr "[abi=32-bit int, " -#: elf32-m68hc1x.c:1464 +#: elf32-m68hc1x.c:1287 +#, c-format msgid "[abi=16-bit int, " msgstr "[abi=16-bit int, " -#: elf32-m68hc1x.c:1467 +#: elf32-m68hc1x.c:1290 +#, c-format msgid "64-bit double, " msgstr "double de 64 bits, " -#: elf32-m68hc1x.c:1469 +#: elf32-m68hc1x.c:1292 +#, c-format msgid "32-bit double, " msgstr "double de 32 bits, " -#: elf32-m68hc1x.c:1472 +#: elf32-m68hc1x.c:1295 +#, c-format msgid "cpu=HC11]" msgstr "cpu=HC11]" -#: elf32-m68hc1x.c:1474 +#: elf32-m68hc1x.c:1297 +#, c-format msgid "cpu=HCS12]" msgstr "cpu=HCS12]" -#: elf32-m68hc1x.c:1476 +#: elf32-m68hc1x.c:1299 +#, c-format msgid "cpu=HC12]" msgstr "cpu=HC12]" -#: elf32-m68hc1x.c:1479 +#: elf32-m68hc1x.c:1302 +#, c-format msgid " [memory=bank-model]" msgstr " [memory=bank-model]" -#: elf32-m68hc1x.c:1481 +#: elf32-m68hc1x.c:1304 +#, c-format msgid " [memory=flat]" msgstr " [memory=flat]" -#: elf32-m68k.c:400 -msgid " [cpu32]" -msgstr " [cpu32]" - -#: elf32-m68k.c:403 -msgid " [m68000]" -msgstr " [m68000]" - -#: elf32-mcore.c:353 elf32-mcore.c:456 -#, c-format -msgid "%s: Relocation %s (%d) is not currently supported.\n" -msgstr "%s: relocalisation %s (%d) n'est pas couramment supportée.\n" - -#: elf32-mcore.c:441 -#, c-format -msgid "%s: Unknown relocation type %d\n" -msgstr "%s: type de relocalisation inconnue %d\n" - -#: elf32-mips.c:1170 elf64-mips.c:1717 elfn32-mips.c:1664 -msgid "32bits gp relative relocation occurs for an external symbol" -msgstr "relocalisation relative gp 32bits est survenue pour un symbole externe" +#: elf32-m68k.c:1250 elf32-m68k.c:1251 vms-alpha.c:7292 vms-alpha.c:7307 +msgid "unknown" +msgstr "inconnu" -#: elf32-mips.c:1314 elf64-mips.c:1830 elfn32-mips.c:1783 -#, c-format -msgid "Linking mips16 objects into %s format is not supported" -msgstr "Édition de liens d'objets mips16 dans le format %s n'est pas supporté" +#: elf32-m68k.c:1714 +msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d" +msgstr "%B: débordement GOT: Nombre de relocalisations avec des offsets de 8 bits > %d" -#: elf32-ppc.c:2056 -#, c-format -msgid "generic linker can't handle %s" -msgstr "liaison générique ne peut traiter %s" +#: elf32-m68k.c:1720 +msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d" +msgstr "%B: débordement GOT: Nombre de relocalisations avec des offsets de 8 ou 16 bits > %d" -#: elf32-ppc.c:2138 -#, 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" +#: elf32-m68k.c:3959 +msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object" +msgstr "%B(%A+0x%lx): relocalisation R_68K_TLS_LE32 pas permise dans un objet partagé" -#: elf32-ppc.c:2147 -#, 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" +#: elf32-mcore.c:99 elf32-mcore.c:442 +msgid "%B: Relocation %s (%d) is not currently supported.\n" +msgstr "%B: relocalisation %s (%d) n'est pas actuellement supportée.\n" -#: elf32-ppc.c:3413 -#, 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é" +#: elf32-mcore.c:428 +msgid "%B: Unknown relocation type %d\n" +msgstr "%B: Type de relocalisation %d inconnue\n" -#. It does not make sense to have a procedure linkage -#. table entry for a local symbol. -#: elf32-ppc.c:3619 -#, c-format -msgid "%s(%s+0x%lx): %s reloc against local symbol" -msgstr "%s(%s+0x%lx): %s relocalisation vers un symbole local" +#: elf32-mep.c:647 +msgid "%B and %B are for different cores" +msgstr "%B et %B sont pour des noyaux différents" -#: elf32-ppc.c:4862 elf64-ppc.c:7789 -#, c-format -msgid "%s: unknown relocation type %d for symbol %s" -msgstr "%s: type de relocalisation inconnue %d pour le symbole %s" +#: elf32-mep.c:664 +msgid "%B and %B are for different configurations" +msgstr "%B et %B sont pour des configurations différentes" -#: elf32-ppc.c:5113 +#: elf32-mep.c:701 #, c-format -msgid "%s(%s+0x%lx): non-zero addend on %s reloc against `%s'" -msgstr "%s(%s+0x%lx): ajot non nulle sur la relocalisation %s vers « %s »" +msgid "private flags = 0x%lx" +msgstr "fanions privés = 0x%lx" -#: elf32-ppc.c:5399 elf32-ppc.c:5425 elf32-ppc.c:5484 +#: elf32-microblaze.c:742 #, 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: unknown relocation type %d" +msgstr "%s: type de relocalisation %d inconnu" -#: elf32-ppc.c:5539 +#: elf32-microblaze.c:867 elf32-microblaze.c:912 #, 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." +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)" -#: elf32-ppc.c:5594 elf64-ppc.c:8461 -#, c-format -msgid "%s(%s+0x%lx): unresolvable %s relocation against symbol `%s'" -msgstr "%s(%s+0x%lx): relocalisation %s sans solution vers le symbole « %s »" +#: elf32-microblaze.c:1155 elfxx-sparc.c:3450 +msgid "%B: probably compiled without -fPIC?" +msgstr "%B: probablement compilé sans -fPIC?" + +#: elf32-microblaze.c:2074 elflink.c:12601 +msgid "%B: bad relocation section name `%s'" +msgstr "%B: nom de section de relocalisation erroné «%s»" + +#: elf32-mips.c:1045 elf64-mips.c:2084 elfn32-mips.c:1888 +msgid "literal relocation occurs for an external symbol" +msgstr "relocalisation littérale rencontrée pour un symbole externe" -#: elf32-ppc.c:5644 elf64-ppc.c:8507 -#, c-format -msgid "%s(%s+0x%lx): %s reloc against `%s': error %d" -msgstr "%s(%s+0x%lx): %s relocalisation vers « %s »: erreur %d" +#: elf32-mips.c:1085 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:2127 +#: elfn32-mips.c:1929 +msgid "32bits gp relative relocation occurs for an external symbol" +msgstr "relocalisation relative gp 32bits rencontrée pour un symbole externe" -#: elf32-ppc.c:5888 +#: elf32-ppc.c:1739 #, c-format -msgid "corrupt or empty %s section in %s" -msgstr "section %s vide ou corrompue dans %s" +msgid "generic linker can't handle %s" +msgstr "liaison générique ne peut traiter %s" -#: elf32-ppc.c:5895 -#, c-format -msgid "unable to read in %s section from %s" -msgstr "incapable de lire dans la section %s à partir de %s" +#: elf32-ppc.c:2180 +msgid "corrupt %s section in %B" +msgstr "section %s corrompue dans %B" -#: elf32-ppc.c:5901 -#, c-format -msgid "corrupt %s section in %s" -msgstr "section %s corrompue dans %s" +#: elf32-ppc.c:2199 +msgid "unable to read in %s section from %B" +msgstr "incapable de lire dans la section %s à partir de %B" -#: elf32-ppc.c:5944 -#, c-format -msgid "warning: unable to set size of %s section in %s" -msgstr "AVERTISSEMENT: incapable d'initialiser la taille de la section %s dans %s" +#: elf32-ppc.c:2240 +msgid "warning: unable to set size of %s section in %B" +msgstr "attention: incapable d'initialiser la taille de la section %s dans %B" -#: elf32-ppc.c:5994 +#: elf32-ppc.c:2290 msgid "failed to allocate space for new APUinfo section." -msgstr "échec d'allocation d'espace pour une nouvelle section APUinfo" +msgstr "échec d'allocation d'espace pour une nouvelle section APUinfo" -#: elf32-ppc.c:6013 +#: elf32-ppc.c:2309 msgid "failed to compute new APUinfo section." -msgstr "échec d'évaluation de la nouvelle section APUinfo" +msgstr "échec d'évaluation de la nouvelle section APUinfo" -#: elf32-ppc.c:6016 +#: elf32-ppc.c:2312 msgid "failed to install new APUinfo section." -msgstr "échec d'installation de la nouvelle section APUinfo" +msgstr "échec d'installation de la nouvelle section APUinfo" -#: elf32-s390.c:2256 elf64-s390.c:2226 -#, c-format -msgid "%s(%s+0x%lx): invalid instruction for TLS relocation %s" -msgstr "%s(%s+0x%lx): instruction invalide pour la relocalisation TLS %s" +#: elf32-ppc.c:3358 +msgid "%B: relocation %s cannot be used when making a shared object" +msgstr "%B: relocalisation %s ne peut être utilisée lors de la création d'un objet partagé" -#: elf32-sh.c:2103 -#, c-format -msgid "%s: 0x%lx: warning: bad R_SH_USES offset" -msgstr "%s: 0x%lx: AVERTISSEMENT: mauvais décalage pour R_SH_USES" +#. It does not make sense to have a procedure linkage +#. table entry for a local symbol. +#: elf32-ppc.c:3702 +msgid "%B(%A+0x%lx): %s reloc against local symbol" +msgstr "%B(%A+0x%lx): %s relocalisation vers un symbole local" -#: elf32-sh.c:2115 -#, 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-ppc.c:4044 elf32-ppc.c:4059 elfxx-mips.c:12411 elfxx-mips.c:12437 +#: elfxx-mips.c:12459 elfxx-mips.c:12485 +msgid "Warning: %B uses hard float, %B uses soft float" +msgstr "Attention: %B utilise la virgule flottante matérielle, %B utilise la virgule flottante logicielle" -#: elf32-sh.c:2132 -#, 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-ppc.c:4047 elf32-ppc.c:4051 +msgid "Warning: %B uses double-precision hard float, %B uses single-precision hard float" +msgstr "Attention: %B utilise la virgule flottante double précision matérielle, %B utilise la virgule flottante simple précision matérielle" -#: elf32-sh.c:2147 -#, 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-ppc.c:4055 +msgid "Warning: %B uses soft float, %B uses single-precision hard float" +msgstr "Attention: %B utilise la virgule flottante logicielle, %B utilise la virgule flottante simple précision matérielle" -#: elf32-sh.c:2175 -#, c-format -msgid "%s: 0x%lx: warning: symbol in unexpected section" -msgstr "%s: 0x%lx: AVERTISSEMENT: symbole dans une section inattendue" +#: elf32-ppc.c:4062 elf32-ppc.c:4066 elfxx-mips.c:12391 elfxx-mips.c:12395 +msgid "Warning: %B uses unknown floating point ABI %d" +msgstr "Attention: %B utilise l'ABI inconnu %d pour la gestion des virgules flottantes" -#: elf32-sh.c:2300 +#: elf32-ppc.c:4108 elf32-ppc.c:4112 +msgid "Warning: %B uses unknown vector ABI %d" +msgstr "Attention: %B utilise l'ABI inconnu %d pour les vecteurs" + +#: elf32-ppc.c:4116 +msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\"" +msgstr "Attention: %B utilise l'ABI de vecteurs «%s», %B utilise «%s»" + +#: elf32-ppc.c:4133 elf32-ppc.c:4136 +msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory" +msgstr "Attention: %B utilise r3/r4 pour les retours de petites structures, %B utilise la mémoire" + +#: elf32-ppc.c:4139 elf32-ppc.c:4143 +msgid "Warning: %B uses unknown small structure return convention %d" +msgstr "Attention: %B utilise la convention inconnue %d pour le retour des petites structures" + +#: elf32-ppc.c:4197 +msgid "%B: compiled with -mrelocatable and linked with modules compiled normally" +msgstr "%B: compilé avec -mrelocatable et fait l'édition de lien avec les modules compilés normalement" + +#: elf32-ppc.c:4205 +msgid "%B: compiled normally and linked with modules compiled with -mrelocatable" +msgstr "%B: compilé normalement et fait l'édition de lien avec les modules compilés avec -mrelocatable" + +#: elf32-ppc.c:4293 +msgid "Using bss-plt due to %B" +msgstr "Utilisation de bss-plt à cause de %B" + +#: elf32-ppc.c:7192 elf64-ppc.c:12307 +msgid "%B: unknown relocation type %d for symbol %s" +msgstr "%B: type de relocalisation %d inconnue pour le symbole %s" + +#: elf32-ppc.c:7453 +msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'" +msgstr "%B(%A+0x%lx): opérande non nulle sur la relocalisation %s vers «%s»" + +#: elf32-ppc.c:7651 elf64-ppc.c:12812 +msgid "%B(%A+0x%lx): relocation %s for indirect function %s unsupported" +msgstr "%B(%A+0x%lx): relocalisation %s non supportée pour la fonction indirecte %s" + +#: elf32-ppc.c:7881 elf32-ppc.c:7911 elf32-ppc.c:7958 +msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)" +msgstr "%B: la cible (%s) d'une relocalisation %s est dans la mauvaise section de sortie (%s)" + +#: elf32-ppc.c:8030 +msgid "%B: relocation %s is not yet supported for symbol %s." +msgstr "%B: relocalisation %s n'est pas encore supporté pour le symbole %s." + +#: elf32-ppc.c:8138 elf64-ppc.c:13162 +msgid "%B(%A+0x%lx): %s reloc against `%s': error %d" +msgstr "%B(%A+0x%lx): relocalisation %s vers «%s»: erreur %d" + +#: elf32-ppc.c:8629 +#, c-format +msgid "%s not defined in linker created %s" +msgstr "%s pas défini dans %s créé par l'éditeur de liens" + +#: elf32-rx.c:544 +msgid "%B:%A: Warning: deprecated Red Hat reloc " +msgstr "%B:%A: Attention: relocalisation Red Hat réprouvée " + +#: elf32-rx.c:1086 +msgid "Warning: RX_SYM reloc with an unknown symbol" +msgstr "Attention: Relocalistaion RX_SYM avec un symbole inconnu" + +#: elf32-rx.c:1251 +msgid "%B(%A): error: call to undefined function '%s'" +msgstr "%B(%A): erreur: appel à la fonction non définie «%s»" + +#: elf32-rx.c:1265 +msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area" +msgstr "%B(%A): attention: accès non aligné au symbole «%s» dans la zone des petites données" + +#: elf32-rx.c:1269 +msgid "%B(%A): internal error: out of range error" +msgstr "%B(%A): erreur interne: hors limite" + +#: elf32-rx.c:1273 +msgid "%B(%A): internal error: unsupported relocation error" +msgstr "%B(%A): erreur interne: relocalisation non supportée" + +#: elf32-rx.c:1277 +msgid "%B(%A): internal error: dangerous relocation" +msgstr "%B(%A): erreur interne: relocalisation dangereuse" + +#: elf32-rx.c:1281 +msgid "%B(%A): internal error: unknown error" +msgstr "%B(%A): erreur interne: erreur inconnue" + +#: elf32-rx.c:2928 #, 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" +msgid " [64-bit doubles]" +msgstr " [doubles de 64 bits]" -#: elf32-sh.c:2309 +#: elf32-rx.c:2930 #, c-format -msgid "%s: 0x%lx: warning: bad count" -msgstr "%s: 0x%lx: AVERTISSEMENT: mauvais décompte" +msgid " [dsp]" +msgstr " [dsp]" + +#: elf32-s390.c:2209 elf64-s390.c:2196 +msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s" +msgstr "%B(%A+0x%lx): instruction invalide pour la relocalisation TLS %s" -#: elf32-sh.c:2712 elf32-sh.c:3088 +#: elf32-score.c:1522 elf32-score7.c:1382 elfxx-mips.c:3323 +msgid "not enough GOT space for local GOT entries" +msgstr "pas suffisamment d'espace GOT pour les entrées locales GOT" + +#: elf32-score.c:2744 +msgid "address not word align" +msgstr "adresse pas alignée sur un mot" + +#: elf32-score.c:2829 elf32-score7.c:2634 #, 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" +msgid "%s: Malformed reloc detected for section %s" +msgstr "%s: relocalisation mal composée détectée dans la section %s" -#: elf32-sh.c:4654 elf64-sh64.c:1585 -msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" -msgstr "STO_SH5_ISA32 inattendu sur le symbole local n'est pas traité" +#: elf32-score.c:2880 elf32-score7.c:2685 +msgid "%B: CALL15 reloc at 0x%lx not against global symbol" +msgstr "%B: appel CALL15 de relocalisation à 0x%lx n'est pas appliqué sur un symbole global" + +#: elf32-score.c:3999 elf32-score7.c:3806 +#, c-format +msgid " [pic]" +msgstr " [pic]" -#: elf32-sh.c:4809 +#: elf32-score.c:4003 elf32-score7.c:3810 #, c-format -msgid "%s: unresolvable relocation against symbol `%s' from %s section" -msgstr "%s: relocalisation sans solution vers le symbole « %s » à partir de la section %s" +msgid " [fix dep]" +msgstr " [fix dep]" + +#: elf32-score.c:4045 elf32-score7.c:3852 +msgid "%B: warning: linking PIC files with non-PIC files" +msgstr "%B: attention: édition de liens des fichiers PIC avec des fichiers non PIC" -#: elf32-sh.c:4881 +#: elf32-sh-symbian.c:130 +msgid "%B: IMPORT AS directive for %s conceals previous IMPORT AS" +msgstr "%B: la directive IMPORT AS de %s masque l'IMPORT AS précédent" + +#: elf32-sh-symbian.c:383 +msgid "%B: Unrecognised .directive command: %s" +msgstr "%B: Commande .directive non reconnue: %s" + +#: elf32-sh-symbian.c:503 +msgid "%B: Failed to add renamed symbol %s" +msgstr "%B: Échec de l'ajout du symbole renommé %s" + +#: elf32-sh.c:568 +msgid "%B: 0x%lx: warning: bad R_SH_USES offset" +msgstr "%B: 0x%lx: attention: mauvais décalage pour R_SH_USES" + +#: elf32-sh.c:580 +msgid "%B: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" +msgstr "%B: 0x%lx: attention: R_SH_USES pointe vers un insn inconnu 0x%x" + +#: elf32-sh.c:597 +msgid "%B: 0x%lx: warning: bad R_SH_USES load offset" +msgstr "%B: 0x%lx: attention: mauvais décalage de chargement R_SH_USES" + +#: elf32-sh.c:612 +msgid "%B: 0x%lx: warning: could not find expected reloc" +msgstr "%B: 0x%lx: attention: ne peut repérer la relocalisation attendue" + +#: elf32-sh.c:640 +msgid "%B: 0x%lx: warning: symbol in unexpected section" +msgstr "%B: 0x%lx: attention: symbole dans une section inattendue" + +#: elf32-sh.c:766 +msgid "%B: 0x%lx: warning: could not find expected COUNT reloc" +msgstr "%B: 0x%lx: attention: ne peut repérer le compteur de relocalisation attendu" + +#: elf32-sh.c:775 +msgid "%B: 0x%lx: warning: bad count" +msgstr "%B: 0x%lx: attention: mauvais décompte" + +#: elf32-sh.c:1179 elf32-sh.c:1549 +msgid "%B: 0x%lx: fatal: reloc overflow while relaxing" +msgstr "%B: 0x%lx: erreur fatale: débordement de relocalisation lors des relâches" + +#: elf32-sh.c:4057 elf64-sh64.c:1514 +msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" +msgstr "STO_SH5_ISA32 inattendu sur le symbole local n'est pas traité" + +#: elf32-sh.c:4304 +msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation" +msgstr "%B: 0x%lx: fatal: cible de branchement non alignée pour une relocalisatin de type relax-support" + +#: elf32-sh.c:4337 elf32-sh.c:4352 +msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx" +msgstr "%B: 0x%lx: fatal: relocalisation %s non alignée 0x%lx" + +#: elf32-sh.c:4366 +msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32" +msgstr "%B: 0x%lx: fatal: relocalisation R_SH_PSHA %d pas dans l'intervalle -32..32" + +#: elf32-sh.c:4380 +msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32" +msgstr "%B: 0x%lx: fatal: relocalisation R_SH_PSHL %d n'est pas dans l'intervalle -32..32" + +#: elf32-sh.c:4524 elf32-sh.c:4994 +msgid "%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section" +msgstr "%B(%A+0x%lx): impossible d'apporter des corrections à «%s» dans une section en lecture seule" + +#: elf32-sh.c:5101 +msgid "%B(%A+0x%lx): %s relocation against external symbol \"%s\"" +msgstr "%B(%A+0x%lx): %s relocalisation vers le symbole externe «%s»" + +#: elf32-sh.c:5574 #, 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" +msgid "%X%C: relocation to \"%s\" references a different segment\n" +msgstr "%X%C: la relocalisation vers «%s» fait référence à un segment différent\n" -#: elf32-sh.c:6627 elf64-alpha.c:4848 +#: elf32-sh.c:5580 #, c-format -msgid "%s: TLS local exec code cannot be linked into shared objects" -msgstr "%s: code exécutable local TLS ne peut être lié en objets partagés" +msgid "%C: warning: relocation to \"%s\" references a different segment\n" +msgstr "%C: attention: relocalisation vers «%s» fait référence à un segment différent\n" + +#: elf32-sh.c:6358 elf32-sh.c:6441 +msgid "%B: `%s' accessed both as normal and FDPIC symbol" +msgstr "%B: «%s» accédé à la fois comme symbole normal et comme symbole FDPIC" -#: elf32-sh64.c:221 elf64-sh64.c:2407 +#: elf32-sh.c:6363 elf32-sh.c:6445 +msgid "%B: `%s' accessed both as FDPIC and thread local symbol" +msgstr "%B: «%s» accédé à la fois comme symbole FDPIC et comme symbole local au thread" + +#: elf32-sh.c:6393 +msgid "%B: Function descriptor relocation with non-zero addend" +msgstr "%B: Descripteur de fonction relocalisé avec un opérande non nul" + +#: elf32-sh.c:6629 elf64-alpha.c:4560 +msgid "%B: TLS local exec code cannot be linked into shared objects" +msgstr "%B: code exécutable local TLS ne peut être lié en objets partagés" + +#: elf32-sh64.c:223 elf64-sh64.c:2314 #, c-format msgid "%s: compiled as 32-bit object and %s is 64-bit" -msgstr "%s: compilé comme un objet de 32 bits et %s est de 64 bits" +msgstr "%s: compilé comme un objet de 32 bits et %s est de 64 bits" -#: elf32-sh64.c:224 elf64-sh64.c:2410 +#: elf32-sh64.c:226 elf64-sh64.c:2317 #, c-format msgid "%s: compiled as 64-bit object and %s is 32-bit" -msgstr "%s: compilé comme un objet de 64 bits et %s est de 32 bits" +msgstr "%s: compilé comme un objet de 64 bits et %s est de 32 bits" -#: elf32-sh64.c:226 elf64-sh64.c:2412 +#: elf32-sh64.c:228 elf64-sh64.c:2319 #, c-format msgid "%s: object size does not match that of target %s" msgstr "%s: taille de l'objet ne concorde pas avec la taille de la cible %s" -#: elf32-sh64.c:461 elf64-sh64.c:2990 +#: elf32-sh64.c:451 elf64-sh64.c:2833 #, c-format msgid "%s: encountered datalabel symbol in input" -msgstr "%s: rencontre du symbole d'une étiquette de donnée dans l'entrée" +msgstr "%s: rencontre du symbole d'une étiquette de donnée dans l'entrée" -#: elf32-sh64.c:544 +#: elf32-sh64.c:528 msgid "PTB mismatch: a SHmedia address (bit 0 == 1)" msgstr "Non concordance PTB: adresse SHmedia (bit 0 == 1)" -#: elf32-sh64.c:547 +#: elf32-sh64.c:531 msgid "PTA mismatch: a SHcompact address (bit 0 == 0)" msgstr "Non concordance PTA: adresse SHcompact (bit 0 == 0)" -#: elf32-sh64.c:565 +#: elf32-sh64.c:549 #, c-format msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16" -msgstr "%s: ERREUR GAS: insn PTB inattendue avec R_SH_PT_16" +msgstr "%s: Erreur GAS: insn PTB inattendue avec R_SH_PT_16" -#: elf32-sh64.c:614 elf64-sh64.c:1748 -#, c-format -msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n" -msgstr "%s: ERREUR: relocalisation non alignée type %d à %08x relocalisé`%08x\n" +#: elf32-sh64.c:598 +msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n" +msgstr "%B: erreur: type de relocalisation %d non aligné à %08x relocalisé %p\n" -#: elf32-sh64.c:698 +#: elf32-sh64.c:674 #, c-format msgid "%s: could not write out added .cranges entries" -msgstr "%s: ne peut écrire en sortie des entrées .cranges" +msgstr "%s: ne peut écrire en sortie des entrées .cranges ajoutées" -#: elf32-sh64.c:760 +#: elf32-sh64.c:734 #, c-format msgid "%s: could not write out sorted .cranges entries" -msgstr "%s: ne peut écrire en sortie des entrées .cranges" +msgstr "%s: ne peut écrire en sortie des entrées .cranges triées" + +#: elf32-sparc.c:89 +msgid "%B: compiled for a 64 bit system and target is 32 bit" +msgstr "%B: compilé pour un système à 64 bits et la cible est de 32 bits" + +#: elf32-sparc.c:102 +msgid "%B: linking little endian files with big endian files" +msgstr "%B: édition de liens pour des fichiers à octets de poids faible avec des fichiers à octets de poids fort" + +#: elf32-spu.c:719 +msgid "%X%P: overlay section %A does not start on a cache line.\n" +msgstr "%X%P: recouvrement de la section %A ne démarre pas sur une ligne de cache.\n" + +#: elf32-spu.c:727 +msgid "%X%P: overlay section %A is larger than a cache line.\n" +msgstr "%X%P: recouvrement de la section %A est plus grand que la ligne de cache.\n" + +#: elf32-spu.c:747 +msgid "%X%P: overlay section %A is not in cache area.\n" +msgstr "%X%P: recouvrement de la section %A n'est pas dans une zone de cache.\n" + +#: elf32-spu.c:787 +msgid "%X%P: overlay sections %A and %A do not start at the same address.\n" +msgstr "%X%P: recouvrement des sections %A et %A ne commencent pas à la même adresse.\n" + +#: elf32-spu.c:1011 +msgid "warning: call to non-function symbol %s defined in %B" +msgstr "attention: appel au symbole %s défini dans %B qui n'est pas une fonction" -#: elf32-sparc.c:2521 elf64-sparc.c:2314 +#: elf32-spu.c:1361 +msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" +msgstr "%A:0x%v le lrlive .brinfo (%u) diffère de celui de l'analyse (%u)\n" + +#: elf32-spu.c:1880 +msgid "%B is not allowed to define %s" +msgstr "%B ne peut pas définir %s" + +#: elf32-spu.c:1888 +#, c-format +msgid "you are not allowed to define %s in a script" +msgstr "vous ne pouvez pas définir %s dans un script" + +#: elf32-spu.c:1922 +#, c-format +msgid "%s in overlay section" +msgstr "%s dans une section de recouvrement" + +#: elf32-spu.c:1951 +msgid "overlay stub relocation overflow" +msgstr "débordement de la relocalisation de l'ébauche de recouvrement" + +#: elf32-spu.c:1960 elf64-ppc.c:11327 +msgid "stubs don't match calculated size" +msgstr "taille des ébauches ne concorde pas avec la taille calculée" + +#: elf32-spu.c:2542 +#, c-format +msgid "warning: %s overlaps %s\n" +msgstr "attention: %s recouvre %s\n" + +#: elf32-spu.c:2558 +#, c-format +msgid "warning: %s exceeds section size\n" +msgstr "attention: %s dépasse la taille de la section\n" + +#: elf32-spu.c:2589 +msgid "%A:0x%v not found in function table\n" +msgstr "%A:%0x%v pas trouvé dans la table de fonctions\n" + +#: elf32-spu.c:2729 +msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n" +msgstr "%B(%A+0x%v): appel à la section non exécutable %B(%A), analyse incomplète\n" + +#: elf32-spu.c:3297 +#, c-format +msgid "Stack analysis will ignore the call from %s to %s\n" +msgstr "L'analyse de la pile ignorera l'appel de %s à %s\n" + +#: elf32-spu.c:3988 +msgid " %s: 0x%v\n" +msgstr " %s: 0x%v\n" + +#: elf32-spu.c:3989 +msgid "%s: 0x%v 0x%v\n" +msgstr "%s: 0x%v 0x%v\n" + +#: elf32-spu.c:3994 +msgid " calls:\n" +msgstr " appels:\n" + +#: elf32-spu.c:4002 #, c-format -msgid "%s: probably compiled without -fPIC?" -msgstr "%s: probablement compilé sans -fPIC?" +msgid " %s%s %s\n" +msgstr " %s%s %s\n" -#: elf32-sparc.c:3348 +#: elf32-spu.c:4307 #, 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" +msgid "%s duplicated in %s\n" +msgstr "%s dupliqué dans %s\n" -#: elf32-sparc.c:3362 +#: elf32-spu.c:4311 #, c-format -msgid "%s: linking little endian files with big endian files" +msgid "%s duplicated\n" +msgstr "%s dupliqué\n" + +#: elf32-spu.c:4318 +msgid "sorry, no support for duplicate object files in auto-overlay script\n" +msgstr "désolé, pas de support des fichiers objet dupliqués dans un script auto-overlay\n" + +#: elf32-spu.c:4359 +msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n" +msgstr "la taille de non recouvrement de 0x%v plus la taille maximum de recouvrement de 0x%v dépasse l'espace local\n" + +#: elf32-spu.c:4514 +msgid "%B:%A%s exceeds overlay size\n" +msgstr "%B:%A%s dépasse la taille de recouvrement\n" + +#: elf32-spu.c:4676 +msgid "Stack size for call graph root nodes.\n" +msgstr "Taille de la pile des nÅ“uds racine du graph d'appel.\n" + +#: elf32-spu.c:4677 +msgid "" +"\n" +"Stack size for functions. Annotations: '*' max stack, 't' tail call\n" 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" +"\n" +"Taille de la pile pour les fonctions. Annotations: «*» pile max, «t» appel de queue\n" + +#: elf32-spu.c:4687 +msgid "Maximum stack required is 0x%v\n" +msgstr "Pile maximum requise est 0x%v\n" + +#: elf32-spu.c:4778 +msgid "fatal error while creating .fixup" +msgstr "erreur fatale lors de la création de .fixup" + +#: elf32-spu.c:5006 +msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%B(%A+0x%lx): relocalisation %s sans solution vers le symbole «%s»" + +#: elf32-tic6x.c:1539 +msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined" +msgstr "%B: relocalisation relative à SB mais __c6xabi_DSBT_BASE n'est pas défini" -#: elf32-v850.c:753 +#. Shared libraries and exception handling support not +#. implemented. +#: elf32-tic6x.c:1554 +msgid "%B: relocation type %d not implemented" +msgstr "%B: relocalisation de type %d pas implémentée" + +#: elf32-tic6x.c:1640 +msgid "dangerous relocation" +msgstr "relocalisation dangereuse" + +#: elf32-tic6x.c:1788 elf32-tic6x.c:1796 +msgid "error: %B requires more stack alignment than %B preserves" +msgstr "erreur: %B nécessite un plus grand alignement de pile que ce que %B préserve" + +#: elf32-tic6x.c:1806 elf32-tic6x.c:1815 +msgid "error: unknown Tag_ABI_array_object_alignment value in %B" +msgstr "erreur: valeur Tag_ABI_array_object_alignment inconnue dans %B" + +#: elf32-tic6x.c:1824 elf32-tic6x.c:1833 +msgid "error: unknown Tag_ABI_array_object_align_expected value in %B" +msgstr "erreur: valeur Tag_ABI_array_object_align_expected inconnue dans %B" + +#: elf32-tic6x.c:1841 elf32-tic6x.c:1848 +msgid "error: %B requires more array alignment than %B preserves" +msgstr "erreur: %B nécessite un plus grand alignement de tableau que ce que %B préserve" + +#: elf32-tic6x.c:1870 +msgid "warning: %B and %B differ in wchar_t size" +msgstr "attention: %B et %B on des tailles de wchar_t différentes" + +#: elf32-tic6x.c:1888 +msgid "warning: %B and %B differ in whether code is compiled for DSBT" +msgstr "attention: %B et %B ne sont pas d'accord sur la compilation du code pour DSBT" + +#: elf32-tic6x.c:1898 +msgid "warning: %B and %B differ in position-dependence of data addressing" +msgstr "attention: %B et %B divergent sur la dépendance de la position de l'adressage des données" + +#: elf32-tic6x.c:1908 +msgid "warning: %B and %B differ in position-dependence of code addressing" +msgstr "attention: %B et %B divergent sur la dépendance de la position de l'adressage du code" + +#: elf32-v850.c:173 #, 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" +msgstr "Variable «%s» ne peut occuper de multiples petites régions de données" -#: elf32-v850.c:756 +#: elf32-v850.c:176 #, 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" +msgstr "Variable «%s» peut seulement être dans une région de données petite, zéro ou minuscule" -#: elf32-v850.c:759 +#: elf32-v850.c:179 #, 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" +msgstr "Variable «%s» ne peut être dans une région de données petite et zéro à la fois" -#: elf32-v850.c:762 +#: elf32-v850.c:182 #, 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" +msgstr "Variable «%s» ne peut être dans une région de données petite et minuscule à la fois" -#: elf32-v850.c:765 +#: elf32-v850.c:185 #, 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" +msgstr "Variable «%s» ne peut être dans une région de données zéro et minuscule à la fois" -#: elf32-v850.c:1144 +#: elf32-v850.c:483 +#, c-format msgid "FAILED to find previous HI16 reloc\n" -msgstr "ÉCHEC de repérage de la relocalisation précédente HI16\n" +msgstr "ÉCHEC de repérage de la relocalisation précédente HI16\n" -#: elf32-v850.c:1789 +#: elf32-v850.c:2155 msgid "could not locate special linker symbol __gp" -msgstr "ne peut repérer le symbole spécial d'édition de lien __gp" +msgstr "ne peut repérer le symbole spécial d'édition de lien __gp" -#: elf32-v850.c:1793 +#: elf32-v850.c:2159 msgid "could not locate special linker symbol __ep" -msgstr "ne peut repérer le symbole spécial d'édition de lien __ep" +msgstr "ne peut repérer le symbole spécial d'édition de lien __ep" -#: elf32-v850.c:1797 +#: elf32-v850.c:2163 msgid "could not locate special linker symbol __ctbp" -msgstr "ne peut repérer le symbole spécial d'édition de lien __ctbp" +msgstr "ne peut repérer le symbole spécial d'édition de lien __ctbp" -#: elf32-v850.c:1963 -#, 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:2341 +msgid "%B: Architecture mismatch with previous modules" +msgstr "%B: L'architecture ne concorde pas avec les modules précédents" -#: elf32-v850.c:1983 +#. xgettext:c-format. +#: elf32-v850.c:2360 #, c-format msgid "private flags = %lx: " -msgstr "fanions privés = %lx" +msgstr "fanions privés = %lx: " -#: elf32-v850.c:1988 +#: elf32-v850.c:2365 +#, c-format msgid "v850 architecture" msgstr "architecture v850" -#: elf32-v850.c:1989 +#: elf32-v850.c:2366 +#, c-format msgid "v850e architecture" msgstr "architecture v850e" -#: elf32-vax.c:549 +#: elf32-v850.c:2367 +#, c-format +msgid "v850e1 architecture" +msgstr "architecture v850e1" + +#: elf32-v850.c:2368 +#, c-format +msgid "v850e2 architecture" +msgstr "architecture v850e2" + +#: elf32-v850.c:2369 +#, c-format +msgid "v850e2v3 architecture" +msgstr "architecture v850e2v3" + +#: elf32-vax.c:531 +#, c-format msgid " [nonpic]" msgstr " [nonpic]" -#: elf32-vax.c:552 +#: elf32-vax.c:534 +#, c-format msgid " [d-float]" msgstr " [d-float]" -#: elf32-vax.c:555 +#: elf32-vax.c:537 +#, c-format msgid " [g-float]" msgstr " [g-float]" -#: elf32-vax.c:663 +#: elf32-vax.c:654 #, c-format msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld" -msgstr "%s: AVERTISSEMENT: GOT ajouté de %ld vers « %s » ne concorde par avec le GOT ajouté de %ld" +msgstr "%s: attention: ajout GOT de %ld à «%s» ne concorde par avec l'ajout GOT précédent de %ld" -#: elf32-vax.c:1667 +#: elf32-vax.c:1587 #, c-format msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" -msgstr "%s: AVERTISSEMENT: PLT ajouté de %d vers « %s » de la section %s ignoré" +msgstr "%s: attention: ignore l'ajout PLT de %d à «%s» de la section %s" -#: elf32-vax.c:1802 +#: elf32-vax.c:1714 #, c-format msgid "%s: warning: %s relocation against symbol `%s' from %s section" -msgstr "%s: AVERTISSEMENT: relocalisation %s vers le symbole « %s » de la section %s" +msgstr "%s: attention: relocalisation %s vers le symbole «%s» de la section %s" -#: elf32-vax.c:1808 +#: elf32-vax.c:1720 #, c-format msgid "%s: warning: %s relocation to 0x%x from %s section" -msgstr "%s: AVERTISSEMENT: relocalisation %s vers 0x%x de la section %s" +msgstr "%s: attention: relocalisation %s vers 0x%x de la section %s" -#: elf32-xstormy16.c:462 elf32-ia64.c:2450 elf64-ia64.c:2450 +#: elf32-xstormy16.c:451 elf32-ia64.c:2861 elf64-ia64.c:2861 msgid "non-zero addend in @fptr reloc" -msgstr "ajout non null dans la relocalisation @fptr" +msgstr "ajout non nul dans la relocalisation @fptr" -#: elf64-alpha.c:1108 -msgid "GPDISP relocation did not find ldah and lda instructions" -msgstr "la relocalisation GPDISP n'a pas repéré les instructions ldah et lda" +#: elf32-xtensa.c:918 +msgid "%B(%A): invalid property table" +msgstr "%B(%A): table de propriété invalide" -#: elf64-alpha.c:3731 -#, c-format -msgid "%s: .got subsegment exceeds 64K (size %d)" -msgstr "%s: le sous-segment .got excède 64K (taille %d)" +#: elf32-xtensa.c:2780 +msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)" +msgstr "%B(%A+0x%lx): décalage de relocalisation hors limite (taille=0x%x)" -#: elf64-alpha.c:4602 elf64-alpha.c:4614 -#, c-format -msgid "%s: gp-relative relocation against dynamic symbol %s" -msgstr "%s: relocalisation relative gp vers le symbole dynamique %s" +#: elf32-xtensa.c:2859 elf32-xtensa.c:2980 +msgid "dynamic relocation in read-only section" +msgstr "relocalisation dynamique dans une section en lecture seule" -#: elf64-alpha.c:4640 elf64-alpha.c:4773 -#, c-format -msgid "%s: pc-relative relocation against dynamic symbol %s" -msgstr "%s: relocalisation relative au PC vers le symbole dynamique %s" +#: elf32-xtensa.c:2956 +msgid "TLS relocation invalid without dynamic sections" +msgstr "relocalisation TLS incorrecte sans section dynamique" -#: elf64-alpha.c:4668 -#, c-format -msgid "%s: change in gp: BRSGP %s" -msgstr "%s: changé dans le GP: BRSGP %s" +#: elf32-xtensa.c:3173 +msgid "internal inconsistency in size of .got.loc section" +msgstr "incohérence interne dans la taille de la section .got.loc" -#: elf64-alpha.c:4693 -msgid "" -msgstr "" +#: elf32-xtensa.c:3486 +msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x" +msgstr "%B: type de machine incompatible. Sortie est 0x%x. Entrée est 0x%x" -#: elf64-alpha.c:4698 -#, c-format -msgid "%s: !samegp reloc against symbol without .prologue: %s" -msgstr "%s: relocalisation !samegp vers le symbole sans .prologue: %s" +#: elf32-xtensa.c:4715 elf32-xtensa.c:4723 +msgid "Attempt to convert L32R/CALLX to CALL failed" +msgstr "Échec de la tentative de convertir L32R/CALLX en CALL" -#: elf64-alpha.c:4749 -#, c-format -msgid "%s: unhandled dynamic relocation against %s" -msgstr "%s: relocalisation dynamique non traitée vers %s" +#: elf32-xtensa.c:6333 elf32-xtensa.c:6409 elf32-xtensa.c:7525 +msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch" +msgstr "%B(%A+0x%lx): l'instruction ne peut pas être décodée; la configuration est peut-être erronée" -#: elf64-alpha.c:4832 -#, c-format -msgid "%s: dtp-relative relocation against dynamic symbol %s" -msgstr "%s: relocalisation relative dtp vers le symbole dynamique %s" +#: elf32-xtensa.c:7265 +msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch" +msgstr "%B(%A+0x%lx): l'instruction ne peut pas être décodée pour une relocalisation XTENSA_ASM_SIMPLIFY; la configuration est peut-être erronée" -#: elf64-alpha.c:4855 -#, c-format -msgid "%s: tp-relative relocation against dynamic symbol %s" -msgstr "%s: relocalisation relative tp vers le symbole dynamique %s" +#: elf32-xtensa.c:9024 +msgid "invalid relocation address" +msgstr "adresse de relocalisation incorrecte" + +#: elf32-xtensa.c:9073 +msgid "overflow after relaxation" +msgstr "débordement après la relâche" + +#: elf32-xtensa.c:10205 +msgid "%B(%A+0x%lx): unexpected fix for %s relocation" +msgstr "%B(%A+0x%lx): correction inattendue pour la relocalisation %s" + +#: elf64-alpha.c:460 +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:2408 +msgid "%B: .got subsegment exceeds 64K (size %d)" +msgstr "%B: le sous-segment .got excède 64K (taille %d)" + +#: elf64-alpha.c:4304 elf64-alpha.c:4316 +msgid "%B: gp-relative relocation against dynamic symbol %s" +msgstr "%B: relocalisation relative au gp vers le symbole dynamique %s" -#: elf64-hppa.c:2086 +#: elf64-alpha.c:4342 elf64-alpha.c:4477 +msgid "%B: pc-relative relocation against dynamic symbol %s" +msgstr "%B: relocalisation relative au PC vers le symbole dynamique %s" + +#: elf64-alpha.c:4370 +msgid "%B: change in gp: BRSGP %s" +msgstr "%B: changé dans le GP: BRSGP %s" + +#: elf64-alpha.c:4395 +msgid "" +msgstr "" + +#: elf64-alpha.c:4400 +msgid "%B: !samegp reloc against symbol without .prologue: %s" +msgstr "%B: relocalisation !samegp vers le symbole sans .prologue: %s" + +#: elf64-alpha.c:4452 +msgid "%B: unhandled dynamic relocation against %s" +msgstr "%B: relocalisation dynamique non traitée vers %s" + +#: elf64-alpha.c:4484 +msgid "%B: pc-relative relocation against undefined weak symbol %s" +msgstr "%B: relocalisation relative au PC vers le symbole faible non défini %s" + +#: elf64-alpha.c:4544 +msgid "%B: dtp-relative relocation against dynamic symbol %s" +msgstr "%B: relocalisation relative au dtp vers le symbole dynamique %s" + +#: elf64-alpha.c:4567 +msgid "%B: tp-relative relocation against dynamic symbol %s" +msgstr "%B: relocalisation relative au tp vers le symbole dynamique %s" + +#: elf64-hppa.c:2101 #, 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" +msgstr "entrée de l'ébauche pour %s ne peut charger .plt, décalage dp = %ld" -#: elf64-mmix.c:1032 +#: elf64-hppa.c:3299 +msgid "%B(%A+0x%lx): cannot reach %s" +msgstr "%B(%A+0x%lx): ne peut atteindre %s" + +#: elf64-mmix.c:1177 #, c-format msgid "" "%s: Internal inconsistency error for value for\n" " linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx\n" msgstr "" -"%s: erreur d'inconsistence interne pour la valeur du registre global\n" -" alloué à l'édition de lien: lié: 0x%lx%08lx != relâché: 0x%lx%08lx\n" +"%s: erreur d'incohérence interne pour la valeur du registre global\n" +" alloué à l'édition de lien: lié: 0x%lx%08lx != relâché: 0x%lx%08lx\n" -#: elf64-mmix.c:1416 +#: elf64-mmix.c:1607 #, c-format msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s" -msgstr "%s: relocalisation base plus décalage vers le symbole registre: (inconnu) dans %s" +msgstr "%s: relocalisation base plus décalage vers le symbole registre: (inconnu) dans %s" -#: elf64-mmix.c:1421 +#: elf64-mmix.c:1612 #, c-format msgid "%s: base-plus-offset relocation against register symbol: %s in %s" -msgstr "%s: relocalisation base plus décalage vers le symbole registre: %s dans %s" +msgstr "%s: relocalisation base plus décalage vers le symbole registre: %s dans %s" -#: elf64-mmix.c:1465 +#: elf64-mmix.c:1656 #, c-format msgid "%s: register relocation against non-register symbol: (unknown) in %s" msgstr "%s: relocalisation de registre vers le symbole non-registre: (inconnu) dans %s" -#: elf64-mmix.c:1470 +#: elf64-mmix.c:1661 #, c-format 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-mmix.c:1507 +#: elf64-mmix.c:1698 #, c-format 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-mmix.c:1535 +#: elf64-mmix.c:1726 #, c-format 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." -#: elf64-mmix.c:1994 +#: elf64-mmix.c:2190 #, c-format 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" +msgstr "%s: erreur: multiple définitions de «%s»; début de %s est initialisé dans un précédent fichier lié\n" -#: elf64-mmix.c:2053 +#: elf64-mmix.c:2248 msgid "Register section has contents\n" msgstr "Registre de section contient\n" -#: elf64-mmix.c:2216 +#: elf64-mmix.c:2440 #, c-format msgid "" "Internal inconsistency: remaining %u != max %u.\n" " Please report this bug." msgstr "" "Inconsistence interne: reste %u != max %u.\n" -" SVP rapporter cette anomalie." +" Merci de rapporter cette anomalie." -#: elf64-ppc.c:2388 libbfd.c:831 -#, c-format -msgid "%s: compiled for a big endian system and target is little endian" +#: elf64-ppc.c:2741 libbfd.c:997 +msgid "%B: 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" +"%B: compilé pour un système à octets de poids fort alors que la cible\n" +"est un système à octets de poids faible" -#: elf64-ppc.c:2391 libbfd.c:833 -#, c-format -msgid "%s: compiled for a little endian system and target is big endian" +#: elf64-ppc.c:2744 libbfd.c:999 +msgid "%B: 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" +"%B: compilé pour un système à octets de poids faible alors que la cible\n" +"est un système à octets de poids fort" -#: elf64-ppc.c:4857 +#: elf64-ppc.c:6473 #, c-format -msgid "%s: unexpected reloc type %u in .opd section" -msgstr "%s: type inattendu de relocalisation %u dans la section .opd" +msgid "copy reloc against `%s' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc" +msgstr "la copie de la relocalisation vers «%s» nécessite un lien plt paresseux, évitez de mettre LD_BIND_NOW=1 ou mettez à jour gcc" + +#: elf64-ppc.c:6901 +msgid "dynreloc miscount for %B, section %A" +msgstr "erreur de décompte de relocalisation dynamique pour %B, section %A" + +#: elf64-ppc.c:6985 +msgid "%B: .opd is not a regular array of opd entries" +msgstr "%B: .opd n'est pas un tableau régulier d'entrées opd" + +#: elf64-ppc.c:6994 +msgid "%B: unexpected reloc type %u in .opd section" +msgstr "%B: type de relocalisation %u inattendu dans la section .opd" -#: elf64-ppc.c:4877 +#: elf64-ppc.c:7015 +msgid "%B: undefined sym `%s' in .opd section" +msgstr "%B: symbole «%s» indéfini dans la section .opd" + +#: elf64-ppc.c:7877 elf64-ppc.c:8392 #, c-format -msgid "%s: .opd is not a regular array of opd entries" -msgstr "%s: .opd n'est pas un tableau régulier d'entrées opd" +msgid "%s defined on removed toc entry" +msgstr "%s défini dans une entrée toc supprimée" -#: elf64-ppc.c:4897 +#: elf64-ppc.c:9459 #, c-format -msgid "%s: undefined sym `%s' in .opd section" -msgstr "%s: symbole « %s » indéfini dans la section .opd" +msgid "long branch stub `%s' offset overflow" +msgstr "débordement de l'offset du branchement long de l'ébauche «%s»" -#: elf64-ppc.c:6136 +#: elf64-ppc.c:9518 #, c-format msgid "can't find branch stub `%s'" -msgstr "ne peut repérer le talon de branchement « %s »" +msgstr "ne peut repérer l'ébauche de branchement «%s»" -#: elf64-ppc.c:6175 elf64-ppc.c:6250 +#: elf64-ppc.c:9580 elf64-ppc.c:9716 #, c-format msgid "linkage table error against `%s'" -msgstr "erreur de liaison de la table de liaison vers « %s »" +msgstr "erreur de liaison de la table de liaison vers «%s»" -#: elf64-ppc.c:6340 +#: elf64-ppc.c:9886 #, c-format msgid "can't build branch stub `%s'" -msgstr "ne peut construire un talon de branchement « %s »" - -#: elf64-ppc.c:7047 -msgid ".glink and .plt too far apart" -msgstr ".glink et .plt trop éloignée" +msgstr "ne peut construire l'ébauche de branchement «%s»" -#: elf64-ppc.c:7135 -msgid "stubs don't match calculated size" -msgstr "taille des talons ne concorde pas avec la taille calculée" +#: elf64-ppc.c:10684 +msgid "%B section %A exceeds stub group size" +msgstr "%B section %A dépasse la taille du groupe d'ébauche" -#: elf64-ppc.c:7147 +#: elf64-ppc.c:11339 #, c-format msgid "" -"linker stubs in %u groups\n" +"linker stubs in %u group%s\n" " branch %lu\n" " toc adjust %lu\n" " long branch %lu\n" " long toc adj %lu\n" " plt call %lu" msgstr "" -"talons d'édition de liens dans les groupes %u\n" +"éditeur de liens des ébauches dans %u groupe%s\n" " branchements %lu\n" " ajustements toc %lu\n" " long branchements %lu\n" " long ajustements toc %lu\n" " appels plt %lu" -#: elf64-ppc.c:7723 -#, c-format -msgid "%s(%s+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc" -msgstr "%s(%s+0x%lx): TOC multiples et automatiques non supportés utilisant votre fichier crt; recompiler avec -mminimal-toc ou mettre à jour gcc" +#: elf64-ppc.c:12190 +msgid "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc" +msgstr "%B(%A+0x%lx): TOC multiples et automatiques non supportées utilisant votre fichier crt; recompilez avec -mminimal-toc ou mettez à jour gcc" + +#: elf64-ppc.c:12198 +msgid "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern" +msgstr "%B(%A+0x%lx): l'optimisation soeurs des appels vers «%s» ne permet par de TOC multiples et automatiques; recompilez avec -mminimal-toc ou -fno-optimize-sibling-calls, ou rendez «%s» externe" + +#: elf64-ppc.c:12919 +msgid "%B: relocation %s is not supported for symbol %s." +msgstr "%B: relocalisation %s n'est pas supportée pour le symbole %s." + +#: elf64-ppc.c:13096 +msgid "%B: error: relocation %s not a multiple of %d" +msgstr "%B: erreur: relocalisation %s n'est pas un multiple de %d" -#: elf64-ppc.c:7731 +#: elf64-sh64.c:1682 #, c-format -msgid "%s(%s+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern" -msgstr "%s(%s+0x%lx): optimisation soeurs des appels vers `%s' ne permet par de TOC multiples et automatiques; recompiler avec -mminimal-toc ou -fno-optimize-sibling-calls, ou rendre externe `%s'" +msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n" +msgstr "%s: erreur: type de relocalisation %d non aligné à %08x relocalisé`%08x\n" -#: elf64-ppc.c:8329 -#, c-format -msgid "%s: relocation %s is not supported for symbol %s." -msgstr "%s: relocalisation %s n'est pas supportée pour le symbole %s." +#: elf64-sparc.c:444 +msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER" +msgstr "%B: Seuls les registres %%g[2367] peuvent être déclarés en utilisant les registres STT_REGISTER" -#: elf64-ppc.c:8408 -#, c-format -msgid "%s: error: relocation %s not a multiple of %d" -msgstr "%s: erreur: relocalisation %s n'est pas un multiple de %d" +#: elf64-sparc.c:464 +msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B" +msgstr "Registre %%g%d utilisé de manière incompatible: %s dans %B précédemment %s dans %B" -#: elf64-sparc.c:1370 -#, c-format -msgid "%s: check_relocs: unhandled reloc type %d" -msgstr "%s: check_relocs: type de relocalisation non traitée %d" +#: elf64-sparc.c:487 +msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B" +msgstr "Symbole «%s» a des types qui diffèrent: REGISTRE dans %B, précédemment %s dans %B" -#: elf64-sparc.c:1407 -#, c-format -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-sparc.c:532 +msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B" +msgstr "Symbole «%s» a des types qui diffèrent: %s dans %B, précédemment REGISTRE dans %B" -#: elf64-sparc.c:1427 -#, 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 précédemment %s dans %s" +#: elf64-sparc.c:684 +msgid "%B: linking UltraSPARC specific with HAL specific code" +msgstr "%B: édition de liens spécifiques pour UltraSPARC avec du code spécifique HAL" -#: elf64-sparc.c:1450 -#, c-format -msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s" -msgstr "Symbole « %s » a des types qui diffèrent: REGISTRE dans %s, précédemment %s dans %s" +#: elf64-x86-64.c:1360 +msgid "%B: '%s' accessed both as normal and thread local symbol" +msgstr "%B: symbole «%s» accédé à la fois comme normal et comme local au thread" -#: elf64-sparc.c:1496 -#, c-format -msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s" -msgstr "Symbole « %s » a des types qui diffèrent: %s dans %s, précédemment REGISTRE dans %s" +#: elf64-x86-64.c:2801 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d" +msgstr "%B: la relocalisation %s vers le symbole STT_GNU_IFUNC «%s» a l'opérande non nul: %d" -#: elf64-sparc.c:3053 -#, 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" +#: elf64-x86-64.c:3073 +msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object" +msgstr "%B: relocalisation R_X86_64_GOTOFF64 vers la fonction protégée «%s» ne peut pas être utilisée lors de la création d'un objet partagé" + +#: elf64-x86-64.c:3184 +msgid "; recompile with -fPIC" +msgstr "; recompilé avec -fPIC" + +#: elf64-x86-64.c:3189 +msgid "%B: relocation %s against %s `%s' can not be used when making a shared object%s" +msgstr "%B: relocalisation %s vers %s «%s» ne peut pas être utilisée en créant un objet partagé %s" + +#: elf64-x86-64.c:3191 +msgid "%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s" +msgstr "%B: relocalisation %s vers le %s non défini «%s» ne peut pas être utilisée en créant un objet partagé %s" -#: elf64-x86-64.c:739 +#: elfcode.h:826 #, c-format -msgid "%s: %s' accessed both as normal and thread local symbol" -msgstr "%s: %s symbole accédé à la fois comme normal et comme thread" +msgid "warning: %s has a corrupt string table index - ignoring" +msgstr "attention: %s a un index de table de chaînes corrompu - ignoré" -#: elfcode.h:1113 +#: elfcode.h:1236 #, 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)" -#: elfcode.h:1342 +#: elfcode.h:1476 #, c-format msgid "%s(%s): relocation %d has invalid symbol index %ld" -msgstr "%s(%s): relocalisation %d a un index de symbole invalide %ld" +msgstr "%s(%s): relocalisation %d a un index de symbole %ld invalide" -#: elflink.c:1456 -#, c-format -msgid "%s: warning: unexpected redefinition of indirect versioned symbol `%s'" -msgstr "%s: AVERTISSEMENT: redéfinition inattendue du symbole indirect avec version « %s »" +#: elfcore.h:312 +msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu." +msgstr "Attention: %B est tronqué: taille attendue du cÅ“ur du fichier >= %lu, obtenu: %lu." -#: elflink.c:1807 -#, c-format -msgid "%s: undefined versioned symbol name %s" -msgstr "%s: nom symbole avec version indéfinie %s" +#: elflink.c:1119 +msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A" +msgstr "%s: définition TLS dans %B section %A ne correspond pas à la définition non TLS dans %B section %A" -#: elflink.c:2142 -#, c-format -msgid "%s: relocation size mismatch in %s section %s" -msgstr "%s: taille de la relocalisation ne concorde pas dans %s section %s" +#: elflink.c:1123 +msgid "%s: TLS reference in %B mismatches non-TLS reference in %B" +msgstr "%s: référence TLS dans %B ne correspond pas à la référence non TLS dans %B" + +#: elflink.c:1127 +msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B" +msgstr "%s: définition TLS dans %B section %A ne correspond pas à la référence TLS dans %B" -#: elflink.c:2434 +#: elflink.c:1131 +msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A" +msgstr "%s: référence TLS dans %B ne correspond pas à la définition non TLS dans %B section %A" + +#: elflink.c:1763 +msgid "%B: unexpected redefinition of indirect versioned symbol `%s'" +msgstr "%B: attention: redéfinition inattendue du symbole indirect avec version «%s»" + +#: elflink.c:2076 +msgid "%B: version node not found for symbol %s" +msgstr "%B: version du nÅ“ud pas trouvée pour le symbole %s" + +#: elflink.c:2166 +msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'" +msgstr "%B: mauvais index de relocalisation du symbole (0x%lx >= 0x%lx) pour l'offset 0x%lx de la section «%A»" + +#: elflink.c:2177 +msgid "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the object file has no symbol table" +msgstr "%B: index de symbole non nul (0x%lx) pour l'offset 0x%lx de la section «%A» quand le fichier objet n'a pas de table de symboles" + +#: elflink.c:2367 +msgid "%B: relocation size mismatch in %B section %A" +msgstr "%B: taille de la relocalisation ne concorde pas dans %B section %A" + +#: elflink.c:2662 #, 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 "attention: type et taille du symbole dynamique «%s» ne sont pas définis" -#: elflink.h:1022 -#, c-format -msgid "%s: %s: invalid version %u (max %d)" -msgstr "%s: %s: version invalide %u (max %d)" +#: elflink.c:3418 +msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n" +msgstr "%P: code machine ELF alternatif trouvé (%d) dans %B, %d est attendu\n" -#: elflink.h:1063 -#, c-format -msgid "%s: %s: invalid needed version %d" -msgstr "%s: %s: version requise invalide %d" +#: elflink.c:4050 +msgid "%B: %s: invalid version %u (max %d)" +msgstr "%B: %s: version invalide %u (max %d)" -#: elflink.h:1238 -#, c-format -msgid "Warning: alignment %u of symbol `%s' in %s is smaller than %u in %s" -msgstr "AVERTISSEMENT: alignement %u du symbole « %s » ans %s est plus petit que %u dans %s" +#: elflink.c:4086 +msgid "%B: %s: invalid needed version %d" +msgstr "%B: %s: version requise invalide %d" -#: elflink.h:1252 -#, c-format -msgid "Warning: size of symbol `%s' changed from %lu in %s to %lu in %s" -msgstr "AVERTISSEMENT: taille du symbole « %s » a changé de %lu dans %s à %lu dans %s" +#: elflink.c:4285 +msgid "Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %A" +msgstr "Attention: alignement %u du symbole commun «%s» dans %B est plus grand que l'alignement (%u) de sa section %A" + +#: elflink.c:4291 +msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B" +msgstr "Attention: alignement %u du symbole «%s» dans %B est plus petit que %u dans %B" + +#: elflink.c:4306 +msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B" +msgstr "Attention: taille du symbole «%s» a changé de %lu dans %B à %lu dans %B" -#: elflink.h:2160 +#: elflink.c:4472 +msgid "%B: undefined reference to symbol '%s'" +msgstr "%B: référence au symbole non défini «%s»" + +#: elflink.c:4475 +msgid "note: '%s' is defined in DSO %B so try adding it to the linker command line" +msgstr "note: «%s» est défini dans le DSO %B donc essayez de l'ajouter à la ligne de commande du lieur" + +#: elflink.c:5779 #, c-format msgid "%s: undefined version: %s" -msgstr "%s: version non définie: %s" +msgstr "%s: version non définie: %s" + +#: elflink.c:5847 +msgid "%B: .preinit_array section is not allowed in DSO" +msgstr "%B: section .preinit_array n'est pas permise dans DSO" + +#: elflink.c:7598 +#, c-format +msgid "undefined %s reference in complex symbol: %s" +msgstr "référence %s non définie dans le symbole complexe: %s" -#: elflink.h:2226 +#: elflink.c:7752 #, c-format -msgid "%s: .preinit_array section is not allowed in DSO" -msgstr "%s: section .preinit_array n'est pas permise dans DSO" +msgid "unknown operator '%c' in complex symbol" +msgstr "opérateur «%c» inconnu dans le symbole complexe" + +#: elflink.c:8091 elflink.c:8108 elflink.c:8145 elflink.c:8162 +msgid "%B: Unable to sort relocs - they are in more than one size" +msgstr "%B: Impossible de trier les relocalisations - plusieurs tailles rencontrées" -#: elflink.h:3078 +#: elflink.c:8122 elflink.c:8176 +msgid "%B: Unable to sort relocs - they are of an unknown size" +msgstr "%B: Impossible de trier les relocalisations - leur taille est inconnue" + +#: elflink.c:8227 msgid "Not enough memory to sort relocations" -msgstr "Pas assez de mémoire pour effectuer le trie des relocalisations" +msgstr "Pas assez de mémoire pour trier les relocalisations" + +#: elflink.c:8420 +msgid "%B: Too many sections: %d (>= %d)" +msgstr "%B: Trop de sections: %d (>= %d)" + +#: elflink.c:8663 +msgid "%B: %s symbol `%s' in %B is referenced by DSO" +msgstr "%B: symbole %s «%s» dans %B est référencé par DSO" + +#: elflink.c:8754 +msgid "%B: could not find output section %A for input section %A" +msgstr "%B: ne peut repérer la section de sortie %A pour la section d'entrée %A" + +#: elflink.c:8874 +msgid "%B: %s symbol `%s' isn't defined" +msgstr "%B: symbole %s «%s» n'est pas défini" + +#: elflink.c:9428 +msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol" +msgstr "erreur: %B contient une relocalisation (0x%s) pour la section %A qui fait référence à un symbole global inexistant" -#: elflink.h:3958 elflink.h:4001 +#: elflink.c:9494 +msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n" +msgstr "%X«%s» référencé dans la section «%A» de %B: défini dans la section abandonnée «%A» de %B\n" + +#: elflink.c:10141 +msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections" +msgstr "%A a, à la fois, des sections ordonnées [«%A» dans %B] et désordonnées [«%A» dans %B]" + +#: elflink.c:10146 #, c-format -msgid "%s: could not find output section %s" -msgstr "%s: ne peut repérer la section de sortie %s" +msgid "%A has both ordered and unordered sections" +msgstr "%A a, à la fois, des sections ordonnées et désordonnées" -#: elflink.h:3964 +#: elflink.c:10992 elflink.c:11036 +msgid "%B: could not find output section %s" +msgstr "%B: ne peut repérer la section de sortie %s" + +#: elflink.c:10997 #, c-format msgid "warning: %s section has zero size" -msgstr "AVERTISSEMENT: section %s a une taille nulle" +msgstr "attention: section %s a une taille nulle" -#: elflink.h:4483 -#, c-format -msgid "%s: %s symbol `%s' in %s is referenced by DSO" -msgstr "%s: %s symbole « %s » in %s est référencé par DSO" +#: elflink.c:11102 +msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n" +msgstr "%P: attention: création d'un DT_TEXTREL dans un objet partagé.\n" -#: elflink.h:4564 -#, 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" +#: elflink.c:11289 +msgid "%P%X: can not read symbols: %E\n" +msgstr "%P%X: ne peut pas lire les symboles: %E\n" -#: elflink.h:4666 -#, c-format -msgid "%s: %s symbol `%s' isn't defined" -msgstr "%s: %s symbole « %s » n'est pas défini" +#: elflink.c:11638 +msgid "Removing unused section '%s' in file '%B'" +msgstr "Suppression de la section inutilisée «%s» dans le fichier «%B»" + +#: elflink.c:11850 +msgid "Warning: gc-sections option ignored" +msgstr "Attention: l'option de la section gc est ignorée" + +#: elflink.c:12399 +msgid "%B: ignoring duplicate section `%A'" +msgstr "%B: ignore les sections dupliquées «%A»" -#: elflink.h:5053 elflink.h:5095 -msgid "%T: discarded in section `%s' from %s\n" -msgstr "%T: mis de côté dans la section « %s » à partir de %s\n" +#: elflink.c:12406 elflink.c:12413 +msgid "%B: duplicate section `%A' has different size" +msgstr "%B: section dupliquée «%A» avec des tailles différentes" -#: elfxx-mips.c:887 +#: elflink.c:12421 elflink.c:12426 +msgid "%B: warning: could not read contents of section `%A'" +msgstr "%B: attention: ne peut pas lire le contenu de la section «%A»" + +#: elflink.c:12430 +msgid "%B: warning: duplicate section `%A' has different contents" +msgstr "%B: attention: section dupliquée «%A» a des contenus différents" + +#: elflink.c:12531 linker.c:3138 +msgid "%F%P: already_linked_table: %E\n" +msgstr "%F%P: already_linked_table: %E\n" + +#: elfxx-mips.c:1220 msgid "static procedure (no name)" -msgstr "procédure statique (sans name)" +msgstr "procédure statique (sans name)" -#: elfxx-mips.c:1897 -msgid "not enough GOT space for local GOT entries" -msgstr "pas suffisamment d'espace GOT pour les entrées locales GOT" +#: elfxx-mips.c:5623 +msgid "%B: %A+0x%lx: Direct jumps between ISA modes are not allowed; consider recompiling with interlinking enabled." +msgstr "%B: %A+0x%lx: Les sauts directs entre modes ISA ne sont pas permis; envisagez de recompiler avec l'interliage activé." -#: elfxx-mips.c:3691 -#, 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" +#: elfxx-mips.c:6280 elfxx-mips.c:6503 +msgid "%B: Warning: bad `%s' option size %u smaller than its header" +msgstr "%B: Attention: mauvaise «%s» taille d'option %u plus petite que son en-tête" -#: elfxx-mips.c:5192 -#, c-format -msgid "%s: Malformed reloc detected for section %s" -msgstr "%s: relocalisation mal composée détectée dans la section %s" +#: elfxx-mips.c:7254 elfxx-mips.c:7379 +msgid "%B: Warning: cannot determine the target function for stub section `%s'" +msgstr "%B: Attention: ne peut pas déterminer la fonction cible de la section d'ébauche «%s»" + +#: elfxx-mips.c:7508 +msgid "%B: Malformed reloc detected for section %s" +msgstr "%B: relocalisation mal composée détectée dans la section %s" -#: elfxx-mips.c:5266 +#: elfxx-mips.c:7548 +msgid "%B: GOT reloc at 0x%lx not expected in executables" +msgstr "%B: relocalisation GOT à 0x%lx pas attendue dans les executables" + +#: elfxx-mips.c:7670 +msgid "%B: CALL16 reloc at 0x%lx not against global symbol" +msgstr "%B: appel CALL16 de relocalisation à 0x%lx qui n'est pas pour un symbole global" + +#: elfxx-mips.c:8365 #, 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" +msgid "non-dynamic relocations refer to dynamic symbol %s" +msgstr "relocalisation non dynamique fait référence au symbole dynamique %s" + +#: elfxx-mips.c:9068 +msgid "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'" +msgstr "%B: Ne trouve pas de relocalisation LO16 correspondante vers «%s» pour %s à 0x%lx de la section «%A»" + +#: elfxx-mips.c:9207 +msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)" +msgstr "la taille des petites données de la section dépasse 64KB; abaissez la limite de taille des petites données (voyez l'option -G)" -#: elfxx-mips.c:8692 +#: elfxx-mips.c:12027 #, c-format msgid "%s: illegal section name `%s'" -msgstr "%s: nom illégal de section « %s »" +msgstr "%s: nom illégal de section «%s»" -#: elfxx-mips.c:9025 -#, c-format -msgid "%s: endianness incompatible with that of the selected emulation" -msgstr "%s: système de poids fort ou faible incompatible avec celui sélectionné pour l'émulation" +#: elfxx-mips.c:12405 elfxx-mips.c:12431 +msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float" +msgstr "Attention: %B utilise -msingle-float, %B utilise -mdouble-float" -#: elfxx-mips.c:9037 -#, c-format -msgid "%s: ABI is incompatible with that of the selected emulation" -msgstr "%s: ABI est incompatible avec celui sélectionné pour l'émulation" +#: elfxx-mips.c:12417 elfxx-mips.c:12473 +msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64" +msgstr "Attention: %B utilise -msingle-float, %B utilise -mips32r2 -mfp64" -#: elfxx-mips.c:9104 -#, c-format -msgid "%s: warning: linking PIC files with non-PIC files" -msgstr "%s: AVERTISSEMENT: édition de liens des fichiers PIC avec des fichiers non PIC" +#: elfxx-mips.c:12443 elfxx-mips.c:12479 +msgid "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64" +msgstr "Attention: %B utilise -mdouble-float, %B utilise -mips32r2 -mfp64" -#: elfxx-mips.c:9121 -#, c-format -msgid "%s: linking 32-bit code with 64-bit code" -msgstr "%s: édition de liens de code de 32 bits avec du code de 64 bits" +#: elfxx-mips.c:12521 +msgid "%B: endianness incompatible with that of the selected emulation" +msgstr "%B: système de poids fort ou faible incompatible avec celui sélectionné pour l'émulation" -#: elfxx-mips.c:9149 -#, c-format -msgid "%s: linking %s module with previous %s modules" -msgstr "%s: édition de liens du module %s avec les modules précédents %s" +#: elfxx-mips.c:12532 +msgid "%B: ABI is incompatible with that of the selected emulation" +msgstr "%B: ABI est incompatible avec celui sélectionné pour l'émulation" -#: elfxx-mips.c:9172 -#, 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" +#: elfxx-mips.c:12613 +msgid "%B: warning: linking abicalls files with non-abicalls files" +msgstr "%B: attention: édition de liens des fichiers abicalls avec des fichiers non abicalls" + +#: elfxx-mips.c:12630 +msgid "%B: linking 32-bit code with 64-bit code" +msgstr "%B: édition de liens de code 32 bits avec du code 64 bits" + +#: elfxx-mips.c:12658 +msgid "%B: linking %s module with previous %s modules" +msgstr "%B: édition de liens du module %s avec les modules précédents %s" -#: elfxx-mips.c:9241 +#: elfxx-mips.c:12681 +msgid "%B: ABI mismatch: linking %s module with previous %s modules" +msgstr "%B: ABI ne concorde pas: édition de lien du module %s avec les modules précédents %s" + +#: elfxx-mips.c:12845 +#, c-format msgid " [abi=O32]" msgstr " [abi=O32]" -#: elfxx-mips.c:9243 +#: elfxx-mips.c:12847 +#, c-format msgid " [abi=O64]" msgstr " [abi=O64]" -#: elfxx-mips.c:9245 +#: elfxx-mips.c:12849 +#, c-format msgid " [abi=EABI32]" msgstr " [abi=EABI32]" -#: elfxx-mips.c:9247 +#: elfxx-mips.c:12851 +#, c-format msgid " [abi=EABI64]" msgstr " [abi=EABI64]" -#: elfxx-mips.c:9249 +#: elfxx-mips.c:12853 +#, c-format msgid " [abi unknown]" msgstr " [abi inconnu]" -#: elfxx-mips.c:9251 +#: elfxx-mips.c:12855 +#, c-format msgid " [abi=N32]" msgstr " [abi=N32]" -#: elfxx-mips.c:9253 +#: elfxx-mips.c:12857 +#, c-format msgid " [abi=64]" msgstr " [abi=64]" -#: elfxx-mips.c:9255 +#: elfxx-mips.c:12859 +#, c-format msgid " [no abi set]" msgstr " [aucun jeu abi]" -#: elfxx-mips.c:9258 -msgid " [mips1]" -msgstr " [mips1]" - -#: elfxx-mips.c:9260 -msgid " [mips2]" -msgstr " [mips2]" - -#: elfxx-mips.c:9262 -msgid " [mips3]" -msgstr " [mips3]" - -#: elfxx-mips.c:9264 -msgid " [mips4]" -msgstr " [mips4]" - -#: elfxx-mips.c:9266 -msgid " [mips5]" -msgstr " [mips5]" - -#: elfxx-mips.c:9268 -msgid " [mips32]" -msgstr " [mips32]" - -#: elfxx-mips.c:9270 -msgid " [mips64]" -msgstr " [mips64]" - -#: elfxx-mips.c:9272 -msgid " [mips32r2]" -msgstr " [mips32r2]" +#: elfxx-mips.c:12880 +#, c-format +msgid " [unknown ISA]" +msgstr " [ISA inconnu]" + +#: elfxx-mips.c:12891 +#, c-format +msgid " [not 32bitmode]" +msgstr " [aucun mode 32 bits]" + +#: elfxx-sparc.c:595 +#, c-format +msgid "invalid relocation type %d" +msgstr "type de relocalisation %d invalide" + +#: i386linux.c:454 m68klinux.c:458 sparclinux.c:452 +#, c-format +msgid "Output file requires shared library `%s'\n" +msgstr "La sortie requiert la librairie partagée «%s»\n" + +#: i386linux.c:462 m68klinux.c:466 sparclinux.c:460 +#, 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:651 i386linux.c:701 m68klinux.c:658 m68klinux.c:706 +#: sparclinux.c:650 sparclinux.c:700 +#, c-format +msgid "Symbol %s not defined for fixups\n" +msgstr "Symbole %s n'est pas défini pour les corrections\n" + +#: i386linux.c:725 m68klinux.c:730 sparclinux.c:724 +msgid "Warning: fixup count mismatch\n" +msgstr "Attention: nombre de corrections en désaccord\n" + +#: ieee.c:159 +#, c-format +msgid "%s: string too long (%d chars, max 65535)" +msgstr "%s: chaîne trop longue (%d caractères, max 65535)" + +#: ieee.c:286 +#, c-format +msgid "%s: unrecognized symbol `%s' flags 0x%x" +msgstr "%s: symbole non reconnue «%s» fanions 0x%x" + +#: ieee.c:792 +msgid "%B: unimplemented ATI record %u for symbol %u" +msgstr "%B: enregistrement ATI non implanté %u pour le symbole %u" + +#: ieee.c:816 +msgid "%B: unexpected ATN type %d in external part" +msgstr "%B: type ATN %d inattendu dans la partie externe" + +#: ieee.c:838 +msgid "%B: unexpected type after ATN" +msgstr "%B: type inattendu après ATN" + +#: ihex.c:230 +msgid "%B:%d: unexpected character `%s' in Intel Hex file" +msgstr "%B:%d: caractère inattendu «%s» dans le fichier Intel hexadécimal" + +#: ihex.c:337 +msgid "%B:%u: bad checksum in Intel Hex file (expected %u, found %u)" +msgstr "%B:%u: somme de contrôle erronée dans le fichier Intel hexadécimal (attendu %u, obtenu %u)" + +#: ihex.c:392 +msgid "%B:%u: bad extended address record length in Intel Hex file" +msgstr "%B:%u: longueur erronée de l'enregistrement d'adresse étendue dans le fichier Intel hexadécimal" + +#: ihex.c:409 +msgid "%B:%u: bad extended start address length in Intel Hex file" +msgstr "%B:%u: longueur erronée d'adresse étendue de début dans le fichier Intel hexadécimal" + +#: ihex.c:426 +msgid "%B:%u: bad extended linear address record length in Intel Hex file" +msgstr "%B:%u: longueur erronée de l'enregistrement d'adresse étendue linéaire dans le fichier Intel hexadécimal" + +#: ihex.c:443 +msgid "%B:%u: bad extended linear start address length in Intel Hex file" +msgstr "%B:%u: longueur erronée d'adresse étendue linéraire de début dans le fichier Intel hexadécimal" + +#: ihex.c:460 +msgid "%B:%u: unrecognized ihex type %u in Intel Hex file" +msgstr "%B:%u: type ihex %u non reconnu dans le fichier Intel hexadécima" + +#: ihex.c:579 +msgid "%B: internal error in ihex_read_section" +msgstr "%B: erreur interne dans ihex_read_section" + +#: ihex.c:613 +msgid "%B: bad section length in ihex_read_section" +msgstr "%B: longuer erronée de section dans ihex_read_section" + +#: ihex.c:826 +#, c-format +msgid "%s: address 0x%s out of range for Intel Hex file" +msgstr "%s: adresse 0x%s hors limite pour le fichier Intel hexadécimal" + +#: libbfd.c:863 +msgid "%B: unable to get decompressed section %A" +msgstr "%B: impossible d'obtenir la section décompressée %A" + +#: libbfd.c:1027 +#, c-format +msgid "Deprecated %s called at %s line %d in %s\n" +msgstr "%s déprécié appelé à %s dans la ligne %d dans %s\n" + +#: libbfd.c:1030 +#, c-format +msgid "Deprecated %s called\n" +msgstr "%s appel déprécié\n" + +#: linker.c:1911 +msgid "%B: indirect symbol `%s' to `%s' is a loop" +msgstr "%B: symbole indirect «%s» vers «%s» est une boucle" + +#: linker.c:2778 +#, c-format +msgid "Attempt to do relocatable link with %s input and %s output" +msgstr "Tentative de relocalisation d'un lien avec %s à l'entrée et %s à la sortie" + +#: linker.c:3105 +msgid "%B: warning: ignoring duplicate section `%A'\n" +msgstr "%B: attention: ignore la section dupliquée «%A»\n" + +#: linker.c:3119 +msgid "%B: warning: duplicate section `%A' has different size\n" +msgstr "%B: attention: section dupliquée «%A» avec des tailles différentes\n" + +#: mach-o.c:3403 +msgid "Mach-O header:\n" +msgstr "En-tête Mach-O:\n" + +#: mach-o.c:3404 +#, c-format +msgid " magic : %08lx\n" +msgstr " magique : %08lx\n" + +#: mach-o.c:3405 +#, c-format +msgid " cputype : %08lx (%s)\n" +msgstr " typecpu : %08lx (%s)\n" + +#: mach-o.c:3407 +#, c-format +msgid " cpusubtype: %08lx\n" +msgstr " soustypecpu: %08lx\n" + +#: mach-o.c:3408 +#, c-format +msgid " filetype : %08lx (%s)\n" +msgstr " typefichier: %08lx (%s)\n" + +#: mach-o.c:3411 +#, c-format +msgid " ncmds : %08lx (%lu)\n" +msgstr " ncmds : %08lx (%lu)\n" + +#: mach-o.c:3412 +#, c-format +msgid " sizeofcmds: %08lx\n" +msgstr " taillecmds: %08lx\n" + +#: mach-o.c:3413 +#, c-format +msgid " flags : %08lx (" +msgstr " fanions : %08lx (" + +#: mach-o.c:3415 vms-alpha.c:7652 +msgid ")\n" +msgstr ")\n" + +#: mach-o.c:3416 +#, c-format +msgid " reserved : %08x\n" +msgstr " réservé : %08x\n" + +#: mach-o.c:3426 +msgid "Segments and Sections:\n" +msgstr "Segments et Sections:\n" + +#: mach-o.c:3427 +msgid " #: Segment name Section name Address\n" +msgstr " #: Nom segment Nom section Adresse\n" + +#: merge.c:832 +#, c-format +msgid "%s: access beyond end of merged section (%ld)" +msgstr "%s: accès au-delà de la fin de la section fusionnée (%ld)" + +#: mmo.c:456 +#, c-format +msgid "%s: No core to allocate section name %s\n" +msgstr "%s: pas de corps pour allouer un nom de section %s\n" + +#: mmo.c:531 +#, c-format +msgid "%s: No core to allocate a symbol %d bytes long\n" +msgstr "%s: pas de corps pour allouer un symbole de %d octets de longueur\n" + +#: mmo.c:1187 +#, 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" + +#: mmo.c:1332 +#, 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 par «%s»\n" + +#: mmo.c:1565 +#, c-format +msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgstr "%s: fichier mmo invalide: lopcode «%d» non supporté\n" + +#: mmo.c:1575 +#, c-format +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" + +#: mmo.c:1611 +#, c-format +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" + +#: mmo.c:1657 +#, c-format +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" + +#: mmo.c:1696 +#, c-format +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" + +#: mmo.c:1705 +#, c-format +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" + +#: mmo.c:1728 +#, 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" + +#: mmo.c:1751 +#, c-format +msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgstr "%s: ne paut pas allouer un nom de ficheir pour le no. de fichier %d, %d octets\n" + +#: mmo.c:1771 +#, c-format +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é en tant que «%s»\n" + +#: mmo.c:1784 +#, c-format +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" + +#: mmo.c:1890 +#, c-format +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 nul, y: %d, z: %d\n" + +#: mmo.c:1926 +#, c-format +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 élement dans le fichier\n" + +#: mmo.c:1939 +#, 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: fichier mmo invalide: YZ de lop_end (%ld) n'est pas égal au nombre de tetras du lop_stab précédent (%ld)\n" + +#: mmo.c:2649 +#, c-format +msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgstr "%s: table de symboles invalide: symbole «%s» dupliqué\n" + +#: mmo.c:2889 +#, c-format +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" + +#: mmo.c:2981 +#, 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: attention: table de symboles trop grande pour mmo, plus grande que 65535 mots de 32 bits: %d. Seul «Main» sera produit.\n" + +#: mmo.c:3026 +#, c-format +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" + +#: mmo.c:3078 +#, c-format +msgid "%s: internal error, internal register section %s had contents\n" +msgstr "%s: erreur interne, registre interne de section %s contient quelque chose\n" + +#: mmo.c:3129 +#, c-format +msgid "%s: no initialized registers; section length 0\n" +msgstr "%s: pas de registre initialisé; section de longeur 0\n" + +#: mmo.c:3135 +#, c-format +msgid "%s: too many initialized registers; section length %ld\n" +msgstr "%s: trop de resigstres initialisés; longueur de section %ld\n" + +#: mmo.c:3140 +#, c-format +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" + +#: oasys.c:882 +#, c-format +msgid "%s: can not represent section `%s' in oasys" +msgstr "%s: ne peut représenter la section «%s» dans oasys" + +#: osf-core.c:140 +#, c-format +msgid "Unhandled OSF/1 core file section type %d\n" +msgstr "Type de section de fichier core OSF/1 %d non traité\n" + +#: pe-mips.c:607 +msgid "%B: `ld -r' not supported with PE MIPS objects\n" +msgstr "%B: «ld -r» non supporté avec les objets 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:719 +msgid "%B: unimplemented %s\n" +msgstr "%B: non implanté %s\n" + +#: pe-mips.c:745 +msgid "%B: jump too far away\n" +msgstr "%B: le saut va trop loin\n" + +#: pe-mips.c:771 +msgid "%B: bad pair/reflo after refhi\n" +msgstr "%B: pairage erronée pair/reflo après refhi\n" + +#: pei-x86_64.c:444 +#, c-format +msgid "warning: .pdata section size (%ld) is not a multiple of %d\n" +msgstr "attention, taille de la section .pdata (%ld) n'est pas un multiple de %d\n" + +#: pei-x86_64.c:448 peigen.c:1618 peigen.c:1801 pepigen.c:1618 pepigen.c:1801 +#: pex64igen.c:1618 pex64igen.c:1801 +#, c-format +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" + +#: pei-x86_64.c:450 +#, c-format +msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" +msgstr " vma:\t\t\tAdresse Début\t Adresse Fin\t Unwind Info\n" + +#. XXX code yet to be written. +#: peicode.h:751 +msgid "%B: Unhandled import type; %x" +msgstr "%B: type d'importation non traitée; %x" + +#: peicode.h:756 +msgid "%B: Unrecognised import type; %x" +msgstr "%B: type d'importation non reconnu; %x" + +#: peicode.h:770 +msgid "%B: Unrecognised import name type; %x" +msgstr "%B: type de nom d'importation non reconnu: %x" + +#: peicode.h:1162 +msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive" +msgstr "%B: type de machine non reconnu (0x%x) dans l'archive de librairie de formats d'importation" + +#: peicode.h:1174 +msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive" +msgstr "%B: type de machine reconnue mais non traitée (0x%x) dans l'archive da la librairie de formats d'importation" + +#: peicode.h:1192 +msgid "%B: size field is zero in Import Library Format header" +msgstr "%B: taille du champ est zéro dans l'en-tête de la librairie de formats d'importation" + +#: peicode.h:1223 +msgid "%B: string not null terminated in ILF object file." +msgstr "%B: chaîne n'est pas terminée par un zéro dans le fichier objet ILF." + +#: ppcboot.c:414 +#, c-format +msgid "" +"\n" +"ppcboot header:\n" +msgstr "" +"\n" +"En-têtes ppcboot:\n" + +#: ppcboot.c:415 +#, c-format +msgid "Entry offset = 0x%.8lx (%ld)\n" +msgstr "Décalage de l'entrée= 0x%.8lx (%ld)\n" + +#: ppcboot.c:417 +#, c-format +msgid "Length = 0x%.8lx (%ld)\n" +msgstr "Longueur = 0x%.8lx (%ld)\n" + +#: ppcboot.c:421 +#, c-format +msgid "Flag field = 0x%.2x\n" +msgstr "Champ de fanion = 0x%.2x\n" + +#: ppcboot.c:427 +#, c-format +msgid "Partition name = \"%s\"\n" +msgstr "Nom de partition = «%s»\n" + +#: ppcboot.c:446 +#, c-format +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: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:458 +#, c-format +msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" +msgstr "Secteur de la partition[%d] = 0x%.8lx (%ld)\n" + +#: ppcboot.c:460 +#, c-format +msgid "Partition[%d] length = 0x%.8lx (%ld)\n" +msgstr "Longueur de la partition[%d] = 0x%.8lx (%ld)\n" + +#: som.c:5471 +#, c-format +msgid "" +"\n" +"Exec Auxiliary Header\n" +msgstr "" +"\n" +"En-tête auxiliaire de l'exec\n" + +#: som.c:5776 +msgid "som_sizeof_headers unimplemented" +msgstr "som_sizeof_headers non implémenté" + +#: srec.c:261 +msgid "%B:%d: Unexpected character `%s' in S-record file\n" +msgstr "%B:%d: caractère inattendu «%s» dans le fichier S-record\n" + +#: srec.c:567 srec.c:600 +msgid "%B:%d: Bad checksum in S-record file\n" +msgstr "%B:%d: Mauvaise somme de contrôle dans le fichier S-record\n" + +#: stabs.c:279 +msgid "%B(%A+0x%lx): Stabs entry has invalid string index." +msgstr "%B(%A+0x%lx): Entrée des ébauches a un indexe de chaîne invalide" + +#: syms.c:1079 +msgid "Unsupported .stab relocation" +msgstr "Relocalisation du .stab non supporté" + +#: vms-alpha.c:1287 +#, c-format +msgid "Unknown EGSD subtype %d" +msgstr "Sous type EGSD %d inconnu" + +#: vms-alpha.c:1318 +#, c-format +msgid "Stack overflow (%d) in _bfd_vms_push" +msgstr "Débordement de la pile (%d) dans _bfd_vms_push" + +#: vms-alpha.c:1331 +msgid "Stack underflow in _bfd_vms_pop" +msgstr "Sous dépilage de la pile dans _bfd_vms_pop" + +#. These names have not yet been added to this switch statement. +#: vms-alpha.c:1568 +#, c-format +msgid "unknown ETIR command %d" +msgstr "commande ETIR %d inconnue" + +#: vms-alpha.c:1755 +#, c-format +msgid "bad section index in %s" +msgstr "index de section erronée dans %s" + +#: vms-alpha.c:1768 +#, c-format +msgid "unsupported STA cmd %s" +msgstr "commande STA %s non supportée" + +#. Insert field. +#. Unsigned shift. +#. Rotate. +#. Redefine symbol to current location. +#. Define a literal. +#: vms-alpha.c:1944 vms-alpha.c:1975 vms-alpha.c:2222 +#, c-format +msgid "%s: not supported" +msgstr "%s: pas supporté" + +#: vms-alpha.c:1950 +#, c-format +msgid "%s: not implemented" +msgstr "%s: non implémenté" + +#: vms-alpha.c:2206 +#, c-format +msgid "invalid use of %s with contexts" +msgstr "utilisation incorrecte de %s avec des contextes" + +#: vms-alpha.c:2240 +#, c-format +msgid "reserved cmd %d" +msgstr "commande %d réservée" + +#: vms-alpha.c:2325 +msgid "Object module NOT error-free !\n" +msgstr "Module objet N'EST PAS sans erreur !\n" + +#: vms-alpha.c:2754 +#, c-format +msgid "Symbol %s replaced by %s\n" +msgstr "Symbole %s remplacé par %s\n" + +#: vms-alpha.c:3757 +#, c-format +msgid "SEC_RELOC with no relocs in section %s" +msgstr "SEC_RELOC sans relocalisation dans la section %s" + +#: vms-alpha.c:3810 vms-alpha.c:4041 +#, c-format +msgid "Size error in section %s" +msgstr "Erreur de taille dans la section %s" + +#: vms-alpha.c:3980 +msgid "Spurious ALPHA_R_BSR reloc" +msgstr "Relocalisation ALPHA_R_BSR parasite" + +#: vms-alpha.c:4028 +#, c-format +msgid "Unhandled relocation %s" +msgstr "Relocalisation %s non traitée" + +#: vms-alpha.c:4318 +#, c-format +msgid "unknown source command %d" +msgstr "commande source %d inconnue" + +#: vms-alpha.c:4379 +msgid "DST__K_SET_LINUM_INCR not implemented" +msgstr "DST__K_SET_LINUM_INCR pas implémenté" + +#: vms-alpha.c:4385 +msgid "DST__K_SET_LINUM_INCR_W not implemented" +msgstr "DST__K_SET_LINUM_INCR_W pas implémenté" + +#: vms-alpha.c:4391 +msgid "DST__K_RESET_LINUM_INCR not implemented" +msgstr "DST__K_RESET_LINUM_INCR pas implémenté" + +#: vms-alpha.c:4397 +msgid "DST__K_BEG_STMT_MODE not implemented" +msgstr "DST__K_BEG_STMT_MODE pas implémenté" + +#: vms-alpha.c:4403 +msgid "DST__K_END_STMT_MODE not implemented" +msgstr "DST__K_END_STMT_MODE pas implémenté" + +#: vms-alpha.c:4430 +msgid "DST__K_SET_PC not implemented" +msgstr "DST__K_SET_PC pas implémenté" + +#: vms-alpha.c:4436 +msgid "DST__K_SET_PC_W not implemented" +msgstr "DST__K_SET_PC_W pas implémenté" + +#: vms-alpha.c:4442 +msgid "DST__K_SET_PC_L not implemented" +msgstr "DST__K_SET_PC_L pas implémenté" + +#: vms-alpha.c:4448 +msgid "DST__K_SET_STMTNUM not implemented" +msgstr "DST__K_SET_STMTNUM pas implémenté" + +#: vms-alpha.c:4491 +#, c-format +msgid "unknown line command %d" +msgstr "commande de ligne %d inconnue" + +#: vms-alpha.c:4938 vms-alpha.c:4955 vms-alpha.c:4969 vms-alpha.c:4984 +#: vms-alpha.c:4996 vms-alpha.c:5007 vms-alpha.c:5019 +#, c-format +msgid "Unknown reloc %s + %s" +msgstr "Relocalisation %s + %s inconnue" + +#: vms-alpha.c:5074 +#, c-format +msgid "Unknown reloc %s" +msgstr "Relocalisation %s inconnue" + +#: vms-alpha.c:5087 +msgid "Invalid section index in ETIR" +msgstr "Index de section incorrect dans ETIR" + +#: vms-alpha.c:5134 +#, c-format +msgid "Unknown symbol in command %s" +msgstr "Symbole inconnu dans la commande %s" + +#: vms-alpha.c:5649 +#, c-format +msgid " EMH %u (len=%u): " +msgstr " EMH %u (long=%u): " + +#: vms-alpha.c:5658 +#, c-format +msgid "Module header\n" +msgstr "En-tête module\n" + +#: vms-alpha.c:5659 +#, c-format +msgid " structure level: %u\n" +msgstr " niveau de structure: %u\n" + +#: vms-alpha.c:5660 +#, c-format +msgid " max record size: %u\n" +msgstr " taille max d'enregistrement: %u\n" + +#: vms-alpha.c:5663 +#, c-format +msgid " module name : %.*s\n" +msgstr " nom du module : %.*s\n" + +#: vms-alpha.c:5665 +#, c-format +msgid " module version : %.*s\n" +msgstr " version du module : %.*s\n" + +#: vms-alpha.c:5667 +#, c-format +msgid " compile date : %.17s\n" +msgstr " date de compilation : %.17s\n" + +#: vms-alpha.c:5672 +#, c-format +msgid "Language Processor Name\n" +msgstr "Nom du Processeur de Langage\n" + +#: vms-alpha.c:5673 +#, c-format +msgid " language name: %.*s\n" +msgstr " nom du language: %.*s\n" + +#: vms-alpha.c:5680 +#, c-format +msgid "Source Files Header\n" +msgstr "En-tête des fichiers sources\n" + +#: vms-alpha.c:5681 +#, c-format +msgid " file: %.*s\n" +msgstr " fichier: %.*s\n" + +#: vms-alpha.c:5688 +#, c-format +msgid "Title Text Header\n" +msgstr "En-tête du texte du titre\n" + +#: vms-alpha.c:5689 +#, c-format +msgid " title: %.*s\n" +msgstr " titre: %.*s\n" + +#: vms-alpha.c:5696 +#, c-format +msgid "Copyright Header\n" +msgstr "En-tête du copyright\n" + +#: vms-alpha.c:5697 +#, c-format +msgid " copyright: %.*s\n" +msgstr " copyright: %.*s\n" + +#: vms-alpha.c:5703 +#, c-format +msgid "unhandled emh subtype %u\n" +msgstr "sous-type emh %u non pris en charge\n" + +#: vms-alpha.c:5713 +#, c-format +msgid " EEOM (len=%u):\n" +msgstr " EEOM (long=%u):\n" + +#: vms-alpha.c:5714 +#, c-format +msgid " number of cond linkage pairs: %u\n" +msgstr " nombre de paires de liaisons cond: %u\n" + +#: vms-alpha.c:5716 +#, c-format +msgid " completion code: %u\n" +msgstr " code de complétion: %u\n" + +#: vms-alpha.c:5720 +#, c-format +msgid " transfer addr flags: 0x%02x\n" +msgstr " fanions de transfert d'adr: 0x%02x\n" + +#: vms-alpha.c:5721 +#, c-format +msgid " transfer addr psect: %u\n" +msgstr " psect transert adr: %u\n" + +#: vms-alpha.c:5723 +#, c-format +msgid " transfer address : 0x%08x\n" +msgstr " adresse de transert: 0x%08x\n" + +#: vms-alpha.c:5732 +msgid " WEAK" +msgstr " FAIBLE" + +#: vms-alpha.c:5734 +msgid " DEF" +msgstr " DEF" + +#: vms-alpha.c:5736 +msgid " UNI" +msgstr " UNI" + +#: vms-alpha.c:5738 vms-alpha.c:5759 +msgid " REL" +msgstr " REL" + +#: vms-alpha.c:5740 +msgid " COMM" +msgstr " COMM" + +#: vms-alpha.c:5742 +msgid " VECEP" +msgstr " VECEP" + +#: vms-alpha.c:5744 +msgid " NORM" +msgstr " NORM" + +#: vms-alpha.c:5746 +msgid " QVAL" +msgstr " QVAL" + +#: vms-alpha.c:5753 +msgid " PIC" +msgstr " PIC" + +#: vms-alpha.c:5755 +msgid " LIB" +msgstr " LIB" + +#: vms-alpha.c:5757 +msgid " OVR" +msgstr " OVR" + +#: vms-alpha.c:5761 +msgid " GBL" +msgstr " GBL" + +#: vms-alpha.c:5763 +msgid " SHR" +msgstr " SHR" + +#: vms-alpha.c:5765 +msgid " EXE" +msgstr " EXE" + +#: vms-alpha.c:5767 +msgid " RD" +msgstr " RD" + +#: vms-alpha.c:5769 +msgid " WRT" +msgstr " WRT" + +#: vms-alpha.c:5771 +msgid " VEC" +msgstr " VEC" + +#: vms-alpha.c:5773 +msgid " NOMOD" +msgstr " NOMOD" + +#: vms-alpha.c:5775 +msgid " COM" +msgstr " COM" + +#: vms-alpha.c:5777 +msgid " 64B" +msgstr " 64B" + +#: vms-alpha.c:5786 +#, c-format +msgid " EGSD (len=%u):\n" +msgstr " EGSD (long=%u):\n" + +#: vms-alpha.c:5798 +#, c-format +msgid " EGSD entry %2u (type: %u, len: %u): " +msgstr " entrée EGSD %2u (type: %u, long: %u): " + +#: vms-alpha.c:5810 +#, c-format +msgid "PSC - Program section definition\n" +msgstr "PSC - Définition de section du programme\n" + +#: vms-alpha.c:5811 vms-alpha.c:5828 +#, c-format +msgid " alignment : 2**%u\n" +msgstr " alignement : 2**%u\n" + +#: vms-alpha.c:5812 vms-alpha.c:5829 +#, c-format +msgid " flags : 0x%04x" +msgstr " fanions : 0x%04x" + +#: vms-alpha.c:5816 +#, c-format +msgid " alloc (len): %u (0x%08x)\n" +msgstr " alloc (long): %u (0x%08x)\n" + +#: vms-alpha.c:5817 vms-alpha.c:5874 vms-alpha.c:5923 +#, c-format +msgid " name : %.*s\n" +msgstr " nom : %.*s\n" + +#: vms-alpha.c:5827 +#, c-format +msgid "SPSC - Shared Image Program section def\n" +msgstr "SPSC - Def de section de l'image partagée du programme\n" + +#: vms-alpha.c:5833 +#, c-format +msgid " alloc (len) : %u (0x%08x)\n" +msgstr " alloc (long) : %u (0x%08x)\n" + +#: vms-alpha.c:5834 +#, c-format +msgid " image offset : 0x%08x\n" +msgstr " offset d'image: 0x%08x\n" + +#: vms-alpha.c:5836 +#, c-format +msgid " symvec offset : 0x%08x\n" +msgstr " offset symvec : 0x%08x\n" + +#: vms-alpha.c:5838 +#, c-format +msgid " name : %.*s\n" +msgstr " nom : %.*s\n" + +#: vms-alpha.c:5851 +#, c-format +msgid "SYM - Global symbol definition\n" +msgstr "SYM - Définition du symbol global\n" + +#: vms-alpha.c:5852 vms-alpha.c:5912 vms-alpha.c:5933 vms-alpha.c:5952 +#, c-format +msgid " flags: 0x%04x" +msgstr " fanions: 0x%04x" + +#: vms-alpha.c:5855 +#, c-format +msgid " psect offset: 0x%08x\n" +msgstr " offset psect: 0x%08x\n" + +#: vms-alpha.c:5859 +#, c-format +msgid " code address: 0x%08x\n" +msgstr " adresse code: 0x%08x\n" + +#: vms-alpha.c:5861 +#, c-format +msgid " psect index for entry point : %u\n" +msgstr " index psect pour point d'entrée: %u\n" + +#: vms-alpha.c:5864 vms-alpha.c:5940 vms-alpha.c:5959 +#, c-format +msgid " psect index : %u\n" +msgstr " index psect : %u\n" + +#: vms-alpha.c:5866 vms-alpha.c:5942 vms-alpha.c:5961 +#, c-format +msgid " name : %.*s\n" +msgstr " nom : %.*s\n" + +#: vms-alpha.c:5873 +#, c-format +msgid "SYM - Global symbol reference\n" +msgstr "SYM - Référence du symbol globaux\n" + +#: vms-alpha.c:5885 +#, c-format +msgid "IDC - Ident Consistency check\n" +msgstr "IDC - Vérification de la consistance d'identité\n" + +#: vms-alpha.c:5886 +#, c-format +msgid " flags : 0x%08x" +msgstr " fanions : 0x%08x" + +#: vms-alpha.c:5890 +#, c-format +msgid " id match : %x\n" +msgstr " correspondance id : %x\n" + +#: vms-alpha.c:5892 +#, c-format +msgid " error severity: %x\n" +msgstr " sévérité d'erreur: %x\n" + +#: vms-alpha.c:5895 +#, c-format +msgid " entity name : %.*s\n" +msgstr " nom d'entité : %.*s\n" + +#: vms-alpha.c:5897 +#, c-format +msgid " object name : %.*s\n" +msgstr " nom d'objet : %.*s\n" + +#: vms-alpha.c:5900 +#, c-format +msgid " binary ident : 0x%08x\n" +msgstr " ident binaire : 0x%08x\n" + +#: vms-alpha.c:5903 +#, c-format +msgid " ascii ident : %.*s\n" +msgstr " ident ascii : %.*s\n" + +#: vms-alpha.c:5911 +#, c-format +msgid "SYMG - Universal symbol definition\n" +msgstr "SYMG - Définition de symbole universel\n" + +#: vms-alpha.c:5915 +#, c-format +msgid " symbol vector offset: 0x%08x\n" +msgstr " offset vecteur symbole: 0x%08x\n" + +#: vms-alpha.c:5917 +#, c-format +msgid " entry point: 0x%08x\n" +msgstr " point d'entrée: 0x%08x\n" + +#: vms-alpha.c:5919 +#, c-format +msgid " proc descr : 0x%08x\n" +msgstr " descr proc : 0x%08x\n" + +#: vms-alpha.c:5921 +#, c-format +msgid " psect index: %u\n" +msgstr " index psect: %u\n" + +#: vms-alpha.c:5932 +#, c-format +msgid "SYMV - Vectored symbol definition\n" +msgstr "SYMV - Définition symbole vectorisé\n" + +#: vms-alpha.c:5936 +#, c-format +msgid " vector : 0x%08x\n" +msgstr " vecteur : 0x%08x\n" + +#: vms-alpha.c:5938 vms-alpha.c:5957 +#, c-format +msgid " psect offset: %u\n" +msgstr " offset psect: %u\n" + +#: vms-alpha.c:5951 +#, c-format +msgid "SYMM - Global symbol definition with version\n" +msgstr "SYMM - Définition de symbole globale avec version\n" + +#: vms-alpha.c:5955 +#, c-format +msgid " version mask: 0x%08x\n" +msgstr " masque de version: 0x%08x\n" + +#: vms-alpha.c:5966 +#, c-format +msgid "unhandled egsd entry type %u\n" +msgstr "type d'entrée egsd %u non supporté\n" + +#: vms-alpha.c:6000 +#, c-format +msgid " linkage index: %u, replacement insn: 0x%08x\n" +msgstr " index de liaison: %u, instruction de remplacement: 0x%08x\n" + +#: vms-alpha.c:6003 +#, c-format +msgid " psect idx 1: %u, offset 1: 0x%08x %08x\n" +msgstr " index psect 1: %u, offset 1: 0x%08x %08x\n" + +#: vms-alpha.c:6007 +#, c-format +msgid " psect idx 2: %u, offset 2: 0x%08x %08x\n" +msgstr " index psect 2: %u, offset 2: 0x%08x %08x\n" + +#: vms-alpha.c:6012 +#, c-format +msgid " psect idx 3: %u, offset 3: 0x%08x %08x\n" +msgstr " index psect 3: %u, offset 3: 0x%08x %08x\n" + +#: vms-alpha.c:6017 +#, c-format +msgid " global name: %.*s\n" +msgstr " nom global: %.*s\n" + +#: vms-alpha.c:6027 +#, c-format +msgid " %s (len=%u+%u):\n" +msgstr " %s (long=%u+%u):\n" + +#: vms-alpha.c:6042 +#, c-format +msgid " (type: %3u, size: 4+%3u): " +msgstr " (type: %3u, taille: 4+%3u): " + +#: vms-alpha.c:6046 +#, c-format +msgid "STA_GBL (stack global) %.*s\n" +msgstr "STA_GBL (pile globals) %.*s\n" + +#: vms-alpha.c:6050 +#, c-format +msgid "STA_LW (stack longword) 0x%08x\n" +msgstr "STA_LW (pile mot long) 0x%08x\n" + +#: vms-alpha.c:6054 +#, c-format +msgid "STA_QW (stack quadword) 0x%08x %08x\n" +msgstr "STA_QW (pile quad mot) 0x%08x %08x\n" + +#: vms-alpha.c:6059 +#, c-format +msgid "STA_PQ (stack psect base + offset)\n" +msgstr "STA_PQ (base pile psect + offset)\n" + +#: vms-alpha.c:6060 +#, c-format +msgid " psect: %u, offset: 0x%08x %08x\n" +msgstr " psect: %u, offset: 0x%08x %08x\n" + +#: vms-alpha.c:6066 +#, c-format +msgid "STA_LI (stack literal)\n" +msgstr "STA_LI (pile literale)\n" + +#: vms-alpha.c:6069 +#, c-format +msgid "STA_MOD (stack module)\n" +msgstr "STA_MOD (pile module)\n" + +#: vms-alpha.c:6072 +#, c-format +msgid "STA_CKARG (compare procedure argument)\n" +msgstr "STA_CKARG (compare les arguments de la procédure)\n" + +#: vms-alpha.c:6076 +#, c-format +msgid "STO_B (store byte)\n" +msgstr "STO_B (stocke octet)\n" + +#: vms-alpha.c:6079 +#, c-format +msgid "STO_W (store word)\n" +msgstr "STO_W (stocke mot)\n" + +#: vms-alpha.c:6082 +#, c-format +msgid "STO_LW (store longword)\n" +msgstr "STO_LW (stocke mot long)\n" + +#: vms-alpha.c:6085 +#, c-format +msgid "STO_QW (store quadword)\n" +msgstr "STO_QW (stocke quad mot)\n" + +#: vms-alpha.c:6091 +#, c-format +msgid "STO_IMMR (store immediate repeat) %u bytes\n" +msgstr "STO_IMMR (stock répétition immédiate) %u octets\n" + +#: vms-alpha.c:6098 +#, c-format +msgid "STO_GBL (store global) %.*s\n" +msgstr "STO_GBL (stocke globale) %.*s\n" + +#: vms-alpha.c:6102 +#, c-format +msgid "STO_CA (store code address) %.*s\n" +msgstr "STO_CA (stock adresse code) %.*s\n" + +#: vms-alpha.c:6106 +#, c-format +msgid "STO_RB (store relative branch)\n" +msgstr "STO_RB (stocke branche relative)\n" + +#: vms-alpha.c:6109 +#, c-format +msgid "STO_AB (store absolute branch)\n" +msgstr "STO_AB (stocke branche absolue)\n" + +#: vms-alpha.c:6112 +#, c-format +msgid "STO_OFF (store offset to psect)\n" +msgstr "STO_OFF (stocke offset de psect)\n" + +#: vms-alpha.c:6118 +#, c-format +msgid "STO_IMM (store immediate) %u bytes\n" +msgstr "STO_IMM (stocke immediat) %u octets\n" + +#: vms-alpha.c:6125 +#, c-format +msgid "STO_GBL_LW (store global longword) %.*s\n" +msgstr "STO_GBL_LW (stocke mot long global) %.*s\n" + +#: vms-alpha.c:6129 +#, c-format +msgid "STO_OFF (store LP with procedure signature)\n" +msgstr "STO_OFF (stocke LP avec la signature de la procédure)\n" + +#: vms-alpha.c:6132 +#, c-format +msgid "STO_BR_GBL (store branch global) *todo*\n" +msgstr "STO_BR_GBL (stocke branche globale) *todo*\n" + +#: vms-alpha.c:6135 +#, c-format +msgid "STO_BR_PS (store branch psect + offset) *todo*\n" +msgstr "STO_BR_PS (stocke branche psect + offset) *todo*\n" + +#: vms-alpha.c:6139 +#, c-format +msgid "OPR_NOP (no-operation)\n" +msgstr "OPR_NOP (pas d'operation)\n" + +#: vms-alpha.c:6142 +#, c-format +msgid "OPR_ADD (add)\n" +msgstr "OPR_ADD (ajout)\n" + +#: vms-alpha.c:6145 +#, c-format +msgid "OPR_SUB (substract)\n" +msgstr "OPR_SUB (soustraction)\n" + +#: vms-alpha.c:6148 +#, c-format +msgid "OPR_MUL (multiply)\n" +msgstr "OPR_MUL (multiplication)\n" + +#: vms-alpha.c:6151 +#, c-format +msgid "OPR_DIV (divide)\n" +msgstr "OPR_DIV (division)\n" + +#: vms-alpha.c:6154 +#, c-format +msgid "OPR_AND (logical and)\n" +msgstr "OPR_AND (et logique)\n" + +#: vms-alpha.c:6157 +#, c-format +msgid "OPR_IOR (logical inclusive or)\n" +msgstr "OPR_IOR (ou inclusif logique)\n" + +#: vms-alpha.c:6160 +#, c-format +msgid "OPR_EOR (logical exclusive or)\n" +msgstr "OPR_EOR (ou exclusif logique)\n" + +#: vms-alpha.c:6163 +#, c-format +msgid "OPR_NEG (negate)\n" +msgstr "OPR_NEG (négation)\n" + +#: vms-alpha.c:6166 +#, c-format +msgid "OPR_COM (complement)\n" +msgstr "OPR_COM (complément)\n" + +#: vms-alpha.c:6169 +#, c-format +msgid "OPR_INSV (insert field)\n" +msgstr "OPR_INSV (insertion champ)\n" + +#: vms-alpha.c:6172 +#, c-format +msgid "OPR_ASH (arithmetic shift)\n" +msgstr "OPR_ASH (décalage arithmetique)\n" + +#: vms-alpha.c:6175 +#, c-format +msgid "OPR_USH (unsigned shift)\n" +msgstr "OPR_USH (décalage non signé)\n" + +#: vms-alpha.c:6178 +#, c-format +msgid "OPR_ROT (rotate)\n" +msgstr "OPR_ROT (rotation)\n" + +#: vms-alpha.c:6181 +#, c-format +msgid "OPR_SEL (select)\n" +msgstr "OPR_SEL (selection)\n" + +#: vms-alpha.c:6184 +#, c-format +msgid "OPR_REDEF (redefine symbol to curr location)\n" +msgstr "OPR_REDEF (redéfini le symbole à la position actuelle)\n" + +#: vms-alpha.c:6187 +#, c-format +msgid "OPR_REDEF (define a literal)\n" +msgstr "OPR_REDEF (définir un litéral)\n" + +#: vms-alpha.c:6191 +#, c-format +msgid "STC_LP (store cond linkage pair)\n" +msgstr "STC_LP (stocke pair de liaison cond)\n" + +#: vms-alpha.c:6195 +#, c-format +msgid "STC_LP_PSB (store cond linkage pair + signature)\n" +msgstr "STC_LP_PSB (stocke pair de liaison cond + signature)\n" + +#: vms-alpha.c:6196 +#, c-format +msgid " linkage index: %u, procedure: %.*s\n" +msgstr " index liaison: %u, procédure: %.*s\n" + +#: vms-alpha.c:6199 +#, c-format +msgid " signature: %.*s\n" +msgstr " signature: %.*s\n" + +#: vms-alpha.c:6202 +#, c-format +msgid "STC_GBL (store cond global)\n" +msgstr "STC_GBL (stocke cond globale)\n" + +#: vms-alpha.c:6203 +#, c-format +msgid " linkage index: %u, global: %.*s\n" +msgstr " index liaison: %u, globale: %.*s\n" + +#: vms-alpha.c:6207 +#, c-format +msgid "STC_GCA (store cond code address)\n" +msgstr "STC_GCA (stocke adresse code cond)\n" + +#: vms-alpha.c:6208 +#, c-format +msgid " linkage index: %u, procedure name: %.*s\n" +msgstr " index liaison: %u, nom procédure: %.*s\n" + +#: vms-alpha.c:6212 +#, c-format +msgid "STC_PS (store cond psect + offset)\n" +msgstr "STC_PS (stocke psect cond + offset)\n" + +#: vms-alpha.c:6214 +#, c-format +msgid " linkage index: %u, psect: %u, offset: 0x%08x %08x\n" +msgstr " index liaison: %u, psect: %u, offset: 0x%08x %08x\n" + +#: vms-alpha.c:6221 +#, c-format +msgid "STC_NOP_GBL (store cond NOP at global addr)\n" +msgstr "STC_NOP_GBL (stocke NOP cond à l'adresse globale)\n" + +#: vms-alpha.c:6225 +#, c-format +msgid "STC_NOP_PS (store cond NOP at psect + offset)\n" +msgstr "STC_NOP_PS (stocke NOP cond à psect + offset)\n" + +#: vms-alpha.c:6229 +#, c-format +msgid "STC_BSR_GBL (store cond BSR at global addr)\n" +msgstr "STC_BSR_GBL (stocke BSR cond à l'adresse globale)\n" + +#: vms-alpha.c:6233 +#, c-format +msgid "STC_BSR_PS (store cond BSR at psect + offset)\n" +msgstr "STC_BSR_PS (stocke BSR cond à psect + offset)\n" + +#: vms-alpha.c:6237 +#, c-format +msgid "STC_LDA_GBL (store cond LDA at global addr)\n" +msgstr "STC_LDA_GBL (stocke LDA cond à l'adresse globale)\n" + +#: vms-alpha.c:6241 +#, c-format +msgid "STC_LDA_PS (store cond LDA at psect + offset)\n" +msgstr "STC_LDA_PS (stocke LDA cond à psect + offset)\n" + +#: vms-alpha.c:6245 +#, c-format +msgid "STC_BOH_GBL (store cond BOH at global addr)\n" +msgstr "STC_BOH_GBL (stocke BOH cond à l'adresse globale)\n" + +#: vms-alpha.c:6249 +#, c-format +msgid "STC_BOH_PS (store cond BOH at psect + offset)\n" +msgstr "STC_BOH_PS (stocke BOH cond à psect + offset)\n" + +#: vms-alpha.c:6254 +#, c-format +msgid "STC_NBH_GBL (store cond or hint at global addr)\n" +msgstr "STC_NBH_GBL (stocke cond ou suggestion à l'adresse globale)\n" + +#: vms-alpha.c:6258 +#, c-format +msgid "STC_NBH_PS (store cond or hint at psect + offset)\n" +msgstr "STC_NBH_PS (stocke cond or suggestion à psect + offset)\n" + +#: vms-alpha.c:6262 +#, c-format +msgid "CTL_SETRB (set relocation base)\n" +msgstr "CTL_SETRB (fixe la base de relocalisation)\n" + +#: vms-alpha.c:6268 +#, c-format +msgid "CTL_AUGRB (augment relocation base) %u\n" +msgstr "CTL_AUGRB (augmente la base de relocalisation) %u\n" + +#: vms-alpha.c:6272 +#, c-format +msgid "CTL_DFLOC (define location)\n" +msgstr "CTL_DFLOC (définir position)\n" + +#: vms-alpha.c:6275 +#, c-format +msgid "CTL_STLOC (set location)\n" +msgstr "CTL_STLOC (fixer position)\n" + +#: vms-alpha.c:6278 +#, c-format +msgid "CTL_STKDL (stack defined location)\n" +msgstr "CTL_STKDL (position définie dans la pile)\n" + +#: vms-alpha.c:6281 vms-alpha.c:6695 +#, c-format +msgid "*unhandled*\n" +msgstr "*non pris en charge*\n" + +#: vms-alpha.c:6311 vms-alpha.c:6350 +#, c-format +msgid "cannot read GST record length\n" +msgstr "impossible de lire la longueur de l'enregistrement GST\n" + +#. Ill-formed. +#: vms-alpha.c:6332 +#, c-format +msgid "cannot find EMH in first GST record\n" +msgstr "impossible de trouver le EMH dans le premier enregistrement GST\n" + +#: vms-alpha.c:6358 +#, c-format +msgid "cannot read GST record header\n" +msgstr "impossible de lire l'en-tête de l'enregistrement GST\n" + +#: vms-alpha.c:6371 +#, c-format +msgid " corrupted GST\n" +msgstr " GST corrompu\n" + +#: vms-alpha.c:6379 +#, c-format +msgid "cannot read GST record\n" +msgstr "ne peut lire l'enregistrement GST\n" + +#: vms-alpha.c:6408 +#, c-format +msgid " unhandled EOBJ record type %u\n" +msgstr " type d'enregistrement EOBJ %u non supporté\n" + +#: vms-alpha.c:6431 +#, c-format +msgid " bitcount: %u, base addr: 0x%08x\n" +msgstr " décompte des bits: %u, adr base: 0x%08x\n" + +#: vms-alpha.c:6444 +#, c-format +msgid " bitmap: 0x%08x (count: %u):\n" +msgstr " carte des bits: 0x%08x (occurrence: %u):\n" + +#: vms-alpha.c:6451 +#, c-format +msgid " %08x" +msgstr " %08x" + +#: vms-alpha.c:6476 +#, c-format +msgid " image %u (%u entries)\n" +msgstr " image %u (%u entrées)\n" + +#: vms-alpha.c:6481 +#, c-format +msgid " offset: 0x%08x, val: 0x%08x\n" +msgstr " offset: 0x%08x, val: 0x%08x\n" + +#: vms-alpha.c:6502 +#, c-format +msgid " image %u (%u entries), offsets:\n" +msgstr " image %u (%u entrées), offsets:\n" + +#: vms-alpha.c:6509 +#, c-format +msgid " 0x%08x" +msgstr " 0x%08x" + +#. 64 bits. +#: vms-alpha.c:6631 +#, c-format +msgid "64 bits *unhandled*\n" +msgstr "64 bits *non supporté*\n" + +#: vms-alpha.c:6635 +#, c-format +msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n" +msgstr "classe: %u, dtype: %u, longueur: %u, pointeur: 0x%08x\n" + +#: vms-alpha.c:6646 +#, c-format +msgid "non-contiguous array of %s\n" +msgstr "table de %s non contiguë\n" + +#: vms-alpha.c:6650 +#, c-format +msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n" +msgstr "dimct: %u, aflags: 0x%02x, digits: %u, échelle: %u\n" + +#: vms-alpha.c:6654 +#, c-format +msgid "arsize: %u, a0: 0x%08x\n" +msgstr "arsize: %u, a0: 0x%08x\n" + +#: vms-alpha.c:6658 +#, c-format +msgid "Strides:\n" +msgstr "Pas:\n" + +#: vms-alpha.c:6663 +#, c-format +msgid "[%u]: %u\n" +msgstr "[%u]: %u\n" + +#: vms-alpha.c:6668 +#, c-format +msgid "Bounds:\n" +msgstr "Limites:\n" + +#: vms-alpha.c:6673 +#, c-format +msgid "[%u]: Lower: %u, upper: %u\n" +msgstr "[%u]: Inférieure: %u, supérieure: %u\n" + +#: vms-alpha.c:6685 +#, c-format +msgid "unaligned bit-string of %s\n" +msgstr "chaine de bits de %s désalignée\n" + +#: vms-alpha.c:6689 +#, c-format +msgid "base: %u, pos: %u\n" +msgstr "base: %u, pos: %u\n" + +#: vms-alpha.c:6709 +#, c-format +msgid "vflags: 0x%02x, value: 0x%08x " +msgstr "vflags: 0x%02x, valeur: 0x%08x " + +#: vms-alpha.c:6715 +#, c-format +msgid "(no value)\n" +msgstr "(pas de valeur)\n" + +#: vms-alpha.c:6718 +#, c-format +msgid "(not active)\n" +msgstr "(pas active)\n" + +#: vms-alpha.c:6721 +#, c-format +msgid "(not allocated)\n" +msgstr "(pas allouée)\n" + +#: vms-alpha.c:6724 +#, c-format +msgid "(descriptor)\n" +msgstr "(descripteur)\n" + +#: vms-alpha.c:6728 +#, c-format +msgid "(trailing value)\n" +msgstr "(valeur postérieure)\n" + +#: vms-alpha.c:6731 +#, c-format +msgid "(value spec follows)\n" +msgstr "(spécificités de la valeur suivent)\n" + +#: vms-alpha.c:6734 +#, c-format +msgid "(at bit offset %u)\n" +msgstr "(à l'offset de bit %u)\n" + +#: vms-alpha.c:6737 +#, c-format +msgid "(reg: %u, disp: %u, indir: %u, kind: " +msgstr "(reg: %u, aff: %u, indir: %u, type: " + +#: vms-alpha.c:6744 +msgid "literal" +msgstr "litérale" + +#: vms-alpha.c:6747 +msgid "address" +msgstr "adresse" + +#: vms-alpha.c:6750 +msgid "desc" +msgstr "desc" + +#: vms-alpha.c:6753 +msgid "reg" +msgstr "reg" + +#: vms-alpha.c:6828 +#, c-format +msgid "Debug symbol table:\n" +msgstr "Table des symboles de debug:\n" + +#: vms-alpha.c:6839 +#, c-format +msgid "cannot read DST header\n" +msgstr "impossible de lire l'en-tête DST\n" + +#: vms-alpha.c:6844 +#, c-format +msgid " type: %3u, len: %3u (at 0x%08x): " +msgstr " type: %3u, long: %3u (à 0x%08x): " + +#: vms-alpha.c:6858 +#, c-format +msgid "cannot read DST symbol\n" +msgstr "ne peut lire le symbole DST\n" + +#: vms-alpha.c:6901 +#, c-format +msgid "standard data: %s\n" +msgstr "données standards: %s\n" + +#: vms-alpha.c:6904 vms-alpha.c:6988 +#, c-format +msgid " name: %.*s\n" +msgstr " nom: %.*s\n" + +#: vms-alpha.c:6911 +#, c-format +msgid "modbeg\n" +msgstr "début module\n" + +#: vms-alpha.c:6912 +#, c-format +msgid " flags: %d, language: %u, major: %u, minor: %u\n" +msgstr " fanions: %d, language: %u, majeur: %u, mineur: %u\n" + +#: vms-alpha.c:6918 vms-alpha.c:7184 +#, c-format +msgid " module name: %.*s\n" +msgstr " nom du module: %.*s\n" + +#: vms-alpha.c:6921 +#, c-format +msgid " compiler : %.*s\n" +msgstr " compilateur : %.*s\n" + +#: vms-alpha.c:6926 +#, c-format +msgid "modend\n" +msgstr "fin module\n" + +#: vms-alpha.c:6933 +msgid "rtnbeg\n" +msgstr "début rtn\n" + +#: vms-alpha.c:6934 +#, c-format +msgid " flags: %u, address: 0x%08x, pd-address: 0x%08x\n" +msgstr " fanions: %u, adresse: 0x%08x, pd-adresse: 0x%08x\n" + +#: vms-alpha.c:6939 +#, c-format +msgid " routine name: %.*s\n" +msgstr " nom routine : %.*s\n" + +#: vms-alpha.c:6947 +#, c-format +msgid "rtnend: size 0x%08x\n" +msgstr "fin rtn: taille 0x%08x\n" + +#: vms-alpha.c:6955 +#, c-format +msgid "prolog: bkpt address 0x%08x\n" +msgstr "prologue: adresse bkpt 0x%08x\n" + +#: vms-alpha.c:6963 +#, c-format +msgid "epilog: flags: %u, count: %u\n" +msgstr "épilogue: fanions: %u, nombre: %u\n" + +#: vms-alpha.c:6972 +#, c-format +msgid "blkbeg: address: 0x%08x, name: %.*s\n" +msgstr "début blk: adresse: 0x%08x, nom: %.*s\n" -#: elfxx-mips.c:9274 -msgid " [unknown ISA]" -msgstr " [ISA inconnu]" +#: vms-alpha.c:6981 +#, c-format +msgid "blkend: size: 0x%08x\n" +msgstr "fin blk: taille: 0x%08x\n" -#: elfxx-mips.c:9277 -msgid " [mdmx]" -msgstr " [mdmx]" - -#: elfxx-mips.c:9280 -msgid " [mips16]" -msgstr " [mips16]" - -#: elfxx-mips.c:9283 -msgid " [32bitmode]" -msgstr " [mode 32 bits]" +#: vms-alpha.c:6987 +#, c-format +msgid "typspec (len: %u)\n" +msgstr "typspec (long: %u)\n" -#: elfxx-mips.c:9285 -msgid " [not 32bitmode]" -msgstr " [aucun mode 32 bits]" +#: vms-alpha.c:6994 +#, c-format +msgid "septyp, name: %.*s\n" +msgstr "septyp, nom: %.*s\n" -#: i386linux.c:457 m68klinux.c:461 sparclinux.c:458 +#: vms-alpha.c:7003 #, c-format -msgid "Output file requires shared library `%s'\n" -msgstr "La sortie requiert une ilbrairie partagée « %s »\n" +msgid "recbeg: name: %.*s\n" +msgstr "début rec: nom: %.*s\n" -#: i386linux.c:465 m68klinux.c:469 sparclinux.c:466 +#: vms-alpha.c:7010 #, 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" +msgid "recend\n" +msgstr "fin rec\n" -#: i386linux.c:654 i386linux.c:704 m68klinux.c:661 m68klinux.c:709 -#: sparclinux.c:656 sparclinux.c:706 +#: vms-alpha.c:7013 #, c-format -msgid "Symbol %s not defined for fixups\n" -msgstr "Symbole %s n'est pas défini pour les corrections\n" +msgid "enumbeg, len: %u, name: %.*s\n" +msgstr "début énumération, long: %u, nom: %.*s\n" -#: i386linux.c:728 m68klinux.c:733 sparclinux.c:730 -msgid "Warning: fixup count mismatch\n" -msgstr "AVERTISSEMENT: correction du compteur qui ne concordait pas\n" +#: vms-alpha.c:7017 +#, c-format +msgid "enumelt, name: %.*s\n" +msgstr "énumération éléments, nom: %.*s\n" -#: ieee.c:293 +#: vms-alpha.c:7021 #, c-format -msgid "%s: string too long (%d chars, max 65535)" -msgstr "%s: chaîne trop longue (%d caractères, max 65535)" +msgid "enumend\n" +msgstr "fin énumération\n" -#: ieee.c:428 +#: vms-alpha.c:7038 #, c-format -msgid "%s: unrecognized symbol `%s' flags 0x%x" -msgstr "%s: symbole non reconnue « %s » fanions 0x%x" +msgid "discontiguous range (nbr: %u)\n" +msgstr "plage discontinue (nbr: %u)\n" -#: ieee.c:938 +#: vms-alpha.c:7040 #, c-format -msgid "%s: unimplemented ATI record %u for symbol %u" -msgstr "%s: enregistrement ATI non implanté %u pour le symbole %u" +msgid " address: 0x%08x, size: %u\n" +msgstr " adresse: 0x%08x, taille: %u\n" -#: ieee.c:963 +#: vms-alpha.c:7050 #, c-format -msgid "%s: unexpected ATN type %d in external part" -msgstr "%s: type ATN inattendu %d dans la partie externe" +msgid "line num (len: %u)\n" +msgstr "num ligne (long: %u)\n" -#: ieee.c:985 +#: vms-alpha.c:7067 #, c-format -msgid "%s: unexpected type after ATN" -msgstr "%s: type inattendu après ATN" +msgid "delta_pc_w %u\n" +msgstr "delta_pc_w %u\n" -#: ihex.c:264 +#: vms-alpha.c:7074 #, 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" +msgid "incr_linum(b): +%u\n" +msgstr "incr_linum(b): +%u\n" -#: ihex.c:372 +#: vms-alpha.c:7080 #, c-format -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)" +msgid "incr_linum_w: +%u\n" +msgstr "incr_linum_w: +%u\n" -#: ihex.c:426 +#: vms-alpha.c:7086 #, c-format -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" +msgid "incr_linum_l: +%u\n" +msgstr "incr_linum_l: +%u\n" -#: ihex.c:443 +#: vms-alpha.c:7092 #, c-format -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" +msgid "set_line_num(w) %u\n" +msgstr "set_line_num(w) %u\n" -#: ihex.c:460 +#: vms-alpha.c:7097 #, c-format -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" +msgid "set_line_num_b %u\n" +msgstr "set_line_num_b %u\n" -#: ihex.c:477 +#: vms-alpha.c:7102 #, c-format -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" +msgid "set_line_num_l %u\n" +msgstr "set_line_num_l %u\n" -#: ihex.c:494 +#: vms-alpha.c:7107 #, c-format -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" +msgid "set_abs_pc: 0x%08x\n" +msgstr "set_abs_pc: 0x%08x\n" -#: ihex.c:619 +#: vms-alpha.c:7111 #, c-format -msgid "%s: internal error in ihex_read_section" -msgstr "%s: erreur interne dans ihex_read_section" +msgid "delta_pc_l: +0x%08x\n" +msgstr "delta_pc_l: +0x%08x\n" -#: ihex.c:654 +#: vms-alpha.c:7116 #, c-format -msgid "%s: bad section length in ihex_read_section" -msgstr "%s: longuer erronée de section dans ihex_read_section" +msgid "term(b): 0x%02x" +msgstr "term(b): 0x%02x" -#: ihex.c:872 +#: vms-alpha.c:7118 #, c-format -msgid "%s: address 0x%s out of range for Intel Hex file" -msgstr "%s: adresse 0x%s hors limite pour le fichier Intel hexadécimal" +msgid " pc: 0x%08x\n" +msgstr " pc: 0x%08x\n" -#: libbfd.c:861 +#: vms-alpha.c:7123 #, c-format -msgid "Deprecated %s called at %s line %d in %s\n" -msgstr "%s déprécié appelé à %s dans la ligne %d dans %s\n" +msgid "term_w: 0x%04x" +msgstr "term_w: 0x%04x" -#: libbfd.c:864 +#: vms-alpha.c:7125 #, c-format -msgid "Deprecated %s called\n" -msgstr "%s appel déprécié\n" +msgid " pc: 0x%08x\n" +msgstr " pc: 0x%08x\n" -#: linker.c:1829 +#: vms-alpha.c:7131 #, c-format -msgid "%s: indirect symbol `%s' to `%s' is a loop" -msgstr "%s: symbole indirect « %s » vers « %s » est une boucle" +msgid "delta pc +%-4d" +msgstr "delta pc +%-4d" -#: linker.c:2697 +#: vms-alpha.c:7134 #, c-format -msgid "Attempt to do relocatable link with %s input and %s output" -msgstr "Tentative de relocalisation d'un lien avec %s à l'entrée et %s à la sortie" +msgid " pc: 0x%08x line: %5u\n" +msgstr " pc: 0x%08x ligne: %5u\n" -#: merge.c:896 +#: vms-alpha.c:7139 #, 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)" +msgid " *unhandled* cmd %u\n" +msgstr " cmd %u *non gérée*\n" -#: mmo.c:503 +#: vms-alpha.c:7154 #, c-format -msgid "%s: No core to allocate section name %s\n" -msgstr "%s: pas de corps pour allouer un nom de section %s\n" +msgid "source (len: %u)\n" +msgstr "source (long: %u)\n" -#: mmo.c:579 +#: vms-alpha.c:7168 #, c-format -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" +msgid " declfile: len: %u, flags: %u, fileid: %u\n" +msgstr " declfile: long: %u, fanions: %u, id fichier: %u\n" -#: mmo.c:1287 +#: vms-alpha.c:7172 #, 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" +msgid " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" +msgstr " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" -#: mmo.c:1433 +#: vms-alpha.c:7181 #, 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" +msgid " filename : %.*s\n" +msgstr " nom fichier: %.*s\n" -#: mmo.c:1674 +#: vms-alpha.c:7190 #, c-format -msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" -msgstr "%s: fichier mmo invalide: lopcode non supporté « %d »\n" +msgid " setfile %u\n" +msgstr " setfile %u\n" -#: mmo.c:1684 +#: vms-alpha.c:7195 vms-alpha.c:7200 #, c-format -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" +msgid " setrec %u\n" +msgstr " setrec %u\n" -#: mmo.c:1720 +#: vms-alpha.c:7205 vms-alpha.c:7210 #, c-format -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" +msgid " setlnum %u\n" +msgstr " setlnum %u\n" -#: mmo.c:1766 +#: vms-alpha.c:7215 vms-alpha.c:7220 #, c-format -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" +msgid " deflines %u\n" +msgstr " deflines %u\n" -#: mmo.c:1805 +#: vms-alpha.c:7224 #, c-format -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" +msgid " formfeed\n" +msgstr " formfeed\n" -#: mmo.c:1814 +#: vms-alpha.c:7228 #, c-format -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" +msgid " *unhandled* cmd %u\n" +msgstr " cmd %u *non gérée*\n" -#: mmo.c:1837 +#: vms-alpha.c:7240 #, 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" +msgid "*unhandled* dst type %u\n" +msgstr "type dst %u *non géré*\n" -#: mmo.c:1860 +#: vms-alpha.c:7272 #, 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" +msgid "cannot read EIHD\n" +msgstr "ne peut lire EIHD\n" -#: mmo.c:1880 +#: vms-alpha.c:7275 #, c-format -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" +msgid "EIHD: (size: %u, nbr blocks: %u)\n" +msgstr "EIHD: (taille: %u, nbr blocs: %u)\n" -#: mmo.c:1893 +#: vms-alpha.c:7278 #, c-format -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" +msgid " majorid: %u, minorid: %u\n" +msgstr " id majeur: %u, id mineur: %u\n" + +#: vms-alpha.c:7286 +msgid "executable" +msgstr "exécutable" -#: mmo.c:1999 +#: vms-alpha.c:7289 +msgid "linkable image" +msgstr "image liable" + +#: vms-alpha.c:7295 #, c-format -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" +msgid " image type: %u (%s)" +msgstr " type image: %u (%s)" + +#: vms-alpha.c:7301 +msgid "native" +msgstr "natif" + +#: vms-alpha.c:7304 +msgid "CLI" +msgstr "CLI" -#: mmo.c:2035 +#: vms-alpha.c:7310 #, c-format -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" +msgid ", subtype: %u (%s)\n" +msgstr ", sous-type: %u (%s)\n" -#: mmo.c:2048 +#: vms-alpha.c:7316 #, 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: fichier mmo invalide: YZ de lop_end (%ld) n'est pas égal au nombre de teras du lop_stab précédent (%ld)\n" +msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n" +msgstr " offsets: isd: %u, actif: %u, debug symbol: %u, id image: %u, patch: %u\n" -#: mmo.c:2698 +#: vms-alpha.c:7320 #, c-format -msgid "%s: invalid symbol table: duplicate symbol `%s'\n" -msgstr "%s: table de symboles invalides: duplication du symbole « %s »\n" +msgid " fixup info rva: " +msgstr " correctif info rva: " -#: mmo.c:2949 +#: vms-alpha.c:7322 #, c-format -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" +msgid ", symbol vector rva: " +msgstr ", vecteur de symbol rva: " -#: mmo.c:3039 +#: vms-alpha.c:7325 #, 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: avertissement: table de symboles trop grande pour mmo, plus grande que 65535 mots de 32 bits: %d. Seul « Main » sera produit.\n" +msgid "" +"\n" +" version array off: %u\n" +msgstr "" +"\n" +" offset tableau version: %u\n" -#: mmo.c:3084 +#: vms-alpha.c:7329 #, c-format -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" +msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n" +msgstr " décompte E/S img: %u, nbr canaux: %u, priv req: %08x%08x\n" -#: mmo.c:3139 +#: vms-alpha.c:7335 #, c-format -msgid "%s: internal error, internal register section %s had contents\n" -msgstr "%s: erreur interne, registre interne de section %s a du contenu\n" +msgid " linker flags: %08x:" +msgstr " fanions lieur: %08x:" -#: mmo.c:3191 +#: vms-alpha.c:7365 #, c-format -msgid "%s: no initialized registers; section length 0\n" -msgstr "%s: pas de registres initialisés; section de longeur 0\n" +msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n" +msgstr " ident: 0x%08x, ver sys: 0x%08x, apparier ctrl: %u, taille vectsym: %u\n" -#: mmo.c:3197 +#: vms-alpha.c:7371 #, c-format -msgid "%s: too many initialized registers; section length %ld\n" -msgstr "%s: trop de resigstres initialisés; longueur de section %ld\n" +msgid " BPAGE: %u" +msgstr " BPAGE: %u" -#: mmo.c:3202 +#: vms-alpha.c:7377 #, c-format -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" +msgid ", ext fixup offset: %u, no_opt psect off: %u" +msgstr ", offset correctif étendu: %u, offset no_opt psect: %u" -#: oasys.c:1052 +#: vms-alpha.c:7380 #, c-format -msgid "%s: can not represent section `%s' in oasys" -msgstr "%s: ne peut représenter la section « %s » dans oasis" +msgid ", alias: %u\n" +msgstr ", alias: %u\n" -#: osf-core.c:137 +#: vms-alpha.c:7388 #, 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 "system version array information:\n" +msgstr "information sur table de version système:\n" -#: pe-mips.c:659 +#: vms-alpha.c:7392 #, 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" +msgid "cannot read EIHVN header\n" +msgstr "ne peut lire l'en-tête EIHVN\n" -#. OK, at this point the following variables are set up: -#. src = VMA of the memory we're fixing up -#. mem = pointer to memory we're fixing up -#. val = VMA of what we need to refer to -#. -#: pe-mips.c:795 +#: vms-alpha.c:7402 #, c-format -msgid "%s: unimplemented %s\n" -msgstr "%s: non implanté %s\n" +msgid "cannot read EIHVN version\n" +msgstr "ne peut lire la version EIHVN\n" -#: pe-mips.c:821 +#: vms-alpha.c:7405 #, c-format -msgid "%s: jump too far away\n" -msgstr "%s: le saut va trop loin\n" +msgid " %02u " +msgstr " %02u " + +#: vms-alpha.c:7409 +msgid "BASE_IMAGE " +msgstr "BASE_IMAGE " + +#: vms-alpha.c:7412 +msgid "MEMORY_MANAGEMENT" +msgstr "MEMORY_MANAGEMENT" + +#: vms-alpha.c:7415 +msgid "IO " +msgstr "IO " + +#: vms-alpha.c:7418 +msgid "FILES_VOLUMES " +msgstr "FILES_VOLUMES " + +#: vms-alpha.c:7421 +msgid "PROCESS_SCHED " +msgstr "PROCESS_SCHED " + +#: vms-alpha.c:7424 +msgid "SYSGEN " +msgstr "SYSGEN " + +#: vms-alpha.c:7427 +msgid "CLUSTERS_LOCKMGR " +msgstr "CLUSTERS_LOCKMGR " + +#: vms-alpha.c:7430 +msgid "LOGICAL_NAMES " +msgstr "LOGICAL_NAMES " + +#: vms-alpha.c:7433 +msgid "SECURITY " +msgstr "SECURITY " + +#: vms-alpha.c:7436 +msgid "IMAGE_ACTIVATOR " +msgstr "IMAGE_ACTIVATOR " + +#: vms-alpha.c:7439 +msgid "NETWORKS " +msgstr "NETWORKS " + +#: vms-alpha.c:7442 +msgid "COUNTERS " +msgstr "COUNTERS " + +#: vms-alpha.c:7445 +msgid "STABLE " +msgstr "STABLE " -#: pe-mips.c:848 +#: vms-alpha.c:7448 +msgid "MISC " +msgstr "MISC " + +#: vms-alpha.c:7451 +msgid "CPU " +msgstr "CPU " + +#: vms-alpha.c:7454 +msgid "VOLATILE " +msgstr "VOLATILE " + +#: vms-alpha.c:7457 +msgid "SHELL " +msgstr "SHELL " + +#: vms-alpha.c:7460 +msgid "POSIX " +msgstr "POSIX " + +#: vms-alpha.c:7463 +msgid "MULTI_PROCESSING " +msgstr "MULTI_PROCESSING " + +#: vms-alpha.c:7466 +msgid "GALAXY " +msgstr "GALAXY " + +#: vms-alpha.c:7469 +msgid "*unknown* " +msgstr "*inconnu* " + +#: vms-alpha.c:7472 #, c-format -msgid "%s: bad pair/reflo after refhi\n" -msgstr "%s: pairage erronée pair/reflo après refhi\n" +msgid ": %u.%u\n" +msgstr ": %u.%u\n" -#. XXX code yet to be written. -#: peicode.h:787 +#: vms-alpha.c:7485 vms-alpha.c:7744 #, c-format -msgid "%s: Unhandled import type; %x" -msgstr "%s: type d'importation non traitée; %x" +msgid "cannot read EIHA\n" +msgstr "ne peut lire EIHA\n" -#: peicode.h:792 +#: vms-alpha.c:7488 #, c-format -msgid "%s: Unrecognised import type; %x" -msgstr "%s: type d'importation non reconnu; %x" +msgid "Image activation: (size=%u)\n" +msgstr "Activation de l'image: (taille=%u)\n" -#: peicode.h:806 +#: vms-alpha.c:7490 #, c-format -msgid "%s: Unrecognised import name type; %x" -msgstr "%s: type de nom d'importation non reconnu: %x" +msgid " First address : 0x%08x 0x%08x\n" +msgstr " Première adresse : 0x%08x 0x%08x\n" -#: peicode.h:1164 +#: vms-alpha.c:7493 #, 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 " Second address: 0x%08x 0x%08x\n" +msgstr " Deuxième adresse : 0x%08x 0x%08x\n" -#: peicode.h:1176 +#: vms-alpha.c:7496 #, 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 " Third address : 0x%08x 0x%08x\n" +msgstr " Troisième adresse: 0x%08x 0x%08x\n" -#: peicode.h:1193 +#: vms-alpha.c:7499 #, 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 " Fourth address: 0x%08x 0x%08x\n" +msgstr " Quatrième adresse: 0x%08x 0x%08x\n" -#: peicode.h:1224 +#: vms-alpha.c:7502 #, 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 " Shared image : 0x%08x 0x%08x\n" +msgstr " Image partagée : 0x%08x 0x%08x\n" -#: ppcboot.c:416 -msgid "" -"\n" -"ppcboot header:\n" -msgstr "" -"\n" -"En-têtes ppcboot:\n" +#: vms-alpha.c:7513 +#, c-format +msgid "cannot read EIHI\n" +msgstr "ne peut lire EIHI\n" -#: ppcboot.c:417 +#: vms-alpha.c:7516 #, c-format -msgid "Entry offset = 0x%.8lx (%ld)\n" -msgstr "Décalage de l'entrée= 0x%.8lx (%ld)\n" +msgid "Image identification: (major: %u, minor: %u)\n" +msgstr "Identification d'image: (majeur: %u, mineur: %u)\n" -#: ppcboot.c:418 +#: vms-alpha.c:7519 #, c-format -msgid "Length = 0x%.8lx (%ld)\n" -msgstr "Longueur = 0x%.8lx (%ld)\n" +msgid " image name : %.*s\n" +msgstr " nom de l'image : %.*s\n" -#: ppcboot.c:421 +#: vms-alpha.c:7521 #, c-format -msgid "Flag field = 0x%.2x\n" -msgstr "Champ de fanion = 0x%.2x\n" +msgid " link time : %s\n" +msgstr " heure de liaison : %s\n" -#: ppcboot.c:427 +#: vms-alpha.c:7523 #, c-format -msgid "Partition name = \"%s\"\n" -msgstr "Nom de partition = « %s »\n" +msgid " image ident : %.*s\n" +msgstr " ident image : %.*s\n" -#: ppcboot.c:446 +#: vms-alpha.c:7525 #, c-format -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" +msgid " linker ident : %.*s\n" +msgstr " ident lieur : %.*s\n" -#: ppcboot.c:452 +#: vms-alpha.c:7527 #, 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" +msgid " image build ident: %.*s\n" +msgstr " ident construction image: %.*s\n" -#: ppcboot.c:458 +#: vms-alpha.c:7537 #, c-format -msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" -msgstr "Secteur de la partition[%d] = 0x%.8lx (%ld)\n" +msgid "cannot read EIHS\n" +msgstr "ne peut lire EIHS\n" -#: ppcboot.c:459 +#: vms-alpha.c:7540 #, c-format -msgid "Partition[%d] length = 0x%.8lx (%ld)\n" -msgstr "Longueur de la partition[%d] = 0x%.8lx (%ld)\n" +msgid "Image symbol & debug table: (major: %u, minor: %u)\n" +msgstr "Image des symboles et table debug: (majeur: %u, mineur: %u)\n" -#: som.c:5422 -msgid "som_sizeof_headers unimplemented" -msgstr "som_sizeof_headers non implanté" +#: vms-alpha.c:7545 +#, c-format +msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n" +msgstr " table des symboles de debug : vbn: %u, taille: %u (0x%x)\n" -#: srec.c:302 +#: vms-alpha.c:7549 #, 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" +msgid " global symbol table: vbn: %u, records: %u\n" +msgstr " table des symboles globale: vbn: %u, enregistrements: %u\n" -#: stabs.c:319 +#: vms-alpha.c:7553 #, c-format -msgid "%s(%s+0x%lx): Stabs entry has invalid string index." -msgstr "%s(%s+0x%lx): entrée des talons a une chaîne index invalide" +msgid " debug module table : vbn: %u, size: %u\n" +msgstr " table des modules de debug: vbn: %u, taille: %u\n" -#: syms.c:1019 -msgid "Unsupported .stab relocation" -msgstr "Relocalisation du .stab non supporté" +#: vms-alpha.c:7566 +#, c-format +msgid "cannot read EISD\n" +msgstr "ne peut lire EISD\n" -#: vms-gsd.c:356 +#: vms-alpha.c:7576 #, c-format -msgid "bfd_make_section (%s) failed" -msgstr "Échec de bfd_make_section (%s)" +msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n" +msgstr "Descripteur de section d'image: (majeur: %u, mineur: %u, taille: %u, offset: %u)\n" -#: vms-gsd.c:371 +#: vms-alpha.c:7583 #, c-format -msgid "bfd_set_section_flags (%s, %x) failed" -msgstr "bfd_set_section_flags (%s, %x) a échoué" +msgid " section: base: 0x%08x%08x size: 0x%08x\n" +msgstr " section: base: 0x%08x%08x taille: 0x%08x\n" -#: vms-gsd.c:407 +#: vms-alpha.c:7588 #, c-format -msgid "Size mismatch section %s=%lx, %s=%lx" -msgstr "Taille de section ne concorde pas %s=%lx, %s=%lx" +msgid " flags: 0x%04x" +msgstr " fanions: 0x%04x" -#: vms-gsd.c:704 +#: vms-alpha.c:7625 #, c-format -msgid "unknown gsd/egsd subtype %d" -msgstr "sous type gsd/egsd inconnu %d" +msgid " vbn: %u, pfc: %u, matchctl: %u type: %u (" +msgstr " vbn: %u, pfc: %u, matchctl: %u type: %u (" -#: vms-hdr.c:408 -msgid "Object module NOT error-free !\n" -msgstr "Module objet N'EST PAS sans erreur !\n" +#: vms-alpha.c:7631 +msgid "NORMAL" +msgstr "NORMAL" + +#: vms-alpha.c:7634 +msgid "SHRFXD" +msgstr "SHRFXD" + +#: vms-alpha.c:7637 +msgid "PRVFXD" +msgstr "PRVFXD" + +#: vms-alpha.c:7640 +msgid "SHRPIC" +msgstr "SHRPIC" + +#: vms-alpha.c:7643 +msgid "PRVPIC" +msgstr "PRVPIC" -#: vms-misc.c:541 +#: vms-alpha.c:7646 +msgid "USRSTACK" +msgstr "USRSTACK" + +#: vms-alpha.c:7654 #, c-format -msgid "Stack overflow (%d) in _bfd_vms_push" -msgstr "Débordement de la pile (%d) dans _bfd_vms_push" +msgid " ident: 0x%08x, name: %.*s\n" +msgstr " ident: 0x%08x, nom: %.*s\n" -#: vms-misc.c:559 -msgid "Stack underflow in _bfd_vms_pop" -msgstr "Sous dépilage de la pile dans _bfd_vms_pop" +#: vms-alpha.c:7664 +#, c-format +msgid "cannot read DMT\n" +msgstr "ne peut lire DMT\n" -#: vms-misc.c:918 -msgid "_bfd_vms_output_counted called with zero bytes" -msgstr "_bfd_vms_output_counted appelé avec un compte de zéro octet" +#: vms-alpha.c:7668 +#, c-format +msgid "Debug module table:\n" +msgstr "Table de debug du module:\n" -#: vms-misc.c:923 -msgid "_bfd_vms_output_counted called with too many bytes" -msgstr "_bfd_vms_output_counted appelé avec trop d'octets" +#: vms-alpha.c:7677 +#, c-format +msgid "cannot read DMT header\n" +msgstr "ne peut lire l'en-tête DMT\n" -#: vms-misc.c:1054 +#: vms-alpha.c:7682 #, c-format -msgid "Symbol %s replaced by %s\n" -msgstr "Symbole %s remplacé par %s\n" +msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n" +msgstr " offset du module: 0x%08x, taille: 0x%08x, (%u psects)\n" -#: vms-misc.c:1117 +#: vms-alpha.c:7692 #, c-format -msgid "failed to enter %s" -msgstr "échec d'insertion de %s" +msgid "cannot read DMT psect\n" +msgstr "ne peut lire le psect DMT\n" -#: vms-tir.c:102 -msgid "No Mem !" -msgstr "Mémoire épuisée!" +#: vms-alpha.c:7695 +#, c-format +msgid " psect start: 0x%08x, length: %u\n" +msgstr " début psect: 0x%08x, longueur: %u\n" -#: vms-tir.c:383 +#: vms-alpha.c:7708 #, c-format -msgid "bad section index in %s" -msgstr "index de section erronée dans %s" +msgid "cannot read DST\n" +msgstr "ne peut lire DST\n" -#: vms-tir.c:396 +#: vms-alpha.c:7718 #, c-format -msgid "unsupported STA cmd %s" -msgstr "commande STA non supportée %s" +msgid "cannot read GST\n" +msgstr "ne peut lire GST\n" -#: vms-tir.c:401 vms-tir.c:1261 +#: vms-alpha.c:7722 #, c-format -msgid "reserved STA cmd %d" -msgstr "commande STA réservée %d" +msgid "Global symbol table:\n" +msgstr "Table des symboles globaux:\n" -#: vms-tir.c:512 vms-tir.c:535 +#: vms-alpha.c:7750 #, c-format -msgid "%s: no symbol \"%s\"" -msgstr "%s: pas de symbole \"%s\"" +msgid "Image activator fixup: (major: %u, minor: %u)\n" +msgstr "Correction de l'activateur de l'image: (majeur: %u, mineur: %u)\n" -#. unsigned shift -#. rotate -#. Redefine symbol to current location. -#. Define a literal. -#: vms-tir.c:602 vms-tir.c:714 vms-tir.c:824 vms-tir.c:842 vms-tir.c:850 -#: vms-tir.c:859 vms-tir.c:1584 +#: vms-alpha.c:7753 #, c-format -msgid "%s: not supported" -msgstr "%s: pas supporté" +msgid " iaflink : 0x%08x %08x\n" +msgstr " lien iaf : 0x%08x %08x\n" -#: vms-tir.c:607 vms-tir.c:1439 +#: vms-alpha.c:7756 #, c-format -msgid "%s: not implemented" -msgstr "%s: non implanté" +msgid " fixuplnk: 0x%08x %08x\n" +msgstr " lien correctif: 0x%08x %08x\n" -#: vms-tir.c:611 vms-tir.c:1443 +#: vms-alpha.c:7759 #, c-format -msgid "reserved STO cmd %d" -msgstr "commande STO réservée %d" +msgid " size : %u\n" +msgstr " taille : %u\n" -#: vms-tir.c:729 vms-tir.c:1589 +#: vms-alpha.c:7761 #, c-format -msgid "reserved OPR cmd %d" -msgstr "commande OPR réservée %d" +msgid " flags: 0x%08x\n" +msgstr " fanions: 0x%08x\n" -#: vms-tir.c:797 vms-tir.c:1653 +#: vms-alpha.c:7765 #, c-format -msgid "reserved CTL cmd %d" -msgstr "commande CTL réservée %d" +msgid " qrelfixoff: %5u, lrelfixoff: %5u\n" +msgstr " qrelfixoff: %5u, lrelfixoff: %5u\n" -#. stack byte from image -#. arg: none. -#: vms-tir.c:1169 -msgid "stack-from-image not implemented" -msgstr "pile depuis l'image non implanté" +#: vms-alpha.c:7769 +#, c-format +msgid " qdotadroff: %5u, ldotadroff: %5u\n" +msgstr " qdotadroff: %5u, ldotadroff: %5u\n" -#: vms-tir.c:1187 -msgid "stack-entry-mask not fully implemented" -msgstr "masque de pile d'entrée pas complètement implanté" +#: vms-alpha.c:7773 +#, c-format +msgid " codeadroff: %5u, lpfixoff : %5u\n" +msgstr " codeadroff: %5u, lpfixoff : %5u\n" -#. compare procedure argument -#. arg: cs symbol name -#. by argument index -#. da argument descriptor -#. -#. compare argument descriptor with symbol argument (ARG$V_PASSMECH) -#. and stack TRUE (args match) or FALSE (args dont match) value. -#: vms-tir.c:1201 -msgid "PASSMECH not fully implemented" -msgstr "PASSMECH pas complètement implanté" +#: vms-alpha.c:7776 +#, c-format +msgid " chgprtoff : %5u\n" +msgstr " chgprtoff : %5u\n" -#: vms-tir.c:1220 -msgid "stack-local-symbol not fully implemented" -msgstr "symbole local de pile pas complètement implanté" +#: vms-alpha.c:7779 +#, c-format +msgid " shlstoff : %5u, shrimgcnt : %5u\n" +msgstr " shlstoff : %5u, shrimgcnt : %5u\n" -#: vms-tir.c:1233 -msgid "stack-literal not fully implemented" -msgstr "litéral de pile pas complètement implanté" +#: vms-alpha.c:7781 +#, c-format +msgid " shlextra : %5u, permctx : %5u\n" +msgstr " shlextra : %5u, permctx : %5u\n" -#: vms-tir.c:1254 -msgid "stack-local-symbol-entry-point-mask not fully implemented" -msgstr "masque du symbole local de point d'entrée de pile pas complètement implanté" +#: vms-alpha.c:7784 +#, c-format +msgid " base_va : 0x%08x\n" +msgstr " base_va : 0x%08x\n" -#: vms-tir.c:1531 vms-tir.c:1543 vms-tir.c:1555 vms-tir.c:1567 vms-tir.c:1632 -#: vms-tir.c:1640 vms-tir.c:1648 +#: vms-alpha.c:7786 #, c-format -msgid "%s: not fully implemented" -msgstr "%s: pas complètement implanté" +msgid " lppsbfixoff: %5u\n" +msgstr " lppsbfixoff: %5u\n" -#: vms-tir.c:1705 +#: vms-alpha.c:7794 #, c-format -msgid "obj code %d not found" -msgstr "code objet %d non repéré" +msgid " Shareable images:\n" +msgstr " Images partageables:\n" -#: vms-tir.c:2043 +#: vms-alpha.c:7798 #, c-format -msgid "SEC_RELOC with no relocs in section %s" -msgstr "SEC_RELOC sans relocalisation dans la section %s" +msgid " %u: size: %u, flags: 0x%02x, name: %.*s\n" +msgstr " %u: taille: %u, fanions: 0x%02x, nom: %.*s\n" -#: vms-tir.c:2331 +#: vms-alpha.c:7805 #, c-format -msgid "Unhandled relocation %s" -msgstr "Relocalisation non traitée: %s" +msgid " quad-word relocation fixups:\n" +msgstr " correctifs de relocalisation des quad-mots:\n" -#: xcofflink.c:1244 +#: vms-alpha.c:7810 #, 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" +msgid " long-word relocation fixups:\n" +msgstr " correctifs de relocalisation des mots longs:\n" -#: xcofflink.c:1297 +#: vms-alpha.c:7815 #, 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" +msgid " quad-word .address reference fixups:\n" +msgstr " correctifs des références quad-mots «.address»:\n" -#: xcofflink.c:1320 +#: vms-alpha.c:7820 #, c-format -msgid "%s: symbol `%s' has unrecognized csect type %d" -msgstr "%s: symbole « %s » a un type csect non reconnu %d" +msgid " long-word .address reference fixups:\n" +msgstr " correctifs des références mots longs «.address»:\n" -#: xcofflink.c:1332 +#: vms-alpha.c:7825 #, 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" +msgid " Code Address Reference Fixups:\n" +msgstr " Correctifs des références des adresses de code:\n" -#: xcofflink.c:1368 +#: vms-alpha.c:7830 #, 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" +msgid " Linkage Pairs Referece Fixups:\n" +msgstr " Correctifs des références des paires de liaison:\n" -#: xcofflink.c:1520 +#: vms-alpha.c:7839 #, c-format -msgid "%s: csect `%s' not in enclosing section" -msgstr "%s: csect « %s » n'est pas dans un section fermée" +msgid " Change Protection (%u entries):\n" +msgstr " Changement de protection (%u entrées):\n" -#: xcofflink.c:1627 +#: vms-alpha.c:7844 #, c-format -msgid "%s: misplaced XTY_LD `%s'" -msgstr "%s: XTY_LD mal placé « %s »" +msgid " base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x " +msgstr " base: 0x%08x %08x, taille: 0x%08x, prot: 0x%08x " + +#. FIXME: we do not yet support relocatable link. It is not obvious +#. how to do it for debug infos. +#: vms-alpha.c:8676 +msgid "%P: relocatable link is not supported\n" +msgstr "%P: lien relocalisable pas supporté\n" -#: xcofflink.c:1958 +#: vms-alpha.c:8746 +msgid "%P: multiple entry points: in modules %B and %B\n" +msgstr "%P: points d'entrée multiples: dans les modules %B et %B\n" + +#: vms-lib.c:1421 #, c-format -msgid "%s: reloc %s:%d not in csect" -msgstr "%s: relocalisation %s:%d n'est pas dans csect" +msgid "could not open shared image '%s' from '%s'" +msgstr "n'a pas su ouvrir l'image partagée «%s» de «%s»" + +#: vms-misc.c:360 +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:365 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "_bfd_vms_output_counted appelé avec trop d'octets" -#: xcofflink.c:2095 +#: xcofflink.c:836 #, c-format msgid "%s: XCOFF shared object when not producing XCOFF output" -msgstr "%s: objet XCOFF partagé sans être en production de sortie XCOFF" +msgstr "%s: objet XCOFF partagé alors qu'on ne produit pas de sortie XCOFF" -#: xcofflink.c:2116 +#: xcofflink.c:857 #, c-format msgid "%s: dynamic object with no .loader section" msgstr "%s: objet dynamique sans section .loader" -#: xcofflink.c:2761 +#: xcofflink.c:1415 +msgid "%B: `%s' has line numbers but no enclosing section" +msgstr "%B: «%s» contient des numéros de lignes mais de section d'encadrement" + +#: xcofflink.c:1467 +msgid "%B: class %d symbol `%s' has no aux entries" +msgstr "%B: classe %d symbole «%s» n'a pas d'entrée auxiliaire" + +#: xcofflink.c:1489 +msgid "%B: symbol `%s' has unrecognized csect type %d" +msgstr "%B: symbole «%s» a un type csect %d non reconnu" + +#: xcofflink.c:1501 +msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%B: symbole XTY_ER «%s» erroné: classe %d scnum %d scnlen %d" + +#: xcofflink.c:1530 +msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%B: XMC_TC0 symbol «%s» est la classe %d scnlen %d" + +#: xcofflink.c:1676 +msgid "%B: csect `%s' not in enclosing section" +msgstr "%B: csect «%s» n'est pas dans un section d'encadrement" + +#: xcofflink.c:1783 +msgid "%B: misplaced XTY_LD `%s'" +msgstr "%B: XTY_LD «%s» mal placé" + +#: xcofflink.c:2102 +msgid "%B: reloc %s:%d not in csect" +msgstr "%B: relocalisation %s:%d n'est pas dans csect" + +#: xcofflink.c:3186 #, c-format msgid "%s: no such symbol" msgstr "%s: pas de tel symbole" -#: xcofflink.c:2894 -msgid "error: undefined symbol __rtinit" -msgstr "erreur: symbole __rtinit indéfini" - -#: xcofflink.c:3455 +#: xcofflink.c:3291 #, c-format msgid "warning: attempt to export undefined symbol `%s'" -msgstr "AVERTISSEMENT: tentative d'exportation d'un symbole indéfini « %s »" +msgstr "attention: tentative d'exportation d'un symbole non défini «%s»" -#: xcofflink.c:4448 -#, 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" +#: xcofflink.c:3673 +msgid "error: undefined symbol __rtinit" +msgstr "erreur: symbole __rtinit non défini" -#: xcofflink.c:5288 xcofflink.c:5755 xcofflink.c:5817 xcofflink.c:6119 -#, c-format -msgid "%s: loader reloc in unrecognized section `%s'" -msgstr "%s: chargeur de relocalisation dans une section non reconnnue « %s »" +#: xcofflink.c:4052 +msgid "%B: loader reloc in unrecognized section `%s'" +msgstr "%B: chargeur de relocalisation dans une section non reconnnue «%s»" -#: xcofflink.c:5310 xcofflink.c:6130 -#, 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" +#: xcofflink.c:4063 +msgid "%B: `%s' in loader reloc but not loader sym" +msgstr "%B: «%s» est dans le chargeur de relocalisation mais pas dans celui des symboles" + +#: xcofflink.c:4079 +msgid "%B: loader reloc in read-only section %A" +msgstr "%B: chargeur de relocalisation dans la section %A en lecture seule" -#: xcofflink.c:5325 +#: xcofflink.c:5097 #, c-format -msgid "%s: loader reloc in read-only section %s" -msgstr "%s: chargeur de relocalisation dans un section en lecture seulement %s" +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "Débordement de la table des entrées: 0x%lx > 0x10000; essayez l'option -mminimal-toc à la compilation" + +#: elf32-ia64.c:1110 elf64-ia64.c:1110 +msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch." +msgstr "%B: Ne peut relâcher br à 0x%lx dans la section «%A». Veuillez utiliser brl ou un branchement indirect." -#: elf32-ia64.c:2392 elf64-ia64.c:2392 +#: elf32-ia64.c:2809 elf64-ia64.c:2809 msgid "@pltoff reloc against local symbol" msgstr "relocalisation @pltoff vers un symbole local" -#: elf32-ia64.c:3804 elf64-ia64.c:3804 +#: elf32-ia64.c:4430 elf64-ia64.c:4430 #, c-format msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" -msgstr "%s: débordement du segment de données court (0x%lx >= 0x400000)" +msgstr "%s: débordement du segment de données court (0x%lx >= 0x400000)" -#: elf32-ia64.c:3815 elf64-ia64.c:3815 +#: elf32-ia64.c:4441 elf64-ia64.c:4441 #, c-format msgid "%s: __gp does not cover short data segment" -msgstr "%s: __gp ne couvre pas ce segment de données court" +msgstr "%s: __gp ne couvre pas le segment de données court" -#: elf32-ia64.c:4131 elf64-ia64.c:4131 -#, 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:4708 elf64-ia64.c:4708 +msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" +msgstr "%B: code non pic avec des relocalisations imm vers le symbole dynamique «%s»" -#: elf32-ia64.c:4164 elf64-ia64.c:4164 -#, c-format -msgid "%s: @gprel relocation against dynamic symbol %s" -msgstr "%s: relocalisation @gprel vers le symbole dynamique %s" +#: elf32-ia64.c:4775 elf64-ia64.c:4775 +msgid "%B: @gprel relocation against dynamic symbol %s" +msgstr "%B: relocalisation @gprel vers le symbole dynamique %s" -#: elf32-ia64.c:4224 elf64-ia64.c:4224 -#, c-format -msgid "%s: linking non-pic code in a position independent executable" -msgstr "%s: liaison de code non-pic dans un exécutable à position indépendante" +#: elf32-ia64.c:4838 elf64-ia64.c:4838 +msgid "%B: linking non-pic code in a position independent executable" +msgstr "%B: liaison de code non-pic dans un exécutable à position indépendante" -#: elf32-ia64.c:4363 elf64-ia64.c:4363 -#, c-format -msgid "%s: @internal branch to dynamic symbol %s" -msgstr "%s: relocalisation @internal vers le symbole dynamique %s" +#: elf32-ia64.c:4975 elf64-ia64.c:4975 +msgid "%B: @internal branch to dynamic symbol %s" +msgstr "%B: branchement @internal vers le symbole dynamique %s" -#: elf32-ia64.c:4365 elf64-ia64.c:4365 -#, c-format -msgid "%s: speculation fixup to dynamic symbol %s" -msgstr "%s: spéculation d'ajustements vers un symbole dynamique %s" +#: elf32-ia64.c:4977 elf64-ia64.c:4977 +msgid "%B: speculation fixup to dynamic symbol %s" +msgstr "%B: spéculation d'ajustements vers le symbole dynamique %s" -#: elf32-ia64.c:4367 elf64-ia64.c:4367 -#, c-format -msgid "%s: @pcrel relocation against dynamic symbol %s" -msgstr "%s: relocalisation @pcrel vers le symbole dynamique %s" +#: elf32-ia64.c:4979 elf64-ia64.c:4979 +msgid "%B: @pcrel relocation against dynamic symbol %s" +msgstr "%B: relocalisation @pcrel vers le symbole dynamique %s" -#: elf32-ia64.c:4579 elf64-ia64.c:4579 +#: elf32-ia64.c:5176 elf64-ia64.c:5176 msgid "unsupported reloc" -msgstr "relocalisation non supportée" +msgstr "relocalisation non supportée" -#: elf32-ia64.c:4858 elf64-ia64.c:4858 -#, 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:5214 elf64-ia64.c:5214 +msgid "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'." +msgstr "%B: setion TLS manquante pour la relocalisation %s vers «%s» à 0x%lx dans la section «%A»." -#: elf32-ia64.c:4867 elf64-ia64.c:4867 -#, 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:5229 elf64-ia64.c:5229 +msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)." +msgstr "%B:Ne peut pas relâcher br (%s) sur «%s» à 0x%lx dans la section «%A» avec la taille 0x%lx (> 0x1000000)." -#: elf32-ia64.c:4876 elf64-ia64.c:4876 -#, 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:5491 elf64-ia64.c:5491 +msgid "%B: linking trap-on-NULL-dereference with non-trapping files" +msgstr "%B: édition de liens trap-on-NULL-dereference avec des fichiers non-trapping" -#: elf32-ia64.c:4885 elf64-ia64.c:4885 -#, 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:5500 elf64-ia64.c:5500 +msgid "%B: linking big-endian files with little-endian files" +msgstr "%B: édition de liens entre des fichiers à octets de poids fort et des fichiers à octets de poids faible" -#: elf32-ia64.c:4895 elf64-ia64.c:4895 -#, 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" +#: elf32-ia64.c:5509 elf64-ia64.c:5509 +msgid "%B: linking 64-bit files with 32-bit files" +msgstr "%B: édition de liens entre fichiers 64 bits et fichiers 32 bits" -#: peigen.c:985 pepigen.c:985 -#, c-format -msgid "%s: line number overflow: 0x%lx > 0xffff" -msgstr "%s: débordement du nombre de lignes: 0x%lx > 0xffff" +#: elf32-ia64.c:5518 elf64-ia64.c:5518 +msgid "%B: linking constant-gp files with non-constant-gp files" +msgstr "%B: édition de liens entre fichiers constant-gp et fichiers non-constant-gp" -#: peigen.c:1002 pepigen.c:1002 +#: elf32-ia64.c:5528 elf64-ia64.c:5528 +msgid "%B: linking auto-pic files with non-auto-pic files" +msgstr "%B: édition de liens entre fichiers auto-pic et fichiers non-auto-pic" + +#: peigen.c:1002 pepigen.c:1002 pex64igen.c:1002 #, c-format -msgid "%s: reloc overflow 1: 0x%lx > 0xffff" -msgstr "%s: débordement de la relocalisation 1: 0x%lx > 0xffff" +msgid "%s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: débordement du nombre de lignes: 0x%lx > 0xffff" -#: peigen.c:1016 pepigen.c:1016 +#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 msgid "Export Directory [.edata (or where ever we found it)]" -msgstr "Répertoire d'exportation [.edata (ou là où il a été repéré)]" +msgstr "Répertoire d'exportation [.edata (ou là où il a été trouvé)]" -#: peigen.c:1017 pepigen.c:1017 +#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 msgid "Import Directory [parts of .idata]" -msgstr "Répertoire d'importation [faisant partie de .idata]" +msgstr "Répertoire d'importation [faisant partie de .idata]" -#: peigen.c:1018 pepigen.c:1018 +#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 msgid "Resource Directory [.rsrc]" -msgstr "Répertoire des resources [.rsrc]" +msgstr "Répertoire des resources [.rsrc]" -#: peigen.c:1019 pepigen.c:1019 +#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 msgid "Exception Directory [.pdata]" -msgstr "Répertoire des exceptions [.pdata]" +msgstr "Répertoire des exceptions [.pdata]" -#: peigen.c:1020 pepigen.c:1020 +#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 msgid "Security Directory" -msgstr "Répertoire de la sécurité" +msgstr "Répertoire de la sécurité" -#: peigen.c:1021 pepigen.c:1021 +#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 msgid "Base Relocation Directory [.reloc]" -msgstr "Répertoire de base de relocalisation [.reloc]" +msgstr "Répertoire de base de relocalisation [.reloc]" -#: peigen.c:1022 pepigen.c:1022 +#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 msgid "Debug Directory" -msgstr "Répertoire de débug" +msgstr "Répertoire de débug" -#: peigen.c:1023 pepigen.c:1023 +#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 msgid "Description Directory" -msgstr "Répertoire de description" +msgstr "Répertoire de description" -#: peigen.c:1024 pepigen.c:1024 +#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 msgid "Special Directory" -msgstr "Répertoire spécial" +msgstr "Répertoire spécial" -#: peigen.c:1025 pepigen.c:1025 +#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 msgid "Thread Storage Directory [.tls]" -msgstr "Répertoire des files de stockage [.tls]" +msgstr "Répertoire des files de stockage [.tls]" -#: peigen.c:1026 pepigen.c:1026 +#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 msgid "Load Configuration Directory" -msgstr "Répertoire de chargement de configuration" +msgstr "Répertoire de chargement de configuration" -#: peigen.c:1027 pepigen.c:1027 +#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 msgid "Bound Import Directory" -msgstr "Répertoire des importations limitées" +msgstr "Répertoire des importations limitées" -#: peigen.c:1028 pepigen.c:1028 +#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 msgid "Import Address Table Directory" -msgstr "Répertoire de la table d'adresse d'importation" +msgstr "Répertoire de la table d'adresse d'importation" -#: peigen.c:1029 pepigen.c:1029 +#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 msgid "Delay Import Directory" -msgstr "Répertoire des délais d'importation" +msgstr "Répertoire des délais d'importation" -#: peigen.c:1030 peigen.c:1031 pepigen.c:1030 pepigen.c:1031 +#: peigen.c:1043 pepigen.c:1043 pex64igen.c:1043 +msgid "CLR Runtime Header" +msgstr "En-tête exécutable CLR" + +#: peigen.c:1044 pepigen.c:1044 pex64igen.c:1044 msgid "Reserved" -msgstr "Réservé" +msgstr "Réservé" -#: peigen.c:1094 pepigen.c:1094 +#: peigen.c:1104 pepigen.c:1104 pex64igen.c:1104 +#, c-format 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" +"Il y a une table d'importation, mais la section la contenant ne peut être repérée\n" -#: peigen.c:1099 pepigen.c:1099 +#: peigen.c:1109 pepigen.c:1109 pex64igen.c:1109 #, 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" +"Il y a une table d'importation dans %s à 0x%lx\n" -#: peigen.c:1136 pepigen.c:1136 +#: peigen.c:1151 pepigen.c:1151 pex64igen.c:1151 #, 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" +"Descripteur de fonction localisé à l'adresse de départ: %04lx\n" -#: peigen.c:1139 pepigen.c:1139 +#: peigen.c:1154 pepigen.c:1154 pex64igen.c:1154 #, 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" +msgstr "\tcode-base %08lx tab. des entrées (chargeable/actuel) %08lx/%08lx\n" -#: peigen.c:1145 pepigen.c:1145 +#: peigen.c:1162 pepigen.c:1162 pex64igen.c:1162 +#, c-format 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" +"Pas de section reldata! Descripteur de fonction pas décodé.\n" -#: peigen.c:1150 pepigen.c:1150 +#: peigen.c:1167 pepigen.c:1167 pex64igen.c:1167 #, 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" +"Les tables d'importation (contenus interprété de la section %s)\n" -#: peigen.c:1153 pepigen.c:1153 +#: peigen.c:1170 pepigen.c:1170 pex64igen.c:1170 +#, c-format msgid "" " vma: Hint Time Forward DLL First\n" " Table Stamp Chain Name Thunk\n" msgstr "" " vma: Hint Temps Avant DLL Premier\n" -" Table Estampil. Chaîne Nom Thunk\n" +" Table Estampil. Chaîne Nom Thunk\n" -#: peigen.c:1204 pepigen.c:1204 +#: peigen.c:1218 pepigen.c:1218 pex64igen.c:1218 #, c-format msgid "" "\n" @@ -2806,36 +5713,48 @@ "\n" "\tNom DLL: %s\n" -#: peigen.c:1215 pepigen.c:1215 +#: peigen.c:1229 pepigen.c:1229 pex64igen.c:1229 +#, c-format msgid "\tvma: Hint/Ord Member-Name Bound-To\n" msgstr "\tvma: Hint/Ord Membre Lien\n" -#: peigen.c:1240 pepigen.c:1240 +#: peigen.c:1254 pepigen.c:1254 pex64igen.c:1254 +#, c-format msgid "" "\n" "There is a first thunk, but the section containing it could not be found\n" msgstr "" "\n" -"Il y a un premier « thunk », mais la section le contenant ne peut être repérée\n" +"Il y a un premier «thunk», mais la section le contenant ne peut être repérée\n" -#: peigen.c:1380 pepigen.c:1380 +#: peigen.c:1415 pepigen.c:1415 pex64igen.c:1415 +#, c-format 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" +"Il y a une table d'exportation, mais la section la contenant n'a pu être repérée\n" + +#: peigen.c:1424 pepigen.c:1424 pex64igen.c:1424 +#, c-format +msgid "" +"\n" +"There is an export table in %s, but it does not fit into that section\n" +msgstr "" +"\n" +"Il y a une table d'exportation dans %s, mais elle ne rentre pas dans la section\n" -#: peigen.c:1385 pepigen.c:1385 +#: peigen.c:1430 pepigen.c:1430 pex64igen.c:1430 #, 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" +"Il y a une table d'exportation dans %s à 0x%lx\n" -#: peigen.c:1416 pepigen.c:1416 +#: peigen.c:1458 pepigen.c:1458 pex64igen.c:1458 #, c-format msgid "" "\n" @@ -2843,64 +5762,70 @@ "\n" msgstr "" "\n" -"Les tables d'exportation (contenus interprétés de la section %s)\n" +"Les tables d'exportation (contenus interprété de la section %s)\n" "\n" -#: peigen.c:1420 pepigen.c:1420 +#: peigen.c:1462 pepigen.c:1462 pex64igen.c:1462 #, c-format msgid "Export Flags \t\t\t%lx\n" msgstr "Fanion d'exportation \t\t\t%lx\n" -#: peigen.c:1423 pepigen.c:1423 +#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 #, c-format msgid "Time/Date stamp \t\t%lx\n" msgstr "Tampon Heure/Date \t\t%lx\n" -#: peigen.c:1426 pepigen.c:1426 +#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 #, c-format msgid "Major/Minor \t\t\t%d/%d\n" msgstr "Majeur/Mineur \t\t\t%d/%d\n" -#: peigen.c:1429 pepigen.c:1429 +#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 +#, c-format msgid "Name \t\t\t\t" msgstr "Nom \t\t\t\t" -#: peigen.c:1435 pepigen.c:1435 +#: peigen.c:1477 pepigen.c:1477 pex64igen.c:1477 #, c-format msgid "Ordinal Base \t\t\t%ld\n" msgstr "base de nombre ordinal \t\t\t%ld\n" -#: peigen.c:1438 pepigen.c:1438 +#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 +#, c-format msgid "Number in:\n" -msgstr "Numéro dans:\n" +msgstr "Numéro dans:\n" -#: peigen.c:1441 pepigen.c:1441 +#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 #, c-format msgid "\tExport Address Table \t\t%08lx\n" msgstr "\tTable d'adresses d'exportation \t\t%08lx\n" -#: peigen.c:1445 pepigen.c:1445 +#: peigen.c:1487 pepigen.c:1487 pex64igen.c:1487 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" -msgstr "\tTable de noms [Pointeur/Nombre ordinal]\t%08lx\n" +msgstr "\tTable [Nom pointeur/Nombre ordinal]\t%08lx\n" -#: peigen.c:1448 pepigen.c:1448 +#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 +#, c-format msgid "Table Addresses\n" msgstr "Table d'adresses\n" -#: peigen.c:1451 pepigen.c:1451 +#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 +#, c-format msgid "\tExport Address Table \t\t" msgstr "\tTable d'adresse d'exportation \t\t" -#: peigen.c:1456 pepigen.c:1456 +#: peigen.c:1498 pepigen.c:1498 pex64igen.c:1498 +#, c-format msgid "\tName Pointer Table \t\t" msgstr "\tTable des noms de pointeurs \t\t" -#: peigen.c:1461 pepigen.c:1461 +#: peigen.c:1503 pepigen.c:1503 pex64igen.c:1503 +#, c-format msgid "\tOrdinal Table \t\t\t" msgstr "\tTable des ordinals \t\t\t" -#: peigen.c:1476 pepigen.c:1476 +#: peigen.c:1517 pepigen.c:1517 pex64igen.c:1517 #, c-format msgid "" "\n" @@ -2909,60 +5834,69 @@ "\n" "Table d'adresses d'exportation -- base de nombre ordinal %ld\n" -#: peigen.c:1495 pepigen.c:1495 +#: peigen.c:1536 pepigen.c:1536 pex64igen.c:1536 msgid "Forwarder RVA" msgstr "Adresseur RVA" -#: peigen.c:1506 pepigen.c:1506 +#: peigen.c:1547 pepigen.c:1547 pex64igen.c:1547 msgid "Export RVA" msgstr "Exportation RVA" -#: peigen.c:1513 pepigen.c:1513 +#: peigen.c:1554 pepigen.c:1554 pex64igen.c:1554 +#, c-format msgid "" "\n" "[Ordinal/Name Pointer] Table\n" msgstr "" "\n" -"Table [Ordinal/Nom de pointeurs]\n" +"Table [Ordinal/Nom de pointeur]\n" -#: peigen.c:1568 pepigen.c:1568 +#: peigen.c:1614 peigen.c:1797 pepigen.c:1614 pepigen.c:1797 pex64igen.c:1614 +#: pex64igen.c:1797 #, 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 pepigen.c:1572 -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" +msgstr "Attention, taille de la section .pdata (%ld) n'est pas un multiple de %d\n" -#: peigen.c:1575 pepigen.c:1575 +#: peigen.c:1621 pepigen.c:1621 pex64igen.c:1621 +#, c-format msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" -msgstr " vma:\t\t\tDébut Adresse Fin Adresse Unwind Info\n" +msgstr " vma:\t\t\tDébut Adresse Fin Adresse Unwind Info\n" -#: peigen.c:1577 pepigen.c:1577 +#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 +#, c-format 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" -" \t\tAdresse Adresse Handler Données Adresse Masque\n" +" vma:\t\tDébut Fin EH EH FinProlog Exception\n" +" \t\tAdresse Adresse Handler Données Adresse Masque\n" -#: peigen.c:1647 pepigen.c:1647 +#: peigen.c:1697 pepigen.c:1697 pex64igen.c:1697 +#, c-format msgid " Register save millicode" -msgstr " Registre a préservé le millicode" +msgstr " Registre a préservé le millicode" -#: peigen.c:1650 pepigen.c:1650 +#: peigen.c:1700 pepigen.c:1700 pex64igen.c:1700 +#, c-format msgid " Register restore millicode" -msgstr " Registre a restauré le millicode" +msgstr " Registre a restauré le millicode" -#: peigen.c:1653 pepigen.c:1653 +#: peigen.c:1703 pepigen.c:1703 pex64igen.c:1703 +#, c-format msgid " Glue code sequence" -msgstr " Séquence du code de liants" +msgstr " Séquence du code de liants" + +#: peigen.c:1803 pepigen.c:1803 pex64igen.c:1803 +#, c-format +msgid "" +" vma:\t\tBegin Prolog Function Flags Exception EH\n" +" \t\tAddress Length Length 32b exc Handler Data\n" +msgstr "" +" vma:\t\tDébut Long. Long. Fanions Gestion. EH\n" +" \t\tAdresse Prolog. Fonction 32b exc Exception Données\n" -#: peigen.c:1705 pepigen.c:1705 +#: peigen.c:1929 pepigen.c:1929 pex64igen.c:1929 +#, c-format msgid "" "\n" "\n" @@ -2970,9 +5904,9 @@ msgstr "" "\n" "\n" -"Fichier de base des relocalisation PE (contenus interprétés de la section .reloc)\n" +"Fichier de base des relocalisation PE (contenus interprété de la section .reloc)\n" -#: peigen.c:1735 pepigen.c:1735 +#: peigen.c:1958 pepigen.c:1958 pex64igen.c:1958 #, c-format msgid "" "\n" @@ -2981,217 +5915,121 @@ "\n" "Adresse virtuelle: %08lx taille des morceaux %ld (0x%lx) nombre de correctifs %ld\n" -#: peigen.c:1748 pepigen.c:1748 +#: peigen.c:1971 pepigen.c:1971 pex64igen.c:1971 #, c-format msgid "\treloc %4d offset %4x [%4lx] %s" -msgstr "\trelocalisation %4d décalage %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:1788 pepigen.c:1788 +#: peigen.c:2010 pepigen.c:2010 pex64igen.c:2010 #, c-format msgid "" "\n" "Characteristics 0x%x\n" msgstr "" "\n" -"Caractéristiques 0x%x\n" - -#~ msgid "%s: Unknown special linker type %d" -#~ msgstr "%s: type d'édition spécial de lien inconnu %d" - -#~ msgid "v850ea architecture" -#~ msgstr "architecture v850ea" - -#~ 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" - -#~ msgid "Error: out of memory" -#~ msgstr "Erreur: mémoire épuisée" - -#~ msgid "warning: relocation against removed section; zeroing" -#~ msgstr "AVERTISSEMENT: relocalisation vers une section qui a été enlevée; mise à zéro" - -#~ msgid "warning: relocation against removed section" -#~ msgstr "AVERTISSEMENT: relocalisation vers une section enlevée" - -#~ msgid "local symbols in discarded section %s" -#~ msgstr "symboles locaux de la section mise à l'écart %s" - -#~ msgid "%s: linking abicalls files with non-abicalls files" -#~ msgstr "%s: édition de liens des fichier abicalls avec des fichiers non abicalls" - -#~ 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)" - -#~ msgid "%s: ISA mismatch (%d) with previous modules (%d)" -#~ msgstr "%s: ISA ne concorde pas (%d) avec les modules précédents (%d)" - -#~ msgid "%s: dynamic relocation against speculation fixup" -#~ msgstr "%s: relocalisation dynamique vers un correctif spéculé" - -#~ msgid "%s: speculation fixup against undefined weak symbol" -#~ msgstr "%s: correctif spéculé vers un symbole faible indéfini" - -#~ msgid "\tThe Import Address Table (difference found)\n" -#~ msgstr "\tL'adresse de la table d'importation (différence détectée)\n" - -#~ msgid "\t>>> Ran out of IAT members!\n" -#~ msgstr "\t>>> membres IAT tous utilisés!\n" - -#~ msgid "\tThe Import Address Table is identical\n" -#~ msgstr "\tL'adresse de la table d'importation est identique\n" - -#~ msgid "GP relative relocation when GP not defined" -#~ msgstr "GP relocalisation relative alors que GP n'est pas défini" - -#~ 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 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 "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 " [APCS-26]" -#~ msgstr " [APCS-26]" - -#~ msgid " [APCS-32]" -#~ msgstr " [APCS-32]" - -#~ 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é" +"Caractéristiques 0x%x\n" -#~ msgid "ETIR_S_C_STO_HINT_PS: not implemented" -#~ msgstr "ETIR_S_C_STO_HINT_PS: pas implanté" +#: peigen.c:2310 pepigen.c:2310 pex64igen.c:2310 +msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing" +msgstr "%B: impossible de remplir DataDictionary[1] car .idata$2 est manquant" -#~ msgid "ETIR_S_C_OPR_INSV: Not supported" -#~ msgstr "ETIR_S_C_OPR_INSV: non supporté" +#: peigen.c:2330 pepigen.c:2330 pex64igen.c:2330 +msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing" +msgstr "%B: impossible de remplir DataDictionary[1] car .idata$4 est manquant" -#~ msgid "ETIR_S_C_OPR_USH: Not supported" -#~ msgstr "ETIR_S_C_OPR_USH: non supporté" +#: peigen.c:2351 pepigen.c:2351 pex64igen.c:2351 +msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing" +msgstr "%B: impossible de remplir DataDictionary[12] car .idata$5 est manquant" -#~ msgid "ETIR_S_C_OPR_ROT: Not supported" -#~ msgstr "ETIR_S_C_OPR_ROT: non supporté" +#: peigen.c:2371 pepigen.c:2371 pex64igen.c:2371 +msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing" +msgstr "%B: impossible de remplir DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] car .idata$6 est manquant" -#~ msgid "ETIR_S_C_OPR_REDEF: Not supported" -#~ msgstr "ETIR_S_C_OPR_REDEF: non supporté" +#: peigen.c:2413 pepigen.c:2413 pex64igen.c:2413 +msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing" +msgstr "%B: impossible de remplir DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] car .idata$6 est manquant" -#~ msgid "ETIR_S_C_OPR_DFLIT: Not supported" -#~ msgstr "ETIR_S_C_OPR_DFLIT: non supporté" +#: peigen.c:2436 pepigen.c:2436 pex64igen.c:2436 +msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing" +msgstr "%B: impossible de remplir DataDictionary[9] car __tls_used est manquant" -#~ msgid "ETIR_S_C_STC_LP: not supported" -#~ msgstr "ETIR_S_C_STC_LP: non supporté" +#~ msgid "Can't Make it a Short Jump" +#~ msgstr "Impossible d'en faire un Saut Court" -#~ msgid "ETIR_S_C_STC_GBL: not supported" -#~ msgstr "ETIR_S_C_STC_GBL: non supporté" +#~ msgid "Exceeds Long Jump Range" +#~ msgstr "Portée dépassée pour le Saut Long" -#~ msgid "ETIR_S_C_STC_GCA: not supported" -#~ msgstr "ETIR_S_C_STC_GCA: non supporté" +#~ msgid "Absolute address Exceeds 16 bit Range" +#~ msgstr "L'adresse absolue déborde sur 16 bits" -#~ msgid "ETIR_S_C_STC_PS: not supported" -#~ msgstr "ETIR_S_C_STC_PS: non supporté" +#~ msgid "Absolute address Exceeds 8 bit Range" +#~ msgstr "L'adresse absolue déborde sur 8 bits" -#~ msgid "Unimplemented STO cmd %d" -#~ msgstr "Commande STO non implantée %d" +#~ msgid "Unrecognized Reloc Type" +#~ msgstr "Type de relocalisation non reconnu" -#~ msgid "TIR_S_C_OPR_ASH incomplete" -#~ msgstr "TIR_S_C_OPR_ASH incomplète" +#~ msgid "corrupt or empty %s section in %B" +#~ msgstr "section %s vide ou corrompue dans %B" -#~ msgid "TIR_S_C_OPR_USH incomplete" -#~ msgstr "TIR_S_C_OPR_USH incomplète" +#~ msgid "%s: invalid DSO for symbol `%s' definition" +#~ msgstr "%s: DSO incorrect pour la définition du symbole «%s»" -#~ msgid "TIR_S_C_OPR_ROT incomplete" -#~ msgstr "TIR_S_C_OPR_ROT incomplète" +#~ msgid "%B: %A+0x%lx: jump to stub routine which is not jal" +#~ msgstr "%B: %A+0x%lx: saut vers la routine dans la partie de l'ébauche (stub) qui n'est pas jal" -#~ msgid "TIR_S_C_OPR_REDEF not supported" -#~ msgstr "TIR_S_C_OPR_REDEF non supporté" +#~ msgid "bfd_make_section (%s) failed" +#~ msgstr "Échec de bfd_make_section (%s)" -#~ msgid "TIR_S_C_OPR_DFLIT not supported" -#~ msgstr "TIR_S_C_OPR_DFLIT non supporté" +#~ msgid "bfd_set_section_flags (%s, %x) failed" +#~ msgstr "bfd_set_section_flags (%s, %x) a échoué" -#~ msgid "TIR_S_C_CTL_DFLOC not fully implemented" -#~ msgstr "TIR_S_C_CTL_DFLOC pas complètement implanté" +#~ msgid "Size mismatch section %s=%lx, %s=%lx" +#~ msgstr "Taille de section ne concorde pas %s=%lx, %s=%lx" -#~ msgid "TIR_S_C_CTL_STLOC not fully implemented" -#~ msgstr "TIR_S_C_CTL_STLOC pas complètement implanté" +#~ msgid "failed to enter %s" +#~ msgstr "échec d'insertion de %s" -#~ msgid "TIR_S_C_CTL_STKDL not fully implemented" -#~ msgstr "TIR_S_C_CTL_STKDL n'est pas complètement implanté" +#~ msgid "No Mem !" +#~ msgstr "Mémoire épuisée!" -#~ msgid " vma: Hint Time Forward DLL First\n" -#~ msgstr " vma: Hint Heure Forward DLL Premier\n" +#~ msgid "reserved STO cmd %d" +#~ msgstr "commande STO %d réservée" -#~ msgid " \t\tAddress Address Handler Data Address Mask\n" -#~ msgstr " \t\tAdresse Adresse Routine Données Adresse Masque\n" +#~ msgid "reserved OPR cmd %d" +#~ msgstr "commande OPR %d réservée" -#~ msgid "integer" -#~ msgstr "entier" +#~ msgid "reserved CTL cmd %d" +#~ msgstr "commande CTL %d réservée" -#~ msgid "soft" -#~ msgstr "logiciel" +#~ msgid "reserved STC cmd %d" +#~ msgstr "commande STC %d réservée" -#~ msgid "hard" -#~ msgstr "matériel" +#~ msgid "stack-from-image not implemented" +#~ msgstr "pile depuis l'image non implémentée" -#~ msgid "Warning: %s %s interworking, whereas %s %s" -#~ msgstr "Warning: %s %s inter-réseautage, alors que %s %s" +#~ msgid "stack-entry-mask not fully implemented" +#~ msgstr "masque de pile d'entrée pas complètement implémenté" -#~ msgid "supports" -#~ msgstr "supporte" +#~ msgid "PASSMECH not fully implemented" +#~ msgstr "PASSMECH pas complètement implémenté" -#~ msgid "does not" -#~ msgstr "n'est pas" +#~ msgid "stack-local-symbol not fully implemented" +#~ msgstr "symbole local de pile pas complètement implémenté" -#~ msgid "does" -#~ msgstr "est" +#~ msgid "stack-literal not fully implemented" +#~ msgstr "litéral de pile pas complètement implémenté" -#~ 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 "stack-local-symbol-entry-point-mask not fully implemented" +#~ msgstr "masque du symbole local de point d'entrée de pile pas complètement implémenté" -#~ 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 "%s: not fully implemented" +#~ msgstr "%s: pas complètement implémenté" -#~ 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 "obj code %d not found" +#~ msgstr "code objet %d non repéré" -#~ msgid " whereas segment starts at 0x%x" -#~ msgstr " alors que le segment débute à 0x%x" +#~ msgid "Reloc size error in section %s" +#~ msgstr "Erreur de taille de relocalisation dans la section %s" Binary files /tmp/wqm3boRCeK/crash-5.1.6/=unpacked-tar1=/bfd/po/id.gmo and /tmp/OqnMAz5teu/crash-6.1.6/=unpacked-tar1=/bfd/po/id.gmo differ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/id.po crash-6.1.6/=unpacked-tar1=/bfd/po/id.po --- crash-5.1.6/=unpacked-tar1=/bfd/po/id.po 2009-05-26 16:49:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/id.po 2009-11-11 09:36:05.000000000 +0000 @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: bfd 2.19.1\n" +"Project-Id-Version: bfd 2.20\n" "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" -"POT-Creation-Date: 2008-09-09 15:56+0930\n" -"PO-Revision-Date: 2009-05-26 08:00+0700\n" +"POT-Creation-Date: 2009-09-07 14:05+0200\n" +"PO-Revision-Date: 2009-11-11 08:00+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" "MIME-Version: 1.0\n" @@ -32,151 +32,151 @@ msgid "%B: Bad relocation record imported: %d" msgstr "%B: Catatan relokasi buruk terimpor: %d" -#: aoutx.h:1268 aoutx.h:1604 +#: aoutx.h:1271 aoutx.h:1609 #, c-format msgid "%s: can not represent section `%s' in a.out object file format" msgstr "%s: tidak dapat merepresentasikan bagian `%s' dalam a.out objek format berkas" -#: aoutx.h:1570 +#: aoutx.h:1575 #, c-format msgid "%s: can not represent section for symbol `%s' in a.out object file format" msgstr "%s: tidak dapat merepresentasikan bagian untuk simbol `%s' dalam format berkas a.out objek" -#: aoutx.h:1572 +#: aoutx.h:1577 msgid "*unknown*" msgstr "*tidak diketahui*" -#: aoutx.h:3989 aoutx.h:4315 +#: aoutx.h:3994 aoutx.h:4320 msgid "%P: %B: unexpected relocation type\n" msgstr "%P: %B: tipe relokasi tidak diduga\n" -#: aoutx.h:5349 +#: aoutx.h:5354 #, c-format msgid "%s: relocatable link from %s to %s not supported" msgstr "%s: link relokasi dari %s ke %s tidak didukung" -#: archive.c:2046 +#: archive.c:2056 msgid "Warning: writing archive was slow: rewriting timestamp\n" msgstr "Peringatan: penulisan archive lambat: menulis ulang timestamp\n" -#: archive.c:2309 +#: archive.c:2342 msgid "Reading archive file mod timestamp" msgstr "Membaca berkas mod timestamp archive" -#: archive.c:2333 +#: archive.c:2366 msgid "Writing updated armap timestamp" msgstr "Menulis armap timestamp terupdate" -#: bfd.c:368 +#: bfd.c:375 msgid "No error" msgstr "Tidak error" -#: bfd.c:369 +#: bfd.c:376 msgid "System call error" msgstr "Pemanggilan sistem error" -#: bfd.c:370 +#: bfd.c:377 msgid "Invalid bfd target" msgstr "Target bfd tidak valid" -#: bfd.c:371 +#: bfd.c:378 msgid "File in wrong format" msgstr "Berkas dalam format salah" -#: bfd.c:372 +#: bfd.c:379 msgid "Archive object file in wrong format" msgstr "Archive berkas objek dalam format salah" -#: bfd.c:373 +#: bfd.c:380 msgid "Invalid operation" msgstr "Operasi tidak valid" -#: bfd.c:374 +#: bfd.c:381 msgid "Memory exhausted" msgstr "Kehabisan memori" -#: bfd.c:375 +#: bfd.c:382 msgid "No symbols" msgstr "Bukan simbol" -#: bfd.c:376 +#: bfd.c:383 msgid "Archive has no index; run ranlib to add one" msgstr "Archive tidak memiliki indek; jalankan ranlib untuk menambahkan satu" -#: bfd.c:377 +#: bfd.c:384 msgid "No more archived files" msgstr "Tidak lagi berkas yang ter-archive" -#: bfd.c:378 +#: bfd.c:385 msgid "Malformed archive" msgstr "Archive tidak terformat" -#: bfd.c:379 +#: bfd.c:386 msgid "File format not recognized" msgstr "Berkas format tidak dikenal" -#: bfd.c:380 +#: bfd.c:387 msgid "File format is ambiguous" msgstr "Berkas format ambigu" -#: bfd.c:381 +#: bfd.c:388 msgid "Section has no contents" msgstr "Bagian tidak memiliki isi" -#: bfd.c:382 +#: bfd.c:389 msgid "Nonrepresentable section on output" msgstr "Bagian tidak dapat direpresentasikan di keluaran" -#: bfd.c:383 +#: bfd.c:390 msgid "Symbol needs debug section which does not exist" msgstr "Simbol membutuhkan bagian debug yang mana bagian tersebut tidak ada" -#: bfd.c:384 +#: bfd.c:391 msgid "Bad value" msgstr "Nilai buruk" -#: bfd.c:385 +#: bfd.c:392 msgid "File truncated" msgstr "Berkas terpotong" -#: bfd.c:386 +#: bfd.c:393 msgid "File too big" msgstr "Berkas terlalu besar" -#: bfd.c:387 +#: bfd.c:394 #, c-format msgid "Error reading %s: %s" msgstr "Error membaca %s: %s" -#: bfd.c:388 +#: bfd.c:395 msgid "#" msgstr "#" -#: bfd.c:912 +#: bfd.c:919 #, c-format msgid "BFD %s assertion fail %s:%d" msgstr "BFD %s assertion gagal %s:%d" -#: bfd.c:924 +#: bfd.c:931 #, c-format msgid "BFD %s internal error, aborting at %s line %d in %s\n" msgstr "BFD %s error internal, menggagalkan di %s baris %d dalam %s\n" -#: bfd.c:928 +#: bfd.c:935 #, c-format msgid "BFD %s internal error, aborting at %s line %d\n" msgstr "BFD %s error internal, menggagalkan di %s baris %d\n" -#: bfd.c:930 +#: bfd.c:937 msgid "Please report this bug.\n" msgstr "Tolong laporkan bug ini.\n" -#: bfdwin.c:208 +#: bfdwin.c:206 #, c-format msgid "not mapping: data=%lx mapped=%d\n" msgstr "tidak termap: data=%lx mapped=%d\n" -#: bfdwin.c:211 +#: bfdwin.c:209 #, c-format msgid "not mapping: env var not set\n" msgstr "tidak termap; env var tidak terset\n" @@ -186,7 +186,13 @@ msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." msgstr "Peringatan: Menulis bagian `%s' terlalu besar (ie negatif) berkas ofset 0x%lx." -#: cache.c:222 +#: bout.c:1150 elf-m10300.c:2078 elf32-avr.c:1639 elf32-frv.c:5743 +#: elf32-xtensa.c:6639 elfxx-sparc.c:2456 reloc.c:5386 reloc16.c:162 +#: vms.c:1918 elf32-ia64.c:788 elf64-ia64.c:788 +msgid "%P%F: --relax and -r may not be used together\n" +msgstr "%P%F: --relax dan -r tidak boleh digunakan secara bersamaan\n" + +#: cache.c:226 msgid "reopening %B: %s\n" msgstr "membuka kembali %B: %s\n" @@ -218,8 +224,8 @@ msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW" msgstr "%B: relokasi tidak didukung: ALPHA_R_GPRELLOW" -#: coff-alpha.c:1574 elf32-m32r.c:2487 elf64-alpha.c:3970 elf64-alpha.c:4125 -#: elf32-ia64.c:4465 elf64-ia64.c:4465 +#: coff-alpha.c:1574 elf32-m32r.c:2477 elf64-alpha.c:3943 elf64-alpha.c:4098 +#: elf32-ia64.c:4462 elf64-ia64.c:4462 msgid "%B: unknown relocation type %d" msgstr "%B: tipe relokasi %d tidak diketahui" @@ -233,7 +239,7 @@ msgid "%B: unable to find ARM glue '%s' for `%s'" msgstr "%B: tidak dapat menemukan lem ARM '%s' untuk `%s'" -#: coff-arm.c:1370 elf32-arm.c:5453 +#: coff-arm.c:1370 elf32-arm.c:6372 #, c-format msgid "" "%B(%s): warning: interworking not enabled.\n" @@ -253,7 +259,7 @@ " pertemuan pertama: %B: panggilan thumb ke arm\n" " pertimbangkan relinking dengan --support-old-code aktif" -#: coff-arm.c:1755 coff-tic80.c:695 cofflink.c:3018 +#: coff-arm.c:1755 coff-tic80.c:695 cofflink.c:3027 msgid "%B: bad reloc address 0x%lx in section `%A'" msgstr "%B: alamat relokasi buruk 0x%lx dalam bagian `%A'" @@ -263,35 +269,35 @@ #: coff-arm.c:2211 #, c-format -msgid "ERROR: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" -msgstr "ERROR: %B dikompile untuk APCS-%d, dimana %B dikompile untuk APCS-%d" +msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" +msgstr "error: %B dikompile untuk APCS-%d, dimana %B dikompile untuk APCS-%d" -#: coff-arm.c:2227 elf32-arm.c:8563 +#: coff-arm.c:2227 elf32-arm.c:10327 #, c-format -msgid "ERROR: %B passes floats in float registers, whereas %B passes them in integer registers" -msgstr "ERROR: %B melewati float dalam register float, dimana %B melewatinya register integer" +msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers" +msgstr "error: %B melewati float dalam register float, dimana %B melewatinya register integer" -#: coff-arm.c:2230 elf32-arm.c:8567 +#: coff-arm.c:2230 elf32-arm.c:10331 #, c-format -msgid "ERROR: %B passes floats in integer registers, whereas %B passes them in float registers" -msgstr "ERROR: %B melewati float dalam register integer, dimana %B melewatinya float register" +msgid "error: %B passes floats in integer registers, whereas %B passes them in float registers" +msgstr "error: %B melewati float dalam register integer, dimana %B melewatinya float register" #: coff-arm.c:2244 #, c-format -msgid "ERROR: %B is compiled as position independent code, whereas target %B is absolute position" -msgstr "ERROR: %B dikompile sebagai kode bebas posisi, dimana target %B yang memiliki posisi absolute" +msgid "error: %B is compiled as position independent code, whereas target %B is absolute position" +msgstr "error: %B dikompile sebagai kode bebas posisi, dimana target %B yang memiliki posisi absolute" #: coff-arm.c:2247 #, c-format -msgid "ERROR: %B is compiled as absolute position code, whereas target %B is position independent" -msgstr "ERROR: %B dikompile sebagai kode absolute posisi, dimana target %B adalah bebas posisi" +msgid "error: %B is compiled as absolute position code, whereas target %B is position independent" +msgstr "error: %B dikompile sebagai kode absolute posisi, dimana target %B adalah bebas posisi" -#: coff-arm.c:2275 elf32-arm.c:8632 +#: coff-arm.c:2275 elf32-arm.c:10396 #, c-format msgid "Warning: %B supports interworking, whereas %B does not" msgstr "Peringatan: %B mendukung antar-kerja, dimana %B tidak" -#: coff-arm.c:2278 elf32-arm.c:8638 +#: coff-arm.c:2278 elf32-arm.c:10402 #, c-format msgid "Warning: %B does not support interworking, whereas %B does" msgstr "Peringatan: %B tidak mendukung antar-kerja, dimana %B ya" @@ -301,7 +307,7 @@ msgid "private flags = %x:" msgstr "tanda private = %x:" -#: coff-arm.c:2310 elf32-arm.c:8689 +#: coff-arm.c:2310 elf32-arm.c:10453 #, c-format msgid " [floats passed in float registers]" msgstr " [floats melewati dalam register float]" @@ -311,7 +317,7 @@ msgid " [floats passed in integer registers]" msgstr " [float melewati register integer]" -#: coff-arm.c:2315 elf32-arm.c:8692 +#: coff-arm.c:2315 elf32-arm.c:10456 #, c-format msgid " [position independent]" msgstr " [bebas posisi]" @@ -336,12 +342,12 @@ msgid " [interworking not supported]" msgstr " [antar-kerja tidak didukung]" -#: coff-arm.c:2371 elf32-arm.c:8050 +#: coff-arm.c:2371 elf32-arm.c:9360 #, c-format msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking" msgstr "Peringatan: Tidak menset tanda antar-kerja dari %B karena itu telah terspesifikasi sebagai bukan-antar-kerja" -#: coff-arm.c:2375 elf32-arm.c:8054 +#: coff-arm.c:2375 elf32-arm.c:9364 #, c-format msgid "Warning: Clearing the interworking flag of %B due to outside request" msgstr "Peringatan: Menghapus tanda antar-kerja dari %B karena diluar permintaan" @@ -356,7 +362,7 @@ msgid "Relocation `%s' not yet implemented\n" msgstr "Relokasi `%s' belum terimplementasi\n" -#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:4975 +#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5143 msgid "%B: warning: illegal symbol index %ld in relocs" msgstr "%B: peringatan: indek simbol ilegal %ld dalam relokasi" @@ -364,7 +370,7 @@ msgid "uncertain calling convention for non-COFF symbol" msgstr "tidak tentu pemanggilan konvensi untuk non-COFF simbol" -#: coff-m68k.c:506 elf32-bfin.c:5510 elf32-m68k.c:3938 +#: coff-m68k.c:506 elf32-bfin.c:5693 elf32-cr16.c:2965 elf32-m68k.c:4615 msgid "unsupported reloc type" msgstr "tipe relokasi tidak didukung" @@ -388,8 +394,8 @@ msgid "Unrecognized Reloc Type" msgstr "Tipe relokasi tidak dikenal" -#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:345 elf64-mips.c:1991 -#: elfn32-mips.c:1832 +#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:441 elf32-score7.c:341 +#: elf64-mips.c:2018 elfn32-mips.c:1832 msgid "GP relative relocation when _gp not defined" msgstr "GP relokasi relatif ketika _gp tidak terdefinisi" @@ -397,17 +403,17 @@ msgid "Unrecognized reloc" msgstr "Relokasi tidak dikenal" -#: coff-rs6000.c:2803 +#: coff-rs6000.c:2787 #, c-format msgid "%s: unsupported relocation type 0x%02x" msgstr "%s: tipe relokasi tidak didukung 0x%02x" -#: coff-rs6000.c:2896 +#: coff-rs6000.c:2880 #, c-format msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" msgstr "%s: TOC relokasi di 0x%x untuk simbol `%s' dengan tidak ada masukan TOC" -#: coff-rs6000.c:3628 coff64-rs6000.c:2130 +#: coff-rs6000.c:3646 coff64-rs6000.c:2168 msgid "%B: symbol `%s' has unrecognized smclas %d" msgstr "%B: simbol `%s' memiliki smclas tidak dikenal %d" @@ -426,139 +432,143 @@ msgid "ignoring reloc %s\n" msgstr "mengabaikan relokasi %s\n" -#: coffcode.h:850 +#: coffcode.h:960 msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'" msgstr "%B: peringatan: COMDAT simbol '%s' tidak cocok dengan nama bagian '%s'" #. Generate a warning message rather using the 'unhandled' #. variable as this will allow some .sys files generate by #. other toolchains to be processed. See bugzilla issue 196. -#: coffcode.h:1062 +#: coffcode.h:1176 msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s" msgstr "%B: Peringatan: Mengabaikan tanda bagian IMAGE_SCN_MEM_NOT_PAGED dalam bagian %s" -#: coffcode.h:1117 +#: coffcode.h:1240 msgid "%B (%s): Section flag %s (0x%x) ignored" msgstr "%B (%s): Tanda bagian %s (0x%x) diabaikan" -#: coffcode.h:2244 +#: coffcode.h:2382 #, c-format msgid "Unrecognized TI COFF target id '0x%x'" msgstr "Target id '0x%x' TI COFF tidak dikenal" -#: coffcode.h:2559 +#: coffcode.h:2696 msgid "%B: reloc against a non-existant symbol index: %ld" msgstr "%B: relokasi terhadap simbol indek yang tidak ada: %ld" -#: coffcode.h:4309 +#: coffcode.h:3669 +msgid "%B: section %s: string table overflow at offset %ld" +msgstr "%B: bagian %s: tabel string overflow di offset %ld" + +#: coffcode.h:4477 msgid "%B: warning: line number table read failed" msgstr "%B: peringatan: pembacaan tabel nomor baris gagal" -#: coffcode.h:4339 +#: coffcode.h:4507 msgid "%B: warning: illegal symbol index %ld in line numbers" msgstr "%B: peringatan: simbol index %ld ilegal dalam nomor baris" -#: coffcode.h:4353 +#: coffcode.h:4521 msgid "%B: warning: duplicate line number information for `%s'" msgstr "%B: peringatan: duplikasi informasi nomor baris untuk `%s'" -#: coffcode.h:4744 +#: coffcode.h:4912 msgid "%B: Unrecognized storage class %d for %s symbol `%s'" msgstr "%B: kelas %d penyimpanan tidak dikenal untuk %s simbol `%s'" -#: coffcode.h:4870 +#: coffcode.h:5038 msgid "warning: %B: local symbol `%s' has no section" msgstr "peringatan: %B: simbol lokal `%s' tidak memiliki bagian" -#: coffcode.h:5013 +#: coffcode.h:5181 msgid "%B: illegal relocation type %d at address 0x%lx" msgstr "%B: tipe relokasi %d ilegal di alamat 0x%lx" -#: coffgen.c:1518 +#: coffgen.c:1571 msgid "%B: bad string table size %lu" msgstr "%B: string buruk ukuran tabel %lu" -#: cofflink.c:513 elflink.c:4218 +#: cofflink.c:513 elflink.c:4307 msgid "Warning: type of symbol `%s' changed from %d to %d in %B" msgstr "Peringatan: tipe dari simbole `%s' berubah dari %d ke %d dalam %B" -#: cofflink.c:2296 +#: cofflink.c:2305 msgid "%B: relocs in section `%A', but it has no contents" msgstr "%B: relokasi dalam bagian `%A', tetapi ini tidak memiliki isi" -#: cofflink.c:2627 coffswap.h:824 +#: cofflink.c:2636 coffswap.h:826 #, c-format msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" msgstr "%s: %s: relokasi overflow: 0x%lx > 0xffff" -#: cofflink.c:2636 coffswap.h:810 +#: cofflink.c:2645 coffswap.h:812 #, c-format msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" msgstr "%s: peringatan: %s: nomor baris overflow: 0x%lx > 0xffff" #: cpu-arm.c:189 cpu-arm.c:200 -msgid "ERROR: %B is compiled for the EP9312, whereas %B is compiled for XScale" -msgstr "ERROR: %B dikompile untuk EP9312, dimana %B dikompile untuk XScale" +msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale" +msgstr "error: %B dikompile untuk EP9312, dimana %B dikompile untuk XScale" #: cpu-arm.c:332 #, c-format msgid "warning: unable to update contents of %s section in %s" msgstr "peringatan: tidak dapat mengupdate isi dari %s bagian dalam %s" -#: dwarf2.c:424 +#: dwarf2.c:430 #, c-format msgid "Dwarf Error: Can't find %s section." msgstr "Dwarf Error: Tidak dapat menemukan bagian %s." -#: dwarf2.c:452 +#: dwarf2.c:457 #, c-format msgid "Dwarf Error: unable to decompress %s section." msgstr "Dwarf Error: tidak dapat mengekstrak bagian %s." -#: dwarf2.c:462 +#: dwarf2.c:468 #, c-format msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)." msgstr "Dwarf Error: Ofset (%lu) lebih besar atau sama dengan %s ukuran (%lu)." -#: dwarf2.c:849 +#: dwarf2.c:865 #, c-format msgid "Dwarf Error: Invalid or unhandled FORM value: %u." msgstr "Dwarf Error: Tidak valid atau nilai FORM tidak tertangani: %u." -#: dwarf2.c:1063 +#: dwarf2.c:1079 msgid "Dwarf Error: mangled line number section (bad file number)." msgstr "Dwarf Error: mangled bagian nomor baris (nomor berkas buruk)." -#: dwarf2.c:1393 +#: dwarf2.c:1413 msgid "Dwarf Error: mangled line number section." msgstr "Dwarf Error: mangled bagian nomor baris." -#: dwarf2.c:1726 dwarf2.c:1842 dwarf2.c:2114 +#: dwarf2.c:1760 dwarf2.c:1867 dwarf2.c:2139 #, c-format msgid "Dwarf Error: Could not find abbrev number %u." msgstr "Dwarf Error: Tidak dapat menemukan nomor singkat %u." -#: dwarf2.c:2075 +#: dwarf2.c:2100 #, c-format -msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information." -msgstr "Dwarf Error: menemukan versi dwarf '%u', pembaca ini hanya menangani informasi versi 2." +msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 and 3 information." +msgstr "Dwarf Error: menemukan versi dwarf '%u', pembaca ini hanya menangani informasi versi 2 dan 3." -#: dwarf2.c:2082 +#: dwarf2.c:2107 #, c-format msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'." msgstr "Dwarf Error: menemukan ukuran alamat '%u', pembaca ini tidak dapat menangani ukuran lebih besar dari '%u'." -#: dwarf2.c:2105 +#: dwarf2.c:2130 #, c-format msgid "Dwarf Error: Bad abbrev number: %u." msgstr "Dwarf Error: Nomor singkat buruk: %u." -#: ecoff.c:1227 +#: ecoff.c:1238 #, c-format msgid "Unknown basic type %d" msgstr "Tipe dasar %d tidak diketahui" -#: ecoff.c:1484 +#: ecoff.c:1495 #, c-format msgid "" "\n" @@ -567,7 +577,7 @@ "\n" " Simbol End+1: %ld" -#: ecoff.c:1491 ecoff.c:1494 +#: ecoff.c:1502 ecoff.c:1505 #, c-format msgid "" "\n" @@ -576,7 +586,7 @@ "\n" " Simbol pertama: %ld" -#: ecoff.c:1506 +#: ecoff.c:1517 #, c-format msgid "" "\n" @@ -585,7 +595,7 @@ "\n" " Simbol End+1: %-7ld Tipe: %s" -#: ecoff.c:1513 +#: ecoff.c:1524 #, c-format msgid "" "\n" @@ -594,7 +604,7 @@ "\n" " Simbol lokal: %ld" -#: ecoff.c:1521 +#: ecoff.c:1532 #, c-format msgid "" "\n" @@ -603,7 +613,7 @@ "\n" " struct; simbol End+1: %ld" -#: ecoff.c:1526 +#: ecoff.c:1537 #, c-format msgid "" "\n" @@ -612,7 +622,7 @@ "\n" " union: End+1 simbol: %ld" -#: ecoff.c:1531 +#: ecoff.c:1542 #, c-format msgid "" "\n" @@ -621,7 +631,7 @@ "\n" " enum; End+1 simbol: %ld" -#: ecoff.c:1537 +#: ecoff.c:1548 #, c-format msgid "" "\n" @@ -630,119 +640,124 @@ "\n" " Tipe: %s" -#: elf-attrs.c:582 -msgid "ERROR: %B: Must be processed by '%s' toolchain" -msgstr "ERROR: %B: Harus diproses dengan '%s' toolchain" - -#: elf-attrs.c:602 elf-attrs.c:621 -msgid "ERROR: %B: Incompatible object tag '%s':%d" -msgstr "ERROR: %B: Tanda objek tidak kompatibel '%s':%d" +#: elf-attrs.c:567 +msgid "error: %B: Must be processed by '%s' toolchain" +msgstr "error: %B: Harus diproses dengan '%s' toolchain" + +#: elf-attrs.c:575 +msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'" +msgstr "error: %B: Objek tag '%d, %s' tidak kompatibel dengan tag '%d, %s'" -#: elf-eh-frame.c:866 +#: elf-eh-frame.c:884 msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n" msgstr "%P: error dalam %B(%A); tidak ada .eh_frame_hdr tabel yang akan dibuat.\n" -#: elf-eh-frame.c:1102 +#: elf-eh-frame.c:1122 msgid "%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n" msgstr "%P: fde enkoding dalam %B(%A) menjaga .eh_frame_hdr tabel untuk dibuat.\n" -#: elf-hppa.h:2241 elf-m10300.c:1546 elf32-arm.c:7954 elf32-i386.c:3582 -#: elf32-m32r.c:2598 elf32-m68k.c:3516 elf32-ppc.c:7223 elf32-s390.c:3058 -#: elf32-sh.c:3438 elf32-xtensa.c:3021 elf64-ppc.c:11528 elf64-s390.c:3019 -#: elf64-sh64.c:1648 elf64-x86-64.c:3239 elfxx-sparc.c:3336 -msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" -msgstr "%B(%A+0x%lx): tidak teresolf %s relokasi terhadap simbol `%s'" - -#: elf-hppa.h:2266 elf-hppa.h:2280 -msgid "%B(%A): warning: unresolvable relocation against symbol `%s'" -msgstr "%B(%A): peringatan: tidak teresolf relokasi terhadap simbol `%s'" +#: elf-ifunc.c:179 +msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%B' can not be used when making an executable; recompile with -fPIE and relink with -pie\n" +msgstr "%F%P: dynamic STT_GNU_IFUNC simbol '%s' dengan penunjuk persamaan dalam `%B' tidak dapat digunakan ketika membuat sebuah pelaksana; rekompilasi dengan -fPIE dan hubungkan kembali dengan -pie\n" -#: elf-m10200.c:456 elf-m10300.c:1609 elf32-avr.c:1250 elf32-bfin.c:3214 -#: elf32-cr16.c:959 elf32-cr16c.c:790 elf32-cris.c:1538 elf32-crx.c:933 +#: elf-m10200.c:456 elf-m10300.c:1575 elf32-avr.c:1251 elf32-bfin.c:3200 +#: elf32-cr16.c:1517 elf32-cr16c.c:790 elf32-cris.c:2089 elf32-crx.c:933 #: elf32-d10v.c:516 elf32-fr30.c:616 elf32-frv.c:4114 elf32-h8300.c:516 -#: elf32-i860.c:1218 elf32-ip2k.c:1499 elf32-iq2000.c:691 elf32-m32c.c:560 -#: elf32-m32r.c:3124 elf32-m68hc1x.c:1135 elf32-mep.c:541 elf32-msp430.c:493 -#: elf32-mt.c:402 elf32-openrisc.c:411 elf32-score.c:2451 elf32-spu.c:4132 -#: elf32-v850.c:1703 elf32-xstormy16.c:948 elf64-mmix.c:1533 +#: elf32-i860.c:1218 elf32-ip2k.c:1499 elf32-iq2000.c:691 elf32-lm32.c:1171 +#: elf32-m32c.c:560 elf32-m32r.c:3102 elf32-m68hc1x.c:1136 elf32-mep.c:541 +#: elf32-microblaze.c:1226 elf32-moxie.c:291 elf32-msp430.c:493 elf32-mt.c:402 +#: elf32-openrisc.c:411 elf32-score.c:2752 elf32-score7.c:2591 +#: elf32-spu.c:5045 elf32-v850.c:1701 elf32-xstormy16.c:948 elf64-mmix.c:1533 msgid "internal error: out of range error" msgstr "internal error: diluar jangkauan error" -#: elf-m10200.c:460 elf-m10300.c:1613 elf32-avr.c:1254 elf32-bfin.c:3218 -#: elf32-cr16.c:963 elf32-cr16c.c:794 elf32-cris.c:1542 elf32-crx.c:937 +#: elf-m10200.c:460 elf-m10300.c:1579 elf32-avr.c:1255 elf32-bfin.c:3204 +#: elf32-cr16.c:1521 elf32-cr16c.c:794 elf32-cris.c:2093 elf32-crx.c:937 #: elf32-d10v.c:520 elf32-fr30.c:620 elf32-frv.c:4118 elf32-h8300.c:520 -#: elf32-i860.c:1222 elf32-iq2000.c:695 elf32-m32c.c:564 elf32-m32r.c:3128 -#: elf32-m68hc1x.c:1139 elf32-mep.c:545 elf32-msp430.c:497 -#: elf32-openrisc.c:415 elf32-score.c:2455 elf32-spu.c:4136 elf32-v850.c:1707 -#: elf32-xstormy16.c:952 elf64-mmix.c:1537 elfxx-mips.c:9065 +#: elf32-i860.c:1222 elf32-iq2000.c:695 elf32-lm32.c:1175 elf32-m32c.c:564 +#: elf32-m32r.c:3106 elf32-m68hc1x.c:1140 elf32-mep.c:545 +#: elf32-microblaze.c:1230 elf32-moxie.c:295 elf32-msp430.c:497 +#: elf32-openrisc.c:415 elf32-score.c:2756 elf32-score7.c:2595 +#: elf32-spu.c:5049 elf32-v850.c:1705 elf32-xstormy16.c:952 elf64-mmix.c:1537 +#: elfxx-mips.c:9103 msgid "internal error: unsupported relocation error" msgstr "internal error: relokasi tidak didukung error" -#: elf-m10200.c:464 elf32-cr16.c:967 elf32-cr16c.c:798 elf32-crx.c:941 -#: elf32-d10v.c:524 elf32-h8300.c:524 elf32-m32r.c:3132 elf32-m68hc1x.c:1143 -#: elf32-score.c:2459 elf32-spu.c:4140 +#: elf-m10200.c:464 elf32-cr16.c:1525 elf32-cr16c.c:798 elf32-crx.c:941 +#: elf32-d10v.c:524 elf32-h8300.c:524 elf32-lm32.c:1179 elf32-m32r.c:3110 +#: elf32-m68hc1x.c:1144 elf32-microblaze.c:1234 elf32-score.c:2760 +#: elf32-score7.c:2599 elf32-spu.c:5053 msgid "internal error: dangerous error" msgstr "internal error error berbahaya" -#: elf-m10200.c:468 elf-m10300.c:1626 elf32-avr.c:1262 elf32-bfin.c:3226 -#: elf32-cr16.c:971 elf32-cr16c.c:802 elf32-cris.c:1550 elf32-crx.c:945 +#: elf-m10200.c:468 elf-m10300.c:1592 elf32-avr.c:1263 elf32-bfin.c:3212 +#: elf32-cr16.c:1529 elf32-cr16c.c:802 elf32-cris.c:2101 elf32-crx.c:945 #: elf32-d10v.c:528 elf32-fr30.c:628 elf32-frv.c:4126 elf32-h8300.c:528 -#: elf32-i860.c:1230 elf32-ip2k.c:1514 elf32-iq2000.c:703 elf32-m32c.c:572 -#: elf32-m32r.c:3136 elf32-m68hc1x.c:1147 elf32-mep.c:553 elf32-msp430.c:505 -#: elf32-mt.c:410 elf32-openrisc.c:423 elf32-score.c:2463 elf32-spu.c:4144 -#: elf32-v850.c:1727 elf32-xstormy16.c:960 elf64-mmix.c:1545 +#: elf32-i860.c:1230 elf32-ip2k.c:1514 elf32-iq2000.c:703 elf32-lm32.c:1183 +#: elf32-m32c.c:572 elf32-m32r.c:3114 elf32-m68hc1x.c:1148 elf32-mep.c:553 +#: elf32-microblaze.c:1238 elf32-moxie.c:303 elf32-msp430.c:505 elf32-mt.c:410 +#: elf32-openrisc.c:423 elf32-score.c:2769 elf32-score7.c:2603 +#: elf32-spu.c:5057 elf32-v850.c:1725 elf32-xstormy16.c:960 elf64-mmix.c:1545 msgid "internal error: unknown error" msgstr "internal error: error tidak diketahui" -#: elf-m10300.c:1618 +#: elf-m10300.c:1512 elf32-arm.c:8963 elf32-i386.c:3984 elf32-m32r.c:2588 +#: elf32-m68k.c:4099 elf32-ppc.c:7906 elf32-s390.c:3015 elf32-sh.c:3429 +#: elf32-xtensa.c:3027 elf64-ppc.c:12063 elf64-s390.c:2974 elf64-sh64.c:1648 +#: elf64-x86-64.c:3657 elfxx-sparc.c:3317 +msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%B(%A+0x%lx): tidak teresolf %s relokasi terhadap simbol `%s'" + +#: elf-m10300.c:1584 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)" msgstr "error: tipe relokasi tidak sesuai untuk shared library (apakah anda lupa -fpic?)" -#: elf-m10300.c:1621 +#: elf-m10300.c:1587 msgid "internal error: suspicious relocation type used in shared library" msgstr "internal erro: suspicious tipe relokasi digunakan dalam shared library" -#: elf-m10300.c:4397 elf32-arm.c:9578 elf32-cris.c:2403 elf32-hppa.c:1921 -#: elf32-i370.c:506 elf32-i386.c:1807 elf32-m32r.c:1931 elf32-m68k.c:2787 -#: elf32-ppc.c:4693 elf32-s390.c:1687 elf32-sh.c:2583 elf32-vax.c:1055 -#: elf64-ppc.c:6075 elf64-s390.c:1662 elf64-sh64.c:3432 elf64-x86-64.c:1641 -#: elfxx-sparc.c:1828 +#: elf-m10300.c:4385 elf32-arm.c:11346 elf32-cr16.c:2519 elf32-cris.c:3030 +#: elf32-hppa.c:1891 elf32-i370.c:506 elf32-i386.c:1975 elf32-lm32.c:1873 +#: elf32-m32r.c:1921 elf32-m68k.c:3188 elf32-ppc.c:4953 elf32-s390.c:1650 +#: elf32-sh.c:2574 elf32-vax.c:1052 elf64-ppc.c:6348 elf64-s390.c:1623 +#: elf64-sh64.c:3396 elf64-x86-64.c:1821 elfxx-sparc.c:1802 #, c-format msgid "dynamic variable `%s' is zero size" msgstr "variabel dinamik `%s' memiliki ukuran nol" -#: elf.c:328 +#: elf.c:329 msgid "%B: invalid string offset %u >= %lu for section `%s'" msgstr "%B: string ofset tidak valid %u >= %lu untuk bagian `%s'" -#: elf.c:438 +#: elf.c:439 msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" msgstr "%B nomor simbol %lu referensi tidak ada SHT_SYMTAB_SHNDX bagian" -#: elf.c:594 +#: elf.c:595 msgid "%B: Corrupt size field in group section header: 0x%lx" msgstr "%B: Ukuran bagian korup dalam grup bagian kepala: 0x%lx" -#: elf.c:630 +#: elf.c:631 msgid "%B: invalid SHT_GROUP entry" msgstr "%B: masukan SHT_GROUP tidak valid" -#: elf.c:700 +#: elf.c:701 msgid "%B: no group info for section %A" msgstr "%B: tidak ada informasi grup untuk bagian %A" -#: elf.c:729 elf.c:2976 elflink.c:9746 +#: elf.c:730 elf.c:2960 elflink.c:9912 msgid "%B: warning: sh_link not set for section `%A'" msgstr "%B: peringatan: sh_link tidak diset untuk bagian `%A'" -#: elf.c:748 +#: elf.c:749 msgid "%B: sh_link [%d] in section `%A' is incorrect" msgstr "%B: sh_link [%ld] dalam bagian `%A' tidak benar" -#: elf.c:783 +#: elf.c:784 msgid "%B: unknown [%d] section `%s' in group [%s]" msgstr "%B: tidak diketahui [%d] bagian `%s' dalam grup [%s]" -#: elf.c:1159 +#: elf.c:1104 #, c-format msgid "" "\n" @@ -751,7 +766,7 @@ "\n" "Kepala Aplikasi:\n" -#: elf.c:1201 +#: elf.c:1146 #, c-format msgid "" "\n" @@ -760,7 +775,7 @@ "\n" "Bagian Dinamis:\n" -#: elf.c:1337 +#: elf.c:1282 #, c-format msgid "" "\n" @@ -769,7 +784,7 @@ "\n" "Definisi Versi:\n" -#: elf.c:1362 +#: elf.c:1307 #, c-format msgid "" "\n" @@ -778,82 +793,82 @@ "\n" "Referensi Versi:\n" -#: elf.c:1367 +#: elf.c:1312 #, c-format msgid " required from %s:\n" msgstr " dibutuhkan dari %s:\n" -#: elf.c:1755 +#: elf.c:1702 msgid "%B: invalid link %lu for reloc section %s (index %u)" msgstr "%B: link tidak valid %lu untuk bagian relokasi %s (indek %u)" -#: elf.c:1924 +#: elf.c:1870 msgid "%B: don't know how to handle allocated, application specific section `%s' [0x%8x]" msgstr "%B: tidak tahu bagaimana menangani alokasi, bagian spesifik aplikasi `%s' [0x%8x]" -#: elf.c:1936 +#: elf.c:1882 msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]" msgstr "%B: tidak tahu bagaimana menangani bagian spesifik prosesor `%s' [0x%8x]" -#: elf.c:1947 +#: elf.c:1893 msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]" msgstr "%B: tidak tahu bagaimana menangani bagian spesifik OS `%s' [0x%8x]" -#: elf.c:1957 +#: elf.c:1903 msgid "%B: don't know how to handle section `%s' [0x%8x]" msgstr "%B: tidak tahu bagaimana menangani bagian `%s' [0x%8x]" -#: elf.c:2555 +#: elf.c:2500 #, c-format msgid "warning: section `%A' type changed to PROGBITS" msgstr "peringatan: bagian `%A' tipe berubah ke PROGBITS" -#: elf.c:2933 +#: elf.c:2917 msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'" msgstr "%B: sh_link dari bagian `%A' menunjuk ke bagian terbuang `%A' dari `%B'" -#: elf.c:2956 +#: elf.c:2940 msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'" msgstr "%B: sh_link dari bagian `%A' menunjuk ke bagian terhapus `%A' dari `%B'" -#: elf.c:4300 +#: elf.c:4311 msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section" msgstr "%B: bagian pertama dalam segmen PT_DYNAMIC tidak dalam bagian .dynamic" -#: elf.c:4327 +#: elf.c:4338 msgid "%B: Not enough room for program headers, try linking with -N" msgstr "%B: tidak cukup ruang untuk kepala aplikasi, coba linking dengan -N" -#: elf.c:4404 +#: elf.c:4420 msgid "%B: section %A vma 0x%lx overlaps previous sections" msgstr "%B: bagian %A vma 0x%lx overlaps bagian sebelumnya" -#: elf.c:4499 +#: elf.c:4515 msgid "%B: section `%A' can't be allocated in segment %d" msgstr "%B: bagian `%A' tidak dapat dialokasikan dalam segmen %d" -#: elf.c:4549 +#: elf.c:4565 msgid "%B: warning: allocated section `%s' not in segment" msgstr "%B: peringatan: alokasi bagian `%s' tidak dalam segmen" -#: elf.c:5064 +#: elf.c:5065 msgid "%B: symbol `%s' required but not present" msgstr "%B: simbol `%s' dibutuhkan tetapi tidak ada" -#: elf.c:5403 +#: elf.c:5404 msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n" msgstr "%B: peringatan: loadable segmen kosong terdeteksi, apakah ini sengaja ?\n" -#: elf.c:6366 +#: elf.c:6370 #, c-format msgid "Unable to find equivalent output section for symbol '%s' from section '%s'" msgstr "Tidak dapat menemukan bagian keluaran ekuivalen untuk simbol '%s' dari bagian '%s'" -#: elf.c:7346 +#: elf.c:7356 msgid "%B: unsupported relocation type %s" msgstr "%B: tipe relokasi tidak didukung %s" -#: elf32-arm.c:2846 elf32-arm.c:2878 +#: elf32-arm.c:3149 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: Thumb call to ARM" @@ -861,40 +876,48 @@ "%B(%s): peringatan: antar-kerja tidak aktif.\n" " pertemuan pertama: %B: Thumb call ke ARM" -#: elf32-arm.c:3041 +#: elf32-arm.c:3190 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: ARM call to Thumb" +msgstr "" +"%B(%s): peringatan: antar-kerja tidak diaktifkan.\n" +" pertemuan pertama: %B: ARM panggil ke Thumb" + +#: elf32-arm.c:3387 elf32-arm.c:4692 #, c-format msgid "%s: cannot create stub entry %s" msgstr "%s: tidak dapat membuat masukan stub %s" -#: elf32-arm.c:3825 +#: elf32-arm.c:4804 #, c-format msgid "unable to find THUMB glue '%s' for '%s'" msgstr "tidak dapat menemukan THUMB lem '%s' untuk '%s'" -#: elf32-arm.c:3859 +#: elf32-arm.c:4838 #, c-format msgid "unable to find ARM glue '%s' for '%s'" msgstr "tidak dapat menemukan ARM lem '%s' untuk '%s'" -#: elf32-arm.c:4463 +#: elf32-arm.c:5365 msgid "%B: BE8 images only valid in big-endian mode." msgstr "%B: hanya images BE8 valid dalam mode big-endian." #. Give a warning, but do as the user requests anyway. -#: elf32-arm.c:4678 +#: elf32-arm.c:5590 msgid "%B: warning: selected VFP11 erratum workaround is not necessary for target architecture" msgstr "%B: peringatan: memilih VFP11 erratum penyelesaian adalah tidak diperlukan untuk arsitektur target" -#: elf32-arm.c:5212 elf32-arm.c:5232 +#: elf32-arm.c:6130 elf32-arm.c:6150 msgid "%B: unable to find VFP11 veneer `%s'" msgstr "%B: tidak dapat menemukan VFP11 veneer `%s'" -#: elf32-arm.c:5278 +#: elf32-arm.c:6196 #, c-format msgid "Invalid TARGET2 relocation type '%s'." msgstr "Tipe relokasi '%s' TARGET2 tidak valid." -#: elf32-arm.c:5362 +#: elf32-arm.c:6281 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: thumb call to arm" @@ -902,363 +925,409 @@ "%B(%s): peringatan: antar-kerja tidak aktif.\n" " pertemuan pertama: %B: thumb call ke arm" -#: elf32-arm.c:6094 +#: elf32-arm.c:7003 msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'." msgstr "\\%B: Peringatan: Arm BLK instruksi target Arm fungsi '%s'." -#: elf32-arm.c:6418 +#: elf32-arm.c:7405 msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'." msgstr "%B: Peringatan: Thumb BLX instruksi target thumb fungsi '%s'." -#: elf32-arm.c:7095 +#: elf32-arm.c:8085 msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object" msgstr "%B(%A+0x%lx): R_ARM_TLS_LE32 relokasi tidak diperbolehkan dalam objek terbagi" -#: elf32-arm.c:7310 +#: elf32-arm.c:8300 msgid "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group relocations" msgstr "%B(%A+0x%lx): Hanya ADD atau SUB instruksi yang diperbolehkan untuk grup ALU relokasi" -#: elf32-arm.c:7350 elf32-arm.c:7437 elf32-arm.c:7520 elf32-arm.c:7605 +#: elf32-arm.c:8340 elf32-arm.c:8427 elf32-arm.c:8510 elf32-arm.c:8595 msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s" msgstr "%B(%A+0x%lx): Overflow ketika membagi 0x%lx untuk relokasi grup %s" -#: elf32-arm.c:7812 elf32-sh.c:3334 elf64-sh64.c:1556 +#: elf32-arm.c:8821 elf32-sh.c:3325 elf64-sh64.c:1556 msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section" msgstr "%B(%A+0x%lx): %s relokasi terhadap bagian SEC_MERGE" -#: elf32-arm.c:7930 elf32-xtensa.c:2759 elf64-ppc.c:10374 +#: elf32-arm.c:8939 elf32-m68k.c:4134 elf32-xtensa.c:2765 elf64-ppc.c:10743 msgid "%B(%A+0x%lx): %s used with TLS symbol %s" msgstr "%B(%A+0x%lx): %s digunakan dengan simbol TLS %s" -#: elf32-arm.c:7931 elf32-xtensa.c:2760 elf64-ppc.c:10375 +#: elf32-arm.c:8940 elf32-m68k.c:4135 elf32-xtensa.c:2766 elf64-ppc.c:10744 msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s" msgstr "%B(%A+0x%lx): %s digunakan dengan simbol bukan-TLS %s" -#: elf32-arm.c:7988 +#: elf32-arm.c:8997 msgid "out of range" msgstr "diluar jangkauan" -#: elf32-arm.c:7992 +#: elf32-arm.c:9001 msgid "unsupported relocation" msgstr "relokasi tidak didukung" -#: elf32-arm.c:8000 +#: elf32-arm.c:9009 msgid "unknown error" msgstr "error tidak diketahui" -#: elf32-arm.c:8099 +#: elf32-arm.c:9409 msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it" msgstr "Peringatan: Menghapus tanda antar-kerja dari %B karena bukan kode antar-kerja dalam %B telah dihubungkan dengan itu" -#: elf32-arm.c:8205 -msgid "ERROR: %B uses VFP register arguments, %B does not" -msgstr "ERROR: %B menggunakan reguster argumen VFP, %B tidak" - -#: elf32-arm.c:8254 -msgid "ERROR: %B: Conflicting architecture profiles %c/%c" -msgstr "ERROR: %B: Profil arsitektur konflik %c/%c" +#: elf32-arm.c:9652 +msgid "error: %B: Unknown CPU architecture" +msgstr "error: %B: Arsitektur CPU tidak diketahui" + +#: elf32-arm.c:9690 +msgid "error: %B: Conflicting CPU architectures %d/%d" +msgstr "error: %B: Profil arsitektur konflik %c/%c" + +#: elf32-arm.c:9747 +msgid "error: %B uses VFP register arguments, %B does not" +msgstr "error: %B menggunakan reguster argumen VFP, %B tidak" + +#: elf32-arm.c:9897 +msgid "error: %B: Conflicting architecture profiles %c/%c" +msgstr "error: %B: Profil arsitektur konflik %c/%c" -#: elf32-arm.c:8274 +#: elf32-arm.c:9921 msgid "Warning: %B: Conflicting platform configuration" msgstr "Peringatan: %B: Konflik konfigurasi platform" -#: elf32-arm.c:8283 -msgid "ERROR: %B: Conflicting use of R9" -msgstr "ERROR: %B: Konflik penggunaan R9" - -#: elf32-arm.c:8295 -msgid "ERROR: %B: SB relative addressing conflicts with use of R9" -msgstr "ERROR: %B: SB pengalamatan relatif konflik dengan penggunaan dari R9" +#: elf32-arm.c:9930 +msgid "error: %B: Conflicting use of R9" +msgstr "error: %B: Konflik penggunaan R9" + +#: elf32-arm.c:9942 +msgid "error: %B: SB relative addressing conflicts with use of R9" +msgstr "error: %B: SB pengalamatan relatif konflik dengan penggunaan dari R9" -#: elf32-arm.c:8318 +#: elf32-arm.c:9955 msgid "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail" msgstr "peringatan: %B menggunakan %u-byte wchar_t tapi keluaran menggunakan %u-byte wchar_t; menggunakan nilai wchar_t melewati objek mungkin gagal" -#: elf32-arm.c:8347 +#: elf32-arm.c:9986 msgid "warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail" msgstr "peringatan: %B menggunakan %s enums tapi keluaran menggunakan %s enums; menggunakan nilai dari enum dari objek mungkin gagal" -#: elf32-arm.c:8360 -msgid "ERROR: %B uses iWMMXt register arguments, %B does not" -msgstr "ERROR: %B menggunakan iWMMXt argumen register, %B tidak" +#: elf32-arm.c:9998 +msgid "error: %B uses iWMMXt register arguments, %B does not" +msgstr "error: %B menggunakan iWMMXt argumen register, %B tidak" + +#: elf32-arm.c:10020 +msgid "error: fp16 format mismatch between %B and %B" +msgstr "error: fp16 format tidak cocok diantara %B dan %B" + +#: elf32-arm.c:10063 elf32-arm.c:10156 +msgid "%B: Unknown mandatory EABI object attribute %d" +msgstr "%B: atribut objek wajib EABI tidak diketahui %d" -#: elf32-arm.c:8400 +#: elf32-arm.c:10071 elf32-arm.c:10164 msgid "Warning: %B: Unknown EABI object attribute %d" msgstr "Peringatan: %B: atribut objek EABI tidak diketahui %d" -#: elf32-arm.c:8460 -msgid "ERROR: %B is already in final BE8 format" -msgstr "ERROR: %B telah dalam format akhir BE8" - -#: elf32-arm.c:8536 -msgid "ERROR: Source object %B has EABI version %d, but target %B has EABI version %d" -msgstr "ERROR: Sumber objek %B memiliki versi EABI %d, tetapi target %B memiliki versi EABI %d" - -#: elf32-arm.c:8552 -msgid "ERROR: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" -msgstr "ERROR: %B dikompile untuk APCS-%d, dimana target %B menggunakan APCS-%d" - -#: elf32-arm.c:8577 -msgid "ERROR: %B uses VFP instructions, whereas %B does not" -msgstr "ERROR: %B menggunakan VFP instruksi, dimana %B tidak" - -#: elf32-arm.c:8581 -msgid "ERROR: %B uses FPA instructions, whereas %B does not" -msgstr "ERROR: %B menggunakan FPA instruksi, dimana %B tidak" - -#: elf32-arm.c:8591 -msgid "ERROR: %B uses Maverick instructions, whereas %B does not" -msgstr "ERROR: %B menggunakan Maverick instruksi, dimana %B tidak" - -#: elf32-arm.c:8595 -msgid "ERROR: %B does not use Maverick instructions, whereas %B does" -msgstr "ERROR: %B tidak menggunakan Maveric instruksi, dimana %B menggunakan" - -#: elf32-arm.c:8614 -msgid "ERROR: %B uses software FP, whereas %B uses hardware FP" -msgstr "ERROR: %B menggunakan software FP, dimana %B menggunakan hardware FP" - -#: elf32-arm.c:8618 -msgid "ERROR: %B uses hardware FP, whereas %B uses software FP" -msgstr "ERROR: %B menggunakan hardware FP, dimana %B menggunakan software FP" +#: elf32-arm.c:10224 +msgid "error: %B is already in final BE8 format" +msgstr "error: %B telah dalam format akhir BE8" + +#: elf32-arm.c:10300 +msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d" +msgstr "error: Sumber objek %B memiliki versi EABI %d, tetapi target %B memiliki versi EABI %d" + +#: elf32-arm.c:10316 +msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" +msgstr "error: %B dikompile untuk APCS-%d, dimana target %B menggunakan APCS-%d" + +#: elf32-arm.c:10341 +msgid "error: %B uses VFP instructions, whereas %B does not" +msgstr "error: %B menggunakan VFP instruksi, dimana %B tidak" + +#: elf32-arm.c:10345 +msgid "error: %B uses FPA instructions, whereas %B does not" +msgstr "error: %B menggunakan FPA instruksi, dimana %B tidak" + +#: elf32-arm.c:10355 +msgid "error: %B uses Maverick instructions, whereas %B does not" +msgstr "error: %B menggunakan Maverick instruksi, dimana %B tidak" + +#: elf32-arm.c:10359 +msgid "error: %B does not use Maverick instructions, whereas %B does" +msgstr "error: %B tidak menggunakan Maveric instruksi, dimana %B menggunakan" + +#: elf32-arm.c:10378 +msgid "error: %B uses software FP, whereas %B uses hardware FP" +msgstr "error: %B menggunakan software FP, dimana %B menggunakan hardware FP" + +#: elf32-arm.c:10382 +msgid "error: %B uses hardware FP, whereas %B uses software FP" +msgstr "error: %B menggunakan hardware FP, dimana %B menggunakan software FP" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. #. Ignore init flag - it may not be set, despite the flags field containing valid data. -#: elf32-arm.c:8665 elf32-bfin.c:4899 elf32-cris.c:3235 elf32-m68hc1x.c:1279 -#: elf32-m68k.c:774 elf32-score.c:3750 elf32-vax.c:538 elfxx-mips.c:12699 +#: elf32-arm.c:10429 elf32-bfin.c:5082 elf32-cris.c:4110 elf32-m68hc1x.c:1280 +#: elf32-m68k.c:1169 elf32-score.c:4039 elf32-score7.c:3876 elf32-vax.c:540 +#: elfxx-mips.c:12755 #, c-format msgid "private flags = %lx:" msgstr "tanda private = %lx:" -#: elf32-arm.c:8674 +#: elf32-arm.c:10438 #, c-format msgid " [interworking enabled]" msgstr " [antar-kerja aktif]" -#: elf32-arm.c:8682 +#: elf32-arm.c:10446 #, c-format msgid " [VFP float format]" msgstr " [VFP float format]" -#: elf32-arm.c:8684 +#: elf32-arm.c:10448 #, c-format msgid " [Maverick float format]" msgstr " [Maverick float format]" -#: elf32-arm.c:8686 +#: elf32-arm.c:10450 #, c-format msgid " [FPA float format]" msgstr " [FPA float format]" -#: elf32-arm.c:8695 +#: elf32-arm.c:10459 #, c-format msgid " [new ABI]" msgstr " [ABI baru]" -#: elf32-arm.c:8698 +#: elf32-arm.c:10462 #, c-format msgid " [old ABI]" msgstr " [ABI lama]" -#: elf32-arm.c:8701 +#: elf32-arm.c:10465 #, c-format msgid " [software FP]" msgstr " [software FP]" -#: elf32-arm.c:8710 +#: elf32-arm.c:10474 #, c-format msgid " [Version1 EABI]" msgstr " [EABI Versi 1]" -#: elf32-arm.c:8713 elf32-arm.c:8724 +#: elf32-arm.c:10477 elf32-arm.c:10488 #, c-format msgid " [sorted symbol table]" msgstr " [simbol tabel terurut]" -#: elf32-arm.c:8715 elf32-arm.c:8726 +#: elf32-arm.c:10479 elf32-arm.c:10490 #, c-format msgid " [unsorted symbol table]" msgstr " [simbol tabel tidak terurut]" -#: elf32-arm.c:8721 +#: elf32-arm.c:10485 #, c-format msgid " [Version2 EABI]" msgstr " [EABI Versi 2]" -#: elf32-arm.c:8729 +#: elf32-arm.c:10493 #, c-format msgid " [dynamic symbols use segment index]" msgstr " [simbol dinamis menggunakan segmen indek]" -#: elf32-arm.c:8732 +#: elf32-arm.c:10496 #, c-format msgid " [mapping symbols precede others]" msgstr " [simbol map mendahului yang lain]" -#: elf32-arm.c:8739 +#: elf32-arm.c:10503 #, c-format msgid " [Version3 EABI]" msgstr " [EABI Versi 3]" -#: elf32-arm.c:8743 +#: elf32-arm.c:10507 #, c-format msgid " [Version4 EABI]" msgstr " [EABI Versi 4]" -#: elf32-arm.c:8747 +#: elf32-arm.c:10511 #, c-format msgid " [Version5 EABI]" msgstr " [EABI Versi 5]" -#: elf32-arm.c:8750 +#: elf32-arm.c:10514 #, c-format msgid " [BE8]" msgstr " [BE8]" -#: elf32-arm.c:8753 +#: elf32-arm.c:10517 #, c-format msgid " [LE8]" msgstr " [LE8]" -#: elf32-arm.c:8759 +#: elf32-arm.c:10523 #, c-format msgid " " msgstr " " -#: elf32-arm.c:8766 +#: elf32-arm.c:10530 #, c-format msgid " [relocatable executable]" msgstr " [relocatable executable]" -#: elf32-arm.c:8769 +#: elf32-arm.c:10533 #, c-format msgid " [has entry point]" msgstr " [memiliki titik masuk]" -#: elf32-arm.c:8774 +#: elf32-arm.c:10538 #, c-format msgid "" msgstr "" -#: elf32-arm.c:9013 elf32-i386.c:1236 elf32-s390.c:1006 elf32-xtensa.c:999 -#: elf64-s390.c:961 elf64-x86-64.c:1016 elfxx-sparc.c:1127 +#: elf32-arm.c:10783 elf32-i386.c:1300 elf32-s390.c:998 elf32-xtensa.c:1000 +#: elf64-s390.c:952 elf64-x86-64.c:1082 elfxx-sparc.c:1121 msgid "%B: bad symbol index: %d" msgstr "%B: memiliki indek simbol: %d" -#: elf32-arm.c:10125 +#: elf32-arm.c:10904 elf64-x86-64.c:1242 elf64-x86-64.c:1411 elfxx-mips.c:7870 +msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" +msgstr "%B: relokasi %s terhadap `%s' tidak dapat digunkan ketika membuat sebuah objek terbagi; rekompile dengan -fPIC" + +#: elf32-arm.c:11893 #, c-format msgid "Errors encountered processing file %s" msgstr "Errors ditemui dalam pemrosesan berkas %s" -#: elf32-arm.c:11526 elf32-arm.c:11548 +#: elf32-arm.c:13339 +msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location" +msgstr "%B: error: Cortex-A8 erratum stub dialokasikan dalam lokasi yang tidak aman" + +#. There's not much we can do apart from complain if this +#. happens. +#: elf32-arm.c:13366 +msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)" +msgstr "%B: error: Cortex-A8 erratum stub diluar dari jangkauan (berkas masukan terlalu besar)" + +#: elf32-arm.c:13457 elf32-arm.c:13479 msgid "%B: error: VFP11 veneer out of range" msgstr "%B: error: VFP11 veneer diluar jangkauan" -#: elf32-avr.c:1258 elf32-bfin.c:3222 elf32-cris.c:1546 elf32-fr30.c:624 +#: elf32-avr.c:1259 elf32-bfin.c:3208 elf32-cris.c:2097 elf32-fr30.c:624 #: elf32-frv.c:4122 elf32-i860.c:1226 elf32-ip2k.c:1510 elf32-iq2000.c:699 -#: elf32-m32c.c:568 elf32-mep.c:549 elf32-msp430.c:501 elf32-mt.c:406 -#: elf32-openrisc.c:419 elf32-v850.c:1711 elf32-xstormy16.c:956 +#: elf32-m32c.c:568 elf32-mep.c:549 elf32-moxie.c:299 elf32-msp430.c:501 +#: elf32-mt.c:406 elf32-openrisc.c:419 elf32-v850.c:1709 elf32-xstormy16.c:956 #: elf64-mmix.c:1541 msgid "internal error: dangerous relocation" msgstr "internal error: relokasi berbahaya" -#: elf32-avr.c:2396 elf32-hppa.c:605 elf32-m68hc1x.c:164 elf64-ppc.c:3983 +#: elf32-avr.c:2409 elf32-hppa.c:605 elf32-m68hc1x.c:165 elf64-ppc.c:4141 msgid "%B: cannot create stub entry %s" msgstr "%B: tidak dapat membuat masukan stub %s" -#: elf32-bfin.c:1585 +#: elf32-bfin.c:1581 msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'" msgstr "%B(%A+0x%lx): relokasi tidak teresolf terhadap simbol `%s'" -#: elf32-bfin.c:1618 elf32-i386.c:3623 elf32-m68k.c:3557 elf32-s390.c:3110 -#: elf64-s390.c:3071 elf64-x86-64.c:3278 +#: elf32-bfin.c:1614 elf32-i386.c:4026 elf32-m68k.c:4176 elf32-s390.c:3067 +#: elf64-s390.c:3026 elf64-x86-64.c:3697 msgid "%B(%A+0x%lx): reloc against `%s': error %d" msgstr "%B(%A+0x%lx): relokasi terhadap `%s': error %d" -#: elf32-bfin.c:2711 +#: elf32-bfin.c:2714 msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend" msgstr "%B: relokasi di `%A+0x%x' simbol referensi `%s' dengan bukan nol ditambahkan" -#: elf32-bfin.c:2725 elf32-frv.c:2904 +#: elf32-bfin.c:2728 elf32-frv.c:2904 msgid "relocation references symbol not defined in the module" msgstr "relokasi referensi simbol tidak didefinisikan dalam modul" -#: elf32-bfin.c:2822 +#: elf32-bfin.c:2825 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend" msgstr "R_BFIN_FUNCDESC referensi simbol dinamis dengan bukan nol ditambahkan" -#: elf32-bfin.c:2861 elf32-bfin.c:2987 elf32-frv.c:3641 elf32-frv.c:3762 +#: elf32-bfin.c:2866 elf32-bfin.c:2989 elf32-frv.c:3641 elf32-frv.c:3762 msgid "cannot emit fixups in read-only section" msgstr "tidak dapat mengeluarkan fixups dalam bagian baca-saja" -#: elf32-bfin.c:2889 elf32-bfin.c:3036 elf32-frv.c:3672 elf32-frv.c:3806 +#: elf32-bfin.c:2897 elf32-bfin.c:3027 elf32-frv.c:3672 elf32-frv.c:3806 +#: elf32-lm32.c:1104 msgid "cannot emit dynamic relocations in read-only section" msgstr "tidak dapat mengeluarkan relokasi dinamis dalam bagian baca-saja" -#: elf32-bfin.c:2945 +#: elf32-bfin.c:2947 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "R_BFIN_FUNCDESC_VALUE referensi simbol dinamis dengan bukan nol ditambahkan" -#: elf32-bfin.c:3126 +#: elf32-bfin.c:3112 msgid "relocations between different segments are not supported" msgstr "relokasi diantara segmen berbeda tidak didukung" -#: elf32-bfin.c:3127 +#: elf32-bfin.c:3113 msgid "warning: relocation references a different segment" msgstr "peringatan: relokasi referensi sebuah segmen berbeda" -#: elf32-bfin.c:4791 elf32-frv.c:6404 +#: elf32-bfin.c:4974 elf32-frv.c:6408 msgid "%B: unsupported relocation type %i" msgstr "%B: tipe relokasi %i tidak didukung" -#: elf32-bfin.c:4944 elf32-frv.c:6812 +#: elf32-bfin.c:5127 elf32-frv.c:6816 #, c-format msgid "%s: cannot link non-fdpic object file into fdpic executable" msgstr "%s: tidak dapat menghubungkan berkas objek bukan-fdpic kedalam aplikasi fdpic" -#: elf32-bfin.c:4948 elf32-frv.c:6816 +#: elf32-bfin.c:5131 elf32-frv.c:6820 #, c-format msgid "%s: cannot link fdpic object file into non-fdpic executable" msgstr "%s: tidak dapat menghubungkan berkas objek fdpic kedalam aplikasi bukan-fdpic" -#: elf32-cris.c:1060 +#: elf32-cris.c:1169 msgid "%B, section %A: unresolvable relocation %s against symbol `%s'" msgstr "%B, bagian %A: relokasi tidak teresolf %s terhadap simbol `%s'" -#: elf32-cris.c:1129 +#: elf32-cris.c:1238 msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'" msgstr "%B, bagian %A: Bukan PLT atau GOT untuk relokasi %s terhadap simbol `%s'" -#: elf32-cris.c:1131 +#: elf32-cris.c:1240 msgid "%B, section %A: No PLT for relocation %s against symbol `%s'" msgstr "%B, bagian %A: Bukan PLT untuk relokasi %s terhadap simbol `%s'" -#: elf32-cris.c:1137 elf32-cris.c:1269 +#: elf32-cris.c:1246 elf32-cris.c:1379 elf32-cris.c:1641 elf32-cris.c:1730 +#: elf32-cris.c:1883 msgid "[whose name is lost]" msgstr "[yang namanya hilang]" -#: elf32-cris.c:1255 +#: elf32-cris.c:1365 msgid "%B, section %A: relocation %s with non-zero addend %d against local symbol" msgstr "%B, bagian %A: relokasi %s dengan bukan-nol ditambahkan %d terhadap simbol lokal" -#: elf32-cris.c:1263 +#: elf32-cris.c:1373 elf32-cris.c:1724 elf32-cris.c:1877 msgid "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'" msgstr "%B, bagian %A: relokasi %s dengan bukan-nol ditambakan %d terhadap simbol `%s'" -#: elf32-cris.c:1289 +#: elf32-cris.c:1399 msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'" msgstr "%B, bagian %A: relokasi %s tidak diperbolehkan untuk simbol global: `%s'" -#: elf32-cris.c:1305 +#: elf32-cris.c:1415 msgid "%B, section %A: relocation %s with no GOT created" msgstr "%B, bagian %A: relokasi %s dengan tidak GOT dibuat" -#: elf32-cris.c:1423 -msgid "%B: Internal inconsistency; no relocation section %s" -msgstr "%B: Internal tidak konsisten; bagian %s tidak bisa direlokasi" +#. We shouldn't get here for GCC-emitted code. +#: elf32-cris.c:1632 +msgid "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?" +msgstr "%B, bagian %A: relokasi %s memiliki sebuah referensi tidak terdefinisi ke `%s', mungkin sebuah kesalahan deklarasi?" + +#: elf32-cris.c:2010 +msgid "%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?" +msgstr "%B, bagian %A: relokasi %s tidak diperbolehkan untuk simbol global: `%s' yang didefinisikan diluar aplikasi, mungkin sebuah kesalahan deklarasi?" + +#: elf32-cris.c:2063 +msgid "(too many global variables for -fpic: recompile with -fPIC)" +msgstr "(terlalu banyak variabel global untuk -fpic: rekompilasi dengan -fPIC)" + +#: elf32-cris.c:2070 +msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)" +msgstr "(thread-local data terlalu besar untuk -fpic atau -msmall-tls: rekompilasi dengan -fPIC atau -mno-small-tls)" -#: elf32-cris.c:2510 +#: elf32-cris.c:3204 msgid "" "%B, section %A:\n" " v10/v32 compatible object %s must not contain a PIC relocation" @@ -1266,7 +1335,15 @@ "%B, bagian %A:\n" " v10/v32 objek kompatibel %s harus berisi sebuah relokasi PIC" -#: elf32-cris.c:2697 elf32-cris.c:2765 +#: elf32-cris.c:3309 +msgid "" +"%B, section %A:\n" +" relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC" +msgstr "" +"%B, bagian %A:\n" +" relokasi %s tidak valid dalam sebuah objek terbagi; umumnya sebuah kesalahan pilihan, rekompile dengan -fPIC" + +#: elf32-cris.c:3523 msgid "" "%B, section %A:\n" " relocation %s should not be used in a shared object; recompile with -fPIC" @@ -1274,38 +1351,46 @@ "%B, bagian %A:\n" " relokasi %s seharusnya digunakan dalam sebuah objek terbagi; rekompile dengan -fPIC" -#: elf32-cris.c:3184 +#: elf32-cris.c:3940 +msgid "" +"%B, section `%A', to symbol `%s':\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%B, bagian `%A', ke simbol `%s':\n" +" relokasi %s seharusnya digunakan dalam sebuah objek terbagi; rekompilasi dengan -fPIC" + +#: elf32-cris.c:4059 msgid "Unexpected machine number" msgstr "Nomor mesin tidak terduga" -#: elf32-cris.c:3238 +#: elf32-cris.c:4113 #, c-format msgid " [symbols have a _ prefix]" msgstr " [simbol memiliki sebuah awalan _]" -#: elf32-cris.c:3241 +#: elf32-cris.c:4116 #, c-format msgid " [v10 and v32]" msgstr " [v10 dan v32]" -#: elf32-cris.c:3244 +#: elf32-cris.c:4119 #, c-format msgid " [v32]" msgstr " [v32]" -#: elf32-cris.c:3289 +#: elf32-cris.c:4164 msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols" msgstr "%B: menggunakan awalan _ simbol, tetapi menulis berkas dengan simbol tanpa awalan" -#: elf32-cris.c:3290 +#: elf32-cris.c:4165 msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols" msgstr "%B: menggunakan simbol tanpa awalan, tetapi menulis berkas dengan simbol awalan _" -#: elf32-cris.c:3309 +#: elf32-cris.c:4184 msgid "%B contains CRIS v32 code, incompatible with previous objects" msgstr "%B berisi kode CRIS v32, tidak kompatibel dengan objek sebelumnya" -#: elf32-cris.c:3311 +#: elf32-cris.c:4186 msgid "%B contains non-CRIS-v32 code, incompatible with previous objects" msgstr "%B berisi kode bukan CRIS v32, tidak kompatibel dengan objek sebelumnya" @@ -1381,22 +1466,22 @@ msgid "relocation references a different segment" msgstr "relokasi referensi ke segmen berbeda" -#: elf32-frv.c:6726 +#: elf32-frv.c:6730 #, c-format msgid "%s: compiled with %s and linked with modules that use non-pic relocations" msgstr "%s: terkompile dengan %s dan terhubung dengan modul yang menggunakan relokasi bukan-pic" -#: elf32-frv.c:6779 elf32-iq2000.c:852 elf32-m32c.c:814 +#: elf32-frv.c:6783 elf32-iq2000.c:852 elf32-m32c.c:814 #, c-format msgid "%s: compiled with %s and linked with modules compiled with %s" msgstr "%s: terkompile dengan %s dan terhubung dengan modul terkompile dengan %s" -#: elf32-frv.c:6791 +#: elf32-frv.c:6795 #, c-format msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%s: menggunakan bagian e_flags (0x%lx) berbeda yang tidak dikenal dari modul sebelumnya (0x%lx)" -#: elf32-frv.c:6841 elf32-iq2000.c:889 elf32-m32c.c:850 elf32-mt.c:583 +#: elf32-frv.c:6845 elf32-iq2000.c:889 elf32-m32c.c:850 elf32-mt.c:583 #, c-format msgid "private flags = 0x%lx:" msgstr "private flags = 0x%lx:" @@ -1405,79 +1490,73 @@ msgid "%B: Relocations in generic ELF (EM: %d)" msgstr "%B: Relokasi dalam ELF standar (EM: %d)" -#: elf32-hppa.c:854 elf32-hppa.c:3600 +#: elf32-hppa.c:854 elf32-hppa.c:3570 msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections" msgstr "%B(%A+0x%lx): tidak dapat mencapai %s, rekompile dengan -ffunction-sections" -#: elf32-hppa.c:1263 +#: elf32-hppa.c:1286 msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC" msgstr "%B: relokasi %s tidak dapat digunakan ketika membuat sebuah objek terbagi; rekompile dengan -fPIC" -#: elf32-hppa.c:1518 -#, c-format -msgid "Could not find relocation section for %s" -msgstr "Tidak dapat menemukan bagian relokasi untuk %s" - -#: elf32-hppa.c:2810 +#: elf32-hppa.c:2780 msgid "%B: duplicate export stub %s" msgstr "%B: duplikasi export stub %s" -#: elf32-hppa.c:3436 +#: elf32-hppa.c:3406 msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link" msgstr "%B(%A+0x%lx): %s fixup untuk insn 0x%x tidak didukung dalam sebuah sambunga tidak terbagi" -#: elf32-hppa.c:4290 +#: elf32-hppa.c:4260 msgid "%B(%A+0x%lx): cannot handle %s for %s" msgstr "%B(%A+0x%lx): tidak dapat menangani %s untuk %s" -#: elf32-hppa.c:4597 +#: elf32-hppa.c:4567 msgid ".got section not immediately after .plt section" msgstr "bagian .got tidak mengikuti bagian .plt" -#: elf32-i386.c:362 elf32-ppc.c:1616 elf32-s390.c:379 elf64-ppc.c:2153 -#: elf64-s390.c:403 elf64-x86-64.c:222 +#: elf32-i386.c:371 elf32-ppc.c:1666 elf32-s390.c:379 elf64-ppc.c:2283 +#: elf64-s390.c:403 elf64-x86-64.c:234 msgid "%B: invalid relocation type %d" msgstr "%B: tipe relokasi %d tidak valid" -#: elf32-i386.c:1183 elf64-x86-64.c:964 +#: elf32-i386.c:1246 elf64-x86-64.c:1029 msgid "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed" msgstr "%B: TLS transisi dari %s ke %s terhadap `%s' di 0x%lx dalam bagian `%A' gagal" -#: elf32-i386.c:1364 elf32-s390.c:1188 elf32-sh.c:5098 elf32-xtensa.c:1162 -#: elf64-s390.c:1152 elfxx-sparc.c:1263 +#: elf32-i386.c:1387 elf32-i386.c:2970 elf64-x86-64.c:1171 elf64-x86-64.c:2680 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" +msgstr "%B: relokasi %s terhadap STT_GNU_IFUNC simbol `%s' tidak ditangani oleh %s" + +#: elf32-i386.c:1548 elf32-s390.c:1180 elf32-sh.c:5065 elf32-xtensa.c:1173 +#: elf64-s390.c:1143 elfxx-sparc.c:1257 msgid "%B: `%s' accessed both as normal and thread local symbol" msgstr "%B: `%s' terakses kedua sebagai normal dan memperlakukan lokal simbol" -#: elf32-i386.c:1479 elf32-s390.c:1297 elf64-ppc.c:5046 elf64-s390.c:1264 -#: elf64-x86-64.c:1299 -msgid "%B: bad relocation section name `%s'" -msgstr "%B: relokasi bagian nama `%s' buruk" - -#: elf32-i386.c:2598 +#: elf32-i386.c:2805 msgid "%B: unrecognized relocation (0x%x) in section `%A'" msgstr "%B: relokasi tidak dikenal (0x%x) dalam bagian `%A'" -#: elf32-i386.c:2822 elf64-x86-64.c:2660 +#: elf32-i386.c:3219 elf64-x86-64.c:3081 msgid "hidden symbol" msgstr "simbol tersembunyi" -#: elf32-i386.c:2825 elf64-x86-64.c:2663 +#: elf32-i386.c:3222 elf64-x86-64.c:3084 msgid "internal symbol" msgstr "internal simbol" -#: elf32-i386.c:2828 elf64-x86-64.c:2666 +#: elf32-i386.c:3225 elf64-x86-64.c:3087 msgid "protected symbol" msgstr "simbol terproteksi" -#: elf32-i386.c:2831 elf64-x86-64.c:2669 +#: elf32-i386.c:3228 elf64-x86-64.c:3090 msgid "symbol" msgstr "simbol" -#: elf32-i386.c:2836 +#: elf32-i386.c:3233 msgid "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object" msgstr "%B: relokasi R_386_GOTOFF terhadap %s `%s' tidak terdefinisi tidak dapat digunakan ketika membuah sebuah objek terbagi" -#: elf32-i386.c:2846 +#: elf32-i386.c:3243 msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object" msgstr "%B: relokasi R_386_GOTOFF terhadap fungsi terproteksi `%s' tidak dapat digunakan ketika membuat sebuah objek terbagi" @@ -1509,125 +1588,141 @@ msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%s: menggunakan e_flags (0x%lx) field berbeda dari modul sebelumnya (0x%lx)" +#: elf32-lm32.c:698 +msgid "global pointer relative relocation when _gp not defined" +msgstr "penunjuk global relokasi relatif waktu _gp tidak terdefinisi" + +#: elf32-lm32.c:753 +msgid "global pointer relative address out of range" +msgstr "penunjuk global alamat relatif diluar dari jangkauan" + +#: elf32-lm32.c:1058 +msgid "internal error: addend should be zero for R_LM32_16_GOT" +msgstr "kesalahan internal: addend seharusnya nol untuk R_LM32_16_GOT" + #: elf32-m32r.c:1453 msgid "SDA relocation when _SDA_BASE_ not defined" msgstr "SDA relokasi ketika _SDA_BASE_ tidak terdefinisi" -#: elf32-m32r.c:3061 +#: elf32-m32r.c:3039 msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)" msgstr "%B: Target (%s) dari sebuah %s relokasi berada dalam bagian yang salah (%A)" -#: elf32-m32r.c:3589 +#: elf32-m32r.c:3567 msgid "%B: Instruction set mismatch with previous modules" msgstr "%B: Set Instruksi tidak cocok dengan modul sebelumnya" -#: elf32-m32r.c:3610 +#: elf32-m32r.c:3588 #, c-format msgid "private flags = %lx" msgstr "private flags = %lx" -#: elf32-m32r.c:3615 +#: elf32-m32r.c:3593 #, c-format msgid ": m32r instructions" msgstr ": m32r instruksi" -#: elf32-m32r.c:3616 +#: elf32-m32r.c:3594 #, c-format msgid ": m32rx instructions" msgstr ": m32rx instruksi" -#: elf32-m32r.c:3617 +#: elf32-m32r.c:3595 #, c-format msgid ": m32r2 instructions" msgstr ": m32r2 instruksi" -#: elf32-m68hc1x.c:1047 +#: elf32-m68hc1x.c:1048 #, c-format msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution" msgstr "Referensi ke simbol jauh `%s' menggunakan relokasi salah mungkin akan menghasilkan eksekusi salah" -#: elf32-m68hc1x.c:1070 +#: elf32-m68hc1x.c:1071 #, c-format msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)" msgstr "banked address [%lx:%04lx] (%lx) tidak dalam bank yang sama seperti dalam alamat bank sekarang [%lx:%04lx] (%lx)" -#: elf32-m68hc1x.c:1089 +#: elf32-m68hc1x.c:1090 #, c-format msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx" msgstr "referensi ke alamat bank [%lx:%04lx] dalam ruang alamat normal di %04lx" -#: elf32-m68hc1x.c:1222 +#: elf32-m68hc1x.c:1223 msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers" msgstr "%B: menghubungkan berkas yang dikompile untuk 16-bit integer (-mshort) dan yang lain untuk 32-bit integer" -#: elf32-m68hc1x.c:1229 +#: elf32-m68hc1x.c:1230 msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double" msgstr "%B: menghubungkan berkas yang dikompile untuk 32-bit double (-fshort-double) dan yang lain untuk 64-bit double" -#: elf32-m68hc1x.c:1238 +#: elf32-m68hc1x.c:1239 msgid "%B: linking files compiled for HCS12 with others compiled for HC12" msgstr "%B: menghubungkan berkas dikompile untuk HCS12 dengan yang lain dikompile untuk HC12" -#: elf32-m68hc1x.c:1254 elf32-ppc.c:4046 elf64-sparc.c:697 elfxx-mips.c:12561 +#: elf32-m68hc1x.c:1255 elf32-ppc.c:4255 elf64-sparc.c:698 elfxx-mips.c:12617 msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%B: menggunakan field e_flags (0x%lx) berbeda dari modul sebelumnya (0x%lx)" -#: elf32-m68hc1x.c:1282 +#: elf32-m68hc1x.c:1283 #, c-format msgid "[abi=32-bit int, " msgstr "[abi=32-bit int, " -#: elf32-m68hc1x.c:1284 +#: elf32-m68hc1x.c:1285 #, c-format msgid "[abi=16-bit int, " msgstr "[abi=16-bit int, " -#: elf32-m68hc1x.c:1287 +#: elf32-m68hc1x.c:1288 #, c-format msgid "64-bit double, " msgstr "64-bit double, " -#: elf32-m68hc1x.c:1289 +#: elf32-m68hc1x.c:1290 #, c-format msgid "32-bit double, " msgstr "32-bit double, " -#: elf32-m68hc1x.c:1292 +#: elf32-m68hc1x.c:1293 #, c-format msgid "cpu=HC11]" msgstr "cpu=HC11]" -#: elf32-m68hc1x.c:1294 +#: elf32-m68hc1x.c:1295 #, c-format msgid "cpu=HCS12]" msgstr "cpu=HCS12]" -#: elf32-m68hc1x.c:1296 +#: elf32-m68hc1x.c:1297 #, c-format msgid "cpu=HC12]" msgstr "cpu=HC12]" -#: elf32-m68hc1x.c:1299 +#: elf32-m68hc1x.c:1300 #, c-format msgid " [memory=bank-model]" msgstr " [memory=bank-model]" -#: elf32-m68hc1x.c:1301 +#: elf32-m68hc1x.c:1302 #, c-format msgid " [memory=flat]" msgstr " [memory=flat]" -#: elf32-m68k.c:789 elf32-m68k.c:790 +#: elf32-m68k.c:1184 elf32-m68k.c:1185 msgid "unknown" msgstr "tidak dikenal" -#: elf32-m68k.c:1216 -msgid "%B: GOT overflow: Number of R_68K_GOT8O relocations > %d" -msgstr "%B: GOT overflow: Jumlah dari R_68K_GOT80 relokasi > %d" - -#: elf32-m68k.c:1221 -msgid "%B: GOT overflow: Number of R_68K_GOT8O and R_68K_GOT16O relocations > %d" -msgstr "%B: Memperoleh overflow: Jumlah dari R_68K_GOT80 dan R_68K_GOT160 relokasi > %d" +#: elf32-m68k.c:1645 +msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d" +msgstr "%B: GOT overflow: Jumlah dari relokasi dengan offset 8-bit > %d" + +#: elf32-m68k.c:1651 +msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d" +msgstr "%B: GOT overflow: Jumlah dari relokasi dengan offset 8- atau 16-bit > %d" + +#: elf32-m68k.c:3902 +msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object" +msgstr "%B(%A+0x%lx): R_68K_TLS_LE32 relokasi tidak diperbolehkan dalam objek terbagi" #: elf32-mcore.c:99 elf32-mcore.c:442 msgid "%B: Relocation %s (%d) is not currently supported.\n" @@ -1645,147 +1740,187 @@ msgid "%B and %B are for different configurations" msgstr "%B dan %B adalah untuk konfigurasi berbeda" -#: elf32-mep.c:709 +#: elf32-mep.c:708 #, c-format msgid "private flags = 0x%lx" msgstr "private flags = 0x%lx" -#: elf32-mips.c:1045 elf64-mips.c:2056 elfn32-mips.c:1888 +#: elf32-microblaze.c:737 +#, c-format +msgid "%s: unknown relocation type %d" +msgstr "%s: tipe relokasi %d tidak diketahui" + +#: elf32-microblaze.c:862 elf32-microblaze.c:907 +#, c-format +msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" +msgstr "%s: Target (%s) dari sebuah %s relokasi berada dalam bagian yang salah (%s)" + +#: elf32-microblaze.c:1150 elfxx-sparc.c:2957 +msgid "%B: probably compiled without -fPIC?" +msgstr "%B: mungkin dikompile tanpa -fPIC?" + +#: elf32-microblaze.c:2086 elflink.c:12444 +msgid "%B: bad relocation section name `%s'" +msgstr "%B: relokasi bagian nama `%s' buruk" + +#: elf32-mips.c:1045 elf64-mips.c:2083 elfn32-mips.c:1888 msgid "literal relocation occurs for an external symbol" msgstr "literal relokasi terjadi untuk simbol eksternal" -#: elf32-mips.c:1085 elf32-score.c:484 elf64-mips.c:2099 elfn32-mips.c:1929 +#: elf32-mips.c:1085 elf32-score.c:580 elf32-score7.c:480 elf64-mips.c:2126 +#: elfn32-mips.c:1929 msgid "32bits gp relative relocation occurs for an external symbol" msgstr "32bit gp relative relokasi terjadi untuk sebuah simbol eksternal" -#: elf32-ppc.c:1681 +#: elf32-ppc.c:1731 #, c-format msgid "generic linker can't handle %s" msgstr "linker generik tidak dapat menangani %s" -#: elf32-ppc.c:2161 +#: elf32-ppc.c:2211 msgid "corrupt or empty %s section in %B" msgstr "korup atau kosong %s bagian dalam %B" -#: elf32-ppc.c:2168 +#: elf32-ppc.c:2218 msgid "unable to read in %s section from %B" msgstr "tidak dapat membaca dalam bagian %s dari %B" -#: elf32-ppc.c:2174 +#: elf32-ppc.c:2224 msgid "corrupt %s section in %B" msgstr "korup bagian %s dalam %B" -#: elf32-ppc.c:2217 +#: elf32-ppc.c:2267 msgid "warning: unable to set size of %s section in %B" msgstr "peringatan: tidak dapat menset ukuran bagian %s dalam %B" -#: elf32-ppc.c:2265 +#: elf32-ppc.c:2315 msgid "failed to allocate space for new APUinfo section." msgstr "gagal mengalokasikan ruang untuk bagian baru APUinfo." -#: elf32-ppc.c:2284 +#: elf32-ppc.c:2334 msgid "failed to compute new APUinfo section." msgstr "gagal untuk menghitung bagian baru APUinfo." -#: elf32-ppc.c:2287 +#: elf32-ppc.c:2337 msgid "failed to install new APUinfo section." msgstr "gagal untuk memasang bagian baru APUinfo." -#: elf32-ppc.c:3263 +#: elf32-ppc.c:3364 msgid "%B: relocation %s cannot be used when making a shared object" msgstr "%B: relokasi %s tidak dapat digunakan ketika membuat sebuah objek terbagi" #. It does not make sense to have a procedure linkage #. table entry for a local symbol. -#: elf32-ppc.c:3534 +#: elf32-ppc.c:3723 msgid "%B(%A+0x%lx): %s reloc against local symbol" msgstr "%B(%A+0x%lx): %s relokasi terhadap simbol lokal" -#: elf32-ppc.c:3885 elf32-ppc.c:3900 elfxx-mips.c:12268 elfxx-mips.c:12294 -#: elfxx-mips.c:12316 elfxx-mips.c:12342 +#: elf32-ppc.c:4067 elf32-ppc.c:4082 elfxx-mips.c:12324 elfxx-mips.c:12350 +#: elfxx-mips.c:12372 elfxx-mips.c:12398 msgid "Warning: %B uses hard float, %B uses soft float" msgstr "Peringatan: %B menggunakan hard float, %B menggunakan soft float" -#: elf32-ppc.c:3888 elf32-ppc.c:3892 +#: elf32-ppc.c:4070 elf32-ppc.c:4074 msgid "Warning: %B uses double-precision hard float, %B uses single-precision hard float" msgstr "Peringatan: %B menggunakan double-precision hard float, %B menggunakan single-precision hard float" -#: elf32-ppc.c:3896 +#: elf32-ppc.c:4078 msgid "Warning: %B uses soft float, %B uses single-precision hard float" msgstr "Peringatan: %B menggunakan soft float, %B menggunakan single-precision hard float" -#: elf32-ppc.c:3903 elf32-ppc.c:3907 elfxx-mips.c:12248 elfxx-mips.c:12252 +#: elf32-ppc.c:4085 elf32-ppc.c:4089 elfxx-mips.c:12304 elfxx-mips.c:12308 msgid "Warning: %B uses unknown floating point ABI %d" msgstr "Peringatan: %B menggunkaan floating point ABI %d" -#: elf32-ppc.c:3949 elf32-ppc.c:3953 +#: elf32-ppc.c:4131 elf32-ppc.c:4135 msgid "Warning: %B uses unknown vector ABI %d" msgstr "Peringatan: %B menggunakan vector ABI %d tidak dikenal" -#: elf32-ppc.c:3957 +#: elf32-ppc.c:4139 msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\"" msgstr "Peringatan: %B menggunakan vector ABI \"%s\", %B menggunakan \"%s\"" -#: elf32-ppc.c:4011 +#: elf32-ppc.c:4156 elf32-ppc.c:4159 +msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory" +msgstr "Peringatan: %B menggunakan r3/34 untuk arsitektur kembali kecil, %B menggunakan memori" + +#: elf32-ppc.c:4162 elf32-ppc.c:4166 +msgid "Warning: %B uses unknown small structure return convention %d" +msgstr "Peringatan: %B menggunakan konvensi struktur kembali kecil %d tidak diketahui" + +#: elf32-ppc.c:4220 msgid "%B: compiled with -mrelocatable and linked with modules compiled normally" msgstr "%B: dikompile dengan -mrelocatable dan dihubungkan dengan module yang dikompile secara normal" -#: elf32-ppc.c:4019 +#: elf32-ppc.c:4228 msgid "%B: compiled normally and linked with modules compiled with -mrelocatable" msgstr "%B: dikompile secara normal dan dihubungkan dengan modul yang dikompile dengan -mrelocatable" -#: elf32-ppc.c:4105 +#: elf32-ppc.c:4314 msgid "Using bss-plt due to %B" msgstr "Menggunakan bss-plt karena %B" -#: elf32-ppc.c:6418 elf64-ppc.c:10881 +#: elf32-ppc.c:7056 elf64-ppc.c:11364 msgid "%B: unknown relocation type %d for symbol %s" msgstr "%B: tipe relokasi %d tidak dikenal untuk simbol %s" -#: elf32-ppc.c:6668 +#: elf32-ppc.c:7316 msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'" msgstr "%B(%A+0x%lx): bukan-nol ditambahkan di %s relokasi terhadap `%s'" -#: elf32-ppc.c:7024 elf32-ppc.c:7050 elf32-ppc.c:7109 +#: elf32-ppc.c:7499 elf64-ppc.c:11854 +msgid "%B(%A+0x%lx): relocation %s for indirect function %s unsupported" +msgstr "%B(%A+0x%lx): Relokasi %s untuk fungsi tidak langsung %s tidak didukung." + +#: elf32-ppc.c:7709 elf32-ppc.c:7736 elf32-ppc.c:7787 msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)" msgstr "%B: target (%s) dari sebuah relokasi %s berada dalam daerah keluaran salah (%s)" -#: elf32-ppc.c:7164 +#: elf32-ppc.c:7847 msgid "%B: relocation %s is not yet supported for symbol %s." msgstr "%B: relokasi %s tidak didukung untuk simbol %s." -#: elf32-ppc.c:7272 elf64-ppc.c:11575 +#: elf32-ppc.c:7955 elf64-ppc.c:12110 msgid "%B(%A+0x%lx): %s reloc against `%s': error %d" msgstr "%B(%A+0x%lx): %s relokasi terhadap `%s': error %d" -#: elf32-s390.c:2246 elf64-s390.c:2220 +#: elf32-ppc.c:8423 +#, c-format +msgid "%s not defined in linker created %s" +msgstr "%s tidak didefinisikan dalam %s yang dibuat oleh penyambung" + +#: elf32-s390.c:2207 elf64-s390.c:2179 msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s" msgstr "%B(%A+0x%lx): instruksi tidak valid untuk relokasi TLS %s" -#: elf32-score.c:1415 elfxx-mips.c:3273 +#: elf32-score.c:1533 elf32-score7.c:1424 elfxx-mips.c:3299 msgid "not enough GOT space for local GOT entries" msgstr "tidak cukup ruang GOT untuk masukan lokal GOT" -#: elf32-score.c:2545 +#: elf32-score.c:2765 +msgid "address not word align" +msgstr "alamat tidak selaras dengan ukuran word" + +#: elf32-score.c:2850 elf32-score7.c:2685 #, c-format msgid "%s: Malformed reloc detected for section %s" msgstr "%s: relokasi malformat terdeteksi untuk bagian %s" -#: elf32-score.c:2596 +#: elf32-score.c:2901 elf32-score7.c:2736 msgid "%B: CALL15 reloc at 0x%lx not against global symbol" msgstr "%B: CALL15 relokasi di 0x%lx tidak terhadap simbol global" -#: elf32-score.c:3753 +#: elf32-score.c:4042 elf32-score7.c:3879 #, c-format msgid " [pic]" msgstr " [pic]" -#: elf32-score.c:3757 +#: elf32-score.c:4046 elf32-score7.c:3883 #, c-format msgid " [fix dep]" msgstr " [fix dep]" -#: elf32-score.c:3799 +#: elf32-score.c:4088 elf32-score7.c:3925 msgid "%B: warning: linking PIC files with non-PIC files" msgstr "%B: peringatan: menghubungkan berkas PIC dengan berkas bukan-PIC" @@ -1797,7 +1932,7 @@ msgid "%B: Unrecognised .directive command: %s" msgstr "%B: Perintah .directive tidak dikenal: %s" -#: elf32-sh-symbian.c:504 +#: elf32-sh-symbian.c:503 msgid "%B: Failed to add renamed symbol %s" msgstr "%B: Gagal menambahkan simbol diubah namanya %s" @@ -1833,46 +1968,46 @@ msgid "%B: 0x%lx: fatal: reloc overflow while relaxing" msgstr "%B: 0x%lx: fatal: relokasi overflow ketika relaxing" -#: elf32-sh.c:3279 elf64-sh64.c:1526 +#: elf32-sh.c:3270 elf64-sh64.c:1526 msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" msgstr "Tidak diperkirakan STO_SH5_ISA32 di simbol lokal tidak ditangani" -#: elf32-sh.c:3516 +#: elf32-sh.c:3507 msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation" msgstr "%B: 0x%lx: fatal: unaligned branch target untuk relax-support relokasi" -#: elf32-sh.c:3549 elf32-sh.c:3564 +#: elf32-sh.c:3540 elf32-sh.c:3555 msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx" msgstr "%B: 0x%lx: fatal: unaligned %s relokasi 0x%lx" -#: elf32-sh.c:3578 +#: elf32-sh.c:3569 msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32" msgstr "%B: 0x%lx: fatal: R_SH_PSHA relokasi %d tidak dalam jangkauan -32..32" -#: elf32-sh.c:3592 +#: elf32-sh.c:3583 msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32" msgstr "%B: 0x%lx: fatal: R_SH_PSHL relokasi %d tidak dalam jangkauan -32..32" -#: elf32-sh.c:5310 elf64-alpha.c:4552 +#: elf32-sh.c:5256 elf64-alpha.c:4525 msgid "%B: TLS local exec code cannot be linked into shared objects" msgstr "%B: TLS lokal exec kode tidak dapat dihubungkan dalam objek terbagi" -#: elf32-sh64.c:222 elf64-sh64.c:2345 +#: elf32-sh64.c:222 elf64-sh64.c:2333 #, c-format msgid "%s: compiled as 32-bit object and %s is 64-bit" msgstr "%s: dikompile sebagai 32-bit objek dan %s adalah 64-bit" -#: elf32-sh64.c:225 elf64-sh64.c:2348 +#: elf32-sh64.c:225 elf64-sh64.c:2336 #, c-format msgid "%s: compiled as 64-bit object and %s is 32-bit" msgstr "%s: dikompile sebagai 64-bit objek dan %s adalah 32-bit" -#: elf32-sh64.c:227 elf64-sh64.c:2350 +#: elf32-sh64.c:227 elf64-sh64.c:2338 #, c-format msgid "%s: object size does not match that of target %s" msgstr "%s: ukuran objek tidak cocok dari target %s" -#: elf32-sh64.c:450 elf64-sh64.c:2888 +#: elf32-sh64.c:450 elf64-sh64.c:2852 #, c-format msgid "%s: encountered datalabel symbol in input" msgstr "%s: ditemui datalabel simbol dalam masukan" @@ -1912,103 +2047,119 @@ msgid "%B: linking little endian files with big endian files" msgstr "%B: menghubungkan berkas little endian dengan berkas big endian" -#: elf32-spu.c:607 +#: elf32-spu.c:723 +msgid "%X%P: overlay section %A does not start on a cache line.\n" +msgstr "%X%P: bagian overlay %A jangan diawali di sebuah baris cache.\n" + +#: elf32-spu.c:731 +msgid "%X%P: overlay section %A is larger than a cache line.\n" +msgstr "%X%P: bagian overlay %A lebih besar daripada baris cache.\n" + +#: elf32-spu.c:751 +msgid "%X%P: overlay section %A is not in cache area.\n" +msgstr "%X%P: bagian overlay %A tidak berada dalam daerah cache.\n" + +#: elf32-spu.c:791 msgid "%X%P: overlay sections %A and %A do not start at the same address.\n" msgstr "%X%P: bagian overlay %A dan %A jangan diawali di alamat yang sama.\n" -#: elf32-spu.c:805 +#: elf32-spu.c:1015 msgid "warning: call to non-function symbol %s defined in %B" msgstr "peringatan: panggilan bukan-fungsi simbol %s didefinisikan dalam %B" -#: elf32-spu.c:1406 +#: elf32-spu.c:1365 +msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" +msgstr "%A:0x%v lrlive .brinfo (%u) berbeda dari analisa (%u)\n" + +#: elf32-spu.c:1884 msgid "%B is not allowed to define %s" msgstr "%B tidak diperbolehkan untuk didefinisikan %s" -#: elf32-spu.c:1453 +#: elf32-spu.c:1892 +#, c-format +msgid "you are not allowed to define %s in a script" +msgstr "anda tidak diperbolehkan untuk mendefinisikan %s dalam sebuah script" + +#: elf32-spu.c:1926 #, c-format msgid "%s in overlay section" msgstr "%s dalam daerah overlay" -#: elf32-spu.c:1469 +#: elf32-spu.c:1955 msgid "overlay stub relocation overflow" msgstr "relokasi stub overlay overflow" -#: elf32-spu.c:1478 elf64-ppc.c:10078 +#: elf32-spu.c:1964 elf64-ppc.c:10441 msgid "stubs don't match calculated size" msgstr "stub tidak cocok dengan ukuran yang dihitung" -#: elf32-spu.c:1976 +#: elf32-spu.c:2546 #, c-format msgid "warning: %s overlaps %s\n" msgstr "peringatan: %s timpang tindih %s\n" -#: elf32-spu.c:1992 +#: elf32-spu.c:2562 #, c-format msgid "warning: %s exceeds section size\n" msgstr "peringatan: %s melebihi ukuran daerah\n" -#: elf32-spu.c:2023 +#: elf32-spu.c:2593 msgid "%A:0x%v not found in function table\n" msgstr "%A:0x%v tidak ditemukan dalam tabel fungsi\n" -#: elf32-spu.c:2165 +#: elf32-spu.c:2740 msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n" msgstr "%B(%A+0x%v): panggilan untuk daerah bukan-kode %B(%A), analysis tidak lengkap\n" -#: elf32-spu.c:2339 -#, c-format -msgid "%A link_order not found\n" -msgstr "%A link_order tidak ditemukan\n" - -#: elf32-spu.c:2706 +#: elf32-spu.c:3297 #, c-format msgid "Stack analysis will ignore the call from %s to %s\n" msgstr "Stack analysis akan mengabaikan panggilan dari %s ke %s\n" -#: elf32-spu.c:3348 +#: elf32-spu.c:3988 msgid " %s: 0x%v\n" msgstr " %s: 0x%v\n" -#: elf32-spu.c:3349 +#: elf32-spu.c:3989 msgid "%s: 0x%v 0x%v\n" msgstr "%s: 0x%v 0x%v\n" -#: elf32-spu.c:3354 +#: elf32-spu.c:3994 msgid " calls:\n" msgstr " panggilan:\n" -#: elf32-spu.c:3362 +#: elf32-spu.c:4002 #, c-format msgid " %s%s %s\n" msgstr " %s%s %s\n" -#: elf32-spu.c:3564 +#: elf32-spu.c:4304 #, c-format msgid "%s duplicated in %s\n" msgstr "%s duplikasi dalam %s\n" -#: elf32-spu.c:3568 +#: elf32-spu.c:4308 #, c-format msgid "%s duplicated\n" msgstr "%s duplikasi\n" -#: elf32-spu.c:3575 +#: elf32-spu.c:4315 msgid "sorry, no support for duplicate object files in auto-overlay script\n" msgstr "maaf, tidak ada dukungan untuk duplikasi berkas objek dalam auto-overlay script\n" -#: elf32-spu.c:3605 +#: elf32-spu.c:4356 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n" msgstr "ukuran non-overlay dari 0x%v plus maksimul overlay size dari 0x%v melebihi lokal store\n" -#: elf32-spu.c:3741 +#: elf32-spu.c:4512 msgid "%B:%A%s exceeds overlay size\n" msgstr "%B:%A%s melebihi ukuran overlay\n" -#: elf32-spu.c:3862 +#: elf32-spu.c:4669 msgid "Stack size for call graph root nodes.\n" msgstr "Ukuran stack untuk panggilan graph titik root.\n" -#: elf32-spu.c:3863 +#: elf32-spu.c:4670 msgid "" "\n" "Stack size for functions. Annotations: '*' max stack, 't' tail call\n" @@ -2016,164 +2167,168 @@ "\n" "Ukuran stack untuk fungsi. Anotasi: '*' max stack, 't' tail call\n" -#: elf32-spu.c:3871 +#: elf32-spu.c:4680 msgid "Maximum stack required is 0x%v\n" msgstr "Maksimal stack dibutuhkan adalah 0x%v\n" -#: elf32-spu.c:4067 +#: elf32-spu.c:4771 +msgid "fatal error while creating .fixup" +msgstr "kesalahan fatal ketika membuat .fixup" + +#: elf32-spu.c:5009 msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'" msgstr "%B(%s=0x%lx): tidak teresolf %s relokasi terhadap simbol `%s'" -#: elf32-v850.c:165 +#: elf32-v850.c:163 #, c-format msgid "Variable `%s' cannot occupy in multiple small data regions" msgstr "Variabel `%s' tidak dapat mengisi dalam beberapa daerah data kecil" -#: elf32-v850.c:168 +#: elf32-v850.c:166 #, c-format msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions" msgstr "Variabel `%s' hanya dapat berada dalam satu dari kecil, nol, dan sangat kecil daerah data" -#: elf32-v850.c:171 +#: elf32-v850.c:169 #, c-format msgid "Variable `%s' cannot be in both small and zero data regions simultaneously" msgstr "Variabel `%s' tidak dapat berada dalam kecil dan nol daerah data secara bersamaan" -#: elf32-v850.c:174 +#: elf32-v850.c:172 #, c-format msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously" msgstr "Variabel `%s' tidak dapat berada dalam kecil dan sangat kecil daerah data secara bersamaan" -#: elf32-v850.c:177 +#: elf32-v850.c:175 #, c-format msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously" msgstr "variabel `%s' tidak dapat dalam nol dan kecil daerah data secara bersamaan" -#: elf32-v850.c:480 +#: elf32-v850.c:478 #, c-format msgid "FAILED to find previous HI16 reloc\n" msgstr "GAGAL untuk menemukan relokasi HI16 sebelumnya\n" -#: elf32-v850.c:1715 +#: elf32-v850.c:1713 msgid "could not locate special linker symbol __gp" msgstr "tidak dapat menemukan simbol linker spesial __gp" -#: elf32-v850.c:1719 +#: elf32-v850.c:1717 msgid "could not locate special linker symbol __ep" msgstr "tidak dapat menemukan simbol linker spesial __ep" -#: elf32-v850.c:1723 +#: elf32-v850.c:1721 msgid "could not locate special linker symbol __ctbp" msgstr "tidak dapat menemukan simbol linker spesial __ctbp" -#: elf32-v850.c:1873 +#: elf32-v850.c:1871 msgid "%B: Architecture mismatch with previous modules" msgstr "%B: Arsitektur tidak cocok dengan modul sebelumnya" -#: elf32-v850.c:1892 +#: elf32-v850.c:1890 #, c-format msgid "private flags = %lx: " msgstr "private flags = %lx: " -#: elf32-v850.c:1897 +#: elf32-v850.c:1895 #, c-format msgid "v850 architecture" msgstr "v850 arsitektur" -#: elf32-v850.c:1898 +#: elf32-v850.c:1896 #, c-format msgid "v850e architecture" msgstr "v850e arsitektur" -#: elf32-v850.c:1899 +#: elf32-v850.c:1897 #, c-format msgid "v850e1 architecture" msgstr "v850e1 arsitektur" -#: elf32-vax.c:541 +#: elf32-vax.c:543 #, c-format msgid " [nonpic]" msgstr " [bukan-pic]" -#: elf32-vax.c:544 +#: elf32-vax.c:546 #, c-format msgid " [d-float]" msgstr " [d-float]" -#: elf32-vax.c:547 +#: elf32-vax.c:549 #, c-format msgid " [g-float]" msgstr " [g-float]" -#: elf32-vax.c:657 +#: elf32-vax.c:666 #, c-format msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld" msgstr "%s: peringatan: GOT ditambahkan dari %ld ke `%s' tidak cocok dengan penambahan GOT sebelumnya dari %ld" -#: elf32-vax.c:1589 +#: elf32-vax.c:1608 #, c-format msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" msgstr "%s: peringatan: PLT ditambahkan dari %d ke `%s' dari %s bagian diabaikan" -#: elf32-vax.c:1726 +#: elf32-vax.c:1735 #, c-format msgid "%s: warning: %s relocation against symbol `%s' from %s section" msgstr "%s: peringatan: %s relokasi terhadap simbol `%s' dari bagian %s" -#: elf32-vax.c:1732 +#: elf32-vax.c:1741 #, c-format msgid "%s: warning: %s relocation to 0x%x from %s section" msgstr "%s: peringatan: relokasi %s ke 0x%x dari daerah %s" -#: elf32-xstormy16.c:451 elf32-ia64.c:2794 elf64-ia64.c:2794 +#: elf32-xstormy16.c:451 elf32-ia64.c:2791 elf64-ia64.c:2791 msgid "non-zero addend in @fptr reloc" msgstr "bukan-nol ditambahkan dalam @fptr relokasi" -#: elf32-xtensa.c:911 +#: elf32-xtensa.c:912 msgid "%B(%A): invalid property table" msgstr "%B(%A): tabel properti tidak valid" -#: elf32-xtensa.c:2734 +#: elf32-xtensa.c:2740 msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)" msgstr "%B(%A+0x%lx): ofset relokasi diluar jangkauan (size=0x%x)" -#: elf32-xtensa.c:2813 elf32-xtensa.c:2934 +#: elf32-xtensa.c:2819 elf32-xtensa.c:2940 msgid "dynamic relocation in read-only section" msgstr "relokasi dinamis dalam bagian baca-saja" -#: elf32-xtensa.c:2910 +#: elf32-xtensa.c:2916 msgid "TLS relocation invalid without dynamic sections" msgstr "relokasi TLS tidak valid tanpa bagian dinamis" -#: elf32-xtensa.c:3127 +#: elf32-xtensa.c:3133 msgid "internal inconsistency in size of .got.loc section" msgstr "internal tidak konsisten dalam ukuran dari daerah .got.loc" -#: elf32-xtensa.c:3437 +#: elf32-xtensa.c:3443 msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x" msgstr "%B: tipe mesin tidak kompatibel. Keluaran adalah 0x%x. Masukan adalah 0x%x" -#: elf32-xtensa.c:4666 elf32-xtensa.c:4674 +#: elf32-xtensa.c:4672 elf32-xtensa.c:4680 msgid "Attempt to convert L32R/CALLX to CALL failed" msgstr "Mencoba untuk mengubah L32R/CALLX ke CALL gagal" -#: elf32-xtensa.c:6276 elf32-xtensa.c:6352 elf32-xtensa.c:7468 +#: elf32-xtensa.c:6290 elf32-xtensa.c:6366 elf32-xtensa.c:7486 msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch" msgstr "%B(%A+0x%lx): tidak dapat mendeko instruksi; mungkin konfigurasi tidak cocok" -#: elf32-xtensa.c:7208 +#: elf32-xtensa.c:7226 msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch" msgstr "%B(%A+0x%lx): tidak dapat mendeko instruksi untuk XTENSA_ASM_SIMPLIFY relokasi; mungkin konfigurasi tidak cocok" -#: elf32-xtensa.c:8969 +#: elf32-xtensa.c:8987 msgid "invalid relocation address" msgstr "alamat relokasi tidak valid" -#: elf32-xtensa.c:9018 +#: elf32-xtensa.c:9036 msgid "overflow after relaxation" msgstr "overflow setelah relaksasi" -#: elf32-xtensa.c:10154 +#: elf32-xtensa.c:10167 msgid "%B(%A+0x%lx): unexpected fix for %s relocation" msgstr "%B(%A+0x%lx): unexpected fix untuk relokasi %s" @@ -2181,51 +2336,55 @@ msgid "GPDISP relocation did not find ldah and lda instructions" msgstr "GPDISP relokasi tidak dapat menemukan instruksi ldah dan lda" -#: elf64-alpha.c:2416 +#: elf64-alpha.c:2389 msgid "%B: .got subsegment exceeds 64K (size %d)" msgstr "%B: .got subsegmen melebihi 64K (size %d)" -#: elf64-alpha.c:4296 elf64-alpha.c:4308 +#: elf64-alpha.c:4269 elf64-alpha.c:4281 msgid "%B: gp-relative relocation against dynamic symbol %s" msgstr "%B: gp-relative relokasi terhadap simbol dinamis %s" -#: elf64-alpha.c:4334 elf64-alpha.c:4469 +#: elf64-alpha.c:4307 elf64-alpha.c:4442 msgid "%B: pc-relative relocation against dynamic symbol %s" msgstr "%B: pc-relative relokasi terhadap simbol dinamis %s" -#: elf64-alpha.c:4362 +#: elf64-alpha.c:4335 msgid "%B: change in gp: BRSGP %s" msgstr "%B: perubahan dalam gp: BRSGP %s" -#: elf64-alpha.c:4387 +#: elf64-alpha.c:4360 msgid "" msgstr "" -#: elf64-alpha.c:4392 +#: elf64-alpha.c:4365 msgid "%B: !samegp reloc against symbol without .prologue: %s" msgstr "%B: !samegp relokasi terhadap simbol tanpa .prologue: %s" -#: elf64-alpha.c:4444 +#: elf64-alpha.c:4417 msgid "%B: unhandled dynamic relocation against %s" msgstr "%B: relokasi dinamis tidak ditangani terhadap %s" -#: elf64-alpha.c:4476 +#: elf64-alpha.c:4449 msgid "%B: pc-relative relocation against undefined weak symbol %s" msgstr "%B: pc-relative relokasi terhadap simbol lemah tidak terdefinisi %s" -#: elf64-alpha.c:4536 +#: elf64-alpha.c:4509 msgid "%B: dtp-relative relocation against dynamic symbol %s" msgstr "%B: dtp-relative relokasi terhadap simbol dinamis %s" -#: elf64-alpha.c:4559 +#: elf64-alpha.c:4532 msgid "%B: tp-relative relocation against dynamic symbol %s" msgstr "%B: tp-relative relokasi terhadap simbol dinamis %s" -#: elf64-hppa.c:2071 +#: elf64-hppa.c:2091 #, c-format msgid "stub entry for %s cannot load .plt, dp offset = %ld" msgstr "masukan stub untuk %s tidak dapat diload .plt, dp ofset = %ld" +#: elf64-hppa.c:3273 +msgid "%B(%A+0x%lx): cannot reach %s" +msgstr "%B(%A+0x%lx): tidak dapat mencapai %s" + #: elf64-mmix.c:1177 #, c-format msgid "" @@ -2283,65 +2442,65 @@ "Internal tidak konsisten: sisa %u != max %u.\n" " Tolong laporkan bug ini." -#: elf64-ppc.c:2561 libbfd.c:978 +#: elf64-ppc.c:2691 libbfd.c:978 msgid "%B: compiled for a big endian system and target is little endian" msgstr "%B: dikompile untuk sebuah sistem big endian dan target adalah little endian" -#: elf64-ppc.c:2564 libbfd.c:980 +#: elf64-ppc.c:2694 libbfd.c:980 msgid "%B: compiled for a little endian system and target is big endian" msgstr "%B: dikompile untuk sebuah sistem little endian dan target adalah big endian" -#: elf64-ppc.c:6065 +#: elf64-ppc.c:6338 #, c-format msgid "copy reloc against `%s' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc" msgstr "salin relokasi terhadap `%s' membutuhkan lazy plt linking; hindari konfigurasi LD_BIND_NOW=1 atau upgrade gcc" -#: elf64-ppc.c:6486 +#: elf64-ppc.c:6767 msgid "dynreloc miscount for %B, section %A" msgstr "dynareloc miscount untuk %B, bagian %A" -#: elf64-ppc.c:6570 +#: elf64-ppc.c:6851 msgid "%B: .opd is not a regular array of opd entries" msgstr "%B: .opd adalah bukan array regular dari masukan opd" -#: elf64-ppc.c:6579 +#: elf64-ppc.c:6860 msgid "%B: unexpected reloc type %u in .opd section" msgstr "%B: tipe relokasi %u tidak diduga dalam bagian .opd" -#: elf64-ppc.c:6600 +#: elf64-ppc.c:6881 msgid "%B: undefined sym `%s' in .opd section" msgstr "%B: tidak terdefinisi simbol `%s' dalam bagian .opd" -#: elf64-ppc.c:7377 elf64-ppc.c:7754 +#: elf64-ppc.c:7640 elf64-ppc.c:8017 #, c-format msgid "%s defined in removed toc entry" msgstr "%s terdefinisi dalam masukan toc terhapus" -#: elf64-ppc.c:8581 +#: elf64-ppc.c:8910 #, c-format msgid "long branch stub `%s' offset overflow" msgstr "stub brach panjang `%s' ofset overflow" -#: elf64-ppc.c:8640 +#: elf64-ppc.c:8969 #, c-format msgid "can't find branch stub `%s'" msgstr "tidak dapat menemukan branch stub `%s'" -#: elf64-ppc.c:8702 elf64-ppc.c:8822 +#: elf64-ppc.c:9031 elf64-ppc.c:9169 #, c-format msgid "linkage table error against `%s'" msgstr "linkage tabel error terhadap `%s'" -#: elf64-ppc.c:8978 +#: elf64-ppc.c:9326 #, c-format msgid "can't build branch stub `%s'" msgstr "tidak dapat membuat branch stub `%s'" -#: elf64-ppc.c:9451 +#: elf64-ppc.c:9799 msgid "%B section %A exceeds stub group size" msgstr "%B bagian %A melebihi ukuran grup stub" -#: elf64-ppc.c:10090 +#: elf64-ppc.c:10453 #, c-format msgid "" "linker stubs in %u group%s\n" @@ -2358,19 +2517,19 @@ " long toc adj %lu\n" " plt call %lu" -#: elf64-ppc.c:10769 +#: elf64-ppc.c:11252 msgid "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc" msgstr "%B(%A+0x%lx): otomatis multiple TOC tidak didukung menggunakan berkas crt anda; rekompile dengan -mminimal-toc atau upgrade gcc" -#: elf64-ppc.c:10777 +#: elf64-ppc.c:11260 msgid "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern" msgstr "%B(%A+0x%lx): sibling call optimization ke `%s' tidak membolehkan otomatis multiple TOC; rekompile dengan -mminimal-toc atau -fno-optimize-sibling-calls, atau buat `%s' extern" -#: elf64-ppc.c:11427 +#: elf64-ppc.c:11961 msgid "%B: relocation %s is not supported for symbol %s." msgstr "%B: relokasi %s tidak didukung untuk simbol %s." -#: elf64-ppc.c:11509 +#: elf64-ppc.c:12044 msgid "%B: error: relocation %s not a multiple of %d" msgstr "%B: error: relokasi %s bukan multiple dari %d" @@ -2395,31 +2554,31 @@ msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B" msgstr "Simbol `%s' memiliki tipe berbeda: %s dalam %B, sebelumnya REGISTER dalam %B" -#: elf64-sparc.c:678 +#: elf64-sparc.c:679 msgid "%B: linking UltraSPARC specific with HAL specific code" msgstr "%B: menghubungkan UltraSPARC spesifik dengan HAL spesifik kode" -#: elf64-x86-64.c:1047 elf64-x86-64.c:1207 elfxx-mips.c:7834 -msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" -msgstr "%B: relokasi %s terhadap `%s' tidak dapat digunkan ketika membuat sebuah objek terbagi; rekompile dengan -fPIC" - -#: elf64-x86-64.c:1138 +#: elf64-x86-64.c:1337 msgid "%B: '%s' accessed both as normal and thread local symbol" msgstr "%B: '%s' keduanya diakses secara normal dan thread simbol lokal" -#: elf64-x86-64.c:2559 +#: elf64-x86-64.c:2701 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d" +msgstr "%B: relokasi %s terhadap STT_GNU_IFUNC simbol `%s' memiliki addend bukan-nol: %d" + +#: elf64-x86-64.c:2980 msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object" msgstr "%B: relokasi R_X86_64_GOTOFF64 terhadap fungsi terproteksi `%s' tidak dapat digunakan ketika membuat sebuah objek terbagi" -#: elf64-x86-64.c:2670 +#: elf64-x86-64.c:3091 msgid "; recompile with -fPIC" msgstr "; rekompile dengan -fPIC" -#: elf64-x86-64.c:2675 +#: elf64-x86-64.c:3096 msgid "%B: relocation %s against %s `%s' can not be used when making a shared object%s" msgstr "%B: relokasi %s terhadap %s `%s' tidak dapat digunakan ketika membuat sebuah objek terbagi%s" -#: elf64-x86-64.c:2677 +#: elf64-x86-64.c:3098 msgid "%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s" msgstr "%B: relokasi %s terhadap tidak terdefinisi %s `%s' tidak dapat digunakan ketika membuat sebuah objek terbagi %s" @@ -2433,7 +2592,7 @@ msgid "%s: version count (%ld) does not match symbol count (%ld)" msgstr "%s: versi terhitung (%ld) tidak cocok dengan simbol terhitung (%ld)" -#: elfcode.h:1435 +#: elfcode.h:1441 #, c-format msgid "%s(%s): relocation %d has invalid symbol index %ld" msgstr "%s(%s): relokasi %d memiliki indek simbol tidak valid %ld" @@ -2442,305 +2601,313 @@ msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu." msgstr "Peringatan: %B terpotong: diperkirakan ukuran berkas core >= %lu, ditemukan: %lu." -#: elflink.c:1028 +#: elflink.c:1113 msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A" msgstr "%s: TLS definisi dalam %B bagian %A tidak cocok bukan-TLS definisi dalam %B bagian %A" -#: elflink.c:1032 +#: elflink.c:1117 msgid "%s: TLS reference in %B mismatches non-TLS reference in %B" msgstr "%s: TLS referensi dalam %B tidak cocok bukan-TLS referensi dalam %B" -#: elflink.c:1036 +#: elflink.c:1121 msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B" msgstr "%s: TLS definisi dalam %B bagian %A tidak cocok bukan-TLS referensi dalam %B" -#: elflink.c:1040 +#: elflink.c:1125 msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A" msgstr "%s: TLS referensi dalam %B tidak cocok bukan-TLS definisi dalam %B bagian %A" -#: elflink.c:1654 +#: elflink.c:1764 msgid "%B: unexpected redefinition of indirect versioned symbol `%s'" msgstr "%B: tidak diduga redefinisi dari indirek versioned simbol `%s'" -#: elflink.c:1982 +#: elflink.c:2077 msgid "%B: version node not found for symbol %s" msgstr "%B: titik versi tidak ditemukan untuk simbol %s" -#: elflink.c:2130 +#: elflink.c:2167 msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'" msgstr "%B: bad relokasi simbol indeks (0x%lx >= 0x%lx) untuk ofset 0x%lx dalam daerah `%A'" -#: elflink.c:2327 +#: elflink.c:2178 +msgid "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the object file has no symbol table" +msgstr "%B: bukan-nol simbol indeks (0x%lx) untuk offset 0x%lx dalam bagian `%A' ketika berkas objek tidak memiliki tabel simbol" + +#: elflink.c:2375 msgid "%B: relocation size mismatch in %B section %A" msgstr "%B: ukuran relokasi tidak cocok dalam %B bagian %A" -#: elflink.c:2629 +#: elflink.c:2678 #, c-format msgid "warning: type and size of dynamic symbol `%s' are not defined" msgstr "peringatan: tipe dan ukuran dari simbol dinamis `%s' tidak terdefinisi" -#: elflink.c:3953 +#: elflink.c:3424 +msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n" +msgstr "%P: kode mesin alternatif untuk ELF ditemukan (%d) dalam %B, diduga %d\n" + +#: elflink.c:4032 msgid "%B: %s: invalid version %u (max %d)" msgstr "%B: %s: versi %u tidak valid (max %d)" -#: elflink.c:3989 +#: elflink.c:4068 msgid "%B: %s: invalid needed version %d" msgstr "%B: %s: tidak valid dibutuhkan versi %d" -#: elflink.c:4172 +#: elflink.c:4253 msgid "Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %A" msgstr "Peringatan: alignmen %u dari simbol umum `%s' dalam %B adalah lebih besar daripada alignment (%u) dari bagian ini %A" -#: elflink.c:4178 +#: elflink.c:4259 msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B" msgstr "Peringatan: alignment %u dari simbol `%s' dalam %B adalah lebih kecil daripada %u dalam %B" -#: elflink.c:4193 +#: elflink.c:4274 msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B" msgstr "Peringatan: ukuran dari simbol `%s' berubah dari %lu dalam %B ke %lu dalam %B" -#: elflink.c:4371 +#: elflink.c:4438 #, c-format msgid "%s: invalid DSO for symbol `%s' definition" msgstr "%s: tidak valid DSO untuk simbol `%s' definisi" -#: elflink.c:5621 +#: elflink.c:5688 #, c-format msgid "%s: undefined version: %s" msgstr "%s: versi tidak terdefinisi: %s" -#: elflink.c:5689 +#: elflink.c:5756 msgid "%B: .preinit_array section is not allowed in DSO" msgstr "%B: .preinit_array bagian tidak diperbolehkan dalam DSO" -#: elflink.c:7414 +#: elflink.c:7484 #, c-format msgid "undefined %s reference in complex symbol: %s" msgstr "undefined %s referensi dalam simbol kompleks: %s" -#: elflink.c:7568 +#: elflink.c:7638 #, c-format msgid "unknown operator '%c' in complex symbol" msgstr "operator tidak diketahui '%c' dalam simbol kompleks" -#: elflink.c:7904 elflink.c:7921 elflink.c:7958 elflink.c:7975 +#: elflink.c:7976 elflink.c:7993 elflink.c:8030 elflink.c:8047 msgid "%B: Unable to sort relocs - they are in more than one size" msgstr "%B: Tidak dapat mengurutkan relokasi - mereka berada dalam lebih dari satu ukuran" -#: elflink.c:7935 elflink.c:7989 +#: elflink.c:8007 elflink.c:8061 msgid "%B: Unable to sort relocs - they are of an unknown size" msgstr "%B: Tidak dapat mengurutkan relokasi - mereka dari ukuran yang tidak diketahui" -#: elflink.c:8038 +#: elflink.c:8112 msgid "Not enough memory to sort relocations" msgstr "Tidak cukup memori untuk mengurutkan relokasi" -#: elflink.c:8227 +#: elflink.c:8304 msgid "%B: Too many sections: %d (>= %d)" msgstr "%B: Terlalu banyak bagian: %d (>= %d)" -#: elflink.c:8461 +#: elflink.c:8540 msgid "%B: %s symbol `%s' in %B is referenced by DSO" msgstr "%B: %s simbol `%s' dalam %B adalah direferensikan oleh DSO" -#: elflink.c:8544 +#: elflink.c:8625 msgid "%B: could not find output section %A for input section %A" msgstr "%B: tidak dapat menemukan bagian keluaran %A untuk daerah masukan %A" -#: elflink.c:8655 +#: elflink.c:8745 msgid "%B: %s symbol `%s' isn't defined" msgstr "%B: %s simbol `%s' tidak didefinisikan" -#: elflink.c:9141 +#: elflink.c:9301 msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol" msgstr "error: %B berisi sebuah relokasi (0x%s) untuk daerah %A yang mereferensikan sebuah bukan-exist simbol global" -#: elflink.c:9205 +#: elflink.c:9366 msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n" msgstr "%X`%s' direferensikan dalam daerah `%A' dari %B: didefinisikan dalam daerah diabaikan `%A' dari %B\n" -#: elflink.c:9825 +#: elflink.c:9991 msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections" msgstr "%A memiliki keduanya terurut [`%A' dalam %B] dan daerah tidak terurut [`%A' dalam %B]" -#: elflink.c:9830 +#: elflink.c:9996 #, c-format msgid "%A has both ordered and unordered sections" msgstr "%A memiliki daerah terurut dan tidak terurut" -#: elflink.c:10715 elflink.c:10759 +#: elflink.c:10872 elflink.c:10916 msgid "%B: could not find output section %s" msgstr "%B: tidak dapat menemukan daerah keluaran %s" -#: elflink.c:10720 +#: elflink.c:10877 #, c-format msgid "warning: %s section has zero size" msgstr "peringatan: %s daerah memiliki ukuran nol" -#: elflink.c:10824 +#: elflink.c:10982 msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n" msgstr "%P: peringatan: membuat sebuah DT_TEXTREL dalam sebuah objek terbagi.\n" -#: elflink.c:11006 +#: elflink.c:11165 msgid "%P%X: can not read symbols: %E\n" msgstr "%P%X: tidak dapat membaca simbol: %E\n" -#: elflink.c:11313 +#: elflink.c:11483 msgid "Removing unused section '%s' in file '%B'" msgstr "Menghapus daerah tidak digunakan '%s' dalam berkas '%B'" -#: elflink.c:11525 +#: elflink.c:11695 msgid "Warning: gc-sections option ignored" msgstr "Peringatan: gc-sections pilihan diabaikan" -#: elflink.c:12056 +#: elflink.c:12242 msgid "%B: ignoring duplicate section `%A'" msgstr "%B: peringatan daerah duplikasi `%A'" -#: elflink.c:12063 elflink.c:12070 +#: elflink.c:12249 elflink.c:12256 msgid "%B: duplicate section `%A' has different size" msgstr "%B: daerah duplikasi `%A' memiliki ukuran berbeda" -#: elflink.c:12078 elflink.c:12083 +#: elflink.c:12264 elflink.c:12269 msgid "%B: warning: could not read contents of section `%A'" msgstr "%B: peringatan: tidak dapat membaca isi dari daerah `%A'" -#: elflink.c:12087 +#: elflink.c:12273 msgid "%B: warning: duplicate section `%A' has different contents" msgstr "%B: peringatan: duplikasi daerah `%A' memiliki isi berbeda" -#: elflink.c:12166 linker.c:3080 -msgid "%F%P: already_linked_table: %E" -msgstr "%F%P: already_linked_table: %E" +#: elflink.c:12374 linker.c:3098 +msgid "%F%P: already_linked_table: %E\n" +msgstr "%F%P: already_linked_table: %E\n" -#: elfxx-mips.c:1197 +#: elfxx-mips.c:1222 msgid "static procedure (no name)" msgstr "prosedur statis (tidak bernama)" -#: elfxx-mips.c:5562 +#: elfxx-mips.c:5588 msgid "%B: %A+0x%lx: jump to stub routine which is not jal" msgstr "%B: %A+0x%lx: lompat ke routine stub dimana bukan jal" -#: elfxx-mips.c:6206 elfxx-mips.c:6427 +#: elfxx-mips.c:6235 elfxx-mips.c:6458 msgid "%B: Warning: bad `%s' option size %u smaller than its header" msgstr "%B: Peringatan: pilihan `%s' buruk ukuran %u lebih kecil dari headernya" -#: elfxx-mips.c:7174 elfxx-mips.c:7299 +#: elfxx-mips.c:7205 elfxx-mips.c:7330 msgid "%B: Warning: cannot determine the target function for stub section `%s'" msgstr "%B: Peringatan: tidak dapat menentukan fungsi terget untuk daerah stub `%s'" -#: elfxx-mips.c:7428 +#: elfxx-mips.c:7459 msgid "%B: Malformed reloc detected for section %s" msgstr "%B: Malformed relokasi terdeteksi untuk daerah %s" -#: elfxx-mips.c:7468 +#: elfxx-mips.c:7499 msgid "%B: GOT reloc at 0x%lx not expected in executables" msgstr "%B: GOT relokasi di 0x%lx tidak diduga dalam aplikasi" -#: elfxx-mips.c:7566 +#: elfxx-mips.c:7602 msgid "%B: CALL16 reloc at 0x%lx not against global symbol" msgstr "%B: CALL16 relokasi di 0x%lx tidak terhadap simbol global" -#: elfxx-mips.c:8244 +#: elfxx-mips.c:8280 #, c-format msgid "non-dynamic relocations refer to dynamic symbol %s" msgstr "bukan-dinamis relokasi refer ke simbol dinamis %s" -#: elfxx-mips.c:8947 +#: elfxx-mips.c:8985 msgid "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'" msgstr "%B: Tidak dapat menemukan cocok LO16 relokasi terhadap `%s' untuk %s di 0x%lx di daerah `%A'" -#: elfxx-mips.c:9086 +#: elfxx-mips.c:9124 msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)" msgstr "daerah data-kecil melebihi 64KB; dibawah data-kecil batas ukuran (lihat pilihan -G)" -#: elfxx-mips.c:11887 +#: elfxx-mips.c:11940 #, c-format msgid "%s: illegal section name `%s'" msgstr "%s: nama daerah `%s' ilegal" -#: elfxx-mips.c:12262 elfxx-mips.c:12288 +#: elfxx-mips.c:12318 elfxx-mips.c:12344 msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float" msgstr "Peringatan: %B menggunakan 0msingle-float, %B menggunakan -mdouble-float" -#: elfxx-mips.c:12274 elfxx-mips.c:12330 +#: elfxx-mips.c:12330 elfxx-mips.c:12386 msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64" msgstr "Peringatan: %B menggunakan -msingle-float, %B menggunakan -mips32r2 -mfp64" -#: elfxx-mips.c:12300 elfxx-mips.c:12336 +#: elfxx-mips.c:12356 elfxx-mips.c:12392 msgid "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64" msgstr "Peringatan: %B menggunakan -mdouble-float, %B menggunakan -mips32r2 -mfp64" -#: elfxx-mips.c:12378 +#: elfxx-mips.c:12434 msgid "%B: endianness incompatible with that of the selected emulation" msgstr "%B: endianness tidak kompatibel dengan yang dipilih di emulasi" -#: elfxx-mips.c:12389 +#: elfxx-mips.c:12445 msgid "%B: ABI is incompatible with that of the selected emulation" msgstr "%B: ABI tidak kompatibel dengan yang dipilih di emulasi" -#: elfxx-mips.c:12470 +#: elfxx-mips.c:12526 msgid "%B: warning: linking abicalls files with non-abicalls files" msgstr "%B: peringatan: menghubungkan berkas abicalls dengan berkas bukan-abicalls" -#: elfxx-mips.c:12487 +#: elfxx-mips.c:12543 msgid "%B: linking 32-bit code with 64-bit code" msgstr "%B: menghubungkan 32-bit kode dengan 64-bit kode" -#: elfxx-mips.c:12515 +#: elfxx-mips.c:12571 msgid "%B: linking %s module with previous %s modules" msgstr "%B: menghubungkan %s modul dengan modul %s sebelumnya" -#: elfxx-mips.c:12538 +#: elfxx-mips.c:12594 msgid "%B: ABI mismatch: linking %s module with previous %s modules" msgstr "%B: ABI tidak cocok: menghubungkan modul %s dengan modul %s sebelumnya" -#: elfxx-mips.c:12702 +#: elfxx-mips.c:12758 #, c-format msgid " [abi=O32]" msgstr " [abi=032]" -#: elfxx-mips.c:12704 +#: elfxx-mips.c:12760 #, c-format msgid " [abi=O64]" msgstr " [abi=064]" -#: elfxx-mips.c:12706 +#: elfxx-mips.c:12762 #, c-format msgid " [abi=EABI32]" msgstr " [abi=EABI32]" -#: elfxx-mips.c:12708 +#: elfxx-mips.c:12764 #, c-format msgid " [abi=EABI64]" msgstr " [abi=EABI64]" -#: elfxx-mips.c:12710 +#: elfxx-mips.c:12766 #, c-format msgid " [abi unknown]" msgstr " [abi tidak diketahui]" -#: elfxx-mips.c:12712 +#: elfxx-mips.c:12768 #, c-format msgid " [abi=N32]" msgstr " [abi=N32]" -#: elfxx-mips.c:12714 +#: elfxx-mips.c:12770 #, c-format msgid " [abi=64]" msgstr " [abi=64]" -#: elfxx-mips.c:12716 +#: elfxx-mips.c:12772 #, c-format msgid " [no abi set]" msgstr " [bukan abi set]" -#: elfxx-mips.c:12737 +#: elfxx-mips.c:12793 #, c-format msgid " [unknown ISA]" msgstr " [ISA tidak diketahui]" -#: elfxx-mips.c:12748 +#: elfxx-mips.c:12804 #, c-format msgid " [not 32bitmode]" msgstr " [bukan 32bitmode]" @@ -2750,10 +2917,6 @@ msgid "invalid relocation type %d" msgstr "tipe relokasi %d tidak valid" -#: elfxx-sparc.c:2976 -msgid "%B: probably compiled without -fPIC?" -msgstr "%B: mungkin dikompile tanpa -fPIC?" - #: i386linux.c:455 m68klinux.c:459 sparclinux.c:453 #, c-format msgid "Output file requires shared library `%s'\n" @@ -2856,15 +3019,75 @@ msgid "Attempt to do relocatable link with %s input and %s output" msgstr "Mencoba untuk merelokasi link dengan masukan %s dan keluaran %s" -#: linker.c:3047 +#: linker.c:3065 msgid "%B: warning: ignoring duplicate section `%A'\n" msgstr "%B: peringatan: mengabaikan bagiann terduplikasi `%A'\n" -#: linker.c:3061 +#: linker.c:3079 msgid "%B: warning: duplicate section `%A' has different size\n" msgstr "%B: peringatan: bagian terduplikasi `%A' memiliki ukuran berbeda\n" -#: merge.c:828 +#: mach-o.c:3195 +#, c-format +msgid "Mach-O header:\n" +msgstr "Kepala Mach-O:\n" + +#: mach-o.c:3196 +#, c-format +msgid " magic : %08lx\n" +msgstr " majik : %08lx\n" + +#: mach-o.c:3197 +#, c-format +msgid " cputype : %08lx (%s)\n" +msgstr " tipe-cpu : %08lx (%s)\n" + +#: mach-o.c:3199 +#, c-format +msgid " cpusubtype: %08lx\n" +msgstr " subtipecpu: %08lx\n" + +#: mach-o.c:3200 +#, c-format +msgid " filetype : %08lx (%s)\n" +msgstr " tipe-berkas : %08lx (%s)\n" + +#: mach-o.c:3203 +#, c-format +msgid " ncmds : %08lx\n" +msgstr " ncmds : %08lx\n" + +#: mach-o.c:3204 +#, c-format +msgid " sizeofcmds: %08lx\n" +msgstr " besardariperintah: %08lx\n" + +#: mach-o.c:3205 +#, c-format +msgid " flags : %08lx (" +msgstr " tanda : %08lx (" + +#: mach-o.c:3207 +#, c-format +msgid ")\n" +msgstr ")\n" + +#: mach-o.c:3208 +#, c-format +msgid " reserved : %08x\n" +msgstr " direserve : %08x\n" + +#: mach-o.c:3218 +#, c-format +msgid "Segments and Sections:\n" +msgstr "Bagian dan Daerah:\n" + +#: mach-o.c:3219 +#, c-format +msgid " #: Segment name Section name Address\n" +msgstr " #: Nama bagian Nama daerah Alamat\n" + +#: merge.c:829 #, c-format msgid "%s: access beyond end of merged section (%ld)" msgstr "%s: akses diluar dari daerah merged (%ld)" @@ -3004,7 +3227,7 @@ msgid "Unhandled OSF/1 core file section type %d\n" msgstr "Tidak tertangani berkas core OSF/1 daerah tipe %d\n" -#: pe-mips.c:607 +#: pe-mips.c:613 msgid "%B: `ld -r' not supported with PE MIPS objects\n" msgstr "%B: `ld -r' tidak didukung dengan PE MIPS objek\n" @@ -3012,44 +3235,64 @@ #. 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:723 +#: pe-mips.c:729 msgid "%B: unimplemented %s\n" msgstr "%B: tidak terimplementasi %s\n" -#: pe-mips.c:749 +#: pe-mips.c:755 msgid "%B: jump too far away\n" msgstr "%B: lompat terlalu jauh\n" -#: pe-mips.c:775 +#: pe-mips.c:781 msgid "%B: bad pair/reflo after refhi\n" msgstr "%B: pasangan/reflo buruk setelah refhi\n" +#: pei-x86_64.c:465 +#, c-format +msgid "warning: .pdata section size (%ld) is not a multiple of %d\n" +msgstr "peringatan: besar (%ld) daerah .pdata tidak dalam kelipatan dari %d\n" + +#: pei-x86_64.c:469 peigen.c:1620 peigen.c:1799 pepigen.c:1620 pepigen.c:1799 +#: pex64igen.c:1620 pex64igen.c:1799 +#, c-format +msgid "" +"\n" +"The Function Table (interpreted .pdata section contents)\n" +msgstr "" +"\n" +"Tabel Fungsi (diinterpretasikan isi daerah .pdata)\n" + +#: pei-x86_64.c:471 +#, c-format +msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" +msgstr " vma:\t\t\tAlamatAwal \t AlamatAkhir\t UnwindData\n" + #. XXX code yet to be written. -#: peicode.h:759 +#: peicode.h:752 msgid "%B: Unhandled import type; %x" msgstr "%B: Tipe impor tidak tertangani; %x" -#: peicode.h:764 +#: peicode.h:757 msgid "%B: Unrecognised import type; %x" msgstr "%B: Tipe impor tidak dikenal; %x" -#: peicode.h:778 +#: peicode.h:771 msgid "%B: Unrecognised import name type; %x" msgstr "%B: Nama tipe impor tidak dikenal; %x" -#: peicode.h:1161 +#: peicode.h:1154 msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive" msgstr "%B: Tipe mesin (0x%x) tidak dikenal dalam Import Library Format archive" -#: peicode.h:1173 +#: peicode.h:1166 msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive" msgstr "%B: Dikenal tetapi tidak tertangani tipe mesin (0x%x) dalam Import Library Format archive" -#: peicode.h:1191 +#: peicode.h:1184 msgid "%B: size field is zero in Import Library Format header" msgstr "%B: besar field adalah nol dalam Import Library Format header" -#: peicode.h:1222 +#: peicode.h:1215 msgid "%B: string not null terminated in ILF object file." msgstr "%B: string tidak diakhiri kosong dalam berkas objek ILF." @@ -3106,7 +3349,7 @@ msgid "Partition[%d] length = 0x%.8lx (%ld)\n" msgstr "Panjang partisi[%d] = 0x%.8lx (%ld)\n" -#: som.c:5137 +#: som.c:5114 #, c-format msgid "" "\n" @@ -3115,7 +3358,7 @@ "\n" "Tambahan exec header\n" -#: som.c:5440 +#: som.c:5417 msgid "som_sizeof_headers unimplemented" msgstr "som_sizeof_headers tidak terimplementasi" @@ -3131,122 +3374,173 @@ msgid "%B(%A+0x%lx): Stabs entry has invalid string index." msgstr "%B(%A+0x%lx): Masukan stabs memiliki index string tidak valid." -#: syms.c:1067 +#: syms.c:1079 msgid "Unsupported .stab relocation" msgstr "Relokasi .stab tidak didukung" -#: vms-gsd.c:338 +#: vms-gsd.c:350 #, c-format msgid "bfd_make_section (%s) failed" msgstr "bfd_make_section (%s) gagal" -#: vms-gsd.c:353 +#: vms-gsd.c:365 #, c-format msgid "bfd_set_section_flags (%s, %x) failed" msgstr "bfd_set_section_flags (%s, %x) gagal" -#: vms-gsd.c:388 +#: vms-gsd.c:399 #, c-format msgid "Size mismatch section %s=%lx, %s=%lx" msgstr "Ukuran tidak cocok daerah %s=%lx, %s=%lx" -#: vms-gsd.c:679 +#: vms-gsd.c:754 #, c-format -msgid "unknown gsd/egsd subtype %d" -msgstr "tidak diketahui gds/egsd subtype %d" +msgid "Unknown GSD/EGSD subtype %d" +msgstr "tidak diketahui GDS/EGSD subtype %d" -#: vms-hdr.c:328 +#: vms-hdr.c:364 msgid "Object module NOT error-free !\n" msgstr "Modul objek Tidak bebas-error !\n" -#: vms-misc.c:474 +#: vms-hdr.c:878 +#, c-format +msgid "unknown source command %d" +msgstr "sumber perintah %d tidak diketahui" + +#: vms-hdr.c:951 +msgid "DST_S_C_SET_LINUM_INCR not implemented" +msgstr "DST_S_C_SET_LINUM_INCR belum diimplementasikan" + +#: vms-hdr.c:957 +msgid "DST_S_C_SET_LINUM_INCR_W not implemented" +msgstr "DST_S_C_SET_LINUM_INCR_W belum diimplementasikan" + +#: vms-hdr.c:963 +msgid "DST_S_C_RESET_LINUM_INCR not implemented" +msgstr "DST_S_C_RESET_LINUM_INCR belum diimplementasikan" + +#: vms-hdr.c:969 +msgid "DST_S_C_BEG_STMT_MODE not implemented" +msgstr "DST_S_C_BEG_STMT_MODE belum diimplementasikan" + +#: vms-hdr.c:975 +msgid "DST_S_C_END_STMT_MODE not implemented" +msgstr "DST_S_C_END_STMT_MODE belum diimplementasikan" + +#: vms-hdr.c:1008 +msgid "DST_S_C_SET_PC not implemented" +msgstr "DST_S_C_SET_PC belum diimplementasikan" + +#: vms-hdr.c:1014 +msgid "DST_S_C_SET_PC_W not implemented" +msgstr "DST_S_C_SET_PC_W belum diimplementasikan" + +#: vms-hdr.c:1020 +msgid "DST_S_C_SET_PC_L not implemented" +msgstr "DST_S_C_SET_PC_L belum diimplementasikan" + +#: vms-hdr.c:1026 +msgid "DST_S_C_SET_STMTNUM not implemented" +msgstr "DST_S_C_SET_STMTNUM belum diimplementasikan" + +#: vms-hdr.c:1079 +#, c-format +msgid "unknown line command %d" +msgstr "baris perintah %d tidak diketahui" + +#: vms-misc.c:588 #, c-format msgid "Stack overflow (%d) in _bfd_vms_push" msgstr "Stack overflow (%d) dalam _bfd_vms_push" -#: vms-misc.c:489 +#: vms-misc.c:603 msgid "Stack underflow in _bfd_vms_pop" msgstr "Stack underflow dalam _bfd_vms_pop" -#: vms-misc.c:808 +#: vms-misc.c:844 msgid "_bfd_vms_output_counted called with zero bytes" msgstr "_bfd_vms_output_counted dipanggil dengan zero bytes" -#: vms-misc.c:813 +#: vms-misc.c:849 msgid "_bfd_vms_output_counted called with too many bytes" msgstr "_bfd_vms_output_counted dipanggil dengan terlalu banyak bytes" -#: vms-misc.c:931 +#: vms-misc.c:967 #, c-format msgid "Symbol %s replaced by %s\n" msgstr "Simbol %s digantikan oleh %s\n" -#: vms-misc.c:990 +#: vms-misc.c:1026 #, c-format msgid "failed to enter %s" msgstr "gagal untuk memasuki %s" -#: vms-tir.c:57 +#: vms-tir.c:83 msgid "No Mem !" msgstr "Tidak ada Memori !" -#: vms-tir.c:300 +#. These names have not yet been added to this switch statement. +#: vms-tir.c:346 +#, c-format +msgid "unknown ETIR command %d" +msgstr "perintah ETIR %d tidak diketahui" + +#: vms-tir.c:440 #, c-format msgid "bad section index in %s" msgstr "Indek daerah buruk dalam %s" -#: vms-tir.c:313 +#: vms-tir.c:459 #, c-format msgid "unsupported STA cmd %s" msgstr "perintah %s STA tidak didukung" -#: vms-tir.c:318 vms-tir.c:1120 +#: vms-tir.c:464 vms-tir.c:1304 #, c-format msgid "reserved STA cmd %d" msgstr "perintah %d STA direserve" -#: vms-tir.c:410 vms-tir.c:432 -#, c-format -msgid "%s: no symbol \"%s\"" -msgstr "%s: tidak ada simbol \"%s\"" - #. Unsigned shift. #. Rotate. #. Redefine symbol to current location. #. Define a literal. -#: vms-tir.c:497 vms-tir.c:606 vms-tir.c:704 vms-tir.c:721 vms-tir.c:728 -#: vms-tir.c:736 vms-tir.c:1440 +#: vms-tir.c:655 vms-tir.c:774 vms-tir.c:894 vms-tir.c:1624 #, c-format msgid "%s: not supported" msgstr "%s: tidak didukung" -#: vms-tir.c:502 vms-tir.c:1297 +#: vms-tir.c:661 vms-tir.c:1481 #, c-format msgid "%s: not implemented" msgstr "%s: tidak terimplementasi" -#: vms-tir.c:506 vms-tir.c:1301 +#: vms-tir.c:666 vms-tir.c:1485 #, c-format msgid "reserved STO cmd %d" msgstr "reserved STO perintah %d" -#: vms-tir.c:621 vms-tir.c:1445 +#: vms-tir.c:789 vms-tir.c:1629 #, c-format msgid "reserved OPR cmd %d" msgstr "reserved OPR perintah %d" -#: vms-tir.c:681 vms-tir.c:1509 +#: vms-tir.c:852 vms-tir.c:1693 #, c-format msgid "reserved CTL cmd %d" msgstr "reserved CTL perintah %d" +#: vms-tir.c:966 +#, c-format +msgid "reserved STC cmd %d" +msgstr "perintah %d direserve" + #. stack byte from image #. arg: none. -#: vms-tir.c:1028 +#: vms-tir.c:1212 msgid "stack-from-image not implemented" msgstr "stack-from-image tidak terimplementasi" -#: vms-tir.c:1046 +#: vms-tir.c:1230 msgid "stack-entry-mask not fully implemented" msgstr "stack-entry-mask tidak terimplementasi secara penuh" @@ -3257,270 +3551,285 @@ #. #. compare argument descriptor with symbol argument (ARG$V_PASSMECH) #. and stack TRUE (args match) or FALSE (args dont match) value. -#: vms-tir.c:1060 +#: vms-tir.c:1244 msgid "PASSMECH not fully implemented" msgstr "PASSMECH tidak terimplementasi secara penuh" -#: vms-tir.c:1079 +#: vms-tir.c:1263 msgid "stack-local-symbol not fully implemented" msgstr "stack-local-symbol tidak terimplementasi secara penuh" -#: vms-tir.c:1092 +#: vms-tir.c:1276 msgid "stack-literal not fully implemented" msgstr "stack-literal tidak terimplementasi secara penuh" -#: vms-tir.c:1113 +#: vms-tir.c:1297 msgid "stack-local-symbol-entry-point-mask not fully implemented" msgstr "stack-local-symbol-entry-point-mask tidak terimplementasi secara penuh" -#: vms-tir.c:1387 vms-tir.c:1399 vms-tir.c:1411 vms-tir.c:1423 vms-tir.c:1488 -#: vms-tir.c:1496 vms-tir.c:1504 +#: vms-tir.c:1571 vms-tir.c:1583 vms-tir.c:1595 vms-tir.c:1607 vms-tir.c:1672 +#: vms-tir.c:1680 vms-tir.c:1688 #, c-format msgid "%s: not fully implemented" msgstr "%s: tidak terimplementasi secara penuh" -#: vms-tir.c:1562 +#: vms-tir.c:1746 #, c-format msgid "obj code %d not found" msgstr "obj kode %d tidak ditemukan" -#: vms-tir.c:1870 +#: vms-tir.c:2019 +#, c-format +msgid "Reloc size error in section %s" +msgstr "Kesalahan ukuran relokasi dalam daerah %s" + +#: vms-tir.c:2112 vms-tir.c:2129 vms-tir.c:2147 vms-tir.c:2159 vms-tir.c:2170 +#: vms-tir.c:2182 +#, c-format +msgid "Unknown reloc %s + %s" +msgstr "Relokasi %s + %s tidak diketahui" + +#: vms-tir.c:2249 +#, c-format +msgid "Unknown symbol %s in command %s" +msgstr "Simbol %s tidak diketahui dalam perintah %s" + +#: vms-tir.c:2504 #, c-format msgid "SEC_RELOC with no relocs in section %s" msgstr "SEC_RELOC dengan tidak ada relokasi dalam daerah %s" -#: vms-tir.c:2152 +#: vms-tir.c:2556 vms-tir.c:2783 +#, c-format +msgid "Size error in section %s" +msgstr "Kesalahan ukuran dalam daerah %s" + +#: vms-tir.c:2725 +msgid "Spurious ALPHA_R_BSR reloc" +msgstr "Spurious ALPHA_R_BSR relokasi" + +#: vms-tir.c:2770 #, c-format msgid "Unhandled relocation %s" msgstr "Relokasi %s tidak tertangani" -#: xcofflink.c:566 +#: xcofflink.c:836 #, c-format msgid "%s: XCOFF shared object when not producing XCOFF output" msgstr "%s: XCOFF objek shared ketika tidak menghasilkan keluaran XCOFF" -#: xcofflink.c:587 +#: xcofflink.c:857 #, c-format msgid "%s: dynamic object with no .loader section" msgstr "%s: objek dinamis dengan tidak ada daerah .loader" -#: xcofflink.c:1150 +#: xcofflink.c:1415 msgid "%B: `%s' has line numbers but no enclosing section" msgstr "%B: `%s' memiliki nomor baris tetapi tidak ditutupi daerah" -#: xcofflink.c:1202 +#: xcofflink.c:1467 msgid "%B: class %d symbol `%s' has no aux entries" msgstr "%B: kelas %d simbol `%s' tidak memiliki tambahan masukan" -#: xcofflink.c:1225 +#: xcofflink.c:1489 msgid "%B: symbol `%s' has unrecognized csect type %d" msgstr "%B: simbol `%s' memiliki tipe %d csect tidak dikenal" -#: xcofflink.c:1237 +#: xcofflink.c:1501 msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" msgstr "%B: simbol XTY_ER buruk `%s': kelas %d scnum %d scnlen %d" -#: xcofflink.c:1273 +#: xcofflink.c:1530 msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" msgstr "%B: XMC_TC0 simbol `%s' adalah kelas %d scnlen %d" -#: xcofflink.c:1419 +#: xcofflink.c:1676 msgid "%B: csect `%s' not in enclosing section" msgstr "%B: csect `%s' tidak dalam lingkup daerah" -#: xcofflink.c:1526 +#: xcofflink.c:1783 msgid "%B: misplaced XTY_LD `%s'" msgstr "%B: salah tempat XTY_LD `%s'" -#: xcofflink.c:1842 +#: xcofflink.c:2102 msgid "%B: reloc %s:%d not in csect" msgstr "%B: relokasi %s:%d tidak dalam csect" -#: xcofflink.c:2640 +#: xcofflink.c:3177 #, c-format msgid "%s: no such symbol" msgstr "%s: tidak ada simbol seperti itu" -#: xcofflink.c:2869 +#: xcofflink.c:3282 #, c-format msgid "warning: attempt to export undefined symbol `%s'" msgstr "peringatan: mencoba untuk mengekspor simbol tidak terdefinisi `%s'" -#: xcofflink.c:3036 +#: xcofflink.c:3664 msgid "error: undefined symbol __rtinit" msgstr "error: simbol tidak terdefinisi __rtinit" -#: xcofflink.c:3656 -#, c-format -msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" -msgstr "TOC overflow: 0x%lx > 0x10000; coba -mminimal-toc ketika mengkompile" +#: xcofflink.c:4041 +msgid "%B: loader reloc in unrecognized section `%s'" +msgstr "%B: loader relokasi dalam daerah tidak dikenal `%s'" -#: xcofflink.c:4492 -msgid "%B: loader reloc in unrecognized section `%A'" -msgstr "%B: loader relokasi dalam daerah tidak dikenal `%A'" - -#: xcofflink.c:4513 +#: xcofflink.c:4052 msgid "%B: `%s' in loader reloc but not loader sym" msgstr "%B: `%s' dalam relokasi loader tetapi bukan loader sym" -#: xcofflink.c:4528 +#: xcofflink.c:4068 msgid "%B: loader reloc in read-only section %A" msgstr "%B: loader relokasi dalam daerah baca-saja %A" -#: xcofflink.c:4937 xcofflink.c:4999 xcofflink.c:5294 +#: xcofflink.c:5086 #, c-format -msgid "%s: loader reloc in unrecognized section `%s'" -msgstr "%s: loader relokasi dalam daerah `%s' tidak dikenal" - -#: xcofflink.c:5305 -#, c-format -msgid "%s: `%s' in loader reloc but not loader sym" -msgstr "%s: `%s' dalam relokasi loader tetapi bukan loader sym" +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "TOC overflow: 0x%lx > 0x10000; coba -mminimal-toc ketika mengkompile" -#: elf32-ia64.c:1037 elf64-ia64.c:1037 +#: elf32-ia64.c:1050 elf64-ia64.c:1050 msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch." msgstr "%B: Tidak dapat relaks br di 0x%lx dalam daerah `%A'. Tolong gunakan brl atau indirect branch." -#: elf32-ia64.c:2742 elf64-ia64.c:2742 +#: elf32-ia64.c:2739 elf64-ia64.c:2739 msgid "@pltoff reloc against local symbol" msgstr "@pltoff relokasi terhadap simbol lokal" -#: elf32-ia64.c:4317 elf64-ia64.c:4317 +#: elf32-ia64.c:4314 elf64-ia64.c:4314 #, c-format msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" msgstr "%s: short data segment overflowed (0x%lx >= 0x400000)" -#: elf32-ia64.c:4328 elf64-ia64.c:4328 +#: elf32-ia64.c:4325 elf64-ia64.c:4325 #, c-format msgid "%s: __gp does not cover short data segment" msgstr "%s: __gp tidak meliputi segmen data pendek" -#: elf32-ia64.c:4598 elf64-ia64.c:4598 +#: elf32-ia64.c:4595 elf64-ia64.c:4595 msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" msgstr "%B: bukan-pic kode dengan relokasi imm terhadap simbol dinamis `%s'" -#: elf32-ia64.c:4665 elf64-ia64.c:4665 +#: elf32-ia64.c:4662 elf64-ia64.c:4662 msgid "%B: @gprel relocation against dynamic symbol %s" msgstr "%B: @gprel relokasi terhadap simbol dinamis %s" -#: elf32-ia64.c:4728 elf64-ia64.c:4728 +#: elf32-ia64.c:4725 elf64-ia64.c:4725 msgid "%B: linking non-pic code in a position independent executable" msgstr "%B: menghubungkan dengan kode bukan-pic dalam sebuah executable bebas posisi" -#: elf32-ia64.c:4865 elf64-ia64.c:4865 +#: elf32-ia64.c:4862 elf64-ia64.c:4862 msgid "%B: @internal branch to dynamic symbol %s" msgstr "%B: @internal branck ke simbol dinamis %s" -#: elf32-ia64.c:4867 elf64-ia64.c:4867 +#: elf32-ia64.c:4864 elf64-ia64.c:4864 msgid "%B: speculation fixup to dynamic symbol %s" msgstr "%B: spekulasi fixup ke simbol dinamis %s" -#: elf32-ia64.c:4869 elf64-ia64.c:4869 +#: elf32-ia64.c:4866 elf64-ia64.c:4866 msgid "%B: @pcrel relocation against dynamic symbol %s" msgstr "%B: @pcrel relokasi terhadap simbol dinamis %s" -#: elf32-ia64.c:5066 elf64-ia64.c:5066 +#: elf32-ia64.c:5063 elf64-ia64.c:5063 msgid "unsupported reloc" msgstr "relokasi tidak didukung" -#: elf32-ia64.c:5104 elf64-ia64.c:5104 +#: elf32-ia64.c:5101 elf64-ia64.c:5101 msgid "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'." msgstr "%B: hilang daerah TLS untuk relokasi %s terhadap `%s' di 0x%lx dalam daerah `%A'." -#: elf32-ia64.c:5119 elf64-ia64.c:5119 +#: elf32-ia64.c:5116 elf64-ia64.c:5116 msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)." msgstr "%B: Tidak dapat relaks br (%s) ke `%s' di 0x%lx dalam daerah `%A' dengan ukuran 0x%lx (> 0x1000000)." -#: elf32-ia64.c:5375 elf64-ia64.c:5375 +#: elf32-ia64.c:5372 elf64-ia64.c:5372 msgid "%B: linking trap-on-NULL-dereference with non-trapping files" msgstr "%B: menghubungkan trap-on-NULL-dereference dengan berkas bukan-trapping" -#: elf32-ia64.c:5384 elf64-ia64.c:5384 +#: elf32-ia64.c:5381 elf64-ia64.c:5381 msgid "%B: linking big-endian files with little-endian files" msgstr "%B: menghubungkan berkas big-endian dengan berkas little-endian" -#: elf32-ia64.c:5393 elf64-ia64.c:5393 +#: elf32-ia64.c:5390 elf64-ia64.c:5390 msgid "%B: linking 64-bit files with 32-bit files" msgstr "%B: menghubungkan berkas 64-bit dengan berkas 32-bit" -#: elf32-ia64.c:5402 elf64-ia64.c:5402 +#: elf32-ia64.c:5399 elf64-ia64.c:5399 msgid "%B: linking constant-gp files with non-constant-gp files" msgstr "%B: menghubungkan berkas constant-gp dengan berkas bukan-constant-gp" -#: elf32-ia64.c:5412 elf64-ia64.c:5412 +#: elf32-ia64.c:5409 elf64-ia64.c:5409 msgid "%B: linking auto-pic files with non-auto-pic files" msgstr "%B: menghubungkan berkas auto-pic dengan berkas non-auto-pic" -#: peigen.c:1000 pepigen.c:1000 pex64igen.c:1000 +#: peigen.c:999 pepigen.c:999 pex64igen.c:999 #, c-format msgid "%s: line number overflow: 0x%lx > 0xffff" msgstr "%s: nomor baris overflow: 0x%lx > 0xffff" -#: peigen.c:1027 pepigen.c:1027 pex64igen.c:1027 +#: peigen.c:1026 pepigen.c:1026 pex64igen.c:1026 msgid "Export Directory [.edata (or where ever we found it)]" msgstr "Direktori expor [.edata (atau dimanapun kita menemukannya)]" -#: peigen.c:1028 pepigen.c:1028 pex64igen.c:1028 +#: peigen.c:1027 pepigen.c:1027 pex64igen.c:1027 msgid "Import Directory [parts of .idata]" msgstr "Impor Direktori [bagian dari .idata]" -#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 +#: peigen.c:1028 pepigen.c:1028 pex64igen.c:1028 msgid "Resource Directory [.rsrc]" msgstr "Resource Direktori [.rsrc]" -#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 +#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 msgid "Exception Directory [.pdata]" msgstr "Exception Direktori [.pdata]" -#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 +#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 msgid "Security Directory" msgstr "Direktori Keamanan" -#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 +#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 msgid "Base Relocation Directory [.reloc]" msgstr "Dasar Relokasi Direktori [.reloc]" -#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 +#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 msgid "Debug Directory" msgstr "Debug Direktori" -#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 +#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 msgid "Description Directory" msgstr "Direktori Penjelasan" -#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 +#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 msgid "Special Directory" msgstr "Direktori Spesial" -#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 +#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 msgid "Thread Storage Directory [.tls]" msgstr "Thread Storage Direktori [.tls]" -#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 +#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 msgid "Load Configuration Directory" msgstr "Direktori Konfigurasi Beban" -#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 +#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 msgid "Bound Import Directory" msgstr "Direktori Bound Impor" -#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 +#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 msgid "Import Address Table Directory" msgstr "Direktori Impor Tabel Alamat" -#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 +#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 msgid "Delay Import Directory" msgstr "Delay Impor Direktori" -#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 +#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 msgid "CLR Runtime Header" msgstr "CLR Runtime Header" -#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 +#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 msgid "Reserved" msgstr "Reserved" -#: peigen.c:1102 pepigen.c:1102 pex64igen.c:1102 +#: peigen.c:1101 pepigen.c:1101 pex64igen.c:1101 #, c-format msgid "" "\n" @@ -3529,7 +3838,7 @@ "\n" "Ada tabel impor, tetapi daerah yang berisi itu tidak dapat ditemukan\n" -#: peigen.c:1107 pepigen.c:1107 pex64igen.c:1107 +#: peigen.c:1106 pepigen.c:1106 pex64igen.c:1106 #, c-format msgid "" "\n" @@ -3538,7 +3847,7 @@ "\n" "Ada impor tabel di %s pada 0x%lx\n" -#: peigen.c:1150 pepigen.c:1150 pex64igen.c:1150 +#: peigen.c:1149 pepigen.c:1149 pex64igen.c:1149 #, c-format msgid "" "\n" @@ -3547,12 +3856,12 @@ "\n" "Deskripsi fungsi ditempatkan di awal alamat: %04lx\n" -#: peigen.c:1153 pepigen.c:1153 pex64igen.c:1153 +#: peigen.c:1152 pepigen.c:1152 pex64igen.c:1152 #, c-format msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" msgstr "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" -#: peigen.c:1161 pepigen.c:1161 pex64igen.c:1161 +#: peigen.c:1160 pepigen.c:1160 pex64igen.c:1160 #, c-format msgid "" "\n" @@ -3561,7 +3870,7 @@ "\n" "Tidak ada daerah reldata! Deskripsi fungsi tidak terdekode.\n" -#: peigen.c:1166 pepigen.c:1166 pex64igen.c:1166 +#: peigen.c:1165 pepigen.c:1165 pex64igen.c:1165 #, c-format msgid "" "\n" @@ -3570,7 +3879,7 @@ "\n" "Tabel Impor (diinterpretasikan isi daerah %s)\n" -#: peigen.c:1169 pepigen.c:1169 pex64igen.c:1169 +#: peigen.c:1168 pepigen.c:1168 pex64igen.c:1168 #, c-format msgid "" " vma: Hint Time Forward DLL First\n" @@ -3579,7 +3888,7 @@ "vma: Tips Waktu Forward DLL Pertama\n" " Tabel Stamp Rantai Nama Thunk\n" -#: peigen.c:1217 pepigen.c:1217 pex64igen.c:1217 +#: peigen.c:1216 pepigen.c:1216 pex64igen.c:1216 #, c-format msgid "" "\n" @@ -3588,12 +3897,12 @@ "\n" "\tNama DLL: %s\n" -#: peigen.c:1228 pepigen.c:1228 pex64igen.c:1228 +#: peigen.c:1227 pepigen.c:1227 pex64igen.c:1227 #, c-format msgid "\tvma: Hint/Ord Member-Name Bound-To\n" msgstr "\tvma: Tips/Ord Nama-Anggota Terikat-Ke\n" -#: peigen.c:1253 pepigen.c:1253 pex64igen.c:1253 +#: peigen.c:1252 pepigen.c:1252 pex64igen.c:1252 #, c-format msgid "" "\n" @@ -3602,7 +3911,7 @@ "\n" "Ada thunk pertama, tetapi daerah yang berisi itu tidak dapat ditemukan\n" -#: peigen.c:1418 pepigen.c:1418 pex64igen.c:1418 +#: peigen.c:1417 pepigen.c:1417 pex64igen.c:1417 #, c-format msgid "" "\n" @@ -3611,7 +3920,7 @@ "\n" "Ada tabel expor, tetapi daerah yang berisi itu tidak dapat ditemukan\n" -#: peigen.c:1427 pepigen.c:1427 pex64igen.c:1427 +#: peigen.c:1426 pepigen.c:1426 pex64igen.c:1426 #, c-format msgid "" "\n" @@ -3620,7 +3929,7 @@ "\n" "Ada tabel expor dalam %s, tetapi ini tidak masuk dalam daerah itu\n" -#: peigen.c:1433 pepigen.c:1433 pex64igen.c:1433 +#: peigen.c:1432 pepigen.c:1432 pex64igen.c:1432 #, c-format msgid "" "\n" @@ -3629,7 +3938,7 @@ "\n" "Ada sebuah tabel expor dalam %s di 0x%lx\n" -#: peigen.c:1461 pepigen.c:1461 pex64igen.c:1461 +#: peigen.c:1460 pepigen.c:1460 pex64igen.c:1460 #, c-format msgid "" "\n" @@ -3639,67 +3948,67 @@ "\n" "Tabel expor (diinterpretasikan isi daerah %s)\n" -#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 +#: peigen.c:1464 pepigen.c:1464 pex64igen.c:1464 #, c-format msgid "Export Flags \t\t\t%lx\n" msgstr "Tanda Expor \t\t\t%lx\n" -#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 +#: peigen.c:1467 pepigen.c:1467 pex64igen.c:1467 #, c-format msgid "Time/Date stamp \t\t%lx\n" msgstr "Waktu/Tanggal stamp \t\t%lx\n" -#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 +#: peigen.c:1470 pepigen.c:1470 pex64igen.c:1470 #, c-format msgid "Major/Minor \t\t\t%d/%d\n" msgstr "Mayor/Minor \t\t\t%d/%d\n" -#: peigen.c:1474 pepigen.c:1474 pex64igen.c:1474 +#: peigen.c:1473 pepigen.c:1473 pex64igen.c:1473 #, c-format msgid "Name \t\t\t\t" msgstr "Nama \t\t\t\t" -#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 +#: peigen.c:1479 pepigen.c:1479 pex64igen.c:1479 #, c-format msgid "Ordinal Base \t\t\t%ld\n" msgstr "Dasar Ordinal \t\t\t%ld\n" -#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 +#: peigen.c:1482 pepigen.c:1482 pex64igen.c:1482 #, c-format msgid "Number in:\n" msgstr "Nomor dalam:\n" -#: peigen.c:1486 pepigen.c:1486 pex64igen.c:1486 +#: peigen.c:1485 pepigen.c:1485 pex64igen.c:1485 #, c-format msgid "\tExport Address Table \t\t%08lx\n" msgstr "\tTabel Alamat Expor \t\t%08lx\n" -#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 +#: peigen.c:1489 pepigen.c:1489 pex64igen.c:1489 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" msgstr "\t[Nama Pointer/Ordinal] Tabel\t%08lx\n" -#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 +#: peigen.c:1492 pepigen.c:1492 pex64igen.c:1492 #, c-format msgid "Table Addresses\n" msgstr "Tabel Alamat\n" -#: peigen.c:1496 pepigen.c:1496 pex64igen.c:1496 +#: peigen.c:1495 pepigen.c:1495 pex64igen.c:1495 #, c-format msgid "\tExport Address Table \t\t" msgstr "\tTabel Alamat Expor \t\t" -#: peigen.c:1501 pepigen.c:1501 pex64igen.c:1501 +#: peigen.c:1500 pepigen.c:1500 pex64igen.c:1500 #, c-format msgid "\tName Pointer Table \t\t" msgstr "\tTabel Nama Pointer \t\t" -#: peigen.c:1506 pepigen.c:1506 pex64igen.c:1506 +#: peigen.c:1505 pepigen.c:1505 pex64igen.c:1505 #, c-format msgid "\tOrdinal Table \t\t\t" msgstr "\tTabel Ordinal \t\t\t" -#: peigen.c:1520 pepigen.c:1520 pex64igen.c:1520 +#: peigen.c:1519 pepigen.c:1519 pex64igen.c:1519 #, c-format msgid "" "\n" @@ -3708,15 +4017,15 @@ "\n" "Tabel Alamat Expor -- Ordinal Base %ld\n" -#: peigen.c:1539 pepigen.c:1539 pex64igen.c:1539 +#: peigen.c:1538 pepigen.c:1538 pex64igen.c:1538 msgid "Forwarder RVA" msgstr "Forwarder RVA" -#: peigen.c:1550 pepigen.c:1550 pex64igen.c:1550 +#: peigen.c:1549 pepigen.c:1549 pex64igen.c:1549 msgid "Export RVA" msgstr "Expor RVA" -#: peigen.c:1557 pepigen.c:1557 pex64igen.c:1557 +#: peigen.c:1556 pepigen.c:1556 pex64igen.c:1556 #, c-format msgid "" "\n" @@ -3725,28 +4034,18 @@ "\n" "[Ordinal/Nama Pointer] Tabel\n" -#: peigen.c:1617 peigen.c:1796 pepigen.c:1617 pepigen.c:1796 pex64igen.c:1617 -#: pex64igen.c:1796 +#: peigen.c:1616 peigen.c:1795 pepigen.c:1616 pepigen.c:1795 pex64igen.c:1616 +#: pex64igen.c:1795 #, c-format msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" msgstr "Peringatan, besar (%ld) daerah .pdata tidak dalam kelipatan dari %d\n" -#: peigen.c:1621 peigen.c:1800 pepigen.c:1621 pepigen.c:1800 pex64igen.c:1621 -#: pex64igen.c:1800 -#, c-format -msgid "" -"\n" -"The Function Table (interpreted .pdata section contents)\n" -msgstr "" -"\n" -"Tabel Fungsi (diinterpretasikan isi daerah .pdata)\n" - -#: peigen.c:1624 pepigen.c:1624 pex64igen.c:1624 +#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 #, c-format msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" msgstr " vma:\t\t\tAwal Alamat Akhir Alamat Unwind Informasi\n" -#: peigen.c:1626 pepigen.c:1626 pex64igen.c:1626 +#: peigen.c:1625 pepigen.c:1625 pex64igen.c:1625 #, c-format msgid "" " vma:\t\tBegin End EH EH PrologEnd Exception\n" @@ -3755,22 +4054,22 @@ " vma:\t\tAwal Akhir EH EH PrologEnd Exception\n" " \t\tAlamat Alamat Handler Data Alamat Topeng\n" -#: peigen.c:1696 pepigen.c:1696 pex64igen.c:1696 +#: peigen.c:1695 pepigen.c:1695 pex64igen.c:1695 #, c-format msgid " Register save millicode" msgstr " Register simpan millicode" -#: peigen.c:1699 pepigen.c:1699 pex64igen.c:1699 +#: peigen.c:1698 pepigen.c:1698 pex64igen.c:1698 #, c-format msgid " Register restore millicode" msgstr " Register restore millicode" -#: peigen.c:1702 pepigen.c:1702 pex64igen.c:1702 +#: peigen.c:1701 pepigen.c:1701 pex64igen.c:1701 #, c-format msgid " Glue code sequence" msgstr " Urutan kode pengikat" -#: peigen.c:1802 pepigen.c:1802 pex64igen.c:1802 +#: peigen.c:1801 pepigen.c:1801 pex64igen.c:1801 #, c-format msgid "" " vma:\t\tBegin Prolog Function Flags Exception EH\n" @@ -3816,22 +4115,49 @@ "\n" "Karakteristik 0x%x\n" -#: peigen.c:2289 pepigen.c:2289 pex64igen.c:2289 +#: peigen.c:2292 pepigen.c:2292 pex64igen.c:2292 msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing" msgstr "%B: tidak dapat mengisi dalam DataDictionary[1] karena .idata$2 hilang" -#: peigen.c:2307 pepigen.c:2307 pex64igen.c:2307 +#: peigen.c:2312 pepigen.c:2312 pex64igen.c:2312 msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing" msgstr "%B: tidak dapat mengisi dalam DataDictionary[1] karena .data$4 hilang" -#: peigen.c:2326 pepigen.c:2326 pex64igen.c:2326 +#: peigen.c:2333 pepigen.c:2333 pex64igen.c:2333 msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing" msgstr "%B: tidak dapat mengisi dalam DataDictionary[12] karena .idata$5 hilang" -#: peigen.c:2344 pepigen.c:2344 pex64igen.c:2344 +#: peigen.c:2353 pepigen.c:2353 pex64igen.c:2353 msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing" msgstr "%B: tidak dapat mengisi dalam DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] karena .idata$6 hilang" -#: peigen.c:2364 pepigen.c:2364 pex64igen.c:2364 +#: peigen.c:2375 pepigen.c:2375 pex64igen.c:2375 msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing" msgstr "%B: tidak dapat mengisi dalam DataDictionary[9] karena __tls_used hilang" + +#~ msgid "ERROR: %B: Incompatible object tag '%s':%d" +#~ msgstr "ERROR: %B: Tanda objek tidak kompatibel '%s':%d" + +#~ msgid "%B(%A): warning: unresolvable relocation against symbol `%s'" +#~ msgstr "%B(%A): peringatan: tidak teresolf relokasi terhadap simbol `%s'" + +#~ msgid "%B: Internal inconsistency; no relocation section %s" +#~ msgstr "%B: Internal tidak konsisten; bagian %s tidak bisa direlokasi" + +#~ msgid "Could not find relocation section for %s" +#~ msgstr "Tidak dapat menemukan bagian relokasi untuk %s" + +#~ msgid "%B: GOT overflow: Number of R_68K_GOT8O and R_68K_GOT16O relocations > %d" +#~ msgstr "%B: Memperoleh overflow: Jumlah dari R_68K_GOT80 dan R_68K_GOT160 relokasi > %d" + +#~ msgid "%A link_order not found\n" +#~ msgstr "%A link_order tidak ditemukan\n" + +#~ msgid "%s: no symbol \"%s\"" +#~ msgstr "%s: tidak ada simbol \"%s\"" + +#~ msgid "%s: loader reloc in unrecognized section `%s'" +#~ msgstr "%s: loader relokasi dalam daerah `%s' tidak dikenal" + +#~ msgid "%s: `%s' in loader reloc but not loader sym" +#~ msgstr "%s: `%s' dalam relokasi loader tetapi bukan loader sym" Binary files /tmp/wqm3boRCeK/crash-5.1.6/=unpacked-tar1=/bfd/po/ja.gmo and /tmp/OqnMAz5teu/crash-6.1.6/=unpacked-tar1=/bfd/po/ja.gmo differ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/ja.po crash-6.1.6/=unpacked-tar1=/bfd/po/ja.po --- crash-5.1.6/=unpacked-tar1=/bfd/po/ja.po 2002-01-31 17:32:57.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/ja.po 2010-11-25 06:08:43.000000000 +0000 @@ -1,2548 +1,5902 @@ -# Japanese message for bfd 2.11 -# Copyright (C) 2001 Free Software Foundation, Inc. +# Japanese message for bfd +# This file is distributed under the same license as the binutils package. +# Copyright (C) 2001, 2010 Free Software Foundation, Inc. # Daisuke Yamashita , 2001 -# +# Yasuaki Taniguchi , 2010. 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" +"Project-Id-Version: bfd 2.20.90\n" +"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" +"POT-Creation-Date: 2010-11-05 11:31+0100\n" +"PO-Revision-Date: 2010-11-23 22:18+0900\n" +"Last-Translator: Yasuaki Taniguchi \n" +"Language-Team: Japanese \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nulurals=1; plural=0;\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-adobe.c:127 +msgid "%B: Unknown section type in a.out.adobe file: %x\n" +msgstr "%B: a.out.adobe ファイルã«ä¸æ˜Žãªã‚»ã‚¯ã‚·ãƒ§ãƒ³åž‹ãŒã‚ã‚Šã¾ã™: %x\n" -#: aout-cris.c:208 +#: aout-cris.c:199 #, c-format msgid "%s: Invalid relocation type exported: %d" -msgstr "%s: export ¤µ¤ì¤¿ºÆÇÛÃÖ¥¿¥¤¥×¤¬ÉÔŬÀڤǤ¹: %d" +msgstr "%s: エクスãƒãƒ¼ãƒˆã•ã‚ŒãŸå†é…置型ãŒç„¡åŠ¹ã§ã™: %d" -#: aout-cris.c:252 -#, c-format -msgid "%s: Invalid relocation type imported: %d" -msgstr "%s: import ¤µ¤ì¤¿ºÆÇÛÃÖ¥¿¥¤¥×¤¬ÉÔŬÀڤǤ¹: %d" +#: aout-cris.c:242 +msgid "%B: Invalid relocation type imported: %d" +msgstr "%B: インãƒãƒ¼ãƒˆã•ã‚ŒãŸå†é…置型ãŒç„¡åŠ¹ã§ã™: %d" -#: aout-cris.c:263 -#, c-format -msgid "%s: Bad relocation record imported: %d" -msgstr "%s: import ¤µ¤ì¤¿ºÆÇÛÃ֥쥳¡¼¥É¤¬ÉÔÀµ¤Ç¤¹: %d" +#: aout-cris.c:253 +msgid "%B: Bad relocation record imported: %d" +msgstr "%B: インãƒãƒ¼ãƒˆã•ã‚ŒãŸå†é…置レコードãŒèª¤ã£ã¦ã„ã¾ã™: %d" -#: aoutx.h:1282 aoutx.h:1699 +#: aoutx.h:1273 aoutx.h:1611 #, c-format msgid "%s: can not represent section `%s' in a.out object file format" -msgstr "%s: a.out ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë·Á¼°¤Ç¤Ï¥»¥¯¥·¥ç¥ó `%s' ¤òɽ¸½¤Ç¤­¤Þ¤»¤ó" +msgstr "%s: a.out オブジェクトファイル形å¼ã§ã¯ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' を表ç¾ã§ãã¾ã›ã‚“" -#: aoutx.h:1669 +#: aoutx.h:1577 #, c-format -msgid "" -"%s: can not represent section for symbol `%s' in a.out object file format" -msgstr "" -"%s: a.out ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë·Á¼°¤Ç¤Ï¥·¥ó¥Ü¥ë `%s' ÍѤΥ»¥¯¥·¥ç¥ó¤òɽ¸½¤Ç¤­" -"¤Þ¤»¤ó" +msgid "%s: can not represent section for symbol `%s' in a.out object file format" +msgstr "%s: a.out オブジェクトファイル形å¼ã§ã¯ã‚·ãƒ³ãƒœãƒ« `%s' 用ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’表ç¾ã§ãã¾ã›ã‚“" -#: aoutx.h:1671 +#: aoutx.h:1579 vms-alpha.c:7649 msgid "*unknown*" -msgstr "*ÉÔ ÌÀ*" +msgstr "*ä¸æ˜Ž*" + +#: aoutx.h:4007 aoutx.h:4333 +msgid "%P: %B: unexpected relocation type\n" +msgstr "%P: %B: 予期ã—ãªã„å†é…置タイプã§ã™\n" -#: aoutx.h:3735 +#: aoutx.h:5364 #, c-format -msgid "%s: relocateable link from %s to %s not supported" -msgstr "%s: %s ¤«¤é %s ¤Ø¤ÎºÆÇÛÃÖ²Äǽ¥ê¥ó¥¯¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +msgid "%s: relocatable link from %s to %s not supported" +msgstr "%s: %s ã‹ã‚‰ %s ã¸ã®å†é…ç½®å¯èƒ½ãƒªãƒ³ã‚¯ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: archive.c:1826 +#: archive.c:2125 msgid "Warning: writing archive was slow: rewriting timestamp\n" -msgstr "·Ù¹ð: ½ñ¸Ë¤Ø¤Î½ñ¤­¹þ¤ß¤¬ÃÙ¤ì¤Þ¤·¤¿: ¥¿¥¤¥à¥¹¥¿¥ó¥×¤ò½ñ¤­´¹¤¨¤Þ¤¹\n" +msgstr "警告: 書庫ã¸ã®æ›¸ãè¾¼ã¿ãŒé…ã‚Œã¾ã—ãŸ: タイムスタンプを書ãæ›ãˆã¾ã™\n" -#: archive.c:2093 +#: archive.c:2416 msgid "Reading archive file mod timestamp" -msgstr "½ñ¸Ë¥Õ¥¡¥¤¥ë¤Î½¤Àµ»þ¹ïÆɹþ¤ßÃæ" +msgstr "書庫ファイルã®æ›´æ–°æ—¥æ™‚を読ã¿è¾¼ã‚“ã§ã„ã¾ã™" -#. FIXME: bfd can't call perror. -#: archive.c:2120 +#: archive.c:2440 msgid "Writing updated armap timestamp" -msgstr "¹¹¿·¤µ¤ì¤¿ armap ¥¿¥¤¥à¥¹¥¿¥ó¥×½ñ¹þ¤ßÃæ" +msgstr "æ›´æ–°ã•ã‚ŒãŸ armap 日時を書ãè¾¼ã¿ä¸­ã§ã™" -#: bfd.c:274 +#: bfd.c:395 msgid "No error" -msgstr "¥¨¥é¡¼¤Ï¤¢¤ê¤Þ¤»¤ó" +msgstr "エラーã¯ã‚ã‚Šã¾ã›ã‚“" -#: bfd.c:275 +#: bfd.c:396 msgid "System call error" -msgstr "¥·¥¹¥Æ¥à¥³¡¼¥ë¥¨¥é¡¼" +msgstr "システムコールエラー" -#: bfd.c:276 +#: bfd.c:397 msgid "Invalid bfd target" -msgstr "ÉÔŬÀÚ¤Ê bfd ¥¿¡¼¥²¥Ã¥È¤Ç¤¹" +msgstr "無効㪠bfd ターゲットã§ã™" -#: bfd.c:277 +#: bfd.c:398 msgid "File in wrong format" -msgstr "´Ö°ã¤Ã¤¿·Á¼°¤Î¥Õ¥¡¥¤¥ë" +msgstr "誤ã£ãŸå½¢å¼ã®ãƒ•ã‚¡ã‚¤ãƒ«ã§ã™" -#: bfd.c:278 -#, fuzzy +#: bfd.c:399 msgid "Archive object file in wrong format" -msgstr "´Ö°ã¤Ã¤¿·Á¼°¤Î¥Õ¥¡¥¤¥ë" +msgstr "誤ã£ãŸå½¢å¼ã®ã‚ªãƒ–ジェクトファイル書庫ã§ã™" -#: bfd.c:279 +#: bfd.c:400 msgid "Invalid operation" -msgstr "ÉÔŬÀÚ¤ÊÁàºî" +msgstr "無効ãªæ“作ã§ã™" -#: bfd.c:280 +#: bfd.c:401 msgid "Memory exhausted" -msgstr "¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿" +msgstr "メモリを使ã„æžœãŸã—ã¾ã—ãŸ" -#: bfd.c:281 +#: bfd.c:402 msgid "No symbols" -msgstr "¥·¥ó¥Ü¥ë¤¬¤¢¤ê¤Þ¤»¤ó" +msgstr "シンボルãŒã‚ã‚Šã¾ã›ã‚“" -#: bfd.c:282 +#: bfd.c:403 msgid "Archive has no index; run ranlib to add one" -msgstr "" -"½ñ¸Ë¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬¤¢¤ê¤Þ¤»¤ó -- Äɲ乤뤿¤á¤Ë ranlib ¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦" +msgstr "書庫ã«ç´¢å¼•ãŒã‚ã‚Šã¾ã›ã‚“。追加ã™ã‚‹ãŸã‚ã« ranlib を実行ã—ã¦ãã ã•ã„" -#: bfd.c:283 +#: bfd.c:404 msgid "No more archived files" -msgstr "¤³¤ì°Ê¾å½ñ¸Ë¥Õ¥¡¥¤¥ë¤Ï¤¢¤ê¤Þ¤»¤ó" +msgstr "ã“れ以上書庫ファイルã¯ã‚ã‚Šã¾ã›ã‚“" -#: bfd.c:284 +#: bfd.c:405 msgid "Malformed archive" -msgstr "¤ª¤«¤·¤Ê½ñ¸Ë¤Ç¤¹" +msgstr "ä¸æ­£ãªå½¢å¼ã®æ›¸åº«ã§ã™" -#: bfd.c:285 +#: bfd.c:406 msgid "File format not recognized" -msgstr "¥Õ¥¡¥¤¥ë·Á¼°¤¬Ç§¼±¤Ç¤­¤Þ¤»¤ó" +msgstr "ファイル形å¼ãŒèªè­˜ã§ãã¾ã›ã‚“" -#: bfd.c:286 +#: bfd.c:407 msgid "File format is ambiguous" -msgstr "¥Õ¥¡¥¤¥ë·Á¼°¤¬Û£Ëæ¤Ç¤¹" +msgstr "ファイル形å¼ãŒæ›–昧ã§ã™" -#: bfd.c:287 +#: bfd.c:408 msgid "Section has no contents" -msgstr "¥»¥¯¥·¥ç¥ó¤ËÆâÍƤ¬¤¢¤ê¤Þ¤»¤ó" +msgstr "セクションã«å†…容ãŒã‚ã‚Šã¾ã›ã‚“" -#: bfd.c:288 +#: bfd.c:409 msgid "Nonrepresentable section on output" -msgstr "½ÐÎϤËÂбþ¤¹¤ë¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó" +msgstr "出力ã«å¯¾å¿œã™ã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãŒã‚ã‚Šã¾ã›ã‚“" -#: bfd.c:289 +#: bfd.c:410 msgid "Symbol needs debug section which does not exist" -msgstr "¸ºß¤·¤Æ¤¤¤Ê¤¤¥Ç¥Ð¥Ã¥°¥»¥¯¥·¥ç¥ó¤ò¥·¥ó¥Ü¥ë¤¬É¬ÍפȤ·¤Æ¤¤¤Þ¤¹" +msgstr "存在ã—ã¦ã„ãªã„デãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’シンボルãŒå¿…è¦ã¨ã—ã¦ã„ã¾ã™" -#: bfd.c:290 +#: bfd.c:411 msgid "Bad value" -msgstr "ÉÔÀµ¤ÊÃͤǤ¹" +msgstr "ä¸æ­£ãªå€¤ã§ã™" -#: bfd.c:291 +#: bfd.c:412 msgid "File truncated" -msgstr "¥Õ¥¡¥¤¥ë¤¬ÅÓÀÚ¤ì¤Æ¤¤¤Þ¤¹" +msgstr "ファイルãŒé€”切れã¦ã„ã¾ã™" -#: bfd.c:292 +#: bfd.c:413 msgid "File too big" -msgstr "¥Õ¥¡¥¤¥ë¤¬Â礭¤¹¤®¤Þ¤¹" +msgstr "ファイルãŒå¤§ãã™ãŽã¾ã™" -#: bfd.c:293 +#: bfd.c:414 +#, c-format +msgid "Error reading %s: %s" +msgstr "%s を読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s" + +#: bfd.c:415 msgid "#" -msgstr "#<ÉÔŬÀڤʥ¨¥é¡¼¥³¡¼¥É>" +msgstr "#<ä¸é©åˆ‡ãªã‚¨ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰>" -#: bfd.c:700 -#, fuzzy, c-format +#: bfd.c:939 +#, c-format msgid "BFD %s assertion fail %s:%d" -msgstr "bfd ¥¢¥µ¡¼¥·¥ç¥ó¤¬¼ºÇÔ %s:%d" +msgstr "BFD %s アサーション失敗 %s:%d" -#: bfd.c:719 -#, fuzzy, c-format +#: bfd.c:951 +#, c-format msgid "BFD %s internal error, aborting at %s line %d in %s\n" -msgstr "BFD ÆâÉô¥¨¥é¡¼¡£%s ¤Î %d ¹ÔÌÜ %s ¤ÇÃæÃǤ·¤Þ¤·¤¿\n" +msgstr "BFD %1$s 内部エラー。 %4$s 内 %3$d è¡Œ %2$s ã§ä¸­æ­¢ã—ã¾ã—ãŸ\n" -#: bfd.c:723 -#, fuzzy, c-format +#: bfd.c:955 +#, c-format msgid "BFD %s internal error, aborting at %s line %d\n" -msgstr "BFD ÆâÉô¥¨¥é¡¼¡£%s ¤Î %d ¹ÔÌܤÇÃæÃǤ·¤Þ¤·¤¿\n" +msgstr "BFD %1$s 内部エラー。%3$d è¡Œ %2$s ã§ä¸­æ­¢ã—ã¾ã—ãŸ\n" -#: bfd.c:725 +#: bfd.c:957 msgid "Please report this bug.\n" -msgstr "¤³¤Î¥Ð¥°¤òÊó¹ð¤·¤Æ¤¯¤À¤µ¤¤¡£\n" +msgstr "ã“ã®ãƒã‚°ã‚’報告ã—ã¦ãã ã•ã„。\n" -#: binary.c:306 +#: bfdwin.c:206 +#, c-format +msgid "not mapping: data=%lx mapped=%d\n" +msgstr "マップã—ã¾ã›ã‚“: データ=%lx マップ済=%d\n" + +#: bfdwin.c:209 +#, c-format +msgid "not mapping: env var not set\n" +msgstr "マップã—ã¾ã›ã‚“: 環境変数ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“\n" + +#: binary.c:271 #, c-format msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." -msgstr "" -"·Ù¹ð: ¥»¥¯¥·¥ç¥ó `%s' µðÂç(Îã Éé¿ô)¤Ê¥Õ¥¡¥¤¥ë¥ª¥Õ¥»¥Ã¥È 0x%lx ¤Ø¤Î½ñ¹þ¤ß¤Ç" -"¤¹¡£" +msgstr "警告: セクション `%s' ã§å·¨å¤§ãª (例: è² æ•°) ファイルオフセット 0x%lx ã¸ã®æ›¸ãè¾¼ã¿ã§ã™" -#: coff-a29k.c:119 -msgid "Missing IHCONST" -msgstr "IHCONST ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" - -#: coff-a29k.c:180 -msgid "Missing IHIHALF" -msgstr "IHIHALF ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" +#: bout.c:1146 elf-m10300.c:2063 elf32-avr.c:1640 elf32-frv.c:5740 +#: elfxx-sparc.c:2795 reloc.c:5646 reloc16.c:162 elf32-ia64.c:842 +#: elf64-ia64.c:842 +msgid "%P%F: --relax and -r may not be used together\n" +msgstr "%P%F: --relax ãŠã‚ˆã³ -r ã¯åŒæ™‚ã«ä½¿ç”¨ã§ãã¾ã›ã‚“\n" -#: coff-a29k.c:212 coff-or32.c:228 -msgid "Unrecognized reloc" -msgstr "ǧ¼±¤Ç¤­¤Ê¤¤ºÆÇÛÃ֤Ǥ¹" +#: cache.c:226 +msgid "reopening %B: %s\n" +msgstr "%B ã‚’å†ã‚ªãƒ¼ãƒ—ンã—ã¦ã„ã¾ã™: %s\n" -#: coff-a29k.c:408 -msgid "missing IHCONST reloc" -msgstr "IHCONST ºÆÇÛÃÖ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" +#: coff-alpha.c:491 +msgid "" +"%B: Cannot handle compressed Alpha binaries.\n" +" Use compiler flags, or objZ, to generate uncompressed binaries." +msgstr "" +"%B: 圧縮ã•ã‚ŒãŸ Alpha ãƒã‚¤ãƒŠãƒªã‚’扱ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。\n" +" コンパイラã®ãƒ•ãƒ©ã‚°ã¾ãŸã¯ objZ ã§éžåœ§ç¸®ã®ãƒã‚¤ãƒŠãƒªã‚’作æˆã—ã¦ãã ã•ã„。" -#: coff-a29k.c:498 -msgid "missing IHIHALF reloc" -msgstr "IHIHALF ºÆÇÛÃÖ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" +#: coff-alpha.c:648 +msgid "%B: unknown/unsupported relocation type %d" +msgstr "%B: ä¸æ˜Ž/サãƒãƒ¼ãƒˆã•ã‚Œãªã„å†é…置型 %d ã§ã™" -#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1989 coff-mips.c:1433 +#: coff-alpha.c:900 coff-alpha.c:937 coff-alpha.c:2025 coff-mips.c:1003 msgid "GP relative relocation used when GP not defined" -msgstr "GP ¤¬Ì¤ÄêµÁ¤Î»þ¤Ë GP ´ØÏ¢ºÆÇÛÃÖ¤¬»È¤ï¤ì¤Þ¤·¤¿" +msgstr "GP ãŒæœªå®šç¾©ã®æ™‚ã« GP 関連å†é…ç½®ãŒä½¿ã‚ã‚Œã¾ã—ãŸ" -#: coff-alpha.c:1485 +#: coff-alpha.c:1502 msgid "using multiple gp values" -msgstr "Ê£¿ô¤Î gp Ãͤò»ÈÍѤ¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹" +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-alpha.c:1561 +msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH" +msgstr "%B: サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å†é…ç½®ã§ã™: ALPHA_R_GPRELHIGH" -#: 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-alpha.c:1568 +msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW" +msgstr "%B: サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å†é…ç½®ã§ã™: ALPHA_R_GPRELLOW" -#: 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-alpha.c:1575 elf32-m32r.c:2493 elf64-alpha.c:3991 elf64-alpha.c:4140 +#: elf32-ia64.c:4582 elf64-ia64.c:4582 +msgid "%B: unknown relocation type %d" +msgstr "%B: ä¸æ˜Žãªå†é…置型 %d ã§ã™" -#: coff-arm.c:1379 elf32-arm.h:993 +#: coff-arm.c:1038 #, c-format -msgid " first occurrence: %s: arm call to thumb" -msgstr " ½é²óȯÀ¸: %s: arm ¤Î thumb ¸Æ¤Ó½Ð¤·" +msgid "%B: unable to find THUMB glue '%s' for `%s'" +msgstr "%1$B: `%3$s' ã«å¯¾ã™ã‚‹ Thumb 糊 '%2$s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: coff-arm.c:1474 elf32-arm.h:889 +#: coff-arm.c:1067 #, c-format -msgid " first occurrence: %s: thumb call to arm" -msgstr " ½é²óȯÀ¸: %s: thumb ¤Î arm ¸Æ¤Ó½Ð¤·" +msgid "%B: unable to find ARM glue '%s' for `%s'" +msgstr "%1$B: `%3$s' ã«å¯¾ã™ã‚‹ ARM 糊 '%2$s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: coff-arm.c:1477 -msgid " consider relinking with --support-old-code enabled" +#: coff-arm.c:1369 elf32-arm.c:6501 +#, c-format +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: arm call to thumb" msgstr "" -" --support-old-code ¤òÍ­¸ú¤Ë¤·¤ÆºÆ¥ê¥ó¥¯¤¹¤ë¤³¤È¤ò¹Íθ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤" +"%B(%s): 警告: ARM/Thumb 命令相互利用ãŒæœ‰åŠ¹ã«ãªã£ã¦ã„ã¾ã›ã‚“。\n" +" 最åˆã®å‡ºç¾ç®‡æ‰€: %B: Thumb を呼ã³å‡ºã™ ARM 命令" -#: coff-arm.c:1767 coff-tic80.c:686 cofflink.c:3017 +#: coff-arm.c:1459 #, c-format -msgid "%s: bad reloc address 0x%lx in section `%s'" -msgstr "%s: ÉÔÀµ¤ÊºÆÇÛÃÖ¥¢¥É¥ì¥¹ 0x%lx ¤¬¥»¥¯¥·¥ç¥ó `%s' Æâ¤Ë¤¢¤ê¤Þ¤¹" +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: thumb call to arm\n" +" consider relinking with --support-old-code enabled" +msgstr "" +"%B(%s): 警告: ARM/Thumb 命令相互利用ãŒæœ‰åŠ¹ã«ãªã£ã¦ã„ã¾ã›ã‚“。\n" +" 最åˆã®å‡ºç¾ç®‡æ‰€: %B: ARM を呼ã³å‡ºã™ Thumb 命令\n" +" --support-old-code を有効ã«ã—ã¦å†ãƒªãƒ³ã‚¯ã™ã‚‹ã“ã¨ã‚’検討ã—ã¦ãã ã•ã„" -#: coff-arm.c:2107 -#, c-format -msgid "%s: illegal symbol index in reloc: %d" -msgstr "%s: ºÆÇÛÃÖÆâ¤Î¥·¥ó¥Ü¥ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬ÉÔÀµ¤Ç¤¹: %d" +#: coff-arm.c:1754 coff-tic80.c:695 cofflink.c:3043 +msgid "%B: bad reloc address 0x%lx in section `%A'" +msgstr "%1$B: セクション `%3$A' 内ã«èª¤ã£ãŸå†é…置アドレス 0x%2$lx ãŒã‚ã‚Šã¾ã™" -#: coff-arm.c:2235 +#: coff-arm.c:2079 +msgid "%B: illegal symbol index in reloc: %d" +msgstr "%B: å†é…置内ã®ã‚·ãƒ³ãƒœãƒ«ç´¢å¼•ãŒä¸æ­£ã§ã™: %d" + +#: coff-arm.c:2210 #, c-format -msgid "%s: ERROR: compiled for APCS-%d whereas target %s uses APCS-%d" -msgstr "" -"%s: ¥¨¥é¡¼: APCS-%d ÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥¿¡¼¥²¥Ã¥È %s ¤Ë¤â¤«¤«¤ï¤é¤º APCS-%d " -"¤ò»È¤Ã¤Æ¤¤¤Þ¤¹" +msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" +msgstr "エラー: %B 㯠APCS-%d ã«å¯¾ã—ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚らãšã€ %B 㯠APCS-%d ã«å¯¾ã—ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã¾ã™" -#: coff-arm.c:2250 +#: coff-arm.c:2226 elf32-arm.c:14105 #, c-format -msgid "" -"%s: ERROR: passes floats in float registers whereas target %s uses integer " -"registers" -msgstr "" -"%s: ¥¨¥é¡¼: ÉâÆ°¾®¿ô¥ì¥¸¥¹¥¿¤ËÉâÆ°¾®¿ô¤òÅϤ·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢¥¿¡¼¥²¥Ã¥È " -"%s ¤¬À°¿ô¥ì¥¸¥¹¥¿¤ò»È¤Ã¤Æ¤¤¤Þ¤¹" +msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers" +msgstr "エラー: %B ã¯æµ®å‹•å°æ•°ã‚’浮動å°æ•°ãƒ¬ã‚¸ã‚¹ã‚¿ã«æ¸¡ã—ã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚らãšã€ %B ã¯æµ®å‹•å°æ•°ã‚’整数レジスタã«æ¸¡ã—ã¦ã„ã¾ã™" -#: coff-arm.c:2253 +#: coff-arm.c:2229 elf32-arm.c:14109 #, c-format -msgid "" -"%s: ERROR: passes floats in integer registers whereas target %s uses float " -"registers" -msgstr "" -"%s: ¥¨¥é¡¼: À°¿ô¥ì¥¸¥¹¥¿¤ËÉâÆ°¾®¿ô¤òÅϤ·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢¥¿¡¼¥²¥Ã¥È %s " -"¤ÏÉâÆ°¾®¿ô¥ì¥¸¥¹¥¿¤ò»È¤Ã¤Æ¤¤¤Þ¤¹" +msgid "error: %B passes floats in integer registers, whereas %B passes them in float registers" +msgstr "エラー: %B ã¯æµ®å‹•å°æ•°ã‚’整数レジスタã«æ¸¡ã—ã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚らãšã€ %B ã¯æµ®å‹•å°æ•°ã‚’浮動å°æ•°ãƒ¬ã‚¸ã‚¹ã‚¿ã«æ¸¡ã—ã¦ã„ã¾ã™" -#: coff-arm.c:2268 +#: coff-arm.c:2243 #, c-format -msgid "" -"%s: ERROR: compiled as position independent code, whereas target %s is " -"absolute position" -msgstr "" -"%s: ¥¨¥é¡¼: °ÌÃÖÈó°Í¸¥³¡¼¥É¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤Ë¤â¤«¤«¤ï¤é¤º¡¢¥¿¡¼¥²¥Ã¥È " -"%s ¤ÏÀäÂаÌÃ֤ˤʤäƤ¤¤Þ¤¹" +msgid "error: %B is compiled as position independent code, whereas target %B is absolute position" +msgstr "エラー: %B ã¯ä½ç½®éžä¾å­˜ã‚³ãƒ¼ãƒ‰ã¨ã—ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã‚‹ã«ã‚‚é–¢ã‚らãšã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ %B ã¯çµ¶å¯¾ä½ç½®ã‚³ãƒ¼ãƒ‰ã«ãªã£ã¦ã„ã¾ã™" -#: coff-arm.c:2271 +#: coff-arm.c:2246 #, c-format -msgid "" -"%s: ERROR: compiled as absolute position code, whereas target %s is position " -"independent" -msgstr "" -"%s: ¥¨¥é¡¼: ÀäÂаÌÃÖ¥³¡¼¥É¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤Ë¤â¤«¤«¤ï¤é¤º¡¢¥¿¡¼¥²¥Ã¥È %" -"s ¤Ï°ÌÃÖÈó°Í¸¥³¡¼¥É¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹" +msgid "error: %B is compiled as absolute position code, whereas target %B is position independent" +msgstr "エラー: %B ã¯çµ¶å¯¾ä½ç½®ã‚³ãƒ¼ãƒ‰ã¨ã—ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚らãšã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ %B ã¯ä½ç½®éžä¾å­˜ã‚³ãƒ¼ãƒ‰ã«ãªã£ã¦ã„ã¾ã™" -#: coff-arm.c:2300 -#, fuzzy, c-format -msgid "Warning: %s supports interworking, whereas %s does not." -msgstr "" -"·Ù¹ð: ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤¬ interworking ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤Ï" -"¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£" +#: coff-arm.c:2274 elf32-arm.c:14174 +#, c-format +msgid "Warning: %B supports interworking, whereas %B does not" +msgstr "警告: %B 㯠ARM/Thumb 命令相互利用をサãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚らãšã€ %B ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" -#: coff-arm.c:2303 -#, fuzzy, c-format -msgid "Warning: %s does not support interworking, whereas %s does." -msgstr "" -"·Ù¹ð: ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤¬ interworking ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤Ï" -"¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£" +#: coff-arm.c:2277 elf32-arm.c:14180 +#, c-format +msgid "Warning: %B does not support interworking, whereas %B does" +msgstr "警告: %B 㯠ARM/Thumb 命令相互利用をサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ã«ã‚‚ã‹ã‹ã‚らãšã€ %B ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™" -#: coff-arm.c:2330 +#: coff-arm.c:2301 #, c-format msgid "private flags = %x:" -msgstr "private ¥Õ¥é¥° = %x:" +msgstr "private フラグ = %x:" -#: coff-arm.c:2338 elf32-arm.h:2408 +#: coff-arm.c:2309 elf32-arm.c:10492 +#, c-format msgid " [floats passed in float registers]" -msgstr " [ÉâÆ°¾®¿ô¤¬ÉâÆ°¾®¿ô¥ì¥¸¥¹¥¿¤ËÅϤµ¤ì¤Þ¤·¤¿]" +msgstr " [浮動å°æ•°ãŒæµ®å‹•å°æ•°ãƒ¬ã‚¸ã‚¹ã‚¿ã«æ¸¡ã•ã‚Œã¾ã—ãŸ]" -#: coff-arm.c:2340 +#: coff-arm.c:2311 +#, c-format msgid " [floats passed in integer registers]" -msgstr " [ÉâÆ°¾®¿ô¤¬À°¿ô¥ì¥¸¥¹¥¿¤ËÅϤµ¤ì¤Þ¤·¤¿]" +msgstr " [浮動å°æ•°ãŒæ•´æ•°ãƒ¬ã‚¸ã‚¹ã‚¿ã«æ¸¡ã•ã‚Œã¾ã—ãŸ]" -#: coff-arm.c:2343 elf32-arm.h:2411 +#: coff-arm.c:2314 elf32-arm.c:10495 +#, c-format msgid " [position independent]" -msgstr " [°ÌÃÖÈó°Í¸]" +msgstr " [ä½ç½®éžä¾å­˜]" -#: coff-arm.c:2345 +#: coff-arm.c:2316 +#, c-format msgid " [absolute position]" -msgstr " [ÀäÂаÌÃÖ]" +msgstr " [絶対ä½ç½®]" -#: coff-arm.c:2349 +#: coff-arm.c:2320 +#, c-format msgid " [interworking flag not initialised]" -msgstr " [interworking ¥Õ¥é¥°¤Ï½é´ü²½¤µ¤ì¤Æ¤¤¤Þ¤»¤ó]" +msgstr " [ARM/Thumb 命令相互利用ã®ãƒ•ãƒ©ã‚°ã¯åˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã›ã‚“]" -#: coff-arm.c:2351 +#: coff-arm.c:2322 +#, c-format msgid " [interworking supported]" -msgstr " [interworking ¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹]" +msgstr " [ARM/Thumb 命令相互利用ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™]" -#: coff-arm.c:2353 +#: coff-arm.c:2324 +#, c-format msgid " [interworking not supported]" -msgstr " [interworking ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó]" +msgstr " [ARM/Thumb 命令相互利用ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“]" -#: 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:2370 elf32-arm.c:9520 +#, c-format +msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking" +msgstr "警告: ARM/Thumb 命令相互利用をã—ãªã„よã†ã«æ—¢ã«æŒ‡å®šã•ã‚Œã¦ã„ã‚‹ãŸã‚〠%B ã® ARM/Thumb 命令相互利用フラグを設定ã—ã¾ã›ã‚“" + +#: coff-arm.c:2374 elf32-arm.c:9524 +#, c-format +msgid "Warning: Clearing the interworking flag of %B due to outside request" +msgstr "警告: è¦æ±‚外ã®ãŸã‚ %s ã® ARM/Thumb 命令相互利用フラグをクリアã—ã¾ã™" + +#: coff-h8300.c:1122 +#, c-format +msgid "cannot handle R_MEM_INDIRECT reloc when using %s output" +msgstr "%s 出力を利用ã—ã¦ã„る時ã«ã¯ R_MEM_INDIRECT å†é…置を扱ãˆã¾ã›ã‚“" -#: coff-arm.c:2405 elf32-arm.h:2118 +#: coff-i860.c:147 #, c-format -msgid "Warning: Clearing the interworking flag of %s due to outside request" -msgstr "·Ù¹ð: Í׵ᳰ¤Î¤¿¤á %s ¤Î interworking ¥Õ¥é¥°¤ò¥¯¥ê¥¢¤·¤Þ¤¹" +msgid "Relocation `%s' not yet implemented\n" +msgstr "å†é…ç½® `%s' ã¯ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“\n" + +#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5147 +msgid "%B: warning: illegal symbol index %ld in relocs" +msgstr "%B: 警告: ä¸æ­£ãªã‚·ãƒ³ãƒœãƒ«ç´¢å¼• %ld ãŒå†é…置領域内ã«ã‚ã‚Šã¾ã™" -#: coff-i960.c:136 coff-i960.c:485 +#: coff-i960.c:143 coff-i960.c:506 msgid "uncertain calling convention for non-COFF symbol" -msgstr "Èó COFF ¥·¥ó¥Ü¥ëÍѤθƤӽФ·µ¬Ìó¤¬ÉÔ³ÎÄê¤Ç¤¹" +msgstr "éž COFF シンボルã«å¯¾ã™ã‚‹å‘¼ã³å‡ºã—è¦ç´„ãŒä¸ç¢ºå®šã§ã™" -#: coff-m68k.c:481 coff-mips.c:2431 elf32-m68k.c:2212 elf32-mips.c:9954 +#: coff-m68k.c:506 elf32-bfin.c:5678 elf32-cr16.c:2897 elf32-m68k.c:4672 msgid "unsupported reloc type" -msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ºÆÇÛÃÖ¥¿¥¤¥×¤Ç¤¹" +msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å†é…置型ã§ã™" -#: coff-mips.c:875 elf32-mips.c:1997 elf64-mips.c:1739 +#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:430 elf32-score7.c:330 +#: elf64-mips.c:2019 elfn32-mips.c:1832 msgid "GP relative relocation when _gp not defined" -msgstr "GP ´ØÏ¢¤ÎºÆÇÛÃÖ¤¬ _gp ¤¬Ì¤ÄêµÁ¤Î»þÅÀ¤Ç¸½¤ì¤Þ¤·¤¿" +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-or32.c:229 +msgid "Unrecognized reloc" +msgstr "èªè­˜ã§ããªã„å†é…ç½®ã§ã™" -#: coff-rs6000.c:2710 coff64-rs6000.c:1164 +#: coff-rs6000.c:2794 #, c-format msgid "%s: unsupported relocation type 0x%02x" -msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× 0x%02x ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +msgstr "%s: å†é…置型 0x%02x ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: coff-rs6000.c:2756 coff64-rs6000.c:1210 +#: coff-rs6000.c:2887 #, c-format msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" -msgstr "%s: TOC ºÆÇÛÃÖ(0x%x, ¥·¥ó¥Ü¥ë `%s') ¤Ë TOC ¥¨¥ó¥È¥ê¤¬¤¢¤ê¤Þ¤»¤ó" +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-rs6000.c:3652 coff64-rs6000.c:2175 +msgid "%B: symbol `%s' has unrecognized smclas %d" +msgstr "%B: シンボル `%s' ã¯èªè­˜ã§ããªã„ smclas %d ã‚’æŒã£ã¦ã„ã¾ã™" -#: coff-tic54x.c:279 coff-tic80.c:449 +#: coff-tic4x.c:195 coff-tic54x.c:299 coff-tic80.c:458 #, c-format msgid "Unrecognized reloc type 0x%x" -msgstr "ºÆÇÛÃÖ¥¿¥¤¥× 0x%x ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" +msgstr "èªè­˜ã§ããªã„å†é…置型 0x%x ã§ã™" -#: coff-tic54x.c:390 coffcode.h:4868 +#: coff-tic4x.c:240 #, c-format msgid "%s: warning: illegal symbol index %ld in relocs" -msgstr "%s: ·Ù¹ð: ÉÔÀµ¤Ê¥·¥ó¥Ü¥ë¥¤¥ó¥Ç¥Ã¥¯¥¹ %ld ¤¬ºÆÇÛÃÖÆ⥨¥ó¥È¥ê¤Ë¤¢¤ê¤Þ¤¹" +msgstr "%s: 警告: ä¸æ­£ãªã‚·ãƒ³ãƒœãƒ«ç´¢å¼• %ld ãŒå†é…置領域内ã«ã‚ã‚Šã¾ã™" -#: coff-w65.c:363 +#: coff-w65.c:367 #, c-format msgid "ignoring reloc %s\n" -msgstr "ºÆÇÛÃÖ %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:973 +msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'" +msgstr "%B: 警告: COMDAT シンボル '%s' ã¯ã‚»ã‚¯ã‚·ãƒ§ãƒ³å '%s' ã«é©åˆã—ã¾ã›ã‚“" + +#. Generate a warning message rather using the 'unhandled' +#. variable as this will allow some .sys files generate by +#. other toolchains to be processed. See bugzilla issue 196. +#: coffcode.h:1197 +msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s" +msgstr "%B: 警告: セクション %s 内㮠IMAGE_SCN_MEM_NOT_PAGED セクションフラグを無視ã—ã¦ã„ã¾ã™" + +#: coffcode.h:1264 +msgid "%B (%s): Section flag %s (0x%x) ignored" +msgstr "%B (%s): セクションフラグ %s (0x%x) を無視ã—ã¾ã—ãŸ" -#: coffcode.h:2132 +#: coffcode.h:2390 #, c-format msgid "Unrecognized TI COFF target id '0x%x'" -msgstr "TI COFF ¥¿¡¼¥²¥Ã¥È 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:2704 +msgid "%B: reloc against a non-existant symbol index: %ld" +msgstr "%B: 存在ã—ãªã„シンボル索引ã«å¯¾ã™ã‚‹å†é…ç½®ã§ã™: %ld" -#: coffcode.h:4271 -#, c-format -msgid "%s: warning: duplicate line number information for `%s'" -msgstr "%s: ·Ù¹ð: `%s' ÍѤιÔÈÖ¹æ¾ðÊ󤬽ÅÊ£¤·¤Æ¤¤¤Þ¤¹" +#: coffcode.h:3262 +msgid "%B: too many sections (%d)" +msgstr "%B: セクションãŒå¤šã™ãŽã¾ã™ (%d)" -#: coffcode.h:4630 -#, c-format -msgid "%s: Unrecognized storage class %d for %s symbol `%s'" -msgstr "%s: µ­²±¥¯¥é¥¹ %d (section %s, symbol `%s') ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" +#: coffcode.h:3676 +msgid "%B: section %s: string table overflow at offset %ld" +msgstr "%B: セクション %s: オフセット %ld ã§æ–‡å­—列表ãŒæº¢ã‚Œã¾ã—ãŸ" -#: coffcode.h:4761 -#, c-format -msgid "warning: %s: local symbol `%s' has no section" -msgstr "·Ù¹ð: %s: ¶É½ê¥·¥ó¥Ü¥ë `%s' ¤¬¥»¥¯¥·¥ç¥ó¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó" +#: coffcode.h:4481 +msgid "%B: warning: line number table read failed" +msgstr "%B: 警告: 行番å·è¡¨ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ" -#: coffcode.h:4906 -#, c-format -msgid "%s: illegal relocation type %d at address 0x%lx" -msgstr "%s: ÉÔÀµ¤ÊºÆÇÛÃÖ¥¿¥¤¥× %d ¤¬¥¢¥É¥ì¥¹ 0x%lx ¤Ç¸«¤Ä¤«¤ê¤Þ¤·¤¿" +#: coffcode.h:4511 +msgid "%B: warning: illegal symbol index %ld in line numbers" +msgstr "%B: 警告: 無効ãªã‚·ãƒ³ãƒœãƒ«ç´¢å¼• %ld ãŒè¡Œç•ªå·ä¸­ã«ã‚ã‚Šã¾ã™" -#: coffgen.c:1661 -#, c-format -msgid "%s: bad string table size %lu" -msgstr "%s: ʸ»úÎó¥Æ¡¼¥Ö¥ë¥µ¥¤¥º %lu ¤ÏÉÔÀµ¤Ç¤¹" +#: coffcode.h:4525 +msgid "%B: warning: duplicate line number information for `%s'" +msgstr "%B: 警告: `%s' ã«å¯¾ã™ã‚‹è¡Œç•ªå·æƒ…å ±ãŒé‡è¤‡ã—ã¦ã„ã¾ã™" -#: 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 Æâ)" +#: coffcode.h:4916 +msgid "%B: Unrecognized storage class %d for %s symbol `%s'" +msgstr "%1$B: %3$s シンボル `%4$s' ã«å¯¾ã™ã‚‹èªè­˜ã§ããªã„記憶域クラス %2$d ã§ã™" -#: cofflink.c:2317 -#, c-format -msgid "%s: relocs in section `%s', but it has no contents" -msgstr "%s: ¥»¥¯¥·¥ç¥ó `%s' Æâ¤ÎºÆÇÛÃÖÎΰè¤ËÆâÍƤ¬¤¢¤ê¤Þ¤»¤ó" +#: coffcode.h:5042 +msgid "warning: %B: local symbol `%s' has no section" +msgstr "警告: %B: 局所シンボル `%s' ãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’æŒã£ã¦ã„ã¾ã›ã‚“" + +#: coffcode.h:5186 +msgid "%B: illegal relocation type %d at address 0x%lx" +msgstr "%B: ä¸æ­£ãªå†é…置型 %d ãŒã‚¢ãƒ‰ãƒ¬ã‚¹ 0x%lx ã«ã‚ã‚Šã¾ã™" + +#: coffgen.c:1573 +msgid "%B: bad string table size %lu" +msgstr "%s: 文字列表サイズ %lu ãŒèª¤ã£ã¦ã„ã¾ã™" + +#: cofflink.c:524 elflink.c:4339 +msgid "Warning: type of symbol `%s' changed from %d to %d in %B" +msgstr "警告: %4$B 内ã§ã‚·ãƒ³ãƒœãƒ« `%1$s' ã®åž‹ãŒ %2$d ã‹ã‚‰ %3$d ã«å¤‰æ›´ã•ã‚Œã¾ã—ãŸ" -#: cofflink.c:2653 coffswap.h:889 +#: cofflink.c:2321 +msgid "%B: relocs in section `%A', but it has no contents" +msgstr "%B: セクション `%A' ã«å†é…置領域ãŒã‚ã‚Šã¾ã™ãŒã€ä¸­èº«ãŒã‚ã‚Šã¾ã›ã‚“" + +#: cofflink.c:2652 coffswap.h:826 #, c-format msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" -msgstr "%s: %s: ºÆÇÛÃÖÎΰ褬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿: 0x%lx > 0xffff" +msgstr "%s: %s: å†é…置領域ãŒæº¢ã‚Œã¾ã—ãŸ: 0x%lx > 0xffff" -#: cofflink.c:2662 coffswap.h:876 +#: cofflink.c:2661 coffswap.h:812 #, c-format msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" -msgstr "%s: ·Ù¹ð: %s: ¹ÔÈֹ椬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿: 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 ¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¡£" +#: cpu-arm.c:189 cpu-arm.c:200 +msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale" +msgstr "エラー: %B 㯠EP9312 ã«å¯¾ã—ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚らãšã€ %B 㯠XScale ã«å¯¾ã—ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã¾ã™" -#: 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) ¤è¤êÂ礭¤¤¤Ç¤¹¡£" +#: cpu-arm.c:333 +#, c-format +msgid "warning: unable to update contents of %s section in %s" +msgstr "警告: %2$s 内ã«ã‚ã‚‹ %1$s セクションã®å†…容を更新ã§ãã¾ã›ã‚“" -#: dwarf2.c:542 -msgid "Dwarf Error: Can't find .debug_abbrev section." -msgstr "Dwarf ¥¨¥é¡¼: .debug_abbrev ¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¡£" +#: dwarf2.c:490 +#, c-format +msgid "Dwarf Error: Can't find %s section." +msgstr "Dwarf エラー: %s セクションãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: 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:518 +#, c-format +msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)." +msgstr "Dwarf エラー: オフセット (%lu) ㌠%s ã®ã‚µã‚¤ã‚º (%lu) 以上ã§ã™ã€‚" -#: dwarf2.c:756 +#: dwarf2.c:940 #, c-format -msgid "Dwarf Error: Invalid or unhandled FORM value: %d." -msgstr "Dwarf ¥¨¥é¡¼: FORM Ãͤ¬ÉÔŬÀڤǤ¢¤ë¤«¡¢¼è¤ê°·¤¨¤Þ¤»¤ó: %d¡£" +msgid "Dwarf Error: Invalid or unhandled FORM value: %u." +msgstr "Dwarf エラー: 無効ã¾ãŸã¯æ‰±ãˆãªã„ FORM 値ã§ã™: %u" -#: dwarf2.c:843 +#: dwarf2.c:1191 msgid "Dwarf Error: mangled line number section (bad file number)." -msgstr "Dwarf ¥¨¥é¡¼: ¹ÔÈֹ楻¥¯¥·¥ç¥ó¤¬ÊÑ·Á¤µ¤ì¤Þ¤·¤¿¡ÊÉÔÀµ¤Ê¥Õ¥¡¥¤¥ëÈÖ¹æ¡Ë¡£" +msgstr "Dwarf エラー: 行番å·ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãŒå¤‰å½¢ã•ã‚Œã¾ã—ãŸï¼ˆä¸æ­£ãªãƒ•ã‚¡ã‚¤ãƒ«ç•ªå·ï¼‰ã€‚" -#: dwarf2.c:929 -msgid "Dwarf Error: Can't find .debug_line section." -msgstr "Dwarf ¥¨¥é¡¼: .debug_line ¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¡£" +#: dwarf2.c:1443 +#, c-format +msgid "Dwarf Error: Unhandled .debug_line version %d." +msgstr "Dwarf エラー: .debug_line ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d を扱ãˆã¾ã›ã‚“ã§ã—ãŸã€‚" -#: 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:1465 +msgid "Dwarf Error: Invalid maximum operations per instruction." +msgstr "Dwarf エラー: 無効ãªå‘½ä»¤ã”ã¨ã®æœ€å¤§æ“作数ã§ã™ã€‚" -#: dwarf2.c:1143 +#: dwarf2.c:1652 msgid "Dwarf Error: mangled line number section." -msgstr "Dwarf ¥¨¥é¡¼: ¹ÔÈֹ楻¥¯¥·¥ç¥ó¤¬ÊÑ·Á¤µ¤ì¤Þ¤·¤¿¡£" +msgstr "Dwarf エラー: 行番å·ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãŒå¤‰å½¢ã•ã‚Œã¾ã—ãŸã€‚" -#: dwarf2.c:1318 dwarf2.c:1529 +#: dwarf2.c:1978 dwarf2.c:2098 dwarf2.c:2382 #, c-format -msgid "Dwarf Error: Could not find abbrev number %d." -msgstr "Dwarf ¥¨¥é¡¼: abbrev ÈÖ¹æ %d ¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£" +msgid "Dwarf Error: Could not find abbrev number %u." +msgstr "Dwarf エラー: abbrev ç•ªå· %u ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" -#: dwarf2.c:1490 +#: dwarf2.c:2343 #, c-format -msgid "" -"Dwarf Error: found dwarf version '%hu', this reader only handles version 2 " -"information." -msgstr "" -"Dwarf ¥¨¥é¡¼: dwarf ¥Ð¡¼¥¸¥ç¥ó '%hu' ¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿¤¬¡¢¥Ð¡¼¥¸¥ç¥ó 2 ¤Î¾ðÊó" -"¤·¤«Æɤ߼è¤ì¤Þ¤»¤ó¡£" +msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information." +msgstr "Dwarf エラー: dwarf ãƒãƒ¼ã‚¸ãƒ§ãƒ³ '%u' ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸãŒã€ã“ã®å‡¦ç†ç³»ã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2, 3 ãŠã‚ˆã³ 4 ã®æƒ…å ±ã—ã‹èª­ã¿è¾¼ã‚ã¾ã›ã‚“。" -#: dwarf2.c:1497 +#: dwarf2.c:2350 #, c-format -msgid "" -"Dwarf Error: found address size '%u', this reader can not handle sizes " -"greater than '%u'." -msgstr "" -"Dwarf ¥¨¥é¡¼: ¥¢¥É¥ì¥¹¥µ¥¤¥º '%u' ¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿¤¬¡¢'%u' ¤è¤êÂ礭¤Ê¥µ¥¤¥º¤Ï" -"°·¤¨¤Þ¤»¤ó¡£" +msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'." +msgstr "Dwarf エラー: アドレスサイズ '%u' ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸãŒã€ã“ã®å‡¦ç†ç³»ã¯ã‚µã‚¤ã‚º '%u' より大ãã„サイズを扱ãˆã¾ã›ã‚“。" -#: dwarf2.c:1520 +#: dwarf2.c:2373 #, c-format -msgid "Dwarf Error: Bad abbrev number: %d." -msgstr "Dwarf ¥¨¥é¡¼: ÉÔÀµ¤Ê abbrev ÈÖ¹æ¤Ç¤¹: %d¡£" +msgid "Dwarf Error: Bad abbrev number: %u." +msgstr "Dwarf エラー: ä¸æ­£ãª abbrev 番å·ã§ã™: %u" -#: ecoff.c:1328 +#: ecoff.c:1237 #, c-format msgid "Unknown basic type %d" -msgstr "´ðËÜ·¿ %d ¤¬ÉÔÌÀ¤Ç¤¹" +msgstr "基本型 %d ãŒä¸æ˜Žã§ã™" -#: ecoff.c:1597 +#: ecoff.c:1494 #, c-format msgid "" "\n" " End+1 symbol: %ld" msgstr "" "\n" -" End+1 ¥·¥ó¥Ü¥ë: %ld" +" End+1 シンボル: %ld" -#: ecoff.c:1604 ecoff.c:1607 +#: ecoff.c:1501 ecoff.c:1504 #, c-format msgid "" "\n" " First symbol: %ld" msgstr "" "\n" -" ºÇ½é¤Î¥·¥ó¥Ü¥ë: %ld" +" 最åˆã®ã‚·ãƒ³ãƒœãƒ«: %ld" -#: ecoff.c:1619 +#: ecoff.c:1516 #, c-format msgid "" "\n" " End+1 symbol: %-7ld Type: %s" msgstr "" "\n" -" End+1 ¥·¥ó¥Ü¥ë: %-7ld ¥¿¥¤¥×: %s" +" End+1 シンボル: %-7ld タイプ: %s" -#: ecoff.c:1626 +#: ecoff.c:1523 #, c-format msgid "" "\n" " Local symbol: %ld" msgstr "" "\n" -" ¶É½ê¥·¥ó¥Ü¥ë: %ld" +" 局所シンボル: %ld" -#: ecoff.c:1634 +#: ecoff.c:1531 #, c-format msgid "" "\n" " struct; End+1 symbol: %ld" msgstr "" "\n" -" struct; End+1 ¥·¥ó¥Ü¥ë: %ld" +" struct; End+1 シンボル: %ld" -#: ecoff.c:1639 +#: ecoff.c:1536 #, c-format msgid "" "\n" " union; End+1 symbol: %ld" msgstr "" "\n" -" union; End+1 ¥·¥ó¥Ü¥ë: %ld" +" union; End+1 シンボル: %ld" -#: ecoff.c:1644 +#: ecoff.c:1541 #, c-format msgid "" "\n" " enum; End+1 symbol: %ld" msgstr "" "\n" -" enum; End+1 ¥·¥ó¥Ü¥ë: %ld" +" enum; End+1 シンボル: %ld" -#: ecoff.c:1650 +#: ecoff.c:1547 #, 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 ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" +" åž‹: %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 +#: elf-attrs.c:569 +msgid "error: %B: Object has vendor-specific contents that must be processed by the '%s' toolchain" +msgstr "エラー: %B: オブジェクトã«ã¯ãƒ™ãƒ³ãƒ€å›ºæœ‰ã®å†…容ãŒã‚ã‚Š '%s' ツール群ã§å‡¦ç†ã•ã‚Œãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“" + +#: elf-attrs.c:578 +msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'" +msgstr "エラー: %B: オブジェクトタグ '%d, %s' ã¯ã‚¿ã‚° '%d, %s' ã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“" + +#: elf-eh-frame.c:913 +msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n" +msgstr "%P: %B(%A) 内ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚.eh_frame_hdr 表ã¯ä½œæˆã•ã‚Œã¾ã›ã‚“。\n" + +#: elf-eh-frame.c:1165 +msgid "%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n" +msgstr "%P: %B(%A) 内㮠fde エンコード㯠.eh_frame_hdr 表ã®ä½œæˆã‚’阻害ã—ã¾ã™ã€‚\n" + +#: elf-ifunc.c:179 +msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%B' can not be used when making an executable; recompile with -fPIE and relink with -pie\n" +msgstr "" + +#: elf-m10200.c:450 elf-m10300.c:1560 elf32-avr.c:1263 elf32-bfin.c:3193 +#: elf32-cr16.c:1482 elf32-cr16c.c:780 elf32-cris.c:2077 elf32-crx.c:922 +#: elf32-d10v.c:509 elf32-fr30.c:609 elf32-frv.c:4111 elf32-h8300.c:509 +#: elf32-i860.c:1211 elf32-ip2k.c:1468 elf32-iq2000.c:684 elf32-lm32.c:1168 +#: elf32-m32c.c:553 elf32-m32r.c:3111 elf32-m68hc1x.c:1138 elf32-mep.c:534 +#: elf32-microblaze.c:1231 elf32-moxie.c:282 elf32-msp430.c:486 elf32-mt.c:395 +#: elf32-openrisc.c:404 elf32-score.c:2731 elf32-score7.c:2540 +#: elf32-spu.c:5042 elf32-v850.c:2143 elf32-xstormy16.c:941 elf64-mmix.c:1522 msgid "internal error: out of range error" -msgstr "ÆâÉô¥¨¥é¡¼: Èϰϳ°¥¨¥é¡¼¤Ç¤¹" +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 +#: elf-m10200.c:454 elf-m10300.c:1564 elf32-avr.c:1267 elf32-bfin.c:3197 +#: elf32-cr16.c:1486 elf32-cr16c.c:784 elf32-cris.c:2081 elf32-crx.c:926 +#: elf32-d10v.c:513 elf32-fr30.c:613 elf32-frv.c:4115 elf32-h8300.c:513 +#: elf32-i860.c:1215 elf32-iq2000.c:688 elf32-lm32.c:1172 elf32-m32c.c:557 +#: elf32-m32r.c:3115 elf32-m68hc1x.c:1142 elf32-mep.c:538 +#: elf32-microblaze.c:1235 elf32-moxie.c:286 elf32-msp430.c:490 +#: elf32-openrisc.c:408 elf32-score.c:2735 elf32-score7.c:2544 +#: elf32-spu.c:5046 elf32-v850.c:2147 elf32-xstormy16.c:945 elf64-mmix.c:1526 +#: elfxx-mips.c:9186 msgid "internal error: unsupported relocation error" -msgstr "ÆâÉô¥¨¥é¡¼: ̤¥µ¥Ý¡¼¥È¤ÎºÆÇÛÃÖ¥¨¥é¡¼" +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 +#: elf-m10200.c:458 elf32-cr16.c:1490 elf32-cr16c.c:788 elf32-crx.c:930 +#: elf32-d10v.c:517 elf32-h8300.c:517 elf32-lm32.c:1176 elf32-m32r.c:3119 +#: elf32-m68hc1x.c:1146 elf32-microblaze.c:1239 elf32-score.c:2739 +#: elf32-score7.c:2548 elf32-spu.c:5050 msgid "internal error: dangerous error" -msgstr "ÆâÉô¥¨¥é¡¼: ´í¸±¤Ê¥¨¥é¡¼" +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 +#: elf-m10200.c:462 elf-m10300.c:1577 elf32-avr.c:1275 elf32-bfin.c:3205 +#: elf32-cr16.c:1494 elf32-cr16c.c:792 elf32-cris.c:2089 elf32-crx.c:934 +#: elf32-d10v.c:521 elf32-fr30.c:621 elf32-frv.c:4123 elf32-h8300.c:521 +#: elf32-i860.c:1223 elf32-ip2k.c:1483 elf32-iq2000.c:696 elf32-lm32.c:1180 +#: elf32-m32c.c:565 elf32-m32r.c:3123 elf32-m68hc1x.c:1150 elf32-mep.c:546 +#: elf32-microblaze.c:1243 elf32-moxie.c:294 elf32-msp430.c:498 elf32-mt.c:403 +#: elf32-openrisc.c:416 elf32-score.c:2748 elf32-score7.c:2552 +#: elf32-spu.c:5054 elf32-v850.c:2167 elf32-xstormy16.c:953 elf64-mmix.c:1534 msgid "internal error: unknown error" -msgstr "ÆâÉô¥¨¥é¡¼: ÉÔÌÀ¤Ê¥¨¥é¡¼" +msgstr "内部エラー: ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼" -#: elf.c:343 -#, c-format -msgid "%s: invalid string offset %u >= %lu for section `%s'" -msgstr "%s: ÉÔŬÀÚ¤Êʸ»úÎ󥪥ե»¥Ã¥È %u >= %lu (¥»¥¯¥·¥ç¥ó `%s' ÍÑ)" +#: elf-m10300.c:1504 elf32-arm.c:9098 elf32-i386.c:4081 elf32-m32r.c:2604 +#: elf32-m68k.c:4156 elf32-ppc.c:8089 elf32-s390.c:3010 elf32-sh.c:4223 +#: elf32-xtensa.c:3067 elf64-ppc.c:13115 elf64-s390.c:2985 elf64-sh64.c:1636 +#: elf64-x86-64.c:3719 elfxx-sparc.c:3806 +msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%1$B(%2$A+0x%3$lx): シンボル `%5$s' ã«å¯¾ã™ã‚‹è§£æ±ºã§ããªã„ %4$s å†é…ç½®ã§ã™" + +#: elf-m10300.c:1569 +msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)" +msgstr "エラー: 共有ライブラリã«å¯¾ã™ã‚‹ä¸é©åˆ‡ãªå†é…置型ã§ã™ (-fpic を忘れã¦ã„ã¾ã›ã‚“ã‹?)" + +#: elf-m10300.c:1572 +msgid "internal error: suspicious relocation type used in shared library" +msgstr "内部エラー: 共有ライブラリ内ã«ç–‘å•ã®æ®‹ã‚‹å†é…置型ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™" + +#: elf-m10300.c:4372 elf32-arm.c:11392 elf32-cr16.c:2451 elf32-cris.c:3044 +#: elf32-hppa.c:1894 elf32-i370.c:503 elf32-i386.c:2036 elf32-lm32.c:1868 +#: elf32-m32r.c:1927 elf32-m68k.c:3252 elf32-ppc.c:4994 elf32-s390.c:1652 +#: elf32-sh.c:2931 elf32-vax.c:1040 elf64-ppc.c:6483 elf64-s390.c:1635 +#: elf64-sh64.c:3377 elf64-x86-64.c:1871 elfxx-sparc.c:2104 +#, c-format +msgid "dynamic variable `%s' is zero size" +msgstr "動的変数 `%s' ã®ã‚µã‚¤ã‚ºãŒ 0 ã§ã™" + +#: elf.c:334 +msgid "%B: invalid string offset %u >= %lu for section `%s'" +msgstr "%1$B: `%4$s' ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªæ–‡å­—列オフセット %2$u >= %3$lu ã§ã™" + +#: elf.c:446 +msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" +msgstr "%B ã‚·ãƒ³ãƒœãƒ«ç•ªå· %lu ãŒå­˜åœ¨ã—ãªã„ SHT_SYMTAB_SHNDX セクションをå‚ç…§ã—ã¦ã„ã¾ã™" + +#: elf.c:602 +msgid "%B: Corrupt size field in group section header: 0x%lx" +msgstr "%B: グループセクションヘッダ内ã«å£Šã‚ŒãŸã‚µã‚¤ã‚ºãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒã‚ã‚Šã¾ã™: 0x%lx" + +#: elf.c:638 +msgid "%B: invalid SHT_GROUP entry" +msgstr "%B: 無効㪠SHT_GROUP エントリã§ã™" + +#: elf.c:708 +msgid "%B: no group info for section %A" +msgstr "%B: セクション %A ã«ã‚°ãƒ«ãƒ¼ãƒ—情報ãŒã‚ã‚Šã¾ã›ã‚“" + +#: elf.c:737 elf.c:3090 elflink.c:10062 +msgid "%B: warning: sh_link not set for section `%A'" +msgstr "%B: 警告: セクション `%A' ã«å¯¾ã™ã‚‹ sh_link ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: elf.c:756 +msgid "%B: sh_link [%d] in section `%A' is incorrect" +msgstr "%1$B: セクション `%2$A' 内㮠sh_link [%d] ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™" + +#: elf.c:791 +msgid "%B: unknown [%d] section `%s' in group [%s]" +msgstr "%1$B: グループ [%4$s] 内ã«ä¸æ˜Žãª [%2$d] セクション `%3$s' ãŒã‚ã‚Šã¾ã™" -#: elf.c:448 -#, c-format -msgid "%s: invalid SHT_GROUP entry" -msgstr "" +#: elf.c:1041 +msgid "%B: unable to initialize commpress status for section %s" +msgstr "%B: セクション %s ã«å¯¾ã™ã‚‹åœ§ç¸®çŠ¶æ…‹ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“" -#: elf.c:529 -#, fuzzy, c-format -msgid "%s: no group info for section %s" -msgstr "%s: ¥í¡¼¥ÀºÆÇÛÃÖ¤¬Æɹþ¤ßÀìÍÑ¥»¥¯¥·¥ç¥ó %s ¤Ë¤¢¤ê¤Þ¤¹" +#: elf.c:1050 +msgid "%B: unable to initialize decommpress status for section %s" +msgstr "%B: セクション %s ã«å¯¾ã™ã‚‹ä¼¸å¼µçŠ¶æ…‹ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“" -#: elf.c:840 +#: elf.c:1158 +#, c-format msgid "" "\n" "Program Header:\n" msgstr "" "\n" -"¥×¥í¥°¥é¥à¥Ø¥Ã¥À:\n" +"プログラムヘッダ:\n" -#: elf.c:889 +#: elf.c:1200 +#, c-format msgid "" "\n" "Dynamic Section:\n" msgstr "" "\n" -"ưŪ¥»¥¯¥·¥ç¥ó:\n" +"動的セクション:\n" -#: elf.c:1018 +#: elf.c:1336 +#, c-format msgid "" "\n" "Version definitions:\n" msgstr "" "\n" -"¥Ð¡¼¥¸¥ç¥óÄêµÁ:\n" +"ãƒãƒ¼ã‚¸ãƒ§ãƒ³å®šç¾©:\n" -#: elf.c:1041 +#: elf.c:1361 +#, c-format msgid "" "\n" "Version References:\n" msgstr "" "\n" -"¥Ð¡¼¥¸¥ç¥ó»²¾È:\n" +"ãƒãƒ¼ã‚¸ãƒ§ãƒ³å‚ç…§:\n" -#: elf.c:1046 +#: elf.c:1366 #, c-format msgid " required from %s:\n" -msgstr " %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:1773 +msgid "%B: invalid link %lu for reloc section %s (index %u)" +msgstr "%1$B: å†é…置セクション %3$s ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªãƒªãƒ³ã‚¯ %2$lu ã§ã™ (索引 %4$u)" -#: elf.c:3296 -#, c-format -msgid "%s: Not enough room for program headers (allocated %u, need %u)" -msgstr "%s: ¥×¥í¥°¥é¥à¥Ø¥Ã¥ÀÍѤζõ´Ö¤¬ÉÔ½½Ê¬¤Ç¤¹ (³ÎÊÝºÑ %u, Í× %u)" +#: elf.c:1943 +msgid "%B: don't know how to handle allocated, application specific section `%s' [0x%8x]" +msgstr "%B: 割り当ã¦æ¸ˆã¿ã®ã‚¢ãƒ—リケーション固有ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' [0x%8x] を扱ã†æ–¹æ³•ãŒåˆ†ã‹ã‚Šã¾ã›ã‚“" + +#: elf.c:1955 +msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]" +msgstr "%B: プロセッサ固有ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' [0x%8x] を扱ã†æ–¹æ³•ãŒåˆ†ã‹ã‚Šã¾ã›ã‚“" -#: elf.c:3400 +#: elf.c:1966 +msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]" +msgstr "%B: OS 固有ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' [0x%8x] を扱ã†æ–¹æ³•ãŒåˆ†ã‹ã‚Šã¾ã›ã‚“" + +#: elf.c:1976 +msgid "%B: don't know how to handle section `%s' [0x%8x]" +msgstr "%B: セクション `%s' [0x%8x] を扱ã†æ–¹æ³•ãŒåˆ†ã‹ã‚Šã¾ã›ã‚“" + +#: elf.c:2603 #, c-format -msgid "%s: Not enough room for program headers, try linking with -N" +msgid "warning: section `%A' type changed to PROGBITS" +msgstr "警告: セクション `%A' ã®åž‹ãŒ PROGBITS ã«å¤‰æ›´ã•ã‚Œã¾ã—ãŸ" + +#: elf.c:3047 +msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'" +msgstr "%1$B: セクション `%2$A' ã® sh_link ㌠`%4$B' ã®ç ´æ£„ã•ã‚ŒãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%3$A' を指ã—ã¦ã„ã¾ã™" + +#: elf.c:3070 +msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'" +msgstr "%1$B: セクション `%2$A' ã® sh_link ㌠`%4$B' ã®å‰Šé™¤ã•ã‚ŒãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%3$A' を指ã—ã¦ã„ã¾ã™" + +#: elf.c:4480 +msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section" +msgstr "%B: PT_DYNAMIC セグメントã®æœ€åˆã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãŒ .dynamic セクションã§ã¯ã‚ã‚Šã¾ã›ã‚“" + +#: elf.c:4507 +msgid "%B: Not enough room for program headers, try linking with -N" +msgstr "%B: プログラムヘッダ用ã®ç©ºé–“ãŒä¸å分ã§ã™ã€‚-N を付ã‘ã¦ãƒªãƒ³ã‚¯ã—ã¦ã¿ã¦ãã ã•ã„" + +#: elf.c:4594 +msgid "%B: section %A lma %#lx adjusted to %#lx" msgstr "" -"%s: ¥×¥í¥°¥é¥à¥Ø¥Ã¥ÀÍѤζõ´Ö¤¬ÉÔ½½Ê¬¤Ç¤¹¡£-N ¤òÉÕ¤±¤Æ¥ê¥ó¥¯¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤" -#: elf.c:3525 +#: elf.c:4713 +msgid "%B: section `%A' can't be allocated in segment %d" +msgstr "%B: セクション `%A' をセグメント %d 内ã§å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“" + +#: elf.c:4761 +msgid "%B: warning: allocated section `%s' not in segment" +msgstr "%B: 警告: 割り当ã¦æ¸ˆã¿ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' ãŒã‚»ã‚°ãƒ¡ãƒ³ãƒˆå†…ã«ã‚ã‚Šã¾ã›ã‚“" + +#: elf.c:5257 +msgid "%B: symbol `%s' required but not present" +msgstr "%B: シンボル `%s' ãŒè¦æ±‚ã•ã‚Œã¾ã—ãŸãŒå­˜åœ¨ã—ã¾ã›ã‚“" + +#: elf.c:5595 +msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n" +msgstr "%B: 警告: 空ã®ãƒ­ãƒ¼ãƒ‰å¯èƒ½ã‚»ã‚°ãƒ¡ãƒ³ãƒˆãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸã€‚ã“ã‚Œã¯æ„図ã—ãŸã‚‚ã®ã§ã™ã‹?\n" + +#: elf.c:6622 #, fuzzy, c-format +msgid "Unable to find equivalent output section for symbol '%s' from section '%s'" +msgstr "%s: 出力セクション %s (入力セクション %s 用) を見ã¤ã‘られã¾ã›ã‚“" + +#: elf.c:7611 +msgid "%B: unsupported relocation type %s" +msgstr "%B: サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å†é…置型 %s ã§ã™" + +#: elf32-arm.c:3183 msgid "" -"Error: First section in segment (%s) starts at 0x%x whereas the segment " -"starts at 0x%x" -msgstr "¥¨¥é¡¼: ¥»¥°¥á¥ó¥È (%s) ¤ÎºÇ½é¤Î¥»¥¯¥·¥ç¥ó¤¬ 0x%x ¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤ë" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: Thumb call to ARM" +msgstr "" +"%B(%s): 警告: ARM/Thumb 命令相互利用ãŒæœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n" +" 最åˆã®å‡ºç¾ç®‡æ‰€: %B: ARM を呼ã³å‡ºã™ Thumb 命令" -#: elf.c:3811 -#, c-format -msgid "%s: warning: allocated section `%s' not in segment" -msgstr "%s: ·Ù¹ð: ³ÎÊݤµ¤ì¤¿¥»¥¯¥·¥ç¥ó `%s' ¤¬¥»¥°¥á¥ó¥ÈÆâ¤Ë¤¢¤ê¤Þ¤»¤ó" +#: elf32-arm.c:3226 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: ARM call to Thumb" +msgstr "" +"%B(%s): 警告: ARM/Thumb 命令相互利用ãŒæœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n" +" 最åˆã®å‡ºç¾ç®‡æ‰€: %B: Thumb を呼ã³å‡ºã™ ARM 命令" -#: elf.c:4142 +#: elf32-arm.c:3432 elf32-arm.c:4807 #, c-format -msgid "%s: symbol `%s' required but not present" -msgstr "%s: ¥·¥ó¥Ü¥ë `%s' ¤¬Í׵ᤵ¤ì¤Þ¤·¤¿¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" +msgid "%s: cannot create stub entry %s" +msgstr "%s: スタブエントリ %s を作æˆã§ãã¾ã›ã‚“" -#: elf.c:4395 +#: elf32-arm.c:4923 #, c-format -msgid "%s: warning: Empty loadable segment detected\n" -msgstr "%s: ·Ù¹ð: ¶õ¤Î¥í¡¼¥À¥Ö¥ë¥»¥°¥á¥ó¥È¤¬¸¡½Ð¤µ¤ì¤Þ¤·¤¿\n" +msgid "unable to find THUMB glue '%s' for '%s'" +msgstr "'%2$s' ã«å¯¾ã™ã‚‹ Thumb 糊 '%1$s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: elf.c:5808 +#: elf32-arm.c:4959 #, c-format -msgid "%s: unsupported relocation type %s" -msgstr "%s: ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ºÆÇÛÃÖ¥¿¥¤¥× %s ¤Ç¤¹" +msgid "unable to find ARM glue '%s' for '%s'" +msgstr "'%2$s' ã«å¯¾ã™ã‚‹ ARM 糊 '%1$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.c:5485 +msgid "%B: BE8 images only valid in big-endian mode." +msgstr "%B: BE8 イメージã¯ãƒ“ッグエンディアンモードã§ã®ã¿æœ‰åŠ¹ã§ã™" -#: elf32-arm.h:1420 -#, c-format -msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." +#. Give a warning, but do as the user requests anyway. +#: elf32-arm.c:5715 +msgid "%B: warning: selected VFP11 erratum workaround is not necessary for target architecture" 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" +#: elf32-arm.c:6259 elf32-arm.c:6279 +msgid "%B: unable to find VFP11 veneer `%s'" 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.c:6327 +#, c-format +msgid "Invalid TARGET2 relocation type '%s'." +msgstr "無効㪠TARGET2 å†é…置型 '%s' ã§ã™ã€‚" -#: elf32-arm.h:2166 -#, fuzzy, c-format +#: elf32-arm.c:6411 msgid "" -"Warning: Clearing the interworking flag of %s because non-interworking code " -"in %s has been linked with it" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: thumb call to arm" msgstr "" -"·Ù¹ð: %s ¤Î interwork ¥Õ¥é¥°¤ò¥¯¥ê¥¢¤·¤Þ¤¹¡£%s ¤ÎÈó interworking ¥³¡¼¥É¤È°ì½ï" -"¤Ë¥ê¥ó¥¯¤µ¤ì¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£" +"%B(%s): 警告: ARM/Thumb 命令相互利用ãŒæœ‰åŠ¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n" +" 最åˆã®å‡ºç¾ç®‡æ‰€: %B: ARM を呼ã³å‡ºã™ Thumb 命令" -#: 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.c:7130 +msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'." +msgstr "\\%B: 警告: ARM ã® BLX 命令㌠ARM 関数 '%s' を指ã—ã¦ã„ã¾ã™ã€‚" -#: elf32-arm.h:2275 -#, c-format -msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d" +#: elf32-arm.c:7541 +msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'." +msgstr "%B: 警告: Thumb ã® BLX 命令㌠Thumb 関数 '%s' を指ã—ã¦ã„ã¾ã™ã€‚" + +#: elf32-arm.c:8223 +msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object" +msgstr "%B(%A+0x%lx): R_ARM_TLS_LE32 å†é…ç½®ã¯å…±æœ‰ã‚ªãƒ–ジェクト内ã§ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: elf32-arm.c:8438 +msgid "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group relocations" +msgstr "%B(%A+0x%lx): ALU グループå†é…ç½®ã«å¯¾ã—ã¦ã¯ ADD ã¾ãŸã¯ SUB 命令ã®ã¿è¨±å¯ã•ã‚Œã¦ã„ã¾ã™" + +#: elf32-arm.c:8478 elf32-arm.c:8565 elf32-arm.c:8648 elf32-arm.c:8733 +msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s" 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" +#: elf32-arm.c:8963 elf32-sh.c:4112 elf64-sh64.c:1544 +msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section" +msgstr "%B(%A+0x%lx): SEC_MERGE セクションã«å¯¾ã™ã‚‹ %s å†é…ç½®ã§ã™" + +#: elf32-arm.c:9074 elf32-m68k.c:4191 elf32-xtensa.c:2805 elf64-ppc.c:11689 +msgid "%B(%A+0x%lx): %s used with TLS symbol %s" +msgstr "%B(%A+0x%lx): %s ㌠TLS シンボル %s ã¨ä½µã›ã¦ä½¿ç”¨ã•ã‚Œã¾ã—ãŸ" + +#: elf32-arm.c:9075 elf32-m68k.c:4192 elf32-xtensa.c:2806 elf64-ppc.c:11690 +msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s" +msgstr "%B(%A+0x%lx): %s ㌠TLS ã§ã¯ãªã„シンボル %s ã¨ä½µã›ã¦ä½¿ç”¨ã•ã‚Œã¾ã—ãŸ" + +#: elf32-arm.c:9132 elf32-tic6x.c:1632 +msgid "out of range" +msgstr "範囲外" + +#: elf32-arm.c:9136 elf32-tic6x.c:1636 +msgid "unsupported relocation" +msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å†é…ç½®" + +#: elf32-arm.c:9144 elf32-tic6x.c:1644 +msgid "unknown error" +msgstr "ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼" + +#: elf32-arm.c:9569 +msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it" 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" +#: elf32-arm.c:9663 +msgid "%B: Unknown mandatory EABI object attribute %d" +msgstr "%B: ä¸æ˜Žãªå¿…é ˆ EABI オブジェクト属性 %d ã§ã™" + +#: elf32-arm.c:9671 +msgid "Warning: %B: Unknown EABI object attribute %d" +msgstr "警告: %B: ä¸æ˜ŽãªEABI オブジェクト属性 %d ã§ã™" + +#: elf32-arm.c:9852 +msgid "error: %B: Unknown CPU architecture" +msgstr "エラー: %B: ä¸æ˜Žãª CPU アーキテクãƒãƒ£ã§ã™" + +#: elf32-arm.c:9890 +msgid "error: %B: Conflicting CPU architectures %d/%d" +msgstr "エラー: %B: CPU アーキテクãƒãƒ£ %d/%d ãŒç«¶åˆã—ã¦ã„ã¾ã™" + +#: elf32-arm.c:9942 +msgid "Error: %B has both the current and legacy Tag_MPextension_use attributes" msgstr "" -"¥¨¥é¡¼: %s ¤ÏÉâÆ°¾®¿ô¤ò%s¥ì¥¸¥¹¥¿¤ËÅϤ·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬¤½¤ì¤é¤ò%s" -"¥ì¥¸¥¹¥¿¤ËÅϤ·¤Æ¤¤¤Þ¤¹" -#: elf32-arm.h:2303 -#, fuzzy, c-format -msgid "Error: %s uses VFP instructions, whereas %s uses FPA instructions" +#: elf32-arm.c:9967 +msgid "error: %B uses VFP register arguments, %B does not" msgstr "" -"¥¨¥é¡¼: %s ¤Ï%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã" -"¤Æ¤¤¤Þ¤¹" -#: elf32-arm.h:2308 -#, fuzzy, c-format -msgid "Error: %s uses FPA instructions, whereas %s uses VFP instructions" +#: elf32-arm.c:10112 +msgid "error: %B: unable to merge virtualization attributes with %B" msgstr "" -"¥¨¥é¡¼: %s ¤Ï%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã" -"¤Æ¤¤¤Þ¤¹" -#: elf32-arm.h:2328 -#, fuzzy, c-format -msgid "Error: %s uses software FP, whereas %s uses hardware FP" +#: elf32-arm.c:10138 +msgid "error: %B: Conflicting architecture profiles %c/%c" +msgstr "エラー: %B: アーキテクãƒãƒ£ãƒ—ロファイル %c/%c ãŒç«¶åˆã—ã¦ã„ã¾ã™" + +#: elf32-arm.c:10239 +msgid "Warning: %B: Conflicting platform configuration" +msgstr "警告: %B: プラットフォーム設定ãŒç«¶åˆã—ã¦ã„ã¾ã™" + +#: elf32-arm.c:10248 +msgid "error: %B: Conflicting use of R9" +msgstr "エラー: %B: R9 ã®ä½¿ç”¨ãŒç«¶åˆã—ã¦ã„ã¾ã™" + +#: elf32-arm.c:10260 +msgid "error: %B: SB relative addressing conflicts with use of R9" msgstr "" -"¥¨¥é¡¼: %s ¤Ï%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã" -"¤Æ¤¤¤Þ¤¹" -#: elf32-arm.h:2333 -#, fuzzy, c-format -msgid "Error: %s uses hardware FP, whereas %s uses software FP" +#: elf32-arm.c:10273 +msgid "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail" msgstr "" -"¥¨¥é¡¼: %s ¤Ï%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã" -"¤Æ¤¤¤Þ¤¹" -#: elf32-arm.h:2348 -#, fuzzy, c-format -msgid "Warning: %s supports interworking, whereas %s does not" +#: elf32-arm.c:10304 +msgid "warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail" msgstr "" -"·Ù¹ð: ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤¬ interworking ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤Ï" -"¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£" -#: elf32-arm.h:2355 -#, fuzzy, c-format -msgid "Warning: %s does not support interworking, whereas %s does" +#: elf32-arm.c:10316 +msgid "error: %B uses iWMMXt register arguments, %B does not" +msgstr "エラー: %B 㯠iWMMXt レジスタ引数を使用ã—ã¦ã„ã¾ã™ãŒã€ %B ã¯ä½¿ç”¨ã—ã¦ã„ã¾ã›ã‚“" + +#: elf32-arm.c:10333 +msgid "error: fp16 format mismatch between %B and %B" +msgstr "エラー: fp16 ã®å½¢å¼ãŒ %B 㨠%B ã®é–“ã§ä¸€è‡´ã—ã¾ã›ã‚“" + +#: elf32-arm.c:10357 +msgid "DIV usage mismatch between %B and %B" +msgstr "DIV ã®ä½¿ç”¨æ³•ãŒ %B 㨠%B ã®é–“ã§ä¸€è‡´ã—ã¾ã›ã‚“" + +#: elf32-arm.c:10376 +msgid "%B has has both the current and legacy Tag_MPextension_use attributes" 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 +#. Ignore init flag - it may not be set, despite the flags field containing valid data. +#: elf32-arm.c:10468 elf32-bfin.c:5065 elf32-cris.c:4162 elf32-m68hc1x.c:1282 +#: elf32-m68k.c:1235 elf32-score.c:3996 elf32-score7.c:3803 elf32-vax.c:528 +#: elfxx-mips.c:12842 #, c-format msgid "private flags = %lx:" -msgstr "private ¥Õ¥é¥° = %lx:" +msgstr "private フラグ = %lx:" -#: elf32-arm.h:2395 +#: elf32-arm.c:10477 +#, c-format msgid " [interworking enabled]" -msgstr " [interworking ¤ÏÍ­¸ú]" +msgstr " [ARM/Thumb 命令相互利用ã¯æœ‰åŠ¹]" -#: elf32-arm.h:2398 -msgid " [APCS-26]" -msgstr " [APCS-26]" - -#: elf32-arm.h:2400 -msgid " [APCS-32]" -msgstr " [APCS-32]" - -#: elf32-arm.h:2403 +#: elf32-arm.c:10485 +#, c-format msgid " [VFP float format]" -msgstr "" +msgstr " [VFP 浮動å°æ•°å½¢å¼]" -#: elf32-arm.h:2405 +#: elf32-arm.c:10487 +#, c-format +msgid " [Maverick float format]" +msgstr " [Maverick 浮動å°æ•°å½¢å¼]" + +#: elf32-arm.c:10489 +#, c-format msgid " [FPA float format]" -msgstr "" +msgstr " [FPA 浮動å°æ•°å½¢å¼]" -#: elf32-arm.h:2414 +#: elf32-arm.c:10498 +#, c-format msgid " [new ABI]" -msgstr " [¿· ABI]" +msgstr " [æ–° ABI]" -#: elf32-arm.h:2417 +#: elf32-arm.c:10501 +#, c-format msgid " [old ABI]" -msgstr " [µì ABI]" +msgstr " [æ—§ ABI]" -#: elf32-arm.h:2420 +#: elf32-arm.c:10504 +#, c-format msgid " [software FP]" -msgstr " [¥½¥Õ¥È¥¦¥§¥¢ÉâÆ°¾®¿ôÅÀ]" +msgstr " [ソフトウェア浮動å°æ•°ç‚¹]" -#: elf32-arm.h:2428 +#: elf32-arm.c:10513 +#, c-format msgid " [Version1 EABI]" -msgstr " [¥Ð¡¼¥¸¥ç¥ó1 EABI]" +msgstr " [ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1 EABI]" -#: elf32-arm.h:2431 elf32-arm.h:2442 +#: elf32-arm.c:10516 elf32-arm.c:10527 +#, c-format msgid " [sorted symbol table]" -msgstr " [¥½¡¼¥ÈºÑ¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë]" +msgstr " [ソート済シンボル表]" -#: elf32-arm.h:2433 elf32-arm.h:2444 +#: elf32-arm.c:10518 elf32-arm.c:10529 +#, c-format msgid " [unsorted symbol table]" -msgstr " [̤¥½¡¼¥È¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë]" +msgstr " [未ソートシンボル表]" -#: elf32-arm.h:2439 -#, fuzzy +#: elf32-arm.c:10524 +#, c-format msgid " [Version2 EABI]" -msgstr " [¥Ð¡¼¥¸¥ç¥ó1 EABI]" +msgstr " [ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2 EABI]" -#: elf32-arm.h:2447 +#: elf32-arm.c:10532 +#, c-format msgid " [dynamic symbols use segment index]" msgstr "" -#: elf32-arm.h:2450 +#: elf32-arm.c:10535 +#, c-format msgid " [mapping symbols precede others]" msgstr "" -#: elf32-arm.h:2457 +#: elf32-arm.c:10542 +#, c-format +msgid " [Version3 EABI]" +msgstr " [ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 EABI]" + +#: elf32-arm.c:10546 +#, c-format +msgid " [Version4 EABI]" +msgstr " [ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4 EABI]" + +#: elf32-arm.c:10550 +#, c-format +msgid " [Version5 EABI]" +msgstr " [ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 5 EABI]" + +#: elf32-arm.c:10553 +#, c-format +msgid " [BE8]" +msgstr " [BE8]" + +#: elf32-arm.c:10556 +#, c-format +msgid " [LE8]" +msgstr " [LE8]" + +#: elf32-arm.c:10562 +#, c-format msgid " " -msgstr " " +msgstr " " -#: elf32-arm.h:2464 +#: elf32-arm.c:10569 +#, c-format msgid " [relocatable executable]" -msgstr " [ºÆÇÛÃÖ²Äǽ¼Â¹Ô¥Õ¥¡¥¤¥ë]" +msgstr " [å†é…ç½®å¯èƒ½å®Ÿè¡Œãƒ•ã‚¡ã‚¤ãƒ«]" -#: elf32-arm.h:2467 +#: elf32-arm.c:10572 +#, c-format msgid " [has entry point]" -msgstr " [¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹]" +msgstr " [エントリãƒã‚¤ãƒ³ãƒˆã‚’æŒã£ã¦ã„ã¾ã™]" -#: elf32-arm.h:2472 +#: elf32-arm.c:10577 +#, c-format msgid "" -msgstr "<¥Õ¥é¥°¥Ó¥Ã¥È¥»¥Ã¥È¤òǧ¼±¤Ç¤­¤Þ¤»¤ó>" +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-arm.c:10824 elf32-i386.c:1322 elf32-s390.c:1000 elf32-xtensa.c:1009 +#: elf64-s390.c:960 elf64-x86-64.c:1105 elfxx-sparc.c:1370 +msgid "%B: bad symbol index: %d" +msgstr "%B: シンボル索引ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™: %d" -#: elf32-cris.c:949 -#, fuzzy, c-format -msgid "%s: unresolvable relocation %s against symbol `%s' from %s section" -msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" +#: elf32-arm.c:10946 elf64-x86-64.c:1265 elf64-x86-64.c:1434 elfxx-mips.c:7942 +msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" +msgstr "%1$B: `%3$s' ã«å¯¾ã™ã‚‹å†é…ç½® %2$s ã¯å…±æœ‰ã‚ªãƒ–ジェクト作æˆæ™‚ã«ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。-fPIC を付ã‘ã¦å†ã‚³ãƒ³ãƒ‘イルã—ã¦ãã ã•ã„。" -#: 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-arm.c:11948 +#, c-format +msgid "Errors encountered processing file %s" +msgstr "ファイル %s を処ç†ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" -#: elf32-cris.c:1015 elf32-cris.c:1142 -msgid "[whose name is lost]" +#: elf32-arm.c:13334 +msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location" 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 ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" +#. There's not much we can do apart from complain if this +#. happens. +#: elf32-arm.c:13361 +msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)" +msgstr "" -#: 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-arm.c:13455 elf32-arm.c:13477 +msgid "%B: error: VFP11 veneer out of range" +msgstr "" -#: 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-arm.c:14002 +msgid "error: %B is already in final BE8 format" +msgstr "エラー: %B ã¯æ—¢ã«æœ€çµ‚ BE8 å½¢å¼ã§ã™" -#: elf32-cris.c:1171 -#, fuzzy, c-format -msgid "%s: relocation %s in section %s with no GOT created" -msgstr "%s: ¥»¥¯¥·¥ç¥ó `%s' Æâ¤ÎºÆÇÛÃÖÎΰè¤ËÆâÍƤ¬¤¢¤ê¤Þ¤»¤ó" +#: elf32-arm.c:14078 +msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d" +msgstr "エラー: ソースオブジェクト %B 㯠EABI ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d ã§ã™ãŒã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ %B 㯠EABI ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d ã§ã™" -#: elf32-cris.c:1289 -#, fuzzy, c-format -msgid "%s: Internal inconsistency; no relocation section %s" -msgstr "%s ÍѤκÆÇÛÃÖ¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" +#: elf32-arm.c:14094 +msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" +msgstr "エラー: %B 㯠APCS-%d ã«å¯¾ã—ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã¾ã™ã€‚一方ターゲット %B 㯠APCS-%d を使用ã—ã¦ã„ã¾ã™" -#: 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-arm.c:14119 +msgid "error: %B uses VFP instructions, whereas %B does not" +msgstr "error: %B 㯠VFP 命令を使用ã—ã¦ã„ã¾ã™ã€‚一方 %B ã¯ä½¿ç”¨ã—ã¦ã„ã¾ã›ã‚“" -#: elf32-cris.c:2994 -msgid " [symbols have a _ prefix]" -msgstr " [ _ ÀÜƬ¼­¤Ä¤­¥·¥ó¥Ü¥ë]" +#: elf32-arm.c:14123 +msgid "error: %B uses FPA instructions, whereas %B does not" +msgstr "エラー: %B 㯠FPA 命令を使用ã—ã¦ã„ã¾ã™ã€‚一方 %B ã¯ä½¿ç”¨ã—ã¦ã„ã¾ã›ã‚“" -#: elf32-cris.c:3033 -#, c-format -msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols" -msgstr "" -"%s: _ ÀÜƬ¼­¥·¥ó¥Ü¥ë¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¥Õ¥¡¥¤¥ë¤ËÀÜƬ¼­Ìµ¤·¤Ç½ñ¤­¹þ¤ß¤Þ¤¹" +#: elf32-arm.c:14133 +msgid "error: %B uses Maverick instructions, whereas %B does not" +msgstr "エラー: %B 㯠Maverick 命令を使用ã—ã¦ã„ã¾ã™ã€‚一方 %B ã¯ä½¿ç”¨ã—ã¦ã„ã¾ã›ã‚“" -#: elf32-cris.c:3034 -#, c-format -msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols" -msgstr "" -"%s: ÀÜƬ¼­Ìµ¤·¤Î¥·¥ó¥Ü¥ë¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¥Õ¥¡¥¤¥ë¤Ë¤Ï _ ÀÜƬ¼­ÉÕ¤­¤Ç½ñ¤­¹þ¤ß" -"¤Þ¤¹" +#: elf32-arm.c:14137 +msgid "error: %B does not use Maverick instructions, whereas %B does" +msgstr "エラー: %B 㯠Maverick 命令を使用ã—ã¦ã„ã¾ã›ã‚“。一方 %B ã¯ä½¿ç”¨ã—ã¦ã„ã¾ã™" -#: elf32-gen.c:82 elf64-gen.c:82 -#, c-format -msgid "%s: Relocations in generic ELF (EM: %d)" -msgstr "" +#: elf32-arm.c:14156 +msgid "error: %B uses software FP, whereas %B uses hardware FP" +msgstr "エラー: %B ã¯ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢æµ®å‹•å°æ•°ç‚¹ã‚’使用ã—ã¦ã„ã¾ã™ã€‚一方 %B ã¯ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•°ç‚¹ã‚’使用ã—ã¦ã„ã¾ã™" -#: elf32-hppa.c:646 -#, c-format -msgid "%s: cannot create stub entry %s" -msgstr "%s: ¥¹¥¿¥Ö¥¨¥ó¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" +#: elf32-arm.c:14160 +msgid "error: %B uses hardware FP, whereas %B uses software FP" +msgstr "エラー: %B ã¯ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•°ç‚¹ã‚’使用ã—ã¦ã„ã¾ã™ã€‚一方 %B ã¯ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢æµ®å‹•å°æ•°ç‚¹ã‚’使用ã—ã¦ã„ã¾ã™" -#: elf32-hppa.c:937 elf32-hppa.c:3545 -#, c-format -msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" +#: elf32-avr.c:1271 elf32-bfin.c:3201 elf32-cris.c:2085 elf32-fr30.c:617 +#: elf32-frv.c:4119 elf32-i860.c:1219 elf32-ip2k.c:1479 elf32-iq2000.c:692 +#: elf32-m32c.c:561 elf32-mep.c:542 elf32-moxie.c:290 elf32-msp430.c:494 +#: elf32-mt.c:399 elf32-openrisc.c:412 elf32-v850.c:2151 elf32-xstormy16.c:949 +#: elf64-mmix.c:1530 +msgid "internal error: dangerous relocation" +msgstr "内部エラー: å±é™ºãªå†é…ç½®ã§ã™" + +#: elf32-avr.c:2400 elf32-hppa.c:598 elf32-m68hc1x.c:166 elf64-ppc.c:4175 +msgid "%B: cannot create stub entry %s" +msgstr "%B: スタブエントリ %s を作æˆã§ãã¾ã›ã‚“" + +#: elf32-bfin.c:1575 +msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'" +msgstr "%B(%A+0x%lx): シンボル `%s' ã«å¯¾ã™ã‚‹è§£æ±ºã§ããªã„å†é…ç½®ã§ã™" + +#: elf32-bfin.c:1608 elf32-i386.c:4123 elf32-m68k.c:4233 elf32-s390.c:3062 +#: elf64-s390.c:3037 elf64-x86-64.c:3759 +msgid "%B(%A+0x%lx): reloc against `%s': error %d" +msgstr "%B(%A+0x%lx): `%s' ã«å¯¾ã™ã‚‹å†é…ç½®: エラー %d" + +#: elf32-bfin.c:2707 +msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend" 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" +#: elf32-bfin.c:2721 elf32-frv.c:2901 +msgid "relocation references symbol not defined in the module" +msgstr "å†é…ç½®ãŒãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«å†…ã§å®šç¾©ã•ã‚Œã¦ã„ãªã„シンボルをå‚ç…§ã—ã¦ã„ã¾ã™" + +#: elf32-bfin.c:2818 +msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend" 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" +#: elf32-bfin.c:2859 elf32-bfin.c:2982 elf32-frv.c:3638 elf32-frv.c:3759 +msgid "cannot emit fixups in read-only section" +msgstr "読ã¿è¾¼ã¿å°‚用セクション内ã§ä¿®æ­£ã‚’è¡Œã†ã“ã¨ãŒã§ãã¾ã›ã‚“" + +#: elf32-bfin.c:2890 elf32-bfin.c:3020 elf32-frv.c:3669 elf32-frv.c:3803 +#: elf32-lm32.c:1103 elf32-sh.c:5021 +msgid "cannot emit dynamic relocations in read-only section" +msgstr "読ã¿è¾¼ã¿å°‚用セクション内ã§å‹•çš„å†é…置を行ã†ã“ã¨ãŒã§ãã¾ã›ã‚“" + +#: elf32-bfin.c:2940 +msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "" -"%s: ºÆÇÛÃÖ %s ¤Ï¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤¿¤È¤­¤Ë¤Ï»È¤¦¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó -- -" -"fPIC ¤ò¤Ä¤±¤ÆºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¯¤À¤µ¤¤" -#: elf32-hppa.c:1525 -#, c-format -msgid "Could not find relocation section for %s" -msgstr "%s ÍѤκÆÇÛÃÖ¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" +#: elf32-bfin.c:3105 +msgid "relocations between different segments are not supported" +msgstr "ç•°ãªã‚‹ã‚»ã‚°ãƒ¡ãƒ³ãƒˆé–“ã®å†é…ç½®ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: elf32-hppa.c:2867 -#, c-format -msgid "%s: duplicate export stub %s" -msgstr "%s: export ¥¹¥¿¥Ö %s ¤¬½ÅÊ£¤·¤Æ¤¤¤Þ¤¹" +#: elf32-bfin.c:3106 +msgid "warning: relocation references a different segment" +msgstr "警告: å†é…ç½®ãŒç•°ãªã‚‹ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã‚’å‚ç…§ã—ã¦ã„ã¾ã™" -#: elf32-hppa.c:3429 -#, c-format -msgid "%s(%s+0x%lx): fixing %s" -msgstr "%s(%s+0x%lx): %s ¤ò½¤Éü¤·¤Þ¤¹" +#: elf32-bfin.c:4957 elf32-frv.c:6406 +msgid "%B: unsupported relocation type %i" +msgstr "%B: サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å†é…置型 %i ã§ã™" -#: elf32-hppa.c:4069 +#: elf32-bfin.c:5111 elf32-frv.c:6814 #, 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 ¥»¥¯¥·¥ç¥ó¤Îľ¸å¤Ë¤¢¤ê¤Þ¤»¤ó" +msgid "%s: cannot link non-fdpic object file into fdpic executable" +msgstr "%s: fdpic 実行ファイル内ã«éž fdpic オブジェクトをリンクã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: elf32-i386.c:298 +#: elf32-bfin.c:5115 elf32-frv.c:6818 #, c-format -msgid "%s: invalid relocation type %d" -msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× %d ¤ÏÉÔŬÀڤǤ¹" +msgid "%s: cannot link fdpic object file into non-fdpic executable" +msgstr "%s: éž fdpic 実行ファイル内㫠fdpic オブジェクトをリンクã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: 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-cris.c:1172 +msgid "%B, section %A: unresolvable relocation %s against symbol `%s'" +msgstr "%1$B セクション %2$A: シンボル `%4$s' ã«å¯¾ã™ã‚‹è§£æ±ºã§ããªã„å†é…ç½® %3$s ã§ã™" -#: 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-cris.c:1234 +msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'" +msgstr "" + +#: elf32-cris.c:1236 +msgid "%B, section %A: No PLT for relocation %s against symbol `%s'" +msgstr "" + +#: elf32-cris.c:1242 elf32-cris.c:1375 elf32-cris.c:1635 elf32-cris.c:1718 +#: elf32-cris.c:1871 +msgid "[whose name is lost]" +msgstr "" + +#: elf32-cris.c:1361 +msgid "%B, section %A: relocation %s with non-zero addend %d against local symbol" +msgstr "" + +#: elf32-cris.c:1369 elf32-cris.c:1712 elf32-cris.c:1865 +msgid "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'" +msgstr "" + +#: elf32-cris.c:1395 +#, fuzzy +msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'" +msgstr "%s: å†é…ç½® %s ã¯ã‚·ãƒ³ãƒœãƒ« %s 用ã®ã‚‚ã®ã¨ã—ã¦ã¯ã¾ã ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: elf32-cris.c:1411 +msgid "%B, section %A: relocation %s with no GOT created" +msgstr "" + +#. We shouldn't get here for GCC-emitted code. +#: elf32-cris.c:1626 +msgid "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?" +msgstr "" + +#: elf32-cris.c:1998 +msgid "%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?" +msgstr "" + +#: elf32-cris.c:2051 +msgid "(too many global variables for -fpic: recompile with -fPIC)" +msgstr "" + +#: elf32-cris.c:2058 +msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)" +msgstr "" + +#: elf32-cris.c:3248 +msgid "" +"%B, section %A:\n" +" v10/v32 compatible object %s must not contain a PIC relocation" +msgstr "" + +#: elf32-cris.c:3353 +#, fuzzy +msgid "" +"%B, section %A:\n" +" relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC" +msgstr "%s: å†é…ç½® %s ã¯å…±æœ‰ã‚ªãƒ–ジェクトを作æˆã—ãŸã¨ãã«ã¯ä½¿ãˆã¾ã›ã‚“ -- -fPIC を付ã‘ã¦å†ã‚³ãƒ³ãƒ‘イルã—ã¦ãã ã•ã„" + +#: elf32-cris.c:3567 +#, fuzzy +msgid "" +"%B, section %A:\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "%s: å†é…ç½® %s ã¯å…±æœ‰ã‚ªãƒ–ジェクトを作æˆã—ãŸã¨ãã«ã¯ä½¿ã†ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“ -- -fPIC ã‚’ã¤ã‘ã¦å†ã‚³ãƒ³ãƒ‘イルã—ã¦ãã ã•ã„" + +#: elf32-cris.c:3992 +#, fuzzy +msgid "" +"%B, section `%A', to symbol `%s':\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "%s: å†é…ç½® %s ã¯å…±æœ‰ã‚ªãƒ–ジェクトを作æˆã—ãŸã¨ãã«ã¯ä½¿ã†ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“ -- -fPIC ã‚’ã¤ã‘ã¦å†ã‚³ãƒ³ãƒ‘イルã—ã¦ãã ã•ã„" + +#: elf32-cris.c:4111 +msgid "Unexpected machine number" +msgstr "予期ã—ãªã„マシン番å·ã§ã™" + +#: elf32-cris.c:4165 +#, c-format +msgid " [symbols have a _ prefix]" +msgstr " [ _ 接頭辞ã¤ãシンボル]" + +#: elf32-cris.c:4168 +#, c-format +msgid " [v10 and v32]" +msgstr " [v10 ãŠã‚ˆã³ v32]" + +#: elf32-cris.c:4171 +#, c-format +msgid " [v32]" +msgstr " [v32]" + +#: elf32-cris.c:4216 +msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols" +msgstr "%B: _ 接頭辞付ãシンボルを使用ã—ã¦ã„ã¾ã™ãŒã€ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ _ 接頭辞無ã—シンボルã¨ã—ã¦æ›¸ãè¾¼ã¿ã¾ã™" + +#: elf32-cris.c:4217 +msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols" +msgstr "%B: _ 接頭辞無ã—シンボルを使用ã—ã¦ã„ã¾ã™ãŒã€ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ _ 接頭辞付ãシンボルã¨ã—ã¦æ›¸ãè¾¼ã¿ã¾ã™" + +#: elf32-cris.c:4236 +msgid "%B contains CRIS v32 code, incompatible with previous objects" +msgstr "%B ã«ã¯ CRIS v32 コードãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“ã‚Œã¯å‰ã®ã‚ªãƒ–ジェクトã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“" + +#: elf32-cris.c:4238 +msgid "%B contains non-CRIS-v32 code, incompatible with previous objects" +msgstr "%B ã«ã¯éž-CRIS-v32 コードãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“ã‚Œã¯å‰ã®ã‚ªãƒ–ジェクトã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“" + +#: elf32-frv.c:1509 elf32-frv.c:1658 +msgid "relocation requires zero addend" +msgstr "" + +#: elf32-frv.c:2888 +msgid "%B(%A+0x%x): relocation to `%s+%x' may have caused the error above" +msgstr "" + +#: elf32-frv.c:2977 +msgid "R_FRV_GETTLSOFF not applied to a call instruction" +msgstr "R_FRV_GETTLSOFF 㯠call 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3019 +msgid "R_FRV_GOTTLSDESC12 not applied to an lddi instruction" +msgstr "R_FRV_GOTTLSDESC12 㯠lddi 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3090 +msgid "R_FRV_GOTTLSDESCHI not applied to a sethi instruction" +msgstr "R_FRV_GOTTLSDESCHI 㯠sethi 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3127 +msgid "R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction" +msgstr "R_FRV_GOTTLSDESCLO 㯠setlo ã¾ãŸã¯ setlos 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3175 +msgid "R_FRV_TLSDESC_RELAX not applied to an ldd instruction" +msgstr "R_FRV_TLSDESC_RELAX 㯠ldd 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3259 +msgid "R_FRV_GETTLSOFF_RELAX not applied to a calll instruction" +msgstr "R_FRV_GETTLSOFF_RELAX 㯠calll 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3314 +msgid "R_FRV_GOTTLSOFF12 not applied to an ldi instruction" +msgstr "R_FRV_GOTTLSOFF12 㯠ldi 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3344 +msgid "R_FRV_GOTTLSOFFHI not applied to a sethi instruction" +msgstr "R_FRV_GOTTLSOFFHI 㯠sethi 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3373 +msgid "R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction" +msgstr "R_FRV_GOTTLSOFFLO 㯠setlo ã¾ãŸã¯ setlos 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3404 +msgid "R_FRV_TLSOFF_RELAX not applied to an ld instruction" +msgstr "R_FRV_TLSOFF_RELAX 㯠ld 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3449 +msgid "R_FRV_TLSMOFFHI not applied to a sethi instruction" +msgstr "R_FRV_TLSMOFFHI 㯠sethi 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" -#: elf32-i386.c:2069 elf32-s390.c:1951 elf64-ppc.c:4124 elf64-s390.c:1955 +#: elf32-frv.c:3476 +msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction" +msgstr "R_FRV_TLSMOFFLO 㯠setlo ã¾ãŸã¯ setlos 命令ã«é©ç”¨ã•ã‚Œã¾ã›ã‚“" + +#: elf32-frv.c:3597 +msgid "R_FRV_FUNCDESC references dynamic symbol with nonzero addend" +msgstr "" + +#: elf32-frv.c:3717 +msgid "R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend" +msgstr "" + +#: elf32-frv.c:3974 elf32-frv.c:4130 +msgid "%B(%A+0x%lx): reloc against `%s': %s" +msgstr "%B(%A+0x%lx): `%s' ã«å¯¾ã™ã‚‹å†é…ç½®: %s" + +#: elf32-frv.c:3976 elf32-frv.c:3980 +msgid "relocation references a different segment" +msgstr "" + +#: elf32-frv.c:6728 +#, c-format +msgid "%s: compiled with %s and linked with modules that use non-pic relocations" +msgstr "" + +#: elf32-frv.c:6781 elf32-iq2000.c:845 elf32-m32c.c:807 +#, c-format +msgid "%s: compiled with %s and linked with modules compiled with %s" +msgstr "" + +#: elf32-frv.c:6793 +#, c-format +msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "" + +#: elf32-frv.c:6843 elf32-iq2000.c:882 elf32-m32c.c:843 elf32-mt.c:576 +#: elf32-rx.c:2925 #, fuzzy, c-format -msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'" -msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" +msgid "private flags = 0x%lx:" +msgstr "private フラグ = %lx:" + +#: elf32-gen.c:69 elf64-gen.c:69 +msgid "%B: Relocations in generic ELF (EM: %d)" +msgstr "" + +#: elf32-hppa.c:850 elf32-hppa.c:3610 +#, fuzzy +msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections" +msgstr "%s(%s+0x%lx): %s ã«å±Šãã¾ã›ã‚“。-ffunction-sections を付ã‘ã¦å†ã‚³ãƒ³ãƒ‘イルã—ã¦ãã ã•ã„" + +#: elf32-hppa.c:1284 +#, fuzzy +msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC" +msgstr "%s: å†é…ç½® %s ã¯å…±æœ‰ã‚ªãƒ–ジェクトを作æˆã—ãŸã¨ãã«ã¯ä½¿ãˆã¾ã›ã‚“ -- -fPIC を付ã‘ã¦å†ã‚³ãƒ³ãƒ‘イルã—ã¦ãã ã•ã„" + +#: elf32-hppa.c:2803 +#, fuzzy +msgid "%B: duplicate export stub %s" +msgstr "%s: export スタブ %s ãŒé‡è¤‡ã—ã¦ã„ã¾ã™" + +#: elf32-hppa.c:3449 +msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link" +msgstr "" + +#: elf32-hppa.c:4296 +#, fuzzy +msgid "%B(%A+0x%lx): cannot handle %s for %s" +msgstr "%s(%s+0x%lx): %s (%s) ã‚’å–り扱ãˆã¾ã›ã‚“" + +#: elf32-hppa.c:4608 +msgid ".got section not immediately after .plt section" +msgstr ".got セクション㌠.plt セクションã®ç›´å¾Œã«ã‚ã‚Šã¾ã›ã‚“" + +#. Unknown relocation. +#: elf32-i386.c:371 elf32-m68k.c:383 elf32-ppc.c:1674 elf32-s390.c:379 +#: elf32-tic6x.c:1563 elf64-ppc.c:2284 elf64-s390.c:403 elf64-x86-64.c:234 +msgid "%B: invalid relocation type %d" +msgstr "%B: 無効ãªå†é…置型 %d ã§ã™" -#: elf32-i386.c:2107 elf32-s390.c:1989 elf64-s390.c:1993 +#: elf32-i386.c:1265 elf64-x86-64.c:1049 +msgid "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed" +msgstr "" + +#: elf32-i386.c:1408 elf32-i386.c:3068 elf64-x86-64.c:1194 elf64-x86-64.c:2780 +#: elfxx-sparc.c:3076 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" +msgstr "" + +#: elf32-i386.c:1570 elf32-s390.c:1182 elf32-sh.c:6367 elf32-xtensa.c:1182 +#: elf64-s390.c:1151 elfxx-sparc.c:1547 +msgid "%B: `%s' accessed both as normal and thread local symbol" +msgstr "%B: `%s' ãŒé€šå¸¸ã®ã‚·ãƒ³ãƒœãƒ«ã¨ã‚¹ãƒ¬ãƒƒãƒ‰å±€æ‰€ã‚·ãƒ³ãƒœãƒ«ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¾ã—ãŸ" + +#: elf32-i386.c:2910 +msgid "%B: unrecognized relocation (0x%x) in section `%A'" +msgstr "%1$B: セクション `%3$A' ã«èªè­˜ã§ããªã„å†é…ç½® (0x%2$x) ãŒã‚ã‚Šã¾ã™" + +#: elf32-i386.c:3317 elf64-x86-64.c:3174 +msgid "hidden symbol" +msgstr "éš ã•ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«" + +#: elf32-i386.c:3320 elf64-x86-64.c:3177 +msgid "internal symbol" +msgstr "内部シンボル" + +#: elf32-i386.c:3323 elf64-x86-64.c:3180 +msgid "protected symbol" +msgstr "ä¿è­·ã•ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«" + +#: elf32-i386.c:3326 elf64-x86-64.c:3183 +msgid "symbol" +msgstr "シンボル" + +#: elf32-i386.c:3331 +msgid "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object" +msgstr "" + +#: elf32-i386.c:3341 +msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object" +msgstr "" + +#: elf32-i386.c:4633 elf64-x86-64.c:4206 #, fuzzy, c-format -msgid "%s(%s+0x%lx): reloc against `%s': error %d" -msgstr "%s(%s+0x%lx): %s (%s) ¤ò¼è¤ê°·¤¨¤Þ¤»¤ó" +msgid "discarded output section: `%A'" +msgstr "%s: 出力セクション %s (入力セクション %s 用) を見ã¤ã‘られã¾ã›ã‚“" -#: elf32-m32r.c:923 -msgid "SDA relocation when _SDA_BASE_ not defined" -msgstr "_SDA_BASE_ ¤¬Ì¤ÄêµÁ¤Î»þÅÀ¤Ç¤Î SDA ºÆÇÛÃ֤Ǥ¹" +#: elf32-ip2k.c:857 elf32-ip2k.c:863 elf32-ip2k.c:930 elf32-ip2k.c:936 +msgid "ip2k relaxer: switch table without complete matching relocation information." +msgstr "" -#: elf32-ia64.c:3537 elf32-m32r.c:1007 elf32-ppc.c:2930 elf64-ia64.c:3537 +#: elf32-ip2k.c:880 elf32-ip2k.c:963 +msgid "ip2k relaxer: switch table header corrupt." +msgstr "" + +#: elf32-ip2k.c:1292 #, c-format -msgid "%s: unknown relocation type %d" -msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× %d ¤¬ÉÔÌÀ¤Ç¤¹" +msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)." +msgstr "" -#: elf32-m32r.c:1223 +#: elf32-ip2k.c:1308 #, c-format -msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" -msgstr "%s: ¥¿¡¼¥²¥Ã¥È (%s, %s ºÆÇÛÃÖ) ¤¬´Ö°ã¤Ã¤¿¥»¥¯¥·¥ç¥ó (%s) Æâ¤Ë¤¢¤ê¤Þ¤¹" +msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)." +msgstr "" + +#. Only if it's not an unresolved symbol. +#: elf32-ip2k.c:1475 +#, fuzzy +msgid "unsupported relocation between data/insn address spaces" +msgstr "%s: サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å†é…置タイプ %s ã§ã™" -#: elf32-m32r.c:2000 +#: elf32-iq2000.c:858 elf32-m32c.c:819 #, c-format -msgid "%s: Instruction set mismatch with previous modules" -msgstr "%s: Ì¿Î᥻¥Ã¥È¤¬°ÊÁ°¤Î¥â¥¸¥å¡¼¥ë¤ÈŬ¹ç¤·¤Þ¤»¤ó" +msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "%s: 使用ã—ã¦ã„ã‚‹ e_flags(0x%lx) ãŒä»¥å‰ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ« (0x%lx) ã¨ç•°ãªã£ã¦ã„ã¾ã™" + +#: elf32-lm32.c:706 +#, fuzzy +msgid "global pointer relative relocation when _gp not defined" +msgstr "GP 関連ã®å†é…置㌠_gp ãŒæœªå®šç¾©ã®æ™‚点ã§ç¾ã‚Œã¾ã—ãŸ" + +#: elf32-lm32.c:761 +msgid "global pointer relative address out of range" +msgstr "" + +#: elf32-lm32.c:1057 +msgid "internal error: addend should be zero for R_LM32_16_GOT" +msgstr "" + +#: elf32-m32r.c:1453 +msgid "SDA relocation when _SDA_BASE_ not defined" +msgstr "_SDA_BASE_ ãŒæœªå®šç¾©ã®æ™‚点ã§ã® SDA å†é…ç½®ã§ã™" + +#: elf32-m32r.c:3048 +#, fuzzy +msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)" +msgstr "%s: ターゲット (%s, %s å†é…ç½®) ãŒé–“é•ã£ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ (%s) 内ã«ã‚ã‚Šã¾ã™" + +#: elf32-m32r.c:3576 +#, fuzzy +msgid "%B: Instruction set mismatch with previous modules" +msgstr "%s: 命令セットãŒä»¥å‰ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨é©åˆã—ã¾ã›ã‚“" -#: elf32-m32r.c:2023 +#: elf32-m32r.c:3597 #, c-format msgid "private flags = %lx" -msgstr "private ¥Õ¥é¥° = %lx" +msgstr "private フラグ = %lx" -#: elf32-m32r.c:2028 +#: elf32-m32r.c:3602 +#, c-format msgid ": m32r instructions" -msgstr ": m32r Ì¿Îá" +msgstr ": m32r 命令" -#: elf32-m32r.c:2029 +#: elf32-m32r.c:3603 +#, c-format msgid ": m32rx instructions" -msgstr ": m32rx Ì¿Îá" - -#: elf32-m68k.c:413 -msgid " [cpu32]" -msgstr " [cpu32]" +msgstr ": m32rx 命令" -#: elf32-mcore.c:353 elf32-mcore.c:479 +#: elf32-m32r.c:3604 #, c-format -msgid "%s: Relocation %s (%d) is not currently supported.\n" -msgstr "%s: ºÆÇÛÃÖ %s (%d) ¤Ï¸½ºß¤Î¤È¤³¤í¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó\n" +msgid ": m32r2 instructions" +msgstr ": m32r2 命令" -#: elf32-mcore.c:438 +#: elf32-m68hc1x.c:1050 #, c-format -msgid "%s: Unknown relocation type %d\n" -msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× %d ¤ÏÉÔÌÀ¤Ç¤¹\n" +msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution" +msgstr "" -#: elf32-mips.c:2156 elf64-mips.c:1972 -msgid "32bits gp relative relocation occurs for an external symbol" -msgstr "32¥Ó¥Ã¥È gp ´ØÏ¢ºÆÇÛÃÖ¤¬³°Éô¥·¥ó¥Ü¥ë¤ÎÍѤËȯÀ¸¤·¤Þ¤·¤¿" +#: elf32-m68hc1x.c:1073 +#, c-format +msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)" +msgstr "" -#: elf32-mips.c:2305 +#: elf32-m68hc1x.c:1092 #, c-format -msgid "Linking mips16 objects into %s format is not supported" +msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx" +msgstr "" + +#: elf32-m68hc1x.c:1225 +msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers" +msgstr "" + +#: elf32-m68hc1x.c:1232 +msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double" msgstr "" -"%s ·Á¼°¤Ø¤Î mips16 ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥ê¥ó¥¯¤¹¤ë¤³¤È¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" -#: elf32-mips.c:3129 +#: elf32-m68hc1x.c:1241 +#, fuzzy +msgid "%B: linking files compiled for HCS12 with others compiled for HC12" +msgstr "エラー: %s 㯠APCS-%d 用ã«ã‚³ãƒ³ãƒ‘イルã•ã‚ŒãŸã«ã‚‚ã‹ã‹ã‚らãšã€%s ㌠APCS-%d 用ã«ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¾ã—ãŸ" + +#: elf32-m68hc1x.c:1257 elf32-ppc.c:4232 elf64-sparc.c:703 elfxx-mips.c:12704 +#, fuzzy +msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "%s: 使用ã—ã¦ã„ã‚‹ e_flags(0x%lx) ãŒä»¥å‰ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ« (0x%lx) ã¨ç•°ãªã£ã¦ã„ã¾ã™" + +#: elf32-m68hc1x.c:1285 +#, c-format +msgid "[abi=32-bit int, " +msgstr "[abi=32-ビット整数, " + +#: elf32-m68hc1x.c:1287 +#, c-format +msgid "[abi=16-bit int, " +msgstr "[abi=16-ビット整数, " + +#: elf32-m68hc1x.c:1290 #, c-format -msgid "%s: linking PIC files with non-PIC files" -msgstr "%s: PIC ¥Õ¥¡¥¤¥ë¤ËÈó PIC ¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" +msgid "64-bit double, " +msgstr "64-ビットå€ç²¾åº¦æµ®å‹•å°æ•°, " -#: elf32-mips.c:3139 +#: elf32-m68hc1x.c:1292 #, c-format -msgid "%s: linking abicalls files with non-abicalls files" -msgstr "%s: abicall ¥Õ¥¡¥¤¥ë¤ËÈó abicall ¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" +msgid "32-bit double, " +msgstr "32-ビットå€ç²¾åº¦æµ®å‹•å°æ•°, " -#: elf32-mips.c:3168 +#: elf32-m68hc1x.c:1295 #, c-format -msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" -msgstr "%s: ISA (-mips%d) ¤¬°ÊÁ°¤Î¥â¥¸¥å¡¼¥ë (-mips%d) ¤È°ìÃפ·¤Þ¤»¤ó" +msgid "cpu=HC11]" +msgstr "cpu=HC11]" -#: elf32-mips.c:3177 +#: elf32-m68hc1x.c:1297 #, c-format -msgid "%s: ISA mismatch (%d) with previous modules (%d)" -msgstr "%s: ISA (%d) ¤¬°ÊÁ°¤Î¥â¥¸¥å¡¼¥ë (%d) ¤È°ìÃפ·¤Þ¤»¤ó" +msgid "cpu=HCS12]" +msgstr "cpu=HCS12]" -#: elf32-mips.c:3200 +#: elf32-m68hc1x.c:1299 #, c-format -msgid "%s: ABI mismatch: linking %s module with previous %s modules" +msgid "cpu=HC12]" +msgstr "cpu=HC12]" + +#: elf32-m68hc1x.c:1302 +#, c-format +msgid " [memory=bank-model]" msgstr "" -"%s: ABI ¤¬°ìÃפ·¤Þ¤»¤ó -- %s ¥â¥¸¥å¡¼¥ë¤ò°ÊÁ°¤Î %s ¥â¥¸¥å¡¼¥ë¤È¥ê¥ó¥¯¤·¤è¤¦¤È" -"¤·¤Þ¤·¤¿" -#: elf32-mips.c:3214 elf32-ppc.c:1470 elf64-ppc.c:1556 elf64-sparc.c:3027 +#: elf32-m68hc1x.c:1304 #, c-format -msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgid " [memory=flat]" msgstr "" -"%s: »ÈÍѤ·¤Æ¤¤¤ë e_flags(0x%lx) ¤¬°ÊÁ°¤Î¥â¥¸¥å¡¼¥ë (0x%lx) ¤È°Û¤Ê¤Ã¤Æ¤¤¤Þ¤¹" -#: elf32-mips.c:3245 -msgid " [abi=O32]" -msgstr " [abi=O32]" +#: elf32-m68k.c:1250 elf32-m68k.c:1251 vms-alpha.c:7292 vms-alpha.c:7307 +msgid "unknown" +msgstr "ä¸æ˜Ž" -#: elf32-mips.c:3247 -msgid " [abi=O64]" -msgstr " [abi=O64]" +#: elf32-m68k.c:1714 +msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d" +msgstr "" -#: elf32-mips.c:3249 -msgid " [abi=EABI32]" -msgstr " [abi=EABI32]" +#: elf32-m68k.c:1720 +msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d" +msgstr "" -#: elf32-mips.c:3251 -msgid " [abi=EABI64]" -msgstr " [abi=EABI64]" +#: elf32-m68k.c:3959 +msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object" +msgstr "" -#: elf32-mips.c:3253 -msgid " [abi unknown]" -msgstr " [abi unknown]" +#: elf32-mcore.c:99 elf32-mcore.c:442 +msgid "%B: Relocation %s (%d) is not currently supported.\n" +msgstr "%B: å†é…ç½® %s (%d) ã¯ç¾åœ¨ã®ã¨ã“ã‚サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。\n" -#: elf32-mips.c:3255 -msgid " [abi=N32]" -msgstr " [abi=N32]" +#: elf32-mcore.c:428 +msgid "%B: Unknown relocation type %d\n" +msgstr "%B: ä¸æ˜Žãªå†é…置型 %d ã§ã™\n" -#: elf32-mips.c:3257 -msgid " [abi=64]" -msgstr " [abi=64]" +#: elf32-mep.c:647 +msgid "%B and %B are for different cores" +msgstr "%B ãŠã‚ˆã³ %B ã¯ç•°ãªã‚‹ã‚³ã‚¢ã«å¯¾ã™ã‚‹ã‚‚ã®ã§ã™" -#: elf32-mips.c:3259 -msgid " [no abi set]" -msgstr " [abi ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó]" +#: elf32-mep.c:664 +msgid "%B and %B are for different configurations" +msgstr "%B ãŠã‚ˆã³ %B ã¯ç•°ãªã‚‹è¨­å®šã«å¯¾ã™ã‚‹ã‚‚ã®ã§ã™" -#: elf32-mips.c:3262 -msgid " [mips1]" -msgstr " [mips1]" +#: elf32-mep.c:701 +#, fuzzy, c-format +msgid "private flags = 0x%lx" +msgstr "private フラグ = 0x%lx" -#: elf32-mips.c:3264 -msgid " [mips2]" -msgstr " [mips2]" +#: elf32-microblaze.c:742 +#, c-format +msgid "%s: unknown relocation type %d" +msgstr "%s: å†é…置型 %d ãŒä¸æ˜Žã§ã™" -#: elf32-mips.c:3266 -msgid " [mips3]" -msgstr " [mips3]" +#: elf32-microblaze.c:867 elf32-microblaze.c:912 +#, c-format +msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" +msgstr "%s: ターゲット (%s, %s å†é…ç½®) ãŒé–“é•ã£ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ (%s) 内ã«ã‚ã‚Šã¾ã™" -#: elf32-mips.c:3268 -msgid " [mips4]" -msgstr " [mips4]" +#: elf32-microblaze.c:1155 elfxx-sparc.c:3450 +msgid "%B: probably compiled without -fPIC?" +msgstr "%B: æらã -fPIC を付ã‘ãšã«ã‚³ãƒ³ãƒ‘イルã—ãŸã®ã§ã¯?" -#: elf32-mips.c:3270 -msgid " [mips5]" -msgstr " [mips5]" +#: elf32-microblaze.c:2074 elflink.c:12601 +#, fuzzy +msgid "%B: bad relocation section name `%s'" +msgstr "%s: ä¸æ­£ãªå†é…置アドレス 0x%lx ãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' 内ã«ã‚ã‚Šã¾ã™" -#: elf32-mips.c:3272 -msgid " [mips32]" -msgstr " [mips32]" +#: elf32-mips.c:1045 elf64-mips.c:2084 elfn32-mips.c:1888 +#, fuzzy +msgid "literal relocation occurs for an external symbol" +msgstr "32ビット gp 関連å†é…ç½®ãŒå¤–部シンボルã®ç”¨ã«ç™ºç”Ÿã—ã¾ã—ãŸ" -#: elf32-mips.c:3274 -msgid " [mips64]" -msgstr " [mips64]" +#: elf32-mips.c:1085 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:2127 +#: elfn32-mips.c:1929 +msgid "32bits gp relative relocation occurs for an external symbol" +msgstr "32ビット gp 関連å†é…ç½®ãŒå¤–部シンボルã®ç”¨ã«ç™ºç”Ÿã—ã¾ã—ãŸ" -#: elf32-mips.c:3276 -msgid " [unknown ISA]" -msgstr " [ÉÔÌÀ¤Ê ISA]" +#: elf32-ppc.c:1739 +#, c-format +msgid "generic linker can't handle %s" +msgstr "" -#: elf32-mips.c:3279 -msgid " [32bitmode]" -msgstr " [32¥Ó¥Ã¥È¥â¡¼¥É]" +#: elf32-ppc.c:2180 +msgid "corrupt %s section in %B" +msgstr "" -#: elf32-mips.c:3281 -msgid " [not 32bitmode]" -msgstr " [Èó 32 ¥Ó¥Ã¥È¥â¡¼¥É]" +#: elf32-ppc.c:2199 +#, fuzzy +msgid "unable to read in %s section from %B" +msgstr "%s 用ã®å†é…置セクションを見ã¤ã‘られã¾ã›ã‚“" -#: elf32-mips.c:4954 -msgid "static procedure (no name)" -msgstr "ÀÅŪ¥×¥í¥·¡¼¥¸¥ã(̾Á°Ìµ¤·)" +#: elf32-ppc.c:2240 +#, fuzzy +msgid "warning: unable to set size of %s section in %B" +msgstr "%s: 警告: シンボル `%s' (%s セクション)ã«å¯¾ã™ã‚‹å†é…置を解決ã§ãã¾ã›ã‚“" -#: elf32-mips.c:5572 elf64-mips.c:6694 -#, c-format -msgid "%s: illegal section name `%s'" -msgstr "%s: ÉÔÀµ¤Ê¥»¥¯¥·¥ç¥ó̾ `%s' ¤Ç¤¹" +#: elf32-ppc.c:2290 +msgid "failed to allocate space for new APUinfo section." +msgstr "" -#: elf32-mips.c:6139 elf64-mips.c:3150 -msgid "not enough GOT space for local GOT entries" -msgstr "¶É½ê GOT ¥¨¥ó¥È¥êÍѤΠGOT ¶õ´Ö¤¬ÉÔ½½Ê¬¤Ç¤¹" +#: elf32-ppc.c:2309 +msgid "failed to compute new APUinfo section." +msgstr "" + +#: elf32-ppc.c:2312 +msgid "failed to install new APUinfo section." +msgstr "" + +#: elf32-ppc.c:3358 +#, fuzzy +msgid "%B: relocation %s cannot be used when making a shared object" +msgstr "%s: å†é…ç½® %s ã¯å…±æœ‰ã‚ªãƒ–ジェクトを作æˆã—ã¦ã„る時点ã§ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“" + +#. It does not make sense to have a procedure linkage +#. table entry for a local symbol. +#: elf32-ppc.c:3702 +#, fuzzy +msgid "%B(%A+0x%lx): %s reloc against local symbol" +msgstr "%s: 0x%lx ã§ã® CALL16 å†é…ç½®ãŒå¤§åŸŸã‚·ãƒ³ãƒœãƒ«ã‚’対象ã¨ã—ã¦ã„ã¾ã›ã‚“" + +#: elf32-ppc.c:4044 elf32-ppc.c:4059 elfxx-mips.c:12411 elfxx-mips.c:12437 +#: elfxx-mips.c:12459 elfxx-mips.c:12485 +msgid "Warning: %B uses hard float, %B uses soft float" +msgstr "" + +#: elf32-ppc.c:4047 elf32-ppc.c:4051 +msgid "Warning: %B uses double-precision hard float, %B uses single-precision hard float" +msgstr "" + +#: elf32-ppc.c:4055 +msgid "Warning: %B uses soft float, %B uses single-precision hard float" +msgstr "" + +#: elf32-ppc.c:4062 elf32-ppc.c:4066 elfxx-mips.c:12391 elfxx-mips.c:12395 +msgid "Warning: %B uses unknown floating point ABI %d" +msgstr "" + +#: elf32-ppc.c:4108 elf32-ppc.c:4112 +msgid "Warning: %B uses unknown vector ABI %d" +msgstr "" + +#: elf32-ppc.c:4116 +msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\"" +msgstr "" + +#: elf32-ppc.c:4133 elf32-ppc.c:4136 +msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory" +msgstr "" + +#: elf32-ppc.c:4139 elf32-ppc.c:4143 +msgid "Warning: %B uses unknown small structure return convention %d" +msgstr "" + +#: elf32-ppc.c:4197 +#, fuzzy +msgid "%B: compiled with -mrelocatable and linked with modules compiled normally" +msgstr "%s: -mrelocatable を付ã‘ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚ŒãŸã‚‚ã®ã¨æ™®é€šã«ã‚³ãƒ³ãƒ‘イルã•ã‚ŒãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨ã‚’リンクã—ã¾ã—ãŸ" + +#: elf32-ppc.c:4205 +#, fuzzy +msgid "%B: compiled normally and linked with modules compiled with -mrelocatable" +msgstr "%s: 普通ã«ã‚³ãƒ³ãƒ‘イルã•ã‚ŒãŸã‚‚ã®ã¨ -mrelocatable を付ã‘ã¦ã‚³ãƒ³ãƒ‘イルã•ã‚ŒãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨ã‚’リンクã—ã¾ã—ãŸ" + +#: elf32-ppc.c:4293 +msgid "Using bss-plt due to %B" +msgstr "" + +#: elf32-ppc.c:7192 elf64-ppc.c:12307 +#, fuzzy +msgid "%B: unknown relocation type %d for symbol %s" +msgstr "%s: å†é…置タイプ %d (シンボル %s) ãŒä¸æ˜Žã§ã™" -#: elf32-mips.c:7250 elf64-mips.c:4203 +#: elf32-ppc.c:7453 +msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'" +msgstr "" + +#: elf32-ppc.c:7651 elf64-ppc.c:12812 +msgid "%B(%A+0x%lx): relocation %s for indirect function %s unsupported" +msgstr "" + +#: elf32-ppc.c:7881 elf32-ppc.c:7911 elf32-ppc.c:7958 +#, fuzzy +msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)" +msgstr "%s: ターゲット %s (%så†é…ç½®) ãŒé–“é•ã£ãŸå‡ºåŠ›ã‚»ã‚¯ã‚·ãƒ§ãƒ³ (%s) ã«ã‚ã‚Šã¾ã™" + +#: elf32-ppc.c:8030 +#, fuzzy +msgid "%B: relocation %s is not yet supported for symbol %s." +msgstr "%s: å†é…ç½® %s ã¯ã‚·ãƒ³ãƒœãƒ« %s 用ã®ã‚‚ã®ã¨ã—ã¦ã¯ã¾ã ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: elf32-ppc.c:8138 elf64-ppc.c:13162 +msgid "%B(%A+0x%lx): %s reloc against `%s': error %d" +msgstr "" + +#: elf32-ppc.c:8629 +#, fuzzy, c-format +msgid "%s not defined in linker created %s" +msgstr "%s: シンボルå %s ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒæœªå®šç¾©ã§ã™" + +#: elf32-rx.c:544 +#, fuzzy +msgid "%B:%A: Warning: deprecated Red Hat reloc " +msgstr "%s: 0x%lx: 警告: 存在ã™ã‚‹ã¯ãšã®å†é…置領域を見ã¤ã‘られã¾ã›ã‚“" + +#: elf32-rx.c:1086 +msgid "Warning: RX_SYM reloc with an unknown symbol" +msgstr "" + +#: elf32-rx.c:1251 +msgid "%B(%A): error: call to undefined function '%s'" +msgstr "" + +#: elf32-rx.c:1265 +#, fuzzy +msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area" +msgstr "警告: シンボル `%s' ã®ã‚µã‚¤ã‚ºãŒ %lu ã‹ã‚‰ %lu ã«å¤‰æ›´ã•ã‚Œã¾ã—㟠(%s 内)" + +#: elf32-rx.c:1269 +#, fuzzy +msgid "%B(%A): internal error: out of range error" +msgstr "内部エラー: 範囲外エラーã§ã™" + +#: elf32-rx.c:1273 +#, fuzzy +msgid "%B(%A): internal error: unsupported relocation error" +msgstr "内部エラー: 未サãƒãƒ¼ãƒˆã®å†é…置エラー" + +#: elf32-rx.c:1277 +#, fuzzy +msgid "%B(%A): internal error: dangerous relocation" +msgstr "内部エラー: å±é™ºãªå†é…ç½®ã§ã™" + +#: elf32-rx.c:1281 +#, fuzzy +msgid "%B(%A): internal error: unknown error" +msgstr "内部エラー: ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼" + +#: elf32-rx.c:2928 +#, fuzzy, c-format +msgid " [64-bit doubles]" +msgstr "64-ビットå€ç²¾åº¦æµ®å‹•å°æ•°, " + +#: elf32-rx.c:2930 #, c-format -msgid "%s: %s+0x%lx: jump to stub routine which is not jal" -msgstr "%s: %s+0x%lx: jal ¤Ç¤Ï¤Ê¤¤¥¹¥¿¥Ö¥ë¡¼¥Á¥ó¤Ø¤Î¥¸¥ã¥ó¥×¤Ç¤¹" +msgid " [dsp]" +msgstr "" + +#: elf32-s390.c:2209 elf64-s390.c:2196 +msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s" +msgstr "" + +#: elf32-score.c:1522 elf32-score7.c:1382 elfxx-mips.c:3323 +msgid "not enough GOT space for local GOT entries" +msgstr "局所 GOT エントリ用㮠GOT 空間ãŒä¸å分ã§ã™" + +#: elf32-score.c:2744 +#, fuzzy +msgid "address not word align" +msgstr "å†é…置領域ãŒé©åˆ‡ã«ã‚¢ãƒ©ã‚¤ãƒ³ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: elf32-score.c:2829 elf32-score7.c:2634 +#, fuzzy, c-format +msgid "%s: Malformed reloc detected for section %s" +msgstr "セクション %s 用ã¨ã—ã¦ã¯ãŠã‹ã—ãªå†é…置を検出ã—ã¾ã—ãŸ" + +#: elf32-score.c:2880 elf32-score7.c:2685 +#, fuzzy +msgid "%B: CALL15 reloc at 0x%lx not against global symbol" +msgstr "%s: 0x%lx ã§ã® CALL16 å†é…ç½®ãŒå¤§åŸŸã‚·ãƒ³ãƒœãƒ«ã‚’対象ã¨ã—ã¦ã„ã¾ã›ã‚“" + +#: elf32-score.c:3999 elf32-score7.c:3806 +#, c-format +msgid " [pic]" +msgstr "" + +#: elf32-score.c:4003 elf32-score7.c:3810 +#, c-format +msgid " [fix dep]" +msgstr "" + +#: elf32-score.c:4045 elf32-score7.c:3852 +#, fuzzy +msgid "%B: warning: linking PIC files with non-PIC files" +msgstr "%s: PIC ファイルã«éž PIC ファイルをリンクã—よã†ã¨ã—ã¾ã—ãŸ" + +#: elf32-sh-symbian.c:130 +msgid "%B: IMPORT AS directive for %s conceals previous IMPORT AS" +msgstr "" + +#: elf32-sh-symbian.c:383 +#, fuzzy +msgid "%B: Unrecognised .directive command: %s" +msgstr "%s: import タイプをèªè­˜ã§ãã¾ã›ã‚“ -- %x" + +#: elf32-sh-symbian.c:503 +msgid "%B: Failed to add renamed symbol %s" +msgstr "" + +#: elf32-sh.c:568 +#, fuzzy +msgid "%B: 0x%lx: warning: bad R_SH_USES offset" +msgstr "%s: 0x%lx: 警告: R_SH_USES オフセットãŒä¸æ­£ã§ã™" + +#: elf32-sh.c:580 +#, fuzzy +msgid "%B: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" +msgstr "%s: 0x%lx: 警告: R_SH_USES ãŒèªè­˜ã§ããªã„命令 0x%x を指ã—ã¦ã„ã¾ã™" + +#: elf32-sh.c:597 +#, fuzzy +msgid "%B: 0x%lx: warning: bad R_SH_USES load offset" +msgstr "%s: 0x%lx: 警告: R_SH_USES load オフセットãŒä¸æ­£ã§ã™" + +#: elf32-sh.c:612 +#, fuzzy +msgid "%B: 0x%lx: warning: could not find expected reloc" +msgstr "%s: 0x%lx: 警告: 存在ã™ã‚‹ã¯ãšã®å†é…置領域を見ã¤ã‘られã¾ã›ã‚“" + +#: elf32-sh.c:640 +#, fuzzy +msgid "%B: 0x%lx: warning: symbol in unexpected section" +msgstr "%s: 0x%lx: 警告: シンボルãŒäºˆæœŸã›ã¬ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã«ã‚ã‚Šã¾ã™" + +#: elf32-sh.c:766 +#, fuzzy +msgid "%B: 0x%lx: warning: could not find expected COUNT reloc" +msgstr "%s: 0x%lx: 警告: 存在ã™ã‚‹ã¯ãšã® COUNT å†é…置領域を見ã¤ã‘られã¾ã›ã‚“" + +#: elf32-sh.c:775 +#, fuzzy +msgid "%B: 0x%lx: warning: bad count" +msgstr "%s: 0x%lx: 警告: count ãŒä¸æ­£ã§ã™" + +#: elf32-sh.c:1179 elf32-sh.c:1549 +#, fuzzy +msgid "%B: 0x%lx: fatal: reloc overflow while relaxing" +msgstr "%s: 0x%lx: 致命的: relax 中ã«å†é…置領域ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ" + +#: elf32-sh.c:4057 elf64-sh64.c:1514 +msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" +msgstr "" + +#: elf32-sh.c:4304 +msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation" +msgstr "" + +#: elf32-sh.c:4337 elf32-sh.c:4352 +msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx" +msgstr "" + +#: elf32-sh.c:4366 +msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32" +msgstr "" + +#: elf32-sh.c:4380 +msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32" +msgstr "" + +#: elf32-sh.c:4524 elf32-sh.c:4994 +#, fuzzy +msgid "%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section" +msgstr "%s: ローダå†é…ç½®ãŒèª­è¾¼ã¿å°‚用セクション %s ã«ã‚ã‚Šã¾ã™" + +#: elf32-sh.c:5101 +#, fuzzy +msgid "%B(%A+0x%lx): %s relocation against external symbol \"%s\"" +msgstr "%s: 0x%lx ã§ã® CALL16 å†é…ç½®ãŒå¤§åŸŸã‚·ãƒ³ãƒœãƒ«ã‚’対象ã¨ã—ã¦ã„ã¾ã›ã‚“" + +#: elf32-sh.c:5574 +#, fuzzy, c-format +msgid "%X%C: relocation to \"%s\" references a different segment\n" +msgstr "%s: 警告: 確ä¿ã•ã‚ŒãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' ãŒã‚»ã‚°ãƒ¡ãƒ³ãƒˆå†…ã«ã‚ã‚Šã¾ã›ã‚“" + +#: elf32-sh.c:5580 +#, fuzzy, c-format +msgid "%C: warning: relocation to \"%s\" references a different segment\n" +msgstr "%s: 警告: 確ä¿ã•ã‚ŒãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' ãŒã‚»ã‚°ãƒ¡ãƒ³ãƒˆå†…ã«ã‚ã‚Šã¾ã›ã‚“" + +#: elf32-sh.c:6358 elf32-sh.c:6441 +#, fuzzy +msgid "%B: `%s' accessed both as normal and FDPIC symbol" +msgstr "%B: `%s' ãŒé€šå¸¸ã®ã‚·ãƒ³ãƒœãƒ«ã¨ã‚¹ãƒ¬ãƒƒãƒ‰å±€æ‰€ã‚·ãƒ³ãƒœãƒ«ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¾ã—ãŸ" + +#: elf32-sh.c:6363 elf32-sh.c:6445 +#, fuzzy +msgid "%B: `%s' accessed both as FDPIC and thread local symbol" +msgstr "%B: `%s' ãŒé€šå¸¸ã®ã‚·ãƒ³ãƒœãƒ«ã¨ã‚¹ãƒ¬ãƒƒãƒ‰å±€æ‰€ã‚·ãƒ³ãƒœãƒ«ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¾ã—ãŸ" + +#: elf32-sh.c:6393 +#, fuzzy +msgid "%B: Function descriptor relocation with non-zero addend" +msgstr "" +"\n" +"関数記述å­ã¯é–‹å§‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ä½ç½®ã—ã¦ã„ã¾ã™: %04lx\n" + +#: elf32-sh.c:6629 elf64-alpha.c:4560 +#, fuzzy +msgid "%B: TLS local exec code cannot be linked into shared objects" +msgstr "%s: å†é…ç½® %s ã¯å…±æœ‰ã‚ªãƒ–ジェクトを作æˆã—ã¦ã„る時点ã§ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“" + +#: elf32-sh64.c:223 elf64-sh64.c:2314 +#, fuzzy, c-format +msgid "%s: compiled as 32-bit object and %s is 64-bit" +msgstr "%s: 64 ビットシステム用ã«ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¾ã—ãŸãŒã‚¿ãƒ¼ã‚²ãƒƒãƒˆãŒ 32 ビットã§ã™" + +#: elf32-sh64.c:226 elf64-sh64.c:2317 +#, fuzzy, c-format +msgid "%s: compiled as 64-bit object and %s is 32-bit" +msgstr "%s: 64 ビットシステム用ã«ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¾ã—ãŸãŒã‚¿ãƒ¼ã‚²ãƒƒãƒˆãŒ 32 ビットã§ã™" + +#: elf32-sh64.c:228 elf64-sh64.c:2319 +#, c-format +msgid "%s: object size does not match that of target %s" +msgstr "" + +#: elf32-sh64.c:451 elf64-sh64.c:2833 +#, c-format +msgid "%s: encountered datalabel symbol in input" +msgstr "" + +#: elf32-sh64.c:528 +msgid "PTB mismatch: a SHmedia address (bit 0 == 1)" +msgstr "" + +#: elf32-sh64.c:531 +msgid "PTA mismatch: a SHcompact address (bit 0 == 0)" +msgstr "" + +#: elf32-sh64.c:549 +#, c-format +msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16" +msgstr "" + +#: elf32-sh64.c:598 +#, fuzzy +msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n" +msgstr "%s: ä¸æ­£ãªå†é…置タイプ %d ãŒã‚¢ãƒ‰ãƒ¬ã‚¹ 0x%lx ã§è¦‹ã¤ã‹ã‚Šã¾ã—ãŸ" + +#: elf32-sh64.c:674 +#, c-format +msgid "%s: could not write out added .cranges entries" +msgstr "" + +#: elf32-sh64.c:734 +#, c-format +msgid "%s: could not write out sorted .cranges entries" +msgstr "" + +#: elf32-sparc.c:89 +#, fuzzy +msgid "%B: compiled for a 64 bit system and target is 32 bit" +msgstr "%s: 64 ビットシステム用ã«ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¾ã—ãŸãŒã‚¿ãƒ¼ã‚²ãƒƒãƒˆãŒ 32 ビットã§ã™" + +#: elf32-sparc.c:102 +#, fuzzy +msgid "%B: linking little endian files with big endian files" +msgstr "%s: リトルエンディアンã®ãƒ•ã‚¡ã‚¤ãƒ«ã¨ãƒ“ッグエンディアンã®ãƒ•ã‚¡ã‚¤ãƒ«ã¨ã‚’リンクã—よã†ã¨ã—ã¦ã„ã¾ã™" + +#: elf32-spu.c:719 +msgid "%X%P: overlay section %A does not start on a cache line.\n" +msgstr "" + +#: elf32-spu.c:727 +msgid "%X%P: overlay section %A is larger than a cache line.\n" +msgstr "" + +#: elf32-spu.c:747 +msgid "%X%P: overlay section %A is not in cache area.\n" +msgstr "" + +#: elf32-spu.c:787 +msgid "%X%P: overlay sections %A and %A do not start at the same address.\n" +msgstr "" + +#: elf32-spu.c:1011 +msgid "warning: call to non-function symbol %s defined in %B" +msgstr "" + +#: elf32-spu.c:1361 +msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" +msgstr "" + +#: elf32-spu.c:1880 +msgid "%B is not allowed to define %s" +msgstr "" + +#: elf32-spu.c:1888 +#, c-format +msgid "you are not allowed to define %s in a script" +msgstr "" + +#: elf32-spu.c:1922 +#, c-format +msgid "%s in overlay section" +msgstr "" + +#: elf32-spu.c:1951 +msgid "overlay stub relocation overflow" +msgstr "" + +#: elf32-spu.c:1960 elf64-ppc.c:11327 +msgid "stubs don't match calculated size" +msgstr "" + +#: elf32-spu.c:2542 +#, c-format +msgid "warning: %s overlaps %s\n" +msgstr "" + +#: elf32-spu.c:2558 +#, c-format +msgid "warning: %s exceeds section size\n" +msgstr "" + +#: elf32-spu.c:2589 +msgid "%A:0x%v not found in function table\n" +msgstr "" + +#: elf32-spu.c:2729 +msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n" +msgstr "" + +#: elf32-spu.c:3297 +#, c-format +msgid "Stack analysis will ignore the call from %s to %s\n" +msgstr "" + +#: elf32-spu.c:3988 +msgid " %s: 0x%v\n" +msgstr "" + +#: elf32-spu.c:3989 +msgid "%s: 0x%v 0x%v\n" +msgstr "" + +#: elf32-spu.c:3994 +msgid " calls:\n" +msgstr "" + +#: elf32-spu.c:4002 +#, c-format +msgid " %s%s %s\n" +msgstr "" + +#: elf32-spu.c:4307 +#, fuzzy, c-format +msgid "%s duplicated in %s\n" +msgstr "%s: export スタブ %s ãŒé‡è¤‡ã—ã¦ã„ã¾ã™" + +#: elf32-spu.c:4311 +#, c-format +msgid "%s duplicated\n" +msgstr "" + +#: elf32-spu.c:4318 +msgid "sorry, no support for duplicate object files in auto-overlay script\n" +msgstr "" + +#: elf32-spu.c:4359 +msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n" +msgstr "" + +#: elf32-spu.c:4514 +msgid "%B:%A%s exceeds overlay size\n" +msgstr "" + +#: elf32-spu.c:4676 +msgid "Stack size for call graph root nodes.\n" +msgstr "" + +#: elf32-spu.c:4677 +msgid "" +"\n" +"Stack size for functions. Annotations: '*' max stack, 't' tail call\n" +msgstr "" + +#: elf32-spu.c:4687 +msgid "Maximum stack required is 0x%v\n" +msgstr "" + +#: elf32-spu.c:4778 +msgid "fatal error while creating .fixup" +msgstr "" + +#: elf32-spu.c:5006 +#, fuzzy +msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%s: 警告: シンボル `%s' (%s セクション)ã«å¯¾ã™ã‚‹å†é…置を解決ã§ãã¾ã›ã‚“" + +#: elf32-tic6x.c:1539 +#, fuzzy +msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined" +msgstr "GP 関連ã®å†é…置㌠_gp ãŒæœªå®šç¾©ã®æ™‚点ã§ç¾ã‚Œã¾ã—ãŸ" + +#. Shared libraries and exception handling support not +#. implemented. +#: elf32-tic6x.c:1554 +#, fuzzy +msgid "%B: relocation type %d not implemented" +msgstr "å†é…ç½® `%s' ã¯ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“\n" + +#: elf32-tic6x.c:1640 +#, fuzzy +msgid "dangerous relocation" +msgstr "内部エラー: å±é™ºãªå†é…ç½®ã§ã™" + +#: elf32-tic6x.c:1788 elf32-tic6x.c:1796 +msgid "error: %B requires more stack alignment than %B preserves" +msgstr "" + +#: elf32-tic6x.c:1806 elf32-tic6x.c:1815 +msgid "error: unknown Tag_ABI_array_object_alignment value in %B" +msgstr "" + +#: elf32-tic6x.c:1824 elf32-tic6x.c:1833 +msgid "error: unknown Tag_ABI_array_object_align_expected value in %B" +msgstr "" + +#: elf32-tic6x.c:1841 elf32-tic6x.c:1848 +msgid "error: %B requires more array alignment than %B preserves" +msgstr "" + +#: elf32-tic6x.c:1870 +msgid "warning: %B and %B differ in wchar_t size" +msgstr "" + +#: elf32-tic6x.c:1888 +msgid "warning: %B and %B differ in whether code is compiled for DSBT" +msgstr "" + +#: elf32-tic6x.c:1898 +msgid "warning: %B and %B differ in position-dependence of data addressing" +msgstr "" + +#: elf32-tic6x.c:1908 +msgid "warning: %B and %B differ in position-dependence of code addressing" +msgstr "" + +#: elf32-v850.c:173 +#, c-format +msgid "Variable `%s' cannot occupy in multiple small data regions" +msgstr "変数 `%s' ã¯è¤‡æ•°ã® small データ領域をå æœ‰ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“" + +#: elf32-v850.c:176 +#, 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:179 +#, c-format +msgid "Variable `%s' cannot be in both small and zero data regions simultaneously" +msgstr "変数 `%s' ã‚’ small 㨠zero データ領域ã¸åŒæ™‚ã«ç½®ãã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: elf32-v850.c:182 +#, c-format +msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously" +msgstr "変数 `%s' ã‚’ small 㨠tiny データ領域ã¸åŒæ™‚ã«ç½®ãã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: elf32-v850.c:185 +#, c-format +msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously" +msgstr "変数 `%s' 㯠zero 㨠tiny データ領域ã¸åŒæ™‚ã«ç½®ãã“ã¨ã¯ã§ãã¾ã›ã‚“" + +#: elf32-v850.c:483 +#, c-format +msgid "FAILED to find previous HI16 reloc\n" +msgstr "以å‰ã® HI16 å†é…置を見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸ\n" + +#: elf32-v850.c:2155 +msgid "could not locate special linker symbol __gp" +msgstr "特殊リンカシンボル __gp ã®ä½ç½®ã‚’特定ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: elf32-v850.c:2159 +msgid "could not locate special linker symbol __ep" +msgstr "特殊リンカシンボル __ep ã®ä½ç½®ã‚’特定ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: elf32-v850.c:2163 +msgid "could not locate special linker symbol __ctbp" +msgstr "特殊リンカシンボル __ctbp ã®ä½ç½®ã‚’特定ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: elf32-v850.c:2341 +#, fuzzy +msgid "%B: Architecture mismatch with previous modules" +msgstr "%s: 以å‰ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¨ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ãŒä¸€è‡´ã—ã¾ã›ã‚“" + +#. xgettext:c-format. +#: elf32-v850.c:2360 +#, c-format +msgid "private flags = %lx: " +msgstr "private フラグ = %lx: " + +#: elf32-v850.c:2365 +#, c-format +msgid "v850 architecture" +msgstr "v850 アーキテクãƒãƒ£" + +#: elf32-v850.c:2366 +#, c-format +msgid "v850e architecture" +msgstr "v850e アーキテクãƒãƒ£" + +#: elf32-v850.c:2367 +#, fuzzy, c-format +msgid "v850e1 architecture" +msgstr "v850e アーキテクãƒãƒ£" + +#: elf32-v850.c:2368 +#, fuzzy, c-format +msgid "v850e2 architecture" +msgstr "v850e アーキテクãƒãƒ£" + +#: elf32-v850.c:2369 +#, fuzzy, c-format +msgid "v850e2v3 architecture" +msgstr "v850e アーキテクãƒãƒ£" + +#: elf32-vax.c:531 +#, c-format +msgid " [nonpic]" +msgstr "" + +#: elf32-vax.c:534 +#, fuzzy, c-format +msgid " [d-float]" +msgstr "浮動å°æ•°" + +#: elf32-vax.c:537 +#, fuzzy, c-format +msgid " [g-float]" +msgstr "浮動å°æ•°" + +#: elf32-vax.c:654 +#, c-format +msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld" +msgstr "" + +#: elf32-vax.c:1587 +#, fuzzy, c-format +msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" +msgstr "%s: 警告: シンボル `%s' (%s セクション)ã«å¯¾ã™ã‚‹å†é…置を解決ã§ãã¾ã›ã‚“" + +#: elf32-vax.c:1714 +#, fuzzy, c-format +msgid "%s: warning: %s relocation against symbol `%s' from %s section" +msgstr "%s: 警告: シンボル `%s' (%s セクション)ã«å¯¾ã™ã‚‹å†é…置を解決ã§ãã¾ã›ã‚“" + +#: elf32-vax.c:1720 +#, fuzzy, c-format +msgid "%s: warning: %s relocation to 0x%x from %s section" +msgstr "%s: 警告: シンボル `%s' (%s セクション)ã«å¯¾ã™ã‚‹å†é…置を解決ã§ãã¾ã›ã‚“" + +#: elf32-xstormy16.c:451 elf32-ia64.c:2861 elf64-ia64.c:2861 +msgid "non-zero addend in @fptr reloc" +msgstr "" + +#: elf32-xtensa.c:918 +msgid "%B(%A): invalid property table" +msgstr "" + +#: elf32-xtensa.c:2780 +msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)" +msgstr "" + +#: elf32-xtensa.c:2859 elf32-xtensa.c:2980 +#, fuzzy +msgid "dynamic relocation in read-only section" +msgstr "%s: ローダå†é…ç½®ãŒèª­è¾¼ã¿å°‚用セクション %s ã«ã‚ã‚Šã¾ã™" + +#: elf32-xtensa.c:2956 +msgid "TLS relocation invalid without dynamic sections" +msgstr "" + +#: elf32-xtensa.c:3173 +msgid "internal inconsistency in size of .got.loc section" +msgstr "" + +#: elf32-xtensa.c:3486 +msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x" +msgstr "" + +#: elf32-xtensa.c:4715 elf32-xtensa.c:4723 +msgid "Attempt to convert L32R/CALLX to CALL failed" +msgstr "" + +#: elf32-xtensa.c:6333 elf32-xtensa.c:6409 elf32-xtensa.c:7525 +msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch" +msgstr "" + +#: elf32-xtensa.c:7265 +msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch" +msgstr "" + +#: elf32-xtensa.c:9024 +#, fuzzy +msgid "invalid relocation address" +msgstr "%s: å†é…置タイプ %d ã¯ä¸é©åˆ‡ã§ã™" + +#: elf32-xtensa.c:9073 +msgid "overflow after relaxation" +msgstr "" + +#: elf32-xtensa.c:10205 +msgid "%B(%A+0x%lx): unexpected fix for %s relocation" +msgstr "" + +#: elf64-alpha.c:460 +msgid "GPDISP relocation did not find ldah and lda instructions" +msgstr "GPDISP å†é…置㌠ldah 㨠lda 命令を見ã¤ã‘ã¾ã›ã‚“ã§ã—ãŸ" + +#: elf64-alpha.c:2408 +msgid "%B: .got subsegment exceeds 64K (size %d)" +msgstr "%B: .got サブセグメント㌠64K を超ãˆã¦ã„ã¾ã™ (サイズ %d)" + +#: elf64-alpha.c:4304 elf64-alpha.c:4316 +#, fuzzy +msgid "%B: gp-relative relocation against dynamic symbol %s" +msgstr "32ビット gp 関連å†é…ç½®ãŒå¤–部シンボルã®ç”¨ã«ç™ºç”Ÿã—ã¾ã—ãŸ" + +#: elf64-alpha.c:4342 elf64-alpha.c:4477 +#, fuzzy +msgid "%B: pc-relative relocation against dynamic symbol %s" +msgstr "32ビット gp 関連å†é…ç½®ãŒå¤–部シンボルã®ç”¨ã«ç™ºç”Ÿã—ã¾ã—ãŸ" + +#: elf64-alpha.c:4370 +msgid "%B: change in gp: BRSGP %s" +msgstr "" + +#: elf64-alpha.c:4395 +#, fuzzy +msgid "" +msgstr "*ä¸ æ˜Ž*" + +#: elf64-alpha.c:4400 +msgid "%B: !samegp reloc against symbol without .prologue: %s" +msgstr "" + +#: elf64-alpha.c:4452 +#, fuzzy +msgid "%B: unhandled dynamic relocation against %s" +msgstr "å†é…ç½® %s ãŒå–り扱ã‚ã‚Œã¾ã›ã‚“ã§ã—ãŸ" + +#: elf64-alpha.c:4484 +#, fuzzy +msgid "%B: pc-relative relocation against undefined weak symbol %s" +msgstr "GP 関連ã®å†é…置㌠_gp ãŒæœªå®šç¾©ã®æ™‚点ã§ç¾ã‚Œã¾ã—ãŸ" + +#: elf64-alpha.c:4544 +#, fuzzy +msgid "%B: dtp-relative relocation against dynamic symbol %s" +msgstr "32ビット gp 関連å†é…ç½®ãŒå¤–部シンボルã®ç”¨ã«ç™ºç”Ÿã—ã¾ã—ãŸ" + +#: elf64-alpha.c:4567 +#, fuzzy +msgid "%B: tp-relative relocation against dynamic symbol %s" +msgstr "32ビット gp 関連å†é…ç½®ãŒå¤–部シンボルã®ç”¨ã«ç™ºç”Ÿã—ã¾ã—ãŸ" + +#: elf64-hppa.c:2101 +#, c-format +msgid "stub entry for %s cannot load .plt, dp offset = %ld" +msgstr "" + +#: elf64-hppa.c:3299 +#, fuzzy +msgid "%B(%A+0x%lx): cannot reach %s" +msgstr "%s(%s+0x%lx): %s (%s) ã‚’å–り扱ãˆã¾ã›ã‚“" + +#: elf64-mmix.c:1177 +#, c-format +msgid "" +"%s: Internal inconsistency error for value for\n" +" linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx\n" +msgstr "" + +#: elf64-mmix.c:1607 +#, c-format +msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s" +msgstr "" + +#: elf64-mmix.c:1612 +#, fuzzy, c-format +msgid "%s: base-plus-offset relocation against register symbol: %s in %s" +msgstr "%s: 警告: シンボル `%s' (%s セクション)ã«å¯¾ã™ã‚‹å†é…置を解決ã§ãã¾ã›ã‚“" + +#: elf64-mmix.c:1656 +#, c-format +msgid "%s: register relocation against non-register symbol: (unknown) in %s" +msgstr "" + +#: elf64-mmix.c:1661 +#, fuzzy, c-format +msgid "%s: register relocation against non-register symbol: %s in %s" +msgstr "%s: 警告: シンボル `%s' (%s セクション)ã«å¯¾ã™ã‚‹å†é…置を解決ã§ãã¾ã›ã‚“" + +#: elf64-mmix.c:1698 +#, c-format +msgid "%s: directive LOCAL valid only with a register or absolute value" +msgstr "" + +#: elf64-mmix.c:1726 +#, c-format +msgid "%s: LOCAL directive: Register $%ld is not a local register. First global register is $%ld." +msgstr "" + +#: elf64-mmix.c:2190 +#, c-format +msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n" +msgstr "" + +#: elf64-mmix.c:2248 +#, fuzzy +msgid "Register section has contents\n" +msgstr "セクションã«å†…容ãŒã‚ã‚Šã¾ã›ã‚“" + +#: elf64-mmix.c:2440 +#, c-format +msgid "" +"Internal inconsistency: remaining %u != max %u.\n" +" Please report this bug." +msgstr "" + +#: elf64-ppc.c:2741 libbfd.c:997 +#, fuzzy +msgid "%B: compiled for a big endian system and target is little endian" +msgstr "%s: ビッグエンディアンシステム用ã«ã‚³ãƒ³ãƒ‘イルã•ã‚Œã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãŒãƒªãƒˆãƒ«ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã§ã™" + +#: elf64-ppc.c:2744 libbfd.c:999 +#, fuzzy +msgid "%B: compiled for a little endian system and target is big endian" +msgstr "%s: リトルエンディアンシステム用ã«ã‚³ãƒ³ãƒ‘イルã•ã‚Œã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãŒãƒ“ッグエンディアンã§ã™ã€‚" + +#: elf64-ppc.c:6473 +#, c-format +msgid "copy reloc against `%s' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc" +msgstr "" + +#: elf64-ppc.c:6901 +#, fuzzy +msgid "dynreloc miscount for %B, section %A" +msgstr "セクション %s 用ã¨ã—ã¦ã¯ãŠã‹ã—ãªå†é…置を検出ã—ã¾ã—ãŸ" + +#: elf64-ppc.c:6985 +msgid "%B: .opd is not a regular array of opd entries" +msgstr "" + +#: elf64-ppc.c:6994 +#, fuzzy +msgid "%B: unexpected reloc type %u in .opd section" +msgstr "%s: external 部分ã«ã‚ã‚‹ ATN タイプ %d ã¨ã„ã†ã®ã¯ã‚ã‚Šå¾—ã¾ã›ã‚“" + +#: elf64-ppc.c:7015 +msgid "%B: undefined sym `%s' in .opd section" +msgstr "" + +#: elf64-ppc.c:7877 elf64-ppc.c:8392 +#, c-format +msgid "%s defined on removed toc entry" +msgstr "" + +#: elf64-ppc.c:9459 +#, c-format +msgid "long branch stub `%s' offset overflow" +msgstr "" + +#: elf64-ppc.c:9518 +#, c-format +msgid "can't find branch stub `%s'" +msgstr "" + +#: elf64-ppc.c:9580 elf64-ppc.c:9716 +#, c-format +msgid "linkage table error against `%s'" +msgstr "" + +#: elf64-ppc.c:9886 +#, c-format +msgid "can't build branch stub `%s'" +msgstr "" + +#: elf64-ppc.c:10684 +msgid "%B section %A exceeds stub group size" +msgstr "" + +#: elf64-ppc.c:11339 +#, c-format +msgid "" +"linker stubs in %u group%s\n" +" branch %lu\n" +" toc adjust %lu\n" +" long branch %lu\n" +" long toc adj %lu\n" +" plt call %lu" +msgstr "" + +#: elf64-ppc.c:12190 +msgid "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc" +msgstr "" + +#: elf64-ppc.c:12198 +msgid "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern" +msgstr "" + +#: elf64-ppc.c:12919 +#, fuzzy +msgid "%B: relocation %s is not supported for symbol %s." +msgstr "%s: å†é…ç½® %s ã¯ã‚·ãƒ³ãƒœãƒ« %s 用ã®ã‚‚ã®ã¨ã—ã¦ã¯ã¾ã ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: elf64-ppc.c:13096 +#, fuzzy +msgid "%B: error: relocation %s not a multiple of %d" +msgstr "警告ã€.pdata セクションサイズ (%ld) ㌠%d ã®å€æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n" + +#: elf64-sh64.c:1682 +#, fuzzy, c-format +msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n" +msgstr "%s: ä¸æ­£ãªå†é…置タイプ %d ãŒã‚¢ãƒ‰ãƒ¬ã‚¹ 0x%lx ã§è¦‹ã¤ã‹ã‚Šã¾ã—ãŸ" + +#: elf64-sparc.c:444 +#, fuzzy +msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER" +msgstr "%s: STT_REGISTER を使ã†ã¨å®£è¨€ã§ãã‚‹ã®ã¯ãƒ¬ã‚¸ã‚¹ã‚¿ %%g[2367] ã ã‘ã§ã™" + +#: elf64-sparc.c:464 +#, fuzzy +msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B" +msgstr "レジスタ %%g%d ã¯çŸ›ç›¾ã—ã¦ä½¿ã‚ã‚Œã¾ã—ãŸ: 以å‰ã®å®£è¨€ã¯ %s 㧠%sã€%s 㧠%s ã¨å†å®šç¾©ã•ã‚Œã¾ã—ãŸ" + +#: elf64-sparc.c:487 +#, fuzzy +msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B" +msgstr "シンボル `%s' ã¯ç•°ãªã‚‹åž‹ã‚’æŒã£ã¦ã„ã¾ã™: %s 㧠REGISTER, ã§ã™ãŒ %s 㨠%s ã§å®šç¾©ã•ã‚Œã¦ã„ã¾ã™" + +#: elf64-sparc.c:532 +#, fuzzy +msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B" +msgstr "シンボル `%s' ã¯ç•°ãªã‚‹åž‹ã‚’ã‚‚ã£ã¦ã„ã¾ã™: 以å‰ã¯ %s, %s ã§ã¯ REGISTER" + +#: elf64-sparc.c:684 +#, fuzzy +msgid "%B: linking UltraSPARC specific with HAL specific code" +msgstr "%s: UltraSPARC 特有ã®ã‚³ãƒ¼ãƒ‰ã¨ HAL 特有ã®ã‚³ãƒ¼ãƒ‰ã¨ã‚’リンクã—よã†ã¨ã—ã¦ã„ã¾ã™" + +#: elf64-x86-64.c:1360 +msgid "%B: '%s' accessed both as normal and thread local symbol" +msgstr "" + +#: elf64-x86-64.c:2801 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d" +msgstr "" + +#: elf64-x86-64.c:3073 +#, fuzzy +msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object" +msgstr "%s: å†é…ç½® %s ã¯å…±æœ‰ã‚ªãƒ–ジェクトを作æˆã—ã¦ã„る時点ã§ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“" + +#: elf64-x86-64.c:3184 +#, fuzzy +msgid "; recompile with -fPIC" +msgstr "%s: æらã -fPIC を付ã‘ãšã«ã‚³ãƒ³ãƒ‘イルã—ãŸã®ã§ã¯ï¼Ÿ" + +#: elf64-x86-64.c:3189 +#, fuzzy +msgid "%B: relocation %s against %s `%s' can not be used when making a shared object%s" +msgstr "%s: å†é…ç½® %s ã¯å…±æœ‰ã‚ªãƒ–ジェクトを作æˆã—ã¦ã„る時点ã§ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“" + +#: elf64-x86-64.c:3191 +#, fuzzy +msgid "%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s" +msgstr "%s: å†é…ç½® %s ã¯å…±æœ‰ã‚ªãƒ–ジェクトを作æˆã—ã¦ã„る時点ã§ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“" + +#: elfcode.h:826 +#, c-format +msgid "warning: %s has a corrupt string table index - ignoring" +msgstr "" + +#: elfcode.h:1236 +#, c-format +msgid "%s: version count (%ld) does not match symbol count (%ld)" +msgstr "%s: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚«ã‚¦ãƒ³ãƒˆ (%ld) ãŒã‚·ãƒ³ãƒœãƒ«ã‚«ã‚¦ãƒ³ãƒˆ (%ld) ã¨ä¸€è‡´ã—ã¾ã›ã‚“" + +#: elfcode.h:1476 +#, c-format +msgid "%s(%s): relocation %d has invalid symbol index %ld" +msgstr "" + +#: elfcore.h:312 +msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu." +msgstr "" + +#: elflink.c:1119 +msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A" +msgstr "" + +#: elflink.c:1123 +msgid "%s: TLS reference in %B mismatches non-TLS reference in %B" +msgstr "" + +#: elflink.c:1127 +msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B" +msgstr "" + +#: elflink.c:1131 +msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A" +msgstr "" + +#: elflink.c:1763 +#, fuzzy +msgid "%B: unexpected redefinition of indirect versioned symbol `%s'" +msgstr "%s: 警告: `%s' ã®å†å®šç¾©ã¯ã‚ã‚Šå¾—ãªã„ã“ã¨ã§ã™" + +#: elflink.c:2076 +#, fuzzy +msgid "%B: version node not found for symbol %s" +msgstr "%s: å†é…ç½® %s ã¯ã‚·ãƒ³ãƒœãƒ« %s 用ã®ã‚‚ã®ã¨ã—ã¦ã¯ã¾ã ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: elflink.c:2166 +#, fuzzy +msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'" +msgstr "%s: ä¸æ­£ãªå†é…置アドレス 0x%lx ãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' 内ã«ã‚ã‚Šã¾ã™" + +#: elflink.c:2177 +msgid "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the object file has no symbol table" +msgstr "" + +#: elflink.c:2367 +msgid "%B: relocation size mismatch in %B section %A" +msgstr "" + +#: elflink.c:2662 +#, c-format +msgid "warning: type and size of dynamic symbol `%s' are not defined" +msgstr "警告: 動的シンボル `%s' ã®åž‹ã¨ã‚µã‚¤ã‚ºãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: elflink.c:3418 +msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n" +msgstr "" + +#: elflink.c:4050 +#, fuzzy +msgid "%B: %s: invalid version %u (max %d)" +msgstr "%s: %s: ä¸é©åˆ‡ãªãƒãƒ¼ã‚¸ãƒ§ãƒ³ %u (最大 %d)" + +#: elflink.c:4086 +#, fuzzy +msgid "%B: %s: invalid needed version %d" +msgstr "%s: %s: å¿…è¦ã¨ã•ã‚Œã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d ãŒä¸é©åˆ‡ã§ã™" + +#: elflink.c:4285 +msgid "Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %A" +msgstr "" + +#: elflink.c:4291 +#, fuzzy +msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B" +msgstr "警告: シンボル `%s' ã®ã‚µã‚¤ã‚ºãŒ %lu ã‹ã‚‰ %lu ã«å¤‰æ›´ã•ã‚Œã¾ã—㟠(%s 内)" + +#: elflink.c:4306 +#, fuzzy +msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B" +msgstr "警告: シンボル `%s' ã®ã‚µã‚¤ã‚ºãŒ %lu ã‹ã‚‰ %lu ã«å¤‰æ›´ã•ã‚Œã¾ã—㟠(%s 内)" + +#: elflink.c:4472 +#, fuzzy +msgid "%B: undefined reference to symbol '%s'" +msgstr "%s: シンボルå %s ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒæœªå®šç¾©ã§ã™" + +#: elflink.c:4475 +msgid "note: '%s' is defined in DSO %B so try adding it to the linker command line" +msgstr "" + +#: elflink.c:5779 +#, fuzzy, c-format +msgid "%s: undefined version: %s" +msgstr "%s: シンボルå %s ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒæœªå®šç¾©ã§ã™" + +#: elflink.c:5847 +msgid "%B: .preinit_array section is not allowed in DSO" +msgstr "" + +#: elflink.c:7598 +#, fuzzy, c-format +msgid "undefined %s reference in complex symbol: %s" +msgstr "%s: シンボルå %s ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒæœªå®šç¾©ã§ã™" + +#: elflink.c:7752 +#, c-format +msgid "unknown operator '%c' in complex symbol" +msgstr "" + +#: elflink.c:8091 elflink.c:8108 elflink.c:8145 elflink.c:8162 +msgid "%B: Unable to sort relocs - they are in more than one size" +msgstr "" + +#: elflink.c:8122 elflink.c:8176 +msgid "%B: Unable to sort relocs - they are of an unknown size" +msgstr "" + +#: elflink.c:8227 +msgid "Not enough memory to sort relocations" +msgstr "" + +#: elflink.c:8420 +msgid "%B: Too many sections: %d (>= %d)" +msgstr "" + +#: elflink.c:8663 +msgid "%B: %s symbol `%s' in %B is referenced by DSO" +msgstr "" + +#: elflink.c:8754 +#, fuzzy +msgid "%B: could not find output section %A for input section %A" +msgstr "%s: 出力セクション %s (入力セクション %s 用) を見ã¤ã‘られã¾ã›ã‚“" + +#: elflink.c:8874 +#, fuzzy +msgid "%B: %s symbol `%s' isn't defined" +msgstr "%s: クラス %d シンボル `%s' ã«è£œåŠ©ã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚Šã¾ã›ã‚“" + +#: elflink.c:9428 +msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol" +msgstr "" + +#: elflink.c:9494 +msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n" +msgstr "" + +#: elflink.c:10141 +msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections" +msgstr "" + +#: elflink.c:10146 +#, c-format +msgid "%A has both ordered and unordered sections" +msgstr "" + +#: elflink.c:10992 elflink.c:11036 +msgid "%B: could not find output section %s" +msgstr "%B: 出力セクション %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: elflink.c:10997 +#, c-format +msgid "warning: %s section has zero size" +msgstr "警告: %s セクションã®ã‚µã‚¤ã‚ºãŒ 0 ã§ã™" + +#: elflink.c:11102 +msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n" +msgstr "%P: 警告: 共有オブジェクト内㫠DT_TEXTREL を作æˆã—ã¦ã„ã¾ã™\n" + +#: elflink.c:11289 +msgid "%P%X: can not read symbols: %E\n" +msgstr "%P%X: シンボルを読ã¿è¾¼ã‚ã¾ã›ã‚“: %E\n" + +#: elflink.c:11638 +msgid "Removing unused section '%s' in file '%B'" +msgstr "ファイル '%2$B' 内ã®ä½¿ç”¨ã•ã‚Œãªã„セクション '%1$s' を削除ã—ã¦ã„ã¾ã™" + +#: elflink.c:11850 +msgid "Warning: gc-sections option ignored" +msgstr "警告: gc-sections オプションã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸ" + +#: elflink.c:12399 +msgid "%B: ignoring duplicate section `%A'" +msgstr "%B: é‡è¤‡ã—ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%A' を無視ã—ã¦ã„ã¾ã™" + +#: elflink.c:12406 elflink.c:12413 +msgid "%B: duplicate section `%A' has different size" +msgstr "%B: é‡è¤‡ã—ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%A' ãŒç•°ãªã‚‹ã‚µã‚¤ã‚ºã§ã™" + +#: elflink.c:12421 elflink.c:12426 +msgid "%B: warning: could not read contents of section `%A'" +msgstr "%B: 警告: セクション `%A' ã®ä¸­èº«ã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“" + +#: elflink.c:12430 +msgid "%B: warning: duplicate section `%A' has different contents" +msgstr "%B: 警告: é‡è¤‡ã—ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%A' ã®ä¸­èº«ãŒç•°ãªã‚Šã¾ã™" + +#: elflink.c:12531 linker.c:3138 +msgid "%F%P: already_linked_table: %E\n" +msgstr "%F%P: already_linked_table: %E\n" + +#: elfxx-mips.c:1220 +msgid "static procedure (no name)" +msgstr "é™çš„プロシージャ(åå‰ç„¡ã—)" + +#: elfxx-mips.c:5623 +msgid "%B: %A+0x%lx: Direct jumps between ISA modes are not allowed; consider recompiling with interlinking enabled." +msgstr "" + +#: elfxx-mips.c:6280 elfxx-mips.c:6503 +msgid "%B: Warning: bad `%s' option size %u smaller than its header" +msgstr "" + +#: elfxx-mips.c:7254 elfxx-mips.c:7379 +msgid "%B: Warning: cannot determine the target function for stub section `%s'" +msgstr "" + +#: elfxx-mips.c:7508 +msgid "%B: Malformed reloc detected for section %s" +msgstr "%B: セクション %s ã«å¯¾ã™ã‚‹ãŠã‹ã—ãªå†é…ç½®ãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸ" + +#: elfxx-mips.c:7548 +msgid "%B: GOT reloc at 0x%lx not expected in executables" +msgstr "" + +#: elfxx-mips.c:7670 +#, fuzzy +msgid "%B: CALL16 reloc at 0x%lx not against global symbol" +msgstr "%s: 0x%lx ã§ã® CALL16 å†é…ç½®ãŒå¤§åŸŸã‚·ãƒ³ãƒœãƒ«ã‚’対象ã¨ã—ã¦ã„ã¾ã›ã‚“" + +#: elfxx-mips.c:8365 +#, c-format +msgid "non-dynamic relocations refer to dynamic symbol %s" +msgstr "" + +#: elfxx-mips.c:9068 +msgid "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'" +msgstr "" + +#: elfxx-mips.c:9207 +msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)" +msgstr "" + +#: elfxx-mips.c:12027 +#, c-format +msgid "%s: illegal section name `%s'" +msgstr "%s: ä¸æ­£ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³å `%s' ã§ã™" + +#: elfxx-mips.c:12405 elfxx-mips.c:12431 +msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float" +msgstr "" + +#: elfxx-mips.c:12417 elfxx-mips.c:12473 +msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64" +msgstr "" + +#: elfxx-mips.c:12443 elfxx-mips.c:12479 +msgid "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64" +msgstr "" + +#: elfxx-mips.c:12521 +msgid "%B: endianness incompatible with that of the selected emulation" +msgstr "" + +#: elfxx-mips.c:12532 +msgid "%B: ABI is incompatible with that of the selected emulation" +msgstr "" + +#: elfxx-mips.c:12613 +#, fuzzy +msgid "%B: warning: linking abicalls files with non-abicalls files" +msgstr "%s: abicall ファイルã«éž abicall ファイルをリンクã—よã†ã¨ã—ã¾ã—ãŸ" + +#: elfxx-mips.c:12630 +msgid "%B: linking 32-bit code with 64-bit code" +msgstr "" + +#: elfxx-mips.c:12658 +#, fuzzy +msgid "%B: linking %s module with previous %s modules" +msgstr "%s: ABI ãŒä¸€è‡´ã—ã¾ã›ã‚“ -- %s モジュールを以å‰ã® %s モジュールã¨ãƒªãƒ³ã‚¯ã—よã†ã¨ã—ã¾ã—ãŸ" + +#: elfxx-mips.c:12681 +#, fuzzy +msgid "%B: ABI mismatch: linking %s module with previous %s modules" +msgstr "%s: ABI ãŒä¸€è‡´ã—ã¾ã›ã‚“ -- %s モジュールを以å‰ã® %s モジュールã¨ãƒªãƒ³ã‚¯ã—よã†ã¨ã—ã¾ã—ãŸ" + +#: elfxx-mips.c:12845 +#, c-format +msgid " [abi=O32]" +msgstr " [abi=O32]" + +#: elfxx-mips.c:12847 +#, c-format +msgid " [abi=O64]" +msgstr " [abi=O64]" + +#: elfxx-mips.c:12849 +#, c-format +msgid " [abi=EABI32]" +msgstr " [abi=EABI32]" + +#: elfxx-mips.c:12851 +#, c-format +msgid " [abi=EABI64]" +msgstr " [abi=EABI64]" + +#: elfxx-mips.c:12853 +#, c-format +msgid " [abi unknown]" +msgstr " [abi unknown]" + +#: elfxx-mips.c:12855 +#, c-format +msgid " [abi=N32]" +msgstr " [abi=N32]" + +#: elfxx-mips.c:12857 +#, c-format +msgid " [abi=64]" +msgstr " [abi=64]" + +#: elfxx-mips.c:12859 +#, c-format +msgid " [no abi set]" +msgstr " [abi ãŒã‚»ãƒƒãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“]" + +#: elfxx-mips.c:12880 +#, c-format +msgid " [unknown ISA]" +msgstr " [ä¸æ˜Žãª ISA]" + +#: elfxx-mips.c:12891 +#, c-format +msgid " [not 32bitmode]" +msgstr " [éž 32 ビットモード]" + +#: elfxx-sparc.c:595 +#, fuzzy, c-format +msgid "invalid relocation type %d" +msgstr "%s: å†é…置タイプ %d ã¯ä¸é©åˆ‡ã§ã™" + +#: i386linux.c:454 m68klinux.c:458 sparclinux.c:452 +#, c-format +msgid "Output file requires shared library `%s'\n" +msgstr "出力ファイルã¯å…±æœ‰ãƒ©ã‚¤ãƒ–ラリ `%s' ã‚’å¿…è¦ã¨ã—ã¦ã„ã¾ã™\n" + +#: i386linux.c:462 m68klinux.c:466 sparclinux.c:460 +#, c-format +msgid "Output file requires shared library `%s.so.%s'\n" +msgstr "出力ファイルã¯å…±æœ‰ãƒ©ã‚¤ãƒ–ラリ `%s.so.%s' ã‚’å¿…è¦ã¨ã—ã¦ã„ã¾ã™\n" + +#: i386linux.c:651 i386linux.c:701 m68klinux.c:658 m68klinux.c:706 +#: sparclinux.c:650 sparclinux.c:700 +#, c-format +msgid "Symbol %s not defined for fixups\n" +msgstr "シンボル %s 㯠fixup 用ã«å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“\n" + +#: i386linux.c:725 m68klinux.c:730 sparclinux.c:724 +msgid "Warning: fixup count mismatch\n" +msgstr "警告: fixup カウントãŒä¸€è‡´ã—ã¾ã›ã‚“\n" + +#: ieee.c:159 +#, c-format +msgid "%s: string too long (%d chars, max 65535)" +msgstr "%s: 文字列ãŒé•·ã™ãŽã¾ã™ (%d 文字, 最大 65535)" + +#: ieee.c:286 +#, c-format +msgid "%s: unrecognized symbol `%s' flags 0x%x" +msgstr "%s: シンボル `%s' フラグ 0x%x ã‚’èªè­˜ã§ãã¾ã›ã‚“" + +#: ieee.c:792 +#, fuzzy +msgid "%B: unimplemented ATI record %u for symbol %u" +msgstr "%s: ATI レコード %u (シンボル %u 用) ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: ieee.c:816 +#, fuzzy +msgid "%B: unexpected ATN type %d in external part" +msgstr "%s: external 部分ã«ã‚ã‚‹ ATN タイプ %d ã¨ã„ã†ã®ã¯ã‚ã‚Šå¾—ã¾ã›ã‚“" + +#: ieee.c:838 +#, fuzzy +msgid "%B: unexpected type after ATN" +msgstr "%s: ATN ã®å¾Œã‚ã«ã‚ã‚Šå¾—ãªã„タイプãŒã‚ã‚Šã¾ã™" + +#: ihex.c:230 +#, fuzzy +msgid "%B:%d: unexpected character `%s' in Intel Hex file" +msgstr "%s:%d: Intel Hex ファイルã¨ã—ã¦ã‚ã‚Šå¾—ãªã„文字 `%s' ãŒã‚ã‚Šã¾ã™\n" + +#: ihex.c:337 +#, fuzzy +msgid "%B:%u: bad checksum in Intel Hex file (expected %u, found %u)" +msgstr "%s:%d: Intel Hex ファイルã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ãŒä¸æ­£ã§ã™ (%u ã®ç­ˆãŒ %u ã§ã™)" + +#: ihex.c:392 +#, fuzzy +msgid "%B:%u: bad extended address record length in Intel Hex file" +msgstr "%s:%d: 拡張アドレスレコード長㌠Intel Hex ファイルã¨ã—ã¦ã¯ä¸æ­£ã§ã™" + +#: ihex.c:409 +#, fuzzy +msgid "%B:%u: bad extended start address length in Intel Hex file" +msgstr "%s:%d: 拡張開始アドレス長㌠Intel Hex ファイルã¨ã—ã¦ã¯ä¸æ­£ã§ã™" + +#: ihex.c:426 +#, fuzzy +msgid "%B:%u: bad extended linear address record length in Intel Hex file" +msgstr "%s:%d: 拡張リニアアドレスレコード長㌠Intel Hex ファイルã¨ã—ã¦ä¸æ­£ã§ã™" + +#: ihex.c:443 +#, fuzzy +msgid "%B:%u: bad extended linear start address length in Intel Hex file" +msgstr "%s:%d: 拡張リニア開始アドレス帳㌠Intel Hex ファイルã¨ã—ã¦ã¯ä¸æ­£ã§ã™" + +#: ihex.c:460 +#, fuzzy +msgid "%B:%u: unrecognized ihex type %u in Intel Hex file" +msgstr "%s:%d: Intel Hex ファイル㮠ihex タイプ %u ã‚’èªè­˜ã§ãã¾ã›ã‚“\n" + +#: ihex.c:579 +#, fuzzy +msgid "%B: internal error in ihex_read_section" +msgstr "%s: ihex_read_section 内ã§å†…部エラー" + +#: ihex.c:613 +#, fuzzy +msgid "%B: bad section length in ihex_read_section" +msgstr "%s: ihex_read_section 内ã§ä¸æ­£ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³é•·ãŒã‚ã‚Šã¾ã™" + +#: ihex.c:826 +#, fuzzy, c-format +msgid "%s: address 0x%s out of range for Intel Hex file" +msgstr "%s: アドレス 0x%s 㯠Intel Hex ファイルã®ç¯„囲を超ãˆã¦ã„ã¾ã™" + +#: libbfd.c:863 +#, fuzzy +msgid "%B: unable to get decompressed section %A" +msgstr "Dwarf エラー: %s セクションを伸張ã§ãã¾ã›ã‚“。" + +#: libbfd.c:1027 +#, fuzzy, c-format +msgid "Deprecated %s called at %s line %d in %s\n" +msgstr "BFD 内部エラー。%s ã® %d 行目 %s ã§ä¸­æ–­ã—ã¾ã—ãŸ\n" + +#: libbfd.c:1030 +#, c-format +msgid "Deprecated %s called\n" +msgstr "" + +#: linker.c:1911 +msgid "%B: indirect symbol `%s' to `%s' is a loop" +msgstr "" + +#: linker.c:2778 +#, fuzzy, c-format +msgid "Attempt to do relocatable link with %s input and %s output" +msgstr "入力 %s ã¨å‡ºåŠ› %s ã¨ã‚’å†é…ç½®å¯èƒ½ãƒªãƒ³ã‚¯ã—よã†ã¨ã—ã¾ã—ãŸ" + +#: linker.c:3105 +#, fuzzy +msgid "%B: warning: ignoring duplicate section `%A'\n" +msgstr "%s: 0x%lx: 警告: シンボルãŒäºˆæœŸã›ã¬ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã«ã‚ã‚Šã¾ã™" + +#: linker.c:3119 +#, fuzzy +msgid "%B: warning: duplicate section `%A' has different size\n" +msgstr "%s: 警告: 確ä¿ã•ã‚ŒãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' ãŒã‚»ã‚°ãƒ¡ãƒ³ãƒˆå†…ã«ã‚ã‚Šã¾ã›ã‚“" + +#: mach-o.c:3403 +#, fuzzy +msgid "Mach-O header:\n" +msgstr "" +"\n" +"ppcboot ヘッダ:\n" + +#: mach-o.c:3404 +#, c-format +msgid " magic : %08lx\n" +msgstr "" + +#: mach-o.c:3405 +#, c-format +msgid " cputype : %08lx (%s)\n" +msgstr "" + +#: mach-o.c:3407 +#, c-format +msgid " cpusubtype: %08lx\n" +msgstr "" + +#: mach-o.c:3408 +#, c-format +msgid " filetype : %08lx (%s)\n" +msgstr "" + +#: mach-o.c:3411 +#, c-format +msgid " ncmds : %08lx (%lu)\n" +msgstr "" + +#: mach-o.c:3412 +#, c-format +msgid " sizeofcmds: %08lx\n" +msgstr "" + +#: mach-o.c:3413 +#, c-format +msgid " flags : %08lx (" +msgstr "" + +#: mach-o.c:3415 vms-alpha.c:7652 +msgid ")\n" +msgstr "" + +#: mach-o.c:3416 +#, c-format +msgid " reserved : %08x\n" +msgstr "" + +#: mach-o.c:3426 +msgid "Segments and Sections:\n" +msgstr "" + +#: mach-o.c:3427 +msgid " #: Segment name Section name Address\n" +msgstr "" + +#: merge.c:832 +#, c-format +msgid "%s: access beyond end of merged section (%ld)" +msgstr "" + +#: mmo.c:456 +#, fuzzy, c-format +msgid "%s: No core to allocate section name %s\n" +msgstr "%s: ä¸æ­£ãªã‚»ã‚¯ã‚·ãƒ§ãƒ³å `%s' ã§ã™" + +#: mmo.c:531 +#, c-format +msgid "%s: No core to allocate a symbol %d bytes long\n" +msgstr "" + +#: mmo.c:1187 +#, c-format +msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" +msgstr "" + +#: mmo.c:1332 +#, c-format +msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n" +msgstr "" + +#: mmo.c:1565 +#, c-format +msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgstr "" + +#: mmo.c:1575 +#, c-format +msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" +msgstr "" + +#: mmo.c:1611 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" +msgstr "" + +#: mmo.c:1657 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" +msgstr "" + +#: mmo.c:1696 +#, c-format +msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" +msgstr "" + +#: mmo.c:1705 +#, c-format +msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" +msgstr "" + +#: mmo.c:1728 +#, 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:1751 +#, c-format +msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgstr "" + +#: mmo.c:1771 +#, c-format +msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" +msgstr "" + +#: mmo.c:1784 +#, c-format +msgid "%s: invalid mmo file: file name for number %d was not specified before use\n" +msgstr "" + +#: mmo.c:1890 +#, c-format +msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" +msgstr "" + +#: mmo.c:1926 +#, c-format +msgid "%s: invalid mmo file: lop_end not last item in file\n" +msgstr "" + +#: mmo.c:1939 +#, 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:2649 +#, c-format +msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgstr "" + +#: mmo.c:2889 +#, c-format +msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n" +msgstr "" + +#: mmo.c:2981 +#, 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:3026 +#, fuzzy, c-format +msgid "%s: internal error, symbol table changed size from %d to %d words\n" +msgstr "警告: シンボル `%s' ã®åž‹ã¯ %d ã‹ã‚‰ %d ã«å¤‰æ›´ã•ã‚Œã¾ã—㟠(%s 内)" + +#: mmo.c:3078 +#, fuzzy, c-format +msgid "%s: internal error, internal register section %s had contents\n" +msgstr "%s: ihex_read_section 内ã§å†…部エラー" + +#: mmo.c:3129 +#, c-format +msgid "%s: no initialized registers; section length 0\n" +msgstr "" + +#: mmo.c:3135 +#, c-format +msgid "%s: too many initialized registers; section length %ld\n" +msgstr "" + +#: mmo.c:3140 +#, c-format +msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n" +msgstr "" + +#: oasys.c:882 +#, c-format +msgid "%s: can not represent section `%s' in oasys" +msgstr "%s: oasys ã§ã¯ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' を表ç¾ã§ãã¾ã›ã‚“" + +#: osf-core.c:140 +#, c-format +msgid "Unhandled OSF/1 core file section type %d\n" +msgstr "OSF/1 コアファイルセクションタイプ %d ã¯å–り扱ã‚ã‚Œã¾ã›ã‚“ã§ã—ãŸ\n" + +#: pe-mips.c:607 +#, fuzzy +msgid "%B: `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:719 +#, fuzzy +msgid "%B: unimplemented %s\n" +msgstr "%s: 未実装㮠%s ã§ã™\n" + +#: pe-mips.c:745 +#, fuzzy +msgid "%B: jump too far away\n" +msgstr "%s: ジャンプ先ãŒé ã™ãŽã¾ã™\n" + +#: pe-mips.c:771 +#, fuzzy +msgid "%B: bad pair/reflo after refhi\n" +msgstr "%s: ä¸æ­£ãª pair/reflo ㌠refhi ã®å¾Œã‚ã«ã‚ã‚Šã¾ã™\n" + +#: pei-x86_64.c:444 +#, fuzzy, c-format +msgid "warning: .pdata section size (%ld) is not a multiple of %d\n" +msgstr "警告ã€.pdata セクションサイズ (%ld) ㌠%d ã®å€æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n" + +#: pei-x86_64.c:448 peigen.c:1618 peigen.c:1801 pepigen.c:1618 pepigen.c:1801 +#: pex64igen.c:1618 pex64igen.c:1801 +#, c-format +msgid "" +"\n" +"The Function Table (interpreted .pdata section contents)\n" +msgstr "" +"\n" +"関数テーブル (.pdata セクションã®å†…容を解釈)\n" + +#: pei-x86_64.c:450 +#, fuzzy, c-format +msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" +msgstr " vma:\t\t\t開始アドレス 終了アドレス Unwind 情報\n" + +#. XXX code yet to be written. +#: peicode.h:751 +#, fuzzy +msgid "%B: Unhandled import type; %x" +msgstr "%s: import タイプ %x ã¯å–り扱ã‚ã‚Œã¾ã›ã‚“ã§ã—ãŸ" + +#: peicode.h:756 +#, fuzzy +msgid "%B: Unrecognised import type; %x" +msgstr "%s: import タイプをèªè­˜ã§ãã¾ã›ã‚“ -- %x" + +#: peicode.h:770 +#, fuzzy +msgid "%B: Unrecognised import name type; %x" +msgstr "%s: import åå‰ã‚¿ã‚¤ãƒ—ã‚’èªè­˜ã§ãã¾ã›ã‚“ -- %x" + +#: peicode.h:1162 +#, fuzzy +msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive" +msgstr "%s: Import Library Format 書庫内ã®ãƒžã‚·ãƒ³ã‚¿ã‚¤ãƒ— (0x%x) ã‚’èªè­˜ã§ãã¾ã›ã‚“" + +#: peicode.h:1174 +#, fuzzy +msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive" +msgstr "%s: Import Library Format 書庫内ã®ãƒžã‚·ãƒ³ã‚¿ã‚¤ãƒ— (0x%x) ã¯èªè­˜ã§ãã¾ã—ãŸãŒå–り扱ã‚ã‚Œã¾ã›ã‚“ã§ã—ãŸ" + +#: peicode.h:1192 +#, fuzzy +msgid "%B: size field is zero in Import Library Format header" +msgstr "%s: Import Library Format ヘッダ内ã®ã‚µã‚¤ã‚ºãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒã‚¼ãƒ­ã§ã™" + +#: peicode.h:1223 +#, fuzzy +msgid "%B: string not null terminated in ILF object file." +msgstr "%s: ILF オブジェクトファイル内ã®æ–‡å­—列㌠null 終端ã•ã‚Œã¦ã„ã¾ã›ã‚“。" + +#: ppcboot.c:414 +#, c-format +msgid "" +"\n" +"ppcboot header:\n" +msgstr "" +"\n" +"ppcboot ヘッダ:\n" + +#: ppcboot.c:415 +#, c-format +msgid "Entry offset = 0x%.8lx (%ld)\n" +msgstr "エントリオフセット = 0x%.8lx (%ld)\n" + +#: ppcboot.c:417 +#, 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:460 +#, c-format +msgid "Partition[%d] length = 0x%.8lx (%ld)\n" +msgstr "領域[%d] é•·ã• = 0x%.8lx (%ld)\n" + +#: som.c:5471 +#, c-format +msgid "" +"\n" +"Exec Auxiliary Header\n" +msgstr "" + +#: som.c:5776 +msgid "som_sizeof_headers unimplemented" +msgstr "som_sizeof_headers ã¯æœªå®Ÿè£…ã§ã™" + +#: srec.c:261 +#, fuzzy +msgid "%B:%d: Unexpected character `%s' in S-record file\n" +msgstr "%s:%d: `%s' 㯠S-record ファイル内ã«ã¯ã‚ã‚Šå¾—ãªã„文字ã§ã™\n" + +#: srec.c:567 srec.c:600 +#, fuzzy +msgid "%B:%d: Bad checksum in S-record file\n" +msgstr "%s:%d: `%s' 㯠S-record ファイル内ã«ã¯ã‚ã‚Šå¾—ãªã„文字ã§ã™\n" + +#: stabs.c:279 +msgid "%B(%A+0x%lx): Stabs entry has invalid string index." +msgstr "" + +#: syms.c:1079 +msgid "Unsupported .stab relocation" +msgstr ".stab å†é…ç½®ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:1287 +#, fuzzy, c-format +msgid "Unknown EGSD subtype %d" +msgstr "ä¸æ˜Žãª gsd/egsd サブタイプ %d ã§ã™" + +#: vms-alpha.c:1318 +#, c-format +msgid "Stack overflow (%d) in _bfd_vms_push" +msgstr "_bfd_vms_push ã§ã‚¹ã‚¿ãƒƒã‚¯ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼(%d)ã—ã¾ã—ãŸ" + +#: vms-alpha.c:1331 +msgid "Stack underflow in _bfd_vms_pop" +msgstr "_bfd_vms_pop ã§ã‚¹ã‚¿ãƒƒã‚¯ã‚¢ãƒ³ãƒ€ãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ" + +#. These names have not yet been added to this switch statement. +#: vms-alpha.c:1568 +#, c-format +msgid "unknown ETIR command %d" +msgstr "" + +#: vms-alpha.c:1755 +#, fuzzy, c-format +msgid "bad section index in %s" +msgstr "ETIR_S_C_STA_PQ ã«ã‚るセクションインデックスãŒä¸æ­£ã§ã™" + +#: vms-alpha.c:1768 +#, fuzzy, c-format +msgid "unsupported STA cmd %s" +msgstr "STA cmd %d ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" + +#. Insert field. +#. Unsigned shift. +#. Rotate. +#. Redefine symbol to current location. +#. Define a literal. +#: vms-alpha.c:1944 vms-alpha.c:1975 vms-alpha.c:2222 +#, fuzzy, c-format +msgid "%s: not supported" +msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:1950 +#, fuzzy, c-format +msgid "%s: not implemented" +msgstr "%s: 未実装㮠%s ã§ã™\n" + +#: vms-alpha.c:2206 +#, c-format +msgid "invalid use of %s with contexts" +msgstr "" + +#: vms-alpha.c:2240 +#, fuzzy, c-format +msgid "reserved cmd %d" +msgstr "STA cmd %d ã¯äºˆç´„済ã§ã™" + +#: vms-alpha.c:2325 +msgid "Object module NOT error-free !\n" +msgstr "オブジェクトモジュールãŒã‚¨ãƒ©ãƒ¼ãƒ•ãƒªãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“!\n" + +#: vms-alpha.c:2754 +#, c-format +msgid "Symbol %s replaced by %s\n" +msgstr "シンボル %s 㯠%s ã§ç½®ãæ›ãˆã‚‰ã‚Œã¾ã—ãŸ\n" + +#: vms-alpha.c:3757 +#, c-format +msgid "SEC_RELOC with no relocs in section %s" +msgstr "SEC_RELOC ãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³ %s ã«ã‚ã‚Šã¾ã™ãŒå†é…ç½®ãŒã‚ã‚Šã¾ã›ã‚“" + +#: vms-alpha.c:3810 vms-alpha.c:4041 +#, fuzzy, c-format +msgid "Size error in section %s" +msgstr "SEC_RELOC ãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³ %s ã«ã‚ã‚Šã¾ã™ãŒå†é…ç½®ãŒã‚ã‚Šã¾ã›ã‚“" + +#: vms-alpha.c:3980 +msgid "Spurious ALPHA_R_BSR reloc" +msgstr "" + +#: vms-alpha.c:4028 +#, c-format +msgid "Unhandled relocation %s" +msgstr "å†é…ç½® %s ãŒå–り扱ã‚ã‚Œã¾ã›ã‚“ã§ã—ãŸ" + +#: vms-alpha.c:4318 +#, c-format +msgid "unknown source command %d" +msgstr "" + +#: vms-alpha.c:4379 +#, fuzzy +msgid "DST__K_SET_LINUM_INCR not implemented" +msgstr "ETIR_S_C_STO_HINT_PS: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:4385 +#, fuzzy +msgid "DST__K_SET_LINUM_INCR_W not implemented" +msgstr "ETIR_S_C_STO_HINT_PS: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:4391 +#, fuzzy +msgid "DST__K_RESET_LINUM_INCR not implemented" +msgstr "ETIR_S_C_STO_HINT_PS: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:4397 +#, fuzzy +msgid "DST__K_BEG_STMT_MODE not implemented" +msgstr "ETIR_S_C_STO_HINT_PS: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:4403 +#, fuzzy +msgid "DST__K_END_STMT_MODE not implemented" +msgstr "ETIR_S_C_STO_HINT_PS: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:4430 +#, fuzzy +msgid "DST__K_SET_PC not implemented" +msgstr "ETIR_S_C_STO_HINT_PS: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:4436 +#, fuzzy +msgid "DST__K_SET_PC_W not implemented" +msgstr "ETIR_S_C_STO_HINT_PS: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:4442 +#, fuzzy +msgid "DST__K_SET_PC_L not implemented" +msgstr "ETIR_S_C_STO_HINT_GBL: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:4448 +#, fuzzy +msgid "DST__K_SET_STMTNUM not implemented" +msgstr "ETIR_S_C_STO_HINT_PS: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#: vms-alpha.c:4491 +#, c-format +msgid "unknown line command %d" +msgstr "" + +#: vms-alpha.c:4938 vms-alpha.c:4955 vms-alpha.c:4969 vms-alpha.c:4984 +#: vms-alpha.c:4996 vms-alpha.c:5007 vms-alpha.c:5019 +#, fuzzy, c-format +msgid "Unknown reloc %s + %s" +msgstr "å†é…ç½® %s を無視ã—ã¾ã™\n" + +#: vms-alpha.c:5074 +#, fuzzy, c-format +msgid "Unknown reloc %s" +msgstr "å†é…ç½® %s を無視ã—ã¾ã™\n" + +#: vms-alpha.c:5087 +#, fuzzy +msgid "Invalid section index in ETIR" +msgstr "ETIR_S_C_STA_PQ ã«ã‚るセクションインデックスãŒä¸æ­£ã§ã™" + +#: vms-alpha.c:5134 +#, c-format +msgid "Unknown symbol in command %s" +msgstr "" + +#: vms-alpha.c:5649 +#, c-format +msgid " EMH %u (len=%u): " +msgstr "" + +#: vms-alpha.c:5658 +#, fuzzy, c-format +msgid "Module header\n" +msgstr "" +"\n" +"ppcboot ヘッダ:\n" + +#: vms-alpha.c:5659 +#, c-format +msgid " structure level: %u\n" +msgstr "" + +#: vms-alpha.c:5660 +#, c-format +msgid " max record size: %u\n" +msgstr "" + +#: vms-alpha.c:5663 +#, c-format +msgid " module name : %.*s\n" +msgstr "" + +#: vms-alpha.c:5665 +#, fuzzy, c-format +msgid " module version : %.*s\n" +msgstr "%s: シンボルå %s ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒæœªå®šç¾©ã§ã™" + +#: vms-alpha.c:5667 +#, c-format +msgid " compile date : %.17s\n" +msgstr "" + +#: vms-alpha.c:5672 +#, c-format +msgid "Language Processor Name\n" +msgstr "" + +#: vms-alpha.c:5673 +#, c-format +msgid " language name: %.*s\n" +msgstr "" + +#: vms-alpha.c:5680 +#, c-format +msgid "Source Files Header\n" +msgstr "" + +#: vms-alpha.c:5681 +#, c-format +msgid " file: %.*s\n" +msgstr "" + +#: vms-alpha.c:5688 +#, c-format +msgid "Title Text Header\n" +msgstr "" + +#: vms-alpha.c:5689 +#, c-format +msgid " title: %.*s\n" +msgstr "" + +#: vms-alpha.c:5696 +#, c-format +msgid "Copyright Header\n" +msgstr "" + +#: vms-alpha.c:5697 +#, c-format +msgid " copyright: %.*s\n" +msgstr "" + +#: vms-alpha.c:5703 +#, fuzzy, c-format +msgid "unhandled emh subtype %u\n" +msgstr "%s: import タイプ %x ã¯å–り扱ã‚ã‚Œã¾ã›ã‚“ã§ã—ãŸ" + +#: vms-alpha.c:5713 +#, c-format +msgid " EEOM (len=%u):\n" +msgstr "" + +#: vms-alpha.c:5714 +#, c-format +msgid " number of cond linkage pairs: %u\n" +msgstr "" + +#: vms-alpha.c:5716 +#, c-format +msgid " completion code: %u\n" +msgstr "" + +#: vms-alpha.c:5720 +#, c-format +msgid " transfer addr flags: 0x%02x\n" +msgstr "" + +#: vms-alpha.c:5721 +#, c-format +msgid " transfer addr psect: %u\n" +msgstr "" + +#: vms-alpha.c:5723 +#, c-format +msgid " transfer address : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5732 +msgid " WEAK" +msgstr "" + +#: vms-alpha.c:5734 +msgid " DEF" +msgstr "" + +#: vms-alpha.c:5736 +msgid " UNI" +msgstr "" + +#: vms-alpha.c:5738 vms-alpha.c:5759 +msgid " REL" +msgstr "" + +#: vms-alpha.c:5740 +msgid " COMM" +msgstr "" + +#: vms-alpha.c:5742 +msgid " VECEP" +msgstr "" + +#: vms-alpha.c:5744 +msgid " NORM" +msgstr "" + +#: vms-alpha.c:5746 +msgid " QVAL" +msgstr "" + +#: vms-alpha.c:5753 +msgid " PIC" +msgstr "" + +#: vms-alpha.c:5755 +msgid " LIB" +msgstr "" + +#: vms-alpha.c:5757 +msgid " OVR" +msgstr "" + +#: vms-alpha.c:5761 +msgid " GBL" +msgstr "" + +#: vms-alpha.c:5763 +msgid " SHR" +msgstr "" + +#: vms-alpha.c:5765 +msgid " EXE" +msgstr "" + +#: vms-alpha.c:5767 +msgid " RD" +msgstr "" + +#: vms-alpha.c:5769 +msgid " WRT" +msgstr "" + +#: vms-alpha.c:5771 +msgid " VEC" +msgstr "" + +#: vms-alpha.c:5773 +msgid " NOMOD" +msgstr "" + +#: vms-alpha.c:5775 +msgid " COM" +msgstr "" + +#: vms-alpha.c:5777 +msgid " 64B" +msgstr "" + +#: vms-alpha.c:5786 +#, c-format +msgid " EGSD (len=%u):\n" +msgstr "" + +#: vms-alpha.c:5798 +#, c-format +msgid " EGSD entry %2u (type: %u, len: %u): " +msgstr "" + +#: vms-alpha.c:5810 +#, fuzzy, c-format +msgid "PSC - Program section definition\n" +msgstr "" +"\n" +"ãƒãƒ¼ã‚¸ãƒ§ãƒ³å®šç¾©:\n" + +#: vms-alpha.c:5811 vms-alpha.c:5828 +#, c-format +msgid " alignment : 2**%u\n" +msgstr "" + +#: vms-alpha.c:5812 vms-alpha.c:5829 +#, c-format +msgid " flags : 0x%04x" +msgstr "" + +#: vms-alpha.c:5816 +#, c-format +msgid " alloc (len): %u (0x%08x)\n" +msgstr "" + +#: vms-alpha.c:5817 vms-alpha.c:5874 vms-alpha.c:5923 +#, fuzzy, c-format +msgid " name : %.*s\n" +msgstr "領域å = \"%s\"\n" + +#: vms-alpha.c:5827 +#, c-format +msgid "SPSC - Shared Image Program section def\n" +msgstr "" + +#: vms-alpha.c:5833 +#, c-format +msgid " alloc (len) : %u (0x%08x)\n" +msgstr "" + +#: vms-alpha.c:5834 +#, c-format +msgid " image offset : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5836 +#, c-format +msgid " symvec offset : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5838 +#, fuzzy, c-format +msgid " name : %.*s\n" +msgstr "フラグフィールド = 0x%.2x\n" + +#: vms-alpha.c:5851 +#, c-format +msgid "SYM - Global symbol definition\n" +msgstr "" + +#: vms-alpha.c:5852 vms-alpha.c:5912 vms-alpha.c:5933 vms-alpha.c:5952 +#, c-format +msgid " flags: 0x%04x" +msgstr "" + +#: vms-alpha.c:5855 +#, c-format +msgid " psect offset: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5859 +#, c-format +msgid " code address: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5861 +#, c-format +msgid " psect index for entry point : %u\n" +msgstr "" + +#: vms-alpha.c:5864 vms-alpha.c:5940 vms-alpha.c:5959 +#, fuzzy, c-format +msgid " psect index : %u\n" +msgstr "ETIR_S_C_STA_PQ ã«ã‚るセクションインデックスãŒä¸æ­£ã§ã™" + +#: vms-alpha.c:5866 vms-alpha.c:5942 vms-alpha.c:5961 +#, fuzzy, c-format +msgid " name : %.*s\n" +msgstr "領域å = \"%s\"\n" + +#: vms-alpha.c:5873 +#, c-format +msgid "SYM - Global symbol reference\n" +msgstr "" + +#: vms-alpha.c:5885 +#, c-format +msgid "IDC - Ident Consistency check\n" +msgstr "" + +#: vms-alpha.c:5886 +#, fuzzy, c-format +msgid " flags : 0x%08x" +msgstr "フラグフィールド = 0x%.2x\n" + +#: vms-alpha.c:5890 +#, c-format +msgid " id match : %x\n" +msgstr "" + +#: vms-alpha.c:5892 +#, c-format +msgid " error severity: %x\n" +msgstr "" + +#: vms-alpha.c:5895 +#, c-format +msgid " entity name : %.*s\n" +msgstr "" + +#: vms-alpha.c:5897 +#, c-format +msgid " object name : %.*s\n" +msgstr "" + +#: vms-alpha.c:5900 +#, c-format +msgid " binary ident : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5903 +#, c-format +msgid " ascii ident : %.*s\n" +msgstr "" + +#: vms-alpha.c:5911 +#, c-format +msgid "SYMG - Universal symbol definition\n" +msgstr "" + +#: vms-alpha.c:5915 +#, c-format +msgid " symbol vector offset: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5917 +#, fuzzy, c-format +msgid " entry point: 0x%08x\n" +msgstr " [エントリãƒã‚¤ãƒ³ãƒˆã‚’æŒã£ã¦ã„ã¾ã™]" + +#: vms-alpha.c:5919 +#, c-format +msgid " proc descr : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5921 +#, fuzzy, c-format +msgid " psect index: %u\n" +msgstr "ETIR_S_C_STA_PQ ã«ã‚るセクションインデックスãŒä¸æ­£ã§ã™" + +#: vms-alpha.c:5932 +#, fuzzy, c-format +msgid "SYMV - Vectored symbol definition\n" +msgstr "" +"\n" +"ãƒãƒ¼ã‚¸ãƒ§ãƒ³å®šç¾©:\n" + +#: vms-alpha.c:5936 +#, c-format +msgid " vector : 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5938 vms-alpha.c:5957 +#, c-format +msgid " psect offset: %u\n" +msgstr "" + +#: vms-alpha.c:5951 +#, c-format +msgid "SYMM - Global symbol definition with version\n" +msgstr "" + +#: vms-alpha.c:5955 +#, c-format +msgid " version mask: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:5966 +#, c-format +msgid "unhandled egsd entry type %u\n" +msgstr "" + +#: vms-alpha.c:6000 +#, c-format +msgid " linkage index: %u, replacement insn: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6003 +#, c-format +msgid " psect idx 1: %u, offset 1: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6007 +#, c-format +msgid " psect idx 2: %u, offset 2: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6012 +#, c-format +msgid " psect idx 3: %u, offset 3: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6017 +#, c-format +msgid " global name: %.*s\n" +msgstr "" + +#: vms-alpha.c:6027 +#, c-format +msgid " %s (len=%u+%u):\n" +msgstr "" + +#: vms-alpha.c:6042 +#, c-format +msgid " (type: %3u, size: 4+%3u): " +msgstr "" + +#: vms-alpha.c:6046 +#, c-format +msgid "STA_GBL (stack global) %.*s\n" +msgstr "" + +#: vms-alpha.c:6050 +#, c-format +msgid "STA_LW (stack longword) 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6054 +#, c-format +msgid "STA_QW (stack quadword) 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6059 +#, c-format +msgid "STA_PQ (stack psect base + offset)\n" +msgstr "" + +#: vms-alpha.c:6060 +#, c-format +msgid " psect: %u, offset: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6066 +#, c-format +msgid "STA_LI (stack literal)\n" +msgstr "" + +#: vms-alpha.c:6069 +#, c-format +msgid "STA_MOD (stack module)\n" +msgstr "" + +#: vms-alpha.c:6072 +#, c-format +msgid "STA_CKARG (compare procedure argument)\n" +msgstr "" + +#: vms-alpha.c:6076 +#, c-format +msgid "STO_B (store byte)\n" +msgstr "" + +#: vms-alpha.c:6079 +#, c-format +msgid "STO_W (store word)\n" +msgstr "" + +#: vms-alpha.c:6082 +#, c-format +msgid "STO_LW (store longword)\n" +msgstr "" + +#: vms-alpha.c:6085 +#, c-format +msgid "STO_QW (store quadword)\n" +msgstr "" + +#: vms-alpha.c:6091 +#, c-format +msgid "STO_IMMR (store immediate repeat) %u bytes\n" +msgstr "" + +#: vms-alpha.c:6098 +#, c-format +msgid "STO_GBL (store global) %.*s\n" +msgstr "" + +#: vms-alpha.c:6102 +#, c-format +msgid "STO_CA (store code address) %.*s\n" +msgstr "" + +#: vms-alpha.c:6106 +#, c-format +msgid "STO_RB (store relative branch)\n" +msgstr "" + +#: vms-alpha.c:6109 +#, c-format +msgid "STO_AB (store absolute branch)\n" +msgstr "" + +#: vms-alpha.c:6112 +#, c-format +msgid "STO_OFF (store offset to psect)\n" +msgstr "" + +#: vms-alpha.c:6118 +#, c-format +msgid "STO_IMM (store immediate) %u bytes\n" +msgstr "" + +#: vms-alpha.c:6125 +#, c-format +msgid "STO_GBL_LW (store global longword) %.*s\n" +msgstr "" + +#: vms-alpha.c:6129 +#, c-format +msgid "STO_OFF (store LP with procedure signature)\n" +msgstr "" + +#: vms-alpha.c:6132 +#, c-format +msgid "STO_BR_GBL (store branch global) *todo*\n" +msgstr "" + +#: vms-alpha.c:6135 +#, c-format +msgid "STO_BR_PS (store branch psect + offset) *todo*\n" +msgstr "" + +#: vms-alpha.c:6139 +#, c-format +msgid "OPR_NOP (no-operation)\n" +msgstr "" + +#: vms-alpha.c:6142 +#, c-format +msgid "OPR_ADD (add)\n" +msgstr "" + +#: vms-alpha.c:6145 +#, c-format +msgid "OPR_SUB (substract)\n" +msgstr "" + +#: vms-alpha.c:6148 +#, c-format +msgid "OPR_MUL (multiply)\n" +msgstr "" + +#: vms-alpha.c:6151 +#, c-format +msgid "OPR_DIV (divide)\n" +msgstr "" + +#: vms-alpha.c:6154 +#, c-format +msgid "OPR_AND (logical and)\n" +msgstr "" + +#: vms-alpha.c:6157 +#, c-format +msgid "OPR_IOR (logical inclusive or)\n" +msgstr "" + +#: vms-alpha.c:6160 +#, c-format +msgid "OPR_EOR (logical exclusive or)\n" +msgstr "" + +#: vms-alpha.c:6163 +#, c-format +msgid "OPR_NEG (negate)\n" +msgstr "" + +#: vms-alpha.c:6166 +#, c-format +msgid "OPR_COM (complement)\n" +msgstr "" + +#: vms-alpha.c:6169 +#, c-format +msgid "OPR_INSV (insert field)\n" +msgstr "" + +#: vms-alpha.c:6172 +#, c-format +msgid "OPR_ASH (arithmetic shift)\n" +msgstr "" + +#: vms-alpha.c:6175 +#, c-format +msgid "OPR_USH (unsigned shift)\n" +msgstr "" + +#: vms-alpha.c:6178 +#, c-format +msgid "OPR_ROT (rotate)\n" +msgstr "" + +#: vms-alpha.c:6181 +#, c-format +msgid "OPR_SEL (select)\n" +msgstr "" + +#: vms-alpha.c:6184 +#, c-format +msgid "OPR_REDEF (redefine symbol to curr location)\n" +msgstr "" + +#: vms-alpha.c:6187 +#, c-format +msgid "OPR_REDEF (define a literal)\n" +msgstr "" + +#: vms-alpha.c:6191 +#, c-format +msgid "STC_LP (store cond linkage pair)\n" +msgstr "" + +#: vms-alpha.c:6195 +#, c-format +msgid "STC_LP_PSB (store cond linkage pair + signature)\n" +msgstr "" + +#: vms-alpha.c:6196 +#, c-format +msgid " linkage index: %u, procedure: %.*s\n" +msgstr "" + +#: vms-alpha.c:6199 +#, c-format +msgid " signature: %.*s\n" +msgstr "" + +#: vms-alpha.c:6202 +#, c-format +msgid "STC_GBL (store cond global)\n" +msgstr "" + +#: vms-alpha.c:6203 +#, c-format +msgid " linkage index: %u, global: %.*s\n" +msgstr "" + +#: vms-alpha.c:6207 +#, c-format +msgid "STC_GCA (store cond code address)\n" +msgstr "" + +#: vms-alpha.c:6208 +#, c-format +msgid " linkage index: %u, procedure name: %.*s\n" +msgstr "" + +#: vms-alpha.c:6212 +#, c-format +msgid "STC_PS (store cond psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6214 +#, c-format +msgid " linkage index: %u, psect: %u, offset: 0x%08x %08x\n" +msgstr "" + +#: vms-alpha.c:6221 +#, c-format +msgid "STC_NOP_GBL (store cond NOP at global addr)\n" +msgstr "" + +#: vms-alpha.c:6225 +#, c-format +msgid "STC_NOP_PS (store cond NOP at psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6229 +#, c-format +msgid "STC_BSR_GBL (store cond BSR at global addr)\n" +msgstr "" + +#: vms-alpha.c:6233 +#, c-format +msgid "STC_BSR_PS (store cond BSR at psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6237 +#, c-format +msgid "STC_LDA_GBL (store cond LDA at global addr)\n" +msgstr "" + +#: vms-alpha.c:6241 +#, c-format +msgid "STC_LDA_PS (store cond LDA at psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6245 +#, c-format +msgid "STC_BOH_GBL (store cond BOH at global addr)\n" +msgstr "" + +#: vms-alpha.c:6249 +#, c-format +msgid "STC_BOH_PS (store cond BOH at psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6254 +#, c-format +msgid "STC_NBH_GBL (store cond or hint at global addr)\n" +msgstr "" + +#: vms-alpha.c:6258 +#, c-format +msgid "STC_NBH_PS (store cond or hint at psect + offset)\n" +msgstr "" + +#: vms-alpha.c:6262 +#, c-format +msgid "CTL_SETRB (set relocation base)\n" +msgstr "" + +#: vms-alpha.c:6268 +#, c-format +msgid "CTL_AUGRB (augment relocation base) %u\n" +msgstr "" + +#: vms-alpha.c:6272 +#, c-format +msgid "CTL_DFLOC (define location)\n" +msgstr "" + +#: vms-alpha.c:6275 +#, c-format +msgid "CTL_STLOC (set location)\n" +msgstr "" + +#: vms-alpha.c:6278 +#, c-format +msgid "CTL_STKDL (stack defined location)\n" +msgstr "" + +#: vms-alpha.c:6281 vms-alpha.c:6695 +#, c-format +msgid "*unhandled*\n" +msgstr "" + +#: vms-alpha.c:6311 vms-alpha.c:6350 +#, c-format +msgid "cannot read GST record length\n" +msgstr "" + +#. Ill-formed. +#: vms-alpha.c:6332 +#, c-format +msgid "cannot find EMH in first GST record\n" +msgstr "" + +#: vms-alpha.c:6358 +#, c-format +msgid "cannot read GST record header\n" +msgstr "" + +#: vms-alpha.c:6371 +#, c-format +msgid " corrupted GST\n" +msgstr "" + +#: vms-alpha.c:6379 +#, c-format +msgid "cannot read GST record\n" +msgstr "" + +#: vms-alpha.c:6408 +#, fuzzy, c-format +msgid " unhandled EOBJ record type %u\n" +msgstr "%s: import タイプ %x ã¯å–り扱ã‚ã‚Œã¾ã›ã‚“ã§ã—ãŸ" + +#: vms-alpha.c:6431 +#, c-format +msgid " bitcount: %u, base addr: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6444 +#, c-format +msgid " bitmap: 0x%08x (count: %u):\n" +msgstr "" + +#: vms-alpha.c:6451 +#, c-format +msgid " %08x" +msgstr "" + +#: vms-alpha.c:6476 +#, c-format +msgid " image %u (%u entries)\n" +msgstr "" + +#: vms-alpha.c:6481 +#, c-format +msgid " offset: 0x%08x, val: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6502 +#, c-format +msgid " image %u (%u entries), offsets:\n" +msgstr "" + +#: vms-alpha.c:6509 +#, c-format +msgid " 0x%08x" +msgstr "" + +#. 64 bits. +#: vms-alpha.c:6631 +#, c-format +msgid "64 bits *unhandled*\n" +msgstr "" + +#: vms-alpha.c:6635 +#, c-format +msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6646 +#, c-format +msgid "non-contiguous array of %s\n" +msgstr "" + +#: vms-alpha.c:6650 +#, c-format +msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n" +msgstr "" + +#: vms-alpha.c:6654 +#, c-format +msgid "arsize: %u, a0: 0x%08x\n" +msgstr "" + +#: vms-alpha.c:6658 +#, c-format +msgid "Strides:\n" +msgstr "" + +#: vms-alpha.c:6663 +#, c-format +msgid "[%u]: %u\n" +msgstr "" + +#: vms-alpha.c:6668 +#, c-format +msgid "Bounds:\n" +msgstr "" + +#: vms-alpha.c:6673 +#, c-format +msgid "[%u]: Lower: %u, upper: %u\n" +msgstr "" + +#: vms-alpha.c:6685 +#, c-format +msgid "unaligned bit-string of %s\n" +msgstr "" + +#: vms-alpha.c:6689 +#, c-format +msgid "base: %u, pos: %u\n" +msgstr "" + +#: vms-alpha.c:6709 +#, c-format +msgid "vflags: 0x%02x, value: 0x%08x " +msgstr "" + +#: vms-alpha.c:6715 +#, fuzzy, c-format +msgid "(no value)\n" +msgstr "ä¸æ­£ãªå€¤ã§ã™" + +#: vms-alpha.c:6718 +#, c-format +msgid "(not active)\n" +msgstr "" + +#: vms-alpha.c:6721 +#, c-format +msgid "(not allocated)\n" +msgstr "" + +#: vms-alpha.c:6724 +#, c-format +msgid "(descriptor)\n" +msgstr "" + +#: vms-alpha.c:6728 +#, c-format +msgid "(trailing value)\n" +msgstr "" + +#: vms-alpha.c:6731 +#, c-format +msgid "(value spec follows)\n" +msgstr "" + +#: vms-alpha.c:6734 +#, c-format +msgid "(at bit offset %u)\n" +msgstr "" + +#: vms-alpha.c:6737 +#, c-format +msgid "(reg: %u, disp: %u, indir: %u, kind: " +msgstr "" + +#: vms-alpha.c:6744 +msgid "literal" +msgstr "" + +#: vms-alpha.c:6747 +#, fuzzy +msgid "address" +msgstr "テーブルアドレス\n" + +#: vms-alpha.c:6750 +#, fuzzy +msgid "desc" +msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™" + +#: vms-alpha.c:6753 +msgid "reg" +msgstr "" + +#: vms-alpha.c:6828 +#, c-format +msgid "Debug symbol table:\n" +msgstr "デãƒãƒƒã‚°ã‚·ãƒ³ãƒœãƒ«è¡¨:\n" + +#: vms-alpha.c:6839 +#, c-format +msgid "cannot read DST header\n" +msgstr "" + +#: vms-alpha.c:6844 +#, c-format +msgid " type: %3u, len: %3u (at 0x%08x): " +msgstr "" + +#: vms-alpha.c:6858 +#, c-format +msgid "cannot read DST symbol\n" +msgstr "" + +#: vms-alpha.c:6901 +#, c-format +msgid "standard data: %s\n" +msgstr "" -#: elf32-mips.c:8259 elf64-mips.c:5891 +#: vms-alpha.c:6904 vms-alpha.c:6988 #, fuzzy, c-format -msgid "%s: Malformed reloc detected for section %s" -msgstr "¥»¥¯¥·¥ç¥ó %s ÍѤȤ·¤Æ¤Ï¤ª¤«¤·¤ÊºÆÇÛÃÖ¤ò¸¡½Ð¤·¤Þ¤·¤¿" +msgid " name: %.*s\n" +msgstr "" +"\n" +" åž‹: %s" -#: elf32-mips.c:8337 elf64-mips.c:5969 +#: vms-alpha.c:6911 #, c-format -msgid "%s: CALL16 reloc at 0x%lx not against global symbol" -msgstr "%s: 0x%lx ¤Ç¤Î CALL16 ºÆÇÛÃÖ¤¬Âç°è¥·¥ó¥Ü¥ë¤òÂоݤȤ·¤Æ¤¤¤Þ¤»¤ó" +msgid "modbeg\n" +msgstr "" -#: elf32-ppc.c:1436 elf64-ppc.c:1521 +#: vms-alpha.c:6912 #, c-format -msgid "" -"%s: compiled with -mrelocatable and linked with modules compiled normally" +msgid " flags: %d, language: %u, major: %u, minor: %u\n" msgstr "" -"%s: -mrelocatable ¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤â¤Î¤ÈÉáÄ̤˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥â" -"¥¸¥å¡¼¥ë¤È¤ò¥ê¥ó¥¯¤·¤Þ¤·¤¿" -#: elf32-ppc.c:1444 elf64-ppc.c:1529 +#: vms-alpha.c:6918 vms-alpha.c:7184 #, c-format -msgid "" -"%s: compiled normally and linked with modules compiled with -mrelocatable" +msgid " module name: %.*s\n" msgstr "" -"%s: ÉáÄ̤˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤â¤Î¤È -mrelocatable ¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥â" -"¥¸¥å¡¼¥ë¤È¤ò¥ê¥ó¥¯¤·¤Þ¤·¤¿" -#: elf32-ppc.c:1568 +#: vms-alpha.c:6921 #, c-format -msgid "%s: Unknown special linker type %d" -msgstr "%s: ¥¹¥Ú¥·¥ã¥ë¥ê¥ó¥«¥¿¥¤¥× %d ¤¬ÉÔÌÀ¤Ç¤¹" +msgid " compiler : %.*s\n" +msgstr "" -#: elf32-ppc.c:2218 elf32-ppc.c:2252 elf32-ppc.c:2287 +#: vms-alpha.c:6926 #, c-format -msgid "%s: relocation %s cannot be used when making a shared object" -msgstr "%s: ºÆÇÛÃÖ %s ¤Ï¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Æ¤¤¤ë»þÅÀ¤Ç¤ÏÍøÍѤǤ­¤Þ¤»¤ó" +msgid "modend\n" +msgstr "" -#: elf32-ppc.c:3097 elf64-ppc.c:3716 -#, c-format -msgid "%s: unknown relocation type %d for symbol %s" -msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× %d (¥·¥ó¥Ü¥ë %s) ¤¬ÉÔÌÀ¤Ç¤¹" +#: vms-alpha.c:6933 +msgid "rtnbeg\n" +msgstr "" -#: elf32-ppc.c:3452 elf32-ppc.c:3473 elf32-ppc.c:3523 +#: vms-alpha.c:6934 #, c-format -msgid "" -"%s: The target (%s) of a %s relocation is in the wrong output section (%s)" -msgstr "%s: ¥¿¡¼¥²¥Ã¥È %s (%sºÆÇÛÃÖ) ¤¬´Ö°ã¤Ã¤¿½ÐÎÏ¥»¥¯¥·¥ç¥ó (%s) ¤Ë¤¢¤ê¤Þ¤¹" +msgid " flags: %u, address: 0x%08x, pd-address: 0x%08x\n" +msgstr "" -#: elf32-ppc.c:3589 +#: vms-alpha.c:6939 #, c-format -msgid "%s: Relocation %s is not yet supported for symbol %s." -msgstr "%s: ºÆÇÛÃÖ %s ¤Ï¥·¥ó¥Ü¥ë %s ÍѤΤâ¤Î¤È¤·¤Æ¤Ï¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +msgid " routine name: %.*s\n" +msgstr "" -#: elf32-sh.c:1101 +#: vms-alpha.c:6947 #, c-format -msgid "%s: 0x%lx: warning: bad R_SH_USES offset" -msgstr "%s: 0x%lx: ·Ù¹ð: R_SH_USES ¥ª¥Õ¥»¥Ã¥È¤¬ÉÔÀµ¤Ç¤¹" +msgid "rtnend: size 0x%08x\n" +msgstr "" -#: elf32-sh.c:1113 +#: vms-alpha.c:6955 #, 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 ¤ò»Ø¤·¤Æ¤¤¤Þ¤¹" +msgid "prolog: bkpt address 0x%08x\n" +msgstr "" -#: elf32-sh.c:1130 +#: vms-alpha.c:6963 #, c-format -msgid "%s: 0x%lx: warning: bad R_SH_USES load offset" -msgstr "%s: 0x%lx: ·Ù¹ð: R_SH_USES load ¥ª¥Õ¥»¥Ã¥È¤¬ÉÔÀµ¤Ç¤¹" +msgid "epilog: flags: %u, count: %u\n" +msgstr "" -#: elf32-sh.c:1145 +#: vms-alpha.c:6972 #, c-format -msgid "%s: 0x%lx: warning: could not find expected reloc" -msgstr "%s: 0x%lx: ·Ù¹ð: ¸ºß¤¹¤ë¤Ï¤º¤ÎºÆÇÛÃÖÎΰè¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" +msgid "blkbeg: address: 0x%08x, name: %.*s\n" +msgstr "" -#: elf32-sh.c:1202 +#: vms-alpha.c:6981 #, c-format -msgid "%s: 0x%lx: warning: symbol in unexpected section" -msgstr "%s: 0x%lx: ·Ù¹ð: ¥·¥ó¥Ü¥ë¤¬Í½´ü¤»¤Ì¥»¥¯¥·¥ç¥ó¤Ë¤¢¤ê¤Þ¤¹" +msgid "blkend: size: 0x%08x\n" +msgstr "" -#: elf32-sh.c:1323 +#: vms-alpha.c:6987 #, c-format -msgid "%s: 0x%lx: warning: could not find expected COUNT reloc" -msgstr "%s: 0x%lx: ·Ù¹ð: ¸ºß¤¹¤ë¤Ï¤º¤Î COUNT ºÆÇÛÃÖÎΰè¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" +msgid "typspec (len: %u)\n" +msgstr "" -#: elf32-sh.c:1332 +#: vms-alpha.c:6994 #, c-format -msgid "%s: 0x%lx: warning: bad count" -msgstr "%s: 0x%lx: ·Ù¹ð: count ¤¬ÉÔÀµ¤Ç¤¹" +msgid "septyp, name: %.*s\n" +msgstr "" -#: elf32-sh.c:1741 elf32-sh.c:2132 +#: vms-alpha.c:7003 #, c-format -msgid "%s: 0x%lx: fatal: reloc overflow while relaxing" -msgstr "%s: 0x%lx: Ã×̿Ū: relax Ãæ¤ËºÆÇÛÃÖÎΰ褬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" +msgid "recbeg: name: %.*s\n" +msgstr "" -#: elf32-sh.c:3267 +#: vms-alpha.c:7010 #, c-format -msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation" +msgid "recend\n" msgstr "" -#: elf32-sparc.c:1554 elf64-sparc.c:2280 +#: vms-alpha.c:7013 #, c-format -msgid "%s: probably compiled without -fPIC?" -msgstr "%s: ¶²¤é¤¯ -fPIC ¤òÉÕ¤±¤º¤Ë¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤Î¤Ç¤Ï¡©" +msgid "enumbeg, len: %u, name: %.*s\n" +msgstr "" -#: elf32-sparc.c:2007 +#: vms-alpha.c:7017 #, c-format -msgid "%s: compiled for a 64 bit system and target is 32 bit" +msgid "enumelt, name: %.*s\n" msgstr "" -"%s: 64 ¥Ó¥Ã¥È¥·¥¹¥Æ¥àÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿¤¬¥¿¡¼¥²¥Ã¥È¤¬ 32 ¥Ó¥Ã¥È¤Ç¤¹" -#: elf32-sparc.c:2021 +#: vms-alpha.c:7021 #, c-format -msgid "%s: linking little endian files with big endian files" +msgid "enumend\n" msgstr "" -"%s: ¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥Õ¥¡¥¤¥ë¤È¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥Õ¥¡¥¤¥ë¤È¤ò¥ê¥ó¥¯¤·¤è" -"¤¦¤È¤·¤Æ¤¤¤Þ¤¹" -#: elf32-v850.c:682 +#: vms-alpha.c:7038 #, c-format -msgid "Variable `%s' cannot occupy in multiple small data regions" -msgstr "ÊÑ¿ô `%s' ¤ÏÊ£¿ô¤Î small ¥Ç¡¼¥¿Îΰè¤òÀêÍ­¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó" +msgid "discontiguous range (nbr: %u)\n" +msgstr "" -#: elf32-v850.c:685 +#: vms-alpha.c:7040 #, c-format -msgid "" -"Variable `%s' can only be in one of the small, zero, and tiny data regions" +msgid " address: 0x%08x, size: %u\n" msgstr "" -"ÊÑ¿ô `%s' ¤Ï small, zero µÚ¤Ó tiny ¥Ç¡¼¥¿Îΰè¤ÎÆâ°ì¤Ä¤Ë¤Î¤ßÃÖ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹" -#: elf32-v850.c:688 +#: vms-alpha.c:7050 #, c-format -msgid "" -"Variable `%s' cannot be in both small and zero data regions simultaneously" -msgstr "ÊÑ¿ô `%s' ¤ò small ¤È zero ¥Ç¡¼¥¿Îΰè¤ØƱ»þ¤ËÃÖ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó" +msgid "line num (len: %u)\n" +msgstr "" -#: elf32-v850.c:691 +#: vms-alpha.c:7067 #, c-format -msgid "" -"Variable `%s' cannot be in both small and tiny data regions simultaneously" -msgstr "ÊÑ¿ô `%s' ¤ò small ¤È tiny ¥Ç¡¼¥¿Îΰè¤ØƱ»þ¤ËÃÖ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó" +msgid "delta_pc_w %u\n" +msgstr "" -#: elf32-v850.c:694 +#: vms-alpha.c:7074 #, c-format -msgid "" -"Variable `%s' cannot be in both zero and tiny data regions simultaneously" -msgstr "ÊÑ¿ô `%s' ¤Ï zero ¤È tiny ¥Ç¡¼¥¿Îΰè¤ØƱ»þ¤ËÃÖ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó" +msgid "incr_linum(b): +%u\n" +msgstr "" -#: elf32-v850.c:1072 -msgid "FAILED to find previous HI16 reloc\n" -msgstr "°ÊÁ°¤Î HI16 ºÆÇÛÃÖ¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿\n" +#: vms-alpha.c:7080 +#, c-format +msgid "incr_linum_w: +%u\n" +msgstr "" -#: elf32-v850.c:1703 -msgid "could not locate special linker symbol __gp" -msgstr "Æüì¥ê¥ó¥«¥·¥ó¥Ü¥ë __gp ¤Î°ÌÃÖ¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" +#: vms-alpha.c:7086 +#, c-format +msgid "incr_linum_l: +%u\n" +msgstr "" -#: elf32-v850.c:1707 -msgid "could not locate special linker symbol __ep" -msgstr "Æüì¥ê¥ó¥«¥·¥ó¥Ü¥ë __ep ¤Î°ÌÃÖ¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" +#: vms-alpha.c:7092 +#, c-format +msgid "set_line_num(w) %u\n" +msgstr "" -#: elf32-v850.c:1711 -msgid "could not locate special linker symbol __ctbp" -msgstr "Æüì¥ê¥ó¥«¥·¥ó¥Ü¥ë __ctbp ¤Î°ÌÃÖ¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" +#: vms-alpha.c:7097 +#, c-format +msgid "set_line_num_b %u\n" +msgstr "" -#: elf32-v850.c:1877 +#: vms-alpha.c:7102 #, c-format -msgid "%s: Architecture mismatch with previous modules" -msgstr "%s: °ÊÁ°¤Î¥â¥¸¥å¡¼¥ë¤È¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤¬°ìÃפ·¤Þ¤»¤ó" +msgid "set_line_num_l %u\n" +msgstr "" -#: elf32-v850.c:1897 +#: vms-alpha.c:7107 #, c-format -msgid "private flags = %lx: " -msgstr "private ¥Õ¥é¥° = %lx: " +msgid "set_abs_pc: 0x%08x\n" +msgstr "" -#: elf32-v850.c:1902 -msgid "v850 architecture" -msgstr "v850 ¥¢¡¼¥­¥Æ¥¯¥Á¥ã" +#: vms-alpha.c:7111 +#, c-format +msgid "delta_pc_l: +0x%08x\n" +msgstr "" -#: elf32-v850.c:1903 -msgid "v850e architecture" -msgstr "v850e ¥¢¡¼¥­¥Æ¥¯¥Á¥ã" +#: vms-alpha.c:7116 +#, c-format +msgid "term(b): 0x%02x" +msgstr "" -#: elf32-v850.c:1904 -msgid "v850ea architecture" -msgstr "v850ea ¥¢¡¼¥­¥Æ¥¯¥Á¥ã" +#: vms-alpha.c:7118 +#, c-format +msgid " pc: 0x%08x\n" +msgstr "" -#: elf32-ia64.c:2247 elf32-xstormy16.c:414 elf64-ia64.c:2247 -msgid "non-zero addend in @fptr reloc" +#: vms-alpha.c:7123 +#, c-format +msgid "term_w: 0x%04x" msgstr "" -#: elf64-alpha.c:858 -msgid "GPDISP relocation did not find ldah and lda instructions" -msgstr "GPDISP ºÆÇÛÃÖ¤¬ ldah ¤È lda Ì¿Îá¤ò¸«¤Ä¤±¤Þ¤»¤ó¤Ç¤·¤¿" +#: vms-alpha.c:7125 +#, c-format +msgid " pc: 0x%08x\n" +msgstr "" -#: elf64-alpha.c:2934 +#: vms-alpha.c:7131 #, c-format -msgid "%s: .got subsegment exceeds 64K (size %d)" -msgstr "%s: .got ¥µ¥Ö¥»¥°¥á¥ó¥È¤¬ 64K ¤òĶ¤¨¤Æ¤¤¤Þ¤¹ (¥µ¥¤¥º %d)" +msgid "delta pc +%-4d" +msgstr "" -#: elf64-alpha.c:3518 elf64-alpha.c:3530 -#, fuzzy, c-format -msgid "%s: gp-relative relocation against dynamic symbol %s" -msgstr "32¥Ó¥Ã¥È gp ´ØÏ¢ºÆÇÛÃÖ¤¬³°Éô¥·¥ó¥Ü¥ë¤ÎÍѤËȯÀ¸¤·¤Þ¤·¤¿" +#: vms-alpha.c:7134 +#, c-format +msgid " pc: 0x%08x line: %5u\n" +msgstr "" -#: elf64-hppa.c:2070 +#: vms-alpha.c:7139 #, c-format -msgid "stub entry for %s cannot load .plt, dp offset = %ld" +msgid " *unhandled* cmd %u\n" msgstr "" -#: elf64-mmix.c:1271 +#: vms-alpha.c:7154 #, c-format -msgid "%s: register relocation against non-register symbol: (unknown) in %s" +msgid "source (len: %u)\n" msgstr "" -#: elf64-mmix.c:1276 -#, fuzzy, c-format -msgid "%s: register relocation against non-register symbol: %s in %s" -msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" +#: vms-alpha.c:7168 +#, c-format +msgid " declfile: len: %u, flags: %u, fileid: %u\n" +msgstr "" -#: elf64-mmix.c:1312 +#: vms-alpha.c:7172 #, c-format -msgid "%s: directive LOCAL valid only with a register or absolute value" +msgid " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" msgstr "" -#: elf64-mmix.c:1340 +#: vms-alpha.c:7181 #, c-format -msgid "" -"%s: LOCAL directive: Register $%ld is not a local register. First global " -"register is $%ld." +msgid " filename : %.*s\n" msgstr "" -#: elf64-mmix.c:1615 +#: vms-alpha.c:7190 #, c-format -msgid "" -"%s: Error: multiple definition of `%s'; start of %s is set in a earlier " -"linked file\n" +msgid " setfile %u\n" msgstr "" -#: elf64-mmix.c:1674 -#, fuzzy -msgid "Register section has contents\n" -msgstr "¥»¥¯¥·¥ç¥ó¤ËÆâÍƤ¬¤¢¤ê¤Þ¤»¤ó" +#: vms-alpha.c:7195 vms-alpha.c:7200 +#, c-format +msgid " setrec %u\n" +msgstr "" -#: elf64-ppc.c:1484 libbfd.c:1436 +#: vms-alpha.c:7205 vms-alpha.c:7210 #, c-format -msgid "%s: compiled for a big endian system and target is little endian" +msgid " setlnum %u\n" msgstr "" -"%s: ¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¥·¥¹¥Æ¥àÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¡¢¥¿¡¼¥²¥Ã¥È¤¬¥ê¥È¥ë¥¨¥ó¥Ç¥£" -"¥¢¥ó¤Ç¤¹" -#: elf64-ppc.c:1486 libbfd.c:1438 +#: vms-alpha.c:7215 vms-alpha.c:7220 #, c-format -msgid "%s: compiled for a little endian system and target is big endian" +msgid " deflines %u\n" msgstr "" -"%s: ¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¥·¥¹¥Æ¥àÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¡¢¥¿¡¼¥²¥Ã¥È¤¬¥Ó¥Ã¥°¥¨¥ó¥Ç¥£" -"¥¢¥ó¤Ç¤¹¡£" -#: elf64-ppc.c:3350 +#: vms-alpha.c:7224 #, c-format -msgid "linkage table error against `%s'" +msgid " formfeed\n" msgstr "" -#: elf64-ppc.c:3432 -msgid "stub section size doesn't match calculated size" +#: vms-alpha.c:7228 +#, c-format +msgid " *unhandled* cmd %u\n" msgstr "" -#: elf64-ppc.c:4061 +#: vms-alpha.c:7240 #, fuzzy, c-format -msgid "%s: Relocation %s is not supported for symbol %s." -msgstr "%s: ºÆÇÛÃÖ %s ¤Ï¥·¥ó¥Ü¥ë %s ÍѤΤâ¤Î¤È¤·¤Æ¤Ï¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +msgid "*unhandled* dst type %u\n" +msgstr "%s: import タイプ %x ã¯å–り扱ã‚ã‚Œã¾ã›ã‚“ã§ã—ãŸ" -#: elf64-ppc.c:4105 +#: vms-alpha.c:7272 #, c-format -msgid "%s: error: relocation %s not a multiple of 4" +msgid "cannot read EIHD\n" msgstr "" -#: elf64-sparc.c:1277 +#: vms-alpha.c:7275 #, c-format -msgid "%s: check_relocs: unhandled reloc type %d" -msgstr "%s: check_relocs: ºÆÇÛÃÖ¥¿¥¤¥× %d ¤Ï¼è¤ê°·¤ï¤ì¤Þ¤»¤ó" +msgid "EIHD: (size: %u, nbr blocks: %u)\n" +msgstr "" -#: elf64-sparc.c:1314 +#: vms-alpha.c:7278 #, 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" +msgid " majorid: %u, minorid: %u\n" 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" +#: vms-alpha.c:7286 +msgid "executable" 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" +#: vms-alpha.c:7289 +msgid "linkable image" +msgstr "" -#: elf64-sparc.c:3008 +#: vms-alpha.c:7295 #, c-format -msgid "%s: linking UltraSPARC specific with HAL specific code" +msgid " image type: %u (%s)" msgstr "" -"%s: UltraSPARC ÆÃÍ­¤Î¥³¡¼¥É¤È HAL ÆÃÍ­¤Î¥³¡¼¥É¤È¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹" -#: elfcode.h:1218 -#, c-format -msgid "%s: version count (%ld) does not match symbol count (%ld)" -msgstr "%s: ¥Ð¡¼¥¸¥ç¥ó¥«¥¦¥ó¥È (%ld) ¤¬¥·¥ó¥Ü¥ë¥«¥¦¥ó¥È (%ld) ¤È°ìÃפ·¤Þ¤»¤ó" +#: vms-alpha.c:7301 +msgid "native" +msgstr "" -#: elflink.c:434 -#, fuzzy, c-format -msgid "%s: Section %s is too large to add hole of %ld bytes" -msgstr "%s: ´û¤Ë¥»¥¯¥·¥ç¥ó %s ¤ÏÂ礭¤¹¤®¤Æ %ld ¥Ð¥¤¥È¤Î hole ¤òÃÖ¤±¤Þ¤»¤ó" +#: vms-alpha.c:7304 +msgid "CLI" +msgstr "" -#: elflink.h:1113 +#: vms-alpha.c:7310 #, c-format -msgid "%s: warning: unexpected redefinition of `%s'" -msgstr "%s: ·Ù¹ð: `%s' ¤ÎºÆÄêµÁ¤Ï¤¢¤êÆÀ¤Ê¤¤¤³¤È¤Ç¤¹" +msgid ", subtype: %u (%s)\n" +msgstr "" -#: elflink.h:1784 +#: vms-alpha.c:7316 #, c-format -msgid "%s: %s: invalid version %u (max %d)" -msgstr "%s: %s: ÉÔŬÀڤʥС¼¥¸¥ç¥ó %u (ºÇÂç %d)" +msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n" +msgstr "" -#: elflink.h:1825 +#: vms-alpha.c:7320 #, c-format -msgid "%s: %s: invalid needed version %d" -msgstr "%s: %s: ɬÍפȤµ¤ì¤ë¥Ð¡¼¥¸¥ç¥ó %d ¤¬ÉÔŬÀڤǤ¹" +msgid " fixup info rva: " +msgstr "" -#: elflink.h:1945 +#: vms-alpha.c:7322 #, c-format -msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s" -msgstr "·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' ¤Î¥µ¥¤¥º¤¬ %lu ¤«¤é %lu ¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿ (%s Æâ)" +msgid ", symbol vector rva: " +msgstr "" -#: elflink.h:4014 +#: vms-alpha.c:7325 #, c-format -msgid "warning: type and size of dynamic symbol `%s' are not defined" -msgstr "·Ù¹ð: ưŪ¥·¥ó¥Ü¥ë `%s' ¤Î·¿¤È¥µ¥¤¥º¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +msgid "" +"\n" +" version array off: %u\n" +msgstr "" -#: elflink.h:4320 +#: vms-alpha.c:7329 #, 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" +msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n" msgstr "" -#: elflink.h:4714 -msgid "Not enough memory to sort relocations" -msgstr "" +#: vms-alpha.c:7335 +#, fuzzy, c-format +msgid " linker flags: %08x:" +msgstr "private フラグ = %x:" -#: elflink.h:5980 +#: vms-alpha.c:7365 #, 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 ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" +msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n" +msgstr "" -#: elflink.h:6596 +#: vms-alpha.c:7371 #, c-format -msgid "local symbols in discarded section %s" +msgid " BPAGE: %u" msgstr "" -#: i386linux.c:455 m68klinux.c:459 sparclinux.c:456 +#: vms-alpha.c:7377 #, c-format -msgid "Output file requires shared library `%s'\n" -msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï¶¦Í­¥é¥¤¥Ö¥é¥ê `%s' ¤òɬÍפȤ·¤Æ¤¤¤Þ¤¹\n" +msgid ", ext fixup offset: %u, no_opt psect off: %u" +msgstr "" -#: i386linux.c:463 m68klinux.c:467 sparclinux.c:464 +#: vms-alpha.c:7380 #, c-format -msgid "Output file requires shared library `%s.so.%s'\n" -msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï¶¦Í­¥é¥¤¥Ö¥é¥ê `%s.so.%s' ¤òɬÍפȤ·¤Æ¤¤¤Þ¤¹\n" +msgid ", alias: %u\n" +msgstr "" -#: i386linux.c:653 i386linux.c:703 m68klinux.c:660 m68klinux.c:708 -#: sparclinux.c:655 sparclinux.c:705 +#: vms-alpha.c:7388 #, c-format -msgid "Symbol %s not defined for fixups\n" -msgstr "¥·¥ó¥Ü¥ë %s ¤Ï fixup ÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó\n" +msgid "system version array information:\n" +msgstr "" -#: i386linux.c:727 m68klinux.c:732 sparclinux.c:729 -msgid "Warning: fixup count mismatch\n" -msgstr "·Ù¹ð: fixup ¥«¥¦¥ó¥È¤¬°ìÃפ·¤Þ¤»¤ó\n" +#: vms-alpha.c:7392 +#, c-format +msgid "cannot read EIHVN header\n" +msgstr "" -#: ieee.c:235 +#: vms-alpha.c:7402 #, c-format -msgid "%s: string too long (%d chars, max 65535)" -msgstr "%s: ʸ»úÎó¤¬Ä¹¤¹¤®¤Þ¤¹ (%d ʸ»ú, ºÇÂç 65535)" +msgid "cannot read EIHVN version\n" +msgstr "" -#: ieee.c:365 +#: vms-alpha.c:7405 #, c-format -msgid "%s: unrecognized symbol `%s' flags 0x%x" -msgstr "%s: ¥·¥ó¥Ü¥ë `%s' ¥Õ¥é¥° 0x%x ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" +msgid " %02u " +msgstr "" -#: ieee.c:877 -#, fuzzy, c-format -msgid "%s: unimplemented ATI record %u for symbol %u" -msgstr "%s: ATI ¥ì¥³¡¼¥É %u (¥·¥ó¥Ü¥ë %u ÍÑ) ¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +#: vms-alpha.c:7409 +msgid "BASE_IMAGE " +msgstr "" -#: ieee.c:902 -#, c-format -msgid "%s: unexpected ATN type %d in external part" -msgstr "%s: external Éôʬ¤Ë¤¢¤ë ATN ¥¿¥¤¥× %d ¤È¤¤¤¦¤Î¤Ï¤¢¤êÆÀ¤Þ¤»¤ó" +#: vms-alpha.c:7412 +msgid "MEMORY_MANAGEMENT" +msgstr "" -#: ieee.c:924 -#, c-format -msgid "%s: unexpected type after ATN" -msgstr "%s: ATN ¤Î¸å¤í¤Ë¤¢¤êÆÀ¤Ê¤¤¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹" +#: vms-alpha.c:7415 +msgid "IO " +msgstr "" -#: ihex.c:258 -#, c-format -msgid "%s:%d: unexpected character `%s' in Intel Hex file\n" -msgstr "%s:%d: Intel Hex ¥Õ¥¡¥¤¥ë¤È¤·¤Æ¤¢¤êÆÀ¤Ê¤¤Ê¸»ú `%s' ¤¬¤¢¤ê¤Þ¤¹\n" +#: vms-alpha.c:7418 +msgid "FILES_VOLUMES " +msgstr "" -#: 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 ¤Ç¤¹)" +#: vms-alpha.c:7421 +msgid "PROCESS_SCHED " +msgstr "" -#: ihex.c:422 -#, fuzzy, c-format -msgid "%s:%u: bad extended address record length in Intel Hex file" -msgstr "%s:%d: ³ÈÄ¥¥¢¥É¥ì¥¹¥ì¥³¡¼¥ÉŤ¬ Intel Hex ¥Õ¥¡¥¤¥ë¤È¤·¤Æ¤ÏÉÔÀµ¤Ç¤¹" +#: vms-alpha.c:7424 +msgid "SYSGEN " +msgstr "" -#: ihex.c:439 -#, fuzzy, c-format -msgid "%s:%u: bad extended start address length in Intel Hex file" -msgstr "%s:%d: ³ÈÄ¥³«»Ï¥¢¥É¥ì¥¹Ä¹¤¬ Intel Hex ¥Õ¥¡¥¤¥ë¤È¤·¤Æ¤ÏÉÔÀµ¤Ç¤¹" +#: vms-alpha.c:7427 +msgid "CLUSTERS_LOCKMGR " +msgstr "" -#: ihex.c:456 -#, fuzzy, c-format -msgid "%s:%u: bad extended linear address record length in Intel Hex file" -msgstr "%s:%d: ³ÈÄ¥¥ê¥Ë¥¢¥¢¥É¥ì¥¹¥ì¥³¡¼¥ÉŤ¬ Intel Hex ¥Õ¥¡¥¤¥ë¤È¤·¤ÆÉÔÀµ¤Ç¤¹" +#: vms-alpha.c:7430 +msgid "LOGICAL_NAMES " +msgstr "" -#: ihex.c:473 -#, fuzzy, c-format -msgid "%s:%u: bad extended linear start address length in Intel Hex file" -msgstr "%s:%d: ³ÈÄ¥¥ê¥Ë¥¢³«»Ï¥¢¥É¥ì¥¹Ä¢¤¬ Intel Hex ¥Õ¥¡¥¤¥ë¤È¤·¤Æ¤ÏÉÔÀµ¤Ç¤¹" +#: vms-alpha.c:7433 +msgid "SECURITY " +msgstr "" -#: 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" +#: vms-alpha.c:7436 +msgid "IMAGE_ACTIVATOR " +msgstr "" -#: ihex.c:610 -#, c-format -msgid "%s: internal error in ihex_read_section" -msgstr "%s: ihex_read_section Æâ¤ÇÆâÉô¥¨¥é¡¼" +#: vms-alpha.c:7439 +msgid "NETWORKS " +msgstr "" -#: ihex.c:645 -#, c-format -msgid "%s: bad section length in ihex_read_section" -msgstr "%s: ihex_read_section Æâ¤ÇÉÔÀµ¤Ê¥»¥¯¥·¥ç¥óŤ¬¤¢¤ê¤Þ¤¹" +#: vms-alpha.c:7442 +msgid "COUNTERS " +msgstr "" -#: ihex.c:863 -#, fuzzy, c-format -msgid "%s: address 0x%s out of range for Intel Hex file" -msgstr "%s: ¥¢¥É¥ì¥¹ 0x%s ¤Ï Intel Hex ¥Õ¥¡¥¤¥ë¤ÎÈϰϤòĶ¤¨¤Æ¤¤¤Þ¤¹" +#: vms-alpha.c:7445 +msgid "STABLE " +msgstr "" -#: libbfd.c:492 -#, c-format -msgid "not mapping: data=%lx mapped=%d\n" -msgstr "¥Þ¥Ã¥×¤·¤Þ¤»¤ó: ¥Ç¡¼¥¿=%lx ¥Þ¥Ã¥×ºÑ=%d\n" +#: vms-alpha.c:7448 +msgid "MISC " +msgstr "" -#: libbfd.c:495 -msgid "not mapping: env var not set\n" -msgstr "¥Þ¥Ã¥×¤·¤Þ¤»¤ó: ´Ä¶­ÊÑ¿ô¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó\n" +#: vms-alpha.c:7451 +msgid "CPU " +msgstr "" -#: libbfd.c:1467 -#, fuzzy, c-format -msgid "Deprecated %s called at %s line %d in %s\n" -msgstr "BFD ÆâÉô¥¨¥é¡¼¡£%s ¤Î %d ¹ÔÌÜ %s ¤ÇÃæÃǤ·¤Þ¤·¤¿\n" +#: vms-alpha.c:7454 +msgid "VOLATILE " +msgstr "" -#: libbfd.c:1470 -#, c-format -msgid "Deprecated %s called\n" +#: vms-alpha.c:7457 +msgid "SHELL " msgstr "" -#: linker.c:1849 -#, c-format -msgid "%s: indirect symbol `%s' to `%s' is a loop" +#: vms-alpha.c:7460 +msgid "POSIX " msgstr "" -#: linker.c:2745 -#, c-format -msgid "Attempt to do relocateable link with %s input and %s output" -msgstr "ÆþÎÏ %s ¤È½ÐÎÏ %s ¤È¤òºÆÇÛÃÖ²Äǽ¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" +#: vms-alpha.c:7463 +msgid "MULTI_PROCESSING " +msgstr "" -#: merge.c:897 -#, c-format -msgid "%s: access beyond end of merged section (%ld + %ld)" +#: vms-alpha.c:7466 +msgid "GALAXY " msgstr "" -#: mmo.c:460 -#, fuzzy, c-format -msgid "%s: No core to allocate section name %s\n" -msgstr "%s: ÉÔÀµ¤Ê¥»¥¯¥·¥ç¥ó̾ `%s' ¤Ç¤¹" +#: vms-alpha.c:7469 +#, fuzzy +msgid "*unknown* " +msgstr "*ä¸æ˜Ž*" -#: mmo.c:537 +#: vms-alpha.c:7472 #, c-format -msgid "%s: No core to allocate a symbol %d bytes long\n" +msgid ": %u.%u\n" msgstr "" -#: mmo.c:1190 +#: vms-alpha.c:7485 vms-alpha.c:7744 #, c-format -msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" +msgid "cannot read EIHA\n" msgstr "" -#: mmo.c:1336 +#: vms-alpha.c:7488 #, c-format -msgid "" -"%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name " -"starting with `%s'\n" +msgid "Image activation: (size=%u)\n" msgstr "" -#: mmo.c:1571 +#: vms-alpha.c:7490 #, c-format -msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgid " First address : 0x%08x 0x%08x\n" msgstr "" -#: mmo.c:1581 +#: vms-alpha.c:7493 #, c-format -msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" +msgid " Second address: 0x%08x 0x%08x\n" msgstr "" -#: mmo.c:1617 +#: vms-alpha.c:7496 #, c-format -msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" +msgid " Third address : 0x%08x 0x%08x\n" msgstr "" -#: mmo.c:1663 +#: vms-alpha.c:7499 #, c-format -msgid "" -"%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" +msgid " Fourth address: 0x%08x 0x%08x\n" msgstr "" -#: mmo.c:1702 +#: vms-alpha.c:7502 #, c-format -msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" +msgid " Shared image : 0x%08x 0x%08x\n" msgstr "" -#: mmo.c:1711 +#: vms-alpha.c:7513 #, c-format -msgid "" -"%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" +msgid "cannot read EIHI\n" msgstr "" -#: mmo.c:1734 +#: vms-alpha.c:7516 #, c-format -msgid "" -"%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d " -"for lop_fixrx\n" +msgid "Image identification: (major: %u, minor: %u)\n" +msgstr "" + +#: vms-alpha.c:7519 +#, fuzzy, c-format +msgid " image name : %.*s\n" +msgstr "領域å = \"%s\"\n" + +#: vms-alpha.c:7521 +#, fuzzy, c-format +msgid " link time : %s\n" +msgstr "領域å = \"%s\"\n" + +#: vms-alpha.c:7523 +#, c-format +msgid " image ident : %.*s\n" msgstr "" -#: mmo.c:1757 +#: vms-alpha.c:7525 #, c-format -msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgid " linker ident : %.*s\n" msgstr "" -#: mmo.c:1777 +#: vms-alpha.c:7527 #, c-format -msgid "" -"%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" +msgid " image build ident: %.*s\n" msgstr "" -#: mmo.c:1790 +#: vms-alpha.c:7537 #, c-format -msgid "" -"%s: invalid mmo file: file name for number %d was not specified before use\n" +msgid "cannot read EIHS\n" msgstr "" -#: mmo.c:1896 +#: vms-alpha.c:7540 #, c-format -msgid "" -"%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" +msgid "Image symbol & debug table: (major: %u, minor: %u)\n" msgstr "" -#: mmo.c:1932 +#: vms-alpha.c:7545 #, c-format -msgid "%s: invalid mmo file: lop_end not last item in file\n" +msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n" msgstr "" -#: mmo.c:1945 +#: vms-alpha.c:7549 #, 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" +msgid " global symbol table: vbn: %u, records: %u\n" msgstr "" -#: mmo.c:2610 +#: vms-alpha.c:7553 #, c-format -msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgid " debug module table : vbn: %u, size: %u\n" msgstr "" -#: mmo.c:2898 +#: vms-alpha.c:7566 #, c-format -msgid "" -"%s: Bad symbol definition: `Main' set to %s rather than the start address %" -"s\n" +msgid "cannot read EISD\n" msgstr "" -#: mmo.c:2932 +#: vms-alpha.c:7576 #, c-format -msgid "" -"%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: " -"%d. Only `Main' will be emitted.\n" +msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\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 Æâ)" +#: vms-alpha.c:7583 +#, c-format +msgid " section: base: 0x%08x%08x size: 0x%08x\n" +msgstr "" -#: mmo.c:3032 +#: vms-alpha.c:7588 #, fuzzy, c-format -msgid "%s: internal error, internal register section %s had contents\n" -msgstr "%s: ihex_read_section Æâ¤ÇÆâÉô¥¨¥é¡¼" +msgid " flags: 0x%04x" +msgstr "private フラグ = 0x%lx" -#: mmo.c:3084 +#: vms-alpha.c:7625 #, c-format -msgid "%s: no initialized registers; section length 0\n" +msgid " vbn: %u, pfc: %u, matchctl: %u type: %u (" msgstr "" -#: mmo.c:3090 -#, c-format -msgid "%s: too many initialized registers; section length %ld\n" +#: vms-alpha.c:7631 +msgid "NORMAL" msgstr "" -#: mmo.c:3095 -#, c-format -msgid "" -"%s: invalid start address for initialized registers of length %ld: 0x%lx%" -"08lx\n" +#: vms-alpha.c:7634 +msgid "SHRFXD" msgstr "" -#: oasys.c:1036 -#, c-format -msgid "%s: can not represent section `%s' in oasys" -msgstr "%s: oasys ¤Ç¤Ï¥»¥¯¥·¥ç¥ó `%s' ¤òɽ¸½¤Ç¤­¤Þ¤»¤ó" +#: vms-alpha.c:7637 +msgid "PRVFXD" +msgstr "" -#: osf-core.c:132 -#, c-format -msgid "Unhandled OSF/1 core file section type %d\n" -msgstr "OSF/1 ¥³¥¢¥Õ¥¡¥¤¥ë¥»¥¯¥·¥ç¥ó¥¿¥¤¥× %d ¤Ï¼è¤ê°·¤ï¤ì¤Þ¤»¤ó¤Ç¤·¤¿\n" +#: vms-alpha.c:7640 +msgid "SHRPIC" +msgstr "" -#: 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" +#: vms-alpha.c:7643 +msgid "PRVPIC" +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 "%s: ̤¼ÂÁõ¤Î %s ¤Ç¤¹\n" +#: vms-alpha.c:7646 +msgid "USRSTACK" +msgstr "" -#: pe-mips.c:820 +#: vms-alpha.c:7654 #, c-format -msgid "%s: jump too far away\n" -msgstr "%s: ¥¸¥ã¥ó¥×À褬±ó¤¹¤®¤Þ¤¹\n" +msgid " ident: 0x%08x, name: %.*s\n" +msgstr "" -#: pe-mips.c:847 +#: vms-alpha.c:7664 #, c-format -msgid "%s: bad pair/reflo after refhi\n" -msgstr "%s: ÉÔÀµ¤Ê pair/reflo ¤¬ refhi ¤Î¸å¤í¤Ë¤¢¤ê¤Þ¤¹\n" +msgid "cannot read DMT\n" +msgstr "" -#. XXX code yet to be written. -#: peicode.h:785 +#: vms-alpha.c:7668 #, c-format -msgid "%s: Unhandled import type; %x" -msgstr "%s: import ¥¿¥¤¥× %x ¤Ï¼è¤ê°·¤ï¤ì¤Þ¤»¤ó¤Ç¤·¤¿" +msgid "Debug module table:\n" +msgstr "" -#: peicode.h:790 +#: vms-alpha.c:7677 #, c-format -msgid "%s: Unrecognised import type; %x" -msgstr "%s: import ¥¿¥¤¥×¤òǧ¼±¤Ç¤­¤Þ¤»¤ó -- %x" +msgid "cannot read DMT header\n" +msgstr "" -#: peicode.h:804 +#: vms-alpha.c:7682 #, c-format -msgid "%s: Unrecognised import name type; %x" -msgstr "%s: import ̾Á°¥¿¥¤¥×¤òǧ¼±¤Ç¤­¤Þ¤»¤ó -- %x" +msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n" +msgstr "" -#: peicode.h:1162 +#: vms-alpha.c:7692 #, c-format -msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive" -msgstr "%s: Import Library Format ½ñ¸ËÆâ¤Î¥Þ¥·¥ó¥¿¥¤¥× (0x%x) ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" +msgid "cannot read DMT psect\n" +msgstr "" -#: peicode.h:1174 +#: vms-alpha.c:7695 #, c-format -msgid "" -"%s: Recognised but unhandled machine type (0x%x) in Import Library Format " -"archive" +msgid " psect start: 0x%08x, length: %u\n" msgstr "" -"%s: Import Library Format ½ñ¸ËÆâ¤Î¥Þ¥·¥ó¥¿¥¤¥× (0x%x) ¤Ïǧ¼±¤Ç¤­¤Þ¤·¤¿¤¬¼è¤ê" -"°·¤ï¤ì¤Þ¤»¤ó¤Ç¤·¤¿" -#: peicode.h:1191 +#: vms-alpha.c:7708 #, c-format -msgid "%s: size field is zero in Import Library Format header" -msgstr "%s: Import Library Format ¥Ø¥Ã¥ÀÆâ¤Î¥µ¥¤¥º¥Õ¥£¡¼¥ë¥É¤¬¥¼¥í¤Ç¤¹" +msgid "cannot read DST\n" +msgstr "" -#: peicode.h:1219 +#: vms-alpha.c:7718 #, c-format -msgid "%s: string not null terminated in ILF object file." -msgstr "%s: ILF ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ëÆâ¤Îʸ»úÎó¤¬ null ½ªÃ¼¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£" - -#: ppcboot.c:416 -msgid "" -"\n" -"ppcboot header:\n" +msgid "cannot read GST\n" msgstr "" -"\n" -"ppcboot ¥Ø¥Ã¥À:\n" -#: ppcboot.c:417 +#: vms-alpha.c:7722 #, c-format -msgid "Entry offset = 0x%.8lx (%ld)\n" -msgstr "¥¨¥ó¥È¥ê¥ª¥Õ¥»¥Ã¥È = 0x%.8lx (%ld)\n" +msgid "Global symbol table:\n" +msgstr "大域シンボル表:\n" -#: ppcboot.c:418 +#: vms-alpha.c:7750 #, c-format -msgid "Length = 0x%.8lx (%ld)\n" -msgstr "Ťµ = 0x%.8lx (%ld)\n" +msgid "Image activator fixup: (major: %u, minor: %u)\n" +msgstr "" -#: ppcboot.c:421 +#: vms-alpha.c:7753 #, c-format -msgid "Flag field = 0x%.2x\n" -msgstr "¥Õ¥é¥°¥Õ¥£¡¼¥ë¥É = 0x%.2x\n" +msgid " iaflink : 0x%08x %08x\n" +msgstr "" -#: ppcboot.c:427 +#: vms-alpha.c:7756 #, c-format -msgid "Partition name = \"%s\"\n" -msgstr "Îΰè̾ = \"%s\"\n" +msgid " fixuplnk: 0x%08x %08x\n" +msgstr "" -#: ppcboot.c:446 +#: vms-alpha.c:7759 #, c-format -msgid "" -"\n" -"Partition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgid " size : %u\n" msgstr "" -"\n" -"Îΰè[%d] ¤Î³«»Ï = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" -#: ppcboot.c:452 +#: vms-alpha.c:7761 #, 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" +msgid " flags: 0x%08x\n" +msgstr "" -#: ppcboot.c:458 +#: vms-alpha.c:7765 #, c-format -msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" -msgstr "Îΰè[%d] ¥»¥¯¥¿ = 0x%.8lx (%ld)\n" +msgid " qrelfixoff: %5u, lrelfixoff: %5u\n" +msgstr "" -#: ppcboot.c:459 +#: vms-alpha.c:7769 #, 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 ¤Ï̤¼ÂÁõ¤Ç¤¹" +msgid " qdotadroff: %5u, ldotadroff: %5u\n" +msgstr "" -#: srec.c:301 +#: vms-alpha.c:7773 #, 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 ºÆÇÛÃ֤ϥµ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +msgid " codeadroff: %5u, lpfixoff : %5u\n" +msgstr "" -#: vms-gsd.c:356 +#: vms-alpha.c:7776 #, c-format -msgid "bfd_make_section (%s) failed" -msgstr "bfd_make_section (%s) ¤¬¼ºÇÔ¤·¤Þ¤·¤¿" +msgid " chgprtoff : %5u\n" +msgstr "" -#: vms-gsd.c:371 +#: vms-alpha.c:7779 #, c-format -msgid "bfd_set_section_flags (%s, %x) failed" -msgstr "bfd_set_section_flags (%s, %x) ¤¬¼ºÇÔ¤·¤Þ¤·¤¿" +msgid " shlstoff : %5u, shrimgcnt : %5u\n" +msgstr "" -#: vms-gsd.c:407 +#: vms-alpha.c:7781 #, c-format -msgid "Size mismatch section %s=%lx, %s=%lx" -msgstr "¥»¥¯¥·¥ç¥ó %s=%lx, %s=%lx ¤Ç¥µ¥¤¥º¤¬°ìÃפ·¤Þ¤»¤ó" +msgid " shlextra : %5u, permctx : %5u\n" +msgstr "" -#: vms-gsd.c:704 +#: vms-alpha.c:7784 #, 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" +msgid " base_va : 0x%08x\n" +msgstr "" -#: vms-misc.c:543 +#: vms-alpha.c:7786 #, 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 ¸Æ¤Ó½Ð¤·»þ¤Î¥Ð¥¤¥È¿ô¤¬Â礭¤¹¤®¤Þ¤¹" +msgid " lppsbfixoff: %5u\n" +msgstr "" -#: vms-misc.c:1055 +#: vms-alpha.c:7794 #, c-format -msgid "Symbol %s replaced by %s\n" -msgstr "¥·¥ó¥Ü¥ë %s ¤Ï %s ¤ÇÃÖ¤­´¹¤¨¤é¤ì¤Þ¤·¤¿\n" +msgid " Shareable images:\n" +msgstr "" -#: vms-misc.c:1117 +#: vms-alpha.c:7798 #, 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: ¤½¤Î¤è¤¦¤Ê¥·¥ó¥Ü¥ë¤Ï¤¢¤ê¤Þ¤»¤ó" +msgid " %u: size: %u, flags: 0x%02x, name: %.*s\n" +msgstr "" -#. 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 +#: vms-alpha.c:7805 #, fuzzy, c-format -msgid "%s: not supported" -msgstr "¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó" +msgid " quad-word relocation fixups:\n" +msgstr "å†é…ç½® %s ãŒå–り扱ã‚ã‚Œã¾ã›ã‚“ã§ã—ãŸ" -#: vms-tir.c:586 vms-tir.c:1418 -#, fuzzy, c-format -msgid "%s: not implemented" -msgstr "%s: ̤¼ÂÁõ¤Î %s ¤Ç¤¹\n" +#: vms-alpha.c:7810 +#, c-format +msgid " long-word relocation fixups:\n" +msgstr "" -#: vms-tir.c:590 vms-tir.c:1422 -#, fuzzy, c-format -msgid "reserved STO cmd %d" -msgstr "STO cmd %d ¤ÏͽÌóºÑ¤Ç¤¹" +#: vms-alpha.c:7815 +#, c-format +msgid " quad-word .address reference fixups:\n" +msgstr "" -#: vms-tir.c:708 vms-tir.c:1568 -#, fuzzy, c-format -msgid "reserved OPR cmd %d" -msgstr "OPR cmd %d ¤ÏͽÌóºÑ¤Ç¤¹" +#: vms-alpha.c:7820 +#, c-format +msgid " long-word .address reference fixups:\n" +msgstr "" -#: vms-tir.c:776 vms-tir.c:1632 +#: vms-alpha.c:7825 #, 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 ¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +msgid " Code Address Reference Fixups:\n" +msgstr "" +"\n" +"ãƒãƒ¼ã‚¸ãƒ§ãƒ³å‚ç…§:\n" -#: vms-tir.c:1166 -#, fuzzy -msgid "stack-entry-mask not fully implemented" -msgstr "Stack-entry-mask ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +#: vms-alpha.c:7830 +#, c-format +msgid " Linkage Pairs Referece Fixups:\n" +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:1180 -msgid "PASSMECH not fully implemented" -msgstr "PASSMECH ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +#: vms-alpha.c:7839 +#, c-format +msgid " Change Protection (%u entries):\n" +msgstr "" -#: vms-tir.c:1199 -#, fuzzy -msgid "stack-local-symbol not fully implemented" -msgstr "Stack-local-symbol ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +#: vms-alpha.c:7844 +#, c-format +msgid " base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x " +msgstr "" -#: vms-tir.c:1212 +#. FIXME: we do not yet support relocatable link. It is not obvious +#. how to do it for debug infos. +#: vms-alpha.c:8676 #, fuzzy -msgid "stack-literal not fully implemented" -msgstr "Stack-literal ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +msgid "%P: relocatable link is not supported\n" +msgstr "%s: %s ã‹ã‚‰ %s ã¸ã®å†é…ç½®å¯èƒ½ãƒªãƒ³ã‚¯ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: vms-tir.c:1233 -#, fuzzy -msgid "stack-local-symbol-entry-point-mask not fully implemented" -msgstr "Stack-local-symbol-entry-point-mask ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +#: vms-alpha.c:8746 +msgid "%P: multiple entry points: in modules %B and %B\n" +msgstr "" -#: 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-lib.c:1421 +#, c-format +msgid "could not open shared image '%s' from '%s'" +msgstr "" -#: vms-tir.c:1684 -#, fuzzy, c-format -msgid "obj code %d not found" -msgstr "¥ª¥Ö¥¸¥§¥¯¥È¥³¡¼¥É %d ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" +#: vms-misc.c:360 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "_bfd_vms_output_counted ãŒã‚¼ãƒ­ãƒã‚¤ãƒˆã§å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ" -#: vms-tir.c:2019 -#, c-format -msgid "SEC_RELOC with no relocs in section %s" -msgstr "SEC_RELOC ¤¬¥»¥¯¥·¥ç¥ó %s ¤Ë¤¢¤ê¤Þ¤¹¤¬ºÆÇÛÃÖ¤¬¤¢¤ê¤Þ¤»¤ó" +#: vms-misc.c:365 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "_bfd_vms_output_counted 呼ã³å‡ºã—時ã®ãƒã‚¤ãƒˆæ•°ãŒå¤§ãã™ãŽã¾ã™" -#: vms-tir.c:2307 +#: xcofflink.c:836 #, c-format -msgid "Unhandled relocation %s" -msgstr "ºÆÇÛÃÖ %s ¤¬¼è¤ê°·¤ï¤ì¤Þ¤»¤ó¤Ç¤·¤¿" +msgid "%s: XCOFF shared object when not producing XCOFF output" +msgstr "%s: XCOFF ㌠XCOFF 出力生æˆæ™‚以外ã«ã‚ªãƒ–ジェクトを共有ã—ã¾ã—ãŸ" -#: xcofflink.c:1241 +#: xcofflink.c:857 #, c-format -msgid "%s: `%s' has line numbers but no enclosing section" -msgstr "%s: `%s' ¤Ï¹ÔÈÖ¹æ¤ò»ý¤Á¤Þ¤¹¤¬¡¢¥»¥¯¥·¥ç¥ó¤ò°Ï¤¤¹þ¤ó¤Ç¤¤¤Þ¤»¤ó" +msgid "%s: dynamic object with no .loader section" +msgstr "%s: 動的オブジェクト㫠.loader セクションãŒã‚ã‚Šã¾ã›ã‚“" -#: xcofflink.c:1294 -#, c-format -msgid "%s: class %d symbol `%s' has no aux entries" -msgstr "%s: ¥¯¥é¥¹ %d ¥·¥ó¥Ü¥ë `%s' ¤ËÊä½õ¥¨¥ó¥È¥ê¤¬¤¢¤ê¤Þ¤»¤ó" +#: xcofflink.c:1415 +#, fuzzy +msgid "%B: `%s' has line numbers but no enclosing section" +msgstr "%s: `%s' ã¯è¡Œç•ªå·ã‚’æŒã¡ã¾ã™ãŒã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’囲ã„込んã§ã„ã¾ã›ã‚“" -#: xcofflink.c:1317 -#, c-format -msgid "%s: symbol `%s' has unrecognized csect type %d" -msgstr "%s: ¥·¥ó¥Ü¥ë `%s' ¤¬Ç§¼±¤Ç¤­¤Ê¤¤ csect ¥¿¥¤¥× %d ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹" +#: xcofflink.c:1467 +#, fuzzy +msgid "%B: class %d symbol `%s' has no aux entries" +msgstr "%s: クラス %d シンボル `%s' ã«è£œåŠ©ã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚Šã¾ã›ã‚“" -#: 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:1489 +#, fuzzy +msgid "%B: symbol `%s' has unrecognized csect type %d" +msgstr "%s: シンボル `%s' ãŒèªè­˜ã§ããªã„ csect タイプ %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:1501 +#, fuzzy +msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%s: ä¸æ­£ XTY_ER シンボル `%s': クラス %d scnum %d scnlen %d" -#: xcofflink.c:1517 -#, c-format -msgid "%s: csect `%s' not in enclosing section" -msgstr "%s: csect `%s' ¤¬¥»¥¯¥·¥ç¥ó¤Î°Ï¤ß¤ÎÃæ¤Ë¤¢¤ê¤Þ¤»¤ó" +#: xcofflink.c:1530 +#, fuzzy +msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%s: XMC_TC0 シンボル `%s' 㯠class %d scnlen %d ã§ã™" -#: xcofflink.c:1624 -#, c-format -msgid "%s: misplaced XTY_LD `%s'" -msgstr "%s: XTY_LD `%s' ¤òÃÖ¤­°ã¤¨¤Æ¤¤¤Þ¤¹" +#: xcofflink.c:1676 +#, fuzzy +msgid "%B: csect `%s' not in enclosing section" +msgstr "%s: csect `%s' ãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®å›²ã¿ã®ä¸­ã«ã‚ã‚Šã¾ã›ã‚“" -#: xcofflink.c:1948 -#, c-format -msgid "%s: reloc %s:%d not in csect" -msgstr "%s: ºÆÇÛÃÖ %s:%d ¤¬ csect Æâ¤Ë¤¢¤ê¤Þ¤»¤ó" +#: xcofflink.c:1783 +#, fuzzy +msgid "%B: misplaced XTY_LD `%s'" +msgstr "%s: XTY_LD `%s' ã‚’ç½®ãé•ãˆã¦ã„ã¾ã™" -#: xcofflink.c:2083 -#, c-format -msgid "%s: XCOFF shared object when not producing XCOFF output" -msgstr "%s: XCOFF ¤¬ XCOFF ½ÐÎÏÀ¸À®»þ°Ê³°¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò¶¦Í­¤·¤Þ¤·¤¿" +#: xcofflink.c:2102 +#, fuzzy +msgid "%B: reloc %s:%d not in csect" +msgstr "%s: å†é…ç½® %s:%d ㌠csect 内ã«ã‚ã‚Šã¾ã›ã‚“" -#: xcofflink.c:2104 +#: xcofflink.c:3186 #, c-format -msgid "%s: dynamic object with no .loader section" -msgstr "%s: ưŪ¥ª¥Ö¥¸¥§¥¯¥È¤Ë .loader ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó" +msgid "%s: no such symbol" +msgstr "%s: ãã®ã‚ˆã†ãªã‚·ãƒ³ãƒœãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“" -#: xcofflink.c:2749 +#: xcofflink.c:3291 #, c-format -msgid "%s: no such symbol" -msgstr "%s: ¤½¤Î¤è¤¦¤Ê¥·¥ó¥Ü¥ë¤Ï¤¢¤ê¤Þ¤»¤ó" +msgid "warning: attempt to export undefined symbol `%s'" +msgstr "警告: 未定義シンボル `%s' ã‚’ export ã—よã†ã¨ã—ã¦ã„ã¾ã™" -#: xcofflink.c:2890 +#: xcofflink.c:3673 msgid "error: undefined symbol __rtinit" msgstr "" -#: xcofflink.c:3458 -#, c-format -msgid "warning: attempt to export undefined symbol `%s'" -msgstr "·Ù¹ð: ̤ÄêµÁ¥·¥ó¥Ü¥ë `%s' ¤ò export ¤·¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹" +#: xcofflink.c:4052 +#, fuzzy +msgid "%B: loader reloc in unrecognized section `%s'" +msgstr "%s: ローダå†é…ç½®ãŒèªè­˜ã§ããªã„セクション `%s' ã«ã‚ã‚Šã¾ã™" -#: 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:4063 +#, fuzzy +msgid "%B: `%s' in loader reloc but not loader sym" +msgstr "%s: `%s' ãŒãƒ­ãƒ¼ãƒ€å†é…ç½®ã«ã‚ã‚Šã¾ã™ãŒãƒ­ãƒ¼ãƒ€ã‚·ãƒ³ãƒœãƒ«ã§ã¯ã‚ã‚Šã¾ã›ã‚“" -#: 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:4079 +#, fuzzy +msgid "%B: loader reloc in read-only section %A" +msgstr "%s: ローダå†é…ç½®ãŒèª­è¾¼ã¿å°‚用セクション %s ã«ã‚ã‚Šã¾ã™" -#: xcofflink.c:5314 xcofflink.c:6128 +#: xcofflink.c:5097 #, c-format -msgid "%s: `%s' in loader reloc but not loader sym" -msgstr "%s: `%s' ¤¬¥í¡¼¥ÀºÆÇÛÃ֤ˤ¢¤ê¤Þ¤¹¤¬¥í¡¼¥À¥·¥ó¥Ü¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "TOC オーãƒãƒ¼ãƒ•ãƒ­ãƒ¼: 0x%lx > 0x10000 -- コンパイル時㫠-mminimal-toc を試ã—ã¾ã—ょã†" -#: xcofflink.c:5329 -#, c-format -msgid "%s: loader reloc in read-only section %s" -msgstr "%s: ¥í¡¼¥ÀºÆÇÛÃÖ¤¬Æɹþ¤ßÀìÍÑ¥»¥¯¥·¥ç¥ó %s ¤Ë¤¢¤ê¤Þ¤¹" +#: elf32-ia64.c:1110 elf64-ia64.c:1110 +msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch." +msgstr "" -#: elf32-ia64.c:2189 elf64-ia64.c:2189 +#: elf32-ia64.c:2809 elf64-ia64.c:2809 #, fuzzy msgid "@pltoff reloc against local symbol" -msgstr "%s: 0x%lx ¤Ç¤Î CALL16 ºÆÇÛÃÖ¤¬Âç°è¥·¥ó¥Ü¥ë¤òÂоݤȤ·¤Æ¤¤¤Þ¤»¤ó" +msgstr "%s: 0x%lx ã§ã® CALL16 å†é…ç½®ãŒå¤§åŸŸã‚·ãƒ³ãƒœãƒ«ã‚’対象ã¨ã—ã¦ã„ã¾ã›ã‚“" -#: elf32-ia64.c:3413 elf64-ia64.c:3413 +#: elf32-ia64.c:4430 elf64-ia64.c:4430 #, c-format msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" msgstr "" -#: elf32-ia64.c:3424 elf64-ia64.c:3424 +#: elf32-ia64.c:4441 elf64-ia64.c:4441 #, 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" +#: elf32-ia64.c:4708 elf64-ia64.c:4708 +msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" 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:4775 elf64-ia64.c:4775 +#, fuzzy +msgid "%B: @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:4838 elf64-ia64.c:4838 +msgid "%B: linking non-pic code in a position independent executable" +msgstr "" -#: elf32-ia64.c:3908 elf64-ia64.c:3908 -#, c-format -msgid "%s: speculation fixup against undefined weak symbol" +#: elf32-ia64.c:4975 elf64-ia64.c:4975 +msgid "%B: @internal branch to dynamic symbol %s" +msgstr "" + +#: elf32-ia64.c:4977 elf64-ia64.c:4977 +msgid "%B: speculation fixup to dynamic symbol %s" msgstr "" -#: elf32-ia64.c:4092 elf64-ia64.c:4092 +#: elf32-ia64.c:4979 elf64-ia64.c:4979 +#, fuzzy +msgid "%B: @pcrel relocation against dynamic symbol %s" +msgstr "%s: å†é…置タイプ %d (シンボル %s) ãŒä¸æ˜Žã§ã™" + +#: elf32-ia64.c:5176 elf64-ia64.c:5176 #, fuzzy msgid "unsupported reloc" -msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ºÆÇÛÃÖ¥¿¥¤¥×¤Ç¤¹" +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:5214 elf64-ia64.c:5214 +msgid "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'." +msgstr "" -#: elf32-ia64.c:4381 elf64-ia64.c:4381 -#, fuzzy, c-format -msgid "%s: linking big-endian files with little-endian files" +#: elf32-ia64.c:5229 elf64-ia64.c:5229 +msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)." 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:5491 elf64-ia64.c:5491 +msgid "%B: linking trap-on-NULL-dereference with non-trapping files" +msgstr "" -#: 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:5500 elf64-ia64.c:5500 +#, fuzzy +msgid "%B: linking big-endian files with little-endian files" +msgstr "%s: リトルエンディアンã®ãƒ•ã‚¡ã‚¤ãƒ«ã¨ãƒ“ッグエンディアンã®ãƒ•ã‚¡ã‚¤ãƒ«ã¨ã‚’リンクã—よã†ã¨ã—ã¦ã„ã¾ã™" -#: 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 ¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" +#: elf32-ia64.c:5509 elf64-ia64.c:5509 +#, fuzzy +msgid "%B: linking 64-bit files with 32-bit 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" +#: elf32-ia64.c:5518 elf64-ia64.c:5518 +#, fuzzy +msgid "%B: linking constant-gp files with non-constant-gp files" +msgstr "%s: abicall ファイルã«éž abicall ファイルをリンクã—よã†ã¨ã—ã¾ã—ãŸ" + +#: elf32-ia64.c:5528 elf64-ia64.c:5528 +#, fuzzy +msgid "%B: linking auto-pic files with non-auto-pic files" +msgstr "%s: abicall ファイルã«éž abicall ファイルをリンクã—よã†ã¨ã—ã¾ã—ãŸ" -#: peigen.c:979 pepigen.c:979 +#: peigen.c:1002 pepigen.c:1002 pex64igen.c:1002 #, c-format -msgid "%s: reloc overflow 1: 0x%lx > 0xffff" -msgstr "%s: ºÆÇÛÃÖÎΰ褬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿ 1: 0x%lx > 0xffff" +msgid "%s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: 行番å·ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ: 0x%lx > 0xffff" -#: peigen.c:993 pepigen.c:993 +#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 msgid "Export Directory [.edata (or where ever we found it)]" -msgstr "Export ¥Ç¥£¥ì¥¯¥È¥ê [.edata (°¿¤¤¤Ï¤³¤³¤Þ¤Ç¤Ë¸«¤Ä¤±¤¿¾ì½ê)]" +msgstr "Export ディレクトリ [.edata (或ã„ã¯ã“ã“ã¾ã§ã«è¦‹ã¤ã‘ãŸå ´æ‰€)]" -#: peigen.c:994 pepigen.c:994 +#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 msgid "Import Directory [parts of .idata]" -msgstr "Import ¥Ç¥£¥ì¥¯¥È¥ê [.idata ¤ÎÉôʬ]" +msgstr "Import ディレクトリ [.idata ã®éƒ¨åˆ†]" -#: peigen.c:995 pepigen.c:995 +#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 msgid "Resource Directory [.rsrc]" -msgstr "¥ê¥½¡¼¥¹¥Ç¥£¥ì¥¯¥È¥ê [.rsrc]" +msgstr "リソースディレクトリ [.rsrc]" -#: peigen.c:996 pepigen.c:996 +#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 msgid "Exception Directory [.pdata]" -msgstr "Îã³°¥Ç¥£¥ì¥¯¥È¥ê [.pdata]" +msgstr "例外ディレクトリ [.pdata]" -#: peigen.c:997 pepigen.c:997 +#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 msgid "Security Directory" -msgstr "¥»¥­¥å¥ê¥Æ¥£¥Ç¥£¥ì¥¯¥È¥ê" +msgstr "セキュリティディレクトリ" -#: peigen.c:998 pepigen.c:998 +#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 msgid "Base Relocation Directory [.reloc]" -msgstr "´ðËܺÆÇÛÃ֥ǥ£¥ì¥¯¥È¥ê [.reloc]" +msgstr "基本å†é…置ディレクトリ [.reloc]" -#: peigen.c:999 pepigen.c:999 +#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 msgid "Debug Directory" -msgstr "¥Ç¥Ð¥Ã¥°¥Ç¥£¥ì¥¯¥È¥ê" +msgstr "デãƒãƒƒã‚°ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª" -#: peigen.c:1000 pepigen.c:1000 +#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 msgid "Description Directory" -msgstr "µ­½Ò»Ò¥Ç¥£¥ì¥¯¥È¥ê" +msgstr "記述å­ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª" -#: peigen.c:1001 pepigen.c:1001 +#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 msgid "Special Directory" -msgstr "¥¹¥Ú¥·¥ã¥ë¥Ç¥£¥ì¥¯¥È¥ê" +msgstr "スペシャルディレクトリ" -#: peigen.c:1002 pepigen.c:1002 +#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 msgid "Thread Storage Directory [.tls]" -msgstr "¥¹¥ì¥Ã¥Éµ­²±¥Ç¥£¥ì¥¯¥È¥ê [.tls]" +msgstr "スレッド記憶ディレクトリ [.tls]" -#: peigen.c:1003 pepigen.c:1003 +#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 msgid "Load Configuration Directory" -msgstr "¥í¡¼¥ÉÀßÄê¥Ç¥£¥ì¥¯¥È¥ê" +msgstr "ロード設定ディレクトリ" -#: peigen.c:1004 pepigen.c:1004 +#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 msgid "Bound Import Directory" -msgstr "¶­³¦ Import ¥Ç¥£¥ì¥¯¥È¥ê" +msgstr "境界 Import ディレクトリ" -#: peigen.c:1005 pepigen.c:1005 +#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 msgid "Import Address Table Directory" -msgstr "Import ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë¥Ç¥£¥ì¥¯¥È¥ê" +msgstr "インãƒãƒ¼ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹è¡¨ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª" -#: peigen.c:1006 pepigen.c:1006 +#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 msgid "Delay Import Directory" -msgstr "ÃÙ±ä Import ¥Ç¥£¥ì¥¯¥È¥ê" +msgstr "é…延インãƒãƒ¼ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª" -#: peigen.c:1007 peigen.c:1008 pepigen.c:1007 pepigen.c:1008 +#: peigen.c:1043 pepigen.c:1043 pex64igen.c:1043 +msgid "CLR Runtime Header" +msgstr "" + +#: peigen.c:1044 pepigen.c:1044 pex64igen.c:1044 msgid "Reserved" -msgstr "ͽÌóºÑ" +msgstr "予約済" -#: peigen.c:1071 pepigen.c:1071 +#: peigen.c:1104 pepigen.c:1104 pex64igen.c:1104 +#, c-format msgid "" "\n" "There is an import table, but the section containing it could not be found\n" msgstr "" "\n" -"import ¥Æ¡¼¥Ö¥ë¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤³¤ò´Þ¤ó¤Ç¤¤¤ë¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·" -"¤¿\n" +"インãƒãƒ¼ãƒˆè¡¨ãŒã‚ã‚Šã¾ã™ãŒã€ã“ã“ã‚’å«ã‚“ã§ã„るセクションを見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸ\n" -#: peigen.c:1076 pepigen.c:1076 +#: peigen.c:1109 pepigen.c:1109 pex64igen.c:1109 #, c-format msgid "" "\n" "There is an import table in %s at 0x%lx\n" msgstr "" "\n" -"%s Æâ¤Î 0x%lx ¤Ë¤¢¤ë import ¥Æ¡¼¥Ö¥ë¤Ç¤¹\n" +"%s 内㮠0x%lx ã«ã‚ã‚‹ import テーブルã§ã™\n" -#: peigen.c:1113 pepigen.c:1113 +#: peigen.c:1151 pepigen.c:1151 pex64igen.c:1151 #, c-format msgid "" "\n" "Function descriptor located at the start address: %04lx\n" msgstr "" "\n" -"´Ø¿ôµ­½Ò»Ò¤Ï³«»Ï¥¢¥É¥ì¥¹¤Ë°ÌÃÖ¤·¤Æ¤¤¤Þ¤¹: %04lx\n" +"関数記述å­ã¯é–‹å§‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ä½ç½®ã—ã¦ã„ã¾ã™: %04lx\n" -#: peigen.c:1116 pepigen.c:1116 +#: peigen.c:1154 pepigen.c:1154 pex64igen.c:1154 #, c-format msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" -msgstr "\t¥³¡¼¥É¥Ù¡¼¥¹ %08lx toc (loadable/actual) %08lx/%08lx\n" +msgstr "\tコードベース %08lx toc (loadable/actual) %08lx/%08lx\n" -#: peigen.c:1122 pepigen.c:1122 +#: peigen.c:1162 pepigen.c:1162 pex64igen.c:1162 +#, c-format msgid "" "\n" "No reldata section! Function descriptor not decoded.\n" msgstr "" "\n" -"reldata ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó! ´Ø¿ôµ­½Ò»Ò¤¬¥Ç¥³¡¼¥É¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£\n" +"reldata セクションãŒã‚ã‚Šã¾ã›ã‚“! 関数記述å­ãŒãƒ‡ã‚³ãƒ¼ãƒ‰ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚\n" -#: peigen.c:1127 pepigen.c:1127 +#: peigen.c:1167 pepigen.c:1167 pex64igen.c:1167 #, c-format msgid "" "\n" "The Import Tables (interpreted %s section contents)\n" msgstr "" "\n" -"Import ¥Æ¡¼¥Ö¥ë (%s ¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò²ò¼á)\n" +"Import テーブル (%s セクションã®å†…容を解釈)\n" -#: peigen.c:1130 pepigen.c:1130 -#, fuzzy +#: peigen.c:1170 pepigen.c:1170 pex64igen.c:1170 +#, fuzzy, c-format msgid "" " vma: Hint Time Forward DLL First\n" " Table Stamp Chain Name Thunk\n" -msgstr " Table Stamp Chain Name Thunk\n" +msgstr " vma: Hint Time Forward DLL First\n" -#: peigen.c:1180 pepigen.c:1180 +#: peigen.c:1218 pepigen.c:1218 pex64igen.c:1218 #, 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" +"\tDLL å: %s\n" -#: peigen.c:1253 pepigen.c:1253 -msgid "\t>>> Ran out of IAT members!\n" -msgstr "\t>>> IAT ¥á¥ó¥Ð¤òÄɤ¤½Ð¤·¤Þ¤·¤¿!\n" +#: peigen.c:1229 pepigen.c:1229 pex64igen.c:1229 +#, fuzzy, c-format +msgid "\tvma: Hint/Ord Member-Name Bound-To\n" +msgstr "\tvma: Hint/Ord メンãƒå\n" -#: peigen.c:1271 pepigen.c:1271 -msgid "\tThe Import Address Table is identical\n" -msgstr "\tImport Address Table ¤¬Á´¤¯Æ±¤¸¤Ç¤¹\n" +#: peigen.c:1254 pepigen.c:1254 pex64igen.c:1254 +#, fuzzy, c-format +msgid "" +"\n" +"There is a first thunk, but the section containing it could not be found\n" +msgstr "" +"\n" +"import テーブルãŒã‚ã‚Šã¾ã™ãŒã€ã“ã“ã‚’å«ã‚“ã§ã„るセクションを見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸ\n" -#: peigen.c:1343 pepigen.c:1343 +#: peigen.c:1415 pepigen.c:1415 pex64igen.c:1415 +#, c-format msgid "" "\n" "There is an export table, but the section containing it could not be found\n" msgstr "" "\n" -"export ¥Æ¡¼¥Ö¥ë¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤ì¤ò´Þ¤ó¤Ç¤¤¤ë¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·" -"¤¿\n" +"export テーブルãŒã‚ã‚Šã¾ã™ãŒã€ã“れをå«ã‚“ã§ã„るセクションを見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸ\n" + +#: peigen.c:1424 pepigen.c:1424 pex64igen.c:1424 +#, fuzzy, c-format +msgid "" +"\n" +"There is an export table in %s, but it does not fit into that section\n" +msgstr "" +"\n" +"export テーブルãŒã‚ã‚Šã¾ã™ãŒã€ã“れをå«ã‚“ã§ã„るセクションを見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸ\n" -#: peigen.c:1348 pepigen.c:1348 +#: peigen.c:1430 pepigen.c:1430 pex64igen.c:1430 #, c-format msgid "" "\n" "There is an export table in %s at 0x%lx\n" msgstr "" "\n" -"%s ¤Î 0x%lx ¤Ë export ¥Æ¡¼¥Ö¥ë¤¬¤¢¤ê¤Þ¤¹\n" +"%s ã® 0x%lx ã« export テーブルãŒã‚ã‚Šã¾ã™\n" -#: peigen.c:1379 pepigen.c:1379 +#: peigen.c:1458 pepigen.c:1458 pex64igen.c:1458 #, c-format msgid "" "\n" @@ -2550,125 +5904,137 @@ "\n" msgstr "" "\n" -"Export ¥Æ¡¼¥Ö¥ë (%s ¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò²ò¼á)\n" +"Export テーブル (%s セクションã®å†…容を解釈)\n" "\n" -#: peigen.c:1383 pepigen.c:1383 +#: peigen.c:1462 pepigen.c:1462 pex64igen.c:1462 #, c-format msgid "Export Flags \t\t\t%lx\n" -msgstr "Export ¥Õ¥é¥° \t\t\t%lx\n" +msgstr "Export フラグ \t\t\t%lx\n" -#: peigen.c:1386 pepigen.c:1386 +#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 #, c-format msgid "Time/Date stamp \t\t%lx\n" -msgstr "»þ¹ï/ÆüÉÕ¥¹¥¿¥ó¥× \t\t%lx\n" +msgstr "時刻/日付スタンプ \t\t%lx\n" -#: peigen.c:1389 pepigen.c:1389 +#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 #, 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 +#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 +#, c-format msgid "Name \t\t\t\t" -msgstr "̾Á° \t\t\t\t" +msgstr "åå‰ \t\t\t\t" -#: peigen.c:1398 pepigen.c:1398 +#: peigen.c:1477 pepigen.c:1477 pex64igen.c:1477 #, c-format msgid "Ordinal Base \t\t\t%ld\n" -msgstr "½ø¿ô¥Ù¡¼¥¹ \t\t\t%ld\n" +msgstr "åºæ•°ãƒ™ãƒ¼ã‚¹ \t\t\t%ld\n" -#: peigen.c:1401 pepigen.c:1401 +#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 +#, c-format msgid "Number in:\n" -msgstr "³Æ¼ï¤Î¿ôÃÍ:\n" +msgstr "å„種ã®æ•°å€¤:\n" -#: peigen.c:1404 pepigen.c:1404 +#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 #, c-format msgid "\tExport Address Table \t\t%08lx\n" -msgstr "\tExport ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë\t\t%08lx\n" +msgstr "\tExport アドレステーブル\t\t%08lx\n" -#: peigen.c:1408 pepigen.c:1408 +#: peigen.c:1487 pepigen.c:1487 pex64igen.c:1487 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" -msgstr "\t[̾Á°¥Ý¥¤¥ó¥¿/½ø¿ô] ¥Æ¡¼¥Ö¥ë\t%08lx\n" +msgstr "\t[åå‰ãƒã‚¤ãƒ³ã‚¿/åºæ•°] テーブル\t%08lx\n" -#: peigen.c:1411 pepigen.c:1411 +#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 +#, c-format msgid "Table Addresses\n" -msgstr "¥Æ¡¼¥Ö¥ë¥¢¥É¥ì¥¹\n" +msgstr "テーブルアドレス\n" -#: peigen.c:1414 pepigen.c:1414 +#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 +#, c-format msgid "\tExport Address Table \t\t" -msgstr "\tExport ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë\t\t" +msgstr "\tExport アドレステーブル\t\t" -#: peigen.c:1419 pepigen.c:1419 +#: peigen.c:1498 pepigen.c:1498 pex64igen.c:1498 +#, c-format msgid "\tName Pointer Table \t\t" -msgstr "\t̾Á°¥Ý¥¤¥ó¥¿¥Æ¡¼¥Ö¥ë \t\t" +msgstr "\tåå‰ãƒã‚¤ãƒ³ã‚¿ãƒ†ãƒ¼ãƒ–ル \t\t" -#: peigen.c:1424 pepigen.c:1424 +#: peigen.c:1503 pepigen.c:1503 pex64igen.c:1503 +#, c-format msgid "\tOrdinal Table \t\t\t" -msgstr "\t½ø¿ô¥Æ¡¼¥Ö¥ë \t\t\t" +msgstr "\tåºæ•°ãƒ†ãƒ¼ãƒ–ル \t\t\t" -#: peigen.c:1439 pepigen.c:1439 +#: peigen.c:1517 pepigen.c:1517 pex64igen.c:1517 #, c-format msgid "" "\n" "Export Address Table -- Ordinal Base %ld\n" msgstr "" "\n" -"Export ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë -- ½ø¿ô¥Ù¡¼¥¹ %ld\n" +"Export アドレステーブル -- åºæ•°ãƒ™ãƒ¼ã‚¹ %ld\n" -#: peigen.c:1458 pepigen.c:1458 +#: peigen.c:1536 pepigen.c:1536 pex64igen.c:1536 msgid "Forwarder RVA" msgstr "Forwarder RVA" -#: peigen.c:1469 pepigen.c:1469 +#: peigen.c:1547 pepigen.c:1547 pex64igen.c:1547 msgid "Export RVA" msgstr "Export RVA" -#: peigen.c:1476 pepigen.c:1476 +#: peigen.c:1554 pepigen.c:1554 pex64igen.c:1554 +#, c-format msgid "" "\n" "[Ordinal/Name Pointer] Table\n" msgstr "" "\n" -"[½ø¿ô/̾Á°¥Ý¥¤¥ó¥¿] ¥Æ¡¼¥Ö¥ë\n" +"[åºæ•°/åå‰ãƒã‚¤ãƒ³ã‚¿] テーブル\n" -#: peigen.c:1531 pepigen.c:1531 +#: peigen.c:1614 peigen.c:1797 pepigen.c:1614 pepigen.c:1797 pex64igen.c:1614 +#: pex64igen.c:1797 #, c-format msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" -msgstr "·Ù¹ð¡¢.pdata ¥»¥¯¥·¥ç¥ó¥µ¥¤¥º (%ld) ¤¬ %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 +#: peigen.c:1621 pepigen.c:1621 pex64igen.c:1621 +#, c-format msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" -msgstr " vma:\t\t\t³«»Ï¥¢¥É¥ì¥¹ ½ªÎ»¥¢¥É¥ì¥¹ Unwind ¾ðÊó\n" +msgstr " vma:\t\t\t開始アドレス 終了アドレス Unwind 情報\n" -#: peigen.c:1540 pepigen.c:1540 -#, fuzzy +#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 +#, fuzzy, c-format 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" +msgstr " vma:\t\t開始 終了 EH EH PrologEnd 例外\n" -#: peigen.c:1610 pepigen.c:1610 +#: peigen.c:1697 pepigen.c:1697 pex64igen.c:1697 +#, c-format msgid " Register save millicode" -msgstr " ¥ì¥¸¥¹¥¿Êݸ¥ß¥ê¥³¡¼¥É" +msgstr " レジスタä¿å­˜ãƒŸãƒªã‚³ãƒ¼ãƒ‰" -#: peigen.c:1613 pepigen.c:1613 +#: peigen.c:1700 pepigen.c:1700 pex64igen.c:1700 +#, c-format msgid " Register restore millicode" -msgstr " ¥ì¥¸¥¹¥¿Éü¸µ¥ß¥ê¥³¡¼¥É" +msgstr " レジスタ復元ミリコード" -#: peigen.c:1616 pepigen.c:1616 +#: peigen.c:1703 pepigen.c:1703 pex64igen.c:1703 +#, c-format msgid " Glue code sequence" -msgstr " ¥°¥ë¡¼¥³¡¼¥ÉÎó" +msgstr " グルーコード列" + +#: peigen.c:1803 pepigen.c:1803 pex64igen.c:1803 +#, c-format +msgid "" +" vma:\t\tBegin Prolog Function Flags Exception EH\n" +" \t\tAddress Length Length 32b exc Handler Data\n" +msgstr "" -#: peigen.c:1668 pepigen.c:1668 +#: peigen.c:1929 pepigen.c:1929 pex64igen.c:1929 +#, c-format msgid "" "\n" "\n" @@ -2676,173 +6042,367 @@ msgstr "" "\n" "\n" -"PE ¥Õ¥¡¥¤¥ë¥Ù¡¼¥¹ºÆÇÛÃÖ (.reloc ¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò²ò¼á)\n" +"PE ファイルベースå†é…ç½® (.reloc セクションã®å†…容を解釈)\n" -#: peigen.c:1698 pepigen.c:1698 +#: peigen.c:1958 pepigen.c:1958 pex64igen.c:1958 #, 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" +"仮想アドレス: %08lx ãƒãƒ£ãƒ³ã‚¯ã‚µã‚¤ã‚º %ld (0x%lx) fixups ã®å€‹æ•° %ld\n" -#: peigen.c:1711 pepigen.c:1711 +#: peigen.c:1971 pepigen.c:1971 pex64igen.c:1971 #, c-format msgid "\treloc %4d offset %4x [%4lx] %s" -msgstr "\treloc %4d ¥ª¥Õ¥»¥Ã¥È %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 +#: peigen.c:2010 pepigen.c:2010 pex64igen.c:2010 #, c-format msgid "" "\n" "Characteristics 0x%x\n" msgstr "" "\n" -"¸ÇÍ­ 0x%x\n" +"固有 0x%x\n" + +#: peigen.c:2310 pepigen.c:2310 pex64igen.c:2310 +msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing" +msgstr "" + +#: peigen.c:2330 pepigen.c:2330 pex64igen.c:2330 +msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing" +msgstr "" + +#: peigen.c:2351 pepigen.c:2351 pex64igen.c:2351 +msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing" +msgstr "" + +#: peigen.c:2371 pepigen.c:2371 pex64igen.c:2371 +msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing" +msgstr "" + +#: peigen.c:2413 pepigen.c:2413 pex64igen.c:2413 +msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing" +msgstr "" + +#: peigen.c:2436 pepigen.c:2436 pex64igen.c:2436 +msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing" +msgstr "" + +#~ msgid "Can't Make it a Short Jump" +#~ msgstr "短ã„ジャンプを行ã†ã“ã¨ãŒã§ãã¾ã›ã‚“" + +#~ msgid "Exceeds Long Jump Range" +#~ msgstr "é•·ã„ジャンプã®ç¯„囲を超ãˆã¦ã„ã¾ã™" + +#~ msgid "Absolute address Exceeds 16 bit Range" +#~ msgstr "絶対アドレス㌠16 bit ã®ç¯„囲を超ãˆã¦ã„ã¾ã™" + +#~ msgid "Absolute address Exceeds 8 bit Range" +#~ msgstr "絶対アドレス㌠8 bit ã®ç¯„囲を超ãˆã¦ã„ã¾ã™" + +#~ msgid "Unrecognized Reloc Type" +#~ msgstr "èªè­˜ã§ããªã„å†é…置型ã§ã™" + +#, fuzzy +#~ msgid "%B: %A+0x%lx: jump to stub routine which is not jal" +#~ msgstr "%s: %s+0x%lx: jal ã§ã¯ãªã„スタブルーãƒãƒ³ã¸ã®ã‚¸ãƒ£ãƒ³ãƒ—ã§ã™" + +#~ msgid "bfd_make_section (%s) failed" +#~ msgstr "bfd_make_section (%s) ãŒå¤±æ•—ã—ã¾ã—ãŸ" + +#~ msgid "bfd_set_section_flags (%s, %x) failed" +#~ msgstr "bfd_set_section_flags (%s, %x) ãŒå¤±æ•—ã—ã¾ã—ãŸ" + +#~ msgid "Size mismatch section %s=%lx, %s=%lx" +#~ msgstr "セクション %s=%lx, %s=%lx ã§ã‚µã‚¤ã‚ºãŒä¸€è‡´ã—ã¾ã›ã‚“" + +#~ msgid "failed to enter %s" +#~ msgstr "%s ã¸å…¥ã‚Œã¾ã›ã‚“ã§ã—ãŸ" + +#~ msgid "No Mem !" +#~ msgstr "メモリãŒã‚ã‚Šã¾ã›ã‚“!" + +#, fuzzy +#~ msgid "reserved STO cmd %d" +#~ msgstr "STO cmd %d ã¯äºˆç´„済ã§ã™" + +#, fuzzy +#~ msgid "reserved OPR cmd %d" +#~ msgstr "OPR cmd %d ã¯äºˆç´„済ã§ã™" + +#, fuzzy +#~ msgid "reserved CTL cmd %d" +#~ msgstr "CTL cmd %d ã¯äºˆç´„済ã§ã™" + +#, fuzzy +#~ msgid "reserved STC cmd %d" +#~ msgstr "STA cmd %d ã¯äºˆç´„済ã§ã™" + +#, fuzzy +#~ msgid "stack-from-image not implemented" +#~ msgstr "Stack-from-image ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#, fuzzy +#~ msgid "stack-entry-mask not fully implemented" +#~ msgstr "Stack-entry-mask ã¯å®Œå…¨ã«ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#~ msgid "PASSMECH not fully implemented" +#~ msgstr "PASSMECH ã¯å®Œå…¨ã«ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#, fuzzy +#~ msgid "stack-local-symbol not fully implemented" +#~ msgstr "Stack-local-symbol ã¯å®Œå…¨ã«ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#, fuzzy +#~ msgid "stack-literal not fully implemented" +#~ msgstr "Stack-literal ã¯å®Œå…¨ã«ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#, fuzzy +#~ msgid "stack-local-symbol-entry-point-mask not fully implemented" +#~ msgstr "Stack-local-symbol-entry-point-mask ã¯å®Œå…¨ã«ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#, fuzzy +#~ msgid "%s: not fully implemented" +#~ msgstr "PASSMECH ã¯å®Œå…¨ã«ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#, fuzzy +#~ msgid "obj code %d not found" +#~ msgstr "オブジェクトコード %d ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#, fuzzy +#~ msgid "Reloc size error in section %s" +#~ msgstr "%s: ローダå†é…ç½®ãŒèª­è¾¼ã¿å°‚用セクション %s ã«ã‚ã‚Šã¾ã™" + +#~ msgid "Missing IHCONST" +#~ msgstr "IHCONST を欠ã„ã¦ã„ã¾ã™" + +#~ msgid "Missing IHIHALF" +#~ msgstr "IHIHALF を欠ã„ã¦ã„ã¾ã™" + +#~ msgid "missing IHCONST reloc" +#~ msgstr "IHCONST å†é…置を欠ã„ã¦ã„ã¾ã™" + +#~ msgid "missing IHIHALF reloc" +#~ msgstr "IHIHALF å†é…置を欠ã„ã¦ã„ã¾ã™" #~ msgid "GP relative relocation when GP not defined" -#~ msgstr "GP ¤¬Ì¤ÄêµÁ¤Î»þ¤Î GP ´ØÏ¢ºÆÇÛÃ֤Ǥ¹" +#~ msgstr "GP ãŒæœªå®šç¾©ã®æ™‚ã® GP 関連å†é…ç½®ã§ã™" + +#~ msgid " first occurrence: %s: arm call to thumb" +#~ msgstr " åˆå›žç™ºç”Ÿ: %s: arm ã® thumb 呼ã³å‡ºã—" + +#~ msgid " first occurrence: %s: thumb call to arm" +#~ msgstr " åˆå›žç™ºç”Ÿ: %s: thumb ã® arm 呼ã³å‡ºã—" + +#~ msgid " consider relinking with --support-old-code enabled" +#~ msgstr " --support-old-code を有効ã«ã—ã¦å†ãƒªãƒ³ã‚¯ã™ã‚‹ã“ã¨ã‚’考慮ã—ã¦ã¿ã¦ãã ã•ã„" + +#~ msgid "%s: ERROR: passes floats in float registers whereas target %s uses integer registers" +#~ msgstr "%s: エラー: 浮動å°æ•°ãƒ¬ã‚¸ã‚¹ã‚¿ã«æµ®å‹•å°æ•°ã‚’渡ã—ã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚らãšã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ %s ãŒæ•´æ•°ãƒ¬ã‚¸ã‚¹ã‚¿ã‚’使ã£ã¦ã„ã¾ã™" + +#~ msgid "%s: ERROR: passes floats in integer registers whereas target %s uses float registers" +#~ msgstr "%s: エラー: 整数レジスタã«æµ®å‹•å°æ•°ã‚’渡ã—ã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚らãšã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ %s ã¯æµ®å‹•å°æ•°ãƒ¬ã‚¸ã‚¹ã‚¿ã‚’使ã£ã¦ã„ã¾ã™" #~ 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 "reloc against unsupported section" +#~ msgstr "サãƒãƒ¼ãƒˆå¤–ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã«å¯¾ã™ã‚‹å†é…ç½®ã§ã™" + +#~ msgid "Dwarf Error: Can't find .debug_abbrev section." +#~ msgstr "Dwarf エラー: .debug_abbrev セクションを見ã¤ã‘られã¾ã›ã‚“。" + +#~ msgid "Dwarf Error: Abbrev offset (%u) bigger than abbrev size (%u)." +#~ msgstr "Dwarf エラー: abbrev オフセット (%u) ㌠abbrev サイズ (%u) より大ãã„ã§ã™ã€‚" + +#~ 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 ¥Õ¥é¥°¤ò¥¯¥ê¥¢¤·¤Þ¤¹" +#~ msgstr "警告: è¦æ±‚外ã®ãŸã‚ %s ã® interwork フラグをクリアã—ã¾ã™" -#~ msgid "float" -#~ msgstr "ÉâÆ°¾®¿ô" +#~ msgid "Error: %s compiled for EABI version %d, whereas %s is compiled for version %d" +#~ msgstr "エラー: %s 㯠EABI ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d 用ã«ã‚³ãƒ³ãƒ‘イルã•ã‚ŒãŸã«ã‚‚ã‹ã‹ã‚らãšã€%s ãŒãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d 用ã«ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¾ã—ãŸ" #~ msgid "integer" -#~ msgstr "À°¿ô" +#~ msgstr "æ•´æ•°" #~ msgid "soft" -#~ msgstr "¥½¥Õ¥È" +#~ msgstr "ソフト" #~ msgid "hard" -#~ msgstr "¥Ï¡¼¥É" +#~ msgstr "ãƒãƒ¼ãƒ‰" #~ msgid "Warning: %s %s interworking, whereas %s %s" -#~ msgstr "·Ù¹ð: %s ¤Ï interworking ¤ò%s¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬%s" +#~ msgstr "警告: %s 㯠interworking ã‚’%sã«ã‚‚ã‹ã‹ã‚らãšã€%s ãŒ%s" #~ msgid "supports" -#~ msgstr "¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë" +#~ msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹" #~ msgid "does not" -#~ msgstr "¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó" +#~ msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" -#~ msgid "does" -#~ msgstr "¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹" +#~ msgid " [APCS-26]" +#~ msgstr " [APCS-26]" + +#~ msgid " [APCS-32]" +#~ msgstr " [APCS-32]" #~ msgid "%s(%s+0x%lx): cannot find stub entry %s" -#~ msgstr "%s(%s+0x%lx): ¥¹¥¿¥Ö¥¨¥ó¥È¥ê %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" +#~ msgstr "%s(%s+0x%lx): %s ã‚’å†é…ç½®ã§ãã¾ã›ã‚“。-ffunction-sections を付ã‘ã¦å†ã‚³ãƒ³ãƒ‘イルã—ã¾ã—ょã†" + +#~ msgid "%s(%s+0x%lx): fixing %s" +#~ msgstr "%s(%s+0x%lx): %s を修復ã—ã¾ã™" + +#~ msgid "Linking mips16 objects into %s format is not supported" +#~ msgstr "%s å½¢å¼ã¸ã® mips16 オブジェクトをリンクã™ã‚‹ã“ã¨ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“" + +#~ msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" +#~ msgstr "%s: ISA (-mips%d) ãŒä»¥å‰ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ« (-mips%d) ã¨ä¸€è‡´ã—ã¾ã›ã‚“" + +#~ msgid "%s: ISA mismatch (%d) with previous modules (%d)" +#~ msgstr "%s: ISA (%d) ãŒä»¥å‰ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ« (%d) ã¨ä¸€è‡´ã—ã¾ã›ã‚“" + +#~ msgid " [mips1]" +#~ msgstr " [mips1]" + +#~ msgid " [mips2]" +#~ msgstr " [mips2]" + +#~ msgid " [mips3]" +#~ msgstr " [mips3]" + +#~ msgid " [mips4]" +#~ msgstr " [mips4]" + +#~ msgid " [mips5]" +#~ msgstr " [mips5]" + +#~ msgid " [mips32]" +#~ msgstr " [mips32]" + +#~ msgid " [mips64]" +#~ msgstr " [mips64]" + +#~ msgid " [32bitmode]" +#~ msgstr " [32ビットモード]" + +#~ msgid "%s: Unknown special linker type %d" +#~ msgstr "%s: スペシャルリンカタイプ %d ãŒä¸æ˜Žã§ã™" + +#~ msgid "v850ea architecture" +#~ msgstr "v850ea アーキテクãƒãƒ£" + +#~ msgid "%s: check_relocs: unhandled reloc type %d" +#~ msgstr "%s: check_relocs: å†é…置タイプ %d ã¯å–り扱ã‚ã‚Œã¾ã›ã‚“" + +#~ msgid "creating section symbol, name = %s, value = 0x%.8lx, index = %d, section = 0x%.8lx\n" +#~ msgstr "セクションシンボルを作æˆã—ã¾ã™, åå‰ = %s, 値 = 0x%.8lx, 索引 = %d, セクション = 0x%.8lx\n" + +#~ msgid "%s: Not enough room for program headers (allocated %u, need %u)" +#~ msgstr "%s: プログラムヘッダ用ã®ç©ºé–“ãŒä¸å分ã§ã™ (確ä¿æ¸ˆ %u, è¦ %u)" + +#~ msgid "Error: First section in segment (%s) starts at 0x%x" +#~ msgstr "エラー: セグメント (%s) ã®æœ€åˆã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãŒ 0x%x ã§å§‹ã¾ã£ã¦ã„ã‚‹" #~ msgid " whereas segment starts at 0x%x" -#~ msgstr " ¤Ë¤â¤«¤«¤ï¤é¤º¡¢¥»¥°¥á¥ó¥È¤¬ 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 "%s: Section %s is already to large to put hole of %ld bytes in" +#~ msgstr "%s: æ—¢ã«ã‚»ã‚¯ã‚·ãƒ§ãƒ³ %s ã¯å¤§ãã™ãŽã¦ %ld ãƒã‚¤ãƒˆã® hole ã‚’ç½®ã‘ã¾ã›ã‚“" + +#~ msgid "%s: reloc overflow 1: 0x%lx > 0xffff" +#~ msgstr "%s: å†é…置領域ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—㟠1: 0x%lx > 0xffff" -#~ 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 " Table Stamp Chain Name Thunk\n" +#~ msgstr " Table Stamp Chain Name Thunk\n" -#~ msgid " vma: Hint Time Forward DLL First\n" -#~ msgstr " vma: Hint Time Forward DLL First\n" +#~ msgid "\tThe Import Address Table (difference found)\n" +#~ msgstr "\tImport アドレステーブル (差異を発見)\n" + +#~ msgid "\t>>> Ran out of IAT members!\n" +#~ msgstr "\t>>> IAT メンãƒã‚’追ã„出ã—ã¾ã—ãŸ!\n" + +#~ msgid "\tThe Import Address Table is identical\n" +#~ msgstr "\tImport Address Table ãŒå…¨ãåŒã˜ã§ã™\n" #~ msgid " \t\tAddress Address Handler Data Address Mask\n" -#~ msgstr " \t\t¥¢¥É¥ì¥¹ ¥¢¥É¥ì¥¹ ¥Ï¥ó¥É¥é ¥Ç¡¼¥¿ ¥¢¥É¥ì¥¹ ¥Þ¥¹¥¯\n" +#~ msgstr " \t\tアドレス アドレス ãƒãƒ³ãƒ‰ãƒ© データ アドレス マスク\n" #~ msgid "ETIR_S_C_STO_GBL: no symbol \"%s\"" -#~ msgstr "ETIR_S_C_STO_GBL: ¥·¥ó¥Ü¥ë \"%s\" ¤¬¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_STO_GBL: シンボル \"%s\" ãŒã‚ã‚Šã¾ã›ã‚“" #~ msgid "ETIR_S_C_STO_CA: no symbol \"%s\"" -#~ msgstr "ETIR_S_C_STO_CA: ¥·¥ó¥Ü¥ë \"%s\" ¤¬¤¢¤ê¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_STO_CA: シンボル \"%s\" ãŒã‚ã‚Šã¾ã›ã‚“" #~ msgid "ETIR_S_C_STO_RB/AB: Not supported" -#~ msgstr "ETIR_S_C_STO_RB/AB: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ 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: ¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_STO_LP_PSB: サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "ETIR_S_C_OPR_INSV: Not supported" -#~ msgstr "ETIR_S_C_OPR_INSV: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_OPR_INSV: サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "ETIR_S_C_OPR_USH: Not supported" -#~ msgstr "ETIR_S_C_OPR_USH: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_OPR_USH: サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "ETIR_S_C_OPR_ROT: Not supported" -#~ msgstr "ETIR_S_C_OPR_ROT: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_OPR_ROT: サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "ETIR_S_C_OPR_REDEF: Not supported" -#~ msgstr "ETIR_S_C_OPR_REDEF: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_OPR_REDEF: サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "ETIR_S_C_OPR_DFLIT: Not supported" -#~ msgstr "ETIR_S_C_OPR_DFLIT: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_OPR_DFLIT: サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "ETIR_S_C_STC_LP: not supported" -#~ msgstr "ETIR_S_C_STC_LP: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_STC_LP: サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "ETIR_S_C_STC_GBL: not supported" -#~ msgstr "ETIR_S_C_STC_GBL: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_STC_GBL: サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "ETIR_S_C_STC_GCA: not supported" -#~ msgstr "ETIR_S_C_STC_GCA: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_STC_GCA: サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "ETIR_S_C_STC_PS: not supported" -#~ msgstr "ETIR_S_C_STC_PS: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "ETIR_S_C_STC_PS: サãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "Unimplemented STO cmd %d" -#~ msgstr "STO cmd %d ¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +#~ msgstr "STO cmd %d ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" #~ msgid "TIR_S_C_OPR_ASH incomplete" -#~ msgstr "TIR_S_C_OPR_ASH ¤ÏÉÔ´°Á´¤Ç¤¹" +#~ msgstr "TIR_S_C_OPR_ASH ã¯ä¸å®Œå…¨ã§ã™" #~ msgid "TIR_S_C_OPR_USH incomplete" -#~ msgstr "TIR_S_C_OPR_USH ¤ÏÉÔ´°Á´¤Ç¤¹" +#~ msgstr "TIR_S_C_OPR_USH ã¯ä¸å®Œå…¨ã§ã™" #~ msgid "TIR_S_C_OPR_ROT incomplete" -#~ msgstr "TIR_S_C_OPR_ROT ¤ÏÉÔ´°Á´¤Ç¤¹" +#~ msgstr "TIR_S_C_OPR_ROT ã¯ä¸å®Œå…¨ã§ã™" #~ msgid "TIR_S_C_OPR_REDEF not supported" -#~ msgstr "TIR_S_C_OPR_REDEF ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "TIR_S_C_OPR_REDEF ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "TIR_S_C_OPR_DFLIT not supported" -#~ msgstr "TIR_S_C_OPR_DFLIT ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" +#~ msgstr "TIR_S_C_OPR_DFLIT ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“" #~ msgid "TIR_S_C_CTL_DFLOC not fully implemented" -#~ msgstr "TIR_S_C_CTL_DFLOC ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +#~ msgstr "TIR_S_C_CTL_DFLOC ã¯å®Œå…¨ã«ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" #~ msgid "TIR_S_C_CTL_STLOC not fully implemented" -#~ msgstr "TIR_S_C_CTL_STLOC ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +#~ msgstr "TIR_S_C_CTL_STLOC ã¯å®Œå…¨ã«ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" #~ msgid "TIR_S_C_CTL_STKDL not fully implemented" -#~ msgstr "TIR_S_C_CTL_STKDL ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" +#~ msgstr "TIR_S_C_CTL_STKDL ã¯å®Œå…¨ã«ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“" Binary files /tmp/wqm3boRCeK/crash-5.1.6/=unpacked-tar1=/bfd/po/ru.gmo and /tmp/OqnMAz5teu/crash-6.1.6/=unpacked-tar1=/bfd/po/ru.gmo differ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/ru.po crash-6.1.6/=unpacked-tar1=/bfd/po/ru.po --- crash-5.1.6/=unpacked-tar1=/bfd/po/ru.po 2009-06-15 08:52:20.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/ru.po 2010-11-10 14:39:09.000000000 +0000 @@ -1,198 +1,204 @@ -# translation of bfd-2.19.1.ru.po to Russian -# Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc. +# translation of bfd-2.20.ru.po to Russian +# Copyright (C) 2003, 2005, 2006, 2009 Free Software Foundation, Inc. # This file is distributed under the same license as the binutils package. # -# Yuri Kozlov , 2009. +# Yuri Kozlov , 2009, 2010. msgid "" msgstr "" -"Project-Id-Version: bfd 2.19.1\n" +"Project-Id-Version: bfd 2.20.90\n" "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" -"POT-Creation-Date: 2008-09-09 15:56+0930\n" -"PO-Revision-Date: 2009-06-12 19:41+0400\n" +"POT-Creation-Date: 2010-11-05 11:31+0100\n" +"PO-Revision-Date: 2010-11-10 11:25+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: aout-adobe.c:127 msgid "%B: Unknown section type in a.out.adobe file: %x\n" -msgstr "%B: ÐеизвеÑтный тип раздела в файле a.out.adobe: %x\n" +msgstr "%B: неизвеÑтный тип раздела в файле a.out.adobe: %x\n" -#: aout-cris.c:204 +#: aout-cris.c:199 #, c-format msgid "%s: Invalid relocation type exported: %d" -msgstr "%s: ЭкÑпортирован неверный тип перемещениÑ: %d" +msgstr "%s: ÑкÑпортирован неверный тип перемещениÑ: %d" -#: aout-cris.c:247 +#: aout-cris.c:242 msgid "%B: Invalid relocation type imported: %d" msgstr "%s: Импортирован неверный тип перемещениÑ: %d" -#: aout-cris.c:258 +#: aout-cris.c:253 msgid "%B: Bad relocation record imported: %d" msgstr "%B: Импортирована Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ о перемещении: %d" -#: aoutx.h:1268 aoutx.h:1604 +#: aoutx.h:1273 aoutx.h:1611 #, c-format msgid "%s: can not represent section `%s' in a.out object file format" msgstr "%s: Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ´Ñтавить раздел `%s' в объектном файле формата a.out" -#: aoutx.h:1570 +#: aoutx.h:1577 #, c-format msgid "%s: can not represent section for symbol `%s' in a.out object file format" msgstr "%s: Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€ÐµÐ´Ñтавить раздел Ð´Ð»Ñ Ñимвола `%s' в объектном файле формата a.out" -#: aoutx.h:1572 +#: aoutx.h:1579 vms-alpha.c:7649 msgid "*unknown*" msgstr "*неизвеÑтно*" -#: aoutx.h:3989 aoutx.h:4315 +#: aoutx.h:4007 aoutx.h:4333 msgid "%P: %B: unexpected relocation type\n" msgstr "%P: %B: неожиданный тип перемещениÑ\n" -#: aoutx.h:5349 +#: aoutx.h:5364 #, c-format msgid "%s: relocatable link from %s to %s not supported" msgstr "%s: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð°Ñ ÑÑылка из %s в %s не поддерживаетÑÑ" -#: archive.c:2046 +#: archive.c:2125 msgid "Warning: writing archive was slow: rewriting timestamp\n" msgstr "Предупреждение: Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ в архив: обновлÑетÑÑ Ð¼ÐµÑ‚ÐºÐ° времени\n" -#: archive.c:2309 +#: archive.c:2416 msgid "Reading archive file mod timestamp" msgstr "Чтение метки времени архивного файла mod" -#: archive.c:2333 +#: archive.c:2440 msgid "Writing updated armap timestamp" msgstr "ЗапиÑÑŒ обновлённой метки времени armap" -#: bfd.c:368 +#: bfd.c:395 msgid "No error" msgstr "Ðет ошибки" -#: bfd.c:369 +#: bfd.c:396 msgid "System call error" msgstr "Ошибка ÑиÑтемного вызова" -#: bfd.c:370 +#: bfd.c:397 msgid "Invalid bfd target" msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñ†ÐµÐ»ÑŒ bfd" -#: bfd.c:371 +#: bfd.c:398 msgid "File in wrong format" msgstr "Файл в неправильном формате" -#: bfd.c:372 +#: bfd.c:399 msgid "Archive object file in wrong format" msgstr "Ðрхивный объектный файл в неправильном формате" -#: bfd.c:373 +#: bfd.c:400 msgid "Invalid operation" msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ" -#: bfd.c:374 +#: bfd.c:401 msgid "Memory exhausted" msgstr "ЗакончилаÑÑŒ памÑÑ‚ÑŒ" -#: bfd.c:375 +#: bfd.c:402 msgid "No symbols" msgstr "Ðет Ñимволов" -#: bfd.c:376 +#: bfd.c:403 msgid "Archive has no index; run ranlib to add one" msgstr "Ðрхив без индекÑа; запуÑк ranlib Ð´Ð»Ñ ÑозданиÑ" -#: bfd.c:377 +#: bfd.c:404 msgid "No more archived files" msgstr "Ðрхивные файлы закончилиÑÑŒ" -#: bfd.c:378 +#: bfd.c:405 msgid "Malformed archive" msgstr "ИÑкажённый архив" -#: bfd.c:379 +#: bfd.c:406 msgid "File format not recognized" msgstr "Формат файла не раÑпознан" -#: bfd.c:380 +#: bfd.c:407 msgid "File format is ambiguous" msgstr "Формат файла неоднозначен" -#: bfd.c:381 +#: bfd.c:408 msgid "Section has no contents" msgstr "Раздел не имеет Ñодержимого" -#: bfd.c:382 +#: bfd.c:409 msgid "Nonrepresentable section on output" msgstr "Раздел, непредÑтавимый Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð°" -#: bfd.c:383 +#: bfd.c:410 msgid "Symbol needs debug section which does not exist" msgstr "Ð”Ð»Ñ Ñимвола требуетÑÑ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ раздел, но его не ÑущеÑтвует" -#: bfd.c:384 +#: bfd.c:411 msgid "Bad value" msgstr "Ðекорректное значение" -#: bfd.c:385 +#: bfd.c:412 msgid "File truncated" msgstr "Файл уÑечён" -#: bfd.c:386 +#: bfd.c:413 msgid "File too big" msgstr "Файл Ñлишком большой" -#: bfd.c:387 +#: bfd.c:414 #, c-format msgid "Error reading %s: %s" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ %s: %s" -#: bfd.c:388 +#: bfd.c:415 msgid "#" msgstr "#<Ðеверный код ошибки>" -#: bfd.c:912 +#: bfd.c:939 #, c-format msgid "BFD %s assertion fail %s:%d" msgstr "Оператор ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ BFD %s обнаружил ошибку %s:%d" -#: bfd.c:924 +#: bfd.c:951 #, c-format msgid "BFD %s internal error, aborting at %s line %d in %s\n" msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, оÑтанов на %s, Ñтрока %d в %s\n" -#: bfd.c:928 +#: bfd.c:955 #, c-format msgid "BFD %s internal error, aborting at %s line %d\n" msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, оÑтанов на %s, Ñтрока %d\n" -#: bfd.c:930 +#: bfd.c:957 msgid "Please report this bug.\n" msgstr "ПожалуйÑта, Ñообщите об Ñтой ошибке.\n" -#: bfdwin.c:208 +#: bfdwin.c:206 #, c-format msgid "not mapping: data=%lx mapped=%d\n" msgstr "не отображено: данные=%lx отображено=%d\n" -#: bfdwin.c:211 +#: bfdwin.c:209 #, c-format msgid "not mapping: env var not set\n" msgstr "не отображено: Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ env не задана\n" -#: binary.c:284 +#: binary.c:271 #, c-format msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." msgstr "Предупреждение: ВыполнÑетÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ раздела `%s' в файл по огромному (Ñ‚.е. отрицательному) Ñмещению 0x%lx." -#: cache.c:222 +#: bout.c:1146 elf-m10300.c:2063 elf32-avr.c:1640 elf32-frv.c:5740 +#: elfxx-sparc.c:2795 reloc.c:5646 reloc16.c:162 elf32-ia64.c:842 +#: elf64-ia64.c:842 +msgid "%P%F: --relax and -r may not be used together\n" +msgstr "%P%F: --relax и -r Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать вмеÑте\n" + +#: cache.c:226 msgid "reopening %B: %s\n" msgstr "переоткрываетÑÑ %B: %s\n" -#: coff-alpha.c:490 +#: coff-alpha.c:491 msgid "" "%B: Cannot handle compressed Alpha binaries.\n" " Use compiler flags, or objZ, to generate uncompressed binaries." @@ -200,42 +206,42 @@ "%B: Ðе удалоÑÑŒ обработать Ñжатые двоичные файлы Alpha.\n" " Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½ÐµÑжатых файлов иÑпользуйте параметры компилÑтора или objZ." -#: coff-alpha.c:647 +#: coff-alpha.c:648 msgid "%B: unknown/unsupported relocation type %d" msgstr "%B: неизвеÑтный/неподдерживаемый тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %d" -#: coff-alpha.c:899 coff-alpha.c:936 coff-alpha.c:2024 coff-mips.c:1003 +#: coff-alpha.c:900 coff-alpha.c:937 coff-alpha.c:2025 coff-mips.c:1003 msgid "GP relative relocation used when GP not defined" msgstr "ИÑпользовано отноÑительное перемещение GP, но GP не определена" -#: coff-alpha.c:1501 +#: coff-alpha.c:1502 msgid "using multiple gp values" msgstr "иÑпользуетÑÑ Ð½ÐµÑколько значений gp" -#: coff-alpha.c:1560 +#: coff-alpha.c:1561 msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH" msgstr "%B: неподдерживаемое перемещение: ALPHA_R_GPRELHIGH" -#: coff-alpha.c:1567 +#: coff-alpha.c:1568 msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW" msgstr "%B: неподдерживаемое перемещение: ALPHA_R_GPRELLOW" -#: coff-alpha.c:1574 elf32-m32r.c:2487 elf64-alpha.c:3970 elf64-alpha.c:4125 -#: elf32-ia64.c:4465 elf64-ia64.c:4465 +#: coff-alpha.c:1575 elf32-m32r.c:2493 elf64-alpha.c:3991 elf64-alpha.c:4140 +#: elf32-ia64.c:4582 elf64-ia64.c:4582 msgid "%B: unknown relocation type %d" msgstr "%B: неизвеÑтный тип перемещениÑ: %d" -#: coff-arm.c:1039 +#: coff-arm.c:1038 #, c-format msgid "%B: unable to find THUMB glue '%s' for `%s'" msgstr "%B: не удалоÑÑŒ найти THUMB-Ñклейку '%s' Ð´Ð»Ñ `%s'" -#: coff-arm.c:1068 +#: coff-arm.c:1067 #, c-format msgid "%B: unable to find ARM glue '%s' for `%s'" msgstr "%B: не удалоÑÑŒ найти ARM-Ñклейку '%s' Ð´Ð»Ñ `%s'" -#: coff-arm.c:1370 elf32-arm.c:5453 +#: coff-arm.c:1369 elf32-arm.c:6501 #, c-format msgid "" "%B(%s): warning: interworking not enabled.\n" @@ -244,7 +250,7 @@ "%B(%s): предупреждение: ÑовмеÑÑ‚Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð° не включена.\n" " первое упоминание: %B: arm-вызов в thumb" -#: coff-arm.c:1460 +#: coff-arm.c:1459 #, c-format msgid "" "%B(%s): warning: interworking not enabled.\n" @@ -255,95 +261,95 @@ " первое упоминание: %B: thumb-вызов в arm\n" " выполните переÑборку Ñ Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ параметром --support-old-code" -#: coff-arm.c:1755 coff-tic80.c:695 cofflink.c:3018 +#: coff-arm.c:1754 coff-tic80.c:695 cofflink.c:3043 msgid "%B: bad reloc address 0x%lx in section `%A'" msgstr "%B: неправильный Ð°Ð´Ñ€ÐµÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ 0x%lx в разделе `%A'" -#: coff-arm.c:2080 +#: coff-arm.c:2079 msgid "%B: illegal symbol index in reloc: %d" msgstr "%B: недопуÑтимый Ñимвольный Ð¸Ð½Ð´ÐµÐºÑ Ð² перемещении: %d" -#: coff-arm.c:2211 +#: coff-arm.c:2210 #, c-format -msgid "ERROR: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" -msgstr "ОШИБКÐ: %B Ñобран Ð´Ð»Ñ APCS-%d, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B Ñобран Ð´Ð»Ñ APCS-%d" +msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" +msgstr "ошибка: %B Ñобран Ð´Ð»Ñ APCS-%d, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B Ñобран Ð´Ð»Ñ APCS-%d" -#: coff-arm.c:2227 elf32-arm.c:8563 +#: coff-arm.c:2226 elf32-arm.c:14105 #, c-format -msgid "ERROR: %B passes floats in float registers, whereas %B passes them in integer registers" -msgstr "ОШИБКÐ: %B передаёт чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой в региÑтрах Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B передаёт их в целочиÑленных региÑтрах" +msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers" +msgstr "ошибка: %B передаёт чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой в региÑтрах Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B передаёт их в целочиÑленных региÑтрах" -#: coff-arm.c:2230 elf32-arm.c:8567 +#: coff-arm.c:2229 elf32-arm.c:14109 #, c-format -msgid "ERROR: %B passes floats in integer registers, whereas %B passes them in float registers" -msgstr "ОШИБКÐ: %B передаёт чиÑла в целочиÑленных региÑтрах, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B передаёт их в региÑтрах Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой" +msgid "error: %B passes floats in integer registers, whereas %B passes them in float registers" +msgstr "ошибка: %B передаёт чиÑла в целочиÑленных региÑтрах, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B передаёт их в региÑтрах Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой" -#: coff-arm.c:2244 +#: coff-arm.c:2243 #, c-format -msgid "ERROR: %B is compiled as position independent code, whereas target %B is absolute position" -msgstr "ОШИБКÐ: %B Ñкомпилирован как позиционно-незавиÑимый код, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº целью %B ÑвлÑетÑÑ ÐºÐ¾Ð´ Ñ Ð°Ð±Ñолютной позицией" +msgid "error: %B is compiled as position independent code, whereas target %B is absolute position" +msgstr "ошибка: %B Ñкомпилирован как позиционно-незавиÑимый код, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº целью %B ÑвлÑетÑÑ ÐºÐ¾Ð´ Ñ Ð°Ð±Ñолютной позицией" -#: coff-arm.c:2247 +#: coff-arm.c:2246 #, c-format -msgid "ERROR: %B is compiled as absolute position code, whereas target %B is position independent" -msgstr "ОШИБКÐ: %B Ñкомпилирован как код Ñ Ð°Ð±Ñолютной позицией, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº целью %B ÑвлÑетÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¾-незавиÑимый код" +msgid "error: %B is compiled as absolute position code, whereas target %B is position independent" +msgstr "ошибка: %B Ñкомпилирован как код Ñ Ð°Ð±Ñолютной позицией, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº целью %B ÑвлÑетÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¾-незавиÑимый код" -#: coff-arm.c:2275 elf32-arm.c:8632 +#: coff-arm.c:2274 elf32-arm.c:14174 #, c-format msgid "Warning: %B supports interworking, whereas %B does not" msgstr "Предупреждение: %B поддерживает ÑовмеÑтную работу, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B нет" -#: coff-arm.c:2278 elf32-arm.c:8638 +#: coff-arm.c:2277 elf32-arm.c:14180 #, c-format msgid "Warning: %B does not support interworking, whereas %B does" msgstr "Предупреждение: %B не поддерживает ÑовмеÑтную работу, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B поддерживает" -#: coff-arm.c:2302 +#: coff-arm.c:2301 #, c-format msgid "private flags = %x:" msgstr "ÑобÑтвенные флаги = %x:" -#: coff-arm.c:2310 elf32-arm.c:8689 +#: coff-arm.c:2309 elf32-arm.c:10492 #, c-format msgid " [floats passed in float registers]" msgstr " [чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой передаютÑÑ Ð² региÑтрах Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой]" -#: coff-arm.c:2312 +#: coff-arm.c:2311 #, c-format msgid " [floats passed in integer registers]" msgstr " [чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой передаютÑÑ Ð² целочиÑленных региÑтрах]" -#: coff-arm.c:2315 elf32-arm.c:8692 +#: coff-arm.c:2314 elf32-arm.c:10495 #, c-format msgid " [position independent]" msgstr " [позиционно-незавиÑимый]" -#: coff-arm.c:2317 +#: coff-arm.c:2316 #, c-format msgid " [absolute position]" msgstr " [Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ позицией]" -#: coff-arm.c:2321 +#: coff-arm.c:2320 #, c-format msgid " [interworking flag not initialised]" msgstr " [флаг ÑовмеÑтной работы не уÑтановлен]" -#: coff-arm.c:2323 +#: coff-arm.c:2322 #, c-format msgid " [interworking supported]" msgstr " [поддерживаетÑÑ ÑовмеÑÑ‚Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°]" -#: coff-arm.c:2325 +#: coff-arm.c:2324 #, c-format msgid " [interworking not supported]" msgstr " [ÑовмеÑÑ‚Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð° не поддерживаетÑÑ]" -#: coff-arm.c:2371 elf32-arm.c:8050 +#: coff-arm.c:2370 elf32-arm.c:9520 #, c-format msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking" msgstr "Предупреждение: Флаг ÑовмеÑтной работы Ð´Ð»Ñ %B не уÑтанавливаетÑÑ, так как так как он уже указывает на неÑовмеÑтную работу" -#: coff-arm.c:2375 elf32-arm.c:8054 +#: coff-arm.c:2374 elf32-arm.c:9524 #, c-format msgid "Warning: Clearing the interworking flag of %B due to outside request" msgstr "Предупреждение: ОчищаетÑÑ Ñ„Ð»Ð°Ð³ ÑовмеÑтной работы Ð´Ð»Ñ %B по внешнему запроÑу" @@ -358,7 +364,7 @@ msgid "Relocation `%s' not yet implemented\n" msgstr "Перемещение `%s' пока не реализовано\n" -#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:4975 +#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5147 msgid "%B: warning: illegal symbol index %ld in relocs" msgstr "%B: предупреждение: недопуÑтимый Ñимвольный Ð¸Ð½Ð´ÐµÐºÑ %ld в перемещениÑÑ…" @@ -366,32 +372,12 @@ msgid "uncertain calling convention for non-COFF symbol" msgstr "неÑÑное Ñоглашение о вызове Ð´Ð»Ñ Ð½Ðµ-COFF Ñимвола" -#: coff-m68k.c:506 elf32-bfin.c:5510 elf32-m68k.c:3938 +#: coff-m68k.c:506 elf32-bfin.c:5678 elf32-cr16.c:2897 elf32-m68k.c:4672 msgid "unsupported reloc type" msgstr "неподдерживаемый тип перемещениÑ" -#: coff-maxq.c:126 -msgid "Can't Make it a Short Jump" -msgstr "Ðевозможно выполнить короткий переход (Short Jump)" - -#: coff-maxq.c:191 -msgid "Exceeds Long Jump Range" -msgstr "Превышен диапазон длинного перехода (Long Jump)" - -#: coff-maxq.c:202 coff-maxq.c:276 -msgid "Absolute address Exceeds 16 bit Range" -msgstr "ÐбÑолютный Ð°Ð´Ñ€ÐµÑ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ за 16-битный диапазон" - -#: coff-maxq.c:240 -msgid "Absolute address Exceeds 8 bit Range" -msgstr "ÐбÑолютный Ð°Ð´Ñ€ÐµÑ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ за 8-битный диапазон" - -#: coff-maxq.c:333 -msgid "Unrecognized Reloc Type" -msgstr "Ðе раÑпознан тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ (Reloc Type)" - -#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:345 elf64-mips.c:1991 -#: elfn32-mips.c:1832 +#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:430 elf32-score7.c:330 +#: elf64-mips.c:2019 elfn32-mips.c:1832 msgid "GP relative relocation when _gp not defined" msgstr "ОтноÑительное перемещение GP, но _gp не определена" @@ -399,17 +385,17 @@ msgid "Unrecognized reloc" msgstr "ÐераÑпознанное перемещение" -#: coff-rs6000.c:2803 +#: coff-rs6000.c:2794 #, c-format msgid "%s: unsupported relocation type 0x%02x" msgstr "%s: неподдерживаемый тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ 0x%02x" -#: coff-rs6000.c:2896 +#: coff-rs6000.c:2887 #, 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:3628 coff64-rs6000.c:2130 +#: coff-rs6000.c:3652 coff64-rs6000.c:2175 msgid "%B: symbol `%s' has unrecognized smclas %d" msgstr "%B: Ñимвол `%s' имеет нераÑпознанный smclas %d" @@ -428,139 +414,151 @@ msgid "ignoring reloc %s\n" msgstr "игнорируетÑÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s\n" -#: coffcode.h:850 +#: coffcode.h:973 msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'" msgstr "%B: предупреждение: COMDAT Ñимвол '%s' не ÑоответÑтвует имени раздела '%s'" #. Generate a warning message rather using the 'unhandled' #. variable as this will allow some .sys files generate by #. other toolchains to be processed. See bugzilla issue 196. -#: coffcode.h:1062 +#: coffcode.h:1197 msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s" msgstr "%B: Предупреждение: ИгнорируетÑÑ Ñ„Ð»Ð°Ð³ раздела IMAGE_SCN_MEM_NOT_PAGED в разделе %s" -#: coffcode.h:1117 +#: coffcode.h:1264 msgid "%B (%s): Section flag %s (0x%x) ignored" msgstr "%B (%s): ИгнорируетÑÑ Ñ„Ð»Ð°Ð³ раздела %s (0x%x)" -#: coffcode.h:2244 +#: coffcode.h:2390 #, c-format msgid "Unrecognized TI COFF target id '0x%x'" msgstr "ÐераÑпознанный идентификатор цели TI COFF '0x%x'" -#: coffcode.h:2559 +#: coffcode.h:2704 msgid "%B: reloc against a non-existant symbol index: %ld" msgstr "%B: перемещение по неÑущеÑтвующему Ñимвольному индекÑу: %ld" -#: coffcode.h:4309 +#: coffcode.h:3262 +msgid "%B: too many sections (%d)" +msgstr "%B: Ñлишком много разделов: (%d)" + +#: coffcode.h:3676 +msgid "%B: section %s: string table overflow at offset %ld" +msgstr "%B: раздел %s: переполнение таблицы Ñтрок по Ñмещению %d" + +#: coffcode.h:4481 msgid "%B: warning: line number table read failed" msgstr "%B: предупреждение: не удалоÑÑŒ прочитать таблицу номеров Ñтрок" -#: coffcode.h:4339 +#: coffcode.h:4511 msgid "%B: warning: illegal symbol index %ld in line numbers" msgstr "%B: предупреждение: недопуÑтимый Ñимвольный Ð¸Ð½Ð´ÐµÐºÑ %ld в номерах Ñтрок" -#: coffcode.h:4353 +#: coffcode.h:4525 msgid "%B: warning: duplicate line number information for `%s'" msgstr "%B: предупреждение: повторÑющаÑÑÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ номере Ñтроки Ð´Ð»Ñ `%s'" -#: coffcode.h:4744 +#: coffcode.h:4916 msgid "%B: Unrecognized storage class %d for %s symbol `%s'" msgstr "%B: ÐераÑпознанный клаÑÑ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ %d Ð´Ð»Ñ %s, Ñимвол `%s'" -#: coffcode.h:4870 +#: coffcode.h:5042 msgid "warning: %B: local symbol `%s' has no section" msgstr "предупреждение: %B: локальный Ñимвол `%s' не имеет раздела" -#: coffcode.h:5013 +#: coffcode.h:5186 msgid "%B: illegal relocation type %d at address 0x%lx" msgstr "%B: недопуÑтимый тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %d по адреÑу 0x%lx" -#: coffgen.c:1518 +#: coffgen.c:1573 msgid "%B: bad string table size %lu" msgstr "%B: неправильный размер таблицы Ñтрок %lu" -#: cofflink.c:513 elflink.c:4218 +#: cofflink.c:524 elflink.c:4339 msgid "Warning: type of symbol `%s' changed from %d to %d in %B" msgstr "Предупреждение: в %B изменён тип Ñимвола `%s' Ñ %d на %d" -#: cofflink.c:2296 +#: cofflink.c:2321 msgid "%B: relocs in section `%A', but it has no contents" msgstr "%B: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² разделе `%A', но он не имеет Ñодержимого" -#: cofflink.c:2627 coffswap.h:824 +#: cofflink.c:2652 coffswap.h:826 #, c-format msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" msgstr "%s: %s: переполнение перемещениÑ: 0x%lx > 0xffff" -#: cofflink.c:2636 coffswap.h:810 +#: cofflink.c:2661 coffswap.h:812 #, c-format msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" msgstr "%s: предупреждение: %s: переполнение номера Ñтроки: 0x%lx > 0xffff" #: cpu-arm.c:189 cpu-arm.c:200 -msgid "ERROR: %B is compiled for the EP9312, whereas %B is compiled for XScale" -msgstr "ОШИБКÐ: %B Ñкомпилирована Ð´Ð»Ñ EP9312, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B Ñкомпилирована Ð´Ð»Ñ XScale" +msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale" +msgstr "ошибка: %B Ñкомпилирован Ð´Ð»Ñ EP9312, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B Ñкомпилирован Ð´Ð»Ñ XScale" -#: cpu-arm.c:332 +#: cpu-arm.c:333 #, c-format msgid "warning: unable to update contents of %s section in %s" msgstr "предупреждение: не удалоÑÑŒ обновить Ñодержимое раздела %s в %s" -#: dwarf2.c:424 +#: dwarf2.c:490 #, c-format msgid "Dwarf Error: Can't find %s section." -msgstr "Ошибка Dwarf: Раздел %s не найден." - -#: dwarf2.c:452 -#, c-format -msgid "Dwarf Error: unable to decompress %s section." -msgstr "Ошибка Dwarf: не удалоÑÑŒ раÑжать раздел %s." +msgstr "Ошибка в dwarf: Раздел %s не найден." -#: dwarf2.c:462 +#: dwarf2.c:518 #, c-format msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)." -msgstr "Ошибка Dwarf: Смещение (%lu) больше или равно размеру %s (%lu)." +msgstr "Ошибка в dwarf: Смещение (%lu) больше или равно размеру %s (%lu)." -#: dwarf2.c:849 +#: dwarf2.c:940 #, c-format msgid "Dwarf Error: Invalid or unhandled FORM value: %u." -msgstr "Ошибка Dwarf: ÐедопуÑтимое или необработанное значение FORM: %u." +msgstr "Ошибка в dwarf: ÐедопуÑтимое или необработанное значение FORM: %u." -#: dwarf2.c:1063 +#: dwarf2.c:1191 msgid "Dwarf Error: mangled line number section (bad file number)." -msgstr "Ошибка Dwarf: иÑкажённый раздел номеров Ñтрок (неверный номер файла)." +msgstr "Ошибка в dwarf: иÑкажённый раздел номеров Ñтрок (неверный номер файла)." + +#: dwarf2.c:1443 +#, c-format +msgid "Dwarf Error: Unhandled .debug_line version %d." +msgstr "Ошибка в dwarf: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ %d у .debug_line." + +#: dwarf2.c:1465 +msgid "Dwarf Error: Invalid maximum operations per instruction." +msgstr "Ошибка в dwarf: неверное макÑимальное количеÑтво операций на инÑтрукцию." -#: dwarf2.c:1393 +#: dwarf2.c:1652 msgid "Dwarf Error: mangled line number section." -msgstr "Ошибка Dwarf: иÑкажённый раздел номеров Ñтрок." +msgstr "Ошибка в dwarf: иÑкажённый раздел номеров Ñтрок." -#: dwarf2.c:1726 dwarf2.c:1842 dwarf2.c:2114 +#: dwarf2.c:1978 dwarf2.c:2098 dwarf2.c:2382 #, c-format msgid "Dwarf Error: Could not find abbrev number %u." -msgstr "Ошибка Dwarf: Ðевозможно найти укороченный номер %u." +msgstr "Ошибка в dwarf: Ðевозможно найти укороченный номер %u." -#: dwarf2.c:2075 +#: dwarf2.c:2343 #, c-format -msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information." -msgstr "Ошибка Dwarf: найдена верÑÐ¸Ñ dwarf '%u', Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ‚ только верÑии 2." +msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information." +msgstr "Ошибка в dwarf: найдена верÑÐ¸Ñ dwarf «%u», Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ‚ только верÑии 2, 3 и 4." -#: dwarf2.c:2082 +#: dwarf2.c:2350 #, c-format msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'." -msgstr "Ошибка Dwarf: найден размер адреÑа '%u', Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð½Ðµ умеет работать Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°Ð¼Ð¸ более чем '%u'." +msgstr "Ошибка в dwarf: найден размер адреÑа «%u», Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð½Ðµ умеет работать Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°Ð¼Ð¸ более чем «%u»." -#: dwarf2.c:2105 +#: dwarf2.c:2373 #, c-format msgid "Dwarf Error: Bad abbrev number: %u." -msgstr "Ошибка Dwarf: Ðеверный укороченный номер: %u." +msgstr "Ошибка в dwarf: Ðеверный укороченный номер: %u." -#: ecoff.c:1227 +#: ecoff.c:1237 #, c-format msgid "Unknown basic type %d" msgstr "ÐеизвеÑтный начальный тип %d" -#: ecoff.c:1484 +#: ecoff.c:1494 #, c-format msgid "" "\n" @@ -569,7 +567,7 @@ "\n" " Символ End+1: %ld" -#: ecoff.c:1491 ecoff.c:1494 +#: ecoff.c:1501 ecoff.c:1504 #, c-format msgid "" "\n" @@ -578,7 +576,7 @@ "\n" " Первый Ñимвол: %ld" -#: ecoff.c:1506 +#: ecoff.c:1516 #, c-format msgid "" "\n" @@ -587,7 +585,7 @@ "\n" " Символ End+1: %-7ld Тип: %s" -#: ecoff.c:1513 +#: ecoff.c:1523 #, c-format msgid "" "\n" @@ -596,7 +594,7 @@ "\n" " Локальный Ñимвол: %ld" -#: ecoff.c:1521 +#: ecoff.c:1531 #, c-format msgid "" "\n" @@ -605,7 +603,7 @@ "\n" " struct; Ñимвол End+1: %ld" -#: ecoff.c:1526 +#: ecoff.c:1536 #, c-format msgid "" "\n" @@ -614,7 +612,7 @@ "\n" " union; Ñимвол End+1: %ld" -#: ecoff.c:1531 +#: ecoff.c:1541 #, c-format msgid "" "\n" @@ -623,7 +621,7 @@ "\n" " enum; Ñимвол End+1: %ld" -#: ecoff.c:1537 +#: ecoff.c:1547 #, c-format msgid "" "\n" @@ -632,119 +630,132 @@ "\n" " Тип: %s" -#: elf-attrs.c:582 -msgid "ERROR: %B: Must be processed by '%s' toolchain" -msgstr "ОШИБКÐ: %B: Должно обрабатыватьÑÑ Ñ†ÐµÐ¿Ð¾Ñ‡ÐºÐ¾Ð¹ компилÑции и Ñборки '%s'" - -#: elf-attrs.c:602 elf-attrs.c:621 -msgid "ERROR: %B: Incompatible object tag '%s':%d" -msgstr "ОШИБКÐ: %B: ÐеÑовмеÑтимый объектный тег '%s':%d" +#: elf-attrs.c:569 +msgid "error: %B: Object has vendor-specific contents that must be processed by the '%s' toolchain" +msgstr "ошибка: %B: объект Ñодержит Ñпециальное Ñодержимое производителÑ, которое должно обрабатыватьÑÑ Ð¸Ð½Ñтрументами Ñборки «%s»" + +#: elf-attrs.c:578 +msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'" +msgstr "error: %B: Объектный тег «%d, %s» неÑовмеÑтим Ñ Ñ‚ÐµÐ³Ð¾Ð¼ «%d, %s»" -#: elf-eh-frame.c:866 +#: elf-eh-frame.c:913 msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n" msgstr "%P: ошибка в %B(%A); таблиц .eh_frame_hdr Ñоздана не будет.\n" -#: elf-eh-frame.c:1102 +#: elf-eh-frame.c:1165 msgid "%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n" msgstr "%P: из-за кодировки fde в %B(%A) таблица .eh_frame_hdr Ñоздана не будет.\n" -#: elf-hppa.h:2241 elf-m10300.c:1546 elf32-arm.c:7954 elf32-i386.c:3582 -#: elf32-m32r.c:2598 elf32-m68k.c:3516 elf32-ppc.c:7223 elf32-s390.c:3058 -#: elf32-sh.c:3438 elf32-xtensa.c:3021 elf64-ppc.c:11528 elf64-s390.c:3019 -#: elf64-sh64.c:1648 elf64-x86-64.c:3239 elfxx-sparc.c:3336 -msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" -msgstr "%B(%A+0x%lx): неразрешимое перемещение %s отноÑительно Ñимвола `%s'" - -#: elf-hppa.h:2266 elf-hppa.h:2280 -msgid "%B(%A): warning: unresolvable relocation against symbol `%s'" -msgstr "%B(%A): предупреждение: неразрешимое перемещение отноÑительно Ñимвола `%s'" - -#: elf-m10200.c:456 elf-m10300.c:1609 elf32-avr.c:1250 elf32-bfin.c:3214 -#: elf32-cr16.c:959 elf32-cr16c.c:790 elf32-cris.c:1538 elf32-crx.c:933 -#: elf32-d10v.c:516 elf32-fr30.c:616 elf32-frv.c:4114 elf32-h8300.c:516 -#: elf32-i860.c:1218 elf32-ip2k.c:1499 elf32-iq2000.c:691 elf32-m32c.c:560 -#: elf32-m32r.c:3124 elf32-m68hc1x.c:1135 elf32-mep.c:541 elf32-msp430.c:493 -#: elf32-mt.c:402 elf32-openrisc.c:411 elf32-score.c:2451 elf32-spu.c:4132 -#: elf32-v850.c:1703 elf32-xstormy16.c:948 elf64-mmix.c:1533 +#: elf-ifunc.c:179 +msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%B' can not be used when making an executable; recompile with -fPIE and relink with -pie\n" +msgstr "%F%P: динамичеÑкий STT_GNU_IFUNC Ñимвол `%s' Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼ указателем в `%B' Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать при Ñоздании иÑполнÑемого файла; перекомпилируйте Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIE и перекомпонуйте Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -pie\n" + +#: elf-m10200.c:450 elf-m10300.c:1560 elf32-avr.c:1263 elf32-bfin.c:3193 +#: elf32-cr16.c:1482 elf32-cr16c.c:780 elf32-cris.c:2077 elf32-crx.c:922 +#: elf32-d10v.c:509 elf32-fr30.c:609 elf32-frv.c:4111 elf32-h8300.c:509 +#: elf32-i860.c:1211 elf32-ip2k.c:1468 elf32-iq2000.c:684 elf32-lm32.c:1168 +#: elf32-m32c.c:553 elf32-m32r.c:3111 elf32-m68hc1x.c:1138 elf32-mep.c:534 +#: elf32-microblaze.c:1231 elf32-moxie.c:282 elf32-msp430.c:486 elf32-mt.c:395 +#: elf32-openrisc.c:404 elf32-score.c:2731 elf32-score7.c:2540 +#: elf32-spu.c:5042 elf32-v850.c:2143 elf32-xstormy16.c:941 elf64-mmix.c:1522 msgid "internal error: out of range error" msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ошибка выхода из диапазона" -#: elf-m10200.c:460 elf-m10300.c:1613 elf32-avr.c:1254 elf32-bfin.c:3218 -#: elf32-cr16.c:963 elf32-cr16c.c:794 elf32-cris.c:1542 elf32-crx.c:937 -#: elf32-d10v.c:520 elf32-fr30.c:620 elf32-frv.c:4118 elf32-h8300.c:520 -#: elf32-i860.c:1222 elf32-iq2000.c:695 elf32-m32c.c:564 elf32-m32r.c:3128 -#: elf32-m68hc1x.c:1139 elf32-mep.c:545 elf32-msp430.c:497 -#: elf32-openrisc.c:415 elf32-score.c:2455 elf32-spu.c:4136 elf32-v850.c:1707 -#: elf32-xstormy16.c:952 elf64-mmix.c:1537 elfxx-mips.c:9065 +#: elf-m10200.c:454 elf-m10300.c:1564 elf32-avr.c:1267 elf32-bfin.c:3197 +#: elf32-cr16.c:1486 elf32-cr16c.c:784 elf32-cris.c:2081 elf32-crx.c:926 +#: elf32-d10v.c:513 elf32-fr30.c:613 elf32-frv.c:4115 elf32-h8300.c:513 +#: elf32-i860.c:1215 elf32-iq2000.c:688 elf32-lm32.c:1172 elf32-m32c.c:557 +#: elf32-m32r.c:3115 elf32-m68hc1x.c:1142 elf32-mep.c:538 +#: elf32-microblaze.c:1235 elf32-moxie.c:286 elf32-msp430.c:490 +#: elf32-openrisc.c:408 elf32-score.c:2735 elf32-score7.c:2544 +#: elf32-spu.c:5046 elf32-v850.c:2147 elf32-xstormy16.c:945 elf64-mmix.c:1526 +#: elfxx-mips.c:9186 msgid "internal error: unsupported relocation error" msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ошибка неподдерживаемого перемещениÑ" -#: elf-m10200.c:464 elf32-cr16.c:967 elf32-cr16c.c:798 elf32-crx.c:941 -#: elf32-d10v.c:524 elf32-h8300.c:524 elf32-m32r.c:3132 elf32-m68hc1x.c:1143 -#: elf32-score.c:2459 elf32-spu.c:4140 +#: elf-m10200.c:458 elf32-cr16.c:1490 elf32-cr16c.c:788 elf32-crx.c:930 +#: elf32-d10v.c:517 elf32-h8300.c:517 elf32-lm32.c:1176 elf32-m32r.c:3119 +#: elf32-m68hc1x.c:1146 elf32-microblaze.c:1239 elf32-score.c:2739 +#: elf32-score7.c:2548 elf32-spu.c:5050 msgid "internal error: dangerous error" msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ошибка риÑка" -#: elf-m10200.c:468 elf-m10300.c:1626 elf32-avr.c:1262 elf32-bfin.c:3226 -#: elf32-cr16.c:971 elf32-cr16c.c:802 elf32-cris.c:1550 elf32-crx.c:945 -#: elf32-d10v.c:528 elf32-fr30.c:628 elf32-frv.c:4126 elf32-h8300.c:528 -#: elf32-i860.c:1230 elf32-ip2k.c:1514 elf32-iq2000.c:703 elf32-m32c.c:572 -#: elf32-m32r.c:3136 elf32-m68hc1x.c:1147 elf32-mep.c:553 elf32-msp430.c:505 -#: elf32-mt.c:410 elf32-openrisc.c:423 elf32-score.c:2463 elf32-spu.c:4144 -#: elf32-v850.c:1727 elf32-xstormy16.c:960 elf64-mmix.c:1545 +#: elf-m10200.c:462 elf-m10300.c:1577 elf32-avr.c:1275 elf32-bfin.c:3205 +#: elf32-cr16.c:1494 elf32-cr16c.c:792 elf32-cris.c:2089 elf32-crx.c:934 +#: elf32-d10v.c:521 elf32-fr30.c:621 elf32-frv.c:4123 elf32-h8300.c:521 +#: elf32-i860.c:1223 elf32-ip2k.c:1483 elf32-iq2000.c:696 elf32-lm32.c:1180 +#: elf32-m32c.c:565 elf32-m32r.c:3123 elf32-m68hc1x.c:1150 elf32-mep.c:546 +#: elf32-microblaze.c:1243 elf32-moxie.c:294 elf32-msp430.c:498 elf32-mt.c:403 +#: elf32-openrisc.c:416 elf32-score.c:2748 elf32-score7.c:2552 +#: elf32-spu.c:5054 elf32-v850.c:2167 elf32-xstormy16.c:953 elf64-mmix.c:1534 msgid "internal error: unknown error" msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" -#: elf-m10300.c:1618 +#: elf-m10300.c:1504 elf32-arm.c:9098 elf32-i386.c:4081 elf32-m32r.c:2604 +#: elf32-m68k.c:4156 elf32-ppc.c:8089 elf32-s390.c:3010 elf32-sh.c:4223 +#: elf32-xtensa.c:3067 elf64-ppc.c:13115 elf64-s390.c:2985 elf64-sh64.c:1636 +#: elf64-x86-64.c:3719 elfxx-sparc.c:3806 +msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%B(%A+0x%lx): неразрешимое перемещение %s отноÑительно Ñимвола `%s'" + +#: elf-m10300.c:1569 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)" msgstr "ошибка: неподходÑщий тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкой библиотеки (не указан -fpic?)" -#: elf-m10300.c:1621 +#: elf-m10300.c:1572 msgid "internal error: suspicious relocation type used in shared library" msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: подозрительный тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² динамичеÑкой библиотеке" -#: elf-m10300.c:4397 elf32-arm.c:9578 elf32-cris.c:2403 elf32-hppa.c:1921 -#: elf32-i370.c:506 elf32-i386.c:1807 elf32-m32r.c:1931 elf32-m68k.c:2787 -#: elf32-ppc.c:4693 elf32-s390.c:1687 elf32-sh.c:2583 elf32-vax.c:1055 -#: elf64-ppc.c:6075 elf64-s390.c:1662 elf64-sh64.c:3432 elf64-x86-64.c:1641 -#: elfxx-sparc.c:1828 +#: elf-m10300.c:4372 elf32-arm.c:11392 elf32-cr16.c:2451 elf32-cris.c:3044 +#: elf32-hppa.c:1894 elf32-i370.c:503 elf32-i386.c:2036 elf32-lm32.c:1868 +#: elf32-m32r.c:1927 elf32-m68k.c:3252 elf32-ppc.c:4994 elf32-s390.c:1652 +#: elf32-sh.c:2931 elf32-vax.c:1040 elf64-ppc.c:6483 elf64-s390.c:1635 +#: elf64-sh64.c:3377 elf64-x86-64.c:1871 elfxx-sparc.c:2104 #, c-format msgid "dynamic variable `%s' is zero size" msgstr "динамичеÑÐºÐ°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ `%s' имеет нулевой размер" -#: elf.c:328 +#: elf.c:334 msgid "%B: invalid string offset %u >= %lu for section `%s'" msgstr "%B: недопуÑтимое Ñмещение Ñтроки %u >= %lu Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° `%s'" -#: elf.c:438 +#: elf.c:446 msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" msgstr "%B Ñимвольный номер %lu ÑÑылаетÑÑ Ð½Ð° неÑущеÑтвующий раздел SHT_SYMTAB_SHNDX" -#: elf.c:594 +#: elf.c:602 msgid "%B: Corrupt size field in group section header: 0x%lx" msgstr "%B: Повреждённое поле размера в заголовке раздела групп: 0x%lx" -#: elf.c:630 +#: elf.c:638 msgid "%B: invalid SHT_GROUP entry" msgstr "%B: недопуÑтимый Ñлемент SHT_GROUP" -#: elf.c:700 +#: elf.c:708 msgid "%B: no group info for section %A" msgstr "%B: нет информации о группе Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %A" -#: elf.c:729 elf.c:2976 elflink.c:9746 +#: elf.c:737 elf.c:3090 elflink.c:10062 msgid "%B: warning: sh_link not set for section `%A'" msgstr "%B: предупреждение: не задан sh_link Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° `%A'" -#: elf.c:748 +#: elf.c:756 msgid "%B: sh_link [%d] in section `%A' is incorrect" msgstr "%B: некорректный sh_link [%d] в разделе `%A'" -#: elf.c:783 +#: elf.c:791 msgid "%B: unknown [%d] section `%s' in group [%s]" msgstr "%B: неизвеÑтный [%d] раздел `%s' в группе [%s]" -#: elf.c:1159 +#: elf.c:1041 +msgid "%B: unable to initialize commpress status for section %s" +msgstr "%B: не удалоÑÑŒ инициализировать ÑоÑтоÑние ÑÐ¶Ð°Ñ‚Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s" + +#: elf.c:1050 +msgid "%B: unable to initialize decommpress status for section %s" +msgstr "%B: не удалоÑÑŒ инициализировать ÑоÑтоÑние Ñ€Ð°Ð·Ð¶Ð°Ñ‚Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s" + +#: elf.c:1158 #, c-format msgid "" "\n" @@ -753,7 +764,7 @@ "\n" "Заголовок программы:\n" -#: elf.c:1201 +#: elf.c:1200 #, c-format msgid "" "\n" @@ -762,7 +773,7 @@ "\n" "ДинамичеÑкий раздел:\n" -#: elf.c:1337 +#: elf.c:1336 #, c-format msgid "" "\n" @@ -771,7 +782,7 @@ "\n" "ОбъÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÑ€Ñий:\n" -#: elf.c:1362 +#: elf.c:1361 #, c-format msgid "" "\n" @@ -780,82 +791,82 @@ "\n" "ВерÑии ÑÑылок:\n" -#: elf.c:1367 +#: elf.c:1366 #, c-format msgid " required from %s:\n" msgstr " требуетÑÑ Ð¸Ð· %s:\n" -#: elf.c:1755 +#: elf.c:1773 msgid "%B: invalid link %lu for reloc section %s (index %u)" msgstr "%B: недопуÑÑ‚Ð¸Ð¼Ð°Ñ ÑÑылка %lu Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° перемещений %s (Ð¸Ð½Ð´ÐµÐºÑ %u)" -#: elf.c:1924 +#: elf.c:1943 msgid "%B: don't know how to handle allocated, application specific section `%s' [0x%8x]" msgstr "%B: неизвеÑтно как обработать размещённый, Ñпециальный раздел Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ `%s' [0x%8x]" -#: elf.c:1936 +#: elf.c:1955 msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]" msgstr "%B: неизвеÑтно как обработать Ñпециальный раздел процеÑÑора `%s' [0x%8x]" -#: elf.c:1947 +#: elf.c:1966 msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]" msgstr "%B: неизвеÑтно как обработать Ñпециальный раздел ОС `%s' [0x%8x]" -#: elf.c:1957 +#: elf.c:1976 msgid "%B: don't know how to handle section `%s' [0x%8x]" msgstr "%B: неизвеÑтно как обработать раздел `%s' [0x%8x]" -#: elf.c:2555 +#: elf.c:2603 #, c-format msgid "warning: section `%A' type changed to PROGBITS" msgstr "предупреждение: тип раздела `%A' изменён на PROGBITS" -#: elf.c:2933 +#: elf.c:3047 msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'" msgstr "%B: sh_link раздела `%A' указывает на отброшенный раздел `%A' из `%B'" -#: elf.c:2956 +#: elf.c:3070 msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'" msgstr "%B: sh_link раздела `%A' указывает на удалённый раздел `%A' из `%B'" -#: elf.c:4300 +#: elf.c:4480 msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section" msgstr "%B: Первый раздел в Ñегменте PT_DYNAMIC не ÑвлÑетÑÑ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð¼ .dynamic" -#: elf.c:4327 +#: elf.c:4507 msgid "%B: Not enough room for program headers, try linking with -N" msgstr "%B: ÐедоÑтаточно меÑта Ð´Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð² программы, попытайтеÑÑŒ Ñкомпоновать Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -N" -#: elf.c:4404 -msgid "%B: section %A vma 0x%lx overlaps previous sections" -msgstr "%B: раздел %A vma 0x%lx перекрываетÑÑ Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ разделами" +#: elf.c:4594 +msgid "%B: section %A lma %#lx adjusted to %#lx" +msgstr "%B: lma %#lx раздела %A подогнано к %#lx" -#: elf.c:4499 +#: elf.c:4713 msgid "%B: section `%A' can't be allocated in segment %d" -msgstr "%B: раздел `%A' не может быть раÑпределён в Ñегмент %d" +msgstr "%B: раздел «%A» не может быть раÑпределён в Ñегмент %d" -#: elf.c:4549 +#: elf.c:4761 msgid "%B: warning: allocated section `%s' not in segment" msgstr "%B: предупреждение: раÑпределённый раздел `%s' не в Ñегменте" -#: elf.c:5064 +#: elf.c:5257 msgid "%B: symbol `%s' required but not present" msgstr "%B: требуетÑÑ Ñимвол `%s', но он отÑутÑтвует" -#: elf.c:5403 +#: elf.c:5595 msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n" msgstr "%B: предупреждение: Обнаружен пуÑтой загружаемый Ñегмент, Ñто так задумывалоÑÑŒ?\n" -#: elf.c:6366 +#: elf.c:6622 #, c-format msgid "Unable to find equivalent output section for symbol '%s' from section '%s'" msgstr "Ðе удалоÑÑŒ найти подходÑщее меÑто вывода Ð´Ð»Ñ Ñимвола '%s' из раздела '%s'" -#: elf.c:7346 +#: elf.c:7611 msgid "%B: unsupported relocation type %s" msgstr "%B: неподдерживаемый тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s" -#: elf32-arm.c:2846 elf32-arm.c:2878 +#: elf32-arm.c:3183 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: Thumb call to ARM" @@ -863,40 +874,48 @@ "%B(%s): предупреждение: ÑовмеÑÑ‚Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð° не включена.\n" " первое упоминание: %B: Thumb-вызов в ARM" -#: elf32-arm.c:3041 +#: elf32-arm.c:3226 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: ARM call to Thumb" +msgstr "" +"%B(%s): предупреждение: ÑовмеÑÑ‚Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð° не включена.\n" +" первое упоминание: %B: ARM-вызов в Thumb" + +#: elf32-arm.c:3432 elf32-arm.c:4807 #, c-format msgid "%s: cannot create stub entry %s" msgstr "%s: невозможно Ñоздать Ñлемент заглушки %s" -#: elf32-arm.c:3825 +#: elf32-arm.c:4923 #, c-format msgid "unable to find THUMB glue '%s' for '%s'" msgstr "не удалоÑÑŒ найти THUMB-Ñклейку '%s' Ð´Ð»Ñ '%s'" -#: elf32-arm.c:3859 +#: elf32-arm.c:4959 #, c-format msgid "unable to find ARM glue '%s' for '%s'" msgstr "не удалоÑÑŒ найти ARM-Ñклейку '%s' Ð´Ð»Ñ '%s'" -#: elf32-arm.c:4463 +#: elf32-arm.c:5485 msgid "%B: BE8 images only valid in big-endian mode." msgstr "%B: образы BE8 разрешены только в режиме big-endian." #. Give a warning, but do as the user requests anyway. -#: elf32-arm.c:4678 +#: elf32-arm.c:5715 msgid "%B: warning: selected VFP11 erratum workaround is not necessary for target architecture" msgstr "%B: предупреждение: выбранный обход ошибки VFP11 не требуетÑÑ Ð´Ð»Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ архитектуры" -#: elf32-arm.c:5212 elf32-arm.c:5232 +#: elf32-arm.c:6259 elf32-arm.c:6279 msgid "%B: unable to find VFP11 veneer `%s'" msgstr "%B: невозможно найти Ñклейку VFP11 `%s'" -#: elf32-arm.c:5278 +#: elf32-arm.c:6327 #, c-format msgid "Invalid TARGET2 relocation type '%s'." msgstr "ÐедопуÑтимый в TARGET2 тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ '%s'." -#: elf32-arm.c:5362 +#: elf32-arm.c:6411 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: thumb call to arm" @@ -904,363 +923,425 @@ "%B(%s): предупреждение: interworking not enabled.\n" " первое упоминание: %B: thumb-вызов в arm" -#: elf32-arm.c:6094 +#: elf32-arm.c:7130 msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'." msgstr "\\%B: Предупреждение: Arm инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ BLX в функции Arm '%s'." -#: elf32-arm.c:6418 +#: elf32-arm.c:7541 msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'." msgstr "\\%B: Предупреждение: Thumb инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ BLX в функции thumb '%s'." -#: elf32-arm.c:7095 +#: elf32-arm.c:8223 msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object" msgstr "%B(%A+0x%lx): перемещение R_ARM_TLS_LE32 не разрешено Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ñемого объекта" -#: elf32-arm.c:7310 +#: elf32-arm.c:8438 msgid "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group relocations" msgstr "%B(%A+0x%lx): Ð’ группе перемещений ALU разрешена только инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ ADD или SUB" -#: elf32-arm.c:7350 elf32-arm.c:7437 elf32-arm.c:7520 elf32-arm.c:7605 +#: elf32-arm.c:8478 elf32-arm.c:8565 elf32-arm.c:8648 elf32-arm.c:8733 msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s" msgstr "%B(%A+0x%lx): Переполнение во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ 0x%lx Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ группы %s" -#: elf32-arm.c:7812 elf32-sh.c:3334 elf64-sh64.c:1556 +#: elf32-arm.c:8963 elf32-sh.c:4112 elf64-sh64.c:1544 msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section" msgstr "%B(%A+0x%lx): %s перемещение в разделе SEC_MERGE" -#: elf32-arm.c:7930 elf32-xtensa.c:2759 elf64-ppc.c:10374 +#: elf32-arm.c:9074 elf32-m68k.c:4191 elf32-xtensa.c:2805 elf64-ppc.c:11689 msgid "%B(%A+0x%lx): %s used with TLS symbol %s" msgstr "%B(%A+0x%lx): %s иÑпользуетÑÑ Ñ TLS-Ñимволом %s" -#: elf32-arm.c:7931 elf32-xtensa.c:2760 elf64-ppc.c:10375 +#: elf32-arm.c:9075 elf32-m68k.c:4192 elf32-xtensa.c:2806 elf64-ppc.c:11690 msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s" msgstr "%B(%A+0x%lx): %s иÑпользуетÑÑ Ñ Ð½Ðµ-TLS Ñимволом %s" -#: elf32-arm.c:7988 +#: elf32-arm.c:9132 elf32-tic6x.c:1632 msgid "out of range" msgstr "вне диапазона" -#: elf32-arm.c:7992 +#: elf32-arm.c:9136 elf32-tic6x.c:1636 msgid "unsupported relocation" msgstr "неподдерживаемое перемещение" -#: elf32-arm.c:8000 +#: elf32-arm.c:9144 elf32-tic6x.c:1644 msgid "unknown error" msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" -#: elf32-arm.c:8099 +#: elf32-arm.c:9569 msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it" msgstr "Предупреждение: Ð¡Ð±Ñ€Ð¾Ñ Ñ„Ð»Ð°Ð³Ð° ÑовмеÑтной работы %B, как Ñ Ð½Ð¸Ð¼ был Ñкомпонован код без ÑовмеÑтной работы из %B" -#: elf32-arm.c:8205 -msgid "ERROR: %B uses VFP register arguments, %B does not" -msgstr "ОШИБКÐ: %B иÑпользует региÑтровые аргументы VFP, а %B не иÑпользует" - -#: elf32-arm.c:8254 -msgid "ERROR: %B: Conflicting architecture profiles %c/%c" -msgstr "ОШИБКÐ: %B: Противоречащие архитектурные профили %c/%c" +#: elf32-arm.c:9663 +msgid "%B: Unknown mandatory EABI object attribute %d" +msgstr "%B: ÐеизвеÑтный обÑзательный атрибут EABI-объекта %d" + +#: elf32-arm.c:9671 +msgid "Warning: %B: Unknown EABI object attribute %d" +msgstr "Предупреждение: %B: ÐеизвеÑтный атрибут EABI-объекта %d" + +#: elf32-arm.c:9852 +msgid "error: %B: Unknown CPU architecture" +msgstr "ошибка: %B: ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑÐ¾Ñ€Ð½Ð°Ñ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°" + +#: elf32-arm.c:9890 +msgid "error: %B: Conflicting CPU architectures %d/%d" +msgstr "ошибка: %B: Противоречащие архитектурные профили %d/%d" + +#: elf32-arm.c:9942 +msgid "Error: %B has both the current and legacy Tag_MPextension_use attributes" +msgstr "Ошибка: %B Ñодержит одновременно и текущий и уÑтаревший атрибут Tag_MPextension_use" + +#: elf32-arm.c:9967 +msgid "error: %B uses VFP register arguments, %B does not" +msgstr "ошибка: %B иÑпользует региÑтровые аргументы VFP, а %B не иÑпользует" + +#: elf32-arm.c:10112 +msgid "error: %B: unable to merge virtualization attributes with %B" +msgstr "ошибка: %B: не удалоÑÑŒ объединить атрибуты виртуализации Ñ %B" + +#: elf32-arm.c:10138 +msgid "error: %B: Conflicting architecture profiles %c/%c" +msgstr "ошибка: %B: противоречащие архитектурные профили %c/%c" -#: elf32-arm.c:8274 +#: elf32-arm.c:10239 msgid "Warning: %B: Conflicting platform configuration" msgstr "Предупреждение: %B: Противоречивые наÑтройки платформы" -#: elf32-arm.c:8283 -msgid "ERROR: %B: Conflicting use of R9" -msgstr "ОШИБКÐ: %B: Противоречащее иÑпользование R9" - -#: elf32-arm.c:8295 -msgid "ERROR: %B: SB relative addressing conflicts with use of R9" -msgstr "ОШИБКÐ: %B: противоречащее иÑпользование отноÑительной адреÑации SB и R9" +#: elf32-arm.c:10248 +msgid "error: %B: Conflicting use of R9" +msgstr "ошибка: %B: Противоречащее иÑпользование R9" + +#: elf32-arm.c:10260 +msgid "error: %B: SB relative addressing conflicts with use of R9" +msgstr "ошибка: %B: противоречащее иÑпользование отноÑительной адреÑации SB и R9" -#: elf32-arm.c:8318 +#: elf32-arm.c:10273 msgid "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail" msgstr "предупреждение: %B иÑпользует %u-байтовый wchar_t, Ñ…Ð¾Ñ‚Ñ ÑƒÐ¶Ðµ иÑпользовалÑÑ %u-байтовый wchar_t; иÑпользование значений wchar_t в разных объектах может привеÑти к ошибке" -#: elf32-arm.c:8347 +#: elf32-arm.c:10304 msgid "warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail" msgstr "предупреждение: %B иÑпользует %s enum, Ñ…Ð¾Ñ‚Ñ ÑƒÐ¶Ðµ иÑпользовалÑÑ %s enum; иÑпользование значений enum в разных объектах может привеÑти к ошибке" -#: elf32-arm.c:8360 -msgid "ERROR: %B uses iWMMXt register arguments, %B does not" -msgstr "ОШИБКÐ: %B иÑпользует региÑтровые аргументы iWMMXt, а %B не иÑпользует" - -#: elf32-arm.c:8400 -msgid "Warning: %B: Unknown EABI object attribute %d" -msgstr "Предупреждение: %B: ÐеизвеÑтный атрибут EABI-объекта %d" - -#: elf32-arm.c:8460 -msgid "ERROR: %B is already in final BE8 format" -msgstr "ОШИБКÐ: %B уже в конечном формате BE8" - -#: elf32-arm.c:8536 -msgid "ERROR: Source object %B has EABI version %d, but target %B has EABI version %d" -msgstr "ОШИБКÐ: Объект-иÑточник %B имеет верÑию EABI %d, а цель %B имеет верÑию EABI %d" - -#: elf32-arm.c:8552 -msgid "ERROR: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" -msgstr "ОШИБКÐ: %B Ñкомпилирован Ð´Ð»Ñ APCS-%d, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº цель %B иÑпользует APCS-%d" - -#: elf32-arm.c:8577 -msgid "ERROR: %B uses VFP instructions, whereas %B does not" -msgstr "ОШИБКÐ: %B иÑпользует инÑтрукции VFP, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B не иÑпользует" - -#: elf32-arm.c:8581 -msgid "ERROR: %B uses FPA instructions, whereas %B does not" -msgstr "ОШИБКÐ: %B иÑпользует инÑтрукции FPA, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B не иÑпользует" - -#: elf32-arm.c:8591 -msgid "ERROR: %B uses Maverick instructions, whereas %B does not" -msgstr "ОШИБКÐ: %B иÑпользует инÑтрукции Maverick, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B не иÑпользует" - -#: elf32-arm.c:8595 -msgid "ERROR: %B does not use Maverick instructions, whereas %B does" -msgstr "ОШИБКÐ: %B не иÑпользует инÑтрукции Maverick, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B иÑпользует" - -#: elf32-arm.c:8614 -msgid "ERROR: %B uses software FP, whereas %B uses hardware FP" -msgstr "ОШИБКÐ: %B иÑпользует программную FP, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B иÑпользует аппаратную FP" - -#: elf32-arm.c:8618 -msgid "ERROR: %B uses hardware FP, whereas %B uses software FP" -msgstr "ОШИБКÐ: %B иÑпользует аппаратную FP, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B иÑпользует программную FP" +#: elf32-arm.c:10316 +msgid "error: %B uses iWMMXt register arguments, %B does not" +msgstr "ошибка: %B иÑпользует региÑтровые аргументы iWMMXt, а %B не иÑпользует" + +#: elf32-arm.c:10333 +msgid "error: fp16 format mismatch between %B and %B" +msgstr "ошибка: формат fp16 раÑходитÑÑ Ð² %B и %B" + +#: elf32-arm.c:10357 +msgid "DIV usage mismatch between %B and %B" +msgstr "ИÑпользование DIV раÑходитÑÑ Ð² %B и %B" + +#: elf32-arm.c:10376 +msgid "%B has has both the current and legacy Tag_MPextension_use attributes" +msgstr "%B Ñодержит одновременно и текущий и уÑтаревший атрибут Tag_MPextension_use" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. #. Ignore init flag - it may not be set, despite the flags field containing valid data. -#: elf32-arm.c:8665 elf32-bfin.c:4899 elf32-cris.c:3235 elf32-m68hc1x.c:1279 -#: elf32-m68k.c:774 elf32-score.c:3750 elf32-vax.c:538 elfxx-mips.c:12699 +#: elf32-arm.c:10468 elf32-bfin.c:5065 elf32-cris.c:4162 elf32-m68hc1x.c:1282 +#: elf32-m68k.c:1235 elf32-score.c:3996 elf32-score7.c:3803 elf32-vax.c:528 +#: elfxx-mips.c:12842 #, c-format msgid "private flags = %lx:" msgstr "ÑобÑтвенные флаги = %lx:" -#: elf32-arm.c:8674 +#: elf32-arm.c:10477 #, c-format msgid " [interworking enabled]" msgstr " [ÑовмеÑÑ‚Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð° включена]" -#: elf32-arm.c:8682 +#: elf32-arm.c:10485 #, c-format msgid " [VFP float format]" msgstr " [VFP формат плавающей точки]" -#: elf32-arm.c:8684 +#: elf32-arm.c:10487 #, c-format msgid " [Maverick float format]" msgstr " [Maverick формат плавающей точки]" -#: elf32-arm.c:8686 +#: elf32-arm.c:10489 #, c-format msgid " [FPA float format]" msgstr " [FPA формат плавающей точки]" -#: elf32-arm.c:8695 +#: elf32-arm.c:10498 #, c-format msgid " [new ABI]" msgstr " [новый ABI]" -#: elf32-arm.c:8698 +#: elf32-arm.c:10501 #, c-format msgid " [old ABI]" msgstr " [Ñтарый ABI]" -#: elf32-arm.c:8701 +#: elf32-arm.c:10504 #, c-format msgid " [software FP]" msgstr " [Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ FP]" -#: elf32-arm.c:8710 +#: elf32-arm.c:10513 #, c-format msgid " [Version1 EABI]" msgstr " [ВерÑиÑ1 EABI]" -#: elf32-arm.c:8713 elf32-arm.c:8724 +#: elf32-arm.c:10516 elf32-arm.c:10527 #, c-format msgid " [sorted symbol table]" msgstr " [отÑÐ¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñимволов]" -#: elf32-arm.c:8715 elf32-arm.c:8726 +#: elf32-arm.c:10518 elf32-arm.c:10529 #, c-format msgid " [unsorted symbol table]" msgstr " [неÑÐ¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñимволов]" -#: elf32-arm.c:8721 +#: elf32-arm.c:10524 #, c-format msgid " [Version2 EABI]" msgstr " [ВерÑиÑ2 EABI]" -#: elf32-arm.c:8729 +#: elf32-arm.c:10532 #, c-format msgid " [dynamic symbols use segment index]" msgstr " [динамичеÑкие Ñимволы иÑпользуют Ñегментный индекÑ]" -#: elf32-arm.c:8732 +#: elf32-arm.c:10535 #, c-format msgid " [mapping symbols precede others]" msgstr " [проецируемые Ñимволы указываютÑÑ Ñ€Ð°Ð½ÑŒÑˆÐµ]" -#: elf32-arm.c:8739 +#: elf32-arm.c:10542 #, c-format msgid " [Version3 EABI]" msgstr " [ВерÑиÑ3 EABI]" -#: elf32-arm.c:8743 +#: elf32-arm.c:10546 #, c-format msgid " [Version4 EABI]" msgstr " [ВерÑиÑ4 EABI]" -#: elf32-arm.c:8747 +#: elf32-arm.c:10550 #, c-format msgid " [Version5 EABI]" msgstr " [ВерÑиÑ5 EABI]" -#: elf32-arm.c:8750 +#: elf32-arm.c:10553 #, c-format msgid " [BE8]" msgstr " [BE8]" -#: elf32-arm.c:8753 +#: elf32-arm.c:10556 #, c-format msgid " [LE8]" msgstr " [LE8]" -#: elf32-arm.c:8759 +#: elf32-arm.c:10562 #, c-format msgid " " msgstr " <нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ EABI>" -#: elf32-arm.c:8766 +#: elf32-arm.c:10569 #, c-format msgid " [relocatable executable]" msgstr " [перемещаемый иÑполнÑемый]" -#: elf32-arm.c:8769 +#: elf32-arm.c:10572 #, c-format msgid " [has entry point]" msgstr " [имеет точку входа]" -#: elf32-arm.c:8774 +#: elf32-arm.c:10577 #, c-format msgid "" msgstr "<ÐераÑпознанный набор битов флага>" -#: elf32-arm.c:9013 elf32-i386.c:1236 elf32-s390.c:1006 elf32-xtensa.c:999 -#: elf64-s390.c:961 elf64-x86-64.c:1016 elfxx-sparc.c:1127 +#: elf32-arm.c:10824 elf32-i386.c:1322 elf32-s390.c:1000 elf32-xtensa.c:1009 +#: elf64-s390.c:960 elf64-x86-64.c:1105 elfxx-sparc.c:1370 msgid "%B: bad symbol index: %d" msgstr "%B: неправильный Ñимвольный индекÑ: %d" -#: elf32-arm.c:10125 +#: elf32-arm.c:10946 elf64-x86-64.c:1265 elf64-x86-64.c:1434 elfxx-mips.c:7942 +msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" +msgstr "%B: перемещение %s Ð´Ð»Ñ `%s' не может иÑпользоватьÑÑ Ð¿Ñ€Ð¸ Ñоздании разделÑемого объекта; перекомпилируйте Ñ -fPIC" + +#: elf32-arm.c:11948 #, c-format msgid "Errors encountered processing file %s" msgstr "При обработке файла %s обнаружены ошибки" -#: elf32-arm.c:11526 elf32-arm.c:11548 +#: elf32-arm.c:13334 +msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location" +msgstr "%B: ошибка: заглушка Ð´Ð»Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Cortex-A8 раÑположена в небезопаÑном меÑте" + +#. There's not much we can do apart from complain if this +#. happens. +#: elf32-arm.c:13361 +msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)" +msgstr "%B: ошибка: заглушка Ð´Ð»Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Cortex-A8 находитÑÑ Ð²Ð½Ðµ диапазона (Ñлишком большой входной файл)" + +#: elf32-arm.c:13455 elf32-arm.c:13477 msgid "%B: error: VFP11 veneer out of range" msgstr "%B: ошибка: Ñклейка VFP11 вне диапазона" -#: elf32-avr.c:1258 elf32-bfin.c:3222 elf32-cris.c:1546 elf32-fr30.c:624 -#: elf32-frv.c:4122 elf32-i860.c:1226 elf32-ip2k.c:1510 elf32-iq2000.c:699 -#: elf32-m32c.c:568 elf32-mep.c:549 elf32-msp430.c:501 elf32-mt.c:406 -#: elf32-openrisc.c:419 elf32-v850.c:1711 elf32-xstormy16.c:956 -#: elf64-mmix.c:1541 +#: elf32-arm.c:14002 +msgid "error: %B is already in final BE8 format" +msgstr "ошибка: %B уже в конечном формате BE8" + +#: elf32-arm.c:14078 +msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d" +msgstr "ошибка: Объект-иÑточник %B имеет верÑию EABI %d, а цель %B имеет верÑию EABI %d" + +#: elf32-arm.c:14094 +msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" +msgstr "ошибка: %B Ñкомпилирован Ð´Ð»Ñ APCS-%d, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº цель %B иÑпользует APCS-%d" + +#: elf32-arm.c:14119 +msgid "error: %B uses VFP instructions, whereas %B does not" +msgstr "ошибка: %B иÑпользует инÑтрукции VFP, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B не иÑпользует" + +#: elf32-arm.c:14123 +msgid "error: %B uses FPA instructions, whereas %B does not" +msgstr "ошибка: %B иÑпользует инÑтрукции FPA, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B не иÑпользует" + +#: elf32-arm.c:14133 +msgid "error: %B uses Maverick instructions, whereas %B does not" +msgstr "ошибка: %B иÑпользует инÑтрукции Maverick, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B не иÑпользует" + +#: elf32-arm.c:14137 +msgid "error: %B does not use Maverick instructions, whereas %B does" +msgstr "ошибка: %B не иÑпользует инÑтрукции Maverick, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B иÑпользует" + +#: elf32-arm.c:14156 +msgid "error: %B uses software FP, whereas %B uses hardware FP" +msgstr "ошибка: %B иÑпользует программную FP, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B иÑпользует аппаратную FP" + +#: elf32-arm.c:14160 +msgid "error: %B uses hardware FP, whereas %B uses software FP" +msgstr "ошибка: %B иÑпользует аппаратную FP, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº %B иÑпользует программную FP" + +#: elf32-avr.c:1271 elf32-bfin.c:3201 elf32-cris.c:2085 elf32-fr30.c:617 +#: elf32-frv.c:4119 elf32-i860.c:1219 elf32-ip2k.c:1479 elf32-iq2000.c:692 +#: elf32-m32c.c:561 elf32-mep.c:542 elf32-moxie.c:290 elf32-msp430.c:494 +#: elf32-mt.c:399 elf32-openrisc.c:412 elf32-v850.c:2151 elf32-xstormy16.c:949 +#: elf64-mmix.c:1530 msgid "internal error: dangerous relocation" -msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ошибка риÑка" +msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: опаÑное перемещение" -#: elf32-avr.c:2396 elf32-hppa.c:605 elf32-m68hc1x.c:164 elf64-ppc.c:3983 +#: elf32-avr.c:2400 elf32-hppa.c:598 elf32-m68hc1x.c:166 elf64-ppc.c:4175 msgid "%B: cannot create stub entry %s" msgstr "%B: невозможно Ñоздать Ñлемент заглушки %s" -#: elf32-bfin.c:1585 +#: elf32-bfin.c:1575 msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'" msgstr "%B(%A+0x%lx): неразрешимое перемещение отноÑительно Ñимвола `%s'" -#: elf32-bfin.c:1618 elf32-i386.c:3623 elf32-m68k.c:3557 elf32-s390.c:3110 -#: elf64-s390.c:3071 elf64-x86-64.c:3278 +#: elf32-bfin.c:1608 elf32-i386.c:4123 elf32-m68k.c:4233 elf32-s390.c:3062 +#: elf64-s390.c:3037 elf64-x86-64.c:3759 msgid "%B(%A+0x%lx): reloc against `%s': error %d" msgstr "%B(%A+0x%lx): перемещение к `%s': ошибка %d" -#: elf32-bfin.c:2711 +#: elf32-bfin.c:2707 msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend" msgstr "%B: перемещение `%A+0x%x' ÑÑылаетÑÑ Ð½Ð° Ñимвол `%s' Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ добавлением" -#: elf32-bfin.c:2725 elf32-frv.c:2904 +#: elf32-bfin.c:2721 elf32-frv.c:2901 msgid "relocation references symbol not defined in the module" msgstr "перемещение указывает на неопределённый Ñимвол в модуле" -#: elf32-bfin.c:2822 +#: elf32-bfin.c:2818 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend" msgstr "R_BFIN_FUNCDESC указывает на динамичеÑкий Ñимвол Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ добавлением" -#: elf32-bfin.c:2861 elf32-bfin.c:2987 elf32-frv.c:3641 elf32-frv.c:3762 +#: elf32-bfin.c:2859 elf32-bfin.c:2982 elf32-frv.c:3638 elf32-frv.c:3759 msgid "cannot emit fixups in read-only section" msgstr "невозможно Ñгенерировать меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² разделе только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" -#: elf32-bfin.c:2889 elf32-bfin.c:3036 elf32-frv.c:3672 elf32-frv.c:3806 +#: elf32-bfin.c:2890 elf32-bfin.c:3020 elf32-frv.c:3669 elf32-frv.c:3803 +#: elf32-lm32.c:1103 elf32-sh.c:5021 msgid "cannot emit dynamic relocations in read-only section" msgstr "невозможно Ñгенерировать динамичеÑкие Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² разделе только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" -#: elf32-bfin.c:2945 +#: elf32-bfin.c:2940 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "R_BFIN_FUNCDESC_VALUE указывает на динамичеÑкий Ñимвол Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ добавлением" -#: elf32-bfin.c:3126 +#: elf32-bfin.c:3105 msgid "relocations between different segments are not supported" msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ различными Ñегментами не поддерживаютÑÑ" -#: elf32-bfin.c:3127 +#: elf32-bfin.c:3106 msgid "warning: relocation references a different segment" msgstr "предупреждение: перемещение ÑÑылаетÑÑ Ð½Ð° другой Ñегмент" -#: elf32-bfin.c:4791 elf32-frv.c:6404 +#: elf32-bfin.c:4957 elf32-frv.c:6406 msgid "%B: unsupported relocation type %i" msgstr "%B: неподдерживаемый тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %i" -#: elf32-bfin.c:4944 elf32-frv.c:6812 +#: elf32-bfin.c:5111 elf32-frv.c:6814 #, c-format msgid "%s: cannot link non-fdpic object file into fdpic executable" msgstr "%s: невозможно Ñкомпоновать не-fdpic объектный файл в иÑполнÑемый fdpic" -#: elf32-bfin.c:4948 elf32-frv.c:6816 +#: elf32-bfin.c:5115 elf32-frv.c:6818 #, c-format msgid "%s: cannot link fdpic object file into non-fdpic executable" msgstr "%s: невозможно Ñкомпоновать fdpic объектный файл в иÑполнÑемый не-fdpic" -#: elf32-cris.c:1060 +#: elf32-cris.c:1172 msgid "%B, section %A: unresolvable relocation %s against symbol `%s'" msgstr "%B, раздел %A: неразрешимое перемещение %s у Ñимвола `%s'" -#: elf32-cris.c:1129 +#: elf32-cris.c:1234 msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'" msgstr "%B, раздел %A: Ðет ни PLT ни GOT Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s у Ñимвола `%s'" -#: elf32-cris.c:1131 +#: elf32-cris.c:1236 msgid "%B, section %A: No PLT for relocation %s against symbol `%s'" msgstr "%B, раздел %A: Ðет PLT Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s у Ñимвола `%s'" -#: elf32-cris.c:1137 elf32-cris.c:1269 +#: elf32-cris.c:1242 elf32-cris.c:1375 elf32-cris.c:1635 elf32-cris.c:1718 +#: elf32-cris.c:1871 msgid "[whose name is lost]" msgstr "[чьё Ð¸Ð¼Ñ Ð¿Ð¾Ñ‚ÐµÑ€Ñно]" -#: elf32-cris.c:1255 +#: elf32-cris.c:1361 msgid "%B, section %A: relocation %s with non-zero addend %d against local symbol" msgstr "%B, раздел %A: перемещение %s Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ добавлением %d у локального Ñимвола" -#: elf32-cris.c:1263 +#: elf32-cris.c:1369 elf32-cris.c:1712 elf32-cris.c:1865 msgid "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'" msgstr "%B, раздел %A: перемещение %s Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ добавлением %d у Ñимвола `%s'" -#: elf32-cris.c:1289 +#: elf32-cris.c:1395 msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'" msgstr "%B, раздел %A: перемещение %s не разрешено Ð´Ð»Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñимвола: `%s'" -#: elf32-cris.c:1305 +#: elf32-cris.c:1411 msgid "%B, section %A: relocation %s with no GOT created" msgstr "%B, раздел %A: перемещение %s без Ñозданного GOT" -#: elf32-cris.c:1423 -msgid "%B: Internal inconsistency; no relocation section %s" -msgstr "%B: Внутреннее неÑоответÑтвие; нет перемещаемого раздела %s" +#. We shouldn't get here for GCC-emitted code. +#: elf32-cris.c:1626 +msgid "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?" +msgstr "%B, раздел %A: перемещение %s имеет неопределённую ÑÑылку на `%s'; возможно, Ñмешение объÑвлений?" + +#: elf32-cris.c:1998 +msgid "%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?" +msgstr "%B, раздел %A: перемещение %s не разрешено Ð´Ð»Ñ Ñимвола: `%s', который определён вне программы; возможно, Ñмешение объÑвлений?" + +#: elf32-cris.c:2051 +msgid "(too many global variables for -fpic: recompile with -fPIC)" +msgstr "(Ñлишком много глобальных переменных Ð´Ð»Ñ -fpic: перекомпилируйте Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIC)" + +#: elf32-cris.c:2058 +msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)" +msgstr "(локальный данные нити Ñлишком велики Ð´Ð»Ñ -fpic или -msmall-tls: перекомпилируйте Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIC или -mno-small-tls)" -#: elf32-cris.c:2510 +#: elf32-cris.c:3248 msgid "" "%B, section %A:\n" " v10/v32 compatible object %s must not contain a PIC relocation" @@ -1268,7 +1349,15 @@ "%B, раздел %A:\n" " v10/v32 ÑовмеÑтимый объект %s не должен Ñодержать Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ PIC" -#: elf32-cris.c:2697 elf32-cris.c:2765 +#: elf32-cris.c:3353 +msgid "" +"%B, section %A:\n" +" relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC" +msgstr "" +"%B, раздел %A:\n" +" перемещение %s не должно иÑпользоватьÑÑ Ð² разделÑемом объекте; возможно, Ñмешение параметров, перекомпилируйте Ñ -fPIC" + +#: elf32-cris.c:3567 msgid "" "%B, section %A:\n" " relocation %s should not be used in a shared object; recompile with -fPIC" @@ -1276,129 +1365,138 @@ "%B, раздел %A:\n" " перемещение %s не должно иÑпользоватьÑÑ Ð² разделÑемом объекте; перекомпилируйте Ñ -fPIC" -#: elf32-cris.c:3184 +#: elf32-cris.c:3992 +msgid "" +"%B, section `%A', to symbol `%s':\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%B, раздел %A, к Ñимволу %s:\n" +" перемещение %s не должно иÑпользоватьÑÑ Ð² разделÑемом объекте; перекомпилируйте Ñ -fPIC" + +#: elf32-cris.c:4111 msgid "Unexpected machine number" msgstr "Ðеожидаемое машинное чиÑло" -#: elf32-cris.c:3238 +#: elf32-cris.c:4165 #, c-format msgid " [symbols have a _ prefix]" msgstr " [Ñимволы Ñодержат Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ _]" -#: elf32-cris.c:3241 +#: elf32-cris.c:4168 #, c-format msgid " [v10 and v32]" msgstr " [v10 и v32]" -#: elf32-cris.c:3244 +#: elf32-cris.c:4171 #, c-format msgid " [v32]" msgstr " [v32]" -#: elf32-cris.c:3289 +#: elf32-cris.c:4216 msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols" msgstr "%B: иÑпользуютÑÑ Ñимволы Ñ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑом _, но в файл запиÑываютÑÑ Ñимволы без префикÑов" -#: elf32-cris.c:3290 +#: elf32-cris.c:4217 msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols" msgstr "%B: иÑпользуютÑÑ Ñимволы без префикÑа _, но в файл запиÑываютÑÑ Ñимволы Ñ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑом _" -#: elf32-cris.c:3309 +#: elf32-cris.c:4236 msgid "%B contains CRIS v32 code, incompatible with previous objects" msgstr "%B Ñодержит код CRIS v32, который не ÑовмеÑтим Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ объектами" -#: elf32-cris.c:3311 +#: elf32-cris.c:4238 msgid "%B contains non-CRIS-v32 code, incompatible with previous objects" msgstr "%B Ñодержит код не-CRIS v32, который не ÑовмеÑтим Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ объектами" -#: elf32-frv.c:1507 elf32-frv.c:1656 +#: elf32-frv.c:1509 elf32-frv.c:1658 msgid "relocation requires zero addend" msgstr "Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ Ð½ÑƒÐ»ÐµÐ²Ð¾Ðµ добавление" -#: elf32-frv.c:2891 +#: elf32-frv.c:2888 msgid "%B(%A+0x%x): relocation to `%s+%x' may have caused the error above" msgstr "%B(%A+0x%x): перемещение в `%s+%x' может быть вызвано предыдущей ошибкой" -#: elf32-frv.c:2980 +#: elf32-frv.c:2977 msgid "R_FRV_GETTLSOFF not applied to a call instruction" msgstr "R_FRV_GETTLSOFF не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции call" -#: elf32-frv.c:3022 +#: elf32-frv.c:3019 msgid "R_FRV_GOTTLSDESC12 not applied to an lddi instruction" msgstr "R_FRV_GOTTLSDESC12 не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции lddi" -#: elf32-frv.c:3093 +#: elf32-frv.c:3090 msgid "R_FRV_GOTTLSDESCHI not applied to a sethi instruction" msgstr "R_FRV_GOTTLSDESCHI не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции sethi" -#: elf32-frv.c:3130 +#: elf32-frv.c:3127 msgid "R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction" msgstr "R_FRV_GOTTLSDESCLO не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции setlo или setlos" -#: elf32-frv.c:3178 +#: elf32-frv.c:3175 msgid "R_FRV_TLSDESC_RELAX not applied to an ldd instruction" msgstr "R_FRV_TLSDESC_RELAX не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции ldd" -#: elf32-frv.c:3262 +#: elf32-frv.c:3259 msgid "R_FRV_GETTLSOFF_RELAX not applied to a calll instruction" msgstr "R_FRV_GETTLSOFF_RELAX не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции calll" -#: elf32-frv.c:3317 +#: elf32-frv.c:3314 msgid "R_FRV_GOTTLSOFF12 not applied to an ldi instruction" msgstr "R_FRV_GOTTLSOFF12 не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции ldi" -#: elf32-frv.c:3347 +#: elf32-frv.c:3344 msgid "R_FRV_GOTTLSOFFHI not applied to a sethi instruction" msgstr "R_FRV_GOTTLSOFFHI не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции sethi" -#: elf32-frv.c:3376 +#: elf32-frv.c:3373 msgid "R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction" msgstr "R_FRV_GOTTLSOFFLO не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции setlo или setlos" -#: elf32-frv.c:3407 +#: elf32-frv.c:3404 msgid "R_FRV_TLSOFF_RELAX not applied to an ld instruction" msgstr "R_FRV_TLSOFF_RELAX не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции ld" -#: elf32-frv.c:3452 +#: elf32-frv.c:3449 msgid "R_FRV_TLSMOFFHI not applied to a sethi instruction" msgstr "R_FRV_TLSMOFFHI не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции sethi" -#: elf32-frv.c:3479 +#: elf32-frv.c:3476 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction" msgstr "R_FRV_TLSMOFFLO не применимо Ð´Ð»Ñ Ð¸Ð½Ñтрукции setlo или setlos" -#: elf32-frv.c:3600 +#: elf32-frv.c:3597 msgid "R_FRV_FUNCDESC references dynamic symbol with nonzero addend" msgstr "R_FRV_FUNCDESC указывает на динамичеÑкий Ñимвол Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ добавлением" -#: elf32-frv.c:3720 +#: elf32-frv.c:3717 msgid "R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "R_FRV_FUNCDESC_VALUE указывает на динамичеÑкий Ñимвол Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ добавлением" -#: elf32-frv.c:3977 elf32-frv.c:4133 +#: elf32-frv.c:3974 elf32-frv.c:4130 msgid "%B(%A+0x%lx): reloc against `%s': %s" msgstr "%B(%A+0x%lx): перемещение Ð´Ð»Ñ `%s': %s" -#: elf32-frv.c:3979 elf32-frv.c:3983 +#: elf32-frv.c:3976 elf32-frv.c:3980 msgid "relocation references a different segment" msgstr "перемещение указывает на другой Ñегмент" -#: elf32-frv.c:6726 +#: elf32-frv.c:6728 #, c-format msgid "%s: compiled with %s and linked with modules that use non-pic relocations" msgstr "%s: компилируетÑÑ Ñ %s и компонуетÑÑ Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñми, в которых иÑпользуютÑÑ Ð½Ðµ-pic перемещениÑ" -#: elf32-frv.c:6779 elf32-iq2000.c:852 elf32-m32c.c:814 +#: elf32-frv.c:6781 elf32-iq2000.c:845 elf32-m32c.c:807 #, c-format msgid "%s: compiled with %s and linked with modules compiled with %s" msgstr "%s: компилируетÑÑ Ñ %s и компонуетÑÑ Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñми, Ñкомпилированными Ñ %s" -#: elf32-frv.c:6791 +#: elf32-frv.c:6793 #, c-format msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%s: иÑпользует другие неизвеÑтные флаги e_flags (0x%lx) чем предыдущие модули (0x%lx)" -#: elf32-frv.c:6841 elf32-iq2000.c:889 elf32-m32c.c:850 elf32-mt.c:583 +#: elf32-frv.c:6843 elf32-iq2000.c:882 elf32-m32c.c:843 elf32-mt.c:576 +#: elf32-rx.c:2925 #, c-format msgid "private flags = 0x%lx:" msgstr "ÑобÑтвенные флаги = 0x%lx:" @@ -1407,229 +1505,246 @@ msgid "%B: Relocations in generic ELF (EM: %d)" msgstr "%B: ÐŸÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² универÑальном ELF (EM: %d)" -#: elf32-hppa.c:854 elf32-hppa.c:3600 +#: elf32-hppa.c:850 elf32-hppa.c:3610 msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections" msgstr "%B(%A+0x%lx): невозможно доÑтичь %s, перекомпилируйте Ñ -ffunction-sections" -#: elf32-hppa.c:1263 +#: elf32-hppa.c:1284 msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC" msgstr "%B: перемещение %s не может иÑпользоватьÑÑ Ð¿Ñ€Ð¸ Ñоздании разделÑемого объекта; перекомпилируйте Ñ -fPIC" -#: elf32-hppa.c:1518 -#, c-format -msgid "Could not find relocation section for %s" -msgstr "Ðевозможно найти перемещаемый раздел Ð´Ð»Ñ %s" - -#: elf32-hppa.c:2810 +#: elf32-hppa.c:2803 msgid "%B: duplicate export stub %s" msgstr "%B: повторный ÑкÑпорт заглушки %s" -#: elf32-hppa.c:3436 +#: elf32-hppa.c:3449 msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link" msgstr "%B(%A+0x%lx): %s меÑтоположение Ð´Ð»Ñ insn 0x%x не поддерживаетÑÑ Ð² неразделÑемой ÑÑылке" -#: elf32-hppa.c:4290 +#: elf32-hppa.c:4296 msgid "%B(%A+0x%lx): cannot handle %s for %s" msgstr "%B(%A+0x%lx): невозможно обработать %s Ð´Ð»Ñ %s" -#: elf32-hppa.c:4597 +#: elf32-hppa.c:4608 msgid ".got section not immediately after .plt section" msgstr "раздел .got не может ÑтоÑÑ‚ÑŒ Ñразу поÑле раздела .plt" -#: elf32-i386.c:362 elf32-ppc.c:1616 elf32-s390.c:379 elf64-ppc.c:2153 -#: elf64-s390.c:403 elf64-x86-64.c:222 +#. Unknown relocation. +#: elf32-i386.c:371 elf32-m68k.c:383 elf32-ppc.c:1674 elf32-s390.c:379 +#: elf32-tic6x.c:1563 elf64-ppc.c:2284 elf64-s390.c:403 elf64-x86-64.c:234 msgid "%B: invalid relocation type %d" msgstr "%B: неверный тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %d" -#: elf32-i386.c:1183 elf64-x86-64.c:964 +#: elf32-i386.c:1265 elf64-x86-64.c:1049 msgid "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed" msgstr "%B: TLS-переход из %s в %s Ð´Ð»Ñ `%s' по 0x%lx в разделе `%A' завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾" -#: elf32-i386.c:1364 elf32-s390.c:1188 elf32-sh.c:5098 elf32-xtensa.c:1162 -#: elf64-s390.c:1152 elfxx-sparc.c:1263 +#: elf32-i386.c:1408 elf32-i386.c:3068 elf64-x86-64.c:1194 elf64-x86-64.c:2780 +#: elfxx-sparc.c:3076 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" +msgstr "%B: перемещение %s вмеÑте Ñ STT_GNU_IFUNC Ñимволом `%s' не обрабатываетÑÑ %s" + +#: elf32-i386.c:1570 elf32-s390.c:1182 elf32-sh.c:6367 elf32-xtensa.c:1182 +#: elf64-s390.c:1151 elfxx-sparc.c:1547 msgid "%B: `%s' accessed both as normal and thread local symbol" msgstr "%B: `%s' доÑтупен как обычный и как локальный Ð´Ð»Ñ Ð½Ð¸Ñ‚Ð¸ Ñимвол" -#: elf32-i386.c:1479 elf32-s390.c:1297 elf64-ppc.c:5046 elf64-s390.c:1264 -#: elf64-x86-64.c:1299 -msgid "%B: bad relocation section name `%s'" -msgstr "%B: неправильное Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ раздела `%s'" - -#: elf32-i386.c:2598 +#: elf32-i386.c:2910 msgid "%B: unrecognized relocation (0x%x) in section `%A'" msgstr "%B: нераÑпознанное перемещение (0x%x) в разделе `%A'" -#: elf32-i386.c:2822 elf64-x86-64.c:2660 +#: elf32-i386.c:3317 elf64-x86-64.c:3174 msgid "hidden symbol" msgstr "Ñкрытый Ñимвол" -#: elf32-i386.c:2825 elf64-x86-64.c:2663 +#: elf32-i386.c:3320 elf64-x86-64.c:3177 msgid "internal symbol" msgstr "внутренний Ñимвол" -#: elf32-i386.c:2828 elf64-x86-64.c:2666 +#: elf32-i386.c:3323 elf64-x86-64.c:3180 msgid "protected symbol" msgstr "защищённый Ñимвол" -#: elf32-i386.c:2831 elf64-x86-64.c:2669 +#: elf32-i386.c:3326 elf64-x86-64.c:3183 msgid "symbol" msgstr "Ñимвол" -#: elf32-i386.c:2836 +#: elf32-i386.c:3331 msgid "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object" msgstr "%B: перемещение R_386_GOTOFF Ð´Ð»Ñ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s `%s' не может иÑпользоватьÑÑ Ð¿Ñ€Ð¸ Ñоздании разделÑемого объекта" -#: elf32-i386.c:2846 +#: elf32-i386.c:3341 msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object" msgstr "%B: перемещение R_386_GOTOFF Ð´Ð»Ñ Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð¹ функции `%s' не может иÑпользоватьÑÑ Ð¿Ñ€Ð¸ Ñоздании разделÑемого объекта" -#: elf32-ip2k.c:868 elf32-ip2k.c:874 elf32-ip2k.c:941 elf32-ip2k.c:947 +#: elf32-i386.c:4633 elf64-x86-64.c:4206 +#, c-format +msgid "discarded output section: `%A'" +msgstr "отброшенный выходной раздел: «%A»" + +#: elf32-ip2k.c:857 elf32-ip2k.c:863 elf32-ip2k.c:930 elf32-ip2k.c:936 msgid "ip2k relaxer: switch table without complete matching relocation information." msgstr "ip2k relaxer: таблица переключений без полного ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о перемещении." -#: elf32-ip2k.c:891 elf32-ip2k.c:974 +#: elf32-ip2k.c:880 elf32-ip2k.c:963 msgid "ip2k relaxer: switch table header corrupt." msgstr "ip2k relaxer: иÑпорчен заголовок у таблицы переключений." -#: elf32-ip2k.c:1316 +#: elf32-ip2k.c:1292 #, c-format msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)." msgstr "ip2k linker: отÑутÑтвует Ñтраница инÑтрукций по адреÑу 0x%08lx (назнач = 0x%08lx)." -#: elf32-ip2k.c:1332 +#: elf32-ip2k.c:1308 #, c-format msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)." msgstr "ip2k linker: повторÑющаÑÑÑ Ñтраница инÑтрукций по адреÑу 0x%08lx (назнач = 0x%08lx)." #. Only if it's not an unresolved symbol. -#: elf32-ip2k.c:1506 +#: elf32-ip2k.c:1475 msgid "unsupported relocation between data/insn address spaces" msgstr "неподдерживаемое перемещение между адреÑным проÑтранÑтвом данных/insn" -#: elf32-iq2000.c:865 elf32-m32c.c:826 +#: elf32-iq2000.c:858 elf32-m32c.c:819 #, 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-lm32.c:706 +msgid "global pointer relative relocation when _gp not defined" +msgstr "глобальный указатель отноÑительно перемещениÑ, но _gp не определена" + +#: elf32-lm32.c:761 +msgid "global pointer relative address out of range" +msgstr "глобальный указатель отноÑительно адреÑа вне диапазона" + +#: elf32-lm32.c:1057 +msgid "internal error: addend should be zero for R_LM32_16_GOT" +msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: добавление должно быть нулём Ð´Ð»Ñ R_LM32_16_GOT" + #: elf32-m32r.c:1453 msgid "SDA relocation when _SDA_BASE_ not defined" msgstr "перемещение SDA, но _SDA_BASE_ не определена" -#: elf32-m32r.c:3061 +#: elf32-m32r.c:3048 msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)" msgstr "%B: Цель (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s в ошибочном разделе (%A)" -#: elf32-m32r.c:3589 +#: elf32-m32r.c:3576 msgid "%B: Instruction set mismatch with previous modules" msgstr "%B: Ðабор инÑтрукций не Ñовпадает Ñ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ у предыдущих модулей" -#: elf32-m32r.c:3610 +#: elf32-m32r.c:3597 #, c-format msgid "private flags = %lx" msgstr "ÑобÑтвенные флаги = %lx" -#: elf32-m32r.c:3615 +#: elf32-m32r.c:3602 #, c-format msgid ": m32r instructions" msgstr ": инÑтрукции m32r" -#: elf32-m32r.c:3616 +#: elf32-m32r.c:3603 #, c-format msgid ": m32rx instructions" msgstr ": инÑтрукции m32rx" -#: elf32-m32r.c:3617 +#: elf32-m32r.c:3604 #, c-format msgid ": m32r2 instructions" msgstr ": инÑтрукции m32r2" -#: elf32-m68hc1x.c:1047 +#: elf32-m68hc1x.c:1050 #, c-format msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution" msgstr "Указание на дальний Ñимвол `%s' Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ошибочного Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ привеÑти к неправильному выполнению" -#: elf32-m68hc1x.c:1070 +#: elf32-m68hc1x.c:1073 #, c-format msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)" msgstr "банкируемый Ð°Ð´Ñ€ÐµÑ [%lx:%04lx] (%lx) не Ñовпадает Ñ Ð±Ð°Ð½ÐºÐ¾Ð¼ текущего банкируемого адреÑа [%lx:%04lx] (%lx)" -#: elf32-m68hc1x.c:1089 +#: elf32-m68hc1x.c:1092 #, c-format msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx" msgstr "ÑÑылка на банкируемый Ð°Ð´Ñ€ÐµÑ [%lx:%04lx] в обычном адреÑном проÑтранÑтве по адреÑу %04lx" -#: elf32-m68hc1x.c:1222 +#: elf32-m68hc1x.c:1225 msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers" msgstr "%B: компоновка файлов, Ñкомпилированных Ð´Ð»Ñ 16-битных целых (-mshort), Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñкомпилированными Ð´Ð»Ñ 32-битных целых" -#: elf32-m68hc1x.c:1229 +#: elf32-m68hc1x.c:1232 msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double" msgstr "%B: компоновка файлов, Ñкомпилированных Ð´Ð»Ñ 32-битных double (-fshort-double), Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñкомпилированными Ð´Ð»Ñ 64-битных double" -#: elf32-m68hc1x.c:1238 +#: elf32-m68hc1x.c:1241 msgid "%B: linking files compiled for HCS12 with others compiled for HC12" msgstr "%B: компоновка файлов, Ñкомпилированных Ð´Ð»Ñ HCS12, Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñкомпилированными Ð´Ð»Ñ HC12" -#: elf32-m68hc1x.c:1254 elf32-ppc.c:4046 elf64-sparc.c:697 elfxx-mips.c:12561 +#: elf32-m68hc1x.c:1257 elf32-ppc.c:4232 elf64-sparc.c:703 elfxx-mips.c:12704 msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%B: иÑпользует другие неизвеÑтные флаги e_flags (0x%lx), чем предыдущие модули (0x%lx)" -#: elf32-m68hc1x.c:1282 +#: elf32-m68hc1x.c:1285 #, c-format msgid "[abi=32-bit int, " msgstr "[abi=32-битное int, " -#: elf32-m68hc1x.c:1284 +#: elf32-m68hc1x.c:1287 #, c-format msgid "[abi=16-bit int, " msgstr "[abi=16-битное int, " -#: elf32-m68hc1x.c:1287 +#: elf32-m68hc1x.c:1290 #, c-format msgid "64-bit double, " msgstr "64-битное double, " -#: elf32-m68hc1x.c:1289 +#: elf32-m68hc1x.c:1292 #, c-format msgid "32-bit double, " msgstr "32-битное double, " -#: elf32-m68hc1x.c:1292 +#: elf32-m68hc1x.c:1295 #, c-format msgid "cpu=HC11]" msgstr "ЦП=HC11]" -#: elf32-m68hc1x.c:1294 +#: elf32-m68hc1x.c:1297 #, c-format msgid "cpu=HCS12]" msgstr "ЦП=HCS12]" -#: elf32-m68hc1x.c:1296 +#: elf32-m68hc1x.c:1299 #, c-format msgid "cpu=HC12]" msgstr "ЦП=HC12]" -#: elf32-m68hc1x.c:1299 +#: elf32-m68hc1x.c:1302 #, c-format msgid " [memory=bank-model]" msgstr " [памÑÑ‚ÑŒ=модель Ñ Ð±Ð°Ð½ÐºÐ°Ð¼Ð¸]" -#: elf32-m68hc1x.c:1301 +#: elf32-m68hc1x.c:1304 #, c-format msgid " [memory=flat]" msgstr " [памÑÑ‚ÑŒ=плоÑкаÑ]" -#: elf32-m68k.c:789 elf32-m68k.c:790 +#: elf32-m68k.c:1250 elf32-m68k.c:1251 vms-alpha.c:7292 vms-alpha.c:7307 msgid "unknown" msgstr "неизвеÑтно" -#: elf32-m68k.c:1216 -msgid "%B: GOT overflow: Number of R_68K_GOT8O relocations > %d" -msgstr "%B: переполнение GOT: КоличеÑтво перемещений R_68K_GOT8O > %d" - -#: elf32-m68k.c:1221 -msgid "%B: GOT overflow: Number of R_68K_GOT8O and R_68K_GOT16O relocations > %d" -msgstr "%B: переполнение GOT: КоличеÑтво перемещений R_68K_GOT8O и R_68K_GOT16O > %d" +#: elf32-m68k.c:1714 +msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d" +msgstr "%B: переполнение GOT: КоличеÑтво перемещений Ñ 8-битным Ñмещением > %d" + +#: elf32-m68k.c:1720 +msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d" +msgstr "%B: переполнение GOT: КоличеÑтво перемещений Ñ 8-ми или 16-битным Ñмещением > %d" + +#: elf32-m68k.c:3959 +msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object" +msgstr "%B(%A+0x%lx): перемещение R_68K_TLS_LE32 не разрешено Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ñемого объекта" #: elf32-mcore.c:99 elf32-mcore.c:442 msgid "%B: Relocation %s (%d) is not currently supported.\n" @@ -1639,155 +1754,233 @@ msgid "%B: Unknown relocation type %d\n" msgstr "%B: ÐеизвеÑтный тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %d\n" -#: elf32-mep.c:654 +#: elf32-mep.c:647 msgid "%B and %B are for different cores" msgstr "%B и %B Ð´Ð»Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñдер" -#: elf32-mep.c:671 +#: elf32-mep.c:664 msgid "%B and %B are for different configurations" msgstr "%B и %B Ð´Ð»Ñ Ñ€Ð°Ð·Ð½Ñ‹Ñ… конфигураций" -#: elf32-mep.c:709 +#: elf32-mep.c:701 #, c-format msgid "private flags = 0x%lx" msgstr "ÑобÑтвенные флаги = 0x%lx" -#: elf32-mips.c:1045 elf64-mips.c:2056 elfn32-mips.c:1888 +#: elf32-microblaze.c:742 +#, c-format +msgid "%s: unknown relocation type %d" +msgstr "%s: неизвеÑтный тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %d" + +#: elf32-microblaze.c:867 elf32-microblaze.c:912 +#, c-format +msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" +msgstr "%s: Цель (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s в ошибочном разделе (%s)" + +#: elf32-microblaze.c:1155 elfxx-sparc.c:3450 +msgid "%B: probably compiled without -fPIC?" +msgstr "%B: вероÑтно, компилÑÑ†Ð¸Ñ Ð±ÐµÐ· -fPIC?" + +#: elf32-microblaze.c:2074 elflink.c:12601 +msgid "%B: bad relocation section name `%s'" +msgstr "%B: неправильное Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ раздела `%s'" + +#: elf32-mips.c:1045 elf64-mips.c:2084 elfn32-mips.c:1888 msgid "literal relocation occurs for an external symbol" msgstr "Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñимвола обнаружено конÑтантное перемещение" -#: elf32-mips.c:1085 elf32-score.c:484 elf64-mips.c:2099 elfn32-mips.c:1929 +#: elf32-mips.c:1085 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:2127 +#: elfn32-mips.c:1929 msgid "32bits gp relative relocation occurs for an external symbol" msgstr "Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñимвола обнаружено 32—битное отноÑительное перемещение" -#: elf32-ppc.c:1681 +#: elf32-ppc.c:1739 #, c-format msgid "generic linker can't handle %s" msgstr "универÑальный компоновщик не Ñмог обработать %s" -#: elf32-ppc.c:2161 -msgid "corrupt or empty %s section in %B" -msgstr "повреждённый или пуÑтой раздел %s в %B" +#: elf32-ppc.c:2180 +msgid "corrupt %s section in %B" +msgstr "повреждённый раздел %s в %B" -#: elf32-ppc.c:2168 +#: elf32-ppc.c:2199 msgid "unable to read in %s section from %B" msgstr "не удалоÑÑŒ прочитать раздел %s из %B" -#: elf32-ppc.c:2174 -msgid "corrupt %s section in %B" -msgstr "повреждённый раздел %s в %B" - -#: elf32-ppc.c:2217 +#: elf32-ppc.c:2240 msgid "warning: unable to set size of %s section in %B" msgstr "предупреждение: не удалоÑÑŒ уÑтановить размер раздела %s в %B" -#: elf32-ppc.c:2265 +#: elf32-ppc.c:2290 msgid "failed to allocate space for new APUinfo section." msgstr "не удалоÑÑŒ выделить меÑто Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ раздела APUinfo." -#: elf32-ppc.c:2284 +#: elf32-ppc.c:2309 msgid "failed to compute new APUinfo section." msgstr "не удалоÑÑŒ вычиÑлить новый раздел APUinfo." -#: elf32-ppc.c:2287 +#: elf32-ppc.c:2312 msgid "failed to install new APUinfo section." msgstr "не удалоÑÑŒ уÑтановить новый раздел APUinfo." -#: elf32-ppc.c:3263 +#: elf32-ppc.c:3358 msgid "%B: relocation %s cannot be used when making a shared object" msgstr "%B: раздел %s не может иÑпользоватьÑÑ Ð¿Ñ€Ð¸ Ñоздании разделÑемого объекта" #. It does not make sense to have a procedure linkage #. table entry for a local symbol. -#: elf32-ppc.c:3534 +#: elf32-ppc.c:3702 msgid "%B(%A+0x%lx): %s reloc against local symbol" msgstr "%B(%A+0x%lx): %s перемещение Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñимвола" -#: elf32-ppc.c:3885 elf32-ppc.c:3900 elfxx-mips.c:12268 elfxx-mips.c:12294 -#: elfxx-mips.c:12316 elfxx-mips.c:12342 +#: elf32-ppc.c:4044 elf32-ppc.c:4059 elfxx-mips.c:12411 elfxx-mips.c:12437 +#: elfxx-mips.c:12459 elfxx-mips.c:12485 msgid "Warning: %B uses hard float, %B uses soft float" msgstr "Предупреждение: %B иÑпользует аппаратную плавающую точку, %B иÑпользует программную плавающую точку" -#: elf32-ppc.c:3888 elf32-ppc.c:3892 +#: elf32-ppc.c:4047 elf32-ppc.c:4051 msgid "Warning: %B uses double-precision hard float, %B uses single-precision hard float" msgstr "Предупреждение: %B иÑпользует аппаратную плавающую точку двойной точноÑти, %B иÑпользует аппаратную плавающую точку одинарной точноÑти" -#: elf32-ppc.c:3896 +#: elf32-ppc.c:4055 msgid "Warning: %B uses soft float, %B uses single-precision hard float" msgstr "Предупреждение: %B иÑпользует программную плавающую точку, %B аппаратную плавающую точку одинарной точноÑти" -#: elf32-ppc.c:3903 elf32-ppc.c:3907 elfxx-mips.c:12248 elfxx-mips.c:12252 +#: elf32-ppc.c:4062 elf32-ppc.c:4066 elfxx-mips.c:12391 elfxx-mips.c:12395 msgid "Warning: %B uses unknown floating point ABI %d" msgstr "Предупреждение: %B иÑпользует неизвеÑтный ABI плавающей точки %d" -#: elf32-ppc.c:3949 elf32-ppc.c:3953 +#: elf32-ppc.c:4108 elf32-ppc.c:4112 msgid "Warning: %B uses unknown vector ABI %d" msgstr "Предупреждение: %B иÑпользует неизвеÑтный ABI векторов %d" -#: elf32-ppc.c:3957 +#: elf32-ppc.c:4116 msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\"" msgstr "Предупреждение: %B иÑпользует ABI векторов \"%s\", %B иÑпользует \"%s\"" -#: elf32-ppc.c:4011 +#: elf32-ppc.c:4133 elf32-ppc.c:4136 +msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory" +msgstr "Предупреждение: %B иÑпользует r3/r4 Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° маленькой Ñтруктуры, %B иÑпользует памÑÑ‚ÑŒ" + +#: elf32-ppc.c:4139 elf32-ppc.c:4143 +msgid "Warning: %B uses unknown small structure return convention %d" +msgstr "Предупреждение: %B иÑпользует неизвеÑтное Ñоглашение %d по возврату маленькой Ñтруктуры" + +#: elf32-ppc.c:4197 msgid "%B: compiled with -mrelocatable and linked with modules compiled normally" msgstr "%B: Ñкомпилирована Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mrelocatable и нормально Ñкомпонована Ñо Ñкомпилированными модулÑми" -#: elf32-ppc.c:4019 +#: elf32-ppc.c:4205 msgid "%B: compiled normally and linked with modules compiled with -mrelocatable" msgstr "%B: нормально Ñкомпилирована и Ñкомпонована Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñми, Ñкомпилированными Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mrelocatable" -#: elf32-ppc.c:4105 +#: elf32-ppc.c:4293 msgid "Using bss-plt due to %B" msgstr "ИÑпользуетÑÑ bss-plt из-за %B" -#: elf32-ppc.c:6418 elf64-ppc.c:10881 +#: elf32-ppc.c:7192 elf64-ppc.c:12307 msgid "%B: unknown relocation type %d for symbol %s" msgstr "%B: неизвеÑтный тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %d Ð´Ð»Ñ Ñимвола %s" -#: elf32-ppc.c:6668 +#: elf32-ppc.c:7453 msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'" msgstr "%B(%A+0x%lx): ненулевое добавление в перемещении %s Ð´Ð»Ñ `%s'" -#: elf32-ppc.c:7024 elf32-ppc.c:7050 elf32-ppc.c:7109 +#: elf32-ppc.c:7651 elf64-ppc.c:12812 +msgid "%B(%A+0x%lx): relocation %s for indirect function %s unsupported" +msgstr "%B(%A+0x%lx): перемещение %s Ð´Ð»Ñ Ð½ÐµÑвного вызова функции %s не поддерживаетÑÑ" + +#: elf32-ppc.c:7881 elf32-ppc.c:7911 elf32-ppc.c:7958 msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)" msgstr "%B: назначение (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s в ошибочный выходной раздел (%s)" -#: elf32-ppc.c:7164 +#: elf32-ppc.c:8030 msgid "%B: relocation %s is not yet supported for symbol %s." msgstr "%B: перемещение %s пока не поддерживаетÑÑ Ð´Ð»Ñ Ñимвола %s." -#: elf32-ppc.c:7272 elf64-ppc.c:11575 +#: elf32-ppc.c:8138 elf64-ppc.c:13162 msgid "%B(%A+0x%lx): %s reloc against `%s': error %d" msgstr "%B(%A+0x%lx): %s перемещение Ð´Ð»Ñ `%s': ошибка %d" -#: elf32-s390.c:2246 elf64-s390.c:2220 +#: elf32-ppc.c:8629 +#, c-format +msgid "%s not defined in linker created %s" +msgstr "%s не определено в компоновщике, Ñозданном %s" + +#: elf32-rx.c:544 +msgid "%B:%A: Warning: deprecated Red Hat reloc " +msgstr "%B:%A: предупреждение: уÑтаревшее перемещение Red Hat" + +#: elf32-rx.c:1086 +msgid "Warning: RX_SYM reloc with an unknown symbol" +msgstr "Предупреждение: перемещение RX_SYM Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑтным Ñимволом" + +#: elf32-rx.c:1251 +msgid "%B(%A): error: call to undefined function '%s'" +msgstr "%B(%A): ошибка: вызов неопределённой функции «%s»" + +#: elf32-rx.c:1265 +msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area" +msgstr "%B(%A): предупреждение: невыровненный доÑтуп к Ñимволу «%s» в малой облаÑти данных" + +#: elf32-rx.c:1269 +msgid "%B(%A): internal error: out of range error" +msgstr "%B(%A): внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ошибка выхода из диапазона" + +#: elf32-rx.c:1273 +msgid "%B(%A): internal error: unsupported relocation error" +msgstr "%B(%A): внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ошибка неподдерживаемого перемещениÑ" + +#: elf32-rx.c:1277 +msgid "%B(%A): internal error: dangerous relocation" +msgstr "%B(%A): внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: опаÑное перемещение" + +#: elf32-rx.c:1281 +msgid "%B(%A): internal error: unknown error" +msgstr "%B(%A): внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" + +#: elf32-rx.c:2928 +#, c-format +msgid " [64-bit doubles]" +msgstr "[64-битные double]" + +#: elf32-rx.c:2930 +#, c-format +msgid " [dsp]" +msgstr " [dsp]" + +#: elf32-s390.c:2209 elf64-s390.c:2196 msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s" msgstr "%B(%A+0x%lx): недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð´Ð»Ñ TLS-Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s" -#: elf32-score.c:1415 elfxx-mips.c:3273 +#: elf32-score.c:1522 elf32-score7.c:1382 elfxx-mips.c:3323 msgid "not enough GOT space for local GOT entries" msgstr "недоÑтаточно проÑтранÑтва GOT Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñлементов GOT" -#: elf32-score.c:2545 +#: elf32-score.c:2744 +msgid "address not word align" +msgstr "Ð°Ð´Ñ€ÐµÑ Ð½Ðµ выровнен по границе Ñлова" + +#: elf32-score.c:2829 elf32-score7.c:2634 #, c-format msgid "%s: Malformed reloc detected for section %s" msgstr "%s: Обнаружено иÑкажённое перемещение Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s" -#: elf32-score.c:2596 +#: elf32-score.c:2880 elf32-score7.c:2685 msgid "%B: CALL15 reloc at 0x%lx not against global symbol" msgstr "%B: перемещение CALL15 по адреÑу 0x%lx не Ð´Ð»Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñимвола" -#: elf32-score.c:3753 +#: elf32-score.c:3999 elf32-score7.c:3806 #, c-format msgid " [pic]" msgstr " [pic]" -#: elf32-score.c:3757 +#: elf32-score.c:4003 elf32-score7.c:3810 #, c-format msgid " [fix dep]" msgstr " [fix dep]" -#: elf32-score.c:3799 +#: elf32-score.c:4045 elf32-score7.c:3852 msgid "%B: warning: linking PIC files with non-PIC files" msgstr "%B: предупреждение: выполнÑетÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° PIC-файлов Ñ Ð½Ðµ-PIC файлами" @@ -1799,109 +1992,139 @@ msgid "%B: Unrecognised .directive command: %s" msgstr "%B: ÐераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° .directive: %s" -#: elf32-sh-symbian.c:504 +#: elf32-sh-symbian.c:503 msgid "%B: Failed to add renamed symbol %s" msgstr "%B: Ðе удалоÑÑŒ добавить переименованный Ñимвол %s" -#: elf32-sh.c:533 +#: elf32-sh.c:568 msgid "%B: 0x%lx: warning: bad R_SH_USES offset" msgstr "%B: 0x%lx: предупреждение: неправильное Ñмещение R_SH_USES" -#: elf32-sh.c:545 +#: elf32-sh.c:580 msgid "%B: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" msgstr "%B: 0x%lx: предупреждение: R_SH_USES указывает на нераÑпознанный insn 0x%x" -#: elf32-sh.c:562 +#: elf32-sh.c:597 msgid "%B: 0x%lx: warning: bad R_SH_USES load offset" msgstr "%B: 0x%lx: предупреждение: неправильное загрузочное Ñмещение R_SH_USES" -#: elf32-sh.c:577 +#: elf32-sh.c:612 msgid "%B: 0x%lx: warning: could not find expected reloc" -msgstr "%B: 0x%lx: предупреждение: невозможно найти ожидаемое Ñмещение" +msgstr "%B: 0x%lx: предупреждение: невозможно найти ожидаемое перемещение" -#: elf32-sh.c:605 +#: elf32-sh.c:640 msgid "%B: 0x%lx: warning: symbol in unexpected section" msgstr "%B: 0x%lx: предупреждение: Ñимвол в неожиданном разделе" -#: elf32-sh.c:731 +#: elf32-sh.c:766 msgid "%B: 0x%lx: warning: could not find expected COUNT reloc" -msgstr "%B: 0x%lx: предупреждение: невозможно найти ожидаемое Ñмещение COUNT" +msgstr "%B: 0x%lx: предупреждение: невозможно найти ожидаемое перемещение COUNT" -#: elf32-sh.c:740 +#: elf32-sh.c:775 msgid "%B: 0x%lx: warning: bad count" msgstr "%B: 0x%lx: предупреждение: неправильный Ñчётчик" -#: elf32-sh.c:1144 elf32-sh.c:1514 +#: elf32-sh.c:1179 elf32-sh.c:1549 msgid "%B: 0x%lx: fatal: reloc overflow while relaxing" msgstr "%B: 0x%lx: оÑтанов: переполнение Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ оÑлаблении" -#: elf32-sh.c:3279 elf64-sh64.c:1526 +#: elf32-sh.c:4057 elf64-sh64.c:1514 msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" msgstr "Ðеожиданное STO_SH5_ISA32 локального Ñимвола не обрабатываетÑÑ" -#: elf32-sh.c:3516 +#: elf32-sh.c:4304 msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation" msgstr "%B: 0x%lx: оÑтанов: невыровненное назначение ветви Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ оÑлаблениÑ" -#: elf32-sh.c:3549 elf32-sh.c:3564 +#: elf32-sh.c:4337 elf32-sh.c:4352 msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx" msgstr "%B: 0x%lx: оÑтанов: невыровненное %s перемещение 0x%lx" -#: elf32-sh.c:3578 +#: elf32-sh.c:4366 msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32" msgstr "%B: 0x%lx: оÑтанов: R_SH_PSHA перемещение %d вне диапазона -32..32" -#: elf32-sh.c:3592 +#: elf32-sh.c:4380 msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32" msgstr "%B: 0x%lx: оÑтанов: R_SH_PSHL перемещение %d вне диапазона -32..32" -#: elf32-sh.c:5310 elf64-alpha.c:4552 +#: elf32-sh.c:4524 elf32-sh.c:4994 +msgid "%B(%A+0x%lx): cannot emit fixup to `%s' in read-only section" +msgstr "%B(%A+0x%lx): невозможно Ñгенерировать меÑтоположение к «%s» в разделе только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" + +#: elf32-sh.c:5101 +msgid "%B(%A+0x%lx): %s relocation against external symbol \"%s\"" +msgstr "%B(%A+0x%lx): перемещение %s Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñимвола «%s»" + +#: elf32-sh.c:5574 +#, c-format +msgid "%X%C: relocation to \"%s\" references a different segment\n" +msgstr "%X%C: перемещение указывает на ÑÑылки «%s» другого Ñегмента\n" + +#: elf32-sh.c:5580 +#, c-format +msgid "%C: warning: relocation to \"%s\" references a different segment\n" +msgstr "%C: предупреждение: перемещение указывает на ÑÑылки «%s» другого Ñегмента\n" + +#: elf32-sh.c:6358 elf32-sh.c:6441 +msgid "%B: `%s' accessed both as normal and FDPIC symbol" +msgstr "%B: «%s» доÑтупен как обычный и как FDPIC Ñимвол" + +#: elf32-sh.c:6363 elf32-sh.c:6445 +msgid "%B: `%s' accessed both as FDPIC and thread local symbol" +msgstr "%B: «%s» доÑтупен как FDPIC и как локальный Ñимвол нити" + +#: elf32-sh.c:6393 +msgid "%B: Function descriptor relocation with non-zero addend" +msgstr "%B: перемещение деÑкриптора функции Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ добавлением" + +#: elf32-sh.c:6629 elf64-alpha.c:4560 msgid "%B: TLS local exec code cannot be linked into shared objects" msgstr "%B: локальный иÑполнÑемый код TLS не может быть Ñкомпонован Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ñемыми объектами" -#: elf32-sh64.c:222 elf64-sh64.c:2345 +#: elf32-sh64.c:223 elf64-sh64.c:2314 #, c-format msgid "%s: compiled as 32-bit object and %s is 64-bit" msgstr "%s: Ñкомпилирован как 32-битный объект, а %s 64-битный" -#: elf32-sh64.c:225 elf64-sh64.c:2348 +#: elf32-sh64.c:226 elf64-sh64.c:2317 #, c-format msgid "%s: compiled as 64-bit object and %s is 32-bit" msgstr "%s: Ñкомпилирован как 64-битный объект, а %s 32-битный" -#: elf32-sh64.c:227 elf64-sh64.c:2350 +#: elf32-sh64.c:228 elf64-sh64.c:2319 #, c-format msgid "%s: object size does not match that of target %s" msgstr "%s: размер объекта не ÑоответÑтвует Ñтой цели %s" -#: elf32-sh64.c:450 elf64-sh64.c:2888 +#: elf32-sh64.c:451 elf64-sh64.c:2833 #, c-format msgid "%s: encountered datalabel symbol in input" msgstr "%s: во входных данных обнаружен Ñимвол метки данных" -#: elf32-sh64.c:527 +#: elf32-sh64.c:528 msgid "PTB mismatch: a SHmedia address (bit 0 == 1)" msgstr "неÑовпадение PTB: Ð°Ð´Ñ€ÐµÑ SHmedia (бит 0 == 1)" -#: elf32-sh64.c:530 +#: elf32-sh64.c:531 msgid "PTA mismatch: a SHcompact address (bit 0 == 0)" msgstr "неÑовпадение PTA: Ð°Ð´Ñ€ÐµÑ SHcompact (бит 0 == 0)" -#: elf32-sh64.c:548 +#: elf32-sh64.c:549 #, c-format msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16" msgstr "%s: ошибка GAS: неожиданный PTB insn Ñ R_SH_PT_16" -#: elf32-sh64.c:597 +#: elf32-sh64.c:598 msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n" msgstr "%B: ошибка: невыровненный тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %d по адреÑу %08x перемещение %p\n" -#: elf32-sh64.c:673 +#: elf32-sh64.c:674 #, c-format msgid "%s: could not write out added .cranges entries" msgstr "%s: не удалоÑÑŒ запиÑать добавленные Ñлементы .cranges" -#: elf32-sh64.c:733 +#: elf32-sh64.c:734 #, c-format msgid "%s: could not write out sorted .cranges entries" msgstr "%s: не удалоÑÑŒ запиÑать отÑортированные Ñлементы .cranges" @@ -1914,103 +2137,119 @@ msgid "%B: linking little endian files with big endian files" msgstr "%B: производитÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° файлов Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ порÑдком байт Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ñ Ð¿Ñ€Ñмым порÑдком байт" -#: elf32-spu.c:607 +#: elf32-spu.c:719 +msgid "%X%P: overlay section %A does not start on a cache line.\n" +msgstr "%X%P: раздел Ð¾Ð²ÐµÑ€Ð»ÐµÑ %A не начинаетÑÑ Ñо Ñтроки кÑша.\n" + +#: elf32-spu.c:727 +msgid "%X%P: overlay section %A is larger than a cache line.\n" +msgstr "%X%P: раздел Ð¾Ð²ÐµÑ€Ð»ÐµÑ %A больше Ñтроки кÑша.\n" + +#: elf32-spu.c:747 +msgid "%X%P: overlay section %A is not in cache area.\n" +msgstr "%X%P: раздел Ð¾Ð²ÐµÑ€Ð»ÐµÑ %A не в облаÑти кÑша.\n" + +#: elf32-spu.c:787 msgid "%X%P: overlay sections %A and %A do not start at the same address.\n" msgstr "%X%P: разделы оверлеев %A и %A не начинаютÑÑ Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾Ð³Ð¾ адреÑа.\n" -#: elf32-spu.c:805 +#: elf32-spu.c:1011 msgid "warning: call to non-function symbol %s defined in %B" msgstr "предупреждение: в %B определён вызов Ñимвола не-функции %s" -#: elf32-spu.c:1406 +#: elf32-spu.c:1361 +msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" +msgstr "%A:0x%v lrlive .brinfo (%u) отличаетÑÑ Ð¾Ñ‚ анализируемого (%u)\n" + +#: elf32-spu.c:1880 msgid "%B is not allowed to define %s" msgstr "%B не разрешает определÑÑ‚ÑŒ %s" -#: elf32-spu.c:1453 +#: elf32-spu.c:1888 +#, c-format +msgid "you are not allowed to define %s in a script" +msgstr "вам не разрешено определÑÑ‚ÑŒ %s в Ñценарии" + +#: elf32-spu.c:1922 #, c-format msgid "%s in overlay section" msgstr "%s в разделе оверлеев" -#: elf32-spu.c:1469 +#: elf32-spu.c:1951 msgid "overlay stub relocation overflow" msgstr "переполнение оверлейной заглушки перемещениÑ" -#: elf32-spu.c:1478 elf64-ppc.c:10078 +#: elf32-spu.c:1960 elf64-ppc.c:11327 msgid "stubs don't match calculated size" msgstr "заглушка не ÑоответÑтвует вычиÑленному размеру" -#: elf32-spu.c:1976 +#: elf32-spu.c:2542 #, c-format msgid "warning: %s overlaps %s\n" msgstr "предупреждение: %s перекрываетÑÑ Ñ %s\n" -#: elf32-spu.c:1992 +#: elf32-spu.c:2558 #, c-format msgid "warning: %s exceeds section size\n" msgstr "предупреждение: %s превышает размер раздела\n" -#: elf32-spu.c:2023 +#: elf32-spu.c:2589 msgid "%A:0x%v not found in function table\n" msgstr "%A:0x%v не найдена в таблице функций\n" -#: elf32-spu.c:2165 +#: elf32-spu.c:2729 msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n" msgstr "%B(%A+0x%v): вызов не кодового раздела %B(%A), анализ не полон\n" -#: elf32-spu.c:2339 -#, c-format -msgid "%A link_order not found\n" -msgstr "%A link_order не найден\n" - -#: elf32-spu.c:2706 +#: elf32-spu.c:3297 #, c-format msgid "Stack analysis will ignore the call from %s to %s\n" msgstr "Ð’ анализе Ñтека будет игнорироватьÑÑ Ð²Ñ‹Ð·Ð¾Ð² из %s в %s\n" -#: elf32-spu.c:3348 +#: elf32-spu.c:3988 msgid " %s: 0x%v\n" msgstr " %s: 0x%v\n" -#: elf32-spu.c:3349 +#: elf32-spu.c:3989 msgid "%s: 0x%v 0x%v\n" msgstr "%s: 0x%v 0x%v\n" -#: elf32-spu.c:3354 +#: elf32-spu.c:3994 msgid " calls:\n" msgstr " вызовы:\n" -#: elf32-spu.c:3362 +#: elf32-spu.c:4002 #, c-format msgid " %s%s %s\n" msgstr " %s%s %s\n" -#: elf32-spu.c:3564 +#: elf32-spu.c:4307 #, c-format msgid "%s duplicated in %s\n" msgstr "%s повторÑетÑÑ Ð² %s\n" -#: elf32-spu.c:3568 +#: elf32-spu.c:4311 #, c-format msgid "%s duplicated\n" msgstr "%s повторÑетÑÑ\n" -#: elf32-spu.c:3575 +#: elf32-spu.c:4318 msgid "sorry, no support for duplicate object files in auto-overlay script\n" msgstr "поддержка повторÑющихÑÑ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ñ… файлов в Ñценарии auto-overlay пока не Ñделана\n" -#: elf32-spu.c:3605 +#: elf32-spu.c:4359 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n" msgstr "неоверлейный размер 0x%v Ð¿Ð»ÑŽÑ Ð¼Ð°ÐºÑимальный размер Ð¾Ð²ÐµÑ€Ð»ÐµÑ 0x%v превышает локальное хранилище\n" -#: elf32-spu.c:3741 +#: elf32-spu.c:4514 msgid "%B:%A%s exceeds overlay size\n" msgstr "%B:%A%s превышает размер оверлеÑ\n" -#: elf32-spu.c:3862 +#: elf32-spu.c:4676 msgid "Stack size for call graph root nodes.\n" msgstr "Размер Ñтека Ð´Ð»Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð° графа корневых узлов.\n" -#: elf32-spu.c:3863 +#: elf32-spu.c:4677 msgid "" "\n" "Stack size for functions. Annotations: '*' max stack, 't' tail call\n" @@ -2018,216 +2257,281 @@ "\n" "Размер Ñтека Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹. ПримечаниÑ: '*' Ð¼Ð°ÐºÑ Ñтек, 't' хвоÑтовой вызов\n" -#: elf32-spu.c:3871 +#: elf32-spu.c:4687 msgid "Maximum stack required is 0x%v\n" msgstr "Ð”Ð»Ñ Ð¼Ð°ÐºÑимального Ñтека требуетÑÑ 0x%v\n" -#: elf32-spu.c:4067 +#: elf32-spu.c:4778 +msgid "fatal error while creating .fixup" +msgstr "неиÑÐ¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° при Ñоздании .fixup" + +#: elf32-spu.c:5006 msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'" msgstr "%B(%s+0x%lx): неразрешённое перемещение %s Ð´Ð»Ñ Ñимвола `%s'" -#: elf32-v850.c:165 +#: elf32-tic6x.c:1539 +msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined" +msgstr "%B: отноÑительное перемещение SB, но __c6xabi_DSBT_BASE не определён" + +#. Shared libraries and exception handling support not +#. implemented. +#: elf32-tic6x.c:1554 +msgid "%B: relocation type %d not implemented" +msgstr "%B: тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Â«%s» не реализован" + +#: elf32-tic6x.c:1640 +msgid "dangerous relocation" +msgstr "опаÑное перемещение" + +#: elf32-tic6x.c:1788 elf32-tic6x.c:1796 +msgid "error: %B requires more stack alignment than %B preserves" +msgstr "ошибка: Ð´Ð»Ñ %B требуетÑÑ Ð±Ð¾Ð»ÑŒÑˆÐµÐµ выравнивание Ñтека, чем Ñохранено в %B" + +#: elf32-tic6x.c:1806 elf32-tic6x.c:1815 +msgid "error: unknown Tag_ABI_array_object_alignment value in %B" +msgstr "ошибка: неизвеÑтное значение Tag_ABI_array_object_alignment в %B" + +#: elf32-tic6x.c:1824 elf32-tic6x.c:1833 +msgid "error: unknown Tag_ABI_array_object_align_expected value in %B" +msgstr "ошибка: неизвеÑтное значение Tag_ABI_array_object_align_expected в %B" + +#: elf32-tic6x.c:1841 elf32-tic6x.c:1848 +msgid "error: %B requires more array alignment than %B preserves" +msgstr "ошибка: Ð´Ð»Ñ %B требуетÑÑ Ð±Ð¾Ð»ÑŒÑˆÐµÐµ выравнивание маÑÑива, чем Ñохранено в %B" + +#: elf32-tic6x.c:1870 +msgid "warning: %B and %B differ in wchar_t size" +msgstr "предупреждение: в %B и %B различаетÑÑ Ñ€Ð°Ð·Ð¼ÐµÑ€ wchar_t" + +#: elf32-tic6x.c:1888 +msgid "warning: %B and %B differ in whether code is compiled for DSBT" +msgstr "предупреждение: в %B и %B по-разному Ñкомпилирован код Ð´Ð»Ñ DSBT" + +#: elf32-tic6x.c:1898 +msgid "warning: %B and %B differ in position-dependence of data addressing" +msgstr "предупреждение: в %B и %B различаетÑÑ Ð°Ð´Ñ€ÐµÑÐ°Ñ†Ð¸Ñ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимых по Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…" + +#: elf32-tic6x.c:1908 +msgid "warning: %B and %B differ in position-dependence of code addressing" +msgstr "предупреждение: в %B и %B различаетÑÑ Ð°Ð´Ñ€ÐµÑÐ°Ñ†Ð¸Ñ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимого по Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°" + +#: elf32-v850.c:173 #, c-format msgid "Variable `%s' cannot occupy in multiple small data regions" msgstr "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ `%s' не может занимать неÑколько маленьких облаÑтей данных" -#: elf32-v850.c:168 +#: elf32-v850.c:176 #, c-format msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions" msgstr "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ `%s' может быть только в одном из маленьких, нулевых и крошечных облаÑтей данных" -#: elf32-v850.c:171 +#: elf32-v850.c:179 #, c-format msgid "Variable `%s' cannot be in both small and zero data regions simultaneously" msgstr "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ `%s' не может быть в маленьких и нулевых облаÑÑ‚ÑÑ… данных одновременно" -#: elf32-v850.c:174 +#: elf32-v850.c:182 #, c-format msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously" msgstr "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ `%s' не может быть в маленьких и крошечных облаÑÑ‚ÑÑ… данных одновременно" -#: elf32-v850.c:177 +#: elf32-v850.c:185 #, c-format msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously" msgstr "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ `%s' не может быть в нулевых и крошечных облаÑÑ‚ÑÑ… данных одновременно" -#: elf32-v850.c:480 +#: elf32-v850.c:483 #, c-format msgid "FAILED to find previous HI16 reloc\n" msgstr "ÐЕ УДÐЛОСЬ найти предыдущее перемещение HI16\n" -#: elf32-v850.c:1715 +#: elf32-v850.c:2155 msgid "could not locate special linker symbol __gp" msgstr "невозможно отыÑкать Ñпециальный Ñимвол компоновки __gp" -#: elf32-v850.c:1719 +#: elf32-v850.c:2159 msgid "could not locate special linker symbol __ep" msgstr "невозможно отыÑкать Ñпециальный Ñимвол компоновки __ep" -#: elf32-v850.c:1723 +#: elf32-v850.c:2163 msgid "could not locate special linker symbol __ctbp" msgstr "невозможно отыÑкать Ñпециальный Ñимвол компоновки __ctbp" -#: elf32-v850.c:1873 +#: elf32-v850.c:2341 msgid "%B: Architecture mismatch with previous modules" msgstr "%B: Ðрхитектура не Ñовпадает Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ модулÑми" -#: elf32-v850.c:1892 +#. xgettext:c-format. +#: elf32-v850.c:2360 #, c-format msgid "private flags = %lx: " msgstr "ÑобÑтвенные флаги = %lx: " -#: elf32-v850.c:1897 +#: elf32-v850.c:2365 #, c-format msgid "v850 architecture" msgstr "архитектура v850" -#: elf32-v850.c:1898 +#: elf32-v850.c:2366 #, c-format msgid "v850e architecture" msgstr "архитектура v850e" -#: elf32-v850.c:1899 +#: elf32-v850.c:2367 #, c-format msgid "v850e1 architecture" msgstr "архитектура v850e1" -#: elf32-vax.c:541 +#: elf32-v850.c:2368 +#, c-format +msgid "v850e2 architecture" +msgstr "архитектура v850e2" + +#: elf32-v850.c:2369 +#, c-format +msgid "v850e2v3 architecture" +msgstr "архитектура v850e2v3" + +#: elf32-vax.c:531 #, c-format msgid " [nonpic]" msgstr " [не-pic]" -#: elf32-vax.c:544 +#: elf32-vax.c:534 #, c-format msgid " [d-float]" msgstr " [d-float]" -#: elf32-vax.c:547 +#: elf32-vax.c:537 #, c-format msgid " [g-float]" msgstr " [g-float]" -#: elf32-vax.c:657 +#: elf32-vax.c:654 #, c-format msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld" msgstr "%s: предупреждение: добавление GOT из %ld к `%s' не Ñовпадает Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼ добавлением GOT из %ld" -#: elf32-vax.c:1589 +#: elf32-vax.c:1587 #, c-format msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" msgstr "%s: предупреждение: добавление PLT из %d к `%s' из раздела %s игнорируетÑÑ" -#: elf32-vax.c:1726 +#: elf32-vax.c:1714 #, c-format msgid "%s: warning: %s relocation against symbol `%s' from %s section" msgstr "%s: предупреждение: перемещение %s Ð´Ð»Ñ Ñимвола `%s' из раздела %s" -#: elf32-vax.c:1732 +#: elf32-vax.c:1720 #, c-format msgid "%s: warning: %s relocation to 0x%x from %s section" msgstr "%s: предупреждение: перемещение %s к 0x%x из раздела %s" -#: elf32-xstormy16.c:451 elf32-ia64.c:2794 elf64-ia64.c:2794 +#: elf32-xstormy16.c:451 elf32-ia64.c:2861 elf64-ia64.c:2861 msgid "non-zero addend in @fptr reloc" msgstr "ненулевое добавление в перемещение @fptr" -#: elf32-xtensa.c:911 +#: elf32-xtensa.c:918 msgid "%B(%A): invalid property table" msgstr "%B(%A): недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° ÑвойÑтв" -#: elf32-xtensa.c:2734 +#: elf32-xtensa.c:2780 msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)" msgstr "%B(%A+0x%lx): Ñмещение Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð²Ð½Ðµ диапазона (размер=0x%x)" -#: elf32-xtensa.c:2813 elf32-xtensa.c:2934 +#: elf32-xtensa.c:2859 elf32-xtensa.c:2980 msgid "dynamic relocation in read-only section" msgstr "динамичеÑкое перемещение в разделе только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" -#: elf32-xtensa.c:2910 +#: elf32-xtensa.c:2956 msgid "TLS relocation invalid without dynamic sections" msgstr "TLS-перемещение недопуÑтимо без динамичеÑких разделов" -#: elf32-xtensa.c:3127 +#: elf32-xtensa.c:3173 msgid "internal inconsistency in size of .got.loc section" msgstr "внутреннÑÑ Ð½ÐµÑоглаÑованноÑÑ‚ÑŒ размера раздела .got.loc" -#: elf32-xtensa.c:3437 +#: elf32-xtensa.c:3486 msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x" msgstr "%B: неÑовмеÑтимый машинный тип. Выходной 0x%x. Входной 0x%x" -#: elf32-xtensa.c:4666 elf32-xtensa.c:4674 +#: elf32-xtensa.c:4715 elf32-xtensa.c:4723 msgid "Attempt to convert L32R/CALLX to CALL failed" msgstr "Попытка Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ L32R/CALLX в CALL завершилаÑÑŒ неудачно" -#: elf32-xtensa.c:6276 elf32-xtensa.c:6352 elf32-xtensa.c:7468 +#: elf32-xtensa.c:6333 elf32-xtensa.c:6409 elf32-xtensa.c:7525 msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch" msgstr "%B(%A+0x%lx): невозможно декодировать инÑтрукцию; возможно неÑовпадение конфигурации" -#: elf32-xtensa.c:7208 +#: elf32-xtensa.c:7265 msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch" msgstr "%B(%A+0x%lx): невозможно декодировать инÑтрукцию Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ XTENSA_ASM_SIMPLIFY; возможно неÑовпадение конфигурации" -#: elf32-xtensa.c:8969 +#: elf32-xtensa.c:9024 msgid "invalid relocation address" msgstr "недопуÑтимый Ð°Ð´Ñ€ÐµÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ" -#: elf32-xtensa.c:9018 +#: elf32-xtensa.c:9073 msgid "overflow after relaxation" msgstr "переполнение поÑле оÑлаблениÑ" -#: elf32-xtensa.c:10154 +#: elf32-xtensa.c:10205 msgid "%B(%A+0x%lx): unexpected fix for %s relocation" msgstr "%B(%A+0x%lx): неожиданное назначение Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s" -#: elf64-alpha.c:452 +#: elf64-alpha.c:460 msgid "GPDISP relocation did not find ldah and lda instructions" msgstr "Ðе найдены инÑтрукции ldah и lda Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ GPDISP" -#: elf64-alpha.c:2416 +#: elf64-alpha.c:2408 msgid "%B: .got subsegment exceeds 64K (size %d)" msgstr "%B: подраздел .got превышает 64K (размер %d)" -#: elf64-alpha.c:4296 elf64-alpha.c:4308 +#: elf64-alpha.c:4304 elf64-alpha.c:4316 msgid "%B: gp-relative relocation against dynamic symbol %s" msgstr "%B: gp-отноÑительное перемещение Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола %s" -#: elf64-alpha.c:4334 elf64-alpha.c:4469 +#: elf64-alpha.c:4342 elf64-alpha.c:4477 msgid "%B: pc-relative relocation against dynamic symbol %s" msgstr "%B: pc-отноÑительное перемещение Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола %s" -#: elf64-alpha.c:4362 +#: elf64-alpha.c:4370 msgid "%B: change in gp: BRSGP %s" msgstr "%B: изменение в gp: BRSGP %s" -#: elf64-alpha.c:4387 +#: elf64-alpha.c:4395 msgid "" msgstr "<неизвеÑтно>" -#: elf64-alpha.c:4392 +#: elf64-alpha.c:4400 msgid "%B: !samegp reloc against symbol without .prologue: %s" msgstr "%B: перемещение !samegp Ð´Ð»Ñ Ñимвола без .prologue: %s" -#: elf64-alpha.c:4444 +#: elf64-alpha.c:4452 msgid "%B: unhandled dynamic relocation against %s" msgstr "%B: необработанное динамичеÑкое перемещение Ð´Ð»Ñ %s" -#: elf64-alpha.c:4476 +#: elf64-alpha.c:4484 msgid "%B: pc-relative relocation against undefined weak symbol %s" msgstr "%B: pc-отноÑительное перемещение Ð´Ð»Ñ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñлабого Ñимвола %s" -#: elf64-alpha.c:4536 +#: elf64-alpha.c:4544 msgid "%B: dtp-relative relocation against dynamic symbol %s" msgstr "%B: dtp-отноÑительное перемещение Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола %s" -#: elf64-alpha.c:4559 +#: elf64-alpha.c:4567 msgid "%B: tp-relative relocation against dynamic symbol %s" msgstr "%B: tp-отноÑительное перемещение Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола %s" -#: elf64-hppa.c:2071 +#: elf64-hppa.c:2101 #, c-format msgid "stub entry for %s cannot load .plt, dp offset = %ld" msgstr "Ñлемент заглушки Ð´Ð»Ñ %s не может загрузить .plt, Ñмещение dp = %ld" +#: elf64-hppa.c:3299 +msgid "%B(%A+0x%lx): cannot reach %s" +msgstr "%B(%A+0x%lx): невозможно добратьÑÑ Ð´Ð¾ %s" + #: elf64-mmix.c:1177 #, c-format msgid "" @@ -2237,46 +2541,46 @@ "%s: Ошибка внутреннего неÑоответÑÑ‚Ð²Ð¸Ñ Ð´Ð»Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ\n" " глобального региÑтра назначаемого компоновщиком: Ñкомпонован: 0x%lx%08lx != оÑлаблен: 0x%lx%08lx\n" -#: elf64-mmix.c:1618 +#: elf64-mmix.c:1607 #, c-format msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s" msgstr "%s: перемещение база-плюÑ-Ñмещение Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрового Ñимвола: (неизвеÑтно) в %s" -#: elf64-mmix.c:1623 +#: elf64-mmix.c:1612 #, c-format msgid "%s: base-plus-offset relocation against register symbol: %s in %s" msgstr "%s: перемещение база-плюÑ-Ñмещение Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрового Ñимвола: %s в %s" -#: elf64-mmix.c:1667 +#: elf64-mmix.c:1656 #, c-format msgid "%s: register relocation against non-register symbol: (unknown) in %s" msgstr "%s: региÑтровое перемещение Ð´Ð»Ñ Ð½ÐµÑ€ÐµÐ³Ð¸Ñтрового Ñимвола: (неизвеÑтно) в %s" -#: elf64-mmix.c:1672 +#: elf64-mmix.c:1661 #, c-format msgid "%s: register relocation against non-register symbol: %s in %s" msgstr "%s: региÑтровое перемещение Ð´Ð»Ñ Ð½ÐµÑ€ÐµÐ³Ð¸Ñтрового Ñимвола: %s в %s" -#: elf64-mmix.c:1709 +#: elf64-mmix.c:1698 #, c-format msgid "%s: directive LOCAL valid only with a register or absolute value" msgstr "%s: директива LOCAL разрешена только Ñ Ñ€ÐµÐ³Ð¸Ñтром или абÑолютным значением" -#: elf64-mmix.c:1737 +#: elf64-mmix.c:1726 #, c-format msgid "%s: LOCAL directive: Register $%ld is not a local register. First global register is $%ld." msgstr "%s: директива LOCAL: РегиÑÑ‚Ñ€ $%ld не ÑвлÑетÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ региÑтром. Первый глобальный региÑÑ‚Ñ€: $%ld." -#: elf64-mmix.c:2201 +#: elf64-mmix.c:2190 #, c-format msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n" msgstr "%s: Ошибка: множеÑтвенные объÑÐ²Ð»ÐµÐ½Ð¸Ñ `%s'; начало %s уÑтановлено в ранее Ñкомпонованном файле\n" -#: elf64-mmix.c:2259 +#: elf64-mmix.c:2248 msgid "Register section has contents\n" msgstr "Ð’ региÑтровом разделе имеетÑÑ Ñодержимое\n" -#: elf64-mmix.c:2451 +#: elf64-mmix.c:2440 #, c-format msgid "" "Internal inconsistency: remaining %u != max %u.\n" @@ -2285,65 +2589,65 @@ "Внутреннее противоречие: оÑтаётÑÑ %u != Ð¼Ð°ÐºÑ %u.\n" " Сообщите об ошибке." -#: elf64-ppc.c:2561 libbfd.c:978 +#: elf64-ppc.c:2741 libbfd.c:997 msgid "%B: compiled for a big endian system and target is little endian" msgstr "%B: Ñкомпилировано Ð´Ð»Ñ ÑиÑтемы Ñ Ð¿Ñ€Ñмым порÑдком байт, а цель Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ порÑдком байт" -#: elf64-ppc.c:2564 libbfd.c:980 +#: elf64-ppc.c:2744 libbfd.c:999 msgid "%B: compiled for a little endian system and target is big endian" msgstr "%B: Ñкомпилировано Ð´Ð»Ñ ÑиÑтемы Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ порÑдком байт, а цель Ñ Ð¿Ñ€Ñмым порÑдком байт" -#: elf64-ppc.c:6065 +#: elf64-ppc.c:6473 #, c-format msgid "copy reloc against `%s' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc" msgstr "копирование Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ `%s' требует ленивой plt-компоновки; не задавайте LD_BIND_NOW=1 или обновите gcc" -#: elf64-ppc.c:6486 +#: elf64-ppc.c:6901 msgid "dynreloc miscount for %B, section %A" msgstr "ошибка в вычиÑлении dynreloc %B, раздел %A" -#: elf64-ppc.c:6570 +#: elf64-ppc.c:6985 msgid "%B: .opd is not a regular array of opd entries" msgstr "%B: .opd не ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ маÑÑивом Ñлементов opd" -#: elf64-ppc.c:6579 +#: elf64-ppc.c:6994 msgid "%B: unexpected reloc type %u in .opd section" msgstr "%B: неожиданный тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %u в разделе .opd" -#: elf64-ppc.c:6600 +#: elf64-ppc.c:7015 msgid "%B: undefined sym `%s' in .opd section" msgstr "%B: неопределённый Ñимвол `%s' в разделе .opd" -#: elf64-ppc.c:7377 elf64-ppc.c:7754 +#: elf64-ppc.c:7877 elf64-ppc.c:8392 #, c-format -msgid "%s defined in removed toc entry" -msgstr "%s определён в удалённом Ñлементе toc" +msgid "%s defined on removed toc entry" +msgstr "%s определён на удалённом Ñлементе toc" -#: elf64-ppc.c:8581 +#: elf64-ppc.c:9459 #, c-format msgid "long branch stub `%s' offset overflow" -msgstr "переполнение ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ длинного перехода `%s'" +msgstr "переполнение ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ длинного перехода «%s»" -#: elf64-ppc.c:8640 +#: elf64-ppc.c:9518 #, c-format msgid "can't find branch stub `%s'" msgstr "не найдена заглушка перехода `%s'" -#: elf64-ppc.c:8702 elf64-ppc.c:8822 +#: elf64-ppc.c:9580 elf64-ppc.c:9716 #, c-format msgid "linkage table error against `%s'" msgstr "ошибка в таблице компоновки Ð´Ð»Ñ `%s'" -#: elf64-ppc.c:8978 +#: elf64-ppc.c:9886 #, c-format msgid "can't build branch stub `%s'" msgstr "невозможно Ñобрать заглушку перехода `%s'" -#: elf64-ppc.c:9451 +#: elf64-ppc.c:10684 msgid "%B section %A exceeds stub group size" msgstr "%B раздел %A превышает групповой размер заглушки" -#: elf64-ppc.c:10090 +#: elf64-ppc.c:11339 #, c-format msgid "" "linker stubs in %u group%s\n" @@ -2360,419 +2664,426 @@ " иÑправление длинного long %lu\n" " plt-вызовl %lu" -#: elf64-ppc.c:10769 +#: elf64-ppc.c:12190 msgid "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc" msgstr "%B(%A+0x%lx): автоматичеÑкие множеÑтвенные TOC не поддерживаютÑÑ Ñ‡ÐµÑ€ÐµÐ· ваши файлы crt; перекомпилируйте Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mminimal-toc или обновите gcc" -#: elf64-ppc.c:10777 +#: elf64-ppc.c:12198 msgid "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern" msgstr "%B(%A+0x%lx): Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ð´Ð½Ð¾ÑƒÑ€Ð¾Ð²Ð½ÐµÐ²Ñ‹Ñ… вызовов к `%s' не разрешена из-за автоматичеÑких множеÑтвенных TOC; перекомпилируйте Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mminimal-toc или -fno-optimize-sibling-calls, или Ñоздайте внешний `%s'" -#: elf64-ppc.c:11427 +#: elf64-ppc.c:12919 msgid "%B: relocation %s is not supported for symbol %s." msgstr "%B: перемещение %s не поддерживаетÑÑ Ð´Ð»Ñ Ñимвола %s." -#: elf64-ppc.c:11509 +#: elf64-ppc.c:13096 msgid "%B: error: relocation %s not a multiple of %d" msgstr "%B: ошибка: перемещение %s не кратно %d" -#: elf64-sh64.c:1701 +#: elf64-sh64.c:1682 #, c-format msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n" msgstr "%s: ошибка: невыровненный тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %d по адреÑу %08x перемещение %08x\n" -#: elf64-sparc.c:439 +#: elf64-sparc.c:444 msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER" msgstr "%B: Только региÑтры %%g[2367] могут объÑвлÑÑ‚ÑŒÑÑ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ STT_REGISTER" -#: elf64-sparc.c:459 +#: elf64-sparc.c:464 msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B" msgstr "ÐеÑовмеÑтимое иÑпользование региÑтра %%g%d: %s в %B, ранее %s в %B" -#: elf64-sparc.c:482 +#: elf64-sparc.c:487 msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B" msgstr "Символ `%s' имеет различные типы: REGISTER в %B, ранее %s в %B" -#: elf64-sparc.c:527 +#: elf64-sparc.c:532 msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B" msgstr "Символ `%s' имеет различные типы: %s в %B, ранее REGISTER в %B" -#: elf64-sparc.c:678 +#: elf64-sparc.c:684 msgid "%B: linking UltraSPARC specific with HAL specific code" msgstr "%B: UltraSPARC-ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ HAL-Ñпецифичным кодом" -#: elf64-x86-64.c:1047 elf64-x86-64.c:1207 elfxx-mips.c:7834 -msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" -msgstr "%B: перемещение %s Ð´Ð»Ñ `%s' не может иÑпользоватьÑÑ Ð¿Ñ€Ð¸ Ñоздании разделÑемого объекта; перекомпилируйте Ñ -fPIC" - -#: elf64-x86-64.c:1138 +#: elf64-x86-64.c:1360 msgid "%B: '%s' accessed both as normal and thread local symbol" msgstr "%B: '%s' доÑтупен как обычный и как локальный Ð´Ð»Ñ Ð½Ð¸Ñ‚Ð¸ Ñимвол" -#: elf64-x86-64.c:2559 +#: elf64-x86-64.c:2801 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d" +msgstr "%B: перемещение %s вмеÑте Ñ STT_GNU_IFUNC Ñимволом %s имеет ненулевое добавление: %d" + +#: elf64-x86-64.c:3073 msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object" msgstr "%B: перемещение R_X86_64_GOTOFF64 Ð´Ð»Ñ Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð¹ функции `%s' не может иÑпользоватьÑÑ Ð¿Ñ€Ð¸ Ñоздании разделÑемого объекта" -#: elf64-x86-64.c:2670 +#: elf64-x86-64.c:3184 msgid "; recompile with -fPIC" msgstr "; перекомпилируйте Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIC" -#: elf64-x86-64.c:2675 +#: elf64-x86-64.c:3189 msgid "%B: relocation %s against %s `%s' can not be used when making a shared object%s" msgstr "%B: перемещение %s Ð´Ð»Ñ %s `%s' не может иÑпользоватьÑÑ Ð¿Ñ€Ð¸ Ñоздании разделÑемого объекта(ов)" -#: elf64-x86-64.c:2677 +#: elf64-x86-64.c:3191 msgid "%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s" msgstr "%B: перемещение %s Ð´Ð»Ñ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s `%s' не может иÑпользоватьÑÑ Ð¿Ñ€Ð¸ Ñоздании разделÑемого объекта(ов)" -#: elfcode.h:795 +#: elfcode.h:826 #, c-format msgid "warning: %s has a corrupt string table index - ignoring" msgstr "предупреждение: у %s повреждена таблица индекÑов Ñтрок - игнорируетÑÑ" -#: elfcode.h:1201 +#: elfcode.h:1236 #, c-format msgid "%s: version count (%ld) does not match symbol count (%ld)" msgstr "%s: Ñчётчик верÑии (%ld) не Ñовпадает Ñо Ñчётчиком Ñимвола (%ld)" -#: elfcode.h:1435 +#: elfcode.h:1476 #, c-format msgid "%s(%s): relocation %d has invalid symbol index %ld" msgstr "%s(%s): перемещение %d имеет недопуÑтимый Ð¸Ð½Ð´ÐµÐºÑ Ñимвола %ld" -#: elfcore.h:251 +#: elfcore.h:312 msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu." msgstr "Предупреждение: %B уÑечён: ожидалÑÑ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñдра файла >= %lu, найдено: %lu." -#: elflink.c:1028 +#: elflink.c:1119 msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A" msgstr "%s: TLS-определение в %B раздела %A не Ñовпадает Ñ Ð½Ðµ-TLS определением в %B раздела %A" -#: elflink.c:1032 +#: elflink.c:1123 msgid "%s: TLS reference in %B mismatches non-TLS reference in %B" msgstr "%s: TLS-ÑÑылка в %B не Ñовпадает Ñ Ð½Ðµ-TLS ÑÑылкой в %B" -#: elflink.c:1036 +#: elflink.c:1127 msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B" msgstr "%s: TLS-определение в %B раздела %A не Ñовпадает Ñ Ð½Ðµ-TLS ÑÑылкой в %B" -#: elflink.c:1040 +#: elflink.c:1131 msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A" msgstr "%s: TLS-ÑÑылка в %B не Ñовпадает Ñ Ð½Ðµ-TLS определением в %B раздела %A" -#: elflink.c:1654 +#: elflink.c:1763 msgid "%B: unexpected redefinition of indirect versioned symbol `%s'" msgstr "%B: неожиданное переопределение коÑвенного верÑионного Ñимвола `%s'" -#: elflink.c:1982 +#: elflink.c:2076 msgid "%B: version node not found for symbol %s" msgstr "%B: верÑÐ¸Ñ ÑƒÐ·Ð»Ð° не найдена Ð´Ð»Ñ Ñимвола %s" -#: elflink.c:2130 +#: elflink.c:2166 msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'" msgstr "%B: неправильный Ð¸Ð½Ð´ÐµÐºÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ñимвола (0x%lx >= 0x%lx) Ð´Ð»Ñ ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ 0x%lx в разделе `%A'" -#: elflink.c:2327 +#: elflink.c:2177 +msgid "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the object file has no symbol table" +msgstr "%B: ненулевой Ð¸Ð½Ð´ÐµÐºÑ Ñимвола (0x%lx) Ð´Ð»Ñ ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ 0x%lx в разделе `%A', в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº в объектном файле нет таблицы Ñимволов" + +#: elflink.c:2367 msgid "%B: relocation size mismatch in %B section %A" msgstr "%B: размер Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð½Ðµ Ñовпадает в %B раздела %A" -#: elflink.c:2629 +#: elflink.c:2662 #, c-format msgid "warning: type and size of dynamic symbol `%s' are not defined" msgstr "предупреждение: тип и размер динамичеÑкого Ñимвола `%s' не определён" -#: elflink.c:3953 +#: elflink.c:3418 +msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n" +msgstr "%P: обнаружен альтернативный машинный код ELF (%d) в %B, ожидаетÑÑ %d\n" + +#: elflink.c:4050 msgid "%B: %s: invalid version %u (max %d)" msgstr "%B: %s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ %u (Ð¼Ð°ÐºÑ %d)" -#: elflink.c:3989 +#: elflink.c:4086 msgid "%B: %s: invalid needed version %d" msgstr "%B: %s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ %d" -#: elflink.c:4172 +#: elflink.c:4285 msgid "Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %A" msgstr "Предупреждение: выравнивание %u общего Ñимвола `%s' в %B больше, чем выравнивание (%u) его раздела %A" -#: elflink.c:4178 +#: elflink.c:4291 msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B" msgstr "Предупреждение: выравнивание %u Ñимвола `%s' в %B меньше, чем %u в %B" -#: elflink.c:4193 +#: elflink.c:4306 msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B" msgstr "Предупреждение: размер Ñимвола `%s' изменилÑÑ Ñ %lu в %B на %lu в %B" -#: elflink.c:4371 -#, c-format -msgid "%s: invalid DSO for symbol `%s' definition" -msgstr "%s: недопуÑтимый DSO Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñимвола `%s'" +#: elflink.c:4472 +msgid "%B: undefined reference to symbol '%s'" +msgstr "%B: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ ÑÑылка на Ñимвол «%s»" + +#: elflink.c:4475 +msgid "note: '%s' is defined in DSO %B so try adding it to the linker command line" +msgstr "замечание: «%s» определён в DSO %B, попробуйте добавить его в командную Ñтроку компоновщика" -#: elflink.c:5621 +#: elflink.c:5779 #, c-format msgid "%s: undefined version: %s" msgstr "%s: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑиÑ: %s" -#: elflink.c:5689 +#: elflink.c:5847 msgid "%B: .preinit_array section is not allowed in DSO" msgstr "%B: раздел .preinit_array не разрешаетÑÑ Ð² DSO" -#: elflink.c:7414 +#: elflink.c:7598 #, c-format msgid "undefined %s reference in complex symbol: %s" msgstr "Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ ÑÑылка %s в Ñложном Ñимволе: %s" -#: elflink.c:7568 +#: elflink.c:7752 #, c-format msgid "unknown operator '%c' in complex symbol" msgstr "неизвеÑтный оператор '%c' в Ñложном Ñимволе" -#: elflink.c:7904 elflink.c:7921 elflink.c:7958 elflink.c:7975 +#: elflink.c:8091 elflink.c:8108 elflink.c:8145 elflink.c:8162 msgid "%B: Unable to sort relocs - they are in more than one size" msgstr "%B: Ðевозможно отÑортировать Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ - они разных размеров" -#: elflink.c:7935 elflink.c:7989 +#: elflink.c:8122 elflink.c:8176 msgid "%B: Unable to sort relocs - they are of an unknown size" msgstr "%B: Ðевозможно отÑортировать Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ - они неизвеÑтного размера" -#: elflink.c:8038 +#: elflink.c:8227 msgid "Not enough memory to sort relocations" msgstr "ÐедоÑтаточно памÑти Ð´Ð»Ñ Ñортировки перемещений" -#: elflink.c:8227 +#: elflink.c:8420 msgid "%B: Too many sections: %d (>= %d)" msgstr "%B: Слишком много разделов: %d (>= %d)" -#: elflink.c:8461 +#: elflink.c:8663 msgid "%B: %s symbol `%s' in %B is referenced by DSO" msgstr "%B: %s Ñимвол `%s' в %B указываетÑÑ Ð¸Ð· DSO" -#: elflink.c:8544 +#: elflink.c:8754 msgid "%B: could not find output section %A for input section %A" msgstr "%B: невозможно найти выходной раздел %A Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ раздела %A" -#: elflink.c:8655 +#: elflink.c:8874 msgid "%B: %s symbol `%s' isn't defined" msgstr "%B: %s Ñимвол `%s' не определён" -#: elflink.c:9141 +#: elflink.c:9428 msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol" msgstr "ошибка: %B Ñодержит перемещение (0x%s) Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %A, который ÑÑылаетÑÑ Ð½Ð° неÑущеÑтвующий глобальный Ñимвол" -#: elflink.c:9205 +#: elflink.c:9494 msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n" msgstr "%X`%s' указывает в раздел `%A' из %B: определён в отброшенном разделе `%A' из %B\n" -#: elflink.c:9825 +#: elflink.c:10141 msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections" msgstr "%A Ñодержит упорÑдоченные [`%A' в %B] и неупорÑдоченные [`%A' в %B] разделы" -#: elflink.c:9830 +#: elflink.c:10146 #, c-format msgid "%A has both ordered and unordered sections" msgstr "%A Ñодержит упорÑдоченные и неупорÑдоченные разделы" -#: elflink.c:10715 elflink.c:10759 +#: elflink.c:10992 elflink.c:11036 msgid "%B: could not find output section %s" msgstr "%B: невозможно найти выходной раздел %s" -#: elflink.c:10720 +#: elflink.c:10997 #, c-format msgid "warning: %s section has zero size" msgstr "предупреждение: раздел %s имеет нулевой размер" -#: elflink.c:10824 +#: elflink.c:11102 msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n" msgstr "%P: предупреждение: ÑоздаётÑÑ DT_TEXTREL в разделÑемом объекте.\n" -#: elflink.c:11006 +#: elflink.c:11289 msgid "%P%X: can not read symbols: %E\n" msgstr "%P%X: невозможно прочитать Ñимволы: %E\n" -#: elflink.c:11313 +#: elflink.c:11638 msgid "Removing unused section '%s' in file '%B'" msgstr "УдалÑетÑÑ Ð½ÐµÐ¸Ñпользуемый раздел '%s' в файле '%B'" -#: elflink.c:11525 +#: elflink.c:11850 msgid "Warning: gc-sections option ignored" msgstr "Предупреждение: параметр gc-sections игнорируетÑÑ" -#: elflink.c:12056 +#: elflink.c:12399 msgid "%B: ignoring duplicate section `%A'" msgstr "%B: игнорируетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑющийÑÑ Ñ€Ð°Ð·Ð´ÐµÐ» `%A'" -#: elflink.c:12063 elflink.c:12070 +#: elflink.c:12406 elflink.c:12413 msgid "%B: duplicate section `%A' has different size" msgstr "%B: повторÑющийÑÑ Ñ€Ð°Ð·Ð´ÐµÐ» `%A' имеет другой размер" -#: elflink.c:12078 elflink.c:12083 +#: elflink.c:12421 elflink.c:12426 msgid "%B: warning: could not read contents of section `%A'" msgstr "%B: предупреждение: невозможно прочитать Ñодержимое раздела `%A'" -#: elflink.c:12087 +#: elflink.c:12430 msgid "%B: warning: duplicate section `%A' has different contents" msgstr "%B: предупреждение: повторÑющийÑÑ Ñ€Ð°Ð·Ð´ÐµÐ» `%A' имеет другое Ñодержимое" -#: elflink.c:12166 linker.c:3080 -msgid "%F%P: already_linked_table: %E" -msgstr "%F%P: already_linked_table: %E" +#: elflink.c:12531 linker.c:3138 +msgid "%F%P: already_linked_table: %E\n" +msgstr "%F%P: already_linked_table: %E\n" -#: elfxx-mips.c:1197 +#: elfxx-mips.c:1220 msgid "static procedure (no name)" msgstr "ÑтатичеÑÐºÐ°Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° (без имени)" -#: elfxx-mips.c:5562 -msgid "%B: %A+0x%lx: jump to stub routine which is not jal" -msgstr "%B: %A+0x%lx: переход в процедуру заглушки, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ не ÑвлÑетÑÑ jal (Jump And Link)" +#: elfxx-mips.c:5623 +msgid "%B: %A+0x%lx: Direct jumps between ISA modes are not allowed; consider recompiling with interlinking enabled." +msgstr "%B: %A+0x%lx: прÑмые переходы между режимами ISA недопуÑтимы; попробуйте перекомпилировать Ñ Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ð¾Ð¹ увÑзкой." -#: elfxx-mips.c:6206 elfxx-mips.c:6427 +#: elfxx-mips.c:6280 elfxx-mips.c:6503 msgid "%B: Warning: bad `%s' option size %u smaller than its header" -msgstr "%B: Предупреждение: неправильный размер параметра `%s' (%u) меньше, чем его заголовок" +msgstr "%B: предупреждение: размер параметра «%s» (%u) меньше, чем его заголовок" -#: elfxx-mips.c:7174 elfxx-mips.c:7299 +#: elfxx-mips.c:7254 elfxx-mips.c:7379 msgid "%B: Warning: cannot determine the target function for stub section `%s'" msgstr "%B: Предупреждение: невозможно определить функцию Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° заглушки `%s'" -#: elfxx-mips.c:7428 +#: elfxx-mips.c:7508 msgid "%B: Malformed reloc detected for section %s" msgstr "%B: Обнаружено иÑкажённое перемещение в разделе %s" -#: elfxx-mips.c:7468 +#: elfxx-mips.c:7548 msgid "%B: GOT reloc at 0x%lx not expected in executables" msgstr "%B: перемещение GOT по адреÑу 0x%lx не ожидаетÑÑ Ð² иÑполнÑемых файлах" -#: elfxx-mips.c:7566 +#: elfxx-mips.c:7670 msgid "%B: CALL16 reloc at 0x%lx not against global symbol" msgstr "%B: перемещение CALL16 по адреÑу 0x%lx не предназначено Ð´Ð»Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñимвола" -#: elfxx-mips.c:8244 +#: elfxx-mips.c:8365 #, c-format msgid "non-dynamic relocations refer to dynamic symbol %s" msgstr "не-динамичеÑкие Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚ на динамичеÑкий Ñимвол %s" -#: elfxx-mips.c:8947 +#: elfxx-mips.c:9068 msgid "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'" msgstr "%B: Ðевозможно найти подходÑщее LO16 перемещение у `%s' Ð´Ð»Ñ %s по адреÑу 0x%lx в разделе `%A'" -#: elfxx-mips.c:9086 +#: elfxx-mips.c:9207 msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)" msgstr "раздел small-data превышает 64КБ - нижний предел small-data (Ñм. параметр -G)" -#: elfxx-mips.c:11887 +#: elfxx-mips.c:12027 #, c-format msgid "%s: illegal section name `%s'" msgstr "%s: недопуÑтимое Ð¸Ð¼Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° `%s'" -#: elfxx-mips.c:12262 elfxx-mips.c:12288 +#: elfxx-mips.c:12405 elfxx-mips.c:12431 msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float" msgstr "Предупреждение: %B иÑпользует -msingle-float, %B иÑпользует -mdouble-float" -#: elfxx-mips.c:12274 elfxx-mips.c:12330 +#: elfxx-mips.c:12417 elfxx-mips.c:12473 msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64" msgstr "Предупреждение: %B иÑпользует -msingle-float, %B иÑпользует -mips32r2 -mfp64" -#: elfxx-mips.c:12300 elfxx-mips.c:12336 +#: elfxx-mips.c:12443 elfxx-mips.c:12479 msgid "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64" msgstr "Предупреждение: %B иÑпользует -mdouble-float, %B иÑпользует -mips32r2 -mfp64" -#: elfxx-mips.c:12378 +#: elfxx-mips.c:12521 msgid "%B: endianness incompatible with that of the selected emulation" msgstr "%B: порÑдок байт не ÑовмеÑтим Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ в ÑмулÑции" -#: elfxx-mips.c:12389 +#: elfxx-mips.c:12532 msgid "%B: ABI is incompatible with that of the selected emulation" msgstr "%B: ABI не ÑовмеÑтим Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ в ÑмулÑции" -#: elfxx-mips.c:12470 +#: elfxx-mips.c:12613 msgid "%B: warning: linking abicalls files with non-abicalls files" msgstr "%B: предупреждение: компоновка файлов abicalls Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ не-abicalls" -#: elfxx-mips.c:12487 +#: elfxx-mips.c:12630 msgid "%B: linking 32-bit code with 64-bit code" msgstr "%B: компоновка 32-битного кода Ñ 64-битным кодом" -#: elfxx-mips.c:12515 +#: elfxx-mips.c:12658 msgid "%B: linking %s module with previous %s modules" msgstr "%B: компоновка Ð¼Ð¾Ð´ÑƒÐ»Ñ %s Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ модулÑми %s" -#: elfxx-mips.c:12538 +#: elfxx-mips.c:12681 msgid "%B: ABI mismatch: linking %s module with previous %s modules" msgstr "%B: неÑовпадение ABI: компоновка Ð¼Ð¾Ð´ÑƒÐ»Ñ %s Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ модулÑми %s" -#: elfxx-mips.c:12702 +#: elfxx-mips.c:12845 #, c-format msgid " [abi=O32]" msgstr " [abi=O32]" -#: elfxx-mips.c:12704 +#: elfxx-mips.c:12847 #, c-format msgid " [abi=O64]" msgstr " [abi=O64]" -#: elfxx-mips.c:12706 +#: elfxx-mips.c:12849 #, c-format msgid " [abi=EABI32]" msgstr " [abi=EABI32]" -#: elfxx-mips.c:12708 +#: elfxx-mips.c:12851 #, c-format msgid " [abi=EABI64]" msgstr " [abi=EABI64]" -#: elfxx-mips.c:12710 +#: elfxx-mips.c:12853 #, c-format msgid " [abi unknown]" msgstr " [abi неизвеÑтен]" -#: elfxx-mips.c:12712 +#: elfxx-mips.c:12855 #, c-format msgid " [abi=N32]" msgstr " [abi=N32]" -#: elfxx-mips.c:12714 +#: elfxx-mips.c:12857 #, c-format msgid " [abi=64]" msgstr " [abi=64]" -#: elfxx-mips.c:12716 +#: elfxx-mips.c:12859 #, c-format msgid " [no abi set]" msgstr " [abi не задан]" -#: elfxx-mips.c:12737 +#: elfxx-mips.c:12880 #, c-format msgid " [unknown ISA]" msgstr " [неизвеÑтный ISA]" -#: elfxx-mips.c:12748 +#: elfxx-mips.c:12891 #, c-format msgid " [not 32bitmode]" msgstr " [не 32-битный режим]" -#: elfxx-sparc.c:440 +#: elfxx-sparc.c:595 #, c-format msgid "invalid relocation type %d" msgstr "недопуÑтимый тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %d" -#: elfxx-sparc.c:2976 -msgid "%B: probably compiled without -fPIC?" -msgstr "%B: вероÑтно, компилÑÑ†Ð¸Ñ Ð±ÐµÐ· -fPIC?" - -#: i386linux.c:455 m68klinux.c:459 sparclinux.c:453 +#: i386linux.c:454 m68klinux.c:458 sparclinux.c:452 #, c-format msgid "Output file requires shared library `%s'\n" msgstr "Ð”Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла требуетÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑÐºÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ° `%s'\n" -#: i386linux.c:463 m68klinux.c:467 sparclinux.c:461 +#: i386linux.c:462 m68klinux.c:466 sparclinux.c:460 #, c-format msgid "Output file requires shared library `%s.so.%s'\n" msgstr "Ð”Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла требуетÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑÐºÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ° `%s.so.%s'\n" -#: i386linux.c:652 i386linux.c:702 m68klinux.c:659 m68klinux.c:707 -#: sparclinux.c:651 sparclinux.c:701 +#: i386linux.c:651 i386linux.c:701 m68klinux.c:658 m68klinux.c:706 +#: sparclinux.c:650 sparclinux.c:700 #, c-format msgid "Symbol %s not defined for fixups\n" msgstr "Символ %s не определён Ð´Ð»Ñ Ð¼ÐµÑтоположений\n" -#: i386linux.c:726 m68klinux.c:731 sparclinux.c:725 +#: i386linux.c:725 m68klinux.c:730 sparclinux.c:724 msgid "Warning: fixup count mismatch\n" msgstr "Предупреждение: не Ñовпадает Ñчётчик меÑтоположениÑ\n" @@ -2786,15 +3097,15 @@ msgid "%s: unrecognized symbol `%s' flags 0x%x" msgstr "%s: нераÑпознанные флаги Ñимвола `%s' (0x%x)" -#: ieee.c:788 +#: ieee.c:792 msgid "%B: unimplemented ATI record %u for symbol %u" msgstr "%B: Ð½ÐµÑ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ATI-запиÑÑŒ %u Ð´Ð»Ñ Ñимвола %u" -#: ieee.c:812 +#: ieee.c:816 msgid "%B: unexpected ATN type %d in external part" msgstr "%B: неожиданный ATN-тип %d во внешней чаÑти" -#: ieee.c:834 +#: ieee.c:838 msgid "%B: unexpected type after ATN" msgstr "%B: неожиданный тип поÑле ATN" @@ -2834,39 +3145,101 @@ msgid "%B: bad section length in ihex_read_section" msgstr "%B: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° раздела в ihex_read_section" -#: ihex.c:825 +#: ihex.c:826 #, c-format msgid "%s: address 0x%s out of range for Intel Hex file" msgstr "%s: Ð°Ð´Ñ€ÐµÑ 0x%s вне диапазона Ð´Ð»Ñ Intel Hex файла" -#: libbfd.c:1008 +#: libbfd.c:863 +msgid "%B: unable to get decompressed section %A" +msgstr "Ошибка в dwarf: не удалоÑÑŒ получить раÑжатый раздел %A" + +#: libbfd.c:1027 #, c-format msgid "Deprecated %s called at %s line %d in %s\n" msgstr "Вызван нерекомендуемый %s Ñ€Ñдом Ñ %s в Ñтроке %d в %s\n" -#: libbfd.c:1011 +#: libbfd.c:1030 #, c-format msgid "Deprecated %s called\n" msgstr "Вызван нерекомендуемый %s\n" -#: linker.c:1874 +#: linker.c:1911 msgid "%B: indirect symbol `%s' to `%s' is a loop" msgstr "%B: коÑвенный Ñимвол `%s' к `%s' Ñоздаёт зацикливание" -#: linker.c:2740 +#: linker.c:2778 #, c-format msgid "Attempt to do relocatable link with %s input and %s output" msgstr "Попытка Ñделать перемещаемую ÑÑылку Ñ Ð²Ñ…Ð¾Ð´Ð¾Ð¼ %s и выходом %s" -#: linker.c:3047 +#: linker.c:3105 msgid "%B: warning: ignoring duplicate section `%A'\n" msgstr "%B: предупреждение: игнорируетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑющийÑÑ Ñ€Ð°Ð·Ð´ÐµÐ» `%A'\n" -#: linker.c:3061 +#: linker.c:3119 msgid "%B: warning: duplicate section `%A' has different size\n" msgstr "%B: предупреждение: повторÑющийÑÑ Ñ€Ð°Ð·Ð´ÐµÐ» `%A' имеет другой размер\n" -#: merge.c:828 +#: mach-o.c:3403 +msgid "Mach-O header:\n" +msgstr "заголовок Mach-O:\n" + +#: mach-o.c:3404 +#, c-format +msgid " magic : %08lx\n" +msgstr " отл.призн : %08lx\n" + +#: mach-o.c:3405 +#, c-format +msgid " cputype : %08lx (%s)\n" +msgstr " тип ЦП : %08lx (%s)\n" + +#: mach-o.c:3407 +#, c-format +msgid " cpusubtype: %08lx\n" +msgstr " подтип ЦП : %08lx\n" + +#: mach-o.c:3408 +#, c-format +msgid " filetype : %08lx (%s)\n" +msgstr " тип файла : %08lx (%s)\n" + +#: mach-o.c:3411 +#, c-format +msgid " ncmds : %08lx (%lu)\n" +msgstr " ч_кмнд : %08lx (%lu)\n" + +#: mach-o.c:3412 +#, c-format +msgid " sizeofcmds: %08lx\n" +msgstr " разм_кмнд : %08lx\n" + +#: mach-o.c:3413 +#, c-format +msgid " flags : %08lx (" +msgstr " флаги : %08lx (" + +#: mach-o.c:3415 vms-alpha.c:7652 +msgid ")\n" +msgstr ")\n" + +#: mach-o.c:3416 +#, c-format +msgid " reserved : %08x\n" +msgstr " зарезерв : %08x\n" + +#: mach-o.c:3426 +msgid "Segments and Sections:\n" +msgstr "Сегменты и разделы:\n" + +#: mach-o.c:3427 +msgid " #: Segment name Section name Address\n" +msgstr "" +" #: Segment name Section name Address\n" +" #: Ðазвание Ñегм Ðазвание раздела ÐдреÑ\n" + +#: merge.c:832 #, c-format msgid "%s: access beyond end of merged section (%ld)" msgstr "%s: доÑтуп за конец объединённого раздела (%ld)" @@ -2891,117 +3264,117 @@ msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n" msgstr "%s: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð¿Ð¾ÑледовательноÑÑ‚ÑŒ широких Ñимволов 0x%02X 0x%02X поÑле имени Ñимвола, начинающегоÑÑ Ñ `%s'\n" -#: mmo.c:1566 +#: mmo.c:1565 #, c-format msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" msgstr "%s: недопуÑтимый mmo-файл: неподдерживаемый lopcode `%d'\n" -#: mmo.c:1576 +#: mmo.c:1575 #, c-format msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" msgstr "%s: недопуÑтимый mmo-файл: ожидалоÑÑŒ YZ = 1, получено YZ = %d Ð´Ð»Ñ lop_quote\n" -#: mmo.c:1612 +#: mmo.c:1611 #, c-format msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" msgstr "%s: недопуÑтимый mmo-файл: ожидалоÑÑŒ z = 1 или z = 2, получено z = %d Ð´Ð»Ñ lop_loc\n" -#: mmo.c:1658 +#: mmo.c:1657 #, c-format msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" msgstr "%s: недопуÑтимый mmo-файл: ожидалоÑÑŒ z = 1 или z = 2, получено z = %d Ð´Ð»Ñ lop_fixo\n" -#: mmo.c:1697 +#: mmo.c:1696 #, c-format msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" msgstr "%s: недопуÑтимый mmo-файл: ожидалоÑÑŒ y = 0, получено y = %d Ð´Ð»Ñ lop_fixrx\n" -#: mmo.c:1706 +#: mmo.c:1705 #, c-format msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" msgstr "%s: недопуÑтимый mmo-файл: ожидалоÑÑŒ z = 16 или z = 24, получено z = %d Ð´Ð»Ñ lop_fixrx\n" -#: mmo.c:1729 +#: mmo.c:1728 #, 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: недопуÑтимый mmo-файл: начальный байт Ñлова операнда должен быть равен 0 или 1, получено %d Ð´Ð»Ñ lop_fixrx\n" -#: mmo.c:1752 +#: mmo.c:1751 #, c-format msgid "%s: cannot allocate file name for file number %d, %d bytes\n" msgstr "%s: невозможно выделить меÑто Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸ файла к файлу Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d, %d байт\n" -#: mmo.c:1772 +#: mmo.c:1771 #, c-format msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" msgstr "%s: недопуÑтимый mmo-файл: номер файла %d `%s', был уже введён как `%s'\n" -#: mmo.c:1785 +#: mmo.c:1784 #, c-format msgid "%s: invalid mmo file: file name for number %d was not specified before use\n" msgstr "%s: недопуÑтимый mmo-файл: Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° %d не указано перед иÑпользованием\n" -#: mmo.c:1892 +#: mmo.c:1890 #, c-format msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" msgstr "%s: недопуÑтимый mmo-файл: Ð¿Ð¾Ð»Ñ y и z в lop_stab не равны нулю, y: %d, z: %d\n" -#: mmo.c:1928 +#: mmo.c:1926 #, c-format msgid "%s: invalid mmo file: lop_end not last item in file\n" msgstr "%s: недопуÑтимый mmo-файл: lop_end не поÑледний Ñлемент в файле\n" -#: mmo.c:1941 +#: mmo.c:1939 #, 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: недопуÑтимый mmo-файл: YZ в lop_end (%ld) не равно чиÑлу тетрад в указанной ранее lop_stab (%ld)\n" -#: mmo.c:2651 +#: mmo.c:2649 #, c-format msgid "%s: invalid symbol table: duplicate symbol `%s'\n" msgstr "%s: ошибка в таблице Ñимволов: повторÑющийÑÑ Ñимвол `%s'\n" -#: mmo.c:2894 +#: mmo.c:2889 #, c-format msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n" msgstr "%s: Ðеверное определение Ñимвола: `Main' уÑтановлена в %s, а не в начальный Ð°Ð´Ñ€ÐµÑ %s\n" -#: mmo.c:2986 +#: mmo.c:2981 #, 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: предупреждение: таблица Ñимволов Ñлишком Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ Ð´Ð»Ñ mmo, больше чем 65535 32-битных Ñлов: %d. Будет выделена только `Main'.\n" -#: mmo.c:3031 +#: mmo.c:3026 #, c-format msgid "%s: internal error, symbol table changed size from %d to %d words\n" msgstr "%s: внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, у таблицы Ñимволов изменилÑÑ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ %d Ñлов до %d\n" -#: mmo.c:3083 +#: mmo.c:3078 #, c-format msgid "%s: internal error, internal register section %s had contents\n" msgstr "%s: внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°, внутренний раздел региÑтров %s Ñодержит данные\n" -#: mmo.c:3134 +#: mmo.c:3129 #, c-format msgid "%s: no initialized registers; section length 0\n" msgstr "%s:нет инициализированных региÑтров; длина раздела равна 0\n" -#: mmo.c:3140 +#: mmo.c:3135 #, c-format msgid "%s: too many initialized registers; section length %ld\n" msgstr "%s: Ñлишком много инициализированных региÑтров; длина раздела равна %ld\n" -#: mmo.c:3145 +#: mmo.c:3140 #, c-format msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n" msgstr "%s: недопуÑтимый начальный Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… региÑтров длины %ld: 0x%lx%08lx\n" -#: oasys.c:881 +#: oasys.c:882 #, c-format msgid "%s: can not represent section `%s' in oasys" msgstr "%s: невозможно предÑтавить раздел `%s' в oasys" -#: osf-core.c:139 +#: osf-core.c:140 #, c-format msgid "Unhandled OSF/1 core file section type %d\n" msgstr "Ðеобработанный файл Ñдра OSF/1 раздела Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ %d\n" @@ -3014,44 +3387,64 @@ #. 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:723 +#: pe-mips.c:719 msgid "%B: unimplemented %s\n" msgstr "%B: не реализовано %s\n" -#: pe-mips.c:749 +#: pe-mips.c:745 msgid "%B: jump too far away\n" msgstr "%B: точка перехода Ñлишком далеко\n" -#: pe-mips.c:775 +#: pe-mips.c:771 msgid "%B: bad pair/reflo after refhi\n" msgstr "%B: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ pair/reflo поÑле refhi\n" +#: pei-x86_64.c:444 +#, c-format +msgid "warning: .pdata section size (%ld) is not a multiple of %d\n" +msgstr "предупреждение: размер раздела .pdata (%ld) не кратен %d\n" + +#: pei-x86_64.c:448 peigen.c:1618 peigen.c:1801 pepigen.c:1618 pepigen.c:1801 +#: pex64igen.c:1618 pex64igen.c:1801 +#, c-format +msgid "" +"\n" +"The Function Table (interpreted .pdata section contents)\n" +msgstr "" +"\n" +"Таблица функций (обработан раздел .pdata)\n" + +#: pei-x86_64.c:450 +#, c-format +msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" +msgstr "vma:\t\t\tÐач Ð°Ð´Ñ€ÐµÑ \t Кон адреÑ\t РаÑкр данные\n" + #. XXX code yet to be written. -#: peicode.h:759 +#: peicode.h:751 msgid "%B: Unhandled import type; %x" msgstr "%B: Ðеобработанный тип импорта; %x" -#: peicode.h:764 +#: peicode.h:756 msgid "%B: Unrecognised import type; %x" msgstr "%B: ÐераÑпознанный тип импорта; %x" -#: peicode.h:778 +#: peicode.h:770 msgid "%B: Unrecognised import name type; %x" msgstr "%B: ÐераÑпознанный именной тип импорта; %x" -#: peicode.h:1161 +#: peicode.h:1162 msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive" msgstr "%B: ÐераÑпознанный машинный тип (0x%x) в архиве Import Library Format" -#: peicode.h:1173 +#: peicode.h:1174 msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive" msgstr "%B: РаÑпознан, но не обработан машинный тип (0x%x) в архиве Import Library Format" -#: peicode.h:1191 +#: peicode.h:1192 msgid "%B: size field is zero in Import Library Format header" msgstr "%B: размер Ð¿Ð¾Ð»Ñ Ñ€Ð°Ð²ÐµÐ½ нулю в заголовке Import Library Format" -#: peicode.h:1222 +#: peicode.h:1223 msgid "%B: string not null terminated in ILF object file." msgstr "%B: Ñтрока не заканчиваетÑÑ Ð½ÑƒÐ»Ñ‘Ð¼ в объектном файле ILF." @@ -3108,7 +3501,7 @@ msgid "Partition[%d] length = 0x%.8lx (%ld)\n" msgstr "Длина раздела[%d] = 0x%.8lx (%ld)\n" -#: som.c:5137 +#: som.c:5471 #, c-format msgid "" "\n" @@ -3117,7 +3510,7 @@ "\n" "Ð’Ñпомогательный заголовок Exec\n" -#: som.c:5440 +#: som.c:5776 msgid "som_sizeof_headers unimplemented" msgstr "som_sizeof_headers не реализован" @@ -3133,396 +3526,2124 @@ msgid "%B(%A+0x%lx): Stabs entry has invalid string index." msgstr "%B(%A+0x%lx): Элемент Stabs имеет недопуÑтимый Ð¸Ð½Ð´ÐµÐºÑ Ñтроки." -#: syms.c:1067 +#: syms.c:1079 msgid "Unsupported .stab relocation" msgstr "Ðеподдерживаемое перемещение .stab" -#: vms-gsd.c:338 -#, c-format -msgid "bfd_make_section (%s) failed" -msgstr "bfd_make_section (%s) завершилаÑÑŒ неудачно" - -#: vms-gsd.c:353 -#, c-format -msgid "bfd_set_section_flags (%s, %x) failed" -msgstr "bfd_set_section_flags (%s, %x) завершилаÑÑŒ неудачно" - -#: vms-gsd.c:388 -#, c-format -msgid "Size mismatch section %s=%lx, %s=%lx" -msgstr "ÐеÑовпадение размера раздела %s=%lx, %s=%lx" - -#: vms-gsd.c:679 +#: vms-alpha.c:1287 #, c-format -msgid "unknown gsd/egsd subtype %d" -msgstr "неизвеÑтный подтип gsd/egsd: %d" +msgid "Unknown EGSD subtype %d" +msgstr "ÐеизвеÑтный подтип EGSD %d" -#: vms-hdr.c:328 -msgid "Object module NOT error-free !\n" -msgstr "Объектный модуль ÐЕ error-free !\n" - -#: vms-misc.c:474 +#: vms-alpha.c:1318 #, c-format msgid "Stack overflow (%d) in _bfd_vms_push" msgstr "Переполнение Ñтека (%d) в _bfd_vms_push" -#: vms-misc.c:489 +#: vms-alpha.c:1331 msgid "Stack underflow in _bfd_vms_pop" msgstr "Выход за нижнюю границу Ñтека в _bfd_vms_pop" -#: vms-misc.c:808 -msgid "_bfd_vms_output_counted called with zero bytes" -msgstr "Вызов _bfd_vms_output_counted Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ количеÑтвом байт" - -#: vms-misc.c:813 -msgid "_bfd_vms_output_counted called with too many bytes" -msgstr "Вызов _bfd_vms_output_counted Ñо Ñлишком большим количеÑтвом байт" - -#: vms-misc.c:931 -#, c-format -msgid "Symbol %s replaced by %s\n" -msgstr "Символ %s заменён на %s\n" - -#: vms-misc.c:990 +#. These names have not yet been added to this switch statement. +#: vms-alpha.c:1568 #, c-format -msgid "failed to enter %s" -msgstr "не удалоÑÑŒ войти %s" - -#: vms-tir.c:57 -msgid "No Mem !" -msgstr "Ðет Mem !" +msgid "unknown ETIR command %d" +msgstr "неизвеÑÑ‚Ð½Ð°Ñ ETIR команда %d" -#: vms-tir.c:300 +#: vms-alpha.c:1755 #, c-format msgid "bad section index in %s" msgstr "неверный Ð¸Ð½Ð´ÐµÐºÑ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° в %s" -#: vms-tir.c:313 +#: vms-alpha.c:1768 #, c-format msgid "unsupported STA cmd %s" msgstr "неподдерживаемый STA cmd %s" -#: vms-tir.c:318 vms-tir.c:1120 -#, c-format -msgid "reserved STA cmd %d" -msgstr "зарезервированный STA cmd %d" - -#: vms-tir.c:410 vms-tir.c:432 -#, c-format -msgid "%s: no symbol \"%s\"" -msgstr "%s: нет Ñимвола \"%s\"" - +#. Insert field. #. Unsigned shift. #. Rotate. #. Redefine symbol to current location. #. Define a literal. -#: vms-tir.c:497 vms-tir.c:606 vms-tir.c:704 vms-tir.c:721 vms-tir.c:728 -#: vms-tir.c:736 vms-tir.c:1440 +#: vms-alpha.c:1944 vms-alpha.c:1975 vms-alpha.c:2222 #, c-format msgid "%s: not supported" msgstr "%s: не поддерживаетÑÑ" -#: vms-tir.c:502 vms-tir.c:1297 +#: vms-alpha.c:1950 #, c-format msgid "%s: not implemented" msgstr "%s: не реализовано" -#: vms-tir.c:506 vms-tir.c:1301 -#, c-format -msgid "reserved STO cmd %d" -msgstr "зарезервированный STO cmd %d" - -#: vms-tir.c:621 vms-tir.c:1445 +#: vms-alpha.c:2206 #, c-format -msgid "reserved OPR cmd %d" -msgstr "зарезервированный OPR cmd %d" +msgid "invalid use of %s with contexts" +msgstr "неправильное иÑпользование %s Ñ ÐºÐ¾Ð½Ñ‚ÐµÐºÑтами" -#: vms-tir.c:681 vms-tir.c:1509 +#: vms-alpha.c:2240 #, c-format -msgid "reserved CTL cmd %d" -msgstr "зарезервированный CTL cmd %d" - -#. stack byte from image -#. arg: none. -#: vms-tir.c:1028 -msgid "stack-from-image not implemented" -msgstr "stack-from-image не реализован" - -#: vms-tir.c:1046 -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:1060 -msgid "PASSMECH not fully implemented" -msgstr "PASSMECH реализован не полноÑтью" - -#: vms-tir.c:1079 -msgid "stack-local-symbol not fully implemented" -msgstr "stack-local-symbol реализован не полноÑтью" +msgid "reserved cmd %d" +msgstr "зарезервированный cmd %d" -#: vms-tir.c:1092 -msgid "stack-literal not fully implemented" -msgstr "stack-literal реализован не полноÑтью" - -#: vms-tir.c:1113 -msgid "stack-local-symbol-entry-point-mask not fully implemented" -msgstr "stack-local-symbol-entry-point-mask реализован не полноÑтью" - -#: vms-tir.c:1387 vms-tir.c:1399 vms-tir.c:1411 vms-tir.c:1423 vms-tir.c:1488 -#: vms-tir.c:1496 vms-tir.c:1504 -#, c-format -msgid "%s: not fully implemented" -msgstr "%s: реализовано не полноÑтью" +#: vms-alpha.c:2325 +msgid "Object module NOT error-free !\n" +msgstr "Объектный модуль ÐЕ error-free !\n" -#: vms-tir.c:1562 +#: vms-alpha.c:2754 #, c-format -msgid "obj code %d not found" -msgstr "объектный код %d не найден" +msgid "Symbol %s replaced by %s\n" +msgstr "Символ %s заменён на %s\n" -#: vms-tir.c:1870 +#: vms-alpha.c:3757 #, c-format msgid "SEC_RELOC with no relocs in section %s" msgstr "SEC_RELOC без перемещений в разделе %s" -#: vms-tir.c:2152 +#: vms-alpha.c:3810 vms-alpha.c:4041 +#, c-format +msgid "Size error in section %s" +msgstr "Ошибка размера в разделе %s" + +#: vms-alpha.c:3980 +msgid "Spurious ALPHA_R_BSR reloc" +msgstr "Ðетипичное перемещение ALPHA_R_BSR" + +#: vms-alpha.c:4028 #, c-format msgid "Unhandled relocation %s" msgstr "Ðеобработанное перемещение %s" -#: xcofflink.c:566 +#: vms-alpha.c:4318 #, c-format -msgid "%s: XCOFF shared object when not producing XCOFF output" -msgstr "%s: разделÑемый объект XCOFF без ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° XCOFF" +msgid "unknown source command %d" +msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¸ÑÑ…Ð¾Ð´Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %d" -#: xcofflink.c:587 -#, c-format -msgid "%s: dynamic object with no .loader section" -msgstr "%s: динамичеÑкий объект без раздела .loader" +#: vms-alpha.c:4379 +msgid "DST__K_SET_LINUM_INCR not implemented" +msgstr "DST__K_SET_LINUM_INCR не реализован" -#: xcofflink.c:1150 -msgid "%B: `%s' has line numbers but no enclosing section" -msgstr "%B: `%s' Ñодержит номера Ñтрок, но в обрамлÑющем разделе" +#: vms-alpha.c:4385 +msgid "DST__K_SET_LINUM_INCR_W not implemented" +msgstr "DST__K_SET_LINUM_INCR_W не реализован" -#: xcofflink.c:1202 -msgid "%B: class %d symbol `%s' has no aux entries" -msgstr "%B: клаÑÑ %d Ñимвола `%s' не имеет Ñлементов aux" +#: vms-alpha.c:4391 +msgid "DST__K_RESET_LINUM_INCR not implemented" +msgstr "DST__K_RESET_LINUM_INCR не реализован" -#: xcofflink.c:1225 -msgid "%B: symbol `%s' has unrecognized csect type %d" -msgstr "%B: Ñимвол `%s' имеет нераÑпознанный тип csect: %d" +#: vms-alpha.c:4397 +msgid "DST__K_BEG_STMT_MODE not implemented" +msgstr "DST__K_BEG_STMT_MODE не реализован" -#: xcofflink.c:1237 -msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" -msgstr "%B: неверный Ñимвол XTY_ER `%s': клаÑÑ %d scnum %d scnlen %d" +#: vms-alpha.c:4403 +msgid "DST__K_END_STMT_MODE not implemented" +msgstr "DST__K_END_STMT_MODE не реализован" -#: xcofflink.c:1273 -msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" -msgstr "%B: Ñимвол XMC_TC0 `%s' ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом %d scnlen %d" +#: vms-alpha.c:4430 +msgid "DST__K_SET_PC not implemented" +msgstr "DST__K_SET_PC не реализован" -#: xcofflink.c:1419 -msgid "%B: csect `%s' not in enclosing section" -msgstr "%B: csect `%s' не в обрамлÑющем разделе" +#: vms-alpha.c:4436 +msgid "DST__K_SET_PC_W not implemented" +msgstr "DST__K_SET_PC_W не реализован" -#: xcofflink.c:1526 -msgid "%B: misplaced XTY_LD `%s'" -msgstr "%B: неправильно раÑположенный XTY_LD `%s'" +#: vms-alpha.c:4442 +msgid "DST__K_SET_PC_L not implemented" +msgstr "DST__K_SET_PC_L не реализован" -#: xcofflink.c:1842 -msgid "%B: reloc %s:%d not in csect" -msgstr "%B: перемещение %s:%d не в csect" +#: vms-alpha.c:4448 +msgid "DST__K_SET_STMTNUM not implemented" +msgstr "DST__K_SET_STMTNUM не реализован" -#: xcofflink.c:2640 +#: vms-alpha.c:4491 #, c-format -msgid "%s: no such symbol" -msgstr "%s: нет такого Ñимвола" +msgid "unknown line command %d" +msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ñтрока команды %d" -#: xcofflink.c:2869 +#: vms-alpha.c:4938 vms-alpha.c:4955 vms-alpha.c:4969 vms-alpha.c:4984 +#: vms-alpha.c:4996 vms-alpha.c:5007 vms-alpha.c:5019 #, c-format -msgid "warning: attempt to export undefined symbol `%s'" -msgstr "предупреждение: попытка ÑкÑпортировать неопределённый Ñимвол `%s'" +msgid "Unknown reloc %s + %s" +msgstr "ÐеизвеÑтное перемещение %s + %s" -#: xcofflink.c:3036 -msgid "error: undefined symbol __rtinit" -msgstr "ошибка: неопределённый Ñимвол __rtinit" +#: vms-alpha.c:5074 +#, c-format +msgid "Unknown reloc %s" +msgstr "ÐеизвеÑтное перемещение %s" -#: xcofflink.c:3656 +#: vms-alpha.c:5087 +msgid "Invalid section index in ETIR" +msgstr "Ðеверный Ð¸Ð½Ð´ÐµÐºÑ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° в ETIR" + +#: vms-alpha.c:5134 #, c-format -msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" -msgstr "переполнение TOC: 0x%lx > 0x10000; попробуйте Ñкомпилировать Ñ -mminimal-toc" +msgid "Unknown symbol in command %s" +msgstr "ÐеизвеÑтный Ñимвол в команде %s" -#: xcofflink.c:4492 -msgid "%B: loader reloc in unrecognized section `%A'" -msgstr "%B: перемещение загрузчика в нераÑпознанном разделе `%A'" +#: vms-alpha.c:5649 +#, c-format +msgid " EMH %u (len=%u): " +msgstr " EMH %u (len=%u): " -#: xcofflink.c:4513 -msgid "%B: `%s' in loader reloc but not loader sym" -msgstr "%B: `%s' в перемещении загрузчика, но не Ñимволе загрузчика" +#: vms-alpha.c:5658 +#, c-format +msgid "Module header\n" +msgstr "Заголовок модулÑ\n" -#: xcofflink.c:4528 -msgid "%B: loader reloc in read-only section %A" -msgstr "%B: перемещение загрузчика в разделе %A, доÑтупном только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" +#: vms-alpha.c:5659 +#, c-format +msgid " structure level: %u\n" +msgstr " уровень Ñтруктуры : %u\n" -#: xcofflink.c:4937 xcofflink.c:4999 xcofflink.c:5294 +#: vms-alpha.c:5660 #, c-format -msgid "%s: loader reloc in unrecognized section `%s'" -msgstr "%s: перемещение загрузчика в нераÑпознанном разделе `%s'" +msgid " max record size: %u\n" +msgstr " макÑ. размер запиÑи: %u\n" -#: xcofflink.c:5305 +#: vms-alpha.c:5663 #, c-format -msgid "%s: `%s' in loader reloc but not loader sym" -msgstr "%s: `%s' в перемещении загрузчика, но не Ñимволе загрузчика" +msgid " module name : %.*s\n" +msgstr " Ð¸Ð¼Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ : %.*s\n" -#: elf32-ia64.c:1037 elf64-ia64.c:1037 -msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch." -msgstr "%B: Ðевозможно оÑлабить br по адреÑу 0x%lx в разделе `%A'. ИÑпользуйте brl или коÑвенный переход." +#: vms-alpha.c:5665 +#, c-format +msgid " module version : %.*s\n" +msgstr " верÑÐ¸Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ : %.*s\n" -#: elf32-ia64.c:2742 elf64-ia64.c:2742 -msgid "@pltoff reloc against local symbol" -msgstr "перемещение @pltoff Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñимвола" +#: vms-alpha.c:5667 +#, c-format +msgid " compile date : %.17s\n" +msgstr " дата компилÑции : %.17s\n" -#: elf32-ia64.c:4317 elf64-ia64.c:4317 +#: vms-alpha.c:5672 #, c-format -msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" -msgstr "%s: переполнение короткого Ñегмента данных (0x%lx >= 0x400000)" +msgid "Language Processor Name\n" +msgstr "Ðазвание процеÑÑорного Ñзыка\n" -#: elf32-ia64.c:4328 elf64-ia64.c:4328 +#: vms-alpha.c:5673 #, c-format -msgid "%s: __gp does not cover short data segment" -msgstr "%s: __gp не покрывает короткий Ñегмент данных" +msgid " language name: %.*s\n" +msgstr " название Ñзыка : %.*s\n" -#: elf32-ia64.c:4598 elf64-ia64.c:4598 -msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" -msgstr "%B: не-pic код Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ imm Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола `%s'" +#: vms-alpha.c:5680 +#, c-format +msgid "Source Files Header\n" +msgstr "Заголовок иÑходных файлов\n" -#: elf32-ia64.c:4665 elf64-ia64.c:4665 -msgid "%B: @gprel relocation against dynamic symbol %s" -msgstr "%B: перемещение @gprel Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола %s" +#: vms-alpha.c:5681 +#, c-format +msgid " file: %.*s\n" +msgstr " файл: %.*s\n" -#: elf32-ia64.c:4728 elf64-ia64.c:4728 +#: vms-alpha.c:5688 +#, c-format +msgid "Title Text Header\n" +msgstr "Заголовок Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑта\n" + +#: vms-alpha.c:5689 +#, c-format +msgid " title: %.*s\n" +msgstr " название : %.*s\n" + +#: vms-alpha.c:5696 +#, c-format +msgid "Copyright Header\n" +msgstr "Заголовок авторÑкого права\n" + +#: vms-alpha.c:5697 +#, c-format +msgid " copyright: %.*s\n" +msgstr " авторÑкое право: %.*s\n" + +#: vms-alpha.c:5703 +#, c-format +msgid "unhandled emh subtype %u\n" +msgstr "необработанный подтип emh %u\n" + +#: vms-alpha.c:5713 +#, c-format +msgid " EEOM (len=%u):\n" +msgstr " EEOM (len=%u):\n" + +#: vms-alpha.c:5714 +#, c-format +msgid " number of cond linkage pairs: %u\n" +msgstr " кол-во уÑловно компонуемых пар: %u\n" + +#: vms-alpha.c:5716 +#, c-format +msgid " completion code: %u\n" +msgstr " завершённый код: %u\n" + +#: vms-alpha.c:5720 +#, c-format +msgid " transfer addr flags: 0x%02x\n" +msgstr " адреÑа передачи flags: 0x%02x\n" + +#: vms-alpha.c:5721 +#, c-format +msgid " transfer addr psect: %u\n" +msgstr " Ð°Ð´Ñ€ÐµÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ psect: %u\n" + +#: vms-alpha.c:5723 +#, c-format +msgid " transfer address : 0x%08x\n" +msgstr " Ð°Ð´Ñ€ÐµÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ : 0x%08x\n" + +#: vms-alpha.c:5732 +msgid " WEAK" +msgstr " WEAK" + +#: vms-alpha.c:5734 +msgid " DEF" +msgstr " DEF" + +#: vms-alpha.c:5736 +msgid " UNI" +msgstr " UNI" + +#: vms-alpha.c:5738 vms-alpha.c:5759 +msgid " REL" +msgstr " REL" + +#: vms-alpha.c:5740 +msgid " COMM" +msgstr " COMM" + +#: vms-alpha.c:5742 +msgid " VECEP" +msgstr " VECEP" + +#: vms-alpha.c:5744 +msgid " NORM" +msgstr " NORM" + +#: vms-alpha.c:5746 +msgid " QVAL" +msgstr " QVAL" + +#: vms-alpha.c:5753 +msgid " PIC" +msgstr " PIC" + +#: vms-alpha.c:5755 +msgid " LIB" +msgstr " LIB" + +#: vms-alpha.c:5757 +msgid " OVR" +msgstr " OVR" + +#: vms-alpha.c:5761 +msgid " GBL" +msgstr " GBL" + +#: vms-alpha.c:5763 +msgid " SHR" +msgstr " SHR" + +#: vms-alpha.c:5765 +msgid " EXE" +msgstr " EXE" + +#: vms-alpha.c:5767 +msgid " RD" +msgstr " RD" + +#: vms-alpha.c:5769 +msgid " WRT" +msgstr " WRT" + +#: vms-alpha.c:5771 +msgid " VEC" +msgstr " VEC" + +#: vms-alpha.c:5773 +msgid " NOMOD" +msgstr " NOMOD" + +#: vms-alpha.c:5775 +msgid " COM" +msgstr " COM" + +#: vms-alpha.c:5777 +msgid " 64B" +msgstr " 64B" + +#: vms-alpha.c:5786 +#, c-format +msgid " EGSD (len=%u):\n" +msgstr " EGSD (len=%u):\n" + +#: vms-alpha.c:5798 +#, c-format +msgid " EGSD entry %2u (type: %u, len: %u): " +msgstr " запиÑÑŒ EGSD %2u (тип: %u, длина: %u): " + +#: vms-alpha.c:5810 +#, c-format +msgid "PSC - Program section definition\n" +msgstr "PSC - определение программного раздела\n" + +#: vms-alpha.c:5811 vms-alpha.c:5828 +#, c-format +msgid " alignment : 2**%u\n" +msgstr " выравнивание : 2**%u\n" + +#: vms-alpha.c:5812 vms-alpha.c:5829 +#, c-format +msgid " flags : 0x%04x" +msgstr " флаги : 0x%04x" + +#: vms-alpha.c:5816 +#, c-format +msgid " alloc (len): %u (0x%08x)\n" +msgstr " alloc (len): %u (0x%08x)\n" + +#: vms-alpha.c:5817 vms-alpha.c:5874 vms-alpha.c:5923 +#, c-format +msgid " name : %.*s\n" +msgstr " Ð¸Ð¼Ñ : %.*s\n" + +#: vms-alpha.c:5827 +#, c-format +msgid "SPSC - Shared Image Program section def\n" +msgstr "SPSC - определение программного раздела общего образа\n" + +#: vms-alpha.c:5833 +#, c-format +msgid " alloc (len) : %u (0x%08x)\n" +msgstr " alloc (len) : %u (0x%08x)\n" + +#: vms-alpha.c:5834 +#, c-format +msgid " image offset : 0x%08x\n" +msgstr " Ñмещение образа : 0x%08x\n" + +#: vms-alpha.c:5836 +#, c-format +msgid " symvec offset : 0x%08x\n" +msgstr " Ñмещение symvec: 0x%08x\n" + +#: vms-alpha.c:5838 +#, c-format +msgid " name : %.*s\n" +msgstr " Ð¸Ð¼Ñ : %.*s\n" + +#: vms-alpha.c:5851 +#, c-format +msgid "SYM - Global symbol definition\n" +msgstr "SYM - определение глобальных Ñимволов\n" + +#: vms-alpha.c:5852 vms-alpha.c:5912 vms-alpha.c:5933 vms-alpha.c:5952 +#, c-format +msgid " flags: 0x%04x" +msgstr " флаги: 0x%04x" + +#: vms-alpha.c:5855 +#, c-format +msgid " psect offset: 0x%08x\n" +msgstr " Ñмещение psect: 0x%08x\n" + +#: vms-alpha.c:5859 +#, c-format +msgid " code address: 0x%08x\n" +msgstr " Ð°Ð´Ñ€ÐµÑ ÐºÐ¾Ð´Ð°: 0x%08x\n" + +#: vms-alpha.c:5861 +#, c-format +msgid " psect index for entry point : %u\n" +msgstr " Ð¸Ð½Ð´ÐµÐºÑ psect Ð´Ð»Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ входа: %u\n" + +#: vms-alpha.c:5864 vms-alpha.c:5940 vms-alpha.c:5959 +#, c-format +msgid " psect index : %u\n" +msgstr " Ð¸Ð½Ð´ÐµÐºÑ psect: %u\n" + +#: vms-alpha.c:5866 vms-alpha.c:5942 vms-alpha.c:5961 +#, c-format +msgid " name : %.*s\n" +msgstr " Ð¸Ð¼Ñ : %.*s\n" + +#: vms-alpha.c:5873 +#, c-format +msgid "SYM - Global symbol reference\n" +msgstr "SYM - ÑÑылки глобальных Ñимволов\n" + +#: vms-alpha.c:5885 +#, c-format +msgid "IDC - Ident Consistency check\n" +msgstr "IDC - проверка идентификатора целоÑтноÑти\n" + +#: vms-alpha.c:5886 +#, c-format +msgid " flags : 0x%08x" +msgstr " флаги : 0x%08x" + +#: vms-alpha.c:5890 +#, c-format +msgid " id match : %x\n" +msgstr " id ÑоответÑÑ‚Ð²Ð¸Ñ : %x\n" + +#: vms-alpha.c:5892 +#, c-format +msgid " error severity: %x\n" +msgstr " ÑерьёзноÑÑ‚ÑŒ ошибки: %x\n" + +#: vms-alpha.c:5895 +#, c-format +msgid " entity name : %.*s\n" +msgstr " название категории: %.*s\n" + +#: vms-alpha.c:5897 +#, c-format +msgid " object name : %.*s\n" +msgstr " Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°: %.*s\n" + +#: vms-alpha.c:5900 +#, c-format +msgid " binary ident : 0x%08x\n" +msgstr " двоичный идентификатор: 0x%08x\n" + +#: vms-alpha.c:5903 +#, c-format +msgid " ascii ident : %.*s\n" +msgstr " ascii-идентификатор: %.*s\n" + +#: vms-alpha.c:5911 +#, c-format +msgid "SYMG - Universal symbol definition\n" +msgstr "SYMG - определение универÑальных Ñимволов\n" + +#: vms-alpha.c:5915 +#, c-format +msgid " symbol vector offset: 0x%08x\n" +msgstr " Ñмещение Ñимвольного вектора: 0x%08x\n" + +#: vms-alpha.c:5917 +#, c-format +msgid " entry point: 0x%08x\n" +msgstr " точка входа: 0x%08x\n" + +#: vms-alpha.c:5919 +#, c-format +msgid " proc descr : 0x%08x\n" +msgstr " proc descr : 0x%08x\n" + +#: vms-alpha.c:5921 +#, c-format +msgid " psect index: %u\n" +msgstr " Ð¸Ð½Ð´ÐµÐºÑ psect: %u\n" + +#: vms-alpha.c:5932 +#, c-format +msgid "SYMV - Vectored symbol definition\n" +msgstr "SYMV - определение векторных Ñимволов\n" + +#: vms-alpha.c:5936 +#, c-format +msgid " vector : 0x%08x\n" +msgstr " вектор : 0x%08x\n" + +#: vms-alpha.c:5938 vms-alpha.c:5957 +#, c-format +msgid " psect offset: %u\n" +msgstr " Ñмещение psect: %u\n" + +#: vms-alpha.c:5951 +#, c-format +msgid "SYMM - Global symbol definition with version\n" +msgstr "SYMM - определение глобальных Ñимволов Ñ Ð²ÐµÑ€Ñией\n" + +#: vms-alpha.c:5955 +#, c-format +msgid " version mask: 0x%08x\n" +msgstr " маÑка верÑии: 0x%08x\n" + +#: vms-alpha.c:5966 +#, c-format +msgid "unhandled egsd entry type %u\n" +msgstr "необработанный egsd-Ñлемент типа %u\n" + +#: vms-alpha.c:6000 +#, c-format +msgid " linkage index: %u, replacement insn: 0x%08x\n" +msgstr " Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, заменитель insn: 0x%08x\n" + +#: vms-alpha.c:6003 +#, c-format +msgid " psect idx 1: %u, offset 1: 0x%08x %08x\n" +msgstr " 1-й Ð¸Ð½Ð´ÐµÐºÑ psect: %u, 1-е Ñмещение: 0x%08x %08x\n" + +#: vms-alpha.c:6007 +#, c-format +msgid " psect idx 2: %u, offset 2: 0x%08x %08x\n" +msgstr " 2-й Ð¸Ð½Ð´ÐµÐºÑ psect: %u, 2-е Ñмещение: 0x%08x %08x\n" + +#: vms-alpha.c:6012 +#, c-format +msgid " psect idx 3: %u, offset 3: 0x%08x %08x\n" +msgstr " 3-й Ð¸Ð½Ð´ÐµÐºÑ psect: %u, 3-е Ñмещение: 0x%08x %08x\n" + +#: vms-alpha.c:6017 +#, c-format +msgid " global name: %.*s\n" +msgstr " глобальное имÑ: %.*s\n" + +#: vms-alpha.c:6027 +#, c-format +msgid " %s (len=%u+%u):\n" +msgstr " %s (len=%u+%u):\n" + +#: vms-alpha.c:6042 +#, c-format +msgid " (type: %3u, size: 4+%3u): " +msgstr " (тип: %3u, размер: 4+%3u): " + +#: vms-alpha.c:6046 +#, c-format +msgid "STA_GBL (stack global) %.*s\n" +msgstr "STA_GBL (глобальный Ñтек) %.*s\n" + +#: vms-alpha.c:6050 +#, c-format +msgid "STA_LW (stack longword) 0x%08x\n" +msgstr "STA_LW (Ñтек длинных Ñлов) 0x%08x\n" + +#: vms-alpha.c:6054 +#, c-format +msgid "STA_QW (stack quadword) 0x%08x %08x\n" +msgstr "STA_QW (Ñтек четверных Ñлов) 0x%08x %08x\n" + +#: vms-alpha.c:6059 +#, c-format +msgid "STA_PQ (stack psect base + offset)\n" +msgstr "STA_PQ (Ñтек psect база + Ñмещение)\n" + +#: vms-alpha.c:6060 +#, c-format +msgid " psect: %u, offset: 0x%08x %08x\n" +msgstr " psect: %u, Ñмещение: 0x%08x %08x\n" + +#: vms-alpha.c:6066 +#, c-format +msgid "STA_LI (stack literal)\n" +msgstr "STA_LI (Ñтек литерала)\n" + +#: vms-alpha.c:6069 +#, c-format +msgid "STA_MOD (stack module)\n" +msgstr "STA_MOD (Ñтек модулей)\n" + +#: vms-alpha.c:6072 +#, c-format +msgid "STA_CKARG (compare procedure argument)\n" +msgstr "STA_CKARG (аргумент процедуры ÑравнениÑ)\n" + +#: vms-alpha.c:6076 +#, c-format +msgid "STO_B (store byte)\n" +msgstr "STO_B (хранимый байт)\n" + +#: vms-alpha.c:6079 +#, c-format +msgid "STO_W (store word)\n" +msgstr "STO_W (хранимое Ñлово)\n" + +#: vms-alpha.c:6082 +#, c-format +msgid "STO_LW (store longword)\n" +msgstr "STO_LW (хранимое длинное Ñлово)\n" + +#: vms-alpha.c:6085 +#, c-format +msgid "STO_QW (store quadword)\n" +msgstr "STO_QW (хранимое учетверённое Ñлово)\n" + +#: vms-alpha.c:6091 +#, c-format +msgid "STO_IMMR (store immediate repeat) %u bytes\n" +msgstr "STO_IMMR (хранимый непоÑредÑтвенный повтор) %u байт\n" + +#: vms-alpha.c:6098 +#, c-format +msgid "STO_GBL (store global) %.*s\n" +msgstr "STO_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ) %.*s\n" + +#: vms-alpha.c:6102 +#, c-format +msgid "STO_CA (store code address) %.*s\n" +msgstr "STO_CA (хранимый Ð°Ð´Ñ€ÐµÑ ÐºÐ¾Ð´Ð°) %.*s\n" + +#: vms-alpha.c:6106 +#, c-format +msgid "STO_RB (store relative branch)\n" +msgstr "STO_RB (хранимый отноÑительный переход)\n" + +#: vms-alpha.c:6109 +#, c-format +msgid "STO_AB (store absolute branch)\n" +msgstr "STO_AB (хранимый абÑолютный переход)\n" + +#: vms-alpha.c:6112 +#, c-format +msgid "STO_OFF (store offset to psect)\n" +msgstr "STO_OFF (хранимое Ñмещение на psect)\n" + +#: vms-alpha.c:6118 +#, c-format +msgid "STO_IMM (store immediate) %u bytes\n" +msgstr "STO_IMM (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ Ð½ÐµÐ¿Ð¾ÑредÑтвенно) %u байт\n" + +#: vms-alpha.c:6125 +#, c-format +msgid "STO_GBL_LW (store global longword) %.*s\n" +msgstr "STO_GBL_LW (хранимое глобальное длинное Ñлово) %.*s\n" + +#: vms-alpha.c:6129 +#, c-format +msgid "STO_OFF (store LP with procedure signature)\n" +msgstr "STO_OFF (хранимый LP Ñ Ñигнатурой процедуры)\n" + +#: vms-alpha.c:6132 +#, c-format +msgid "STO_BR_GBL (store branch global) *todo*\n" +msgstr "STO_BR_GBL (хранимый глобальный переход) *todo*\n" + +#: vms-alpha.c:6135 +#, c-format +msgid "STO_BR_PS (store branch psect + offset) *todo*\n" +msgstr "STO_BR_PS (хранимый переход psect + Ñмещение) *todo*\n" + +#: vms-alpha.c:6139 +#, c-format +msgid "OPR_NOP (no-operation)\n" +msgstr "OPR_NOP (нет операции)\n" + +#: vms-alpha.c:6142 +#, c-format +msgid "OPR_ADD (add)\n" +msgstr "OPR_ADD (Ñложение)\n" + +#: vms-alpha.c:6145 +#, c-format +msgid "OPR_SUB (substract)\n" +msgstr "OPR_SUB (вычитание)\n" + +#: vms-alpha.c:6148 +#, c-format +msgid "OPR_MUL (multiply)\n" +msgstr "OPR_MUL (умножение)\n" + +#: vms-alpha.c:6151 +#, c-format +msgid "OPR_DIV (divide)\n" +msgstr "OPR_DIV (деление)\n" + +#: vms-alpha.c:6154 +#, c-format +msgid "OPR_AND (logical and)\n" +msgstr "OPR_AND (логичеÑкое и)\n" + +#: vms-alpha.c:6157 +#, c-format +msgid "OPR_IOR (logical inclusive or)\n" +msgstr "OPR_IOR (логичеÑкое включающее или)\n" + +#: vms-alpha.c:6160 +#, c-format +msgid "OPR_EOR (logical exclusive or)\n" +msgstr "OPR_EOR (логичеÑкое не включающее или)\n" + +#: vms-alpha.c:6163 +#, c-format +msgid "OPR_NEG (negate)\n" +msgstr "OPR_NEG (инверÑиÑ)\n" + +#: vms-alpha.c:6166 +#, c-format +msgid "OPR_COM (complement)\n" +msgstr "OPR_COM (дополнение)\n" + +#: vms-alpha.c:6169 +#, c-format +msgid "OPR_INSV (insert field)\n" +msgstr "OPR_INSV (поле вÑтавки)\n" + +#: vms-alpha.c:6172 +#, c-format +msgid "OPR_ASH (arithmetic shift)\n" +msgstr "OPR_ASH (арифметичеÑкий Ñдвиг)\n" + +#: vms-alpha.c:6175 +#, c-format +msgid "OPR_USH (unsigned shift)\n" +msgstr "OPR_USH (беззнаковый Ñдвиг)\n" + +#: vms-alpha.c:6178 +#, c-format +msgid "OPR_ROT (rotate)\n" +msgstr "OPR_ROT (цикличеÑкий Ñдвиг)\n" + +#: vms-alpha.c:6181 +#, c-format +msgid "OPR_SEL (select)\n" +msgstr "OPR_SEL (выбор)\n" + +#: vms-alpha.c:6184 +#, c-format +msgid "OPR_REDEF (redefine symbol to curr location)\n" +msgstr "OPR_REDEF (переопределение Ñимвола в текущей позиции)\n" + +#: vms-alpha.c:6187 +#, c-format +msgid "OPR_REDEF (define a literal)\n" +msgstr "OPR_REDEF (определение литерала)\n" + +#: vms-alpha.c:6191 +#, c-format +msgid "STC_LP (store cond linkage pair)\n" +msgstr "STC_LP (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ ÑƒÑловно ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ð°Ñ Ð¿Ð°Ñ€Ð°)\n" + +#: vms-alpha.c:6195 +#, c-format +msgid "STC_LP_PSB (store cond linkage pair + signature)\n" +msgstr "STC_LP_PSB (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ ÑƒÑловно ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ð°Ñ Ð¿Ð°Ñ€Ð° + Ñигнатура)\n" + +#: vms-alpha.c:6196 +#, c-format +msgid " linkage index: %u, procedure: %.*s\n" +msgstr " Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, процедура: %.*s\n" + +#: vms-alpha.c:6199 +#, c-format +msgid " signature: %.*s\n" +msgstr " Ñигнатура: %.*s\n" + +#: vms-alpha.c:6202 +#, c-format +msgid "STC_GBL (store cond global)\n" +msgstr "STC_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ðµ уÑловие)\n" + +#: vms-alpha.c:6203 +#, c-format +msgid " linkage index: %u, global: %.*s\n" +msgstr " Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, глобальный: %.*s\n" + +#: vms-alpha.c:6207 +#, c-format +msgid "STC_GCA (store cond code address)\n" +msgstr "STC_GCA (хранимый Ð°Ð´Ñ€ÐµÑ ÑƒÑловного кода)\n" + +#: vms-alpha.c:6208 +#, c-format +msgid " linkage index: %u, procedure name: %.*s\n" +msgstr " Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹: %.*s\n" + +#: vms-alpha.c:6212 +#, c-format +msgid "STC_PS (store cond psect + offset)\n" +msgstr "STC_PS (хранимое уÑловие psect + Ñмещение)\n" + +#: vms-alpha.c:6214 +#, c-format +msgid " linkage index: %u, psect: %u, offset: 0x%08x %08x\n" +msgstr " Ð¸Ð½Ð´ÐµÐºÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, psect: %u, Ñмещение: 0x%08x %08x\n" + +#: vms-alpha.c:6221 +#, c-format +msgid "STC_NOP_GBL (store cond NOP at global addr)\n" +msgstr "STC_NOP_GBL (хранимое уÑловие NOP по глобальному адреÑу)\n" + +#: vms-alpha.c:6225 +#, c-format +msgid "STC_NOP_PS (store cond NOP at psect + offset)\n" +msgstr "STC_NOP_PS (хранимое уÑловие NOP по psect + Ñмещение)\n" + +#: vms-alpha.c:6229 +#, c-format +msgid "STC_BSR_GBL (store cond BSR at global addr)\n" +msgstr "STC_BSR_GBL (хранимое уÑловие BSR по глобальному адреÑу)\n" + +#: vms-alpha.c:6233 +#, c-format +msgid "STC_BSR_PS (store cond BSR at psect + offset)\n" +msgstr "STC_BSR_PS (хранимое уÑловие BSR по psect + Ñмещение)\n" + +#: vms-alpha.c:6237 +#, c-format +msgid "STC_LDA_GBL (store cond LDA at global addr)\n" +msgstr "STC_LDA_GBL (хранимое уÑловие LDA по глобальному адреÑу)\n" + +#: vms-alpha.c:6241 +#, c-format +msgid "STC_LDA_PS (store cond LDA at psect + offset)\n" +msgstr "STC_LDA_PS (хранимое уÑловие LDA по psect + Ñмещение)\n" + +#: vms-alpha.c:6245 +#, c-format +msgid "STC_BOH_GBL (store cond BOH at global addr)\n" +msgstr "STC_BOH_GBL (хранимое уÑловие BOH по глобальному адреÑу)\n" + +#: vms-alpha.c:6249 +#, c-format +msgid "STC_BOH_PS (store cond BOH at psect + offset)\n" +msgstr "STC_BOH_PS (хранимое уÑловие BOH по psect + Ñмещение)\n" + +#: vms-alpha.c:6254 +#, c-format +msgid "STC_NBH_GBL (store cond or hint at global addr)\n" +msgstr "STC_NBH_GBL (хранимое уÑловие или указание по глобальному адреÑу)\n" + +#: vms-alpha.c:6258 +#, c-format +msgid "STC_NBH_PS (store cond or hint at psect + offset)\n" +msgstr "STC_NBH_PS (хранимое уÑловие или указание по psect + Ñмещение)\n" + +#: vms-alpha.c:6262 +#, c-format +msgid "CTL_SETRB (set relocation base)\n" +msgstr "CTL_SETRB (уÑтановка базы перемещениÑ)\n" + +#: vms-alpha.c:6268 +#, c-format +msgid "CTL_AUGRB (augment relocation base) %u\n" +msgstr "CTL_AUGRB (дополнение базы перемещениÑ) %u\n" + +#: vms-alpha.c:6272 +#, c-format +msgid "CTL_DFLOC (define location)\n" +msgstr "CTL_DFLOC (определение положениÑ)\n" + +#: vms-alpha.c:6275 +#, c-format +msgid "CTL_STLOC (set location)\n" +msgstr "CTL_STLOC (задание положениÑ)\n" + +#: vms-alpha.c:6278 +#, c-format +msgid "CTL_STKDL (stack defined location)\n" +msgstr "CTL_STKDL (положение определÑемое Ñтеком)\n" + +#: vms-alpha.c:6281 vms-alpha.c:6695 +#, c-format +msgid "*unhandled*\n" +msgstr "*не обработано*\n" + +#: vms-alpha.c:6311 vms-alpha.c:6350 +#, c-format +msgid "cannot read GST record length\n" +msgstr "не удалоÑÑŒ прочитать длину запиÑи GST\n" + +#. Ill-formed. +#: vms-alpha.c:6332 +#, c-format +msgid "cannot find EMH in first GST record\n" +msgstr "не удалоÑÑŒ найти EMH в первой запиÑи GST\n" + +#: vms-alpha.c:6358 +#, c-format +msgid "cannot read GST record header\n" +msgstr "не удалоÑÑŒ прочитать заголовок запиÑи GST\n" + +#: vms-alpha.c:6371 +#, c-format +msgid " corrupted GST\n" +msgstr " повреждённый GST\n" + +#: vms-alpha.c:6379 +#, c-format +msgid "cannot read GST record\n" +msgstr "не удалоÑÑŒ прочитать запиÑÑŒ GST\n" + +#: vms-alpha.c:6408 +#, c-format +msgid " unhandled EOBJ record type %u\n" +msgstr " необработанный тип запиÑи EOBJ %u\n" + +#: vms-alpha.c:6431 +#, c-format +msgid " bitcount: %u, base addr: 0x%08x\n" +msgstr " Ñчётчик бит: %u, базовый адреÑ: 0x%08x\n" + +#: vms-alpha.c:6444 +#, c-format +msgid " bitmap: 0x%08x (count: %u):\n" +msgstr " bitmap: 0x%08x (Ñчётчик: %u):\n" + +#: vms-alpha.c:6451 +#, c-format +msgid " %08x" +msgstr " %08x" + +#: vms-alpha.c:6476 +#, c-format +msgid " image %u (%u entries)\n" +msgstr " образ %u (%u Ñлементов)\n" + +#: vms-alpha.c:6481 +#, c-format +msgid " offset: 0x%08x, val: 0x%08x\n" +msgstr " Ñмещение: 0x%08x, значение: 0x%08x\n" + +#: vms-alpha.c:6502 +#, c-format +msgid " image %u (%u entries), offsets:\n" +msgstr " образ %u (%u Ñлементов), ÑмещениÑ:\n" + +#: vms-alpha.c:6509 +#, c-format +msgid " 0x%08x" +msgstr " 0x%08x" + +#. 64 bits. +#: vms-alpha.c:6631 +#, c-format +msgid "64 bits *unhandled*\n" +msgstr "64 бита *не обработано*\n" + +#: vms-alpha.c:6635 +#, c-format +msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n" +msgstr "клаÑÑ: %u, dtype: %u, длина: %u, указатель: 0x%08x\n" + +#: vms-alpha.c:6646 +#, c-format +msgid "non-contiguous array of %s\n" +msgstr "неÑвÑзный маÑÑив %s\n" + +#: vms-alpha.c:6650 +#, c-format +msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n" +msgstr "dimct: %u, aflags: 0x%02x, цифр: %u, шкала: %u\n" + +#: vms-alpha.c:6654 +#, c-format +msgid "arsize: %u, a0: 0x%08x\n" +msgstr "arsize: %u, a0: 0x%08x\n" + +#: vms-alpha.c:6658 +#, c-format +msgid "Strides:\n" +msgstr "Шаги:\n" + +#: vms-alpha.c:6663 +#, c-format +msgid "[%u]: %u\n" +msgstr "[%u]: %u\n" + +#: vms-alpha.c:6668 +#, c-format +msgid "Bounds:\n" +msgstr "Границы:\n" + +#: vms-alpha.c:6673 +#, c-format +msgid "[%u]: Lower: %u, upper: %u\n" +msgstr "[%u]: нижнÑÑ: %u, верхнÑÑ: %u\n" + +#: vms-alpha.c:6685 +#, c-format +msgid "unaligned bit-string of %s\n" +msgstr "Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð°Ñ Ñтрока бит %s\n" + +#: vms-alpha.c:6689 +#, c-format +msgid "base: %u, pos: %u\n" +msgstr "база: %u, позициÑ: %u\n" + +#: vms-alpha.c:6709 +#, c-format +msgid "vflags: 0x%02x, value: 0x%08x " +msgstr "vflags: 0x%02x, значение: 0x%08x " + +#: vms-alpha.c:6715 +#, c-format +msgid "(no value)\n" +msgstr "(нет значениÑ)\n" + +#: vms-alpha.c:6718 +#, c-format +msgid "(not active)\n" +msgstr "(не активно)\n" + +#: vms-alpha.c:6721 +#, c-format +msgid "(not allocated)\n" +msgstr "(не выделено)\n" + +#: vms-alpha.c:6724 +#, c-format +msgid "(descriptor)\n" +msgstr "(деÑкриптор)\n" + +#: vms-alpha.c:6728 +#, c-format +msgid "(trailing value)\n" +msgstr "(конечное значение)\n" + +#: vms-alpha.c:6731 +#, c-format +msgid "(value spec follows)\n" +msgstr "(далее значение Ñпецификации)\n" + +#: vms-alpha.c:6734 +#, c-format +msgid "(at bit offset %u)\n" +msgstr "(по битовому Ñмещению %u)\n" + +#: vms-alpha.c:6737 +#, c-format +msgid "(reg: %u, disp: %u, indir: %u, kind: " +msgstr "(reg: %u, disp: %u, indir: %u, kind: " + +#: vms-alpha.c:6744 +msgid "literal" +msgstr "литерал" + +#: vms-alpha.c:6747 +msgid "address" +msgstr "адреÑ" + +#: vms-alpha.c:6750 +msgid "desc" +msgstr "деÑк" + +#: vms-alpha.c:6753 +msgid "reg" +msgstr "рег" + +#: vms-alpha.c:6828 +#, c-format +msgid "Debug symbol table:\n" +msgstr "Таблица Ñимволов отладки:\n" + +#: vms-alpha.c:6839 +#, c-format +msgid "cannot read DST header\n" +msgstr "не удалоÑÑŒ прочитать заголовок DST\n" + +#: vms-alpha.c:6844 +#, c-format +msgid " type: %3u, len: %3u (at 0x%08x): " +msgstr " тип: %3u, длина: %3u (по 0x%08x): " + +#: vms-alpha.c:6858 +#, c-format +msgid "cannot read DST symbol\n" +msgstr "не удалоÑÑŒ прочитать Ñимвол DST\n" + +#: vms-alpha.c:6901 +#, c-format +msgid "standard data: %s\n" +msgstr "Ñтандартные данные: %s\n" + +#: vms-alpha.c:6904 vms-alpha.c:6988 +#, c-format +msgid " name: %.*s\n" +msgstr " имÑ: %.*s\n" + +#: vms-alpha.c:6911 +#, c-format +msgid "modbeg\n" +msgstr "modbeg\n" + +#: vms-alpha.c:6912 +#, c-format +msgid " flags: %d, language: %u, major: %u, minor: %u\n" +msgstr " флаги: %d, Ñзык: %u, Ñтарший: %u, младший: %u\n" + +#: vms-alpha.c:6918 vms-alpha.c:7184 +#, c-format +msgid " module name: %.*s\n" +msgstr " Ð¸Ð¼Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ: %.*s\n" + +#: vms-alpha.c:6921 +#, c-format +msgid " compiler : %.*s\n" +msgstr " компилÑтор : %.*s\n" + +#: vms-alpha.c:6926 +#, c-format +msgid "modend\n" +msgstr "modend\n" + +#: vms-alpha.c:6933 +msgid "rtnbeg\n" +msgstr "rtnbeg\n" + +#: vms-alpha.c:6934 +#, c-format +msgid " flags: %u, address: 0x%08x, pd-address: 0x%08x\n" +msgstr " флаги: %u, адреÑ: 0x%08x, pd-адреÑ: 0x%08x\n" + +#: vms-alpha.c:6939 +#, c-format +msgid " routine name: %.*s\n" +msgstr " Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹: %.*s\n" + +#: vms-alpha.c:6947 +#, c-format +msgid "rtnend: size 0x%08x\n" +msgstr "rtnend: размер 0x%08x\n" + +#: vms-alpha.c:6955 +#, c-format +msgid "prolog: bkpt address 0x%08x\n" +msgstr "пролог: Ð°Ð´Ñ€ÐµÑ bkpt 0x%08x\n" + +#: vms-alpha.c:6963 +#, c-format +msgid "epilog: flags: %u, count: %u\n" +msgstr "Ñпилог: флаги: %u, Ñчётчик: %u\n" + +#: vms-alpha.c:6972 +#, c-format +msgid "blkbeg: address: 0x%08x, name: %.*s\n" +msgstr "blkbeg: адреÑ: 0x%08x, имÑ: %.*s\n" + +#: vms-alpha.c:6981 +#, c-format +msgid "blkend: size: 0x%08x\n" +msgstr "blkend: размер: 0x%08x\n" + +#: vms-alpha.c:6987 +#, c-format +msgid "typspec (len: %u)\n" +msgstr "typspec (длина: %u)\n" + +#: vms-alpha.c:6994 +#, c-format +msgid "septyp, name: %.*s\n" +msgstr "septyp, имÑ: %.*s\n" + +#: vms-alpha.c:7003 +#, c-format +msgid "recbeg: name: %.*s\n" +msgstr "recbeg: имÑ: %.*s\n" + +#: vms-alpha.c:7010 +#, c-format +msgid "recend\n" +msgstr "recend\n" + +#: vms-alpha.c:7013 +#, c-format +msgid "enumbeg, len: %u, name: %.*s\n" +msgstr "enumbeg, длина: %u, имÑ: %.*s\n" + +#: vms-alpha.c:7017 +#, c-format +msgid "enumelt, name: %.*s\n" +msgstr "enumelt, имÑ: %.*s\n" + +#: vms-alpha.c:7021 +#, c-format +msgid "enumend\n" +msgstr "enumend\n" + +#: vms-alpha.c:7038 +#, c-format +msgid "discontiguous range (nbr: %u)\n" +msgstr "неÑмежный диапазон (nbr: %u)\n" + +#: vms-alpha.c:7040 +#, c-format +msgid " address: 0x%08x, size: %u\n" +msgstr " адреÑ: 0x%08x, размер: %u\n" + +#: vms-alpha.c:7050 +#, c-format +msgid "line num (len: %u)\n" +msgstr "номер Ñтроки (длина: %u)\n" + +#: vms-alpha.c:7067 +#, c-format +msgid "delta_pc_w %u\n" +msgstr "delta_pc_w %u\n" + +#: vms-alpha.c:7074 +#, c-format +msgid "incr_linum(b): +%u\n" +msgstr "incr_linum(b): +%u\n" + +#: vms-alpha.c:7080 +#, c-format +msgid "incr_linum_w: +%u\n" +msgstr "incr_linum_w: +%u\n" + +#: vms-alpha.c:7086 +#, c-format +msgid "incr_linum_l: +%u\n" +msgstr "incr_linum_l: +%u\n" + +#: vms-alpha.c:7092 +#, c-format +msgid "set_line_num(w) %u\n" +msgstr "set_line_num(w) %u\n" + +#: vms-alpha.c:7097 +#, c-format +msgid "set_line_num_b %u\n" +msgstr "set_line_num_b %u\n" + +#: vms-alpha.c:7102 +#, c-format +msgid "set_line_num_l %u\n" +msgstr "set_line_num_l %u\n" + +#: vms-alpha.c:7107 +#, c-format +msgid "set_abs_pc: 0x%08x\n" +msgstr "set_abs_pc: 0x%08x\n" + +#: vms-alpha.c:7111 +#, c-format +msgid "delta_pc_l: +0x%08x\n" +msgstr "delta_pc_l: +0x%08x\n" + +#: vms-alpha.c:7116 +#, c-format +msgid "term(b): 0x%02x" +msgstr "term(b): 0x%02x" + +#: vms-alpha.c:7118 +#, c-format +msgid " pc: 0x%08x\n" +msgstr " pc: 0x%08x\n" + +#: vms-alpha.c:7123 +#, c-format +msgid "term_w: 0x%04x" +msgstr "term_w: 0x%04x" + +#: vms-alpha.c:7125 +#, c-format +msgid " pc: 0x%08x\n" +msgstr " pc: 0x%08x\n" + +#: vms-alpha.c:7131 +#, c-format +msgid "delta pc +%-4d" +msgstr "delta pc +%-4d" + +#: vms-alpha.c:7134 +#, c-format +msgid " pc: 0x%08x line: %5u\n" +msgstr " pc: 0x%08x Ñтрока: %5u\n" + +#: vms-alpha.c:7139 +#, c-format +msgid " *unhandled* cmd %u\n" +msgstr " *необработаннаÑ* команда %u\n" + +#: vms-alpha.c:7154 +#, c-format +msgid "source (len: %u)\n" +msgstr "иÑточник (длина: %u)\n" + +#: vms-alpha.c:7168 +#, c-format +msgid " declfile: len: %u, flags: %u, fileid: %u\n" +msgstr " declfile: длина: %u, флаги: %u, fileid: %u\n" + +#: vms-alpha.c:7172 +#, c-format +msgid " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" +msgstr " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" + +#: vms-alpha.c:7181 +#, c-format +msgid " filename : %.*s\n" +msgstr " Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° : %.*s\n" + +#: vms-alpha.c:7190 +#, c-format +msgid " setfile %u\n" +msgstr " setfile %u\n" + +#: vms-alpha.c:7195 vms-alpha.c:7200 +#, c-format +msgid " setrec %u\n" +msgstr " setrec %u\n" + +#: vms-alpha.c:7205 vms-alpha.c:7210 +#, c-format +msgid " setlnum %u\n" +msgstr " setlnum %u\n" + +#: vms-alpha.c:7215 vms-alpha.c:7220 +#, c-format +msgid " deflines %u\n" +msgstr " deflines %u\n" + +#: vms-alpha.c:7224 +#, c-format +msgid " formfeed\n" +msgstr " formfeed\n" + +#: vms-alpha.c:7228 +#, c-format +msgid " *unhandled* cmd %u\n" +msgstr " *необработаннаÑ* команда %u\n" + +#: vms-alpha.c:7240 +#, c-format +msgid "*unhandled* dst type %u\n" +msgstr "*необработанный* тип Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ %u\n" + +#: vms-alpha.c:7272 +#, c-format +msgid "cannot read EIHD\n" +msgstr "не удалоÑÑŒ прочитать EIHD\n" + +#: vms-alpha.c:7275 +#, c-format +msgid "EIHD: (size: %u, nbr blocks: %u)\n" +msgstr "EIHD: (размер: %u, nbr блоков: %u)\n" + +#: vms-alpha.c:7278 +#, c-format +msgid " majorid: %u, minorid: %u\n" +msgstr " majorid: %u, minorid: %u\n" + +#: vms-alpha.c:7286 +msgid "executable" +msgstr "иÑполнÑемый" + +#: vms-alpha.c:7289 +msgid "linkable image" +msgstr "компонуемый образ" + +#: vms-alpha.c:7295 +#, c-format +msgid " image type: %u (%s)" +msgstr " тип образа: %u (%s)" + +#: vms-alpha.c:7301 +msgid "native" +msgstr "родной" + +#: vms-alpha.c:7304 +msgid "CLI" +msgstr "CLI" + +#: vms-alpha.c:7310 +#, c-format +msgid ", subtype: %u (%s)\n" +msgstr ", подтип: %u (%s)\n" + +#: vms-alpha.c:7316 +#, c-format +msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n" +msgstr " ÑмещениÑ: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n" + +#: vms-alpha.c:7320 +#, c-format +msgid " fixup info rva: " +msgstr " fixup info rva: " + +#: vms-alpha.c:7322 +#, c-format +msgid ", symbol vector rva: " +msgstr ", Ñимвольный вектор rva: " + +#: vms-alpha.c:7325 +#, c-format +msgid "" +"\n" +" version array off: %u\n" +msgstr "" +"\n" +" Ñмещение маÑÑива верÑий: %u\n" + +#: vms-alpha.c:7329 +#, c-format +msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n" +msgstr " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n" + +#: vms-alpha.c:7335 +#, c-format +msgid " linker flags: %08x:" +msgstr " флаги компоновщика: %08x:" + +#: vms-alpha.c:7365 +#, c-format +msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n" +msgstr " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n" + +#: vms-alpha.c:7371 +#, c-format +msgid " BPAGE: %u" +msgstr " BPAGE: %u" + +#: vms-alpha.c:7377 +#, c-format +msgid ", ext fixup offset: %u, no_opt psect off: %u" +msgstr ", ext fixup offset: %u, no_opt psect off: %u" + +#: vms-alpha.c:7380 +#, c-format +msgid ", alias: %u\n" +msgstr ", пÑевдоним: %u\n" + +#: vms-alpha.c:7388 +#, c-format +msgid "system version array information:\n" +msgstr "маÑÑив информации верÑии ÑиÑтемы:\n" + +#: vms-alpha.c:7392 +#, c-format +msgid "cannot read EIHVN header\n" +msgstr "не удалоÑÑŒ прочитать заголовок EIHVN\n" + +#: vms-alpha.c:7402 +#, c-format +msgid "cannot read EIHVN version\n" +msgstr "не удалоÑÑŒ прочитать верÑию EIHVN\n" + +#: vms-alpha.c:7405 +#, c-format +msgid " %02u " +msgstr " %02u " + +#: vms-alpha.c:7409 +msgid "BASE_IMAGE " +msgstr "BASE_IMAGE " + +#: vms-alpha.c:7412 +msgid "MEMORY_MANAGEMENT" +msgstr "MEMORY_MANAGEMENT" + +#: vms-alpha.c:7415 +msgid "IO " +msgstr "IO " + +#: vms-alpha.c:7418 +msgid "FILES_VOLUMES " +msgstr "FILES_VOLUMES " + +#: vms-alpha.c:7421 +msgid "PROCESS_SCHED " +msgstr "PROCESS_SCHED " + +#: vms-alpha.c:7424 +msgid "SYSGEN " +msgstr "SYSGEN " + +#: vms-alpha.c:7427 +msgid "CLUSTERS_LOCKMGR " +msgstr "CLUSTERS_LOCKMGR " + +#: vms-alpha.c:7430 +msgid "LOGICAL_NAMES " +msgstr "LOGICAL_NAMES " + +#: vms-alpha.c:7433 +msgid "SECURITY " +msgstr "SECURITY " + +#: vms-alpha.c:7436 +msgid "IMAGE_ACTIVATOR " +msgstr "IMAGE_ACTIVATOR " + +#: vms-alpha.c:7439 +msgid "NETWORKS " +msgstr "NETWORKS " + +#: vms-alpha.c:7442 +msgid "COUNTERS " +msgstr "COUNTERS " + +#: vms-alpha.c:7445 +msgid "STABLE " +msgstr "STABLE " + +#: vms-alpha.c:7448 +msgid "MISC " +msgstr "MISC " + +#: vms-alpha.c:7451 +msgid "CPU " +msgstr "CPU " + +#: vms-alpha.c:7454 +msgid "VOLATILE " +msgstr "VOLATILE " + +#: vms-alpha.c:7457 +msgid "SHELL " +msgstr "SHELL " + +#: vms-alpha.c:7460 +msgid "POSIX " +msgstr "POSIX " + +#: vms-alpha.c:7463 +msgid "MULTI_PROCESSING " +msgstr "MULTI_PROCESSING " + +#: vms-alpha.c:7466 +msgid "GALAXY " +msgstr "GALAXY " + +#: vms-alpha.c:7469 +msgid "*unknown* " +msgstr "*неизвеÑтно* " + +#: vms-alpha.c:7472 +#, c-format +msgid ": %u.%u\n" +msgstr ": %u.%u\n" + +#: vms-alpha.c:7485 vms-alpha.c:7744 +#, c-format +msgid "cannot read EIHA\n" +msgstr "не удалоÑÑŒ прочитать EIHA\n" + +#: vms-alpha.c:7488 +#, c-format +msgid "Image activation: (size=%u)\n" +msgstr "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð·Ð°: (размер=%u)\n" + +#: vms-alpha.c:7490 +#, c-format +msgid " First address : 0x%08x 0x%08x\n" +msgstr " Первый адреÑ: 0x%08x 0x%08x\n" + +#: vms-alpha.c:7493 +#, c-format +msgid " Second address: 0x%08x 0x%08x\n" +msgstr " Второй адреÑ: 0x%08x 0x%08x\n" + +#: vms-alpha.c:7496 +#, c-format +msgid " Third address : 0x%08x 0x%08x\n" +msgstr " Третий адреÑ: 0x%08x 0x%08x\n" + +#: vms-alpha.c:7499 +#, c-format +msgid " Fourth address: 0x%08x 0x%08x\n" +msgstr " Четвёртый адреÑ: 0x%08x 0x%08x\n" + +#: vms-alpha.c:7502 +#, c-format +msgid " Shared image : 0x%08x 0x%08x\n" +msgstr " Общий образ: 0x%08x 0x%08x\n" + +#: vms-alpha.c:7513 +#, c-format +msgid "cannot read EIHI\n" +msgstr "не удалоÑÑŒ прочитать EIHI\n" + +#: vms-alpha.c:7516 +#, c-format +msgid "Image identification: (major: %u, minor: %u)\n" +msgstr "Ð˜Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñтарший: %u, младший: %u)\n" + +#: vms-alpha.c:7519 +#, c-format +msgid " image name : %.*s\n" +msgstr " Ð¸Ð¼Ñ Ð¾Ð±Ñ€Ð°Ð·Ð° : %.*s\n" + +#: vms-alpha.c:7521 +#, c-format +msgid " link time : %s\n" +msgstr " Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ : %s\n" + +#: vms-alpha.c:7523 +#, c-format +msgid " image ident : %.*s\n" +msgstr " идент-Ñ€ образа : %.*s\n" + +#: vms-alpha.c:7525 +#, c-format +msgid " linker ident : %.*s\n" +msgstr " идент-Ñ€ компоновщика: %.*s\n" + +#: vms-alpha.c:7527 +#, c-format +msgid " image build ident: %.*s\n" +msgstr " идент-Ñ€ Ñборки образа: %.*s\n" + +#: vms-alpha.c:7537 +#, c-format +msgid "cannot read EIHS\n" +msgstr "не удалоÑÑŒ прочитать EIHS\n" + +#: vms-alpha.c:7540 +#, c-format +msgid "Image symbol & debug table: (major: %u, minor: %u)\n" +msgstr "Таблица Ñимволов & отладки образа: (Ñтарший: %u, младший: %u)\n" + +#: vms-alpha.c:7545 +#, c-format +msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n" +msgstr " таблица отладочных Ñимволов: vbn: %u, размер: %u (0x%x)\n" + +#: vms-alpha.c:7549 +#, c-format +msgid " global symbol table: vbn: %u, records: %u\n" +msgstr " Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñимволов: vbn: %u, запиÑей: %u\n" + +#: vms-alpha.c:7553 +#, c-format +msgid " debug module table : vbn: %u, size: %u\n" +msgstr " таблица отладочных модулей: vbn: %u, размер: %u\n" + +#: vms-alpha.c:7566 +#, c-format +msgid "cannot read EISD\n" +msgstr "не удалоÑÑŒ прочитать EISD\n" + +#: vms-alpha.c:7576 +#, c-format +msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n" +msgstr "ДеÑкриптор раздела образа: (Ñтарший: %u, младший: %u, размер: %u, Ñмещение: %u)\n" + +#: vms-alpha.c:7583 +#, c-format +msgid " section: base: 0x%08x%08x size: 0x%08x\n" +msgstr " раздел: база: 0x%08x%08x размер: 0x%08x\n" + +#: vms-alpha.c:7588 +#, c-format +msgid " flags: 0x%04x" +msgstr " флаги: 0x%04x" + +#: vms-alpha.c:7625 +#, c-format +msgid " vbn: %u, pfc: %u, matchctl: %u type: %u (" +msgstr " vbn: %u, pfc: %u, matchctl: %u тип: %u (" + +#: vms-alpha.c:7631 +msgid "NORMAL" +msgstr "NORMAL" + +#: vms-alpha.c:7634 +msgid "SHRFXD" +msgstr "SHRFXD" + +#: vms-alpha.c:7637 +msgid "PRVFXD" +msgstr "PRVFXD" + +#: vms-alpha.c:7640 +msgid "SHRPIC" +msgstr "SHRPIC" + +#: vms-alpha.c:7643 +msgid "PRVPIC" +msgstr "PRVPIC" + +#: vms-alpha.c:7646 +msgid "USRSTACK" +msgstr "USRSTACK" + +#: vms-alpha.c:7654 +#, c-format +msgid " ident: 0x%08x, name: %.*s\n" +msgstr " иден-Ñ€: 0x%08x, имÑ: %.*s\n" + +#: vms-alpha.c:7664 +#, c-format +msgid "cannot read DMT\n" +msgstr "не удалоÑÑŒ прочитать DMT\n" + +#: vms-alpha.c:7668 +#, c-format +msgid "Debug module table:\n" +msgstr "Таблица отладочных модулей:\n" + +#: vms-alpha.c:7677 +#, c-format +msgid "cannot read DMT header\n" +msgstr "не удалоÑÑŒ прочитать заголовок DMT\n" + +#: vms-alpha.c:7682 +#, c-format +msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n" +msgstr " Ñмещение модулÑ: 0x%08x, размер: 0x%08x, (%u psects)\n" + +#: vms-alpha.c:7692 +#, c-format +msgid "cannot read DMT psect\n" +msgstr "не удалоÑÑŒ прочитать DMT psect\n" + +#: vms-alpha.c:7695 +#, c-format +msgid " psect start: 0x%08x, length: %u\n" +msgstr " начало psect: 0x%08x, длина: %u\n" + +#: vms-alpha.c:7708 +#, c-format +msgid "cannot read DST\n" +msgstr "не удалоÑÑŒ прочитать DST\n" + +#: vms-alpha.c:7718 +#, c-format +msgid "cannot read GST\n" +msgstr "не удалоÑÑŒ прочитать GST\n" + +#: vms-alpha.c:7722 +#, c-format +msgid "Global symbol table:\n" +msgstr "Таблица глобальных Ñимволов:\n" + +#: vms-alpha.c:7750 +#, c-format +msgid "Image activator fixup: (major: %u, minor: %u)\n" +msgstr "Ðктиватор меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñтарший: %u, младший: %u)\n" + +#: vms-alpha.c:7753 +#, c-format +msgid " iaflink : 0x%08x %08x\n" +msgstr " iaflink : 0x%08x %08x\n" + +#: vms-alpha.c:7756 +#, c-format +msgid " fixuplnk: 0x%08x %08x\n" +msgstr " fixuplnk: 0x%08x %08x\n" + +#: vms-alpha.c:7759 +#, c-format +msgid " size : %u\n" +msgstr " размер: %u\n" + +#: vms-alpha.c:7761 +#, c-format +msgid " flags: 0x%08x\n" +msgstr " флаги: 0x%08x\n" + +#: vms-alpha.c:7765 +#, c-format +msgid " qrelfixoff: %5u, lrelfixoff: %5u\n" +msgstr " qrelfixoff: %5u, lrelfixoff: %5u\n" + +#: vms-alpha.c:7769 +#, c-format +msgid " qdotadroff: %5u, ldotadroff: %5u\n" +msgstr " qdotadroff: %5u, ldotadroff: %5u\n" + +#: vms-alpha.c:7773 +#, c-format +msgid " codeadroff: %5u, lpfixoff : %5u\n" +msgstr " codeadroff: %5u, lpfixoff : %5u\n" + +#: vms-alpha.c:7776 +#, c-format +msgid " chgprtoff : %5u\n" +msgstr " chgprtoff : %5u\n" + +#: vms-alpha.c:7779 +#, c-format +msgid " shlstoff : %5u, shrimgcnt : %5u\n" +msgstr " shlstoff : %5u, shrimgcnt : %5u\n" + +#: vms-alpha.c:7781 +#, c-format +msgid " shlextra : %5u, permctx : %5u\n" +msgstr " shlextra : %5u, permctx : %5u\n" + +#: vms-alpha.c:7784 +#, c-format +msgid " base_va : 0x%08x\n" +msgstr " base_va : 0x%08x\n" + +#: vms-alpha.c:7786 +#, c-format +msgid " lppsbfixoff: %5u\n" +msgstr " lppsbfixoff: %5u\n" + +#: vms-alpha.c:7794 +#, c-format +msgid " Shareable images:\n" +msgstr " Общие образы:\n" + +#: vms-alpha.c:7798 +#, c-format +msgid " %u: size: %u, flags: 0x%02x, name: %.*s\n" +msgstr " %u: размер: %u, флаги: 0x%02x, имÑ: %.*s\n" + +#: vms-alpha.c:7805 +#, c-format +msgid " quad-word relocation fixups:\n" +msgstr " четверное Ñлово перемещаемых меÑтоположений:\n" + +#: vms-alpha.c:7810 +#, c-format +msgid " long-word relocation fixups:\n" +msgstr " длинное Ñлово перемещаемых меÑтоположений:\n" + +#: vms-alpha.c:7815 +#, c-format +msgid " quad-word .address reference fixups:\n" +msgstr " четверное Ñлово ÑÑылочных меÑтоположений .address:\n" + +#: vms-alpha.c:7820 +#, c-format +msgid " long-word .address reference fixups:\n" +msgstr " длинное Ñлово ÑÑылочных меÑтоположений .address:\n" + +#: vms-alpha.c:7825 +#, c-format +msgid " Code Address Reference Fixups:\n" +msgstr " СÑылочные меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа кода:\n" + +#: vms-alpha.c:7830 +#, c-format +msgid " Linkage Pairs Referece Fixups:\n" +msgstr " СÑылочные меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… пар:\n" + +#: vms-alpha.c:7839 +#, c-format +msgid " Change Protection (%u entries):\n" +msgstr " Изменение защиты (%u Ñлементов):\n" + +#: vms-alpha.c:7844 +#, c-format +msgid " base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x " +msgstr " база: 0x%08x %08x, размер: 0x%08x, prot: 0x%08x " + +#. FIXME: we do not yet support relocatable link. It is not obvious +#. how to do it for debug infos. +#: vms-alpha.c:8676 +msgid "%P: relocatable link is not supported\n" +msgstr "%P: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð°Ñ ÑÑылка не поддерживаетÑÑ\n" + +#: vms-alpha.c:8746 +msgid "%P: multiple entry points: in modules %B and %B\n" +msgstr "%P: неÑколько точек входа: в модулÑÑ… %B и %B\n" + +#: vms-lib.c:1421 +#, c-format +msgid "could not open shared image '%s' from '%s'" +msgstr "не удалоÑÑŒ открыть общий образ «%s» из «%s»" + +#: vms-misc.c:360 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "Вызов _bfd_vms_output_counted Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ количеÑтвом байт" + +#: vms-misc.c:365 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "Вызов _bfd_vms_output_counted Ñо Ñлишком большим количеÑтвом байт" + +#: xcofflink.c:836 +#, c-format +msgid "%s: XCOFF shared object when not producing XCOFF output" +msgstr "%s: разделÑемый объект XCOFF без ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° XCOFF" + +#: xcofflink.c:857 +#, c-format +msgid "%s: dynamic object with no .loader section" +msgstr "%s: динамичеÑкий объект без раздела .loader" + +#: xcofflink.c:1415 +msgid "%B: `%s' has line numbers but no enclosing section" +msgstr "%B: `%s' Ñодержит номера Ñтрок, но в обрамлÑющем разделе" + +#: xcofflink.c:1467 +msgid "%B: class %d symbol `%s' has no aux entries" +msgstr "%B: клаÑÑ %d Ñимвола `%s' не имеет Ñлементов aux" + +#: xcofflink.c:1489 +msgid "%B: symbol `%s' has unrecognized csect type %d" +msgstr "%B: Ñимвол `%s' имеет нераÑпознанный тип csect: %d" + +#: xcofflink.c:1501 +msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%B: неверный Ñимвол XTY_ER `%s': клаÑÑ %d scnum %d scnlen %d" + +#: xcofflink.c:1530 +msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%B: Ñимвол XMC_TC0 `%s' ÑвлÑетÑÑ ÐºÐ»Ð°ÑÑом %d scnlen %d" + +#: xcofflink.c:1676 +msgid "%B: csect `%s' not in enclosing section" +msgstr "%B: csect `%s' не в обрамлÑющем разделе" + +#: xcofflink.c:1783 +msgid "%B: misplaced XTY_LD `%s'" +msgstr "%B: неправильно раÑположенный XTY_LD `%s'" + +#: xcofflink.c:2102 +msgid "%B: reloc %s:%d not in csect" +msgstr "%B: перемещение %s:%d не в csect" + +#: xcofflink.c:3186 +#, c-format +msgid "%s: no such symbol" +msgstr "%s: нет такого Ñимвола" + +#: xcofflink.c:3291 +#, c-format +msgid "warning: attempt to export undefined symbol `%s'" +msgstr "предупреждение: попытка ÑкÑпортировать неопределённый Ñимвол `%s'" + +#: xcofflink.c:3673 +msgid "error: undefined symbol __rtinit" +msgstr "ошибка: неопределённый Ñимвол __rtinit" + +#: xcofflink.c:4052 +msgid "%B: loader reloc in unrecognized section `%s'" +msgstr "%B: перемещение загрузчика в нераÑпознанном разделе `%s'" + +#: xcofflink.c:4063 +msgid "%B: `%s' in loader reloc but not loader sym" +msgstr "%B: `%s' в перемещении загрузчика, но не Ñимволе загрузчика" + +#: xcofflink.c:4079 +msgid "%B: loader reloc in read-only section %A" +msgstr "%B: перемещение загрузчика в разделе %A, доÑтупном только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" + +#: xcofflink.c:5097 +#, c-format +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "переполнение TOC: 0x%lx > 0x10000; попробуйте Ñкомпилировать Ñ -mminimal-toc" + +#: elf32-ia64.c:1110 elf64-ia64.c:1110 +msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch." +msgstr "%B: Ðевозможно оÑлабить br по адреÑу 0x%lx в разделе `%A'. ИÑпользуйте brl или коÑвенный переход." + +#: elf32-ia64.c:2809 elf64-ia64.c:2809 +msgid "@pltoff reloc against local symbol" +msgstr "перемещение @pltoff Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñимвола" + +#: elf32-ia64.c:4430 elf64-ia64.c:4430 +#, c-format +msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" +msgstr "%s: переполнение короткого Ñегмента данных (0x%lx >= 0x400000)" + +#: elf32-ia64.c:4441 elf64-ia64.c:4441 +#, c-format +msgid "%s: __gp does not cover short data segment" +msgstr "%s: __gp не покрывает короткий Ñегмент данных" + +#: elf32-ia64.c:4708 elf64-ia64.c:4708 +msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" +msgstr "%B: не-pic код Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ imm Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола `%s'" + +#: elf32-ia64.c:4775 elf64-ia64.c:4775 +msgid "%B: @gprel relocation against dynamic symbol %s" +msgstr "%B: перемещение @gprel Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола %s" + +#: elf32-ia64.c:4838 elf64-ia64.c:4838 msgid "%B: linking non-pic code in a position independent executable" msgstr "%B: компоновка не-pic кода в позиционно-незавиÑимый иÑполнÑемый" -#: elf32-ia64.c:4865 elf64-ia64.c:4865 +#: elf32-ia64.c:4975 elf64-ia64.c:4975 msgid "%B: @internal branch to dynamic symbol %s" msgstr "%B: переход @internal на динамичеÑкий Ñимвол %s" -#: elf32-ia64.c:4867 elf64-ia64.c:4867 +#: elf32-ia64.c:4977 elf64-ia64.c:4977 msgid "%B: speculation fixup to dynamic symbol %s" msgstr "%B: догадка меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола %s" -#: elf32-ia64.c:4869 elf64-ia64.c:4869 +#: elf32-ia64.c:4979 elf64-ia64.c:4979 msgid "%B: @pcrel relocation against dynamic symbol %s" msgstr "%B: перемещение @pcrel Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола %s" -#: elf32-ia64.c:5066 elf64-ia64.c:5066 +#: elf32-ia64.c:5176 elf64-ia64.c:5176 msgid "unsupported reloc" msgstr "неподдерживаемое перемещение" -#: elf32-ia64.c:5104 elf64-ia64.c:5104 +#: elf32-ia64.c:5214 elf64-ia64.c:5214 msgid "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'." msgstr "%B: отÑутÑтвует TLS-раздел Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s Ð´Ð»Ñ `%s' по адреÑу 0x%lx в разделе `%A'." -#: elf32-ia64.c:5119 elf64-ia64.c:5119 +#: elf32-ia64.c:5229 elf64-ia64.c:5229 msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)." msgstr "%B: Ðевозможно оÑлабить br (%s) до `%s' по адреÑу 0x%lx в разделе `%A' Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ 0x%lx (> 0x1000000)." -#: elf32-ia64.c:5375 elf64-ia64.c:5375 +#: elf32-ia64.c:5491 elf64-ia64.c:5491 msgid "%B: linking trap-on-NULL-dereference with non-trapping files" msgstr "%B: компоновка trap-on-NULL-dereference Ñ Ð½Ðµ-trapping файлами" -#: elf32-ia64.c:5384 elf64-ia64.c:5384 +#: elf32-ia64.c:5500 elf64-ia64.c:5500 msgid "%B: linking big-endian files with little-endian files" msgstr "%B: компоновка файлов Ñ Ð¿Ñ€Ñмым порÑдком байт Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ порÑдком байт" -#: elf32-ia64.c:5393 elf64-ia64.c:5393 +#: elf32-ia64.c:5509 elf64-ia64.c:5509 msgid "%B: linking 64-bit files with 32-bit files" msgstr "%B: компоновка 64-битных файлов Ñ 32-битными файлами" -#: elf32-ia64.c:5402 elf64-ia64.c:5402 +#: elf32-ia64.c:5518 elf64-ia64.c:5518 msgid "%B: linking constant-gp files with non-constant-gp files" msgstr "%B: компоновка constant-gp файлов Ñ Ð½Ðµ-constant-gp файлами" -#: elf32-ia64.c:5412 elf64-ia64.c:5412 +#: elf32-ia64.c:5528 elf64-ia64.c:5528 msgid "%B: linking auto-pic files with non-auto-pic files" msgstr "%B: компоновка auto-pic файлов Ñ Ð½Ðµ-auto-pic файлами" -#: peigen.c:1000 pepigen.c:1000 pex64igen.c:1000 +#: peigen.c:1002 pepigen.c:1002 pex64igen.c:1002 #, c-format msgid "%s: line number overflow: 0x%lx > 0xffff" msgstr "%s: переполнение номеров Ñтрок: 0x%lx > 0xffff" -#: peigen.c:1027 pepigen.c:1027 pex64igen.c:1027 +#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 msgid "Export Directory [.edata (or where ever we found it)]" msgstr "Каталог ÑкÑпорта [.edata (или где он нашёлÑÑ)]" -#: peigen.c:1028 pepigen.c:1028 pex64igen.c:1028 +#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 msgid "Import Directory [parts of .idata]" msgstr "Каталог импорта [чаÑÑ‚ÑŒ .idata]" -#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 +#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 msgid "Resource Directory [.rsrc]" msgstr "Каталог реÑурÑов [.rsrc]" -#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 +#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 msgid "Exception Directory [.pdata]" msgstr "Каталог иÑключений [.pdata]" -#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 +#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 msgid "Security Directory" msgstr "Каталог безопаÑноÑти" -#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 +#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 msgid "Base Relocation Directory [.reloc]" msgstr "Каталог базового Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ [.reloc]" -#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 +#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 msgid "Debug Directory" msgstr "Каталог отладки" -#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 +#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 msgid "Description Directory" msgstr "Каталог опиÑаний" -#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 +#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 msgid "Special Directory" msgstr "Специальный каталог" -#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 +#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 msgid "Thread Storage Directory [.tls]" msgstr "Каталог хранилища нитей [.tls]" -#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 +#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 msgid "Load Configuration Directory" msgstr "Каталог загрузки конфигурации" -#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 +#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 msgid "Bound Import Directory" msgstr "Каталог обÑзательного импорта" -#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 +#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 msgid "Import Address Table Directory" msgstr "Каталог таблицы импорта адреÑов" -#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 +#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 msgid "Delay Import Directory" msgstr "Каталог отложенного импорта" -#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 +#: peigen.c:1043 pepigen.c:1043 pex64igen.c:1043 msgid "CLR Runtime Header" msgstr "Заголовок времени Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ CLR" -#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 +#: peigen.c:1044 pepigen.c:1044 pex64igen.c:1044 msgid "Reserved" msgstr "Зарезервировано" -#: peigen.c:1102 pepigen.c:1102 pex64igen.c:1102 +#: peigen.c:1104 pepigen.c:1104 pex64igen.c:1104 #, c-format msgid "" "\n" @@ -3531,7 +5652,7 @@ "\n" "СущеÑтвует таблица импорта, но не найден раздел, в котором она ÑодержитÑÑ\n" -#: peigen.c:1107 pepigen.c:1107 pex64igen.c:1107 +#: peigen.c:1109 pepigen.c:1109 pex64igen.c:1109 #, c-format msgid "" "\n" @@ -3540,7 +5661,7 @@ "\n" "Ð’ %s имеетÑÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° импорта по адреÑу 0x%lx\n" -#: peigen.c:1150 pepigen.c:1150 pex64igen.c:1150 +#: peigen.c:1151 pepigen.c:1151 pex64igen.c:1151 #, c-format msgid "" "\n" @@ -3549,12 +5670,12 @@ "\n" "Ðачальный Ð°Ð´Ñ€ÐµÑ Ð¾Ð¿Ð¸ÑÐ°Ñ‚ÐµÐ»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %04lx\n" -#: peigen.c:1153 pepigen.c:1153 pex64igen.c:1153 +#: peigen.c:1154 pepigen.c:1154 pex64igen.c:1154 #, c-format msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" msgstr "\tcode-base %08lx toc (загружаемый/реальный) %08lx/%08lx\n" -#: peigen.c:1161 pepigen.c:1161 pex64igen.c:1161 +#: peigen.c:1162 pepigen.c:1162 pex64igen.c:1162 #, c-format msgid "" "\n" @@ -3563,7 +5684,7 @@ "\n" "Ðет раздела reldata! ОпиÑатель функции не раÑшифрован.\n" -#: peigen.c:1166 pepigen.c:1166 pex64igen.c:1166 +#: peigen.c:1167 pepigen.c:1167 pex64igen.c:1167 #, c-format msgid "" "\n" @@ -3572,7 +5693,7 @@ "\n" "Таблицы импорта (обработан раздел %s)\n" -#: peigen.c:1169 pepigen.c:1169 pex64igen.c:1169 +#: peigen.c:1170 pepigen.c:1170 pex64igen.c:1170 #, c-format msgid "" " vma: Hint Time Forward DLL First\n" @@ -3581,7 +5702,7 @@ " vma: Таблица Отметка Цепочка Ð˜Ð¼Ñ ÐŸÐµÑ€Ð²Ñ‹Ð¹\n" " Указаний Времени ПереÑылки DLL Шлюз\n" -#: peigen.c:1217 pepigen.c:1217 pex64igen.c:1217 +#: peigen.c:1218 pepigen.c:1218 pex64igen.c:1218 #, c-format msgid "" "\n" @@ -3590,12 +5711,12 @@ "\n" "\tÐ˜Ð¼Ñ DLL: %s\n" -#: peigen.c:1228 pepigen.c:1228 pex64igen.c:1228 +#: peigen.c:1229 pepigen.c:1229 pex64igen.c:1229 #, c-format msgid "\tvma: Hint/Ord Member-Name Bound-To\n" msgstr "\tvma: Hint/Ord ИмÑ-Ñлемента ПривÑзан-к\n" -#: peigen.c:1253 pepigen.c:1253 pex64igen.c:1253 +#: peigen.c:1254 pepigen.c:1254 pex64igen.c:1254 #, c-format msgid "" "\n" @@ -3604,7 +5725,7 @@ "\n" "СущеÑтвует первый шлюз, но не найден раздел, в котором он ÑодержитÑÑ\n" -#: peigen.c:1418 pepigen.c:1418 pex64igen.c:1418 +#: peigen.c:1415 pepigen.c:1415 pex64igen.c:1415 #, c-format msgid "" "\n" @@ -3613,7 +5734,7 @@ "\n" "СущеÑтвует таблица ÑкÑпорта, но не найден раздел, в котором она ÑодержитÑÑ\n" -#: peigen.c:1427 pepigen.c:1427 pex64igen.c:1427 +#: peigen.c:1424 pepigen.c:1424 pex64igen.c:1424 #, c-format msgid "" "\n" @@ -3622,7 +5743,7 @@ "\n" "СущеÑтвует таблица ÑкÑпорта в %s, но она не помещаетÑÑ Ð² Ñтот раздел\n" -#: peigen.c:1433 pepigen.c:1433 pex64igen.c:1433 +#: peigen.c:1430 pepigen.c:1430 pex64igen.c:1430 #, c-format msgid "" "\n" @@ -3631,7 +5752,7 @@ "\n" "СущеÑтвует таблица ÑкÑпорта в %s по адреÑу 0x%lx\n" -#: peigen.c:1461 pepigen.c:1461 pex64igen.c:1461 +#: peigen.c:1458 pepigen.c:1458 pex64igen.c:1458 #, c-format msgid "" "\n" @@ -3642,67 +5763,67 @@ "Таблицы ÑкÑпорта (обработан раздел %s)\n" "\n" -#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 +#: peigen.c:1462 pepigen.c:1462 pex64igen.c:1462 #, c-format msgid "Export Flags \t\t\t%lx\n" msgstr "Флаги ÑкÑпорта \t\t\t%lx\n" -#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 +#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 #, c-format msgid "Time/Date stamp \t\t%lx\n" msgstr "Метка времени/даты \t\t%lx\n" -#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 +#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 #, c-format msgid "Major/Minor \t\t\t%d/%d\n" msgstr "Старший/Младший \t\t\t%d/%d\n" -#: peigen.c:1474 pepigen.c:1474 pex64igen.c:1474 +#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 #, c-format msgid "Name \t\t\t\t" msgstr "Ð˜Ð¼Ñ \t\t\t\t" -#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 +#: peigen.c:1477 pepigen.c:1477 pex64igen.c:1477 #, c-format msgid "Ordinal Base \t\t\t%ld\n" msgstr "Ðачальный порÑдковый номер \t\t\t%ld\n" -#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 +#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 #, c-format msgid "Number in:\n" msgstr "Ðомер в:\n" -#: peigen.c:1486 pepigen.c:1486 pex64igen.c:1486 +#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 #, c-format msgid "\tExport Address Table \t\t%08lx\n" msgstr "\tТаблица ÑкÑпортируемых адреÑов \t\t%08lx\n" -#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 +#: peigen.c:1487 pepigen.c:1487 pex64igen.c:1487 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" msgstr "\tТаблица [указателей имён/порÑдковых номеров]\t%08lx\n" -#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 +#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 #, c-format msgid "Table Addresses\n" msgstr "Таблица адреÑов\n" -#: peigen.c:1496 pepigen.c:1496 pex64igen.c:1496 +#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 #, c-format msgid "\tExport Address Table \t\t" msgstr "\tТаблица ÑкÑпортируемых адреÑов \t\t" -#: peigen.c:1501 pepigen.c:1501 pex64igen.c:1501 +#: peigen.c:1498 pepigen.c:1498 pex64igen.c:1498 #, c-format msgid "\tName Pointer Table \t\t" msgstr "\tТаблица указателей имён \t\t" -#: peigen.c:1506 pepigen.c:1506 pex64igen.c:1506 +#: peigen.c:1503 pepigen.c:1503 pex64igen.c:1503 #, c-format msgid "\tOrdinal Table \t\t\t" msgstr "\tТаблица порÑдковых номеров \t\t\t" -#: peigen.c:1520 pepigen.c:1520 pex64igen.c:1520 +#: peigen.c:1517 pepigen.c:1517 pex64igen.c:1517 #, c-format msgid "" "\n" @@ -3711,15 +5832,15 @@ "\n" "Таблица ÑкÑпортируемых адреÑов -- Ðачальный порÑдковый номер %ld\n" -#: peigen.c:1539 pepigen.c:1539 pex64igen.c:1539 +#: peigen.c:1536 pepigen.c:1536 pex64igen.c:1536 msgid "Forwarder RVA" msgstr "ПереадреÑуемый RVA" -#: peigen.c:1550 pepigen.c:1550 pex64igen.c:1550 +#: peigen.c:1547 pepigen.c:1547 pex64igen.c:1547 msgid "Export RVA" msgstr "ЭкÑпортируемый RVA" -#: peigen.c:1557 pepigen.c:1557 pex64igen.c:1557 +#: peigen.c:1554 pepigen.c:1554 pex64igen.c:1554 #, c-format msgid "" "\n" @@ -3728,28 +5849,18 @@ "\n" "Таблица [порÑдковых номеров/указателей имён]\n" -#: peigen.c:1617 peigen.c:1796 pepigen.c:1617 pepigen.c:1796 pex64igen.c:1617 -#: pex64igen.c:1796 +#: peigen.c:1614 peigen.c:1797 pepigen.c:1614 pepigen.c:1797 pex64igen.c:1614 +#: pex64igen.c:1797 #, c-format msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" msgstr "Внимание, размер раздела .pdata (%ld) не кратен %d\n" -#: peigen.c:1621 peigen.c:1800 pepigen.c:1621 pepigen.c:1800 pex64igen.c:1621 -#: pex64igen.c:1800 -#, c-format -msgid "" -"\n" -"The Function Table (interpreted .pdata section contents)\n" -msgstr "" -"\n" -"Таблица функций (обработан раздел .pdata)\n" - -#: peigen.c:1624 pepigen.c:1624 pex64igen.c:1624 +#: peigen.c:1621 pepigen.c:1621 pex64igen.c:1621 #, c-format msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" msgstr " vma:\t\t\tÐачальный Ð°Ð´Ñ€ÐµÑ ÐšÐ¾Ð½ÐµÑ‡Ð½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ Ð Ð°ÑÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ\n" -#: peigen.c:1626 pepigen.c:1626 pex64igen.c:1626 +#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 #, c-format msgid "" " vma:\t\tBegin End EH EH PrologEnd Exception\n" @@ -3758,22 +5869,22 @@ " vma:\t\tÐачальный Конечный EH EH ÐÐ´Ñ€ÐµÑ ÐœÐ°Ñка\n" " \t\tÐÐ´Ñ€ÐµÑ ÐÐ´Ñ€ÐµÑ ÐžÐ±Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ðº Данные КонцаПролога ИÑключениÑ\n" -#: peigen.c:1696 pepigen.c:1696 pex64igen.c:1696 +#: peigen.c:1697 pepigen.c:1697 pex64igen.c:1697 #, c-format msgid " Register save millicode" msgstr " Милликод ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ€ÐµÐ³Ð¸Ñтра" -#: peigen.c:1699 pepigen.c:1699 pex64igen.c:1699 +#: peigen.c:1700 pepigen.c:1700 pex64igen.c:1700 #, c-format msgid " Register restore millicode" msgstr " Милликод воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ€ÐµÐ³Ð¸Ñтра" -#: peigen.c:1702 pepigen.c:1702 pex64igen.c:1702 +#: peigen.c:1703 pepigen.c:1703 pex64igen.c:1703 #, c-format msgid " Glue code sequence" msgstr " ПоÑледовательноÑÑ‚ÑŒ ÑвÑзующего кода" -#: peigen.c:1802 pepigen.c:1802 pex64igen.c:1802 +#: peigen.c:1803 pepigen.c:1803 pex64igen.c:1803 #, c-format msgid "" " vma:\t\tBegin Prolog Function Flags Exception EH\n" @@ -3782,7 +5893,7 @@ " vma:\t\tÐачальный Длина Длина Флаги Обработчик EH\n" " \t\tÐÐ´Ñ€ÐµÑ ÐŸÑ€Ð¾Ð»Ð¾Ð³Ð° Функции 32b exc ИÑключений Данные\n" -#: peigen.c:1933 pepigen.c:1933 pex64igen.c:1933 +#: peigen.c:1929 pepigen.c:1929 pex64igen.c:1929 #, c-format msgid "" "\n" @@ -3793,7 +5904,7 @@ "\n" "Ðачало перемещений в PE-файле (обработан раздел .reloc)\n" -#: peigen.c:1963 pepigen.c:1963 pex64igen.c:1963 +#: peigen.c:1958 pepigen.c:1958 pex64igen.c:1958 #, c-format msgid "" "\n" @@ -3802,7 +5913,7 @@ "\n" "Виртуальный адреÑ: %08lx Размер блока %ld (0x%lx) ЧиÑло меÑтоположений %ld\n" -#: peigen.c:1976 pepigen.c:1976 pex64igen.c:1976 +#: peigen.c:1971 pepigen.c:1971 pex64igen.c:1971 #, c-format msgid "\treloc %4d offset %4x [%4lx] %s" msgstr "\tперемещение %4d Ñмещение %4x [%4lx] %s" @@ -3810,7 +5921,7 @@ #. The MS dumpbin program reportedly ands with 0xff0f before #. printing the characteristics field. Not sure why. No reason to #. emulate it here. -#: peigen.c:2015 pepigen.c:2015 pex64igen.c:2015 +#: peigen.c:2010 pepigen.c:2010 pex64igen.c:2010 #, c-format msgid "" "\n" @@ -3819,22 +5930,104 @@ "\n" "ХарактериÑтики 0x%x\n" -#: peigen.c:2289 pepigen.c:2289 pex64igen.c:2289 +#: peigen.c:2310 pepigen.c:2310 pex64igen.c:2310 msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing" msgstr "%B: невозможно заполнить DataDictionary[1], так как отÑутÑтвует .idata$2" -#: peigen.c:2307 pepigen.c:2307 pex64igen.c:2307 +#: peigen.c:2330 pepigen.c:2330 pex64igen.c:2330 msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing" msgstr "%B: невозможно заполнить DataDictionary[1], так как отÑутÑтвует .idata$4" -#: peigen.c:2326 pepigen.c:2326 pex64igen.c:2326 +#: peigen.c:2351 pepigen.c:2351 pex64igen.c:2351 msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing" msgstr "%B: невозможно заполнить DataDictionary[12], так как отÑутÑтвует .idata$5" -#: peigen.c:2344 pepigen.c:2344 pex64igen.c:2344 +#: peigen.c:2371 pepigen.c:2371 pex64igen.c:2371 msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing" msgstr "%B: невозможно заполнить DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)], так как отÑутÑтвует .idata$6" -#: peigen.c:2364 pepigen.c:2364 pex64igen.c:2364 +#: peigen.c:2413 pepigen.c:2413 pex64igen.c:2413 +msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing" +msgstr "%B: невозможно заполнить DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)], так как отÑутÑтвует .idata$6" + +#: peigen.c:2436 pepigen.c:2436 pex64igen.c:2436 msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing" msgstr "%B: невозможно заполнить DataDictionary[9], так как отÑутÑтвует __tls_used" + +#~ msgid "Can't Make it a Short Jump" +#~ msgstr "Ðевозможно выполнить короткий переход (Short Jump)" + +#~ msgid "Exceeds Long Jump Range" +#~ msgstr "Превышен диапазон длинного перехода (Long Jump)" + +#~ msgid "Absolute address Exceeds 16 bit Range" +#~ msgstr "ÐбÑолютный Ð°Ð´Ñ€ÐµÑ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ за 16-битный диапазон" + +#~ msgid "Absolute address Exceeds 8 bit Range" +#~ msgstr "ÐбÑолютный Ð°Ð´Ñ€ÐµÑ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ за 8-битный диапазон" + +#~ msgid "Unrecognized Reloc Type" +#~ msgstr "Ðе раÑпознан тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ (Reloc Type)" + +#~ msgid "corrupt or empty %s section in %B" +#~ msgstr "повреждённый или пуÑтой раздел %s в %B" + +#~ msgid "%s: invalid DSO for symbol `%s' definition" +#~ msgstr "%s: недопуÑтимый DSO Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñимвола `%s'" + +#~ msgid "%B: %A+0x%lx: jump to stub routine which is not jal" +#~ msgstr "%B: %A+0x%lx: переход в процедуру заглушки, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ не ÑвлÑетÑÑ jal (Jump And Link)" + +#~ msgid "bfd_make_section (%s) failed" +#~ msgstr "bfd_make_section (%s) завершилаÑÑŒ неудачно" + +#~ msgid "bfd_set_section_flags (%s, %x) failed" +#~ msgstr "bfd_set_section_flags (%s, %x) завершилаÑÑŒ неудачно" + +#~ msgid "Size mismatch section %s=%lx, %s=%lx" +#~ msgstr "ÐеÑовпадение размера раздела %s=%lx, %s=%lx" + +#~ msgid "failed to enter %s" +#~ msgstr "не удалоÑÑŒ войти %s" + +#~ msgid "No Mem !" +#~ msgstr "Ðет Mem !" + +#~ msgid "reserved STO cmd %d" +#~ msgstr "зарезервированный STO cmd %d" + +#~ msgid "reserved OPR cmd %d" +#~ msgstr "зарезервированный OPR cmd %d" + +#~ msgid "reserved CTL cmd %d" +#~ msgstr "зарезервированный CTL cmd %d" + +#~ msgid "reserved STC cmd %d" +#~ msgstr "зарезервированный STC cmd %d" + +#~ msgid "stack-from-image not implemented" +#~ msgstr "stack-from-image не реализован" + +#~ msgid "stack-entry-mask not fully implemented" +#~ msgstr "stack-entry-mask реализован не полноÑтью" + +#~ msgid "PASSMECH not fully implemented" +#~ msgstr "PASSMECH реализован не полноÑтью" + +#~ msgid "stack-local-symbol not fully implemented" +#~ msgstr "stack-local-symbol реализован не полноÑтью" + +#~ msgid "stack-literal not fully implemented" +#~ msgstr "stack-literal реализован не полноÑтью" + +#~ msgid "stack-local-symbol-entry-point-mask not fully implemented" +#~ msgstr "stack-local-symbol-entry-point-mask реализован не полноÑтью" + +#~ msgid "%s: not fully implemented" +#~ msgstr "%s: реализовано не полноÑтью" + +#~ msgid "obj code %d not found" +#~ msgstr "объектный код %d не найден" + +#~ msgid "Reloc size error in section %s" +#~ msgstr "Ошибка размера Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² разделе %s" Binary files /tmp/wqm3boRCeK/crash-5.1.6/=unpacked-tar1=/bfd/po/vi.gmo and /tmp/OqnMAz5teu/crash-6.1.6/=unpacked-tar1=/bfd/po/vi.gmo differ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/vi.po crash-6.1.6/=unpacked-tar1=/bfd/po/vi.po --- crash-5.1.6/=unpacked-tar1=/bfd/po/vi.po 2008-09-29 09:48:31.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/vi.po 2010-04-22 14:37:00.000000000 +0000 @@ -1,22 +1,22 @@ # Vietnamese translation for BFD. -# Copyright © 2008 Free Software Foundation, Inc. +# Copyright © 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the binutils package. # Phần VÄ©nh Thịnh , 2005. -# Clytie Siddall , 2008. +# Clytie Siddall , 2008-2010. # msgid "" msgstr "" -"Project-Id-Version: bfd 2.18.90\n" +"Project-Id-Version: bfd 2.20.1\n" "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" -"POT-Creation-Date: 2008-09-09 15:56+0930\n" -"PO-Revision-Date: 2008-09-23 22:51+0930\n" +"POT-Creation-Date: 2010-03-03 15:03+0100\n" +"PO-Revision-Date: 2010-04-22 23:21+0930\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: LocFactoryEditor 1.7b3\n" +"X-Generator: LocFactoryEditor 1.8\n" #: aout-adobe.c:127 msgid "%B: Unknown section type in a.out.adobe file: %x\n" @@ -35,151 +35,151 @@ msgid "%B: Bad relocation record imported: %d" msgstr "%B: Äã nhập mục ghi định vị lại sai: %d" -#: aoutx.h:1268 aoutx.h:1604 +#: aoutx.h:1271 aoutx.h:1609 #, c-format msgid "%s: can not represent section `%s' in a.out object file format" msgstr "%s: không thể đại diện phân « %s » trong định dạng tập tin đối tượng a.out" -#: aoutx.h:1570 +#: aoutx.h:1575 #, c-format msgid "%s: can not represent section for symbol `%s' in a.out object file format" msgstr "%s: không thể đại diện phân cho ký hiệu « %s » trong định dạng tập tin đối tượng a.ou" -#: aoutx.h:1572 +#: aoutx.h:1577 msgid "*unknown*" msgstr "• không rõ •" -#: aoutx.h:3989 aoutx.h:4315 +#: aoutx.h:3997 aoutx.h:4323 msgid "%P: %B: unexpected relocation type\n" msgstr "%P: %B: kiểu định vị lại bất thÆ°á»ng\n" -#: aoutx.h:5349 +#: aoutx.h:5358 #, c-format msgid "%s: relocatable link from %s to %s not supported" msgstr "%s: không há»— trợ liên kết có khả năng định vị lại từ %s sang %s" -#: archive.c:2046 +#: archive.c:2057 msgid "Warning: writing archive was slow: rewriting timestamp\n" msgstr "Cảnh báo : ghi kho quá chậm nên Ä‘ang ghi lại nhãn thá»i gian\n" -#: archive.c:2309 +#: archive.c:2344 msgid "Reading archive file mod timestamp" msgstr "Äang Ä‘á»c nhãn thá»i gian sá»­a đổi tập tin kho" -#: archive.c:2333 +#: archive.c:2368 msgid "Writing updated armap timestamp" msgstr "Äang ghi nhãn thá»i gian armap đã cập nhật" -#: bfd.c:368 +#: bfd.c:376 msgid "No error" msgstr "Không có lá»—i" -#: bfd.c:369 +#: bfd.c:377 msgid "System call error" msgstr "Lá»—i gá»i hệ thống" -#: bfd.c:370 +#: bfd.c:378 msgid "Invalid bfd target" msgstr "Äích bfd không hợp lệ" -#: bfd.c:371 +#: bfd.c:379 msgid "File in wrong format" msgstr "Tập tin có định dạng không đúng" -#: bfd.c:372 +#: bfd.c:380 msgid "Archive object file in wrong format" msgstr "Tập tin đối tượng kho có định dạng không đúng" -#: bfd.c:373 +#: bfd.c:381 msgid "Invalid operation" msgstr "Thao tác không hợp lệ" -#: bfd.c:374 +#: bfd.c:382 msgid "Memory exhausted" msgstr "Cạn bá»™ nhá»›" -#: bfd.c:375 +#: bfd.c:383 msgid "No symbols" msgstr "Không có ký hiệu" -#: bfd.c:376 +#: bfd.c:384 msgid "Archive has no index; run ranlib to add one" msgstr "Kho không có chỉ mục: hãy chạy ranlib để thêm" -#: bfd.c:377 +#: bfd.c:385 msgid "No more archived files" msgstr "Không còn có tập tin đã lÆ°u trữ nào nữa" -#: bfd.c:378 +#: bfd.c:386 msgid "Malformed archive" msgstr "Kho dạng sai" -#: bfd.c:379 +#: bfd.c:387 msgid "File format not recognized" msgstr "Không nhận ra định dạng tập tin" -#: bfd.c:380 +#: bfd.c:388 msgid "File format is ambiguous" msgstr "Äịnh dạng tập tin mÆ¡ hồ" -#: bfd.c:381 +#: bfd.c:389 msgid "Section has no contents" msgstr "Phần không có ná»™i dung" -#: bfd.c:382 +#: bfd.c:390 msgid "Nonrepresentable section on output" msgstr "Kết xuất có phần không thể đại diện được" -#: bfd.c:383 +#: bfd.c:391 msgid "Symbol needs debug section which does not exist" msgstr "Ký hiệu cần phần gỡ lá»—i mà không tồn tại" -#: bfd.c:384 +#: bfd.c:392 msgid "Bad value" msgstr "Giá trị sai" -#: bfd.c:385 +#: bfd.c:393 msgid "File truncated" msgstr "Tập tin bị cắt ngắn" -#: bfd.c:386 +#: bfd.c:394 msgid "File too big" msgstr "Tập tin quá lá»›n" -#: bfd.c:387 +#: bfd.c:395 #, c-format msgid "Error reading %s: %s" msgstr "Gặp lá»—i khi Ä‘á»c %s: %s" -#: bfd.c:388 +#: bfd.c:396 msgid "#" msgstr "#" -#: bfd.c:912 +#: bfd.c:920 #, c-format msgid "BFD %s assertion fail %s:%d" msgstr "BFD %s khắng định bị lá»—i %s:%d" -#: bfd.c:924 +#: bfd.c:932 #, c-format msgid "BFD %s internal error, aborting at %s line %d in %s\n" msgstr "BFD %s lá»—i ná»™i bá»™ nên hủy bá» tại %s dòng %d trong %s\n" -#: bfd.c:928 +#: bfd.c:936 #, c-format msgid "BFD %s internal error, aborting at %s line %d\n" msgstr "BFD %s lá»—i ná»™i bá»™ nên hủy bá» tại %s dòng %d\n" -#: bfd.c:930 +#: bfd.c:938 msgid "Please report this bug.\n" msgstr "Hãy thông báo lá»—i này.\n" -#: bfdwin.c:208 +#: bfdwin.c:206 #, c-format msgid "not mapping: data=%lx mapped=%d\n" msgstr "không Ä‘ang ánh xạ: dữ liệu=%lx đã ánh xạ=%d\n" -#: bfdwin.c:211 +#: bfdwin.c:209 #, c-format msgid "not mapping: env var not set\n" msgstr "không Ä‘ang ánh xạ: chÆ°a đặt biến môi trÆ°á»ng\n" @@ -189,7 +189,13 @@ msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." msgstr "Cảnh báo : Ä‘ang ghi phần « %s » vào khoảng bù tập tin rất lá»›n (tức là âm) 0x%lx." -#: cache.c:222 +#: bout.c:1150 elf-m10300.c:2078 elf32-avr.c:1639 elf32-frv.c:5743 +#: elfxx-sparc.c:2456 reloc.c:5386 reloc16.c:162 vms.c:1918 elf32-ia64.c:788 +#: elf64-ia64.c:788 +msgid "%P%F: --relax and -r may not be used together\n" +msgstr "%P%F: không thể dùng vá»›i nhau hai tuỳ chá»n « --relax » và « -r »\n" + +#: cache.c:226 msgid "reopening %B: %s\n" msgstr "Ä‘ang mở lại %B: %s\n" @@ -221,8 +227,8 @@ msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW" msgstr "%B: định vị lại không được há»— trợ : ALPHA_R_GPRELLOW" -#: coff-alpha.c:1574 elf32-m32r.c:2487 elf64-alpha.c:3970 elf64-alpha.c:4125 -#: elf32-ia64.c:4465 elf64-ia64.c:4465 +#: coff-alpha.c:1574 elf32-m32r.c:2477 elf64-alpha.c:3943 elf64-alpha.c:4098 +#: elf32-ia64.c:4462 elf64-ia64.c:4462 msgid "%B: unknown relocation type %d" msgstr "%B: không rõ kiểu định vị lại %d" @@ -236,7 +242,7 @@ msgid "%B: unable to find ARM glue '%s' for `%s'" msgstr "%B: không tìm thấy keo hồ ARM « %s » cho « %s »" -#: coff-arm.c:1370 elf32-arm.c:5453 +#: coff-arm.c:1370 elf32-arm.c:6372 #, c-format msgid "" "%B(%s): warning: interworking not enabled.\n" @@ -256,7 +262,7 @@ " lần xuất hiện đầu tiên: %B: gá»i thumb tá»›i arm\n" " coi nhÆ° liên kết lại vá»›i « --support-old-code » được bật" -#: coff-arm.c:1755 coff-tic80.c:695 cofflink.c:3018 +#: coff-arm.c:1755 coff-tic80.c:695 cofflink.c:3030 msgid "%B: bad reloc address 0x%lx in section `%A'" msgstr "%B: địa chỉ định vị lại sai 0x%lx trong phần « %A »" @@ -266,35 +272,35 @@ #: coff-arm.c:2211 #, c-format -msgid "ERROR: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" -msgstr "Lá»–I: %B được biên dịch cho APCS-%d, còn %B được biên dịch cho APCS-%d" +msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d" +msgstr "lá»—i: %B được biên dịch cho APCS-%d, còn %B được biên dịch cho APCS-%d" -#: coff-arm.c:2227 elf32-arm.c:8563 +#: coff-arm.c:2227 elf32-arm.c:10334 #, c-format -msgid "ERROR: %B passes floats in float registers, whereas %B passes them in integer registers" -msgstr "Lá»–I: %B gá»­i trôi qua trong thanh ghi trôi, còn %B gá»­i chúng qua trong thanh ghi số nguyên" +msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers" +msgstr "lá»—i: %B gá»­i trôi qua trong thanh ghi trôi, còn %B gá»­i chúng qua trong thanh ghi số nguyên" -#: coff-arm.c:2230 elf32-arm.c:8567 +#: coff-arm.c:2230 elf32-arm.c:10338 #, c-format -msgid "ERROR: %B passes floats in integer registers, whereas %B passes them in float registers" -msgstr "Lá»–I: %B gá»­i trôi qua trong thanh ghi số nguyên, còn %B gá»­i chúng qua trong thanh ghi trôi" +msgid "error: %B passes floats in integer registers, whereas %B passes them in float registers" +msgstr "lá»—i: %B gá»­i trôi qua trong thanh ghi số nguyên, còn %B gá»­i chúng qua trong thanh ghi trôi" #: coff-arm.c:2244 #, c-format -msgid "ERROR: %B is compiled as position independent code, whereas target %B is absolute position" -msgstr "Lá»–I: %B được biên dịch nhÆ° mã không phụ thuá»™c vào vị trí, còn %B là vị trí tuyệt đối" +msgid "error: %B is compiled as position independent code, whereas target %B is absolute position" +msgstr "lá»—i: %B được biên dịch nhÆ° mã không phụ thuá»™c vào vị trí, còn %B là vị trí tuyệt đối" #: coff-arm.c:2247 #, c-format -msgid "ERROR: %B is compiled as absolute position code, whereas target %B is position independent" -msgstr "Lá»–I: %B được biên dịch nhÆ° mã vị trí tuyệt đối, còn %B không phụ thuá»™c vào vị trí" +msgid "error: %B is compiled as absolute position code, whereas target %B is position independent" +msgstr "lá»—i: %B được biên dịch nhÆ° mã vị trí tuyệt đối, còn %B không phụ thuá»™c vào vị trí" -#: coff-arm.c:2275 elf32-arm.c:8632 +#: coff-arm.c:2275 elf32-arm.c:10403 #, c-format msgid "Warning: %B supports interworking, whereas %B does not" msgstr "Cảnh báo : %B há»— trợ ảnh hưởng lẫn nhau, còn %B thì không" -#: coff-arm.c:2278 elf32-arm.c:8638 +#: coff-arm.c:2278 elf32-arm.c:10409 #, c-format msgid "Warning: %B does not support interworking, whereas %B does" msgstr "Cảnh báo : %B không há»— trợ ảnh hưởng lẫn nhau, còn %B thì có" @@ -304,7 +310,7 @@ msgid "private flags = %x:" msgstr "các cá» riêng = %x:" -#: coff-arm.c:2310 elf32-arm.c:8689 +#: coff-arm.c:2310 elf32-arm.c:10460 #, c-format msgid " [floats passed in float registers]" msgstr " [các trôi được gá»­i qua trong thanh ghi trôi]" @@ -314,7 +320,7 @@ msgid " [floats passed in integer registers]" msgstr " [các trôi được gá»­i qua trong thanh ghi số nguyên]" -#: coff-arm.c:2315 elf32-arm.c:8692 +#: coff-arm.c:2315 elf32-arm.c:10463 #, c-format msgid " [position independent]" msgstr " [không phụ thuá»™c vào vị trí]" @@ -339,12 +345,12 @@ msgid " [interworking not supported]" msgstr " [không há»— trợ ảnh hưởng lẫn nhau]" -#: coff-arm.c:2371 elf32-arm.c:8050 +#: coff-arm.c:2371 elf32-arm.c:9367 #, c-format msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking" msgstr "Cảnh báo : không Ä‘ang đặt cỠảnh hưởng lẫn nhau của %B vì nó đã được xác định là không ảnh hưởng lẫn nhau" -#: coff-arm.c:2375 elf32-arm.c:8054 +#: coff-arm.c:2375 elf32-arm.c:9371 #, c-format msgid "Warning: Clearing the interworking flag of %B due to outside request" msgstr "Cảnh báo : Äang xoá cỠảnh hưởng lẫn nhau của %B theo yêu cầu bên ngoài" @@ -359,7 +365,7 @@ msgid "Relocation `%s' not yet implemented\n" msgstr "ChÆ°a thá»±c hiện định vị lại « %s »\n" -#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:4975 +#: coff-i860.c:605 coff-tic54x.c:398 coffcode.h:5143 msgid "%B: warning: illegal symbol index %ld in relocs" msgstr "%B: cảnh báo : chỉ mục ký hiệu cấm %ld trong định vị lại" @@ -367,7 +373,7 @@ msgid "uncertain calling convention for non-COFF symbol" msgstr "quy Æ°á»›c gá»i không chắc chắn cho ký hiệu khác COFF" -#: coff-m68k.c:506 elf32-bfin.c:5510 elf32-m68k.c:3938 +#: coff-m68k.c:506 elf32-bfin.c:5691 elf32-cr16.c:2965 elf32-m68k.c:4615 msgid "unsupported reloc type" msgstr "kiểu định vị lại không được há»— trợ" @@ -391,8 +397,8 @@ msgid "Unrecognized Reloc Type" msgstr "Kiểu định vị lại không được nhận ra" -#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:345 elf64-mips.c:1991 -#: elfn32-mips.c:1832 +#: coff-mips.c:688 elf32-mips.c:1014 elf32-score.c:441 elf32-score7.c:341 +#: elf64-mips.c:2018 elfn32-mips.c:1832 msgid "GP relative relocation when _gp not defined" msgstr "Có định vị lại tÆ°Æ¡ng đối GP khi chÆ°a xác định _gp" @@ -400,17 +406,17 @@ msgid "Unrecognized reloc" msgstr "Äịnh vị lại không được nhận ra" -#: coff-rs6000.c:2803 +#: coff-rs6000.c:2789 #, c-format msgid "%s: unsupported relocation type 0x%02x" msgstr "%s: kiểu định vị lại không được há»— trợ 0x%02x" -#: coff-rs6000.c:2896 +#: coff-rs6000.c:2882 #, c-format msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" msgstr "%s: định vị lại TOC tại 0x%x tá»›i ký hiệu « %s » không có mục nhập TOC" -#: coff-rs6000.c:3628 coff64-rs6000.c:2130 +#: coff-rs6000.c:3648 coff64-rs6000.c:2170 msgid "%B: symbol `%s' has unrecognized smclas %d" msgstr "%B: ký tá»± « %s » có smclas không nhận ra %d" @@ -429,139 +435,143 @@ msgid "ignoring reloc %s\n" msgstr "Äang lá» Ä‘i định vị lại %s\n" -#: coffcode.h:850 +#: coffcode.h:960 msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'" msgstr "%B: cảnh báo : ký hiệu COMDAT « %s » không tÆ°Æ¡ng ứng vÆ¡i tên phần « %s »" #. Generate a warning message rather using the 'unhandled' #. variable as this will allow some .sys files generate by #. other toolchains to be processed. See bugzilla issue 196. -#: coffcode.h:1062 +#: coffcode.h:1176 msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s" msgstr "%B: Cảnh báo: Äang lá» Ä‘i cá» của phần IMAGE_SCN_MEM_NOT_PAGED trong phần %s" -#: coffcode.h:1117 +#: coffcode.h:1240 msgid "%B (%s): Section flag %s (0x%x) ignored" msgstr "%B (%s): Äã lá» Ä‘i cá» của phần %s (0x%x)" -#: coffcode.h:2244 +#: coffcode.h:2382 #, c-format msgid "Unrecognized TI COFF target id '0x%x'" msgstr "Không nhận ra mã số đích TI COFF « 0x%x »" -#: coffcode.h:2559 +#: coffcode.h:2696 msgid "%B: reloc against a non-existant symbol index: %ld" msgstr "%B: định vị lại so vá»›i má»™t chỉ mục ký hiệu không tồn tại: %ld" -#: coffcode.h:4309 +#: coffcode.h:3669 +msgid "%B: section %s: string table overflow at offset %ld" +msgstr "%B: phần %s: tràn bảng chuá»—i ở hiệu %ld" + +#: coffcode.h:4477 msgid "%B: warning: line number table read failed" msgstr "%B: Cảnh bảo : lá»—i Ä‘á»c bảng số thứ tá»± dòng" -#: coffcode.h:4339 +#: coffcode.h:4507 msgid "%B: warning: illegal symbol index %ld in line numbers" msgstr "%B: cảnh báo : chỉ mục ký hiệu cấm %ld trong các số thứ tá»± dòng" -#: coffcode.h:4353 +#: coffcode.h:4521 msgid "%B: warning: duplicate line number information for `%s'" msgstr "%B: cảnh báo : thông tin số thứ tá»± dòng trùng đối vá»›i « %s »" -#: coffcode.h:4744 +#: coffcode.h:4912 msgid "%B: Unrecognized storage class %d for %s symbol `%s'" msgstr "%B: Không nhận ra hạng lÆ°u trữ %d cho ký hiệu %s « %s »" -#: coffcode.h:4870 +#: coffcode.h:5038 msgid "warning: %B: local symbol `%s' has no section" msgstr "cảnh báo : %B: ký hiệu cục bá»™ « %s » không có phần Ä‘oạn" -#: coffcode.h:5013 +#: coffcode.h:5181 msgid "%B: illegal relocation type %d at address 0x%lx" msgstr "%B: kiểu định vị lại cấm %d ở địa chỉ 0x%lx" -#: coffgen.c:1518 +#: coffgen.c:1573 msgid "%B: bad string table size %lu" msgstr "%B: kích cỡ bảng chuá»—i sai %lu" -#: cofflink.c:513 elflink.c:4218 +#: cofflink.c:513 elflink.c:4308 msgid "Warning: type of symbol `%s' changed from %d to %d in %B" msgstr "Cảnh báo : kiểu ký hiệu « %s » bị thay đổi từ %d thành %d trong %B" -#: cofflink.c:2296 +#: cofflink.c:2308 msgid "%B: relocs in section `%A', but it has no contents" msgstr "%B: định vị lại trong phần « %A », nhÆ°ng nó không có ná»™i dung" -#: cofflink.c:2627 coffswap.h:824 +#: cofflink.c:2639 coffswap.h:826 #, c-format msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" msgstr "%s: %s: tràn định vị lại: 0x%lx > 0xffff" -#: cofflink.c:2636 coffswap.h:810 +#: cofflink.c:2648 coffswap.h:812 #, c-format msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" msgstr "%s: cảnh báo : %s: tràn số thứ tá»± dòng: 0x%lx > 0xffff" #: cpu-arm.c:189 cpu-arm.c:200 -msgid "ERROR: %B is compiled for the EP9312, whereas %B is compiled for XScale" -msgstr "Lá»–I: %B được biên dịch cho EP9312, còn %B được biên dịch cho XScale" +msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale" +msgstr "lá»—i: %B được biên dịch cho EP9312, còn %B được biên dịch cho XScale" #: cpu-arm.c:332 #, c-format msgid "warning: unable to update contents of %s section in %s" msgstr "cảnh báo : không thể cập nhật ná»™i dung của phần %s trong %s" -#: dwarf2.c:424 +#: dwarf2.c:436 #, c-format msgid "Dwarf Error: Can't find %s section." msgstr "Lá»—i Dwarf: không tìm thấy phần %s." -#: dwarf2.c:452 +#: dwarf2.c:463 #, c-format msgid "Dwarf Error: unable to decompress %s section." msgstr "Lá»—i Dwarf: không thể giải nén phần %s." -#: dwarf2.c:462 +#: dwarf2.c:474 #, c-format msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)." msgstr "Lá»—i Dwarf: Khoảng bù dòng (%lu) lá»›n hÆ¡n hoặc bằng kích cỡ %s (%lu)." -#: dwarf2.c:849 +#: dwarf2.c:871 #, c-format msgid "Dwarf Error: Invalid or unhandled FORM value: %u." msgstr "Lá»—i Dwarf: Giá trị FORM sai hoặc chÆ°a được xá»­ lý: %u." -#: dwarf2.c:1063 +#: dwarf2.c:1085 msgid "Dwarf Error: mangled line number section (bad file number)." msgstr "Lá»—i Dwarf: phần số thứ tá»± dòng đã rối (số thứ tá»± tập tin sai)." -#: dwarf2.c:1393 +#: dwarf2.c:1419 msgid "Dwarf Error: mangled line number section." msgstr "Lá»—i Dwarf: phần số thứ tá»± dòng đã rối." -#: dwarf2.c:1726 dwarf2.c:1842 dwarf2.c:2114 +#: dwarf2.c:1698 dwarf2.c:1806 dwarf2.c:2078 #, c-format msgid "Dwarf Error: Could not find abbrev number %u." msgstr "Lá»—i Dwarf: Không tìm thấy số viết tắt %u." -#: dwarf2.c:2075 +#: dwarf2.c:2039 #, c-format -msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information." -msgstr "Lá»—i Dwarf: tìm thấy dwarf phiên bản « %u », nhÆ°ng trình Ä‘á»c này chỉ Ä‘iá»u khiển thông tin của phiên bản 2." +msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 and 3 information." +msgstr "Lá»—i Dwarf: tìm thấy dwarf phiên bản « %u », nhÆ°ng trình Ä‘á»c này chỉ Ä‘iá»u khiển thông tin của phiên bản 2 và 3." -#: dwarf2.c:2082 +#: dwarf2.c:2046 #, c-format msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'." msgstr "Lá»—i Dwarf: tìm thấy kích cỡ địa chỉ « %u », nhÆ°ng trình Ä‘á»c này không Ä‘iá»u khiển được kích cỡ lá»›n hÆ¡n « %u »." -#: dwarf2.c:2105 +#: dwarf2.c:2069 #, c-format msgid "Dwarf Error: Bad abbrev number: %u." msgstr "Lá»—i Dwarf: Số viết tắt sai: %u." -#: ecoff.c:1227 +#: ecoff.c:1238 #, c-format msgid "Unknown basic type %d" msgstr "Không rõ kiểu cÆ¡ bản %d" -#: ecoff.c:1484 +#: ecoff.c:1495 #, c-format msgid "" "\n" @@ -570,7 +580,7 @@ "\n" " Ký hiệu End+1: %ld" -#: ecoff.c:1491 ecoff.c:1494 +#: ecoff.c:1502 ecoff.c:1505 #, c-format msgid "" "\n" @@ -579,7 +589,7 @@ "\n" " Ký hiệu đầu tiên: %ld" -#: ecoff.c:1506 +#: ecoff.c:1517 #, c-format msgid "" "\n" @@ -588,7 +598,7 @@ "\n" " Ký hiệu End+1: %-7ld Kiểu : %s" -#: ecoff.c:1513 +#: ecoff.c:1524 #, c-format msgid "" "\n" @@ -597,7 +607,7 @@ "\n" " Ký hiệu cục bá»™ : %ld" -#: ecoff.c:1521 +#: ecoff.c:1532 #, c-format msgid "" "\n" @@ -606,7 +616,7 @@ "\n" " cấu trúc; ký hiệu End+1: %ld" -#: ecoff.c:1526 +#: ecoff.c:1537 #, c-format msgid "" "\n" @@ -615,7 +625,7 @@ "\n" " kết hợp; ký hiệu End+1: %ld" -#: ecoff.c:1531 +#: ecoff.c:1542 #, c-format msgid "" "\n" @@ -624,7 +634,7 @@ "\n" " đếm; ký hiệu End+1: %ld" -#: ecoff.c:1537 +#: ecoff.c:1548 #, c-format msgid "" "\n" @@ -633,119 +643,124 @@ "\n" " Kiểu : %s" -#: elf-attrs.c:582 -msgid "ERROR: %B: Must be processed by '%s' toolchain" -msgstr "Lá»–I: %B: Phải được dãy công cụ « %s » xá»­ lý" - -#: elf-attrs.c:602 elf-attrs.c:621 -msgid "ERROR: %B: Incompatible object tag '%s':%d" -msgstr "Lá»–I: %B: Thẻ đối tượng không tÆ°Æ¡ng thích « %s »:%s" +#: elf-attrs.c:567 +msgid "error: %B: Must be processed by '%s' toolchain" +msgstr "lá»—i: %B: Phải được dãy công cụ « %s » xá»­ lý" + +#: elf-attrs.c:575 +msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'" +msgstr "lá»—i: %B: thẻ đối tượng « %d, %s » không tÆ°Æ¡ng thích vá»›i thẻ « %d, %s »" -#: elf-eh-frame.c:866 +#: elf-eh-frame.c:885 msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n" msgstr "%P: gặp lá»—i trong %B(%A); sẽ không tạo bảng .eh_frame_hdr nào.\n" -#: elf-eh-frame.c:1102 +#: elf-eh-frame.c:1123 msgid "%P: fde encoding in %B(%A) prevents .eh_frame_hdr table being created.\n" msgstr "%P: biên mã fde trong %B(%A) thì ngăn cản tạo bảng .eh_frame_hdr.\n" -#: elf-hppa.h:2241 elf-m10300.c:1546 elf32-arm.c:7954 elf32-i386.c:3582 -#: elf32-m32r.c:2598 elf32-m68k.c:3516 elf32-ppc.c:7223 elf32-s390.c:3058 -#: elf32-sh.c:3438 elf32-xtensa.c:3021 elf64-ppc.c:11528 elf64-s390.c:3019 -#: elf64-sh64.c:1648 elf64-x86-64.c:3239 elfxx-sparc.c:3336 -msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" -msgstr "%B(%A+0x%lx): định vị lại không thể giải quyết %s đối vá»›i ký hiệu « %s »" - -#: elf-hppa.h:2266 elf-hppa.h:2280 -msgid "%B(%A): warning: unresolvable relocation against symbol `%s'" -msgstr "%B(%A): cảnh báo : định vị lại không thể giải quyết được so vá»›i ký hiệu « %s »" +#: elf-ifunc.c:179 +msgid "%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%B' can not be used when making an executable; recompile with -fPIE and relink with -pie\n" +msgstr "%F%P: ký hiệu STT_GNU_IFUNC Ä‘á»™ng « %s » vá»›i tình trạng chất lượng con trá» trong « %B » thì không dùng được khi tạo bản thá»±c thi; hãy biên dịch lại vá»›i « -fPIE » và liên kết lại vá»›i « -pie »\n" -#: elf-m10200.c:456 elf-m10300.c:1609 elf32-avr.c:1250 elf32-bfin.c:3214 -#: elf32-cr16.c:959 elf32-cr16c.c:790 elf32-cris.c:1538 elf32-crx.c:933 +#: elf-m10200.c:456 elf-m10300.c:1575 elf32-avr.c:1251 elf32-bfin.c:3204 +#: elf32-cr16.c:1517 elf32-cr16c.c:790 elf32-cris.c:2084 elf32-crx.c:933 #: elf32-d10v.c:516 elf32-fr30.c:616 elf32-frv.c:4114 elf32-h8300.c:516 -#: elf32-i860.c:1218 elf32-ip2k.c:1499 elf32-iq2000.c:691 elf32-m32c.c:560 -#: elf32-m32r.c:3124 elf32-m68hc1x.c:1135 elf32-mep.c:541 elf32-msp430.c:493 -#: elf32-mt.c:402 elf32-openrisc.c:411 elf32-score.c:2451 elf32-spu.c:4132 -#: elf32-v850.c:1703 elf32-xstormy16.c:948 elf64-mmix.c:1533 +#: elf32-i860.c:1218 elf32-ip2k.c:1499 elf32-iq2000.c:691 elf32-lm32.c:1171 +#: elf32-m32c.c:560 elf32-m32r.c:3102 elf32-m68hc1x.c:1136 elf32-mep.c:541 +#: elf32-microblaze.c:1226 elf32-moxie.c:291 elf32-msp430.c:493 elf32-mt.c:402 +#: elf32-openrisc.c:411 elf32-score.c:2752 elf32-score7.c:2591 +#: elf32-spu.c:5047 elf32-v850.c:1701 elf32-xstormy16.c:948 elf64-mmix.c:1533 msgid "internal error: out of range error" msgstr "lá»—i ná»™i bá»™ : lá»—i ở ngoại phạm vi" -#: elf-m10200.c:460 elf-m10300.c:1613 elf32-avr.c:1254 elf32-bfin.c:3218 -#: elf32-cr16.c:963 elf32-cr16c.c:794 elf32-cris.c:1542 elf32-crx.c:937 +#: elf-m10200.c:460 elf-m10300.c:1579 elf32-avr.c:1255 elf32-bfin.c:3208 +#: elf32-cr16.c:1521 elf32-cr16c.c:794 elf32-cris.c:2088 elf32-crx.c:937 #: elf32-d10v.c:520 elf32-fr30.c:620 elf32-frv.c:4118 elf32-h8300.c:520 -#: elf32-i860.c:1222 elf32-iq2000.c:695 elf32-m32c.c:564 elf32-m32r.c:3128 -#: elf32-m68hc1x.c:1139 elf32-mep.c:545 elf32-msp430.c:497 -#: elf32-openrisc.c:415 elf32-score.c:2455 elf32-spu.c:4136 elf32-v850.c:1707 -#: elf32-xstormy16.c:952 elf64-mmix.c:1537 elfxx-mips.c:9065 +#: elf32-i860.c:1222 elf32-iq2000.c:695 elf32-lm32.c:1175 elf32-m32c.c:564 +#: elf32-m32r.c:3106 elf32-m68hc1x.c:1140 elf32-mep.c:545 +#: elf32-microblaze.c:1230 elf32-moxie.c:295 elf32-msp430.c:497 +#: elf32-openrisc.c:415 elf32-score.c:2756 elf32-score7.c:2595 +#: elf32-spu.c:5051 elf32-v850.c:1705 elf32-xstormy16.c:952 elf64-mmix.c:1537 +#: elfxx-mips.c:9103 msgid "internal error: unsupported relocation error" msgstr "lá»—i ná»™i bá»™ : lá»—i định vị lại không được há»— trợ" -#: elf-m10200.c:464 elf32-cr16.c:967 elf32-cr16c.c:798 elf32-crx.c:941 -#: elf32-d10v.c:524 elf32-h8300.c:524 elf32-m32r.c:3132 elf32-m68hc1x.c:1143 -#: elf32-score.c:2459 elf32-spu.c:4140 +#: elf-m10200.c:464 elf32-cr16.c:1525 elf32-cr16c.c:798 elf32-crx.c:941 +#: elf32-d10v.c:524 elf32-h8300.c:524 elf32-lm32.c:1179 elf32-m32r.c:3110 +#: elf32-m68hc1x.c:1144 elf32-microblaze.c:1234 elf32-score.c:2760 +#: elf32-score7.c:2599 elf32-spu.c:5055 msgid "internal error: dangerous error" msgstr "lá»—i ná»™i bá»™ : lá»—i nguy hiểm" -#: elf-m10200.c:468 elf-m10300.c:1626 elf32-avr.c:1262 elf32-bfin.c:3226 -#: elf32-cr16.c:971 elf32-cr16c.c:802 elf32-cris.c:1550 elf32-crx.c:945 +#: elf-m10200.c:468 elf-m10300.c:1592 elf32-avr.c:1263 elf32-bfin.c:3216 +#: elf32-cr16.c:1529 elf32-cr16c.c:802 elf32-cris.c:2096 elf32-crx.c:945 #: elf32-d10v.c:528 elf32-fr30.c:628 elf32-frv.c:4126 elf32-h8300.c:528 -#: elf32-i860.c:1230 elf32-ip2k.c:1514 elf32-iq2000.c:703 elf32-m32c.c:572 -#: elf32-m32r.c:3136 elf32-m68hc1x.c:1147 elf32-mep.c:553 elf32-msp430.c:505 -#: elf32-mt.c:410 elf32-openrisc.c:423 elf32-score.c:2463 elf32-spu.c:4144 -#: elf32-v850.c:1727 elf32-xstormy16.c:960 elf64-mmix.c:1545 +#: elf32-i860.c:1230 elf32-ip2k.c:1514 elf32-iq2000.c:703 elf32-lm32.c:1183 +#: elf32-m32c.c:572 elf32-m32r.c:3114 elf32-m68hc1x.c:1148 elf32-mep.c:553 +#: elf32-microblaze.c:1238 elf32-moxie.c:303 elf32-msp430.c:505 elf32-mt.c:410 +#: elf32-openrisc.c:423 elf32-score.c:2769 elf32-score7.c:2603 +#: elf32-spu.c:5059 elf32-v850.c:1725 elf32-xstormy16.c:960 elf64-mmix.c:1545 msgid "internal error: unknown error" msgstr "lá»—i ná»™i bá»™ : lá»—i không rõ" -#: elf-m10300.c:1618 +#: elf-m10300.c:1512 elf32-arm.c:8970 elf32-i386.c:3986 elf32-m32r.c:2588 +#: elf32-m68k.c:4099 elf32-ppc.c:8116 elf32-s390.c:3015 elf32-sh.c:3429 +#: elf32-xtensa.c:3027 elf64-ppc.c:12252 elf64-s390.c:2974 elf64-sh64.c:1648 +#: elf64-x86-64.c:3658 elfxx-sparc.c:3317 +msgid "%B(%A+0x%lx): unresolvable %s relocation against symbol `%s'" +msgstr "%B(%A+0x%lx): định vị lại không thể giải quyết %s đối vá»›i ký hiệu « %s »" + +#: elf-m10300.c:1584 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)" msgstr "lá»—i: kiểu định vị lại không thích hợp cho thÆ° viện chia sẻ (bạn đã quên đặt -fpic không?)" -#: elf-m10300.c:1621 +#: elf-m10300.c:1587 msgid "internal error: suspicious relocation type used in shared library" msgstr "lá»—i ná»™i bá»™: kiểu định vị lại đáng ngỠđược dùng trong thÆ° viện chia sẻ" -#: elf-m10300.c:4397 elf32-arm.c:9578 elf32-cris.c:2403 elf32-hppa.c:1921 -#: elf32-i370.c:506 elf32-i386.c:1807 elf32-m32r.c:1931 elf32-m68k.c:2787 -#: elf32-ppc.c:4693 elf32-s390.c:1687 elf32-sh.c:2583 elf32-vax.c:1055 -#: elf64-ppc.c:6075 elf64-s390.c:1662 elf64-sh64.c:3432 elf64-x86-64.c:1641 -#: elfxx-sparc.c:1828 +#: elf-m10300.c:4385 elf32-arm.c:11353 elf32-cr16.c:2519 elf32-cris.c:3025 +#: elf32-hppa.c:1891 elf32-i370.c:506 elf32-i386.c:1977 elf32-lm32.c:1873 +#: elf32-m32r.c:1921 elf32-m68k.c:3188 elf32-ppc.c:5026 elf32-s390.c:1650 +#: elf32-sh.c:2574 elf32-vax.c:1052 elf64-ppc.c:6394 elf64-s390.c:1623 +#: elf64-sh64.c:3396 elf64-x86-64.c:1822 elfxx-sparc.c:1802 #, c-format msgid "dynamic variable `%s' is zero size" msgstr "biến Ä‘á»™ng « %s » có kích cỡ số không" -#: elf.c:328 +#: elf.c:329 msgid "%B: invalid string offset %u >= %lu for section `%s'" msgstr "%B: khoảng bù chuá»—i không hợp lệ %u≥%lu cho phần « %s »" -#: elf.c:438 +#: elf.c:441 msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" msgstr "%B số thứ tá»± ký hiệu %lu tham chiếu đến phần SHT_SYMTAB_SHNDX không tồn tại" -#: elf.c:594 +#: elf.c:597 msgid "%B: Corrupt size field in group section header: 0x%lx" msgstr "%B: TrÆ°á»ng kích cỡ bị há»ng trong phần đầu của phần nhóm: 0x%lx" -#: elf.c:630 +#: elf.c:633 msgid "%B: invalid SHT_GROUP entry" msgstr "%B: mục nhập SHT_GROUP không hợp lệ" -#: elf.c:700 +#: elf.c:703 msgid "%B: no group info for section %A" msgstr "%B: không có thông tin nhóm vá» phần %A" -#: elf.c:729 elf.c:2976 elflink.c:9746 +#: elf.c:732 elf.c:2979 elflink.c:9922 msgid "%B: warning: sh_link not set for section `%A'" msgstr "%B: cảnh báo : « sh_link » chÆ°a được đặt cho phần « %A »" -#: elf.c:748 +#: elf.c:751 msgid "%B: sh_link [%d] in section `%A' is incorrect" msgstr "%B: sh_link [%d] không đúng trong phần « %A »" -#: elf.c:783 +#: elf.c:786 msgid "%B: unknown [%d] section `%s' in group [%s]" msgstr "%B: không rõ [%d] phần « %s » trong nhóm [%s]" -#: elf.c:1159 +#: elf.c:1106 #, c-format msgid "" "\n" @@ -754,7 +769,7 @@ "\n" "Phần đầu chÆ°Æ¡ng trình:\n" -#: elf.c:1201 +#: elf.c:1148 #, c-format msgid "" "\n" @@ -763,7 +778,7 @@ "\n" "Phần Ä‘á»™ng:\n" -#: elf.c:1337 +#: elf.c:1284 #, c-format msgid "" "\n" @@ -772,7 +787,7 @@ "\n" "Phần định nghÄ©a phiên bản:\n" -#: elf.c:1362 +#: elf.c:1309 #, c-format msgid "" "\n" @@ -781,82 +796,82 @@ "\n" "Tham chiếu phiên bản:\n" -#: elf.c:1367 +#: elf.c:1314 #, c-format msgid " required from %s:\n" msgstr " cần thiết từ %s:\n" -#: elf.c:1755 +#: elf.c:1718 msgid "%B: invalid link %lu for reloc section %s (index %u)" msgstr "%B: liên kết không hợp lệ %lu cho phần định vị lại %s (chỉ mục %u)" -#: elf.c:1924 +#: elf.c:1886 msgid "%B: don't know how to handle allocated, application specific section `%s' [0x%8x]" msgstr "%B: không biết cách xá»­ lý phần đã cấp phát mà đặc trÆ°ng cho ứng dụng « %s » [0x%8x]" -#: elf.c:1936 +#: elf.c:1898 msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]" msgstr "%B: không biết cách xá»­ lý phần đặc trÆ°ng cho bá»™ xá»­ lý « %s » [0x%8x]" -#: elf.c:1947 +#: elf.c:1909 msgid "%B: don't know how to handle OS specific section `%s' [0x%8x]" msgstr "%B: không biết cách xá»­ lý phần đặc trÆ°ng cho HÄH « %s » [0x%8x]" -#: elf.c:1957 +#: elf.c:1919 msgid "%B: don't know how to handle section `%s' [0x%8x]" msgstr "%B: không biết cách xá»­ lý phần « %s » [0x%8x]" -#: elf.c:2555 +#: elf.c:2517 #, c-format msgid "warning: section `%A' type changed to PROGBITS" msgstr "cảnh báo : phần « %A » có kiểu bị thay đổi thành PROGBITS" -#: elf.c:2933 +#: elf.c:2936 msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'" msgstr "%B: sh_link của phần « %A » chỉ tá»›i phần bị hủy « %A » của « %B »" -#: elf.c:2956 +#: elf.c:2959 msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'" msgstr "%B: sh_link của phần « %A » chỉ tá»›i phần bị gỡ bỠ« %A » của « %B »" -#: elf.c:4300 +#: elf.c:4333 msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section" msgstr "%B: Phần thứ nhất trong Ä‘oạn PT_DYNAMIC không phải là phần .dynamic" -#: elf.c:4327 +#: elf.c:4360 msgid "%B: Not enough room for program headers, try linking with -N" msgstr "%B: Không đủ sức chứa cho các phần đầu của chÆ°Æ¡ng trình: hãy thá»­ liên kết vá»›i « -N »" -#: elf.c:4404 +#: elf.c:4442 msgid "%B: section %A vma 0x%lx overlaps previous sections" msgstr "%B: phần %A vma 0x%lx đè lên phần trÆ°á»›c" -#: elf.c:4499 +#: elf.c:4537 msgid "%B: section `%A' can't be allocated in segment %d" msgstr "%B: phần « %A » không thể được cấp phát trong Ä‘oạn %d" -#: elf.c:4549 +#: elf.c:4587 msgid "%B: warning: allocated section `%s' not in segment" msgstr "%B: cảnh báo : phần đã cấp phát « %s » không nằm trong Ä‘oạn" -#: elf.c:5064 +#: elf.c:5087 msgid "%B: symbol `%s' required but not present" msgstr "%B: ký hiệu « %s » cần thiết mà không có" -#: elf.c:5403 +#: elf.c:5426 msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n" msgstr "%B: cảnh báo : Phát hiện má»™t Ä‘oạn rá»—ng có thể nạp được: trÆ°á»ng hợp này có ý định trÆ°á»›c không?\n" -#: elf.c:6366 +#: elf.c:6393 #, c-format msgid "Unable to find equivalent output section for symbol '%s' from section '%s'" msgstr "Không tìm thấy phần kết xuất tÆ°Æ¡ng Ä‘Æ°Æ¡ng cho ký hiệu « %s » từ phần « %s »" -#: elf.c:7346 +#: elf.c:7382 msgid "%B: unsupported relocation type %s" msgstr "%B: kiểu định vị lại không được há»— trợ %s" -#: elf32-arm.c:2846 elf32-arm.c:2878 +#: elf32-arm.c:3149 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: Thumb call to ARM" @@ -864,40 +879,48 @@ "%B(%s): cảnh báo : chÆ°a bật dùng ảnh hưởng lẫn nhau.\n" " lần xuất hiện đầu: %B: thumb gá»i tá»›i ARM" -#: elf32-arm.c:3041 +#: elf32-arm.c:3190 +msgid "" +"%B(%s): warning: interworking not enabled.\n" +" first occurrence: %B: ARM call to Thumb" +msgstr "" +"%B(%s): cảnh báo : chÆ°a bật dùng ảnh hưởng lẫn nhau.\n" +" lần xuất hiện đầu tiên: %B: gá»i ARM tá»›i Thumb" + +#: elf32-arm.c:3387 elf32-arm.c:4692 #, c-format msgid "%s: cannot create stub entry %s" msgstr "%s: không thể tạo mục nhập mẩu %s" -#: elf32-arm.c:3825 +#: elf32-arm.c:4804 #, c-format msgid "unable to find THUMB glue '%s' for '%s'" msgstr "không tìm thấy keo hồ THUMB « %s » cho « %s »" -#: elf32-arm.c:3859 +#: elf32-arm.c:4838 #, c-format msgid "unable to find ARM glue '%s' for '%s'" msgstr "không tìm thấy keo hồ ARM « %s » cho « %s »" -#: elf32-arm.c:4463 +#: elf32-arm.c:5365 msgid "%B: BE8 images only valid in big-endian mode." msgstr "%B: hình ảnh BE8 chỉ đúng trong chế Ä‘á»™ vá» cuối lá»›n." #. Give a warning, but do as the user requests anyway. -#: elf32-arm.c:4678 +#: elf32-arm.c:5590 msgid "%B: warning: selected VFP11 erratum workaround is not necessary for target architecture" msgstr "%B: cảnh báo : sá»± khắc phúc các lá»—i VFP11 đã chá»n không cần thiết cho kiến trúc đích" -#: elf32-arm.c:5212 elf32-arm.c:5232 +#: elf32-arm.c:6130 elf32-arm.c:6150 msgid "%B: unable to find VFP11 veneer `%s'" msgstr "%B: không tìm thấy lá»›p gá»— mặt VFP11 « %s »" -#: elf32-arm.c:5278 +#: elf32-arm.c:6196 #, c-format msgid "Invalid TARGET2 relocation type '%s'." msgstr "Kiểu định vị lại TARGET2 không hợp lệ « %s »" -#: elf32-arm.c:5362 +#: elf32-arm.c:6281 msgid "" "%B(%s): warning: interworking not enabled.\n" " first occurrence: %B: thumb call to arm" @@ -905,363 +928,409 @@ "%B(%s): cảnh báo : chÆ°a bật dùng ảnh hưởng lẫn nhau.\n" " lần xuất hiện đầu: %B: thumb gá»i tá»›i arm" -#: elf32-arm.c:6094 +#: elf32-arm.c:7003 msgid "\\%B: Warning: Arm BLX instruction targets Arm function '%s'." msgstr "\\%B: Cảnh báo : Chỉ dẫn Arm BLX đăt mục tiêu hàm Arm « %s »." -#: elf32-arm.c:6418 +#: elf32-arm.c:7408 msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'." msgstr "%B: Cảnh báo : Chỉ dẫn Thumb BLX đăt mục tiêu hàm thumb « %s »." -#: elf32-arm.c:7095 +#: elf32-arm.c:8092 msgid "%B(%A+0x%lx): R_ARM_TLS_LE32 relocation not permitted in shared object" msgstr "%B(%A+0x%lx): R_ARM_TLS_LE32 không cho phép định vị lại trong đối tượng dùng chung" -#: elf32-arm.c:7310 +#: elf32-arm.c:8307 msgid "%B(%A+0x%lx): Only ADD or SUB instructions are allowed for ALU group relocations" msgstr "%B(%A+0x%lx): Chỉ cho phép chỉ dẫn kiểu ADD (cá»™ng) hoặc SUB (trừ) khi định vị lại nhóm ALU" -#: elf32-arm.c:7350 elf32-arm.c:7437 elf32-arm.c:7520 elf32-arm.c:7605 +#: elf32-arm.c:8347 elf32-arm.c:8434 elf32-arm.c:8517 elf32-arm.c:8602 msgid "%B(%A+0x%lx): Overflow whilst splitting 0x%lx for group relocation %s" msgstr "%B(%A+0x%lx): Tràn trong khi tách ra 0x%lx để định vị lại nhóm %s" -#: elf32-arm.c:7812 elf32-sh.c:3334 elf64-sh64.c:1556 +#: elf32-arm.c:8828 elf32-sh.c:3325 elf64-sh64.c:1556 msgid "%B(%A+0x%lx): %s relocation against SEC_MERGE section" msgstr "%B(%A+0x%lx): %s định vị lại đối lại phần SEC_MERGE" -#: elf32-arm.c:7930 elf32-xtensa.c:2759 elf64-ppc.c:10374 +#: elf32-arm.c:8946 elf32-m68k.c:4134 elf32-xtensa.c:2765 elf64-ppc.c:10939 msgid "%B(%A+0x%lx): %s used with TLS symbol %s" msgstr "%B(%A+0x%lx): %s được dùng vá»›i ký hiệu TLS %s" -#: elf32-arm.c:7931 elf32-xtensa.c:2760 elf64-ppc.c:10375 +#: elf32-arm.c:8947 elf32-m68k.c:4135 elf32-xtensa.c:2766 elf64-ppc.c:10940 msgid "%B(%A+0x%lx): %s used with non-TLS symbol %s" msgstr "%B(%A+0x%lx): %s được dùng vá»›i ký hiệu khác TLS %s" -#: elf32-arm.c:7988 +#: elf32-arm.c:9004 msgid "out of range" msgstr "ở ngoại phạm vi" -#: elf32-arm.c:7992 +#: elf32-arm.c:9008 msgid "unsupported relocation" msgstr "định vị lại không được há»— trợ" -#: elf32-arm.c:8000 +#: elf32-arm.c:9016 msgid "unknown error" msgstr "lá»—i không rõ" -#: elf32-arm.c:8099 +#: elf32-arm.c:9416 msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it" msgstr "Cảnh báo : Äang xóa cỠảnh hưởng lẫn nhau của %B vì mã không ảnh hưởng lẫn nhau trong %B đã được liên kết vá»›i nó" -#: elf32-arm.c:8205 -msgid "ERROR: %B uses VFP register arguments, %B does not" -msgstr "Lá»–I: %B sá»­ dụng các đối số thanh ghi VFP, còn %B thì không" - -#: elf32-arm.c:8254 -msgid "ERROR: %B: Conflicting architecture profiles %c/%c" -msgstr "Lá»–I: %B: Các hồ sÆ¡ kiến trúc xung Ä‘á»™t vá»›i nhau %c/%c" +#: elf32-arm.c:9659 +msgid "error: %B: Unknown CPU architecture" +msgstr "lá»—i: %B: không rõ kiến trúc CPU" + +#: elf32-arm.c:9697 +msgid "error: %B: Conflicting CPU architectures %d/%d" +msgstr "lá»—i: %B: Các kiến trúc CPU xung Ä‘á»™t vá»›i nhau %d/%d" + +#: elf32-arm.c:9754 +msgid "error: %B uses VFP register arguments, %B does not" +msgstr "lá»—i: %B sá»­ dụng các đối số thanh ghi VFP, còn %B thì không" + +#: elf32-arm.c:9904 +msgid "error: %B: Conflicting architecture profiles %c/%c" +msgstr "lá»—i: %B: Các hồ sÆ¡ kiến trúc xung Ä‘á»™t vá»›i nhau %c/%c" -#: elf32-arm.c:8274 +#: elf32-arm.c:9928 msgid "Warning: %B: Conflicting platform configuration" msgstr "Cảnh báo : %B: cấu trúc ná»n tảng xung Ä‘á»™t" -#: elf32-arm.c:8283 -msgid "ERROR: %B: Conflicting use of R9" -msgstr "Lá»–I; %B: cách dùng R9 xung Ä‘á»™t" - -#: elf32-arm.c:8295 -msgid "ERROR: %B: SB relative addressing conflicts with use of R9" -msgstr "Lá»–I: %B: đạt địa chỉ tÆ°Æ¡ng đối SB xung Ä‘á»™t vá»›i cách dùng R9" +#: elf32-arm.c:9937 +msgid "error: %B: Conflicting use of R9" +msgstr "lá»—i; %B: Dùng R9 má»™t cách xung Ä‘á»™t" + +#: elf32-arm.c:9949 +msgid "error: %B: SB relative addressing conflicts with use of R9" +msgstr "lá»—i: %B: đạt địa chỉ tÆ°Æ¡ng đối SB cÅ©ng xung Ä‘á»™t vá»›i cách dùng R9" -#: elf32-arm.c:8318 +#: elf32-arm.c:9962 msgid "warning: %B uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; use of wchar_t values across objects may fail" msgstr "cảnh báo : %B dùng wchar_t %u-byte, còn kết xuất nên dùng wchar_t %u-byte; vì vậy có thể không thành công dùng giá trị wchar_t qua các đối tượng" -#: elf32-arm.c:8347 +#: elf32-arm.c:9993 msgid "warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail" msgstr "cảnh báo : %B dùng sá»± đếm %s, còn kết xuất nên dùng sá»± đếm %s; vì vậy có thể không thành công dùng giá trị đếm qua các đối tượng" -#: elf32-arm.c:8360 -msgid "ERROR: %B uses iWMMXt register arguments, %B does not" -msgstr "Lá»–I: %B sá»­ dụng các đối số thanh ghi iWMMXt, còn %B thì không" +#: elf32-arm.c:10005 +msgid "error: %B uses iWMMXt register arguments, %B does not" +msgstr "lá»—i: %B sá»­ dụng các đối số thanh ghi iWMMXt, còn %B thì không" + +#: elf32-arm.c:10027 +msgid "error: fp16 format mismatch between %B and %B" +msgstr "lá»—i: định dạng fp16 không tÆ°Æ¡ng ứng giữa %B và %B" + +#: elf32-arm.c:10070 elf32-arm.c:10163 +msgid "%B: Unknown mandatory EABI object attribute %d" +msgstr "%B: Không rõ thuá»™c tính đối tượng EABI %d" -#: elf32-arm.c:8400 +#: elf32-arm.c:10078 elf32-arm.c:10171 msgid "Warning: %B: Unknown EABI object attribute %d" msgstr "Cảnh báo : %B: Không rõ thuá»™c tính đối tượng EABI %d" -#: elf32-arm.c:8460 -msgid "ERROR: %B is already in final BE8 format" -msgstr "Lá»–I: %B đã theo định dạng BE8 cuối cùng" - -#: elf32-arm.c:8536 -msgid "ERROR: Source object %B has EABI version %d, but target %B has EABI version %d" -msgstr "Lá»–I: Äối tượng nguồn %B có phiên bản EABI %d, nhÆ°ng đích %B có phiên bản EABI %d" - -#: elf32-arm.c:8552 -msgid "ERROR: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" -msgstr "Lá»–I: %B được biên dịch cho APCS-%d, còn đích %B sá»­ dụng APCS-%d" - -#: elf32-arm.c:8577 -msgid "ERROR: %B uses VFP instructions, whereas %B does not" -msgstr "Lá»–I: %B sá»­ dụng các chỉ dẫn VFP, còn %B thì không" - -#: elf32-arm.c:8581 -msgid "ERROR: %B uses FPA instructions, whereas %B does not" -msgstr "Lá»–I: %B sá»­ dụng các chỉ dẫn FPA, còn %B thì không" - -#: elf32-arm.c:8591 -msgid "ERROR: %B uses Maverick instructions, whereas %B does not" -msgstr "Lá»–I: %B sá»­ dụng các chỉ dẫn Maverick, còn %B thì không" - -#: elf32-arm.c:8595 -msgid "ERROR: %B does not use Maverick instructions, whereas %B does" -msgstr "Lá»–I: %B không sá»­ dụng các chỉ dẫn Maverick, còn %B thì có" - -#: elf32-arm.c:8614 -msgid "ERROR: %B uses software FP, whereas %B uses hardware FP" -msgstr "Lá»–I: %B sá»­ dụng FP phần má»m, còn %B sá»­ dụng FP phần cứng" - -#: elf32-arm.c:8618 -msgid "ERROR: %B uses hardware FP, whereas %B uses software FP" -msgstr "Lá»–I: %B sá»­ dụng FP phần cứng, còn %B sá»­ dụng FP phần má»m" +#: elf32-arm.c:10231 +msgid "error: %B is already in final BE8 format" +msgstr "lá»—i: %B đã theo định dạng BE8 cuối cùng" + +#: elf32-arm.c:10307 +msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d" +msgstr "lá»—i: Äối tượng nguồn %B có phiên bản EABI %d, còn đích %B có phiên bản EABI %d" + +#: elf32-arm.c:10323 +msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d" +msgstr "lá»—i: %B được biên dịch cho APCS-%d, còn đích %B sá»­ dụng APCS-%d" + +#: elf32-arm.c:10348 +msgid "error: %B uses VFP instructions, whereas %B does not" +msgstr "lá»—i: %B sá»­ dụng chỉ dẫn VFP, còn %B thì không" + +#: elf32-arm.c:10352 +msgid "error: %B uses FPA instructions, whereas %B does not" +msgstr "lá»—i: %B sá»­ dụng chỉ dẫn FPA, còn %B thì không" + +#: elf32-arm.c:10362 +msgid "error: %B uses Maverick instructions, whereas %B does not" +msgstr "lá»—i: %B sá»­ dụng chỉ dẫn Maverick, còn %B thì không" + +#: elf32-arm.c:10366 +msgid "error: %B does not use Maverick instructions, whereas %B does" +msgstr "lá»—i: %B không sá»­ dụng chỉ dẫn Maverick, còn %B thì có" + +#: elf32-arm.c:10385 +msgid "error: %B uses software FP, whereas %B uses hardware FP" +msgstr "lá»—i: %B sá»­ dụng FP phần má»m, còn %B sá»­ dụng FP phần cứng" + +#: elf32-arm.c:10389 +msgid "error: %B uses hardware FP, whereas %B uses software FP" +msgstr "lá»—i: %B sá»­ dụng FP phần cứng, còn %B sá»­ dụng FP phần má»m" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. #. Ignore init flag - it may not be set, despite the flags field containing valid data. -#: elf32-arm.c:8665 elf32-bfin.c:4899 elf32-cris.c:3235 elf32-m68hc1x.c:1279 -#: elf32-m68k.c:774 elf32-score.c:3750 elf32-vax.c:538 elfxx-mips.c:12699 +#: elf32-arm.c:10436 elf32-bfin.c:5080 elf32-cris.c:4105 elf32-m68hc1x.c:1280 +#: elf32-m68k.c:1169 elf32-score.c:4039 elf32-score7.c:3876 elf32-vax.c:540 +#: elfxx-mips.c:12755 #, c-format msgid "private flags = %lx:" msgstr "các cá» riêng = %lx:" -#: elf32-arm.c:8674 +#: elf32-arm.c:10445 #, c-format msgid " [interworking enabled]" msgstr " [ảnh hưởng lẫn nhau đã bật]" -#: elf32-arm.c:8682 +#: elf32-arm.c:10453 #, c-format msgid " [VFP float format]" msgstr " [Äịnh dạng trôi VFP]" -#: elf32-arm.c:8684 +#: elf32-arm.c:10455 #, c-format msgid " [Maverick float format]" msgstr " [Äịnh dạng trôi Maverick]" -#: elf32-arm.c:8686 +#: elf32-arm.c:10457 #, c-format msgid " [FPA float format]" msgstr " [Äịnh dạng trôi FPA]" -#: elf32-arm.c:8695 +#: elf32-arm.c:10466 #, c-format msgid " [new ABI]" msgstr " [ABI má»›i]" -#: elf32-arm.c:8698 +#: elf32-arm.c:10469 #, c-format msgid " [old ABI]" msgstr " [ABI cÅ©]" -#: elf32-arm.c:8701 +#: elf32-arm.c:10472 #, c-format msgid " [software FP]" msgstr " [FP phần má»m]" -#: elf32-arm.c:8710 +#: elf32-arm.c:10481 #, c-format msgid " [Version1 EABI]" msgstr " [EABI phiên bản 1]" -#: elf32-arm.c:8713 elf32-arm.c:8724 +#: elf32-arm.c:10484 elf32-arm.c:10495 #, c-format msgid " [sorted symbol table]" msgstr " [bảng ký hiệu đã sắp xếp]" -#: elf32-arm.c:8715 elf32-arm.c:8726 +#: elf32-arm.c:10486 elf32-arm.c:10497 #, c-format msgid " [unsorted symbol table]" msgstr " [bảng ký hiệu chÆ°a sắp xếp]" -#: elf32-arm.c:8721 +#: elf32-arm.c:10492 #, c-format msgid " [Version2 EABI]" msgstr " [EABI phiên bản 2]" -#: elf32-arm.c:8729 +#: elf32-arm.c:10500 #, c-format msgid " [dynamic symbols use segment index]" msgstr " [các ký hiệu Ä‘á»™ng sá»­ dụng chỉ mục Ä‘oạn]" -#: elf32-arm.c:8732 +#: elf32-arm.c:10503 #, c-format msgid " [mapping symbols precede others]" msgstr " [ký hiệu ánh xạ đứng trÆ°á»›c]" -#: elf32-arm.c:8739 +#: elf32-arm.c:10510 #, c-format msgid " [Version3 EABI]" msgstr " [EABI phiên bản 3]" -#: elf32-arm.c:8743 +#: elf32-arm.c:10514 #, c-format msgid " [Version4 EABI]" msgstr " [EABI phiên bản 4]" -#: elf32-arm.c:8747 +#: elf32-arm.c:10518 #, c-format msgid " [Version5 EABI]" msgstr " [EABI phiên bản 5]" -#: elf32-arm.c:8750 +#: elf32-arm.c:10521 #, c-format msgid " [BE8]" msgstr " [BE8]" -#: elf32-arm.c:8753 +#: elf32-arm.c:10524 #, c-format msgid " [LE8]" msgstr " [LE8]" -#: elf32-arm.c:8759 +#: elf32-arm.c:10530 #, c-format msgid " " msgstr "" -#: elf32-arm.c:8766 +#: elf32-arm.c:10537 #, c-format msgid " [relocatable executable]" msgstr " [tập tin có thể thá»±c hiện và định vị lại]" -#: elf32-arm.c:8769 +#: elf32-arm.c:10540 #, c-format msgid " [has entry point]" msgstr " [có Ä‘iểm vào]" -#: elf32-arm.c:8774 +#: elf32-arm.c:10545 #, c-format msgid "" msgstr "" -#: elf32-arm.c:9013 elf32-i386.c:1236 elf32-s390.c:1006 elf32-xtensa.c:999 -#: elf64-s390.c:961 elf64-x86-64.c:1016 elfxx-sparc.c:1127 +#: elf32-arm.c:10790 elf32-i386.c:1300 elf32-s390.c:998 elf32-xtensa.c:1000 +#: elf64-s390.c:952 elf64-x86-64.c:1083 elfxx-sparc.c:1121 msgid "%B: bad symbol index: %d" msgstr "%B: chỉ mục ký hiệu sai: %d" -#: elf32-arm.c:10125 +#: elf32-arm.c:10911 elf64-x86-64.c:1243 elf64-x86-64.c:1412 elfxx-mips.c:7870 +msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" +msgstr "%B: định vị lại %s so vá»›i « %s » không thể được dùng khi tạo má»™t đối tượng chia sẻ; hãy biên dịch lại vá»›i « -fPIC »" + +#: elf32-arm.c:11900 #, c-format msgid "Errors encountered processing file %s" msgstr "Gặp lá»—i khi xá»­ lý tập tin %s" -#: elf32-arm.c:11526 elf32-arm.c:11548 +#: elf32-arm.c:13346 +msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location" +msgstr "%B: lá»—i: mẩu mục lá»—i Cortex-A8 được cấp phát ở vị trí không an toàn" + +#. There's not much we can do apart from complain if this +#. happens. +#: elf32-arm.c:13373 +msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)" +msgstr "%B: lá»—i: mẩu mục lá»—i Cortex-A8 ở ngoại phạm vi (tập tin nhập quá dài)" + +#: elf32-arm.c:13464 elf32-arm.c:13486 msgid "%B: error: VFP11 veneer out of range" msgstr "%B: lá»—i: lá»›p gá»— mặt VFP11 ở ngoại phạm vi" -#: elf32-avr.c:1258 elf32-bfin.c:3222 elf32-cris.c:1546 elf32-fr30.c:624 +#: elf32-avr.c:1259 elf32-bfin.c:3212 elf32-cris.c:2092 elf32-fr30.c:624 #: elf32-frv.c:4122 elf32-i860.c:1226 elf32-ip2k.c:1510 elf32-iq2000.c:699 -#: elf32-m32c.c:568 elf32-mep.c:549 elf32-msp430.c:501 elf32-mt.c:406 -#: elf32-openrisc.c:419 elf32-v850.c:1711 elf32-xstormy16.c:956 +#: elf32-m32c.c:568 elf32-mep.c:549 elf32-moxie.c:299 elf32-msp430.c:501 +#: elf32-mt.c:406 elf32-openrisc.c:419 elf32-v850.c:1709 elf32-xstormy16.c:956 #: elf64-mmix.c:1541 msgid "internal error: dangerous relocation" msgstr "lá»—i ná»™i bá»™ : định vị lại nguy hiểm" -#: elf32-avr.c:2396 elf32-hppa.c:605 elf32-m68hc1x.c:164 elf64-ppc.c:3983 +#: elf32-avr.c:2409 elf32-hppa.c:605 elf32-m68hc1x.c:165 elf64-ppc.c:4146 msgid "%B: cannot create stub entry %s" msgstr "%B: không thể tạo mục nhập mẩu %s" -#: elf32-bfin.c:1585 +#: elf32-bfin.c:1581 msgid "%B(%A+0x%lx): unresolvable relocation against symbol `%s'" msgstr "%B(%A+0x%lx): định vị lại không thể giải quyết đối vá»›i ký hiệu « %s »" -#: elf32-bfin.c:1618 elf32-i386.c:3623 elf32-m68k.c:3557 elf32-s390.c:3110 -#: elf64-s390.c:3071 elf64-x86-64.c:3278 +#: elf32-bfin.c:1614 elf32-i386.c:4028 elf32-m68k.c:4176 elf32-s390.c:3067 +#: elf64-s390.c:3026 elf64-x86-64.c:3698 msgid "%B(%A+0x%lx): reloc against `%s': error %d" msgstr "%B(%A+0x%lx): định vị lại đối vá»›i « %s »: lá»—i %d" -#: elf32-bfin.c:2711 +#: elf32-bfin.c:2718 msgid "%B: relocation at `%A+0x%x' references symbol `%s' with nonzero addend" msgstr "%B: định vị lại ở « %A+0x%x » tham chiếu đến ký hiệu « %s » vá»›i số hạng khác không" -#: elf32-bfin.c:2725 elf32-frv.c:2904 +#: elf32-bfin.c:2732 elf32-frv.c:2904 msgid "relocation references symbol not defined in the module" msgstr "định vị lại tham chiếu đến ký hiệu không được định nghÄ©a trong mô-Ä‘un" -#: elf32-bfin.c:2822 +#: elf32-bfin.c:2829 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend" msgstr "R_FRV_FUNCDESC tham chiếu đến ký hiệu Ä‘á»™ng vá»›i số hạng khác không" -#: elf32-bfin.c:2861 elf32-bfin.c:2987 elf32-frv.c:3641 elf32-frv.c:3762 +#: elf32-bfin.c:2870 elf32-bfin.c:2993 elf32-frv.c:3641 elf32-frv.c:3762 msgid "cannot emit fixups in read-only section" msgstr "Không thể phát ra sá»± sá»­a chữa trong phần chỉ Ä‘á»c" -#: elf32-bfin.c:2889 elf32-bfin.c:3036 elf32-frv.c:3672 elf32-frv.c:3806 +#: elf32-bfin.c:2901 elf32-bfin.c:3031 elf32-frv.c:3672 elf32-frv.c:3806 +#: elf32-lm32.c:1104 msgid "cannot emit dynamic relocations in read-only section" msgstr "không thể phát ra định vị lại Ä‘á»™ng trong phần chỉ Ä‘á»c" -#: elf32-bfin.c:2945 +#: elf32-bfin.c:2951 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "R_FRV_FUNCDESC_VALUE tham chiếu đến ký hiệu Ä‘á»™ng vá»›i số hạng khác không" -#: elf32-bfin.c:3126 +#: elf32-bfin.c:3116 msgid "relocations between different segments are not supported" msgstr "không há»— trợ định vị lại giữa các Ä‘oạn khác nhau" -#: elf32-bfin.c:3127 +#: elf32-bfin.c:3117 msgid "warning: relocation references a different segment" msgstr "cảnh báo : định vị lại tham chiếu đến má»™t Ä‘oạn khác" -#: elf32-bfin.c:4791 elf32-frv.c:6404 +#: elf32-bfin.c:4972 elf32-frv.c:6408 msgid "%B: unsupported relocation type %i" msgstr "%B: kiểu định vị lại không được há»— trợ %i" -#: elf32-bfin.c:4944 elf32-frv.c:6812 +#: elf32-bfin.c:5125 elf32-frv.c:6816 #, c-format msgid "%s: cannot link non-fdpic object file into fdpic executable" msgstr "%s: không thể liên kết tập tin đối tượng khác fdpic vào tập tin fdpic có thể thá»±c hiện" -#: elf32-bfin.c:4948 elf32-frv.c:6816 +#: elf32-bfin.c:5129 elf32-frv.c:6820 #, c-format msgid "%s: cannot link fdpic object file into non-fdpic executable" msgstr "%s: không thể liên kết tập tin đối tượng khác fdpic vào tập tin khác fdpic có thể thá»±c hiện" -#: elf32-cris.c:1060 +#: elf32-cris.c:1169 msgid "%B, section %A: unresolvable relocation %s against symbol `%s'" msgstr "%B, phần %A: định vị lại không thể giải quyết %s đối vá»›i ký hiệu « %s »" -#: elf32-cris.c:1129 +#: elf32-cris.c:1238 msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'" msgstr "%B, phần %A: Không có PLT hoặc GOT cho định vị lại %s đối vá»›i ký hiệu « %s »" -#: elf32-cris.c:1131 +#: elf32-cris.c:1240 msgid "%B, section %A: No PLT for relocation %s against symbol `%s'" msgstr "%B, phần %A: Không có PLT cho định vị lại %s đối vá»›i ký hiệu « %s »" -#: elf32-cris.c:1137 elf32-cris.c:1269 +#: elf32-cris.c:1246 elf32-cris.c:1379 elf32-cris.c:1641 elf32-cris.c:1725 +#: elf32-cris.c:1878 msgid "[whose name is lost]" msgstr "[mất tên của ai]" -#: elf32-cris.c:1255 +#: elf32-cris.c:1365 msgid "%B, section %A: relocation %s with non-zero addend %d against local symbol" msgstr "%B, phần %A: định vị lại %s vá»›i số hạng khác không %d đối vá»›i ký hiệu cục bá»™" -#: elf32-cris.c:1263 +#: elf32-cris.c:1373 elf32-cris.c:1719 elf32-cris.c:1872 msgid "%B, section %A: relocation %s with non-zero addend %d against symbol `%s'" msgstr "%B, phần %A: định vị lại %s vá»›i số hạng khác không %d đối vá»›i ký hiệu « %s »" -#: elf32-cris.c:1289 +#: elf32-cris.c:1399 msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'" msgstr "%B, phần %A: định vị lại %s không được phép cho ký hiệu toàn cục: « %s »" -#: elf32-cris.c:1305 +#: elf32-cris.c:1415 msgid "%B, section %A: relocation %s with no GOT created" msgstr "%B, phần %A: đã tạo định vị lại %s không có GOT" -#: elf32-cris.c:1423 -msgid "%B: Internal inconsistency; no relocation section %s" -msgstr "%s: Sá»± mâu thuẫn ná»™i bá»™ ; không có phần định vị lại %s" +#. We shouldn't get here for GCC-emitted code. +#: elf32-cris.c:1632 +msgid "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?" +msgstr "%B: phần %A: sá»± định vị lại $s có má»™t thàm chiếu chÆ°a xác định đến « %s », có thể khai báo không rõ ?" + +#: elf32-cris.c:2005 +msgid "%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?" +msgstr "%B, phần %A: sá»± định vị lại %s không được phép cho ký hiệu « %s » mà được xác định bên ngoài chÆ°Æ¡ng trình, có thể khai báo không rõ ?" + +#: elf32-cris.c:2058 +msgid "(too many global variables for -fpic: recompile with -fPIC)" +msgstr "(quá nhiá»u biến toàn cục đối vá»›i « -fpic »: hãy biên dịch lại vá»›i « -fPIC »)" + +#: elf32-cris.c:2065 +msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)" +msgstr "(dữ liệu cục bá»™ vá»›i mạch cÅ©ng quá lá»›n đối vá»›i « fpic » hoặc « -msmall-tls »: hãy biên dịch lại vá»›i « -fPIC » hay « -mno-small-tls »)" -#: elf32-cris.c:2510 +#: elf32-cris.c:3199 msgid "" "%B, section %A:\n" " v10/v32 compatible object %s must not contain a PIC relocation" @@ -1269,46 +1338,62 @@ "%B, phần %A:\n" " đối tượng tÆ°Æ¡ng thích v10/v32 %s không được chứa định vị lại PIC" -#: elf32-cris.c:2697 elf32-cris.c:2765 +#: elf32-cris.c:3304 +msgid "" +"%B, section %A:\n" +" relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC" +msgstr "" +"%B, phần %A:\n" +" không được sá»­ dụng sá»± định vị lại %s trong má»™t đối tượng chia sẻ; bình thÆ°á»ng do khai báo không rõ, hãy biên dịch lại vá»›i « -fPIC »" + +#: elf32-cris.c:3518 msgid "" "%B, section %A:\n" " relocation %s should not be used in a shared object; recompile with -fPIC" msgstr "" "%B, phần %A:\n" -" không được sá»­ dụng định vị lại %s trong má»™t đối tượng chia sẻ; hãy biên dịch lại vá»›i -fPIC" +" không được sá»­ dụng sá»± định vị lại %s trong má»™t đối tượng chia sẻ; hãy biên dịch lại vá»›i « -fPIC »" -#: elf32-cris.c:3184 +#: elf32-cris.c:3935 +msgid "" +"%B, section `%A', to symbol `%s':\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%B, phần « %A », tá»›i ký hiệu « %s »:\n" +" không được sá»­ dụng sá»± định vị lại %s trong má»™t đối tượng chia sẻ; hãy biên dịch lại vá»›i « -fPIC »" + +#: elf32-cris.c:4054 msgid "Unexpected machine number" msgstr "Số thứ tá»± máy bất thÆ°á»ng" -#: elf32-cris.c:3238 +#: elf32-cris.c:4108 #, c-format msgid " [symbols have a _ prefix]" msgstr " [ký hiệu có má»™t tiá»n tố _]" -#: elf32-cris.c:3241 +#: elf32-cris.c:4111 #, c-format msgid " [v10 and v32]" msgstr " [v10 và v32]" -#: elf32-cris.c:3244 +#: elf32-cris.c:4114 #, c-format msgid " [v32]" msgstr " [v32]" -#: elf32-cris.c:3289 +#: elf32-cris.c:4159 msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols" msgstr "%B: dùng ký hiệu tiá»n tố _, nhÆ°ng Ä‘ang ghi tập tin vá»›i ký hiệu không phải tiá»n tố" -#: elf32-cris.c:3290 +#: elf32-cris.c:4160 msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols" msgstr "%B: dùng ký hiệu không phải tiá»n tố, nhÆ°ng Ä‘ang ghi tập tin vá»›i ký hiệu có tiá»n tố _" -#: elf32-cris.c:3309 +#: elf32-cris.c:4179 msgid "%B contains CRIS v32 code, incompatible with previous objects" msgstr "%B chứa mã CRIS v32, không tÆ°Æ¡ng thích vá»›i các đối tượng trÆ°á»›c" -#: elf32-cris.c:3311 +#: elf32-cris.c:4181 msgid "%B contains non-CRIS-v32 code, incompatible with previous objects" msgstr "%B chứa mã khác CRIS v32, không tÆ°Æ¡ng thích vá»›i các đối tượng trÆ°á»›c" @@ -1384,22 +1469,22 @@ msgid "relocation references a different segment" msgstr "định vị lại tham chiếu đến má»™t Ä‘oạn khác" -#: elf32-frv.c:6726 +#: elf32-frv.c:6730 #, c-format msgid "%s: compiled with %s and linked with modules that use non-pic relocations" msgstr "%s: biên dịch vá»›i %s và liên kết vá»›i môđun sá»­ dụng định vị lại khác pic" -#: elf32-frv.c:6779 elf32-iq2000.c:852 elf32-m32c.c:814 +#: elf32-frv.c:6783 elf32-iq2000.c:852 elf32-m32c.c:814 #, c-format msgid "%s: compiled with %s and linked with modules compiled with %s" msgstr "%s: biên dịch vá»›i %s và liên kết vá»›i môđun biên dịch vá»›i %s" -#: elf32-frv.c:6791 +#: elf32-frv.c:6795 #, c-format msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%s: sá»­ dụng trÆ°á»ng e_flags không rõ (0x%lx) khác vá»›i moÄ‘un trÆ°á»›c (0x%lx)" -#: elf32-frv.c:6841 elf32-iq2000.c:889 elf32-m32c.c:850 elf32-mt.c:583 +#: elf32-frv.c:6845 elf32-iq2000.c:889 elf32-m32c.c:850 elf32-mt.c:583 #, c-format msgid "private flags = 0x%lx:" msgstr "các cá» riêng = 0x%lx:" @@ -1408,79 +1493,73 @@ msgid "%B: Relocations in generic ELF (EM: %d)" msgstr "%B: Äịnh vị lại trong ELF chung (EM: %d)" -#: elf32-hppa.c:854 elf32-hppa.c:3600 +#: elf32-hppa.c:854 elf32-hppa.c:3570 msgid "%B(%A+0x%lx): cannot reach %s, recompile with -ffunction-sections" msgstr "%B(%A+0x%lx): không thể tá»›i %s, hãy biên dịch lại vá»›i « -ffunction-sections »" -#: elf32-hppa.c:1263 +#: elf32-hppa.c:1286 msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC" msgstr "%B: không dùng được định vị lại %s khi tạo má»™t đối tượng chia sẽ, hãy biên dịch lại vá»›i « -fPIC »" -#: elf32-hppa.c:1518 -#, c-format -msgid "Could not find relocation section for %s" -msgstr "Không tìm thấy phần định vị lại cho %s" - -#: elf32-hppa.c:2810 +#: elf32-hppa.c:2780 msgid "%B: duplicate export stub %s" msgstr "%B: mẩu xuất trùng %s" -#: elf32-hppa.c:3436 +#: elf32-hppa.c:3406 msgid "%B(%A+0x%lx): %s fixup for insn 0x%x is not supported in a non-shared link" msgstr "%B(%A+0x%lx): %s sá»± sá»­a chữa cho chỉ dẫn 0x%x không được há»— trợ trong má»™t liên kết không chia sẻ" -#: elf32-hppa.c:4290 +#: elf32-hppa.c:4260 msgid "%B(%A+0x%lx): cannot handle %s for %s" msgstr "%B(%A+0x%lx): không thể xá»­ lý %s cho %s" -#: elf32-hppa.c:4597 +#: elf32-hppa.c:4567 msgid ".got section not immediately after .plt section" msgstr "Phần .got không nằm ngay sau phần .pit" -#: elf32-i386.c:362 elf32-ppc.c:1616 elf32-s390.c:379 elf64-ppc.c:2153 -#: elf64-s390.c:403 elf64-x86-64.c:222 +#: elf32-i386.c:371 elf32-ppc.c:1674 elf32-s390.c:379 elf64-ppc.c:2283 +#: elf64-s390.c:403 elf64-x86-64.c:234 msgid "%B: invalid relocation type %d" msgstr "%B: kiểu định vị lại không hợp lệ %d" -#: elf32-i386.c:1183 elf64-x86-64.c:964 +#: elf32-i386.c:1246 elf64-x86-64.c:1030 msgid "%B: TLS transition from %s to %s against `%s' at 0x%lx in section `%A' failed" msgstr "%B: không thành công chuyển tiếp TLS từ %s sang %s đối vá»›i « %s » ở 0x%lx trong phần « %A »" -#: elf32-i386.c:1364 elf32-s390.c:1188 elf32-sh.c:5098 elf32-xtensa.c:1162 -#: elf64-s390.c:1152 elfxx-sparc.c:1263 +#: elf32-i386.c:1387 elf32-i386.c:2972 elf64-x86-64.c:1172 elf64-x86-64.c:2681 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" +msgstr "%B: sá»± định vị lại %s đối vá»›i ký hiệu STT_GNU_IFUNC « %s » không phải được %s quản lý" + +#: elf32-i386.c:1549 elf32-s390.c:1180 elf32-sh.c:5065 elf32-xtensa.c:1173 +#: elf64-s390.c:1143 elfxx-sparc.c:1257 msgid "%B: `%s' accessed both as normal and thread local symbol" msgstr "%B: đã truy cập « %s » theo ký hiệu cả hai kiểu bình thÆ°á»ng và cục bá»™ cho mạch" -#: elf32-i386.c:1479 elf32-s390.c:1297 elf64-ppc.c:5046 elf64-s390.c:1264 -#: elf64-x86-64.c:1299 -msgid "%B: bad relocation section name `%s'" -msgstr "%B: tên phần định vị lại sai « %s »" - -#: elf32-i386.c:2598 +#: elf32-i386.c:2807 msgid "%B: unrecognized relocation (0x%x) in section `%A'" msgstr "%B: định vị lại không được nhận ra (0x%x) trong phần « %A »" -#: elf32-i386.c:2822 elf64-x86-64.c:2660 +#: elf32-i386.c:3221 elf64-x86-64.c:3082 msgid "hidden symbol" msgstr "ký hiệu bị ẩn" -#: elf32-i386.c:2825 elf64-x86-64.c:2663 +#: elf32-i386.c:3224 elf64-x86-64.c:3085 msgid "internal symbol" msgstr "ký hiệu ná»™i bá»™" -#: elf32-i386.c:2828 elf64-x86-64.c:2666 +#: elf32-i386.c:3227 elf64-x86-64.c:3088 msgid "protected symbol" msgstr "ký hiệu bị bảo vệ" -#: elf32-i386.c:2831 elf64-x86-64.c:2669 +#: elf32-i386.c:3230 elf64-x86-64.c:3091 msgid "symbol" msgstr "ký hiệu" -#: elf32-i386.c:2836 +#: elf32-i386.c:3235 msgid "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object" msgstr "%B: không dùng được định vị lại R_386_GOTOFF đối vá»›i %s chÆ°a xác định « %s » khi tạo má»™t đối tượng chia sẻ" -#: elf32-i386.c:2846 +#: elf32-i386.c:3245 msgid "%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object" msgstr "%B: không dùng được định vị lại R_386_GOTOFF đối vá»›i hàm số đã bảo vệ « %s » khi tạo má»™t đối tượng chia sẻ" @@ -1512,125 +1591,141 @@ msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%s: sá»­ dụng trÆ°á»ng e_flags (0x%lx) khác vá»›i mo-Ä‘un trÆ°á»›c (0x%lx)" +#: elf32-lm32.c:698 +msgid "global pointer relative relocation when _gp not defined" +msgstr "có định vị lại tÆ°Æ¡ng đối vá»›i con trá» toàn cục khi chÆ°a xác định _gp" + +#: elf32-lm32.c:753 +msgid "global pointer relative address out of range" +msgstr "địa chỉ tÆ°Æ¡ng đối vá»›i con trá» toàn cục vẫn ở ngoại phạm vi" + +#: elf32-lm32.c:1058 +msgid "internal error: addend should be zero for R_LM32_16_GOT" +msgstr "lá»—i ná»™i bá»™ : phần cá»™ng nên là số không cho R_LM32_16_GOT" + #: elf32-m32r.c:1453 msgid "SDA relocation when _SDA_BASE_ not defined" msgstr "định vị lại SDA khi chÆ°a xác định _SDA_BASE_" -#: elf32-m32r.c:3061 +#: elf32-m32r.c:3039 msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)" msgstr "%B: Äích (%s) của má»™t định vị lại %s nằm trong phần sai (%A)" -#: elf32-m32r.c:3589 +#: elf32-m32r.c:3567 msgid "%B: Instruction set mismatch with previous modules" msgstr "%B: Bá»™ chỉ dẫn không tÆ°Æ¡ng ứng vá»›i các mô-Ä‘un trÆ°á»›c" -#: elf32-m32r.c:3610 +#: elf32-m32r.c:3588 #, c-format msgid "private flags = %lx" msgstr "các cá» riêng — %lx" -#: elf32-m32r.c:3615 +#: elf32-m32r.c:3593 #, c-format msgid ": m32r instructions" msgstr ": chỉ dẫn m32r" -#: elf32-m32r.c:3616 +#: elf32-m32r.c:3594 #, c-format msgid ": m32rx instructions" msgstr ": chỉ dẫn m32rx" -#: elf32-m32r.c:3617 +#: elf32-m32r.c:3595 #, c-format msgid ": m32r2 instructions" msgstr ": chỉ dẫn m32r2" -#: elf32-m68hc1x.c:1047 +#: elf32-m68hc1x.c:1048 #, c-format msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution" msgstr "Tham chiếu đến ký hiệu ở xa « %s » khi sá»­ dụng má»™t định vị lại sai thì có thể dẫn đến sá»± thá»±c hiện sai" -#: elf32-m68hc1x.c:1070 +#: elf32-m68hc1x.c:1071 #, c-format msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)" msgstr "địa chỉ đã đặt vào khối nhá»› [%lx:%04lx] (%lx) không trong cùng khối nhá»› vá»›i địa chỉ được đặt hiện thá»i vào khối nhá»› [%lx:%04lx] (%lx)" -#: elf32-m68hc1x.c:1089 +#: elf32-m68hc1x.c:1090 #, c-format msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx" msgstr "tham chiếu đến má»™t địa chỉ đã đặt vào khối nhá»› [%lx:%04lx] trong vùng địa chỉ thông thÆ°á»ng tại %04lx" -#: elf32-m68hc1x.c:1222 +#: elf32-m68hc1x.c:1223 msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers" msgstr "%B: Ä‘ang liên kết các tập tin được biên dịch cho số nguyên 16 bit (-mshort) và các tập tin khác cho số nguyên 32 bit" -#: elf32-m68hc1x.c:1229 +#: elf32-m68hc1x.c:1230 msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double" msgstr "%B: Ä‘ang liên kết các tập tin được biên dịch 32 bit đôi (-mshort) và các tập tin khác cho 64 bit đôi" -#: elf32-m68hc1x.c:1238 +#: elf32-m68hc1x.c:1239 msgid "%B: linking files compiled for HCS12 with others compiled for HC12" msgstr "%B: Ä‘ang liên kết tập tin được biên dịch cho HCS12 vá»›i các tập tin khác biên dịch cho HC12" -#: elf32-m68hc1x.c:1254 elf32-ppc.c:4046 elf64-sparc.c:697 elfxx-mips.c:12561 +#: elf32-m68hc1x.c:1255 elf32-ppc.c:4262 elf64-sparc.c:698 elfxx-mips.c:12617 msgid "%B: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "%B: sá»­ dụng trÆ°á»ng e_flags (0x%lx) khác vá»›i mo-Ä‘un trÆ°á»›c (0x%lx)" -#: elf32-m68hc1x.c:1282 +#: elf32-m68hc1x.c:1283 #, c-format msgid "[abi=32-bit int, " msgstr "[abi=số nguyên 32-bit, " -#: elf32-m68hc1x.c:1284 +#: elf32-m68hc1x.c:1285 #, c-format msgid "[abi=16-bit int, " msgstr "[abi=số nguyên 16-bit, " -#: elf32-m68hc1x.c:1287 +#: elf32-m68hc1x.c:1288 #, c-format msgid "64-bit double, " msgstr "64-bit đôi, " -#: elf32-m68hc1x.c:1289 +#: elf32-m68hc1x.c:1290 #, c-format msgid "32-bit double, " msgstr "32-bit đôi, " -#: elf32-m68hc1x.c:1292 +#: elf32-m68hc1x.c:1293 #, c-format msgid "cpu=HC11]" msgstr "cpu=HC11]" -#: elf32-m68hc1x.c:1294 +#: elf32-m68hc1x.c:1295 #, c-format msgid "cpu=HCS12]" msgstr "cpu=HCS12]" -#: elf32-m68hc1x.c:1296 +#: elf32-m68hc1x.c:1297 #, c-format msgid "cpu=HC12]" msgstr "cpu=HC12]" -#: elf32-m68hc1x.c:1299 +#: elf32-m68hc1x.c:1300 #, c-format msgid " [memory=bank-model]" msgstr " [bá»™ nhá»›=chế Ä‘á»™ khối]" -#: elf32-m68hc1x.c:1301 +#: elf32-m68hc1x.c:1302 #, c-format msgid " [memory=flat]" msgstr " [bá»™ nhá»›=phẳng]" -#: elf32-m68k.c:789 elf32-m68k.c:790 +#: elf32-m68k.c:1184 elf32-m68k.c:1185 msgid "unknown" msgstr "không rõ" -#: elf32-m68k.c:1216 -msgid "%B: GOT overflow: Number of R_68K_GOT8O relocations > %d" -msgstr "%B: tràn GOT: số các bố trí lại kiểu R_68K_GOT8O > %d" - -#: elf32-m68k.c:1221 -msgid "%B: GOT overflow: Number of R_68K_GOT8O and R_68K_GOT16O relocations > %d" -msgstr "%B: tràn GOT: số các bố trí lại kiểu R_68K_GOT8O và R_68K_GOT16O > %d" +#: elf32-m68k.c:1645 +msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d" +msgstr "%B: tràn GOT: số các sá»± định vị lại vá»›i hiệu 8-bit > %d" + +#: elf32-m68k.c:1651 +msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d" +msgstr "%B: tràn GOT: số các sá»± định vị lại vá»›i hiệu 8-bit hay 16-bit > %d" + +#: elf32-m68k.c:3902 +msgid "%B(%A+0x%lx): R_68K_TLS_LE32 relocation not permitted in shared object" +msgstr "%B(%A+0x%lx): R_68K_TLS_LE32 không cho phép định vị lại trong đối tượng chia sẻ" #: elf32-mcore.c:99 elf32-mcore.c:442 msgid "%B: Relocation %s (%d) is not currently supported.\n" @@ -1648,147 +1743,187 @@ msgid "%B and %B are for different configurations" msgstr "%B và %B dành cho cấu hình khác nhau" -#: elf32-mep.c:709 +#: elf32-mep.c:708 #, c-format msgid "private flags = 0x%lx" msgstr "các cá» riêng = 0x%lx" -#: elf32-mips.c:1045 elf64-mips.c:2056 elfn32-mips.c:1888 +#: elf32-microblaze.c:737 +#, c-format +msgid "%s: unknown relocation type %d" +msgstr "%s: không rõ loại định vị lại %d" + +#: elf32-microblaze.c:862 elf32-microblaze.c:907 +#, c-format +msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" +msgstr "%s: Äích (%s) của má»™t sá»± định vị lại %s nằm trong phần không đúng (%s)" + +#: elf32-microblaze.c:1150 elfxx-sparc.c:2957 +msgid "%B: probably compiled without -fPIC?" +msgstr "%B: rất có thể được biên dịch không có « -fPIC » ?" + +#: elf32-microblaze.c:2086 elflink.c:12457 +msgid "%B: bad relocation section name `%s'" +msgstr "%B: tên phần định vị lại sai « %s »" + +#: elf32-mips.c:1045 elf64-mips.c:2083 elfn32-mips.c:1888 msgid "literal relocation occurs for an external symbol" msgstr "định vị lại nghÄ©a chữ xảy ra cho má»™t ký hiệu bên ngoài" -#: elf32-mips.c:1085 elf32-score.c:484 elf64-mips.c:2099 elfn32-mips.c:1929 +#: elf32-mips.c:1085 elf32-score.c:580 elf32-score7.c:480 elf64-mips.c:2126 +#: elfn32-mips.c:1929 msgid "32bits gp relative relocation occurs for an external symbol" msgstr "định vị lại tÆ°Æ¡ng đối 32-bit gp xảy ra cho má»™t ký hiệu bên ngoài" -#: elf32-ppc.c:1681 +#: elf32-ppc.c:1739 #, c-format msgid "generic linker can't handle %s" msgstr "trình liên kết chung không thể xá»­ lý %s" -#: elf32-ppc.c:2161 +#: elf32-ppc.c:2219 msgid "corrupt or empty %s section in %B" msgstr "Gặp phần %s bị há»ng hoặc còn rá»—ng trong %B" -#: elf32-ppc.c:2168 +#: elf32-ppc.c:2226 msgid "unable to read in %s section from %B" msgstr "không thể Ä‘á»c trong phần %s từ %B" -#: elf32-ppc.c:2174 +#: elf32-ppc.c:2232 msgid "corrupt %s section in %B" msgstr "phần %s bị há»ng trong %b" -#: elf32-ppc.c:2217 +#: elf32-ppc.c:2275 msgid "warning: unable to set size of %s section in %B" msgstr "cảnh báo : không thể đặt kích cỡ của phần %s trong %B" -#: elf32-ppc.c:2265 +#: elf32-ppc.c:2323 msgid "failed to allocate space for new APUinfo section." msgstr "lá»—i cấp phát sức chứa cho phần thông tin APUinfo má»›i." -#: elf32-ppc.c:2284 +#: elf32-ppc.c:2342 msgid "failed to compute new APUinfo section." msgstr "lá»—i tính phần thông tin APUinfo má»›i." -#: elf32-ppc.c:2287 +#: elf32-ppc.c:2345 msgid "failed to install new APUinfo section." msgstr "lá»—i cài đặt phần thông tin APUinfo má»›i." -#: elf32-ppc.c:3263 +#: elf32-ppc.c:3379 msgid "%B: relocation %s cannot be used when making a shared object" msgstr "%B: không dùng được định vị lại %s khi tạo má»™t đối tượng chia sẻ" #. It does not make sense to have a procedure linkage #. table entry for a local symbol. -#: elf32-ppc.c:3534 +#: elf32-ppc.c:3732 msgid "%B(%A+0x%lx): %s reloc against local symbol" msgstr "%B(%A+0x%lx): %s định vị lại đối vá»›i ký hiệu cục bá»™" -#: elf32-ppc.c:3885 elf32-ppc.c:3900 elfxx-mips.c:12268 elfxx-mips.c:12294 -#: elfxx-mips.c:12316 elfxx-mips.c:12342 +#: elf32-ppc.c:4074 elf32-ppc.c:4089 elfxx-mips.c:12324 elfxx-mips.c:12350 +#: elfxx-mips.c:12372 elfxx-mips.c:12398 msgid "Warning: %B uses hard float, %B uses soft float" msgstr "Cảnh báo : %B dùng trôi cứng, còn %B dùng trôi má»m" -#: elf32-ppc.c:3888 elf32-ppc.c:3892 +#: elf32-ppc.c:4077 elf32-ppc.c:4081 msgid "Warning: %B uses double-precision hard float, %B uses single-precision hard float" msgstr "Cảnh báo : %B dùng trôi cứng chính xác đôi, còn %B dùng trôi cứng chính xác Ä‘Æ¡n" -#: elf32-ppc.c:3896 +#: elf32-ppc.c:4085 msgid "Warning: %B uses soft float, %B uses single-precision hard float" msgstr "Cảnh báo : %B dùng trôi má»m, còn %B dùng trôi cứng chính xác Ä‘Æ¡n" -#: elf32-ppc.c:3903 elf32-ppc.c:3907 elfxx-mips.c:12248 elfxx-mips.c:12252 +#: elf32-ppc.c:4092 elf32-ppc.c:4096 elfxx-mips.c:12304 elfxx-mips.c:12308 msgid "Warning: %B uses unknown floating point ABI %d" msgstr "Cảnh báo : %B dùng Ä‘iểm trôi không rõ ABI %d" -#: elf32-ppc.c:3949 elf32-ppc.c:3953 +#: elf32-ppc.c:4138 elf32-ppc.c:4142 msgid "Warning: %B uses unknown vector ABI %d" msgstr "Cảnh báo : %B dùng véc-tÆ¡ không nhận ra ABI %d" -#: elf32-ppc.c:3957 +#: elf32-ppc.c:4146 msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\"" msgstr "Cảnh báo : %B dùng véc-tÆ¡ ABI « %s », còn %B dùng « %s »" -#: elf32-ppc.c:4011 +#: elf32-ppc.c:4163 elf32-ppc.c:4166 +msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory" +msgstr "Cảnh báo : %B dùng r3/r4 để trả lại cấu trúc nhá», %B dùng phần nhá»›" + +#: elf32-ppc.c:4169 elf32-ppc.c:4173 +msgid "Warning: %B uses unknown small structure return convention %d" +msgstr "Cảnh báo : %B dùng quy Æ°á»›c trả lại cấu trúc nhá» không rõ %d" + +#: elf32-ppc.c:4227 msgid "%B: compiled with -mrelocatable and linked with modules compiled normally" msgstr "%B: đã biên dịch vá»›i « -mrelocatable » và đã liên kết vá»›i các môđun biên dịch bình thÆ°á»ng" -#: elf32-ppc.c:4019 +#: elf32-ppc.c:4235 msgid "%B: compiled normally and linked with modules compiled with -mrelocatable" msgstr "%B: đã biên dịch bình thÆ°á»ng và đã liên kết vá»›i các môđun biên dịch vá»›i « -mrelocatable »" -#: elf32-ppc.c:4105 +#: elf32-ppc.c:4323 msgid "Using bss-plt due to %B" msgstr "Äang dùng biss-pit do %B" -#: elf32-ppc.c:6418 elf64-ppc.c:10881 +#: elf32-ppc.c:7219 elf64-ppc.c:11541 msgid "%B: unknown relocation type %d for symbol %s" msgstr "%B: không rõ kiểu định vị lại %d cho ký hiệu %s" -#: elf32-ppc.c:6668 +#: elf32-ppc.c:7480 msgid "%B(%A+0x%lx): non-zero addend on %s reloc against `%s'" msgstr "%B(%A+0x%lx): số hạng khác không trên định vị lại %s đối vá»›i « %s »" -#: elf32-ppc.c:7024 elf32-ppc.c:7050 elf32-ppc.c:7109 +#: elf32-ppc.c:7678 elf64-ppc.c:12043 +msgid "%B(%A+0x%lx): relocation %s for indirect function %s unsupported" +msgstr "%B(%A+0x%lx): không há»— trợ sá»± định vị lại %s cho hàm gián tiếp %s" + +#: elf32-ppc.c:7908 elf32-ppc.c:7938 elf32-ppc.c:7985 msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)" msgstr "%B: đích (%s) của má»™t định vị lại %s nằm trong phần kết xuất không đúng (%s)" -#: elf32-ppc.c:7164 +#: elf32-ppc.c:8057 msgid "%B: relocation %s is not yet supported for symbol %s." msgstr "%B: định vị lại %s chÆ°a được há»— trợ cho ký hiệu %s." -#: elf32-ppc.c:7272 elf64-ppc.c:11575 +#: elf32-ppc.c:8165 elf64-ppc.c:12299 msgid "%B(%A+0x%lx): %s reloc against `%s': error %d" msgstr "%B(%A+0x%lx): %s định vị lại đối vá»›i « %s »: lá»—i %d" -#: elf32-s390.c:2246 elf64-s390.c:2220 +#: elf32-ppc.c:8656 +#, c-format +msgid "%s not defined in linker created %s" +msgstr "%s chÆ°a được xác định trong bá»™ liên kết được tạo %s" + +#: elf32-s390.c:2207 elf64-s390.c:2179 msgid "%B(%A+0x%lx): invalid instruction for TLS relocation %s" msgstr "%B(%A+0x%lx): chỉ dẫn không hợp lệ cho định vị lại TLS %s" -#: elf32-score.c:1415 elfxx-mips.c:3273 +#: elf32-score.c:1533 elf32-score7.c:1424 elfxx-mips.c:3299 msgid "not enough GOT space for local GOT entries" msgstr "không đủ sức chứa GOT cho các mục nhập GOT cục bá»™" -#: elf32-score.c:2545 +#: elf32-score.c:2765 +msgid "address not word align" +msgstr "địa chỉ không sắp hàng từ" + +#: elf32-score.c:2850 elf32-score7.c:2685 #, c-format msgid "%s: Malformed reloc detected for section %s" msgstr "%s: định vị lại dạng sai được phát hiện cho phần %s" -#: elf32-score.c:2596 +#: elf32-score.c:2901 elf32-score7.c:2736 msgid "%B: CALL15 reloc at 0x%lx not against global symbol" msgstr "%B: CALL15 định vị lại tại 0x%lx không phải so vá»›i ký hiệu toàn cục" -#: elf32-score.c:3753 +#: elf32-score.c:4042 elf32-score7.c:3879 #, c-format msgid " [pic]" -msgstr " [pic]" +msgstr " [ảnh]" -#: elf32-score.c:3757 +#: elf32-score.c:4046 elf32-score7.c:3883 #, c-format msgid " [fix dep]" msgstr " [sá»­a quan hệ phụ thuá»™c]" -#: elf32-score.c:3799 +#: elf32-score.c:4088 elf32-score7.c:3925 msgid "%B: warning: linking PIC files with non-PIC files" msgstr "%B: cảnh báo : Ä‘ang liên kết tập tin PIC vá»›i tập tin khác PIC" @@ -1800,7 +1935,7 @@ msgid "%B: Unrecognised .directive command: %s" msgstr "%B: Không nhận ra câu lệnh .directive: %s" -#: elf32-sh-symbian.c:504 +#: elf32-sh-symbian.c:503 msgid "%B: Failed to add renamed symbol %s" msgstr "%B: Lá»—i thêm ký hiệu đã đặt tên lại %s" @@ -1836,46 +1971,46 @@ msgid "%B: 0x%lx: fatal: reloc overflow while relaxing" msgstr "%B: 0x%lx: lá»—i nặng: tràn định vị lại trong khi giảm nhẹ" -#: elf32-sh.c:3279 elf64-sh64.c:1526 +#: elf32-sh.c:3270 elf64-sh64.c:1526 msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled" msgstr "Không xá»­ lý được STO_SH5_ISA32 không mong đợi trên ký hiệu cục bá»™" -#: elf32-sh.c:3516 +#: elf32-sh.c:3507 msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation" msgstr "%B: 0x%lx: lá»—i nặng: có đích nhánh chÆ°a sắp hàng cho định vị lại há»— trợ giảm nhẹ" -#: elf32-sh.c:3549 elf32-sh.c:3564 +#: elf32-sh.c:3540 elf32-sh.c:3555 msgid "%B: 0x%lx: fatal: unaligned %s relocation 0x%lx" msgstr "%B: 0x%lx: lá»—i nặng: định vị lại %s chÆ°a sắp hàng 0x%lx" -#: elf32-sh.c:3578 +#: elf32-sh.c:3569 msgid "%B: 0x%lx: fatal: R_SH_PSHA relocation %d not in range -32..32" msgstr "%B: 0x%lx: lá»—i nặng: R_SH_PSHA định vị lại %d không nằm trong phạm vi -32..32" -#: elf32-sh.c:3592 +#: elf32-sh.c:3583 msgid "%B: 0x%lx: fatal: R_SH_PSHL relocation %d not in range -32..32" msgstr "%B: 0x%lx: lá»—i nặng: R_SH_PSHL định vị lại %d không nằm trong phạm vi -32..32" -#: elf32-sh.c:5310 elf64-alpha.c:4552 +#: elf32-sh.c:5256 elf64-alpha.c:4525 msgid "%B: TLS local exec code cannot be linked into shared objects" msgstr "%B: mã thá»±c hiện cục bá»™ TLS không thể được liên kết vào đối tượng chia sẻ" -#: elf32-sh64.c:222 elf64-sh64.c:2345 +#: elf32-sh64.c:222 elf64-sh64.c:2333 #, c-format msgid "%s: compiled as 32-bit object and %s is 64-bit" msgstr "%s: biên dịch nhÆ° má»™t đối tượng 32-bit và %s là 64-bit" -#: elf32-sh64.c:225 elf64-sh64.c:2348 +#: elf32-sh64.c:225 elf64-sh64.c:2336 #, c-format msgid "%s: compiled as 64-bit object and %s is 32-bit" msgstr "%s: biên dịch nhÆ° má»™t đối tượng 64-bit và %s là 32-bit" -#: elf32-sh64.c:227 elf64-sh64.c:2350 +#: elf32-sh64.c:227 elf64-sh64.c:2338 #, c-format msgid "%s: object size does not match that of target %s" msgstr "%s: kích cỡ đối tượng không tÆ°Æ¡ng ứng vá»›i kích cỡ của đích %s" -#: elf32-sh64.c:450 elf64-sh64.c:2888 +#: elf32-sh64.c:450 elf64-sh64.c:2852 #, c-format msgid "%s: encountered datalabel symbol in input" msgstr "%s: gặp ký hiệu nhãn dữ liệu trong dữ liệu nhập vào" @@ -1915,103 +2050,119 @@ msgid "%B: linking little endian files with big endian files" msgstr "%B: Ä‘ang liên kết tập tin vá» cuối nhá» vá»›i tập tin vá» cuối lá»›n" -#: elf32-spu.c:607 +#: elf32-spu.c:713 +msgid "%X%P: overlay section %A does not start on a cache line.\n" +msgstr "%X%P: phần phủ %A không bắt đầu ở má»™t dòng nhá»› tạm.\n" + +#: elf32-spu.c:721 +msgid "%X%P: overlay section %A is larger than a cache line.\n" +msgstr "%X%P: phần phủ %A lá»›n hÆ¡n má»™t dòng nhá»› tạm.\n" + +#: elf32-spu.c:741 +msgid "%X%P: overlay section %A is not in cache area.\n" +msgstr "%X%P: phần phủ %A không phải trong vùng nhá»› tạm.\n" + +#: elf32-spu.c:781 msgid "%X%P: overlay sections %A and %A do not start at the same address.\n" msgstr "%X%P: hai phần phủ %A và %A không bắt đầu ở cùng má»™t địa chỉ.\n" -#: elf32-spu.c:805 +#: elf32-spu.c:1005 msgid "warning: call to non-function symbol %s defined in %B" msgstr "cảnh báo : cuá»™c gá»i ký hiệu khác hàm %s được xác định trong %B" -#: elf32-spu.c:1406 +#: elf32-spu.c:1355 +msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" +msgstr "%A:0x%v lrlive .brinfo (%u) khác vá»›i phân tích (%u)\n" + +#: elf32-spu.c:1874 msgid "%B is not allowed to define %s" msgstr "không cho phép %B xác định %s" -#: elf32-spu.c:1453 +#: elf32-spu.c:1882 +#, c-format +msgid "you are not allowed to define %s in a script" +msgstr "không cho phép bạn xác định %s trong má»™t văn lệnh" + +#: elf32-spu.c:1916 #, c-format msgid "%s in overlay section" msgstr "%s trong phần phủ" -#: elf32-spu.c:1469 +#: elf32-spu.c:1945 msgid "overlay stub relocation overflow" msgstr "tràn định vị lại mẩu phủ" -#: elf32-spu.c:1478 elf64-ppc.c:10078 +#: elf32-spu.c:1954 elf64-ppc.c:10637 msgid "stubs don't match calculated size" msgstr "các mẩu không tÆ°Æ¡ng ứng vá»›i kích cỡ đã tính" -#: elf32-spu.c:1976 +#: elf32-spu.c:2536 #, c-format msgid "warning: %s overlaps %s\n" msgstr "cảnh báo : %s đè lên %s\n" -#: elf32-spu.c:1992 +#: elf32-spu.c:2552 #, c-format msgid "warning: %s exceeds section size\n" msgstr "cảnh báo : %s vượt quá kích cỡ phần\n" -#: elf32-spu.c:2023 +#: elf32-spu.c:2583 msgid "%A:0x%v not found in function table\n" msgstr "%A:0x%v không tìm thấy trong bảng hàm\n" -#: elf32-spu.c:2165 +#: elf32-spu.c:2723 msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n" msgstr "%B(%A+0x%v): gá»i phần khác mã %B(%A), chÆ°a phân tích hoàn toàn\n" -#: elf32-spu.c:2339 -#, c-format -msgid "%A link_order not found\n" -msgstr "%A link_order không tìm thấy\n" - -#: elf32-spu.c:2706 +#: elf32-spu.c:3291 #, c-format msgid "Stack analysis will ignore the call from %s to %s\n" msgstr "Tiến trình phân tích đống sẽ bá» qua cuá»™c gá»i từ %s cho %s\n" -#: elf32-spu.c:3348 +#: elf32-spu.c:3982 msgid " %s: 0x%v\n" msgstr " %s: 0x%v\n" -#: elf32-spu.c:3349 +#: elf32-spu.c:3983 msgid "%s: 0x%v 0x%v\n" msgstr "%s: 0x%v 0x%v\n" -#: elf32-spu.c:3354 +#: elf32-spu.c:3988 msgid " calls:\n" msgstr " cuá»™c gá»i:\n" -#: elf32-spu.c:3362 +#: elf32-spu.c:3996 #, c-format msgid " %s%s %s\n" msgstr " %s%s %s\n" -#: elf32-spu.c:3564 +#: elf32-spu.c:4301 #, c-format msgid "%s duplicated in %s\n" msgstr "%s bị nhân đôi trong %s\n" -#: elf32-spu.c:3568 +#: elf32-spu.c:4305 #, c-format msgid "%s duplicated\n" msgstr "%s bị nhân đôi\n" -#: elf32-spu.c:3575 +#: elf32-spu.c:4312 msgid "sorry, no support for duplicate object files in auto-overlay script\n" msgstr "tiếc là văn lệnh tá»± Ä‘á»™ng phủ không há»— trợ tập tin đối tượng tăng đôi\n" -#: elf32-spu.c:3605 +#: elf32-spu.c:4353 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n" msgstr "kích cỡ khác phủ 0x%v cá»™ng vá»›i kích cỡ phủ tối Ä‘a 0x%v thì vượt quá kho cục bá»™\n" -#: elf32-spu.c:3741 +#: elf32-spu.c:4509 msgid "%B:%A%s exceeds overlay size\n" msgstr "%B:%A%s vượt quá kích cỡ phủ\n" -#: elf32-spu.c:3862 +#: elf32-spu.c:4671 msgid "Stack size for call graph root nodes.\n" msgstr "Kích cỡ đống cho các nút thông tin gốc đồ thị cuá»™c gá»i.\n" -#: elf32-spu.c:3863 +#: elf32-spu.c:4672 msgid "" "\n" "Stack size for functions. Annotations: '*' max stack, 't' tail call\n" @@ -2021,164 +2172,168 @@ " *\tđống tối Ä‘a\n" " t\tcuá»™c gá»i Ä‘uôi\n" -#: elf32-spu.c:3871 +#: elf32-spu.c:4682 msgid "Maximum stack required is 0x%v\n" msgstr "Äống tối Ä‘a cần thiết là 0x%v\n" -#: elf32-spu.c:4067 +#: elf32-spu.c:4773 +msgid "fatal error while creating .fixup" +msgstr "gặp lá»—i nghiêm trá»ng trong khi tạo .fixup" + +#: elf32-spu.c:5011 msgid "%B(%s+0x%lx): unresolvable %s relocation against symbol `%s'" msgstr "%B(%s+0x%lx): không thể giải quyết định vị lại %s so vá»›i ký hiệu « %s »" -#: elf32-v850.c:165 +#: elf32-v850.c:163 #, c-format msgid "Variable `%s' cannot occupy in multiple small data regions" msgstr "Biến « %s » không thể chiếm nhiá»u vùng dữ liệu nhá»" -#: elf32-v850.c:168 +#: elf32-v850.c:166 #, c-format msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions" msgstr "Biến « %s » chỉ có thể nằm trong má»™t của vùng dữ liệu kiểu nhá», số không và rất nhá»" -#: elf32-v850.c:171 +#: elf32-v850.c:169 #, c-format msgid "Variable `%s' cannot be in both small and zero data regions simultaneously" msgstr "Biến « %s » không thể nằm đồng thá»i trong cả hai vùng dữ liệu kiểu nhá» và số không" -#: elf32-v850.c:174 +#: elf32-v850.c:172 #, c-format msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously" msgstr "Biến « %s » không thể nằm đồng thá»i trong cả hai vùng dữ liệu kiểu nhá» và rất nhá»" -#: elf32-v850.c:177 +#: elf32-v850.c:175 #, c-format msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously" msgstr "Biến « %s » không thể nằm đồng thá»i trong cả hai vùng dữ liệu kiểu rất nhá» và số không" -#: elf32-v850.c:480 +#: elf32-v850.c:478 #, c-format msgid "FAILED to find previous HI16 reloc\n" msgstr "Lá»–I tìm định vị lại HI16 trÆ°á»›c\n" -#: elf32-v850.c:1715 +#: elf32-v850.c:1713 msgid "could not locate special linker symbol __gp" msgstr "không tìm thấy ký hiệu liên kết đặc biệt __gp" -#: elf32-v850.c:1719 +#: elf32-v850.c:1717 msgid "could not locate special linker symbol __ep" msgstr "không tìm thấy ký hiệu liên kết đặc biệt __ep" -#: elf32-v850.c:1723 +#: elf32-v850.c:1721 msgid "could not locate special linker symbol __ctbp" msgstr "không tìm thấy ký hiệu liên kết đặc biệt __ctbp" -#: elf32-v850.c:1873 +#: elf32-v850.c:1871 msgid "%B: Architecture mismatch with previous modules" msgstr "%B: sai khá»›p kiến trúc vá»›i mô-Ä‘un khác" -#: elf32-v850.c:1892 +#: elf32-v850.c:1890 #, c-format msgid "private flags = %lx: " msgstr "các cá» riêng — %lx: " -#: elf32-v850.c:1897 +#: elf32-v850.c:1895 #, c-format msgid "v850 architecture" msgstr "Kiến trúc v850" -#: elf32-v850.c:1898 +#: elf32-v850.c:1896 #, c-format msgid "v850e architecture" msgstr "Kiến trúc v850e" -#: elf32-v850.c:1899 +#: elf32-v850.c:1897 #, c-format msgid "v850e1 architecture" msgstr "Kiến trúc v850e1" -#: elf32-vax.c:541 +#: elf32-vax.c:543 #, c-format msgid " [nonpic]" msgstr " [khác pic]" -#: elf32-vax.c:544 +#: elf32-vax.c:546 #, c-format msgid " [d-float]" msgstr " [trôi d]" -#: elf32-vax.c:547 +#: elf32-vax.c:549 #, c-format msgid " [g-float]" msgstr " [trôi g]" -#: elf32-vax.c:657 +#: elf32-vax.c:666 #, c-format msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld" msgstr "%s: cảnh báo : số hạng GOT của %ld cho « %s » không tÆ°Æ¡ng ứng vá»›i số hạng GOT trÆ°á»›c của %ld" -#: elf32-vax.c:1589 +#: elf32-vax.c:1608 #, c-format msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored" msgstr "%s: cảnh báo : số hạng PLT của %d cho « %s » từ phần %s bị bá» qua" -#: elf32-vax.c:1726 +#: elf32-vax.c:1735 #, c-format msgid "%s: warning: %s relocation against symbol `%s' from %s section" msgstr "%s: cảnh báo : định vị lại %s so vá»›i ký hiệu « %s » từ phần %s" -#: elf32-vax.c:1732 +#: elf32-vax.c:1741 #, c-format msgid "%s: warning: %s relocation to 0x%x from %s section" msgstr "%s: cảnh báo : định vị lại %s sang 0x%x từ phần %s" -#: elf32-xstormy16.c:451 elf32-ia64.c:2794 elf64-ia64.c:2794 +#: elf32-xstormy16.c:451 elf32-ia64.c:2791 elf64-ia64.c:2791 msgid "non-zero addend in @fptr reloc" msgstr "số hạng khác không trong định vị lại @fptr" -#: elf32-xtensa.c:911 +#: elf32-xtensa.c:912 msgid "%B(%A): invalid property table" msgstr "%B(%A): bảng thuá»™c tính sai" -#: elf32-xtensa.c:2734 +#: elf32-xtensa.c:2740 msgid "%B(%A+0x%lx): relocation offset out of range (size=0x%x)" msgstr "%B(%A+0x%lx): khoảng bù định vị lại ở ngoại phạm vi (kích cỡ=0x%x)" -#: elf32-xtensa.c:2813 elf32-xtensa.c:2934 +#: elf32-xtensa.c:2819 elf32-xtensa.c:2940 msgid "dynamic relocation in read-only section" msgstr "định vị lại Ä‘á»™ng trong vùng chỉ Ä‘á»c" -#: elf32-xtensa.c:2910 +#: elf32-xtensa.c:2916 msgid "TLS relocation invalid without dynamic sections" msgstr "Äịnh vị lại TLS không hợp lệ mà không có phần Ä‘á»™ng" -#: elf32-xtensa.c:3127 +#: elf32-xtensa.c:3133 msgid "internal inconsistency in size of .got.loc section" msgstr "sá»± mâu thuẫn ná»™i bá»™ trong kích cỡ của phần .got.loc" -#: elf32-xtensa.c:3437 +#: elf32-xtensa.c:3443 msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x" msgstr "%B: kiểu máy không tÆ°Æ¡ng thích. Kết xuất là 0x%x. Dữ liệu nhập vào là 0x%x." -#: elf32-xtensa.c:4666 elf32-xtensa.c:4674 +#: elf32-xtensa.c:4672 elf32-xtensa.c:4680 msgid "Attempt to convert L32R/CALLX to CALL failed" msgstr "Lá»—i thá»­ chuyển đổi L32R/CALLX sang CALL" -#: elf32-xtensa.c:6276 elf32-xtensa.c:6352 elf32-xtensa.c:7468 +#: elf32-xtensa.c:6290 elf32-xtensa.c:6366 elf32-xtensa.c:7482 msgid "%B(%A+0x%lx): could not decode instruction; possible configuration mismatch" msgstr "%B(%A+0x%lx): không thể giải mã chỉ dẫn; có thể sai khá»›p cấu hình" -#: elf32-xtensa.c:7208 +#: elf32-xtensa.c:7222 msgid "%B(%A+0x%lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch" msgstr "%B(%A+0x%lx): không thể giải mã chỉ dẫn cho định vị lại XTENSA_ASM_SIMPLIFY; có thể sai khá»›p cấu hình" -#: elf32-xtensa.c:8969 +#: elf32-xtensa.c:8983 msgid "invalid relocation address" msgstr "địa chỉ định vị lại không hợp lệ" -#: elf32-xtensa.c:9018 +#: elf32-xtensa.c:9032 msgid "overflow after relaxation" msgstr "tràn sau khi giảm nhẹ" -#: elf32-xtensa.c:10154 +#: elf32-xtensa.c:10163 msgid "%B(%A+0x%lx): unexpected fix for %s relocation" msgstr "%B(%A+0x%lx): sá»­a chữa bất thÆ°á»ng cho định vị lại %s" @@ -2186,51 +2341,55 @@ msgid "GPDISP relocation did not find ldah and lda instructions" msgstr "Äịnh vị lại GPDISP không tìm thấy các chỉ dẫn ldah và lda" -#: elf64-alpha.c:2416 +#: elf64-alpha.c:2389 msgid "%B: .got subsegment exceeds 64K (size %d)" msgstr "%B: Ä‘oạn phụ .got vượt quá 64 K (kích cỡ %d)" -#: elf64-alpha.c:4296 elf64-alpha.c:4308 +#: elf64-alpha.c:4269 elf64-alpha.c:4281 msgid "%B: gp-relative relocation against dynamic symbol %s" msgstr "%B: định vị lại tÆ°Æ¡ng đối vá»›i gp (gp-relative) so vá»›i ký hiệu Ä‘á»™ng %s" -#: elf64-alpha.c:4334 elf64-alpha.c:4469 +#: elf64-alpha.c:4307 elf64-alpha.c:4442 msgid "%B: pc-relative relocation against dynamic symbol %s" msgstr "%B: định vị lại tÆ°Æ¡ng đối vá»›i pc (pc-relative) so vá»›i ký hiệu Ä‘á»™ng %s" -#: elf64-alpha.c:4362 +#: elf64-alpha.c:4335 msgid "%B: change in gp: BRSGP %s" msgstr "%B: thay đổi trong gp: BRSGP %s" -#: elf64-alpha.c:4387 +#: elf64-alpha.c:4360 msgid "" msgstr "" -#: elf64-alpha.c:4392 +#: elf64-alpha.c:4365 msgid "%B: !samegp reloc against symbol without .prologue: %s" msgstr "%B: định vị lại !samegp so vá»›i ký hiệu không có .prologue: %s" -#: elf64-alpha.c:4444 +#: elf64-alpha.c:4417 msgid "%B: unhandled dynamic relocation against %s" msgstr "%B: không xá»­ lý được định vị lại Ä‘á»™ng so vá»›i %s" -#: elf64-alpha.c:4476 +#: elf64-alpha.c:4449 msgid "%B: pc-relative relocation against undefined weak symbol %s" msgstr "%B: định vị lại tÆ°Æ¡ng đối vá»›i pc (pc-relative) so vá»›i ký hiệu yếu chÆ°a được xác định %s" -#: elf64-alpha.c:4536 +#: elf64-alpha.c:4509 msgid "%B: dtp-relative relocation against dynamic symbol %s" msgstr "%B: định vị lại tÆ°Æ¡ng đối vá»›i dtp (dtp-relative) so vá»›i ký hiệu Ä‘á»™ng %s" -#: elf64-alpha.c:4559 +#: elf64-alpha.c:4532 msgid "%B: tp-relative relocation against dynamic symbol %s" msgstr "%B: định vị lại tÆ°Æ¡ng đối vá»›i tp (tp-relative) so vá»›i ký hiệu Ä‘á»™ng %s" -#: elf64-hppa.c:2071 +#: elf64-hppa.c:2091 #, c-format msgid "stub entry for %s cannot load .plt, dp offset = %ld" msgstr "mục nhập mẩu cho %s không thể nạp .plt, khoảng bù dp = %ld" +#: elf64-hppa.c:3273 +msgid "%B(%A+0x%lx): cannot reach %s" +msgstr "%B(%A+0x%lx): không thể tá»›i %s" + #: elf64-mmix.c:1177 #, c-format msgid "" @@ -2293,65 +2452,65 @@ "Sá»± mâu thuẫn ná»™i bá»™ : còn lại %u != tối Ä‘a %u.\n" " Hãy thông báo lá»—i này." -#: elf64-ppc.c:2561 libbfd.c:978 +#: elf64-ppc.c:2691 libbfd.c:978 msgid "%B: compiled for a big endian system and target is little endian" msgstr "%B: được biên dịch cho má»™t hệ thống vá» cuối lá»›n, còn đích vá» cuối nhá»" -#: elf64-ppc.c:2564 libbfd.c:980 +#: elf64-ppc.c:2694 libbfd.c:980 msgid "%B: compiled for a little endian system and target is big endian" msgstr "%B: được biên dịch cho má»™t hệ thống vá» cuối nhá», còn đích vá» cuối lá»›n" -#: elf64-ppc.c:6065 +#: elf64-ppc.c:6384 #, c-format msgid "copy reloc against `%s' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc" msgstr "định vị lại sao chép so vá»›i « %s » thì cần thiết chức năng liên kết plt uể oải; hãy tránh đặtLD_BIND_NOW=1, hoặc nân cấp GCC" -#: elf64-ppc.c:6486 +#: elf64-ppc.c:6811 msgid "dynreloc miscount for %B, section %A" msgstr "sai đếm định vị lại Ä‘á»™ng cho %B, phần %A" -#: elf64-ppc.c:6570 +#: elf64-ppc.c:6895 msgid "%B: .opd is not a regular array of opd entries" msgstr "%B: .opd không phải là má»™t mảng chính quy các mục nhập opd" -#: elf64-ppc.c:6579 +#: elf64-ppc.c:6904 msgid "%B: unexpected reloc type %u in .opd section" msgstr "%B: gặp kiểu định vị lại bất thÆ°á»ng %u trong phần .opd" -#: elf64-ppc.c:6600 +#: elf64-ppc.c:6925 msgid "%B: undefined sym `%s' in .opd section" msgstr "%B: gặp sym (liên kết má»m?) chÆ°a được xác định « %s » trong phần .opd" -#: elf64-ppc.c:7377 elf64-ppc.c:7754 +#: elf64-ppc.c:7767 elf64-ppc.c:8144 #, c-format msgid "%s defined in removed toc entry" msgstr "%s được xác định trong mục nhập toc bị gỡ bá»" -#: elf64-ppc.c:8581 +#: elf64-ppc.c:9085 #, c-format msgid "long branch stub `%s' offset overflow" msgstr "mẩu nhánh dài « %s » tràn khoảng bù" -#: elf64-ppc.c:8640 +#: elf64-ppc.c:9144 #, c-format msgid "can't find branch stub `%s'" msgstr "không tìm thấy mẩu nhánh « %s »" -#: elf64-ppc.c:8702 elf64-ppc.c:8822 +#: elf64-ppc.c:9206 elf64-ppc.c:9342 #, c-format msgid "linkage table error against `%s'" msgstr "lá»—i bảng liên kết so vá»›i « %s »" -#: elf64-ppc.c:8978 +#: elf64-ppc.c:9510 #, c-format msgid "can't build branch stub `%s'" msgstr "không thể xây dá»±ng mẩu nhánh « %s »" -#: elf64-ppc.c:9451 +#: elf64-ppc.c:9995 msgid "%B section %A exceeds stub group size" msgstr "%B phần %A vượt quá kích cỡ nhóm mẩu" -#: elf64-ppc.c:10090 +#: elf64-ppc.c:10649 #, c-format msgid "" "linker stubs in %u group%s\n" @@ -2368,19 +2527,19 @@ " Ä‘iá»u chỉnh toc dài\t\t%lu\n" " cuá»™c gá»i pit\t\t\t%lu" -#: elf64-ppc.c:10769 +#: elf64-ppc.c:11428 msgid "%B(%A+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc" msgstr "%B(%A+0x%lx): tá»± Ä‘á»™ng tạo nhiá»u TOC không được há»— trợ khi dùng các tập tin CRT của bạn; hãy biên dịch lại vá»›i « -mminimal-toc », hoặc nâng cấp GCC" -#: elf64-ppc.c:10777 +#: elf64-ppc.c:11436 msgid "%B(%A+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern" msgstr "%B(%A+0x%lx): tối Æ°u hoá cuá»™c gá»i cùng chá»— cho « %s » không cho phép tá»± Ä‘á»™ng tạo nhiá»u TOC; hãy biên dịch lại vá»›i « -mminimal-toc » hoặc « -fno-optimize-sibling-calls », hoặc làm cho « %s » là bên ngoài" -#: elf64-ppc.c:11427 +#: elf64-ppc.c:12150 msgid "%B: relocation %s is not supported for symbol %s." msgstr "%B: không há»— trợ định vị lại %s cho ký hiệu %s." -#: elf64-ppc.c:11509 +#: elf64-ppc.c:12233 msgid "%B: error: relocation %s not a multiple of %d" msgstr "%B: lá»—i: định vị lại %s không phải là bá»™i số cho %d" @@ -2405,45 +2564,45 @@ msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B" msgstr "Ký hiệu « %s » có các kiểu khác hau: %s trong %b, trÆ°á»›c là REGISTER (thanh ghi) trong %B" -#: elf64-sparc.c:678 +#: elf64-sparc.c:679 msgid "%B: linking UltraSPARC specific with HAL specific code" msgstr "%B: Ä‘ang liên kết UltraSPARC dứt khoát vá»›i mã đặc trÆ°ng cho HAL" -#: elf64-x86-64.c:1047 elf64-x86-64.c:1207 elfxx-mips.c:7834 -msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC" -msgstr "%B: định vị lại %s so vá»›i « %s » không thể được dùng khi tạo má»™t đối tượng chia sẻ; hãy biên dịch lại vá»›i « -fPIC »" - -#: elf64-x86-64.c:1138 +#: elf64-x86-64.c:1338 msgid "%B: '%s' accessed both as normal and thread local symbol" msgstr "%B; « %s » được truy cập nhÆ° là ký hiệu cả hai kiểu bình thÆ°á»ng và mạch cục bá»™" -#: elf64-x86-64.c:2559 +#: elf64-x86-64.c:2702 +msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %d" +msgstr "%B: sá»± định vị lại %s đối vá»›i ký hiệu STT_GNU_IFUNC « %s » có phần cá»™ng khác số không: %d" + +#: elf64-x86-64.c:2981 msgid "%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object" msgstr "%B: định vị lại R_X86_64_GOTOFF64 so vá»›i hàm đã bảo vệ « %s » thì không thể được dùng khi tạo má»™t đối tượng chia sẻ" -#: elf64-x86-64.c:2670 +#: elf64-x86-64.c:3092 msgid "; recompile with -fPIC" msgstr "; biên dịch lại vá»›i « -fPIC »" -#: elf64-x86-64.c:2675 +#: elf64-x86-64.c:3097 msgid "%B: relocation %s against %s `%s' can not be used when making a shared object%s" msgstr "%B: không dùng được định vị lại %s đối vá»›i %s « %s » khi tạo má»™t đối tượng chia sẻ %s" -#: elf64-x86-64.c:2677 +#: elf64-x86-64.c:3099 msgid "%B: relocation %s against undefined %s `%s' can not be used when making a shared object%s" msgstr "%B: không dùng được định vị lại %s đối vá»›i %s chÆ°a xác định « %s » khi tạo má»™t đối tượng chia sẻ %s" -#: elfcode.h:795 +#: elfcode.h:811 #, c-format msgid "warning: %s has a corrupt string table index - ignoring" msgstr "cảnh báo : %s có má»™t chỉ mục bảng chuá»—i bị há»ng: nên bá» qua" -#: elfcode.h:1201 +#: elfcode.h:1217 #, c-format msgid "%s: version count (%ld) does not match symbol count (%ld)" msgstr "%s: số đếm phiên bản (%ld) không tÆ°Æ¡ng ứng vá»›i số đếm ký hiệu (%ld)" -#: elfcode.h:1435 +#: elfcode.h:1457 #, c-format msgid "%s(%s): relocation %d has invalid symbol index %ld" msgstr "%s(%s): định vị lại %d có chỉ mục ký hiệu không hợp lệ %ld" @@ -2452,305 +2611,313 @@ msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu." msgstr "Cảnh báo : %B bị cắt ngắn: kích cỡ tập tin lõi mong đợi ≥%lu còn tìm %lu." -#: elflink.c:1028 +#: elflink.c:1113 msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A" msgstr "%s: lá»i định nghÄ©a TLS trong %B phần %A không tÆ°Æ¡ng ứng vá»›i lá»i định nghÄ©a TLS trong %B phần %A" -#: elflink.c:1032 +#: elflink.c:1117 msgid "%s: TLS reference in %B mismatches non-TLS reference in %B" msgstr "%s: lá»i định nghÄ©a TLS trong %B không tÆ°Æ¡ng ứng vá»›i lá»i định nghÄ©a khác TLS trong %B" -#: elflink.c:1036 +#: elflink.c:1121 msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B" msgstr "%s: lá»i định nghÄ©a TLS trong %B phần %A không tÆ°Æ¡ng ứng vá»›i lá»i định nghÄ©a khác TLS trong %B" -#: elflink.c:1040 +#: elflink.c:1125 msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A" msgstr "%s: lá»i định nghÄ©a TLS trong %B không tÆ°Æ¡ng ứng vá»›i lá»i định nghÄ©a khác TLS trong %B phần %A" -#: elflink.c:1654 +#: elflink.c:1764 msgid "%B: unexpected redefinition of indirect versioned symbol `%s'" msgstr "%B: gặp lá»i định nghÄ©a lại bất thÆ°á»ng của ký hiệu gián tiếp đặt phiên bản « %s »" -#: elflink.c:1982 +#: elflink.c:2077 msgid "%B: version node not found for symbol %s" msgstr "%B: không tìm thấy nút thông tin phiên bản cho ký hiệu %s" -#: elflink.c:2130 +#: elflink.c:2167 msgid "%B: bad reloc symbol index (0x%lx >= 0x%lx) for offset 0x%lx in section `%A'" msgstr "%B: chỉ mục ký hiệu định vị lại sai (0x%lx ≥ 0x%lx) cho khoảng bù 0x%lx trong phần « %A »" -#: elflink.c:2327 +#: elflink.c:2178 +msgid "%B: non-zero symbol index (0x%lx) for offset 0x%lx in section `%A' when the object file has no symbol table" +msgstr "%B: chỉ mục ký hiệu khác số không (0x%lx) cho hiệu 0x%lx trong phần « %A » mà tập tin đối tượng không có bảng ký hiệu" + +#: elflink.c:2376 msgid "%B: relocation size mismatch in %B section %A" msgstr "%B: sai khá»›p kích cỡ định vị lại trong %B phần %A" -#: elflink.c:2629 +#: elflink.c:2679 #, c-format msgid "warning: type and size of dynamic symbol `%s' are not defined" msgstr "cảnh báo : chÆ°a xác định kiểu và kích cỡ của ký hiệu Ä‘á»™ng « %s »" -#: elflink.c:3953 +#: elflink.c:3425 +msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n" +msgstr "%P: mã máy ELF luân phiên được tìm (%d) trong %B, còn mong đợi %d\n" + +#: elflink.c:4033 msgid "%B: %s: invalid version %u (max %d)" msgstr "%B: %s: phiên bản không hợp lệ %u (tối Ä‘a %d)" -#: elflink.c:3989 +#: elflink.c:4069 msgid "%B: %s: invalid needed version %d" msgstr "%B: %s: phiên bản cần thiết mà không hợp lệ %d" -#: elflink.c:4172 +#: elflink.c:4254 msgid "Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %A" msgstr "Cảnh báo : vị trí sắp hàng %u của ký hiệu dùng chung « %s » trong %B là lá»›n hÆ¡n vị trí sắp hàng (%u) của phần %A của nó" -#: elflink.c:4178 +#: elflink.c:4260 msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B" msgstr "Cảnh báo : vị trí sắp hàng %u của ký hiệu « %s » trong %B là nhá» hÆ¡n %u trong %B" -#: elflink.c:4193 +#: elflink.c:4275 msgid "Warning: size of symbol `%s' changed from %lu in %B to %lu in %B" msgstr "Cảnh báo : kích cỡ của ký hiệu « %s » đã thay đổi từ %lu trong %B thành %lu trong %B" -#: elflink.c:4371 +#: elflink.c:4440 #, c-format msgid "%s: invalid DSO for symbol `%s' definition" msgstr "%s: DSO không hợp lệ cho lá»i định nghÄ©a ký hiệu « %s »" -#: elflink.c:5621 +#: elflink.c:5692 #, c-format msgid "%s: undefined version: %s" msgstr "%s: phiên bản chÆ°a được xác định: %s" -#: elflink.c:5689 +#: elflink.c:5760 msgid "%B: .preinit_array section is not allowed in DSO" msgstr "%B: không cho phép phần « .preinit_array » trong DSO" -#: elflink.c:7414 +#: elflink.c:7493 #, c-format msgid "undefined %s reference in complex symbol: %s" msgstr "gặp tham chiếu %s chÆ°a được xác định trong ký hiệu phức tạp %s" -#: elflink.c:7568 +#: elflink.c:7647 #, c-format msgid "unknown operator '%c' in complex symbol" msgstr "không rõ toán tá»­ « %c » trong ký hiệu phức tạp" -#: elflink.c:7904 elflink.c:7921 elflink.c:7958 elflink.c:7975 +#: elflink.c:7985 elflink.c:8002 elflink.c:8039 elflink.c:8056 msgid "%B: Unable to sort relocs - they are in more than one size" msgstr "%B: Không thể sắp xếp các sá»± định vị lại: chúng có kích cỡ khác nhau" -#: elflink.c:7935 elflink.c:7989 +#: elflink.c:8016 elflink.c:8070 msgid "%B: Unable to sort relocs - they are of an unknown size" msgstr "%B: Không thể sắp xếp các sá»± định vị lại: chúng có kích cỡ không rõ" -#: elflink.c:8038 +#: elflink.c:8121 msgid "Not enough memory to sort relocations" msgstr "Không đủ bá»™ nhá»› để sắp xếp các sá»± định vị lại" -#: elflink.c:8227 +#: elflink.c:8314 msgid "%B: Too many sections: %d (>= %d)" msgstr "%B: Quá nhiá»u phần: %d (≥ %d)" -#: elflink.c:8461 +#: elflink.c:8550 msgid "%B: %s symbol `%s' in %B is referenced by DSO" msgstr "%B: %s ký hiệu « %s » trong %B được DSO tham chiếu" -#: elflink.c:8544 +#: elflink.c:8635 msgid "%B: could not find output section %A for input section %A" msgstr "%B: không thể tìm thấy phần kết xuất %A cho phần dữ liệu nhập vào %A" -#: elflink.c:8655 +#: elflink.c:8755 msgid "%B: %s symbol `%s' isn't defined" msgstr "%B: %s: chÆ°a xác định ký hiệu « %s »" -#: elflink.c:9141 +#: elflink.c:9311 msgid "error: %B contains a reloc (0x%s) for section %A that references a non-existent global symbol" msgstr "lá»—i: %B chứa má»™t định vị lại (0x%s) cho phần %A mà tham chiếu đến má»™t ký hiệu toàn cục không tồn tại" -#: elflink.c:9205 +#: elflink.c:9376 msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n" msgstr "%X« %s » được tham chiếu trong phần « %A » của %B: được định nghÄ©a trong phần bị hủy « %A » của %B\n" -#: elflink.c:9825 +#: elflink.c:10001 msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections" msgstr "%A có phần cả hai được sắp xếp [« %A » trong %B] và chÆ°a sắp xếp [« %A » trong %B]" -#: elflink.c:9830 +#: elflink.c:10006 #, c-format msgid "%A has both ordered and unordered sections" msgstr "%A có phần cả hai được sắp xếp và chÆ°a sắp xếp" -#: elflink.c:10715 elflink.c:10759 +#: elflink.c:10882 elflink.c:10926 msgid "%B: could not find output section %s" msgstr "%B: không tìm thấy phần kết xuất %s" -#: elflink.c:10720 +#: elflink.c:10887 #, c-format msgid "warning: %s section has zero size" msgstr "cảnh báo : phần %s có kích cỡ số không" -#: elflink.c:10824 +#: elflink.c:10992 msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n" msgstr "%P: cảnh báo : Ä‘ang tạo má»™t DT_TEXTREL trong má»™t đối tượng chia sẻ.\n" -#: elflink.c:11006 +#: elflink.c:11175 msgid "%P%X: can not read symbols: %E\n" msgstr "%P%X: không thể Ä‘á»c các ký hiệu : %E\n" -#: elflink.c:11313 +#: elflink.c:11494 msgid "Removing unused section '%s' in file '%B'" msgstr "Äang gỡ bá» phần không dùng « %s » trong tập tin « %B »" -#: elflink.c:11525 +#: elflink.c:11706 msgid "Warning: gc-sections option ignored" msgstr "Cảnh báo : tùy chá»n gc-sections bị bá» qua" -#: elflink.c:12056 +#: elflink.c:12255 msgid "%B: ignoring duplicate section `%A'" msgstr "%B: Ä‘ang bá» qua phần trùng « %A »" -#: elflink.c:12063 elflink.c:12070 +#: elflink.c:12262 elflink.c:12269 msgid "%B: duplicate section `%A' has different size" msgstr "%B: phần trùng « %A » có kích cỡ khác" -#: elflink.c:12078 elflink.c:12083 +#: elflink.c:12277 elflink.c:12282 msgid "%B: warning: could not read contents of section `%A'" msgstr "%B: cảnh báo : không thể Ä‘á»c ná»™i dung của phần « %A »" -#: elflink.c:12087 +#: elflink.c:12286 msgid "%B: warning: duplicate section `%A' has different contents" msgstr "%B: cảnh báo : phần trùng « %A » có ná»™i dung khác" -#: elflink.c:12166 linker.c:3080 -msgid "%F%P: already_linked_table: %E" -msgstr "%F%P: already_linked_table: %E" +#: elflink.c:12387 linker.c:3104 +msgid "%F%P: already_linked_table: %E\n" +msgstr "%F%P: already_linked_table: %E\n" -#: elfxx-mips.c:1197 +#: elfxx-mips.c:1222 msgid "static procedure (no name)" msgstr "thủ tục tÄ©nh (không có tên)" -#: elfxx-mips.c:5562 +#: elfxx-mips.c:5588 msgid "%B: %A+0x%lx: jump to stub routine which is not jal" msgstr "%B: %A+0x%lx: nhảy tá»›i hàm mẩu mà không phải jal" -#: elfxx-mips.c:6206 elfxx-mips.c:6427 +#: elfxx-mips.c:6235 elfxx-mips.c:6458 msgid "%B: Warning: bad `%s' option size %u smaller than its header" msgstr "%B: Cảnh báo : kích cỡ tùy chá»n « %s » sai: nhá» hÆ¡n phần đầu của nó" -#: elfxx-mips.c:7174 elfxx-mips.c:7299 +#: elfxx-mips.c:7205 elfxx-mips.c:7330 msgid "%B: Warning: cannot determine the target function for stub section `%s'" msgstr "%B: cảnh báo : không thể quyết định hàm đích cho phần mẩu « %s »" -#: elfxx-mips.c:7428 +#: elfxx-mips.c:7459 msgid "%B: Malformed reloc detected for section %s" msgstr "%B: Phát hiện sá»± định vị lại dạng sai cho phần %s" -#: elfxx-mips.c:7468 +#: elfxx-mips.c:7499 msgid "%B: GOT reloc at 0x%lx not expected in executables" msgstr "%B: định vị lại GOT ở 0x%lx không mong đợi trong tập tin có khả năng thá»±c hiện" -#: elfxx-mips.c:7566 +#: elfxx-mips.c:7602 msgid "%B: CALL16 reloc at 0x%lx not against global symbol" msgstr "%B: định vị lại CALL16 ở 0x%lx không phải so vá»›i ký hiệu toàn cục" -#: elfxx-mips.c:8244 +#: elfxx-mips.c:8280 #, c-format msgid "non-dynamic relocations refer to dynamic symbol %s" msgstr "định vị lại khác Ä‘á»™ng cÅ©ng tham chiếu đến ký hiệu Ä‘á»™ng %s" -#: elfxx-mips.c:8947 +#: elfxx-mips.c:8985 msgid "%B: Can't find matching LO16 reloc against `%s' for %s at 0x%lx in section `%A'" msgstr "%B: Không tìm thấy định vị lại LO16 tÆ°Æ¡ng ứng so vá»›i « %s » cho %s ở 0x%lx trong phần « %A »" -#: elfxx-mips.c:9086 +#: elfxx-mips.c:9124 msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)" msgstr "Phần small-data (dữ liệu nhá») vượt quá 64 KB; hãy giảm giá»›i hạn dữ liệu nhá» (xem tùy chá»n « -G »)" -#: elfxx-mips.c:11887 +#: elfxx-mips.c:11940 #, c-format msgid "%s: illegal section name `%s'" msgstr "%s: tên phần cấm « %s »" -#: elfxx-mips.c:12262 elfxx-mips.c:12288 +#: elfxx-mips.c:12318 elfxx-mips.c:12344 msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float" msgstr "Cảnh báo : %B dùng « -msingle-float », còn %B dùng « -mdouble-float »" -#: elfxx-mips.c:12274 elfxx-mips.c:12330 +#: elfxx-mips.c:12330 elfxx-mips.c:12386 msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64" msgstr "Cảnh báo : %B dùng « -msingle-float », còn %B dùng « -mips32r2 -mfp64 »" -#: elfxx-mips.c:12300 elfxx-mips.c:12336 +#: elfxx-mips.c:12356 elfxx-mips.c:12392 msgid "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64" msgstr "Cảnh báo : %B dùng « -mdouble-float », còn %B dùng « -mips32r2 -mfp64 »" -#: elfxx-mips.c:12378 +#: elfxx-mips.c:12434 msgid "%B: endianness incompatible with that of the selected emulation" msgstr "%B: tình trạng vá» cuối không tÆ°Æ¡ng thích vá»›i cái của bản mô phá»ng đã chá»n" -#: elfxx-mips.c:12389 +#: elfxx-mips.c:12445 msgid "%B: ABI is incompatible with that of the selected emulation" msgstr "%B: ABI không tÆ°Æ¡ng thích vá»›i cái của bản mô phá»ng đã chá»n" -#: elfxx-mips.c:12470 +#: elfxx-mips.c:12526 msgid "%B: warning: linking abicalls files with non-abicalls files" msgstr "%B: cảnh báo : Ä‘ang liên kết tập tin abicalls vá»›i tập tin khác abicalls" -#: elfxx-mips.c:12487 +#: elfxx-mips.c:12543 msgid "%B: linking 32-bit code with 64-bit code" msgstr "%B: Ä‘ang liên kết mã 32-bit vá»›i mã 64-bit" -#: elfxx-mips.c:12515 +#: elfxx-mips.c:12571 msgid "%B: linking %s module with previous %s modules" msgstr "%B: Ä‘ang liên kết mô-Ä‘un %s vá»›i các mô-Ä‘un %s trÆ°á»›c" -#: elfxx-mips.c:12538 +#: elfxx-mips.c:12594 msgid "%B: ABI mismatch: linking %s module with previous %s modules" msgstr "%B: sai khá»›p ABI: Ä‘ang liên kết mô-Ä‘un %s vá»›i các mô-Ä‘un %s trÆ°á»›c" -#: elfxx-mips.c:12702 +#: elfxx-mips.c:12758 #, c-format msgid " [abi=O32]" msgstr " [abi=O32]" -#: elfxx-mips.c:12704 +#: elfxx-mips.c:12760 #, c-format msgid " [abi=O64]" msgstr " [abi=O64]" -#: elfxx-mips.c:12706 +#: elfxx-mips.c:12762 #, c-format msgid " [abi=EABI32]" msgstr " [abi=EABI32]" -#: elfxx-mips.c:12708 +#: elfxx-mips.c:12764 #, c-format msgid " [abi=EABI64]" msgstr " [abi=EABI64]" -#: elfxx-mips.c:12710 +#: elfxx-mips.c:12766 #, c-format msgid " [abi unknown]" msgstr " [abi không rõ]" -#: elfxx-mips.c:12712 +#: elfxx-mips.c:12768 #, c-format msgid " [abi=N32]" msgstr " [abi=N32]" -#: elfxx-mips.c:12714 +#: elfxx-mips.c:12770 #, c-format msgid " [abi=64]" msgstr " [abi=64]" -#: elfxx-mips.c:12716 +#: elfxx-mips.c:12772 #, c-format msgid " [no abi set]" msgstr " [chÆ°a đặt abi]" -#: elfxx-mips.c:12737 +#: elfxx-mips.c:12793 #, c-format msgid " [unknown ISA]" msgstr " [không rõ ISA]" -#: elfxx-mips.c:12748 +#: elfxx-mips.c:12804 #, c-format msgid " [not 32bitmode]" msgstr " [không phải 32bitmode]" @@ -2760,10 +2927,6 @@ msgid "invalid relocation type %d" msgstr "kiểu định vị lại không hợp lệ %d" -#: elfxx-sparc.c:2976 -msgid "%B: probably compiled without -fPIC?" -msgstr "%B: rất có thể được biên dịch không có « -fPIC » ?" - #: i386linux.c:455 m68klinux.c:459 sparclinux.c:453 #, c-format msgid "Output file requires shared library `%s'\n" @@ -2842,7 +3005,7 @@ msgid "%B: bad section length in ihex_read_section" msgstr "%B: gặp chiá»u dài phần sai trong ihex_read_section" -#: ihex.c:825 +#: ihex.c:826 #, c-format msgid "%s: address 0x%s out of range for Intel Hex file" msgstr "%s: địa chỉ 0x%s ở ngoại phạm vi đối vá»›i tập tin thập lục Intel" @@ -2857,24 +3020,84 @@ msgid "Deprecated %s called\n" msgstr "%s bị phản đối được gá»i\n" -#: linker.c:1874 +#: linker.c:1877 msgid "%B: indirect symbol `%s' to `%s' is a loop" msgstr "%B: ký hiệu gián tiếp « %s » tá»›i « %s » thì tạo má»™t vòng lặp" -#: linker.c:2740 +#: linker.c:2744 #, c-format msgid "Attempt to do relocatable link with %s input and %s output" msgstr "Thá»­ làm liên kết có khả năng định vị lại vá»›i đầu vào %s và đầu ra %s" -#: linker.c:3047 +#: linker.c:3071 msgid "%B: warning: ignoring duplicate section `%A'\n" msgstr "%B: cảnh báo : Ä‘ang bá» qua phần trùng « %A »\n" -#: linker.c:3061 +#: linker.c:3085 msgid "%B: warning: duplicate section `%A' has different size\n" msgstr "%B: cảnh báo : phần trùng « %A » có kích cỡ khác\n" -#: merge.c:828 +#: mach-o.c:3195 +#, c-format +msgid "Mach-O header:\n" +msgstr "Phần đầu Mach-O :\n" + +#: mach-o.c:3196 +#, c-format +msgid " magic : %08lx\n" +msgstr " ma thuật : %08lx\n" + +#: mach-o.c:3197 +#, c-format +msgid " cputype : %08lx (%s)\n" +msgstr " kiểu CPU : %08lx (%s)\n" + +#: mach-o.c:3199 +#, c-format +msgid " cpusubtype: %08lx\n" +msgstr " kiểu phụ CPU : %08lx\n" + +#: mach-o.c:3200 +#, c-format +msgid " filetype : %08lx (%s)\n" +msgstr " kiểu tập tin : %08lx (%s)\n" + +#: mach-o.c:3203 +#, c-format +msgid " ncmds : %08lx\n" +msgstr " ncmds : %08lx\n" + +#: mach-o.c:3204 +#, c-format +msgid " sizeofcmds: %08lx\n" +msgstr " kích cỡ cmds : %08lx\n" + +#: mach-o.c:3205 +#, c-format +msgid " flags : %08lx (" +msgstr " cá» : %08lx (" + +#: mach-o.c:3207 +#, c-format +msgid ")\n" +msgstr ")\n" + +#: mach-o.c:3208 +#, c-format +msgid " reserved : %08x\n" +msgstr " dành riêng : %08x\n" + +#: mach-o.c:3218 +#, c-format +msgid "Segments and Sections:\n" +msgstr "Äoạn và Phần:\n" + +#: mach-o.c:3219 +#, c-format +msgid " #: Segment name Section name Address\n" +msgstr " #: Tên Ä‘oạn Tên phần Äịa chỉ\n" + +#: merge.c:831 #, c-format msgid "%s: access beyond end of merged section (%ld)" msgstr "%s: truy cập vượt quá kết thúc của phần đã gá»™p lại (%ld)" @@ -3014,7 +3237,7 @@ msgid "Unhandled OSF/1 core file section type %d\n" msgstr "Kiểu phần tập tin lõi OSF/1 không được quản lý %d\n" -#: pe-mips.c:607 +#: pe-mips.c:613 msgid "%B: `ld -r' not supported with PE MIPS objects\n" msgstr "%B: « ld -r » không được há»— trợ vá»›i đối tượng MIPS PE\n" @@ -3022,44 +3245,64 @@ #. 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:723 +#: pe-mips.c:729 msgid "%B: unimplemented %s\n" msgstr "%B: %s chÆ°a được thá»±c hiện\n" -#: pe-mips.c:749 +#: pe-mips.c:755 msgid "%B: jump too far away\n" msgstr "%B: bÆ°á»›c nhảy quá xa\n" -#: pe-mips.c:775 +#: pe-mips.c:781 msgid "%B: bad pair/reflo after refhi\n" msgstr "%B: pair/reflo sai đằng sau refhi\n" +#: pei-x86_64.c:465 +#, c-format +msgid "warning: .pdata section size (%ld) is not a multiple of %d\n" +msgstr "cảnh báo : kích cỡ phần .pdata (%ld) không phải là bá»™i số cho %d\n" + +#: pei-x86_64.c:469 peigen.c:1620 peigen.c:1799 pepigen.c:1620 pepigen.c:1799 +#: pex64igen.c:1620 pex64igen.c:1799 +#, c-format +msgid "" +"\n" +"The Function Table (interpreted .pdata section contents)\n" +msgstr "" +"\n" +"Bảng Hàm (phiên dịch ná»™i dung phần .pdata)\n" + +#: pei-x86_64.c:471 +#, c-format +msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" +msgstr "vma:\t\t\tÄịa chi đầu Äịa chỉ cuối Thông tin tháo ra\n" + #. XXX code yet to be written. -#: peicode.h:759 +#: peicode.h:751 msgid "%B: Unhandled import type; %x" msgstr "%B: Kiểu nhập không được quản lý; %x" -#: peicode.h:764 +#: peicode.h:756 msgid "%B: Unrecognised import type; %x" msgstr "%B: Kiểu nhập không được nhận ra; %x" -#: peicode.h:778 +#: peicode.h:770 msgid "%B: Unrecognised import name type; %x" msgstr "%B: Kiểu tên nhập không được nhận ra; %x" -#: peicode.h:1161 +#: peicode.h:1160 msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive" msgstr "%B: Kiểu máy không được nhận ra (0x%x) trong kho lÆ°u Äịnh dạng ThÆ° viện Nhập" -#: peicode.h:1173 +#: peicode.h:1172 msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive" msgstr "%B: Kiểu máy được nhận ra còn không được quản lý (0x%x) trong kho lÆ°u Äịnh dạng ThÆ° viện Nhập" -#: peicode.h:1191 +#: peicode.h:1190 msgid "%B: size field is zero in Import Library Format header" msgstr "%B: trÆ°á»ng kích cỡ là số không trong phần đầu Äịnh dạng ThÆ° viện Nhập" -#: peicode.h:1222 +#: peicode.h:1221 msgid "%B: string not null terminated in ILF object file." msgstr "%B: chuá»—i không phải kết thúc vô hiệu lá»±c trong tập tin đối tượng ILF. " @@ -3116,7 +3359,7 @@ msgid "Partition[%d] length = 0x%.8lx (%ld)\n" msgstr "Phân vùng[%d] dài = 0x%.8lx (%ld)\n" -#: som.c:5137 +#: som.c:5114 #, c-format msgid "" "\n" @@ -3125,7 +3368,7 @@ "\n" "Phần đầu phụ thá»±c hiện\n" -#: som.c:5440 +#: som.c:5417 msgid "som_sizeof_headers unimplemented" msgstr "som_sizeof_headers chÆ°a được thá»±c hiện" @@ -3141,122 +3384,173 @@ msgid "%B(%A+0x%lx): Stabs entry has invalid string index." msgstr "%B(%A+0x%lx): Mục nhập Stabs có chỉ mục chuá»—i không hợp lệ." -#: syms.c:1067 +#: syms.c:1079 msgid "Unsupported .stab relocation" msgstr "Äịnh vị lại .stab không được há»— trợ" -#: vms-gsd.c:338 +#: vms-gsd.c:350 #, c-format msgid "bfd_make_section (%s) failed" msgstr "bfd_make_section (%s) bị lá»—i" -#: vms-gsd.c:353 +#: vms-gsd.c:365 #, c-format msgid "bfd_set_section_flags (%s, %x) failed" msgstr "bfd_set_section_flags (%s, %x) bị lá»—i" -#: vms-gsd.c:388 +#: vms-gsd.c:399 #, c-format msgid "Size mismatch section %s=%lx, %s=%lx" msgstr "Sai khá»›p phần %s=%lx, %s=%lx" -#: vms-gsd.c:679 +#: vms-gsd.c:754 #, c-format -msgid "unknown gsd/egsd subtype %d" -msgstr "Không rõ kiểu phụ gsd/egsd %d" +msgid "Unknown GSD/EGSD subtype %d" +msgstr "Không rõ kiểu phụ GSD/EGSD %d" -#: vms-hdr.c:328 +#: vms-hdr.c:364 msgid "Object module NOT error-free !\n" msgstr "Mô-Ä‘un đối tượng KHÔNG phải miá»…n lá»—i !\n" -#: vms-misc.c:474 +#: vms-hdr.c:878 +#, c-format +msgid "unknown source command %d" +msgstr "không rõ câu lệnh nguồn %d" + +#: vms-hdr.c:951 +msgid "DST_S_C_SET_LINUM_INCR not implemented" +msgstr "DST_S_C_SET_LINUM_INCR chÆ°a được thá»±c hiện" + +#: vms-hdr.c:957 +msgid "DST_S_C_SET_LINUM_INCR_W not implemented" +msgstr "DST_S_C_SET_LINUM_INCR_W chÆ°a được thá»±c hiện" + +#: vms-hdr.c:963 +msgid "DST_S_C_RESET_LINUM_INCR not implemented" +msgstr "DST_S_C_RESET_LINUM_INCR chÆ°a được thá»±c hiện" + +#: vms-hdr.c:969 +msgid "DST_S_C_BEG_STMT_MODE not implemented" +msgstr "DST_S_C_BEG_STMT_MODE chÆ°a được thá»±c hiện" + +#: vms-hdr.c:975 +msgid "DST_S_C_END_STMT_MODE not implemented" +msgstr "DST_S_C_END_STMT_MODE chÆ°a được thá»±c hiện" + +#: vms-hdr.c:1008 +msgid "DST_S_C_SET_PC not implemented" +msgstr "DST_S_C_SET_PC chÆ°a được thá»±c hiện" + +#: vms-hdr.c:1014 +msgid "DST_S_C_SET_PC_W not implemented" +msgstr "DST_S_C_SET_PC_W chÆ°a được thá»±c hiện" + +#: vms-hdr.c:1020 +msgid "DST_S_C_SET_PC_L not implemented" +msgstr "DST_S_C_SET_PC_L chÆ°a được thá»±c hiện" + +#: vms-hdr.c:1026 +msgid "DST_S_C_SET_STMTNUM not implemented" +msgstr "DST_S_C_SET_STMTNUM chÆ°a được thá»±c hiện" + +#: vms-hdr.c:1079 +#, c-format +msgid "unknown line command %d" +msgstr "không rõ câu lệnh dòng %d" + +#: vms-misc.c:588 #, c-format msgid "Stack overflow (%d) in _bfd_vms_push" msgstr "Tràn đống (%d) trong _bfd_vms_push" -#: vms-misc.c:489 +#: vms-misc.c:603 msgid "Stack underflow in _bfd_vms_pop" msgstr "Trán ngược đống trong _bfd_vms_pop" -#: vms-misc.c:808 +#: vms-misc.c:844 msgid "_bfd_vms_output_counted called with zero bytes" msgstr "_bfd_vms_output_counted được gá»i vá»›i số không byte" -#: vms-misc.c:813 +#: vms-misc.c:849 msgid "_bfd_vms_output_counted called with too many bytes" msgstr "_bfd_vms_output_counted được gá»i vá»›i quá nhiá»u byte" -#: vms-misc.c:931 +#: vms-misc.c:967 #, c-format msgid "Symbol %s replaced by %s\n" msgstr "Ký hiệu %s đã bị thay thế bằng %s\n" -#: vms-misc.c:990 +#: vms-misc.c:1026 #, c-format msgid "failed to enter %s" msgstr "lá»—i vào %s" -#: vms-tir.c:57 +#: vms-tir.c:83 msgid "No Mem !" msgstr "Không có Mem !" -#: vms-tir.c:300 +#. These names have not yet been added to this switch statement. +#: vms-tir.c:346 +#, c-format +msgid "unknown ETIR command %d" +msgstr "không rõ câu lệnh ETIR %d" + +#: vms-tir.c:440 #, c-format msgid "bad section index in %s" msgstr "chỉ mục phần sai trong %s" -#: vms-tir.c:313 +#: vms-tir.c:459 #, c-format msgid "unsupported STA cmd %s" msgstr "câu lệnh STA không được há»— trợ %s" -#: vms-tir.c:318 vms-tir.c:1120 +#: vms-tir.c:464 vms-tir.c:1304 #, c-format msgid "reserved STA cmd %d" msgstr "câu lệnh STA dành riêng %d" -#: vms-tir.c:410 vms-tir.c:432 -#, c-format -msgid "%s: no symbol \"%s\"" -msgstr "%s: không có ký hiệu « %s »" - #. Unsigned shift. #. Rotate. #. Redefine symbol to current location. #. Define a literal. -#: vms-tir.c:497 vms-tir.c:606 vms-tir.c:704 vms-tir.c:721 vms-tir.c:728 -#: vms-tir.c:736 vms-tir.c:1440 +#: vms-tir.c:655 vms-tir.c:774 vms-tir.c:894 vms-tir.c:1624 #, c-format msgid "%s: not supported" msgstr "%s: không được há»— trợ" -#: vms-tir.c:502 vms-tir.c:1297 +#: vms-tir.c:661 vms-tir.c:1481 #, c-format msgid "%s: not implemented" msgstr "%s: chÆ°a được thá»±c hiện" -#: vms-tir.c:506 vms-tir.c:1301 +#: vms-tir.c:666 vms-tir.c:1485 #, c-format msgid "reserved STO cmd %d" msgstr "câu lệnh STO dành riêng %d" -#: vms-tir.c:621 vms-tir.c:1445 +#: vms-tir.c:789 vms-tir.c:1629 #, c-format msgid "reserved OPR cmd %d" msgstr "câu lệnh OPR dành riêng %d" -#: vms-tir.c:681 vms-tir.c:1509 +#: vms-tir.c:852 vms-tir.c:1693 #, c-format msgid "reserved CTL cmd %d" msgstr "câu lệnh CTL dành riêng %d" +#: vms-tir.c:966 +#, c-format +msgid "reserved STC cmd %d" +msgstr "câu lệnh STC dành riêng %d" + #. stack byte from image #. arg: none. -#: vms-tir.c:1028 +#: vms-tir.c:1212 msgid "stack-from-image not implemented" msgstr "stack-from-image chÆ°a được thá»±c hiện" -#: vms-tir.c:1046 +#: vms-tir.c:1230 msgid "stack-entry-mask not fully implemented" msgstr "stack-entry-mask chÆ°a được thá»±c hiện hoàn toàn" @@ -3267,270 +3561,285 @@ #. #. compare argument descriptor with symbol argument (ARG$V_PASSMECH) #. and stack TRUE (args match) or FALSE (args dont match) value. -#: vms-tir.c:1060 +#: vms-tir.c:1244 msgid "PASSMECH not fully implemented" msgstr "PASSMECH chÆ°a được thá»±c hiện hoàn toàn" -#: vms-tir.c:1079 +#: vms-tir.c:1263 msgid "stack-local-symbol not fully implemented" msgstr "stack-local-symbol chÆ°a được thá»±c hiện hoàn toàn" -#: vms-tir.c:1092 +#: vms-tir.c:1276 msgid "stack-literal not fully implemented" msgstr "stack-literal chÆ°a được thá»±c hiện hoàn toàn" -#: vms-tir.c:1113 +#: vms-tir.c:1297 msgid "stack-local-symbol-entry-point-mask not fully implemented" msgstr "stack-local-symbol-entry-point-mask chÆ°a được thá»±c hiện hoàn toàn" -#: vms-tir.c:1387 vms-tir.c:1399 vms-tir.c:1411 vms-tir.c:1423 vms-tir.c:1488 -#: vms-tir.c:1496 vms-tir.c:1504 +#: vms-tir.c:1571 vms-tir.c:1583 vms-tir.c:1595 vms-tir.c:1607 vms-tir.c:1672 +#: vms-tir.c:1680 vms-tir.c:1688 #, c-format msgid "%s: not fully implemented" msgstr "%s: chÆ°a được thá»±c hiện hoàn toàn" -#: vms-tir.c:1562 +#: vms-tir.c:1746 #, c-format msgid "obj code %d not found" msgstr "Không tìm thấy mã đối tượng %d" -#: vms-tir.c:1870 +#: vms-tir.c:2019 +#, c-format +msgid "Reloc size error in section %s" +msgstr "Gặp lá»—i kích cỡ sá»± định vị lại trong phần %s" + +#: vms-tir.c:2112 vms-tir.c:2129 vms-tir.c:2147 vms-tir.c:2159 vms-tir.c:2170 +#: vms-tir.c:2182 +#, c-format +msgid "Unknown reloc %s + %s" +msgstr "Không rõ sá»± định vị lại %s + %s" + +#: vms-tir.c:2249 +#, c-format +msgid "Unknown symbol %s in command %s" +msgstr "Gặp ký hiệu lạ %s trong câu lệnh %s" + +#: vms-tir.c:2504 #, c-format msgid "SEC_RELOC with no relocs in section %s" msgstr "SEC_RELOC không có định vị lại trong phần %s" -#: vms-tir.c:2152 +#: vms-tir.c:2556 vms-tir.c:2783 +#, c-format +msgid "Size error in section %s" +msgstr "Gặp lá»—i kích cỡ trong phần %s" + +#: vms-tir.c:2725 +msgid "Spurious ALPHA_R_BSR reloc" +msgstr "Gặp sá»± định vị lại ALPHA_R_BSR giả" + +#: vms-tir.c:2770 #, c-format msgid "Unhandled relocation %s" msgstr "Äịnh vị lại không được quản lý %s" -#: xcofflink.c:566 +#: xcofflink.c:836 #, c-format msgid "%s: XCOFF shared object when not producing XCOFF output" msgstr "%s: có đối tượng dùng chung XCOFF khi không xuất dữ liệu XCOFF" -#: xcofflink.c:587 +#: xcofflink.c:857 #, c-format msgid "%s: dynamic object with no .loader section" msgstr "%s đối tượng Ä‘á»™ng không có phần .loader" -#: xcofflink.c:1150 +#: xcofflink.c:1415 msgid "%B: `%s' has line numbers but no enclosing section" msgstr "%B: « %s » có số thứ tá»± dòng mà không có phần bao bá»c" -#: xcofflink.c:1202 +#: xcofflink.c:1467 msgid "%B: class %d symbol `%s' has no aux entries" msgstr "%B: hạng %d ký hiệu « %s » không có mục nhập phụ" -#: xcofflink.c:1225 +#: xcofflink.c:1489 msgid "%B: symbol `%s' has unrecognized csect type %d" msgstr "%B: ký hiệu « %s » có kiểu csect không được nhận ra %d" -#: xcofflink.c:1237 +#: xcofflink.c:1501 msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" msgstr "%B: ký hiệu XTY_ER sai « %s » hạng %d scnum %d scnlen %d" -#: xcofflink.c:1273 +#: xcofflink.c:1530 msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d" msgstr "%B: ký hiệu XMC_TC0 « %s » là hạng %d scnlen %d" -#: xcofflink.c:1419 +#: xcofflink.c:1676 msgid "%B: csect `%s' not in enclosing section" msgstr "%B: csect « %s » không phải trong phần bao bá»c" -#: xcofflink.c:1526 +#: xcofflink.c:1783 msgid "%B: misplaced XTY_LD `%s'" msgstr "%B: không đúng chá»— XTY_LD « %s »" -#: xcofflink.c:1842 +#: xcofflink.c:2102 msgid "%B: reloc %s:%d not in csect" msgstr "%B: định vị lại %s:%d không phải trong csect" -#: xcofflink.c:2640 +#: xcofflink.c:3177 #, c-format msgid "%s: no such symbol" msgstr "%s: không có ký hiệu nhÆ° vậy" -#: xcofflink.c:2869 +#: xcofflink.c:3282 #, c-format msgid "warning: attempt to export undefined symbol `%s'" msgstr "cảnh báo : thá»­ xuất ký hiệu chÆ°a được xác định « %s »" -#: xcofflink.c:3036 +#: xcofflink.c:3664 msgid "error: undefined symbol __rtinit" msgstr "lá»—i: chÆ°a xác định ký hiệu __rtinit" -#: xcofflink.c:3656 -#, c-format -msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" -msgstr "Tràn TOC: 0x%lx > 0x10000; hãy thá»­ « -mminimal-toc » khi biên dịch" - -#: xcofflink.c:4492 -msgid "%B: loader reloc in unrecognized section `%A'" -msgstr "%B: định vị lại bá»™ nạp trong phần không được nhận ra « %A »" +#: xcofflink.c:4041 +msgid "%B: loader reloc in unrecognized section `%s'" +msgstr "%B: gặp sá»± định vị lại bá»™ nạp trong phần không được nhận ra « %s »" -#: xcofflink.c:4513 +#: xcofflink.c:4052 msgid "%B: `%s' in loader reloc but not loader sym" msgstr "%B: « %s » trong định vị lại bá»™ nạp nhÆ°ng không phải liên kết má»m đến bá»™ nạp" -#: xcofflink.c:4528 +#: xcofflink.c:4068 msgid "%B: loader reloc in read-only section %A" msgstr "%B: định vị lại bá»™ nạp trong phần chỉ Ä‘á»c %A" -#: xcofflink.c:4937 xcofflink.c:4999 xcofflink.c:5294 -#, c-format -msgid "%s: loader reloc in unrecognized section `%s'" -msgstr "%s: định vị lại bá»™ nạp trong phần không được nhận ra « %s »" - -#: xcofflink.c:5305 +#: xcofflink.c:5086 #, c-format -msgid "%s: `%s' in loader reloc but not loader sym" -msgstr "%s: « %s » trong định vị lại bá»™ nạp nhÆ°ng không phải liên kết má»m đến bá»™ nạp" +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "Tràn TOC: 0x%lx > 0x10000; hãy thá»­ « -mminimal-toc » khi biên dịch" -#: elf32-ia64.c:1037 elf64-ia64.c:1037 +#: elf32-ia64.c:1050 elf64-ia64.c:1050 msgid "%B: Can't relax br at 0x%lx in section `%A'. Please use brl or indirect branch." msgstr "%B: Không thể giảm nhẹ br ở 0x%lx trong phần « %A ». Hãy dùng brl hoặc nhánh gián tiếp." -#: elf32-ia64.c:2742 elf64-ia64.c:2742 +#: elf32-ia64.c:2739 elf64-ia64.c:2739 msgid "@pltoff reloc against local symbol" msgstr "định vị lại @pltoff so vá»›i ký hiệu cục bá»™" -#: elf32-ia64.c:4317 elf64-ia64.c:4317 +#: elf32-ia64.c:4314 elf64-ia64.c:4314 #, c-format msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" msgstr "%s: tràn Ä‘oạn dữ liệu ngắn (0x%lx ≥ 0x400000)" -#: elf32-ia64.c:4328 elf64-ia64.c:4328 +#: elf32-ia64.c:4325 elf64-ia64.c:4325 #, c-format msgid "%s: __gp does not cover short data segment" msgstr "%s: __gp không trải ra Ä‘oạn dữ liệu ngắn" -#: elf32-ia64.c:4598 elf64-ia64.c:4598 +#: elf32-ia64.c:4595 elf64-ia64.c:4595 msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'" msgstr "%B: mã khác pic vá»›i định vị lại imm so vá»›i ký hiệu Ä‘á»™ng « %s »" -#: elf32-ia64.c:4665 elf64-ia64.c:4665 +#: elf32-ia64.c:4662 elf64-ia64.c:4662 msgid "%B: @gprel relocation against dynamic symbol %s" msgstr "%B: định vị lại @gprel so vá»›i ký hiệu Ä‘á»™ng « %s »" -#: elf32-ia64.c:4728 elf64-ia64.c:4728 +#: elf32-ia64.c:4725 elf64-ia64.c:4725 msgid "%B: linking non-pic code in a position independent executable" msgstr "%B: Ä‘ang liên kết mã khác pin trong má»™t tập tin có khả năng thá»±c hiện mà không phụ thuá»™c vào vị trí" -#: elf32-ia64.c:4865 elf64-ia64.c:4865 +#: elf32-ia64.c:4862 elf64-ia64.c:4862 msgid "%B: @internal branch to dynamic symbol %s" msgstr "%B: nhánh @internal (ná»™i bá»™) tá»›i ký hiệu Ä‘á»™ng %s" -#: elf32-ia64.c:4867 elf64-ia64.c:4867 +#: elf32-ia64.c:4864 elf64-ia64.c:4864 msgid "%B: speculation fixup to dynamic symbol %s" msgstr "%B: sá»± sá»­a chữa suy Ä‘oán so vá»›i ký hiệu Ä‘á»™ng %s" -#: elf32-ia64.c:4869 elf64-ia64.c:4869 +#: elf32-ia64.c:4866 elf64-ia64.c:4866 msgid "%B: @pcrel relocation against dynamic symbol %s" msgstr "%B: định vị lại @pcrel so vá»›i ký hiệu Ä‘á»™ng %s" -#: elf32-ia64.c:5066 elf64-ia64.c:5066 +#: elf32-ia64.c:5063 elf64-ia64.c:5063 msgid "unsupported reloc" msgstr "định vị lại không được há»— trợ" -#: elf32-ia64.c:5104 elf64-ia64.c:5104 +#: elf32-ia64.c:5101 elf64-ia64.c:5101 msgid "%B: missing TLS section for relocation %s against `%s' at 0x%lx in section `%A'." msgstr "%B: thiếu phần TLS để định vị lại %s đối vá»›i « %s » ở 0x%lx trong phần « %A »." -#: elf32-ia64.c:5119 elf64-ia64.c:5119 +#: elf32-ia64.c:5116 elf64-ia64.c:5116 msgid "%B: Can't relax br (%s) to `%s' at 0x%lx in section `%A' with size 0x%lx (> 0x1000000)." msgstr "%B: Không thể giảm nhẹ br (%s) tá»›i « %s » tại 0x%lx trong phần « %A » vá»›i kích cỡ 0x%lx (> 0x1000000)." -#: elf32-ia64.c:5375 elf64-ia64.c:5375 +#: elf32-ia64.c:5372 elf64-ia64.c:5372 msgid "%B: linking trap-on-NULL-dereference with non-trapping files" msgstr "%B: Ä‘ang liên kết trap-on-NULL-dereference vá»›i tập tin không đặt bẫy" -#: elf32-ia64.c:5384 elf64-ia64.c:5384 +#: elf32-ia64.c:5381 elf64-ia64.c:5381 msgid "%B: linking big-endian files with little-endian files" msgstr "%B: Ä‘ang liên kết tập tin vá» cuối lá»›n vá»›i tập tin vá» cuối nhá»" -#: elf32-ia64.c:5393 elf64-ia64.c:5393 +#: elf32-ia64.c:5390 elf64-ia64.c:5390 msgid "%B: linking 64-bit files with 32-bit files" msgstr "%B: Ä‘ang liên kết tập tin 64-bit vá»›i tập tin 32-bit" -#: elf32-ia64.c:5402 elf64-ia64.c:5402 +#: elf32-ia64.c:5399 elf64-ia64.c:5399 msgid "%B: linking constant-gp files with non-constant-gp files" msgstr "%B: Ä‘ang liên kết tập tin constant-gp vá»›i tập tin non-constant-gp" -#: elf32-ia64.c:5412 elf64-ia64.c:5412 +#: elf32-ia64.c:5409 elf64-ia64.c:5409 msgid "%B: linking auto-pic files with non-auto-pic files" msgstr "%B: Ä‘ang liên kết tập tin auto-pic vá»›i tập tin non-auto-pic" -#: peigen.c:1000 pepigen.c:1000 pex64igen.c:1000 +#: peigen.c:999 pepigen.c:999 pex64igen.c:999 #, c-format msgid "%s: line number overflow: 0x%lx > 0xffff" msgstr "%s: tràn số thứ tá»± dòng: 0x%lx > 0xffff" -#: peigen.c:1027 pepigen.c:1027 pex64igen.c:1027 +#: peigen.c:1026 pepigen.c:1026 pex64igen.c:1026 msgid "Export Directory [.edata (or where ever we found it)]" msgstr "ThÆ° mục Xuất [.edata (hoặc ở nÆ¡i nào chúng ta đã tìm nó)]" -#: peigen.c:1028 pepigen.c:1028 pex64igen.c:1028 +#: peigen.c:1027 pepigen.c:1027 pex64igen.c:1027 msgid "Import Directory [parts of .idata]" msgstr "ThÆ° mục Nhập [các phần của .idata]" -#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 +#: peigen.c:1028 pepigen.c:1028 pex64igen.c:1028 msgid "Resource Directory [.rsrc]" msgstr "ThÆ° mục Tài nguyên [.rsrc]" -#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 +#: peigen.c:1029 pepigen.c:1029 pex64igen.c:1029 msgid "Exception Directory [.pdata]" msgstr "ThÆ° mục Ngoại lệ [.pdata]" -#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 +#: peigen.c:1030 pepigen.c:1030 pex64igen.c:1030 msgid "Security Directory" msgstr "ThÆ° mục Bảo mật" -#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 +#: peigen.c:1031 pepigen.c:1031 pex64igen.c:1031 msgid "Base Relocation Directory [.reloc]" msgstr "ThÆ° mục Äịnh vị lại CÆ¡ bản [.reloc]" -#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 +#: peigen.c:1032 pepigen.c:1032 pex64igen.c:1032 msgid "Debug Directory" msgstr "ThÆ° mục Gỡ lá»—i" -#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 +#: peigen.c:1033 pepigen.c:1033 pex64igen.c:1033 msgid "Description Directory" msgstr "ThÆ° mục Mô tả" -#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 +#: peigen.c:1034 pepigen.c:1034 pex64igen.c:1034 msgid "Special Directory" msgstr "ThÆ° mục Äặc biệt" -#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 +#: peigen.c:1035 pepigen.c:1035 pex64igen.c:1035 msgid "Thread Storage Directory [.tls]" msgstr "ThÆ° mục LÆ°u trữ Mạch [.tls]" -#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 +#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036 msgid "Load Configuration Directory" msgstr "ThÆ° mục Cấu hình Nạp" -#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 +#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037 msgid "Bound Import Directory" msgstr "ThÆ° mục Nhập đã Äóng kết" -#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 +#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038 msgid "Import Address Table Directory" msgstr "ThÆ° mục Bảng Äịa chỉ Nhập" -#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 +#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039 msgid "Delay Import Directory" msgstr "ThÆ° mục Nhập Hoãn" -#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 +#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040 msgid "CLR Runtime Header" msgstr "Phần đầu Lúc chạy CLR" -#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042 +#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041 msgid "Reserved" msgstr "Dành riêng" -#: peigen.c:1102 pepigen.c:1102 pex64igen.c:1102 +#: peigen.c:1101 pepigen.c:1101 pex64igen.c:1101 #, c-format msgid "" "\n" @@ -3539,7 +3848,7 @@ "\n" "Có má»™t bảng nhập, nhÆ°ng không tìm thấy phần chứa nó\n" -#: peigen.c:1107 pepigen.c:1107 pex64igen.c:1107 +#: peigen.c:1106 pepigen.c:1106 pex64igen.c:1106 #, c-format msgid "" "\n" @@ -3548,7 +3857,7 @@ "\n" "Có má»™t bảng nhập trong %s tại 0x%lx\n" -#: peigen.c:1150 pepigen.c:1150 pex64igen.c:1150 +#: peigen.c:1149 pepigen.c:1149 pex64igen.c:1149 #, c-format msgid "" "\n" @@ -3557,12 +3866,12 @@ "\n" "Bá»™ mô tả hàm được tìm tại địa chỉ đầu : %04lx\n" -#: peigen.c:1153 pepigen.c:1153 pex64igen.c:1153 +#: peigen.c:1152 pepigen.c:1152 pex64igen.c:1152 #, c-format msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" msgstr "\tcÆ¡ bản mã %08lx toc (nạp được/thật) %08lx/%08lx\n" -#: peigen.c:1161 pepigen.c:1161 pex64igen.c:1161 +#: peigen.c:1160 pepigen.c:1160 pex64igen.c:1160 #, c-format msgid "" "\n" @@ -3571,7 +3880,7 @@ "\n" "Không có phần reldata ! Vì thế chÆ°a giải mã bá»™ mô tả hàm.\n" -#: peigen.c:1166 pepigen.c:1166 pex64igen.c:1166 +#: peigen.c:1165 pepigen.c:1165 pex64igen.c:1165 #, c-format msgid "" "\n" @@ -3580,7 +3889,7 @@ "\n" "Các Bảng Nhập (phiên dịch %s ná»™i dung phần)\n" -#: peigen.c:1169 pepigen.c:1169 pex64igen.c:1169 +#: peigen.c:1168 pepigen.c:1168 pex64igen.c:1168 #, c-format msgid "" " vma: Hint Time Forward DLL First\n" @@ -3589,7 +3898,7 @@ " vma: Gợi ý Giá» Tiếp DLL Äầu\n" " Bảng Nhãn Dây Tên Thunk\n" -#: peigen.c:1217 pepigen.c:1217 pex64igen.c:1217 +#: peigen.c:1216 pepigen.c:1216 pex64igen.c:1216 #, c-format msgid "" "\n" @@ -3598,12 +3907,12 @@ "\n" "\tTên DLL: %s\n" -#: peigen.c:1228 pepigen.c:1228 pex64igen.c:1228 +#: peigen.c:1227 pepigen.c:1227 pex64igen.c:1227 #, c-format msgid "\tvma: Hint/Ord Member-Name Bound-To\n" msgstr "\tvma: Gợi_ý/Thứ_tá»± Tên_thành_viên Äóng_kết_vá»›i\n" -#: peigen.c:1253 pepigen.c:1253 pex64igen.c:1253 +#: peigen.c:1252 pepigen.c:1252 pex64igen.c:1252 #, c-format msgid "" "\n" @@ -3612,7 +3921,7 @@ "\n" "Có má»™t thunk đầu tiên, nhÆ°ng không tìm thấy phần chứa nó\n" -#: peigen.c:1418 pepigen.c:1418 pex64igen.c:1418 +#: peigen.c:1417 pepigen.c:1417 pex64igen.c:1417 #, c-format msgid "" "\n" @@ -3621,7 +3930,7 @@ "\n" "Có má»™t bảng xuất, nhÆ°ng không tìm thấy phần chứa nó\n" -#: peigen.c:1427 pepigen.c:1427 pex64igen.c:1427 +#: peigen.c:1426 pepigen.c:1426 pex64igen.c:1426 #, c-format msgid "" "\n" @@ -3630,7 +3939,7 @@ "\n" "Có má»™t bảng xuất trong %s, nhÆ°ng nó không vừa trong phần đó\n" -#: peigen.c:1433 pepigen.c:1433 pex64igen.c:1433 +#: peigen.c:1432 pepigen.c:1432 pex64igen.c:1432 #, c-format msgid "" "\n" @@ -3639,7 +3948,7 @@ "\n" "Có má»™t bảng xuất trong %s tại 0x%lx\n" -#: peigen.c:1461 pepigen.c:1461 pex64igen.c:1461 +#: peigen.c:1460 pepigen.c:1460 pex64igen.c:1460 #, c-format msgid "" "\n" @@ -3649,67 +3958,67 @@ "\n" "Các Bảng Xuất (phiên dịch %s ná»™i dung phần)\n" -#: peigen.c:1465 pepigen.c:1465 pex64igen.c:1465 +#: peigen.c:1464 pepigen.c:1464 pex64igen.c:1464 #, c-format msgid "Export Flags \t\t\t%lx\n" msgstr "Cá» xuất \t\t\t%lx\n" -#: peigen.c:1468 pepigen.c:1468 pex64igen.c:1468 +#: peigen.c:1467 pepigen.c:1467 pex64igen.c:1467 #, c-format msgid "Time/Date stamp \t\t%lx\n" msgstr "Nhãn Ngày/Giá» \t\t%lx\n" -#: peigen.c:1471 pepigen.c:1471 pex64igen.c:1471 +#: peigen.c:1470 pepigen.c:1470 pex64igen.c:1470 #, c-format msgid "Major/Minor \t\t\t%d/%d\n" msgstr "Chính/Phụ \t\t\t%d/%d\n" -#: peigen.c:1474 pepigen.c:1474 pex64igen.c:1474 +#: peigen.c:1473 pepigen.c:1473 pex64igen.c:1473 #, c-format msgid "Name \t\t\t\t" msgstr "Tên \t\t\t\t" -#: peigen.c:1480 pepigen.c:1480 pex64igen.c:1480 +#: peigen.c:1479 pepigen.c:1479 pex64igen.c:1479 #, c-format msgid "Ordinal Base \t\t\t%ld\n" msgstr "CÆ¡ bản thứ tá»± \t\t\t%ld\n" -#: peigen.c:1483 pepigen.c:1483 pex64igen.c:1483 +#: peigen.c:1482 pepigen.c:1482 pex64igen.c:1482 #, c-format msgid "Number in:\n" msgstr "Số trong:\n" -#: peigen.c:1486 pepigen.c:1486 pex64igen.c:1486 +#: peigen.c:1485 pepigen.c:1485 pex64igen.c:1485 #, c-format msgid "\tExport Address Table \t\t%08lx\n" msgstr "\tBảng Äịa chỉ Xuất \t\t%08lx\n" -#: peigen.c:1490 pepigen.c:1490 pex64igen.c:1490 +#: peigen.c:1489 pepigen.c:1489 pex64igen.c:1489 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" msgstr "\t[Cái_chỉ_tên/Thứ_tá»±] Bảng\t%08lx\n" -#: peigen.c:1493 pepigen.c:1493 pex64igen.c:1493 +#: peigen.c:1492 pepigen.c:1492 pex64igen.c:1492 #, c-format msgid "Table Addresses\n" msgstr "Äịa chỉ bảng\n" -#: peigen.c:1496 pepigen.c:1496 pex64igen.c:1496 +#: peigen.c:1495 pepigen.c:1495 pex64igen.c:1495 #, c-format msgid "\tExport Address Table \t\t" msgstr "\tBảng Äịa chỉ Xuất \t\t" -#: peigen.c:1501 pepigen.c:1501 pex64igen.c:1501 +#: peigen.c:1500 pepigen.c:1500 pex64igen.c:1500 #, c-format msgid "\tName Pointer Table \t\t" msgstr "\tBảng Cái Chỉ Tên \t\t" -#: peigen.c:1506 pepigen.c:1506 pex64igen.c:1506 +#: peigen.c:1505 pepigen.c:1505 pex64igen.c:1505 #, c-format msgid "\tOrdinal Table \t\t\t" msgstr "\tBảng Thứ Tá»± \t\t\t" -#: peigen.c:1520 pepigen.c:1520 pex64igen.c:1520 +#: peigen.c:1519 pepigen.c:1519 pex64igen.c:1519 #, c-format msgid "" "\n" @@ -3718,15 +4027,15 @@ "\n" "Bảng Äịa chỉ Xuất — CÆ¡ bản Thứ tá»± %ld\n" -#: peigen.c:1539 pepigen.c:1539 pex64igen.c:1539 +#: peigen.c:1538 pepigen.c:1538 pex64igen.c:1538 msgid "Forwarder RVA" msgstr "Bá»™ chuyển tiếp RVA" -#: peigen.c:1550 pepigen.c:1550 pex64igen.c:1550 +#: peigen.c:1549 pepigen.c:1549 pex64igen.c:1549 msgid "Export RVA" msgstr "Xuất RVA" -#: peigen.c:1557 pepigen.c:1557 pex64igen.c:1557 +#: peigen.c:1556 pepigen.c:1556 pex64igen.c:1556 #, c-format msgid "" "\n" @@ -3735,28 +4044,18 @@ "\n" "Bảng [Cái chỉ Thứ tá»±/Tên]\n" -#: peigen.c:1617 peigen.c:1796 pepigen.c:1617 pepigen.c:1796 pex64igen.c:1617 -#: pex64igen.c:1796 +#: peigen.c:1616 peigen.c:1795 pepigen.c:1616 pepigen.c:1795 pex64igen.c:1616 +#: pex64igen.c:1795 #, c-format msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" msgstr "Cảnh báo : kích cỡ phần .pdata (%ld) không phải là bá»™i số cho %d\n" -#: peigen.c:1621 peigen.c:1800 pepigen.c:1621 pepigen.c:1800 pex64igen.c:1621 -#: pex64igen.c:1800 -#, c-format -msgid "" -"\n" -"The Function Table (interpreted .pdata section contents)\n" -msgstr "" -"\n" -"Bảng Hàm (phiên dịch ná»™i dung phần .pdata)\n" - -#: peigen.c:1624 pepigen.c:1624 pex64igen.c:1624 +#: peigen.c:1623 pepigen.c:1623 pex64igen.c:1623 #, c-format msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" msgstr " vma:\t\t\tÄịa chi đầu Äịa chỉ cuối Thông tin tháo ra\n" -#: peigen.c:1626 pepigen.c:1626 pex64igen.c:1626 +#: peigen.c:1625 pepigen.c:1625 pex64igen.c:1625 #, c-format msgid "" " vma:\t\tBegin End EH EH PrologEnd Exception\n" @@ -3765,22 +4064,22 @@ " vma:\t\tÄầu Cuối EH EH PrologEnd Ngoại lệ\n" " \t\tÄịa chỉ Äịa chỉ Bá»™ quản lý Dữ liệu Äịa chỉ Mặt nạ\n" -#: peigen.c:1696 pepigen.c:1696 pex64igen.c:1696 +#: peigen.c:1695 pepigen.c:1695 pex64igen.c:1695 #, c-format msgid " Register save millicode" msgstr " Mili-mã lÆ°u thanh ghi" -#: peigen.c:1699 pepigen.c:1699 pex64igen.c:1699 +#: peigen.c:1698 pepigen.c:1698 pex64igen.c:1698 #, c-format msgid " Register restore millicode" msgstr " Mili-mã phục hồi thanh ghi" -#: peigen.c:1702 pepigen.c:1702 pex64igen.c:1702 +#: peigen.c:1701 pepigen.c:1701 pex64igen.c:1701 #, c-format msgid " Glue code sequence" msgstr " Dãy mã nối lại" -#: peigen.c:1802 pepigen.c:1802 pex64igen.c:1802 +#: peigen.c:1801 pepigen.c:1801 pex64igen.c:1801 #, c-format msgid "" " vma:\t\tBegin Prolog Function Flags Exception EH\n" @@ -3826,22 +4125,22 @@ "\n" "Äặc tính 0x%x\n" -#: peigen.c:2289 pepigen.c:2289 pex64igen.c:2289 +#: peigen.c:2292 pepigen.c:2292 pex64igen.c:2292 msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing" msgstr "%B: không thể Ä‘iá»n vào DataDictionary[1] vì .idata$2 còn thiếu" -#: peigen.c:2307 pepigen.c:2307 pex64igen.c:2307 +#: peigen.c:2312 pepigen.c:2312 pex64igen.c:2312 msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing" msgstr "%B: không thể Ä‘iá»n vào DataDictionary[1] vì .idata$4 còn thiếu" -#: peigen.c:2326 pepigen.c:2326 pex64igen.c:2326 +#: peigen.c:2333 pepigen.c:2333 pex64igen.c:2333 msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing" msgstr "%B: không thể Ä‘iá»n vào DataDictionary[12] vì .idata$5 còn thiếu" -#: peigen.c:2344 pepigen.c:2344 pex64igen.c:2344 +#: peigen.c:2353 pepigen.c:2353 pex64igen.c:2353 msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing" msgstr "%B: không thể Ä‘iá»n vào DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] vì .idata$6 còn thiếu" -#: peigen.c:2364 pepigen.c:2364 pex64igen.c:2364 +#: peigen.c:2375 pepigen.c:2375 pex64igen.c:2375 msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing" msgstr "%B: không thể Ä‘iá»n vào DataDictionary[9] vì __tls_used còn thiếu" Binary files /tmp/wqm3boRCeK/crash-5.1.6/=unpacked-tar1=/bfd/po/zh_CN.gmo and /tmp/OqnMAz5teu/crash-6.1.6/=unpacked-tar1=/bfd/po/zh_CN.gmo differ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/po/zh_CN.po crash-6.1.6/=unpacked-tar1=/bfd/po/zh_CN.po --- crash-5.1.6/=unpacked-tar1=/bfd/po/zh_CN.po 2003-03-13 15:09:29.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/po/zh_CN.po 2010-11-25 06:08:43.000000000 +0000 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2002-07-23 15:55-0400\n" "PO-Revision-Date: 2003-03-11 09:46+0800\n" "Last-Translator: Wang Li \n" -"Language-Team: Chinese (simplified) \n" +"Language-Team: Chinese (simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=gb2312\n" "Content-Transfer-Encoding: 8bit\n" diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/ppcboot.c crash-6.1.6/=unpacked-tar1=/bfd/ppcboot.c --- crash-5.1.6/=unpacked-tar1=/bfd/ppcboot.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/ppcboot.c 2009-11-23 14:41:30.000000000 +0000 @@ -480,6 +480,8 @@ #define ppcboot_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define ppcboot_bfd_link_add_symbols _bfd_generic_link_add_symbols #define ppcboot_bfd_link_just_syms _bfd_generic_link_just_syms +#define ppcboot_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define ppcboot_bfd_final_link _bfd_generic_final_link #define ppcboot_bfd_link_split_section _bfd_generic_link_split_section #define ppcboot_get_section_contents_in_window \ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/ptrace-core.c crash-6.1.6/=unpacked-tar1=/bfd/ptrace-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/ptrace-core.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/ptrace-core.c 2010-08-18 12:24:07.000000000 +0000 @@ -53,6 +53,7 @@ char * ptrace_unix_core_file_failing_command PARAMS ((bfd *abfd)); int ptrace_unix_core_file_failing_signal PARAMS ((bfd *abfd)); #define ptrace_unix_core_file_matches_executable_p generic_core_file_matches_executable_p +#define ptrace_unix_core_file_pid _bfd_nocore_core_file_pid static void swap_abort PARAMS ((void)); const bfd_target * diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/reloc.c crash-6.1.6/=unpacked-tar1=/bfd/reloc.c --- crash-5.1.6/=unpacked-tar1=/bfd/reloc.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/reloc.c 2011-03-31 08:58:20.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD support for handling relocation entries. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Written by Cygnus Support. @@ -305,10 +305,7 @@ . when doing overflow checking. *} . unsigned int bitsize; . -. {* Notes that the relocation is relative to the location in the -. data section of the addend. The relocation function will -. subtract from the relocation value the address of the location -. being relocated. *} +. {* The relocation is relative to the field being relocated. *} . bfd_boolean pc_relative; . . {* The bit position of the reloc value in the destination. @@ -504,7 +501,7 @@ overflow check. */ fieldmask = N_ONES (bitsize); signmask = ~fieldmask; - addrmask = N_ONES (addrsize) | fieldmask; + addrmask = N_ONES (addrsize) | (fieldmask << rightshift); a = (relocation & addrmask) >> rightshift;; switch (how) @@ -1434,9 +1431,11 @@ See also bfd_check_overflow. */ fieldmask = N_ONES (howto->bitsize); signmask = ~fieldmask; - addrmask = N_ONES (bfd_arch_bits_per_address (input_bfd)) | fieldmask; + addrmask = (N_ONES (bfd_arch_bits_per_address (input_bfd)) + | (fieldmask << rightshift)); a = (relocation & addrmask) >> rightshift; b = (x & howto->src_mask & addrmask) >> bitpos; + addrmask >>= rightshift; switch (howto->complain_on_overflow) { @@ -1454,7 +1453,7 @@ field. Note that when bfd_vma is 32 bits, a 32-bit reloc can't overflow, which is exactly what we want. */ ss = a & signmask; - if (ss != 0 && ss != ((addrmask >> rightshift) & signmask)) + if (ss != 0 && ss != (addrmask & signmask)) flag = bfd_reloc_overflow; /* We only need this next bit of code if the sign bit of B @@ -1545,14 +1544,15 @@ return flag; } -/* Clear a given location using a given howto, by applying a relocation value - of zero and discarding any in-place addend. This is used for fixed-up +/* Clear a given location using a given howto, by applying a fixed relocation + value and discarding any in-place addend. This is used for fixed-up relocations against discarded symbols, to make ignorable debug or unwind information more obvious. */ void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd, + asection *input_section, bfd_byte *location) { int size; @@ -1586,6 +1586,13 @@ /* Zero out the unwanted bits of X. */ x &= ~howto->dst_mask; + /* For a range list, use 1 instead of 0 as placeholder. 0 + would terminate the list, hiding any later entries. */ + if (strcmp (bfd_get_section_name (input_bfd, input_section), + ".debug_ranges") == 0 + && (howto->dst_mask & 1) != 0) + x |= 1; + /* Put the relocated value back in the object file. */ switch (size) { @@ -1870,6 +1877,10 @@ BFD_RELOC_SPARC_GOTDATA_OP_LOX10 ENUMX BFD_RELOC_SPARC_GOTDATA_OP +ENUMX + BFD_RELOC_SPARC_JMP_IREL +ENUMX + BFD_RELOC_SPARC_IRELATIVE ENUMDOC SPARC ELF relocations. There is probably some overlap with other relocation types already defined. @@ -2930,6 +2941,8 @@ BFD_RELOC_ARM_GOTOFF ENUMX BFD_RELOC_ARM_GOTPC +ENUMX + BFD_RELOC_ARM_GOT_PREL ENUMDOC Relocations for setting up GOTs and PLTs for shared libraries. @@ -2949,6 +2962,18 @@ BFD_RELOC_ARM_TLS_IE32 ENUMX BFD_RELOC_ARM_TLS_LE32 +ENUMX + BFD_RELOC_ARM_TLS_GOTDESC +ENUMX + BFD_RELOC_ARM_TLS_CALL +ENUMX + BFD_RELOC_ARM_THM_TLS_CALL +ENUMX + BFD_RELOC_ARM_TLS_DESCSEQ +ENUMX + BFD_RELOC_ARM_THM_TLS_DESCSEQ +ENUMX + BFD_RELOC_ARM_TLS_DESC ENUMDOC ARM thread-local storage relocations. @@ -3017,6 +3042,11 @@ Annotation of BX instructions. ENUM + BFD_RELOC_ARM_IRELATIVE +ENUMDOC + ARM support for STT_GNU_IFUNC. + +ENUM BFD_RELOC_ARM_IMMEDIATE ENUMX BFD_RELOC_ARM_ADRL_IMMEDIATE @@ -3033,6 +3063,8 @@ ENUMX BFD_RELOC_ARM_SMC ENUMX + BFD_RELOC_ARM_HVC +ENUMX BFD_RELOC_ARM_SWI ENUMX BFD_RELOC_ARM_MULTI @@ -3250,6 +3282,20 @@ BFD_RELOC_SH_TLS_DTPOFF32 ENUMX BFD_RELOC_SH_TLS_TPOFF32 +ENUMX + BFD_RELOC_SH_GOT20 +ENUMX + BFD_RELOC_SH_GOTOFF20 +ENUMX + BFD_RELOC_SH_GOTFUNCDESC +ENUMX + BFD_RELOC_SH_GOTFUNCDESC20 +ENUMX + BFD_RELOC_SH_GOTOFFFUNCDESC +ENUMX + BFD_RELOC_SH_GOTOFFFUNCDESC20 +ENUMX + BFD_RELOC_SH_FUNCDESC ENUMDOC Renesas / SuperH SH relocs. Not all of these appear in object files. @@ -3704,6 +3750,94 @@ This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu instructions. ENUM + BFD_RELOC_V850_16_PCREL +ENUMDOC + This is a 16-bit reloc. +ENUM + BFD_RELOC_V850_17_PCREL +ENUMDOC + This is a 17-bit reloc. +ENUM + BFD_RELOC_V850_23 +ENUMDOC + This is a 23-bit reloc. +ENUM + BFD_RELOC_V850_32_PCREL +ENUMDOC + This is a 32-bit reloc. +ENUM + BFD_RELOC_V850_32_ABS +ENUMDOC + This is a 32-bit reloc. +ENUM + BFD_RELOC_V850_16_SPLIT_OFFSET +ENUMDOC + This is a 16-bit reloc. +ENUM + BFD_RELOC_V850_16_S1 +ENUMDOC + This is a 16-bit reloc. +ENUM + BFD_RELOC_V850_LO16_S1 +ENUMDOC + Low 16 bits. 16 bit shifted by 1. +ENUM + BFD_RELOC_V850_CALLT_15_16_OFFSET +ENUMDOC + This is a 16 bit offset from the call table base pointer. +ENUM + BFD_RELOC_V850_32_GOTPCREL +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_16_GOT +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_32_GOT +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_22_PLT_PCREL +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_32_PLT_PCREL +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_COPY +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_GLOB_DAT +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_JMP_SLOT +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_RELATIVE +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_16_GOTOFF +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_32_GOTOFF +ENUMDOC + DSO relocations. +ENUM + BFD_RELOC_V850_CODE +ENUMDOC + start code. +ENUM + BFD_RELOC_V850_DATA +ENUMDOC + start data in text. +ENUM BFD_RELOC_MN10300_32_PCREL ENUMDOC This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the @@ -3755,6 +3889,69 @@ the opcode. ENUM + BFD_RELOC_C6000_PCR_S21 +ENUMX + BFD_RELOC_C6000_PCR_S12 +ENUMX + BFD_RELOC_C6000_PCR_S10 +ENUMX + BFD_RELOC_C6000_PCR_S7 +ENUMX + BFD_RELOC_C6000_ABS_S16 +ENUMX + BFD_RELOC_C6000_ABS_L16 +ENUMX + BFD_RELOC_C6000_ABS_H16 +ENUMX + BFD_RELOC_C6000_SBR_U15_B +ENUMX + BFD_RELOC_C6000_SBR_U15_H +ENUMX + BFD_RELOC_C6000_SBR_U15_W +ENUMX + BFD_RELOC_C6000_SBR_S16 +ENUMX + BFD_RELOC_C6000_SBR_L16_B +ENUMX + BFD_RELOC_C6000_SBR_L16_H +ENUMX + BFD_RELOC_C6000_SBR_L16_W +ENUMX + BFD_RELOC_C6000_SBR_H16_B +ENUMX + BFD_RELOC_C6000_SBR_H16_H +ENUMX + BFD_RELOC_C6000_SBR_H16_W +ENUMX + BFD_RELOC_C6000_SBR_GOT_U15_W +ENUMX + BFD_RELOC_C6000_SBR_GOT_L16_W +ENUMX + BFD_RELOC_C6000_SBR_GOT_H16_W +ENUMX + BFD_RELOC_C6000_DSBT_INDEX +ENUMX + BFD_RELOC_C6000_PREL31 +ENUMX + BFD_RELOC_C6000_COPY +ENUMX + BFD_RELOC_C6000_JUMP_SLOT +ENUMX + BFD_RELOC_C6000_EHTYPE +ENUMX + BFD_RELOC_C6000_PCR_H16 +ENUMX + BFD_RELOC_C6000_PCR_L16 +ENUMX + BFD_RELOC_C6000_ALIGN +ENUMX + BFD_RELOC_C6000_FPHEAD +ENUMX + BFD_RELOC_C6000_NOCMP +ENUMDOC + TMS320C6000 relocations. + +ENUM BFD_RELOC_FR30_48 ENUMDOC This is a 48 bit reloc for the FR30 that stores 32 bits. @@ -4052,6 +4249,63 @@ instructions ENUM + BFD_RELOC_RX_NEG8 +ENUMX + BFD_RELOC_RX_NEG16 +ENUMX + BFD_RELOC_RX_NEG24 +ENUMX + BFD_RELOC_RX_NEG32 +ENUMX + BFD_RELOC_RX_16_OP +ENUMX + BFD_RELOC_RX_24_OP +ENUMX + BFD_RELOC_RX_32_OP +ENUMX + BFD_RELOC_RX_8U +ENUMX + BFD_RELOC_RX_16U +ENUMX + BFD_RELOC_RX_24U +ENUMX + BFD_RELOC_RX_DIR3U_PCREL +ENUMX + BFD_RELOC_RX_DIFF +ENUMX + BFD_RELOC_RX_GPRELB +ENUMX + BFD_RELOC_RX_GPRELW +ENUMX + BFD_RELOC_RX_GPRELL +ENUMX + BFD_RELOC_RX_SYM +ENUMX + BFD_RELOC_RX_OP_SUBTRACT +ENUMX + BFD_RELOC_RX_OP_NEG +ENUMX + BFD_RELOC_RX_ABS8 +ENUMX + BFD_RELOC_RX_ABS16 +ENUMX + BFD_RELOC_RX_ABS16_REV +ENUMX + BFD_RELOC_RX_ABS32 +ENUMX + BFD_RELOC_RX_ABS32_REV +ENUMX + BFD_RELOC_RX_ABS16U +ENUMX + BFD_RELOC_RX_ABS16UW +ENUMX + BFD_RELOC_RX_ABS16UL +ENUMX + BFD_RELOC_RX_RELAX +ENUMDOC + Renesas RX Relocations. + +ENUM BFD_RELOC_390_12 ENUMDOC Direct 12 bit. @@ -5184,14 +5438,51 @@ Lattice Mico32 relocations. ENUM - BFD_RELOC_MACH_O_SECTDIFF + BFD_RELOC_MACH_O_SECTDIFF +ENUMDOC + Difference between two section addreses. Must be followed by a + BFD_RELOC_MACH_O_PAIR. +ENUM + BFD_RELOC_MACH_O_PAIR +ENUMDOC + Pair of relocation. Contains the first symbol. + +ENUM + BFD_RELOC_MACH_O_X86_64_BRANCH32 +ENUMX + BFD_RELOC_MACH_O_X86_64_BRANCH8 +ENUMDOC + PCREL relocations. They are marked as branch to create PLT entry if + required. +ENUM + BFD_RELOC_MACH_O_X86_64_GOT +ENUMDOC + Used when referencing a GOT entry. +ENUM + BFD_RELOC_MACH_O_X86_64_GOT_LOAD +ENUMDOC + Used when loading a GOT entry with movq. It is specially marked so that + the linker could optimize the movq to a leaq if possible. +ENUM + BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32 +ENUMDOC + Symbol will be substracted. Must be followed by a BFD_RELOC_64. +ENUM + BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64 +ENUMDOC + Symbol will be substracted. Must be followed by a BFD_RELOC_64. +ENUM + BFD_RELOC_MACH_O_X86_64_PCREL32_1 +ENUMDOC + Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. +ENUM + BFD_RELOC_MACH_O_X86_64_PCREL32_2 ENUMDOC - Difference between two section addreses. Must be followed by a - BFD_RELOC_MACH_O_PAIR. + Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. ENUM - BFD_RELOC_MACH_O_PAIR + BFD_RELOC_MACH_O_X86_64_PCREL32_4 ENUMDOC - Mach-O generic relocations. + Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. ENUM BFD_RELOC_MICROBLAZE_32_LO @@ -5322,7 +5613,7 @@ case BFD_RELOC_CTOR: /* The type of reloc used in a ctor, which will be as wide as the address - so either a 64, 32, or 16 bitter. */ - switch (bfd_get_arch_info (abfd)->bits_per_address) + switch (bfd_arch_bits_per_address (abfd)) { case 64: BFD_FAIL (); @@ -5461,15 +5752,13 @@ long reloc_size; arelent **reloc_vector; long reloc_count; - bfd_size_type sz; reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section); if (reloc_size < 0) return NULL; /* Read in the section. */ - sz = input_section->rawsize ? input_section->rawsize : input_section->size; - if (!bfd_get_section_contents (input_bfd, input_section, data, 0, sz)) + if (!bfd_get_full_section_contents (input_bfd, input_section, &data)) return NULL; if (reloc_size == 0) @@ -5504,7 +5793,8 @@ "unused", FALSE, 0, 0, FALSE); p = data + (*parent)->address * bfd_octets_per_byte (input_bfd); - _bfd_clear_contents ((*parent)->howto, input_bfd, p); + _bfd_clear_contents ((*parent)->howto, input_bfd, input_section, + p); (*parent)->sym_ptr_ptr = bfd_abs_section.symbol_ptr_ptr; (*parent)->addend = 0; (*parent)->howto = &none_howto; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/riscix.c crash-6.1.6/=unpacked-tar1=/bfd/riscix.c --- crash-5.1.6/=unpacked-tar1=/bfd/riscix.c 2007-07-03 14:26:42.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/riscix.c 2010-08-25 07:02:40.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for RISC iX (Acorn, arm) binaries. Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, - 2005, 2007 Free Software Foundation, Inc. + 2005, 2007, 2010 Free Software Foundation, Inc. Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) This file is part of BFD, the Binary File Descriptor library. @@ -254,7 +254,7 @@ { #define ASTD(i,j) case i: return &riscix_std_reloc_howto[j] if (code == BFD_RELOC_CTOR) - switch (bfd_get_arch_info (abfd)->bits_per_address) + switch (bfd_arch_bits_per_address (abfd)) { case 32: code = BFD_RELOC_32; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/sco5-core.c crash-6.1.6/=unpacked-tar1=/bfd/sco5-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/sco5-core.c 2007-07-03 14:26:42.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/sco5-core.c 2010-08-18 12:24:07.000000000 +0000 @@ -51,6 +51,7 @@ char *sco5_core_file_failing_command PARAMS ((bfd *abfd)); int sco5_core_file_failing_signal PARAMS ((bfd *abfd)); #define sco5_core_file_matches_executable_p generic_core_file_matches_executable_p +#define sco5_core_file_pid _bfd_nocore_core_file_pid static void swap_abort PARAMS ((void)); static asection * diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/section.c crash-6.1.6/=unpacked-tar1=/bfd/section.c --- crash-5.1.6/=unpacked-tar1=/bfd/section.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/section.c 2010-11-08 02:48:54.000000000 +0000 @@ -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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -364,6 +364,12 @@ . {* Mark flag used by some linker backends for garbage collection. *} . unsigned int gc_mark : 1; . +. {* Section compression status. *} +. unsigned int compress_status : 2; +.#define COMPRESS_SECTION_NONE 0 +.#define COMPRESS_SECTION_DONE 1 +.#define DECOMPRESS_SECTION_SIZED 2 +. . {* The following flags are used by the ELF linker. *} . . {* Mark sections which have been allocated to segments. *} @@ -383,20 +389,12 @@ . {* Bits used by various backends. The generic code doesn't touch . these fields. *} . -. {* Nonzero if this section has TLS related relocations. *} -. unsigned int has_tls_reloc:1; -. -. {* Nonzero if this section has a call to __tls_get_addr. *} -. unsigned int has_tls_get_addr_call:1; -. -. {* Nonzero if this section has a gp reloc. *} -. unsigned int has_gp_reloc:1; -. -. {* Nonzero if this section needs the relax finalize pass. *} -. unsigned int need_finalize_relax:1; -. -. {* Whether relocations have been processed. *} -. unsigned int reloc_done : 1; +. unsigned int sec_flg0:1; +. unsigned int sec_flg1:1; +. unsigned int sec_flg2:1; +. unsigned int sec_flg3:1; +. unsigned int sec_flg4:1; +. unsigned int sec_flg5:1; . . {* End of internal packed boolean fields. *} . @@ -428,6 +426,9 @@ . section size calculated on a previous linker relaxation pass. *} . bfd_size_type rawsize; . +. {* The compressed size of the section in octets. *} +. bfd_size_type compressed_size; +. . {* Relaxation table. *} . struct relax_table *relax; . @@ -661,17 +662,17 @@ . {* name, id, index, next, prev, flags, user_set_vma, *} \ . { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \ . \ -. {* linker_mark, linker_has_input, gc_mark, *} \ -. 0, 0, 1, \ +. {* linker_mark, linker_has_input, gc_mark, decompress_status, *} \ +. 0, 0, 1, 0, \ . \ -. {* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, *} \ -. 0, 0, 0, 0, \ +. {* segment_mark, sec_info_type, use_rela_p, *} \ +. 0, 0, 0, \ . \ -. {* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, *} \ -. 0, 0, 0, \ +. {* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5, *} \ +. 0, 0, 0, 0, 0, 0, \ . \ -. {* reloc_done, vma, lma, size, rawsize, relax, relax_count, *} \ -. 0, 0, 0, 0, 0, 0, 0, \ +. {* vma, lma, size, rawsize, compressed_size, relax, relax_count, *} \ +. 0, 0, 0, 0, 0, 0, 0, \ . \ . {* output_offset, output_section, alignment_power, *} \ . 0, (struct bfd_section *) &SEC, 0, \ @@ -1214,6 +1215,29 @@ /* FUNCTION + bfd_rename_section + +SYNOPSIS + void bfd_rename_section + (bfd *abfd, asection *sec, const char *newname); + +DESCRIPTION + Rename section @var{sec} in @var{abfd} to @var{newname}. +*/ + +void +bfd_rename_section (bfd *abfd, sec_ptr sec, const char *newname) +{ + struct section_hash_entry *sh; + + sh = (struct section_hash_entry *) + ((char *) sec - offsetof (struct section_hash_entry, section)); + sh->section.name = newname; + bfd_hash_rename (&abfd->section_htab, newname, &sh->root); +} + +/* +FUNCTION bfd_map_over_sections SYNOPSIS @@ -1488,20 +1512,8 @@ bfd_boolean bfd_malloc_and_get_section (bfd *abfd, sec_ptr sec, bfd_byte **buf) { - bfd_size_type sz = sec->rawsize ? sec->rawsize : sec->size; - bfd_byte *p = NULL; - - *buf = p; - if (sz == 0) - return TRUE; - - p = (bfd_byte *) - bfd_malloc (sec->rawsize > sec->size ? sec->rawsize : sec->size); - if (p == NULL) - return FALSE; - *buf = p; - - return bfd_get_section_contents (abfd, sec, p, 0, sz); + *buf = NULL; + return bfd_get_full_section_contents (abfd, sec, buf); } /* FUNCTION diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/simple.c crash-6.1.6/=unpacked-tar1=/bfd/simple.c --- crash-5.1.6/=unpacked-tar1=/bfd/simple.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/simple.c 2010-10-29 12:10:25.000000000 +0000 @@ -167,17 +167,9 @@ if ((abfd->flags & (HAS_RELOC | EXEC_P | DYNAMIC)) != HAS_RELOC || ! (sec->flags & SEC_RELOC)) { - bfd_size_type amt = sec->rawsize > sec->size ? sec->rawsize : sec->size; - bfd_size_type size = sec->rawsize ? sec->rawsize : sec->size; - - if (outbuf == NULL) - contents = (bfd_byte *) bfd_malloc (amt); - else - contents = outbuf; - - if (contents) - bfd_get_section_contents (abfd, sec, contents, 0, size); - + contents = outbuf; + if (!bfd_get_full_section_contents (abfd, sec, &contents)) + return NULL; return contents; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/som.c crash-6.1.6/=unpacked-tar1=/bfd/som.c --- crash-5.1.6/=unpacked-tar1=/bfd/som.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/som.c 2011-01-14 12:35:55.000000000 +0000 @@ -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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by the Center for Software Science at the @@ -27,16 +27,11 @@ #include "sysdep.h" #include "bfd.h" -#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) || defined(HOST_HPPAMPEIX) - #include "libbfd.h" #include "som.h" #include "safe-ctype.h" - -#include -#include -#include -#include +#include "som/reloc.h" +#include "aout/ar.h" static bfd_reloc_status_type hppa_som_reloc (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); @@ -44,7 +39,7 @@ static bfd_boolean som_is_space (asection *); static bfd_boolean som_is_subspace (asection *); static int compare_subspaces (const void *, const void *); -static unsigned long som_compute_checksum (bfd *); +static unsigned long som_compute_checksum (struct som_external_header *); static bfd_boolean som_build_and_write_symbol_table (bfd *); static unsigned int som_slurp_symbol_table (bfd *); @@ -145,7 +140,7 @@ struct section_to_type { - char *section; + const char *section; char type; }; @@ -636,17 +631,6 @@ }; /* These apparently are not in older versions of hpux reloc.h (hpux7). */ -#ifndef R_DLT_REL -#define R_DLT_REL 0x78 -#endif - -#ifndef R_AUX_UNWIND -#define R_AUX_UNWIND 0xcf -#endif - -#ifndef R_SEC_STMT -#define R_SEC_STMT 0xd7 -#endif /* And these first appeared in hpux10. */ #ifndef R_SHORT_PCREL_MODE @@ -654,34 +638,6 @@ #define R_SHORT_PCREL_MODE 0x3e #endif -#ifndef R_LONG_PCREL_MODE -#define R_LONG_PCREL_MODE 0x3f -#endif - -#ifndef R_N0SEL -#define R_N0SEL 0xd8 -#endif - -#ifndef R_N1SEL -#define R_N1SEL 0xd9 -#endif - -#ifndef R_LINETAB -#define R_LINETAB 0xda -#endif - -#ifndef R_LINETAB_ESC -#define R_LINETAB_ESC 0xdb -#endif - -#ifndef R_LTP_OVERRIDE -#define R_LTP_OVERRIDE 0xdc -#endif - -#ifndef R_COMMENT -#define R_COMMENT 0xdd -#endif - #define SOM_HOWTO(TYPE, NAME) \ HOWTO(TYPE, 0, 0, 32, FALSE, 0, 0, hppa_som_reloc, NAME, FALSE, 0, 0, FALSE) @@ -982,12 +938,12 @@ to the front of the queue. */ static void -som_reloc_queue_fix (struct reloc_queue *queue, unsigned int index) +som_reloc_queue_fix (struct reloc_queue *queue, unsigned int idx) { - if (index == 0) + if (idx == 0) return; - if (index == 1) + if (idx == 1) { unsigned char *tmp1 = queue[0].reloc; unsigned int tmp2 = queue[0].size; @@ -999,7 +955,7 @@ return; } - if (index == 2) + if (idx == 2) { unsigned char *tmp1 = queue[0].reloc; unsigned int tmp2 = queue[0].size; @@ -1013,7 +969,7 @@ return; } - if (index == 3) + if (idx == 3) { unsigned char *tmp1 = queue[0].reloc; unsigned int tmp2 = queue[0].size; @@ -1645,12 +1601,355 @@ return NULL; } +static void +som_swap_clock_in (struct som_external_clock *src, + struct som_clock *dst) +{ + dst->secs = bfd_getb32 (src->secs); + dst->nanosecs = bfd_getb32 (src->nanosecs); +} + +static void +som_swap_clock_out (struct som_clock *src, + struct som_external_clock *dst) +{ + bfd_putb32 (src->secs, dst->secs); + bfd_putb32 (src->nanosecs, dst->nanosecs); +} + +static void +som_swap_header_in (struct som_external_header *src, + struct som_header *dst) +{ + dst->system_id = bfd_getb16 (src->system_id); + dst->a_magic = bfd_getb16 (src->a_magic); + dst->version_id = bfd_getb32 (src->version_id); + som_swap_clock_in (&src->file_time, &dst->file_time); + dst->entry_space = bfd_getb32 (src->entry_space); + dst->entry_subspace = bfd_getb32 (src->entry_subspace); + dst->entry_offset = bfd_getb32 (src->entry_offset); + dst->aux_header_location = bfd_getb32 (src->aux_header_location); + dst->aux_header_size = bfd_getb32 (src->aux_header_size); + dst->som_length = bfd_getb32 (src->som_length); + dst->presumed_dp = bfd_getb32 (src->presumed_dp); + dst->space_location = bfd_getb32 (src->space_location); + dst->space_total = bfd_getb32 (src->space_total); + dst->subspace_location = bfd_getb32 (src->subspace_location); + dst->subspace_total = bfd_getb32 (src->subspace_total); + dst->loader_fixup_location = bfd_getb32 (src->loader_fixup_location); + dst->loader_fixup_total = bfd_getb32 (src->loader_fixup_total); + dst->space_strings_location = bfd_getb32 (src->space_strings_location); + dst->space_strings_size = bfd_getb32 (src->space_strings_size); + dst->init_array_location = bfd_getb32 (src->init_array_location); + dst->init_array_total = bfd_getb32 (src->init_array_total); + dst->compiler_location = bfd_getb32 (src->compiler_location); + dst->compiler_total = bfd_getb32 (src->compiler_total); + dst->symbol_location = bfd_getb32 (src->symbol_location); + dst->symbol_total = bfd_getb32 (src->symbol_total); + dst->fixup_request_location = bfd_getb32 (src->fixup_request_location); + dst->fixup_request_total = bfd_getb32 (src->fixup_request_total); + dst->symbol_strings_location = bfd_getb32 (src->symbol_strings_location); + dst->symbol_strings_size = bfd_getb32 (src->symbol_strings_size); + dst->unloadable_sp_location = bfd_getb32 (src->unloadable_sp_location); + dst->unloadable_sp_size = bfd_getb32 (src->unloadable_sp_size); + dst->checksum = bfd_getb32 (src->checksum); +} + +static void +som_swap_header_out (struct som_header *src, + struct som_external_header *dst) +{ + bfd_putb16 (src->system_id, dst->system_id); + bfd_putb16 (src->a_magic, dst->a_magic); + bfd_putb32 (src->version_id, dst->version_id); + som_swap_clock_out (&src->file_time, &dst->file_time); + bfd_putb32 (src->entry_space, dst->entry_space); + bfd_putb32 (src->entry_subspace, dst->entry_subspace); + bfd_putb32 (src->entry_offset, dst->entry_offset); + bfd_putb32 (src->aux_header_location, dst->aux_header_location); + bfd_putb32 (src->aux_header_size, dst->aux_header_size); + bfd_putb32 (src->som_length, dst->som_length); + bfd_putb32 (src->presumed_dp, dst->presumed_dp); + bfd_putb32 (src->space_location, dst->space_location); + bfd_putb32 (src->space_total, dst->space_total); + bfd_putb32 (src->subspace_location, dst->subspace_location); + bfd_putb32 (src->subspace_total, dst->subspace_total); + bfd_putb32 (src->loader_fixup_location, dst->loader_fixup_location); + bfd_putb32 (src->loader_fixup_total, dst->loader_fixup_total); + bfd_putb32 (src->space_strings_location, dst->space_strings_location); + bfd_putb32 (src->space_strings_size, dst->space_strings_size); + bfd_putb32 (src->init_array_location, dst->init_array_location); + bfd_putb32 (src->init_array_total, dst->init_array_total); + bfd_putb32 (src->compiler_location, dst->compiler_location); + bfd_putb32 (src->compiler_total, dst->compiler_total); + bfd_putb32 (src->symbol_location, dst->symbol_location); + bfd_putb32 (src->symbol_total, dst->symbol_total); + bfd_putb32 (src->fixup_request_location, dst->fixup_request_location); + bfd_putb32 (src->fixup_request_total, dst->fixup_request_total); + bfd_putb32 (src->symbol_strings_location, dst->symbol_strings_location); + bfd_putb32 (src->symbol_strings_size, dst->symbol_strings_size); + bfd_putb32 (src->unloadable_sp_location, dst->unloadable_sp_location); + bfd_putb32 (src->unloadable_sp_size, dst->unloadable_sp_size); + bfd_putb32 (src->checksum, dst->checksum); +} + +static void +som_swap_space_dictionary_in (struct som_external_space_dictionary_record *src, + struct som_space_dictionary_record *dst) +{ + unsigned int flags; + + dst->name = bfd_getb32 (src->name); + flags = bfd_getb32 (src->flags); + dst->is_loadable = (flags & SOM_SPACE_IS_LOADABLE) != 0; + dst->is_defined = (flags & SOM_SPACE_IS_DEFINED) != 0; + dst->is_private = (flags & SOM_SPACE_IS_PRIVATE) != 0; + dst->has_intermediate_code = (flags & SOM_SPACE_HAS_INTERMEDIATE_CODE) != 0; + dst->is_tspecific = (flags & SOM_SPACE_IS_TSPECIFIC) != 0; + dst->reserved = 0; + dst->sort_key = (flags >> SOM_SPACE_SORT_KEY_SH) & SOM_SPACE_SORT_KEY_MASK; + dst->reserved2 = 0; + dst->space_number = bfd_getb32 (src->space_number); + dst->subspace_index = bfd_getb32 (src->subspace_index); + dst->subspace_quantity = bfd_getb32 (src->subspace_quantity); + dst->loader_fix_index = bfd_getb32 (src->loader_fix_index); + dst->loader_fix_quantity = bfd_getb32 (src->loader_fix_quantity); + dst->init_pointer_index = bfd_getb32 (src->init_pointer_index); + dst->init_pointer_quantity = bfd_getb32 (src->init_pointer_quantity); +} + +static void +som_swap_space_dictionary_out (struct som_space_dictionary_record *src, + struct som_external_space_dictionary_record *dst) +{ + unsigned int flags; + + bfd_putb32 (src->name, dst->name); + + flags = 0; + if (src->is_loadable) + flags |= SOM_SPACE_IS_LOADABLE; + if (src->is_defined) + flags |= SOM_SPACE_IS_DEFINED; + if (src->is_private) + flags |= SOM_SPACE_IS_PRIVATE; + if (src->has_intermediate_code) + flags |= SOM_SPACE_HAS_INTERMEDIATE_CODE; + if (src->is_tspecific) + flags |= SOM_SPACE_IS_TSPECIFIC; + flags |= (src->sort_key & SOM_SPACE_SORT_KEY_MASK) << SOM_SPACE_SORT_KEY_SH; + bfd_putb32 (flags, dst->flags); + bfd_putb32 (src->space_number, dst->space_number); + bfd_putb32 (src->subspace_index, dst->subspace_index); + bfd_putb32 (src->subspace_quantity, dst->subspace_quantity); + bfd_putb32 (src->loader_fix_index, dst->loader_fix_index); + bfd_putb32 (src->loader_fix_quantity, dst->loader_fix_quantity); + bfd_putb32 (src->init_pointer_index, dst->init_pointer_index); + bfd_putb32 (src->init_pointer_quantity, dst->init_pointer_quantity); +} + +static void +som_swap_subspace_dictionary_in + (struct som_external_subspace_dictionary_record *src, + struct som_subspace_dictionary_record *dst) +{ + unsigned int flags; + dst->space_index = bfd_getb32 (src->space_index); + flags = bfd_getb32 (src->flags); + dst->access_control_bits = (flags >> SOM_SUBSPACE_ACCESS_CONTROL_BITS_SH) + & SOM_SUBSPACE_ACCESS_CONTROL_BITS_MASK; + dst->memory_resident = (flags & SOM_SUBSPACE_MEMORY_RESIDENT) != 0; + dst->dup_common = (flags & SOM_SUBSPACE_DUP_COMMON) != 0; + dst->is_common = (flags & SOM_SUBSPACE_IS_COMMON) != 0; + dst->is_loadable = (flags & SOM_SUBSPACE_IS_LOADABLE) != 0; + dst->quadrant = (flags >> SOM_SUBSPACE_QUADRANT_SH) + & SOM_SUBSPACE_QUADRANT_MASK; + dst->initially_frozen = (flags & SOM_SUBSPACE_INITIALLY_FROZEN) != 0; + dst->is_first = (flags & SOM_SUBSPACE_IS_FIRST) != 0; + dst->code_only = (flags & SOM_SUBSPACE_CODE_ONLY) != 0; + dst->sort_key = (flags >> SOM_SUBSPACE_SORT_KEY_SH) + & SOM_SUBSPACE_SORT_KEY_MASK; + dst->replicate_init = (flags & SOM_SUBSPACE_REPLICATE_INIT) != 0; + dst->continuation = (flags & SOM_SUBSPACE_CONTINUATION) != 0; + dst->is_tspecific = (flags & SOM_SUBSPACE_IS_TSPECIFIC) != 0; + dst->is_comdat = (flags & SOM_SUBSPACE_IS_COMDAT) != 0; + dst->reserved = 0; + dst->file_loc_init_value = bfd_getb32 (src->file_loc_init_value); + dst->initialization_length = bfd_getb32 (src->initialization_length); + dst->subspace_start = bfd_getb32 (src->subspace_start); + dst->subspace_length = bfd_getb32 (src->subspace_length); + dst->alignment = bfd_getb32 (src->alignment); + dst->name = bfd_getb32 (src->name); + dst->fixup_request_index = bfd_getb32 (src->fixup_request_index); + dst->fixup_request_quantity = bfd_getb32 (src->fixup_request_quantity); +} + +static void +som_swap_subspace_dictionary_record_out + (struct som_subspace_dictionary_record *src, + struct som_external_subspace_dictionary_record *dst) +{ + unsigned int flags; + + bfd_putb32 (src->space_index, dst->space_index); + flags = (src->access_control_bits & SOM_SUBSPACE_ACCESS_CONTROL_BITS_MASK) + << SOM_SUBSPACE_ACCESS_CONTROL_BITS_SH; + if (src->memory_resident) + flags |= SOM_SUBSPACE_MEMORY_RESIDENT; + if (src->dup_common) + flags |= SOM_SUBSPACE_DUP_COMMON; + if (src->is_common) + flags |= SOM_SUBSPACE_IS_COMMON; + if (src->is_loadable) + flags |= SOM_SUBSPACE_IS_LOADABLE; + flags |= (src->quadrant & SOM_SUBSPACE_QUADRANT_MASK) + << SOM_SUBSPACE_QUADRANT_SH; + if (src->initially_frozen) + flags |= SOM_SUBSPACE_INITIALLY_FROZEN; + if (src->is_first) + flags |= SOM_SUBSPACE_IS_FIRST; + if (src->code_only) + flags |= SOM_SUBSPACE_CODE_ONLY; + flags |= (src->sort_key & SOM_SUBSPACE_SORT_KEY_MASK) + << SOM_SUBSPACE_SORT_KEY_SH; + if (src->replicate_init) + flags |= SOM_SUBSPACE_REPLICATE_INIT; + if (src->continuation) + flags |= SOM_SUBSPACE_CONTINUATION; + if (src->is_tspecific) + flags |= SOM_SUBSPACE_IS_TSPECIFIC; + if (src->is_comdat) + flags |= SOM_SUBSPACE_IS_COMDAT; + bfd_putb32 (flags, dst->flags); + bfd_putb32 (src->file_loc_init_value, dst->file_loc_init_value); + bfd_putb32 (src->initialization_length, dst->initialization_length); + bfd_putb32 (src->subspace_start, dst->subspace_start); + bfd_putb32 (src->subspace_length, dst->subspace_length); + bfd_putb32 (src->alignment, dst->alignment); + bfd_putb32 (src->name, dst->name); + bfd_putb32 (src->fixup_request_index, dst->fixup_request_index); + bfd_putb32 (src->fixup_request_quantity, dst->fixup_request_quantity); +} + +static void +som_swap_aux_id_in (struct som_external_aux_id *src, + struct som_aux_id *dst) +{ + unsigned int flags = bfd_getb32 (src->flags); + + dst->mandatory = (flags & SOM_AUX_ID_MANDATORY) != 0; + dst->copy = (flags & SOM_AUX_ID_COPY) != 0; + dst->append = (flags & SOM_AUX_ID_APPEND) != 0; + dst->ignore = (flags & SOM_AUX_ID_IGNORE) != 0; + dst->type = (flags >> SOM_AUX_ID_TYPE_SH) & SOM_AUX_ID_TYPE_MASK; + dst->length = bfd_getb32 (src->length); +} + +static void +som_swap_aux_id_out (struct som_aux_id *src, + struct som_external_aux_id *dst) +{ + unsigned int flags = 0; + + if (src->mandatory) + flags |= SOM_AUX_ID_MANDATORY; + if (src->copy) + flags |= SOM_AUX_ID_COPY; + if (src->append) + flags |= SOM_AUX_ID_APPEND; + if (src->ignore) + flags |= SOM_AUX_ID_IGNORE; + flags |= (src->type & SOM_AUX_ID_TYPE_MASK) << SOM_AUX_ID_TYPE_SH; + bfd_putb32 (flags, dst->flags); + bfd_putb32 (src->length, dst->length); +} + +static void +som_swap_string_auxhdr_out (struct som_string_auxhdr *src, + struct som_external_string_auxhdr *dst) +{ + som_swap_aux_id_out (&src->header_id, &dst->header_id); + bfd_putb32 (src->string_length, dst->string_length); +} + +static void +som_swap_compilation_unit_out (struct som_compilation_unit *src, + struct som_external_compilation_unit *dst) +{ + bfd_putb32 (src->name.strx, dst->name); + bfd_putb32 (src->language_name.strx, dst->language_name); + bfd_putb32 (src->product_id.strx, dst->product_id); + bfd_putb32 (src->version_id.strx, dst->version_id); + bfd_putb32 (src->flags, dst->flags); + som_swap_clock_out (&src->compile_time, &dst->compile_time); + som_swap_clock_out (&src->source_time, &dst->source_time); +} + +static void +som_swap_exec_auxhdr_in (struct som_external_exec_auxhdr *src, + struct som_exec_auxhdr *dst) +{ + som_swap_aux_id_in (&src->som_auxhdr, &dst->som_auxhdr); + dst->exec_tsize = bfd_getb32 (src->exec_tsize); + dst->exec_tmem = bfd_getb32 (src->exec_tmem); + dst->exec_tfile = bfd_getb32 (src->exec_tfile); + dst->exec_dsize = bfd_getb32 (src->exec_dsize); + dst->exec_dmem = bfd_getb32 (src->exec_dmem); + dst->exec_dfile = bfd_getb32 (src->exec_dfile); + dst->exec_bsize = bfd_getb32 (src->exec_bsize); + dst->exec_entry = bfd_getb32 (src->exec_entry); + dst->exec_flags = bfd_getb32 (src->exec_flags); + dst->exec_bfill = bfd_getb32 (src->exec_bfill); +} + +static void +som_swap_exec_auxhdr_out (struct som_exec_auxhdr *src, + struct som_external_exec_auxhdr *dst) +{ + som_swap_aux_id_out (&src->som_auxhdr, &dst->som_auxhdr); + bfd_putb32 (src->exec_tsize, dst->exec_tsize); + bfd_putb32 (src->exec_tmem, dst->exec_tmem); + bfd_putb32 (src->exec_tfile, dst->exec_tfile); + bfd_putb32 (src->exec_dsize, dst->exec_dsize); + bfd_putb32 (src->exec_dmem, dst->exec_dmem); + bfd_putb32 (src->exec_dfile, dst->exec_dfile); + bfd_putb32 (src->exec_bsize, dst->exec_bsize); + bfd_putb32 (src->exec_entry, dst->exec_entry); + bfd_putb32 (src->exec_flags, dst->exec_flags); + bfd_putb32 (src->exec_bfill, dst->exec_bfill); +} + +static void +som_swap_lst_header_in (struct som_external_lst_header *src, + struct som_lst_header *dst) +{ + dst->system_id = bfd_getb16 (src->system_id); + dst->a_magic = bfd_getb16 (src->a_magic); + dst->version_id = bfd_getb32 (src->version_id); + som_swap_clock_in (&src->file_time, &dst->file_time); + dst->hash_loc = bfd_getb32 (src->hash_loc); + dst->hash_size = bfd_getb32 (src->hash_size); + dst->module_count = bfd_getb32 (src->module_count); + dst->module_limit = bfd_getb32 (src->module_limit); + dst->dir_loc = bfd_getb32 (src->dir_loc); + dst->export_loc = bfd_getb32 (src->export_loc); + dst->export_count = bfd_getb32 (src->export_count); + dst->import_loc = bfd_getb32 (src->import_loc); + dst->aux_loc = bfd_getb32 (src->aux_loc); + dst->aux_size = bfd_getb32 (src->aux_size); + dst->string_loc = bfd_getb32 (src->string_loc); + dst->string_size = bfd_getb32 (src->string_size); + dst->free_list = bfd_getb32 (src->free_list); + dst->file_end = bfd_getb32 (src->file_end); + dst->checksum = bfd_getb32 (src->checksum); +} + /* Perform some initialization for an object. Save results of this initialization in the BFD. */ static const bfd_target * som_object_setup (bfd *abfd, - struct header *file_hdrp, + struct som_header *file_hdrp, struct som_exec_auxhdr *aux_hdrp, unsigned long current_offset) { @@ -1774,7 +2073,7 @@ static bfd_boolean setup_sections (bfd *abfd, - struct header *file_hdr, + struct som_header *file_hdr, unsigned long current_offset) { char *space_strings; @@ -1799,7 +2098,10 @@ /* Loop over all of the space dictionaries, building up sections. */ for (space_index = 0; space_index < file_hdr->space_total; space_index++) { - struct space_dictionary_record space; + struct som_space_dictionary_record space; + struct som_external_space_dictionary_record ext_space; + char *space_name; + struct som_external_subspace_dictionary_record ext_subspace; struct som_subspace_dictionary_record subspace, save_subspace; unsigned int subspace_index; asection *space_asect; @@ -1809,22 +2111,24 @@ /* Read the space dictionary element. */ if (bfd_seek (abfd, (current_offset + file_hdr->space_location - + space_index * sizeof space), + + space_index * sizeof (ext_space)), SEEK_SET) != 0) goto error_return; - amt = sizeof space; - if (bfd_bread (&space, amt, abfd) != amt) + amt = sizeof ext_space; + if (bfd_bread (&ext_space, amt, abfd) != amt) goto error_return; + som_swap_space_dictionary_in (&ext_space, &space); + /* Setup the space name string. */ - space.name.n_name = space.name.n_strx + space_strings; + space_name = space.name + space_strings; /* Make a section out of it. */ - amt = strlen (space.name.n_name) + 1; + amt = strlen (space_name) + 1; newname = bfd_alloc (abfd, amt); if (!newname) goto error_return; - strcpy (newname, space.name.n_name); + strcpy (newname, space_name); space_asect = bfd_make_section_anyway (abfd, newname); if (!space_asect) @@ -1846,19 +2150,21 @@ /* Now, read in the first subspace for this space. */ if (bfd_seek (abfd, (current_offset + file_hdr->subspace_location - + space.subspace_index * sizeof subspace), + + space.subspace_index * sizeof ext_subspace), SEEK_SET) != 0) goto error_return; - amt = sizeof subspace; - if (bfd_bread (&subspace, amt, abfd) != amt) + amt = sizeof ext_subspace; + if (bfd_bread (&ext_subspace, amt, abfd) != amt) goto error_return; /* Seek back to the start of the subspaces for loop below. */ if (bfd_seek (abfd, (current_offset + file_hdr->subspace_location - + space.subspace_index * sizeof subspace), + + space.subspace_index * sizeof ext_subspace), SEEK_SET) != 0) goto error_return; + som_swap_subspace_dictionary_in (&ext_subspace, &subspace); + /* Setup the start address and file loc from the first subspace record. */ space_asect->vma = subspace.subspace_start; @@ -1876,20 +2182,23 @@ subspace_index++) { asection *subspace_asect; + char *subspace_name; /* Read in the next subspace. */ - amt = sizeof subspace; - if (bfd_bread (&subspace, amt, abfd) != amt) + amt = sizeof ext_subspace; + if (bfd_bread (&ext_subspace, amt, abfd) != amt) goto error_return; + som_swap_subspace_dictionary_in (&ext_subspace, &subspace); + /* Setup the subspace name string. */ - subspace.name.n_name = subspace.name.n_strx + space_strings; + subspace_name = subspace.name + space_strings; - amt = strlen (subspace.name.n_name) + 1; + amt = strlen (subspace_name) + 1; newname = bfd_alloc (abfd, amt); if (!newname) goto error_return; - strcpy (newname, subspace.name.n_name); + strcpy (newname, subspace_name); /* Make a section out of this subspace. */ subspace_asect = bfd_make_section_anyway (abfd, newname); @@ -2066,27 +2375,32 @@ return FALSE; } + /* Read in a SOM object and make it into a BFD. */ static const bfd_target * som_object_p (bfd *abfd) { - struct header file_hdr; + struct som_external_header ext_file_hdr; + struct som_header file_hdr; struct som_exec_auxhdr *aux_hdr_ptr = NULL; unsigned long current_offset = 0; - struct lst_header lst_header; - struct som_entry som_entry; + struct som_external_lst_header ext_lst_header; + struct som_external_som_entry ext_som_entry; bfd_size_type amt; -#define ENTRY_SIZE sizeof (struct som_entry) + unsigned int loc; +#define ENTRY_SIZE sizeof (struct som_external_som_entry) - amt = FILE_HDR_SIZE; - if (bfd_bread ((void *) &file_hdr, amt, abfd) != amt) + amt = sizeof (struct som_external_header); + if (bfd_bread (&ext_file_hdr, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); return NULL; } + som_swap_header_in (&ext_file_hdr, &file_hdr); + if (!_PA_RISC_ID (file_hdr.system_id)) { bfd_set_error (bfd_error_wrong_format); @@ -2099,18 +2413,13 @@ case EXEC_MAGIC: case SHARE_MAGIC: case DEMAND_MAGIC: -#ifdef DL_MAGIC case DL_MAGIC: -#endif -#ifdef SHL_MAGIC case SHL_MAGIC: -#endif #ifdef SHARED_MAGIC_CNX case SHARED_MAGIC_CNX: #endif break; -#ifdef EXECLIBMAGIC case EXECLIBMAGIC: /* Read the lst header and determine where the SOM directory begins. */ @@ -2121,8 +2430,8 @@ return NULL; } - amt = SLSTHDR; - if (bfd_bread ((void *) &lst_header, amt, abfd) != amt) + amt = sizeof (struct som_external_lst_header); + if (bfd_bread (&ext_lst_header, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); @@ -2130,8 +2439,8 @@ } /* Position to and read the first directory entry. */ - - if (bfd_seek (abfd, lst_header.dir_loc, SEEK_SET) != 0) + loc = bfd_getb32 (ext_lst_header.dir_loc); + if (bfd_seek (abfd, loc, SEEK_SET) != 0) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); @@ -2139,7 +2448,7 @@ } amt = ENTRY_SIZE; - if (bfd_bread ((void *) &som_entry, amt, abfd) != amt) + if (bfd_bread (&ext_som_entry, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); @@ -2147,34 +2456,33 @@ } /* Now position to the first SOM. */ - - if (bfd_seek (abfd, som_entry.location, SEEK_SET) != 0) + current_offset = bfd_getb32 (ext_som_entry.location); + if (bfd_seek (abfd, current_offset, SEEK_SET) != 0) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); return NULL; } - current_offset = som_entry.location; - /* And finally, re-read the som header. */ - amt = FILE_HDR_SIZE; - if (bfd_bread ((void *) &file_hdr, amt, abfd) != amt) + amt = sizeof (struct som_external_header); + if (bfd_bread (&ext_file_hdr, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); return NULL; } + som_swap_header_in (&ext_file_hdr, &file_hdr); + break; -#endif default: bfd_set_error (bfd_error_wrong_format); return NULL; } - if (file_hdr.version_id != VERSION_ID + if (file_hdr.version_id != OLD_VERSION_ID && file_hdr.version_id != NEW_VERSION_ID) { bfd_set_error (bfd_error_wrong_format); @@ -2186,17 +2494,20 @@ a non-existant auxiliary header. */ if (file_hdr.aux_header_size != 0) { + struct som_external_exec_auxhdr ext_exec_auxhdr; + aux_hdr_ptr = bfd_zalloc (abfd, (bfd_size_type) sizeof (*aux_hdr_ptr)); if (aux_hdr_ptr == NULL) return NULL; - amt = AUX_HDR_SIZE; - if (bfd_bread ((void *) aux_hdr_ptr, amt, abfd) != amt) + amt = sizeof (struct som_external_exec_auxhdr); + if (bfd_bread (&ext_exec_auxhdr, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); return NULL; } + som_swap_exec_auxhdr_in (&ext_exec_auxhdr, aux_hdr_ptr); } if (!setup_sections (abfd, &file_hdr, current_offset)) @@ -2229,9 +2540,9 @@ static bfd_boolean som_prep_headers (bfd *abfd) { - struct header *file_hdr; + struct som_header *file_hdr; asection *section; - bfd_size_type amt = sizeof (struct header); + bfd_size_type amt = sizeof (struct som_header); /* Make and attach a file header to the BFD. */ file_hdr = bfd_zalloc (abfd, amt); @@ -2284,7 +2595,7 @@ if (som_is_space (section)) { /* Allocate space for the space dictionary. */ - amt = sizeof (struct space_dictionary_record); + amt = sizeof (struct som_space_dictionary_record); som_section_data (section)->space_dict = bfd_zalloc (abfd, amt); if (som_section_data (section)->space_dict == NULL) return FALSE; @@ -3042,7 +3353,10 @@ returning from this function.) The same technique is used a few more times below when a buffer is reallocated. */ - tmp_space_size = MAX (2 * tmp_space_size, 5 + length); + if (2 * tmp_space_size < length + 5) + tmp_space_size = length + 5; + else + tmp_space_size = 2 * tmp_space_size; tmp_space = alloca (tmp_space_size); } @@ -3058,9 +3372,9 @@ /* Record the index in the space/subspace records. */ if (som_is_space (section)) - som_section_data (section)->space_dict->name.n_strx = strings_size; + som_section_data (section)->space_dict->name = strings_size; else - som_section_data (section)->subspace_dict->name.n_strx = strings_size; + som_section_data (section)->subspace_dict->name = strings_size; /* Next comes the string itself + a null terminator. */ strcpy (p, section->name); @@ -3093,7 +3407,7 @@ asymbol **syms, unsigned int num_syms, unsigned int *string_sizep, - COMPUNIT *compilation_unit) + struct som_compilation_unit *compilation_unit) { unsigned int i; @@ -3104,7 +3418,6 @@ char *p = tmp_space; unsigned int strings_size = 0; - char *comp[4]; bfd_size_type amt; /* This gets a bit gruesome because of the compilation unit. The @@ -3113,13 +3426,6 @@ write them and update the compilation unit header. On input, the compilation unit header contains local copies of the strings. Move them aside. */ - if (compilation_unit) - { - comp[0] = compilation_unit->name.n_name; - comp[1] = compilation_unit->language_name.n_name; - comp[2] = compilation_unit->product_id.n_name; - comp[3] = compilation_unit->version_id.n_name; - } /* Seek to the start of the space strings in preparation for writing them out. */ @@ -3130,7 +3436,28 @@ { for (i = 0; i < 4; i++) { - size_t length = strlen (comp[i]); + struct som_name_pt *name; + size_t length; + + switch (i) + { + case 0: + name = &compilation_unit->name; + break; + case 1: + name = &compilation_unit->language_name; + break; + case 2: + name = &compilation_unit->product_id; + break; + case 3: + name = &compilation_unit->version_id; + break; + default: + abort (); + } + + length = strlen (name->name); /* If there is not enough room for the next entry, then dump the current buffer contents now and maybe allocate a @@ -3146,7 +3473,10 @@ if (5 + length > tmp_space_size) { /* See alloca above for discussion of new size. */ - tmp_space_size = MAX (2 * tmp_space_size, 5 + length); + if (2 * tmp_space_size < 5 + length) + tmp_space_size = 5 + length; + else + tmp_space_size = 2 * tmp_space_size; tmp_space = alloca (tmp_space_size); } @@ -3164,26 +3494,9 @@ p += 4; /* Next comes the string itself + a null terminator. */ - strcpy (p, comp[i]); + strcpy (p, name->name); - switch (i) - { - case 0: - obj_som_compilation_unit (abfd)->name.n_strx = strings_size; - break; - case 1: - obj_som_compilation_unit (abfd)->language_name.n_strx = - strings_size; - break; - case 2: - obj_som_compilation_unit (abfd)->product_id.n_strx = - strings_size; - break; - case 3: - obj_som_compilation_unit (abfd)->version_id.n_strx = - strings_size; - break; - } + name->strx = strings_size; p += length + 1; strings_size += length + 1; @@ -3215,7 +3528,10 @@ if (5 + length > tmp_space_size) { /* See alloca above for discussion of new size. */ - tmp_space_size = MAX (2 * tmp_space_size, 5 + length); + if (2 * tmp_space_size < 5 + length) + tmp_space_size = 5 + length; + else + tmp_space_size = 2 * tmp_space_size; tmp_space = alloca (tmp_space_size); } @@ -3282,7 +3598,7 @@ /* Make room for the file header, it's contents are not complete yet, so it can not be written at this time. */ - current_offset += sizeof (struct header); + current_offset += sizeof (struct som_external_header); /* Any auxiliary headers will follow the file header. Right now we support only the copyright and version headers. */ @@ -3293,55 +3609,61 @@ /* Parts of the exec header will be filled in later, so delay writing the header itself. Fill in the defaults, and write it later. */ - current_offset += sizeof (struct som_exec_auxhdr); + current_offset += sizeof (struct som_external_exec_auxhdr); obj_som_file_hdr (abfd)->aux_header_size - += sizeof (struct som_exec_auxhdr); + += sizeof (struct som_external_exec_auxhdr); exec_header = obj_som_exec_hdr (abfd); exec_header->som_auxhdr.type = EXEC_AUX_ID; exec_header->som_auxhdr.length = 40; } if (obj_som_version_hdr (abfd) != NULL) { + struct som_external_string_auxhdr ext_string_auxhdr; bfd_size_type len; if (bfd_seek (abfd, (file_ptr) current_offset, SEEK_SET) != 0) return FALSE; /* Write the aux_id structure and the string length. */ - len = sizeof (struct aux_id) + sizeof (unsigned int); + len = sizeof (struct som_external_string_auxhdr); obj_som_file_hdr (abfd)->aux_header_size += len; current_offset += len; - if (bfd_bwrite ((void *) obj_som_version_hdr (abfd), len, abfd) != len) + som_swap_string_auxhdr_out + (obj_som_version_hdr (abfd), &ext_string_auxhdr); + if (bfd_bwrite (&ext_string_auxhdr, len, abfd) != len) return FALSE; /* Write the version string. */ - len = obj_som_version_hdr (abfd)->header_id.length - sizeof (int); + len = obj_som_version_hdr (abfd)->header_id.length - 4; obj_som_file_hdr (abfd)->aux_header_size += len; current_offset += len; - if (bfd_bwrite ((void *) obj_som_version_hdr (abfd)->user_string, len, abfd) + if (bfd_bwrite ((void *) obj_som_version_hdr (abfd)->string, len, abfd) != len) return FALSE; } if (obj_som_copyright_hdr (abfd) != NULL) { + struct som_external_string_auxhdr ext_string_auxhdr; bfd_size_type len; if (bfd_seek (abfd, (file_ptr) current_offset, SEEK_SET) != 0) return FALSE; /* Write the aux_id structure and the string length. */ - len = sizeof (struct aux_id) + sizeof (unsigned int); + len = sizeof (struct som_external_string_auxhdr); obj_som_file_hdr (abfd)->aux_header_size += len; current_offset += len; - if (bfd_bwrite ((void *) obj_som_copyright_hdr (abfd), len, abfd) != len) + som_swap_string_auxhdr_out + (obj_som_copyright_hdr (abfd), &ext_string_auxhdr); + if (bfd_bwrite (&ext_string_auxhdr, len, abfd) != len) return FALSE; /* Write the copyright string. */ - len = obj_som_copyright_hdr (abfd)->header_id.length - sizeof (int); + len = obj_som_copyright_hdr (abfd)->header_id.length - 4; obj_som_file_hdr (abfd)->aux_header_size += len; current_offset += len; - if (bfd_bwrite ((void *) obj_som_copyright_hdr (abfd)->copyright, len, abfd) + if (bfd_bwrite ((void *) obj_som_copyright_hdr (abfd)->string, len, abfd) != len) return FALSE; } @@ -3363,7 +3685,8 @@ num_spaces = som_count_spaces (abfd); obj_som_file_hdr (abfd)->space_location = current_offset; obj_som_file_hdr (abfd)->space_total = num_spaces; - current_offset += num_spaces * sizeof (struct space_dictionary_record); + current_offset += + num_spaces * sizeof (struct som_external_space_dictionary_record); /* Next are the subspace records. These are fixed length records. @@ -3376,7 +3699,7 @@ obj_som_file_hdr (abfd)->subspace_location = current_offset; obj_som_file_hdr (abfd)->subspace_total = num_subspaces; current_offset - += num_subspaces * sizeof (struct som_subspace_dictionary_record); + += num_subspaces * sizeof (struct som_external_subspace_dictionary_record); /* Next is the string table for the space/subspace names. We will build and write the string table on the fly. At the same time @@ -3405,7 +3728,7 @@ if (obj_som_compilation_unit (abfd)) { obj_som_file_hdr (abfd)->compiler_total = 1; - current_offset += COMPUNITSZ; + current_offset += sizeof (struct som_external_compilation_unit); } /* Now compute the file positions for the loadable subspaces, taking @@ -3620,6 +3943,7 @@ unsigned long current_offset; unsigned int strings_size, total_reloc_size; bfd_size_type amt; + struct som_external_header ext_header; /* We must set up the version identifier here as objcopy/strip copy private BFD data too late for us to handle this in som_begin_writing. */ @@ -3651,7 +3975,8 @@ num_syms = bfd_get_symcount (abfd); obj_som_file_hdr (abfd)->symbol_location = current_offset; obj_som_file_hdr (abfd)->symbol_total = num_syms; - current_offset += num_syms * sizeof (struct symbol_dictionary_record); + current_offset += + num_syms * sizeof (struct som_external_symbol_dictionary_record); /* Next are the symbol strings. Align them to a word boundary. */ @@ -3720,6 +4045,7 @@ subsection != NULL; subsection = subsection->next) { + struct som_external_subspace_dictionary_record ext_subspace_dict; /* Skip any section which does not correspond to a space or subspace. Or does not have SEC_ALLOC set (and therefore @@ -3750,9 +4076,10 @@ som_section_data (subsection)->subspace_dict->space_index = i; /* Dump the current subspace header. */ + som_swap_subspace_dictionary_record_out + (som_section_data (subsection)->subspace_dict, &ext_subspace_dict); amt = sizeof (struct som_subspace_dictionary_record); - if (bfd_bwrite ((void *) som_section_data (subsection)->subspace_dict, - amt, abfd) != amt) + if (bfd_bwrite (&ext_subspace_dict, amt, abfd) != amt) return FALSE; } /* Goto the next section. */ @@ -3775,6 +4102,7 @@ subsection != NULL; subsection = subsection->next) { + struct som_external_subspace_dictionary_record ext_subspace_dict; /* Skip any section which does not correspond to a space or subspace, or which SEC_ALLOC set (and therefore handled @@ -3806,9 +4134,10 @@ som_section_data (subsection)->subspace_dict->space_index = i; /* Dump this subspace header. */ + som_swap_subspace_dictionary_record_out + (som_section_data (subsection)->subspace_dict, &ext_subspace_dict); amt = sizeof (struct som_subspace_dictionary_record); - if (bfd_bwrite ((void *) som_section_data (subsection)->subspace_dict, - amt, abfd) != amt) + if (bfd_bwrite (&ext_subspace_dict, amt, abfd) != amt) return FALSE; } /* Goto the next section. */ @@ -3827,14 +4156,17 @@ section = abfd->sections; for (i = 0; i < num_spaces; i++) { + struct som_external_space_dictionary_record ext_space_dict; + /* Find a space. */ while (!som_is_space (section)) section = section->next; /* Dump its header. */ - amt = sizeof (struct space_dictionary_record); - if (bfd_bwrite ((void *) som_section_data (section)->space_dict, - amt, abfd) != amt) + som_swap_space_dictionary_out (som_section_data (section)->space_dict, + &ext_space_dict); + amt = sizeof (struct som_external_space_dictionary_record); + if (bfd_bwrite (&ext_space_dict, amt, abfd) != amt) return FALSE; /* Goto the next section. */ @@ -3844,12 +4176,17 @@ /* Write the compilation unit record if there is one. */ if (obj_som_compilation_unit (abfd)) { + struct som_external_compilation_unit ext_comp_unit; + location = obj_som_file_hdr (abfd)->compiler_location; if (bfd_seek (abfd, location, SEEK_SET) != 0) return FALSE; - amt = COMPUNITSZ; - if (bfd_bwrite ((void *) obj_som_compilation_unit (abfd), amt, abfd) != amt) + som_swap_compilation_unit_out + (obj_som_compilation_unit (abfd), &ext_comp_unit); + + amt = sizeof (struct som_external_compilation_unit); + if (bfd_bwrite (&ext_comp_unit, amt, abfd) != amt) return FALSE; } @@ -3864,16 +4201,17 @@ else obj_som_file_hdr (abfd)->system_id = CPU_PA_RISC1_0; - /* Compute the checksum for the file header just before writing + /* Swap and compute the checksum for the file header just before writing the header to disk. */ - obj_som_file_hdr (abfd)->checksum = som_compute_checksum (abfd); + som_swap_header_out (obj_som_file_hdr (abfd), &ext_header); + bfd_putb32 (som_compute_checksum (&ext_header), ext_header.checksum); /* Only thing left to do is write out the file header. It is always at location zero. Seek there and write it. */ if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0) return FALSE; - amt = sizeof (struct header); - if (bfd_bwrite ((void *) obj_som_file_hdr (abfd), amt, abfd) != amt) + amt = sizeof (struct som_external_header); + if (bfd_bwrite (&ext_header, amt, abfd) != amt) return FALSE; /* Now write the exec header. */ @@ -3881,6 +4219,7 @@ { long tmp, som_length; struct som_exec_auxhdr *exec_header; + struct som_external_exec_auxhdr ext_exec_header; exec_header = obj_som_exec_hdr (abfd); exec_header->exec_entry = bfd_get_start_address (abfd); @@ -3906,12 +4245,14 @@ return FALSE; } + som_swap_exec_auxhdr_out (exec_header, &ext_exec_header); + if (bfd_seek (abfd, obj_som_file_hdr (abfd)->aux_header_location, SEEK_SET) != 0) return FALSE; - amt = AUX_HDR_SIZE; - if (bfd_bwrite ((void *) exec_header, amt, abfd) != amt) + amt = sizeof (ext_exec_header); + if (bfd_bwrite (&ext_exec_header, amt, abfd) != amt) return FALSE; } return TRUE; @@ -3920,13 +4261,13 @@ /* Compute and return the checksum for a SOM file header. */ static unsigned long -som_compute_checksum (bfd *abfd) +som_compute_checksum (struct som_external_header *hdr) { unsigned long checksum, count, i; - unsigned long *buffer = (unsigned long *) obj_som_file_hdr (abfd); + unsigned long *buffer = (unsigned long *) hdr; checksum = 0; - count = sizeof (struct header) / sizeof (unsigned long); + count = sizeof (struct som_external_header) / 4; for (i = 0; i < count; i++) checksum ^= *(buffer + i); @@ -4099,14 +4440,14 @@ unsigned int num_syms = bfd_get_symcount (abfd); file_ptr symtab_location = obj_som_file_hdr (abfd)->symbol_location; asymbol **bfd_syms = obj_som_sorted_syms (abfd); - struct symbol_dictionary_record *som_symtab = NULL; + struct som_external_symbol_dictionary_record *som_symtab = NULL; unsigned int i; bfd_size_type symtab_size; /* Compute total symbol table size and allocate a chunk of memory to hold the symbol table as we build it. */ symtab_size = num_syms; - symtab_size *= sizeof (struct symbol_dictionary_record); + symtab_size *= sizeof (struct som_external_symbol_dictionary_record); som_symtab = bfd_zmalloc (symtab_size); if (som_symtab == NULL && symtab_size != 0) goto error_return; @@ -4115,26 +4456,32 @@ for (i = 0; i < num_syms; i++) { struct som_misc_symbol_info info; + unsigned int flags; /* This is really an index into the symbol strings table. By the time we get here, the index has already been computed and stored into the name field in the BFD symbol. */ - som_symtab[i].name.n_strx = som_symbol_data(bfd_syms[i])->stringtab_offset; + bfd_putb32 (som_symbol_data (bfd_syms[i])->stringtab_offset, + som_symtab[i].name); /* Derive SOM information from the BFD symbol. */ som_bfd_derive_misc_symbol_info (abfd, bfd_syms[i], &info); /* Now use it. */ - som_symtab[i].symbol_type = info.symbol_type; - som_symtab[i].symbol_scope = info.symbol_scope; - som_symtab[i].arg_reloc = info.arg_reloc; - som_symtab[i].symbol_info = info.symbol_info; - som_symtab[i].xleast = 3; - som_symtab[i].symbol_value = info.symbol_value | info.priv_level; - som_symtab[i].secondary_def = info.secondary_def; - som_symtab[i].is_comdat = info.is_comdat; - som_symtab[i].is_common = info.is_common; - som_symtab[i].dup_common = info.dup_common; + flags = (info.symbol_type << SOM_SYMBOL_TYPE_SH) + | (info.symbol_scope << SOM_SYMBOL_SCOPE_SH) + | (info.arg_reloc << SOM_SYMBOL_ARG_RELOC_SH) + | (3 << SOM_SYMBOL_XLEAST_SH) + | (info.secondary_def ? SOM_SYMBOL_SECONDARY_DEF : 0) + | (info.is_common ? SOM_SYMBOL_IS_COMMON : 0) + | (info.dup_common ? SOM_SYMBOL_DUP_COMMON : 0); + bfd_putb32 (flags, som_symtab[i].flags); + + flags = (info.symbol_info << SOM_SYMBOL_SYMBOL_INFO_SH) + | (info.is_comdat ? SOM_SYMBOL_IS_COMDAT : 0); + bfd_putb32 (flags, som_symtab[i].info); + bfd_putb32 (info.symbol_value | info.priv_level, + som_symtab[i].symbol_value); } /* Everything is ready, seek to the right location and @@ -4226,28 +4573,32 @@ /* Convert from a SOM subspace index to a BFD section. */ static asection * -bfd_section_from_som_symbol (bfd *abfd, struct symbol_dictionary_record *symbol) +bfd_section_from_som_symbol + (bfd *abfd, struct som_external_symbol_dictionary_record *symbol) { asection *section; + unsigned int flags = bfd_getb32 (symbol->flags); + unsigned int symbol_type = (flags >> SOM_SYMBOL_TYPE_SH) & SOM_SYMBOL_TYPE_MASK; /* The meaning of the symbol_info field changes for functions within executables. So only use the quick symbol_info mapping for incomplete objects and non-function symbols in executables. */ if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0 - || (symbol->symbol_type != ST_ENTRY - && symbol->symbol_type != ST_PRI_PROG - && symbol->symbol_type != ST_SEC_PROG - && symbol->symbol_type != ST_MILLICODE)) + || (symbol_type != ST_ENTRY + && symbol_type != ST_PRI_PROG + && symbol_type != ST_SEC_PROG + && symbol_type != ST_MILLICODE)) { - int index = symbol->symbol_info; + int idx = (bfd_getb32 (symbol->info) >> SOM_SYMBOL_SYMBOL_INFO_SH) + & SOM_SYMBOL_SYMBOL_INFO_MASK; for (section = abfd->sections; section != NULL; section = section->next) - if (section->target_index == index && som_is_subspace (section)) + if (section->target_index == idx && som_is_subspace (section)) return section; } else { - unsigned int value = symbol->symbol_value; + unsigned int value = bfd_getb32 (symbol->symbol_value); /* For executables we will have to use the symbol's address and find out what section would contain that address. Yuk. */ @@ -4269,9 +4620,9 @@ som_slurp_symbol_table (bfd *abfd) { int symbol_count = bfd_get_symcount (abfd); - int symsize = sizeof (struct symbol_dictionary_record); + int symsize = sizeof (struct som_external_symbol_dictionary_record); char *stringtab; - struct symbol_dictionary_record *buf = NULL, *bufp, *endbufp; + struct som_external_symbol_dictionary_record *buf = NULL, *bufp, *endbufp; som_symbol_type *sym, *symbase; bfd_size_type amt; @@ -4309,42 +4660,48 @@ endbufp = buf + symbol_count; for (bufp = buf, sym = symbase; bufp < endbufp; ++bufp) { + unsigned int flags = bfd_getb32 (bufp->flags); + unsigned int symbol_type = + (flags >> SOM_SYMBOL_TYPE_SH) & SOM_SYMBOL_TYPE_MASK; + unsigned int symbol_scope = + (flags >> SOM_SYMBOL_SCOPE_SH) & SOM_SYMBOL_SCOPE_MASK; + /* I don't think we care about these. */ - if (bufp->symbol_type == ST_SYM_EXT - || bufp->symbol_type == ST_ARG_EXT) + if (symbol_type == ST_SYM_EXT || symbol_type == ST_ARG_EXT) continue; /* Set some private data we care about. */ - if (bufp->symbol_type == ST_NULL) + if (symbol_type == ST_NULL) som_symbol_data (sym)->som_type = SYMBOL_TYPE_UNKNOWN; - else if (bufp->symbol_type == ST_ABSOLUTE) + else if (symbol_type == ST_ABSOLUTE) som_symbol_data (sym)->som_type = SYMBOL_TYPE_ABSOLUTE; - else if (bufp->symbol_type == ST_DATA) + else if (symbol_type == ST_DATA) som_symbol_data (sym)->som_type = SYMBOL_TYPE_DATA; - else if (bufp->symbol_type == ST_CODE) + else if (symbol_type == ST_CODE) som_symbol_data (sym)->som_type = SYMBOL_TYPE_CODE; - else if (bufp->symbol_type == ST_PRI_PROG) + else if (symbol_type == ST_PRI_PROG) som_symbol_data (sym)->som_type = SYMBOL_TYPE_PRI_PROG; - else if (bufp->symbol_type == ST_SEC_PROG) + else if (symbol_type == ST_SEC_PROG) som_symbol_data (sym)->som_type = SYMBOL_TYPE_SEC_PROG; - else if (bufp->symbol_type == ST_ENTRY) + else if (symbol_type == ST_ENTRY) som_symbol_data (sym)->som_type = SYMBOL_TYPE_ENTRY; - else if (bufp->symbol_type == ST_MILLICODE) + else if (symbol_type == ST_MILLICODE) som_symbol_data (sym)->som_type = SYMBOL_TYPE_MILLICODE; - else if (bufp->symbol_type == ST_PLABEL) + else if (symbol_type == ST_PLABEL) som_symbol_data (sym)->som_type = SYMBOL_TYPE_PLABEL; else som_symbol_data (sym)->som_type = SYMBOL_TYPE_UNKNOWN; - som_symbol_data (sym)->tc_data.ap.hppa_arg_reloc = bufp->arg_reloc; + som_symbol_data (sym)->tc_data.ap.hppa_arg_reloc = + (flags >> SOM_SYMBOL_ARG_RELOC_SH) & SOM_SYMBOL_ARG_RELOC_MASK; /* Some reasonable defaults. */ sym->symbol.the_bfd = abfd; - sym->symbol.name = bufp->name.n_strx + stringtab; - sym->symbol.value = bufp->symbol_value; + sym->symbol.name = bfd_getb32 (bufp->name) + stringtab; + sym->symbol.value = bfd_getb32 (bufp->symbol_value); sym->symbol.section = 0; sym->symbol.flags = 0; - switch (bufp->symbol_type) + switch (symbol_type) { case ST_ENTRY: case ST_MILLICODE: @@ -4363,7 +4720,7 @@ sym->symbol.value &= ~0x3; /* If the symbol's scope is SS_UNSAT, then these are undefined function symbols. */ - if (bufp->symbol_scope == SS_UNSAT) + if (symbol_scope == SS_UNSAT) sym->symbol.flags |= BSF_FUNCTION; default: @@ -4371,12 +4728,12 @@ } /* Handle scoping and section information. */ - switch (bufp->symbol_scope) + switch (symbol_scope) { /* symbol_info field is undefined for SS_EXTERNAL and SS_UNSAT symbols, so the section associated with this symbol can't be known. */ case SS_EXTERNAL: - if (bufp->symbol_type != ST_STORAGE) + if (symbol_type != ST_STORAGE) sym->symbol.section = bfd_und_section_ptr; else sym->symbol.section = bfd_com_section_ptr; @@ -4384,7 +4741,7 @@ break; case SS_UNSAT: - if (bufp->symbol_type != ST_STORAGE) + if (symbol_type != ST_STORAGE) sym->symbol.section = bfd_und_section_ptr; else sym->symbol.section = bfd_com_section_ptr; @@ -4404,7 +4761,7 @@ } /* Check for a weak symbol. */ - if (bufp->secondary_def) + if (flags & SOM_SYMBOL_SECONDARY_DEF) sym->symbol.flags |= BSF_WEAK; /* Mark section symbols and symbols used by the debugger. @@ -5103,7 +5460,7 @@ som_bfd_print_private_bfd_data (bfd *abfd, void *farg) { struct som_exec_auxhdr *exec_header; - struct aux_id* auxhdr; + struct som_aux_id* auxhdr; FILE *f; f = (FILE *) farg; @@ -5177,7 +5534,7 @@ bfd_boolean bfd_som_set_subsection_attributes (asection *section, asection *container, - int access, + int access_ctr, unsigned int sort_key, int quadrant, int comdat, @@ -5194,7 +5551,7 @@ return FALSE; } som_section_data (section)->copy_data->sort_key = sort_key; - som_section_data (section)->copy_data->access_control_bits = access; + som_section_data (section)->copy_data->access_control_bits = access_ctr; som_section_data (section)->copy_data->quadrant = quadrant; som_section_data (section)->copy_data->container = container; som_section_data (section)->copy_data->is_comdat = comdat; @@ -5230,15 +5587,15 @@ if (len % 4) pad = (4 - (len % 4)); - amt = sizeof (struct aux_id) + sizeof (unsigned int) + len + pad; + amt = sizeof (struct som_string_auxhdr) + len + pad; obj_som_version_hdr (abfd) = bfd_zalloc (abfd, amt); if (!obj_som_version_hdr (abfd)) return FALSE; obj_som_version_hdr (abfd)->header_id.type = VERSION_AUX_ID; - obj_som_version_hdr (abfd)->header_id.length = len + pad; - obj_som_version_hdr (abfd)->header_id.length += sizeof (int); + obj_som_version_hdr (abfd)->header_id.length = 4 + len + pad; obj_som_version_hdr (abfd)->string_length = len; - strncpy (obj_som_version_hdr (abfd)->user_string, string, len); + memcpy (obj_som_version_hdr (abfd)->string, string, len); + memset (obj_som_version_hdr (abfd)->string + len, 0, pad); } else if (type == COPYRIGHT_AUX_ID) { @@ -5247,15 +5604,15 @@ if (len % 4) pad = (4 - (len % 4)); - amt = sizeof (struct aux_id) + sizeof (unsigned int) + len + pad; + amt = sizeof (struct som_string_auxhdr) + len + pad; obj_som_copyright_hdr (abfd) = bfd_zalloc (abfd, amt); if (!obj_som_copyright_hdr (abfd)) return FALSE; obj_som_copyright_hdr (abfd)->header_id.type = COPYRIGHT_AUX_ID; - obj_som_copyright_hdr (abfd)->header_id.length = len + pad; - obj_som_copyright_hdr (abfd)->header_id.length += sizeof (int); + obj_som_copyright_hdr (abfd)->header_id.length = len + pad + 4; obj_som_copyright_hdr (abfd)->string_length = len; - strcpy (obj_som_copyright_hdr (abfd)->copyright, string); + memcpy (obj_som_copyright_hdr (abfd)->string, string, len); + memset (obj_som_copyright_hdr (abfd)->string + len, 0, pad); } return TRUE; } @@ -5270,18 +5627,20 @@ const char *product_id, const char *version_id) { - COMPUNIT *n = (COMPUNIT *) bfd_zalloc (abfd, (bfd_size_type) COMPUNITSZ); + struct som_compilation_unit *n; + n = (struct som_compilation_unit *) bfd_zalloc + (abfd, (bfd_size_type) sizeof (*n)); if (n == NULL) return FALSE; #define STRDUP(f) \ if (f != NULL) \ { \ - n->f.n_name = bfd_alloc (abfd, (bfd_size_type) strlen (f) + 1); \ - if (n->f.n_name == NULL) \ + n->f.name = bfd_alloc (abfd, (bfd_size_type) strlen (f) + 1); \ + if (n->f.name == NULL) \ return FALSE; \ - strcpy (n->f.n_name, f); \ + strcpy (n->f.name, f); \ } STRDUP (name); @@ -5415,7 +5774,6 @@ struct bfd_link_info *info ATTRIBUTE_UNUSED) { (*_bfd_error_handler) (_("som_sizeof_headers unimplemented")); - fflush (stderr); abort (); return 0; } @@ -5502,18 +5860,19 @@ static bfd_boolean som_bfd_count_ar_symbols (bfd *abfd, - struct lst_header *lst_header, + struct som_lst_header *lst_header, symindex *count) { unsigned int i; - unsigned int *hash_table = NULL; + unsigned char *hash_table; bfd_size_type amt; - file_ptr lst_filepos = bfd_tell (abfd) - sizeof (struct lst_header); + file_ptr lst_filepos; + + lst_filepos = bfd_tell (abfd) - sizeof (struct som_external_lst_header); - amt = lst_header->hash_size; - amt *= sizeof (unsigned int); + amt = lst_header->hash_size * 4; hash_table = bfd_malloc (amt); - if (hash_table == NULL && lst_header->hash_size != 0) + if (hash_table == NULL && amt != 0) goto error_return; /* Don't forget to initialize the counter! */ @@ -5528,35 +5887,39 @@ chain. */ for (i = 0; i < lst_header->hash_size; i++) { - struct lst_symbol_record lst_symbol; + struct som_external_lst_symbol_record ext_lst_symbol; + unsigned int hash_val = bfd_getb32 (hash_table + 4 * i); /* An empty chain has zero as it's file offset. */ - if (hash_table[i] == 0) + if (hash_val == 0) continue; /* Seek to the first symbol in this hash chain. */ - if (bfd_seek (abfd, lst_filepos + hash_table[i], SEEK_SET) != 0) + if (bfd_seek (abfd, lst_filepos + hash_val, SEEK_SET) != 0) goto error_return; /* Read in this symbol and update the counter. */ - amt = sizeof (lst_symbol); - if (bfd_bread ((void *) &lst_symbol, amt, abfd) != amt) + amt = sizeof (ext_lst_symbol); + if (bfd_bread ((void *) &ext_lst_symbol, amt, abfd) != amt) goto error_return; (*count)++; /* Now iterate through the rest of the symbols on this chain. */ - while (lst_symbol.next_entry) + while (1) { + unsigned int next_entry = bfd_getb32 (ext_lst_symbol.next_entry); + + if (next_entry == 0) + break; /* Seek to the next symbol. */ - if (bfd_seek (abfd, lst_filepos + lst_symbol.next_entry, SEEK_SET) - != 0) + if (bfd_seek (abfd, lst_filepos + next_entry, SEEK_SET) != 0) goto error_return; /* Read the symbol in and update the counter. */ - amt = sizeof (lst_symbol); - if (bfd_bread ((void *) &lst_symbol, amt, abfd) != amt) + amt = sizeof (ext_lst_symbol); + if (bfd_bread ((void *) &ext_lst_symbol, amt, abfd) != amt) goto error_return; (*count)++; @@ -5577,20 +5940,21 @@ static bfd_boolean som_bfd_fill_in_ar_symbols (bfd *abfd, - struct lst_header *lst_header, + struct som_lst_header *lst_header, carsym **syms) { - unsigned int i, len; + unsigned int i; carsym *set = syms[0]; - unsigned int *hash_table = NULL; - struct som_entry *som_dict = NULL; + unsigned char *hash_table; + struct som_external_som_entry *som_dict = NULL; bfd_size_type amt; - file_ptr lst_filepos = bfd_tell (abfd) - sizeof (struct lst_header); + file_ptr lst_filepos; + unsigned int string_loc; - amt = lst_header->hash_size; - amt *= sizeof (unsigned int); + lst_filepos = bfd_tell (abfd) - sizeof (struct som_external_lst_header); + amt = lst_header->hash_size * 4; hash_table = bfd_malloc (amt); - if (hash_table == NULL && lst_header->hash_size != 0) + if (hash_table == NULL && amt != 0) goto error_return; /* Read in the hash table. The has table is an array of 32bit file offsets @@ -5603,26 +5967,31 @@ if (bfd_seek (abfd, lst_filepos + lst_header->dir_loc, SEEK_SET) != 0) goto error_return; - amt = lst_header->module_count; - amt *= sizeof (struct som_entry); + amt = lst_header->module_count * sizeof (struct som_external_som_entry); som_dict = bfd_malloc (amt); - if (som_dict == NULL && lst_header->module_count != 0) + if (som_dict == NULL && amt != 0) goto error_return; if (bfd_bread ((void *) som_dict, amt, abfd) != amt) goto error_return; + string_loc = lst_header->string_loc; + /* Walk each chain filling in the carsyms as we go along. */ for (i = 0; i < lst_header->hash_size; i++) { - struct lst_symbol_record lst_symbol; + struct som_external_lst_symbol_record lst_symbol; + unsigned int hash_val; + unsigned int len; + unsigned char ext_len[4]; /* An empty chain has zero as it's file offset. */ - if (hash_table[i] == 0) + hash_val = bfd_getb32 (hash_table + 4 * i); + if (hash_val == 0) continue; /* Seek to and read the first symbol on the chain. */ - if (bfd_seek (abfd, lst_filepos + hash_table[i], SEEK_SET) != 0) + if (bfd_seek (abfd, lst_filepos + hash_val, SEEK_SET) != 0) goto error_return; amt = sizeof (lst_symbol); @@ -5636,12 +6005,13 @@ and index into it. Well, according to the SOM ABI the string index can point *anywhere* in the archive to save space, so just using the string table would not be safe. */ - if (bfd_seek (abfd, lst_filepos + lst_header->string_loc - + lst_symbol.name.n_strx - 4, SEEK_SET) != 0) + if (bfd_seek (abfd, (lst_filepos + string_loc + + bfd_getb32 (lst_symbol.name) - 4), SEEK_SET) != 0) goto error_return; - if (bfd_bread (&len, (bfd_size_type) 4, abfd) != 4) + if (bfd_bread (&ext_len, (bfd_size_type) 4, abfd) != 4) goto error_return; + len = bfd_getb32 (ext_len); /* Allocate space for the name and null terminate it too. */ set->name = bfd_zalloc (abfd, (bfd_size_type) len + 1); @@ -5654,18 +6024,23 @@ /* Fill in the file offset. Note that the "location" field points to the SOM itself, not the ar_hdr in front of it. */ - set->file_offset = som_dict[lst_symbol.som_index].location - - sizeof (struct ar_hdr); + set->file_offset = + bfd_getb32 (som_dict[bfd_getb32 (lst_symbol.som_index)].location) + - sizeof (struct ar_hdr); /* Go to the next symbol. */ set++; /* Iterate through the rest of the chain. */ - while (lst_symbol.next_entry) + while (1) { + unsigned int next_entry = bfd_getb32 (lst_symbol.next_entry); + + if (next_entry == 0) + break; + /* Seek to the next symbol and read it in. */ - if (bfd_seek (abfd, lst_filepos + lst_symbol.next_entry, SEEK_SET) - != 0) + if (bfd_seek (abfd, lst_filepos + next_entry, SEEK_SET) != 0) goto error_return; amt = sizeof (lst_symbol); @@ -5673,12 +6048,13 @@ goto error_return; /* Seek to the name length & string and read them in. */ - if (bfd_seek (abfd, lst_filepos + lst_header->string_loc - + lst_symbol.name.n_strx - 4, SEEK_SET) != 0) + if (bfd_seek (abfd, lst_filepos + string_loc + + bfd_getb32 (lst_symbol.name) - 4, SEEK_SET) != 0) goto error_return; - if (bfd_bread (&len, (bfd_size_type) 4, abfd) != 4) + if (bfd_bread (&ext_len, (bfd_size_type) 4, abfd) != 4) goto error_return; + len = bfd_getb32 (ext_len); /* Allocate space for the name and null terminate it too. */ set->name = bfd_zalloc (abfd, (bfd_size_type) len + 1); @@ -5691,8 +6067,9 @@ /* Fill in the file offset. Note that the "location" field points to the SOM itself, not the ar_hdr in front of it. */ - set->file_offset = som_dict[lst_symbol.som_index].location - - sizeof (struct ar_hdr); + set->file_offset = + bfd_getb32 (som_dict[bfd_getb32 (lst_symbol.som_index)].location) + - sizeof (struct ar_hdr); /* Go on to the next symbol. */ set++; @@ -5719,7 +6096,8 @@ static bfd_boolean som_slurp_armap (bfd *abfd) { - struct lst_header lst_header; + struct som_external_lst_header ext_lst_header; + struct som_lst_header lst_header; struct ar_hdr ar_header; unsigned int parsed_size; struct artdata *ardata = bfd_ardata (abfd); @@ -5768,10 +6146,12 @@ /* Read in the library symbol table. We'll make heavy use of this in just a minute. */ - amt = sizeof (struct lst_header); - if (bfd_bread ((void *) &lst_header, amt, abfd) != amt) + amt = sizeof (struct som_external_lst_header); + if (bfd_bread ((void *) &ext_lst_header, amt, abfd) != amt) return FALSE; + som_swap_lst_header_in (&ext_lst_header, &lst_header); + /* Sanity check. */ if (lst_header.a_magic != LIBMAGIC) { @@ -5785,7 +6165,8 @@ /* Get back to the start of the library symbol table. */ if (bfd_seek (abfd, (ardata->first_file_filepos - parsed_size - + sizeof (struct lst_header)), SEEK_SET) != 0) + + sizeof (struct som_external_lst_header)), + SEEK_SET) != 0) return FALSE; /* Initialize the cache and allocate space for the library symbols. */ @@ -5876,7 +6257,7 @@ /* Bump the various counters, being careful to honor alignment considerations in the string table. */ (*num_syms)++; - *stringsize = *stringsize + strlen (sym->symbol.name) + 5; + *stringsize += strlen (sym->symbol.name) + 5; while (*stringsize % 4) (*stringsize)++; } @@ -5909,41 +6290,37 @@ som_bfd_ar_write_symbol_stuff (bfd *abfd, unsigned int nsyms, unsigned int string_size, - struct lst_header lst, + struct som_external_lst_header lst, unsigned elength) { - file_ptr lst_filepos; char *strings = NULL, *p; - struct lst_symbol_record *lst_syms = NULL, *curr_lst_sym; + struct som_external_lst_symbol_record *lst_syms = NULL, *curr_lst_sym; bfd *curr_bfd; - unsigned int *hash_table = NULL; - struct som_entry *som_dict = NULL; - struct lst_symbol_record **last_hash_entry = NULL; + unsigned char *hash_table = NULL; + struct som_external_som_entry *som_dict = NULL; + struct som_external_lst_symbol_record **last_hash_entry = NULL; unsigned int curr_som_offset, som_index = 0; bfd_size_type amt; + unsigned int module_count; + unsigned int hash_size; - amt = lst.hash_size; - amt *= sizeof (unsigned int); + hash_size = bfd_getb32 (lst.hash_size); + amt = hash_size * 4; hash_table = bfd_zmalloc (amt); - if (hash_table == NULL && lst.hash_size != 0) + if (hash_table == NULL && hash_size != 0) goto error_return; - amt = lst.module_count; - amt *= sizeof (struct som_entry); + module_count = bfd_getb32 (lst.module_count); + amt = module_count * sizeof (struct som_external_som_entry); som_dict = bfd_zmalloc (amt); - if (som_dict == NULL && lst.module_count != 0) + if (som_dict == NULL && module_count != 0) goto error_return; - amt = lst.hash_size; - amt *= sizeof (struct lst_symbol_record *); + amt = hash_size * sizeof (struct som_external_lst_symbol_record *); last_hash_entry = bfd_zmalloc (amt); - if (last_hash_entry == NULL && lst.hash_size != 0) + if (last_hash_entry == NULL && hash_size != 0) goto error_return; - /* Lots of fields are file positions relative to the start - of the lst record. So save its location. */ - lst_filepos = bfd_tell (abfd) - sizeof (struct lst_header); - /* Symbols have som_index fields, so we have to keep track of the index of each SOM in the archive. @@ -5956,7 +6333,7 @@ /* We add in the size of the archive header twice as the location in the SOM dictionary is the actual offset of the SOM, not the archive header before the SOM. */ - curr_som_offset = 8 + 2 * sizeof (struct ar_hdr) + lst.file_end; + curr_som_offset = 8 + 2 * sizeof (struct ar_hdr) + bfd_getb32 (lst.file_end); /* Make room for the archive header and the contents of the extended string table. Note that elength includes the size @@ -5969,7 +6346,7 @@ /* FIXME should be done with buffers just like everything else... */ amt = nsyms; - amt *= sizeof (struct lst_symbol_record); + amt *= sizeof (struct som_external_lst_symbol_record); lst_syms = bfd_malloc (amt); if (lst_syms == NULL && nsyms != 0) goto error_return; @@ -6006,6 +6383,11 @@ for (i = 0; i < curr_count; i++, sym++) { struct som_misc_symbol_info info; + struct som_external_lst_symbol_record *last; + unsigned int symbol_pos; + unsigned int slen; + unsigned int symbol_key; + unsigned int flags; /* Derive SOM information from the BFD symbol. */ som_bfd_derive_misc_symbol_info (curr_bfd, &sym->symbol, &info); @@ -6027,72 +6409,74 @@ /* If this is the first symbol from this SOM, then update the SOM dictionary too. */ - if (som_dict[som_index].location == 0) + if (bfd_getb32 (som_dict[som_index].location) == 0) { - som_dict[som_index].location = curr_som_offset; - som_dict[som_index].length = arelt_size (curr_bfd); + bfd_putb32 (curr_som_offset, som_dict[som_index].location); + bfd_putb32 (arelt_size (curr_bfd), som_dict[som_index].length); } + symbol_key = som_bfd_ar_symbol_hash (&sym->symbol); + /* Fill in the lst symbol record. */ - curr_lst_sym->hidden = 0; - curr_lst_sym->secondary_def = info.secondary_def; - curr_lst_sym->symbol_type = info.symbol_type; - curr_lst_sym->symbol_scope = info.symbol_scope; - curr_lst_sym->check_level = 0; - curr_lst_sym->must_qualify = 0; - curr_lst_sym->initially_frozen = 0; - curr_lst_sym->memory_resident = 0; - curr_lst_sym->is_common = bfd_is_com_section (sym->symbol.section); - curr_lst_sym->dup_common = info.dup_common; - curr_lst_sym->xleast = 3; - curr_lst_sym->arg_reloc = info.arg_reloc; - curr_lst_sym->name.n_strx = p - strings + 4; - curr_lst_sym->qualifier_name.n_strx = 0; - curr_lst_sym->symbol_info = info.symbol_info; - curr_lst_sym->symbol_value = info.symbol_value | info.priv_level; - curr_lst_sym->symbol_descriptor = 0; - curr_lst_sym->reserved = 0; - curr_lst_sym->som_index = som_index; - curr_lst_sym->symbol_key = som_bfd_ar_symbol_hash (&sym->symbol); - curr_lst_sym->next_entry = 0; + flags = 0; + if (info.secondary_def) + flags |= LST_SYMBOL_SECONDARY_DEF; + flags |= info.symbol_type << LST_SYMBOL_SYMBOL_TYPE_SH; + flags |= info.symbol_scope << LST_SYMBOL_SYMBOL_SCOPE_SH; + if (bfd_is_com_section (sym->symbol.section)) + flags |= LST_SYMBOL_IS_COMMON; + if (info.dup_common) + flags |= LST_SYMBOL_DUP_COMMON; + flags |= 3 << LST_SYMBOL_XLEAST_SH; + flags |= info.arg_reloc << LST_SYMBOL_ARG_RELOC_SH; + bfd_putb32 (flags, curr_lst_sym->flags); + bfd_putb32 (p - strings + 4, curr_lst_sym->name); + bfd_putb32 (0, curr_lst_sym->qualifier_name); + bfd_putb32 (info.symbol_info, curr_lst_sym->symbol_info); + bfd_putb32 (info.symbol_value | info.priv_level, + curr_lst_sym->symbol_value); + bfd_putb32 (0, curr_lst_sym->symbol_descriptor); + curr_lst_sym->reserved = 0; + bfd_putb32 (som_index, curr_lst_sym->som_index); + bfd_putb32 (symbol_key, curr_lst_sym->symbol_key); + bfd_putb32 (0, curr_lst_sym->next_entry); /* Insert into the hash table. */ - if (hash_table[curr_lst_sym->symbol_key % lst.hash_size]) + symbol_pos = + (curr_lst_sym - lst_syms) + * sizeof (struct som_external_lst_symbol_record) + + hash_size * 4 + + module_count * sizeof (struct som_external_som_entry) + + sizeof (struct som_external_lst_header); + last = last_hash_entry[symbol_key % hash_size]; + if (last != NULL) { - struct lst_symbol_record *tmp; - /* There is already something at the head of this hash chain, so tack this symbol onto the end of the chain. */ - tmp = last_hash_entry[curr_lst_sym->symbol_key % lst.hash_size]; - tmp->next_entry - = (curr_lst_sym - lst_syms) * sizeof (struct lst_symbol_record) - + lst.hash_size * 4 - + lst.module_count * sizeof (struct som_entry) - + sizeof (struct lst_header); + bfd_putb32 (symbol_pos, last->next_entry); } else /* First entry in this hash chain. */ - hash_table[curr_lst_sym->symbol_key % lst.hash_size] - = (curr_lst_sym - lst_syms) * sizeof (struct lst_symbol_record) - + lst.hash_size * 4 - + lst.module_count * sizeof (struct som_entry) - + sizeof (struct lst_header); + bfd_putb32 (symbol_pos, hash_table + 4 * (symbol_key % hash_size)); /* Keep track of the last symbol we added to this chain so we can easily update its next_entry pointer. */ - last_hash_entry[curr_lst_sym->symbol_key % lst.hash_size] - = curr_lst_sym; + last_hash_entry[symbol_key % hash_size] = curr_lst_sym; /* Update the string table. */ - bfd_put_32 (abfd, strlen (sym->symbol.name), p); + slen = strlen (sym->symbol.name); + bfd_put_32 (abfd, slen, p); p += 4; - strcpy (p, sym->symbol.name); - p += strlen (sym->symbol.name) + 1; - while ((int) p % 4) + slen++; /* Nul terminator. */ + memcpy (p, sym->symbol.name, slen); + p += slen; + while (slen % 4) { bfd_put_8 (abfd, 0, p); p++; + slen++; } + BFD_ASSERT (p <= strings + string_size); /* Head to the next symbol. */ curr_lst_sym++; @@ -6111,17 +6495,17 @@ } /* Now scribble out the hash table. */ - amt = lst.hash_size * 4; + amt = hash_size * 4; if (bfd_bwrite ((void *) hash_table, amt, abfd) != amt) goto error_return; /* Then the SOM dictionary. */ - amt = lst.module_count * sizeof (struct som_entry); + amt = module_count * sizeof (struct som_external_som_entry); if (bfd_bwrite ((void *) som_dict, amt, abfd) != amt) goto error_return; /* The library symbols. */ - amt = nsyms * sizeof (struct lst_symbol_record); + amt = nsyms * sizeof (struct som_external_lst_symbol_record); if (bfd_bwrite ((void *) lst_syms, amt, abfd) != amt) goto error_return; @@ -6172,9 +6556,11 @@ struct stat statbuf; unsigned int i, lst_size, nsyms, stringsize; struct ar_hdr hdr; - struct lst_header lst; - int *p; + struct som_external_lst_header lst; + unsigned char *p; bfd_size_type amt; + unsigned int csum; + unsigned int module_count; /* We'll use this for the archive's date and mode later. */ if (stat (abfd->filename, &statbuf) != 0) @@ -6186,78 +6572,86 @@ bfd_ardata (abfd)->armap_timestamp = statbuf.st_mtime + 60; /* Account for the lst header first. */ - lst_size = sizeof (struct lst_header); + lst_size = sizeof (struct som_external_lst_header); /* Start building the LST header. */ /* FIXME: Do we need to examine each element to determine the largest id number? */ - lst.system_id = CPU_PA_RISC1_0; - lst.a_magic = LIBMAGIC; - lst.version_id = VERSION_ID; - lst.file_time.secs = 0; - lst.file_time.nanosecs = 0; + bfd_putb16 (CPU_PA_RISC1_0, &lst.system_id); + bfd_putb16 (LIBMAGIC, &lst.a_magic); + bfd_putb32 (VERSION_ID, &lst.version_id); + bfd_putb32 (0, &lst.file_time.secs); + bfd_putb32 (0, &lst.file_time.nanosecs); - lst.hash_loc = lst_size; - lst.hash_size = SOM_LST_HASH_SIZE; + bfd_putb32 (lst_size, &lst.hash_loc); + bfd_putb32 (SOM_LST_HASH_SIZE, &lst.hash_size); /* Hash table is a SOM_LST_HASH_SIZE 32bit offsets. */ lst_size += 4 * SOM_LST_HASH_SIZE; /* We need to count the number of SOMs in this archive. */ curr_bfd = abfd->archive_head; - lst.module_count = 0; + module_count = 0; while (curr_bfd != NULL) { /* Only true SOM objects count. */ if (curr_bfd->format == bfd_object && curr_bfd->xvec->flavour == bfd_target_som_flavour) - lst.module_count++; + module_count++; curr_bfd = curr_bfd->archive_next; } - lst.module_limit = lst.module_count; - lst.dir_loc = lst_size; - lst_size += sizeof (struct som_entry) * lst.module_count; + bfd_putb32 (module_count, &lst.module_count); + bfd_putb32 (module_count, &lst.module_limit); + bfd_putb32 (lst_size, &lst.dir_loc); + lst_size += sizeof (struct som_external_som_entry) * module_count; /* We don't support import/export tables, auxiliary headers, or free lists yet. Make the linker work a little harder to make our life easier. */ - lst.export_loc = 0; - lst.export_count = 0; - lst.import_loc = 0; - lst.aux_loc = 0; - lst.aux_size = 0; + bfd_putb32 (0, &lst.export_loc); + bfd_putb32 (0, &lst.export_count); + bfd_putb32 (0, &lst.import_loc); + bfd_putb32 (0, &lst.aux_loc); + bfd_putb32 (0, &lst.aux_size); /* Count how many symbols we will have on the hash chains and the size of the associated string table. */ if (! som_bfd_prep_for_ar_write (abfd, &nsyms, &stringsize)) return FALSE; - lst_size += sizeof (struct lst_symbol_record) * nsyms; + lst_size += sizeof (struct som_external_lst_symbol_record) * nsyms; /* For the string table. One day we might actually use this info to avoid small seeks/reads when reading archives. */ - lst.string_loc = lst_size; - lst.string_size = stringsize; + bfd_putb32 (lst_size, &lst.string_loc); + bfd_putb32 (stringsize, &lst.string_size); lst_size += stringsize; /* SOM ABI says this must be zero. */ - lst.free_list = 0; - lst.file_end = lst_size; + bfd_putb32 (0, &lst.free_list); + bfd_putb32 (lst_size, &lst.file_end); /* Compute the checksum. Must happen after the entire lst header has filled in. */ - p = (int *) &lst; - lst.checksum = 0; - for (i = 0; i < sizeof (struct lst_header) / sizeof (int) - 1; i++) - lst.checksum ^= *p++; - - sprintf (hdr.ar_name, "/ "); - sprintf (hdr.ar_date, "%ld", bfd_ardata (abfd)->armap_timestamp); - sprintf (hdr.ar_uid, "%ld", (long) getuid ()); - sprintf (hdr.ar_gid, "%ld", (long) getgid ()); - sprintf (hdr.ar_mode, "%-8o", (unsigned int) statbuf.st_mode); - sprintf (hdr.ar_size, "%-10d", (int) lst_size); + p = (unsigned char *) &lst; + csum = 0; + for (i = 0; i < sizeof (struct som_external_lst_header) - sizeof (int); + i += 4) + csum ^= bfd_getb32 (&p[i]); + bfd_putb32 (csum, &lst.checksum); + + sprintf (hdr.ar_name, "/ "); + _bfd_ar_spacepad (hdr.ar_date, sizeof (hdr.ar_date), "%-12ld", + bfd_ardata (abfd)->armap_timestamp); + _bfd_ar_spacepad (hdr.ar_uid, sizeof (hdr.ar_uid), "%ld", + statbuf.st_uid); + _bfd_ar_spacepad (hdr.ar_gid, sizeof (hdr.ar_gid), "%ld", + statbuf.st_gid); + _bfd_ar_spacepad (hdr.ar_mode, sizeof (hdr.ar_mode), "%-8o", + (unsigned int)statbuf.st_mode); + _bfd_ar_spacepad (hdr.ar_size, sizeof (hdr.ar_size), "%-10d", + (int) lst_size); hdr.ar_fmag[0] = '`'; hdr.ar_fmag[1] = '\012'; @@ -6272,7 +6666,7 @@ return FALSE; /* Now scribble out the lst header. */ - amt = sizeof (struct lst_header); + amt = sizeof (struct som_external_lst_header); if (bfd_bwrite ((void *) &lst, amt, abfd) != amt) return FALSE; @@ -6304,8 +6698,7 @@ /* Free the native relocations. */ o->reloc_count = (unsigned) -1; FREE (som_section_data (o)->reloc_stream); - /* Free the generic relocations. */ - FREE (o->relocation); + /* Do not free the generic relocations as they are objalloc'ed. */ } #undef FREE @@ -6324,6 +6717,7 @@ #define som_close_and_cleanup som_bfd_free_cached_info #define som_read_ar_hdr _bfd_generic_read_ar_hdr +#define som_write_ar_hdr _bfd_generic_write_ar_hdr #define som_openr_next_archived_file bfd_generic_openr_next_archived_file #define som_get_elt_at_index _bfd_generic_get_elt_at_index #define som_generic_stat_arch_elt bfd_generic_stat_arch_elt @@ -6343,6 +6737,8 @@ #define som_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define som_bfd_link_add_symbols _bfd_generic_link_add_symbols #define som_bfd_link_just_syms _bfd_generic_link_just_syms +#define som_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define som_bfd_final_link _bfd_generic_final_link #define som_bfd_gc_sections bfd_generic_gc_sections #define som_bfd_merge_sections bfd_generic_merge_sections @@ -6412,4 +6808,3 @@ NULL }; -#endif /* HOST_HPPAHPUX || HOST_HPPABSD || HOST_HPPAOSF */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/som.h crash-6.1.6/=unpacked-tar1=/bfd/som.h --- crash-5.1.6/=unpacked-tar1=/bfd/som.h 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/som.h 2010-06-10 08:51:44.000000000 +0000 @@ -30,9 +30,9 @@ /* We want reloc.h to provide PA 2.0 defines. */ #define PA_2_0 -#include -#include -#include +#include "som/aout.h" +#include "som/lst.h" +#include "som/internal.h" /* The SOM BFD backend doesn't currently use anything from these two include files, but it's likely to need them in the future. */ @@ -41,7 +41,7 @@ #include #endif -#if defined(HOST_HPPABSD) || defined (HOST_HPPAOSF) +#if defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) /* BSD uses a completely different scheme for object file identification. so for now, define _PA_RISC_ID to accept any random value for a model number. */ @@ -49,9 +49,6 @@ #define _PA_RISC_ID(__m_num) 1 #endif /* HOST_HPPABSD */ -#define FILE_HDR_SIZE sizeof (struct header) -#define AUX_HDR_SIZE sizeof (struct som_exec_auxhdr) - typedef struct som_symbol { asymbol symbol; @@ -116,11 +113,11 @@ /* These three fields are only used when writing files and are generated from scratch. They need not be copied for objcopy or strip to work. */ - struct header *file_hdr; - struct copyright_aux_hdr *copyright_aux_hdr; - struct user_string_aux_hdr *version_aux_hdr; + struct som_header *file_hdr; + struct som_string_auxhdr *copyright_aux_hdr; + struct som_string_auxhdr *version_aux_hdr; struct som_exec_auxhdr *exec_hdr; - COMPUNIT *comp_unit; + struct som_compilation_unit *comp_unit; /* Pointers to a saved copy of the symbol and string tables. These need not be copied for objcopy or strip to work. */ @@ -144,35 +141,6 @@ struct somdata a; }; -struct som_subspace_dictionary_record -{ - int space_index; - unsigned int access_control_bits : 7; - unsigned int memory_resident : 1; - unsigned int dup_common : 1; - unsigned int is_common : 1; - unsigned int is_loadable : 1; - unsigned int quadrant : 2; - unsigned int initially_frozen : 1; - unsigned int is_first : 1; - unsigned int code_only : 1; - unsigned int sort_key : 8; - unsigned int replicate_init : 1; - unsigned int continuation : 1; - unsigned int is_tspecific : 1; - unsigned int is_comdat : 1; - unsigned int reserved : 4; - int file_loc_init_value; - unsigned int initialization_length; - unsigned int subspace_start; - unsigned int subspace_length; - unsigned int reserved2 : 5; - unsigned int alignment :27; - union name_pt name; - int fixup_request_index; - unsigned int fixup_request_quantity; -}; - /* Substructure of som_section_data_struct used to hold information which can't be represented by the generic BFD section structure, but which must be copied during objcopy or strip. */ @@ -216,7 +184,7 @@ struct som_copyable_section_data_struct *copy_data; unsigned int reloc_size; unsigned char *reloc_stream; - struct space_dictionary_record *space_dict; + struct som_space_dictionary_record *space_dict; struct som_subspace_dictionary_record *subspace_dict; }; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/sparclinux.c crash-6.1.6/=unpacked-tar1=/bfd/sparclinux.c --- crash-5.1.6/=unpacked-tar1=/bfd/sparclinux.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/sparclinux.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for linux flavored sparc a.out binaries. Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -23,7 +23,6 @@ #define ZMAGIC_DISK_BLOCK_SIZE 1024 #define SEGMENT_SIZE TARGET_PAGE_SIZE #define TEXT_START_ADDR 0x0 -#define N_SHARED_LIB(x) 0 #define MACHTYPE_OK(mtype) ((mtype) == M_SPARC || (mtype) == M_UNKNOWN) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/srec.c crash-6.1.6/=unpacked-tar1=/bfd/srec.c --- crash-5.1.6/=unpacked-tar1=/bfd/srec.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/srec.c 2009-11-23 14:41:30.000000000 +0000 @@ -1261,6 +1261,8 @@ #define srec_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define srec_bfd_link_add_symbols _bfd_generic_link_add_symbols #define srec_bfd_link_just_syms _bfd_generic_link_just_syms +#define srec_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define srec_bfd_final_link _bfd_generic_final_link #define srec_bfd_link_split_section _bfd_generic_link_split_section diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/syms.c crash-6.1.6/=unpacked-tar1=/bfd/syms.c --- crash-5.1.6/=unpacked-tar1=/bfd/syms.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/syms.c 2011-02-28 18:30:16.000000000 +0000 @@ -1386,8 +1386,8 @@ dirlen = strlen (directory_name); if (info->filename == NULL - || strncmp (info->filename, directory_name, dirlen) != 0 - || strcmp (info->filename + dirlen, file_name) != 0) + || filename_ncmp (info->filename, directory_name, dirlen) != 0 + || filename_cmp (info->filename + dirlen, file_name) != 0) { size_t len; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/targets.c crash-6.1.6/=unpacked-tar1=/bfd/targets.c --- crash-5.1.6/=unpacked-tar1=/bfd/targets.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/targets.c 2010-12-31 11:00:53.000000000 +0000 @@ -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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Cygnus Support. @@ -314,11 +314,13 @@ .#define BFD_JUMP_TABLE_CORE(NAME) \ . NAME##_core_file_failing_command, \ . NAME##_core_file_failing_signal, \ -. NAME##_core_file_matches_executable_p +. NAME##_core_file_matches_executable_p, \ +. NAME##_core_file_pid . . char * (*_core_file_failing_command) (bfd *); . int (*_core_file_failing_signal) (bfd *); . bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *); +. int (*_core_file_pid) (bfd *); . . {* Archive entry points. *} .#define BFD_JUMP_TABLE_ARCHIVE(NAME) \ @@ -328,6 +330,7 @@ . NAME##_truncate_arname, \ . NAME##_write_armap, \ . NAME##_read_ar_hdr, \ +. NAME##_write_ar_hdr, \ . NAME##_openr_next_archived_file, \ . NAME##_get_elt_at_index, \ . NAME##_generic_stat_arch_elt, \ @@ -341,6 +344,7 @@ . bfd_boolean (*write_armap) . (bfd *, unsigned int, struct orl *, unsigned int, int); . void * (*_bfd_read_ar_hdr_fn) (bfd *); +. bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *); . bfd * (*openr_next_archived_file) (bfd *, bfd *); .#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i)) . bfd * (*_bfd_get_elt_at_index) (bfd *, symindex); @@ -436,6 +440,7 @@ . NAME##_bfd_link_hash_table_free, \ . NAME##_bfd_link_add_symbols, \ . NAME##_bfd_link_just_syms, \ +. NAME##_bfd_copy_link_hash_symbol_type, \ . NAME##_bfd_final_link, \ . NAME##_bfd_link_split_section, \ . NAME##_bfd_gc_sections, \ @@ -467,6 +472,12 @@ . {* Indicate that we are only retrieving symbol values from this section. *} . void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *); . +. {* Copy the symbol type of a linker hash table entry. *} +.#define bfd_copy_link_hash_symbol_type(b, t, f) \ +. BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f)) +. void (*_bfd_copy_link_hash_symbol_type) +. (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *); +. . {* Do a link based on the link_order structures attached to each . section of the BFD. *} . bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *); @@ -594,6 +605,7 @@ extern const bfd_target bfd_elf32_hppa_vec; extern const bfd_target bfd_elf32_i370_vec; extern const bfd_target bfd_elf32_i386_freebsd_vec; +extern const bfd_target bfd_elf32_i386_sol2_vec; extern const bfd_target bfd_elf32_i386_vxworks_vec; extern const bfd_target bfd_elf32_i386_vec; extern const bfd_target bfd_elf32_i860_little_vec; @@ -634,6 +646,8 @@ extern const bfd_target bfd_elf32_nlittlemips_vec; extern const bfd_target bfd_elf32_ntradbigmips_vec; extern const bfd_target bfd_elf32_ntradlittlemips_vec; +extern const bfd_target bfd_elf32_ntradbigmips_freebsd_vec; +extern const bfd_target bfd_elf32_ntradlittlemips_freebsd_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; @@ -641,6 +655,8 @@ extern const bfd_target bfd_elf32_powerpc_vec; extern const bfd_target bfd_elf32_powerpcle_vec; extern const bfd_target bfd_elf32_powerpc_vxworks_vec; +extern const bfd_target bfd_elf32_rx_le_vec; +extern const bfd_target bfd_elf32_rx_be_vec; extern const bfd_target bfd_elf32_s390_vec; extern const bfd_target bfd_elf32_bigscore_vec; extern const bfd_target bfd_elf32_littlescore_vec; @@ -651,7 +667,9 @@ extern const bfd_target bfd_elf32_sh64lnbsd_vec; extern const bfd_target bfd_elf32_sh64nbsd_vec; extern const bfd_target bfd_elf32_sh_vec; +extern const bfd_target bfd_elf32_shbfd_vec; extern const bfd_target bfd_elf32_shblin_vec; +extern const bfd_target bfd_elf32_shfd_vec; extern const bfd_target bfd_elf32_shl_vec; extern const bfd_target bfd_elf32_shl_symbian_vec; extern const bfd_target bfd_elf32_shlin_vec; @@ -660,10 +678,15 @@ extern const bfd_target bfd_elf32_shnbsd_vec; extern const bfd_target bfd_elf32_shvxworks_vec; extern const bfd_target bfd_elf32_sparc_vec; +extern const bfd_target bfd_elf32_sparc_sol2_vec; extern const bfd_target bfd_elf32_sparc_vxworks_vec; extern const bfd_target bfd_elf32_spu_vec; +extern const bfd_target bfd_elf32_tic6x_be_vec; +extern const bfd_target bfd_elf32_tic6x_le_vec; extern const bfd_target bfd_elf32_tradbigmips_vec; extern const bfd_target bfd_elf32_tradlittlemips_vec; +extern const bfd_target bfd_elf32_tradbigmips_freebsd_vec; +extern const bfd_target bfd_elf32_tradlittlemips_freebsd_vec; extern const bfd_target bfd_elf32_us_cris_vec; extern const bfd_target bfd_elf32_v850_vec; extern const bfd_target bfd_elf32_vax_vec; @@ -695,10 +718,15 @@ extern const bfd_target bfd_elf64_sh64nbsd_vec; extern const bfd_target bfd_elf64_sparc_vec; extern const bfd_target bfd_elf64_sparc_freebsd_vec; +extern const bfd_target bfd_elf64_sparc_sol2_vec; extern const bfd_target bfd_elf64_tradbigmips_vec; extern const bfd_target bfd_elf64_tradlittlemips_vec; +extern const bfd_target bfd_elf64_tradbigmips_freebsd_vec; +extern const bfd_target bfd_elf64_tradlittlemips_freebsd_vec; extern const bfd_target bfd_elf64_x86_64_freebsd_vec; +extern const bfd_target bfd_elf64_x86_64_sol2_vec; extern const bfd_target bfd_elf64_x86_64_vec; +extern const bfd_target bfd_elf32_x86_64_vec; extern const bfd_target bfd_elf64_l1om_freebsd_vec; extern const bfd_target bfd_elf64_l1om_vec; extern const bfd_target bfd_mmo_vec; @@ -751,7 +779,7 @@ extern const bfd_target mach_o_le_vec; extern const bfd_target mach_o_fat_vec; extern const bfd_target mach_o_i386_vec; -extern const bfd_target maxqcoff_vec; +extern const bfd_target mach_o_x86_64_vec; extern const bfd_target mcore_pe_big_vec; extern const bfd_target mcore_pe_little_vec; extern const bfd_target mcore_pei_big_vec; @@ -811,7 +839,7 @@ extern const bfd_target vax1knetbsd_vec; extern const bfd_target versados_vec; extern const bfd_target vms_alpha_vec; -extern const bfd_target vms_vax_vec; +extern const bfd_target vms_lib_txt_vec; extern const bfd_target w65_vec; extern const bfd_target we32kcoff_vec; extern const bfd_target x86_64pe_vec; @@ -927,6 +955,7 @@ &bfd_elf32_hppa_vec, &bfd_elf32_i370_vec, &bfd_elf32_i386_freebsd_vec, + &bfd_elf32_i386_sol2_vec, &bfd_elf32_i386_vxworks_vec, &bfd_elf32_i386_vec, &bfd_elf32_i860_little_vec, @@ -970,6 +999,8 @@ &bfd_elf32_nlittlemips_vec, &bfd_elf32_ntradbigmips_vec, &bfd_elf32_ntradlittlemips_vec, + &bfd_elf32_ntradbigmips_freebsd_vec, + &bfd_elf32_ntradlittlemips_freebsd_vec, #endif &bfd_elf32_openrisc_vec, &bfd_elf32_or32_big_vec, @@ -978,13 +1009,17 @@ &bfd_elf32_powerpc_vec, &bfd_elf32_powerpc_vxworks_vec, &bfd_elf32_powerpcle_vec, + &bfd_elf32_rx_be_vec, + &bfd_elf32_rx_le_vec, &bfd_elf32_s390_vec, #ifdef BFD64 &bfd_elf32_bigscore_vec, &bfd_elf32_littlescore_vec, #endif &bfd_elf32_sh_vec, + &bfd_elf32_shbfd_vec, &bfd_elf32_shblin_vec, + &bfd_elf32_shfd_vec, &bfd_elf32_shl_vec, &bfd_elf32_shl_symbian_vec, &bfd_elf32_shlin_vec, @@ -1001,10 +1036,15 @@ &bfd_elf32_sh64blin_vec, #endif &bfd_elf32_sparc_vec, + &bfd_elf32_sparc_sol2_vec, &bfd_elf32_sparc_vxworks_vec, &bfd_elf32_spu_vec, + &bfd_elf32_tic6x_be_vec, + &bfd_elf32_tic6x_le_vec, &bfd_elf32_tradbigmips_vec, &bfd_elf32_tradlittlemips_vec, + &bfd_elf32_tradbigmips_freebsd_vec, + &bfd_elf32_tradlittlemips_freebsd_vec, &bfd_elf32_us_cris_vec, &bfd_elf32_v850_vec, &bfd_elf32_vax_vec, @@ -1037,10 +1077,15 @@ &bfd_elf64_sh64blin_vec, &bfd_elf64_sparc_vec, &bfd_elf64_sparc_freebsd_vec, + &bfd_elf64_sparc_sol2_vec, &bfd_elf64_tradbigmips_vec, &bfd_elf64_tradlittlemips_vec, + &bfd_elf64_tradbigmips_freebsd_vec, + &bfd_elf64_tradlittlemips_freebsd_vec, &bfd_elf64_x86_64_freebsd_vec, + &bfd_elf64_x86_64_sol2_vec, &bfd_elf64_x86_64_vec, + &bfd_elf32_x86_64_vec, &bfd_elf64_l1om_freebsd_vec, &bfd_elf64_l1om_vec, &bfd_mmo_vec, @@ -1123,7 +1168,9 @@ &mach_o_le_vec, &mach_o_fat_vec, &mach_o_i386_vec, - &maxqcoff_vec, +#ifdef BFD64 + &mach_o_x86_64_vec, +#endif &mcore_pe_big_vec, &mcore_pe_little_vec, &mcore_pei_big_vec, @@ -1175,9 +1222,7 @@ &shlcoff_vec, &shlpe_vec, &shlpei_vec, -#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) &som_vec, -#endif &sparccoff_vec, &sparcle_aout_vec, &sparclinux_vec, @@ -1202,7 +1247,7 @@ #ifdef BFD64 &vms_alpha_vec, #endif - &vms_vax_vec, + &vms_lib_txt_vec, &w65_vec, &we32kcoff_vec, &z80coff_vec, @@ -1424,6 +1469,122 @@ return target; } +/* Helper function for bfd_get_target_info to determine the target's + architecture. This method handles bfd internal target names as + tuples and triplets. */ +static bfd_boolean +_bfd_find_arch_match (const char *tname, const char **arch, + const char **def_target_arch) +{ + if (!arch) + return FALSE; + + while (*arch != NULL) + { + const char *in_a = strstr (*arch, tname); + char end_ch = (in_a ? in_a[strlen (tname)] : 0); + + if (in_a && (in_a == *arch || in_a[-1] == ':') + && end_ch == 0) + { + *def_target_arch = *arch; + return TRUE; + } + arch++; + } + return FALSE; +} + +/* +FUNCTION + bfd_get_target_info +SYNOPSIS + const bfd_target *bfd_get_target_info (const char *target_name, + bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, + const char **def_target_arch); +DESCRIPTION + Return a pointer to the transfer vector for the object target + named @var{target_name}. If @var{target_name} is <>, + choose the one in the environment variable <>; if + that is null or not defined, then choose the first entry in the + target list. Passing in the string "default" or setting the + environment variable to "default" will cause the first entry in + the target list to be returned, and "target_defaulted" will be + set in the BFD if @var{abfd} isn't <>. This causes + <> to loop over all the targets to find the + one that matches the file being read. + If @var{is_bigendian} is not <>, then set this value to target's + endian mode. True for big-endian, FALSE for little-endian or for + invalid target. + If @var{underscoring} is not <>, then set this value to target's + underscoring mode. Zero for none-underscoring, -1 for invalid target, + else the value of target vector's symbol underscoring. + If @var{def_target_arch} is not <>, then set it to the architecture + string specified by the target_name. +*/ +const bfd_target * +bfd_get_target_info (const char *target_name, bfd *abfd, + bfd_boolean *is_bigendian, + int *underscoring, const char **def_target_arch) +{ + const bfd_target *target_vec; + + if (is_bigendian) + *is_bigendian = FALSE; + if (underscoring) + *underscoring = -1; + if (def_target_arch) + *def_target_arch = NULL; + target_vec = bfd_find_target (target_name, abfd); + if (! target_vec) + return NULL; + if (is_bigendian) + *is_bigendian = ((target_vec->byteorder == BFD_ENDIAN_BIG) ? TRUE + : FALSE); + if (underscoring) + *underscoring = ((int) target_vec->symbol_leading_char) & 0xff; + + if (def_target_arch) + { + const char *tname = target_vec->name; + const char **arches = bfd_arch_list (); + + if (arches && tname) + { + char *hyp = strchr (tname, '-'); + + if (hyp != NULL) + { + tname = ++hyp; + + /* Make sure we detect architecture names + for triplets like "pe-arm-wince-little". */ + if (!_bfd_find_arch_match (tname, arches, def_target_arch)) + { + char new_tname[50]; + + strcpy (new_tname, hyp); + while ((hyp = strrchr (new_tname, '-')) != NULL) + { + *hyp = 0; + if (_bfd_find_arch_match (new_tname, arches, + def_target_arch)) + break; + } + } + } + else + _bfd_find_arch_match (tname, arches, def_target_arch); + } + + if (arches) + free (arches); + } + return target_vec; +} + /* FUNCTION bfd_target_list @@ -1443,11 +1604,6 @@ { int vec_length = 0; bfd_size_type amt; -#if defined (HOST_HPPAHPUX) && ! defined (__STDC__) - /* The native compiler on the HP9000/700 has a bug which causes it - to loop endlessly when compiling this file. This avoids it. */ - volatile -#endif const bfd_target * const *target; const char **name_list, **name_ptr; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/tekhex.c crash-6.1.6/=unpacked-tar1=/bfd/tekhex.c --- crash-5.1.6/=unpacked-tar1=/bfd/tekhex.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/tekhex.c 2009-12-15 16:59:20.000000000 +0000 @@ -461,22 +461,22 @@ pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *)) { unsigned int chars_on_line; - bfd_boolean eof = FALSE; + bfd_boolean is_eof = FALSE; /* To the front of the file. */ if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0) return FALSE; - while (! eof) + while (! is_eof) { char src[MAXCHUNK]; char type; /* Find first '%'. */ - eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1); - while (*src != '%' && !eof) - eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1); + is_eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1); + while (*src != '%' && !is_eof) + is_eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1); - if (eof) + if (is_eof) break; /* Fetch the type and the length and the checksum. */ @@ -952,6 +952,8 @@ #define tekhex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define tekhex_bfd_link_add_symbols _bfd_generic_link_add_symbols #define tekhex_bfd_link_just_syms _bfd_generic_link_just_syms +#define tekhex_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define tekhex_bfd_final_link _bfd_generic_final_link #define tekhex_bfd_link_split_section _bfd_generic_link_split_section #define tekhex_get_section_contents_in_window _bfd_generic_get_section_contents_in_window diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/trad-core.c crash-6.1.6/=unpacked-tar1=/bfd/trad-core.c --- crash-5.1.6/=unpacked-tar1=/bfd/trad-core.c 2007-07-15 06:33:34.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/trad-core.c 2010-08-18 12:24:07.000000000 +0000 @@ -71,6 +71,7 @@ char * trad_unix_core_file_failing_command PARAMS ((bfd *abfd)); int trad_unix_core_file_failing_signal PARAMS ((bfd *abfd)); #define trad_unix_core_file_matches_executable_p generic_core_file_matches_executable_p +#define trad_unix_core_file_pid _bfd_nocore_core_file_pid static void swap_abort PARAMS ((void)); /* Handle 4.2-style (and perhaps also sysV-style) core dump file. */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/vaxbsd.c crash-6.1.6/=unpacked-tar1=/bfd/vaxbsd.c --- crash-5.1.6/=unpacked-tar1=/bfd/vaxbsd.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/vaxbsd.c 2009-10-02 14:40:41.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for BSD and Ultrix/VAX (1K page size) a.out-ish binaries. - Copyright 2002, 2003, 2005, 2007 Free Software Foundation, Inc. + Copyright 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -20,7 +20,6 @@ #define N_HEADER_IN_TEXT(x) 0 #define ENTRY_CAN_BE_ZERO -#define N_SHARED_LIB(x) 0 /* Avoids warning */ #define TEXT_START_ADDR 0 #define TARGET_PAGE_SIZE 1024 #define SEGMENT_SIZE TARGET_PAGE_SIZE diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/verilog.c crash-6.1.6/=unpacked-tar1=/bfd/verilog.c --- crash-5.1.6/=unpacked-tar1=/bfd/verilog.c 2009-09-09 21:38:58.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/verilog.c 2010-04-09 14:40:16.000000000 +0000 @@ -1,5 +1,5 @@ /* BFD back-end for verilog hex memory dump files. - Copyright 2009 + Copyright 2009, 2010 Free Software Foundation, Inc. Written by Anthony Green @@ -222,14 +222,11 @@ verilog_write_address (abfd, list->where); while (octets_written < list->size) { - bfd_vma address; unsigned int octets_this_chunk = list->size - octets_written; if (octets_this_chunk > 16) octets_this_chunk = 16; - address = list->where + octets_written / bfd_octets_per_byte (abfd); - if (! verilog_write_record (abfd, location, location + octets_this_chunk)) diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/versados.c crash-6.1.6/=unpacked-tar1=/bfd/versados.c --- crash-5.1.6/=unpacked-tar1=/bfd/versados.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/versados.c 2010-06-27 04:07:53.000000000 +0000 @@ -1,6 +1,6 @@ /* BFD back-end for VERSAdos-E objects. Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2009 Free Software Foundation, Inc. + 2006, 2007, 2009, 2010 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support . Versados is a Motorola trademark. @@ -277,7 +277,9 @@ case ESD_ABS: size = get_4 (&ptr); + (void) size; start = get_4 (&ptr); + (void) start; break; case ESD_STD_REL_SEC: case ESD_SHRT_REL_SEC: @@ -399,9 +401,9 @@ for (j = 0; j < esdids; j++) { - int esdid = *srcp++; + int id = *srcp++; - if (esdid) + if (id) { int rn = EDATA (abfd, otr->esdid - 1).relocs++; @@ -416,7 +418,7 @@ EDATA (abfd, otr->esdid - 1).section->relocation + rn; n->address = dst_idx; - n->sym_ptr_ptr = (asymbol **) (size_t) esdid; + n->sym_ptr_ptr = (asymbol **) (size_t) id; n->addend = 0; n->howto = versados_howto_table + ((j & 1) * 2) + (sizeinwords - 1); } @@ -813,6 +815,8 @@ #define versados_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define versados_bfd_link_add_symbols _bfd_generic_link_add_symbols #define versados_bfd_link_just_syms _bfd_generic_link_just_syms +#define versados_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define versados_bfd_final_link _bfd_generic_final_link #define versados_bfd_link_split_section _bfd_generic_link_split_section diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/version.h crash-6.1.6/=unpacked-tar1=/bfd/version.h --- crash-5.1.6/=unpacked-tar1=/bfd/version.h 2009-09-16 00:00:05.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/version.h 2011-05-17 21:28:06.000000000 +0000 @@ -1,4 +1,4 @@ -#define BFD_VERSION_DATE 20090916 +#define BFD_VERSION_DATE 20110403 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ #define REPORT_BUGS_TO @report_bugs_to@ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/vms-alpha.c crash-6.1.6/=unpacked-tar1=/bfd/vms-alpha.c --- crash-5.1.6/=unpacked-tar1=/bfd/vms-alpha.c 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/vms-alpha.c 2011-03-31 11:08:40.000000000 +0000 @@ -0,0 +1,9364 @@ +/* vms.c -- BFD back-end for EVAX (openVMS/Alpha) files. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + + Initial version written by Klaus Kaempf (kkaempf@rmi.de) + Major rewrite by Adacore. + + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* TODO: + o overlayed sections + o PIC + o Generation of shared image + o Relocation optimizations + o EISD for the stack + o Vectors isect + o 64 bits sections + o Entry point + o LIB$INITIALIZE + o protected sections (for messages) + ... +*/ + +#include "sysdep.h" +#include "bfd.h" +#include "bfdlink.h" +#include "libbfd.h" +#include "bfdver.h" + +#include "vms.h" +#include "vms/eihd.h" +#include "vms/eiha.h" +#include "vms/eihi.h" +#include "vms/eihs.h" +#include "vms/eisd.h" +#include "vms/dmt.h" +#include "vms/dst.h" +#include "vms/eihvn.h" +#include "vms/eobjrec.h" +#include "vms/egsd.h" +#include "vms/egps.h" +#include "vms/esgps.h" +#include "vms/eeom.h" +#include "vms/emh.h" +#include "vms/eiaf.h" +#include "vms/shl.h" +#include "vms/eicp.h" +#include "vms/etir.h" +#include "vms/egsy.h" +#include "vms/esdf.h" +#include "vms/esdfm.h" +#include "vms/esdfv.h" +#include "vms/esrf.h" +#include "vms/egst.h" +#include "vms/eidc.h" +#include "vms/dsc.h" +#include "vms/prt.h" +#include "vms/internal.h" + + +#define MIN(a,b) ((a) < (b) ? (a) : (b)) + +/* The r_type field in a reloc is one of the following values. */ +#define ALPHA_R_IGNORE 0 +#define ALPHA_R_REFQUAD 1 +#define ALPHA_R_BRADDR 2 +#define ALPHA_R_HINT 3 +#define ALPHA_R_SREL16 4 +#define ALPHA_R_SREL32 5 +#define ALPHA_R_SREL64 6 +#define ALPHA_R_OP_PUSH 7 +#define ALPHA_R_OP_STORE 8 +#define ALPHA_R_OP_PSUB 9 +#define ALPHA_R_OP_PRSHIFT 10 +#define ALPHA_R_LINKAGE 11 +#define ALPHA_R_REFLONG 12 +#define ALPHA_R_CODEADDR 13 +#define ALPHA_R_NOP 14 +#define ALPHA_R_BSR 15 +#define ALPHA_R_LDA 16 +#define ALPHA_R_BOH 17 + +/* These are used with DST_S_C_LINE_NUM. */ +#define DST_S_C_LINE_NUM_HEADER_SIZE 4 + +/* These are used with DST_S_C_SOURCE */ + +#define DST_S_B_PCLINE_UNSBYTE 1 +#define DST_S_W_PCLINE_UNSWORD 1 +#define DST_S_L_PCLINE_UNSLONG 1 + +#define DST_S_B_MODBEG_NAME 14 +#define DST_S_L_RTNBEG_ADDRESS 5 +#define DST_S_B_RTNBEG_NAME 13 +#define DST_S_L_RTNEND_SIZE 5 + +/* These are used with DST_S_C_SOURCE. */ +#define DST_S_C_SOURCE_HEADER_SIZE 4 + +#define DST_S_B_SRC_DF_LENGTH 1 +#define DST_S_W_SRC_DF_FILEID 3 +#define DST_S_B_SRC_DF_FILENAME 20 +#define DST_S_B_SRC_UNSBYTE 1 +#define DST_S_W_SRC_UNSWORD 1 +#define DST_S_L_SRC_UNSLONG 1 + +/* Debugger symbol definitions. */ + +#define DBG_S_L_DMT_MODBEG 0 +#define DBG_S_L_DST_SIZE 4 +#define DBG_S_W_DMT_PSECT_COUNT 8 +#define DBG_S_C_DMT_HEADER_SIZE 12 + +#define DBG_S_L_DMT_PSECT_START 0 +#define DBG_S_L_DMT_PSECT_LENGTH 4 +#define DBG_S_C_DMT_PSECT_SIZE 8 + +/* VMS module header. */ + +struct hdr_struct +{ + char hdr_b_strlvl; + int hdr_l_arch1; + int hdr_l_arch2; + int hdr_l_recsiz; + char *hdr_t_name; + char *hdr_t_version; + char *hdr_t_date; + char *hdr_c_lnm; + char *hdr_c_src; + char *hdr_c_ttl; +}; + +#define EMH_DATE_LENGTH 17 + +/* VMS End-Of-Module records (EOM/EEOM). */ + +struct eom_struct +{ + unsigned int eom_l_total_lps; + unsigned short eom_w_comcod; + bfd_boolean eom_has_transfer; + unsigned char eom_b_tfrflg; + unsigned int eom_l_psindx; + unsigned int eom_l_tfradr; +}; + +struct vms_symbol_entry +{ + bfd *owner; + + /* Common fields. */ + unsigned char typ; + unsigned char data_type; + unsigned short flags; + + /* Section and offset/value of the symbol. */ + unsigned int value; + asection *section; + + /* Section and offset/value for the entry point (only for subprg). */ + asection *code_section; + unsigned int code_value; + + /* Symbol vector offset. */ + unsigned int symbol_vector; + + /* Length of the name. */ + unsigned char namelen; + + char name[1]; +}; + +/* Stack value for push/pop commands. */ + +struct stack_struct +{ + bfd_vma value; + unsigned int reloc; +}; + +#define STACKSIZE 128 + +/* A minimal decoding of DST compilation units. We only decode + what's needed to get to the line number information. */ + +struct fileinfo +{ + char *name; + unsigned int srec; +}; + +struct srecinfo +{ + struct srecinfo *next; + unsigned int line; + unsigned int sfile; + unsigned int srec; +}; + +struct lineinfo +{ + struct lineinfo *next; + bfd_vma address; + unsigned int line; +}; + +struct funcinfo +{ + struct funcinfo *next; + char *name; + bfd_vma low; + bfd_vma high; +}; + +struct module +{ + /* Chain the previously read compilation unit. */ + struct module *next; + + /* The module name. */ + char *name; + + /* The start offset and size of debug info in the DST section. */ + unsigned int modbeg; + unsigned int size; + + /* The lowest and highest addresses contained in this compilation + unit as specified in the compilation unit header. */ + bfd_vma low; + bfd_vma high; + + /* The listing line table. */ + struct lineinfo *line_table; + + /* The source record table. */ + struct srecinfo *srec_table; + + /* A list of the functions found in this module. */ + struct funcinfo *func_table; + + /* Current allocation of file_table. */ + unsigned int file_table_count; + + /* An array of the files making up this module. */ + struct fileinfo *file_table; +}; + +/* BFD private data for alpha-vms. */ + +struct vms_private_data_struct +{ + /* If true, relocs have been read. */ + bfd_boolean reloc_done; + + /* Record input buffer. */ + struct vms_rec_rd recrd; + struct vms_rec_wr recwr; + + struct hdr_struct hdr_data; /* data from HDR/EMH record */ + struct eom_struct eom_data; /* data from EOM/EEOM record */ + + /* Transfer addresses (entry points). */ + bfd_vma transfer_address[4]; + + /* Array of GSD sections to get the correspond BFD one. */ + unsigned int section_max; /* Size of the sections array. */ + unsigned int section_count; /* Number of GSD sections. */ + asection **sections; + + /* Array of raw symbols. */ + struct vms_symbol_entry **syms; + + /* Canonicalized symbols. */ + asymbol **csymbols; + + /* Number of symbols. */ + unsigned int gsd_sym_count; + /* Size of the syms array. */ + unsigned int max_sym_count; + /* Number of procedure symbols. */ + unsigned int norm_sym_count; + + /* Stack used to evaluate TIR/ETIR commands. */ + struct stack_struct *stack; + int stackptr; + + /* Content reading. */ + asection *image_section; /* section for image_ptr */ + file_ptr image_offset; /* Offset for image_ptr. */ + + struct module *modules; /* list of all compilation units */ + + asection *dst_section; + + unsigned int dst_ptr_offsets_count; /* # of offsets in following array */ + unsigned int *dst_ptr_offsets; /* array of saved image_ptr offsets */ + + /* Shared library support */ + bfd_vma symvva; /* relative virtual address of symbol vector */ + unsigned int ident; + unsigned char matchctl; + + /* Shared library index. This is used for input bfd while linking. */ + unsigned int shr_index; + + /* Used to place structures in the file. */ + file_ptr file_pos; + + /* Simply linked list of eisd. */ + struct vms_internal_eisd_map *eisd_head; + struct vms_internal_eisd_map *eisd_tail; + + /* Simply linked list of eisd for shared libraries. */ + struct vms_internal_eisd_map *gbl_eisd_head; + struct vms_internal_eisd_map *gbl_eisd_tail; + + /* linkage index counter used by conditional store commands */ + int vms_linkage_index; + + /* see tc-alpha.c of gas for a description. */ + int flag_hash_long_names; /* -+, hash instead of truncate */ + int flag_show_after_trunc; /* -H, show hashing/truncation */ +}; + +#define PRIV2(abfd, name) \ + (((struct vms_private_data_struct *)(abfd)->tdata.any)->name) +#define PRIV(name) PRIV2(abfd,name) + + +/* Used to keep extra VMS specific information for a given section. + + reloc_size holds the size of the relocation stream, note this + is very different from the number of relocations as VMS relocations + are variable length. + + reloc_stream is the actual stream of relocation entries. */ + +struct vms_section_data_struct +{ + /* Maximnum number of entries in sec->relocation. */ + unsigned reloc_max; + + /* Corresponding eisd. Used only while generating executables. */ + struct vms_internal_eisd_map *eisd; + + /* PSC flags to be clear. */ + flagword no_flags; + + /* PSC flags to be set. */ + flagword flags; +}; + +#define vms_section_data(sec) \ + ((struct vms_section_data_struct *)sec->used_by_bfd) + +/* To be called from the debugger. */ +struct vms_private_data_struct *bfd_vms_get_data (bfd *abfd); + +static int vms_get_remaining_object_record (bfd *abfd, int read_so_far); +static bfd_boolean _bfd_vms_slurp_object_records (bfd * abfd); +static void alpha_vms_add_fixup_lp (struct bfd_link_info *, bfd *, bfd *); +static void alpha_vms_add_fixup_ca (struct bfd_link_info *, bfd *, bfd *); +static void alpha_vms_add_fixup_qr (struct bfd_link_info *, bfd *, bfd *, + bfd_vma); +static void alpha_vms_add_fixup_lr (struct bfd_link_info *, unsigned int, + bfd_vma); +static void alpha_vms_add_lw_reloc (struct bfd_link_info *info); +static void alpha_vms_add_qw_reloc (struct bfd_link_info *info); + +struct vector_type +{ + unsigned int max_el; + unsigned int nbr_el; + void *els; +}; + +/* Number of elements in VEC. */ + +#define VEC_COUNT(VEC) ((VEC).nbr_el) + +/* Get the address of the Nth element. */ + +#define VEC_EL(VEC, TYPE, N) (((TYPE *)((VEC).els))[N]) + +#define VEC_INIT(VEC) \ + do { \ + (VEC).max_el = 0; \ + (VEC).nbr_el = 0; \ + (VEC).els = NULL; \ + } while (0) + +/* Be sure there is room for a new element. */ + +static void vector_grow1 (struct vector_type *vec, size_t elsz); + +/* Allocate room for a new element and return its address. */ + +#define VEC_APPEND(VEC, TYPE) \ + (vector_grow1 (&VEC, sizeof (TYPE)), &VEC_EL(VEC, TYPE, (VEC).nbr_el++)) + +/* Append an element. */ + +#define VEC_APPEND_EL(VEC, TYPE, EL) \ + (*(VEC_APPEND (VEC, TYPE)) = EL) + +struct alpha_vms_vma_ref +{ + bfd_vma vma; /* Vma in the output. */ + bfd_vma ref; /* Reference in the input. */ +}; + +struct alpha_vms_shlib_el +{ + bfd *abfd; + bfd_boolean has_fixups; + + struct vector_type lp; /* Vector of bfd_vma. */ + struct vector_type ca; /* Vector of bfd_vma. */ + struct vector_type qr; /* Vector of struct alpha_vms_vma_ref. */ +}; + +/* Alpha VMS linker hash table. */ + +struct alpha_vms_link_hash_table +{ + struct bfd_link_hash_table root; + + /* Vector of shared libaries. */ + struct vector_type shrlibs; + + /* Fixup section. */ + asection *fixup; + + /* Base address. Used by fixups. */ + bfd_vma base_addr; +}; + +#define alpha_vms_link_hash(INFO) \ + ((struct alpha_vms_link_hash_table *)(INFO->hash)) + +/* Alpha VMS linker hash table entry. */ + +struct alpha_vms_link_hash_entry +{ + struct bfd_link_hash_entry root; + + /* Pointer to the original vms symbol. */ + struct vms_symbol_entry *sym; +}; + +/* Image reading. */ + +/* Read & process EIHD record. + Return TRUE on success, FALSE on error. */ + +static bfd_boolean +_bfd_vms_slurp_eihd (bfd *abfd, unsigned int *eisd_offset, + unsigned int *eihs_offset) +{ + unsigned int imgtype, size; + bfd_vma symvva; + struct vms_eihd *eihd = (struct vms_eihd *)PRIV (recrd.rec); + + vms_debug2 ((8, "_bfd_vms_slurp_eihd\n")); + + size = bfd_getl32 (eihd->size); + imgtype = bfd_getl32 (eihd->imgtype); + + if (imgtype == EIHD__K_EXE || imgtype == EIHD__K_LIM) + abfd->flags |= EXEC_P; + + symvva = bfd_getl64 (eihd->symvva); + if (symvva != 0) + { + PRIV (symvva) = symvva; + abfd->flags |= DYNAMIC; + } + + PRIV (ident) = bfd_getl32 (eihd->ident); + PRIV (matchctl) = eihd->matchctl; + + *eisd_offset = bfd_getl32 (eihd->isdoff); + *eihs_offset = bfd_getl32 (eihd->symdbgoff); + + vms_debug2 ((4, "EIHD size %d imgtype %d symvva 0x%lx eisd %d eihs %d\n", + size, imgtype, (unsigned long)symvva, + *eisd_offset, *eihs_offset)); + + return TRUE; +} + +/* Read & process EISD record. + Return TRUE on success, FALSE on error. */ + +static bfd_boolean +_bfd_vms_slurp_eisd (bfd *abfd, unsigned int offset) +{ + int section_count = 0; + + vms_debug2 ((8, "_bfd_vms_slurp_eisd\n")); + + while (1) + { + struct vms_eisd *eisd; + unsigned int rec_size; + unsigned int size; + unsigned long long vaddr; + unsigned int flags; + unsigned int vbn; + char *name = NULL; + asection *section; + flagword bfd_flags; + + eisd = (struct vms_eisd *)(PRIV (recrd.rec) + offset); + rec_size = bfd_getl32 (eisd->eisdsize); + + if (rec_size == 0) + break; + + /* Skip to next block if pad. */ + if (rec_size == 0xffffffff) + { + offset = (offset + VMS_BLOCK_SIZE) & ~(VMS_BLOCK_SIZE - 1); + continue; + } + else + offset += rec_size; + + size = bfd_getl32 (eisd->secsize); + vaddr = bfd_getl64 (eisd->virt_addr); + flags = bfd_getl32 (eisd->flags); + vbn = bfd_getl32 (eisd->vbn); + + vms_debug2 ((4, "EISD at 0x%x size 0x%x addr 0x%lx flags 0x%x blk %d\n", + offset, size, (unsigned long)vaddr, flags, vbn)); + + /* VMS combines psects from .obj files into isects in the .exe. This + process doesn't preserve enough information to reliably determine + what's in each section without examining the data. This is + especially true of DWARF debug sections. */ + bfd_flags = SEC_ALLOC; + if (vbn != 0) + bfd_flags |= SEC_HAS_CONTENTS | SEC_LOAD; + + if (flags & EISD__M_EXE) + bfd_flags |= SEC_CODE; + + if (flags & EISD__M_NONSHRADR) + bfd_flags |= SEC_DATA; + + if (!(flags & EISD__M_WRT)) + bfd_flags |= SEC_READONLY; + + if (flags & EISD__M_DZRO) + bfd_flags |= SEC_DATA; + + if (flags & EISD__M_FIXUPVEC) + bfd_flags |= SEC_DATA; + + if (flags & EISD__M_CRF) + bfd_flags |= SEC_DATA; + + if (flags & EISD__M_GBL) + { + name = _bfd_vms_save_counted_string (eisd->gblnam); + bfd_flags |= SEC_COFF_SHARED_LIBRARY; + bfd_flags &= ~(SEC_ALLOC | SEC_LOAD); + } + else if (flags & EISD__M_FIXUPVEC) + name = "$FIXUPVEC$"; + else if (eisd->type == EISD__K_USRSTACK) + name = "$STACK$"; + else + { + const char *pfx; + + name = (char*) bfd_alloc (abfd, 32); + if (flags & EISD__M_DZRO) + pfx = "BSS"; + else if (flags & EISD__M_EXE) + pfx = "CODE"; + else if (!(flags & EISD__M_WRT)) + pfx = "RO"; + else + pfx = "LOCAL"; + BFD_ASSERT (section_count < 999); + sprintf (name, "$%s_%03d$", pfx, section_count++); + } + + section = bfd_make_section (abfd, name); + + if (!section) + return FALSE; + + section->filepos = vbn ? VMS_BLOCK_SIZE * (vbn - 1) : 0; + section->size = size; + section->vma = vaddr; + + if (!bfd_set_section_flags (abfd, section, bfd_flags)) + return FALSE; + } + + return TRUE; +} + +/* Read & process EIHS record. + Return TRUE on success, FALSE on error. */ + +static bfd_boolean +_bfd_vms_slurp_eihs (bfd *abfd, unsigned int offset) +{ + unsigned char *p = PRIV (recrd.rec) + offset; + unsigned int gstvbn = bfd_getl32 (p + EIHS__L_GSTVBN); + unsigned int gstsize ATTRIBUTE_UNUSED = bfd_getl32 (p + EIHS__L_GSTSIZE); + unsigned int dstvbn = bfd_getl32 (p + EIHS__L_DSTVBN); + unsigned int dstsize = bfd_getl32 (p + EIHS__L_DSTSIZE); + unsigned int dmtvbn = bfd_getl32 (p + EIHS__L_DMTVBN); + unsigned int dmtbytes = bfd_getl32 (p + EIHS__L_DMTBYTES); + asection *section; + +#if VMS_DEBUG + vms_debug (8, "_bfd_vms_slurp_ihs\n"); + vms_debug (4, "EIHS record gstvbn %d gstsize %d dstvbn %d dstsize %d dmtvbn %d dmtbytes %d\n", + gstvbn, gstsize, dstvbn, dstsize, dmtvbn, dmtbytes); +#endif + + if (dstvbn) + { + flagword bfd_flags = SEC_HAS_CONTENTS | SEC_DEBUGGING; + + section = bfd_make_section (abfd, "$DST$"); + if (!section) + return FALSE; + + section->size = dstsize; + section->filepos = VMS_BLOCK_SIZE * (dstvbn - 1); + + if (!bfd_set_section_flags (abfd, section, bfd_flags)) + return FALSE; + + PRIV (dst_section) = section; + abfd->flags |= (HAS_DEBUG | HAS_LINENO); + } + + if (dmtvbn) + { + flagword bfd_flags = SEC_HAS_CONTENTS | SEC_DEBUGGING; + + section = bfd_make_section (abfd, "$DMT$"); + if (!section) + return FALSE; + + section->size = dmtbytes; + section->filepos = VMS_BLOCK_SIZE * (dmtvbn - 1); + + if (!bfd_set_section_flags (abfd, section, bfd_flags)) + return FALSE; + } + + if (gstvbn) + { + if (bfd_seek (abfd, VMS_BLOCK_SIZE * (gstvbn - 1), SEEK_SET)) + { + bfd_set_error (bfd_error_file_truncated); + return FALSE; + } + + if (_bfd_vms_slurp_object_records (abfd) != TRUE) + return FALSE; + + abfd->flags |= HAS_SYMS; + } + + return TRUE; +} + +/* Object file reading. */ + +/* Object file input functions. */ + +/* Get next record from object file to vms_buf. + Set PRIV(buf_size) and return it + + This is a little tricky since it should be portable. + + The openVMS object file has 'variable length' which means that + read() returns data in chunks of (hopefully) correct and expected + size. The linker (and other tools on VMS) depend on that. Unix + doesn't know about 'formatted' files, so reading and writing such + an object file in a Unix environment is not trivial. + + With the tool 'file' (available on all VMS FTP sites), one + can view and change the attributes of a file. Changing from + 'variable length' to 'fixed length, 512 bytes' reveals the + record size at the first 2 bytes of every record. The same + may happen during the transfer of object files from VMS to Unix, + at least with UCX, the DEC implementation of TCP/IP. + + The VMS format repeats the size at bytes 2 & 3 of every record. + + On the first call (file_format == FF_UNKNOWN) we check if + the first and the third byte pair (!) of the record match. + If they do it's an object file in an Unix environment or with + wrong attributes (FF_FOREIGN), else we should be in a VMS + environment where read() returns the record size (FF_NATIVE). + + Reading is always done in 2 steps: + 1. first just the record header is read and the size extracted, + 2. then the read buffer is adjusted and the remaining bytes are + read in. + + All file I/O is done on even file positions. */ + +#define VMS_OBJECT_ADJUSTMENT 2 + +static void +maybe_adjust_record_pointer_for_object (bfd *abfd) +{ + /* Set the file format once for all on the first invocation. */ + if (PRIV (recrd.file_format) == FF_UNKNOWN) + { + if (PRIV (recrd.rec)[0] == PRIV (recrd.rec)[4] + && PRIV (recrd.rec)[1] == PRIV (recrd.rec)[5]) + PRIV (recrd.file_format) = FF_FOREIGN; + else + PRIV (recrd.file_format) = FF_NATIVE; + } + + /* The adjustment is needed only in an Unix environment. */ + if (PRIV (recrd.file_format) == FF_FOREIGN) + PRIV (recrd.rec) += VMS_OBJECT_ADJUSTMENT; +} + +/* Implement step #1 of the object record reading procedure. + Return the record type or -1 on failure. */ + +static int +_bfd_vms_get_object_record (bfd *abfd) +{ + unsigned int test_len = 6; + int type; + + vms_debug2 ((8, "_bfd_vms_get_obj_record\n")); + + /* Skip alignment byte if the current position is odd. */ + if (PRIV (recrd.file_format) == FF_FOREIGN && (bfd_tell (abfd) & 1)) + { + if (bfd_bread (PRIV (recrd.buf), 1, abfd) != 1) + { + bfd_set_error (bfd_error_file_truncated); + return -1; + } + } + + /* Read the record header */ + if (bfd_bread (PRIV (recrd.buf), test_len, abfd) != test_len) + { + bfd_set_error (bfd_error_file_truncated); + return -1; + } + + /* Reset the record pointer. */ + PRIV (recrd.rec) = PRIV (recrd.buf); + maybe_adjust_record_pointer_for_object (abfd); + + if (vms_get_remaining_object_record (abfd, test_len) <= 0) + return -1; + + type = bfd_getl16 (PRIV (recrd.rec)); + + vms_debug2 ((8, "_bfd_vms_get_obj_record: rec %p, size %d, type %d\n", + PRIV (recrd.rec), PRIV (recrd.rec_size), type)); + + return type; +} + +/* Implement step #2 of the object record reading procedure. + Return the size of the record or 0 on failure. */ + +static int +vms_get_remaining_object_record (bfd *abfd, int read_so_far) +{ + unsigned int to_read; + + vms_debug2 ((8, "vms_get_remaining_obj_record\n")); + + /* Extract record size. */ + PRIV (recrd.rec_size) = bfd_getl16 (PRIV (recrd.rec) + 2); + + if (PRIV (recrd.rec_size) == 0) + { + bfd_set_error (bfd_error_file_truncated); + return 0; + } + + /* That's what the linker manual says. */ + if (PRIV (recrd.rec_size) > EOBJ__C_MAXRECSIZ) + { + bfd_set_error (bfd_error_file_truncated); + return 0; + } + + /* Take into account object adjustment. */ + to_read = PRIV (recrd.rec_size); + if (PRIV (recrd.file_format) == FF_FOREIGN) + to_read += VMS_OBJECT_ADJUSTMENT; + + /* Adjust the buffer. */ + if (to_read > PRIV (recrd.buf_size)) + { + PRIV (recrd.buf) + = (unsigned char *) bfd_realloc (PRIV (recrd.buf), to_read); + if (PRIV (recrd.buf) == NULL) + return 0; + PRIV (recrd.buf_size) = to_read; + } + + /* Read the remaining record. */ + to_read -= read_so_far; + + vms_debug2 ((8, "vms_get_remaining_obj_record: to_read %d\n", to_read)); + + if (bfd_bread (PRIV (recrd.buf) + read_so_far, to_read, abfd) != to_read) + { + bfd_set_error (bfd_error_file_truncated); + return 0; + } + + /* Reset the record pointer. */ + PRIV (recrd.rec) = PRIV (recrd.buf); + maybe_adjust_record_pointer_for_object (abfd); + + vms_debug2 ((8, "vms_get_remaining_obj_record: size %d\n", + PRIV (recrd.rec_size))); + + return PRIV (recrd.rec_size); +} + +/* Read and process emh record. + Return TRUE on success, FALSE on error. */ + +static bfd_boolean +_bfd_vms_slurp_ehdr (bfd *abfd) +{ + unsigned char *ptr; + unsigned char *vms_rec; + int subtype; + + vms_rec = PRIV (recrd.rec); + + vms_debug2 ((2, "HDR/EMH\n")); + + subtype = bfd_getl16 (vms_rec + 4); + + vms_debug2 ((3, "subtype %d\n", subtype)); + + switch (subtype) + { + case EMH__C_MHD: + /* Module header. */ + PRIV (hdr_data).hdr_b_strlvl = vms_rec[6]; + PRIV (hdr_data).hdr_l_arch1 = bfd_getl32 (vms_rec + 8); + PRIV (hdr_data).hdr_l_arch2 = bfd_getl32 (vms_rec + 12); + PRIV (hdr_data).hdr_l_recsiz = bfd_getl32 (vms_rec + 16); + PRIV (hdr_data).hdr_t_name = _bfd_vms_save_counted_string (vms_rec + 20); + ptr = vms_rec + 20 + vms_rec[20] + 1; + PRIV (hdr_data).hdr_t_version =_bfd_vms_save_counted_string (ptr); + ptr += *ptr + 1; + PRIV (hdr_data).hdr_t_date = _bfd_vms_save_sized_string (ptr, 17); + break; + + case EMH__C_LNM: + PRIV (hdr_data).hdr_c_lnm = + _bfd_vms_save_sized_string (vms_rec, PRIV (recrd.rec_size - 6)); + break; + + case EMH__C_SRC: + PRIV (hdr_data).hdr_c_src = + _bfd_vms_save_sized_string (vms_rec, PRIV (recrd.rec_size - 6)); + break; + + case EMH__C_TTL: + PRIV (hdr_data).hdr_c_ttl = + _bfd_vms_save_sized_string (vms_rec, PRIV (recrd.rec_size - 6)); + break; + + case EMH__C_CPR: + case EMH__C_MTC: + case EMH__C_GTX: + break; + + default: + bfd_set_error (bfd_error_wrong_format); + return FALSE; + } + + return TRUE; +} + +/* Typical sections for evax object files. */ + +#define EVAX_ABS_NAME "$ABS$" +#define EVAX_CODE_NAME "$CODE$" +#define EVAX_LINK_NAME "$LINK$" +#define EVAX_DATA_NAME "$DATA$" +#define EVAX_BSS_NAME "$BSS$" +#define EVAX_READONLYADDR_NAME "$READONLY_ADDR$" +#define EVAX_READONLY_NAME "$READONLY$" +#define EVAX_LITERAL_NAME "$LITERAL$" +#define EVAX_LITERALS_NAME "$LITERALS" +#define EVAX_COMMON_NAME "$COMMON$" +#define EVAX_LOCAL_NAME "$LOCAL$" + +struct sec_flags_struct +{ + const char *name; /* Name of section. */ + int vflags_always; + flagword flags_always; /* Flags we set always. */ + int vflags_hassize; + flagword flags_hassize; /* Flags we set if the section has a size > 0. */ +}; + +/* These flags are deccrtl/vaxcrtl (openVMS 6.2 Alpha) compatible. */ + +static const struct sec_flags_struct evax_section_flags[] = + { + { EVAX_ABS_NAME, + EGPS__V_SHR, + 0, + EGPS__V_SHR, + 0 }, + { EVAX_CODE_NAME, + EGPS__V_PIC | EGPS__V_REL | EGPS__V_SHR | EGPS__V_EXE, + SEC_CODE | SEC_READONLY, + EGPS__V_PIC | EGPS__V_REL | EGPS__V_SHR | EGPS__V_EXE, + SEC_CODE | SEC_READONLY | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD }, + { EVAX_LITERAL_NAME, + EGPS__V_PIC | EGPS__V_REL | EGPS__V_SHR | EGPS__V_RD | EGPS__V_NOMOD, + SEC_DATA | SEC_READONLY, + EGPS__V_PIC | EGPS__V_REL | EGPS__V_SHR | EGPS__V_RD, + SEC_DATA | SEC_READONLY | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD }, + { EVAX_LINK_NAME, + EGPS__V_REL | EGPS__V_RD, + SEC_DATA | SEC_READONLY, + EGPS__V_REL | EGPS__V_RD, + SEC_DATA | SEC_READONLY | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD }, + { EVAX_DATA_NAME, + EGPS__V_REL | EGPS__V_RD | EGPS__V_WRT | EGPS__V_NOMOD, + SEC_DATA, + EGPS__V_REL | EGPS__V_RD | EGPS__V_WRT, + SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD }, + { EVAX_BSS_NAME, + EGPS__V_REL | EGPS__V_RD | EGPS__V_WRT | EGPS__V_NOMOD, + SEC_NO_FLAGS, + EGPS__V_REL | EGPS__V_RD | EGPS__V_WRT | EGPS__V_NOMOD, + SEC_ALLOC }, + { EVAX_READONLYADDR_NAME, + EGPS__V_PIC | EGPS__V_REL | EGPS__V_RD, + SEC_DATA | SEC_READONLY, + EGPS__V_PIC | EGPS__V_REL | EGPS__V_RD, + SEC_DATA | SEC_READONLY | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD }, + { EVAX_READONLY_NAME, + EGPS__V_PIC | EGPS__V_REL | EGPS__V_SHR | EGPS__V_RD | EGPS__V_NOMOD, + SEC_DATA | SEC_READONLY, + EGPS__V_PIC | EGPS__V_REL | EGPS__V_SHR | EGPS__V_RD, + SEC_DATA | SEC_READONLY | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD }, + { EVAX_LOCAL_NAME, + EGPS__V_REL | EGPS__V_RD | EGPS__V_WRT, + SEC_DATA, + EGPS__V_REL | EGPS__V_RD | EGPS__V_WRT, + SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD }, + { EVAX_LITERALS_NAME, + EGPS__V_PIC | EGPS__V_OVR, + SEC_DATA | SEC_READONLY, + EGPS__V_PIC | EGPS__V_OVR, + SEC_DATA | SEC_READONLY | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD }, + { NULL, + EGPS__V_REL | EGPS__V_RD | EGPS__V_WRT, + SEC_DATA, + EGPS__V_REL | EGPS__V_RD | EGPS__V_WRT, + SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD } + }; + +/* Retrieve BFD section flags by name and size. */ + +static flagword +vms_secflag_by_name (const struct sec_flags_struct *section_flags, + const char *name, + int hassize) +{ + int i = 0; + + while (section_flags[i].name != NULL) + { + if (strcmp (name, section_flags[i].name) == 0) + { + if (hassize) + return section_flags[i].flags_hassize; + else + return section_flags[i].flags_always; + } + i++; + } + if (hassize) + return section_flags[i].flags_hassize; + return section_flags[i].flags_always; +} + +/* Retrieve VMS section flags by name and size. */ + +static flagword +vms_esecflag_by_name (const struct sec_flags_struct *section_flags, + const char *name, + int hassize) +{ + int i = 0; + + while (section_flags[i].name != NULL) + { + if (strcmp (name, section_flags[i].name) == 0) + { + if (hassize) + return section_flags[i].vflags_hassize; + else + return section_flags[i].vflags_always; + } + i++; + } + if (hassize) + return section_flags[i].vflags_hassize; + return section_flags[i].vflags_always; +} + +/* Add SYM to the symbol table of ABFD. + Return FALSE in case of error. */ + +static bfd_boolean +add_symbol_entry (bfd *abfd, struct vms_symbol_entry *sym) +{ + if (PRIV (gsd_sym_count) >= PRIV (max_sym_count)) + { + if (PRIV (max_sym_count) == 0) + { + PRIV (max_sym_count) = 128; + PRIV (syms) = bfd_malloc + (PRIV (max_sym_count) * sizeof (struct vms_symbol_entry *)); + } + else + { + PRIV (max_sym_count) *= 2; + PRIV (syms) = bfd_realloc + (PRIV (syms), + (PRIV (max_sym_count) * sizeof (struct vms_symbol_entry *))); + } + if (PRIV (syms) == NULL) + return FALSE; + } + + PRIV (syms)[PRIV (gsd_sym_count)++] = sym; + return TRUE; +} + +/* Create a symbol whose name is ASCIC and add it to ABFD. + Return NULL in case of error. */ + +static struct vms_symbol_entry * +add_symbol (bfd *abfd, const unsigned char *ascic) +{ + struct vms_symbol_entry *entry; + int len; + + len = *ascic++; + entry = (struct vms_symbol_entry *)bfd_zalloc (abfd, sizeof (*entry) + len); + if (entry == NULL) + return NULL; + entry->namelen = len; + memcpy (entry->name, ascic, len); + entry->name[len] = 0; + entry->owner = abfd; + + if (!add_symbol_entry (abfd, entry)) + return NULL; + return entry; +} + +/* Read and process EGSD. Return FALSE on failure. */ + +static bfd_boolean +_bfd_vms_slurp_egsd (bfd *abfd) +{ + int gsd_type, gsd_size; + unsigned char *vms_rec; + unsigned long base_addr; + + vms_debug2 ((2, "EGSD\n")); + + PRIV (recrd.rec) += 8; /* Skip type, size, align pad. */ + PRIV (recrd.rec_size) -= 8; + + /* Calculate base address for each section. */ + base_addr = 0L; + + while (PRIV (recrd.rec_size) > 0) + { + vms_rec = PRIV (recrd.rec); + + gsd_type = bfd_getl16 (vms_rec); + gsd_size = bfd_getl16 (vms_rec + 2); + + vms_debug2 ((3, "egsd_type %d\n", gsd_type)); + + switch (gsd_type) + { + case EGSD__C_PSC: + /* Program section definition. */ + { + struct vms_egps *egps = (struct vms_egps *)vms_rec; + flagword new_flags, old_flags; + asection *section; + + old_flags = bfd_getl16 (egps->flags); + + if ((old_flags & EGPS__V_REL) == 0) + { + /* Use the global absolute section for all absolute sections. */ + section = bfd_abs_section_ptr; + } + else + { + char *name; + unsigned long align_addr; + + name = _bfd_vms_save_counted_string (&egps->namlng); + + section = bfd_make_section (abfd, name); + if (!section) + return FALSE; + + section->filepos = 0; + section->size = bfd_getl32 (egps->alloc); + section->alignment_power = egps->align; + + vms_section_data (section)->flags = old_flags; + vms_section_data (section)->no_flags = 0; + + new_flags = vms_secflag_by_name (evax_section_flags, name, + section->size > 0); + if (!(old_flags & EGPS__V_NOMOD) && section->size > 0) + { + new_flags |= SEC_HAS_CONTENTS; + if (old_flags & EGPS__V_REL) + new_flags |= SEC_RELOC; + } + if (!bfd_set_section_flags (abfd, section, new_flags)) + return FALSE; + + /* Give a non-overlapping vma to non absolute sections. */ + align_addr = (1 << section->alignment_power); + if ((base_addr % align_addr) != 0) + base_addr += (align_addr - (base_addr % align_addr)); + section->vma = (bfd_vma)base_addr; + base_addr += section->size; + } + + /* Append it to the section array. */ + if (PRIV (section_count) >= PRIV (section_max)) + { + if (PRIV (section_max) == 0) + PRIV (section_max) = 16; + else + PRIV (section_max) *= 2; + PRIV (sections) = bfd_realloc_or_free + (PRIV (sections), PRIV (section_max) * sizeof (asection *)); + if (PRIV (sections) == NULL) + return FALSE; + } + + PRIV (sections)[PRIV (section_count)] = section; + PRIV (section_count)++; + } + break; + + case EGSD__C_SYM: + { + int nameoff; + struct vms_symbol_entry *entry; + struct vms_egsy *egsy = (struct vms_egsy *) vms_rec; + flagword old_flags; + + old_flags = bfd_getl16 (egsy->flags); + if (old_flags & EGSY__V_DEF) + nameoff = ESDF__B_NAMLNG; + else + nameoff = ESRF__B_NAMLNG; + + entry = add_symbol (abfd, vms_rec + nameoff); + if (entry == NULL) + return FALSE; + + /* Allow only duplicate reference. */ + if ((entry->flags & EGSY__V_DEF) && (old_flags & EGSY__V_DEF)) + abort (); + + if (entry->typ == 0) + { + entry->typ = gsd_type; + entry->data_type = egsy->datyp; + entry->flags = old_flags; + } + + if (old_flags & EGSY__V_DEF) + { + struct vms_esdf *esdf = (struct vms_esdf *)vms_rec; + + entry->value = bfd_getl64 (esdf->value); + entry->section = PRIV (sections)[bfd_getl32 (esdf->psindx)]; + + if (old_flags & EGSY__V_NORM) + { + PRIV (norm_sym_count)++; + + entry->code_value = bfd_getl64 (esdf->code_address); + entry->code_section = + PRIV (sections)[bfd_getl32 (esdf->ca_psindx)]; + } + } + } + break; + + case EGSD__C_SYMG: + { + struct vms_symbol_entry *entry; + struct vms_egst *egst = (struct vms_egst *)vms_rec; + flagword old_flags; + + old_flags = bfd_getl16 (egst->header.flags); + + entry = add_symbol (abfd, &egst->namlng); + + if (entry == NULL) + return FALSE; + + entry->typ = gsd_type; + entry->data_type = egst->header.datyp; + entry->flags = old_flags; + + entry->symbol_vector = bfd_getl32 (egst->value); + + if (old_flags & EGSY__V_REL) + entry->section = PRIV (sections)[bfd_getl32 (egst->psindx)]; + else + entry->section = bfd_abs_section_ptr; + + entry->value = bfd_getl64 (egst->lp_2); + + if (old_flags & EGSY__V_NORM) + { + PRIV (norm_sym_count)++; + + entry->code_value = bfd_getl64 (egst->lp_1); + entry->code_section = bfd_abs_section_ptr; + } + } + break; + + case EGSD__C_SPSC: + case EGSD__C_IDC: + /* Currently ignored. */ + break; + case EGSD__C_SYMM: + case EGSD__C_SYMV: + default: + (*_bfd_error_handler) (_("Unknown EGSD subtype %d"), gsd_type); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + + PRIV (recrd.rec_size) -= gsd_size; + PRIV (recrd.rec) += gsd_size; + } + + if (PRIV (gsd_sym_count) > 0) + abfd->flags |= HAS_SYMS; + + return TRUE; +} + +/* Stack routines for vms ETIR commands. */ + +/* Push value and section index. */ + +static void +_bfd_vms_push (bfd *abfd, bfd_vma val, unsigned int reloc) +{ + vms_debug2 ((4, "\n", + (unsigned long)val, reloc, PRIV (stackptr))); + + PRIV (stack[PRIV (stackptr)]).value = val; + PRIV (stack[PRIV (stackptr)]).reloc = reloc; + PRIV (stackptr)++; + if (PRIV (stackptr) >= STACKSIZE) + { + bfd_set_error (bfd_error_bad_value); + (*_bfd_error_handler) (_("Stack overflow (%d) in _bfd_vms_push"), PRIV (stackptr)); + exit (1); + } +} + +/* Pop value and section index. */ + +static void +_bfd_vms_pop (bfd *abfd, bfd_vma *val, unsigned int *rel) +{ + if (PRIV (stackptr) == 0) + { + bfd_set_error (bfd_error_bad_value); + (*_bfd_error_handler) (_("Stack underflow in _bfd_vms_pop")); + exit (1); + } + PRIV (stackptr)--; + *val = PRIV (stack[PRIV (stackptr)]).value; + *rel = PRIV (stack[PRIV (stackptr)]).reloc; + + vms_debug2 ((4, "\n", (unsigned long)*val, *rel)); +} + +/* Routines to fill sections contents during tir/etir read. */ + +/* Initialize image buffer pointer to be filled. */ + +static void +image_set_ptr (bfd *abfd, bfd_vma vma, int sect, struct bfd_link_info *info) +{ + asection *sec; + + vms_debug2 ((4, "image_set_ptr (0x%08x, sect=%d)\n", (unsigned)vma, sect)); + + sec = PRIV (sections)[sect]; + + if (info) + { + /* Reading contents to an output bfd. */ + + if (sec->output_section == NULL) + { + /* Section discarded. */ + vms_debug2 ((5, " section %s discarded\n", sec->name)); + + /* This is not used. */ + PRIV (image_section) = NULL; + PRIV (image_offset) = 0; + return; + } + PRIV (image_offset) = sec->output_offset + vma; + PRIV (image_section) = sec->output_section; + } + else + { + PRIV (image_offset) = vma; + PRIV (image_section) = sec; + } +} + +/* Increment image buffer pointer by offset. */ + +static void +image_inc_ptr (bfd *abfd, bfd_vma offset) +{ + vms_debug2 ((4, "image_inc_ptr (%u)\n", (unsigned)offset)); + + PRIV (image_offset) += offset; +} + +/* Save current DST location counter under specified index. */ + +static void +dst_define_location (bfd *abfd, unsigned int loc) +{ + vms_debug2 ((4, "dst_define_location (%d)\n", (int)loc)); + + /* Grow the ptr offset table if necessary. */ + if (loc + 1 > PRIV (dst_ptr_offsets_count)) + { + PRIV (dst_ptr_offsets) = bfd_realloc (PRIV (dst_ptr_offsets), + (loc + 1) * sizeof (unsigned int)); + PRIV (dst_ptr_offsets_count) = loc + 1; + } + + PRIV (dst_ptr_offsets)[loc] = PRIV (image_offset); +} + +/* Restore saved DST location counter from specified index. */ + +static void +dst_restore_location (bfd *abfd, unsigned int loc) +{ + vms_debug2 ((4, "dst_restore_location (%d)\n", (int)loc)); + + PRIV (image_offset) = PRIV (dst_ptr_offsets)[loc]; +} + +/* Retrieve saved DST location counter from specified index. */ + +static unsigned int +dst_retrieve_location (bfd *abfd, unsigned int loc) +{ + vms_debug2 ((4, "dst_retrieve_location (%d)\n", (int)loc)); + + return PRIV (dst_ptr_offsets)[loc]; +} + +/* Write multiple bytes to section image. */ + +static bfd_boolean +image_write (bfd *abfd, unsigned char *ptr, int size) +{ +#if VMS_DEBUG + _bfd_vms_debug (8, "image_write from (%p, %d) to (%ld)\n", ptr, size, + (long)PRIV (image_offset)); + _bfd_hexdump (9, ptr, size, 0); +#endif + + if (PRIV (image_section)->contents != NULL) + { + asection *sec = PRIV (image_section); + file_ptr off = PRIV (image_offset); + + /* Check bounds. */ + if (off > (file_ptr)sec->size + || size > (file_ptr)sec->size + || off + size > (file_ptr)sec->size) + { + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + + memcpy (sec->contents + off, ptr, size); + } + + PRIV (image_offset) += size; + return TRUE; +} + +/* Write byte to section image. */ + +static bfd_boolean +image_write_b (bfd * abfd, unsigned int value) +{ + unsigned char data[1]; + + vms_debug2 ((6, "image_write_b (%02x)\n", (int) value)); + + *data = value; + + return image_write (abfd, data, sizeof (data)); +} + +/* Write 2-byte word to image. */ + +static bfd_boolean +image_write_w (bfd * abfd, unsigned int value) +{ + unsigned char data[2]; + + vms_debug2 ((6, "image_write_w (%04x)\n", (int) value)); + + bfd_putl16 (value, data); + return image_write (abfd, data, sizeof (data)); +} + +/* Write 4-byte long to image. */ + +static bfd_boolean +image_write_l (bfd * abfd, unsigned long value) +{ + unsigned char data[4]; + + vms_debug2 ((6, "image_write_l (%08lx)\n", value)); + + bfd_putl32 (value, data); + return image_write (abfd, data, sizeof (data)); +} + +/* Write 8-byte quad to image. */ + +static bfd_boolean +image_write_q (bfd * abfd, bfd_vma value) +{ + unsigned char data[8]; + + vms_debug2 ((6, "image_write_q (%08lx)\n", (unsigned long)value)); + + bfd_putl64 (value, data); + return image_write (abfd, data, sizeof (data)); +} + +static const char * +_bfd_vms_etir_name (int cmd) +{ + switch (cmd) + { + case ETIR__C_STA_GBL: return "ETIR__C_STA_GBL"; + case ETIR__C_STA_LW: return "ETIR__C_STA_LW"; + case ETIR__C_STA_QW: return "ETIR__C_STA_QW"; + case ETIR__C_STA_PQ: return "ETIR__C_STA_PQ"; + case ETIR__C_STA_LI: return "ETIR__C_STA_LI"; + case ETIR__C_STA_MOD: return "ETIR__C_STA_MOD"; + case ETIR__C_STA_CKARG: return "ETIR__C_STA_CKARG"; + case ETIR__C_STO_B: return "ETIR__C_STO_B"; + case ETIR__C_STO_W: return "ETIR__C_STO_W"; + case ETIR__C_STO_GBL: return "ETIR__C_STO_GBL"; + case ETIR__C_STO_CA: return "ETIR__C_STO_CA"; + case ETIR__C_STO_RB: return "ETIR__C_STO_RB"; + case ETIR__C_STO_AB: return "ETIR__C_STO_AB"; + case ETIR__C_STO_OFF: return "ETIR__C_STO_OFF"; + case ETIR__C_STO_IMM: return "ETIR__C_STO_IMM"; + case ETIR__C_STO_IMMR: return "ETIR__C_STO_IMMR"; + case ETIR__C_STO_LW: return "ETIR__C_STO_LW"; + case ETIR__C_STO_QW: return "ETIR__C_STO_QW"; + case ETIR__C_STO_GBL_LW: return "ETIR__C_STO_GBL_LW"; + case ETIR__C_STO_LP_PSB: return "ETIR__C_STO_LP_PSB"; + case ETIR__C_STO_HINT_GBL: return "ETIR__C_STO_HINT_GBL"; + case ETIR__C_STO_HINT_PS: return "ETIR__C_STO_HINT_PS"; + case ETIR__C_OPR_ADD: return "ETIR__C_OPR_ADD"; + case ETIR__C_OPR_SUB: return "ETIR__C_OPR_SUB"; + case ETIR__C_OPR_INSV: return "ETIR__C_OPR_INSV"; + case ETIR__C_OPR_USH: return "ETIR__C_OPR_USH"; + case ETIR__C_OPR_ROT: return "ETIR__C_OPR_ROT"; + case ETIR__C_OPR_REDEF: return "ETIR__C_OPR_REDEF"; + case ETIR__C_OPR_DFLIT: return "ETIR__C_OPR_DFLIT"; + case ETIR__C_STC_LP: return "ETIR__C_STC_LP"; + case ETIR__C_STC_GBL: return "ETIR__C_STC_GBL"; + case ETIR__C_STC_GCA: return "ETIR__C_STC_GCA"; + case ETIR__C_STC_PS: return "ETIR__C_STC_PS"; + case ETIR__C_STC_NBH_PS: return "ETIR__C_STC_NBH_PS"; + case ETIR__C_STC_NOP_GBL: return "ETIR__C_STC_NOP_GBL"; + case ETIR__C_STC_NOP_PS: return "ETIR__C_STC_NOP_PS"; + case ETIR__C_STC_BSR_GBL: return "ETIR__C_STC_BSR_GBL"; + case ETIR__C_STC_BSR_PS: return "ETIR__C_STC_BSR_PS"; + case ETIR__C_STC_LDA_GBL: return "ETIR__C_STC_LDA_GBL"; + case ETIR__C_STC_LDA_PS: return "ETIR__C_STC_LDA_PS"; + case ETIR__C_STC_BOH_GBL: return "ETIR__C_STC_BOH_GBL"; + case ETIR__C_STC_BOH_PS: return "ETIR__C_STC_BOH_PS"; + case ETIR__C_STC_NBH_GBL: return "ETIR__C_STC_NBH_GBL"; + case ETIR__C_STC_LP_PSB: return "ETIR__C_STC_LP_PSB"; + case ETIR__C_CTL_SETRB: return "ETIR__C_CTL_SETRB"; + case ETIR__C_CTL_AUGRB: return "ETIR__C_CTL_AUGRB"; + case ETIR__C_CTL_DFLOC: return "ETIR__C_CTL_DFLOC"; + case ETIR__C_CTL_STLOC: return "ETIR__C_CTL_STLOC"; + case ETIR__C_CTL_STKDL: return "ETIR__C_CTL_STKDL"; + + default: + /* These names have not yet been added to this switch statement. */ + (*_bfd_error_handler) (_("unknown ETIR command %d"), cmd); + } + + return NULL; +} +#define HIGHBIT(op) ((op & 0x80000000L) == 0x80000000L) + +static void +_bfd_vms_get_value (bfd *abfd, const unsigned char *ascic, + struct bfd_link_info *info, + bfd_vma *vma, + struct alpha_vms_link_hash_entry **hp) +{ + char name[257]; + int len; + int i; + struct alpha_vms_link_hash_entry *h; + + /* Not linking. Do not try to resolve the symbol. */ + if (info == NULL) + { + *vma = 0; + *hp = NULL; + return; + } + + len = *ascic; + for (i = 0; i < len; i++) + name[i] = ascic[i + 1]; + name[i] = 0; + + h = (struct alpha_vms_link_hash_entry *) + bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE); + + *hp = h; + + if (h != NULL + && (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak)) + *vma = h->root.u.def.value + + h->root.u.def.section->output_offset + + h->root.u.def.section->output_section->vma; + else if (h && h->root.type == bfd_link_hash_undefweak) + *vma = 0; + else + { + if (!(*info->callbacks->undefined_symbol) + (info, name, abfd, PRIV (image_section), PRIV (image_offset), TRUE)) + abort (); + *vma = 0; + } +} + +#define RELC_NONE 0 +#define RELC_REL 1 +#define RELC_SHR_BASE 0x10000 +#define RELC_SEC_BASE 0x20000 +#define RELC_MASK 0x0ffff + +static unsigned int +alpha_vms_sym_to_ctxt (struct alpha_vms_link_hash_entry *h) +{ + /* Handle undefined symbols. */ + if (h == NULL || h->sym == NULL) + return RELC_NONE; + + if (h->sym->typ == EGSD__C_SYMG) + { + if (h->sym->flags & EGSY__V_REL) + return RELC_SHR_BASE + PRIV2 (h->sym->owner, shr_index); + else + { + /* Can this happen (non-relocatable symg) ? I'd like to see + an example. */ + abort (); + } + } + if (h->sym->typ == EGSD__C_SYM) + { + if (h->sym->flags & EGSY__V_REL) + return RELC_REL; + else + return RELC_NONE; + } + abort (); +} + +static bfd_vma +alpha_vms_get_sym_value (asection *sect, bfd_vma addr) +{ + return sect->output_section->vma + sect->output_offset + addr; +} + +static bfd_vma +alpha_vms_fix_sec_rel (bfd *abfd, struct bfd_link_info *info, + unsigned int rel, bfd_vma vma) +{ + asection *sec = PRIV (sections)[rel & RELC_MASK]; + + if (info) + { + if (sec->output_section == NULL) + abort (); + return vma + sec->output_section->vma + sec->output_offset; + } + else + return vma + sec->vma; +} + +/* Read an ETIR record from ABFD. If INFO is not null, put the content into + the output section (used during linking). + Return FALSE in case of error. */ + +static bfd_boolean +_bfd_vms_slurp_etir (bfd *abfd, struct bfd_link_info *info) +{ + unsigned char *ptr; + unsigned int length; + unsigned char *maxptr; + bfd_vma op1; + bfd_vma op2; + unsigned int rel1; + unsigned int rel2; + struct alpha_vms_link_hash_entry *h; + + PRIV (recrd.rec) += ETIR__C_HEADER_SIZE; + PRIV (recrd.rec_size) -= ETIR__C_HEADER_SIZE; + + ptr = PRIV (recrd.rec); + length = PRIV (recrd.rec_size); + maxptr = ptr + length; + + vms_debug2 ((2, "ETIR: %d bytes\n", length)); + + while (ptr < maxptr) + { + int cmd = bfd_getl16 (ptr); + int cmd_length = bfd_getl16 (ptr + 2); + + ptr += 4; + +#if VMS_DEBUG + _bfd_vms_debug (4, "etir: %s(%d)\n", + _bfd_vms_etir_name (cmd), cmd); + _bfd_hexdump (8, ptr, cmd_length - 4, 0); +#endif + + switch (cmd) + { + /* Stack global + arg: cs symbol name + + stack 32 bit value of symbol (high bits set to 0). */ + case ETIR__C_STA_GBL: + _bfd_vms_get_value (abfd, ptr, info, &op1, &h); + _bfd_vms_push (abfd, op1, alpha_vms_sym_to_ctxt (h)); + break; + + /* Stack longword + arg: lw value + + stack 32 bit value, sign extend to 64 bit. */ + case ETIR__C_STA_LW: + _bfd_vms_push (abfd, bfd_getl32 (ptr), RELC_NONE); + break; + + /* Stack quadword + arg: qw value + + stack 64 bit value of symbol. */ + case ETIR__C_STA_QW: + _bfd_vms_push (abfd, bfd_getl64 (ptr), RELC_NONE); + break; + + /* Stack psect base plus quadword offset + arg: lw section index + qw signed quadword offset (low 32 bits) + + Stack qw argument and section index + (see ETIR__C_STO_OFF, ETIR__C_CTL_SETRB). */ + case ETIR__C_STA_PQ: + { + int psect; + + psect = bfd_getl32 (ptr); + if ((unsigned int) psect >= PRIV (section_count)) + { + (*_bfd_error_handler) (_("bad section index in %s"), + _bfd_vms_etir_name (cmd)); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + op1 = bfd_getl64 (ptr + 4); + _bfd_vms_push (abfd, op1, psect | RELC_SEC_BASE); + } + break; + + case ETIR__C_STA_LI: + case ETIR__C_STA_MOD: + case ETIR__C_STA_CKARG: + (*_bfd_error_handler) (_("unsupported STA cmd %s"), + _bfd_vms_etir_name (cmd)); + return FALSE; + break; + + /* Store byte: pop stack, write byte + arg: -. */ + case ETIR__C_STO_B: + _bfd_vms_pop (abfd, &op1, &rel1); + if (rel1 != RELC_NONE) + goto bad_context; + image_write_b (abfd, (unsigned int) op1 & 0xff); + break; + + /* Store word: pop stack, write word + arg: -. */ + case ETIR__C_STO_W: + _bfd_vms_pop (abfd, &op1, &rel1); + if (rel1 != RELC_NONE) + goto bad_context; + image_write_w (abfd, (unsigned int) op1 & 0xffff); + break; + + /* Store longword: pop stack, write longword + arg: -. */ + case ETIR__C_STO_LW: + _bfd_vms_pop (abfd, &op1, &rel1); + if (rel1 & RELC_SEC_BASE) + { + op1 = alpha_vms_fix_sec_rel (abfd, info, rel1, op1); + rel1 = RELC_REL; + } + else if (rel1 & RELC_SHR_BASE) + { + alpha_vms_add_fixup_lr (info, rel1 & RELC_MASK, op1); + rel1 = RELC_NONE; + } + if (rel1 != RELC_NONE) + { + if (rel1 != RELC_REL) + abort (); + alpha_vms_add_lw_reloc (info); + } + image_write_l (abfd, op1); + break; + + /* Store quadword: pop stack, write quadword + arg: -. */ + case ETIR__C_STO_QW: + _bfd_vms_pop (abfd, &op1, &rel1); + if (rel1 & RELC_SEC_BASE) + { + op1 = alpha_vms_fix_sec_rel (abfd, info, rel1, op1); + rel1 = RELC_REL; + } + else if (rel1 & RELC_SHR_BASE) + abort (); + if (rel1 != RELC_NONE) + { + if (rel1 != RELC_REL) + abort (); + alpha_vms_add_qw_reloc (info); + } + image_write_q (abfd, op1); + break; + + /* Store immediate repeated: pop stack for repeat count + arg: lw byte count + da data. */ + case ETIR__C_STO_IMMR: + { + int size; + + size = bfd_getl32 (ptr); + _bfd_vms_pop (abfd, &op1, &rel1); + if (rel1 != RELC_NONE) + goto bad_context; + while (op1-- > 0) + image_write (abfd, ptr + 4, size); + } + break; + + /* Store global: write symbol value + arg: cs global symbol name. */ + case ETIR__C_STO_GBL: + _bfd_vms_get_value (abfd, ptr, info, &op1, &h); + if (h && h->sym) + { + if (h->sym->typ == EGSD__C_SYMG) + { + alpha_vms_add_fixup_qr + (info, abfd, h->sym->owner, h->sym->symbol_vector); + op1 = 0; + } + else + { + op1 = alpha_vms_get_sym_value (h->sym->section, + h->sym->value); + alpha_vms_add_qw_reloc (info); + } + } + image_write_q (abfd, op1); + break; + + /* Store code address: write address of entry point + arg: cs global symbol name (procedure). */ + case ETIR__C_STO_CA: + _bfd_vms_get_value (abfd, ptr, info, &op1, &h); + if (h && h->sym) + { + if (h->sym->flags & EGSY__V_NORM) + { + /* That's really a procedure. */ + if (h->sym->typ == EGSD__C_SYMG) + { + alpha_vms_add_fixup_ca (info, abfd, h->sym->owner); + op1 = h->sym->symbol_vector; + } + else + { + op1 = alpha_vms_get_sym_value (h->sym->code_section, + h->sym->code_value); + alpha_vms_add_qw_reloc (info); + } + } + else + { + /* Symbol is not a procedure. */ + abort (); + } + } + image_write_q (abfd, op1); + break; + + /* Store offset to psect: pop stack, add low 32 bits to base of psect + arg: none. */ + case ETIR__C_STO_OFF: + _bfd_vms_pop (abfd, &op1, &rel1); + + if (!(rel1 & RELC_SEC_BASE)) + abort (); + + op1 = alpha_vms_fix_sec_rel (abfd, info, rel1, op1); + rel1 = RELC_REL; + image_write_q (abfd, op1); + break; + + /* Store immediate + arg: lw count of bytes + da data. */ + case ETIR__C_STO_IMM: + { + int size; + + size = bfd_getl32 (ptr); + image_write (abfd, ptr + 4, size); + } + break; + + /* 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. */ + case ETIR__C_STO_GBL_LW: + _bfd_vms_get_value (abfd, ptr, info, &op1, &h); +#if 0 + abort (); +#endif + image_write_l (abfd, op1); + break; + + case ETIR__C_STO_RB: + case ETIR__C_STO_AB: + case ETIR__C_STO_LP_PSB: + (*_bfd_error_handler) (_("%s: not supported"), + _bfd_vms_etir_name (cmd)); + return FALSE; + break; + case ETIR__C_STO_HINT_GBL: + case ETIR__C_STO_HINT_PS: + (*_bfd_error_handler) (_("%s: not implemented"), + _bfd_vms_etir_name (cmd)); + return FALSE; + break; + + /* 200 Store-conditional Linkage Pair + arg: none. */ + case ETIR__C_STC_LP: + + /* 202 Store-conditional Address at global address + lw linkage index + cs global name. */ + + case ETIR__C_STC_GBL: + + /* 203 Store-conditional Code Address at global address + lw linkage index + cs procedure name. */ + case ETIR__C_STC_GCA: + + /* 204 Store-conditional Address at psect + offset + lw linkage index + lw psect index + qw offset. */ + case ETIR__C_STC_PS: + (*_bfd_error_handler) (_("%s: not supported"), + _bfd_vms_etir_name (cmd)); + return FALSE; + break; + + /* 201 Store-conditional Linkage Pair with Procedure Signature + lw linkage index + cs procedure name + by signature length + da signature. */ + + case ETIR__C_STC_LP_PSB: + _bfd_vms_get_value (abfd, ptr + 4, info, &op1, &h); + if (h && h->sym) + { + if (h->sym->typ == EGSD__C_SYMG) + { + alpha_vms_add_fixup_lp (info, abfd, h->sym->owner); + op1 = h->sym->symbol_vector; + op2 = 0; + } + else + { + op1 = alpha_vms_get_sym_value (h->sym->code_section, + h->sym->code_value); + op2 = alpha_vms_get_sym_value (h->sym->section, + h->sym->value); + } + } + else + { + /* Undefined symbol. */ + op1 = 0; + op2 = 0; + } + image_write_q (abfd, op1); + image_write_q (abfd, op2); + break; + + /* 205 Store-conditional NOP at address of global + arg: none. */ + case ETIR__C_STC_NOP_GBL: + /* ALPHA_R_NOP */ + + /* 207 Store-conditional BSR at global address + arg: none. */ + + case ETIR__C_STC_BSR_GBL: + /* ALPHA_R_BSR */ + + /* 209 Store-conditional LDA at global address + arg: none. */ + + case ETIR__C_STC_LDA_GBL: + /* ALPHA_R_LDA */ + + /* 211 Store-conditional BSR or Hint at global address + arg: none. */ + + case ETIR__C_STC_BOH_GBL: + /* Currentl ignored. */ + break; + + /* 213 Store-conditional NOP,BSR or HINT at global address + arg: none. */ + + case ETIR__C_STC_NBH_GBL: + + /* 206 Store-conditional NOP at pect + offset + arg: none. */ + + case ETIR__C_STC_NOP_PS: + + /* 208 Store-conditional BSR at pect + offset + arg: none. */ + + case ETIR__C_STC_BSR_PS: + + /* 210 Store-conditional LDA at psect + offset + arg: none. */ + + case ETIR__C_STC_LDA_PS: + + /* 212 Store-conditional BSR or Hint at pect + offset + arg: none. */ + + case ETIR__C_STC_BOH_PS: + + /* 214 Store-conditional NOP, BSR or HINT at psect + offset + arg: none. */ + case ETIR__C_STC_NBH_PS: + (*_bfd_error_handler) ("%s: not supported", + _bfd_vms_etir_name (cmd)); + return FALSE; + break; + + /* Det relocation base: pop stack, set image location counter + arg: none. */ + case ETIR__C_CTL_SETRB: + _bfd_vms_pop (abfd, &op1, &rel1); + if (!(rel1 & RELC_SEC_BASE)) + abort (); + image_set_ptr (abfd, op1, rel1 & RELC_MASK, info); + break; + + /* Augment relocation base: increment image location counter by offset + arg: lw offset value. */ + case ETIR__C_CTL_AUGRB: + op1 = bfd_getl32 (ptr); + image_inc_ptr (abfd, op1); + break; + + /* Define location: pop index, save location counter under index + arg: none. */ + case ETIR__C_CTL_DFLOC: + _bfd_vms_pop (abfd, &op1, &rel1); + if (rel1 != RELC_NONE) + goto bad_context; + dst_define_location (abfd, op1); + break; + + /* Set location: pop index, restore location counter from index + arg: none. */ + case ETIR__C_CTL_STLOC: + _bfd_vms_pop (abfd, &op1, &rel1); + if (rel1 != RELC_NONE) + goto bad_context; + dst_restore_location (abfd, op1); + break; + + /* Stack defined location: pop index, push location counter from index + arg: none. */ + case ETIR__C_CTL_STKDL: + _bfd_vms_pop (abfd, &op1, &rel1); + if (rel1 != RELC_NONE) + goto bad_context; + _bfd_vms_push (abfd, dst_retrieve_location (abfd, op1), RELC_NONE); + break; + + case ETIR__C_OPR_NOP: /* No-op. */ + break; + + case ETIR__C_OPR_ADD: /* Add. */ + _bfd_vms_pop (abfd, &op1, &rel1); + _bfd_vms_pop (abfd, &op2, &rel2); + if (rel1 == RELC_NONE && rel2 != RELC_NONE) + rel1 = rel2; + else if (rel1 != RELC_NONE && rel2 != RELC_NONE) + goto bad_context; + _bfd_vms_push (abfd, op1 + op2, rel1); + break; + + case ETIR__C_OPR_SUB: /* Subtract. */ + _bfd_vms_pop (abfd, &op1, &rel1); + _bfd_vms_pop (abfd, &op2, &rel2); + if (rel1 == RELC_NONE && rel2 != RELC_NONE) + rel1 = rel2; + else if ((rel1 & RELC_SEC_BASE) && (rel2 & RELC_SEC_BASE)) + { + op1 = alpha_vms_fix_sec_rel (abfd, info, rel1, op1); + op2 = alpha_vms_fix_sec_rel (abfd, info, rel2, op2); + rel1 = RELC_NONE; + } + else if (rel1 != RELC_NONE && rel2 != RELC_NONE) + goto bad_context; + _bfd_vms_push (abfd, op2 - op1, rel1); + break; + + case ETIR__C_OPR_MUL: /* Multiply. */ + _bfd_vms_pop (abfd, &op1, &rel1); + _bfd_vms_pop (abfd, &op2, &rel2); + if (rel1 != RELC_NONE || rel2 != RELC_NONE) + goto bad_context; + _bfd_vms_push (abfd, op1 * op2, RELC_NONE); + break; + + case ETIR__C_OPR_DIV: /* Divide. */ + _bfd_vms_pop (abfd, &op1, &rel1); + _bfd_vms_pop (abfd, &op2, &rel2); + if (rel1 != RELC_NONE || rel2 != RELC_NONE) + goto bad_context; + if (op2 == 0) + _bfd_vms_push (abfd, 0, RELC_NONE); + else + _bfd_vms_push (abfd, op2 / op1, RELC_NONE); + break; + + case ETIR__C_OPR_AND: /* Logical AND. */ + _bfd_vms_pop (abfd, &op1, &rel1); + _bfd_vms_pop (abfd, &op2, &rel2); + if (rel1 != RELC_NONE || rel2 != RELC_NONE) + goto bad_context; + _bfd_vms_push (abfd, op1 & op2, RELC_NONE); + break; + + case ETIR__C_OPR_IOR: /* Logical inclusive OR. */ + _bfd_vms_pop (abfd, &op1, &rel1); + _bfd_vms_pop (abfd, &op2, &rel2); + if (rel1 != RELC_NONE || rel2 != RELC_NONE) + goto bad_context; + _bfd_vms_push (abfd, op1 | op2, RELC_NONE); + break; + + case ETIR__C_OPR_EOR: /* Logical exclusive OR. */ + _bfd_vms_pop (abfd, &op1, &rel1); + _bfd_vms_pop (abfd, &op2, &rel2); + if (rel1 != RELC_NONE || rel2 != RELC_NONE) + goto bad_context; + _bfd_vms_push (abfd, op1 ^ op2, RELC_NONE); + break; + + case ETIR__C_OPR_NEG: /* Negate. */ + _bfd_vms_pop (abfd, &op1, &rel1); + if (rel1 != RELC_NONE) + goto bad_context; + _bfd_vms_push (abfd, -op1, RELC_NONE); + break; + + case ETIR__C_OPR_COM: /* Complement. */ + _bfd_vms_pop (abfd, &op1, &rel1); + if (rel1 != RELC_NONE) + goto bad_context; + _bfd_vms_push (abfd, ~op1, RELC_NONE); + break; + + case ETIR__C_OPR_ASH: /* Arithmetic shift. */ + _bfd_vms_pop (abfd, &op1, &rel1); + _bfd_vms_pop (abfd, &op2, &rel2); + if (rel1 != RELC_NONE || rel2 != RELC_NONE) + { + bad_context: + (*_bfd_error_handler) (_("invalid use of %s with contexts"), + _bfd_vms_etir_name (cmd)); + return FALSE; + } + if ((int)op2 < 0) /* Shift right. */ + op1 >>= -(int)op2; + else /* Shift left. */ + op1 <<= (int)op2; + _bfd_vms_push (abfd, op1, RELC_NONE); /* FIXME: sym. */ + break; + + case ETIR__C_OPR_INSV: /* Insert field. */ + case ETIR__C_OPR_USH: /* Unsigned shift. */ + case ETIR__C_OPR_ROT: /* Rotate. */ + case ETIR__C_OPR_REDEF: /* Redefine symbol to current location. */ + case ETIR__C_OPR_DFLIT: /* Define a literal. */ + (*_bfd_error_handler) (_("%s: not supported"), + _bfd_vms_etir_name (cmd)); + return FALSE; + break; + + case ETIR__C_OPR_SEL: /* Select. */ + _bfd_vms_pop (abfd, &op1, &rel1); + if (op1 & 0x01L) + _bfd_vms_pop (abfd, &op1, &rel1); + else + { + _bfd_vms_pop (abfd, &op1, &rel1); + _bfd_vms_pop (abfd, &op2, &rel2); + _bfd_vms_push (abfd, op1, rel1); + } + break; + + default: + (*_bfd_error_handler) (_("reserved cmd %d"), cmd); + return FALSE; + break; + } + + ptr += cmd_length - 4; + } + + return TRUE; +} + +/* Process EDBG/ETBT record. + Return TRUE on success, FALSE on error */ + +static bfd_boolean +vms_slurp_debug (bfd *abfd) +{ + asection *section = PRIV (dst_section); + + if (section == NULL) + { + /* We have no way to find out beforehand how much debug info there + is in an object file, so pick an initial amount and grow it as + needed later. */ + flagword flags = SEC_HAS_CONTENTS | SEC_DEBUGGING | SEC_RELOC + | SEC_IN_MEMORY; + + section = bfd_make_section (abfd, "$DST$"); + if (!section) + return FALSE; + if (!bfd_set_section_flags (abfd, section, flags)) + return FALSE; + PRIV (dst_section) = section; + } + + PRIV (image_section) = section; + PRIV (image_offset) = section->size; + + if (!_bfd_vms_slurp_etir (abfd, NULL)) + return FALSE; + + section->size = PRIV (image_offset); + return TRUE; +} + +/* Process EDBG record. + Return TRUE on success, FALSE on error. */ + +static bfd_boolean +_bfd_vms_slurp_edbg (bfd *abfd) +{ + vms_debug2 ((2, "EDBG\n")); + + abfd->flags |= HAS_DEBUG | HAS_LINENO; + + return vms_slurp_debug (abfd); +} + +/* Process ETBT record. + Return TRUE on success, FALSE on error. */ + +static bfd_boolean +_bfd_vms_slurp_etbt (bfd *abfd) +{ + vms_debug2 ((2, "ETBT\n")); + + abfd->flags |= HAS_LINENO; + + return vms_slurp_debug (abfd); +} + +/* Process EEOM record. + Return TRUE on success, FALSE on error. */ + +static bfd_boolean +_bfd_vms_slurp_eeom (bfd *abfd) +{ + struct vms_eeom *eeom = (struct vms_eeom *) PRIV (recrd.rec); + + vms_debug2 ((2, "EEOM\n")); + + PRIV (eom_data).eom_l_total_lps = bfd_getl32 (eeom->total_lps); + PRIV (eom_data).eom_w_comcod = bfd_getl16 (eeom->comcod); + if (PRIV (eom_data).eom_w_comcod > 1) + { + (*_bfd_error_handler) (_("Object module NOT error-free !\n")); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + + PRIV (eom_data).eom_has_transfer = FALSE; + if (PRIV (recrd.rec_size) > 10) + { + PRIV (eom_data).eom_has_transfer = TRUE; + PRIV (eom_data).eom_b_tfrflg = eeom->tfrflg; + PRIV (eom_data).eom_l_psindx = bfd_getl32 (eeom->psindx); + PRIV (eom_data).eom_l_tfradr = bfd_getl32 (eeom->tfradr); + + abfd->start_address = PRIV (eom_data).eom_l_tfradr; + } + return TRUE; +} + +/* Slurp an ordered set of VMS object records. Return FALSE on error. */ + +static bfd_boolean +_bfd_vms_slurp_object_records (bfd * abfd) +{ + bfd_boolean err; + int type; + + do + { + vms_debug2 ((7, "reading at %08lx\n", (unsigned long)bfd_tell (abfd))); + + type = _bfd_vms_get_object_record (abfd); + if (type < 0) + { + vms_debug2 ((2, "next_record failed\n")); + return FALSE; + } + + switch (type) + { + case EOBJ__C_EMH: + err = _bfd_vms_slurp_ehdr (abfd); + break; + case EOBJ__C_EEOM: + err = _bfd_vms_slurp_eeom (abfd); + break; + case EOBJ__C_EGSD: + err = _bfd_vms_slurp_egsd (abfd); + break; + case EOBJ__C_ETIR: + err = TRUE; /* _bfd_vms_slurp_etir (abfd); */ + break; + case EOBJ__C_EDBG: + err = _bfd_vms_slurp_edbg (abfd); + break; + case EOBJ__C_ETBT: + err = _bfd_vms_slurp_etbt (abfd); + break; + default: + err = FALSE; + } + if (err != TRUE) + { + vms_debug2 ((2, "slurp type %d failed\n", type)); + return FALSE; + } + } + while (type != EOBJ__C_EEOM); + + return TRUE; +} + +/* Initialize private data */ +static bfd_boolean +vms_initialize (bfd * abfd) +{ + bfd_size_type amt; + + amt = sizeof (struct vms_private_data_struct); + abfd->tdata.any = bfd_zalloc (abfd, amt); + if (abfd->tdata.any == NULL) + return FALSE; + + PRIV (recrd.file_format) = FF_UNKNOWN; + + amt = sizeof (struct stack_struct) * STACKSIZE; + PRIV (stack) = bfd_alloc (abfd, amt); + if (PRIV (stack) == NULL) + goto error_ret1; + + return TRUE; + + error_ret1: + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = NULL; + return FALSE; +} + +/* Check the format for a file being read. + Return a (bfd_target *) if it's an object file or zero if not. */ + +static const struct bfd_target * +alpha_vms_object_p (bfd *abfd) +{ + PTR tdata_save = abfd->tdata.any; + unsigned int test_len; + unsigned char *buf; + + vms_debug2 ((1, "vms_object_p(%p)\n", abfd)); + + /* Allocate alpha-vms specific data. */ + if (!vms_initialize (abfd)) + goto error_ret; + + if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET)) + goto err_wrong_format; + + /* The first challenge with VMS is to discover the kind of the file. + + Image files (executable or shared images) are stored as a raw + stream of bytes (like on UNIX), but there is no magic number. + + Object files are written with RMS (record management service), ie + each records are preceeded by its length (on a word - 2 bytes), and + padded for word-alignment. That would be simple but when files + are transfered to a UNIX filesystem (using ftp), records are lost. + Only the raw content of the records are transfered. Fortunately, + the Alpha Object file format also store the length of the record + in the records. Is that clear ? */ + + /* Minimum is 6 bytes for objects (2 bytes size, 2 bytes record id, + 2 bytes size repeated) and 12 bytes for images (4 bytes major id, + 4 bytes minor id, 4 bytes length). */ + test_len = 12; + + /* Size the main buffer. */ + buf = (unsigned char *) bfd_malloc (test_len); + if (buf == NULL) + goto error_ret; + PRIV (recrd.buf) = buf; + PRIV (recrd.buf_size) = test_len; + + /* Initialize the record pointer. */ + PRIV (recrd.rec) = buf; + + if (bfd_bread (buf, test_len, abfd) != test_len) + { + bfd_set_error (bfd_error_file_truncated); + goto error_ret; + } + + /* Is it an image? */ + if ((bfd_getl32 (buf) == EIHD__K_MAJORID) + && (bfd_getl32 (buf + 4) == EIHD__K_MINORID)) + { + unsigned int to_read; + unsigned int read_so_far; + unsigned int remaining; + unsigned int eisd_offset, eihs_offset; + + /* Extract the header size. */ + PRIV (recrd.rec_size) = bfd_getl32 (buf + EIHD__L_SIZE); + + /* The header size is 0 for DSF files. */ + if (PRIV (recrd.rec_size) == 0) + PRIV (recrd.rec_size) = sizeof (struct vms_eihd); + + if (PRIV (recrd.rec_size) > PRIV (recrd.buf_size)) + { + buf = bfd_realloc_or_free (buf, PRIV (recrd.rec_size)); + + if (buf == NULL) + { + PRIV (recrd.buf) = NULL; + bfd_set_error (bfd_error_no_memory); + goto error_ret; + } + PRIV (recrd.buf) = buf; + PRIV (recrd.buf_size) = PRIV (recrd.rec_size); + } + + /* Read the remaining record. */ + remaining = PRIV (recrd.rec_size) - test_len; + to_read = MIN (VMS_BLOCK_SIZE - test_len, remaining); + read_so_far = test_len; + + while (remaining > 0) + { + if (bfd_bread (buf + read_so_far, to_read, abfd) != to_read) + { + bfd_set_error (bfd_error_file_truncated); + goto err_wrong_format; + } + + read_so_far += to_read; + remaining -= to_read; + + to_read = MIN (VMS_BLOCK_SIZE, remaining); + } + + /* Reset the record pointer. */ + PRIV (recrd.rec) = buf; + + vms_debug2 ((2, "file type is image\n")); + + if (_bfd_vms_slurp_eihd (abfd, &eisd_offset, &eihs_offset) != TRUE) + goto err_wrong_format; + + if (_bfd_vms_slurp_eisd (abfd, eisd_offset) != TRUE) + goto err_wrong_format; + + /* EIHS is optional. */ + if (eihs_offset != 0 && _bfd_vms_slurp_eihs (abfd, eihs_offset) != TRUE) + goto err_wrong_format; + } + else + { + int type; + + /* Assume it's a module and adjust record pointer if necessary. */ + maybe_adjust_record_pointer_for_object (abfd); + + /* But is it really a module? */ + if (bfd_getl16 (PRIV (recrd.rec)) <= EOBJ__C_MAXRECTYP + && bfd_getl16 (PRIV (recrd.rec) + 2) <= EOBJ__C_MAXRECSIZ) + { + if (vms_get_remaining_object_record (abfd, test_len) <= 0) + goto err_wrong_format; + + vms_debug2 ((2, "file type is module\n")); + + type = bfd_getl16 (PRIV (recrd.rec)); + if (type != EOBJ__C_EMH || _bfd_vms_slurp_ehdr (abfd) != TRUE) + goto err_wrong_format; + + if (_bfd_vms_slurp_object_records (abfd) != TRUE) + goto err_wrong_format; + } + else + goto err_wrong_format; + } + + /* Set arch_info to alpha. */ + + if (! bfd_default_set_arch_mach (abfd, bfd_arch_alpha, 0)) + goto err_wrong_format; + + return abfd->xvec; + + err_wrong_format: + bfd_set_error (bfd_error_wrong_format); + + error_ret: + if (PRIV (recrd.buf)) + free (PRIV (recrd.buf)); + if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL) + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = tdata_save; + return NULL; +} + +/* Image write. */ + +/* Write an EMH/MHD record. */ + +static void +_bfd_vms_write_emh (bfd *abfd) +{ + struct vms_rec_wr *recwr = &PRIV (recwr); + + _bfd_vms_output_alignment (recwr, 2); + + /* EMH. */ + _bfd_vms_output_begin (recwr, EOBJ__C_EMH); + _bfd_vms_output_short (recwr, EMH__C_MHD); + _bfd_vms_output_short (recwr, EOBJ__C_STRLVL); + _bfd_vms_output_long (recwr, 0); + _bfd_vms_output_long (recwr, 0); + _bfd_vms_output_long (recwr, MAX_OUTREC_SIZE); + + /* Create module name from filename. */ + if (bfd_get_filename (abfd) != 0) + { + char *module = vms_get_module_name (bfd_get_filename (abfd), TRUE); + _bfd_vms_output_counted (recwr, module); + free (module); + } + else + _bfd_vms_output_counted (recwr, "NONAME"); + + _bfd_vms_output_counted (recwr, BFD_VERSION_STRING); + _bfd_vms_output_dump (recwr, get_vms_time_string (), EMH_DATE_LENGTH); + _bfd_vms_output_fill (recwr, 0, EMH_DATE_LENGTH); + _bfd_vms_output_end (abfd, recwr); +} + +/* Write an EMH/LMN record. */ + +static void +_bfd_vms_write_lmn (bfd *abfd, const char *name) +{ + char version [64]; + struct vms_rec_wr *recwr = &PRIV (recwr); + unsigned int ver = BFD_VERSION / 10000; + + /* LMN. */ + _bfd_vms_output_begin (recwr, EOBJ__C_EMH); + _bfd_vms_output_short (recwr, EMH__C_LNM); + snprintf (version, sizeof (version), "%s %d.%d.%d", name, + ver / 10000, (ver / 100) % 100, ver % 100); + _bfd_vms_output_dump (recwr, (unsigned char *)version, strlen (version)); + _bfd_vms_output_end (abfd, recwr); +} + + +/* Write eom record for bfd abfd. Return FALSE on error. */ + +static bfd_boolean +_bfd_vms_write_eeom (bfd *abfd) +{ + struct vms_rec_wr *recwr = &PRIV (recwr); + + vms_debug2 ((2, "vms_write_eeom\n")); + + _bfd_vms_output_alignment (recwr, 2); + + _bfd_vms_output_begin (recwr, EOBJ__C_EEOM); + _bfd_vms_output_long (recwr, (unsigned long) (PRIV (vms_linkage_index) >> 1)); + _bfd_vms_output_byte (recwr, 0); /* Completion code. */ + _bfd_vms_output_byte (recwr, 0); /* Fill byte. */ + + if ((abfd->flags & EXEC_P) == 0 + && bfd_get_start_address (abfd) != (bfd_vma)-1) + { + asection *section; + + section = bfd_get_section_by_name (abfd, ".link"); + if (section == 0) + { + bfd_set_error (bfd_error_nonrepresentable_section); + return FALSE; + } + _bfd_vms_output_short (recwr, 0); + _bfd_vms_output_long (recwr, (unsigned long) section->target_index); + _bfd_vms_output_long (recwr, + (unsigned long) bfd_get_start_address (abfd)); + _bfd_vms_output_long (recwr, 0); + } + + _bfd_vms_output_end (abfd, recwr); + return TRUE; +} + +/* This hash routine borrowed from GNU-EMACS, and strengthened + slightly. ERY. */ + +static int +hash_string (const char *ptr) +{ + const unsigned char *p = (unsigned char *) ptr; + const unsigned char *end = p + strlen (ptr); + unsigned char c; + int hash = 0; + + while (p != end) + { + c = *p++; + hash = ((hash << 3) + (hash << 15) + (hash >> 28) + c); + } + return hash; +} + +/* Generate a length-hashed VMS symbol name (limited to maxlen chars). */ + +static char * +_bfd_vms_length_hash_symbol (bfd *abfd, const char *in, int maxlen) +{ + unsigned long result; + int in_len; + char *new_name; + const char *old_name; + int i; + static char outbuf[EOBJ__C_SYMSIZ + 1]; + char *out = outbuf; + +#if VMS_DEBUG + vms_debug (4, "_bfd_vms_length_hash_symbol \"%s\"\n", in); +#endif + + if (maxlen > EOBJ__C_SYMSIZ) + maxlen = EOBJ__C_SYMSIZ; + + /* Save this for later. */ + new_name = out; + + /* We may need to truncate the symbol, save the hash for later. */ + in_len = strlen (in); + + result = (in_len > maxlen) ? hash_string (in) : 0; + + old_name = in; + + /* Do the length checking. */ + if (in_len <= maxlen) + i = in_len; + else + { + if (PRIV (flag_hash_long_names)) + i = maxlen - 9; + else + i = maxlen; + } + + strncpy (out, in, (size_t) i); + in += i; + out += i; + + if ((in_len > maxlen) + && PRIV (flag_hash_long_names)) + sprintf (out, "_%08lx", result); + else + *out = 0; + +#if VMS_DEBUG + vms_debug (4, "--> [%d]\"%s\"\n", (int)strlen (outbuf), outbuf); +#endif + + if (in_len > maxlen + && PRIV (flag_hash_long_names) + && PRIV (flag_show_after_trunc)) + printf (_("Symbol %s replaced by %s\n"), old_name, new_name); + + return outbuf; +} + +static void +vector_grow1 (struct vector_type *vec, size_t elsz) +{ + if (vec->nbr_el + 1 < vec->max_el) + return; + + if (vec->max_el == 0) + { + vec->max_el = 16; + vec->els = bfd_malloc2 (vec->max_el, elsz); + } + else + { + vec->max_el *= 2; + vec->els = bfd_realloc2 (vec->els, vec->max_el, elsz); + } +} + +/* Bump ABFD file position to next block. */ + +static void +alpha_vms_file_position_block (bfd *abfd) +{ + /* Next block. */ + PRIV (file_pos) += VMS_BLOCK_SIZE - 1; + PRIV (file_pos) -= (PRIV (file_pos) % VMS_BLOCK_SIZE); +} + +/* Convert from internal structure SRC to external structure DST. */ + +static void +alpha_vms_swap_eisd_out (struct vms_internal_eisd_map *src, + struct vms_eisd *dst) +{ + bfd_putl32 (src->u.eisd.majorid, dst->majorid); + bfd_putl32 (src->u.eisd.minorid, dst->minorid); + bfd_putl32 (src->u.eisd.eisdsize, dst->eisdsize); + if (src->u.eisd.eisdsize <= EISD__K_LENEND) + return; + bfd_putl32 (src->u.eisd.secsize, dst->secsize); + bfd_putl64 (src->u.eisd.virt_addr, dst->virt_addr); + bfd_putl32 (src->u.eisd.flags, dst->flags); + bfd_putl32 (src->u.eisd.vbn, dst->vbn); + dst->pfc = src->u.eisd.pfc; + dst->matchctl = src->u.eisd.matchctl; + dst->type = src->u.eisd.type; + dst->fill_1 = 0; + if (src->u.eisd.flags & EISD__M_GBL) + { + bfd_putl32 (src->u.gbl_eisd.ident, dst->ident); + memcpy (dst->gblnam, src->u.gbl_eisd.gblnam, + src->u.gbl_eisd.gblnam[0] + 1); + } +} + +/* Append EISD to the list of extra eisd for ABFD. */ + +static void +alpha_vms_append_extra_eisd (bfd *abfd, struct vms_internal_eisd_map *eisd) +{ + eisd->next = NULL; + if (PRIV (gbl_eisd_head) == NULL) + PRIV (gbl_eisd_head) = eisd; + else + PRIV (gbl_eisd_tail)->next = eisd; + PRIV (gbl_eisd_tail) = eisd; +} + +/* Create an EISD for shared image SHRIMG. + Return FALSE in case of error. */ + +static bfd_boolean +alpha_vms_create_eisd_for_shared (bfd *abfd, bfd *shrimg) +{ + struct vms_internal_eisd_map *eisd; + int namlen; + + namlen = strlen (PRIV2 (shrimg, hdr_data.hdr_t_name)); + if (namlen + 5 > EISD__K_GBLNAMLEN) + { + /* Won't fit. */ + return FALSE; + } + + eisd = bfd_alloc (abfd, sizeof (*eisd)); + if (eisd == NULL) + return FALSE; + + /* Fill the fields. */ + eisd->u.gbl_eisd.common.majorid = EISD__K_MAJORID; + eisd->u.gbl_eisd.common.minorid = EISD__K_MINORID; + eisd->u.gbl_eisd.common.eisdsize = (EISD__K_LEN + 4 + namlen + 5 + 3) & ~3; + eisd->u.gbl_eisd.common.secsize = VMS_BLOCK_SIZE; /* Must not be 0. */ + eisd->u.gbl_eisd.common.virt_addr = 0; + eisd->u.gbl_eisd.common.flags = EISD__M_GBL; + eisd->u.gbl_eisd.common.vbn = 0; + eisd->u.gbl_eisd.common.pfc = 0; + eisd->u.gbl_eisd.common.matchctl = PRIV2 (shrimg, matchctl); + eisd->u.gbl_eisd.common.type = EISD__K_SHRPIC; + + eisd->u.gbl_eisd.ident = PRIV2 (shrimg, ident); + eisd->u.gbl_eisd.gblnam[0] = namlen + 4; + memcpy (eisd->u.gbl_eisd.gblnam + 1, PRIV2 (shrimg, hdr_data.hdr_t_name), + namlen); + memcpy (eisd->u.gbl_eisd.gblnam + 1 + namlen, "_001", 4); + + /* Append it to the list. */ + alpha_vms_append_extra_eisd (abfd, eisd); + + return TRUE; +} + +/* Create an EISD for section SEC. + Return FALSE in case of failure. */ + +static bfd_boolean +alpha_vms_create_eisd_for_section (bfd *abfd, asection *sec) +{ + struct vms_internal_eisd_map *eisd; + + /* Only for allocating section. */ + if (!(sec->flags & SEC_ALLOC)) + return TRUE; + + BFD_ASSERT (vms_section_data (sec)->eisd == NULL); + eisd = bfd_alloc (abfd, sizeof (*eisd)); + if (eisd == NULL) + return FALSE; + vms_section_data (sec)->eisd = eisd; + + /* Fill the fields. */ + eisd->u.eisd.majorid = EISD__K_MAJORID; + eisd->u.eisd.minorid = EISD__K_MINORID; + eisd->u.eisd.eisdsize = EISD__K_LEN; + eisd->u.eisd.secsize = + (sec->size + VMS_BLOCK_SIZE - 1) & ~(VMS_BLOCK_SIZE - 1); + eisd->u.eisd.virt_addr = sec->vma; + eisd->u.eisd.flags = 0; + eisd->u.eisd.vbn = 0; /* To be later defined. */ + eisd->u.eisd.pfc = 0; /* Default. */ + eisd->u.eisd.matchctl = EISD__K_MATALL; + eisd->u.eisd.type = EISD__K_NORMAL; + + if (sec->flags & SEC_CODE) + eisd->u.eisd.flags |= EISD__M_EXE; + if (!(sec->flags & SEC_READONLY)) + eisd->u.eisd.flags |= EISD__M_WRT | EISD__M_CRF; + + /* If relocations or fixup will be applied, make this isect writeable. */ + if (sec->flags & SEC_RELOC) + eisd->u.eisd.flags |= EISD__M_WRT | EISD__M_CRF; + + if (!(sec->flags & SEC_LOAD)) + { + eisd->u.eisd.flags |= EISD__M_DZRO; + eisd->u.eisd.flags &= ~EISD__M_CRF; + } + if (sec->flags & SEC_LINKER_CREATED) + { + if (strcmp (sec->name, "$FIXUP$") == 0) + eisd->u.eisd.flags |= EISD__M_FIXUPVEC; + } + + /* Append it to the list. */ + eisd->next = NULL; + if (PRIV (eisd_head) == NULL) + PRIV (eisd_head) = eisd; + else + PRIV (eisd_tail)->next = eisd; + PRIV (eisd_tail) = eisd; + + return TRUE; +} + +/* Layout executable ABFD and write it to the disk. + Return FALSE in case of failure. */ + +static bfd_boolean +alpha_vms_write_exec (bfd *abfd) +{ + struct vms_eihd eihd; + struct vms_eiha *eiha; + struct vms_eihi *eihi; + struct vms_eihs *eihs = NULL; + asection *sec; + struct vms_internal_eisd_map *first_eisd; + struct vms_internal_eisd_map *eisd; + asection *dst; + asection *dmt; + file_ptr gst_filepos = 0; + unsigned int lnkflags = 0; + + /* Build the EIHD. */ + PRIV (file_pos) = EIHD__C_LENGTH; + + memset (&eihd, 0, sizeof (eihd)); + memset (eihd.fill_2, 0xff, sizeof (eihd.fill_2)); + + bfd_putl32 (EIHD__K_MAJORID, eihd.majorid); + bfd_putl32 (EIHD__K_MINORID, eihd.minorid); + + bfd_putl32 (sizeof (eihd), eihd.size); + bfd_putl32 (0, eihd.isdoff); + bfd_putl32 (0, eihd.activoff); + bfd_putl32 (0, eihd.symdbgoff); + bfd_putl32 (0, eihd.imgidoff); + bfd_putl32 (0, eihd.patchoff); + bfd_putl64 (0, eihd.iafva); + bfd_putl32 (0, eihd.version_array_off); + + bfd_putl32 (EIHD__K_EXE, eihd.imgtype); + bfd_putl32 (0, eihd.subtype); + + bfd_putl32 (0, eihd.imgiocnt); + bfd_putl32 (-1, eihd.privreqs); + bfd_putl32 (-1, eihd.privreqs + 4); + + bfd_putl32 ((sizeof (eihd) + VMS_BLOCK_SIZE - 1) / VMS_BLOCK_SIZE, + eihd.hdrblkcnt); + bfd_putl32 (0, eihd.ident); + bfd_putl32 (0, eihd.sysver); + + eihd.matchctl = 0; + bfd_putl32 (0, eihd.symvect_size); + bfd_putl32 (16, eihd.virt_mem_block_size); + bfd_putl32 (0, eihd.ext_fixup_off); + bfd_putl32 (0, eihd.noopt_psect_off); + bfd_putl32 (-1, eihd.alias); + + /* Alloc EIHA. */ + eiha = (struct vms_eiha *)((char *) &eihd + PRIV (file_pos)); + bfd_putl32 (PRIV (file_pos), eihd.activoff); + PRIV (file_pos) += sizeof (struct vms_eiha); + + bfd_putl32 (sizeof (struct vms_eiha), eiha->size); + bfd_putl32 (0, eiha->spare); + bfd_putl64 (PRIV (transfer_address[0]), eiha->tfradr1); + bfd_putl64 (PRIV (transfer_address[1]), eiha->tfradr2); + bfd_putl64 (PRIV (transfer_address[2]), eiha->tfradr3); + bfd_putl64 (PRIV (transfer_address[3]), eiha->tfradr4); + bfd_putl64 (0, eiha->inishr); + + /* Alloc EIHI. */ + eihi = (struct vms_eihi *)((char *) &eihd + PRIV (file_pos)); + bfd_putl32 (PRIV (file_pos), eihd.imgidoff); + PRIV (file_pos) += sizeof (struct vms_eihi); + + bfd_putl32 (EIHI__K_MAJORID, eihi->majorid); + bfd_putl32 (EIHI__K_MINORID, eihi->minorid); + { + char *module; + unsigned int len; + + /* Set module name. */ + module = vms_get_module_name (bfd_get_filename (abfd), TRUE); + len = strlen (module); + if (len > sizeof (eihi->imgnam) - 1) + len = sizeof (eihi->imgnam) - 1; + eihi->imgnam[0] = len; + memcpy (eihi->imgnam + 1, module, len); + free (module); + } + { + unsigned int lo; + unsigned int hi; + + /* Set time. */ + vms_get_time (&hi, &lo); + bfd_putl32 (lo, eihi->linktime + 0); + bfd_putl32 (hi, eihi->linktime + 4); + } + eihi->imgid[0] = 0; + eihi->linkid[0] = 0; + eihi->imgbid[0] = 0; + + /* Alloc EIHS. */ + dst = PRIV (dst_section); + dmt = bfd_get_section_by_name (abfd, "$DMT$"); + if (dst != NULL && dst->size != 0) + { + eihs = (struct vms_eihs *)((char *) &eihd + PRIV (file_pos)); + bfd_putl32 (PRIV (file_pos), eihd.symdbgoff); + PRIV (file_pos) += sizeof (struct vms_eihs); + + bfd_putl32 (EIHS__K_MAJORID, eihs->majorid); + bfd_putl32 (EIHS__K_MINORID, eihs->minorid); + bfd_putl32 (0, eihs->dstvbn); + bfd_putl32 (0, eihs->dstsize); + bfd_putl32 (0, eihs->gstvbn); + bfd_putl32 (0, eihs->gstsize); + bfd_putl32 (0, eihs->dmtvbn); + bfd_putl32 (0, eihs->dmtsize); + } + + /* One EISD per section. */ + for (sec = abfd->sections; sec; sec = sec->next) + { + if (!alpha_vms_create_eisd_for_section (abfd, sec)) + return FALSE; + } + + /* Merge section EIDS which extra ones. */ + if (PRIV (eisd_tail)) + PRIV (eisd_tail)->next = PRIV (gbl_eisd_head); + else + PRIV (eisd_head) = PRIV (gbl_eisd_head); + if (PRIV (gbl_eisd_tail)) + PRIV (eisd_tail) = PRIV (gbl_eisd_tail); + + first_eisd = PRIV (eisd_head); + + /* Add end of eisd. */ + if (first_eisd) + { + eisd = bfd_zalloc (abfd, sizeof (*eisd)); + if (eisd == NULL) + return FALSE; + eisd->u.eisd.majorid = 0; + eisd->u.eisd.minorid = 0; + eisd->u.eisd.eisdsize = 0; + alpha_vms_append_extra_eisd (abfd, eisd); + } + + /* Place EISD in the file. */ + for (eisd = first_eisd; eisd; eisd = eisd->next) + { + file_ptr room = VMS_BLOCK_SIZE - (PRIV (file_pos) % VMS_BLOCK_SIZE); + + /* First block is a little bit special: there is a word at the end. */ + if (PRIV (file_pos) < VMS_BLOCK_SIZE && room > 2) + room -= 2; + if (room < eisd->u.eisd.eisdsize + EISD__K_LENEND) + alpha_vms_file_position_block (abfd); + + eisd->file_pos = PRIV (file_pos); + PRIV (file_pos) += eisd->u.eisd.eisdsize; + + if (eisd->u.eisd.flags & EISD__M_FIXUPVEC) + bfd_putl64 (eisd->u.eisd.virt_addr, eihd.iafva); + } + + if (first_eisd != NULL) + { + bfd_putl32 (first_eisd->file_pos, eihd.isdoff); + /* Real size of end of eisd marker. */ + PRIV (file_pos) += EISD__K_LENEND; + } + + bfd_putl32 (PRIV (file_pos), eihd.size); + bfd_putl32 ((PRIV (file_pos) + VMS_BLOCK_SIZE - 1) / VMS_BLOCK_SIZE, + eihd.hdrblkcnt); + + /* Place sections. */ + for (sec = abfd->sections; sec; sec = sec->next) + { + if (!(sec->flags & SEC_HAS_CONTENTS)) + continue; + + eisd = vms_section_data (sec)->eisd; + + /* Align on a block. */ + alpha_vms_file_position_block (abfd); + sec->filepos = PRIV (file_pos); + + if (eisd != NULL) + eisd->u.eisd.vbn = (sec->filepos / VMS_BLOCK_SIZE) + 1; + + PRIV (file_pos) += sec->size; + } + + /* Update EIHS. */ + if (eihs != NULL && dst != NULL) + { + bfd_putl32 ((dst->filepos / VMS_BLOCK_SIZE) + 1, eihs->dstvbn); + bfd_putl32 (dst->size, eihs->dstsize); + + if (dmt != NULL) + { + lnkflags |= EIHD__M_DBGDMT; + bfd_putl32 ((dmt->filepos / VMS_BLOCK_SIZE) + 1, eihs->dmtvbn); + bfd_putl32 (dmt->size, eihs->dmtsize); + } + if (PRIV (gsd_sym_count) != 0) + { + alpha_vms_file_position_block (abfd); + gst_filepos = PRIV (file_pos); + bfd_putl32 ((gst_filepos / VMS_BLOCK_SIZE) + 1, eihs->gstvbn); + bfd_putl32 ((PRIV (gsd_sym_count) + 4) / 5 + 4, eihs->gstsize); + } + } + + /* Write EISD in hdr. */ + for (eisd = first_eisd; eisd && eisd->file_pos < VMS_BLOCK_SIZE; + eisd = eisd->next) + alpha_vms_swap_eisd_out + (eisd, (struct vms_eisd *)((char *)&eihd + eisd->file_pos)); + + /* Write first block. */ + bfd_putl32 (lnkflags, eihd.lnkflags); + if (bfd_bwrite (&eihd, sizeof (eihd), abfd) != sizeof (eihd)) + return FALSE; + + /* Write remaining eisd. */ + if (eisd != NULL) + { + unsigned char blk[VMS_BLOCK_SIZE]; + struct vms_internal_eisd_map *next_eisd; + + memset (blk, 0xff, sizeof (blk)); + while (eisd != NULL) + { + alpha_vms_swap_eisd_out + (eisd, + (struct vms_eisd *)(blk + (eisd->file_pos % VMS_BLOCK_SIZE))); + + next_eisd = eisd->next; + if (next_eisd == NULL + || (next_eisd->file_pos / VMS_BLOCK_SIZE + != eisd->file_pos / VMS_BLOCK_SIZE)) + { + if (bfd_bwrite (blk, sizeof (blk), abfd) != sizeof (blk)) + return FALSE; + + memset (blk, 0xff, sizeof (blk)); + } + eisd = next_eisd; + } + } + + /* Write sections. */ + for (sec = abfd->sections; sec; sec = sec->next) + { + unsigned char blk[VMS_BLOCK_SIZE]; + bfd_size_type len; + + if (sec->size == 0 || !(sec->flags & SEC_HAS_CONTENTS)) + continue; + if (bfd_bwrite (sec->contents, sec->size, abfd) != sec->size) + return FALSE; + + /* Pad. */ + len = VMS_BLOCK_SIZE - sec->size % VMS_BLOCK_SIZE; + if (len != VMS_BLOCK_SIZE) + { + memset (blk, 0, len); + if (bfd_bwrite (blk, len, abfd) != len) + return FALSE; + } + } + + /* Write GST. */ + if (gst_filepos != 0) + { + struct vms_rec_wr *recwr = &PRIV (recwr); + unsigned int i; + + _bfd_vms_write_emh (abfd); + _bfd_vms_write_lmn (abfd, "GNU LD"); + + /* PSC for the absolute section. */ + _bfd_vms_output_begin (recwr, EOBJ__C_EGSD); + _bfd_vms_output_long (recwr, 0); + _bfd_vms_output_begin_subrec (recwr, EGSD__C_PSC); + _bfd_vms_output_short (recwr, 0); + _bfd_vms_output_short (recwr, EGPS__V_PIC | EGPS__V_LIB | EGPS__V_RD); + _bfd_vms_output_long (recwr, 0); + _bfd_vms_output_counted (recwr, ".$$ABS$$."); + _bfd_vms_output_end_subrec (recwr); + _bfd_vms_output_end (abfd, recwr); + + for (i = 0; i < PRIV (gsd_sym_count); i++) + { + struct vms_symbol_entry *sym = PRIV (syms)[i]; + char *hash; + bfd_vma val; + bfd_vma ep; + + if ((i % 5) == 0) + { + _bfd_vms_output_alignment (recwr, 8); + _bfd_vms_output_begin (recwr, EOBJ__C_EGSD); + _bfd_vms_output_long (recwr, 0); + } + _bfd_vms_output_begin_subrec (recwr, EGSD__C_SYMG); + _bfd_vms_output_short (recwr, 0); /* Data type, alignment. */ + _bfd_vms_output_short (recwr, sym->flags); + + if (sym->code_section) + ep = alpha_vms_get_sym_value (sym->code_section, sym->code_value); + else + { + BFD_ASSERT (sym->code_value == 0); + ep = 0; + } + val = alpha_vms_get_sym_value (sym->section, sym->value); + _bfd_vms_output_quad + (recwr, sym->typ == EGSD__C_SYMG ? sym->symbol_vector : val); + _bfd_vms_output_quad (recwr, ep); + _bfd_vms_output_quad (recwr, val); + _bfd_vms_output_long (recwr, 0); + hash = _bfd_vms_length_hash_symbol (abfd, sym->name, EOBJ__C_SYMSIZ); + _bfd_vms_output_counted (recwr, hash); + _bfd_vms_output_end_subrec (recwr); + if ((i % 5) == 4) + _bfd_vms_output_end (abfd, recwr); + } + if ((i % 5) != 0) + _bfd_vms_output_end (abfd, recwr); + + if (!_bfd_vms_write_eeom (abfd)) + return FALSE; + } + return TRUE; +} + +/* Object write. */ + +/* Write section and symbol directory of bfd abfd. Return FALSE on error. */ + +static bfd_boolean +_bfd_vms_write_egsd (bfd *abfd) +{ + asection *section; + asymbol *symbol; + unsigned int symnum; + const char *sname; + flagword new_flags, old_flags; + int abs_section_index = -1; + unsigned int target_index = 0; + struct vms_rec_wr *recwr = &PRIV (recwr); + + vms_debug2 ((2, "vms_write_egsd\n")); + + /* Egsd is quadword aligned. */ + _bfd_vms_output_alignment (recwr, 8); + + _bfd_vms_output_begin (recwr, EOBJ__C_EGSD); + _bfd_vms_output_long (recwr, 0); + + /* Number sections. */ + for (section = abfd->sections; section != NULL; section = section->next) + { + if (section->flags & SEC_DEBUGGING) + continue; + if (!strcmp (section->name, ".vmsdebug")) + { + section->flags |= SEC_DEBUGGING; + continue; + } + section->target_index = target_index++; + } + + for (section = abfd->sections; section != NULL; section = section->next) + { + vms_debug2 ((3, "Section #%d %s, %d bytes\n", + section->target_index, section->name, (int)section->size)); + + /* Don't write out the VMS debug info section since it is in the + ETBT and EDBG sections in etir. */ + if (section->flags & SEC_DEBUGGING) + continue; + + /* 13 bytes egsd, max 31 chars name -> should be 44 bytes. */ + if (_bfd_vms_output_check (recwr, 64) < 0) + { + _bfd_vms_output_end (abfd, recwr); + _bfd_vms_output_begin (recwr, EOBJ__C_EGSD); + _bfd_vms_output_long (recwr, 0); + } + + /* Don't know if this is necessary for the linker but for now it keeps + vms_slurp_gsd happy. */ + sname = section->name; + if (*sname == '.') + { + /* Remove leading dot. */ + sname++; + if ((*sname == 't') && (strcmp (sname, "text") == 0)) + sname = EVAX_CODE_NAME; + else if ((*sname == 'd') && (strcmp (sname, "data") == 0)) + sname = EVAX_DATA_NAME; + else if ((*sname == 'b') && (strcmp (sname, "bss") == 0)) + sname = EVAX_BSS_NAME; + else if ((*sname == 'l') && (strcmp (sname, "link") == 0)) + sname = EVAX_LINK_NAME; + else if ((*sname == 'r') && (strcmp (sname, "rdata") == 0)) + sname = EVAX_READONLY_NAME; + else if ((*sname == 'l') && (strcmp (sname, "literal") == 0)) + sname = EVAX_LITERAL_NAME; + else if ((*sname == 'l') && (strcmp (sname, "literals") == 0)) + sname = EVAX_LITERALS_NAME; + else if ((*sname == 'c') && (strcmp (sname, "comm") == 0)) + sname = EVAX_COMMON_NAME; + else if ((*sname == 'l') && (strcmp (sname, "lcomm") == 0)) + sname = EVAX_LOCAL_NAME; + } + else + sname = _bfd_vms_length_hash_symbol (abfd, sname, EOBJ__C_SECSIZ); + + if (bfd_is_com_section (section)) + new_flags = (EGPS__V_OVR | EGPS__V_REL | EGPS__V_GBL | EGPS__V_RD + | EGPS__V_WRT | EGPS__V_NOMOD | EGPS__V_COM); + else + new_flags = vms_esecflag_by_name (evax_section_flags, sname, + section->size > 0); + + /* Modify them as directed. */ + if (section->flags & SEC_READONLY) + new_flags &= ~EGPS__V_WRT; + + new_flags &= ~vms_section_data (section)->no_flags; + new_flags |= vms_section_data (section)->flags; + + vms_debug2 ((3, "sec flags %x\n", section->flags)); + vms_debug2 ((3, "new_flags %x, _raw_size %lu\n", + new_flags, (unsigned long)section->size)); + + _bfd_vms_output_begin_subrec (recwr, EGSD__C_PSC); + _bfd_vms_output_short (recwr, section->alignment_power & 0xff); + _bfd_vms_output_short (recwr, new_flags); + _bfd_vms_output_long (recwr, (unsigned long) section->size); + _bfd_vms_output_counted (recwr, sname); + _bfd_vms_output_end_subrec (recwr); + + /* If the section is an obsolute one, remind its index as it will be + used later for absolute symbols. */ + if ((new_flags & EGPS__V_REL) == 0 && abs_section_index < 0) + abs_section_index = section->target_index; + } + + /* Output symbols. */ + vms_debug2 ((3, "%d symbols found\n", abfd->symcount)); + + bfd_set_start_address (abfd, (bfd_vma) -1); + + for (symnum = 0; symnum < abfd->symcount; symnum++) + { + char *hash; + + symbol = abfd->outsymbols[symnum]; + old_flags = symbol->flags; + + /* Work-around a missing feature: consider __main as the main entry + point. */ + if (*(symbol->name) == '_') + { + if (strcmp (symbol->name, "__main") == 0) + bfd_set_start_address (abfd, (bfd_vma)symbol->value); + } + + /* Only put in the GSD the global and the undefined symbols. */ + if (old_flags & BSF_FILE) + continue; + + if ((old_flags & BSF_GLOBAL) == 0 && !bfd_is_und_section (symbol->section)) + { + /* If the LIB$INITIIALIZE section is present, add a reference to + LIB$INITIALIZE symbol. FIXME: this should be done explicitely + in the assembly file. */ + if (!((old_flags & BSF_SECTION_SYM) != 0 + && strcmp (symbol->section->name, "LIB$INITIALIZE") == 0)) + continue; + } + + /* 13 bytes egsd, max 64 chars name -> should be 77 bytes. Add 16 more + bytes for a possible ABS section. */ + if (_bfd_vms_output_check (recwr, 80 + 16) < 0) + { + _bfd_vms_output_end (abfd, recwr); + _bfd_vms_output_begin (recwr, EOBJ__C_EGSD); + _bfd_vms_output_long (recwr, 0); + } + + if ((old_flags & BSF_GLOBAL) != 0 + && bfd_is_abs_section (symbol->section) + && abs_section_index <= 0) + { + /* Create an absolute section if none was defined. It is highly + unlikely that the name $ABS$ clashes with a user defined + non-absolute section name. */ + _bfd_vms_output_begin_subrec (recwr, EGSD__C_PSC); + _bfd_vms_output_short (recwr, 4); + _bfd_vms_output_short (recwr, EGPS__V_SHR); + _bfd_vms_output_long (recwr, 0); + _bfd_vms_output_counted (recwr, "$ABS$"); + _bfd_vms_output_end_subrec (recwr); + + abs_section_index = target_index++; + } + + _bfd_vms_output_begin_subrec (recwr, EGSD__C_SYM); + + /* Data type, alignment. */ + _bfd_vms_output_short (recwr, 0); + + new_flags = 0; + + if (old_flags & BSF_WEAK) + new_flags |= EGSY__V_WEAK; + if (bfd_is_com_section (symbol->section)) /* .comm */ + new_flags |= (EGSY__V_WEAK | EGSY__V_COMM); + + if (old_flags & BSF_FUNCTION) + { + new_flags |= EGSY__V_NORM; + new_flags |= EGSY__V_REL; + } + if (old_flags & BSF_GLOBAL) + { + new_flags |= EGSY__V_DEF; + if (!bfd_is_abs_section (symbol->section)) + new_flags |= EGSY__V_REL; + } + _bfd_vms_output_short (recwr, new_flags); + + if (old_flags & BSF_GLOBAL) + { + /* Symbol definition. */ + bfd_vma code_address = 0; + unsigned long ca_psindx = 0; + unsigned long psindx; + + if ((old_flags & BSF_FUNCTION) && symbol->udata.p != NULL) + { + asymbol *sym; + + sym = + ((struct evax_private_udata_struct *)symbol->udata.p)->enbsym; + code_address = sym->value; + ca_psindx = sym->section->target_index; + } + if (bfd_is_abs_section (symbol->section)) + psindx = abs_section_index; + else + psindx = symbol->section->target_index; + + _bfd_vms_output_quad (recwr, symbol->value); + _bfd_vms_output_quad (recwr, code_address); + _bfd_vms_output_long (recwr, ca_psindx); + _bfd_vms_output_long (recwr, psindx); + } + hash = _bfd_vms_length_hash_symbol (abfd, symbol->name, EOBJ__C_SYMSIZ); + _bfd_vms_output_counted (recwr, hash); + + _bfd_vms_output_end_subrec (recwr); + } + + _bfd_vms_output_alignment (recwr, 8); + _bfd_vms_output_end (abfd, recwr); + + return TRUE; +} + +/* Write object header for bfd abfd. Return FALSE on error. */ + +static bfd_boolean +_bfd_vms_write_ehdr (bfd *abfd) +{ + asymbol *symbol; + unsigned int symnum; + int had_case = 0; + int had_file = 0; + struct vms_rec_wr *recwr = &PRIV (recwr); + + vms_debug2 ((2, "vms_write_ehdr (%p)\n", abfd)); + + _bfd_vms_output_alignment (recwr, 2); + + _bfd_vms_write_emh (abfd); + _bfd_vms_write_lmn (abfd, "GNU AS"); + + /* SRC. */ + _bfd_vms_output_begin (recwr, EOBJ__C_EMH); + _bfd_vms_output_short (recwr, EMH__C_SRC); + + for (symnum = 0; symnum < abfd->symcount; symnum++) + { + symbol = abfd->outsymbols[symnum]; + + if (symbol->flags & BSF_FILE) + { + if (CONST_STRNEQ ((char *)symbol->name, "name[6] - '0'; + PRIV (flag_show_after_trunc) = symbol->name[7] - '0'; + + if (had_file) + break; + had_case = 1; + continue; + } + + _bfd_vms_output_dump (recwr, (unsigned char *) symbol->name, + (int) strlen (symbol->name)); + if (had_case) + break; + had_file = 1; + } + } + + if (symnum == abfd->symcount) + _bfd_vms_output_dump (recwr, (unsigned char *) STRING_COMMA_LEN ("noname")); + + _bfd_vms_output_end (abfd, recwr); + + /* TTL. */ + _bfd_vms_output_begin (recwr, EOBJ__C_EMH); + _bfd_vms_output_short (recwr, EMH__C_TTL); + _bfd_vms_output_dump (recwr, (unsigned char *) STRING_COMMA_LEN ("TTL")); + _bfd_vms_output_end (abfd, recwr); + + /* CPR. */ + _bfd_vms_output_begin (recwr, EOBJ__C_EMH); + _bfd_vms_output_short (recwr, EMH__C_CPR); + _bfd_vms_output_dump (recwr, + (unsigned char *)"GNU BFD ported by Klaus Kämpf 1994-1996", + 39); + _bfd_vms_output_end (abfd, recwr); + + return TRUE; +} + +/* Part 4.6, relocations. */ + + +/* WRITE ETIR SECTION + + This is still under construction and therefore not documented. */ + +/* Close the etir/etbt record. */ + +static void +end_etir_record (bfd * abfd) +{ + struct vms_rec_wr *recwr = &PRIV (recwr); + + _bfd_vms_output_end (abfd, recwr); +} + +static void +start_etir_or_etbt_record (bfd *abfd, asection *section, bfd_vma offset) +{ + struct vms_rec_wr *recwr = &PRIV (recwr); + + if (section->flags & SEC_DEBUGGING) + { + _bfd_vms_output_begin (recwr, EOBJ__C_ETBT); + + if (offset == 0) + { + /* Push start offset. */ + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_LW); + _bfd_vms_output_long (recwr, (unsigned long) 0); + _bfd_vms_output_end_subrec (recwr); + + /* Set location. */ + _bfd_vms_output_begin_subrec (recwr, ETIR__C_CTL_DFLOC); + _bfd_vms_output_end_subrec (recwr); + } + } + else + { + _bfd_vms_output_begin (recwr, EOBJ__C_ETIR); + + if (offset == 0) + { + /* Push start offset. */ + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_PQ); + _bfd_vms_output_long (recwr, (unsigned long) section->target_index); + _bfd_vms_output_quad (recwr, offset); + _bfd_vms_output_end_subrec (recwr); + + /* Start = pop (). */ + _bfd_vms_output_begin_subrec (recwr, ETIR__C_CTL_SETRB); + _bfd_vms_output_end_subrec (recwr); + } + } +} + +/* Output a STO_IMM command for SSIZE bytes of data from CPR at virtual + address VADDR in section specified by SEC_INDEX and NAME. */ + +static void +sto_imm (bfd *abfd, asection *section, + bfd_size_type ssize, unsigned char *cptr, bfd_vma vaddr) +{ + bfd_size_type size; + struct vms_rec_wr *recwr = &PRIV (recwr); + +#if VMS_DEBUG + _bfd_vms_debug (8, "sto_imm %d bytes\n", (int) ssize); + _bfd_hexdump (9, cptr, (int) ssize, (int) vaddr); +#endif + + while (ssize > 0) + { + /* Try all the rest. */ + size = ssize; + + if (_bfd_vms_output_check (recwr, size) < 0) + { + /* Doesn't fit, split ! */ + end_etir_record (abfd); + + start_etir_or_etbt_record (abfd, section, vaddr); + + size = _bfd_vms_output_check (recwr, 0); /* get max size */ + if (size > ssize) /* more than what's left ? */ + size = ssize; + } + + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_IMM); + _bfd_vms_output_long (recwr, (unsigned long) (size)); + _bfd_vms_output_dump (recwr, cptr, size); + _bfd_vms_output_end_subrec (recwr); + +#if VMS_DEBUG + _bfd_vms_debug (10, "dumped %d bytes\n", (int) size); + _bfd_hexdump (10, cptr, (int) size, (int) vaddr); +#endif + + vaddr += size; + cptr += size; + ssize -= size; + } +} + +static void +etir_output_check (bfd *abfd, asection *section, bfd_vma vaddr, int checklen) +{ + if (_bfd_vms_output_check (&PRIV (recwr), checklen) < 0) + { + /* Not enough room in this record. Close it and open a new one. */ + end_etir_record (abfd); + start_etir_or_etbt_record (abfd, section, vaddr); + } +} + +/* Return whether RELOC must be deferred till the end. */ + +static bfd_boolean +defer_reloc_p (arelent *reloc) +{ + switch (reloc->howto->type) + { + case ALPHA_R_NOP: + case ALPHA_R_LDA: + case ALPHA_R_BSR: + case ALPHA_R_BOH: + return TRUE; + + default: + return FALSE; + } +} + +/* Write section contents for bfd abfd. Return FALSE on error. */ + +static bfd_boolean +_bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED) +{ + asection *section; + struct vms_rec_wr *recwr = &PRIV (recwr); + + vms_debug2 ((2, "vms_write_tir (%p, %d)\n", abfd, objtype)); + + _bfd_vms_output_alignment (recwr, 4); + + PRIV (vms_linkage_index) = 1; + + for (section = abfd->sections; section; section = section->next) + { + vms_debug2 ((4, "writing %d. section '%s' (%d bytes)\n", + section->target_index, section->name, (int) (section->size))); + + if (!(section->flags & SEC_HAS_CONTENTS) + || bfd_is_com_section (section)) + continue; + + if (!section->contents) + { + bfd_set_error (bfd_error_no_contents); + return FALSE; + } + + start_etir_or_etbt_record (abfd, section, 0); + + if (section->flags & SEC_RELOC) + { + bfd_vma curr_addr = 0; + unsigned char *curr_data = section->contents; + bfd_size_type size; + int pass2_needed = 0; + int pass2_in_progress = 0; + unsigned int irel; + + if (section->reloc_count == 0) + (*_bfd_error_handler) + (_("SEC_RELOC with no relocs in section %s"), section->name); + +#if VMS_DEBUG + else + { + int i = section->reloc_count; + arelent **rptr = section->orelocation; + _bfd_vms_debug (4, "%d relocations:\n", i); + while (i-- > 0) + { + _bfd_vms_debug (4, "sym %s in sec %s, value %08lx, " + "addr %08lx, off %08lx, len %d: %s\n", + (*(*rptr)->sym_ptr_ptr)->name, + (*(*rptr)->sym_ptr_ptr)->section->name, + (long) (*(*rptr)->sym_ptr_ptr)->value, + (unsigned long)(*rptr)->address, + (unsigned long)(*rptr)->addend, + bfd_get_reloc_size ((*rptr)->howto), + ( *rptr)->howto->name); + rptr++; + } + } +#endif + + new_pass: + for (irel = 0; irel < section->reloc_count; irel++) + { + struct evax_private_udata_struct *udata; + arelent *rptr = section->orelocation [irel]; + bfd_vma addr = rptr->address; + asymbol *sym = *rptr->sym_ptr_ptr; + asection *sec = sym->section; + bfd_boolean defer = defer_reloc_p (rptr); + unsigned int slen; + char *hash; + + if (pass2_in_progress) + { + /* Non-deferred relocs have already been output. */ + if (!defer) + continue; + } + else + { + /* Deferred relocs must be output at the very end. */ + if (defer) + { + pass2_needed = 1; + continue; + } + + /* Regular relocs are intertwined with binary data. */ + if (curr_addr > addr) + (*_bfd_error_handler) (_("Size error in section %s"), + section->name); + size = addr - curr_addr; + sto_imm (abfd, section, size, curr_data, curr_addr); + curr_data += size; + curr_addr += size; + } + + size = bfd_get_reloc_size (rptr->howto); + + switch (rptr->howto->type) + { + case ALPHA_R_IGNORE: + break; + + case ALPHA_R_REFLONG: + if (bfd_is_und_section (sym->section)) + { + bfd_vma addend = rptr->addend; + slen = strlen ((char *) sym->name); + hash = _bfd_vms_length_hash_symbol + (abfd, sym->name, EOBJ__C_SYMSIZ); + etir_output_check (abfd, section, curr_addr, slen); + if (addend) + { + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_GBL); + _bfd_vms_output_counted (recwr, hash); + _bfd_vms_output_end_subrec (recwr); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_LW); + _bfd_vms_output_long (recwr, (unsigned long) addend); + _bfd_vms_output_end_subrec (recwr); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_OPR_ADD); + _bfd_vms_output_end_subrec (recwr); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_LW); + _bfd_vms_output_end_subrec (recwr); + } + else + { + _bfd_vms_output_begin_subrec + (recwr, ETIR__C_STO_GBL_LW); + _bfd_vms_output_counted (recwr, hash); + _bfd_vms_output_end_subrec (recwr); + } + } + else if (bfd_is_abs_section (sym->section)) + { + etir_output_check (abfd, section, curr_addr, 16); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_LW); + _bfd_vms_output_long (recwr, (unsigned long) sym->value); + _bfd_vms_output_end_subrec (recwr); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_LW); + _bfd_vms_output_end_subrec (recwr); + } + else + { + etir_output_check (abfd, section, curr_addr, 32); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_PQ); + _bfd_vms_output_long (recwr, + (unsigned long) sec->target_index); + _bfd_vms_output_quad (recwr, rptr->addend + sym->value); + _bfd_vms_output_end_subrec (recwr); + /* ??? Table B-8 of the OpenVMS Linker Utilily Manual + says that we should have a ETIR__C_STO_OFF here. + But the relocation would not be BFD_RELOC_32 then. + This case is very likely unreachable. */ + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_LW); + _bfd_vms_output_end_subrec (recwr); + } + break; + + case ALPHA_R_REFQUAD: + if (bfd_is_und_section (sym->section)) + { + bfd_vma addend = rptr->addend; + slen = strlen ((char *) sym->name); + hash = _bfd_vms_length_hash_symbol + (abfd, sym->name, EOBJ__C_SYMSIZ); + etir_output_check (abfd, section, curr_addr, slen); + if (addend) + { + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_GBL); + _bfd_vms_output_counted (recwr, hash); + _bfd_vms_output_end_subrec (recwr); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_QW); + _bfd_vms_output_quad (recwr, addend); + _bfd_vms_output_end_subrec (recwr); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_OPR_ADD); + _bfd_vms_output_end_subrec (recwr); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_QW); + _bfd_vms_output_end_subrec (recwr); + } + else + { + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_GBL); + _bfd_vms_output_counted (recwr, hash); + _bfd_vms_output_end_subrec (recwr); + } + } + else if (bfd_is_abs_section (sym->section)) + { + etir_output_check (abfd, section, curr_addr, 16); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_QW); + _bfd_vms_output_quad (recwr, sym->value); + _bfd_vms_output_end_subrec (recwr); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_QW); + _bfd_vms_output_end_subrec (recwr); + } + else + { + etir_output_check (abfd, section, curr_addr, 32); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_PQ); + _bfd_vms_output_long (recwr, + (unsigned long) sec->target_index); + _bfd_vms_output_quad (recwr, rptr->addend + sym->value); + _bfd_vms_output_end_subrec (recwr); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_OFF); + _bfd_vms_output_end_subrec (recwr); + } + break; + + case ALPHA_R_HINT: + sto_imm (abfd, section, size, curr_data, curr_addr); + break; + + case ALPHA_R_LINKAGE: + etir_output_check (abfd, section, curr_addr, 64); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STC_LP_PSB); + _bfd_vms_output_long + (recwr, (unsigned long) PRIV (vms_linkage_index)); + PRIV (vms_linkage_index) += 2; + hash = _bfd_vms_length_hash_symbol + (abfd, sym->name, EOBJ__C_SYMSIZ); + _bfd_vms_output_counted (recwr, hash); + _bfd_vms_output_byte (recwr, 0); + _bfd_vms_output_end_subrec (recwr); + break; + + case ALPHA_R_CODEADDR: + slen = strlen ((char *) sym->name); + hash = _bfd_vms_length_hash_symbol + (abfd, sym->name, EOBJ__C_SYMSIZ); + etir_output_check (abfd, section, curr_addr, slen); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_CA); + _bfd_vms_output_counted (recwr, hash); + _bfd_vms_output_end_subrec (recwr); + break; + + case ALPHA_R_NOP: + udata + = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr; + etir_output_check (abfd, section, curr_addr, + 32 + 1 + strlen (udata->origname)); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STC_NOP_GBL); + _bfd_vms_output_long (recwr, (unsigned long) udata->lkindex); + _bfd_vms_output_long + (recwr, + (unsigned long) udata->enbsym->section->target_index); + _bfd_vms_output_quad (recwr, rptr->address); + _bfd_vms_output_long (recwr, (unsigned long) 0x47ff041f); + _bfd_vms_output_long + (recwr, + (unsigned long) udata->enbsym->section->target_index); + _bfd_vms_output_quad (recwr, rptr->addend); + _bfd_vms_output_counted + (recwr, _bfd_vms_length_hash_symbol + (abfd, udata->origname, EOBJ__C_SYMSIZ)); + _bfd_vms_output_end_subrec (recwr); + break; + + case ALPHA_R_BSR: + (*_bfd_error_handler) (_("Spurious ALPHA_R_BSR reloc")); + break; + + case ALPHA_R_LDA: + udata + = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr; + etir_output_check (abfd, section, curr_addr, + 32 + 1 + strlen (udata->origname)); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STC_LDA_GBL); + _bfd_vms_output_long + (recwr, (unsigned long) udata->lkindex + 1); + _bfd_vms_output_long + (recwr, + (unsigned long) udata->enbsym->section->target_index); + _bfd_vms_output_quad (recwr, rptr->address); + _bfd_vms_output_long (recwr, (unsigned long) 0x237B0000); + _bfd_vms_output_long + (recwr, (unsigned long) udata->bsym->section->target_index); + _bfd_vms_output_quad (recwr, rptr->addend); + _bfd_vms_output_counted + (recwr, _bfd_vms_length_hash_symbol + (abfd, udata->origname, EOBJ__C_SYMSIZ)); + _bfd_vms_output_end_subrec (recwr); + break; + + case ALPHA_R_BOH: + udata + = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr; + etir_output_check (abfd, section, curr_addr, + 32 + 1 + strlen (udata->origname)); + _bfd_vms_output_begin_subrec (recwr, ETIR__C_STC_BOH_GBL); + _bfd_vms_output_long (recwr, (unsigned long) udata->lkindex); + _bfd_vms_output_long + (recwr, + (unsigned long) udata->enbsym->section->target_index); + _bfd_vms_output_quad (recwr, rptr->address); + _bfd_vms_output_long (recwr, (unsigned long) 0xD3400000); + _bfd_vms_output_long + (recwr, + (unsigned long) udata->enbsym->section->target_index); + _bfd_vms_output_quad (recwr, rptr->addend); + _bfd_vms_output_counted + (recwr, _bfd_vms_length_hash_symbol + (abfd, udata->origname, EOBJ__C_SYMSIZ)); + _bfd_vms_output_end_subrec (recwr); + break; + + default: + (*_bfd_error_handler) (_("Unhandled relocation %s"), + rptr->howto->name); + break; + } + + curr_data += size; + curr_addr += size; + } /* End of relocs loop. */ + + if (!pass2_in_progress) + { + /* Output rest of section. */ + if (curr_addr > section->size) + (*_bfd_error_handler) (_("Size error in section %s"), + section->name); + size = section->size - curr_addr; + sto_imm (abfd, section, size, curr_data, curr_addr); + curr_data += size; + curr_addr += size; + + if (pass2_needed) + { + pass2_in_progress = 1; + goto new_pass; + } + } + } + + else /* (section->flags & SEC_RELOC) */ + sto_imm (abfd, section, section->size, section->contents, 0); + + end_etir_record (abfd); + } + + _bfd_vms_output_alignment (recwr, 2); + return TRUE; +} + +/* Write cached information into a file being written, at bfd_close. */ + +static bfd_boolean +alpha_vms_write_object_contents (bfd *abfd) +{ + vms_debug2 ((1, "vms_write_object_contents (%p)\n", abfd)); + + if (abfd->flags & (EXEC_P | DYNAMIC)) + { + return alpha_vms_write_exec (abfd); + } + else + { + if (abfd->section_count > 0) /* we have sections */ + { + if (_bfd_vms_write_ehdr (abfd) != TRUE) + return FALSE; + if (_bfd_vms_write_egsd (abfd) != TRUE) + return FALSE; + if (_bfd_vms_write_etir (abfd, EOBJ__C_ETIR) != TRUE) + return FALSE; + if (_bfd_vms_write_eeom (abfd) != TRUE) + return FALSE; + } + } + return TRUE; +} + +/* Debug stuff: nearest line. */ + +#define SET_MODULE_PARSED(m) \ + do { if ((m)->name == NULL) (m)->name = ""; } while (0) +#define IS_MODULE_PARSED(m) ((m)->name != NULL) + +/* Build a new module for the specified BFD. */ + +static struct module * +new_module (bfd *abfd) +{ + struct module *module + = (struct module *) bfd_zalloc (abfd, sizeof (struct module)); + module->file_table_count = 16; /* Arbitrary. */ + module->file_table + = bfd_malloc (module->file_table_count * sizeof (struct fileinfo)); + return module; +} + +/* Parse debug info for a module and internalize it. */ + +static void +parse_module (bfd *abfd, struct module *module, unsigned char *ptr, + int length) +{ + unsigned char *maxptr = ptr + length; + unsigned char *src_ptr, *pcl_ptr; + unsigned int prev_linum = 0, curr_linenum = 0; + bfd_vma prev_pc = 0, curr_pc = 0; + struct srecinfo *curr_srec, *srec; + struct lineinfo *curr_line, *line; + struct funcinfo *funcinfo; + + /* Initialize tables with zero element. */ + curr_srec = (struct srecinfo *) bfd_zalloc (abfd, sizeof (struct srecinfo)); + module->srec_table = curr_srec; + + curr_line = (struct lineinfo *) bfd_zalloc (abfd, sizeof (struct lineinfo)); + module->line_table = curr_line; + + while (length == -1 || ptr < maxptr) + { + /* The first byte is not counted in the recorded length. */ + int rec_length = bfd_getl16 (ptr) + 1; + int rec_type = bfd_getl16 (ptr + 2); + + vms_debug2 ((2, "DST record: leng %d, type %d\n", rec_length, rec_type)); + + if (length == -1 && rec_type == DST__K_MODEND) + break; + + switch (rec_type) + { + case DST__K_MODBEG: + module->name + = _bfd_vms_save_counted_string (ptr + DST_S_B_MODBEG_NAME); + + curr_pc = 0; + prev_pc = 0; + curr_linenum = 0; + prev_linum = 0; + + vms_debug2 ((3, "module: %s\n", module->name)); + break; + + case DST__K_MODEND: + break; + + case DST__K_RTNBEG: + funcinfo = (struct funcinfo *) + bfd_zalloc (abfd, sizeof (struct funcinfo)); + funcinfo->name + = _bfd_vms_save_counted_string (ptr + DST_S_B_RTNBEG_NAME); + funcinfo->low = bfd_getl32 (ptr + DST_S_L_RTNBEG_ADDRESS); + funcinfo->next = module->func_table; + module->func_table = funcinfo; + + vms_debug2 ((3, "routine: %s at 0x%lx\n", + funcinfo->name, (unsigned long) funcinfo->low)); + break; + + case DST__K_RTNEND: + module->func_table->high = module->func_table->low + + bfd_getl32 (ptr + DST_S_L_RTNEND_SIZE) - 1; + + if (module->func_table->high > module->high) + module->high = module->func_table->high; + + vms_debug2 ((3, "end routine\n")); + break; + + case DST__K_PROLOG: + vms_debug2 ((3, "prologue\n")); + break; + + case DST__K_EPILOG: + vms_debug2 ((3, "epilog\n")); + break; + + case DST__K_BLKBEG: + vms_debug2 ((3, "block\n")); + break; + + case DST__K_BLKEND: + vms_debug2 ((3, "end block\n")); + break; + + case DST__K_SOURCE: + src_ptr = ptr + DST_S_C_SOURCE_HEADER_SIZE; + + vms_debug2 ((3, "source info\n")); + + while (src_ptr < ptr + rec_length) + { + int cmd = src_ptr[0], cmd_length, data; + + switch (cmd) + { + case DST__K_SRC_DECLFILE: + { + unsigned int fileid + = bfd_getl16 (src_ptr + DST_S_W_SRC_DF_FILEID); + char *filename + = _bfd_vms_save_counted_string (src_ptr + + DST_S_B_SRC_DF_FILENAME); + + while (fileid >= module->file_table_count) + { + module->file_table_count *= 2; + module->file_table + = bfd_realloc (module->file_table, + module->file_table_count + * sizeof (struct fileinfo)); + } + + module->file_table [fileid].name = filename; + module->file_table [fileid].srec = 1; + cmd_length = src_ptr[DST_S_B_SRC_DF_LENGTH] + 2; + vms_debug2 ((4, "DST_S_C_SRC_DECLFILE: %d, %s\n", + fileid, module->file_table [fileid].name)); + } + break; + + case DST__K_SRC_DEFLINES_B: + /* Perform the association and set the next higher index + to the limit. */ + data = src_ptr[DST_S_B_SRC_UNSBYTE]; + srec = (struct srecinfo *) + bfd_zalloc (abfd, sizeof (struct srecinfo)); + srec->line = curr_srec->line + data; + srec->srec = curr_srec->srec + data; + srec->sfile = curr_srec->sfile; + curr_srec->next = srec; + curr_srec = srec; + cmd_length = 2; + vms_debug2 ((4, "DST_S_C_SRC_DEFLINES_B: %d\n", data)); + break; + + case DST__K_SRC_DEFLINES_W: + /* Perform the association and set the next higher index + to the limit. */ + data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD); + srec = (struct srecinfo *) + bfd_zalloc (abfd, sizeof (struct srecinfo)); + srec->line = curr_srec->line + data; + srec->srec = curr_srec->srec + data, + srec->sfile = curr_srec->sfile; + curr_srec->next = srec; + curr_srec = srec; + cmd_length = 3; + vms_debug2 ((4, "DST_S_C_SRC_DEFLINES_W: %d\n", data)); + break; + + case DST__K_SRC_INCRLNUM_B: + data = src_ptr[DST_S_B_SRC_UNSBYTE]; + curr_srec->line += data; + cmd_length = 2; + vms_debug2 ((4, "DST_S_C_SRC_INCRLNUM_B: %d\n", data)); + break; + + case DST__K_SRC_SETFILE: + data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD); + curr_srec->sfile = data; + curr_srec->srec = module->file_table[data].srec; + cmd_length = 3; + vms_debug2 ((4, "DST_S_C_SRC_SETFILE: %d\n", data)); + break; + + case DST__K_SRC_SETLNUM_L: + data = bfd_getl32 (src_ptr + DST_S_L_SRC_UNSLONG); + curr_srec->line = data; + cmd_length = 5; + vms_debug2 ((4, "DST_S_C_SRC_SETLNUM_L: %d\n", data)); + break; + + case DST__K_SRC_SETLNUM_W: + data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD); + curr_srec->line = data; + cmd_length = 3; + vms_debug2 ((4, "DST_S_C_SRC_SETLNUM_W: %d\n", data)); + break; + + case DST__K_SRC_SETREC_L: + data = bfd_getl32 (src_ptr + DST_S_L_SRC_UNSLONG); + curr_srec->srec = data; + module->file_table[curr_srec->sfile].srec = data; + cmd_length = 5; + vms_debug2 ((4, "DST_S_C_SRC_SETREC_L: %d\n", data)); + break; + + case DST__K_SRC_SETREC_W: + data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD); + curr_srec->srec = data; + module->file_table[curr_srec->sfile].srec = data; + cmd_length = 3; + vms_debug2 ((4, "DST_S_C_SRC_SETREC_W: %d\n", data)); + break; + + case DST__K_SRC_FORMFEED: + cmd_length = 1; + vms_debug2 ((4, "DST_S_C_SRC_FORMFEED\n")); + break; + + default: + (*_bfd_error_handler) (_("unknown source command %d"), + cmd); + cmd_length = 2; + break; + } + + src_ptr += cmd_length; + } + break; + + case DST__K_LINE_NUM: + pcl_ptr = ptr + DST_S_C_LINE_NUM_HEADER_SIZE; + + vms_debug2 ((3, "line info\n")); + + while (pcl_ptr < ptr + rec_length) + { + /* The command byte is signed so we must sign-extend it. */ + int cmd = ((signed char *)pcl_ptr)[0], cmd_length, data; + + switch (cmd) + { + case DST__K_DELTA_PC_W: + data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD); + curr_pc += data; + curr_linenum += 1; + cmd_length = 3; + vms_debug2 ((4, "DST__K_DELTA_PC_W: %d\n", data)); + break; + + case DST__K_DELTA_PC_L: + data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG); + curr_pc += data; + curr_linenum += 1; + cmd_length = 5; + vms_debug2 ((4, "DST__K_DELTA_PC_L: %d\n", data)); + break; + + case DST__K_INCR_LINUM: + data = pcl_ptr[DST_S_B_PCLINE_UNSBYTE]; + curr_linenum += data; + cmd_length = 2; + vms_debug2 ((4, "DST__K_INCR_LINUM: %d\n", data)); + break; + + case DST__K_INCR_LINUM_W: + data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD); + curr_linenum += data; + cmd_length = 3; + vms_debug2 ((4, "DST__K_INCR_LINUM_W: %d\n", data)); + break; + + case DST__K_INCR_LINUM_L: + data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG); + curr_linenum += data; + cmd_length = 5; + vms_debug2 ((4, "DST__K_INCR_LINUM_L: %d\n", data)); + break; + + case DST__K_SET_LINUM_INCR: + (*_bfd_error_handler) + (_("DST__K_SET_LINUM_INCR not implemented")); + cmd_length = 2; + break; + + case DST__K_SET_LINUM_INCR_W: + (*_bfd_error_handler) + (_("DST__K_SET_LINUM_INCR_W not implemented")); + cmd_length = 3; + break; + + case DST__K_RESET_LINUM_INCR: + (*_bfd_error_handler) + (_("DST__K_RESET_LINUM_INCR not implemented")); + cmd_length = 1; + break; + + case DST__K_BEG_STMT_MODE: + (*_bfd_error_handler) + (_("DST__K_BEG_STMT_MODE not implemented")); + cmd_length = 1; + break; + + case DST__K_END_STMT_MODE: + (*_bfd_error_handler) + (_("DST__K_END_STMT_MODE not implemented")); + cmd_length = 1; + break; + + case DST__K_SET_LINUM_B: + data = pcl_ptr[DST_S_B_PCLINE_UNSBYTE]; + curr_linenum = data; + cmd_length = 2; + vms_debug2 ((4, "DST__K_SET_LINUM_B: %d\n", data)); + break; + + case DST__K_SET_LINUM: + data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD); + curr_linenum = data; + cmd_length = 3; + vms_debug2 ((4, "DST__K_SET_LINE_NUM: %d\n", data)); + break; + + case DST__K_SET_LINUM_L: + data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG); + curr_linenum = data; + cmd_length = 5; + vms_debug2 ((4, "DST__K_SET_LINUM_L: %d\n", data)); + break; + + case DST__K_SET_PC: + (*_bfd_error_handler) + (_("DST__K_SET_PC not implemented")); + cmd_length = 2; + break; + + case DST__K_SET_PC_W: + (*_bfd_error_handler) + (_("DST__K_SET_PC_W not implemented")); + cmd_length = 3; + break; + + case DST__K_SET_PC_L: + (*_bfd_error_handler) + (_("DST__K_SET_PC_L not implemented")); + cmd_length = 5; + break; + + case DST__K_SET_STMTNUM: + (*_bfd_error_handler) + (_("DST__K_SET_STMTNUM not implemented")); + cmd_length = 2; + break; + + case DST__K_TERM: + data = pcl_ptr[DST_S_B_PCLINE_UNSBYTE]; + curr_pc += data; + cmd_length = 2; + vms_debug2 ((4, "DST__K_TERM: %d\n", data)); + break; + + case DST__K_TERM_W: + data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD); + curr_pc += data; + cmd_length = 3; + vms_debug2 ((4, "DST__K_TERM_W: %d\n", data)); + break; + + case DST__K_TERM_L: + data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG); + curr_pc += data; + cmd_length = 5; + vms_debug2 ((4, "DST__K_TERM_L: %d\n", data)); + break; + + case DST__K_SET_ABS_PC: + data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG); + curr_pc = data; + cmd_length = 5; + vms_debug2 ((4, "DST__K_SET_ABS_PC: 0x%x\n", data)); + break; + + default: + if (cmd <= 0) + { + curr_pc -= cmd; + curr_linenum += 1; + cmd_length = 1; + vms_debug2 ((4, "bump pc to 0x%lx and line to %d\n", + (unsigned long)curr_pc, curr_linenum)); + } + else + { + (*_bfd_error_handler) (_("unknown line command %d"), + cmd); + cmd_length = 2; + } + break; + } + + if ((curr_linenum != prev_linum && curr_pc != prev_pc) + || cmd <= 0 + || cmd == DST__K_DELTA_PC_L + || cmd == DST__K_DELTA_PC_W) + { + line = (struct lineinfo *) + bfd_zalloc (abfd, sizeof (struct lineinfo)); + line->address = curr_pc; + line->line = curr_linenum; + + curr_line->next = line; + curr_line = line; + + prev_linum = curr_linenum; + prev_pc = curr_pc; + vms_debug2 ((4, "-> correlate pc 0x%lx with line %d\n", + (unsigned long)curr_pc, curr_linenum)); + } + + pcl_ptr += cmd_length; + } + break; + + case 0x17: /* Undocumented type used by DEC C to declare equates. */ + vms_debug2 ((3, "undocumented type 0x17\n")); + break; + + default: + vms_debug2 ((3, "ignoring record\n")); + break; + + } + + ptr += rec_length; + } + + /* Finalize tables with EOL marker. */ + srec = (struct srecinfo *) bfd_zalloc (abfd, sizeof (struct srecinfo)); + srec->line = (unsigned int) -1; + srec->srec = (unsigned int) -1; + curr_srec->next = srec; + + line = (struct lineinfo *) bfd_zalloc (abfd, sizeof (struct lineinfo)); + line->line = (unsigned int) -1; + line->address = (bfd_vma) -1; + curr_line->next = line; + + /* Advertise that this module has been parsed. This is needed + because parsing can be either performed at module creation + or deferred until debug info is consumed. */ + SET_MODULE_PARSED (module); +} + +/* Build the list of modules for the specified BFD. */ + +static struct module * +build_module_list (bfd *abfd) +{ + struct module *module, *list = NULL; + asection *dmt; + + if ((dmt = bfd_get_section_by_name (abfd, "$DMT$"))) + { + /* We have a DMT section so this must be an image. Parse the + section and build the list of modules. This is sufficient + since we can compute the start address and the end address + of every module from the section contents. */ + bfd_size_type size = bfd_get_section_size (dmt); + unsigned char *ptr, *end; + + ptr = (unsigned char *) bfd_alloc (abfd, size); + if (! ptr) + return NULL; + + if (! bfd_get_section_contents (abfd, dmt, ptr, 0, size)) + return NULL; + + vms_debug2 ((2, "DMT\n")); + + end = ptr + size; + + while (ptr < end) + { + /* Each header declares a module with its start offset and size + of debug info in the DST section, as well as the count of + program sections (i.e. address spans) it contains. */ + int modbeg = bfd_getl32 (ptr + DBG_S_L_DMT_MODBEG); + int msize = bfd_getl32 (ptr + DBG_S_L_DST_SIZE); + int count = bfd_getl16 (ptr + DBG_S_W_DMT_PSECT_COUNT); + ptr += DBG_S_C_DMT_HEADER_SIZE; + + vms_debug2 ((3, "module: modbeg = %d, size = %d, count = %d\n", + modbeg, msize, count)); + + /* We create a 'module' structure for each program section since + we only support contiguous addresses in a 'module' structure. + As a consequence, the actual debug info in the DST section is + shared and can be parsed multiple times; that doesn't seem to + cause problems in practice. */ + while (count-- > 0) + { + int start = bfd_getl32 (ptr + DBG_S_L_DMT_PSECT_START); + int length = bfd_getl32 (ptr + DBG_S_L_DMT_PSECT_LENGTH); + module = new_module (abfd); + module->modbeg = modbeg; + module->size = msize; + module->low = start; + module->high = start + length; + module->next = list; + list = module; + ptr += DBG_S_C_DMT_PSECT_SIZE; + + vms_debug2 ((4, "section: start = 0x%x, length = %d\n", + start, length)); + } + } + } + else + { + /* We don't have a DMT section so this must be an object. Parse + the module right now in order to compute its start address and + end address. */ + module = new_module (abfd); + parse_module (abfd, module, PRIV (dst_section)->contents, -1); + list = module; + } + + return list; +} + +/* Calculate and return the name of the source file and the line nearest + to the wanted location in the specified module. */ + +static bfd_boolean +module_find_nearest_line (bfd *abfd, struct module *module, bfd_vma addr, + const char **file, const char **func, + unsigned int *line) +{ + struct funcinfo *funcinfo; + struct lineinfo *lineinfo; + struct srecinfo *srecinfo; + bfd_boolean ret = FALSE; + + /* Parse this module if that was not done at module creation. */ + if (! IS_MODULE_PARSED (module)) + { + unsigned int size = module->size; + unsigned int modbeg = PRIV (dst_section)->filepos + module->modbeg; + unsigned char *buffer = (unsigned char *) bfd_malloc (module->size); + + if (bfd_seek (abfd, modbeg, SEEK_SET) != 0 + || bfd_bread (buffer, size, abfd) != size) + { + bfd_set_error (bfd_error_no_debug_section); + return FALSE; + } + + parse_module (abfd, module, buffer, size); + free (buffer); + } + + /* Find out the function (if any) that contains the address. */ + for (funcinfo = module->func_table; funcinfo; funcinfo = funcinfo->next) + if (addr >= funcinfo->low && addr <= funcinfo->high) + { + *func = funcinfo->name; + ret = TRUE; + break; + } + + /* Find out the source file and the line nearest to the address. */ + for (lineinfo = module->line_table; lineinfo; lineinfo = lineinfo->next) + if (lineinfo->next && addr < lineinfo->next->address) + { + for (srecinfo = module->srec_table; srecinfo; srecinfo = srecinfo->next) + if (srecinfo->next && lineinfo->line < srecinfo->next->line) + { + if (srecinfo->sfile > 0) + { + *file = module->file_table[srecinfo->sfile].name; + *line = srecinfo->srec + lineinfo->line - srecinfo->line; + } + else + { + *file = module->name; + *line = lineinfo->line; + } + return TRUE; + } + + break; + } + + return ret; +} + +/* Provided a BFD, a section and an offset into the section, calculate and + return the name of the source file and the line nearest to the wanted + location. */ + +static bfd_boolean +_bfd_vms_find_nearest_dst_line (bfd *abfd, asection *section, + asymbol **symbols ATTRIBUTE_UNUSED, + bfd_vma offset, const char **file, + const char **func, unsigned int *line) +{ + struct module *module; + + /* What address are we looking for? */ + bfd_vma addr = section->vma + offset; + + *file = NULL; + *func = NULL; + *line = 0; + + if (PRIV (dst_section) == NULL) + return FALSE; + + if (PRIV (modules) == NULL) + { + PRIV (modules) = build_module_list (abfd); + if (PRIV (modules) == NULL) + return FALSE; + } + + for (module = PRIV (modules); module; module = module->next) + if (addr >= module->low && addr <= module->high) + return module_find_nearest_line (abfd, module, addr, file, func, line); + + return FALSE; +} + +/* Canonicalizations. */ +/* Set name, value, section and flags of SYM from E. */ + +static bfd_boolean +alpha_vms_convert_symbol (bfd *abfd, struct vms_symbol_entry *e, asymbol *sym) +{ + flagword flags; + symvalue value; + asection *sec; + const char *name; + + name = e->name; + value = 0; + flags = BSF_NO_FLAGS; + sec = NULL; + + switch (e->typ) + { + case EGSD__C_SYM: + if (e->flags & EGSY__V_WEAK) + flags |= BSF_WEAK; + + if (e->flags & EGSY__V_DEF) + { + /* Symbol definition. */ + flags |= BSF_GLOBAL; + if (e->flags & EGSY__V_NORM) + flags |= BSF_FUNCTION; + value = e->value; + sec = e->section; + } + else + { + /* Symbol reference. */ + sec = bfd_und_section_ptr; + } + break; + + case EGSD__C_SYMG: + /* A universal symbol is by definition global... */ + flags |= BSF_GLOBAL; + + /* ...and dynamic in shared libraries. */ + if (abfd->flags & DYNAMIC) + flags |= BSF_DYNAMIC; + + if (e->flags & EGSY__V_WEAK) + flags |= BSF_WEAK; + + if (!(e->flags & EGSY__V_DEF)) + abort (); + + if (e->flags & EGSY__V_NORM) + flags |= BSF_FUNCTION; + + value = e->value; + /* sec = e->section; */ + sec = bfd_abs_section_ptr; + break; + + default: + return FALSE; + } + + sym->name = name; + sym->section = sec; + sym->flags = flags; + sym->value = value; + return TRUE; +} + + +/* Return the number of bytes required to store a vector of pointers + to asymbols for all the symbols in the BFD abfd, including a + terminal NULL pointer. If there are no symbols in the BFD, + then return 0. If an error occurs, return -1. */ + +static long +alpha_vms_get_symtab_upper_bound (bfd *abfd) +{ + vms_debug2 ((1, "alpha_vms_get_symtab_upper_bound (%p), %d symbols\n", + abfd, PRIV (gsd_sym_count))); + + return (PRIV (gsd_sym_count) + 1) * sizeof (asymbol *); +} + +/* Read the symbols from the BFD abfd, and fills in the vector + location with pointers to the symbols and a trailing NULL. + + Return number of symbols read. */ + +static long +alpha_vms_canonicalize_symtab (bfd *abfd, asymbol **symbols) +{ + unsigned int i; + + vms_debug2 ((1, "alpha_vms_canonicalize_symtab (%p, )\n", abfd)); + + if (PRIV (csymbols) == NULL) + { + PRIV (csymbols) = (asymbol **) bfd_alloc + (abfd, PRIV (gsd_sym_count) * sizeof (asymbol *)); + + /* Traverse table and fill symbols vector. */ + for (i = 0; i < PRIV (gsd_sym_count); i++) + { + struct vms_symbol_entry *e = PRIV (syms)[i]; + asymbol *sym; + + sym = bfd_make_empty_symbol (abfd); + if (sym == NULL || !alpha_vms_convert_symbol (abfd, e, sym)) + { + bfd_release (abfd, PRIV (csymbols)); + PRIV (csymbols) = NULL; + return -1; + } + + PRIV (csymbols)[i] = sym; + } + } + + if (symbols != NULL) + { + for (i = 0; i < PRIV (gsd_sym_count); i++) + symbols[i] = PRIV (csymbols)[i]; + symbols[i] = NULL; + } + + return PRIV (gsd_sym_count); +} + +/* Read and convert relocations from ETIR. We do it once for all sections. */ + +static bfd_boolean +alpha_vms_slurp_relocs (bfd *abfd) +{ + int cur_psect = -1; + + vms_debug2 ((3, "alpha_vms_slurp_relocs\n")); + + /* We slurp relocs only once, for all sections. */ + if (PRIV (reloc_done)) + return TRUE; + PRIV (reloc_done) = TRUE; + + if (alpha_vms_canonicalize_symtab (abfd, NULL) < 0) + return FALSE; + + if (bfd_seek (abfd, 0, SEEK_SET) != 0) + return FALSE; + + while (1) + { + unsigned char *begin; + unsigned char *end; + unsigned char *ptr; + bfd_reloc_code_real_type reloc_code; + int type; + bfd_vma vaddr = 0; + + int length; + + bfd_vma cur_address; + int cur_psidx = -1; + unsigned char *cur_sym = NULL; + int prev_cmd = -1; + bfd_vma cur_addend = 0; + + /* Skip non-ETIR records. */ + type = _bfd_vms_get_object_record (abfd); + if (type == EOBJ__C_EEOM) + break; + if (type != EOBJ__C_ETIR) + continue; + + begin = PRIV (recrd.rec) + 4; + end = PRIV (recrd.rec) + PRIV (recrd.rec_size); + + for (ptr = begin; ptr < end; ptr += length) + { + int cmd; + + cmd = bfd_getl16 (ptr); + length = bfd_getl16 (ptr + 2); + + cur_address = vaddr; + + vms_debug2 ((4, "alpha_vms_slurp_relocs: etir %s\n", + _bfd_vms_etir_name (cmd))); + + switch (cmd) + { + case ETIR__C_STA_GBL: /* ALPHA_R_REFLONG und_section, step 1 */ + /* ALPHA_R_REFQUAD und_section, step 1 */ + cur_sym = ptr + 4; + prev_cmd = cmd; + continue; + + case ETIR__C_STA_PQ: /* ALPHA_R_REF{LONG|QUAD}, others part 1 */ + cur_psidx = bfd_getl32 (ptr + 4); + cur_addend = bfd_getl64 (ptr + 8); + prev_cmd = cmd; + continue; + + case ETIR__C_CTL_SETRB: + if (prev_cmd != ETIR__C_STA_PQ) + { + (*_bfd_error_handler) + (_("Unknown reloc %s + %s"), _bfd_vms_etir_name (prev_cmd), + _bfd_vms_etir_name (cmd)); + return FALSE; + } + cur_psect = cur_psidx; + vaddr = cur_addend; + cur_psidx = -1; + cur_addend = 0; + continue; + + case ETIR__C_STA_LW: /* ALPHA_R_REFLONG abs_section, step 1 */ + /* ALPHA_R_REFLONG und_section, step 2 */ + if (prev_cmd != -1) + { + if (prev_cmd != ETIR__C_STA_GBL) + { + (*_bfd_error_handler) + (_("Unknown reloc %s + %s"), _bfd_vms_etir_name (cmd), + _bfd_vms_etir_name (ETIR__C_STA_LW)); + return FALSE; + } + } + cur_addend = bfd_getl32 (ptr + 4); + prev_cmd = cmd; + continue; + + case ETIR__C_STA_QW: /* ALPHA_R_REFQUAD abs_section, step 1 */ + /* ALPHA_R_REFQUAD und_section, step 2 */ + if (prev_cmd != -1 && prev_cmd != ETIR__C_STA_GBL) + { + (*_bfd_error_handler) + (_("Unknown reloc %s + %s"), _bfd_vms_etir_name (cmd), + _bfd_vms_etir_name (ETIR__C_STA_QW)); + return FALSE; + } + cur_addend = bfd_getl64 (ptr + 4); + prev_cmd = cmd; + continue; + + case ETIR__C_STO_LW: /* ALPHA_R_REFLONG und_section, step 4 */ + /* ALPHA_R_REFLONG abs_section, step 2 */ + /* ALPHA_R_REFLONG others, step 2 */ + if (prev_cmd != ETIR__C_OPR_ADD + && prev_cmd != ETIR__C_STA_LW + && prev_cmd != ETIR__C_STA_PQ) + { + (*_bfd_error_handler) (_("Unknown reloc %s + %s"), + _bfd_vms_etir_name (prev_cmd), + _bfd_vms_etir_name (ETIR__C_STO_LW)); + return FALSE; + } + reloc_code = BFD_RELOC_32; + break; + + case ETIR__C_STO_QW: /* ALPHA_R_REFQUAD und_section, step 4 */ + /* ALPHA_R_REFQUAD abs_section, step 2 */ + if (prev_cmd != ETIR__C_OPR_ADD && prev_cmd != ETIR__C_STA_QW) + { + (*_bfd_error_handler) (_("Unknown reloc %s + %s"), + _bfd_vms_etir_name (prev_cmd), + _bfd_vms_etir_name (ETIR__C_STO_QW)); + return FALSE; + } + reloc_code = BFD_RELOC_64; + break; + + case ETIR__C_STO_OFF: /* ALPHA_R_REFQUAD others, step 2 */ + if (prev_cmd != ETIR__C_STA_PQ) + { + (*_bfd_error_handler) (_("Unknown reloc %s + %s"), + _bfd_vms_etir_name (prev_cmd), + _bfd_vms_etir_name (ETIR__C_STO_OFF)); + return FALSE; + } + reloc_code = BFD_RELOC_64; + break; + + case ETIR__C_OPR_ADD: /* ALPHA_R_REFLONG und_section, step 3 */ + /* ALPHA_R_REFQUAD und_section, step 3 */ + if (prev_cmd != ETIR__C_STA_LW && prev_cmd != ETIR__C_STA_QW) + { + (*_bfd_error_handler) (_("Unknown reloc %s + %s"), + _bfd_vms_etir_name (prev_cmd), + _bfd_vms_etir_name (ETIR__C_OPR_ADD)); + return FALSE; + } + prev_cmd = ETIR__C_OPR_ADD; + continue; + + case ETIR__C_STO_CA: /* ALPHA_R_CODEADDR */ + reloc_code = BFD_RELOC_ALPHA_CODEADDR; + cur_sym = ptr + 4; + break; + + case ETIR__C_STO_GBL: /* ALPHA_R_REFQUAD und_section */ + reloc_code = BFD_RELOC_64; + cur_sym = ptr + 4; + break; + + case ETIR__C_STO_GBL_LW: /* ALPHA_R_REFLONG und_section */ + reloc_code = BFD_RELOC_32; + cur_sym = ptr + 4; + break; + + case ETIR__C_STC_LP_PSB: /* ALPHA_R_LINKAGE */ + reloc_code = BFD_RELOC_ALPHA_LINKAGE; + cur_sym = ptr + 8; + break; + + case ETIR__C_STC_NOP_GBL: /* ALPHA_R_NOP */ + reloc_code = BFD_RELOC_ALPHA_NOP; + goto call_reloc; + + case ETIR__C_STC_BSR_GBL: /* ALPHA_R_BSR */ + reloc_code = BFD_RELOC_ALPHA_BSR; + goto call_reloc; + + case ETIR__C_STC_LDA_GBL: /* ALPHA_R_LDA */ + reloc_code = BFD_RELOC_ALPHA_LDA; + goto call_reloc; + + case ETIR__C_STC_BOH_GBL: /* ALPHA_R_BOH */ + reloc_code = BFD_RELOC_ALPHA_BOH; + goto call_reloc; + + call_reloc: + cur_sym = ptr + 4 + 32; + cur_address = bfd_getl64 (ptr + 4 + 8); + cur_addend = bfd_getl64 (ptr + 4 + 24); + break; + + case ETIR__C_STO_IMM: + vaddr += bfd_getl32 (ptr + 4); + continue; + + default: + (*_bfd_error_handler) (_("Unknown reloc %s"), + _bfd_vms_etir_name (cmd)); + return FALSE; + } + + { + asection *sec; + struct vms_section_data_struct *vms_sec; + arelent *reloc; + + /* Get section to which the relocation applies. */ + if (cur_psect < 0 || cur_psect > (int)PRIV (section_count)) + { + (*_bfd_error_handler) (_("Invalid section index in ETIR")); + return FALSE; + } + sec = PRIV (sections)[cur_psect]; + vms_sec = vms_section_data (sec); + + /* Allocate a reloc entry. */ + if (sec->reloc_count >= vms_sec->reloc_max) + { + if (vms_sec->reloc_max == 0) + { + vms_sec->reloc_max = 64; + sec->relocation = bfd_zmalloc + (vms_sec->reloc_max * sizeof (arelent)); + } + else + { + vms_sec->reloc_max *= 2; + sec->relocation = bfd_realloc + (sec->relocation, vms_sec->reloc_max * sizeof (arelent)); + } + } + reloc = &sec->relocation[sec->reloc_count]; + sec->reloc_count++; + + reloc->howto = bfd_reloc_type_lookup (abfd, reloc_code); + + if (cur_sym != NULL) + { + unsigned int j; + unsigned int symlen = *cur_sym; + asymbol **sym; + + /* Linear search. */ + symlen = *cur_sym; + cur_sym++; + sym = NULL; + + for (j = 0; j < PRIV (gsd_sym_count); j++) + if (PRIV (syms)[j]->namelen == symlen + && memcmp (PRIV (syms)[j]->name, cur_sym, symlen) == 0) + { + sym = &PRIV (csymbols)[j]; + break; + } + if (sym == NULL) + { + (*_bfd_error_handler) (_("Unknown symbol in command %s"), + _bfd_vms_etir_name (cmd)); + reloc->sym_ptr_ptr = NULL; + } + else + reloc->sym_ptr_ptr = sym; + } + else if (cur_psidx >= 0) + reloc->sym_ptr_ptr = + PRIV (sections)[cur_psidx]->symbol_ptr_ptr; + else + reloc->sym_ptr_ptr = NULL; + + reloc->address = cur_address; + reloc->addend = cur_addend; + + vaddr += bfd_get_reloc_size (reloc->howto); + } + + cur_addend = 0; + prev_cmd = -1; + cur_sym = NULL; + cur_psidx = -1; + } + } + vms_debug2 ((3, "alpha_vms_slurp_relocs: result = TRUE\n")); + + return TRUE; +} + +/* Return the number of bytes required to store the relocation + information associated with the given section. */ + +static long +alpha_vms_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED, asection *section) +{ + alpha_vms_slurp_relocs (abfd); + + return (section->reloc_count + 1) * sizeof (arelent *); +} + +/* Convert relocations from VMS (external) form into BFD internal + form. Return the number of relocations. */ + +static long +alpha_vms_canonicalize_reloc (bfd *abfd, asection *section, arelent **relptr, + asymbol **symbols ATTRIBUTE_UNUSED) +{ + arelent *tblptr; + int count; + + if (!alpha_vms_slurp_relocs (abfd)) + return -1; + + count = section->reloc_count; + tblptr = section->relocation; + + while (count--) + *relptr++ = tblptr++; + + *relptr = (arelent *) NULL; + return section->reloc_count; +} + +/* This is just copied from ecoff-alpha, needs to be fixed probably. */ + +/* How to process the various reloc types. */ + +static bfd_reloc_status_type +reloc_nil (bfd * abfd ATTRIBUTE_UNUSED, + arelent *reloc ATTRIBUTE_UNUSED, + asymbol *sym ATTRIBUTE_UNUSED, + void * data ATTRIBUTE_UNUSED, + asection *sec ATTRIBUTE_UNUSED, + bfd *output_bfd ATTRIBUTE_UNUSED, + char **error_message ATTRIBUTE_UNUSED) +{ +#if VMS_DEBUG + vms_debug (1, "reloc_nil (abfd %p, output_bfd %p)\n", abfd, output_bfd); + vms_debug (2, "In section %s, symbol %s\n", + sec->name, sym->name); + vms_debug (2, "reloc sym %s, addr %08lx, addend %08lx, reloc is a %s\n", + reloc->sym_ptr_ptr[0]->name, + (unsigned long)reloc->address, + (unsigned long)reloc->addend, reloc->howto->name); + vms_debug (2, "data at %p\n", data); + /* _bfd_hexdump (2, data, bfd_get_reloc_size (reloc->howto), 0); */ +#endif + + return bfd_reloc_ok; +} + +/* 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 alpha_howto_table[] = +{ + HOWTO (ALPHA_R_IGNORE, /* Type. */ + 0, /* Rightshift. */ + 0, /* Size (0 = byte, 1 = short, 2 = long). */ + 8, /* Bitsize. */ + TRUE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "IGNORE", /* Name. */ + TRUE, /* Partial_inplace. */ + 0, /* Source mask */ + 0, /* Dest mask. */ + TRUE), /* PC rel offset. */ + + /* A 64 bit reference to a symbol. */ + HOWTO (ALPHA_R_REFQUAD, /* Type. */ + 0, /* Rightshift. */ + 4, /* Size (0 = byte, 1 = short, 2 = long). */ + 64, /* Bitsize. */ + FALSE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_bitfield, /* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "REFQUAD", /* Name. */ + TRUE, /* Partial_inplace. */ + MINUS_ONE, /* Source mask. */ + MINUS_ONE, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* A 21 bit branch. The native assembler generates these for + branches within the text segment, and also fills in the PC + relative offset in the instruction. */ + HOWTO (ALPHA_R_BRADDR, /* Type. */ + 2, /* Rightshift. */ + 2, /* Size (0 = byte, 1 = short, 2 = long). */ + 21, /* Bitsize. */ + TRUE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_signed, /* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "BRADDR", /* Name. */ + TRUE, /* Partial_inplace. */ + 0x1fffff, /* Source mask. */ + 0x1fffff, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* A hint for a jump to a register. */ + HOWTO (ALPHA_R_HINT, /* Type. */ + 2, /* Rightshift. */ + 1, /* Size (0 = byte, 1 = short, 2 = long). */ + 14, /* Bitsize. */ + TRUE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "HINT", /* Name. */ + TRUE, /* Partial_inplace. */ + 0x3fff, /* Source mask. */ + 0x3fff, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* 16 bit PC relative offset. */ + HOWTO (ALPHA_R_SREL16, /* Type. */ + 0, /* Rightshift. */ + 1, /* Size (0 = byte, 1 = short, 2 = long). */ + 16, /* Bitsize. */ + TRUE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_signed, /* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "SREL16", /* Name. */ + TRUE, /* Partial_inplace. */ + 0xffff, /* Source mask. */ + 0xffff, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* 32 bit PC relative offset. */ + HOWTO (ALPHA_R_SREL32, /* Type. */ + 0, /* Rightshift. */ + 2, /* Size (0 = byte, 1 = short, 2 = long). */ + 32, /* Bitsize. */ + TRUE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_signed, /* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "SREL32", /* Name. */ + TRUE, /* Partial_inplace. */ + 0xffffffff, /* Source mask. */ + 0xffffffff, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* A 64 bit PC relative offset. */ + HOWTO (ALPHA_R_SREL64, /* Type. */ + 0, /* Rightshift. */ + 4, /* Size (0 = byte, 1 = short, 2 = long). */ + 64, /* Bitsize. */ + TRUE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_signed, /* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "SREL64", /* Name. */ + TRUE, /* Partial_inplace. */ + MINUS_ONE, /* Source mask. */ + MINUS_ONE, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* Push a value on the reloc evaluation stack. */ + HOWTO (ALPHA_R_OP_PUSH, /* Type. */ + 0, /* Rightshift. */ + 0, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ + FALSE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "OP_PUSH", /* Name. */ + FALSE, /* Partial_inplace. */ + 0, /* Source mask. */ + 0, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* Store the value from the stack at the given address. Store it in + a bitfield of size r_size starting at bit position r_offset. */ + HOWTO (ALPHA_R_OP_STORE, /* Type. */ + 0, /* Rightshift. */ + 4, /* Size (0 = byte, 1 = short, 2 = long). */ + 64, /* Bitsize. */ + FALSE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "OP_STORE", /* Name. */ + FALSE, /* Partial_inplace. */ + 0, /* Source mask. */ + MINUS_ONE, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* Subtract the reloc address from the value on the top of the + relocation stack. */ + HOWTO (ALPHA_R_OP_PSUB, /* Type. */ + 0, /* Rightshift. */ + 0, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ + FALSE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "OP_PSUB", /* Name. */ + FALSE, /* Partial_inplace. */ + 0, /* Source mask. */ + 0, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* Shift the value on the top of the relocation stack right by the + given value. */ + HOWTO (ALPHA_R_OP_PRSHIFT, /* Type. */ + 0, /* Rightshift. */ + 0, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ + FALSE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "OP_PRSHIFT", /* Name. */ + FALSE, /* Partial_inplace. */ + 0, /* Source mask. */ + 0, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* Hack. Linkage is done by linker. */ + HOWTO (ALPHA_R_LINKAGE, /* Type. */ + 0, /* Rightshift. */ + 8, /* Size (0 = byte, 1 = short, 2 = long). */ + 256, /* Bitsize. */ + FALSE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "LINKAGE", /* Name. */ + FALSE, /* Partial_inplace. */ + 0, /* Source mask. */ + 0, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* A 32 bit reference to a symbol. */ + HOWTO (ALPHA_R_REFLONG, /* Type. */ + 0, /* Rightshift. */ + 2, /* Size (0 = byte, 1 = short, 2 = long). */ + 32, /* Bitsize. */ + FALSE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_bitfield, /* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "REFLONG", /* Name. */ + TRUE, /* Partial_inplace. */ + 0xffffffff, /* Source mask. */ + 0xffffffff, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + /* A 64 bit reference to a procedure, written as 32 bit value. */ + HOWTO (ALPHA_R_CODEADDR, /* Type. */ + 0, /* Rightshift. */ + 4, /* Size (0 = byte, 1 = short, 2 = long). */ + 64, /* Bitsize. */ + FALSE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_signed,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "CODEADDR", /* Name. */ + FALSE, /* Partial_inplace. */ + 0xffffffff, /* Source mask. */ + 0xffffffff, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + HOWTO (ALPHA_R_NOP, /* Type. */ + 0, /* Rightshift. */ + 3, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ + /* The following value must match that of ALPHA_R_BSR/ALPHA_R_BOH + because the calculations for the 3 relocations are the same. + See B.4.5.2 of the OpenVMS Linker Utility Manual. */ + TRUE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "NOP", /* Name. */ + FALSE, /* Partial_inplace. */ + 0xffffffff, /* Source mask. */ + 0xffffffff, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + HOWTO (ALPHA_R_BSR, /* Type. */ + 0, /* Rightshift. */ + 3, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ + TRUE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "BSR", /* Name. */ + FALSE, /* Partial_inplace. */ + 0xffffffff, /* Source mask. */ + 0xffffffff, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + HOWTO (ALPHA_R_LDA, /* Type. */ + 0, /* Rightshift. */ + 3, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ + FALSE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "LDA", /* Name. */ + FALSE, /* Partial_inplace. */ + 0xffffffff, /* Source mask. */ + 0xffffffff, /* Dest mask. */ + FALSE), /* PC rel offset. */ + + HOWTO (ALPHA_R_BOH, /* Type. */ + 0, /* Rightshift. */ + 3, /* Size (0 = byte, 1 = short, 2 = long, 3 = nil). */ + 0, /* Bitsize. */ + TRUE, /* PC relative. */ + 0, /* Bitpos. */ + complain_overflow_dont,/* Complain_on_overflow. */ + reloc_nil, /* Special_function. */ + "BOH", /* Name. */ + FALSE, /* Partial_inplace. */ + 0xffffffff, /* Source mask. */ + 0xffffffff, /* Dest mask. */ + FALSE), /* PC rel offset. */ +}; + +/* Return a pointer to a howto structure which, when invoked, will perform + the relocation code on data from the architecture noted. */ + +static const struct reloc_howto_struct * +alpha_vms_bfd_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, + bfd_reloc_code_real_type code) +{ + int alpha_type; + + vms_debug2 ((1, "vms_bfd_reloc_type_lookup (%p, %d)\t", abfd, code)); + + switch (code) + { + case BFD_RELOC_16: alpha_type = ALPHA_R_SREL16; break; + case BFD_RELOC_32: alpha_type = ALPHA_R_REFLONG; break; + case BFD_RELOC_64: alpha_type = ALPHA_R_REFQUAD; break; + case BFD_RELOC_CTOR: alpha_type = ALPHA_R_REFQUAD; break; + case BFD_RELOC_23_PCREL_S2: alpha_type = ALPHA_R_BRADDR; break; + case BFD_RELOC_ALPHA_HINT: alpha_type = ALPHA_R_HINT; break; + case BFD_RELOC_16_PCREL: alpha_type = ALPHA_R_SREL16; break; + case BFD_RELOC_32_PCREL: alpha_type = ALPHA_R_SREL32; break; + case BFD_RELOC_64_PCREL: alpha_type = ALPHA_R_SREL64; break; + case BFD_RELOC_ALPHA_LINKAGE: alpha_type = ALPHA_R_LINKAGE; break; + case BFD_RELOC_ALPHA_CODEADDR: alpha_type = ALPHA_R_CODEADDR; break; + case BFD_RELOC_ALPHA_NOP: alpha_type = ALPHA_R_NOP; break; + case BFD_RELOC_ALPHA_BSR: alpha_type = ALPHA_R_BSR; break; + case BFD_RELOC_ALPHA_LDA: alpha_type = ALPHA_R_LDA; break; + case BFD_RELOC_ALPHA_BOH: alpha_type = ALPHA_R_BOH; break; + default: + (*_bfd_error_handler) ("reloc (%d) is *UNKNOWN*", code); + return NULL; + } + vms_debug2 ((2, "reloc is %s\n", alpha_howto_table[alpha_type].name)); + return & alpha_howto_table[alpha_type]; +} + +static reloc_howto_type * +alpha_vms_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, + const char *r_name) +{ + unsigned int i; + + for (i = 0; + i < sizeof (alpha_howto_table) / sizeof (alpha_howto_table[0]); + i++) + if (alpha_howto_table[i].name != NULL + && strcasecmp (alpha_howto_table[i].name, r_name) == 0) + return &alpha_howto_table[i]; + + return NULL; +} + +static long +alpha_vms_get_synthetic_symtab (bfd *abfd, + long symcount ATTRIBUTE_UNUSED, + asymbol **usyms ATTRIBUTE_UNUSED, + long dynsymcount ATTRIBUTE_UNUSED, + asymbol **dynsyms ATTRIBUTE_UNUSED, + asymbol **ret) +{ + asymbol *syms; + unsigned int i; + unsigned int n = 0; + + syms = (asymbol *) bfd_malloc (PRIV (norm_sym_count) * sizeof (asymbol)); + *ret = syms; + if (syms == NULL) + return -1; + + for (i = 0; i < PRIV (gsd_sym_count); i++) + { + struct vms_symbol_entry *e = PRIV (syms)[i]; + asymbol *sym; + flagword flags; + symvalue value; + asection *sec; + const char *name; + char *sname; + int l; + + name = e->name; + value = 0; + flags = BSF_LOCAL | BSF_SYNTHETIC; + sec = NULL; + + switch (e->typ) + { + case EGSD__C_SYM: + case EGSD__C_SYMG: + if ((e->flags & EGSY__V_DEF) && (e->flags & EGSY__V_NORM)) + { + value = e->code_value; + sec = e->code_section; + } + else + continue; + break; + + default: + continue; + } + + l = strlen (name); + sname = bfd_alloc (abfd, l + 5); + if (sname == NULL) + return FALSE; + memcpy (sname, name, l); + memcpy (sname + l, "..en", 5); + + sym = &syms[n++]; + sym->name = sname; + sym->section = sec; + sym->flags = flags; + sym->value = value; + sym->udata.p = NULL; + } + + return n; +} + +/* Private dump. */ + +static const char * +vms_time_to_str (unsigned char *buf) +{ + time_t t = vms_rawtime_to_time_t (buf); + char *res = ctime (&t); + + if (!res) + res = "*invalid time*"; + else + res[24] = 0; + return res; +} + +static void +evax_bfd_print_emh (FILE *file, unsigned char *rec, unsigned int rec_len) +{ + struct vms_emh_common *emh = (struct vms_emh_common *)rec; + unsigned int subtype; + + subtype = (unsigned)bfd_getl16 (emh->subtyp); + + fprintf (file, _(" EMH %u (len=%u): "), subtype, rec_len); + + switch (subtype) + { + case EMH__C_MHD: + { + struct vms_emh_mhd *mhd = (struct vms_emh_mhd *)rec; + const char *name; + + fprintf (file, _("Module header\n")); + fprintf (file, _(" structure level: %u\n"), mhd->strlvl); + fprintf (file, _(" max record size: %u\n"), + (unsigned)bfd_getl32 (mhd->recsiz)); + name = (char *)(mhd + 1); + fprintf (file, _(" module name : %.*s\n"), name[0], name + 1); + name += name[0] + 1; + fprintf (file, _(" module version : %.*s\n"), name[0], name + 1); + name += name[0] + 1; + fprintf (file, _(" compile date : %.17s\n"), name); + } + break; + case EMH__C_LNM: + { + fprintf (file, _("Language Processor Name\n")); + fprintf (file, _(" language name: %.*s\n"), + (int)(rec_len - sizeof (struct vms_emh_common)), + (char *)rec + sizeof (struct vms_emh_common)); + } + break; + case EMH__C_SRC: + { + fprintf (file, _("Source Files Header\n")); + fprintf (file, _(" file: %.*s\n"), + (int)(rec_len - sizeof (struct vms_emh_common)), + (char *)rec + sizeof (struct vms_emh_common)); + } + break; + case EMH__C_TTL: + { + fprintf (file, _("Title Text Header\n")); + fprintf (file, _(" title: %.*s\n"), + (int)(rec_len - sizeof (struct vms_emh_common)), + (char *)rec + sizeof (struct vms_emh_common)); + } + break; + case EMH__C_CPR: + { + fprintf (file, _("Copyright Header\n")); + fprintf (file, _(" copyright: %.*s\n"), + (int)(rec_len - sizeof (struct vms_emh_common)), + (char *)rec + sizeof (struct vms_emh_common)); + } + break; + default: + fprintf (file, _("unhandled emh subtype %u\n"), subtype); + break; + } +} + +static void +evax_bfd_print_eeom (FILE *file, unsigned char *rec, unsigned int rec_len) +{ + struct vms_eeom *eeom = (struct vms_eeom *)rec; + + fprintf (file, _(" EEOM (len=%u):\n"), rec_len); + fprintf (file, _(" number of cond linkage pairs: %u\n"), + (unsigned)bfd_getl32 (eeom->total_lps)); + fprintf (file, _(" completion code: %u\n"), + (unsigned)bfd_getl16 (eeom->comcod)); + if (rec_len > 10) + { + fprintf (file, _(" transfer addr flags: 0x%02x\n"), eeom->tfrflg); + fprintf (file, _(" transfer addr psect: %u\n"), + (unsigned)bfd_getl32 (eeom->psindx)); + fprintf (file, _(" transfer address : 0x%08x\n"), + (unsigned)bfd_getl32 (eeom->tfradr)); + } +} + +static void +exav_bfd_print_egsy_flags (unsigned int flags, FILE *file) +{ + if (flags & EGSY__V_WEAK) + fputs (_(" WEAK"), file); + if (flags & EGSY__V_DEF) + fputs (_(" DEF"), file); + if (flags & EGSY__V_UNI) + fputs (_(" UNI"), file); + if (flags & EGSY__V_REL) + fputs (_(" REL"), file); + if (flags & EGSY__V_COMM) + fputs (_(" COMM"), file); + if (flags & EGSY__V_VECEP) + fputs (_(" VECEP"), file); + if (flags & EGSY__V_NORM) + fputs (_(" NORM"), file); + if (flags & EGSY__V_QUAD_VAL) + fputs (_(" QVAL"), file); +} + +static void +evax_bfd_print_egsd_flags (FILE *file, unsigned int flags) +{ + if (flags & EGPS__V_PIC) + fputs (_(" PIC"), file); + if (flags & EGPS__V_LIB) + fputs (_(" LIB"), file); + if (flags & EGPS__V_OVR) + fputs (_(" OVR"), file); + if (flags & EGPS__V_REL) + fputs (_(" REL"), file); + if (flags & EGPS__V_GBL) + fputs (_(" GBL"), file); + if (flags & EGPS__V_SHR) + fputs (_(" SHR"), file); + if (flags & EGPS__V_EXE) + fputs (_(" EXE"), file); + if (flags & EGPS__V_RD) + fputs (_(" RD"), file); + if (flags & EGPS__V_WRT) + fputs (_(" WRT"), file); + if (flags & EGPS__V_VEC) + fputs (_(" VEC"), file); + if (flags & EGPS__V_NOMOD) + fputs (_(" NOMOD"), file); + if (flags & EGPS__V_COM) + fputs (_(" COM"), file); + if (flags & EGPS__V_ALLOC_64BIT) + fputs (_(" 64B"), file); +} + +static void +evax_bfd_print_egsd (FILE *file, unsigned char *rec, unsigned int rec_len) +{ + unsigned int off = sizeof (struct vms_egsd); + unsigned int n; + + fprintf (file, _(" EGSD (len=%u):\n"), rec_len); + + n = 0; + for (off = sizeof (struct vms_egsd); off < rec_len; ) + { + struct vms_egsd_entry *e = (struct vms_egsd_entry *)(rec + off); + unsigned int type; + unsigned int len; + + type = (unsigned)bfd_getl16 (e->gsdtyp); + len = (unsigned)bfd_getl16 (e->gsdsiz); + + fprintf (file, _(" EGSD entry %2u (type: %u, len: %u): "), + n, type, len); + n++; + + switch (type) + { + case EGSD__C_PSC: + { + struct vms_egps *egps = (struct vms_egps *)e; + unsigned int flags = bfd_getl16 (egps->flags); + unsigned int l; + + fprintf (file, _("PSC - Program section definition\n")); + fprintf (file, _(" alignment : 2**%u\n"), egps->align); + fprintf (file, _(" flags : 0x%04x"), flags); + evax_bfd_print_egsd_flags (file, flags); + fputc ('\n', file); + l = bfd_getl32 (egps->alloc); + fprintf (file, _(" alloc (len): %u (0x%08x)\n"), l, l); + fprintf (file, _(" name : %.*s\n"), + egps->namlng, egps->name); + } + break; + case EGSD__C_SPSC: + { + struct vms_esgps *esgps = (struct vms_esgps *)e; + unsigned int flags = bfd_getl16 (esgps->flags); + unsigned int l; + + fprintf (file, _("SPSC - Shared Image Program section def\n")); + fprintf (file, _(" alignment : 2**%u\n"), esgps->align); + fprintf (file, _(" flags : 0x%04x"), flags); + evax_bfd_print_egsd_flags (file, flags); + fputc ('\n', file); + l = bfd_getl32 (esgps->alloc); + fprintf (file, _(" alloc (len) : %u (0x%08x)\n"), l, l); + fprintf (file, _(" image offset : 0x%08x\n"), + (unsigned int)bfd_getl32 (esgps->base)); + fprintf (file, _(" symvec offset : 0x%08x\n"), + (unsigned int)bfd_getl32 (esgps->value)); + fprintf (file, _(" name : %.*s\n"), + esgps->namlng, esgps->name); + } + break; + case EGSD__C_SYM: + { + struct vms_egsy *egsy = (struct vms_egsy *)e; + unsigned int flags = bfd_getl16 (egsy->flags); + + if (flags & EGSY__V_DEF) + { + struct vms_esdf *esdf = (struct vms_esdf *)e; + + fprintf (file, _("SYM - Global symbol definition\n")); + fprintf (file, _(" flags: 0x%04x"), flags); + exav_bfd_print_egsy_flags (flags, file); + fputc ('\n', file); + fprintf (file, _(" psect offset: 0x%08x\n"), + (unsigned)bfd_getl32 (esdf->value)); + if (flags & EGSY__V_NORM) + { + fprintf (file, _(" code address: 0x%08x\n"), + (unsigned)bfd_getl32 (esdf->code_address)); + fprintf (file, _(" psect index for entry point : %u\n"), + (unsigned)bfd_getl32 (esdf->ca_psindx)); + } + fprintf (file, _(" psect index : %u\n"), + (unsigned)bfd_getl32 (esdf->psindx)); + fprintf (file, _(" name : %.*s\n"), + esdf->namlng, esdf->name); + } + else + { + struct vms_esrf *esrf = (struct vms_esrf *)e; + + fprintf (file, _("SYM - Global symbol reference\n")); + fprintf (file, _(" name : %.*s\n"), + esrf->namlng, esrf->name); + } + } + break; + case EGSD__C_IDC: + { + struct vms_eidc *eidc = (struct vms_eidc *)e; + unsigned int flags = bfd_getl32 (eidc->flags); + unsigned char *p; + + fprintf (file, _("IDC - Ident Consistency check\n")); + fprintf (file, _(" flags : 0x%08x"), flags); + if (flags & EIDC__V_BINIDENT) + fputs (" BINDENT", file); + fputc ('\n', file); + fprintf (file, _(" id match : %x\n"), + (flags >> EIDC__V_IDMATCH_SH) & EIDC__V_IDMATCH_MASK); + fprintf (file, _(" error severity: %x\n"), + (flags >> EIDC__V_ERRSEV_SH) & EIDC__V_ERRSEV_MASK); + p = eidc->name; + fprintf (file, _(" entity name : %.*s\n"), p[0], p + 1); + p += 1 + p[0]; + fprintf (file, _(" object name : %.*s\n"), p[0], p + 1); + p += 1 + p[0]; + if (flags & EIDC__V_BINIDENT) + fprintf (file, _(" binary ident : 0x%08x\n"), + (unsigned)bfd_getl32 (p + 1)); + else + fprintf (file, _(" ascii ident : %.*s\n"), p[0], p + 1); + } + break; + case EGSD__C_SYMG: + { + struct vms_egst *egst = (struct vms_egst *)e; + unsigned int flags = bfd_getl16 (egst->header.flags); + + fprintf (file, _("SYMG - Universal symbol definition\n")); + fprintf (file, _(" flags: 0x%04x"), flags); + exav_bfd_print_egsy_flags (flags, file); + fputc ('\n', file); + fprintf (file, _(" symbol vector offset: 0x%08x\n"), + (unsigned)bfd_getl32 (egst->value)); + fprintf (file, _(" entry point: 0x%08x\n"), + (unsigned)bfd_getl32 (egst->lp_1)); + fprintf (file, _(" proc descr : 0x%08x\n"), + (unsigned)bfd_getl32 (egst->lp_2)); + fprintf (file, _(" psect index: %u\n"), + (unsigned)bfd_getl32 (egst->psindx)); + fprintf (file, _(" name : %.*s\n"), + egst->namlng, egst->name); + } + break; + case EGSD__C_SYMV: + { + struct vms_esdfv *esdfv = (struct vms_esdfv *)e; + unsigned int flags = bfd_getl16 (esdfv->flags); + + fprintf (file, _("SYMV - Vectored symbol definition\n")); + fprintf (file, _(" flags: 0x%04x"), flags); + exav_bfd_print_egsy_flags (flags, file); + fputc ('\n', file); + fprintf (file, _(" vector : 0x%08x\n"), + (unsigned)bfd_getl32 (esdfv->vector)); + fprintf (file, _(" psect offset: %u\n"), + (unsigned)bfd_getl32 (esdfv->value)); + fprintf (file, _(" psect index : %u\n"), + (unsigned)bfd_getl32 (esdfv->psindx)); + fprintf (file, _(" name : %.*s\n"), + esdfv->namlng, esdfv->name); + } + break; + case EGSD__C_SYMM: + { + struct vms_esdfm *esdfm = (struct vms_esdfm *)e; + unsigned int flags = bfd_getl16 (esdfm->flags); + + fprintf (file, _("SYMM - Global symbol definition with version\n")); + fprintf (file, _(" flags: 0x%04x"), flags); + exav_bfd_print_egsy_flags (flags, file); + fputc ('\n', file); + fprintf (file, _(" version mask: 0x%08x\n"), + (unsigned)bfd_getl32 (esdfm->version_mask)); + fprintf (file, _(" psect offset: %u\n"), + (unsigned)bfd_getl32 (esdfm->value)); + fprintf (file, _(" psect index : %u\n"), + (unsigned)bfd_getl32 (esdfm->psindx)); + fprintf (file, _(" name : %.*s\n"), + esdfm->namlng, esdfm->name); + } + break; + default: + fprintf (file, _("unhandled egsd entry type %u\n"), type); + break; + } + off += len; + } +} + +static void +evax_bfd_print_hex (FILE *file, const char *pfx, + const unsigned char *buf, unsigned int len) +{ + unsigned int i; + unsigned int n; + + n = 0; + for (i = 0; i < len; i++) + { + if (n == 0) + fputs (pfx, file); + fprintf (file, " %02x", buf[i]); + n++; + if (n == 16) + { + n = 0; + fputc ('\n', file); + } + } + if (n != 0) + fputc ('\n', file); +} + +static void +evax_bfd_print_etir_stc_ir (FILE *file, const unsigned char *buf, int is_ps) +{ + fprintf (file, _(" linkage index: %u, replacement insn: 0x%08x\n"), + (unsigned)bfd_getl32 (buf), + (unsigned)bfd_getl32 (buf + 16)); + fprintf (file, _(" psect idx 1: %u, offset 1: 0x%08x %08x\n"), + (unsigned)bfd_getl32 (buf + 4), + (unsigned)bfd_getl32 (buf + 12), + (unsigned)bfd_getl32 (buf + 8)); + fprintf (file, _(" psect idx 2: %u, offset 2: 0x%08x %08x\n"), + (unsigned)bfd_getl32 (buf + 20), + (unsigned)bfd_getl32 (buf + 28), + (unsigned)bfd_getl32 (buf + 24)); + if (is_ps) + fprintf (file, _(" psect idx 3: %u, offset 3: 0x%08x %08x\n"), + (unsigned)bfd_getl32 (buf + 32), + (unsigned)bfd_getl32 (buf + 40), + (unsigned)bfd_getl32 (buf + 36)); + else + fprintf (file, _(" global name: %.*s\n"), buf[32], buf + 33); +} + +static void +evax_bfd_print_etir (FILE *file, const char *name, + unsigned char *rec, unsigned int rec_len) +{ + unsigned int off = sizeof (struct vms_egsd); + unsigned int sec_len; + + fprintf (file, _(" %s (len=%u+%u):\n"), name, + (unsigned)(rec_len - sizeof (struct vms_eobjrec)), + (unsigned)sizeof (struct vms_eobjrec)); + + for (off = sizeof (struct vms_eobjrec); off < rec_len; ) + { + struct vms_etir *etir = (struct vms_etir *)(rec + off); + unsigned char *buf; + unsigned int type; + unsigned int size; + + type = bfd_getl16 (etir->rectyp); + size = bfd_getl16 (etir->size); + buf = rec + off + sizeof (struct vms_etir); + + fprintf (file, _(" (type: %3u, size: 4+%3u): "), type, size - 4); + switch (type) + { + case ETIR__C_STA_GBL: + fprintf (file, _("STA_GBL (stack global) %.*s\n"), + buf[0], buf + 1); + break; + case ETIR__C_STA_LW: + fprintf (file, _("STA_LW (stack longword) 0x%08x\n"), + (unsigned)bfd_getl32 (buf)); + break; + case ETIR__C_STA_QW: + fprintf (file, _("STA_QW (stack quadword) 0x%08x %08x\n"), + (unsigned)bfd_getl32 (buf + 4), + (unsigned)bfd_getl32 (buf + 0)); + break; + case ETIR__C_STA_PQ: + fprintf (file, _("STA_PQ (stack psect base + offset)\n")); + fprintf (file, _(" psect: %u, offset: 0x%08x %08x\n"), + (unsigned)bfd_getl32 (buf + 0), + (unsigned)bfd_getl32 (buf + 8), + (unsigned)bfd_getl32 (buf + 4)); + break; + case ETIR__C_STA_LI: + fprintf (file, _("STA_LI (stack literal)\n")); + break; + case ETIR__C_STA_MOD: + fprintf (file, _("STA_MOD (stack module)\n")); + break; + case ETIR__C_STA_CKARG: + fprintf (file, _("STA_CKARG (compare procedure argument)\n")); + break; + + case ETIR__C_STO_B: + fprintf (file, _("STO_B (store byte)\n")); + break; + case ETIR__C_STO_W: + fprintf (file, _("STO_W (store word)\n")); + break; + case ETIR__C_STO_LW: + fprintf (file, _("STO_LW (store longword)\n")); + break; + case ETIR__C_STO_QW: + fprintf (file, _("STO_QW (store quadword)\n")); + break; + case ETIR__C_STO_IMMR: + { + unsigned int len = bfd_getl32 (buf); + fprintf (file, + _("STO_IMMR (store immediate repeat) %u bytes\n"), + len); + evax_bfd_print_hex (file, " ", buf + 4, len); + sec_len += len; + } + break; + case ETIR__C_STO_GBL: + fprintf (file, _("STO_GBL (store global) %.*s\n"), + buf[0], buf + 1); + break; + case ETIR__C_STO_CA: + fprintf (file, _("STO_CA (store code address) %.*s\n"), + buf[0], buf + 1); + break; + case ETIR__C_STO_RB: + fprintf (file, _("STO_RB (store relative branch)\n")); + break; + case ETIR__C_STO_AB: + fprintf (file, _("STO_AB (store absolute branch)\n")); + break; + case ETIR__C_STO_OFF: + fprintf (file, _("STO_OFF (store offset to psect)\n")); + break; + case ETIR__C_STO_IMM: + { + unsigned int len = bfd_getl32 (buf); + fprintf (file, + _("STO_IMM (store immediate) %u bytes\n"), + len); + evax_bfd_print_hex (file, " ", buf + 4, len); + sec_len += len; + } + break; + case ETIR__C_STO_GBL_LW: + fprintf (file, _("STO_GBL_LW (store global longword) %.*s\n"), + buf[0], buf + 1); + break; + case ETIR__C_STO_LP_PSB: + fprintf (file, _("STO_OFF (store LP with procedure signature)\n")); + break; + case ETIR__C_STO_HINT_GBL: + fprintf (file, _("STO_BR_GBL (store branch global) *todo*\n")); + break; + case ETIR__C_STO_HINT_PS: + fprintf (file, _("STO_BR_PS (store branch psect + offset) *todo*\n")); + break; + + case ETIR__C_OPR_NOP: + fprintf (file, _("OPR_NOP (no-operation)\n")); + break; + case ETIR__C_OPR_ADD: + fprintf (file, _("OPR_ADD (add)\n")); + break; + case ETIR__C_OPR_SUB: + fprintf (file, _("OPR_SUB (substract)\n")); + break; + case ETIR__C_OPR_MUL: + fprintf (file, _("OPR_MUL (multiply)\n")); + break; + case ETIR__C_OPR_DIV: + fprintf (file, _("OPR_DIV (divide)\n")); + break; + case ETIR__C_OPR_AND: + fprintf (file, _("OPR_AND (logical and)\n")); + break; + case ETIR__C_OPR_IOR: + fprintf (file, _("OPR_IOR (logical inclusive or)\n")); + break; + case ETIR__C_OPR_EOR: + fprintf (file, _("OPR_EOR (logical exclusive or)\n")); + break; + case ETIR__C_OPR_NEG: + fprintf (file, _("OPR_NEG (negate)\n")); + break; + case ETIR__C_OPR_COM: + fprintf (file, _("OPR_COM (complement)\n")); + break; + case ETIR__C_OPR_INSV: + fprintf (file, _("OPR_INSV (insert field)\n")); + break; + case ETIR__C_OPR_ASH: + fprintf (file, _("OPR_ASH (arithmetic shift)\n")); + break; + case ETIR__C_OPR_USH: + fprintf (file, _("OPR_USH (unsigned shift)\n")); + break; + case ETIR__C_OPR_ROT: + fprintf (file, _("OPR_ROT (rotate)\n")); + break; + case ETIR__C_OPR_SEL: + fprintf (file, _("OPR_SEL (select)\n")); + break; + case ETIR__C_OPR_REDEF: + fprintf (file, _("OPR_REDEF (redefine symbol to curr location)\n")); + break; + case ETIR__C_OPR_DFLIT: + fprintf (file, _("OPR_REDEF (define a literal)\n")); + break; + + case ETIR__C_STC_LP: + fprintf (file, _("STC_LP (store cond linkage pair)\n")); + break; + case ETIR__C_STC_LP_PSB: + fprintf (file, + _("STC_LP_PSB (store cond linkage pair + signature)\n")); + fprintf (file, _(" linkage index: %u, procedure: %.*s\n"), + (unsigned)bfd_getl32 (buf), buf[4], buf + 5); + buf += 4 + 1 + buf[4]; + fprintf (file, _(" signature: %.*s\n"), buf[0], buf + 1); + break; + case ETIR__C_STC_GBL: + fprintf (file, _("STC_GBL (store cond global)\n")); + fprintf (file, _(" linkage index: %u, global: %.*s\n"), + (unsigned)bfd_getl32 (buf), buf[4], buf + 5); + break; + case ETIR__C_STC_GCA: + fprintf (file, _("STC_GCA (store cond code address)\n")); + fprintf (file, _(" linkage index: %u, procedure name: %.*s\n"), + (unsigned)bfd_getl32 (buf), buf[4], buf + 5); + break; + case ETIR__C_STC_PS: + fprintf (file, _("STC_PS (store cond psect + offset)\n")); + fprintf (file, + _(" linkage index: %u, psect: %u, offset: 0x%08x %08x\n"), + (unsigned)bfd_getl32 (buf), + (unsigned)bfd_getl32 (buf + 4), + (unsigned)bfd_getl32 (buf + 12), + (unsigned)bfd_getl32 (buf + 8)); + break; + case ETIR__C_STC_NOP_GBL: + fprintf (file, _("STC_NOP_GBL (store cond NOP at global addr)\n")); + evax_bfd_print_etir_stc_ir (file, buf, 0); + break; + case ETIR__C_STC_NOP_PS: + fprintf (file, _("STC_NOP_PS (store cond NOP at psect + offset)\n")); + evax_bfd_print_etir_stc_ir (file, buf, 1); + break; + case ETIR__C_STC_BSR_GBL: + fprintf (file, _("STC_BSR_GBL (store cond BSR at global addr)\n")); + evax_bfd_print_etir_stc_ir (file, buf, 0); + break; + case ETIR__C_STC_BSR_PS: + fprintf (file, _("STC_BSR_PS (store cond BSR at psect + offset)\n")); + evax_bfd_print_etir_stc_ir (file, buf, 1); + break; + case ETIR__C_STC_LDA_GBL: + fprintf (file, _("STC_LDA_GBL (store cond LDA at global addr)\n")); + evax_bfd_print_etir_stc_ir (file, buf, 0); + break; + case ETIR__C_STC_LDA_PS: + fprintf (file, _("STC_LDA_PS (store cond LDA at psect + offset)\n")); + evax_bfd_print_etir_stc_ir (file, buf, 1); + break; + case ETIR__C_STC_BOH_GBL: + fprintf (file, _("STC_BOH_GBL (store cond BOH at global addr)\n")); + evax_bfd_print_etir_stc_ir (file, buf, 0); + break; + case ETIR__C_STC_BOH_PS: + fprintf (file, _("STC_BOH_PS (store cond BOH at psect + offset)\n")); + evax_bfd_print_etir_stc_ir (file, buf, 1); + break; + case ETIR__C_STC_NBH_GBL: + fprintf (file, + _("STC_NBH_GBL (store cond or hint at global addr)\n")); + break; + case ETIR__C_STC_NBH_PS: + fprintf (file, + _("STC_NBH_PS (store cond or hint at psect + offset)\n")); + break; + + case ETIR__C_CTL_SETRB: + fprintf (file, _("CTL_SETRB (set relocation base)\n")); + sec_len += 4; + break; + case ETIR__C_CTL_AUGRB: + { + unsigned int val = bfd_getl32 (buf); + fprintf (file, _("CTL_AUGRB (augment relocation base) %u\n"), val); + } + break; + case ETIR__C_CTL_DFLOC: + fprintf (file, _("CTL_DFLOC (define location)\n")); + break; + case ETIR__C_CTL_STLOC: + fprintf (file, _("CTL_STLOC (set location)\n")); + break; + case ETIR__C_CTL_STKDL: + fprintf (file, _("CTL_STKDL (stack defined location)\n")); + break; + default: + fprintf (file, _("*unhandled*\n")); + break; + } + off += size; + } +} + +static void +evax_bfd_print_eobj (struct bfd *abfd, FILE *file) +{ + bfd_boolean is_first = TRUE; + bfd_boolean has_records = FALSE; + + while (1) + { + unsigned int rec_len; + unsigned int pad_len; + unsigned char *rec; + unsigned int hdr_size; + unsigned int type; + + if (is_first) + { + unsigned char buf[6]; + + is_first = FALSE; + + /* Read 6 bytes. */ + if (bfd_bread (buf, sizeof (buf), abfd) != sizeof (buf)) + { + fprintf (file, _("cannot read GST record length\n")); + return; + } + rec_len = bfd_getl16 (buf + 0); + if (rec_len == bfd_getl16 (buf + 4) + && bfd_getl16 (buf + 2) == EOBJ__C_EMH) + { + /* The format is raw: record-size, type, record-size. */ + has_records = TRUE; + pad_len = (rec_len + 1) & ~1U; + hdr_size = 4; + } + else if (rec_len == EOBJ__C_EMH) + { + has_records = FALSE; + pad_len = bfd_getl16 (buf + 2); + hdr_size = 6; + } + else + { + /* Ill-formed. */ + fprintf (file, _("cannot find EMH in first GST record\n")); + return; + } + rec = bfd_malloc (pad_len); + memcpy (rec, buf + sizeof (buf) - hdr_size, hdr_size); + } + else + { + unsigned int rec_len2 = 0; + unsigned char hdr[4]; + + if (has_records) + { + unsigned char buf_len[2]; + + if (bfd_bread (buf_len, sizeof (buf_len), abfd) + != sizeof (buf_len)) + { + fprintf (file, _("cannot read GST record length\n")); + return; + } + rec_len2 = (unsigned)bfd_getl16 (buf_len); + } + + if (bfd_bread (hdr, sizeof (hdr), abfd) != sizeof (hdr)) + { + fprintf (file, _("cannot read GST record header\n")); + return; + } + rec_len = (unsigned)bfd_getl16 (hdr + 2); + if (has_records) + pad_len = (rec_len + 1) & ~1U; + else + pad_len = rec_len; + rec = bfd_malloc (pad_len); + memcpy (rec, hdr, sizeof (hdr)); + hdr_size = sizeof (hdr); + if (has_records && rec_len2 != rec_len) + { + fprintf (file, _(" corrupted GST\n")); + break; + } + } + + if (bfd_bread (rec + hdr_size, pad_len - hdr_size, abfd) + != pad_len - hdr_size) + { + fprintf (file, _("cannot read GST record\n")); + return; + } + + type = (unsigned)bfd_getl16 (rec); + + switch (type) + { + case EOBJ__C_EMH: + evax_bfd_print_emh (file, rec, rec_len); + break; + case EOBJ__C_EGSD: + evax_bfd_print_egsd (file, rec, rec_len); + break; + case EOBJ__C_EEOM: + evax_bfd_print_eeom (file, rec, rec_len); + free (rec); + return; + break; + case EOBJ__C_ETIR: + evax_bfd_print_etir (file, "ETIR", rec, rec_len); + break; + case EOBJ__C_EDBG: + evax_bfd_print_etir (file, "EDBG", rec, rec_len); + break; + case EOBJ__C_ETBT: + evax_bfd_print_etir (file, "ETBT", rec, rec_len); + break; + default: + fprintf (file, _(" unhandled EOBJ record type %u\n"), type); + break; + } + free (rec); + } +} + +static void +evax_bfd_print_relocation_records (FILE *file, const unsigned char *rel, + unsigned int stride) +{ + while (1) + { + unsigned int base; + unsigned int count; + unsigned int j; + + count = bfd_getl32 (rel + 0); + + if (count == 0) + break; + base = bfd_getl32 (rel + 4); + + fprintf (file, _(" bitcount: %u, base addr: 0x%08x\n"), + count, base); + + rel += 8; + for (j = 0; count > 0; j += 4, count -= 32) + { + unsigned int k; + unsigned int n = 0; + unsigned int val; + + val = bfd_getl32 (rel); + rel += 4; + + fprintf (file, _(" bitmap: 0x%08x (count: %u):\n"), val, count); + + for (k = 0; k < 32; k++) + if (val & (1 << k)) + { + if (n == 0) + fputs (" ", file); + fprintf (file, _(" %08x"), base + (j * 8 + k) * stride); + n++; + if (n == 8) + { + fputs ("\n", file); + n = 0; + } + } + if (n) + fputs ("\n", file); + } + } +} + +static void +evax_bfd_print_address_fixups (FILE *file, const unsigned char *rel) +{ + while (1) + { + unsigned int j; + unsigned int count; + + count = bfd_getl32 (rel + 0); + if (count == 0) + return; + fprintf (file, _(" image %u (%u entries)\n"), + (unsigned)bfd_getl32 (rel + 4), count); + rel += 8; + for (j = 0; j < count; j++) + { + fprintf (file, _(" offset: 0x%08x, val: 0x%08x\n"), + (unsigned)bfd_getl32 (rel + 0), + (unsigned)bfd_getl32 (rel + 4)); + rel += 8; + } + } +} + +static void +evax_bfd_print_reference_fixups (FILE *file, const unsigned char *rel) +{ + unsigned int count; + + while (1) + { + unsigned int j; + unsigned int n = 0; + + count = bfd_getl32 (rel + 0); + if (count == 0) + break; + fprintf (file, _(" image %u (%u entries), offsets:\n"), + (unsigned)bfd_getl32 (rel + 4), count); + rel += 8; + for (j = 0; j < count; j++) + { + if (n == 0) + fputs (" ", file); + fprintf (file, _(" 0x%08x"), (unsigned)bfd_getl32 (rel)); + n++; + if (n == 7) + { + fputs ("\n", file); + n = 0; + } + rel += 4; + } + if (n) + fputs ("\n", file); + } +} + +static void +evax_bfd_print_indent (int indent, FILE *file) +{ + for (; indent; indent--) + fputc (' ', file); +} + +static const char * +evax_bfd_get_dsc_name (unsigned int v) +{ + switch (v) + { + case DSC__K_DTYPE_Z: + return "Z (Unspecified)"; + case DSC__K_DTYPE_V: + return "V (Bit)"; + case DSC__K_DTYPE_BU: + return "BU (Byte logical)"; + case DSC__K_DTYPE_WU: + return "WU (Word logical)"; + case DSC__K_DTYPE_LU: + return "LU (Longword logical)"; + case DSC__K_DTYPE_QU: + return "QU (Quadword logical)"; + case DSC__K_DTYPE_B: + return "B (Byte integer)"; + case DSC__K_DTYPE_W: + return "W (Word integer)"; + case DSC__K_DTYPE_L: + return "L (Longword integer)"; + case DSC__K_DTYPE_Q: + return "Q (Quadword integer)"; + case DSC__K_DTYPE_F: + return "F (Single-precision floating)"; + case DSC__K_DTYPE_D: + return "D (Double-precision floating)"; + case DSC__K_DTYPE_FC: + return "FC (Complex)"; + case DSC__K_DTYPE_DC: + return "DC (Double-precision Complex)"; + case DSC__K_DTYPE_T: + return "T (ASCII text string)"; + case DSC__K_DTYPE_NU: + return "NU (Numeric string, unsigned)"; + case DSC__K_DTYPE_NL: + return "NL (Numeric string, left separate sign)"; + case DSC__K_DTYPE_NLO: + return "NLO (Numeric string, left overpunched sign)"; + case DSC__K_DTYPE_NR: + return "NR (Numeric string, right separate sign)"; + case DSC__K_DTYPE_NRO: + return "NRO (Numeric string, right overpunched sig)"; + case DSC__K_DTYPE_NZ: + return "NZ (Numeric string, zoned sign)"; + case DSC__K_DTYPE_P: + return "P (Packed decimal string)"; + case DSC__K_DTYPE_ZI: + return "ZI (Sequence of instructions)"; + case DSC__K_DTYPE_ZEM: + return "ZEM (Procedure entry mask)"; + case DSC__K_DTYPE_DSC: + return "DSC (Descriptor, used for arrays of dyn strings)"; + case DSC__K_DTYPE_OU: + return "OU (Octaword logical)"; + case DSC__K_DTYPE_O: + return "O (Octaword integer)"; + case DSC__K_DTYPE_G: + return "G (Double precision G floating, 64 bit)"; + case DSC__K_DTYPE_H: + return "H (Quadruple precision floating, 128 bit)"; + case DSC__K_DTYPE_GC: + return "GC (Double precision complex, G floating)"; + case DSC__K_DTYPE_HC: + return "HC (Quadruple precision complex, H floating)"; + case DSC__K_DTYPE_CIT: + return "CIT (COBOL intermediate temporary)"; + case DSC__K_DTYPE_BPV: + return "BPV (Bound Procedure Value)"; + case DSC__K_DTYPE_BLV: + return "BLV (Bound Label Value)"; + case DSC__K_DTYPE_VU: + return "VU (Bit Unaligned)"; + case DSC__K_DTYPE_ADT: + return "ADT (Absolute Date-Time)"; + case DSC__K_DTYPE_VT: + return "VT (Varying Text)"; + case DSC__K_DTYPE_T2: + return "T2 (16-bit char)"; + case DSC__K_DTYPE_VT2: + return "VT2 (16-bit varying char)"; + default: + return "?? (unknown)"; + } +} + +static void +evax_bfd_print_desc (const unsigned char *buf, int indent, FILE *file) +{ + unsigned char bclass = buf[3]; + unsigned char dtype = buf[2]; + unsigned int len = (unsigned)bfd_getl16 (buf); + unsigned int pointer = (unsigned)bfd_getl32 (buf + 4); + + evax_bfd_print_indent (indent, file); + + if (len == 1 && pointer == 0xffffffffUL) + { + /* 64 bits. */ + fprintf (file, _("64 bits *unhandled*\n")); + } + else + { + fprintf (file, _("class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"), + bclass, dtype, len, pointer); + switch (bclass) + { + case DSC__K_CLASS_NCA: + { + const struct vms_dsc_nca *dsc = (const void *)buf; + unsigned int i; + const unsigned char *b; + + evax_bfd_print_indent (indent, file); + fprintf (file, _("non-contiguous array of %s\n"), + evax_bfd_get_dsc_name (dsc->dtype)); + evax_bfd_print_indent (indent + 1, file); + fprintf (file, + _("dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"), + dsc->dimct, dsc->aflags, dsc->digits, dsc->scale); + evax_bfd_print_indent (indent + 1, file); + fprintf (file, + _("arsize: %u, a0: 0x%08x\n"), + (unsigned)bfd_getl32 (dsc->arsize), + (unsigned)bfd_getl32 (dsc->a0)); + evax_bfd_print_indent (indent + 1, file); + fprintf (file, _("Strides:\n")); + b = buf + sizeof (*dsc); + for (i = 0; i < dsc->dimct; i++) + { + evax_bfd_print_indent (indent + 2, file); + fprintf (file, _("[%u]: %u\n"), i + 1, + (unsigned)bfd_getl32 (b)); + b += 4; + } + evax_bfd_print_indent (indent + 1, file); + fprintf (file, _("Bounds:\n")); + b = buf + sizeof (*dsc); + for (i = 0; i < dsc->dimct; i++) + { + evax_bfd_print_indent (indent + 2, file); + fprintf (file, _("[%u]: Lower: %u, upper: %u\n"), i + 1, + (unsigned)bfd_getl32 (b + 0), + (unsigned)bfd_getl32 (b + 4)); + b += 8; + } + } + break; + case DSC__K_CLASS_UBS: + { + const struct vms_dsc_ubs *ubs = (const void *)buf; + + evax_bfd_print_indent (indent, file); + fprintf (file, _("unaligned bit-string of %s\n"), + evax_bfd_get_dsc_name (ubs->dtype)); + evax_bfd_print_indent (indent + 1, file); + fprintf (file, + _("base: %u, pos: %u\n"), + (unsigned)bfd_getl32 (ubs->base), + (unsigned)bfd_getl32 (ubs->pos)); + } + break; + default: + fprintf (file, _("*unhandled*\n")); + break; + } + } +} + +static unsigned int +evax_bfd_print_valspec (const unsigned char *buf, int indent, FILE *file) +{ + unsigned int vflags = buf[0]; + unsigned int value = (unsigned)bfd_getl32 (buf + 1); + unsigned int len = 5; + + evax_bfd_print_indent (indent, file); + fprintf (file, _("vflags: 0x%02x, value: 0x%08x "), vflags, value); + buf += 5; + + switch (vflags) + { + case DST__K_VFLAGS_NOVAL: + fprintf (file, _("(no value)\n")); + break; + case DST__K_VFLAGS_NOTACTIVE: + fprintf (file, _("(not active)\n")); + break; + case DST__K_VFLAGS_UNALLOC: + fprintf (file, _("(not allocated)\n")); + break; + case DST__K_VFLAGS_DSC: + fprintf (file, _("(descriptor)\n")); + evax_bfd_print_desc (buf + value, indent + 1, file); + break; + case DST__K_VFLAGS_TVS: + fprintf (file, _("(trailing value)\n")); + break; + case DST__K_VS_FOLLOWS: + fprintf (file, _("(value spec follows)\n")); + break; + case DST__K_VFLAGS_BITOFFS: + fprintf (file, _("(at bit offset %u)\n"), value); + break; + default: + fprintf (file, _("(reg: %u, disp: %u, indir: %u, kind: "), + (vflags & DST__K_REGNUM_MASK) >> DST__K_REGNUM_SHIFT, + vflags & DST__K_DISP ? 1 : 0, + vflags & DST__K_INDIR ? 1 : 0); + switch (vflags & DST__K_VALKIND_MASK) + { + case DST__K_VALKIND_LITERAL: + fputs (_("literal"), file); + break; + case DST__K_VALKIND_ADDR: + fputs (_("address"), file); + break; + case DST__K_VALKIND_DESC: + fputs (_("desc"), file); + break; + case DST__K_VALKIND_REG: + fputs (_("reg"), file); + break; + } + fputs (")\n", file); + break; + } + return len; +} + +static void +evax_bfd_print_typspec (const unsigned char *buf, int indent, FILE *file) +{ + unsigned char kind = buf[2]; + unsigned int len = (unsigned)bfd_getl16 (buf); + + evax_bfd_print_indent (indent, file); + fprintf (file, ("len: %2u, kind: %2u "), len, kind); + buf += 3; + switch (kind) + { + case DST__K_TS_ATOM: + fprintf (file, ("atomic, type=0x%02x %s\n"), + buf[0], evax_bfd_get_dsc_name (buf[0])); + break; + case DST__K_TS_IND: + fprintf (file, ("indirect, defined at 0x%08x\n"), + (unsigned)bfd_getl32 (buf)); + break; + case DST__K_TS_TPTR: + fprintf (file, ("typed pointer\n")); + evax_bfd_print_typspec (buf, indent + 1, file); + break; + case DST__K_TS_PTR: + fprintf (file, ("pointer\n")); + break; + case DST__K_TS_ARRAY: + { + const unsigned char *vs; + unsigned int vec_len; + unsigned int i; + + fprintf (file, ("array, dim: %u, bitmap: "), buf[0]); + vec_len = (buf[0] + 1 + 7) / 8; + for (i = 0; i < vec_len; i++) + fprintf (file, " %02x", buf[i + 1]); + fputc ('\n', file); + vs = buf + 1 + vec_len; + evax_bfd_print_indent (indent, file); + fprintf (file, ("array descriptor:\n")); + vs += evax_bfd_print_valspec (vs, indent + 1, file); + for (i = 0; i < buf[0] + 1U; i++) + if (buf[1 + i / 8] & (1 << (i % 8))) + { + evax_bfd_print_indent (indent, file); + if (i == 0) + fprintf (file, ("type spec for element:\n")); + else + fprintf (file, ("type spec for subscript %u:\n"), i); + evax_bfd_print_typspec (vs, indent + 1, file); + vs += bfd_getl16 (vs); + } + } + break; + default: + fprintf (file, ("*unhandled*\n")); + } +} + +static void +evax_bfd_print_dst (struct bfd *abfd, unsigned int dst_size, FILE *file) +{ + unsigned int off = 0; + unsigned int pc = 0; + unsigned int line = 0; + + fprintf (file, _("Debug symbol table:\n")); + + while (dst_size > 0) + { + struct vms_dst_header dsth; + unsigned int len; + unsigned int type; + unsigned char *buf; + + if (bfd_bread (&dsth, sizeof (dsth), abfd) != sizeof (dsth)) + { + fprintf (file, _("cannot read DST header\n")); + return; + } + len = bfd_getl16 (dsth.length); + type = bfd_getl16 (dsth.type); + fprintf (file, _(" type: %3u, len: %3u (at 0x%08x): "), + type, len, off); + if (len == 0) + { + fputc ('\n', file); + break; + } + len++; + dst_size -= len; + off += len; + len -= sizeof (dsth); + buf = bfd_malloc (len); + if (bfd_bread (buf, len, abfd) != len) + { + fprintf (file, _("cannot read DST symbol\n")); + return; + } + switch (type) + { + case DSC__K_DTYPE_V: + case DSC__K_DTYPE_BU: + case DSC__K_DTYPE_WU: + case DSC__K_DTYPE_LU: + case DSC__K_DTYPE_QU: + case DSC__K_DTYPE_B: + case DSC__K_DTYPE_W: + case DSC__K_DTYPE_L: + case DSC__K_DTYPE_Q: + case DSC__K_DTYPE_F: + case DSC__K_DTYPE_D: + case DSC__K_DTYPE_FC: + case DSC__K_DTYPE_DC: + case DSC__K_DTYPE_T: + case DSC__K_DTYPE_NU: + case DSC__K_DTYPE_NL: + case DSC__K_DTYPE_NLO: + case DSC__K_DTYPE_NR: + case DSC__K_DTYPE_NRO: + case DSC__K_DTYPE_NZ: + case DSC__K_DTYPE_P: + case DSC__K_DTYPE_ZI: + case DSC__K_DTYPE_ZEM: + case DSC__K_DTYPE_DSC: + case DSC__K_DTYPE_OU: + case DSC__K_DTYPE_O: + case DSC__K_DTYPE_G: + case DSC__K_DTYPE_H: + case DSC__K_DTYPE_GC: + case DSC__K_DTYPE_HC: + case DSC__K_DTYPE_CIT: + case DSC__K_DTYPE_BPV: + case DSC__K_DTYPE_BLV: + case DSC__K_DTYPE_VU: + case DSC__K_DTYPE_ADT: + case DSC__K_DTYPE_VT: + case DSC__K_DTYPE_T2: + case DSC__K_DTYPE_VT2: + fprintf (file, _("standard data: %s\n"), + evax_bfd_get_dsc_name (type)); + evax_bfd_print_valspec (buf, 4, file); + fprintf (file, _(" name: %.*s\n"), buf[5], buf + 6); + break; + case DST__K_MODBEG: + { + struct vms_dst_modbeg *dst = (void *)buf; + const char *name = (const char *)buf + sizeof (*dst); + + fprintf (file, _("modbeg\n")); + fprintf (file, _(" flags: %d, language: %u, " + "major: %u, minor: %u\n"), + dst->flags, + (unsigned)bfd_getl32 (dst->language), + (unsigned)bfd_getl16 (dst->major), + (unsigned)bfd_getl16 (dst->minor)); + fprintf (file, _(" module name: %.*s\n"), + name[0], name + 1); + name += name[0] + 1; + fprintf (file, _(" compiler : %.*s\n"), + name[0], name + 1); + } + break; + case DST__K_MODEND: + fprintf (file, _("modend\n")); + break; + case DST__K_RTNBEG: + { + struct vms_dst_rtnbeg *dst = (void *)buf; + const char *name = (const char *)buf + sizeof (*dst); + + fputs (_("rtnbeg\n"), file); + fprintf (file, _(" flags: %u, address: 0x%08x, " + "pd-address: 0x%08x\n"), + dst->flags, + (unsigned)bfd_getl32 (dst->address), + (unsigned)bfd_getl32 (dst->pd_address)); + fprintf (file, _(" routine name: %.*s\n"), + name[0], name + 1); + } + break; + case DST__K_RTNEND: + { + struct vms_dst_rtnend *dst = (void *)buf; + + fprintf (file, _("rtnend: size 0x%08x\n"), + (unsigned)bfd_getl32 (dst->size)); + } + break; + case DST__K_PROLOG: + { + struct vms_dst_prolog *dst = (void *)buf; + + fprintf (file, _("prolog: bkpt address 0x%08x\n"), + (unsigned)bfd_getl32 (dst->bkpt_addr)); + } + break; + case DST__K_EPILOG: + { + struct vms_dst_epilog *dst = (void *)buf; + + fprintf (file, _("epilog: flags: %u, count: %u\n"), + dst->flags, (unsigned)bfd_getl32 (dst->count)); + } + break; + case DST__K_BLKBEG: + { + struct vms_dst_blkbeg *dst = (void *)buf; + const char *name = (const char *)buf + sizeof (*dst); + + fprintf (file, _("blkbeg: address: 0x%08x, name: %.*s\n"), + (unsigned)bfd_getl32 (dst->address), + name[0], name + 1); + } + break; + case DST__K_BLKEND: + { + struct vms_dst_blkend *dst = (void *)buf; + + fprintf (file, _("blkend: size: 0x%08x\n"), + (unsigned)bfd_getl32 (dst->size)); + } + break; + case DST__K_TYPSPEC: + { + fprintf (file, _("typspec (len: %u)\n"), len); + fprintf (file, _(" name: %.*s\n"), buf[0], buf + 1); + evax_bfd_print_typspec (buf + 1 + buf[0], 5, file); + } + break; + case DST__K_SEPTYP: + { + fprintf (file, _("septyp, name: %.*s\n"), buf[5], buf + 6); + evax_bfd_print_valspec (buf, 4, file); + } + break; + case DST__K_RECBEG: + { + struct vms_dst_recbeg *recbeg = (void *)buf; + const char *name = (const char *)buf + sizeof (*recbeg); + + fprintf (file, _("recbeg: name: %.*s\n"), name[0], name + 1); + evax_bfd_print_valspec (buf, 4, file); + fprintf (file, (" len: %u bits\n"), + (unsigned)bfd_getl32 (name + 1 + name[0])); + } + break; + case DST__K_RECEND: + fprintf (file, _("recend\n")); + break; + case DST__K_ENUMBEG: + fprintf (file, _("enumbeg, len: %u, name: %.*s\n"), + buf[0], buf[1], buf + 2); + break; + case DST__K_ENUMELT: + fprintf (file, _("enumelt, name: %.*s\n"), buf[5], buf + 6); + evax_bfd_print_valspec (buf, 4, file); + break; + case DST__K_ENUMEND: + fprintf (file, _("enumend\n")); + break; + case DST__K_LABEL: + { + struct vms_dst_label *lab = (void *)buf; + fprintf (file, ("label, name: %.*s\n"), + lab->name[0], lab->name + 1); + fprintf (file, (" address: 0x%08x\n"), + (unsigned)bfd_getl32 (lab->value)); + } + break; + case DST__K_DIS_RANGE: + { + unsigned int cnt = bfd_getl32 (buf); + unsigned char *rng = buf + 4; + unsigned int i; + + fprintf (file, _("discontiguous range (nbr: %u)\n"), cnt); + for (i = 0; i < cnt; i++, rng += 8) + fprintf (file, _(" address: 0x%08x, size: %u\n"), + (unsigned)bfd_getl32 (rng), + (unsigned)bfd_getl32 (rng + 4)); + + } + break; + case DST__K_LINE_NUM: + { + unsigned char *buf_orig = buf; + + fprintf (file, _("line num (len: %u)\n"), len); + + while (len > 0) + { + signed char cmd; + unsigned char cmdlen; + unsigned int val; + + cmd = buf[0]; + cmdlen = 0; + + fputs (" ", file); + + switch (cmd) + { + case DST__K_DELTA_PC_W: + val = bfd_getl16 (buf + 1); + fprintf (file, _("delta_pc_w %u\n"), val); + pc += val; + line++; + cmdlen = 3; + break; + case DST__K_INCR_LINUM: + val = buf[1]; + fprintf (file, _("incr_linum(b): +%u\n"), val); + line += val; + cmdlen = 2; + break; + case DST__K_INCR_LINUM_W: + val = bfd_getl16 (buf + 1); + fprintf (file, _("incr_linum_w: +%u\n"), val); + line += val; + cmdlen = 3; + break; + case DST__K_INCR_LINUM_L: + val = bfd_getl32 (buf + 1); + fprintf (file, _("incr_linum_l: +%u\n"), val); + line += val; + cmdlen = 5; + break; + case DST__K_SET_LINUM: + line = bfd_getl16 (buf + 1); + fprintf (file, _("set_line_num(w) %u\n"), line); + cmdlen = 3; + break; + case DST__K_SET_LINUM_B: + line = buf[1]; + fprintf (file, _("set_line_num_b %u\n"), line); + cmdlen = 2; + break; + case DST__K_SET_LINUM_L: + line = bfd_getl32 (buf + 1); + fprintf (file, _("set_line_num_l %u\n"), line); + cmdlen = 5; + break; + case DST__K_SET_ABS_PC: + pc = bfd_getl32 (buf + 1); + fprintf (file, _("set_abs_pc: 0x%08x\n"), pc); + cmdlen = 5; + break; + case DST__K_DELTA_PC_L: + fprintf (file, _("delta_pc_l: +0x%08x\n"), + (unsigned)bfd_getl32 (buf + 1)); + cmdlen = 5; + break; + case DST__K_TERM: + fprintf (file, _("term(b): 0x%02x"), buf[1]); + pc += buf[1]; + fprintf (file, _(" pc: 0x%08x\n"), pc); + cmdlen = 2; + break; + case DST__K_TERM_W: + val = bfd_getl16 (buf + 1); + fprintf (file, _("term_w: 0x%04x"), val); + pc += val; + fprintf (file, _(" pc: 0x%08x\n"), pc); + cmdlen = 3; + break; + default: + if (cmd <= 0) + { + fprintf (file, _("delta pc +%-4d"), -cmd); + line++; /* FIXME: curr increment. */ + pc += -cmd; + fprintf (file, _(" pc: 0x%08x line: %5u\n"), + pc, line); + cmdlen = 1; + } + else + fprintf (file, _(" *unhandled* cmd %u\n"), cmd); + break; + } + if (cmdlen == 0) + break; + len -= cmdlen; + buf += cmdlen; + } + buf = buf_orig; + } + break; + case DST__K_SOURCE: + { + unsigned char *buf_orig = buf; + + fprintf (file, _("source (len: %u)\n"), len); + + while (len > 0) + { + signed char cmd = buf[0]; + unsigned char cmdlen = 0; + + switch (cmd) + { + case DST__K_SRC_DECLFILE: + { + struct vms_dst_src_decl_src *src = (void *)(buf + 1); + const char *name; + + fprintf (file, _(" declfile: len: %u, flags: %u, " + "fileid: %u\n"), + src->length, src->flags, + (unsigned)bfd_getl16 (src->fileid)); + fprintf (file, _(" rms: cdt: 0x%08x %08x, " + "ebk: 0x%08x, ffb: 0x%04x, " + "rfo: %u\n"), + (unsigned)bfd_getl32 (src->rms_cdt + 4), + (unsigned)bfd_getl32 (src->rms_cdt + 0), + (unsigned)bfd_getl32 (src->rms_ebk), + (unsigned)bfd_getl16 (src->rms_ffb), + src->rms_rfo); + name = (const char *)buf + 1 + sizeof (*src); + fprintf (file, _(" filename : %.*s\n"), + name[0], name + 1); + name += name[0] + 1; + fprintf (file, _(" module name: %.*s\n"), + name[0], name + 1); + cmdlen = 2 + src->length; + } + break; + case DST__K_SRC_SETFILE: + fprintf (file, _(" setfile %u\n"), + (unsigned)bfd_getl16 (buf + 1)); + cmdlen = 3; + break; + case DST__K_SRC_SETREC_W: + fprintf (file, _(" setrec %u\n"), + (unsigned)bfd_getl16 (buf + 1)); + cmdlen = 3; + break; + case DST__K_SRC_SETREC_L: + fprintf (file, _(" setrec %u\n"), + (unsigned)bfd_getl32 (buf + 1)); + cmdlen = 5; + break; + case DST__K_SRC_SETLNUM_W: + fprintf (file, _(" setlnum %u\n"), + (unsigned)bfd_getl16 (buf + 1)); + cmdlen = 3; + break; + case DST__K_SRC_SETLNUM_L: + fprintf (file, _(" setlnum %u\n"), + (unsigned)bfd_getl32 (buf + 1)); + cmdlen = 5; + break; + case DST__K_SRC_DEFLINES_W: + fprintf (file, _(" deflines %u\n"), + (unsigned)bfd_getl16 (buf + 1)); + cmdlen = 3; + break; + case DST__K_SRC_DEFLINES_B: + fprintf (file, _(" deflines %u\n"), buf[1]); + cmdlen = 2; + break; + case DST__K_SRC_FORMFEED: + fprintf (file, _(" formfeed\n")); + cmdlen = 1; + break; + default: + fprintf (file, _(" *unhandled* cmd %u\n"), cmd); + break; + } + if (cmdlen == 0) + break; + len -= cmdlen; + buf += cmdlen; + } + buf = buf_orig; + } + break; + default: + fprintf (file, _("*unhandled* dst type %u\n"), type); + break; + } + free (buf); + } +} + +static void +evax_bfd_print_image (bfd *abfd, FILE *file) +{ + struct vms_eihd eihd; + const char *name; + unsigned int val; + unsigned int eiha_off; + unsigned int eihi_off; + unsigned int eihs_off; + unsigned int eisd_off; + unsigned int eihef_off = 0; + unsigned int eihnp_off = 0; + unsigned int dmt_vbn = 0; + unsigned int dmt_size = 0; + unsigned int dst_vbn = 0; + unsigned int dst_size = 0; + unsigned int gst_vbn = 0; + unsigned int gst_size = 0; + unsigned int eiaf_vbn = 0; + unsigned int eiaf_size = 0; + unsigned int eihvn_off; + + if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) + || bfd_bread (&eihd, sizeof (eihd), abfd) != sizeof (eihd)) + { + fprintf (file, _("cannot read EIHD\n")); + return; + } + fprintf (file, _("EIHD: (size: %u, nbr blocks: %u)\n"), + (unsigned)bfd_getl32 (eihd.size), + (unsigned)bfd_getl32 (eihd.hdrblkcnt)); + fprintf (file, _(" majorid: %u, minorid: %u\n"), + (unsigned)bfd_getl32 (eihd.majorid), + (unsigned)bfd_getl32 (eihd.minorid)); + + val = (unsigned)bfd_getl32 (eihd.imgtype); + switch (val) + { + case EIHD__K_EXE: + name = _("executable"); + break; + case EIHD__K_LIM: + name = _("linkable image"); + break; + default: + name = _("unknown"); + break; + } + fprintf (file, _(" image type: %u (%s)"), val, name); + + val = (unsigned)bfd_getl32 (eihd.subtype); + switch (val) + { + case EIHD__C_NATIVE: + name = _("native"); + break; + case EIHD__C_CLI: + name = _("CLI"); + break; + default: + name = _("unknown"); + break; + } + fprintf (file, _(", subtype: %u (%s)\n"), val, name); + + eisd_off = bfd_getl32 (eihd.isdoff); + eiha_off = bfd_getl32 (eihd.activoff); + eihi_off = bfd_getl32 (eihd.imgidoff); + eihs_off = bfd_getl32 (eihd.symdbgoff); + fprintf (file, _(" offsets: isd: %u, activ: %u, symdbg: %u, " + "imgid: %u, patch: %u\n"), + eisd_off, eiha_off, eihs_off, eihi_off, + (unsigned)bfd_getl32 (eihd.patchoff)); + fprintf (file, _(" fixup info rva: ")); + bfd_fprintf_vma (abfd, file, bfd_getl64 (eihd.iafva)); + fprintf (file, _(", symbol vector rva: ")); + bfd_fprintf_vma (abfd, file, bfd_getl64 (eihd.symvva)); + eihvn_off = bfd_getl32 (eihd.version_array_off); + fprintf (file, _("\n" + " version array off: %u\n"), + eihvn_off); + fprintf (file, + _(" img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"), + (unsigned)bfd_getl32 (eihd.imgiocnt), + (unsigned)bfd_getl32 (eihd.iochancnt), + (unsigned)bfd_getl32 (eihd.privreqs + 4), + (unsigned)bfd_getl32 (eihd.privreqs + 0)); + val = (unsigned)bfd_getl32 (eihd.lnkflags); + fprintf (file, _(" linker flags: %08x:"), val); + if (val & EIHD__M_LNKDEBUG) + fprintf (file, " LNKDEBUG"); + if (val & EIHD__M_LNKNOTFR) + fprintf (file, " LNKNOTFR"); + if (val & EIHD__M_NOP0BUFS) + fprintf (file, " NOP0BUFS"); + if (val & EIHD__M_PICIMG) + fprintf (file, " PICIMG"); + if (val & EIHD__M_P0IMAGE) + fprintf (file, " P0IMAGE"); + if (val & EIHD__M_DBGDMT) + fprintf (file, " DBGDMT"); + if (val & EIHD__M_INISHR) + fprintf (file, " INISHR"); + if (val & EIHD__M_XLATED) + fprintf (file, " XLATED"); + if (val & EIHD__M_BIND_CODE_SEC) + fprintf (file, " BIND_CODE_SEC"); + if (val & EIHD__M_BIND_DATA_SEC) + fprintf (file, " BIND_DATA_SEC"); + if (val & EIHD__M_MKTHREADS) + fprintf (file, " MKTHREADS"); + if (val & EIHD__M_UPCALLS) + fprintf (file, " UPCALLS"); + if (val & EIHD__M_OMV_READY) + fprintf (file, " OMV_READY"); + if (val & EIHD__M_EXT_BIND_SECT) + fprintf (file, " EXT_BIND_SECT"); + fprintf (file, "\n"); + fprintf (file, _(" ident: 0x%08x, sysver: 0x%08x, " + "match ctrl: %u, symvect_size: %u\n"), + (unsigned)bfd_getl32 (eihd.ident), + (unsigned)bfd_getl32 (eihd.sysver), + eihd.matchctl, + (unsigned)bfd_getl32 (eihd.symvect_size)); + fprintf (file, _(" BPAGE: %u"), + (unsigned)bfd_getl32 (eihd.virt_mem_block_size)); + if (val & (EIHD__M_OMV_READY | EIHD__M_EXT_BIND_SECT)) + { + eihef_off = bfd_getl32 (eihd.ext_fixup_off); + eihnp_off = bfd_getl32 (eihd.noopt_psect_off); + fprintf (file, _(", ext fixup offset: %u, no_opt psect off: %u"), + eihef_off, eihnp_off); + } + fprintf (file, _(", alias: %u\n"), (unsigned)bfd_getl16 (eihd.alias)); + + if (eihvn_off != 0) + { + struct vms_eihvn eihvn; + unsigned int mask; + unsigned int j; + + fprintf (file, _("system version array information:\n")); + if (bfd_seek (abfd, (file_ptr) eihvn_off, SEEK_SET) + || bfd_bread (&eihvn, sizeof (eihvn), abfd) != sizeof (eihvn)) + { + fprintf (file, _("cannot read EIHVN header\n")); + return; + } + mask = bfd_getl32 (eihvn.subsystem_mask); + for (j = 0; j < 32; j++) + if (mask & (1 << j)) + { + struct vms_eihvn_subversion ver; + if (bfd_bread (&ver, sizeof (ver), abfd) != sizeof (ver)) + { + fprintf (file, _("cannot read EIHVN version\n")); + return; + } + fprintf (file, _(" %02u "), j); + switch (j) + { + case EIHVN__BASE_IMAGE_BIT: + fputs (_("BASE_IMAGE "), file); + break; + case EIHVN__MEMORY_MANAGEMENT_BIT: + fputs (_("MEMORY_MANAGEMENT"), file); + break; + case EIHVN__IO_BIT: + fputs (_("IO "), file); + break; + case EIHVN__FILES_VOLUMES_BIT: + fputs (_("FILES_VOLUMES "), file); + break; + case EIHVN__PROCESS_SCHED_BIT: + fputs (_("PROCESS_SCHED "), file); + break; + case EIHVN__SYSGEN_BIT: + fputs (_("SYSGEN "), file); + break; + case EIHVN__CLUSTERS_LOCKMGR_BIT: + fputs (_("CLUSTERS_LOCKMGR "), file); + break; + case EIHVN__LOGICAL_NAMES_BIT: + fputs (_("LOGICAL_NAMES "), file); + break; + case EIHVN__SECURITY_BIT: + fputs (_("SECURITY "), file); + break; + case EIHVN__IMAGE_ACTIVATOR_BIT: + fputs (_("IMAGE_ACTIVATOR "), file); + break; + case EIHVN__NETWORKS_BIT: + fputs (_("NETWORKS "), file); + break; + case EIHVN__COUNTERS_BIT: + fputs (_("COUNTERS "), file); + break; + case EIHVN__STABLE_BIT: + fputs (_("STABLE "), file); + break; + case EIHVN__MISC_BIT: + fputs (_("MISC "), file); + break; + case EIHVN__CPU_BIT: + fputs (_("CPU "), file); + break; + case EIHVN__VOLATILE_BIT: + fputs (_("VOLATILE "), file); + break; + case EIHVN__SHELL_BIT: + fputs (_("SHELL "), file); + break; + case EIHVN__POSIX_BIT: + fputs (_("POSIX "), file); + break; + case EIHVN__MULTI_PROCESSING_BIT: + fputs (_("MULTI_PROCESSING "), file); + break; + case EIHVN__GALAXY_BIT: + fputs (_("GALAXY "), file); + break; + default: + fputs (_("*unknown* "), file); + break; + } + fprintf (file, _(": %u.%u\n"), + (unsigned)bfd_getl16 (ver.major), + (unsigned)bfd_getl16 (ver.minor)); + } + } + + if (eiha_off != 0) + { + struct vms_eiha eiha; + + if (bfd_seek (abfd, (file_ptr) eiha_off, SEEK_SET) + || bfd_bread (&eiha, sizeof (eiha), abfd) != sizeof (eiha)) + { + fprintf (file, _("cannot read EIHA\n")); + return; + } + fprintf (file, _("Image activation: (size=%u)\n"), + (unsigned)bfd_getl32 (eiha.size)); + fprintf (file, _(" First address : 0x%08x 0x%08x\n"), + (unsigned)bfd_getl32 (eiha.tfradr1_h), + (unsigned)bfd_getl32 (eiha.tfradr1)); + fprintf (file, _(" Second address: 0x%08x 0x%08x\n"), + (unsigned)bfd_getl32 (eiha.tfradr2_h), + (unsigned)bfd_getl32 (eiha.tfradr2)); + fprintf (file, _(" Third address : 0x%08x 0x%08x\n"), + (unsigned)bfd_getl32 (eiha.tfradr3_h), + (unsigned)bfd_getl32 (eiha.tfradr3)); + fprintf (file, _(" Fourth address: 0x%08x 0x%08x\n"), + (unsigned)bfd_getl32 (eiha.tfradr4_h), + (unsigned)bfd_getl32 (eiha.tfradr4)); + fprintf (file, _(" Shared image : 0x%08x 0x%08x\n"), + (unsigned)bfd_getl32 (eiha.inishr_h), + (unsigned)bfd_getl32 (eiha.inishr)); + } + if (eihi_off != 0) + { + struct vms_eihi eihi; + + if (bfd_seek (abfd, (file_ptr) eihi_off, SEEK_SET) + || bfd_bread (&eihi, sizeof (eihi), abfd) != sizeof (eihi)) + { + fprintf (file, _("cannot read EIHI\n")); + return; + } + fprintf (file, _("Image identification: (major: %u, minor: %u)\n"), + (unsigned)bfd_getl32 (eihi.majorid), + (unsigned)bfd_getl32 (eihi.minorid)); + fprintf (file, _(" image name : %.*s\n"), + eihi.imgnam[0], eihi.imgnam + 1); + fprintf (file, _(" link time : %s\n"), + vms_time_to_str (eihi.linktime)); + fprintf (file, _(" image ident : %.*s\n"), + eihi.imgid[0], eihi.imgid + 1); + fprintf (file, _(" linker ident : %.*s\n"), + eihi.linkid[0], eihi.linkid + 1); + fprintf (file, _(" image build ident: %.*s\n"), + eihi.imgbid[0], eihi.imgbid + 1); + } + if (eihs_off != 0) + { + struct vms_eihs eihs; + + if (bfd_seek (abfd, (file_ptr) eihs_off, SEEK_SET) + || bfd_bread (&eihs, sizeof (eihs), abfd) != sizeof (eihs)) + { + fprintf (file, _("cannot read EIHS\n")); + return; + } + fprintf (file, _("Image symbol & debug table: (major: %u, minor: %u)\n"), + (unsigned)bfd_getl32 (eihs.majorid), + (unsigned)bfd_getl32 (eihs.minorid)); + dst_vbn = bfd_getl32 (eihs.dstvbn); + dst_size = bfd_getl32 (eihs.dstsize); + fprintf (file, _(" debug symbol table : vbn: %u, size: %u (0x%x)\n"), + dst_vbn, dst_size, dst_size); + gst_vbn = bfd_getl32 (eihs.gstvbn); + gst_size = bfd_getl32 (eihs.gstsize); + fprintf (file, _(" global symbol table: vbn: %u, records: %u\n"), + gst_vbn, gst_size); + dmt_vbn = bfd_getl32 (eihs.dmtvbn); + dmt_size = bfd_getl32 (eihs.dmtsize); + fprintf (file, _(" debug module table : vbn: %u, size: %u\n"), + dmt_vbn, dmt_size); + } + while (eisd_off != 0) + { + struct vms_eisd eisd; + unsigned int len; + + while (1) + { + if (bfd_seek (abfd, (file_ptr) eisd_off, SEEK_SET) + || bfd_bread (&eisd, sizeof (eisd), abfd) != sizeof (eisd)) + { + fprintf (file, _("cannot read EISD\n")); + return; + } + len = (unsigned)bfd_getl32 (eisd.eisdsize); + if (len != (unsigned)-1) + break; + + /* Next block. */ + eisd_off = (eisd_off + VMS_BLOCK_SIZE) & ~(VMS_BLOCK_SIZE - 1); + } + fprintf (file, _("Image section descriptor: (major: %u, minor: %u, " + "size: %u, offset: %u)\n"), + (unsigned)bfd_getl32 (eisd.majorid), + (unsigned)bfd_getl32 (eisd.minorid), + len, eisd_off); + if (len == 0) + break; + fprintf (file, _(" section: base: 0x%08x%08x size: 0x%08x\n"), + (unsigned)bfd_getl32 (eisd.virt_addr + 4), + (unsigned)bfd_getl32 (eisd.virt_addr + 0), + (unsigned)bfd_getl32 (eisd.secsize)); + val = (unsigned)bfd_getl32 (eisd.flags); + fprintf (file, _(" flags: 0x%04x"), val); + if (val & EISD__M_GBL) + fprintf (file, " GBL"); + if (val & EISD__M_CRF) + fprintf (file, " CRF"); + if (val & EISD__M_DZRO) + fprintf (file, " DZRO"); + if (val & EISD__M_WRT) + fprintf (file, " WRT"); + if (val & EISD__M_INITALCODE) + fprintf (file, " INITALCODE"); + if (val & EISD__M_BASED) + fprintf (file, " BASED"); + if (val & EISD__M_FIXUPVEC) + fprintf (file, " FIXUPVEC"); + if (val & EISD__M_RESIDENT) + fprintf (file, " RESIDENT"); + if (val & EISD__M_VECTOR) + fprintf (file, " VECTOR"); + if (val & EISD__M_PROTECT) + fprintf (file, " PROTECT"); + if (val & EISD__M_LASTCLU) + fprintf (file, " LASTCLU"); + if (val & EISD__M_EXE) + fprintf (file, " EXE"); + if (val & EISD__M_NONSHRADR) + fprintf (file, " NONSHRADR"); + if (val & EISD__M_QUAD_LENGTH) + fprintf (file, " QUAD_LENGTH"); + if (val & EISD__M_ALLOC_64BIT) + fprintf (file, " ALLOC_64BIT"); + fprintf (file, "\n"); + if (val & EISD__M_FIXUPVEC) + { + eiaf_vbn = bfd_getl32 (eisd.vbn); + eiaf_size = bfd_getl32 (eisd.secsize); + } + fprintf (file, _(" vbn: %u, pfc: %u, matchctl: %u type: %u ("), + (unsigned)bfd_getl32 (eisd.vbn), + eisd.pfc, eisd.matchctl, eisd.type); + switch (eisd.type) + { + case EISD__K_NORMAL: + fputs (_("NORMAL"), file); + break; + case EISD__K_SHRFXD: + fputs (_("SHRFXD"), file); + break; + case EISD__K_PRVFXD: + fputs (_("PRVFXD"), file); + break; + case EISD__K_SHRPIC: + fputs (_("SHRPIC"), file); + break; + case EISD__K_PRVPIC: + fputs (_("PRVPIC"), file); + break; + case EISD__K_USRSTACK: + fputs (_("USRSTACK"), file); + break; + default: + fputs (_("*unknown*"), file); + break; + } + fputs (_(")\n"), file); + if (val & EISD__M_GBL) + fprintf (file, _(" ident: 0x%08x, name: %.*s\n"), + (unsigned)bfd_getl32 (eisd.ident), + eisd.gblnam[0], eisd.gblnam + 1); + eisd_off += len; + } + + if (dmt_vbn != 0) + { + if (bfd_seek (abfd, (file_ptr) (dmt_vbn - 1) * VMS_BLOCK_SIZE, SEEK_SET)) + { + fprintf (file, _("cannot read DMT\n")); + return; + } + + fprintf (file, _("Debug module table:\n")); + + while (dmt_size > 0) + { + struct vms_dmt_header dmth; + unsigned int count; + + if (bfd_bread (&dmth, sizeof (dmth), abfd) != sizeof (dmth)) + { + fprintf (file, _("cannot read DMT header\n")); + return; + } + count = bfd_getl16 (dmth.psect_count); + fprintf (file, + _(" module offset: 0x%08x, size: 0x%08x, (%u psects)\n"), + (unsigned)bfd_getl32 (dmth.modbeg), + (unsigned)bfd_getl32 (dmth.size), count); + dmt_size -= sizeof (dmth); + while (count > 0) + { + struct vms_dmt_psect dmtp; + + if (bfd_bread (&dmtp, sizeof (dmtp), abfd) != sizeof (dmtp)) + { + fprintf (file, _("cannot read DMT psect\n")); + return; + } + fprintf (file, _(" psect start: 0x%08x, length: %u\n"), + (unsigned)bfd_getl32 (dmtp.start), + (unsigned)bfd_getl32 (dmtp.length)); + count--; + dmt_size -= sizeof (dmtp); + } + } + } + + if (dst_vbn != 0) + { + if (bfd_seek (abfd, (file_ptr) (dst_vbn - 1) * VMS_BLOCK_SIZE, SEEK_SET)) + { + fprintf (file, _("cannot read DST\n")); + return; + } + + evax_bfd_print_dst (abfd, dst_size, file); + } + if (gst_vbn != 0) + { + if (bfd_seek (abfd, (file_ptr) (gst_vbn - 1) * VMS_BLOCK_SIZE, SEEK_SET)) + { + fprintf (file, _("cannot read GST\n")); + return; + } + + fprintf (file, _("Global symbol table:\n")); + evax_bfd_print_eobj (abfd, file); + } + if (eiaf_vbn != 0) + { + unsigned char *buf; + struct vms_eiaf *eiaf; + unsigned int qrelfixoff; + unsigned int lrelfixoff; + unsigned int qdotadroff; + unsigned int ldotadroff; + unsigned int shrimgcnt; + unsigned int shlstoff; + unsigned int codeadroff; + unsigned int lpfixoff; + unsigned int chgprtoff; + + buf = bfd_malloc (eiaf_size); + + if (bfd_seek (abfd, (file_ptr) (eiaf_vbn - 1) * VMS_BLOCK_SIZE, SEEK_SET) + || bfd_bread (buf, eiaf_size, abfd) != eiaf_size) + { + fprintf (file, _("cannot read EIHA\n")); + free (buf); + return; + } + eiaf = (struct vms_eiaf *)buf; + fprintf (file, + _("Image activator fixup: (major: %u, minor: %u)\n"), + (unsigned)bfd_getl32 (eiaf->majorid), + (unsigned)bfd_getl32 (eiaf->minorid)); + fprintf (file, _(" iaflink : 0x%08x %08x\n"), + (unsigned)bfd_getl32 (eiaf->iaflink + 0), + (unsigned)bfd_getl32 (eiaf->iaflink + 4)); + fprintf (file, _(" fixuplnk: 0x%08x %08x\n"), + (unsigned)bfd_getl32 (eiaf->fixuplnk + 0), + (unsigned)bfd_getl32 (eiaf->fixuplnk + 4)); + fprintf (file, _(" size : %u\n"), + (unsigned)bfd_getl32 (eiaf->size)); + fprintf (file, _(" flags: 0x%08x\n"), + (unsigned)bfd_getl32 (eiaf->flags)); + qrelfixoff = bfd_getl32 (eiaf->qrelfixoff); + lrelfixoff = bfd_getl32 (eiaf->lrelfixoff); + fprintf (file, _(" qrelfixoff: %5u, lrelfixoff: %5u\n"), + qrelfixoff, lrelfixoff); + qdotadroff = bfd_getl32 (eiaf->qdotadroff); + ldotadroff = bfd_getl32 (eiaf->ldotadroff); + fprintf (file, _(" qdotadroff: %5u, ldotadroff: %5u\n"), + qdotadroff, ldotadroff); + codeadroff = bfd_getl32 (eiaf->codeadroff); + lpfixoff = bfd_getl32 (eiaf->lpfixoff); + fprintf (file, _(" codeadroff: %5u, lpfixoff : %5u\n"), + codeadroff, lpfixoff); + chgprtoff = bfd_getl32 (eiaf->chgprtoff); + fprintf (file, _(" chgprtoff : %5u\n"), chgprtoff); + shrimgcnt = bfd_getl32 (eiaf->shrimgcnt); + shlstoff = bfd_getl32 (eiaf->shlstoff); + fprintf (file, _(" shlstoff : %5u, shrimgcnt : %5u\n"), + shlstoff, shrimgcnt); + fprintf (file, _(" shlextra : %5u, permctx : %5u\n"), + (unsigned)bfd_getl32 (eiaf->shlextra), + (unsigned)bfd_getl32 (eiaf->permctx)); + fprintf (file, _(" base_va : 0x%08x\n"), + (unsigned)bfd_getl32 (eiaf->base_va)); + fprintf (file, _(" lppsbfixoff: %5u\n"), + (unsigned)bfd_getl32 (eiaf->lppsbfixoff)); + + if (shlstoff) + { + struct vms_shl *shl = (struct vms_shl *)(buf + shlstoff); + unsigned int j; + + fprintf (file, _(" Shareable images:\n")); + for (j = 0; j < shrimgcnt; j++, shl++) + { + fprintf (file, + _(" %u: size: %u, flags: 0x%02x, name: %.*s\n"), + j, shl->size, shl->flags, + shl->imgnam[0], shl->imgnam + 1); + } + } + if (qrelfixoff != 0) + { + fprintf (file, _(" quad-word relocation fixups:\n")); + evax_bfd_print_relocation_records (file, buf + qrelfixoff, 8); + } + if (lrelfixoff != 0) + { + fprintf (file, _(" long-word relocation fixups:\n")); + evax_bfd_print_relocation_records (file, buf + lrelfixoff, 4); + } + if (qdotadroff != 0) + { + fprintf (file, _(" quad-word .address reference fixups:\n")); + evax_bfd_print_address_fixups (file, buf + qdotadroff); + } + if (ldotadroff != 0) + { + fprintf (file, _(" long-word .address reference fixups:\n")); + evax_bfd_print_address_fixups (file, buf + ldotadroff); + } + if (codeadroff != 0) + { + fprintf (file, _(" Code Address Reference Fixups:\n")); + evax_bfd_print_reference_fixups (file, buf + codeadroff); + } + if (lpfixoff != 0) + { + fprintf (file, _(" Linkage Pairs Referece Fixups:\n")); + evax_bfd_print_reference_fixups (file, buf + lpfixoff); + } + if (chgprtoff) + { + unsigned int count = (unsigned)bfd_getl32 (buf + chgprtoff); + struct vms_eicp *eicp = (struct vms_eicp *)(buf + chgprtoff + 4); + unsigned int j; + + fprintf (file, _(" Change Protection (%u entries):\n"), count); + for (j = 0; j < count; j++, eicp++) + { + unsigned int prot = bfd_getl32 (eicp->newprt); + fprintf (file, + _(" base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "), + (unsigned)bfd_getl32 (eicp->baseva + 4), + (unsigned)bfd_getl32 (eicp->baseva + 0), + (unsigned)bfd_getl32 (eicp->size), + (unsigned)bfd_getl32 (eicp->newprt)); + switch (prot) + { + case PRT__C_NA: + fprintf (file, "NA"); + break; + case PRT__C_RESERVED: + fprintf (file, "RES"); + break; + case PRT__C_KW: + fprintf (file, "KW"); + break; + case PRT__C_KR: + fprintf (file, "KR"); + break; + case PRT__C_UW: + fprintf (file, "UW"); + break; + case PRT__C_EW: + fprintf (file, "EW"); + break; + case PRT__C_ERKW: + fprintf (file, "ERKW"); + break; + case PRT__C_ER: + fprintf (file, "ER"); + break; + case PRT__C_SW: + fprintf (file, "SW"); + break; + case PRT__C_SREW: + fprintf (file, "SREW"); + break; + case PRT__C_SRKW: + fprintf (file, "SRKW"); + break; + case PRT__C_SR: + fprintf (file, "SR"); + break; + case PRT__C_URSW: + fprintf (file, "URSW"); + break; + case PRT__C_UREW: + fprintf (file, "UREW"); + break; + case PRT__C_URKW: + fprintf (file, "URKW"); + break; + case PRT__C_UR: + fprintf (file, "UR"); + break; + default: + fputs ("??", file); + break; + } + fputc ('\n', file); + } + } + free (buf); + } +} + +static bfd_boolean +vms_bfd_print_private_bfd_data (bfd *abfd, void *ptr) +{ + FILE *file = (FILE *)ptr; + + if (bfd_get_file_flags (abfd) & (EXEC_P | DYNAMIC)) + evax_bfd_print_image (abfd, file); + else + { + if (bfd_seek (abfd, 0, SEEK_SET)) + return FALSE; + evax_bfd_print_eobj (abfd, file); + } + return TRUE; +} + +/* Linking. */ + +/* Slurp ETIR/EDBG/ETBT VMS object records. */ + +static bfd_boolean +alpha_vms_read_sections_content (bfd *abfd, struct bfd_link_info *info) +{ + asection *cur_section; + file_ptr cur_offset; + asection *dst_section; + file_ptr dst_offset; + + if (bfd_seek (abfd, 0, SEEK_SET) != 0) + return FALSE; + + cur_section = NULL; + cur_offset = 0; + + dst_section = PRIV (dst_section); + dst_offset = 0; + if (info) + { + if (info->strip == strip_all || info->strip == strip_debugger) + { + /* Discard the DST section. */ + dst_offset = 0; + dst_section = NULL; + } + else if (dst_section) + { + dst_offset = dst_section->output_offset; + dst_section = dst_section->output_section; + } + } + + while (1) + { + int type; + bfd_boolean res; + + type = _bfd_vms_get_object_record (abfd); + if (type < 0) + { + vms_debug2 ((2, "next_record failed\n")); + return FALSE; + } + switch (type) + { + case EOBJ__C_ETIR: + PRIV (image_section) = cur_section; + PRIV (image_offset) = cur_offset; + res = _bfd_vms_slurp_etir (abfd, info); + cur_section = PRIV (image_section); + cur_offset = PRIV (image_offset); + break; + case EOBJ__C_EDBG: + case EOBJ__C_ETBT: + if (dst_section == NULL) + continue; + PRIV (image_section) = dst_section; + PRIV (image_offset) = dst_offset; + res = _bfd_vms_slurp_etir (abfd, info); + dst_offset = PRIV (image_offset); + break; + case EOBJ__C_EEOM: + return TRUE; + default: + continue; + } + if (!res) + { + vms_debug2 ((2, "slurp eobj type %d failed\n", type)); + return FALSE; + } + } +} + +static int +alpha_vms_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED) +{ + return 0; +} + +/* Add a linkage pair fixup at address SECT + OFFSET to SHLIB. */ + +static void +alpha_vms_add_fixup_lp (struct bfd_link_info *info, bfd *src, bfd *shlib) +{ + struct alpha_vms_shlib_el *sl; + asection *sect = PRIV2 (src, image_section); + file_ptr offset = PRIV2 (src, image_offset); + + sl = &VEC_EL (alpha_vms_link_hash (info)->shrlibs, + struct alpha_vms_shlib_el, PRIV2 (shlib, shr_index)); + sl->has_fixups = TRUE; + VEC_APPEND_EL (sl->lp, bfd_vma, + sect->output_section->vma + sect->output_offset + offset); + sect->output_section->flags |= SEC_RELOC; +} + +/* Add a code address fixup at address SECT + OFFSET to SHLIB. */ + +static void +alpha_vms_add_fixup_ca (struct bfd_link_info *info, bfd *src, bfd *shlib) +{ + struct alpha_vms_shlib_el *sl; + asection *sect = PRIV2 (src, image_section); + file_ptr offset = PRIV2 (src, image_offset); + + sl = &VEC_EL (alpha_vms_link_hash (info)->shrlibs, + struct alpha_vms_shlib_el, PRIV2 (shlib, shr_index)); + sl->has_fixups = TRUE; + VEC_APPEND_EL (sl->ca, bfd_vma, + sect->output_section->vma + sect->output_offset + offset); + sect->output_section->flags |= SEC_RELOC; +} + +/* Add a quad word relocation fixup at address SECT + OFFSET to SHLIB. */ + +static void +alpha_vms_add_fixup_qr (struct bfd_link_info *info, bfd *src, + bfd *shlib, bfd_vma vec) +{ + struct alpha_vms_shlib_el *sl; + struct alpha_vms_vma_ref *r; + asection *sect = PRIV2 (src, image_section); + file_ptr offset = PRIV2 (src, image_offset); + + sl = &VEC_EL (alpha_vms_link_hash (info)->shrlibs, + struct alpha_vms_shlib_el, PRIV2 (shlib, shr_index)); + sl->has_fixups = TRUE; + r = VEC_APPEND (sl->qr, struct alpha_vms_vma_ref); + r->vma = sect->output_section->vma + sect->output_offset + offset; + r->ref = vec; + sect->output_section->flags |= SEC_RELOC; +} + +static void +alpha_vms_add_fixup_lr (struct bfd_link_info *info ATTRIBUTE_UNUSED, + unsigned int shr ATTRIBUTE_UNUSED, + bfd_vma vec ATTRIBUTE_UNUSED) +{ + /* Not yet supported. */ + abort (); +} + +/* Add relocation. FIXME: Not yet emitted. */ + +static void +alpha_vms_add_lw_reloc (struct bfd_link_info *info ATTRIBUTE_UNUSED) +{ +} + +static void +alpha_vms_add_qw_reloc (struct bfd_link_info *info ATTRIBUTE_UNUSED) +{ +} + +static struct bfd_hash_entry * +alpha_vms_link_hash_newfunc (struct bfd_hash_entry *entry, + struct bfd_hash_table *table, + const char *string) +{ + struct alpha_vms_link_hash_entry *ret = + (struct alpha_vms_link_hash_entry *) entry; + + /* Allocate the structure if it has not already been allocated by a + subclass. */ + if (ret == NULL) + ret = ((struct alpha_vms_link_hash_entry *) + bfd_hash_allocate (table, + sizeof (struct alpha_vms_link_hash_entry))); + if (ret == NULL) + return NULL; + + /* Call the allocation method of the superclass. */ + ret = ((struct alpha_vms_link_hash_entry *) + _bfd_link_hash_newfunc ((struct bfd_hash_entry *) ret, + table, string)); + + ret->sym = NULL; + + return (struct bfd_hash_entry *) ret; +} + +/* Create an Alpha/VMS link hash table. */ + +static struct bfd_link_hash_table * +alpha_vms_bfd_link_hash_table_create (bfd *abfd) +{ + struct alpha_vms_link_hash_table *ret; + bfd_size_type amt = sizeof (struct alpha_vms_link_hash_table); + + ret = (struct alpha_vms_link_hash_table *) bfd_malloc (amt); + if (ret == NULL) + return NULL; + if (!_bfd_link_hash_table_init (&ret->root, abfd, + alpha_vms_link_hash_newfunc, + sizeof (struct alpha_vms_link_hash_entry))) + { + free (ret); + return NULL; + } + + VEC_INIT (ret->shrlibs); + ret->fixup = NULL; + + return &ret->root; +} + +static bfd_boolean +alpha_vms_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) +{ + unsigned int i; + + for (i = 0; i < PRIV (gsd_sym_count); i++) + { + struct vms_symbol_entry *e = PRIV (syms)[i]; + struct alpha_vms_link_hash_entry *h; + struct bfd_link_hash_entry *h_root; + asymbol sym; + + if (!alpha_vms_convert_symbol (abfd, e, &sym)) + return FALSE; + + if ((e->flags & EGSY__V_DEF) && abfd->selective_search) + { + /* In selective_search mode, only add definition that are + required. */ + h = (struct alpha_vms_link_hash_entry *)bfd_link_hash_lookup + (info->hash, sym.name, FALSE, FALSE, FALSE); + if (h == NULL || h->root.type != bfd_link_hash_undefined) + continue; + } + else + h = NULL; + + h_root = (struct bfd_link_hash_entry *) h; + if (_bfd_generic_link_add_one_symbol + (info, abfd, sym.name, sym.flags, sym.section, sym.value, + NULL, FALSE, FALSE, &h_root) == FALSE) + return FALSE; + h = (struct alpha_vms_link_hash_entry *) h_root; + + if ((e->flags & EGSY__V_DEF) + && h->sym == NULL + && abfd->xvec == info->output_bfd->xvec) + h->sym = e; + } + + if (abfd->flags & DYNAMIC) + { + struct alpha_vms_shlib_el *shlib; + + /* We do not want to include any of the sections in a dynamic + object in the output file. See comment in elflink.c. */ + bfd_section_list_clear (abfd); + + shlib = VEC_APPEND (alpha_vms_link_hash (info)->shrlibs, + struct alpha_vms_shlib_el); + shlib->abfd = abfd; + VEC_INIT (shlib->ca); + VEC_INIT (shlib->lp); + VEC_INIT (shlib->qr); + PRIV (shr_index) = VEC_COUNT (alpha_vms_link_hash (info)->shrlibs) - 1; + } + + return TRUE; +} + +static bfd_boolean +alpha_vms_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info) +{ + int pass; + struct bfd_link_hash_entry **pundef; + struct bfd_link_hash_entry **next_pundef; + + /* We only accept VMS libraries. */ + if (info->output_bfd->xvec != abfd->xvec) + { + bfd_set_error (bfd_error_wrong_format); + return FALSE; + } + + /* The archive_pass field in the archive itself is used to + initialize PASS, since we may search the same archive multiple + times. */ + pass = ++abfd->archive_pass; + + /* Look through the list of undefined symbols. */ + for (pundef = &info->hash->undefs; *pundef != NULL; pundef = next_pundef) + { + struct bfd_link_hash_entry *h; + symindex symidx; + bfd *element; + bfd *orig_element; + + h = *pundef; + next_pundef = &(*pundef)->u.undef.next; + + /* When a symbol is defined, it is not necessarily removed from + the list. */ + if (h->type != bfd_link_hash_undefined + && h->type != bfd_link_hash_common) + { + /* Remove this entry from the list, for general cleanliness + and because we are going to look through the list again + if we search any more libraries. We can't remove the + entry if it is the tail, because that would lose any + entries we add to the list later on. */ + if (*pundef != info->hash->undefs_tail) + { + *pundef = *next_pundef; + next_pundef = pundef; + } + continue; + } + + /* Look for this symbol in the archive hash table. */ + symidx = _bfd_vms_lib_find_symbol (abfd, h->root.string); + if (symidx == BFD_NO_MORE_SYMBOLS) + { + /* Nothing in this slot. */ + continue; + } + + element = bfd_get_elt_at_index (abfd, symidx); + if (element == NULL) + return FALSE; + + if (element->archive_pass == -1 || element->archive_pass == pass) + { + /* Next symbol if this archive is wrong or already handled. */ + continue; + } + + if (! bfd_check_format (element, bfd_object)) + { + element->archive_pass = -1; + return FALSE; + } + + orig_element = element; + if (bfd_is_thin_archive (abfd)) + { + element = _bfd_vms_lib_get_imagelib_file (element); + if (element == NULL || !bfd_check_format (element, bfd_object)) + { + orig_element->archive_pass = -1; + return FALSE; + } + } + + /* Unlike the generic linker, we know that this element provides + a definition for an undefined symbol and we know that we want + to include it. We don't need to check anything. */ + if (!(*info->callbacks + ->add_archive_element) (info, element, h->root.string, &element)) + return FALSE; + if (!alpha_vms_link_add_object_symbols (element, info)) + return FALSE; + + orig_element->archive_pass = pass; + } + + return TRUE; +} + +static bfd_boolean +alpha_vms_bfd_link_add_symbols (bfd *abfd, struct bfd_link_info *info) +{ + switch (bfd_get_format (abfd)) + { + case bfd_object: + vms_debug2 ((2, "vms_link_add_symbols for object %s\n", + abfd->filename)); + return alpha_vms_link_add_object_symbols (abfd, info); + break; + case bfd_archive: + vms_debug2 ((2, "vms_link_add_symbols for archive %s\n", + abfd->filename)); + return alpha_vms_link_add_archive_symbols (abfd, info); + break; + default: + bfd_set_error (bfd_error_wrong_format); + return FALSE; + } +} + +static bfd_boolean +alpha_vms_build_fixups (struct bfd_link_info *info) +{ + struct alpha_vms_link_hash_table *t = alpha_vms_link_hash (info); + unsigned char *content; + unsigned int i; + unsigned int sz = 0; + unsigned int lp_sz = 0; + unsigned int ca_sz = 0; + unsigned int qr_sz = 0; + unsigned int shrimg_cnt = 0; + unsigned int chgprt_num = 0; + unsigned int chgprt_sz = 0; + struct vms_eiaf *eiaf; + unsigned int off; + asection *sec; + + /* Shared libraries. */ + for (i = 0; i < VEC_COUNT (t->shrlibs); i++) + { + struct alpha_vms_shlib_el *shlib; + + shlib = &VEC_EL (t->shrlibs, struct alpha_vms_shlib_el, i); + + if (!shlib->has_fixups) + continue; + + shrimg_cnt++; + + if (VEC_COUNT (shlib->ca) > 0) + { + /* Header + entries. */ + ca_sz += 8; + ca_sz += VEC_COUNT (shlib->ca) * 4; + } + if (VEC_COUNT (shlib->lp) > 0) + { + /* Header + entries. */ + lp_sz += 8; + lp_sz += VEC_COUNT (shlib->lp) * 4; + } + if (VEC_COUNT (shlib->qr) > 0) + { + /* Header + entries. */ + qr_sz += 8; + qr_sz += VEC_COUNT (shlib->qr) * 8; + } + } + /* Add markers. */ + if (ca_sz > 0) + ca_sz += 8; + if (lp_sz > 0) + lp_sz += 8; + if (qr_sz > 0) + qr_sz += 8; + + /* Finish now if there is no content. */ + if (ca_sz + lp_sz + qr_sz == 0) + return TRUE; + + /* Add an eicp entry for the fixup itself. */ + chgprt_num = 1; + for (sec = info->output_bfd->sections; sec != NULL; sec = sec->next) + { + /* This isect could be made RO or EXE after relocations are applied. */ + if ((sec->flags & SEC_RELOC) != 0 + && (sec->flags & (SEC_CODE | SEC_READONLY)) != 0) + chgprt_num++; + } + chgprt_sz = 4 + chgprt_num * sizeof (struct vms_eicp); + + /* Allocate section content (round-up size) */ + sz = sizeof (struct vms_eiaf) + shrimg_cnt * sizeof (struct vms_shl) + + ca_sz + lp_sz + qr_sz + chgprt_sz; + sz = (sz + VMS_BLOCK_SIZE - 1) & ~(VMS_BLOCK_SIZE - 1); + content = bfd_zalloc (info->output_bfd, sz); + if (content == NULL) + return FALSE; + + sec = alpha_vms_link_hash (info)->fixup; + sec->contents = content; + sec->size = sz; + + eiaf = (struct vms_eiaf *)content; + off = sizeof (struct vms_eiaf); + bfd_putl32 (0, eiaf->majorid); + bfd_putl32 (0, eiaf->minorid); + bfd_putl32 (0, eiaf->iaflink); + bfd_putl32 (0, eiaf->fixuplnk); + bfd_putl32 (sizeof (struct vms_eiaf), eiaf->size); + bfd_putl32 (0, eiaf->flags); + bfd_putl32 (0, eiaf->qrelfixoff); + bfd_putl32 (0, eiaf->lrelfixoff); + bfd_putl32 (0, eiaf->qdotadroff); + bfd_putl32 (0, eiaf->ldotadroff); + bfd_putl32 (0, eiaf->codeadroff); + bfd_putl32 (0, eiaf->lpfixoff); + bfd_putl32 (0, eiaf->chgprtoff); + bfd_putl32 (shrimg_cnt ? off : 0, eiaf->shlstoff); + bfd_putl32 (shrimg_cnt, eiaf->shrimgcnt); + bfd_putl32 (0, eiaf->shlextra); + bfd_putl32 (0, eiaf->permctx); + bfd_putl32 (0, eiaf->base_va); + bfd_putl32 (0, eiaf->lppsbfixoff); + + if (shrimg_cnt) + { + shrimg_cnt = 0; + + /* Write shl. */ + for (i = 0; i < VEC_COUNT (t->shrlibs); i++) + { + struct alpha_vms_shlib_el *shlib; + struct vms_shl *shl; + + shlib = &VEC_EL (t->shrlibs, struct alpha_vms_shlib_el, i); + + if (!shlib->has_fixups) + continue; + + /* Renumber shared images. */ + PRIV2 (shlib->abfd, shr_index) = shrimg_cnt++; + + shl = (struct vms_shl *)(content + off); + bfd_putl32 (0, shl->baseva); + bfd_putl32 (0, shl->shlptr); + bfd_putl32 (0, shl->ident); + bfd_putl32 (0, shl->permctx); + shl->size = sizeof (struct vms_shl); + bfd_putl16 (0, shl->fill_1); + shl->flags = 0; + bfd_putl32 (0, shl->icb); + shl->imgnam[0] = strlen (PRIV2 (shlib->abfd, hdr_data.hdr_t_name)); + memcpy (shl->imgnam + 1, PRIV2 (shlib->abfd, hdr_data.hdr_t_name), + shl->imgnam[0]); + + off += sizeof (struct vms_shl); + } + + /* CA fixups. */ + if (ca_sz != 0) + { + bfd_putl32 (off, eiaf->codeadroff); + + for (i = 0; i < VEC_COUNT (t->shrlibs); i++) + { + struct alpha_vms_shlib_el *shlib; + unsigned int j; + + shlib = &VEC_EL (t->shrlibs, struct alpha_vms_shlib_el, i); + + if (VEC_COUNT (shlib->ca) == 0) + continue; + + bfd_putl32 (VEC_COUNT (shlib->ca), content + off); + bfd_putl32 (PRIV2 (shlib->abfd, shr_index), content + off + 4); + off += 8; + + for (j = 0; j < VEC_COUNT (shlib->ca); j++) + { + bfd_putl32 (VEC_EL (shlib->ca, bfd_vma, j) - t->base_addr, + content + off); + off += 4; + } + } + + bfd_putl32 (0, content + off); + bfd_putl32 (0, content + off + 4); + off += 8; + } + + /* LP fixups. */ + if (lp_sz != 0) + { + bfd_putl32 (off, eiaf->lpfixoff); + + for (i = 0; i < VEC_COUNT (t->shrlibs); i++) + { + struct alpha_vms_shlib_el *shlib; + unsigned int j; + + shlib = &VEC_EL (t->shrlibs, struct alpha_vms_shlib_el, i); + + if (VEC_COUNT (shlib->lp) == 0) + continue; + + bfd_putl32 (VEC_COUNT (shlib->lp), content + off); + bfd_putl32 (PRIV2 (shlib->abfd, shr_index), content + off + 4); + off += 8; + + for (j = 0; j < VEC_COUNT (shlib->lp); j++) + { + bfd_putl32 (VEC_EL (shlib->lp, bfd_vma, j) - t->base_addr, + content + off); + off += 4; + } + } + + bfd_putl32 (0, content + off); + bfd_putl32 (0, content + off + 4); + off += 8; + } + + /* QR fixups. */ + if (qr_sz != 0) + { + bfd_putl32 (off, eiaf->qdotadroff); + + for (i = 0; i < VEC_COUNT (t->shrlibs); i++) + { + struct alpha_vms_shlib_el *shlib; + unsigned int j; + + shlib = &VEC_EL (t->shrlibs, struct alpha_vms_shlib_el, i); + + if (VEC_COUNT (shlib->qr) == 0) + continue; + + bfd_putl32 (VEC_COUNT (shlib->qr), content + off); + bfd_putl32 (PRIV2 (shlib->abfd, shr_index), content + off + 4); + off += 8; + + for (j = 0; j < VEC_COUNT (shlib->qr); j++) + { + struct alpha_vms_vma_ref *r; + r = &VEC_EL (shlib->qr, struct alpha_vms_vma_ref, j); + bfd_putl32 (r->vma - t->base_addr, content + off); + bfd_putl32 (r->ref, content + off + 4); + off += 8; + } + } + + bfd_putl32 (0, content + off); + bfd_putl32 (0, content + off + 4); + off += 8; + } + } + + /* Write the change protection table. */ + bfd_putl32 (off, eiaf->chgprtoff); + bfd_putl32 (chgprt_num, content + off); + off += 4; + + for (sec = info->output_bfd->sections; sec != NULL; sec = sec->next) + { + struct vms_eicp *eicp; + unsigned int prot; + + if ((sec->flags & SEC_LINKER_CREATED) != 0 && + strcmp (sec->name, "$FIXUP$") == 0) + prot = PRT__C_UREW; + else if ((sec->flags & SEC_RELOC) != 0 + && (sec->flags & (SEC_CODE | SEC_READONLY)) != 0) + prot = PRT__C_UR; + else + continue; + + eicp = (struct vms_eicp *)(content + off); + bfd_putl64 (sec->vma - t->base_addr, eicp->baseva); + bfd_putl32 ((sec->size + VMS_BLOCK_SIZE - 1) & ~(VMS_BLOCK_SIZE - 1), + eicp->size); + bfd_putl32 (prot, eicp->newprt); + off += sizeof (struct vms_eicp); + } + + return TRUE; +} + +/* Called by bfd_link_hash_traverse to fill the symbol table. + Return FALSE in case of failure. */ + +static bfd_boolean +alpha_vms_link_output_symbol (struct bfd_link_hash_entry *hc, void *infov) +{ + struct bfd_link_info *info = (struct bfd_link_info *)infov; + struct alpha_vms_link_hash_entry *h = (struct alpha_vms_link_hash_entry *)hc; + struct vms_symbol_entry *sym; + + switch (h->root.type) + { + case bfd_link_hash_new: + case bfd_link_hash_undefined: + abort (); + case bfd_link_hash_undefweak: + return TRUE; + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + { + asection *sec = h->root.u.def.section; + + /* FIXME: this is certainly a symbol from a dynamic library. */ + if (bfd_is_abs_section (sec)) + return TRUE; + + if (sec->owner->flags & DYNAMIC) + return TRUE; + } + break; + case bfd_link_hash_common: + break; + case bfd_link_hash_indirect: + case bfd_link_hash_warning: + return TRUE; + } + + /* Do not write not kept symbols. */ + if (info->strip == strip_some + && bfd_hash_lookup (info->keep_hash, h->root.root.string, + FALSE, FALSE) != NULL) + return TRUE; + + if (h->sym == NULL) + { + /* This symbol doesn't come from a VMS object. So we suppose it is + a data. */ + int len = strlen (h->root.root.string); + + sym = (struct vms_symbol_entry *)bfd_zalloc (info->output_bfd, + sizeof (*sym) + len); + if (sym == NULL) + abort (); + sym->namelen = len; + memcpy (sym->name, h->root.root.string, len); + sym->name[len] = 0; + sym->owner = info->output_bfd; + + sym->typ = EGSD__C_SYMG; + sym->data_type = 0; + sym->flags = EGSY__V_DEF | EGSY__V_REL; + sym->symbol_vector = h->root.u.def.value; + sym->section = h->root.u.def.section; + sym->value = h->root.u.def.value; + } + else + sym = h->sym; + + if (!add_symbol_entry (info->output_bfd, sym)) + return FALSE; + + return TRUE; +} + +static bfd_boolean +alpha_vms_bfd_final_link (bfd *abfd, struct bfd_link_info *info) +{ + asection *o; + struct bfd_link_order *p; + bfd *sub; + asection *fixupsec; + bfd_vma base_addr; + bfd_vma last_addr; + asection *dst; + asection *dmt; + + if (info->relocatable) + { + /* FIXME: we do not yet support relocatable link. It is not obvious + how to do it for debug infos. */ + (*info->callbacks->einfo)(_("%P: relocatable link is not supported\n")); + return FALSE; + } + + bfd_get_outsymbols (abfd) = NULL; + bfd_get_symcount (abfd) = 0; + + /* Mark all sections which will be included in the output file. */ + for (o = abfd->sections; o != NULL; o = o->next) + for (p = o->map_head.link_order; p != NULL; p = p->next) + if (p->type == bfd_indirect_link_order) + p->u.indirect.section->linker_mark = TRUE; + +#if 0 + /* Handle all the link order information for the sections. */ + for (o = abfd->sections; o != NULL; o = o->next) + { + printf ("For section %s (at 0x%08x, flags=0x%08x):\n", + o->name, (unsigned)o->vma, (unsigned)o->flags); + + for (p = o->map_head.link_order; p != NULL; p = p->next) + { + printf (" at 0x%08x - 0x%08x: ", + (unsigned)p->offset, (unsigned)(p->offset + p->size - 1)); + switch (p->type) + { + case bfd_section_reloc_link_order: + case bfd_symbol_reloc_link_order: + printf (" section/symbol reloc\n"); + break; + case bfd_indirect_link_order: + printf (" section %s of %s\n", + p->u.indirect.section->name, + p->u.indirect.section->owner->filename); + break; + case bfd_data_link_order: + printf (" explicit data\n"); + break; + default: + printf (" *unknown* type %u\n", p->type); + break; + } + } + } +#endif + + /* Generate the symbol table. */ + BFD_ASSERT (PRIV (syms) == NULL); + if (info->strip != strip_all) + bfd_link_hash_traverse (info->hash, alpha_vms_link_output_symbol, info); + + /* Find the entry point. */ + if (bfd_get_start_address (abfd) == 0) + { + bfd *startbfd = NULL; + + for (sub = info->input_bfds; sub != NULL; sub = sub->link_next) + { + /* Consider only VMS object files. */ + if (sub->xvec != abfd->xvec) + continue; + + if (!PRIV2 (sub, eom_data).eom_has_transfer) + continue; + if ((PRIV2 (sub, eom_data).eom_b_tfrflg & EEOM__M_WKTFR) && startbfd) + continue; + if (startbfd != NULL + && !(PRIV2 (sub, eom_data).eom_b_tfrflg & EEOM__M_WKTFR)) + { + (*info->callbacks->einfo) + (_("%P: multiple entry points: in modules %B and %B\n"), + startbfd, sub); + continue; + } + startbfd = sub; + } + + if (startbfd) + { + unsigned int ps_idx = PRIV2 (startbfd, eom_data).eom_l_psindx; + bfd_vma tfradr = PRIV2 (startbfd, eom_data).eom_l_tfradr; + asection *sec; + + sec = PRIV2 (startbfd, sections)[ps_idx]; + + bfd_set_start_address + (abfd, sec->output_section->vma + sec->output_offset + tfradr); + } + } + + /* Set transfer addresses. */ + { + int i; + struct bfd_link_hash_entry *h; + + i = 0; + PRIV (transfer_address[i++]) = 0xffffffff00000340ULL; /* SYS$IMGACT */ + h = bfd_link_hash_lookup (info->hash, "LIB$INITIALIZE", FALSE, FALSE, TRUE); + if (h != NULL && h->type == bfd_link_hash_defined) + PRIV (transfer_address[i++]) = + alpha_vms_get_sym_value (h->u.def.section, h->u.def.value); + PRIV (transfer_address[i++]) = bfd_get_start_address (abfd); + while (i < 4) + PRIV (transfer_address[i++]) = 0; + } + + /* Allocate contents. + Also compute the virtual base address. */ + base_addr = (bfd_vma)-1; + last_addr = 0; + for (o = abfd->sections; o != NULL; o = o->next) + { + if (o->flags & SEC_HAS_CONTENTS) + { + o->contents = bfd_alloc (abfd, o->size); + if (o->contents == NULL) + return FALSE; + } + if (o->flags & SEC_LOAD) + { + if (o->vma < base_addr) + base_addr = o->vma; + if (o->vma + o->size > last_addr) + last_addr = o->vma + o->size; + } + /* Clear the RELOC flags. Currently we don't support incremental + linking. We use the RELOC flag for computing the eicp entries. */ + o->flags &= ~SEC_RELOC; + } + + /* Create the fixup section. */ + fixupsec = bfd_make_section_anyway_with_flags + (info->output_bfd, "$FIXUP$", + SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_LINKER_CREATED); + if (fixupsec == NULL) + return FALSE; + last_addr = (last_addr + 0xffff) & ~0xffff; + fixupsec->vma = last_addr; + + alpha_vms_link_hash (info)->fixup = fixupsec; + alpha_vms_link_hash (info)->base_addr = base_addr; + + /* Create the DMT section, if necessary. */ + BFD_ASSERT (PRIV (dst_section) == NULL); + dst = bfd_get_section_by_name (abfd, "$DST$"); + if (dst != NULL && dst->size == 0) + dst = NULL; + if (dst != NULL) + { + PRIV (dst_section) = dst; + dmt = bfd_make_section_anyway_with_flags + (info->output_bfd, "$DMT$", + SEC_DEBUGGING | SEC_HAS_CONTENTS | SEC_LINKER_CREATED); + if (dmt == NULL) + return FALSE; + } + else + dmt = NULL; + + /* Read all sections from the inputs. */ + for (sub = info->input_bfds; sub != NULL; sub = sub->link_next) + { + if (sub->flags & DYNAMIC) + { + alpha_vms_create_eisd_for_shared (abfd, sub); + continue; + } + + if (!alpha_vms_read_sections_content (sub, info)) + return FALSE; + } + + /* Handle all the link order information for the sections. + Note: past this point, it is not possible to create new sections. */ + for (o = abfd->sections; o != NULL; o = o->next) + { + for (p = o->map_head.link_order; p != NULL; p = p->next) + { + switch (p->type) + { + case bfd_section_reloc_link_order: + case bfd_symbol_reloc_link_order: + abort (); + return FALSE; + case bfd_indirect_link_order: + /* Already done. */ + break; + default: + if (! _bfd_default_link_order (abfd, info, o, p)) + return FALSE; + break; + } + } + } + + /* Compute fixups. */ + if (!alpha_vms_build_fixups (info)) + return FALSE; + + /* Compute the DMT. */ + if (dmt != NULL) + { + int pass; + unsigned char *contents = NULL; + + /* In pass 1, compute the size. In pass 2, write the DMT contents. */ + for (pass = 0; pass < 2; pass++) + { + unsigned int off = 0; + + /* For each object file (ie for each module). */ + for (sub = info->input_bfds; sub != NULL; sub = sub->link_next) + { + asection *sub_dst; + struct vms_dmt_header *dmth = NULL; + unsigned int psect_count; + + /* Skip this module if it has no DST. */ + sub_dst = PRIV2 (sub, dst_section); + if (sub_dst == NULL || sub_dst->size == 0) + continue; + + if (pass == 1) + { + /* Write the header. */ + dmth = (struct vms_dmt_header *)(contents + off); + bfd_putl32 (sub_dst->output_offset, dmth->modbeg); + bfd_putl32 (sub_dst->size, dmth->size); + } + + off += sizeof (struct vms_dmt_header); + psect_count = 0; + + /* For each section (ie for each psect). */ + for (o = sub->sections; o != NULL; o = o->next) + { + /* Only consider interesting sections. */ + if (!(o->flags & SEC_ALLOC)) + continue; + if (o->flags & SEC_LINKER_CREATED) + continue; + + if (pass == 1) + { + /* Write an entry. */ + struct vms_dmt_psect *dmtp; + + dmtp = (struct vms_dmt_psect *)(contents + off); + bfd_putl32 (o->output_offset + o->output_section->vma, + dmtp->start); + bfd_putl32 (o->size, dmtp->length); + psect_count++; + } + off += sizeof (struct vms_dmt_psect); + } + if (pass == 1) + bfd_putl32 (psect_count, dmth->psect_count); + } + + if (pass == 0) + { + contents = bfd_zalloc (info->output_bfd, off); + if (contents == NULL) + return FALSE; + dmt->contents = contents; + dmt->size = off; + } + else + { + BFD_ASSERT (off == dmt->size); + } + } + } + + return TRUE; +} + +/* Read the contents of a section. + buf points to a buffer of buf_size bytes to be filled with + section data (starting at offset into section) */ + +static bfd_boolean +alpha_vms_get_section_contents (bfd *abfd, asection *section, + void *buf, file_ptr offset, + bfd_size_type count) +{ + asection *sec; + + /* Image are easy. */ + if (bfd_get_file_flags (abfd) & (EXEC_P | DYNAMIC)) + return _bfd_generic_get_section_contents (abfd, section, + buf, offset, count); + + /* Safety check. */ + if (offset + count < count + || offset + count > section->size) + { + bfd_set_error (bfd_error_invalid_operation); + return FALSE; + } + + /* Alloc in memory and read ETIRs. */ + BFD_ASSERT (section->contents == NULL); + + for (sec = abfd->sections; sec; sec = sec->next) + { + BFD_ASSERT (sec->contents == NULL); + + if (sec->size != 0 && (sec->flags & SEC_HAS_CONTENTS)) + { + sec->contents = bfd_alloc (abfd, sec->size); + if (sec->contents == NULL) + return FALSE; + } + } + if (!alpha_vms_read_sections_content (abfd, NULL)) + return FALSE; + for (sec = abfd->sections; sec; sec = sec->next) + if (section->contents) + section->flags |= SEC_IN_MEMORY; + memcpy (buf, section->contents + offset, count); + return TRUE; +} + + +/* Set the format of a file being written. */ + +static bfd_boolean +alpha_vms_mkobject (bfd * abfd) +{ + const bfd_arch_info_type *arch; + + vms_debug2 ((1, "alpha_vms_mkobject (%p)\n", abfd)); + + if (!vms_initialize (abfd)) + return FALSE; + + PRIV (recwr.buf) = bfd_alloc (abfd, MAX_OUTREC_SIZE); + if (PRIV (recwr.buf) == NULL) + return FALSE; + + arch = bfd_scan_arch ("alpha"); + + if (arch == 0) + { + bfd_set_error (bfd_error_wrong_format); + return FALSE; + } + + abfd->arch_info = arch; + return TRUE; +} + + +/* 4.1, generic. */ + +/* Called when the BFD is being closed to do any necessary cleanup. */ + +static bfd_boolean +vms_close_and_cleanup (bfd * abfd) +{ + vms_debug2 ((1, "vms_close_and_cleanup (%p)\n", abfd)); + + if (abfd == NULL || abfd->tdata.any == NULL) + return TRUE; + + if (abfd->format == bfd_archive) + { + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = NULL; + return TRUE; + } + + if (PRIV (recrd.buf) != NULL) + free (PRIV (recrd.buf)); + + if (PRIV (sections) != NULL) + free (PRIV (sections)); + + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = NULL; + +#ifdef VMS + if (abfd->direction == write_direction) + { + /* Last step on VMS is to convert the file to variable record length + format. */ + if (bfd_cache_close (abfd) != TRUE) + return FALSE; + if (_bfd_vms_convert_to_var_unix_filename (abfd->filename) != TRUE) + return FALSE; + } +#endif + + return TRUE; +} + +/* Called when a new section is created. */ + +static bfd_boolean +vms_new_section_hook (bfd * abfd, asection *section) +{ + bfd_size_type amt; + + vms_debug2 ((1, "vms_new_section_hook (%p, [%d]%s)\n", + abfd, section->index, section->name)); + + bfd_set_section_alignment (abfd, section, 0); + + vms_debug2 ((7, "%d: %s\n", section->index, section->name)); + + amt = sizeof (struct vms_section_data_struct); + section->used_by_bfd = (PTR) bfd_zalloc (abfd, amt); + if (section->used_by_bfd == NULL) + return FALSE; + + /* Create the section symbol. */ + return _bfd_generic_new_section_hook (abfd, section); +} + +/* Part 4.5, symbols. */ + +/* 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 (???) + bfd_print_symbol_all print all we know, which is not much right now :-). */ + +static void +vms_print_symbol (bfd * abfd, + void * file, + asymbol *symbol, + bfd_print_symbol_type how) +{ + vms_debug2 ((1, "vms_print_symbol (%p, %p, %p, %d)\n", + abfd, file, symbol, how)); + + switch (how) + { + case bfd_print_symbol_name: + case bfd_print_symbol_more: + fprintf ((FILE *)file," %s", symbol->name); + break; + + case bfd_print_symbol_all: + { + const char *section_name = symbol->section->name; + + bfd_print_symbol_vandf (abfd, file, symbol); + + fprintf ((FILE *) file," %-8s %s", section_name, symbol->name); + } + break; + } +} + +/* Return information about symbol in ret. + + fill type, value and name + type: + A absolute + B bss segment symbol + C common symbol + D data segment symbol + f filename + t a static function symbol + T text segment symbol + U undefined + - debug. */ + +static void +vms_get_symbol_info (bfd * abfd ATTRIBUTE_UNUSED, + asymbol *symbol, + symbol_info *ret) +{ + asection *sec; + + vms_debug2 ((1, "vms_get_symbol_info (%p, %p, %p)\n", abfd, symbol, ret)); + + sec = symbol->section; + + if (ret == NULL) + return; + + if (sec == NULL) + ret->type = 'U'; + else if (bfd_is_com_section (sec)) + ret->type = 'C'; + else if (bfd_is_abs_section (sec)) + ret->type = 'A'; + else if (bfd_is_und_section (sec)) + ret->type = 'U'; + else if (bfd_is_ind_section (sec)) + ret->type = 'I'; + else if ((symbol->flags & BSF_FUNCTION) + || (bfd_get_section_flags (abfd, sec) & SEC_CODE)) + ret->type = 'T'; + else if (bfd_get_section_flags (abfd, sec) & SEC_DATA) + ret->type = 'D'; + else if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) + ret->type = 'B'; + else + ret->type = '?'; + + if (ret->type != 'U') + ret->value = symbol->value + symbol->section->vma; + else + ret->value = 0; + ret->name = symbol->name; +} + +/* Return TRUE if the given symbol sym in the BFD abfd is + a compiler generated local label, else return FALSE. */ + +static bfd_boolean +vms_bfd_is_local_label_name (bfd * abfd ATTRIBUTE_UNUSED, + const char *name) +{ + vms_debug2 ((1, "vms_bfd_is_local_label_name (%p, %s)\n", abfd, name)); + return name[0] == '$'; +} + +/* Part 4.7, writing an object file. */ + +/* Sets the contents of the section section in BFD abfd to the data starting + in memory at LOCATION. The data is written to the output section starting + at offset offset for count bytes. + + Normally TRUE is returned, else FALSE. Possible error returns are: + o bfd_error_no_contents - The output section does not have the + SEC_HAS_CONTENTS attribute, so nothing can be written to it. + o and some more too */ + +static bfd_boolean +_bfd_vms_set_section_contents (bfd * abfd, + asection *section, + const void * location, + file_ptr offset, + bfd_size_type count) +{ + if (section->contents == NULL) + { + section->contents = bfd_alloc (abfd, section->size); + if (section->contents == NULL) + return FALSE; + + memcpy (section->contents + offset, location, (size_t) count); + } + + return TRUE; +} + +/* Set the architecture and machine type in BFD abfd to arch and mach. + Find the correct pointer to a structure and insert it into the arch_info + pointer. */ + +static bfd_boolean +alpha_vms_set_arch_mach (bfd *abfd, + enum bfd_architecture arch, unsigned long mach) +{ + if (arch != bfd_arch_alpha + && arch != bfd_arch_unknown) + return FALSE; + + return bfd_default_set_arch_mach (abfd, arch, mach); +} + +/* Set section VMS flags. Clear NO_FLAGS and set FLAGS. */ + +void +bfd_vms_set_section_flags (bfd *abfd ATTRIBUTE_UNUSED, + asection *sec, flagword no_flags, flagword flags) +{ + vms_section_data (sec)->no_flags = no_flags; + vms_section_data (sec)->flags = flags; +} + +struct vms_private_data_struct * +bfd_vms_get_data (bfd *abfd) +{ + return (struct vms_private_data_struct *)abfd->tdata.any; +} + +#define vms_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false) +#define vms_bfd_link_just_syms _bfd_generic_link_just_syms +#define vms_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type +#define vms_bfd_is_group_section bfd_generic_is_group_section +#define vms_bfd_discard_group bfd_generic_discard_group +#define vms_section_already_linked _bfd_generic_section_already_linked +#define vms_bfd_define_common_symbol bfd_generic_define_common_symbol +#define vms_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data + +#define vms_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data +#define vms_bfd_free_cached_info _bfd_generic_bfd_free_cached_info +#define vms_bfd_copy_private_section_data _bfd_generic_bfd_copy_private_section_data +#define vms_bfd_copy_private_symbol_data _bfd_generic_bfd_copy_private_symbol_data +#define vms_bfd_set_private_flags _bfd_generic_bfd_set_private_flags +#define vms_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data + +/* Symbols table. */ +#define alpha_vms_make_empty_symbol _bfd_generic_make_empty_symbol +#define alpha_vms_bfd_is_target_special_symbol \ + ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false) +#define alpha_vms_print_symbol vms_print_symbol +#define alpha_vms_get_symbol_info vms_get_symbol_info +#define alpha_vms_read_minisymbols _bfd_generic_read_minisymbols +#define alpha_vms_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol +#define alpha_vms_get_lineno _bfd_nosymbols_get_lineno +#define alpha_vms_find_inliner_info _bfd_nosymbols_find_inliner_info +#define alpha_vms_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol +#define alpha_vms_find_nearest_line _bfd_vms_find_nearest_dst_line +#define alpha_vms_bfd_is_local_label_name vms_bfd_is_local_label_name + +/* Generic table. */ +#define alpha_vms_close_and_cleanup vms_close_and_cleanup +#define alpha_vms_bfd_free_cached_info vms_bfd_free_cached_info +#define alpha_vms_new_section_hook vms_new_section_hook +#define alpha_vms_set_section_contents _bfd_vms_set_section_contents +#define alpha_vms_get_section_contents_in_window _bfd_generic_get_section_contents_in_window + +#define alpha_vms_bfd_get_relocated_section_contents \ + bfd_generic_get_relocated_section_contents + +#define alpha_vms_bfd_relax_section bfd_generic_relax_section +#define alpha_vms_bfd_gc_sections bfd_generic_gc_sections +#define alpha_vms_bfd_merge_sections bfd_generic_merge_sections +#define alpha_vms_bfd_is_group_section bfd_generic_is_group_section +#define alpha_vms_bfd_discard_group bfd_generic_discard_group +#define alpha_vms_section_already_linked \ + _bfd_generic_section_already_linked + +#define alpha_vms_bfd_define_common_symbol bfd_generic_define_common_symbol +#define alpha_vms_bfd_link_hash_table_free _bfd_generic_link_hash_table_free +#define alpha_vms_bfd_link_just_syms _bfd_generic_link_just_syms +#define alpha_vms_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type + +#define alpha_vms_bfd_link_split_section _bfd_generic_link_split_section + +#define alpha_vms_get_dynamic_symtab_upper_bound \ + _bfd_nodynamic_get_dynamic_symtab_upper_bound +#define alpha_vms_canonicalize_dynamic_symtab \ + _bfd_nodynamic_canonicalize_dynamic_symtab +#define alpha_vms_get_dynamic_reloc_upper_bound \ + _bfd_nodynamic_get_dynamic_reloc_upper_bound +#define alpha_vms_canonicalize_dynamic_reloc \ + _bfd_nodynamic_canonicalize_dynamic_reloc + +const bfd_target vms_alpha_vec = +{ + "vms-alpha", /* Name. */ + bfd_target_evax_flavour, + BFD_ENDIAN_LITTLE, /* Data byte order is little. */ + BFD_ENDIAN_LITTLE, /* Header byte order is little. */ + + (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS + | WP_TEXT | D_PAGED), /* Object flags. */ + (SEC_ALLOC | SEC_LOAD | SEC_RELOC + | SEC_READONLY | SEC_CODE | SEC_DATA + | SEC_HAS_CONTENTS | SEC_IN_MEMORY), /* Sect flags. */ + 0, /* symbol_leading_char. */ + ' ', /* ar_pad_char. */ + 15, /* ar_max_namelen. */ + bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, + bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, + + {_bfd_dummy_target, alpha_vms_object_p, /* bfd_check_format. */ + _bfd_vms_lib_alpha_archive_p, _bfd_dummy_target}, + {bfd_false, alpha_vms_mkobject, /* bfd_set_format. */ + _bfd_vms_lib_alpha_mkarchive, bfd_false}, + {bfd_false, alpha_vms_write_object_contents, /* bfd_write_contents. */ + _bfd_vms_lib_write_archive_contents, bfd_false}, + + BFD_JUMP_TABLE_GENERIC (alpha_vms), + BFD_JUMP_TABLE_COPY (vms), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_vms_lib), + BFD_JUMP_TABLE_SYMBOLS (alpha_vms), + BFD_JUMP_TABLE_RELOCS (alpha_vms), + BFD_JUMP_TABLE_WRITE (alpha_vms), + BFD_JUMP_TABLE_LINK (alpha_vms), + BFD_JUMP_TABLE_DYNAMIC (alpha_vms), + + NULL, + + (PTR) 0 +}; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/vms-gsd.c crash-6.1.6/=unpacked-tar1=/bfd/vms-gsd.c --- crash-5.1.6/=unpacked-tar1=/bfd/vms-gsd.c 2009-02-23 09:28:42.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/vms-gsd.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1081 +0,0 @@ -/* vms-gsd.c -- BFD back-end for VAX (openVMS/VAX) and - EVAX (openVMS/Alpha) files. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2007, 2009 Free Software Foundation, Inc. - - GSD record handling functions - EGSD record handling functions - - Go and read the openVMS linker manual (esp. appendix B) - if you don't know what's going on here :-) - - 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 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - -#include "sysdep.h" -#include "bfd.h" -#include "bfdlink.h" -#include "libbfd.h" - -#include "vms.h" - -/* Typical sections for vax object files. */ - -#define VAX_CODE_NAME "$CODE" -#define VAX_DATA_NAME "$DATA" -#define VAX_ADDRESS_DATA_NAME "$ADDRESS_DATA" - -/* Typical sections for evax object files. */ - -#define EVAX_ABS_NAME "$ABS$" -#define EVAX_CODE_NAME "$CODE$" -#define EVAX_LINK_NAME "$LINK$" -#define EVAX_DATA_NAME "$DATA$" -#define EVAX_BSS_NAME "$BSS$" -#define EVAX_READONLYADDR_NAME "$READONLY_ADDR$" -#define EVAX_READONLY_NAME "$READONLY$" -#define EVAX_LITERAL_NAME "$LITERAL$" -#define EVAX_LITERALS_NAME "$LITERALS" -#define EVAX_COMMON_NAME "$COMMON$" -#define EVAX_LOCAL_NAME "$LOCAL$" - -struct sec_flags_struct -{ - char *name; /* Name of section. */ - int vflags_always; - flagword flags_always; /* Flags we set always. */ - int vflags_hassize; - flagword flags_hassize; /* Flags we set if the section has a size > 0. */ -}; - -/* These flags are deccrtl/vaxcrtl (openVMS 6.2 VAX) compatible. */ - -static struct sec_flags_struct vax_section_flags[] = - { - { VAX_CODE_NAME, - (GPS_S_M_PIC | GPS_S_M_REL | GPS_S_M_SHR | GPS_S_M_EXE | GPS_S_M_RD), - (SEC_CODE), - (GPS_S_M_PIC | GPS_S_M_REL | GPS_S_M_SHR | GPS_S_M_EXE | GPS_S_M_RD), - (SEC_IN_MEMORY | SEC_CODE | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD) }, - { VAX_DATA_NAME, - (GPS_S_M_PIC | GPS_S_M_REL | GPS_S_M_RD | GPS_S_M_WRT), - (SEC_DATA), - (GPS_S_M_PIC | GPS_S_M_REL | GPS_S_M_RD | GPS_S_M_WRT), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD) }, - { VAX_ADDRESS_DATA_NAME, - (GPS_S_M_PIC | GPS_S_M_REL | GPS_S_M_RD), - (SEC_DATA | SEC_READONLY), - (GPS_S_M_PIC | GPS_S_M_REL | GPS_S_M_RD), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_READONLY | SEC_LOAD) }, - { NULL, - (GPS_S_M_PIC | GPS_S_M_OVR | GPS_S_M_REL | GPS_S_M_GBL | GPS_S_M_RD | GPS_S_M_WRT), - (SEC_DATA), - (GPS_S_M_PIC | GPS_S_M_OVR | GPS_S_M_REL | GPS_S_M_GBL | GPS_S_M_RD | GPS_S_M_WRT), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD) } - }; - -/* These flags are deccrtl/vaxcrtl (openVMS 6.2 Alpha) compatible. */ - -static struct sec_flags_struct evax_section_flags[] = - { - { EVAX_ABS_NAME, - (EGPS_S_V_SHR), - (SEC_DATA), - (EGPS_S_V_SHR), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD) }, - { EVAX_CODE_NAME, - (EGPS_S_V_PIC | EGPS_S_V_REL | EGPS_S_V_SHR | EGPS_S_V_EXE), - (SEC_CODE), - (EGPS_S_V_PIC | EGPS_S_V_REL | EGPS_S_V_SHR | EGPS_S_V_EXE), - (SEC_IN_MEMORY | SEC_CODE | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD) }, - { EVAX_LITERAL_NAME, - (EGPS_S_V_PIC | EGPS_S_V_REL | EGPS_S_V_SHR | EGPS_S_V_RD | EGPS_S_V_NOMOD), - (SEC_DATA | SEC_READONLY), - (EGPS_S_V_PIC | EGPS_S_V_REL | EGPS_S_V_SHR | EGPS_S_V_RD), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_READONLY | SEC_LOAD) }, - { EVAX_LINK_NAME, - (EGPS_S_V_REL | EGPS_S_V_RD), - (SEC_DATA | SEC_READONLY), - (EGPS_S_V_REL | EGPS_S_V_RD), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_READONLY | SEC_LOAD) }, - { EVAX_DATA_NAME, - (EGPS_S_V_REL | EGPS_S_V_RD | EGPS_S_V_WRT | EGPS_S_V_NOMOD), - (SEC_DATA), - (EGPS_S_V_REL | EGPS_S_V_RD | EGPS_S_V_WRT), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD) }, - { EVAX_BSS_NAME, - (EGPS_S_V_REL | EGPS_S_V_RD | EGPS_S_V_WRT | EGPS_S_V_NOMOD), - (SEC_NO_FLAGS), - (EGPS_S_V_REL | EGPS_S_V_RD | EGPS_S_V_WRT | EGPS_S_V_NOMOD), - (SEC_IN_MEMORY | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD) }, - { EVAX_READONLYADDR_NAME, - (EGPS_S_V_PIC | EGPS_S_V_REL | EGPS_S_V_RD), - (SEC_DATA | SEC_READONLY), - (EGPS_S_V_PIC | EGPS_S_V_REL | EGPS_S_V_RD), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_READONLY | SEC_LOAD) }, - { EVAX_READONLY_NAME, - (EGPS_S_V_PIC | EGPS_S_V_REL | EGPS_S_V_SHR | EGPS_S_V_RD | EGPS_S_V_NOMOD), - (SEC_DATA | SEC_READONLY), - (EGPS_S_V_PIC | EGPS_S_V_REL | EGPS_S_V_SHR | EGPS_S_V_RD), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_READONLY | SEC_LOAD) }, - { EVAX_LOCAL_NAME, - (EGPS_S_V_REL | EGPS_S_V_RD | EGPS_S_V_WRT), - (SEC_DATA), - (EGPS_S_V_REL | EGPS_S_V_RD | EGPS_S_V_WRT), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD) }, - { EVAX_LITERALS_NAME, - (EGPS_S_V_PIC | EGPS_S_V_OVR), - (SEC_DATA | SEC_READONLY), - (EGPS_S_V_PIC | EGPS_S_V_OVR), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_READONLY | SEC_LOAD) }, - { NULL, - (EGPS_S_V_REL | EGPS_S_V_RD | EGPS_S_V_WRT), - (SEC_DATA), - (EGPS_S_V_REL | EGPS_S_V_RD | EGPS_S_V_WRT), - (SEC_IN_MEMORY | SEC_DATA | SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD) } - }; - -/* Retrieve bfd section flags by name and size. */ - -static flagword -vms_secflag_by_name (bfd *abfd, - struct sec_flags_struct *section_flags, - char *name, - int hassize) -{ - int i = 0; - - while (section_flags[i].name != NULL) - { - if ((PRIV (is_vax)? - strcasecmp (name, section_flags[i].name): - strcmp (name, section_flags[i].name)) == 0) - { - if (hassize) - return section_flags[i].flags_hassize; - else - return section_flags[i].flags_always; - } - i++; - } - if (hassize) - return section_flags[i].flags_hassize; - return section_flags[i].flags_always; -} - -/* Retrieve vms section flags by name and size. */ - -static flagword -vms_esecflag_by_name (struct sec_flags_struct *section_flags, - char *name, - int hassize) -{ - int i = 0; - - while (section_flags[i].name != NULL) - { - if (strcmp (name, section_flags[i].name) == 0) - { - if (hassize) - return section_flags[i].vflags_hassize; - else - return section_flags[i].vflags_always; - } - i++; - } - if (hassize) - return section_flags[i].vflags_hassize; - return section_flags[i].vflags_always; -} - -#if VMS_DEBUG - -struct flagdescstruct { char *name; flagword value; }; - -static const struct flagdescstruct gpsflagdesc[] = -{ - { "PIC", GPS_S_M_PIC }, - { "LIB", GPS_S_M_LIB }, - { "OVR", GPS_S_M_OVR }, - { "REL", GPS_S_M_REL }, - { "GBL", GPS_S_M_GBL }, - { "SHR", GPS_S_M_SHR }, - { "EXE", GPS_S_M_EXE }, - { "RD", GPS_S_M_RD }, - { "WRT", GPS_S_M_WRT }, - { "VEC", GPS_S_M_VEC }, - { "NOMOD", EGPS_S_V_NOMOD }, - { "COM", EGPS_S_V_COM }, - { NULL, 0 } -}; - -static const struct flagdescstruct gsyflagdesc[] = -{ - { "WEAK", GSY_S_M_WEAK }, - { "DEF", GSY_S_M_DEF }, - { "UNI", GSY_S_M_UNI }, - { "REL", GSY_S_M_REL }, - { "COMM", EGSY_S_V_COMM }, - { "VECEP", EGSY_S_V_VECEP }, - { "NORM", EGCY_S_V_NORM }, - { NULL, 0 } -}; - -static char *flag2str (struct flagdescstruct *, flagword); - -/* Convert flag to printable string. */ - -static char * -flag2str (struct flagdescstruct * flagdesc, flagword flags) -{ - static char res[64]; - int next = 0; - - res[0] = 0; - while (flagdesc->name != NULL) - { - if ((flags & flagdesc->value) != 0) - { - if (next) - strcat (res, ","); - else - next = 1; - strcat (res, flagdesc->name); - } - flagdesc++; - } - return res; -} -#endif - -/* Input routines. */ - -static int register_universal_symbol (bfd *abfd, asymbol *symbol, - int vms_flags); - -/* Process GSD/EGSD record - return 0 on success, -1 on error. */ - -int -_bfd_vms_slurp_gsd (bfd * abfd, int objtype) -{ - int gsd_type, gsd_size; - asection *section; - unsigned char *vms_rec; - flagword new_flags, old_flags; - char *name; - asymbol *symbol; - vms_symbol_entry *entry; - unsigned long base_addr; - unsigned long align_addr; - static unsigned int psect_idx = 0; - -#if VMS_DEBUG - vms_debug (2, "GSD/EGSD (%d/%x)\n", objtype, objtype); -#endif - - switch (objtype) - { - case EOBJ_S_C_EGSD: - PRIV (vms_rec) += 8; /* Skip type, size, l_temp. */ - PRIV (rec_size) -= 8; - break; - case OBJ_S_C_GSD: - PRIV (vms_rec) += 1; - PRIV (rec_size) -= 1; - break; - default: - return -1; - } - - /* Calculate base address for each section. */ - base_addr = 0L; - - abfd->symcount = 0; - - while (PRIV (rec_size) > 0) - { - vms_rec = PRIV (vms_rec); - - if (objtype == OBJ_S_C_GSD) - gsd_type = vms_rec[0]; - else - { - _bfd_vms_get_header_values (abfd, vms_rec, &gsd_type, &gsd_size); - gsd_type += EVAX_OFFSET; - } - -#if VMS_DEBUG - vms_debug (3, "gsd_type %d\n", gsd_type); -#endif - - switch (gsd_type) - { - case GSD_S_C_PSC: - { - /* Program section definition. */ - asection *old_section = 0; - -#if VMS_DEBUG - vms_debug (4, "GSD_S_C_PSC\n"); -#endif - /* If this section isn't a bfd section. */ - if (PRIV (is_vax) && (psect_idx < (abfd->section_count - 1))) - { - /* Check for temporary section from TIR record. */ - if (psect_idx < PRIV (section_count)) - old_section = PRIV (sections)[psect_idx]; - else - old_section = 0; - } - - name = _bfd_vms_save_counted_string (vms_rec + 8); - section = bfd_make_section (abfd, name); - if (!section) - { - (*_bfd_error_handler) (_("bfd_make_section (%s) failed"), - name); - return -1; - } - old_flags = bfd_getl16 (vms_rec + 2); - section->size = bfd_getl32 (vms_rec + 4); /* allocation */ - new_flags = vms_secflag_by_name (abfd, vax_section_flags, name, - section->size > 0); - if (old_flags & EGPS_S_V_REL) - new_flags |= SEC_RELOC; - if (old_flags & GPS_S_M_OVR) - new_flags |= SEC_IS_COMMON; - if (!bfd_set_section_flags (abfd, section, new_flags)) - { - (*_bfd_error_handler) - (_("bfd_set_section_flags (%s, %x) failed"), - name, new_flags); - return -1; - } - section->alignment_power = vms_rec[1]; - align_addr = (1 << section->alignment_power); - if ((base_addr % align_addr) != 0) - base_addr += (align_addr - (base_addr % align_addr)); - section->vma = (bfd_vma)base_addr; - base_addr += section->size; - - /* Global section is common symbol. */ - if (old_flags & GPS_S_M_GBL) - { - entry = _bfd_vms_enter_symbol (abfd, name); - if (entry == NULL) - { - bfd_set_error (bfd_error_no_memory); - return -1; - } - symbol = entry->symbol; - - symbol->value = 0; - symbol->section = section; - symbol->flags = (BSF_GLOBAL | BSF_SECTION_SYM | BSF_OLD_COMMON); - } - - /* Copy saved contents if old_section set. */ - if (old_section != 0) - { - section->contents = old_section->contents; - if (section->size < old_section->size) - { - (*_bfd_error_handler) - (_("Size mismatch section %s=%lx, %s=%lx"), - old_section->name, - (unsigned long) old_section->size, - section->name, - (unsigned long) section->size); - return -1; - } - else if (section->size > old_section->size) - { - section->contents = bfd_realloc (old_section->contents, - section->size); - if (section->contents == NULL) - { - bfd_set_error (bfd_error_no_memory); - return -1; - } - } - } - else - { - section->contents = bfd_zmalloc (section->size); - if (section->contents == NULL) - { - bfd_set_error (bfd_error_no_memory); - return -1; - } - } -#if VMS_DEBUG - vms_debug (4, "gsd psc %d (%s, flags %04x=%s) ", - section->index, name, old_flags, flag2str (gpsflagdesc, old_flags)); - vms_debug (4, "%d bytes at 0x%08lx (mem %p)\n", - section->size, section->vma, section->contents); -#endif - - gsd_size = vms_rec[8] + 9; - - psect_idx++; - } - break; - - case GSD_S_C_EPM: - case GSD_S_C_EPMW: -#if VMS_DEBUG - vms_debug (4, "gsd epm\n"); -#endif - /* Fall through. */ - case GSD_S_C_SYM: - case GSD_S_C_SYMW: - { - int name_offset = 0, value_offset = 0; - - /* Symbol specification (definition or reference). */ -#if VMS_DEBUG - vms_debug (4, "GSD_S_C_SYM(W)\n"); -#endif - old_flags = bfd_getl16 (vms_rec + 2); - new_flags = BSF_NO_FLAGS; - - if (old_flags & GSY_S_M_WEAK) - new_flags |= BSF_WEAK; - - switch (gsd_type) - { - case GSD_S_C_EPM: - name_offset = 11; - value_offset = 5; - new_flags |= BSF_FUNCTION; - break; - case GSD_S_C_EPMW: - name_offset = 12; - value_offset = 6; - new_flags |= BSF_FUNCTION; - break; - case GSD_S_C_SYM: - if (old_flags & GSY_S_M_DEF) /* Symbol definition. */ - name_offset = 9; - else - name_offset = 4; - value_offset = 5; - break; - case GSD_S_C_SYMW: - if (old_flags & GSY_S_M_DEF) /* Symbol definition. */ - name_offset = 10; - else - name_offset = 5; - value_offset = 6; - break; - } - - /* Save symbol in vms_symbol_table. */ - entry = _bfd_vms_enter_symbol - (abfd, _bfd_vms_save_counted_string (vms_rec + name_offset)); - if (entry == NULL) - { - bfd_set_error (bfd_error_no_memory); - return -1; - } - symbol = entry->symbol; - - if (old_flags & GSY_S_M_DEF) - { - /* Symbol definition. */ - int psect; - - symbol->value = bfd_getl32 (vms_rec + value_offset); - if ((gsd_type == GSD_S_C_SYMW) - || (gsd_type == GSD_S_C_EPMW)) - psect = bfd_getl16 (vms_rec + value_offset - 2); - else - psect = vms_rec[value_offset-1]; - - symbol->section = (asection *)(unsigned long)psect; -#if VMS_DEBUG - vms_debug (4, "gsd sym def #%d (%s, %ld, %04x=%s)\n", abfd->symcount, - symbol->name, (long)symbol->section, old_flags, flag2str(gsyflagdesc, old_flags)); -#endif - } - else - { - /* Symbol reference. */ -#if VMS_DEBUG - vms_debug (4, "gsd sym ref #%d (%s, %04x=%s)\n", abfd->symcount, - symbol->name, old_flags, flag2str (gsyflagdesc, old_flags)); -#endif - symbol->section = (asection *)(unsigned long)-1; - } - - gsd_size = vms_rec[name_offset] + name_offset + 1; - symbol->flags = new_flags; - } - - break; - - case GSD_S_C_PRO: - case GSD_S_C_PROW: -#if VMS_DEBUG - vms_debug (4, "gsd pro\n"); -#endif - break; - case GSD_S_C_IDC: -#if VMS_DEBUG - vms_debug (4, "gsd idc\n"); -#endif - break; - case GSD_S_C_ENV: -#if VMS_DEBUG - vms_debug (4, "gsd env\n"); -#endif - break; - case GSD_S_C_LSY: -#if VMS_DEBUG - vms_debug (4, "gsd lsy\n"); -#endif - break; - case GSD_S_C_LEPM: -#if VMS_DEBUG - vms_debug (4, "gsd lepm\n"); -#endif - break; - case GSD_S_C_LPRO: -#if VMS_DEBUG - vms_debug (4, "gsd lpro\n"); -#endif - break; - case GSD_S_C_SPSC: -#if VMS_DEBUG - vms_debug (4, "gsd spsc\n"); -#endif - break; - case GSD_S_C_SYMV: -#if VMS_DEBUG - vms_debug (4, "gsd symv\n"); -#endif - break; - case GSD_S_C_EPMV: -#if VMS_DEBUG - vms_debug (4, "gsd epmv\n"); -#endif - break; - case GSD_S_C_PROV: -#if VMS_DEBUG - vms_debug (4, "gsd prov\n"); -#endif - break; - - case EGSD_S_C_PSC + EVAX_OFFSET: - { - /* Program section definition. */ - name = _bfd_vms_save_counted_string (vms_rec + EGPS_S_B_NAMLNG); - section = bfd_make_section (abfd, name); - if (!section) - return -1; - old_flags = bfd_getl16 (vms_rec + EGPS_S_W_FLAGS); - section->size = bfd_getl32 (vms_rec + EGPS_S_L_ALLOC); - new_flags = vms_secflag_by_name (abfd, evax_section_flags, name, - section->size > 0); - if (old_flags & EGPS_S_V_REL) - new_flags |= SEC_RELOC; - if (!bfd_set_section_flags (abfd, section, new_flags)) - return -1; - section->alignment_power = vms_rec[EGPS_S_B_ALIGN]; - align_addr = (1 << section->alignment_power); - if ((base_addr % align_addr) != 0) - base_addr += (align_addr - (base_addr % align_addr)); - section->vma = (bfd_vma)base_addr; - base_addr += section->size; - section->contents = bfd_zmalloc (section->size); - if (section->contents == NULL) - return -1; - section->filepos = (unsigned int)-1; -#if VMS_DEBUG - vms_debug (4, "EGSD P-section %d (%s, flags %04x=%s) ", - section->index, name, old_flags, flag2str(gpsflagdesc, old_flags)); - vms_debug (4, "%d bytes at 0x%08lx (mem %p)\n", - section->size, section->vma, section->contents); -#endif - } - break; - - case EGSD_S_C_SYM + EVAX_OFFSET: - { - /* Global symbol specification (definition or reference). */ - symbol = bfd_make_empty_symbol (abfd); - if (symbol == 0) - return -1; - - old_flags = bfd_getl16 (vms_rec + EGSY_S_W_FLAGS); - new_flags = BSF_NO_FLAGS; - - if (old_flags & EGSY_S_V_WEAK) - new_flags |= BSF_WEAK; - - if (old_flags & EGSY_S_V_DEF) - { - /* Symbol definition. */ - if (old_flags & EGSY_S_V_NORM) - new_flags |= BSF_FUNCTION; - symbol->name = - _bfd_vms_save_counted_string (vms_rec + ESDF_S_B_NAMLNG); - symbol->value = bfd_getl64 (vms_rec + ESDF_S_L_VALUE); - symbol->section = - (asection *)(unsigned long) bfd_getl32 (vms_rec + ESDF_S_L_PSINDX); -#if VMS_DEBUG - vms_debug (4, "EGSD sym def #%d (%s, %ld, %04x=%s)\n", - abfd->symcount, symbol->name, (long)symbol->section, - old_flags, flag2str (gsyflagdesc, old_flags)); -#endif - } - else - { - /* Symbol reference. */ - symbol->name = - _bfd_vms_save_counted_string (vms_rec + ESRF_S_B_NAMLNG); -#if VMS_DEBUG - vms_debug (4, "EGSD sym ref #%d (%s, %04x=%s)\n", - abfd->symcount, symbol->name, old_flags, - flag2str (gsyflagdesc, old_flags)); -#endif - symbol->section = (asection *)(unsigned long)-1; - } - - symbol->flags = new_flags; - - /* Register symbol in VMS symbol table. */ - entry = (vms_symbol_entry *) bfd_hash_lookup - (PRIV (vms_symbol_table), symbol->name, TRUE, FALSE); - - if (entry == NULL) - { - bfd_set_error (bfd_error_no_memory); - return -1; - } - - if (entry->symbol != NULL) - { - /* FIXME ?, DEC C generates this. */ -#if VMS_DEBUG - vms_debug (4, "EGSD_S_C_SYM: duplicate \"%s\"\n", symbol->name); -#endif - } - else - { - entry->symbol = symbol; - PRIV (gsd_sym_count)++; - abfd->symcount++; - } - } - break; - - case EGSD_S_C_SYMG + EVAX_OFFSET: - { - /* Universal symbol specification (definition). */ - symbol = bfd_make_empty_symbol (abfd); - if (symbol == 0) - return -1; - - old_flags = bfd_getl16 (vms_rec + EGST_S_W_FLAGS); - new_flags = BSF_NO_FLAGS; - - if (old_flags & EGSY_S_V_WEAK) - new_flags |= BSF_WEAK; - - if (old_flags & EGSY_S_V_DEF) /* symbol definition */ - { - if (old_flags & EGSY_S_V_NORM) - new_flags |= BSF_FUNCTION; - - symbol->name = - _bfd_vms_save_counted_string (vms_rec + EGST_S_B_NAMLNG); - - /* For BSF_FUNCTION symbols, the entry point is in LP_1 - and the descriptor in LP_2. For other symbols, the - unique value is in LP_2. */ - symbol->value = bfd_getl64 (vms_rec + EGST_S_Q_LP_2); - - /* Adding this offset is necessary in order for GDB to - read the DWARF-2 debug info from shared libraries. */ - if (abfd->flags & DYNAMIC - && strstr (symbol->name, "$DWARF2.DEBUG") != 0) - symbol->value += PRIV (symvva); - } - else /* symbol reference */ - (*_bfd_error_handler) ("Invalid EGST reference"); - - symbol->flags = new_flags; - - if (register_universal_symbol (abfd, symbol, old_flags) < 0) - return -1; - - /* Make a second symbol for the entry point. */ - if (symbol->flags & BSF_FUNCTION) - { - asymbol *en_sym; - char *name = bfd_alloc (abfd, strlen (symbol->name) + 5); - - en_sym = bfd_make_empty_symbol (abfd); - if (en_sym == 0) - return -1; - - strcpy (name, symbol->name); - strcat (name, "..en"); - - en_sym->name = name; - en_sym->value = bfd_getl64 (vms_rec + EGST_S_Q_LP_1); - - if (register_universal_symbol (abfd, en_sym, old_flags) < 0) - return -1; - } - } - break; - - case EGSD_S_C_IDC + EVAX_OFFSET: - break; - - default: - (*_bfd_error_handler) (_("Unknown GSD/EGSD subtype %d"), gsd_type); - bfd_set_error (bfd_error_bad_value); - return -1; - } - - PRIV (rec_size) -= gsd_size; - PRIV (vms_rec) += gsd_size; - } - - if (abfd->symcount > 0) - abfd->flags |= HAS_SYMS; - - return 0; -} - -/* Register a universal symbol in the VMS symbol table. */ - -static int -register_universal_symbol (bfd *abfd, asymbol *symbol, int vms_flags) -{ - bfd_vma sbase = 0; - asection *s, *sec = NULL; - vms_symbol_entry *entry; - - /* A universal symbol is by definition global... */ - symbol->flags |= BSF_GLOBAL; - - /* ...and dynamic in shared libraries. */ - if (abfd->flags & DYNAMIC) - symbol->flags |= BSF_DYNAMIC; - - /* Find containing section. */ - for (s = abfd->sections; s; s = s->next) - { - if (symbol->value >= s->vma - && s->vma > sbase - && !(s->flags & SEC_COFF_SHARED_LIBRARY) - && (s->size > 0 || !(vms_flags & EGSY_S_V_REL))) - { - sbase = s->vma; - sec = s; - } - } - - symbol->value -= sbase; - symbol->section = sec; - -#if VMS_DEBUG - vms_debug (4, "EGST sym def #%d (%s, 0x%llx => 0x%llx, %04x=%s)\n", - abfd->symcount, symbol->name, symbol->value + sbase, - symbol->value, vms_flags, - flag2str(gsyflagdesc, vms_flags)); -#endif - - entry = (vms_symbol_entry *) bfd_hash_lookup (PRIV (vms_symbol_table), - symbol->name, - TRUE, FALSE); - - if (entry == NULL) - { - bfd_set_error (bfd_error_no_memory); - return -1; - } - - if (entry->symbol) /* FIXME: DEC C generates this */ - { -#if VMS_DEBUG - vms_debug (4, "EGSD_S_C_SYMG: duplicate \"%s\"\n", symbol->name); -#endif - } - else - { - entry->symbol = symbol; - PRIV (gsd_sym_count)++; - abfd->symcount++; - } - - return 0; -} - -/* Set section VMS flags. */ - -void -bfd_vms_set_section_flags (bfd *abfd ATTRIBUTE_UNUSED, - asection *sec, flagword flags) -{ - vms_section_data (sec)->vflags = flags; -} - -/* Write section and symbol directory of bfd abfd. */ - -int -_bfd_vms_write_gsd (bfd *abfd, int objtype ATTRIBUTE_UNUSED) -{ - asection *section; - asymbol *symbol; - unsigned int symnum; - int last_index = -1; - char dummy_name[10]; - char *sname; - flagword new_flags, old_flags; - int abs_section_index = 0; - -#if VMS_DEBUG - vms_debug (2, "vms_write_gsd (%p, %d)\n", abfd, objtype); -#endif - - /* Output sections. */ - section = abfd->sections; -#if VMS_DEBUG - vms_debug (3, "%d sections found\n", abfd->section_count); -#endif - - /* Egsd is quadword aligned. */ - _bfd_vms_output_alignment (abfd, 8); - - _bfd_vms_output_begin (abfd, EOBJ_S_C_EGSD, -1); - _bfd_vms_output_long (abfd, 0); - /* Prepare output for subrecords. */ - _bfd_vms_output_push (abfd); - - while (section != 0) - { -#if VMS_DEBUG - vms_debug (3, "Section #%d %s, %d bytes\n", section->index, section->name, (int)section->size); -#endif - - /* Don't write out the VMS debug info section since it is in the - ETBT and EDBG sections in etir. */ - if (!strcmp (section->name, ".vmsdebug")) - goto done; - - /* 13 bytes egsd, max 31 chars name -> should be 44 bytes. */ - if (_bfd_vms_output_check (abfd, 64) < 0) - { - _bfd_vms_output_pop (abfd); - _bfd_vms_output_end (abfd); - _bfd_vms_output_begin (abfd, EOBJ_S_C_EGSD, -1); - _bfd_vms_output_long (abfd, 0); - /* Prepare output for subrecords. */ - _bfd_vms_output_push (abfd); - } - - /* Create dummy sections to keep consecutive indices. */ - while (section->index - last_index > 1) - { -#if VMS_DEBUG - vms_debug (3, "index %d, last %d\n", section->index, last_index); -#endif - _bfd_vms_output_begin (abfd, EGSD_S_C_PSC, -1); - _bfd_vms_output_short (abfd, 0); - _bfd_vms_output_short (abfd, 0); - _bfd_vms_output_long (abfd, 0); - sprintf (dummy_name, ".DUMMY%02d", last_index); - _bfd_vms_output_counted (abfd, dummy_name); - _bfd_vms_output_flush (abfd); - last_index++; - } - - /* Don't know if this is necessary for the linker but for now it keeps - vms_slurp_gsd happy */ - sname = (char *)section->name; - if (*sname == '.') - { - sname++; - if ((*sname == 't') && (strcmp (sname, "text") == 0)) - sname = PRIV (is_vax)?VAX_CODE_NAME:EVAX_CODE_NAME; - else if ((*sname == 'd') && (strcmp (sname, "data") == 0)) - sname = PRIV (is_vax)?VAX_DATA_NAME:EVAX_DATA_NAME; - else if ((*sname == 'b') && (strcmp (sname, "bss") == 0)) - sname = EVAX_BSS_NAME; - else if ((*sname == 'l') && (strcmp (sname, "link") == 0)) - sname = EVAX_LINK_NAME; - else if ((*sname == 'r') && (strcmp (sname, "rdata") == 0)) - sname = EVAX_READONLY_NAME; - else if ((*sname == 'l') && (strcmp (sname, "literal") == 0)) - sname = EVAX_LITERAL_NAME; - else if ((*sname == 'l') && (strcmp (sname, "literals") == 0)) - { - sname = EVAX_LITERALS_NAME; - abs_section_index = section->index; - } - else if ((*sname == 'c') && (strcmp (sname, "comm") == 0)) - sname = EVAX_COMMON_NAME; - else if ((*sname == 'l') && (strcmp (sname, "lcomm") == 0)) - sname = EVAX_LOCAL_NAME; - } - else - sname = _bfd_vms_length_hash_symbol (abfd, sname, EOBJ_S_C_SECSIZ); - - _bfd_vms_output_begin (abfd, EGSD_S_C_PSC, -1); - _bfd_vms_output_short (abfd, section->alignment_power & 0xff); - - if (bfd_is_com_section (section)) - new_flags = (EGPS_S_V_OVR | EGPS_S_V_REL | EGPS_S_V_GBL | EGPS_S_V_RD - | EGPS_S_V_WRT | EGPS_S_V_NOMOD | EGPS_S_V_COM); - else - new_flags = vms_esecflag_by_name (evax_section_flags, sname, - section->size > 0); - - /* Modify them as directed. */ - if (section->flags & SEC_READONLY) - new_flags &= ~EGPS_S_V_WRT; - - new_flags |= vms_section_data (section)->vflags & 0xffff; - new_flags &= - ~((vms_section_data (section)->vflags >> EGPS_S_V_NO_SHIFT) & 0xffff); - -#if VMS_DEBUG - vms_debug (3, "sec flags %x\n", section->flags); - vms_debug (3, "new_flags %x, _raw_size %d\n", new_flags, section->size); -#endif - - _bfd_vms_output_short (abfd, new_flags); - _bfd_vms_output_long (abfd, (unsigned long) section->size); - _bfd_vms_output_counted (abfd, sname); - _bfd_vms_output_flush (abfd); - - last_index = section->index; -done: - section = section->next; - } - - /* Output symbols. */ -#if VMS_DEBUG - vms_debug (3, "%d symbols found\n", abfd->symcount); -#endif - - bfd_set_start_address (abfd, (bfd_vma) -1); - - for (symnum = 0; symnum < abfd->symcount; symnum++) - { - char *hash; - - symbol = abfd->outsymbols[symnum]; - if (*(symbol->name) == '_') - { - if (strcmp (symbol->name, "__main") == 0) - bfd_set_start_address (abfd, (bfd_vma)symbol->value); - } - old_flags = symbol->flags; - - if (old_flags & BSF_FILE) - continue; - - if ((old_flags & BSF_GLOBAL) == 0 /* Not xdef... */ - && !bfd_is_und_section (symbol->section) /* and not xref... */ - && !((old_flags & BSF_SECTION_SYM) != 0 /* and not LIB$INITIALIZE. */ - && strcmp (symbol->section->name, "LIB$INITIALIZE") == 0)) - continue; - - /* 13 bytes egsd, max 64 chars name -> should be 77 bytes. */ - if (_bfd_vms_output_check (abfd, 80) < 0) - { - _bfd_vms_output_pop (abfd); - _bfd_vms_output_end (abfd); - _bfd_vms_output_begin (abfd, EOBJ_S_C_EGSD, -1); - _bfd_vms_output_long (abfd, 0); - /* Prepare output for subrecords. */ - _bfd_vms_output_push (abfd); - } - - _bfd_vms_output_begin (abfd, EGSD_S_C_SYM, -1); - - /* Data type, alignment. */ - _bfd_vms_output_short (abfd, 0); - - new_flags = 0; - - if (old_flags & BSF_WEAK) - new_flags |= EGSY_S_V_WEAK; - if (bfd_is_com_section (symbol->section)) /* .comm */ - new_flags |= (EGSY_S_V_WEAK | EGSY_S_V_COMM); - - if (old_flags & BSF_FUNCTION) - { - new_flags |= EGSY_S_V_NORM; - new_flags |= EGSY_S_V_REL; - } - if (old_flags & BSF_GLOBAL) - { - new_flags |= EGSY_S_V_DEF; - if (!bfd_is_abs_section (symbol->section)) - new_flags |= EGSY_S_V_REL; - } - _bfd_vms_output_short (abfd, new_flags); - - if (old_flags & BSF_GLOBAL) - { - /* Symbol definition. */ - uquad code_address = 0; - unsigned long ca_psindx = 0; - unsigned long psindx; - - if ((old_flags & BSF_FUNCTION) && symbol->udata.p != NULL) - { - asymbol *sym; - - if (bfd_get_flavour (abfd) == bfd_target_evax_flavour) - sym = ((struct evax_private_udata_struct *)symbol->udata.p)->enbsym; - else - sym = (asymbol *)symbol->udata.p; - code_address = sym->value; - ca_psindx = sym->section->index; - } - if (bfd_is_abs_section (symbol->section)) - psindx = abs_section_index; - else - psindx = symbol->section->index; - - _bfd_vms_output_quad (abfd, symbol->value); - _bfd_vms_output_quad (abfd, code_address); - _bfd_vms_output_long (abfd, ca_psindx); - _bfd_vms_output_long (abfd, psindx); - } - hash = _bfd_vms_length_hash_symbol (abfd, symbol->name, EOBJ_S_C_SYMSIZ); - _bfd_vms_output_counted (abfd, hash); - - _bfd_vms_output_flush (abfd); - - } - - _bfd_vms_output_alignment (abfd, 8); - _bfd_vms_output_pop (abfd); - _bfd_vms_output_end (abfd); - - return 0; -} diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/vms-hdr.c crash-6.1.6/=unpacked-tar1=/bfd/vms-hdr.c --- crash-5.1.6/=unpacked-tar1=/bfd/vms-hdr.c 2009-03-18 11:47:18.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/vms-hdr.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1415 +0,0 @@ -/* vms-hdr.c -- BFD back-end for VMS/VAX (openVMS/VAX) and - EVAX (openVMS/Alpha) files. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, - 2007, 2008, 2009 Free Software Foundation, Inc. - - HDR record handling functions - EMH record handling functions - - EOM record handling functions - EEOM record handling functions - - IHD record handling functions - EIHD record handling functions - - ISD record handling functions - EISD record handling functions - - IHS record handling functions - EIHS record handling functions - - DBG record handling functions - EDBG record handling functions - - TBT record handling functions - ETBT record handling functions - - DST/DMT section handling functions - - 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 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - -#include "sysdep.h" -#include "bfd.h" -#include "bfdver.h" -#include "bfdlink.h" -#include "safe-ctype.h" -#include "libbfd.h" - -#include "vms.h" - -static struct module *new_module (bfd *); -static void parse_module - (bfd *, struct module *, unsigned char *, unsigned int); -static struct module *build_module_list (bfd *); -static bfd_boolean module_find_nearest_line - (bfd *, struct module *, bfd_vma, const char **, const char **, - unsigned int *); -static int vms_slurp_debug (bfd *); - -#define SET_MODULE_PARSED(m) \ - do { if ((m)->name == NULL) (m)->name = ""; } while (0) -#define IS_MODULE_PARSED(m) ((m)->name != NULL) - - -/* Read & process emh record - return 0 on success, -1 on error. */ - -int -_bfd_vms_slurp_hdr (bfd *abfd, int objtype) -{ - unsigned char *ptr; - unsigned char *vms_rec; - int subtype; - - vms_rec = PRIV(vms_rec); - -#if VMS_DEBUG - vms_debug(2, "HDR/EMH\n"); -#endif - - switch (objtype) - { - case OBJ_S_C_HDR: - subtype = vms_rec[1]; - break; - case EOBJ_S_C_EMH: - subtype = bfd_getl16 (vms_rec + 4) + EVAX_OFFSET; - break; - default: - subtype = -1; - } - -#if VMS_DEBUG - vms_debug(3, "subtype %d\n", subtype); -#endif - - switch (subtype) - { - case MHD_S_C_MHD: - /* Module header. */ - PRIV (hdr_data).hdr_b_strlvl = vms_rec[2]; - PRIV (hdr_data).hdr_l_recsiz = bfd_getl16 (vms_rec + 3); - PRIV (hdr_data).hdr_t_name = _bfd_vms_save_counted_string (vms_rec + 5); - ptr = vms_rec + 5 + vms_rec[5] + 1; - PRIV (hdr_data).hdr_t_version = _bfd_vms_save_counted_string (ptr); - ptr += *ptr + 1; - PRIV (hdr_data).hdr_t_date = _bfd_vms_save_sized_string (ptr, 17); - break; - - case MHD_S_C_LNM: - PRIV (hdr_data).hdr_c_lnm = _bfd_vms_save_sized_string (vms_rec, PRIV (rec_size - 2)); - break; - - case MHD_S_C_SRC: - PRIV (hdr_data).hdr_c_src = _bfd_vms_save_sized_string (vms_rec, PRIV (rec_size - 2)); - break; - - case MHD_S_C_TTL: - PRIV (hdr_data).hdr_c_ttl = _bfd_vms_save_sized_string (vms_rec, PRIV (rec_size - 2)); - break; - - case EMH_S_C_MHD + EVAX_OFFSET: - /* Module header. */ - PRIV (hdr_data).hdr_b_strlvl = vms_rec[6]; - PRIV (hdr_data).hdr_l_arch1 = bfd_getl32 (vms_rec + 8); - PRIV (hdr_data).hdr_l_arch2 = bfd_getl32 (vms_rec + 12); - PRIV (hdr_data).hdr_l_recsiz = bfd_getl32 (vms_rec + 16); - PRIV (hdr_data).hdr_t_name = _bfd_vms_save_counted_string (vms_rec + 20); - ptr = vms_rec + 20 + vms_rec[20] + 1; - PRIV (hdr_data).hdr_t_version =_bfd_vms_save_counted_string (ptr); - ptr += *ptr + 1; - PRIV (hdr_data).hdr_t_date = _bfd_vms_save_sized_string (ptr, 17); - break; - - case EMH_S_C_LNM + EVAX_OFFSET: - PRIV (hdr_data).hdr_c_lnm = _bfd_vms_save_sized_string (vms_rec, PRIV (rec_size - 6)); - break; - - case EMH_S_C_SRC + EVAX_OFFSET: - PRIV (hdr_data).hdr_c_src = _bfd_vms_save_sized_string (vms_rec, PRIV (rec_size - 6)); - break; - - case EMH_S_C_TTL + EVAX_OFFSET: - PRIV (hdr_data).hdr_c_ttl = _bfd_vms_save_sized_string (vms_rec, PRIV (rec_size - 6)); - break; - - case MHD_S_C_CPR: - case MHD_S_C_MTC: - case MHD_S_C_GTX: - case EMH_S_C_CPR + EVAX_OFFSET: - case EMH_S_C_MTC + EVAX_OFFSET: - case EMH_S_C_GTX + EVAX_OFFSET: - break; - - default: - bfd_set_error (bfd_error_wrong_format); - return -1; - } - - return 0; -} - -/* Output routines. */ - -/* Manufacture a VMS like time on a unix based system. - stolen from obj-vms.c. */ - -static unsigned char * -get_vms_time_string (void) -{ - static unsigned char tbuf[18]; -#ifndef VMS -#include - - char *pnt; - time_t timeb; - - time (& timeb); - pnt = ctime (&timeb); - pnt[3] = 0; - pnt[7] = 0; - pnt[10] = 0; - pnt[16] = 0; - pnt[24] = 0; - sprintf ((char *) tbuf, "%2s-%3s-%s %s", - pnt + 8, pnt + 4, pnt + 20, pnt + 11); -#else -#include - struct - { - int Size; - unsigned char *Ptr; - } Descriptor; - Descriptor.Size = 17; - Descriptor.Ptr = tbuf; - SYS$ASCTIM (0, &Descriptor, 0, 0); -#endif /* not VMS */ - -#if VMS_DEBUG - vms_debug (6, "vmstimestring:'%s'\n", tbuf); -#endif - - return tbuf; -} - -/* Write object header for bfd abfd. */ - -int -_bfd_vms_write_hdr (bfd *abfd, int objtype) -{ - asymbol *symbol; - unsigned int symnum; - int had_case = 0; - int had_file = 0; - char version [256]; - -#if VMS_DEBUG - vms_debug (2, "vms_write_hdr (%p)\n", abfd); -#endif - - _bfd_vms_output_alignment (abfd, 2); - - /* MHD. */ - if (objtype != OBJ_S_C_HDR) - { - _bfd_vms_output_begin (abfd, EOBJ_S_C_EMH, EMH_S_C_MHD); - _bfd_vms_output_short (abfd, EOBJ_S_C_STRLVL); - _bfd_vms_output_long (abfd, 0); - _bfd_vms_output_long (abfd, 0); - _bfd_vms_output_long (abfd, MAX_OUTREC_SIZE); - } - - if (bfd_get_filename (abfd) != 0) - { - /* Strip path and suffix information. */ - char *fname, *fout, *fptr; - - fptr = bfd_get_filename (abfd); - fname = strdup (fptr); - - /* Strip VMS path. */ - fout = strrchr (fname, ']'); - if (fout == NULL) - fout = strchr (fname, ':'); - if (fout != NULL) - fout++; - else - fout = fname; - - /* Strip UNIX path. */ - fptr = strrchr (fout, '/'); - if (fptr != NULL) - fout = fptr + 1; - - /* Strip .obj suffix. */ - fptr = strrchr (fout, '.'); - if (fptr != 0 && strcasecmp (fptr, ".OBJ") == 0) - *fptr = 0; - - /* Convert to upper case and truncate at 31 characters. - (VMS object file format restricts module name length to 31). */ - fptr = fout; - while (*fptr != 0) - { - *fptr = TOUPPER (*fptr); - fptr++; - if (*fptr == ';' || (fptr - fout) >= 31) - *fptr = 0; - } - _bfd_vms_output_counted (abfd, fout); - free (fname); - } - else - _bfd_vms_output_counted (abfd, "NONAME"); - - _bfd_vms_output_counted (abfd, BFD_VERSION_STRING); - _bfd_vms_output_dump (abfd, get_vms_time_string (), EMH_DATE_LENGTH); - _bfd_vms_output_fill (abfd, 0, EMH_DATE_LENGTH); - _bfd_vms_output_flush (abfd); - - /* LMN. */ - _bfd_vms_output_begin (abfd, EOBJ_S_C_EMH, EMH_S_C_LNM); - snprintf (version, sizeof (version), "GAS BFD v%s", BFD_VERSION_STRING); - _bfd_vms_output_dump (abfd, (unsigned char *)version, strlen (version)); - _bfd_vms_output_flush (abfd); - - /* SRC. */ - _bfd_vms_output_begin (abfd, EOBJ_S_C_EMH, EMH_S_C_SRC); - - for (symnum = 0; symnum < abfd->symcount; symnum++) - { - symbol = abfd->outsymbols[symnum]; - - if (symbol->flags & BSF_FILE) - { - if (CONST_STRNEQ ((char *)symbol->name, "name[6] - '0'; - PRIV (flag_show_after_trunc) = symbol->name[7] - '0'; - - if (had_file) - break; - had_case = 1; - continue; - } - - _bfd_vms_output_dump (abfd, (unsigned char *) symbol->name, - (int) strlen (symbol->name)); - if (had_case) - break; - had_file = 1; - } - } - - if (symnum == abfd->symcount) - _bfd_vms_output_dump (abfd, (unsigned char *) STRING_COMMA_LEN ("noname")); - - _bfd_vms_output_flush (abfd); - - /* TTL. */ - _bfd_vms_output_begin (abfd, EOBJ_S_C_EMH, EMH_S_C_TTL); - _bfd_vms_output_dump (abfd, (unsigned char *) STRING_COMMA_LEN ("TTL")); - _bfd_vms_output_flush (abfd); - - /* CPR. */ - _bfd_vms_output_begin (abfd, EOBJ_S_C_EMH, EMH_S_C_CPR); - _bfd_vms_output_dump (abfd, - (unsigned char *)"GNU BFD ported by Klaus Kämpf 1994-1996", - 39); - _bfd_vms_output_flush (abfd); - - return 0; -} - -/* Process EOM/EEOM record - return 0 on success, -1 on error. */ - -int -_bfd_vms_slurp_eom (bfd *abfd, int objtype) -{ - unsigned char *vms_rec; - -#if VMS_DEBUG - vms_debug(2, "EOM/EEOM\n"); -#endif - - vms_rec = PRIV (vms_rec); - - if ((objtype == OBJ_S_C_EOM) - || (objtype == OBJ_S_C_EOMW)) - { - } - else - { - PRIV (eom_data).eom_l_total_lps - = bfd_getl32 (vms_rec + EEOM_S_L_TOTAL_LPS); - PRIV (eom_data).eom_w_comcod = bfd_getl16 (vms_rec + EEOM_S_W_COMCOD); - if (PRIV (eom_data).eom_w_comcod > 1) - { - (*_bfd_error_handler) (_("Object module NOT error-free !\n")); - bfd_set_error (bfd_error_bad_value); - return -1; - } - PRIV (eom_data).eom_has_transfer = FALSE; - if (PRIV (rec_size) > 10) - { - PRIV (eom_data).eom_has_transfer = TRUE; - PRIV (eom_data).eom_b_tfrflg = vms_rec[EEOM_S_B_TFRFLG]; - PRIV (eom_data).eom_l_psindx - = bfd_getl32 (vms_rec + EEOM_S_L_PSINDX); - PRIV (eom_data).eom_l_tfradr - = bfd_getl32 (vms_rec + EEOM_S_L_TFRADR); - - abfd->start_address = PRIV (eom_data).eom_l_tfradr; - } - } - return 0; -} - -/* Write eom record for bfd abfd. */ - -int -_bfd_vms_write_eom (bfd *abfd, int objtype) -{ -#if VMS_DEBUG - vms_debug (2, "vms_write_eom (%p, %d)\n", abfd, objtype); -#endif - - _bfd_vms_output_begin (abfd, objtype, -1); - _bfd_vms_output_long (abfd, (unsigned long) (PRIV (vms_linkage_index) >> 1)); - _bfd_vms_output_byte (abfd, 0); /* Completion code. */ - _bfd_vms_output_byte (abfd, 0); /* Fill byte. */ - - if (bfd_get_start_address (abfd) != (bfd_vma)-1) - { - asection *section; - - section = bfd_get_section_by_name (abfd, ".link"); - if (section == 0) - { - bfd_set_error (bfd_error_nonrepresentable_section); - return -1; - } - _bfd_vms_output_short (abfd, 0); - _bfd_vms_output_long (abfd, (unsigned long) (section->index)); - _bfd_vms_output_long (abfd, - (unsigned long) bfd_get_start_address (abfd)); - _bfd_vms_output_long (abfd, 0); - } - - _bfd_vms_output_end (abfd); - return 0; -} - -/* Read & process IHD/EIHD record. - Return 0 on success, -1 on error */ -int -_bfd_vms_slurp_ihd (bfd *abfd, unsigned int *isd_offset, - unsigned int *ihs_offset) -{ - unsigned int imgtype, size; - bfd_vma symvva; - -#if VMS_DEBUG - vms_debug (8, "_bfd_vms_slurp_ihd\n"); -#endif - - size = bfd_getl32 (PRIV (vms_rec) + EIHD_S_L_SIZE); - imgtype = bfd_getl32 (PRIV (vms_rec) + EIHD_S_L_IMGTYPE); - - if (imgtype == EIHD_S_K_EXE) - abfd->flags |= EXEC_P; - - symvva = bfd_getl64 (PRIV (vms_rec) + EIHD_S_Q_SYMVVA); - if (symvva != 0) - { - PRIV (symvva) = symvva; - abfd->flags |= DYNAMIC; - } - - *isd_offset = bfd_getl32 (PRIV (vms_rec) + EIHD_S_L_ISDOFF); - *ihs_offset = bfd_getl32 (PRIV (vms_rec) + EIHD_S_L_SYMDBGOFF); - -#if VMS_DEBUG - vms_debug (4, "EIHD record size %d imgtype %d symvva 0x%llx isd %d ihs %d\n", - size, imgtype, symvva, *isd_offset, *ihs_offset); -#endif - - return 0; -} - -/* Read & process ISD/EISD record - return 0 on success, -1 on error */ - -int -_bfd_vms_slurp_isd (bfd *abfd, unsigned int offset) -{ - int section_count = 0; - unsigned char *p; - unsigned int rec_size; - -#if VMS_DEBUG - vms_debug (8, "_bfd_vms_slurp_isd\n"); -#endif - - for (p = PRIV (vms_rec) + offset; - (rec_size = bfd_getl32 (p + EISD_S_L_EISDSIZE)) != 0; - p += rec_size) - { - unsigned long long vaddr = bfd_getl64 (p + EISD_S_Q_VIR_ADDR); - unsigned int size = bfd_getl32 (p + EISD_S_L_SECSIZE); - unsigned int flags = bfd_getl32 (p + EISD_S_L_FLAGS); - unsigned int vbn = bfd_getl32 (p + EISD_S_L_VBN); - char *name = NULL; - asection *section; - flagword bfd_flags; - -#if VMS_DEBUG - vms_debug (4, "EISD record at 0x%x size 0x%x addr 0x%x bfd_flags 0x%x block %d\n", - p - PRIV (vms_rec), size, vaddr, flags, vbn); -#endif - - /* VMS combines psects from .obj files into isects in the .exe. This - process doesn't preserve enough information to reliably determine - what's in each section without examining the data. This is - especially true of DWARF debug sections. */ - bfd_flags = SEC_ALLOC; - - if (flags & EISD_S_M_EXE) - bfd_flags |= SEC_CODE | SEC_HAS_CONTENTS | SEC_LOAD; - - if (flags & EISD_S_M_NONSHRADR) - bfd_flags |= SEC_DATA | SEC_HAS_CONTENTS | SEC_LOAD; - - if (!(flags & EISD_S_M_WRT)) - bfd_flags |= SEC_READONLY; - - if (flags & EISD_S_M_DZRO) - bfd_flags |= SEC_DATA; - - if (flags & EISD_S_M_FIXUPVEC) - bfd_flags |= SEC_DATA | SEC_HAS_CONTENTS | SEC_LOAD; - - if (flags & EISD_S_M_CRF) - bfd_flags |= SEC_HAS_CONTENTS | SEC_LOAD; - - if (flags & EISD_S_M_GBL) - { - name = _bfd_vms_save_counted_string (p + EISD_S_T_GBLNAM); - bfd_flags |= SEC_COFF_SHARED_LIBRARY; - bfd_flags &= ~(SEC_ALLOC | SEC_LOAD); - } - else - { - name = (char*) bfd_alloc (abfd, 32); - sprintf (name, "$LOCAL_%03d$", section_count++); - } - - section = bfd_make_section (abfd, name); - - if (!section) - return -1; - - section->filepos = vbn ? VMS_BLOCK_SIZE * (vbn - 1) : (unsigned int)-1; - section->size = size; - section->vma = vaddr; - - if (!bfd_set_section_flags (abfd, section, bfd_flags)) - return -1; - } - - return 0; -} - -/* Read & process IHS/EIHS record - return 0 on success, -1 on error */ -int -_bfd_vms_slurp_ihs (bfd *abfd, unsigned int offset) -{ - unsigned char *p = PRIV (vms_rec) + offset; - unsigned int gstvbn = bfd_getl32 (p + EIHS_S_L_GSTVBN); - unsigned int gstsize ATTRIBUTE_UNUSED = bfd_getl32 (p + EIHS_S_L_GSTSIZE); - unsigned int dstvbn = bfd_getl32 (p + EIHS_S_L_DSTVBN); - unsigned int dstsize = bfd_getl32 (p + EIHS_S_L_DSTSIZE); - unsigned int dmtvbn = bfd_getl32 (p + EIHS_S_L_DMTVBN); - unsigned int dmtbytes = bfd_getl32 (p + EIHS_S_L_DMTBYTES); - asection *section; - -#if VMS_DEBUG - vms_debug (8, "_bfd_vms_slurp_ihs\n"); - vms_debug (4, "EIHS record gstvbn %d gstsize %d dstvbn %d dstsize %d dmtvbn %d dmtbytes %d\n", - gstvbn, gstsize, dstvbn, dstsize, dmtvbn, dmtbytes); -#endif - - if (dstvbn) - { - flagword bfd_flags = SEC_HAS_CONTENTS | SEC_DEBUGGING; - - section = bfd_make_section (abfd, "$DST$"); - if (!section) - return -1; - - section->size = dstsize; - section->filepos = VMS_BLOCK_SIZE * (dstvbn - 1); - - if (!bfd_set_section_flags (abfd, section, bfd_flags)) - return -1; - - PRIV (dst_section) = section; - abfd->flags |= (HAS_DEBUG | HAS_LINENO); - } - - if (dmtvbn) - { - flagword bfd_flags = SEC_HAS_CONTENTS | SEC_DEBUGGING; - - section = bfd_make_section (abfd, "$DMT$"); - if (!section) - return -1; - - section->size = dmtbytes; - section->filepos = VMS_BLOCK_SIZE * (dmtvbn - 1); - - if (!bfd_set_section_flags (abfd, section, bfd_flags)) - return -1; - } - - if (gstvbn) - { - flagword bfd_flags = SEC_HAS_CONTENTS; - - section = bfd_make_section (abfd, "$GST$"); - if (!section) - return -1; - - if (bfd_seek (abfd, VMS_BLOCK_SIZE * (gstvbn - 1), SEEK_SET)) - { - bfd_set_error (bfd_error_file_truncated); - return -1; - } - - if (_bfd_vms_slurp_object_records (abfd) != 0) - return -1; - - section->filepos = VMS_BLOCK_SIZE * (gstvbn - 1); - section->size = bfd_tell (abfd) - section->filepos; - - if (!bfd_set_section_flags (abfd, section, bfd_flags)) - return -1; - - abfd->flags |= HAS_SYMS; - } - - return 0; -} - -/* Build a new module for the specified BFD. */ - -static struct module * -new_module (bfd *abfd) -{ - struct module *module - = (struct module *) bfd_zalloc (abfd, sizeof (struct module)); - module->file_table_count = 16; /* Arbitrary. */ - module->file_table - = bfd_malloc (module->file_table_count * sizeof (struct fileinfo)); - return module; -} - -/* Parse debug info for a module and internalize it. */ - -static void -parse_module (bfd *abfd, struct module *module, unsigned char *ptr, - unsigned int length) -{ - unsigned char *maxptr = ptr + length, *src_ptr, *pcl_ptr; - unsigned int prev_linum = 0, curr_linenum = 0; - bfd_vma prev_pc = 0, curr_pc = 0; - struct srecinfo *curr_srec, *srec; - struct lineinfo *curr_line, *line; - struct funcinfo *funcinfo; - - /* Initialize tables with zero element. */ - curr_srec = (struct srecinfo *) bfd_zalloc (abfd, sizeof (struct srecinfo)); - module->srec_table = curr_srec; - - curr_line = (struct lineinfo *) bfd_zalloc (abfd, sizeof (struct lineinfo)); - module->line_table = curr_line; - - while (ptr < maxptr) - { - /* The first byte is not counted in the recorded length. */ - int rec_length = bfd_getl16 (ptr) + 1; - int rec_type = bfd_getl16 (ptr + 2); - -#if VMS_DEBUG - _bfd_vms_debug (2, "DST record: length %d, type %d\n", - rec_length, rec_type); -#endif - - switch (rec_type) - { - case DST_S_C_MODBEG: - module->name - = _bfd_vms_save_counted_string (ptr + DST_S_B_MODBEG_NAME); - - curr_pc = 0; - prev_pc = 0; - curr_linenum = 0; - prev_linum = 0; - -#if VMS_DEBUG - _bfd_vms_debug (3, "module: %s\n", module->name); -#endif - break; - - case DST_S_C_MODEND: -#if VMS_DEBUG - _bfd_vms_debug (3, "end module\n"); -#endif - break; - - case DST_S_C_RTNBEG: - funcinfo = (struct funcinfo *) - bfd_zalloc (abfd, sizeof (struct funcinfo)); - funcinfo->name - = _bfd_vms_save_counted_string (ptr + DST_S_B_RTNBEG_NAME); - funcinfo->low = bfd_getl32 (ptr + DST_S_L_RTNBEG_ADDRESS); - funcinfo->next = module->func_table; - module->func_table = funcinfo; - -#if VMS_DEBUG - _bfd_vms_debug (3, "routine: %s at 0x%x\n", - funcinfo->name, funcinfo->low); -#endif - break; - - case DST_S_C_RTNEND: - module->func_table->high = module->func_table->low - + bfd_getl32 (ptr + DST_S_L_RTNEND_SIZE) - 1; - - if (module->func_table->high > module->high) - module->high = module->func_table->high; - -#if VMS_DEBUG - _bfd_vms_debug (3, "end routine\n"); -#endif - break; - - case DST_S_C_PROLOG: -#if VMS_DEBUG - _bfd_vms_debug (3, "prologue\n"); -#endif - break; - - case DST_S_C_EPILOG: -#if VMS_DEBUG - _bfd_vms_debug (3, "epilog\n"); -#endif - break; - - case DST_S_C_BLKBEG: -#if VMS_DEBUG - _bfd_vms_debug (3, "block\n"); -#endif - break; - - case DST_S_C_BLKEND: -#if VMS_DEBUG - _bfd_vms_debug (3, "end block\n"); -#endif - break; - - case DST_S_C_SOURCE: - src_ptr = ptr + DST_S_C_SOURCE_HEADER_SIZE; - -#if VMS_DEBUG - _bfd_vms_debug (3, "source info\n"); -#endif - - while (src_ptr < ptr + rec_length) - { - int cmd = src_ptr[0], cmd_length, data; - - switch (cmd) - { - case DST_S_C_SRC_DECLFILE: - { - unsigned int fileid - = bfd_getl16 (src_ptr + DST_S_W_SRC_DF_FILEID); - char *filename - = _bfd_vms_save_counted_string (src_ptr - + DST_S_B_SRC_DF_FILENAME); - - while (fileid >= module->file_table_count) - { - module->file_table_count *= 2; - module->file_table - = bfd_realloc (module->file_table, - module->file_table_count - * sizeof (struct fileinfo)); - } - - module->file_table [fileid].name = filename; - module->file_table [fileid].srec = 1; - cmd_length = src_ptr[DST_S_B_SRC_DF_LENGTH] + 2; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SRC_DECLFILE: %d, %s\n", - fileid, - module->file_table [fileid].name); -#endif - } - break; - - case DST_S_C_SRC_DEFLINES_B: - /* Perform the association and set the next higher index - to the limit. */ - data = src_ptr[DST_S_B_SRC_UNSBYTE]; - srec = (struct srecinfo *) - bfd_zalloc (abfd, sizeof (struct srecinfo)); - srec->line = curr_srec->line + data; - srec->srec = curr_srec->srec + data; - srec->sfile = curr_srec->sfile; - curr_srec->next = srec; - curr_srec = srec; - cmd_length = 2; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SRC_DEFLINES_B: %d\n", data); -#endif - break; - - case DST_S_C_SRC_DEFLINES_W: - /* Perform the association and set the next higher index - to the limit. */ - data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD); - srec = (struct srecinfo *) - bfd_zalloc (abfd, sizeof (struct srecinfo)); - srec->line = curr_srec->line + data; - srec->srec = curr_srec->srec + data, - srec->sfile = curr_srec->sfile; - curr_srec->next = srec; - curr_srec = srec; - cmd_length = 3; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SRC_DEFLINES_W: %d\n", data); -#endif - break; - - case DST_S_C_SRC_INCRLNUM_B: - data = src_ptr[DST_S_B_SRC_UNSBYTE]; - curr_srec->line += data; - cmd_length = 2; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SRC_INCRLNUM_B: %d\n", data); -#endif - break; - - case DST_S_C_SRC_SETFILE: - data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD); - curr_srec->sfile = data; - curr_srec->srec = module->file_table[data].srec; - cmd_length = 3; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SRC_SETFILE: %d\n", data); -#endif - break; - - case DST_S_C_SRC_SETLNUM_L: - data = bfd_getl32 (src_ptr + DST_S_L_SRC_UNSLONG); - curr_srec->line = data; - cmd_length = 5; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SRC_SETLNUM_L: %d\n", data); -#endif - break; - - case DST_S_C_SRC_SETLNUM_W: - data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD); - curr_srec->line = data; - cmd_length = 3; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SRC_SETLNUM_W: %d\n", data); -#endif - break; - - case DST_S_C_SRC_SETREC_L: - data = bfd_getl32 (src_ptr + DST_S_L_SRC_UNSLONG); - curr_srec->srec = data; - module->file_table[curr_srec->sfile].srec = data; - cmd_length = 5; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SRC_SETREC_L: %d\n", data); -#endif - break; - - case DST_S_C_SRC_SETREC_W: - data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD); - curr_srec->srec = data; - module->file_table[curr_srec->sfile].srec = data; - cmd_length = 3; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SRC_SETREC_W: %d\n", data); -#endif - break; - - case DST_S_C_SRC_FORMFEED: - cmd_length = 1; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SRC_FORMFEED\n"); -#endif - break; - - default: - (*_bfd_error_handler) (_("unknown source command %d"), - cmd); - cmd_length = 2; - break; - } - - src_ptr += cmd_length; - } - break; - - case DST_S_C_LINE_NUM: - pcl_ptr = ptr + DST_S_C_LINE_NUM_HEADER_SIZE; - -#if VMS_DEBUG - _bfd_vms_debug (3, "line info\n"); -#endif - - while (pcl_ptr < ptr + rec_length) - { - /* The command byte is signed so we must sign-extend it. */ - int cmd = ((signed char *)pcl_ptr)[0], cmd_length, data; - - switch (cmd) - { - case DST_S_C_DELTA_PC_W: - data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD); - curr_pc += data; - curr_linenum += 1; - cmd_length = 3; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_DELTA_PC_W: %d\n", data); -#endif - break; - - case DST_S_C_DELTA_PC_L: - data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG); - curr_pc += data; - curr_linenum += 1; - cmd_length = 5; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_DELTA_PC_L: %d\n", data); -#endif - break; - - case DST_S_C_INCR_LINUM: - data = pcl_ptr[DST_S_B_PCLINE_UNSBYTE]; - curr_linenum += data; - cmd_length = 2; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_INCR_LINUM: %d\n", data); -#endif - break; - - case DST_S_C_INCR_LINUM_W: - data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD); - curr_linenum += data; - cmd_length = 3; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_INCR_LINUM_W: %d\n", data); -#endif - break; - - case DST_S_C_INCR_LINUM_L: - data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG); - curr_linenum += data; - cmd_length = 5; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_INCR_LINUM_L: %d\n", data); -#endif - break; - - case DST_S_C_SET_LINUM_INCR: - (*_bfd_error_handler) - (_("DST_S_C_SET_LINUM_INCR not implemented")); - cmd_length = 2; - break; - - case DST_S_C_SET_LINUM_INCR_W: - (*_bfd_error_handler) - (_("DST_S_C_SET_LINUM_INCR_W not implemented")); - cmd_length = 3; - break; - - case DST_S_C_RESET_LINUM_INCR: - (*_bfd_error_handler) - (_("DST_S_C_RESET_LINUM_INCR not implemented")); - cmd_length = 1; - break; - - case DST_S_C_BEG_STMT_MODE: - (*_bfd_error_handler) - (_("DST_S_C_BEG_STMT_MODE not implemented")); - cmd_length = 1; - break; - - case DST_S_C_END_STMT_MODE: - (*_bfd_error_handler) - (_("DST_S_C_END_STMT_MODE not implemented")); - cmd_length = 1; - break; - - case DST_S_C_SET_LINUM_B: - data = pcl_ptr[DST_S_B_PCLINE_UNSBYTE]; - curr_linenum = data; - cmd_length = 2; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SET_LINUM_B: %d\n", data); -#endif - break; - - case DST_S_C_SET_LINE_NUM: - data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD); - curr_linenum = data; - cmd_length = 3; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SET_LINE_NUM: %d\n", data); -#endif - break; - - case DST_S_C_SET_LINUM_L: - data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG); - curr_linenum = data; - cmd_length = 5; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SET_LINUM_L: %d\n", data); -#endif - break; - - case DST_S_C_SET_PC: - (*_bfd_error_handler) - (_("DST_S_C_SET_PC not implemented")); - cmd_length = 2; - break; - - case DST_S_C_SET_PC_W: - (*_bfd_error_handler) - (_("DST_S_C_SET_PC_W not implemented")); - cmd_length = 3; - break; - - case DST_S_C_SET_PC_L: - (*_bfd_error_handler) - (_("DST_S_C_SET_PC_L not implemented")); - cmd_length = 5; - break; - - case DST_S_C_SET_STMTNUM: - (*_bfd_error_handler) - (_("DST_S_C_SET_STMTNUM not implemented")); - cmd_length = 2; - break; - - case DST_S_C_TERM: - data = pcl_ptr[DST_S_B_PCLINE_UNSBYTE]; - curr_pc += data; - cmd_length = 2; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_TERM: %d\n", data); -#endif - break; - - case DST_S_C_TERM_W: - data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD); - curr_pc += data; - cmd_length = 3; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_TERM_W: %d\n", data); -#endif - break; - - case DST_S_C_TERM_L: - data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG); - curr_pc += data; - cmd_length = 5; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_TERM_L: %d\n", data); -#endif - break; - - case DST_S_C_SET_ABS_PC: - data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG); - curr_pc = data; - cmd_length = 5; -#if VMS_DEBUG - _bfd_vms_debug (4, "DST_S_C_SET_ABS_PC: 0x%x\n", data); -#endif - break; - - default: - if (cmd <= 0) - { - curr_pc -= cmd; - curr_linenum += 1; - cmd_length = 1; -#if VMS_DEBUG - _bfd_vms_debug (4, "bump pc to 0x%llx and line to %d\n", - curr_pc, curr_linenum); -#endif - } - else - { - (*_bfd_error_handler) (_("unknown line command %d"), - cmd); - cmd_length = 2; - } - break; - } - - if ((curr_linenum != prev_linum && curr_pc != prev_pc) - || cmd <= 0 - || cmd == DST_S_C_DELTA_PC_L - || cmd == DST_S_C_DELTA_PC_W) - { - line = (struct lineinfo *) - bfd_zalloc (abfd, sizeof (struct lineinfo)); - line->address = curr_pc; - line->line = curr_linenum; - - curr_line->next = line; - curr_line = line; - - prev_linum = curr_linenum; - prev_pc = curr_pc; -#if VMS_DEBUG - _bfd_vms_debug (4, "-> correlate pc 0x%llx with line %d\n", - curr_pc, curr_linenum); -#endif - } - - pcl_ptr += cmd_length; - } - break; - - case 0x17: /* Undocumented type used by DEC C to declare equates. */ -#if VMS_DEBUG - _bfd_vms_debug (3, "undocumented type 0x17\n"); -#endif - break; - - default: -#if VMS_DEBUG - _bfd_vms_debug (3, "ignoring record\n"); -#endif - break; - - } - - ptr += rec_length; - } - - /* Finalize tables with EOL marker. */ - srec = (struct srecinfo *) bfd_zalloc (abfd, sizeof (struct srecinfo)); - srec->line = (unsigned int) -1; - srec->srec = (unsigned int) -1; - curr_srec->next = srec; - - line = (struct lineinfo *) bfd_zalloc (abfd, sizeof (struct lineinfo)); - line->line = (unsigned int) -1; - line->address = (bfd_vma) -1; - curr_line->next = line; - - /* Advertise that this module has been parsed. This is needed - because parsing can be either performed at module creation - or deferred until debug info is consumed. */ - SET_MODULE_PARSED (module); -} - -/* Build the list of modules for the specified BFD. */ - -static struct module * -build_module_list (bfd *abfd) -{ - struct module *module, *list = NULL; - asection *dmt; - - if ((dmt = bfd_get_section_by_name (abfd, "$DMT$"))) - { - /* We have a DMT section so this must be an image. Parse the - section and build the list of modules. This is sufficient - since we can compute the start address and the end address - of every module from the section contents. */ - bfd_size_type size = bfd_get_section_size (dmt); - unsigned char *ptr, *end; - - ptr = (unsigned char *) bfd_alloc (abfd, size); - if (! ptr) - return NULL; - - if (! bfd_get_section_contents (abfd, dmt, ptr, 0, size)) - return NULL; - -#if VMS_DEBUG - _bfd_vms_debug (2, "DMT\n"); -#endif - - end = ptr + size; - - while (ptr < end) - { - /* Each header declares a module with its start offset and size - of debug info in the DST section, as well as the count of - program sections (i.e. address spans) it contains. */ - int modbeg = bfd_getl32 (ptr + DBG_S_L_DMT_MODBEG); - int size = bfd_getl32 (ptr + DBG_S_L_DST_SIZE); - int count = bfd_getl16 (ptr + DBG_S_W_DMT_PSECT_COUNT); - ptr += DBG_S_C_DMT_HEADER_SIZE; - -#if VMS_DEBUG - _bfd_vms_debug (3, "module: modbeg = %d, size = %d, count = %d\n", - modbeg, size, count); -#endif - - /* We create a 'module' structure for each program section since - we only support contiguous addresses in a 'module' structure. - As a consequence, the actual debug info in the DST section is - shared and can be parsed multiple times; that doesn't seem to - cause problems in practice. */ - while (count-- > 0) - { - int start = bfd_getl32 (ptr + DBG_S_L_DMT_PSECT_START); - int length = bfd_getl32 (ptr + DBG_S_L_DMT_PSECT_LENGTH); - module = new_module (abfd); - module->modbeg = modbeg; - module->size = size; - module->low = start; - module->high = start + length; - module->next = list; - list = module; - ptr += DBG_S_C_DMT_PSECT_SIZE; - -#if VMS_DEBUG - _bfd_vms_debug (4, "section: start = 0x%x, length = %d\n", - start, length); -#endif - } - } - } - else - { - /* We don't have a DMT section so this must be an object. Parse - the module right now in order to compute its start address and - end address. */ - module = new_module (abfd); - parse_module (abfd, module, PRIV (dst_section)->contents, - PRIV (dst_ptr_end) - PRIV (dst_section)->contents); - list = module; - } - - return list; -} - -/* Calculate and return the name of the source file and the line nearest - to the wanted location in the specified module. */ - -static bfd_boolean -module_find_nearest_line (bfd *abfd, struct module *module, bfd_vma addr, - const char **file, const char **func, - unsigned int *line) -{ - struct funcinfo *funcinfo; - struct lineinfo *lineinfo; - struct srecinfo *srecinfo; - bfd_boolean ret = FALSE; - - /* Parse this module if that was not done at module creation. */ - if (! IS_MODULE_PARSED (module)) - { - unsigned int size = module->size; - unsigned int modbeg = PRIV (dst_section)->filepos + module->modbeg; - unsigned char *buffer = (unsigned char *) bfd_malloc (module->size); - - if (bfd_seek (abfd, modbeg, SEEK_SET) != 0 - || bfd_bread (buffer, size, abfd) != size) - { - bfd_set_error (bfd_error_no_debug_section); - return FALSE; - } - - parse_module (abfd, module, buffer, size); - free (buffer); - } - - /* Find out the function (if any) that contains the address. */ - for (funcinfo = module->func_table; funcinfo; funcinfo = funcinfo->next) - if (addr >= funcinfo->low && addr <= funcinfo->high) - { - *func = funcinfo->name; - ret = TRUE; - break; - } - - /* Find out the source file and the line nearest to the address. */ - for (lineinfo = module->line_table; lineinfo; lineinfo = lineinfo->next) - if (lineinfo->next && addr < lineinfo->next->address) - { - for (srecinfo = module->srec_table; srecinfo; srecinfo = srecinfo->next) - if (srecinfo->next && lineinfo->line < srecinfo->next->line) - { - if (srecinfo->sfile > 0) - { - *file = module->file_table[srecinfo->sfile].name; - *line = srecinfo->srec + lineinfo->line - srecinfo->line; - } - else - { - *file = module->name; - *line = lineinfo->line; - } - return TRUE; - } - - break; - } - - return ret; -} - -/* Provided a BFD, a section and an offset into the section, calculate and - return the name of the source file and the line nearest to the wanted - location. */ - -bfd_boolean -_bfd_vms_find_nearest_dst_line (bfd *abfd, asection *section, - asymbol **symbols ATTRIBUTE_UNUSED, - bfd_vma offset, const char **file, - const char **func, unsigned int *line) -{ - struct module *module; - - /* What address are we looking for? */ - bfd_vma addr = section->vma + offset; - - *file = NULL; - *func = NULL; - *line = 0; - - if (PRIV (dst_section) == NULL) - return FALSE; - - if (PRIV (modules) == NULL) - { - PRIV (modules) = build_module_list (abfd); - if (PRIV (modules) == NULL) - return FALSE; - } - - for (module = PRIV (modules); module; module = module->next) - if (addr >= module->low && addr <= module->high) - return module_find_nearest_line (abfd, module, addr, file, func, line); - - return FALSE; -} - -/* Process EDBG/ETBT record. - Return 0 on success, -1 on error */ - -static int -vms_slurp_debug (bfd *abfd) -{ - if (PRIV (dst_section) == NULL) - { - /* We have no way to find out beforehand how much debug info there - is in an object file, so pick an initial amount and grow it as - needed later. */ - flagword flags = SEC_HAS_CONTENTS | SEC_DEBUGGING | SEC_RELOC; - asection *section = bfd_make_section (abfd, "$DST$"); - if (!section) - return -1; - section->size = 1024; - if (!bfd_set_section_flags (abfd, section, flags)) - return -1; - section->contents = ((unsigned char *) - bfd_zmalloc (section->size)); - if (section->contents == NULL) - return -1; - section->filepos = (unsigned int)-1; - PRIV (dst_section) = section; - } - - PRIV (image_section) = PRIV (dst_section); - PRIV (image_ptr) = PRIV (dst_section)->contents; - - return _bfd_vms_slurp_tir (abfd, EOBJ_S_C_ETIR); -} - -/* Process DBG/EDBG record. - Return 0 on success, -1 on error. */ - -int -_bfd_vms_slurp_dbg (bfd *abfd, int objtype ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - _bfd_vms_debug (2, "DBG/EDBG\n"); -#endif - - abfd->flags |= (HAS_DEBUG | HAS_LINENO); - - return vms_slurp_debug (abfd); -} - -/* Process TBT/ETBT record. - Return 0 on success, -1 on error. */ - -int -_bfd_vms_slurp_tbt (bfd *abfd, int objtype ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - _bfd_vms_debug (2, "TBT/ETBT\n"); -#endif - - abfd->flags |= HAS_LINENO; - - return vms_slurp_debug (abfd); -} - -/* Write DBG/EDBG record. */ - -int -_bfd_vms_write_dbg (bfd *abfd ATTRIBUTE_UNUSED, int objtype ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - _bfd_vms_debug (2, "vms_write_dbg (%p, objtype)\n", abfd, objtype); -#endif - - return 0; -} - -/* Write TBT/ETBT record. */ - -int -_bfd_vms_write_tbt (bfd *abfd ATTRIBUTE_UNUSED, int objtype ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - _bfd_vms_debug (2, "vms_write_tbt (%p, %d)\n", abfd, objtype); -#endif - - return 0; -} diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/vms-lib.c crash-6.1.6/=unpacked-tar1=/bfd/vms-lib.c --- crash-5.1.6/=unpacked-tar1=/bfd/vms-lib.c 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/vms-lib.c 2010-11-17 11:32:53.000000000 +0000 @@ -0,0 +1,2296 @@ +/* BFD back-end for VMS archive files. + + Copyright 2010 Free Software Foundation, Inc. + Written by Tristan Gingold , AdaCore. + + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "sysdep.h" +#include "bfd.h" +#include "libbfd.h" +#include "safe-ctype.h" +#include "bfdver.h" +#include "vms.h" +#include "vms/lbr.h" +#include "vms/dcx.h" + +/* The standard VMS disk block size. */ +#ifndef VMS_BLOCK_SIZE +#define VMS_BLOCK_SIZE 512 +#endif + +/* Maximum key length (which is also the maximum symbol length in archive). */ +#define MAX_KEYLEN 129 + +/* DCX Submaps. */ + +struct dcxsbm_desc +{ + unsigned char min_char; + unsigned char max_char; + unsigned char *flags; + unsigned char *nodes; + unsigned short *next; +}; + +/* Kind of library. Used to filter in archive_p. */ + +enum vms_lib_kind + { + vms_lib_vax, + vms_lib_alpha, + vms_lib_ia64, + vms_lib_txt + }; + +/* Back-end private data. */ + +struct lib_tdata +{ + /* Standard tdata for an archive. But we don't use many fields. */ + struct artdata artdata; + + /* Major version. */ + unsigned char ver; + + /* Type of the archive. */ + unsigned char type; + + /* Kind of archive. Summary of its type. */ + enum vms_lib_kind kind; + + /* Total size of the mhd (element header). */ + unsigned int mhd_size; + + /* Creation date. */ + unsigned int credat_lo; + unsigned int credat_hi; + + /* Vector of modules (archive elements), already sorted. */ + unsigned int nbr_modules; + struct carsym *modules; + bfd **cache; + + /* DCX (decompression) data. */ + unsigned int nbr_dcxsbm; + struct dcxsbm_desc *dcxsbm; +}; + +#define bfd_libdata(bfd) ((struct lib_tdata *)((bfd)->tdata.any)) + +/* End-Of-Text pattern. This is a special record to mark the end of file. */ + +static const unsigned char eotdesc[] = { 0x03, 0x00, 0x77, 0x00, 0x77, 0x00 }; + +/* Describe the current state of carsym entries while building the archive + table of content. Things are simple with Alpha archives as the number + of entries is known, but with IA64 archives a entry can make a reference + to severals members. Therefore we must be able to extend the table on the + fly, but it should be allocated on the bfd - which doesn't support realloc. + To reduce the overhead, the table is initially allocated in the BFD's + objalloc and extended if necessary on the heap. In the later case, it + is finally copied to the BFD's objalloc so that it will automatically be + freed. */ + +struct carsym_mem +{ + /* The table of content. */ + struct carsym *idx; + + /* Number of entries used in the table. */ + unsigned int nbr; + + /* Maximum number of entries. */ + unsigned int max; + + /* If true, the table was reallocated on the heap. If false, it is still + in the BFD's objalloc. */ + bfd_boolean realloced; +}; + +/* Simply add a name to the index. */ + +static bfd_boolean +vms_add_index (struct carsym_mem *cs, char *name, + unsigned int idx_vbn, unsigned int idx_off) +{ + if (cs->nbr == cs->max) + { + struct carsym *n; + + cs->max = 2 * cs->max + 32; + + if (!cs->realloced) + { + n = bfd_malloc2 (cs->max, sizeof (struct carsym)); + if (n == NULL) + return FALSE; + memcpy (n, cs->idx, cs->nbr * sizeof (struct carsym)); + /* And unfortunately we can't free cs->idx. */ + } + else + { + n = bfd_realloc_or_free (cs->idx, cs->nbr * sizeof (struct carsym)); + if (n == NULL) + return FALSE; + } + cs->idx = n; + cs->realloced = TRUE; + } + cs->idx[cs->nbr].file_offset = (idx_vbn - 1) * VMS_BLOCK_SIZE + idx_off; + cs->idx[cs->nbr].name = name; + cs->nbr++; + return TRUE; +} + +/* Follow all member of a lns list (pointed by RFA) and add indexes for + NAME. Return FALSE in case of error. */ + +static bfd_boolean +vms_add_indexes_from_list (bfd *abfd, struct carsym_mem *cs, char *name, + struct vms_rfa *rfa) +{ + struct vms_lns lns; + unsigned int vbn; + file_ptr off; + + while (1) + { + vbn = bfd_getl32 (rfa->vbn); + if (vbn == 0) + return TRUE; + + /* Read the LHS. */ + off = (vbn - 1) * VMS_BLOCK_SIZE + bfd_getl16 (rfa->offset); + if (bfd_seek (abfd, off, SEEK_SET) != 0 + || bfd_bread (&lns, sizeof (lns), abfd) != sizeof (lns)) + return FALSE; + + if (!vms_add_index (cs, name, + bfd_getl32 (lns.modrfa.vbn), + bfd_getl16 (lns.modrfa.offset))) + return FALSE; + + rfa = &lns.nxtrfa; + } +} + +/* Read block VBN from ABFD and store it into BLK. Return FALSE in case of error. */ + +static bfd_boolean +vms_read_block (bfd *abfd, unsigned int vbn, void *blk) +{ + file_ptr off; + + off = (vbn - 1) * VMS_BLOCK_SIZE; + if (bfd_seek (abfd, off, SEEK_SET) != 0 + || bfd_bread (blk, VMS_BLOCK_SIZE, abfd) != VMS_BLOCK_SIZE) + return FALSE; + + return TRUE; +} + +/* Write the content of BLK to block VBN of ABFD. Return FALSE in case of error. */ + +static bfd_boolean +vms_write_block (bfd *abfd, unsigned int vbn, void *blk) +{ + file_ptr off; + + off = (vbn - 1) * VMS_BLOCK_SIZE; + if (bfd_seek (abfd, off, SEEK_SET) != 0 + || bfd_bwrite (blk, VMS_BLOCK_SIZE, abfd) != VMS_BLOCK_SIZE) + return FALSE; + + return TRUE; +} + +/* Read index block VBN and put the entry in **IDX (which is updated). + If the entry is indirect, recurse. */ + +static bfd_boolean +vms_traverse_index (bfd *abfd, unsigned int vbn, struct carsym_mem *cs) +{ + struct vms_indexdef indexdef; + file_ptr off; + unsigned char *p; + unsigned char *endp; + + /* Read the index block. */ + BFD_ASSERT (sizeof (indexdef) == VMS_BLOCK_SIZE); + if (!vms_read_block (abfd, vbn, &indexdef)) + return FALSE; + + /* Traverse it. */ + p = &indexdef.keys[0]; + endp = p + bfd_getl16 (indexdef.used); + while (p < endp) + { + unsigned int idx_vbn; + unsigned int idx_off; + unsigned int keylen; + unsigned char *keyname; + unsigned int flags; + + /* Extract key length. */ + if (bfd_libdata (abfd)->ver == LBR_MAJORID) + { + struct vms_idx *ridx = (struct vms_idx *)p; + + idx_vbn = bfd_getl32 (ridx->rfa.vbn); + idx_off = bfd_getl16 (ridx->rfa.offset); + + keylen = ridx->keylen; + flags = 0; + keyname = ridx->keyname; + } + else if (bfd_libdata (abfd)->ver == LBR_ELFMAJORID) + { + struct vms_elfidx *ridx = (struct vms_elfidx *)p; + + idx_vbn = bfd_getl32 (ridx->rfa.vbn); + idx_off = bfd_getl16 (ridx->rfa.offset); + + keylen = bfd_getl16 (ridx->keylen); + flags = ridx->flags; + keyname = ridx->keyname; + } + else + return FALSE; + + /* Illegal value. */ + if (idx_vbn == 0) + return FALSE; + + if (idx_off == RFADEF__C_INDEX) + { + /* Indirect entry. Recurse. */ + if (!vms_traverse_index (abfd, idx_vbn, cs)) + return FALSE; + } + else + { + /* Add a new entry. */ + char *name; + + if (flags & ELFIDX__SYMESC) + { + /* Extended key name. */ + unsigned int noff = 0; + unsigned int koff; + unsigned int kvbn; + struct vms_kbn *kbn; + unsigned char kblk[VMS_BLOCK_SIZE]; + + /* Sanity check. */ + if (keylen != sizeof (struct vms_kbn)) + return FALSE; + + kbn = (struct vms_kbn *)keyname; + keylen = bfd_getl16 (kbn->keylen); + + name = bfd_alloc (abfd, keylen + 1); + if (name == NULL) + return FALSE; + kvbn = bfd_getl32 (kbn->rfa.vbn); + koff = bfd_getl16 (kbn->rfa.offset); + + /* Read the key, chunk by chunk. */ + do + { + unsigned int klen; + + if (!vms_read_block (abfd, kvbn, kblk)) + return FALSE; + kbn = (struct vms_kbn *)(kblk + koff); + klen = bfd_getl16 (kbn->keylen); + kvbn = bfd_getl32 (kbn->rfa.vbn); + koff = bfd_getl16 (kbn->rfa.offset); + + memcpy (name + noff, kbn + 1, klen); + noff += klen; + } + while (kvbn != 0); + + /* Sanity check. */ + if (noff != keylen) + return FALSE; + } + else + { + /* Usual key name. */ + name = bfd_alloc (abfd, keylen + 1); + if (name == NULL) + return FALSE; + + memcpy (name, keyname, keylen); + } + name[keylen] = 0; + + if (flags & ELFIDX__LISTRFA) + { + struct vms_lhs lhs; + + /* Read the LHS. */ + off = (idx_vbn - 1) * VMS_BLOCK_SIZE + idx_off; + if (bfd_seek (abfd, off, SEEK_SET) != 0 + || bfd_bread (&lhs, sizeof (lhs), abfd) != sizeof (lhs)) + return FALSE; + + /* FIXME: this adds extra entries that were not accounted. */ + if (!vms_add_indexes_from_list (abfd, cs, name, &lhs.ng_g_rfa)) + return FALSE; + if (!vms_add_indexes_from_list (abfd, cs, name, &lhs.ng_wk_rfa)) + return FALSE; + if (!vms_add_indexes_from_list (abfd, cs, name, &lhs.g_g_rfa)) + return FALSE; + if (!vms_add_indexes_from_list (abfd, cs, name, &lhs.g_wk_rfa)) + return FALSE; + } + else + { + if (!vms_add_index (cs, name, idx_vbn, idx_off)) + return FALSE; + } + } + + /* Point to the next index entry. */ + p = keyname + keylen; + } + + return TRUE; +} + +/* Read index #IDX, which must have NBREL entries. */ + +static struct carsym * +vms_lib_read_index (bfd *abfd, int idx, unsigned int *nbrel) +{ + struct vms_idd idd; + unsigned int flags; + unsigned int vbn; + struct carsym *csbuf; + struct carsym_mem csm; + + /* Read index desription. */ + if (bfd_seek (abfd, LHD_IDXDESC + idx * IDD_LENGTH, SEEK_SET) != 0 + || bfd_bread (&idd, sizeof (idd), abfd) != sizeof (idd)) + return NULL; + + /* Sanity checks. */ + flags = bfd_getl16 (idd.flags); + if (!(flags & IDD__FLAGS_ASCII) + || !(flags & IDD__FLAGS_VARLENIDX)) + return NULL; + + csbuf = bfd_alloc (abfd, *nbrel * sizeof (struct carsym)); + if (csbuf == NULL) + return NULL; + + csm.max = *nbrel; + csm.nbr = 0; + csm.realloced = FALSE; + csm.idx = csbuf; + + /* Note: if the index is empty, there is no block to traverse. */ + vbn = bfd_getl32 (idd.vbn); + if (vbn != 0 && !vms_traverse_index (abfd, vbn, &csm)) + { + if (csm.realloced && csm.idx != NULL) + free (csm.idx); + + /* Note: in case of error, we can free what was allocated on the + BFD's objalloc. */ + bfd_release (abfd, csbuf); + return NULL; + } + + if (csm.realloced) + { + /* There are more entries than the first estimate. Allocate on + the BFD's objalloc. */ + csbuf = bfd_alloc (abfd, csm.nbr * sizeof (struct carsym)); + if (csbuf == NULL) + return NULL; + memcpy (csbuf, csm.idx, csm.nbr * sizeof (struct carsym)); + free (csm.idx); + *nbrel = csm.nbr; + } + return csbuf; +} + +/* Standard function. */ + +static const bfd_target * +_bfd_vms_lib_archive_p (bfd *abfd, enum vms_lib_kind kind) +{ + struct vms_lhd lhd; + unsigned int sanity; + unsigned int majorid; + struct lib_tdata *tdata_hold; + struct lib_tdata *tdata; + unsigned int dcxvbn; + unsigned int nbr_ent; + + /* Read header. */ + if (bfd_bread (&lhd, sizeof (lhd), abfd) != sizeof (lhd)) + { + if (bfd_get_error () != bfd_error_system_call) + bfd_set_error (bfd_error_wrong_format); + return NULL; + } + + /* Check sanity (= magic) number. */ + sanity = bfd_getl32 (lhd.sanity); + if (!(sanity == LHD_SANEID3 + || sanity == LHD_SANEID6 + || sanity == LHD_SANEID_DCX)) + { + bfd_set_error (bfd_error_wrong_format); + return NULL; + } + majorid = bfd_getl32 (lhd.majorid); + + /* Check archive kind. */ + switch (kind) + { + case vms_lib_alpha: + if ((lhd.type != LBR__C_TYP_EOBJ && lhd.type != LBR__C_TYP_ESHSTB) + || majorid != LBR_MAJORID + || lhd.nindex != 2) + { + bfd_set_error (bfd_error_wrong_format); + return NULL; + } + break; + case vms_lib_ia64: + if ((lhd.type != LBR__C_TYP_IOBJ && lhd.type != LBR__C_TYP_ISHSTB) + || majorid != LBR_ELFMAJORID + || lhd.nindex != 2) + { + bfd_set_error (bfd_error_wrong_format); + return NULL; + } + break; + case vms_lib_txt: + if ((lhd.type != LBR__C_TYP_TXT + && lhd.type != LBR__C_TYP_MLB + && lhd.type != LBR__C_TYP_HLP) + || majorid != LBR_MAJORID + || lhd.nindex != 1) + { + bfd_set_error (bfd_error_wrong_format); + return NULL; + } + break; + default: + abort (); + } + + /* Allocate and initialize private data. */ + tdata_hold = bfd_libdata (abfd); + tdata = (struct lib_tdata *) bfd_zalloc (abfd, sizeof (struct lib_tdata)); + if (tdata == NULL) + return NULL; + abfd->tdata.any = (void *)tdata; + tdata->ver = majorid; + tdata->mhd_size = MHD__C_USRDAT + lhd.mhdusz; + tdata->type = lhd.type; + tdata->kind = kind; + tdata->credat_lo = bfd_getl32 (lhd.credat + 0); + tdata->credat_hi = bfd_getl32 (lhd.credat + 4); + + /* Read indexes. */ + tdata->nbr_modules = bfd_getl32 (lhd.modcnt); + tdata->artdata.symdef_count = bfd_getl32 (lhd.idxcnt) - tdata->nbr_modules; + nbr_ent = tdata->nbr_modules; + tdata->modules = vms_lib_read_index (abfd, 0, &nbr_ent); + if (tdata->modules == NULL || nbr_ent != tdata->nbr_modules) + goto err; + if (lhd.nindex == 2) + { + nbr_ent = tdata->artdata.symdef_count; + tdata->artdata.symdefs = vms_lib_read_index (abfd, 1, &nbr_ent); + if (tdata->artdata.symdefs == NULL) + goto err; + /* Only IA64 archives may have more entries in the index that what + was declared. */ + if (nbr_ent != tdata->artdata.symdef_count + && kind != vms_lib_ia64) + goto err; + tdata->artdata.symdef_count = nbr_ent; + } + tdata->cache = bfd_zalloc (abfd, sizeof (bfd *) * tdata->nbr_modules); + if (tdata->cache == NULL) + goto err; + + /* Read DCX submaps. */ + dcxvbn = bfd_getl32 (lhd.dcxmapvbn); + if (dcxvbn != 0) + { + unsigned char buf_reclen[4]; + unsigned int reclen; + unsigned char *buf; + struct vms_dcxmap *map; + unsigned int sbm_off; + unsigned int i; + + if (bfd_seek (abfd, (dcxvbn - 1) * VMS_BLOCK_SIZE, SEEK_SET) != 0 + || bfd_bread (buf_reclen, sizeof (buf_reclen), abfd) + != sizeof (buf_reclen)) + goto err; + reclen = bfd_getl32 (buf_reclen); + buf = bfd_malloc (reclen); + if (buf == NULL) + goto err; + if (bfd_bread (buf, reclen, abfd) != reclen) + { + free (buf); + goto err; + } + map = (struct vms_dcxmap *)buf; + tdata->nbr_dcxsbm = bfd_getl16 (map->nsubs); + sbm_off = bfd_getl16 (map->sub0); + tdata->dcxsbm = (struct dcxsbm_desc *)bfd_alloc + (abfd, tdata->nbr_dcxsbm * sizeof (struct dcxsbm_desc)); + for (i = 0; i < tdata->nbr_dcxsbm; i++) + { + struct vms_dcxsbm *sbm = (struct vms_dcxsbm *) (buf + sbm_off); + struct dcxsbm_desc *sbmdesc = &tdata->dcxsbm[i]; + unsigned int sbm_len; + unsigned int sbm_sz; + unsigned int off; + unsigned char *data = (unsigned char *)sbm; + unsigned char *buf1; + unsigned int l, j; + + sbm_sz = bfd_getl16 (sbm->size); + sbm_off += sbm_sz; + BFD_ASSERT (sbm_off <= reclen); + + sbmdesc->min_char = sbm->min_char; + BFD_ASSERT (sbmdesc->min_char == 0); + sbmdesc->max_char = sbm->max_char; + sbm_len = sbmdesc->max_char - sbmdesc->min_char + 1; + l = (2 * sbm_len + 7) / 8; + BFD_ASSERT + (sbm_sz >= sizeof (struct vms_dcxsbm) + l + 3 * sbm_len + || (tdata->nbr_dcxsbm == 1 + && sbm_sz >= sizeof (struct vms_dcxsbm) + l + sbm_len)); + sbmdesc->flags = (unsigned char *)bfd_alloc (abfd, l); + memcpy (sbmdesc->flags, data + bfd_getl16 (sbm->flags), l); + sbmdesc->nodes = (unsigned char *)bfd_alloc (abfd, 2 * sbm_len); + memcpy (sbmdesc->nodes, data + bfd_getl16 (sbm->nodes), 2 * sbm_len); + off = bfd_getl16 (sbm->next); + if (off != 0) + { + /* Read the 'next' array. */ + sbmdesc->next = (unsigned short *)bfd_alloc + (abfd, sbm_len * sizeof (unsigned short)); + buf1 = data + off; + for (j = 0; j < sbm_len; j++) + sbmdesc->next[j] = bfd_getl16 (buf1 + j * 2); + } + else + { + /* There is no next array if there is only one submap. */ + BFD_ASSERT (tdata->nbr_dcxsbm == 1); + sbmdesc->next = NULL; + } + } + free (buf); + } + else + { + tdata->nbr_dcxsbm = 0; + } + + /* The map is always present. Also mark shared image library. */ + abfd->has_armap = TRUE; + if (tdata->type == LBR__C_TYP_ESHSTB || tdata->type == LBR__C_TYP_ISHSTB) + abfd->is_thin_archive = TRUE; + + return abfd->xvec; + + err: + bfd_release (abfd, tdata); + abfd->tdata.any = (void *)tdata_hold;; + return NULL; +} + +/* Standard function for alpha libraries. */ + +const bfd_target * +_bfd_vms_lib_alpha_archive_p (bfd *abfd) +{ + return _bfd_vms_lib_archive_p (abfd, vms_lib_alpha); +} + +/* Standard function for ia64 libraries. */ + +const bfd_target * +_bfd_vms_lib_ia64_archive_p (bfd *abfd) +{ + return _bfd_vms_lib_archive_p (abfd, vms_lib_ia64); +} + +/* Standard function for text libraries. */ + +static const bfd_target * +_bfd_vms_lib_txt_archive_p (bfd *abfd) +{ + return _bfd_vms_lib_archive_p (abfd, vms_lib_txt); +} + +/* Standard bfd function. */ + +static bfd_boolean +_bfd_vms_lib_mkarchive (bfd *abfd, enum vms_lib_kind kind) +{ + struct lib_tdata *tdata; + + tdata = (struct lib_tdata *) bfd_zalloc (abfd, sizeof (struct lib_tdata)); + if (tdata == NULL) + return FALSE; + + abfd->tdata.any = (void *)tdata; + vms_get_time (&tdata->credat_hi, &tdata->credat_lo); + + tdata->kind = kind; + switch (kind) + { + case vms_lib_alpha: + tdata->ver = LBR_MAJORID; + tdata->mhd_size = offsetof (struct vms_mhd, pad1); + tdata->type = LBR__C_TYP_EOBJ; + break; + case vms_lib_ia64: + tdata->ver = LBR_ELFMAJORID; + tdata->mhd_size = sizeof (struct vms_mhd); + tdata->type = LBR__C_TYP_IOBJ; + break; + default: + abort (); + } + + tdata->nbr_modules = 0; + tdata->artdata.symdef_count = 0; + tdata->modules = NULL; + tdata->artdata.symdefs = NULL; + tdata->cache = NULL; + + return TRUE; +} + +bfd_boolean +_bfd_vms_lib_alpha_mkarchive (bfd *abfd) +{ + return _bfd_vms_lib_mkarchive (abfd, vms_lib_alpha); +} + +bfd_boolean +_bfd_vms_lib_ia64_mkarchive (bfd *abfd) +{ + return _bfd_vms_lib_mkarchive (abfd, vms_lib_ia64); +} + +/* Find NAME in the symbol index. Return the index. */ + +symindex +_bfd_vms_lib_find_symbol (bfd *abfd, const char *name) +{ + struct lib_tdata *tdata = bfd_libdata (abfd); + carsym *syms = tdata->artdata.symdefs; + int lo, hi; + + /* Open-coded binary search for speed. */ + lo = 0; + hi = tdata->artdata.symdef_count - 1; + + while (lo <= hi) + { + int mid = lo + (hi - lo) / 2; + int diff; + + diff = (char)(name[0] - syms[mid].name[0]); + if (diff == 0) + diff = strcmp (name, syms[mid].name); + if (diff == 0) + return mid; + else if (diff < 0) + hi = mid - 1; + else + lo = mid + 1; + } + return BFD_NO_MORE_SYMBOLS; +} + +/* IO vector for archive member. Need that because members are not linearly + stored in archives. */ + +struct vms_lib_iovec +{ + /* Current offset. */ + ufile_ptr where; + + /* Length of the module, when known. */ + ufile_ptr file_len; + + /* Current position in the record from bfd_bread point of view (ie, after + decompression). 0 means that no data byte have been read, -2 and -1 + are reserved for the length word. */ + int rec_pos; +#define REC_POS_NL -4 +#define REC_POS_PAD -3 +#define REC_POS_LEN0 -2 +#define REC_POS_LEN1 -1 + + /* Record length. */ + unsigned short rec_len; + /* Number of bytes to read in the current record. */ + unsigned short rec_rem; + /* Offset of the next block. */ + file_ptr next_block; + /* Current *data* offset in the data block. */ + unsigned short blk_off; + + /* Offset of the first block. Extracted from the index. */ + file_ptr first_block; + + /* Initial next_block. Extracted when the MHD is read. */ + file_ptr init_next_block; + /* Initial blk_off, once the MHD is read. */ + unsigned short init_blk_off; + + /* Used to store any 3 byte record, which could be the EOF pattern. */ + unsigned char pattern[4]; + + /* DCX. */ + struct dcxsbm_desc *dcxsbms; + /* Current submap. */ + struct dcxsbm_desc *dcx_sbm; + /* Current offset in the submap. */ + unsigned int dcx_offset; + int dcx_pos; + + /* Compressed buffer. */ + unsigned char *dcx_buf; + /* Size of the buffer. Used to resize. */ + unsigned int dcx_max; + /* Number of valid bytes in the buffer. */ + unsigned int dcx_rlen; +}; + +/* Return the current position. */ + +static file_ptr +vms_lib_btell (struct bfd *abfd) +{ + struct vms_lib_iovec *vec = (struct vms_lib_iovec *) abfd->iostream; + return vec->where; +} + +/* Read the header of the next data block if all bytes of the current block + have been read. */ + +static bfd_boolean +vms_lib_read_block (struct bfd *abfd) +{ + struct vms_lib_iovec *vec = (struct vms_lib_iovec *) abfd->iostream; + + if (vec->blk_off == DATA__LENGTH) + { + unsigned char hdr[DATA__DATA]; + + /* Read next block. */ + if (bfd_seek (abfd->my_archive, vec->next_block, SEEK_SET) != 0) + return FALSE; + if (bfd_bread (hdr, sizeof (hdr), abfd->my_archive) != sizeof (hdr)) + return FALSE; + vec->next_block = (bfd_getl32 (hdr + 2) - 1) * VMS_BLOCK_SIZE; + vec->blk_off = sizeof (hdr); + } + return TRUE; +} + +/* Read NBYTES from ABFD into BUF if not NULL. If BUF is NULL, bytes are + not stored. Read linearly from the library, but handle blocks. This + function does not handle records nor EOF. */ + +static file_ptr +vms_lib_bread_raw (struct bfd *abfd, unsigned char *buf, file_ptr nbytes) +{ + struct vms_lib_iovec *vec = (struct vms_lib_iovec *) abfd->iostream; + file_ptr res; + + res = 0; + while (nbytes > 0) + { + unsigned int l; + + /* Be sure the current data block is read. */ + if (!vms_lib_read_block (abfd)) + return -1; + + /* Do not read past the data block, do not read more than requested. */ + l = DATA__LENGTH - vec->blk_off; + if (l > nbytes) + l = nbytes; + if (l == 0) + return 0; + if (buf != NULL) + { + /* Really read into BUF. */ + if (bfd_bread (buf, l, abfd->my_archive) != l) + return -1; + } + else + { + /* Make as if we are reading. */ + if (bfd_seek (abfd->my_archive, l, SEEK_CUR) != 0) + return -1; + } + + if (buf != NULL) + buf += l; + vec->blk_off += l; + nbytes -= l; + res += l; + } + return res; +} + +/* Decompress NBYTES from VEC. Store the bytes into BUF if not NULL. */ + +static file_ptr +vms_lib_dcx (struct vms_lib_iovec *vec, unsigned char *buf, file_ptr nbytes) +{ + struct dcxsbm_desc *sbm; + unsigned int i; + unsigned int offset; + unsigned int j; + file_ptr res = 0; + + /* The loop below expect to deliver at least one byte. */ + if (nbytes == 0) + return 0; + + /* Get the current state. */ + sbm = vec->dcx_sbm; + offset = vec->dcx_offset; + j = vec->dcx_pos & 7; + + for (i = vec->dcx_pos >> 3; i < vec->dcx_rlen; i++) + { + unsigned char b = vec->dcx_buf[i]; + + for (; j < 8; j++) + { + if (b & (1 << j)) + offset++; + if (!(sbm->flags[offset >> 3] & (1 << (offset & 7)))) + { + unsigned int n_offset = sbm->nodes[offset]; + if (n_offset == 0) + { + /* End of buffer. Stay where we are. */ + vec->dcx_pos = (i << 3) + j; + if (b & (1 << j)) + offset--; + vec->dcx_offset = offset; + vec->dcx_sbm = sbm; + return res; + } + offset = 2 * n_offset; + } + else + { + unsigned char v = sbm->nodes[offset]; + + if (sbm->next != NULL) + sbm = vec->dcxsbms + sbm->next[v]; + offset = 0; + res++; + + if (buf) + { + *buf++ = v; + nbytes--; + + if (nbytes == 0) + { + vec->dcx_pos = (i << 3) + j + 1; + vec->dcx_offset = offset; + vec->dcx_sbm = sbm; + + return res; + } + } + } + } + j = 0; + } + return -1; +} + +/* Standard IOVEC function. */ + +static file_ptr +vms_lib_bread (struct bfd *abfd, void *vbuf, file_ptr nbytes) +{ + struct vms_lib_iovec *vec = (struct vms_lib_iovec *) abfd->iostream; + file_ptr res; + file_ptr chunk; + unsigned char *buf = (unsigned char *)vbuf; + + /* Do not read past the end. */ + if (vec->where >= vec->file_len) + return 0; + + res = 0; + while (nbytes > 0) + { + if (vec->rec_rem == 0) + { + unsigned char blen[2]; + + /* Read record length. */ + if (vms_lib_bread_raw (abfd, blen, sizeof (blen)) != sizeof (blen)) + return -1; + vec->rec_len = bfd_getl16 (blen); + if (bfd_libdata (abfd->my_archive)->kind == vms_lib_txt) + { + /* Discard record size and align byte. */ + vec->rec_pos = 0; + vec->rec_rem = vec->rec_len; + } + else + { + /* Prepend record size. */ + vec->rec_pos = REC_POS_LEN0; + vec->rec_rem = (vec->rec_len + 1) & ~1; /* With align byte. */ + } + if (vec->rec_len == 3) + { + /* Possibly end of file. Check the pattern. */ + if (vms_lib_bread_raw (abfd, vec->pattern, 4) != 4) + return -1; + if (!memcmp (vec->pattern, eotdesc + 2, 3)) + { + /* This is really an EOF. */ + vec->where += res; + vec->file_len = vec->where; + return res; + } + } + + if (vec->dcxsbms != NULL) + { + /* This is a compressed member. */ + unsigned int len; + file_ptr elen; + + /* Be sure there is enough room for the expansion. */ + len = (vec->rec_len + 1) & ~1; + if (len > vec->dcx_max) + { + while (len > vec->dcx_max) + vec->dcx_max *= 2; + vec->dcx_buf = bfd_alloc (abfd, vec->dcx_max); + if (vec->dcx_buf == NULL) + return -1; + } + + /* Read the compressed record. */ + vec->dcx_rlen = len; + if (vec->rec_len == 3) + { + /* Already read. */ + memcpy (vec->dcx_buf, vec->pattern, 3); + } + else + { + elen = vms_lib_bread_raw (abfd, vec->dcx_buf, len); + if (elen != len) + return -1; + } + + /* Dummy expansion to get the expanded length. */ + vec->dcx_offset = 0; + vec->dcx_sbm = vec->dcxsbms; + vec->dcx_pos = 0; + elen = vms_lib_dcx (vec, NULL, 0x10000); + if (elen < 0) + return -1; + vec->rec_len = elen; + vec->rec_rem = elen; + + /* Reset the state. */ + vec->dcx_offset = 0; + vec->dcx_sbm = vec->dcxsbms; + vec->dcx_pos = 0; + } + } + if (vec->rec_pos < 0) + { + unsigned char c; + switch (vec->rec_pos) + { + case REC_POS_LEN0: + c = vec->rec_len & 0xff; + vec->rec_pos = REC_POS_LEN1; + break; + case REC_POS_LEN1: + c = (vec->rec_len >> 8) & 0xff; + vec->rec_pos = 0; + break; + case REC_POS_PAD: + c = 0; + vec->rec_rem = 0; + break; + case REC_POS_NL: + c = '\n'; + vec->rec_rem = 0; + break; + default: + abort (); + } + if (buf != NULL) + { + *buf = c; + buf++; + } + nbytes--; + res++; + continue; + } + + if (nbytes > vec->rec_rem) + chunk = vec->rec_rem; + else + chunk = nbytes; + + if (vec->dcxsbms != NULL) + { + /* Optimize the stat() case: no need to decompress again as we + know the length. */ + if (!(buf == NULL && chunk == vec->rec_rem)) + chunk = vms_lib_dcx (vec, buf, chunk); + } + else + { + if (vec->rec_len == 3) + { + if (buf != NULL) + memcpy (buf, vec->pattern + vec->rec_pos, chunk); + } + else + chunk = vms_lib_bread_raw (abfd, buf, chunk); + } + if (chunk < 0) + return -1; + res += chunk; + if (buf != NULL) + buf += chunk; + nbytes -= chunk; + vec->rec_pos += chunk; + vec->rec_rem -= chunk; + + if (vec->rec_rem == 0) + { + /* End of record reached. */ + if (bfd_libdata (abfd->my_archive)->kind == vms_lib_txt) + { + if ((vec->rec_len & 1) == 1 + && vec->rec_len != 3 + && vec->dcxsbms == NULL) + { + /* Eat the pad byte. */ + unsigned char pad; + if (vms_lib_bread_raw (abfd, &pad, 1) != 1) + return -1; + } + vec->rec_pos = REC_POS_NL; + vec->rec_rem = 1; + } + else + { + if ((vec->rec_len & 1) == 1 && vec->dcxsbms != NULL) + { + vec->rec_pos = REC_POS_PAD; + vec->rec_rem = 1; + } + } + } + } + vec->where += res; + return res; +} + +/* Standard function, but we currently only handle the rewind case. */ + +static int +vms_lib_bseek (struct bfd *abfd, file_ptr offset, int whence) +{ + struct vms_lib_iovec *vec = (struct vms_lib_iovec *) abfd->iostream; + + if (whence == SEEK_SET && offset == 0) + { + vec->where = 0; + vec->rec_rem = 0; + vec->dcx_pos = -1; + vec->blk_off = vec->init_blk_off; + vec->next_block = vec->init_next_block; + + if (bfd_seek (abfd->my_archive, vec->first_block, SEEK_SET) != 0) + return -1; + } + else + abort (); + return 0; +} + +static file_ptr +vms_lib_bwrite (struct bfd *abfd ATTRIBUTE_UNUSED, + const void *where ATTRIBUTE_UNUSED, + file_ptr nbytes ATTRIBUTE_UNUSED) +{ + return -1; +} + +static int +vms_lib_bclose (struct bfd *abfd) +{ + abfd->iostream = NULL; + return 0; +} + +static int +vms_lib_bflush (struct bfd *abfd ATTRIBUTE_UNUSED) +{ + return 0; +} + +static int +vms_lib_bstat (struct bfd *abfd ATTRIBUTE_UNUSED, + struct stat *sb ATTRIBUTE_UNUSED) +{ + /* Not supported. */ + return 0; +} + +static void * +vms_lib_bmmap (struct bfd *abfd ATTRIBUTE_UNUSED, + void *addr ATTRIBUTE_UNUSED, + bfd_size_type len ATTRIBUTE_UNUSED, + int prot ATTRIBUTE_UNUSED, + int flags ATTRIBUTE_UNUSED, + file_ptr offset ATTRIBUTE_UNUSED) +{ + return (void *) -1; +} + +static const struct bfd_iovec vms_lib_iovec = { + &vms_lib_bread, &vms_lib_bwrite, &vms_lib_btell, &vms_lib_bseek, + &vms_lib_bclose, &vms_lib_bflush, &vms_lib_bstat, &vms_lib_bmmap +}; + +/* Open a library module. FILEPOS is the position of the module header. */ + +static bfd_boolean +vms_lib_bopen (bfd *el, file_ptr filepos) +{ + struct vms_lib_iovec *vec; + unsigned char buf[256]; + struct vms_mhd *mhd; + struct lib_tdata *tdata = bfd_libdata (el->my_archive); + unsigned int len; + + /* Allocate and initialized the iovec. */ + vec = bfd_zalloc (el, sizeof (*vec)); + if (vec == NULL) + return FALSE; + + el->iostream = vec; + el->iovec = &vms_lib_iovec; + + /* File length is not known. */ + vec->file_len = -1; + + /* Read the first data block. */ + vec->next_block = filepos & ~(VMS_BLOCK_SIZE - 1); + vec->blk_off = DATA__LENGTH; + if (!vms_lib_read_block (el)) + return FALSE; + + /* Prepare to read the first record. */ + vec->blk_off = filepos & (VMS_BLOCK_SIZE - 1); + vec->rec_rem = 0; + if (bfd_seek (el->my_archive, filepos, SEEK_SET) != 0) + return FALSE; + + /* Read Record length + MHD + align byte. */ + len = tdata->mhd_size; + if (vms_lib_bread_raw (el, buf, 2) != 2) + return FALSE; + if (bfd_getl16 (buf) != len) + return FALSE; + len = (len + 1) & ~1; + BFD_ASSERT (len <= sizeof (buf)); + if (vms_lib_bread_raw (el, buf, len) != len) + return FALSE; + + /* Get info from mhd. */ + mhd = (struct vms_mhd *)buf; + /* Check id. */ + if (mhd->id != MHD__C_MHDID) + return FALSE; + if (len >= MHD__C_MHDLEN + 1) + el->selective_search = (mhd->objstat & MHD__M_SELSRC) ? 1 : 0; + el->mtime = vms_rawtime_to_time_t (mhd->datim); + el->mtime_set = TRUE; + + /* Reinit the iovec so that seek() will point to the first record after + the mhd. */ + vec->where = 0; + vec->init_blk_off = vec->blk_off; + vec->init_next_block = vec->next_block; + vec->first_block = bfd_tell (el->my_archive); + vec->dcxsbms = bfd_libdata (el->my_archive)->dcxsbm; + + if (vec->dcxsbms != NULL) + { + /* Handle DCX. */ + vec->dcx_max = 10 * 1024; + vec->dcx_buf = bfd_alloc (el, vec->dcx_max); + vec->dcx_pos = -1; + if (vec->dcx_buf == NULL) + return -1; + } + return TRUE; +} + +/* Get member MODIDX. Return NULL in case of error. */ + +static bfd * +_bfd_vms_lib_get_module (bfd *abfd, unsigned int modidx) +{ + struct lib_tdata *tdata = bfd_libdata (abfd); + bfd *res; + file_ptr file_off; + + /* Sanity check. */ + if (modidx >= tdata->nbr_modules) + return NULL; + + /* Already loaded. */ + if (tdata->cache[modidx]) + return tdata->cache[modidx]; + + /* Build it. */ + file_off = tdata->modules[modidx].file_offset; + if (tdata->type != LBR__C_TYP_IOBJ) + { + res = _bfd_create_empty_archive_element_shell (abfd); + if (res == NULL) + return NULL; + + /* Special reader to deal with data blocks. */ + if (!vms_lib_bopen (res, file_off)) + return NULL; + } + else + { + char buf[256]; + struct vms_mhd *mhd; + struct areltdata *arelt; + + /* Sanity check. The MHD must be big enough to contain module size. */ + if (tdata->mhd_size < offsetof (struct vms_mhd, modsize) + 4) + return NULL; + + /* Read the MHD now. */ + if (bfd_seek (abfd, file_off, SEEK_SET) != 0) + return NULL; + if (bfd_bread (buf, tdata->mhd_size, abfd) != tdata->mhd_size) + return NULL; + + res = _bfd_create_empty_archive_element_shell (abfd); + if (res == NULL) + return NULL; + arelt = bfd_zalloc (res, sizeof (*arelt)); + if (arelt == NULL) + return NULL; + res->arelt_data = arelt; + + /* Get info from mhd. */ + mhd = (struct vms_mhd *)buf; + if (mhd->id != MHD__C_MHDID) + return NULL; + if (tdata->mhd_size >= offsetof (struct vms_mhd, objstat) + 1) + res->selective_search = (mhd->objstat & MHD__M_SELSRC) ? 1 : 0; + res->mtime = vms_rawtime_to_time_t (mhd->datim); + res->mtime_set = TRUE; + + arelt->parsed_size = bfd_getl32 (mhd->modsize); + + /* No need for a special reader as members are stored linearly. + Just skip the MHD. */ + res->origin = file_off + tdata->mhd_size; + } + + res->filename = tdata->modules[modidx].name; + + tdata->cache[modidx] = res; + + return res; +} + +/* Standard function: get member at IDX. */ + +bfd * +_bfd_vms_lib_get_elt_at_index (bfd *abfd, symindex symidx) +{ + struct lib_tdata *tdata = bfd_libdata (abfd); + file_ptr file_off; + unsigned int modidx; + + /* Check symidx. */ + if (symidx > tdata->artdata.symdef_count) + return NULL; + file_off = tdata->artdata.symdefs[symidx].file_offset; + + /* Linear-scan. */ + for (modidx = 0; modidx < tdata->nbr_modules; modidx++) + { + if (tdata->modules[modidx].file_offset == file_off) + break; + } + if (modidx >= tdata->nbr_modules) + return NULL; + + return _bfd_vms_lib_get_module (abfd, modidx); +} + +/* Elements of an imagelib are stubs. You can get the real image with this + function. */ + +bfd * +_bfd_vms_lib_get_imagelib_file (bfd *el) +{ + bfd *archive = el->my_archive; + const char *modname = el->filename; + int modlen = strlen (modname); + char *filename; + int j; + bfd *res; + + /* Convert module name to lower case and append '.exe'. */ + filename = bfd_alloc (el, modlen + 5); + if (filename == NULL) + return NULL; + for (j = 0; j < modlen; j++) + if (ISALPHA (modname[j])) + filename[j] = TOLOWER (modname[j]); + else + filename[j] = modname[j]; + memcpy (filename + modlen, ".exe", 5); + + filename = _bfd_append_relative_path (archive, filename); + if (filename == NULL) + return NULL; + res = bfd_openr (filename, NULL); + + if (res == NULL) + { + (*_bfd_error_handler)(_("could not open shared image '%s' from '%s'"), + filename, archive->filename); + bfd_release (archive, filename); + return NULL; + } + + /* FIXME: put it in a cache ? */ + return res; +} + +/* Standard function. */ + +bfd * +_bfd_vms_lib_openr_next_archived_file (bfd *archive, + bfd *last_file) +{ + unsigned int idx; + bfd *res; + + if (!last_file) + idx = 0; + else + idx = last_file->proxy_origin + 1; + + if (idx >= bfd_libdata (archive)->nbr_modules) + { + bfd_set_error (bfd_error_no_more_archived_files); + return NULL; + } + + res = _bfd_vms_lib_get_module (archive, idx); + if (res == NULL) + return res; + res->proxy_origin = idx; + return res; +} + +/* Standard function. Just compute the length. */ + +int +_bfd_vms_lib_generic_stat_arch_elt (bfd *abfd, struct stat *st) +{ + struct lib_tdata *tdata; + + /* Sanity check. */ + if (abfd->my_archive == NULL) + { + bfd_set_error (bfd_error_invalid_operation); + return -1; + } + + tdata = bfd_libdata (abfd->my_archive); + if (tdata->type != LBR__C_TYP_IOBJ) + { + struct vms_lib_iovec *vec = (struct vms_lib_iovec *) abfd->iostream; + + if (vec->file_len == (ufile_ptr)-1) + { + if (vms_lib_bseek (abfd, 0, SEEK_SET) != 0) + return -1; + + /* Compute length. */ + while (vms_lib_bread (abfd, NULL, 1 << 20) > 0) + ; + } + st->st_size = vec->file_len; + } + else + { + st->st_size = ((struct areltdata *)abfd->arelt_data)->parsed_size; + } + + if (abfd->mtime_set) + st->st_mtime = abfd->mtime; + else + st->st_mtime = 0; + st->st_uid = 0; + st->st_gid = 0; + st->st_mode = 0644; + + return 0; +} + +/* Internal representation of an index entry. */ + +struct lib_index +{ + /* Corresponding archive member. */ + bfd *abfd; + + /* Number of reference to this entry. */ + unsigned int ref; + + /* Length of the key. */ + unsigned short namlen; + + /* Key. */ + const char *name; +}; + +/* Used to sort index entries. */ + +static int +lib_index_cmp (const void *lv, const void *rv) +{ + const struct lib_index *l = lv; + const struct lib_index *r = rv; + + return strcmp (l->name, r->name); +} + +/* Maximum number of index blocks level. */ + +#define MAX_LEVEL 10 + +/* Get the size of an index entry. */ + +static unsigned int +get_idxlen (struct lib_index *idx, bfd_boolean is_elfidx) +{ + if (is_elfidx) + { + if (idx->namlen > MAX_KEYLEN) + return 9 + sizeof (struct vms_rfa); + else + return 9 + idx->namlen; + } + else + return 7 + idx->namlen; +} + +/* Write the index. VBN is the first vbn to be used, and will contain + on return the last vbn. + Can be called with ABFD set to NULL just to size the index. + Return TRUE on success. */ + +static bfd_boolean +vms_write_index (bfd *abfd, + struct lib_index *idx, unsigned int nbr, unsigned int *vbn, + unsigned int *topvbn, bfd_boolean is_elfidx) +{ + unsigned int i; + int j; + int level; + struct vms_indexdef *rblk[MAX_LEVEL]; + struct idxblk + { + unsigned int vbn; + unsigned short len; + unsigned short lastlen; + } blk[MAX_LEVEL]; + + /* The kbn blocks are used to store long symbol names. */ + unsigned int kbn_sz = 0; /* Number of bytes available in the kbn block. */ + unsigned int kbn_vbn = 0; /* VBN of the kbn block. */ + unsigned char *kbn_blk = NULL; /* Contents of the kbn block. */ + + if (nbr == 0) + { + /* No entries. Very easy to handle. */ + if (topvbn != NULL) + *topvbn = 0; + return TRUE; + } + + if (abfd == NULL) + { + /* Sort the index the first time this function is called. */ + qsort (idx, nbr, sizeof (struct lib_index), lib_index_cmp); + } + + /* Allocate first index block. */ + level = 1; + if (abfd != NULL) + rblk[0] = bfd_zmalloc (sizeof (struct vms_indexdef)); + blk[0].vbn = (*vbn)++; + blk[0].len = 0; + blk[0].lastlen = 0; + + for (i = 0; i < nbr; i++, idx++) + { + unsigned int idxlen; + int flush = 0; + unsigned int key_vbn = 0; + unsigned int key_off = 0; + + idxlen = get_idxlen (idx, is_elfidx); + + if (is_elfidx && idx->namlen >= MAX_KEYLEN) + { + /* If the key (ie name) is too long, write it in the kbn block. */ + unsigned int kl = idx->namlen; + unsigned int kl_chunk; + const char *key = idx->name; + + /* Write the key in the kbn, chunk after chunk. */ + do + { + if (kbn_sz < sizeof (struct vms_kbn)) + { + /* Not enough room in the kbn block. */ + if (abfd != NULL) + { + /* Write it to the disk (if there is one). */ + if (kbn_vbn != 0) + { + if (vms_write_block (abfd, kbn_vbn, kbn_blk) != TRUE) + return FALSE; + } + else + { + kbn_blk = bfd_malloc (VMS_BLOCK_SIZE); + if (kbn_blk == NULL) + return FALSE; + } + *(unsigned short *)kbn_blk = 0; + } + kbn_vbn = (*vbn)++; + kbn_sz = VMS_BLOCK_SIZE - 2; + } + if (kl + sizeof (struct vms_kbn) > kbn_sz) + kl_chunk = kbn_sz - sizeof (struct vms_kbn); + else + kl_chunk = kl; + + if (kbn_blk != NULL) + { + struct vms_kbn *kbn; + + kbn = (struct vms_kbn *)(kbn_blk + VMS_BLOCK_SIZE - kbn_sz); + + if (key_vbn == 0) + { + /* Save the rfa of the first chunk. */ + key_vbn = kbn_vbn; + key_off = VMS_BLOCK_SIZE - kbn_sz; + } + + bfd_putl16 (kl_chunk, kbn->keylen); + if (kl_chunk == kl) + { + /* No next chunk. */ + bfd_putl32 (0, kbn->rfa.vbn); + bfd_putl16 (0, kbn->rfa.offset); + } + else + { + /* Next chunk will be at the start of the next block. */ + bfd_putl32 (*vbn, kbn->rfa.vbn); + bfd_putl16 (2, kbn->rfa.offset); + } + memcpy ((char *)(kbn + 1), key, kl_chunk); + key += kl_chunk; + } + kl -= kl_chunk; + kl_chunk = (kl_chunk + 1) & ~1; /* Always align. */ + kbn_sz -= kl_chunk + sizeof (struct vms_kbn); + } + while (kl > 0); + } + + /* Check if a block might overflow. In this case we will flush this + block and all the blocks below it. */ + for (j = 0; j < level; j++) + if (blk[j].len + blk[j].lastlen + idxlen > INDEXDEF__BLKSIZ) + flush = j + 1; + + for (j = 0; j < level; j++) + { + if (j < flush) + { + /* There is not enough room to write the new entry in this + block or in a parent block. */ + + if (j + 1 == level) + { + BFD_ASSERT (level < MAX_LEVEL); + + /* Need to create a parent. */ + if (abfd != NULL) + { + rblk[level] = bfd_zmalloc (sizeof (struct vms_indexdef)); + bfd_putl32 (*vbn, rblk[j]->parent); + } + blk[level].vbn = (*vbn)++; + blk[level].len = 0; + blk[level].lastlen = 0; + + level++; + } + + /* Update parent block: write the new entry. */ + if (abfd != NULL) + { + struct vms_rfa *rfa; + + /* Copy the whole entry. */ + memcpy (rblk[j + 1]->keys + blk[j + 1].len, + rblk[j]->keys + blk[j].len, + blk[j].lastlen); + /* Fix the entry (which in always the first field of an + entry. */ + rfa = (struct vms_rfa *)(rblk[j + 1]->keys + blk[j + 1].len); + bfd_putl32 (blk[j].vbn, rfa->vbn); + bfd_putl16 (RFADEF__C_INDEX, rfa->offset); + } + + if (j + 1 == flush) + { + /* And allocate it. Do it only on the block that won't be + flushed (so that the parent of the parent can be + updated too). */ + blk[j + 1].len += blk[j].lastlen; + blk[j + 1].lastlen = 0; + } + + /* Write this block on the disk. */ + if (abfd != NULL) + { + bfd_putl16 (blk[j].len + blk[j].lastlen, rblk[j]->used); + if (vms_write_block (abfd, blk[j].vbn, rblk[j]) != TRUE) + return FALSE; + } + + /* Reset this block. */ + blk[j].len = 0; + blk[j].lastlen = 0; + blk[j].vbn = (*vbn)++; + } + + /* Append it to the block. */ + if (j == 0) + { + blk[j].len += blk[j].lastlen; + + if (abfd != NULL) + { + struct vms_rfa *rfa; + + rfa = (struct vms_rfa *)(rblk[j]->keys + blk[j].len); + bfd_putl32 ((idx->abfd->proxy_origin / VMS_BLOCK_SIZE) + 1, + rfa->vbn); + bfd_putl16 + ((idx->abfd->proxy_origin % VMS_BLOCK_SIZE) + + (is_elfidx ? 0 : DATA__DATA), + rfa->offset); + + if (is_elfidx) + { + /* Use elfidx format. */ + struct vms_elfidx *en = (struct vms_elfidx *)rfa; + + en->flags = 0; + if (key_vbn != 0) + { + /* Long symbol name. */ + struct vms_kbn *k = (struct vms_kbn *)(en->keyname); + bfd_putl16 (sizeof (struct vms_kbn), en->keylen); + bfd_putl16 (idx->namlen, k->keylen); + bfd_putl32 (key_vbn, k->rfa.vbn); + bfd_putl16 (key_off, k->rfa.offset); + en->flags |= ELFIDX__SYMESC; + } + else + { + bfd_putl16 (idx->namlen, en->keylen); + memcpy (en->keyname, idx->name, idx->namlen); + } + } + else + { + /* Use idx format. */ + struct vms_idx *en = (struct vms_idx *)rfa; + en->keylen = idx->namlen; + memcpy (en->keyname, idx->name, idx->namlen); + } + } + } + + blk[j].lastlen = idxlen; + } + } + + if (topvbn != NULL) + *topvbn = blk[level - 1].vbn; + + if (abfd == NULL) + return TRUE; + + /* Flush. */ + for (j = 1; j < level; j++) + { + /* Update parent block: write the new entry. */ + unsigned char *en; + unsigned char *par; + struct vms_rfa *rfa; + + en = rblk[j - 1]->keys + blk[j - 1].len; + par = rblk[j]->keys + blk[j].len; + memcpy (par, en, blk[j - 1].lastlen); + rfa = (struct vms_rfa *)par; + bfd_putl32 (blk[j - 1].vbn, rfa->vbn); + bfd_putl16 (RFADEF__C_INDEX, rfa->offset); + } + + for (j = 0; j < level; j++) + { + /* Write this block on the disk. */ + bfd_putl16 (blk[j].len + blk[j].lastlen, rblk[j]->used); + if (vms_write_block (abfd, blk[j].vbn, rblk[j]) != TRUE) + return FALSE; + + free (rblk[j]); + } + + /* Write the last kbn (if any). */ + if (kbn_vbn != 0) + { + if (vms_write_block (abfd, kbn_vbn, kbn_blk) != TRUE) + return FALSE; + } + + return TRUE; +} + +/* Append data to the data block DATA. Force write if PAD is true. */ + +static bfd_boolean +vms_write_data_block (bfd *arch, struct vms_datadef *data, file_ptr *off, + const unsigned char *buf, unsigned int len, int pad) +{ + while (len > 0 || pad) + { + unsigned int doff = *off & (VMS_BLOCK_SIZE - 1); + unsigned int remlen = (DATA__LENGTH - DATA__DATA) - doff; + unsigned int l; + + l = (len > remlen) ? remlen : len; + memcpy (data->data + doff, buf, l); + buf += l; + len -= l; + doff += l; + *off += l; + + if (doff == (DATA__LENGTH - DATA__DATA) || (len == 0 && pad)) + { + data->recs = 0; + data->fill_1 = 0; + bfd_putl32 ((*off / VMS_BLOCK_SIZE) + 2, data->link); + + if (bfd_bwrite (data, sizeof (*data), arch) != sizeof (*data)) + return FALSE; + + *off += DATA__LENGTH - doff; + + if (len == 0) + break; + } + } + return TRUE; +} + +/* Build the symbols index. */ + +static bfd_boolean +_bfd_vms_lib_build_map (unsigned int nbr_modules, + struct lib_index *modules, + unsigned int *res_cnt, + struct lib_index **res) +{ + unsigned int i; + asymbol **syms = NULL; + long syms_max = 0; + struct lib_index *map = NULL; + unsigned int map_max = 1024; /* Fine initial default. */ + unsigned int map_count = 0; + + map = (struct lib_index *) bfd_malloc (map_max * sizeof (struct lib_index)); + if (map == NULL) + goto error_return; + + /* Gather symbols. */ + for (i = 0; i < nbr_modules; i++) + { + long storage; + long symcount; + long src_count; + bfd *current = modules[i].abfd; + + if ((bfd_get_file_flags (current) & HAS_SYMS) == 0) + continue; + + storage = bfd_get_symtab_upper_bound (current); + if (storage < 0) + goto error_return; + + if (storage != 0) + { + if (storage > syms_max) + { + if (syms_max > 0) + free (syms); + syms_max = storage; + syms = (asymbol **) bfd_malloc (syms_max); + if (syms == NULL) + goto error_return; + } + symcount = bfd_canonicalize_symtab (current, syms); + if (symcount < 0) + goto error_return; + + /* Now map over all the symbols, picking out the ones we + want. */ + for (src_count = 0; src_count < symcount; src_count++) + { + flagword flags = (syms[src_count])->flags; + asection *sec = syms[src_count]->section; + + if ((flags & BSF_GLOBAL + || flags & BSF_WEAK + || flags & BSF_INDIRECT + || bfd_is_com_section (sec)) + && ! bfd_is_und_section (sec)) + { + struct lib_index *new_map; + + /* This symbol will go into the archive header. */ + if (map_count == map_max) + { + map_max *= 2; + new_map = (struct lib_index *) + bfd_realloc (map, map_max * sizeof (struct lib_index)); + if (new_map == NULL) + goto error_return; + map = new_map; + } + + map[map_count].abfd = current; + map[map_count].namlen = strlen (syms[src_count]->name); + map[map_count].name = syms[src_count]->name; + map_count++; + modules[i].ref++; + } + } + } + } + + *res_cnt = map_count; + *res = map; + return TRUE; + + error_return: + if (syms_max > 0) + free (syms); + if (map != NULL) + free (map); + return FALSE; +} + +/* Do the hard work: write an archive on the disk. */ + +bfd_boolean +_bfd_vms_lib_write_archive_contents (bfd *arch) +{ + bfd *current; + unsigned int nbr_modules; + struct lib_index *modules; + unsigned int nbr_symbols; + struct lib_index *symbols; + struct lib_tdata *tdata = bfd_libdata (arch); + unsigned int i; + file_ptr off; + unsigned int nbr_mod_iblk; + unsigned int nbr_sym_iblk; + unsigned int vbn; + unsigned int mod_idx_vbn; + unsigned int sym_idx_vbn; + bfd_boolean is_elfidx = tdata->kind == vms_lib_ia64; + + /* Count the number of modules (and do a first sanity check). */ + nbr_modules = 0; + for (current = arch->archive_head; + current != NULL; + current = current->archive_next) + { + /* This check is checking the bfds for the objects we're reading + from (which are usually either an object file or archive on + disk), not the archive entries we're writing to. We don't + actually create bfds for the archive members, we just copy + them byte-wise when we write out the archive. */ + if (bfd_write_p (current) || !bfd_check_format (current, bfd_object)) + { + bfd_set_error (bfd_error_invalid_operation); + goto input_err; + } + + nbr_modules++; + } + + /* Build the modules list. */ + BFD_ASSERT (tdata->modules == NULL); + modules = bfd_alloc (arch, nbr_modules * sizeof (struct lib_index)); + if (modules == NULL) + return FALSE; + + for (current = arch->archive_head, i = 0; + current != NULL; + current = current->archive_next, i++) + { + int nl; + + modules[i].abfd = current; + modules[i].name = vms_get_module_name (current->filename, FALSE); + modules[i].ref = 1; + + /* FIXME: silently truncate long names ? */ + nl = strlen (modules[i].name); + modules[i].namlen = (nl > MAX_KEYLEN ? MAX_KEYLEN : nl); + } + + /* Create the module index. */ + vbn = 0; + if (!vms_write_index (NULL, modules, nbr_modules, &vbn, NULL, is_elfidx)) + return FALSE; + nbr_mod_iblk = vbn; + + /* Create symbol index. */ + if (!_bfd_vms_lib_build_map (nbr_modules, modules, &nbr_symbols, &symbols)) + return FALSE; + + vbn = 0; + if (!vms_write_index (NULL, symbols, nbr_symbols, &vbn, NULL, is_elfidx)) + return FALSE; + nbr_sym_iblk = vbn; + + /* Write modules and remember their position. */ + off = (1 + nbr_mod_iblk + nbr_sym_iblk) * VMS_BLOCK_SIZE; + + if (bfd_seek (arch, off, SEEK_SET) != 0) + return FALSE; + + for (i = 0; i < nbr_modules; i++) + { + struct vms_datadef data; + unsigned char blk[VMS_BLOCK_SIZE]; + struct vms_mhd *mhd; + unsigned int sz; + + current = modules[i].abfd; + current->proxy_origin = off; + + if (is_elfidx) + sz = 0; + else + { + /* Write the MHD as a record (ie, size first). */ + sz = 2; + bfd_putl16 (tdata->mhd_size, blk); + } + mhd = (struct vms_mhd *)(blk + sz); + memset (mhd, 0, sizeof (struct vms_mhd)); + mhd->lbrflag = 0; + mhd->id = MHD__C_MHDID; + mhd->objidlng = 4; + memcpy (mhd->objid, "V1.0", 4); + bfd_putl32 (modules[i].ref, mhd->refcnt); + /* FIXME: datim. */ + + sz += tdata->mhd_size; + sz = (sz + 1) & ~1; + + /* Rewind the member to be put into the archive. */ + if (bfd_seek (current, 0, SEEK_SET) != 0) + goto input_err; + + /* Copy the member into the archive. */ + if (is_elfidx) + { + unsigned int modsize = 0; + bfd_size_type amt; + file_ptr off_hdr = off; + + /* Read to complete the first block. */ + amt = bfd_bread (blk + sz, VMS_BLOCK_SIZE - sz, current); + if (amt == (bfd_size_type)-1) + goto input_err; + modsize = amt; + if (amt < VMS_BLOCK_SIZE - sz) + { + /* The member size is less than a block. Pad the block. */ + memset (blk + sz + amt, 0, VMS_BLOCK_SIZE - sz - amt); + } + bfd_putl32 (modsize, mhd->modsize); + + /* Write the first block (which contains an mhd). */ + if (bfd_bwrite (blk, VMS_BLOCK_SIZE, arch) != VMS_BLOCK_SIZE) + goto input_err; + off += VMS_BLOCK_SIZE; + + if (amt == VMS_BLOCK_SIZE - sz) + { + /* Copy the remaining. */ + char buffer[DEFAULT_BUFFERSIZE]; + + while (1) + { + amt = bfd_bread (buffer, sizeof (buffer), current); + if (amt == (bfd_size_type)-1) + goto input_err; + if (amt == 0) + break; + modsize += amt; + if (amt != sizeof (buffer)) + { + /* Clear the padding. */ + memset (buffer + amt, 0, sizeof (buffer) - amt); + amt = (amt + VMS_BLOCK_SIZE) & ~(VMS_BLOCK_SIZE - 1); + } + if (bfd_bwrite (buffer, amt, arch) != amt) + goto input_err; + off += amt; + } + + /* Now that the size is known, write the first block (again). */ + bfd_putl32 (modsize, mhd->modsize); + if (bfd_seek (arch, off_hdr, SEEK_SET) != 0 + || bfd_bwrite (blk, VMS_BLOCK_SIZE, arch) != VMS_BLOCK_SIZE) + goto input_err; + if (bfd_seek (arch, off, SEEK_SET) != 0) + goto input_err; + } + } + else + { + /* Write the MHD. */ + if (vms_write_data_block (arch, &data, &off, blk, sz, 0) < 0) + goto input_err; + + /* Write the member. */ + while (1) + { + sz = bfd_bread (blk, sizeof (blk), current); + if (sz == 0) + break; + if (vms_write_data_block (arch, &data, &off, blk, sz, 0) < 0) + goto input_err; + } + + /* Write the end of module marker. */ + if (vms_write_data_block (arch, &data, &off, + eotdesc, sizeof (eotdesc), 1) < 0) + goto input_err; + } + } + + /* Write the indexes. */ + vbn = 2; + if (vms_write_index (arch, modules, nbr_modules, &vbn, &mod_idx_vbn, + is_elfidx) != TRUE) + return FALSE; + if (vms_write_index (arch, symbols, nbr_symbols, &vbn, &sym_idx_vbn, + is_elfidx) != TRUE) + return FALSE; + + /* Write libary header. */ + { + unsigned char blk[VMS_BLOCK_SIZE]; + struct vms_lhd *lhd = (struct vms_lhd *)blk; + struct vms_idd *idd = (struct vms_idd *)(blk + sizeof (*lhd)); + unsigned int idd_flags; + unsigned int saneid; + + memset (blk, 0, sizeof (blk)); + + lhd->type = tdata->type; + lhd->nindex = 2; + switch (tdata->kind) + { + case vms_lib_alpha: + saneid = LHD_SANEID3; + break; + case vms_lib_ia64: + saneid = LHD_SANEID6; + break; + default: + abort (); + } + bfd_putl32 (saneid, lhd->sanity); + bfd_putl16 (tdata->ver, lhd->majorid); + bfd_putl16 (0, lhd->minorid); + snprintf ((char *)lhd->lbrver + 1, sizeof (lhd->lbrver) - 1, + "GNU ar %u.%u.%u", + (unsigned)(BFD_VERSION / 100000000UL), + (unsigned)(BFD_VERSION / 1000000UL) % 100, + (unsigned)(BFD_VERSION / 10000UL) % 100); + lhd->lbrver[sizeof (lhd->lbrver) - 1] = 0; + lhd->lbrver[0] = strlen ((char *)lhd->lbrver + 1); + + bfd_putl32 (tdata->credat_lo, lhd->credat + 0); + bfd_putl32 (tdata->credat_hi, lhd->credat + 4); + vms_raw_get_time (lhd->updtim); + + lhd->mhdusz = tdata->mhd_size - MHD__C_USRDAT; + + bfd_putl32 (nbr_modules + nbr_symbols, lhd->idxcnt); + bfd_putl32 (nbr_modules, lhd->modcnt); + bfd_putl32 (nbr_modules, lhd->modhdrs); + + bfd_putl32 (vbn - 1, lhd->hipreal); + bfd_putl32 (vbn - 1, lhd->hiprusd); + + /* First index (modules name). */ + idd_flags = IDD__FLAGS_ASCII | IDD__FLAGS_VARLENIDX + | IDD__FLAGS_NOCASECMP | IDD__FLAGS_NOCASENTR; + bfd_putl16 (idd_flags, idd->flags); + bfd_putl16 (MAX_KEYLEN, idd->keylen); + bfd_putl16 (mod_idx_vbn, idd->vbn); + idd++; + + /* Second index (symbols name). */ + bfd_putl16 (idd_flags, idd->flags); + bfd_putl16 (MAX_KEYLEN, idd->keylen); + bfd_putl16 (sym_idx_vbn, idd->vbn); + idd++; + + if (vms_write_block (arch, 1, blk) != TRUE) + return FALSE; + } + + return TRUE; + + input_err: + bfd_set_error (bfd_error_on_input, current, bfd_get_error ()); + return FALSE; +} + +/* Add a target for text library. This costs almost nothing and is useful to + read VMS library on the host. */ + +const bfd_target vms_lib_txt_vec = +{ + "vms-libtxt", /* Name. */ + bfd_target_unknown_flavour, + BFD_ENDIAN_UNKNOWN, /* byteorder */ + BFD_ENDIAN_UNKNOWN, /* header_byteorder */ + 0, /* Object flags. */ + 0, /* Sect flags. */ + 0, /* symbol_leading_char. */ + ' ', /* ar_pad_char. */ + 15, /* ar_max_namelen. */ + bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, + bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, + + {_bfd_dummy_target, _bfd_dummy_target, /* bfd_check_format. */ + _bfd_vms_lib_txt_archive_p, _bfd_dummy_target}, + {bfd_false, bfd_false, bfd_false, bfd_false}, /* bfd_set_format. */ + {bfd_false, bfd_false, bfd_false, bfd_false}, /* bfd_write_contents. */ + + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_vms_lib), + BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_nowrite), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), + + NULL, + + (PTR) 0 +}; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/vms-misc.c crash-6.1.6/=unpacked-tar1=/bfd/vms-misc.c --- crash-5.1.6/=unpacked-tar1=/bfd/vms-misc.c 2009-02-23 09:28:43.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/vms-misc.c 2010-08-03 15:18:51.000000000 +0000 @@ -1,7 +1,7 @@ /* vms-misc.c -- BFD back-end for VMS/VAX (openVMS/VAX) and EVAX (openVMS/Alpha) files. Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2007, 2008, 2009 Free Software Foundation, Inc. + 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Miscellaneous functions. @@ -30,16 +30,21 @@ #include "bfd.h" #include "bfdlink.h" #include "libbfd.h" +#include "safe-ctype.h" -#include "vms.h" - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#ifdef VMS +#define __NEW_STARLET +#include +#include +#include +#include +#define RME$C_SETRFM 0x00000001 +#include +#endif +#include -static int hash_string PARAMS ((const char *)); -static asymbol *new_symbol PARAMS ((bfd *, char *)); -static void maybe_adjust_record_pointer_for_object PARAMS ((bfd *)); -static int vms_get_remaining_object_record PARAMS ((bfd *, int )); -static int vms_get_remaining_image_record PARAMS ((bfd *, int )); +#include "vms.h" +#include "vms/emh.h" #if VMS_DEBUG /* Debug functions. */ @@ -81,7 +86,7 @@ if (abslvl > min_level) return; - while (--level>0) + while (--level > 0) fprintf (output, " "); va_start (args, format); vfprintf (output, format, args); @@ -93,10 +98,7 @@ hex dump 'size' bytes starting at 'ptr'. */ void -_bfd_hexdump (int level, - unsigned char *ptr, - int size, - int offset) +_bfd_hexdump (int level, unsigned char *ptr, int size, int offset) { unsigned char *lptr = ptr; int count = 0; @@ -104,437 +106,35 @@ while (size-- > 0) { - if ((count%16) == 0) + if ((count % 16) == 0) vms_debug (level, "%08lx:", start); vms_debug (-level, " %02x", *ptr++); count++; start++; if (size == 0) { - while ((count%16) != 0) + while ((count % 16) != 0) { vms_debug (-level, " "); count++; } } - if ((count%16) == 0) + if ((count % 16) == 0) { vms_debug (-level, " "); while (lptr < ptr) { - vms_debug (-level, "%c", (*lptr < 32)?'.':*lptr); + vms_debug (-level, "%c", (*lptr < 32) ? '.' : *lptr); lptr++; } vms_debug (-level, "\n"); } } - if ((count%16) != 0) + if ((count % 16) != 0) vms_debug (-level, "\n"); } #endif -/* Hash functions - - These are needed when reading an object file. */ - -/* Allocate new vms_hash_entry - keep the symbol name and a pointer to the bfd symbol in the table. */ - -struct bfd_hash_entry * -_bfd_vms_hash_newfunc (struct bfd_hash_entry *entry, - struct bfd_hash_table *table, - const char *string) -{ - vms_symbol_entry *ret; - -#if VMS_DEBUG - vms_debug (5, "_bfd_vms_hash_newfunc (%p, %p, %s)\n", entry, table, string); -#endif - - if (entry == NULL) - { - ret = (vms_symbol_entry *) - bfd_hash_allocate (table, sizeof (vms_symbol_entry)); - if (ret == NULL) - { - bfd_set_error (bfd_error_no_memory); - return NULL; - } - entry = (struct bfd_hash_entry *) ret; - } - - /* Call the allocation method of the base class. */ - ret = (vms_symbol_entry *) bfd_hash_newfunc (entry, table, string); -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_hash_newfunc ret %p\n", ret); -#endif - - ret->symbol = NULL; - - return (struct bfd_hash_entry *)ret; -} - -/* Object file input functions. */ - -/* Return type and size from record header (buf) on Alpha. */ - -void -_bfd_vms_get_header_values (bfd * abfd ATTRIBUTE_UNUSED, - unsigned char *buf, - int *type, - int *size) -{ - if (type) - *type = bfd_getl16 (buf); - - if (size) - *size = bfd_getl16 (buf+2); - -#if VMS_DEBUG - vms_debug (10, "_bfd_vms_get_header_values type %x, size %x\n", - type ? *type : 0, size ? *size : 0); -#endif -} - -/* Get next record from object file to vms_buf. - Set PRIV(buf_size) and return it - - This is a little tricky since it should be portable. - - The openVMS object file has 'variable length' which means that - read() returns data in chunks of (hopefully) correct and expected - size. The linker (and other tools on VMS) depend on that. Unix - doesn't know about 'formatted' files, so reading and writing such - an object file in a Unix environment is not trivial. - - With the tool 'file' (available on all VMS FTP sites), one - can view and change the attributes of a file. Changing from - 'variable length' to 'fixed length, 512 bytes' reveals the - record size at the first 2 bytes of every record. The same - happens during the transfer of object files from VMS to Unix, - at least with UCX, the DEC implementation of TCP/IP. - - The VMS format repeats the size at bytes 2 & 3 of every record. - - On the first call (file_format == FF_UNKNOWN) we check if - the first and the third byte pair (!) of the record match. - If they do it's an object file in an Unix environment or with - wrong attributes (FF_FOREIGN), else we should be in a VMS - environment where read() returns the record size (FF_NATIVE). - - Reading is always done in 2 steps: - 1. first just the record header is read and the size extracted, - 2. then the read buffer is adjusted and the remaining bytes are - read in. - - All file I/O is done on even file positions. */ - -#define VMS_OBJECT_ADJUSTMENT 2 - -static void -maybe_adjust_record_pointer_for_object (bfd *abfd) -{ - /* Set the file format once for all on the first invocation. */ - if (PRIV (file_format) == FF_UNKNOWN) - { - if (PRIV (vms_rec)[0] == PRIV (vms_rec)[4] - && PRIV (vms_rec)[1] == PRIV (vms_rec)[5]) - PRIV (file_format) = FF_FOREIGN; - else - PRIV (file_format) = FF_NATIVE; - } - - /* The adjustment is needed only in an Unix environment. */ - if (PRIV (file_format) == FF_FOREIGN) - PRIV (vms_rec) += VMS_OBJECT_ADJUSTMENT; -} - -/* Get first record from file and return the file type. */ - -int -_bfd_vms_get_first_record (bfd *abfd) -{ - unsigned int test_len; - -#if VMS_DEBUG - vms_debug (8, "_bfd_vms_get_first_record\n"); -#endif - - if (PRIV (is_vax)) - test_len = 0; - else - /* Minimum is 6 bytes for objects (2 bytes size, 2 bytes record id, - 2 bytes size repeated) and 12 bytes for images (4 bytes major id, - 4 bytes minor id, 4 bytes length). */ - test_len = 12; - - /* Size the main buffer. */ - if (PRIV (buf_size) == 0) - { - /* On VAX there's no size information in the record, so - start with OBJ_S_C_MAXRECSIZ. */ - bfd_size_type amt = (test_len ? test_len : OBJ_S_C_MAXRECSIZ); - PRIV (vms_buf) = (unsigned char *) bfd_malloc (amt); - PRIV (buf_size) = amt; - } - - /* Initialize the record pointer. */ - PRIV (vms_rec) = PRIV (vms_buf); - - /* We only support modules on VAX. */ - if (PRIV (is_vax)) - { - if (vms_get_remaining_object_record (abfd, test_len) <= 0) - return FT_UNKNOWN; - -#if VMS_DEBUG - vms_debug (2, "file type is VAX module\n"); -#endif - - return FT_MODULE; - } - - if (bfd_bread (PRIV (vms_buf), test_len, abfd) != test_len) - { - bfd_set_error (bfd_error_file_truncated); - return FT_UNKNOWN; - } - - /* Is it an image? */ - if ((bfd_getl32 (PRIV (vms_rec)) == EIHD_S_K_MAJORID) - && (bfd_getl32 (PRIV (vms_rec) + 4) == EIHD_S_K_MINORID)) - { - if (vms_get_remaining_image_record (abfd, test_len) <= 0) - return FT_UNKNOWN; - -#if VMS_DEBUG - vms_debug (2, "file type is image\n"); -#endif - - return FT_IMAGE; - } - - /* Assume it's a module and adjust record pointer if necessary. */ - maybe_adjust_record_pointer_for_object (abfd); - - /* But is it really a module? */ - if (bfd_getl16 (PRIV (vms_rec)) <= EOBJ_S_C_MAXRECTYP - && bfd_getl16 (PRIV (vms_rec) + 2) <= EOBJ_S_C_MAXRECSIZ) - { - if (vms_get_remaining_object_record (abfd, test_len) <= 0) - return FT_UNKNOWN; - -#if VMS_DEBUG - vms_debug (2, "file type is module\n"); -#endif - - return FT_MODULE; - } - -#if VMS_DEBUG - vms_debug (2, "file type is unknown\n"); -#endif - - return FT_UNKNOWN; -} - -/* Implement step #1 of the object record reading procedure. - Return the record type or -1 on failure. */ - -int -_bfd_vms_get_object_record (bfd *abfd) -{ - unsigned int test_len; - int type; - -#if VMS_DEBUG - vms_debug (8, "_bfd_vms_get_obj_record\n"); -#endif - - if (PRIV (is_vax)) - test_len = 0; - else - { - /* See _bfd_vms_get_first_record. */ - test_len = 6; - - /* Skip odd alignment byte. */ - if (bfd_tell (abfd) & 1) - { - if (bfd_bread (PRIV (vms_buf), 1, abfd) != 1) - { - bfd_set_error (bfd_error_file_truncated); - return -1; - } - } - - /* Read the record header */ - if (bfd_bread (PRIV (vms_buf), test_len, abfd) != test_len) - { - bfd_set_error (bfd_error_file_truncated); - return -1; - } - - /* Reset the record pointer. */ - PRIV (vms_rec) = PRIV (vms_buf); - maybe_adjust_record_pointer_for_object (abfd); - } - - if (vms_get_remaining_object_record (abfd, test_len) <= 0) - return -1; - - if (PRIV (is_vax)) - type = PRIV (vms_rec) [0]; - else - type = bfd_getl16 (PRIV (vms_rec)); - -#if VMS_DEBUG - vms_debug (8, "_bfd_vms_get_obj_record: rec %p, size %d, type %d\n", - PRIV (vms_rec), PRIV (rec_size), type); -#endif - - return type; -} - -/* Implement step #2 of the object record reading procedure. - Return the size of the record or 0 on failure. */ - -static int -vms_get_remaining_object_record (bfd *abfd, int read_so_far) -{ -#if VMS_DEBUG - vms_debug (8, "vms_get_remaining_obj_record\n"); -#endif - - if (PRIV (is_vax)) - { - if (read_so_far != 0) - abort (); - - PRIV (rec_size) = bfd_bread (PRIV (vms_buf), PRIV (buf_size), abfd); - - if (PRIV (rec_size) <= 0) - { - bfd_set_error (bfd_error_file_truncated); - return 0; - } - - /* Reset the record pointer. */ - PRIV (vms_rec) = PRIV (vms_buf); - } - else - { - unsigned int to_read; - - /* Extract record size. */ - PRIV (rec_size) = bfd_getl16 (PRIV (vms_rec) + 2); - - if (PRIV (rec_size) <= 0) - { - bfd_set_error (bfd_error_file_truncated); - return 0; - } - - /* That's what the linker manual says. */ - if (PRIV (rec_size) > EOBJ_S_C_MAXRECSIZ) - { - bfd_set_error (bfd_error_file_truncated); - return 0; - } - - /* Take into account object adjustment. */ - to_read = PRIV (rec_size); - if (PRIV (file_format) == FF_FOREIGN) - to_read += VMS_OBJECT_ADJUSTMENT; - - /* Adjust the buffer. */ - if (to_read > PRIV (buf_size)) - { - PRIV (vms_buf) - = (unsigned char *) bfd_realloc (PRIV (vms_buf), to_read); - if (PRIV (vms_buf) == NULL) - return 0; - PRIV (buf_size) = to_read; - } - - /* Read the remaining record. */ - to_read -= read_so_far; - -#if VMS_DEBUG - vms_debug (8, "vms_get_remaining_obj_record: to_read %d\n", to_read); -#endif - - if (bfd_bread (PRIV (vms_buf) + read_so_far, to_read, abfd) != to_read) - { - bfd_set_error (bfd_error_file_truncated); - return 0; - } - - /* Reset the record pointer. */ - PRIV (vms_rec) = PRIV (vms_buf); - maybe_adjust_record_pointer_for_object (abfd); - } - -#if VMS_DEBUG - vms_debug (8, "vms_get_remaining_obj_record: size %d\n", PRIV (rec_size)); -#endif - - return PRIV (rec_size); -} - -/* Implement step #2 of the record reading procedure for images. - Return the size of the record or 0 on failure. */ - -static int -vms_get_remaining_image_record (bfd *abfd, int read_so_far) -{ - unsigned int to_read; - int remaining; - - /* Extract record size. */ - PRIV (rec_size) = bfd_getl32 (PRIV (vms_rec) + EIHD_S_L_SIZE); - - if (PRIV (rec_size) > PRIV (buf_size)) - { - PRIV (vms_buf) = bfd_realloc (PRIV (vms_buf), PRIV (rec_size)); - - if (PRIV (vms_buf) == NULL) - { - bfd_set_error (bfd_error_no_memory); - return 0; - } - - PRIV (buf_size) = PRIV (rec_size); - } - - /* Read the remaining record. */ - remaining = PRIV (rec_size) - read_so_far; - to_read = MIN (VMS_BLOCK_SIZE - read_so_far, remaining); - - while (remaining > 0) - { - if (bfd_bread (PRIV (vms_buf) + read_so_far, to_read, abfd) != to_read) - { - bfd_set_error (bfd_error_file_truncated); - return 0; - } - - read_so_far += to_read; - remaining -= to_read; - - /* Eat trailing 0xff's. */ - if (remaining > 0) - while (PRIV (vms_buf) [read_so_far - 1] == 0xff) - read_so_far--; - - to_read = MIN (VMS_BLOCK_SIZE, remaining); - } - - /* Reset the record pointer. */ - PRIV (vms_rec) = PRIV (vms_buf); - - return PRIV (rec_size); -} /* Copy sized string (string with fixed size) to new allocated area size is string size (size of record) */ @@ -546,7 +146,7 @@ if (newstr == NULL) return NULL; - strncpy (newstr, (char *) str, (size_t) size); + memcpy (newstr, (char *) str, (size_t) size); newstr[size] = 0; return newstr; @@ -563,280 +163,196 @@ return _bfd_vms_save_sized_string (ptr, len); } -/* Stack routines for vms ETIR commands. */ +/* Object output routines. */ -/* Push value and section index. */ +/* Begin new record. + Write 2 bytes rectype and 2 bytes record length. */ void -_bfd_vms_push (bfd * abfd, uquad val, int psect) +_bfd_vms_output_begin (struct vms_rec_wr *recwr, int rectype) { - static int last_psect; - -#if VMS_DEBUG - vms_debug (4, "\n", val, psect, PRIV (stackptr)); -#endif + vms_debug2 ((6, "_bfd_vms_output_begin (type %d)\n", rectype)); - if (psect >= 0) - last_psect = psect; + /* Record must have been closed. */ + BFD_ASSERT (recwr->size == 0); - PRIV (stack[PRIV (stackptr)]).value = val; - PRIV (stack[PRIV (stackptr)]).psect = last_psect; - PRIV (stackptr)++; - if (PRIV (stackptr) >= STACKSIZE) - { - bfd_set_error (bfd_error_bad_value); - (*_bfd_error_handler) (_("Stack overflow (%d) in _bfd_vms_push"), PRIV (stackptr)); - exit (1); - } -} - -/* Pop value and section index. */ - -uquad -_bfd_vms_pop (bfd * abfd, int *psect) -{ - uquad value; + _bfd_vms_output_short (recwr, (unsigned int) rectype); - if (PRIV (stackptr) == 0) - { - bfd_set_error (bfd_error_bad_value); - (*_bfd_error_handler) (_("Stack underflow in _bfd_vms_pop")); - exit (1); - } - PRIV (stackptr)--; - value = PRIV (stack[PRIV (stackptr)]).value; - if ((psect != NULL) && (PRIV (stack[PRIV (stackptr)]).psect >= 0)) - *psect = PRIV (stack[PRIV (stackptr)]).psect; - -#if VMS_DEBUG - vms_debug (4, "\n", value, PRIV (stack[PRIV (stackptr)]).psect); -#endif - - return value; + /* Placeholder for length. */ + _bfd_vms_output_short (recwr, 0); } - -/* Object output routines. */ -/* Begin new record or record header - write 2 bytes rectype - write 2 bytes record length (filled in at flush) - write 2 bytes header type (ommitted if rechead == -1). */ +/* Begin new sub-record. + Write 2 bytes rectype, and 2 bytes record length. */ void -_bfd_vms_output_begin (bfd * abfd, int rectype, int rechead) +_bfd_vms_output_begin_subrec (struct vms_rec_wr *recwr, int rectype) { -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_begin (type %d, head %d)\n", rectype, - rechead); -#endif + vms_debug2 ((6, "_bfd_vms_output_begin_subrec (type %d)\n", rectype)); - _bfd_vms_output_short (abfd, (unsigned int) rectype); + /* Subrecord must have been closed. */ + BFD_ASSERT (recwr->subrec_offset == 0); - /* Save current output position to fill in length later. */ + /* Save start of subrecord offset. */ + recwr->subrec_offset = recwr->size; - if (PRIV (push_level) > 0) - PRIV (length_pos) = PRIV (output_size); - -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_begin: length_pos = %d\n", - PRIV (length_pos)); -#endif + /* Subrecord type. */ + _bfd_vms_output_short (recwr, (unsigned int) rectype); /* Placeholder for length. */ - _bfd_vms_output_short (abfd, 0); - - if (rechead != -1) - _bfd_vms_output_short (abfd, (unsigned int) rechead); + _bfd_vms_output_short (recwr, 0); } /* Set record/subrecord alignment. */ void -_bfd_vms_output_alignment (bfd * abfd, int alignto) +_bfd_vms_output_alignment (struct vms_rec_wr *recwr, int alignto) { -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_alignment (%d)\n", alignto); -#endif - - PRIV (output_alignment) = alignto; + vms_debug2 ((6, "_bfd_vms_output_alignment (%d)\n", alignto)); + recwr->align = alignto; } -/* Prepare for subrecord fields. */ +/* Align the size of the current record (whose length is LENGTH). + Warning: this obviously changes the record (and the possible subrecord) + length. */ -void -_bfd_vms_output_push (bfd * abfd) -{ -#if VMS_DEBUG - vms_debug (6, "vms_output_push (pushed_size = %d)\n", PRIV (output_size)); -#endif - - PRIV (push_level)++; - PRIV (pushed_size) = PRIV (output_size); -} - -/* End of subrecord fields. */ - -void -_bfd_vms_output_pop (bfd * abfd) +static void +_bfd_vms_output_align (struct vms_rec_wr *recwr, unsigned int length) { -#if VMS_DEBUG - vms_debug (6, "vms_output_pop (pushed_size = %d)\n", PRIV (pushed_size)); -#endif + unsigned int real_size = recwr->size; + unsigned int aligncount; - _bfd_vms_output_flush (abfd); - PRIV (length_pos) = 2; - -#if VMS_DEBUG - vms_debug (6, "vms_output_pop: length_pos = %d\n", PRIV (length_pos)); -#endif + /* Pad with 0 if alignment is required. */ + aligncount = (recwr->align - (length % recwr->align)) % recwr->align; + vms_debug2 ((6, "align: adding %d bytes\n", aligncount)); + while (aligncount-- > 0) + recwr->buf[real_size++] = 0; - PRIV (pushed_size) = 0; - PRIV (push_level)--; + recwr->size = real_size; } -/* Flush unwritten output, ends current record. */ +/* Ends current sub-record. Set length field. */ void -_bfd_vms_output_flush (bfd * abfd) +_bfd_vms_output_end_subrec (struct vms_rec_wr *recwr) { - int real_size = PRIV (output_size); - int aligncount; + int real_size = recwr->size; int length; -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_flush (real_size = %d, pushed_size %d at lenpos %d)\n", - real_size, PRIV (pushed_size), PRIV (length_pos)); -#endif + /* Subrecord must be open. */ + BFD_ASSERT (recwr->subrec_offset != 0); - if (PRIV (push_level) > 0) - length = real_size - PRIV (pushed_size); - else - length = real_size; + length = real_size - recwr->subrec_offset; if (length == 0) return; - aligncount = (PRIV (output_alignment) - - (length % PRIV (output_alignment))) % PRIV (output_alignment); -#if VMS_DEBUG - vms_debug (6, "align: adding %d bytes\n", aligncount); -#endif - - while (aligncount-- > 0) - { - PRIV (output_buf)[real_size++] = 0; - length++; - } + _bfd_vms_output_align (recwr, length); /* Put length to buffer. */ - PRIV (output_size) = PRIV (length_pos); - _bfd_vms_output_short (abfd, (unsigned int) length); + bfd_putl16 ((bfd_vma) (recwr->size - recwr->subrec_offset), + recwr->buf + recwr->subrec_offset + 2); - if (PRIV (push_level) == 0) - { - /* File is open in undefined (UDF) format on VMS, but ultimately will be - converted to variable length (VAR) format. VAR format has a length - word first which must be explicitly output in UDF format. */ - bfd_bwrite (PRIV (output_buf) + 2, 2, abfd); - bfd_bwrite (PRIV (output_buf), (size_t) real_size, abfd); - PRIV (output_size) = 0; - } - else - { - PRIV (output_size) = real_size; - PRIV (pushed_size) = PRIV (output_size); - } + /* Close the subrecord. */ + recwr->subrec_offset = 0; } -/* End record output. */ +/* Ends current record (and write it). */ void -_bfd_vms_output_end (bfd * abfd) +_bfd_vms_output_end (bfd *abfd, struct vms_rec_wr *recwr) { -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_end\n"); -#endif + vms_debug2 ((6, "_bfd_vms_output_end (size %u)\n", recwr->size)); - _bfd_vms_output_flush (abfd); -} + /* Subrecord must have been closed. */ + BFD_ASSERT (recwr->subrec_offset == 0); + + if (recwr->size == 0) + return; -/* Check remaining buffer size + _bfd_vms_output_align (recwr, recwr->size); - Return what's left. */ + /* Write the length word. */ + bfd_putl16 ((bfd_vma) recwr->size, recwr->buf + 2); + + /* File is open in undefined (UDF) format on VMS, but ultimately will be + converted to variable length (VAR) format. VAR format has a length + word first which must be explicitly output in UDF format. */ + /* So, first the length word. */ + bfd_bwrite (recwr->buf + 2, 2, abfd); + + /* Align. */ + if (recwr->size & 1) + recwr->buf[recwr->size++] = 0; + + /* Then the record. */ + bfd_bwrite (recwr->buf, (size_t) recwr->size, abfd); + + recwr->size = 0; +} + +/* Check remaining buffer size. Return what's left. */ int -_bfd_vms_output_check (bfd * abfd, int size) +_bfd_vms_output_check (struct vms_rec_wr *recwr, int size) { -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_check (%d)\n", size); -#endif + vms_debug2 ((6, "_bfd_vms_output_check (%d)\n", size)); - return (MAX_OUTREC_SIZE - (PRIV (output_size) + size + MIN_OUTREC_LUFT)); + return (MAX_OUTREC_SIZE - (recwr->size + size + MIN_OUTREC_LUFT)); } /* Output byte (8 bit) value. */ void -_bfd_vms_output_byte (bfd * abfd, unsigned int value) +_bfd_vms_output_byte (struct vms_rec_wr *recwr, unsigned int value) { -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_byte (%02x)\n", value); -#endif + vms_debug2 ((6, "_bfd_vms_output_byte (%02x)\n", value)); - bfd_put_8 (abfd, value & 0xff, PRIV (output_buf) + PRIV (output_size)); - PRIV (output_size) += 1; + *(recwr->buf + recwr->size) = value; + recwr->size += 1; } /* Output short (16 bit) value. */ void -_bfd_vms_output_short (bfd * abfd, unsigned int value) +_bfd_vms_output_short (struct vms_rec_wr *recwr, unsigned int value) { -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_short (%04x)\n", value); -#endif + vms_debug2 ((6, "_bfd_vms_output_short (%04x)\n", value)); - bfd_put_16 (abfd, (bfd_vma) value & 0xffff, - PRIV (output_buf) + PRIV (output_size)); - PRIV (output_size) += 2; + bfd_putl16 ((bfd_vma) value & 0xffff, recwr->buf + recwr->size); + recwr->size += 2; } /* Output long (32 bit) value. */ void -_bfd_vms_output_long (bfd * abfd, unsigned long value) +_bfd_vms_output_long (struct vms_rec_wr *recwr, unsigned long value) { -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_long (%08lx)\n", value); -#endif + vms_debug2 ((6, "_bfd_vms_output_long (%08lx)\n", value)); - bfd_put_32 (abfd, (bfd_vma) value, PRIV (output_buf) + PRIV (output_size)); - PRIV (output_size) += 4; + bfd_putl32 ((bfd_vma) value, recwr->buf + recwr->size); + recwr->size += 4; } /* Output quad (64 bit) value. */ void -_bfd_vms_output_quad (bfd * abfd, uquad value) +_bfd_vms_output_quad (struct vms_rec_wr *recwr, bfd_vma value) { -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_quad (%016lx)\n", value); -#endif + vms_debug2 ((6, "_bfd_vms_output_quad (%08lx)\n", (unsigned long)value)); - bfd_put_64(abfd, value, PRIV (output_buf) + PRIV (output_size)); - PRIV (output_size) += 8; + bfd_putl64 (value, recwr->buf + recwr->size); + recwr->size += 8; } /* Output c-string as counted string. */ void -_bfd_vms_output_counted (bfd * abfd, char *value) +_bfd_vms_output_counted (struct vms_rec_wr *recwr, const char *value) { int len; -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_counted (%s)\n", value); -#endif + vms_debug2 ((6, "_bfd_vms_output_counted (%s)\n", value)); len = strlen (value); if (len == 0) @@ -849,191 +365,299 @@ (*_bfd_error_handler) (_("_bfd_vms_output_counted called with too many bytes")); return; } - _bfd_vms_output_byte (abfd, (unsigned int) len & 0xff); - _bfd_vms_output_dump (abfd, (unsigned char *) value, len); + _bfd_vms_output_byte (recwr, (unsigned int) len & 0xff); + _bfd_vms_output_dump (recwr, (const unsigned char *)value, len); } /* Output character area. */ void -_bfd_vms_output_dump (bfd * abfd, - unsigned char *data, - int length) +_bfd_vms_output_dump (struct vms_rec_wr *recwr, const unsigned char *data, int len) { -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_dump (%d)\n", length); -#endif + vms_debug2 ((6, "_bfd_vms_output_dump (%d)\n", len)); - if (length == 0) + if (len == 0) return; - memcpy (PRIV (output_buf) + PRIV (output_size), data, (size_t) length); - PRIV (output_size) += length; + memcpy (recwr->buf + recwr->size, data, (size_t) len); + recwr->size += len; } /* Output count bytes of value. */ void -_bfd_vms_output_fill (bfd * abfd, - int value, - int count) +_bfd_vms_output_fill (struct vms_rec_wr *recwr, int value, int count) { -#if VMS_DEBUG - vms_debug (6, "_bfd_vms_output_fill (val %02x times %d)\n", value, count); -#endif + vms_debug2 ((6, "_bfd_vms_output_fill (val %02x times %d)\n", value, count)); if (count == 0) return; - memset (PRIV (output_buf) + PRIV (output_size), value, (size_t) count); - PRIV (output_size) += count; + memset (recwr->buf + recwr->size, value, (size_t) count); + recwr->size += count; } -/* This hash routine borrowed from GNU-EMACS, and strengthened slightly. ERY. */ +#ifdef VMS +/* Convert the file to variable record length format. This is done + using undocumented system call sys$modify(). + Pure VMS version. */ -static int -hash_string (const char *ptr) +static void +vms_convert_to_var (char * vms_filename) { - const unsigned char *p = (unsigned char *) ptr; - const unsigned char *end = p + strlen (ptr); - unsigned char c; - int hash = 0; + struct FAB fab = cc$rms_fab; - while (p != end) - { - c = *p++; - hash = ((hash << 3) + (hash << 15) + (hash >> 28) + c); - } - return hash; -} + fab.fab$l_fna = vms_filename; + fab.fab$b_fns = strlen (vms_filename); + fab.fab$b_fac = FAB$M_PUT; + fab.fab$l_fop = FAB$M_ESC; + fab.fab$l_ctx = RME$C_SETRFM; -/* Generate a length-hashed VMS symbol name (limited to maxlen chars). */ + sys$open (&fab); -char * -_bfd_vms_length_hash_symbol (bfd * abfd, const char *in, int maxlen) + fab.fab$b_rfm = FAB$C_VAR; + + sys$modify (&fab); + sys$close (&fab); +} + +static int +vms_convert_to_var_1 (char *filename, int type) { - unsigned long result; - int in_len; - char *new_name; - const char *old_name; - int i; - static char outbuf[EOBJ_S_C_SYMSIZ+1]; - char *out = outbuf; + if (type != DECC$K_FILE) + return FALSE; + vms_convert_to_var (filename); + return TRUE; +} -#if VMS_DEBUG - vms_debug (4, "_bfd_vms_length_hash_symbol \"%s\"\n", in); -#endif +/* Convert the file to variable record length format. This is done + using undocumented system call sys$modify(). + Unix filename version. */ - if (maxlen > EOBJ_S_C_SYMSIZ) - maxlen = EOBJ_S_C_SYMSIZ; +int +_bfd_vms_convert_to_var_unix_filename (const char *unix_filename) +{ + if (decc$to_vms (unix_filename, &vms_convert_to_var_1, 0, 1) != 1) + return FALSE; + return TRUE; +} +#endif /* VMS */ + +/* Manufacture a VMS like time on a unix based system. + stolen from obj-vms.c. */ + +unsigned char * +get_vms_time_string (void) +{ + static unsigned char tbuf[18]; +#ifndef VMS + char *pnt; + time_t timeb; + + time (& timeb); + pnt = ctime (&timeb); + pnt[3] = 0; + pnt[7] = 0; + pnt[10] = 0; + pnt[16] = 0; + pnt[24] = 0; + sprintf ((char *) tbuf, "%2s-%3s-%s %s", + pnt + 8, pnt + 4, pnt + 20, pnt + 11); +#else + struct + { + int Size; + unsigned char *Ptr; + } Descriptor; + Descriptor.Size = 17; + Descriptor.Ptr = tbuf; + SYS$ASCTIM (0, &Descriptor, 0, 0); +#endif /* not VMS */ + + vms_debug2 ((6, "vmstimestring:'%s'\n", tbuf)); + + return tbuf; +} + +/* Create module name from filename (ie, extract the basename and convert it + in upper cases). Works on both VMS and UNIX pathes. + The result has to be free(). */ - /* Save this for later. */ - new_name = out; +char * +vms_get_module_name (const char *filename, bfd_boolean upcase) +{ + char *fname, *fptr; + const char *fout; - /* We may need to truncate the symbol, save the hash for later. */ - in_len = strlen (in); + /* Strip VMS path. */ + fout = strrchr (filename, ']'); + if (fout == NULL) + fout = strchr (filename, ':'); + if (fout != NULL) + fout++; + else + fout = filename; - result = (in_len > maxlen) ? hash_string (in) : 0; + /* Strip UNIX path. */ + fptr = strrchr (fout, '/'); + if (fptr != NULL) + fout = fptr + 1; - old_name = in; + fname = strdup (fout); - /* Do the length checking. */ - if (in_len <= maxlen) - i = in_len; - else + /* Strip suffix. */ + fptr = strrchr (fname, '.'); + if (fptr != 0) + *fptr = 0; + + /* Convert to upper case and truncate at 31 characters. + (VMS object file format restricts module name length to 31). */ + fptr = fname; + for (fptr = fname; *fptr != 0; fptr++) { - if (PRIV (flag_hash_long_names)) - i = maxlen-9; - else - i = maxlen; + if (*fptr == ';' || (fptr - fname) >= 31) + { + *fptr = 0; + break; + } + if (upcase) + *fptr = TOUPPER (*fptr); } + return fname; +} - strncpy (out, in, (size_t) i); - in += i; - out += i; - - if ((in_len > maxlen) - && PRIV (flag_hash_long_names)) - sprintf (out, "_%08lx", result); - else - *out = 0; - -#if VMS_DEBUG - vms_debug (4, "--> [%d]\"%s\"\n", strlen (outbuf), outbuf); -#endif +/* Compared to usual UNIX time_t, VMS time has less limits: + - 64 bit (63 bits in fact as the MSB must be 0) + - 100ns granularity + - epoch is Nov 17, 1858. + Here has the constants and the routines used to convert VMS from/to UNIX time. + The conversion routines don't assume 64 bits arithmetic. */ - if (in_len > maxlen - && PRIV (flag_hash_long_names) - && PRIV (flag_show_after_trunc)) - printf (_("Symbol %s replaced by %s\n"), old_name, new_name); +/* UNIX time granularity for VMS, ie 1s / 100ns. */ +#define VMS_TIME_FACTOR 10000000 - return outbuf; -} +/* Number of seconds since VMS epoch of the UNIX epoch. */ +#define VMS_TIME_OFFSET 3506716800U -/* Allocate and initialize a new symbol. */ +/* Convert a VMS time to a unix time. */ -static asymbol * -new_symbol (bfd * abfd, char *name) +time_t +vms_time_to_time_t (unsigned int hi, unsigned int lo) { - asymbol *symbol; + unsigned int tmp; + unsigned int rlo; + int i; -#if VMS_DEBUG - _bfd_vms_debug (7, "new_symbol %s\n", name); -#endif + /* First convert to seconds. */ + tmp = hi % VMS_TIME_FACTOR; + hi = hi / VMS_TIME_FACTOR; + rlo = 0; + for (i = 0; i < 4; i++) + { + tmp = (tmp << 8) | (lo >> 24); + lo <<= 8; + + rlo = (rlo << 8) | (tmp / VMS_TIME_FACTOR); + tmp %= VMS_TIME_FACTOR; + } + lo = rlo; - symbol = bfd_make_empty_symbol (abfd); - if (symbol == 0) - return symbol; - symbol->name = name; - symbol->section = (asection *)(unsigned long)-1; + /* Return 0 in case of overflow. */ + if (lo > VMS_TIME_OFFSET && hi > 1) + return 0; - return symbol; + /* Return 0 in case of underflow. */ + if (lo < VMS_TIME_OFFSET) + return 0; + + return lo - VMS_TIME_OFFSET; } -/* Allocate and enter a new private symbol. */ +/* Convert a time_t to a VMS time. */ -vms_symbol_entry * -_bfd_vms_enter_symbol (bfd * abfd, char *name) +void +vms_time_t_to_vms_time (time_t ut, unsigned int *hi, unsigned int *lo) { - vms_symbol_entry *entry; + unsigned short val[4]; + unsigned short tmp[4]; + unsigned int carry; + int i; -#if VMS_DEBUG - _bfd_vms_debug (6, "_bfd_vms_enter_symbol %s\n", name); -#endif + /* Put into val. */ + val[0] = ut & 0xffff; + val[1] = (ut >> 16) & 0xffff; + val[2] = sizeof (ut) > 4 ? (ut >> 32) & 0xffff : 0; + val[3] = sizeof (ut) > 4 ? (ut >> 48) & 0xffff : 0; - entry = (vms_symbol_entry *) - bfd_hash_lookup (PRIV (vms_symbol_table), name, FALSE, FALSE); - if (entry == 0) + /* Add offset. */ + tmp[0] = VMS_TIME_OFFSET & 0xffff; + tmp[1] = VMS_TIME_OFFSET >> 16; + tmp[2] = 0; + tmp[3] = 0; + carry = 0; + for (i = 0; i < 4; i++) { -#if VMS_DEBUG - _bfd_vms_debug (8, "creating hash entry for %s\n", name); -#endif - entry = (vms_symbol_entry *) bfd_hash_lookup (PRIV (vms_symbol_table), - name, TRUE, FALSE); - if (entry != 0) - { - asymbol *symbol; - symbol = new_symbol (abfd, name); - if (symbol != 0) - { - entry->symbol = symbol; - PRIV (gsd_sym_count)++; - abfd->symcount++; - } - else - entry = 0; - } - else - (*_bfd_error_handler) (_("failed to enter %s"), name); + carry += tmp[i] + val[i]; + val[i] = carry & 0xffff; + carry = carry >> 16; } - else + + /* Multiply by factor, well first by 10000 and then by 1000. */ + carry = 0; + for (i = 0; i < 4; i++) { -#if VMS_DEBUG - _bfd_vms_debug (8, "found hash entry for %s\n", name); -#endif + carry += val[i] * 10000; + val[i] = carry & 0xffff; + carry = carry >> 16; + } + carry = 0; + for (i = 0; i < 4; i++) + { + carry += val[i] * 1000; + val[i] = carry & 0xffff; + carry = carry >> 16; } -#if VMS_DEBUG - _bfd_vms_debug (7, "-> entry %p, entry->symbol %p\n", entry, entry->symbol); + /* Write the result. */ + *lo = val[0] | (val[1] << 16); + *hi = val[2] | (val[3] << 16); +} + +/* Convert a raw (stored in a buffer) VMS time to a unix time. */ + +time_t +vms_rawtime_to_time_t (unsigned char *buf) +{ + unsigned int hi = bfd_getl32 (buf + 4); + unsigned int lo = bfd_getl32 (buf + 0); + + return vms_time_to_time_t (hi, lo); +} + +void +vms_get_time (unsigned int *hi, unsigned int *lo) +{ +#ifdef VMS + struct _generic_64 t; + + sys$gettim (&t); + *lo = t.gen64$q_quadword; + *hi = t.gen64$q_quadword >> 32; +#else + time_t t; + + time (&t); + vms_time_t_to_vms_time (t, hi, lo); #endif - return entry; +} + +/* Get the current time into a raw buffer BUF. */ + +void +vms_raw_get_time (unsigned char *buf) +{ + unsigned int hi, lo; + + vms_get_time (&hi, &lo); + bfd_putl32 (lo, buf + 0); + bfd_putl32 (hi, buf + 4); } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/vms-tir.c crash-6.1.6/=unpacked-tar1=/bfd/vms-tir.c --- crash-5.1.6/=unpacked-tar1=/bfd/vms-tir.c 2009-02-23 09:28:43.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/vms-tir.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2808 +0,0 @@ -/* vms-tir.c -- BFD back-end for VAX (openVMS/VAX) and - EVAX (openVMS/Alpha) files. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2007, - 2008, 2009 Free Software Foundation, Inc. - - TIR record handling functions - ETIR record handling functions - - Go and read the openVMS linker manual (esp. appendix B) - if you don't know what's going on here :-) - - 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 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - -/* The following type abbreviations are used: - - cs counted string (ascii string with length byte) - by byte (1 byte) - sh short (2 byte, 16 bit) - lw longword (4 byte, 32 bit) - qw quadword (8 byte, 64 bit) - da data stream */ - -#include "sysdep.h" -#include "bfd.h" -#include "bfdlink.h" -#include "libbfd.h" -#include "vms.h" - -static int check_section (bfd *, int); -static void image_set_ptr (bfd *abfd, int psect, uquad offset); -static void image_inc_ptr (bfd *abfd, uquad offset); -static void dst_define_location (bfd *abfd, uquad loc); -static void dst_restore_location (bfd *abfd, uquad loc); -static unsigned int dst_retrieve_location (bfd *abfd, uquad loc); -static void dst_check_allocation (bfd *abfd, unsigned int size); -static void image_dump (bfd *abfd, unsigned char *ptr, int size, int offset); -static void image_write_b (bfd *abfd, unsigned int value); -static void image_write_w (bfd *abfd, unsigned int value); -static void image_write_l (bfd *abfd, unsigned long value); -static void image_write_q (bfd *abfd, uquad value); -static bfd_boolean etir_sta (bfd *, int, unsigned char *, int *); -static bfd_boolean etir_sto (bfd *, int, unsigned char *, int *); -static bfd_boolean etir_opr (bfd *, int, unsigned char *, int *); -static bfd_boolean etir_ctl (bfd *, int, unsigned char *, int *); -static bfd_boolean etir_stc (bfd *, int, unsigned char *, int *); -static asection *new_section (bfd *, int); -static int alloc_section (bfd *, unsigned int); -static int etir_cmd (bfd *, int, unsigned char *, int *); -static int analyze_tir (bfd *, unsigned char *, unsigned int); -static int analyze_etir (bfd *, unsigned char *, unsigned int); -static unsigned char *tir_opr (bfd *, unsigned char *); -static const char *tir_cmd_name (int); -static const char *cmd_name (int); - - -static int -check_section (bfd * abfd, int size) -{ - bfd_size_type offset; - - offset = PRIV (image_ptr) - PRIV (image_section)->contents; - if (offset + size > PRIV (image_section)->size) - { - PRIV (image_section)->contents - = bfd_realloc_or_free (PRIV (image_section)->contents, offset + size); - if (PRIV (image_section)->contents == NULL) - { - (*_bfd_error_handler) (_("No Mem !")); - return -1; - } - PRIV (image_section)->size = offset + size; - PRIV (image_ptr) = PRIV (image_section)->contents + offset; - } - - return 0; -} - -/* Routines to fill sections contents during tir/etir read. */ - -/* Initialize image buffer pointer to be filled. */ - -static void -image_set_ptr (bfd * abfd, int psect, uquad offset) -{ -#if VMS_DEBUG - _bfd_vms_debug (4, "image_set_ptr (%d=%s, %d)\n", - psect, PRIV (sections)[psect]->name, offset); -#endif - - PRIV (image_ptr) = PRIV (sections)[psect]->contents + offset; - PRIV (image_section) = PRIV (sections)[psect]; -} - -/* Increment image buffer pointer by offset. */ - -static void -image_inc_ptr (bfd * abfd, uquad offset) -{ -#if VMS_DEBUG - _bfd_vms_debug (4, "image_inc_ptr (%d)\n", offset); -#endif - - PRIV (image_ptr) += offset; -} - -/* Save current DST location counter under specified index. */ - -static void -dst_define_location (bfd *abfd, uquad loc) -{ - asection *dst_section = PRIV (dst_section); - -#if VMS_DEBUG - _bfd_vms_debug (4, "dst_define_location (%d)\n", (int)loc); -#endif - - /* Grow the ptr offset table if necessary. */ - if (loc + 1 > PRIV (dst_ptr_offsets_count)) - { - PRIV (dst_ptr_offsets) = bfd_realloc (PRIV (dst_ptr_offsets), - (loc + 1) * sizeof (unsigned int)); - PRIV (dst_ptr_offsets_count) = loc + 1; - } - - PRIV (dst_ptr_offsets)[loc] = PRIV (image_ptr) - dst_section->contents; -} - -/* Restore saved DST location counter from specified index. */ - -static void -dst_restore_location (bfd *abfd, uquad loc) -{ - asection *dst_section = PRIV (dst_section); - -#if VMS_DEBUG - _bfd_vms_debug (4, "dst_restore_location (%d)\n", (int)loc); -#endif - - PRIV (image_ptr) = dst_section->contents + PRIV (dst_ptr_offsets)[loc]; -} - -/* Retrieve saved DST location counter from specified index. */ - -static unsigned int -dst_retrieve_location (bfd *abfd, uquad loc) -{ -#if VMS_DEBUG - _bfd_vms_debug (4, "dst_retrieve_location (%d)\n", (int)loc); -#endif - - return PRIV (dst_ptr_offsets)[loc]; -} - -/* Check that the DST section is big enough for the specified - amount of bytes. */ - -static void -dst_check_allocation (bfd *abfd, unsigned int size) -{ - asection *dst_section = PRIV (dst_section); - - bfd_size_type used = PRIV (image_ptr) - dst_section->contents; - bfd_size_type left = dst_section->size - used; - - /* Grow the DST section as necessary */ - if (size > left) - { - dst_section->size *= 2; - dst_section->contents - = bfd_realloc (dst_section->contents, dst_section->size); - PRIV (image_ptr) = dst_section->contents + used; - - dst_check_allocation (abfd, size); - } -} - -/* Dump multiple bytes to section image. */ - -static void -image_dump (bfd * abfd, - unsigned char *ptr, - int size, - int offset ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - _bfd_vms_debug (8, "image_dump from (%p, %d) to (%p)\n", ptr, size, - PRIV (image_ptr)); - _bfd_hexdump (9, ptr, size, offset); -#endif - - if (PRIV (is_vax) && check_section (abfd, size)) - return; - - if (PRIV (dst_section)) - dst_check_allocation (abfd, size); - - while (size-- > 0) - *PRIV (image_ptr)++ = *ptr++; -} - -/* Write byte to section image. */ - -static void -image_write_b (bfd * abfd, unsigned int value) -{ -#if VMS_DEBUG - _bfd_vms_debug (6, "image_write_b (%02x)\n", (int) value); -#endif - - if (PRIV (is_vax) && check_section (abfd, 1)) - return; - - if (PRIV (dst_section)) - dst_check_allocation (abfd, 1); - - *PRIV (image_ptr)++ = (value & 0xff); -} - -/* Write 2-byte word to image. */ - -static void -image_write_w (bfd * abfd, unsigned int value) -{ -#if VMS_DEBUG - _bfd_vms_debug (6, "image_write_w (%04x)\n", (int) value); -#endif - - if (PRIV (is_vax) && check_section (abfd, 2)) - return; - - if (PRIV (dst_section)) - dst_check_allocation (abfd, 2); - - bfd_putl16 ((bfd_vma) value, PRIV (image_ptr)); - PRIV (image_ptr) += 2; -} - -/* Write 4-byte long to image. */ - -static void -image_write_l (bfd * abfd, unsigned long value) -{ -#if VMS_DEBUG - _bfd_vms_debug (6, "image_write_l (%08lx)\n", value); -#endif - - if (PRIV (is_vax) && check_section (abfd, 4)) - return; - - if (PRIV (dst_section)) - dst_check_allocation (abfd, 4); - - bfd_putl32 ((bfd_vma) value, PRIV (image_ptr)); - PRIV (image_ptr) += 4; -} - -/* Write 8-byte quad to image. */ - -static void -image_write_q (bfd * abfd, uquad value) -{ -#if VMS_DEBUG - _bfd_vms_debug (6, "image_write_q (%016lx)\n", value); -#endif - - if (PRIV (is_vax) && check_section (abfd, 8)) - return; - - if (PRIV (dst_section)) - dst_check_allocation (abfd, 8); - - bfd_putl64 (value, PRIV (image_ptr)); - PRIV (image_ptr) += 8; -} - -static const char * -cmd_name (int cmd) -{ - switch (cmd) - { - case ETIR_S_C_STA_GBL: return "ETIR_S_C_STA_GBL"; - case ETIR_S_C_STA_LW: return "ETIR_S_C_STA_LW"; - case ETIR_S_C_STA_QW: return "ETIR_S_C_STA_QW"; - 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_OFF: return "ETIR_S_C_STO_OFF"; - case ETIR_S_C_STO_IMM: return "ETIR_S_C_STO_IMM"; - case ETIR_S_C_STO_IMMR: return "ETIR_S_C_STO_IMMR"; - case ETIR_S_C_STO_LW: return "ETIR_S_C_STO_LW"; - case ETIR_S_C_STO_QW: return "ETIR_S_C_STO_QW"; - 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_ADD: return "ETIR_S_C_OPR_ADD"; - 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"; - case ETIR_S_C_CTL_SETRB: return "ETIR_S_C_CTL_SETRB"; - case ETIR_S_C_STC_LP_PSB: return "ETIR_S_C_STC_LP_PSB"; - case ETIR_S_C_CTL_DFLOC: return "ETIR_S_C_CTL_DFLOC"; - case ETIR_S_C_CTL_STLOC: return "ETIR_S_C_CTL_STLOC"; - case ETIR_S_C_CTL_STKDL: return "ETIR_S_C_CTL_STKDL"; - - default: - /* These names have not yet been added to this switch statement. */ - (*_bfd_error_handler) (_("unknown ETIR command %d"), cmd); - } - - return NULL; -} -#define HIGHBIT(op) ((op & 0x80000000L) == 0x80000000L) - -/* etir_sta - - Vms stack commands. - - Handle sta_xxx commands in etir section, - ptr points to data area in record. - - See table B-8 of the openVMS linker manual. */ - -static bfd_boolean -etir_sta (bfd *abfd, int cmd, unsigned char *ptr, int *quarter_relocs) -{ -#if VMS_DEBUG - _bfd_vms_debug (5, "etir_sta %d/%x\n", cmd, cmd); - _bfd_hexdump (8, ptr, 16, (long) ptr); -#endif - - switch (cmd) - { - /* Stack global - arg: cs symbol name - - stack 32 bit value of symbol (high bits set to 0). */ - case ETIR_S_C_STA_GBL: - { - char *name; - vms_symbol_entry *entry; - - name = _bfd_vms_save_counted_string (ptr); - entry = (vms_symbol_entry *) - bfd_hash_lookup (PRIV (vms_symbol_table), name, FALSE, FALSE); - if (entry == NULL) - { -#if VMS_DEBUG - _bfd_vms_debug (3, "%s: no symbol \"%s\"\n", - cmd_name (cmd), name); -#endif - _bfd_vms_push (abfd, (uquad) 0, -1); - } - else - _bfd_vms_push (abfd, (uquad) (entry->symbol->value), -1); - } - *quarter_relocs = 1; - break; - - /* Stack longword - arg: lw value - - stack 32 bit value, sign extend to 64 bit. */ - case ETIR_S_C_STA_LW: - _bfd_vms_push (abfd, (uquad) bfd_getl32 (ptr), -1); - /* This one is special as it is both part of the section header - and of the ALPHA_R_REFLONG relocation. */ - if (bfd_getl16 (ptr - 4 + bfd_getl16 (ptr - 2)) == ETIR_S_C_CTL_DFLOC) - *quarter_relocs = 0; - else if (*quarter_relocs) - *quarter_relocs += 1; - else - *quarter_relocs = 2; - break; - - /* Stack quadword - arg: qw value - - stack 64 bit value of symbol. */ - case ETIR_S_C_STA_QW: - _bfd_vms_push (abfd, (uquad) bfd_getl64 (ptr), -1); - if (*quarter_relocs) - *quarter_relocs += 1; - else - *quarter_relocs = 2; - break; - - /* Stack psect base plus quadword offset - arg: lw section index - qw signed quadword offset (low 32 bits) - - Stack qw argument and section index - (see ETIR_S_C_STO_OFF, ETIR_S_C_CTL_SETRB). */ - case ETIR_S_C_STA_PQ: - { - uquad dummy; - int psect; - - psect = bfd_getl32 (ptr); - if ((unsigned int) psect >= PRIV (section_count)) - { - (*_bfd_error_handler) (_("bad section index in %s"), - cmd_name (cmd)); - bfd_set_error (bfd_error_bad_value); - return FALSE; - } - dummy = bfd_getl64 (ptr + 4); - _bfd_vms_push (abfd, dummy, (int) psect); - } - /* This one is special as it is both part of the section header - and of the ALPHA_R_REFLONG and ALPHA_R_REFQUAD relocations. */ - if (bfd_getl16 (ptr - 4 + bfd_getl16 (ptr - 2)) == ETIR_S_C_CTL_SETRB) - *quarter_relocs = 0; - else - *quarter_relocs = 2; - break; - - case ETIR_S_C_STA_LI: - case ETIR_S_C_STA_MOD: - case ETIR_S_C_STA_CKARG: - (*_bfd_error_handler) (_("unsupported STA cmd %s"), cmd_name (cmd)); - *quarter_relocs = 0; - return FALSE; - - default: - (*_bfd_error_handler) (_("reserved STA cmd %d"), cmd); - *quarter_relocs = 0; - return FALSE; - } - -#if VMS_DEBUG - _bfd_vms_debug (5, "etir_sta true\n"); -#endif - - return TRUE; -} - -/* etir_sto - - vms store commands - - handle sto_xxx commands in etir section - ptr points to data area in record - - see table B-9 of the openVMS linker manual. */ - -static bfd_boolean -etir_sto (bfd *abfd, int cmd, unsigned char *ptr, int *quarter_relocs) -{ - uquad dummy; - int psect; - -#if VMS_DEBUG - _bfd_vms_debug (5, "etir_sto %d/%x\n", cmd, cmd); - _bfd_hexdump (8, ptr, 16, (long) ptr); -#endif - - switch (cmd) - { - /* Store byte: pop stack, write byte - arg: -. */ - case ETIR_S_C_STO_B: - dummy = _bfd_vms_pop (abfd, &psect); - /* FIXME: check top bits. */ - image_write_b (abfd, (unsigned int) dummy & 0xff); - *quarter_relocs = 0; - break; - - /* Store word: pop stack, write word - arg: -. */ - case ETIR_S_C_STO_W: - dummy = _bfd_vms_pop (abfd, &psect); - /* FIXME: check top bits */ - image_write_w (abfd, (unsigned int) dummy & 0xffff); - *quarter_relocs = 0; - break; - - /* Store longword: pop stack, write longword - arg: -. */ - case ETIR_S_C_STO_LW: - dummy = _bfd_vms_pop (abfd, &psect); - dummy += (PRIV (sections)[psect])->vma; - /* FIXME: check top bits. */ - image_write_l (abfd, (unsigned int) dummy & 0xffffffff); - if (*quarter_relocs == 2) - *quarter_relocs = 4; - else - *quarter_relocs += 1; - break; - - /* Store quadword: pop stack, write quadword - arg: -. */ - case ETIR_S_C_STO_QW: - dummy = _bfd_vms_pop (abfd, &psect); - dummy += (PRIV (sections)[psect])->vma; - /* FIXME: check top bits. */ - image_write_q (abfd, dummy); - if (*quarter_relocs == 2) - *quarter_relocs = 4; - else - *quarter_relocs += 1; - break; - - /* Store immediate repeated: pop stack for repeat count - arg: lw byte count - da data. */ - case ETIR_S_C_STO_IMMR: - { - int size; - - size = bfd_getl32 (ptr); - dummy = (unsigned long) _bfd_vms_pop (abfd, NULL); - while (dummy-- > 0) - image_dump (abfd, ptr+4, size, 0); - } - *quarter_relocs = 0; - break; - - /* Store global: write symbol value - arg: cs global symbol name. */ - case ETIR_S_C_STO_GBL: - { - vms_symbol_entry *entry; - char *name; - - name = _bfd_vms_save_counted_string (ptr); - entry = (vms_symbol_entry *) bfd_hash_lookup (PRIV (vms_symbol_table), - name, FALSE, FALSE); - if (entry == NULL) - /* FIXME, reloc. */ - image_write_q (abfd, (uquad) (0)); - else - /* FIXME, reloc. */ - image_write_q (abfd, (uquad) (entry->symbol->value)); - } - *quarter_relocs = 4; - break; - - /* Store code address: write address of entry point - arg: cs global symbol name (procedure). */ - case ETIR_S_C_STO_CA: - { - vms_symbol_entry *entry; - char *name; - - name = _bfd_vms_save_counted_string (ptr); - entry = (vms_symbol_entry *) bfd_hash_lookup (PRIV (vms_symbol_table), - name, FALSE, FALSE); - if (entry == NULL) - /* FIXME, reloc. */ - image_write_q (abfd, (uquad) (0)); - else - /* FIXME, reloc. */ - image_write_q (abfd, (uquad) (entry->symbol->value)); - } - *quarter_relocs = 4; - break; - - /* Store offset to psect: pop stack, add low 32 bits to base of psect - arg: none. */ - case ETIR_S_C_STO_OFF: - { - uquad q; - int psect1; - - q = _bfd_vms_pop (abfd, & psect1); - q += (PRIV (sections)[psect1])->vma; - image_write_q (abfd, q); - } - *quarter_relocs += 2; - break; - - /* Store immediate - arg: lw count of bytes - da data. */ - case ETIR_S_C_STO_IMM: - { - int size; - - size = bfd_getl32 (ptr); - image_dump (abfd, ptr+4, size, 0); - } - *quarter_relocs = 0; - break; - - /* 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. */ - case ETIR_S_C_STO_GBL_LW: - { - vms_symbol_entry *entry; - char *name; - - name = _bfd_vms_save_counted_string (ptr); - entry = (vms_symbol_entry *) bfd_hash_lookup (PRIV (vms_symbol_table), - name, FALSE, FALSE); - if (entry == NULL) - { -#if VMS_DEBUG - _bfd_vms_debug (3, "%s: no symbol \"%s\"\n", cmd_name (cmd), name); -#endif - image_write_l (abfd, (unsigned long) 0); /* FIXME, reloc */ - } - else - /* FIXME, reloc. */ - image_write_l (abfd, (unsigned long) (entry->symbol->value)); - } - *quarter_relocs = 4; - break; - - case ETIR_S_C_STO_RB: - case ETIR_S_C_STO_AB: - case ETIR_S_C_STO_LP_PSB: - (*_bfd_error_handler) (_("%s: not supported"), cmd_name (cmd)); - *quarter_relocs = 0; - return FALSE; - - case ETIR_S_C_STO_HINT_GBL: - case ETIR_S_C_STO_HINT_PS: - (*_bfd_error_handler) (_("%s: not implemented"), cmd_name (cmd)); - *quarter_relocs = 0; - return FALSE; - - default: - (*_bfd_error_handler) (_("reserved STO cmd %d"), cmd); - *quarter_relocs = 0; - return FALSE; - } - - return TRUE; -} - -/* 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. */ - -static bfd_boolean -etir_opr (bfd *abfd, int cmd, unsigned char *ptr ATTRIBUTE_UNUSED, - int *quarter_relocs) -{ - long op1, op2; - -#if VMS_DEBUG - _bfd_vms_debug (5, "etir_opr %d/%x\n", cmd, cmd); - _bfd_hexdump (8, ptr, 16, (long) ptr); -#endif - - /* No relocation uses OPR commands except ETIR_S_C_OPR_ADD. */ - if (cmd == ETIR_S_C_OPR_ADD) - *quarter_relocs += 1; - else - *quarter_relocs = 0; - - switch (cmd) - { - case ETIR_S_C_OPR_NOP: /* No-op. */ - break; - - 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; - - 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; - - 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; - - case ETIR_S_C_OPR_DIV: /* Divide. */ - op1 = (long) _bfd_vms_pop (abfd, NULL); - op2 = (long) _bfd_vms_pop (abfd, NULL); - if (op2 == 0) - _bfd_vms_push (abfd, (uquad) 0, -1); - else - _bfd_vms_push (abfd, (uquad) (op2 / op1), -1); - break; - - 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; - - 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; - - 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; - - case ETIR_S_C_OPR_NEG: /* Negate. */ - op1 = (long) _bfd_vms_pop (abfd, NULL); - _bfd_vms_push (abfd, (uquad) (-op1), -1); - break; - - case ETIR_S_C_OPR_COM: /* Complement. */ - op1 = (long) _bfd_vms_pop (abfd, NULL); - _bfd_vms_push (abfd, (uquad) (op1 ^ -1L), -1); - break; - - 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. */ - op1 >>= -op2; - else /* Shift left. */ - op1 <<= op2; - _bfd_vms_push (abfd, (uquad) op1, -1); - break; - - 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)); - return FALSE; - - case ETIR_S_C_OPR_SEL: /* Select. */ - if ((long) _bfd_vms_pop (abfd, NULL) & 0x01L) - (void) _bfd_vms_pop (abfd, NULL); - else - { - op1 = (long) _bfd_vms_pop (abfd, NULL); - (void) _bfd_vms_pop (abfd, NULL); - _bfd_vms_push (abfd, (uquad) op1, -1); - } - break; - - default: - (*_bfd_error_handler) (_("reserved OPR cmd %d"), cmd); - return FALSE; - } - - return TRUE; -} - -/* Control commands. - - See table B-11 of the openVMS linker manual. */ - -static bfd_boolean -etir_ctl (bfd *abfd, int cmd, unsigned char *ptr, int *quarter_relocs) -{ - uquad dummy; - int psect; - -#if VMS_DEBUG - _bfd_vms_debug (5, "etir_ctl %d/%x\n", cmd, cmd); - _bfd_hexdump (8, ptr, 16, (long) ptr); -#endif - - /* No relocation uses CTL commands. */ - *quarter_relocs = 0; - - switch (cmd) - { - /* Det relocation base: pop stack, set image location counter - arg: none. */ - case ETIR_S_C_CTL_SETRB: - dummy = _bfd_vms_pop (abfd, &psect); - image_set_ptr (abfd, psect, dummy); - break; - - /* Augment relocation base: increment image location counter by offset - arg: lw offset value. */ - case ETIR_S_C_CTL_AUGRB: - dummy = bfd_getl32 (ptr); - image_inc_ptr (abfd, dummy); - break; - - /* Define location: pop index, save location counter under index - arg: none. */ - case ETIR_S_C_CTL_DFLOC: - dummy = _bfd_vms_pop (abfd, NULL); - dst_define_location (abfd, dummy); - break; - - /* Set location: pop index, restore location counter from index - arg: none. */ - case ETIR_S_C_CTL_STLOC: - dummy = _bfd_vms_pop (abfd, NULL); - dst_restore_location (abfd, dummy); - break; - - /* Stack defined location: pop index, push location counter from index - arg: none. */ - case ETIR_S_C_CTL_STKDL: - dummy = _bfd_vms_pop (abfd, NULL); - _bfd_vms_push (abfd, dst_retrieve_location (abfd, dummy), -1); - break; - - default: - (*_bfd_error_handler) (_("reserved CTL cmd %d"), cmd); - return FALSE; - } - - return TRUE; -} - -/* Store conditional commands - - See table B-12 and B-13 of the openVMS linker manual. */ - -static bfd_boolean -etir_stc (bfd *abfd, int cmd, unsigned char *ptr ATTRIBUTE_UNUSED, - int *quarter_relocs) -{ -#if VMS_DEBUG - _bfd_vms_debug (5, "etir_stc %d/%x\n", cmd, cmd); - _bfd_hexdump (8, ptr, 16, (long) ptr); -#endif - - switch (cmd) - { - /* 200 Store-conditional Linkage Pair - arg: none. */ - case ETIR_S_C_STC_LP: - - /* 202 Store-conditional Address at global address - arg: lw linkage index - cs global name. */ - - case ETIR_S_C_STC_GBL: - - /* 203 Store-conditional Code Address at global address - arg: lw linkage index - cs procedure name. */ - case ETIR_S_C_STC_GCA: - - /* 204 Store-conditional Address at psect + offset - arg: lw linkage index - lw psect index - qw offset. */ - case ETIR_S_C_STC_PS: - (*_bfd_error_handler) (_("%s: not supported"), cmd_name (cmd)); - *quarter_relocs = 0; - return FALSE; - - /* 201 Store-conditional Linkage Pair with Procedure Signature - arg: lw linkage index - cs procedure name - by signature length - da signature. */ - - case ETIR_S_C_STC_LP_PSB: - image_inc_ptr (abfd, (uquad) 16); /* skip entry,procval */ - *quarter_relocs = 4; - break; - - /* 205 Store-conditional NOP at address of global - arg: none. */ - case ETIR_S_C_STC_NOP_GBL: - /* ALPHA_R_NOP */ - - /* 207 Store-conditional BSR at global address - arg: none. */ - - case ETIR_S_C_STC_BSR_GBL: - /* ALPHA_R_BSR */ - - /* 209 Store-conditional LDA at global address - arg: none. */ - - case ETIR_S_C_STC_LDA_GBL: - /* ALPHA_R_LDA */ - - /* 211 Store-conditional BSR or Hint at global address - arg: none. */ - - case ETIR_S_C_STC_BOH_GBL: - *quarter_relocs = 4; - break; - - /* 213 Store-conditional NOP,BSR or HINT at global address - arg: none. */ - - case ETIR_S_C_STC_NBH_GBL: - - /* 206 Store-conditional NOP at pect + offset - arg: none. */ - - case ETIR_S_C_STC_NOP_PS: - - /* 208 Store-conditional BSR at pect + offset - arg: none. */ - - case ETIR_S_C_STC_BSR_PS: - - /* 210 Store-conditional LDA at psect + offset - arg: none. */ - - case ETIR_S_C_STC_LDA_PS: - - /* 212 Store-conditional BSR or Hint at pect + offset - arg: none. */ - - case ETIR_S_C_STC_BOH_PS: - - /* 214 Store-conditional NOP, BSR or HINT at psect + offset - arg: none. */ - case ETIR_S_C_STC_NBH_PS: - (*_bfd_error_handler) ("%s: not supported", cmd_name (cmd)); - *quarter_relocs = 0; - return FALSE; - - default: - (*_bfd_error_handler) (_("reserved STC cmd %d"), cmd); - *quarter_relocs = 0; - return FALSE; - } - - return TRUE; -} - -static asection * -new_section (bfd * abfd ATTRIBUTE_UNUSED, int idx) -{ - asection *section; - char sname[16]; - char *name; - -#if VMS_DEBUG - _bfd_vms_debug (5, "new_section %d\n", idx); -#endif - sprintf (sname, SECTION_NAME_TEMPLATE, idx); - - name = bfd_malloc ((bfd_size_type) strlen (sname) + 1); - if (name == 0) - return NULL; - strcpy (name, sname); - - section = bfd_malloc ((bfd_size_type) sizeof (asection)); - if (section == 0) - { -#if VMS_DEBUG - _bfd_vms_debug (6, "new_section (%s) failed", name); -#endif - return NULL; - } - - section->size = 0; - section->vma = 0; - section->contents = 0; - section->name = name; - section->index = idx; - - return section; -} - -static int -alloc_section (bfd * abfd, unsigned int idx) -{ - bfd_size_type amt; - -#if VMS_DEBUG - _bfd_vms_debug (4, "alloc_section %d\n", idx); -#endif - - amt = idx + 1; - amt *= sizeof (asection *); - PRIV (sections) = bfd_realloc_or_free (PRIV (sections), amt); - if (PRIV (sections) == NULL) - return -1; - - while (PRIV (section_count) <= idx) - { - PRIV (sections)[PRIV (section_count)] - = new_section (abfd, (int) PRIV (section_count)); - if (PRIV (sections)[PRIV (section_count)] == 0) - return -1; - PRIV (section_count)++; - } - - 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. */ - -static unsigned char * -tir_sta (bfd * abfd, unsigned char *ptr) -{ - int cmd = *ptr++; - -#if VMS_DEBUG - _bfd_vms_debug (5, "tir_sta %d\n", cmd); -#endif - - switch (cmd) - { - /* stack */ - case TIR_S_C_STA_GBL: - /* stack global - arg: cs symbol name - - stack 32 bit value of symbol (high bits set to 0). */ - { - char *name; - vms_symbol_entry *entry; - - name = _bfd_vms_save_counted_string (ptr); - - entry = _bfd_vms_enter_symbol (abfd, name); - if (entry == NULL) - return NULL; - - _bfd_vms_push (abfd, (uquad) (entry->symbol->value), -1); - ptr += *ptr + 1; - } - break; - - case TIR_S_C_STA_SB: - /* 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. */ - _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. */ - _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. */ - { - unsigned long dummy; - int psect; - - if (cmd == TIR_S_C_STA_PB) - psect = *ptr++; - else - { - psect = bfd_getl16 (ptr); - ptr += 2; - } - - if ((unsigned int) psect >= PRIV (section_count)) - alloc_section (abfd, psect); - - dummy = (long) *ptr++; - dummy += (PRIV (sections)[psect])->vma; - _bfd_vms_push (abfd, (uquad) dummy, psect); - } - break; - - 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. */ - { - unsigned long dummy; - int psect; - - if (cmd == TIR_S_C_STA_PW) - psect = *ptr++; - else - { - psect = bfd_getl16 (ptr); - ptr += 2; - } - - if ((unsigned int) psect >= PRIV (section_count)) - alloc_section (abfd, psect); - - dummy = bfd_getl16 (ptr); ptr+=2; - dummy += (PRIV (sections)[psect])->vma; - _bfd_vms_push (abfd, (uquad) dummy, psect); - } - break; - - 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. */ - { - unsigned long dummy; - int psect; - - if (cmd == TIR_S_C_STA_PL) - psect = *ptr++; - else - { - psect = bfd_getl16 (ptr); - ptr += 2; - } - - if ((unsigned int) psect >= PRIV (section_count)) - alloc_section (abfd, psect); - - dummy = bfd_getl32 (ptr); ptr += 4; - dummy += (PRIV (sections)[psect])->vma; - _bfd_vms_push (abfd, (uquad) dummy, psect); - } - break; - - case TIR_S_C_STA_UB: - /* 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. */ - _bfd_vms_push (abfd, (uquad) bfd_getl16 (ptr), -1); - ptr += 2; - break; - - case TIR_S_C_STA_BFI: - /* stack byte from image - arg: none. */ - /* FALLTHRU */ - case TIR_S_C_STA_WFI: - /* stack byte from image - arg: none. */ - /* FALLTHRU */ - case TIR_S_C_STA_LFI: - /* 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. */ - { - char *name; - vms_symbol_entry *entry; - - name = _bfd_vms_save_counted_string (ptr); - entry = _bfd_vms_enter_symbol (abfd, name); - if (entry == NULL) - return NULL; - - (*_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. */ - (*_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. */ - { - int envidx; - char *name; - vms_symbol_entry *entry; - - envidx = bfd_getl16 (ptr); - ptr += 2; - name = _bfd_vms_save_counted_string (ptr); - entry = _bfd_vms_enter_symbol (abfd, name); - if (entry == NULL) - return NULL; - (*_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. */ - ptr++; - _bfd_vms_push (abfd, (uquad) 0, -1); - (*_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. */ - { - int envidx; - char *name; - vms_symbol_entry *entry; - - envidx = bfd_getl16 (ptr); - ptr += 2; - name = _bfd_vms_save_counted_string (ptr); - entry = _bfd_vms_enter_symbol (abfd, name); - if (entry == NULL) - return NULL; - (*_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]); - return NULL; - break; - } - - return ptr; -} - -static const char * -tir_cmd_name (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) -{ - unsigned long dummy; - int size; - int psect; - -#if VMS_DEBUG - _bfd_vms_debug (5, "tir_sto %d\n", *ptr); -#endif - - switch (*ptr++) - { - case TIR_S_C_STO_SB: - /* 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: 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: 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: 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: 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: 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: 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: 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: 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. */ - 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. */ - 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. */ - 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. */ - 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. */ - size = (unsigned long) _bfd_vms_pop (abfd, NULL); - dummy = (unsigned long) _bfd_vms_pop (abfd, NULL); - while (size-- > 0) - image_write_w (abfd, dummy & 0xffff); - break; - - case TIR_S_C_STO_RSB: - case TIR_S_C_STO_RSW: - case TIR_S_C_STO_RL: - case TIR_S_C_STO_VPS: - case TIR_S_C_STO_USB: - case TIR_S_C_STO_USW: - case TIR_S_C_STO_RUB: - case TIR_S_C_STO_RUW: - case TIR_S_C_STO_PIRR: - (*_bfd_error_handler) (_("%s: not implemented"), tir_cmd_name (ptr[-1])); - break; - - default: - (*_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. */ - -static unsigned char * -tir_opr (bfd * abfd, unsigned char *ptr) -{ - long op1, op2; - -#if VMS_DEBUG - _bfd_vms_debug (5, "tir_opr %d\n", *ptr); -#endif - - /* Operation. */ - switch (*ptr++) - { - case TIR_S_C_OPR_NOP: /* No-op. */ - break; - - 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. */ - 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. */ - 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. */ - op1 = (long) _bfd_vms_pop (abfd, NULL); - op2 = (long) _bfd_vms_pop (abfd, NULL); - if (op2 == 0) - _bfd_vms_push (abfd, (uquad) 0, -1); - else - _bfd_vms_push (abfd, (uquad) (op2 / op1), -1); - break; - - 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: /* 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; - - 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. */ - op1 = (long) _bfd_vms_pop (abfd, NULL); - _bfd_vms_push (abfd, (uquad) (-op1), -1); - break; - - 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. */ - (void) _bfd_vms_pop (abfd, NULL); - (*_bfd_error_handler) (_("%s: not fully implemented"), - tir_cmd_name (ptr[-1])); - break; - - 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. */ - op2 >>= op1; - else /* Shift left. */ - op2 <<= op1; - _bfd_vms_push (abfd, (uquad) op2, -1); - (*_bfd_error_handler) (_("%s: not fully implemented"), - tir_cmd_name (ptr[-1])); - break; - - 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. */ - op2 >>= op1; - else /* Shift left. */ - op2 <<= op1; - _bfd_vms_push (abfd, (uquad) op2, -1); - (*_bfd_error_handler) (_("%s: not fully implemented"), - tir_cmd_name (ptr[-1])); - break; - - 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. */ - op2 >>= op1; - else /* Shift left. */ - op2 <<= op1; - _bfd_vms_push (abfd, (uquad) op2, -1); - (*_bfd_error_handler) (_("%s: not fully implemented"), - tir_cmd_name (ptr[-1])); - break; - - case TIR_S_C_OPR_SEL: /* Select. */ - if ((long) _bfd_vms_pop (abfd, NULL) & 0x01L) - (void) _bfd_vms_pop (abfd, NULL); - else - { - op1 = (long) _bfd_vms_pop (abfd, NULL); - (void) _bfd_vms_pop (abfd, NULL); - _bfd_vms_push (abfd, (uquad) op1, -1); - } - break; - - 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]); - 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) -{ - unsigned long dummy; - int psect; - -#if VMS_DEBUG - _bfd_vms_debug (5, "tir_ctl %d\n", *ptr); -#endif - - switch (*ptr++) - { - case TIR_S_C_CTL_SETRB: - /* Set relocation base: pop stack, set image location counter - arg: none. */ - dummy = _bfd_vms_pop (abfd, &psect); - if ((unsigned int) psect >= PRIV (section_count)) - alloc_section (abfd, psect); - image_set_ptr (abfd, psect, (uquad) dummy); - break; - - case TIR_S_C_CTL_AUGRB: - /* 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: none. */ - dummy = _bfd_vms_pop (abfd, NULL); - (*_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: none. */ - dummy = _bfd_vms_pop (abfd, &psect); - (*_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: none. */ - dummy = _bfd_vms_pop (abfd, &psect); - (*_bfd_error_handler) (_("%s: not fully implemented"), - tir_cmd_name (ptr[-1])); - break; - - default: - (*_bfd_error_handler) (_("reserved CTL cmd %d"), ptr[-1]); - break; - } - return ptr; -} - -/* Handle command from TIR section. */ - -static unsigned char * -tir_cmd (bfd * abfd, unsigned char *ptr) -{ - static const struct - { - int mincod; - int maxcod; - unsigned char * (*explain) (bfd *, unsigned char *); - } - tir_table[] = - { - { 0, TIR_S_C_MAXSTACOD, tir_sta }, - { TIR_S_C_MINSTOCOD, TIR_S_C_MAXSTOCOD, tir_sto }, - { TIR_S_C_MINOPRCOD, TIR_S_C_MAXOPRCOD, tir_opr }, - { TIR_S_C_MINCTLCOD, TIR_S_C_MAXCTLCOD, tir_ctl }, - { -1, -1, NULL } - }; - int i = 0; - -#if VMS_DEBUG - _bfd_vms_debug (4, "tir_cmd %d/%x\n", *ptr, *ptr); - _bfd_hexdump (8, ptr, 16, (long) ptr); -#endif - - if (*ptr & 0x80) - { - /* Store immediate. */ - i = 128 - (*ptr++ & 0x7f); - image_dump (abfd, ptr, i, 0); - ptr += i; - } - else - { - while (tir_table[i].mincod >= 0) - { - if ( (tir_table[i].mincod <= *ptr) - && (*ptr <= tir_table[i].maxcod)) - { - ptr = tir_table[i].explain (abfd, ptr); - break; - } - i++; - } - if (tir_table[i].mincod < 0) - { - (*_bfd_error_handler) (_("obj code %d not found"), *ptr); - ptr = 0; - } - } - - return ptr; -} - -/* Handle command from ETIR section. */ - -static int -etir_cmd (bfd *abfd, int cmd, unsigned char *ptr, int *quarter_relocs) -{ - static const struct - { - int mincod; - int maxcod; - bfd_boolean (*explain) (bfd *, int, unsigned char *, int *); - } - etir_table[] = - { - { ETIR_S_C_MINSTACOD, ETIR_S_C_MAXSTACOD, etir_sta }, - { ETIR_S_C_MINSTOCOD, ETIR_S_C_MAXSTOCOD, etir_sto }, - { ETIR_S_C_MINOPRCOD, ETIR_S_C_MAXOPRCOD, etir_opr }, - { ETIR_S_C_MINCTLCOD, ETIR_S_C_MAXCTLCOD, etir_ctl }, - { ETIR_S_C_MINSTCCOD, ETIR_S_C_MAXSTCCOD, etir_stc }, - { -1, -1, NULL } - }; - - int i = 0; - -#if VMS_DEBUG - _bfd_vms_debug (4, "etir_cmd: %s(%d)\n", cmd_name (cmd), cmd); - _bfd_hexdump (8, ptr, 16, (long) ptr); -#endif - - while (etir_table[i].mincod >= 0) - { - if ( (etir_table[i].mincod <= cmd) - && (cmd <= etir_table[i].maxcod)) - { - if (!etir_table[i].explain (abfd, cmd, ptr, quarter_relocs)) - return -1; - break; - } - i++; - } - -#if VMS_DEBUG - _bfd_vms_debug (4, "etir_cmd: result = 0\n"); -#endif - return 0; -} - -/* Text Information and Relocation Records (OBJ$C_TIR) - handle tir record. */ - -static int -analyze_tir (bfd * abfd, unsigned char *ptr, unsigned int length) -{ - unsigned char *maxptr; - -#if VMS_DEBUG - _bfd_vms_debug (3, "analyze_tir: %d bytes\n", length); -#endif - - maxptr = ptr + length; - - while (ptr < maxptr) - { - ptr = tir_cmd (abfd, ptr); - if (ptr == 0) - return -1; - } - - return 0; -} - -/* Text Information and Relocation Records (EOBJ$C_ETIR) - handle etir record. */ - -static int -analyze_etir (bfd * abfd, unsigned char *ptr, unsigned int length) -{ - unsigned char *maxptr = ptr + length; - /* Relocations are made of 1, 2 or 4 ETIR commands. - We therefore count them using quarters. */ - int quarter_relocs = 0; - int result = 0; - -#if VMS_DEBUG - _bfd_vms_debug (3, "analyze_etir: %d bytes\n", length); -#endif - - while (ptr < maxptr) - { - int cmd = bfd_getl16 (ptr); - int cmd_length = bfd_getl16 (ptr + 2); - result = etir_cmd (abfd, cmd, ptr + 4, &quarter_relocs); - if (result != 0) - break; - - /* If we have a relocation, we record its length to size - future buffers and bump the reloc count of the section. */ - if (quarter_relocs) - { - vms_section_data (PRIV (image_section))->reloc_size += cmd_length; - abfd->flags |= HAS_RELOC; - - if (quarter_relocs == 4) - { - PRIV (image_section)->reloc_count++; - -#if VMS_DEBUG - _bfd_vms_debug (4, "-> reloc %d at 0x%x\n", - PRIV (image_section)->reloc_count-1, - ptr - (maxptr - length)); -#endif - - quarter_relocs = 0; - } - else if (quarter_relocs > 4) - { - -#if VMS_DEBUG - _bfd_vms_debug (4, "Reloc count error (%d) in section %s\n", - PRIV (image_section)->reloc_count, - PRIV (image_section)->name); -#endif - - quarter_relocs = 0; - } - } - - /* If we have a Store Immediate, we reserve space for the - count argument. */ - else if (cmd == ETIR_S_C_STO_IMM) - vms_section_data (PRIV (image_section))->reloc_size - += ETIR_S_C_HEADER_SIZE + 4; - - ptr += cmd_length; - } - -#if VMS_DEBUG - _bfd_vms_debug (3, "analyze_etir: result = %d\n", result); -#endif - - return result; -} - -/* Process ETIR record - Return 0 on success, -1 on error. */ - -int -_bfd_vms_slurp_tir (bfd * abfd, int objtype) -{ - int result; - -#if VMS_DEBUG - _bfd_vms_debug (2, "TIR/ETIR\n"); -#endif - - switch (objtype) - { - case EOBJ_S_C_ETIR: - PRIV (vms_rec) += ETIR_S_C_HEADER_SIZE; - PRIV (rec_size) -= ETIR_S_C_HEADER_SIZE; - result = analyze_etir (abfd, PRIV (vms_rec), (unsigned) PRIV (rec_size)); - break; - case OBJ_S_C_TIR: - PRIV (vms_rec) += 1; /* Skip type. */ - PRIV (rec_size) -= 1; - result = analyze_tir (abfd, PRIV (vms_rec), (unsigned) PRIV (rec_size)); - break; - default: - result = -1; - break; - } - - return result; -} - - /* Slurp relocs from ETIR sections and (temporarily) save them - in the per-section reloc buffer. */ - -int -_bfd_vms_slurp_relocs (bfd *abfd) -{ - struct vms_section_data_struct *vsd; - unsigned char *begin = PRIV (vms_rec) + 4; - unsigned char *end = PRIV (vms_rec) + PRIV (rec_size); - unsigned char *ptr; - int cmd, length, slurped_length; - -#if VMS_DEBUG - _bfd_vms_debug (3, "_bfd_vms_slurp_relocs: %d bytes\n", PRIV (rec_size)); -#endif - - for (ptr = begin; ptr < end; ptr += length) - { - cmd = bfd_getl16 (ptr); - length = bfd_getl16 (ptr + 2); - slurped_length = length; - - switch (cmd) - { - case ETIR_S_C_STA_PQ: /* ALPHA_R_REF{LONG|QUAD}, others part 1 */ - /* This one is special as it is both part of the section header - and of the ALPHA_R_REFLONG and ALPHA_R_REFQUAD relocations. */ - if (bfd_getl16 (ptr + length) == ETIR_S_C_CTL_SETRB) - { - int psect = bfd_getl32 (ptr + ETIR_S_C_HEADER_SIZE); - PRIV (image_section) = PRIV (sections)[psect]; - continue; - } - - case ETIR_S_C_STA_GBL: /* ALPHA_R_REFLONG und_section, step 1 */ - /* ALPHA_R_REFQUAD und_section, step 1 */ - break; - - case ETIR_S_C_STA_LW: /* ALPHA_R_REFLONG und_section, step 2 */ - /* ALPHA_R_REFLONG abs_section, step 1 */ - /* This one is special as it is both part of the section header - and of the ALPHA_R_REFLONG relocation. */ - if (bfd_getl16 (ptr + length) == ETIR_S_C_CTL_DFLOC) - { - PRIV (image_section) = PRIV (dst_section); - continue; - } - - case ETIR_S_C_STA_QW: /* ALPHA_R_REFQUAD und_section, step 2 */ - /* ALPHA_R_REFQUAD abs_section, step 1 */ - - case ETIR_S_C_STO_LW: /* ALPHA_R_REFLONG und_section, step 4 */ - /* ALPHA_R_REFLONG abs_section, step 2 */ - /* ALPHA_R_REFLONG others, step 2 */ - - case ETIR_S_C_STO_QW: /* ALPHA_R_REFQUAD und_section, step 4 */ - /* ALPHA_R_REFQUAD abs_section, step 2 */ - - case ETIR_S_C_STO_OFF: /* ALPHA_R_REFQUAD others, step 2 */ - - case ETIR_S_C_OPR_ADD: /* ALPHA_R_REFLONG und_section, step 3 */ - /* ALPHA_R_REFQUAD und_section, step 3 */ - - case ETIR_S_C_STO_CA: /* ALPHA_R_CODEADDR */ - case ETIR_S_C_STO_GBL: /* ALPHA_R_REFQUAD und_section */ - case ETIR_S_C_STO_GBL_LW: /* ALPHA_R_REFLONG und_section */ - case ETIR_S_C_STC_LP_PSB: /* ALPHA_R_LINKAGE */ - case ETIR_S_C_STC_NOP_GBL: /* ALPHA_R_NOP */ - case ETIR_S_C_STC_BSR_GBL: /* ALPHA_R_BSR */ - case ETIR_S_C_STC_LDA_GBL: /* ALPHA_R_LDA */ - case ETIR_S_C_STC_BOH_GBL: /* ALPHA_R_BOH */ - break; - - case ETIR_S_C_STO_IMM: - if (PRIV (image_section)->reloc_count == 0) - continue; - /* This is not a relocation, but we nevertheless slurp the - count argument. We'll use it to compute the addresses - of the relocations. */ - slurped_length = ETIR_S_C_HEADER_SIZE + 4; - break; - - default: - continue; - } - - vsd = vms_section_data (PRIV (image_section)); - memcpy (vsd->reloc_stream + vsd->reloc_offset, ptr, slurped_length); - vsd->reloc_offset += slurped_length; - if (vsd->reloc_offset > vsd->reloc_size) - { - (*_bfd_error_handler) (_("Reloc size error in section %s"), - PRIV (image_section)->name); - return -1; - } - } - -#if VMS_DEBUG - _bfd_vms_debug (3, "_bfd_vms_slurp_relocs: result = 0\n"); -#endif - - return 0; -} - -/* Decode relocs from the reloc buffer of the specified section - and internalize them in the specified buffer. */ - -int -_bfd_vms_decode_relocs (bfd *abfd, arelent *relocs, asection *section, - asymbol **symbols ATTRIBUTE_UNUSED) -{ - int saved_cmd, saved_sym_offset, saved_sec_offset, saved_addend_offset; - int cmd, sym_offset, sec_offset, address_offset, addend_offset; - struct vms_section_data_struct *vsd = vms_section_data (section); - bfd_reloc_code_real_type reloc_code; - vms_symbol_entry *entry; - bfd_vma vaddr = 0; - unsigned char *begin = vsd->reloc_stream; - unsigned char *end = vsd->reloc_stream + vsd->reloc_size; - unsigned char *ptr, *arg_ptr; - const char *name; - int length; - -#if VMS_DEBUG - _bfd_vms_debug (3, "_bfd_vms_decode_relocs: %d bytes\n", vsd->reloc_size); -#endif - - #define PUSH_CMD() \ - { \ - saved_cmd = cmd; \ - saved_sym_offset = sym_offset - length; \ - saved_sec_offset = sec_offset - length; \ - saved_addend_offset = addend_offset - length; \ - continue; \ - } - - #define POP_CMD() \ - { \ - cmd = saved_cmd; \ - saved_cmd = ETIR_S_C_MAXSTCCOD + 1; \ - sym_offset = saved_sym_offset; \ - sec_offset = saved_sec_offset; \ - addend_offset= saved_addend_offset; \ - } - - #define CMD_PUSHED (saved_cmd != ETIR_S_C_MAXSTCCOD + 1) - - #define NO_OFFSET -128 - - saved_cmd = ETIR_S_C_MAXSTCCOD + 1; - saved_sym_offset = NO_OFFSET; - saved_sec_offset = NO_OFFSET; - saved_addend_offset = NO_OFFSET; - - for (ptr = begin; ptr < end; ptr += length) - { - cmd = bfd_getl16 (ptr); - length = bfd_getl16 (ptr + 2); - - arg_ptr = ptr + ETIR_S_C_HEADER_SIZE; - sym_offset = NO_OFFSET; - sec_offset = NO_OFFSET; - address_offset = NO_OFFSET; - addend_offset = NO_OFFSET; - - switch (cmd) - { - case ETIR_S_C_STA_GBL: /* ALPHA_R_REFLONG und_section, step 1 */ - /* ALPHA_R_REFQUAD und_section, step 1 */ - sym_offset = 0; - PUSH_CMD () - - case ETIR_S_C_STA_PQ: /* ALPHA_R_REF{LONG|QUAD}, others part 1 */ - sec_offset = 0; - addend_offset = 4; - PUSH_CMD () - - case ETIR_S_C_STA_LW: /* ALPHA_R_REFLONG abs_section, step 1 */ - /* ALPHA_R_REFLONG und_section, step 2 */ - if (CMD_PUSHED) - { - POP_CMD () - if (cmd != ETIR_S_C_STA_GBL) - { - (*_bfd_error_handler) (_("Unknown reloc %s + %s"), - cmd_name (cmd), - cmd_name (ETIR_S_C_STA_LW)); - return 0; - } - cmd = ETIR_S_C_STA_LW; - } - addend_offset = 0; - PUSH_CMD () - - case ETIR_S_C_STA_QW: /* ALPHA_R_REFQUAD abs_section, step 1 */ - /* ALPHA_R_REFQUAD und_section, step 2 */ - if (CMD_PUSHED) - { - POP_CMD () - if (cmd != ETIR_S_C_STA_GBL) - { - (*_bfd_error_handler) (_("Unknown reloc %s + %s"), - cmd_name (cmd), - cmd_name (ETIR_S_C_STA_QW)); - return 0; - } - cmd = ETIR_S_C_STA_QW; - } - addend_offset = 0; - PUSH_CMD () - - case ETIR_S_C_STO_LW: /* ALPHA_R_REFLONG und_section, step 4 */ - /* ALPHA_R_REFLONG abs_section, step 2 */ - /* ALPHA_R_REFLONG others, step 2 */ - POP_CMD () - if (cmd != ETIR_S_C_OPR_ADD - && cmd != ETIR_S_C_STA_LW - && cmd != ETIR_S_C_STA_PQ) - { - (*_bfd_error_handler) (_("Unknown reloc %s + %s"), - cmd_name (cmd), cmd_name (ETIR_S_C_STO_LW)); - return 0; - } - reloc_code = BFD_RELOC_32; - break; - - case ETIR_S_C_STO_QW: /* ALPHA_R_REFQUAD und_section, step 4 */ - /* ALPHA_R_REFQUAD abs_section, step 2 */ - POP_CMD () - if (cmd != ETIR_S_C_OPR_ADD && cmd != ETIR_S_C_STA_QW) - { - (*_bfd_error_handler) (_("Unknown reloc %s + %s"), - cmd_name (cmd), cmd_name (ETIR_S_C_STO_QW)); - return 0; - } - reloc_code = BFD_RELOC_64; - break; - - case ETIR_S_C_STO_OFF: /* ALPHA_R_REFQUAD others, step 2 */ - POP_CMD () - if (cmd != ETIR_S_C_STA_PQ) - { - (*_bfd_error_handler) (_("Unknown reloc %s + %s"), - cmd_name (cmd), cmd_name (ETIR_S_C_STO_OFF)); - return 0; - } - reloc_code = BFD_RELOC_64; - break; - - case ETIR_S_C_OPR_ADD: /* ALPHA_R_REFLONG und_section, step 3 */ - /* ALPHA_R_REFQUAD und_section, step 3 */ - POP_CMD () - if (cmd != ETIR_S_C_STA_LW && cmd != ETIR_S_C_STA_QW) - { - (*_bfd_error_handler) (_("Unknown reloc %s + %s"), - cmd_name (cmd), cmd_name (ETIR_S_C_OPR_ADD)); - return 0; - } - cmd = ETIR_S_C_OPR_ADD; - PUSH_CMD () - - case ETIR_S_C_STO_CA: /* ALPHA_R_CODEADDR */ - reloc_code = BFD_RELOC_ALPHA_CODEADDR; - sym_offset = 0; - break; - - case ETIR_S_C_STO_GBL: /* ALPHA_R_REFQUAD und_section */ - reloc_code = BFD_RELOC_64; - sym_offset = 0; - break; - - case ETIR_S_C_STO_GBL_LW: /* ALPHA_R_REFLONG und_section */ - reloc_code = BFD_RELOC_32; - sym_offset = 0; - break; - - case ETIR_S_C_STC_LP_PSB: /* ALPHA_R_LINKAGE */ - reloc_code = BFD_RELOC_ALPHA_LINKAGE; - sym_offset = 4; - break; - - case ETIR_S_C_STC_NOP_GBL: /* ALPHA_R_NOP */ - reloc_code = BFD_RELOC_ALPHA_NOP; - goto call_reloc; - - case ETIR_S_C_STC_BSR_GBL: /* ALPHA_R_BSR */ - reloc_code = BFD_RELOC_ALPHA_BSR; - goto call_reloc; - - case ETIR_S_C_STC_LDA_GBL: /* ALPHA_R_LDA */ - reloc_code = BFD_RELOC_ALPHA_LDA; - goto call_reloc; - - case ETIR_S_C_STC_BOH_GBL: /* ALPHA_R_BOH */ - reloc_code = BFD_RELOC_ALPHA_BOH; - goto call_reloc; - - call_reloc: - sym_offset = 32; - address_offset = 8; - addend_offset = 24; - break; - - case ETIR_S_C_STO_IMM: - vaddr += bfd_getl32 (arg_ptr); - length = ETIR_S_C_HEADER_SIZE + 4; - continue; - - default: - continue; - } - - relocs->howto = bfd_reloc_type_lookup (abfd, reloc_code); - - if (sym_offset > NO_OFFSET) - { - name = _bfd_vms_save_counted_string (arg_ptr + sym_offset); - entry = (vms_symbol_entry *) - bfd_hash_lookup (PRIV (vms_symbol_table), name, FALSE, FALSE); - if (entry == NULL) - { - (*_bfd_error_handler) (_("Unknown symbol %s in command %s"), - name, cmd_name (cmd)); - relocs->sym_ptr_ptr = NULL; - } - else - /* ??? This is a hack. We should point in 'symbols'. */ - relocs->sym_ptr_ptr = &entry->symbol; - } - else if (sec_offset > NO_OFFSET) - relocs->sym_ptr_ptr - = PRIV (sections)[bfd_getl32 (arg_ptr + sec_offset)]->symbol_ptr_ptr; - else - relocs->sym_ptr_ptr = NULL; - - if (address_offset > NO_OFFSET) - relocs->address = bfd_getl64 (arg_ptr + address_offset); - else - relocs->address = vaddr; - - if (addend_offset > NO_OFFSET) - relocs->addend = bfd_getl64 (arg_ptr + addend_offset); - else - relocs->addend = 0; - - vaddr += bfd_get_reloc_size (relocs->howto); - relocs++; - } - - #undef PUSH_CMD - #undef POP_CMD - #undef NO_OFFSET - -#if VMS_DEBUG - _bfd_vms_debug (3, "_bfd_vms_decode_relocs: result = 0\n"); -#endif - - return 0; -} - -/* Process LNK record - Return 0 on success, -1 on error - - Not implemented yet. */ - -int -_bfd_vms_slurp_lnk (bfd * abfd ATTRIBUTE_UNUSED, - int objtype ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - _bfd_vms_debug (2, "LNK\n"); -#endif - - return 0; -} - -/* WRITE ETIR SECTION - - This is still under construction and therefore not documented. */ - -static void start_etir_record (bfd *abfd, int index, uquad offset, - bfd_boolean justoffset); -static void start_first_etbt_record (bfd *abfd); -static void start_another_etbt_record (bfd *abfd); -static void sto_imm (bfd *abfd, bfd_size_type, unsigned char *, bfd_vma vaddr, - int index, const char *name); -static void end_etir_record (bfd *abfd); -static void etir_output_check (bfd *abfd, asection *section, bfd_vma vaddr, - int checklen); - -/* Start ETIR record for section #index at virtual addr offset. */ - -static void -start_etir_record (bfd * abfd, int index, uquad offset, bfd_boolean justoffset) -{ - if (!justoffset) - { - /* One ETIR per section. */ - _bfd_vms_output_begin (abfd, EOBJ_S_C_ETIR, -1); - _bfd_vms_output_push (abfd); - } - - /* Push start offset. */ - _bfd_vms_output_begin (abfd, ETIR_S_C_STA_PQ, -1); - _bfd_vms_output_long (abfd, (unsigned long) index); - _bfd_vms_output_quad (abfd, (uquad) offset); - _bfd_vms_output_flush (abfd); - - /* Start = pop (). */ - _bfd_vms_output_begin (abfd, ETIR_S_C_CTL_SETRB, -1); - _bfd_vms_output_flush (abfd); -} - -static void -end_etir_record (bfd * abfd) -{ - _bfd_vms_output_pop (abfd); - _bfd_vms_output_end (abfd); -} - -/* Output a STO_IMM command for SSIZE bytes of data from CPR at virtual - address VADDR in section specified by INDEX and NAME. */ - -static void -sto_imm (bfd *abfd, bfd_size_type ssize, unsigned char *cptr, bfd_vma vaddr, - int index, const char *name) -{ - bfd_size_type size; - -#if VMS_DEBUG - _bfd_vms_debug (8, "sto_imm %d bytes\n", ssize); - _bfd_hexdump (9, cptr, (int) ssize, (int) vaddr); -#endif - - while (ssize > 0) - { - /* Try all the rest. */ - size = ssize; - - if (_bfd_vms_output_check (abfd, size) < 0) - { - /* Doesn't fit, split ! */ - end_etir_record (abfd); - - if (name [0] && name[1] == 'v' && !strcmp (name, ".vmsdebug")) - start_another_etbt_record (abfd); - else - start_etir_record (abfd, index, vaddr, FALSE); - - size = _bfd_vms_output_check (abfd, 0); /* get max size */ - if (size > ssize) /* more than what's left ? */ - size = ssize; - } - - _bfd_vms_output_begin (abfd, ETIR_S_C_STO_IMM, -1); - _bfd_vms_output_long (abfd, (unsigned long) (size)); - _bfd_vms_output_dump (abfd, cptr, size); - _bfd_vms_output_flush (abfd); - -#if VMS_DEBUG - _bfd_vms_debug (10, "dumped %d bytes\n", size); - _bfd_hexdump (10, cptr, (int) size, (int) vaddr); -#endif - - vaddr += size; - cptr += size; - ssize -= size; - } -} - -/* Start ETBT record for section #index at virtual addr offset. */ - -static void -start_first_etbt_record (bfd *abfd) -{ - _bfd_vms_output_begin (abfd, EOBJ_S_C_ETBT, -1); - _bfd_vms_output_push (abfd); - - _bfd_vms_output_begin (abfd, ETIR_S_C_STA_LW, -1); /* push start offset */ - _bfd_vms_output_long (abfd, (unsigned long) 0); - _bfd_vms_output_flush (abfd); - - _bfd_vms_output_begin (abfd, ETIR_S_C_CTL_DFLOC, -1); /* start = pop() */ - _bfd_vms_output_flush (abfd); -} - -static void -start_another_etbt_record (bfd *abfd) -{ - _bfd_vms_output_begin (abfd, EOBJ_S_C_ETBT, -1); - _bfd_vms_output_push (abfd); -} - -static void -etir_output_check (bfd *abfd, asection *section, bfd_vma vaddr, int checklen) -{ - if (_bfd_vms_output_check (abfd, checklen) < 0) - { - end_etir_record (abfd); - if (section->name[0] && section->name[1] == 'v' - && !strcmp (section->name, ".vmsdebug")) - start_another_etbt_record (abfd); - else - start_etir_record (abfd, section->index, vaddr, FALSE); - } -} - -/* Return whether RELOC must be deferred till the end. */ - -static int -defer_reloc_p (arelent *reloc) -{ - switch (reloc->howto->type) - { - case ALPHA_R_NOP: - case ALPHA_R_LDA: - case ALPHA_R_BSR: - case ALPHA_R_BOH: - return 1; - - default: - return 0; - } -} - -/* Write section contents for bfd abfd. */ - -int -_bfd_vms_write_tir (bfd * abfd, int objtype ATTRIBUTE_UNUSED) -{ - asection *section; - -#if VMS_DEBUG - _bfd_vms_debug (2, "vms_write_tir (%p, %d)\n", abfd, objtype); -#endif - - _bfd_vms_output_alignment (abfd, 4); - - PRIV (vms_linkage_index) = 1; - - for (section = abfd->sections; section; section = section->next) - { -#if VMS_DEBUG - _bfd_vms_debug (4, "writing %d. section '%s' (%d bytes)\n", - section->index, section->name, - (int) (section->size)); -#endif - - if (!(section->flags & SEC_HAS_CONTENTS) - || bfd_is_com_section (section)) - continue; - - if (!section->contents) - { - bfd_set_error (bfd_error_no_contents); - return -1; - } - - if (section->name[0] - && section->name[1] == 'v' - && !strcmp (section->name, ".vmsdebug")) - start_first_etbt_record (abfd); - else - start_etir_record (abfd, section->index, 0, FALSE); - - if (section->flags & SEC_RELOC) - { - bfd_vma curr_addr = 0; - unsigned char *curr_data = section->contents; - bfd_size_type size; - int pass2_needed = 0; - int pass2_in_progress = 0; - unsigned int irel; - - if (section->reloc_count <= 0) - (*_bfd_error_handler) - (_("SEC_RELOC with no relocs in section %s"), section->name); - -#if VMS_DEBUG - else - { - int i = section->reloc_count; - arelent **rptr = section->orelocation; - _bfd_vms_debug (4, "%d relocations:\n", i); - while (i-- > 0) - { - _bfd_vms_debug (4, "sym %s in sec %s, value %08lx, " - "addr %08lx, off %08lx, len %d: %s\n", - (*(*rptr)->sym_ptr_ptr)->name, - (*(*rptr)->sym_ptr_ptr)->section->name, - (long) (*(*rptr)->sym_ptr_ptr)->value, - (*rptr)->address, (*rptr)->addend, - bfd_get_reloc_size ((*rptr)->howto), - ( *rptr)->howto->name); - rptr++; - } - } -#endif - - new_pass: - for (irel = 0; irel < section->reloc_count; irel++) - { - struct evax_private_udata_struct *udata; - arelent *rptr = section->orelocation [irel]; - bfd_vma addr = rptr->address; - asymbol *sym = *rptr->sym_ptr_ptr; - asection *sec = sym->section; - int defer = defer_reloc_p (rptr); - unsigned int slen; - char *hash; - - if (pass2_in_progress) - { - /* Non-deferred relocs have already been output. */ - if (!defer) - continue; - } - else - { - /* Deferred relocs must be output at the very end. */ - if (defer) - { - pass2_needed = 1; - continue; - } - - /* Regular relocs are intertwined with binary data. */ - if (curr_addr > addr) - (*_bfd_error_handler) (_("Size error in section %s"), - section->name); - size = addr - curr_addr; - sto_imm (abfd, size, curr_data, curr_addr, - section->index, section->name); - curr_data += size; - curr_addr += size; - } - - size = bfd_get_reloc_size (rptr->howto); - - switch (rptr->howto->type) - { - case ALPHA_R_IGNORE: - break; - - case ALPHA_R_REFLONG: - if (bfd_is_und_section (sym->section)) - { - bfd_vma addend = rptr->addend; - slen = strlen ((char *) sym->name); - hash = _bfd_vms_length_hash_symbol - (abfd, sym->name, EOBJ_S_C_SYMSIZ); - etir_output_check (abfd, section, curr_addr, slen); - if (addend) - { - _bfd_vms_output_begin (abfd, ETIR_S_C_STA_GBL, -1); - _bfd_vms_output_counted (abfd, hash); - _bfd_vms_output_flush (abfd); - _bfd_vms_output_begin (abfd, ETIR_S_C_STA_LW, -1); - _bfd_vms_output_long (abfd, (unsigned long) addend); - _bfd_vms_output_flush (abfd); - _bfd_vms_output_begin (abfd, ETIR_S_C_OPR_ADD, -1); - _bfd_vms_output_flush (abfd); - _bfd_vms_output_begin (abfd, ETIR_S_C_STO_LW, -1); - _bfd_vms_output_flush (abfd); - } - else - { - _bfd_vms_output_begin (abfd, ETIR_S_C_STO_GBL_LW, -1); - _bfd_vms_output_counted (abfd, hash); - _bfd_vms_output_flush (abfd); - } - } - else if (bfd_is_abs_section (sym->section)) - { - etir_output_check (abfd, section, curr_addr, 16); - _bfd_vms_output_begin (abfd, ETIR_S_C_STA_LW, -1); - _bfd_vms_output_long (abfd, (unsigned long) sym->value); - _bfd_vms_output_flush (abfd); - _bfd_vms_output_begin (abfd, ETIR_S_C_STO_LW, -1); - _bfd_vms_output_flush (abfd); - } - else - { - etir_output_check (abfd, section, curr_addr, 32); - _bfd_vms_output_begin (abfd, ETIR_S_C_STA_PQ, -1); - _bfd_vms_output_long (abfd, (unsigned long) sec->index); - _bfd_vms_output_quad (abfd, (uquad) rptr->addend - + (uquad) sym->value); - _bfd_vms_output_flush (abfd); - /* ??? Table B-8 of the OpenVMS Linker Utilily Manual - says that we should have a ETIR_S_C_STO_OFF here. - But the relocation would not be BFD_RELOC_32 then. - This case is very likely unreachable. */ - _bfd_vms_output_begin (abfd, ETIR_S_C_STO_LW, -1); - _bfd_vms_output_flush (abfd); - } - break; - - case ALPHA_R_REFQUAD: - if (bfd_is_und_section (sym->section)) - { - bfd_vma addend = rptr->addend; - slen = strlen ((char *) sym->name); - hash = _bfd_vms_length_hash_symbol - (abfd, sym->name, EOBJ_S_C_SYMSIZ); - etir_output_check (abfd, section, curr_addr, slen); - if (addend) - { - _bfd_vms_output_begin (abfd, ETIR_S_C_STA_GBL, -1); - _bfd_vms_output_counted (abfd, hash); - _bfd_vms_output_flush (abfd); - _bfd_vms_output_begin (abfd, ETIR_S_C_STA_QW, -1); - _bfd_vms_output_quad (abfd, (uquad) addend); - _bfd_vms_output_flush (abfd); - _bfd_vms_output_begin (abfd, ETIR_S_C_OPR_ADD, -1); - _bfd_vms_output_flush (abfd); - _bfd_vms_output_begin (abfd, ETIR_S_C_STO_QW, -1); - _bfd_vms_output_flush (abfd); - } - else - { - _bfd_vms_output_begin (abfd, ETIR_S_C_STO_GBL, -1); - _bfd_vms_output_counted (abfd, hash); - _bfd_vms_output_flush (abfd); - } - } - else if (bfd_is_abs_section (sym->section)) - { - etir_output_check (abfd, section, curr_addr, 16); - _bfd_vms_output_begin (abfd, ETIR_S_C_STA_QW, -1); - _bfd_vms_output_quad (abfd, (uquad) sym->value); - _bfd_vms_output_flush (abfd); - _bfd_vms_output_begin (abfd, ETIR_S_C_STO_QW, -1); - _bfd_vms_output_flush (abfd); - } - else - { - etir_output_check (abfd, section, curr_addr, 32); - _bfd_vms_output_begin (abfd, ETIR_S_C_STA_PQ, -1); - _bfd_vms_output_long (abfd, (unsigned long) sec->index); - _bfd_vms_output_quad (abfd, (uquad) rptr->addend - + (uquad) sym->value); - _bfd_vms_output_flush (abfd); - _bfd_vms_output_begin (abfd, ETIR_S_C_STO_OFF, -1); - _bfd_vms_output_flush (abfd); - } - break; - - case ALPHA_R_HINT: - sto_imm (abfd, size, curr_data, curr_addr, - section->index, section->name); - break; - - case ALPHA_R_LINKAGE: - etir_output_check (abfd, section, curr_addr, 64); - _bfd_vms_output_begin (abfd, ETIR_S_C_STC_LP_PSB, -1); - _bfd_vms_output_long - (abfd, (unsigned long) PRIV (vms_linkage_index)); - PRIV (vms_linkage_index) += 2; - hash = _bfd_vms_length_hash_symbol - (abfd, sym->name, EOBJ_S_C_SYMSIZ); - _bfd_vms_output_counted (abfd, hash); - _bfd_vms_output_byte (abfd, 0); - _bfd_vms_output_flush (abfd); - break; - - case ALPHA_R_CODEADDR: - slen = strlen ((char *) sym->name); - hash = _bfd_vms_length_hash_symbol - (abfd, sym->name, EOBJ_S_C_SYMSIZ); - etir_output_check (abfd, section, curr_addr, slen); - _bfd_vms_output_begin (abfd, ETIR_S_C_STO_CA, -1); - _bfd_vms_output_counted (abfd, hash); - _bfd_vms_output_flush (abfd); - break; - - case ALPHA_R_NOP: - udata - = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr; - etir_output_check (abfd, section, curr_addr, - 32 + 1 + strlen (udata->origname)); - _bfd_vms_output_begin (abfd, ETIR_S_C_STC_NOP_GBL, -1); - _bfd_vms_output_long (abfd, (unsigned long) udata->lkindex); - _bfd_vms_output_long - (abfd, (unsigned long) udata->enbsym->section->index); - _bfd_vms_output_quad (abfd, (uquad) rptr->address); - _bfd_vms_output_long (abfd, (unsigned long) 0x47ff041f); - _bfd_vms_output_long - (abfd, (unsigned long) udata->enbsym->section->index); - _bfd_vms_output_quad (abfd, (uquad) rptr->addend); - _bfd_vms_output_counted - (abfd, _bfd_vms_length_hash_symbol - (abfd, udata->origname, EOBJ_S_C_SYMSIZ)); - _bfd_vms_output_flush (abfd); - break; - - case ALPHA_R_BSR: - (*_bfd_error_handler) (_("Spurious ALPHA_R_BSR reloc")); - break; - - case ALPHA_R_LDA: - udata - = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr; - etir_output_check (abfd, section, curr_addr, - 32 + 1 + strlen (udata->origname)); - _bfd_vms_output_begin (abfd, ETIR_S_C_STC_LDA_GBL, -1); - _bfd_vms_output_long - (abfd, (unsigned long) udata->lkindex + 1); - _bfd_vms_output_long - (abfd, (unsigned long) udata->enbsym->section->index); - _bfd_vms_output_quad (abfd, (uquad) rptr->address); - _bfd_vms_output_long (abfd, (unsigned long) 0x237B0000); - _bfd_vms_output_long - (abfd, (unsigned long) udata->bsym->section->index); - _bfd_vms_output_quad (abfd, (uquad) rptr->addend); - _bfd_vms_output_counted - (abfd, _bfd_vms_length_hash_symbol - (abfd, udata->origname, EOBJ_S_C_SYMSIZ)); - _bfd_vms_output_flush (abfd); - break; - - case ALPHA_R_BOH: - udata - = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr; - etir_output_check (abfd, section, curr_addr, - 32 + 1 + strlen (udata->origname)); - _bfd_vms_output_begin (abfd, ETIR_S_C_STC_BOH_GBL, -1); - _bfd_vms_output_long (abfd, (unsigned long) udata->lkindex); - _bfd_vms_output_long - (abfd, (unsigned long) udata->enbsym->section->index); - _bfd_vms_output_quad (abfd, (uquad) rptr->address); - _bfd_vms_output_long (abfd, (unsigned long) 0xD3400000); - _bfd_vms_output_long - (abfd, (unsigned long) udata->enbsym->section->index); - _bfd_vms_output_quad (abfd, (uquad) rptr->addend); - _bfd_vms_output_counted - (abfd, _bfd_vms_length_hash_symbol - (abfd, udata->origname, EOBJ_S_C_SYMSIZ)); - _bfd_vms_output_flush (abfd); - break; - - default: - (*_bfd_error_handler) (_("Unhandled relocation %s"), - rptr->howto->name); - break; - } - - curr_data += size; - curr_addr += size; - } /* End of relocs loop. */ - - if (!pass2_in_progress) - { - /* Output rest of section. */ - if (curr_addr > section->size) - (*_bfd_error_handler) (_("Size error in section %s"), - section->name); - size = section->size - curr_addr; - sto_imm (abfd, size, curr_data, curr_addr, - section->index, section->name); - curr_data += size; - curr_addr += size; - - if (pass2_needed) - { - pass2_in_progress = 1; - goto new_pass; - } - } - } - - else /* (section->flags & SEC_RELOC) */ - sto_imm (abfd, section->size, section->contents, 0, - section->index, section->name); - - end_etir_record (abfd); - } - - _bfd_vms_output_alignment (abfd, 2); - return 0; -} diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/vms.c crash-6.1.6/=unpacked-tar1=/bfd/vms.c --- crash-5.1.6/=unpacked-tar1=/bfd/vms.c 2009-09-01 13:10:45.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/vms.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,2153 +0,0 @@ -/* vms.c -- BFD back-end for VAX (openVMS/VAX) and - EVAX (openVMS/Alpha) files. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008, 2009 Free Software Foundation, Inc. - - Main file. - - 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 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - -#ifdef VMS -#include -#include -#include -#define RME$C_SETRFM 0x00000001 -#include -#endif - -#include "sysdep.h" -#include "bfd.h" -#include "bfdlink.h" -#include "libbfd.h" - -#include "vms.h" - -static bfd_boolean vms_initialize (bfd *); -static bfd_boolean fill_section_ptr (struct bfd_hash_entry *, PTR); -static bfd_boolean vms_fixup_sections (bfd *); -static bfd_boolean copy_symbols (struct bfd_hash_entry *, PTR); -static bfd_reloc_status_type reloc_nil (bfd *, arelent *, asymbol *, PTR, - asection *, bfd *, char **); -static int vms_slurp_module (bfd *abfd); -static int vms_slurp_image (bfd *abfd); -static const struct bfd_target *vms_object_p (bfd *abfd); -static const struct bfd_target *vms_archive_p (bfd *abfd); -static bfd_boolean vms_mkobject (bfd *abfd); -static bfd_boolean vms_write_object_contents (bfd *abfd); -static void free_reloc_stream (bfd *abfd, asection *section, void *data); -static bfd_boolean vms_close_and_cleanup (bfd *abfd); -static bfd_boolean vms_bfd_free_cached_info (bfd *abfd); -static bfd_boolean vms_new_section_hook (bfd *abfd, asection *section); -static bfd_boolean vms_get_section_contents - (bfd *abfd, asection *section, PTR x1, file_ptr x2, bfd_size_type x3); -static bfd_boolean vms_get_section_contents_in_window - (bfd *abfd, asection *section, bfd_window *w, file_ptr offset, - bfd_size_type count); -static bfd_boolean vms_bfd_copy_private_bfd_data (bfd *src, bfd *dest); -static bfd_boolean vms_bfd_copy_private_section_data - (bfd *srcbfd, asection *srcsec, bfd *dstbfd, asection *dstsec); -static bfd_boolean vms_bfd_copy_private_symbol_data - (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym); -static bfd_boolean vms_bfd_print_private_bfd_data (bfd *abfd, void *file); -static char *vms_core_file_failing_command (bfd *abfd); -static int vms_core_file_failing_signal (bfd *abfd); -static bfd_boolean vms_core_file_matches_executable_p (bfd *abfd, bfd *bbfd); -static bfd_boolean vms_slurp_armap (bfd *abfd); -static bfd_boolean vms_slurp_extended_name_table (bfd *abfd); -static bfd_boolean vms_construct_extended_name_table - (bfd *abfd, char **tabloc, bfd_size_type *tablen, const char **name); -static void vms_truncate_arname (bfd *abfd, const char *pathname, char *arhdr); -static bfd_boolean vms_write_armap - (bfd *arch, unsigned int elen, struct orl *map, unsigned int cnt, int idx); -static PTR vms_read_ar_hdr (bfd *abfd); -static bfd *vms_get_elt_at_index (bfd *abfd, symindex index); -static bfd *vms_openr_next_archived_file (bfd *arch, bfd *prev); -static bfd_boolean vms_update_armap_timestamp (bfd *abfd); -static int vms_generic_stat_arch_elt (bfd *, struct stat *); -static long vms_get_symtab_upper_bound (bfd *abfd); -static long vms_canonicalize_symtab (bfd *abfd, asymbol **symbols); -static void vms_print_symbol (bfd *abfd, PTR file, asymbol *symbol, - bfd_print_symbol_type how); -static void vms_get_symbol_info (bfd *abfd, asymbol *symbol, symbol_info *ret); -static bfd_boolean vms_bfd_is_local_label_name (bfd *abfd, const char *); -static alent *vms_get_lineno (bfd *abfd, asymbol *symbol); -static bfd_boolean vms_find_nearest_line - (bfd *abfd, asection *section, asymbol **symbols, bfd_vma offset, - const char **file, const char **func, unsigned int *line); -static asymbol *vms_bfd_make_debug_symbol (bfd *abfd, void *ptr, - unsigned long size); -static long vms_read_minisymbols (bfd *abfd, bfd_boolean dynamic, - PTR *minisymsp, unsigned int *sizep); -static asymbol *vms_minisymbol_to_symbol - (bfd *abfd, bfd_boolean dynamic, const PTR minisym, asymbol *sym); -static void alloc_reloc_stream (bfd *abfd, asection *section, - void *alloc_error); -static bfd_boolean vms_slurp_reloc_table (bfd *abfd, asection *section, - asymbol **symbols); -static long vms_get_reloc_upper_bound (bfd *abfd, asection *sect); -static long vms_canonicalize_reloc (bfd *abfd, asection *srcsec, - arelent **location, asymbol **symbols); -static const struct reloc_howto_struct *vms_bfd_reloc_type_lookup - (bfd *abfd, bfd_reloc_code_real_type code); -static bfd_boolean vms_set_arch_mach - (bfd *abfd, enum bfd_architecture arch, unsigned long mach); -static bfd_boolean vms_set_section_contents - (bfd *abfd, asection *section, const PTR location, file_ptr offset, - bfd_size_type count); -static int vms_sizeof_headers (bfd *abfd, - struct bfd_link_info *info ATTRIBUTE_UNUSED); -static bfd_byte *vms_bfd_get_relocated_section_contents - (bfd *abfd, struct bfd_link_info *link_info, - struct bfd_link_order *link_order, bfd_byte *data, - bfd_boolean relocatable, asymbol **symbols); -static bfd_boolean vms_bfd_relax_section - (bfd *abfd, asection *section, struct bfd_link_info *link_info, - bfd_boolean *again); -static bfd_boolean vms_bfd_gc_sections - (bfd *abfd, struct bfd_link_info *link_info); -static bfd_boolean vms_bfd_merge_sections - (bfd *abfd, struct bfd_link_info *link_info); -static struct bfd_link_hash_table *vms_bfd_link_hash_table_create (bfd *abfd); -static void vms_bfd_link_hash_table_free (struct bfd_link_hash_table *hash); -static bfd_boolean vms_bfd_link_add_symbols - (bfd *abfd, struct bfd_link_info *link_info); -static bfd_boolean vms_bfd_final_link (bfd *abfd, - struct bfd_link_info *link_info); -static bfd_boolean vms_bfd_link_split_section (bfd *abfd, asection *section); -static long vms_get_dynamic_symtab_upper_bound (bfd *abfd); -static long vms_canonicalize_dynamic_symtab (bfd *abfd, asymbol **symbols); -static long vms_get_dynamic_reloc_upper_bound (bfd *abfd); -static long vms_canonicalize_dynamic_reloc - (bfd *abfd, arelent **arel, asymbol **symbols); -static bfd_boolean vms_bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd); -static bfd_boolean vms_bfd_set_private_flags (bfd *abfd, flagword flags); - -#define vms_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false) -#define vms_make_empty_symbol _bfd_generic_make_empty_symbol -#define vms_bfd_link_just_syms _bfd_generic_link_just_syms -#define vms_bfd_is_group_section bfd_generic_is_group_section -#define vms_bfd_discard_group bfd_generic_discard_group -#define vms_section_already_linked _bfd_generic_section_already_linked -#define vms_bfd_define_common_symbol bfd_generic_define_common_symbol -#define vms_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data -#define vms_get_synthetic_symtab _bfd_nodynamic_get_synthetic_symtab - - -#ifdef VMS_DEBUG -/* Cause debug info to be emitted for the structure. */ -struct vms_private_data_struct _vms_private_data_struct_dummy; -struct vms_section_data_struct _vms_section_data_struct_dummy; -#endif - -extern const bfd_target vms_vax_vec; -extern const bfd_target vms_alpha_vec; - -/* Initialize private data */ -static bfd_boolean -vms_initialize (bfd * abfd) -{ - bfd_size_type amt; - - bfd_set_start_address (abfd, (bfd_vma) -1); - - amt = sizeof (struct vms_private_data_struct); - abfd->tdata.any = bfd_zalloc (abfd, amt); - if (abfd->tdata.any == NULL) - return FALSE; - - if (bfd_get_flavour (abfd) == bfd_target_ovax_flavour) - PRIV (is_vax) = TRUE; - - PRIV (file_format) = FF_UNKNOWN; - - amt = sizeof (struct stack_struct) * STACKSIZE; - PRIV (stack) = bfd_alloc (abfd, amt); - if (PRIV (stack) == NULL) - goto error_ret1; - - amt = sizeof (struct bfd_hash_table); - PRIV (vms_symbol_table) = bfd_alloc (abfd, amt); - if (PRIV (vms_symbol_table) == NULL) - goto error_ret1; - - if (!bfd_hash_table_init (PRIV (vms_symbol_table), _bfd_vms_hash_newfunc, - sizeof (vms_symbol_entry))) - goto error_ret1; - - amt = MAX_OUTREC_SIZE; - PRIV (output_buf) = bfd_alloc (abfd, amt); - if (PRIV (output_buf) == NULL) - goto error_ret2; - - PRIV (length_pos) = 2; - - return TRUE; - - error_ret2: - bfd_hash_table_free (PRIV (vms_symbol_table)); - error_ret1: - bfd_release (abfd, abfd->tdata.any); - abfd->tdata.any = NULL; - return FALSE; -} - -struct pair -{ - unsigned int section_count; - asection **sections; -}; - -/* Fill symbol->section with section pointer. - - symbol->section is filled with the section index for defined symbols - during reading the GSD/EGSD section. But we need the pointer to the - bfd section later. - - It has the correct value for referenced (undefined section) symbols. - - Called from bfd_hash_traverse in vms_fixup_sections. */ - -static bfd_boolean -fill_section_ptr (struct bfd_hash_entry *entry, void *sections) -{ - asymbol *sym = ((vms_symbol_entry *)entry)->symbol; - struct pair *data = (struct pair *)sections; - unsigned long sec = (unsigned long)sym->section; - -#if VMS_DEBUG - vms_debug (6, "fill_section_ptr: sym %p, sec %p\n", sym, sec); -#endif - - if (sec < data->section_count) - { - sym->section = data->sections[sec]; - - if (strcmp (sym->name, sym->section->name) == 0) - sym->flags |= BSF_SECTION_SYM; - } - else if (sec == (unsigned long)-1) - sym->section = &bfd_und_section; - - return TRUE; -} - -/* Fixup section pointers in symbols. */ -static bfd_boolean -vms_fixup_sections (bfd * abfd) -{ - struct pair data; - - if (PRIV (fixup_done)) - return TRUE; - - data.section_count = PRIV (section_count); - data.sections = PRIV (sections); - bfd_hash_traverse (PRIV (vms_symbol_table), fill_section_ptr, &data); - - PRIV (fixup_done) = TRUE; - return TRUE; -} - -/* Slurp an ordered set of VMS object records. */ -int -_bfd_vms_slurp_object_records (bfd * abfd) -{ - int err, new_type, type = -1; - - do - { -#if VMS_DEBUG - vms_debug (7, "reading at %08lx\n", bfd_tell (abfd)); -#endif - new_type = _bfd_vms_get_object_record (abfd); - if (new_type < 0) - { -#if VMS_DEBUG - vms_debug (2, "next_record failed\n"); -#endif - return -1; - } - - if (type == EOBJ_S_C_EGSD && new_type != EOBJ_S_C_EGSD) - { - if (! vms_fixup_sections (abfd)) - { -#if VMS_DEBUG - vms_debug (2, "vms_fixup_sections failed\n"); -#endif - return -1; - } - } - - type = new_type; - - switch (type) - { - case OBJ_S_C_HDR: - case EOBJ_S_C_EMH: - err = _bfd_vms_slurp_hdr (abfd, type); - break; - case OBJ_S_C_EOM: - case OBJ_S_C_EOMW: - case EOBJ_S_C_EEOM: - err = _bfd_vms_slurp_eom (abfd, type); - break; - case OBJ_S_C_GSD: - case EOBJ_S_C_EGSD: - err = _bfd_vms_slurp_gsd (abfd, type); - break; - case OBJ_S_C_TIR: - case EOBJ_S_C_ETIR: - err = _bfd_vms_slurp_tir (abfd, type); - break; - case OBJ_S_C_DBG: - case EOBJ_S_C_EDBG: - err = _bfd_vms_slurp_dbg (abfd, type); - PRIV (dst_ptr_end) = PRIV (image_ptr); - break; - case OBJ_S_C_TBT: - case EOBJ_S_C_ETBT: - err = _bfd_vms_slurp_tbt (abfd, type); - PRIV (dst_ptr_end) = PRIV (image_ptr); - break; - case OBJ_S_C_LNK: - err = _bfd_vms_slurp_lnk (abfd, type); - break; - default: - err = -1; - } - if (err != 0) - { -#if VMS_DEBUG - vms_debug (2, "slurp type %d failed with %d\n", type, err); -#endif - return err; - } - } - while (type != EOBJ_S_C_EEOM && type != OBJ_S_C_EOM && type != OBJ_S_C_EOMW); - - return 0; -} - -/* Slurp a VMS module and return an error status. */ - -static int -vms_slurp_module (bfd *abfd) -{ - int type, err; - - if (PRIV (is_vax)) - type = PRIV (vms_rec)[0]; - else - type = bfd_getl16 (PRIV (vms_rec)); - - err = _bfd_vms_slurp_hdr (abfd, type); - if (err != 0) - { - bfd_set_error (bfd_error_wrong_format); - return err; - } - - return _bfd_vms_slurp_object_records (abfd); -} - -/* Slurp a VMS image and return an error status. */ - -static int -vms_slurp_image (bfd *abfd) -{ - unsigned int isd_offset, ihs_offset; - int err; - - err = _bfd_vms_slurp_ihd (abfd, &isd_offset, &ihs_offset); - if (err != 0) - { - bfd_set_error (bfd_error_wrong_format); - return err; - } - - err = _bfd_vms_slurp_isd (abfd, isd_offset); - if (err != 0) - { - bfd_set_error (bfd_error_wrong_format); - return err; - } - - return _bfd_vms_slurp_ihs (abfd, ihs_offset); -} - -/* Check the format for a file being read. - Return a (bfd_target *) if it's an object file or zero if not. */ - -static const struct bfd_target * -vms_object_p (bfd *abfd) -{ - const struct bfd_target *target_vector; - const bfd_arch_info_type *arch; - PTR tdata_save = abfd->tdata.any; - bfd_vma saddr_save = bfd_get_start_address (abfd); - int err = 0; - -#if VMS_DEBUG - vms_debug (1, "vms_object_p(%p)\n", abfd); -#endif - - if (!vms_initialize (abfd)) - goto error_ret; - - if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET)) - goto err_wrong_format; - - switch (_bfd_vms_get_first_record (abfd)) - { - case FT_UNKNOWN: - default: - err = -1; - break; - - case FT_MODULE: - err = vms_slurp_module (abfd); - break; - - case FT_IMAGE: - err = vms_slurp_image (abfd); - break; - } - - if (err != 0) - goto err_wrong_format; - - if (PRIV (is_vax)) - { - if (! vms_fixup_sections (abfd)) - { -#if VMS_DEBUG - vms_debug (2, "vms_fixup_sections failed\n"); -#endif - goto err_wrong_format; - } - - target_vector = &vms_vax_vec; - arch = bfd_scan_arch ("vax"); - -#if VMS_DEBUG - vms_debug (2, "arch is vax\n"); -#endif - } - else - { - /* Set arch_info to alpha. */ - target_vector = &vms_alpha_vec; - arch = bfd_scan_arch ("alpha"); -#if VMS_DEBUG - vms_debug (2, "arch is alpha\n"); -#endif - } - - abfd->arch_info = arch; - return target_vector; - - err_wrong_format: - bfd_set_error (bfd_error_wrong_format); - - error_ret: - if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL) - bfd_release (abfd, abfd->tdata.any); - abfd->tdata.any = tdata_save; - bfd_set_start_address (abfd, saddr_save); - return NULL; -} - -/* Check the format for a file being read. - Return a (bfd_target *) if it's an archive file or zero. */ - -static const struct bfd_target * -vms_archive_p (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_archive_p (%p)\n", abfd); -#endif - - return NULL; -} - -/* Set the format of a file being written. */ - -static bfd_boolean -vms_mkobject (bfd * abfd) -{ - const bfd_arch_info_type *arch; - -#if VMS_DEBUG - vms_debug (1, "vms_mkobject (%p)\n", abfd); -#endif - - if (!vms_initialize (abfd)) - return FALSE; - - if (PRIV (is_vax)) - arch = bfd_scan_arch ("vax"); - else - arch = bfd_scan_arch ("alpha"); - - if (arch == 0) - { - bfd_set_error(bfd_error_wrong_format); - return FALSE; - } - - abfd->arch_info = arch; - return TRUE; -} - -/* Write cached information into a file being written, at bfd_close. */ - -static bfd_boolean -vms_write_object_contents (bfd * abfd) -{ -#if VMS_DEBUG - vms_debug (1, "vms_write_object_contents (%p)\n", abfd); -#endif - - if (abfd->section_count > 0) /* we have sections */ - { - if (PRIV (is_vax)) - { - if (_bfd_vms_write_hdr (abfd, OBJ_S_C_HDR) != 0) - return FALSE; - if (_bfd_vms_write_gsd (abfd, OBJ_S_C_GSD) != 0) - return FALSE; - if (_bfd_vms_write_tir (abfd, OBJ_S_C_TIR) != 0) - return FALSE; - if (_bfd_vms_write_tbt (abfd, OBJ_S_C_TBT) != 0) - return FALSE; - if (_bfd_vms_write_dbg (abfd, OBJ_S_C_DBG) != 0) - return FALSE; - if (abfd->section_count > 255) - { - if (_bfd_vms_write_eom (abfd, OBJ_S_C_EOMW) != 0) - return FALSE; - } - else - { - if (_bfd_vms_write_eom (abfd, OBJ_S_C_EOM) != 0) - return FALSE; - } - } - else - { - if (_bfd_vms_write_hdr (abfd, EOBJ_S_C_EMH) != 0) - return FALSE; - if (_bfd_vms_write_gsd (abfd, EOBJ_S_C_EGSD) != 0) - return FALSE; - if (_bfd_vms_write_tir (abfd, EOBJ_S_C_ETIR) != 0) - return FALSE; - if (_bfd_vms_write_tbt (abfd, EOBJ_S_C_ETBT) != 0) - return FALSE; - if (_bfd_vms_write_dbg (abfd, EOBJ_S_C_EDBG) != 0) - return FALSE; - if (_bfd_vms_write_eom (abfd, EOBJ_S_C_EEOM) != 0) - return FALSE; - } - } - return TRUE; -} - -/* 4.1, generic. */ - -/* Free the reloc buffer for the specified section. */ - -static void -free_reloc_stream (bfd *abfd ATTRIBUTE_UNUSED, asection *section, - void *data ATTRIBUTE_UNUSED) -{ - if (vms_section_data (section)->reloc_stream) - free (vms_section_data (section)->reloc_stream); -} - -#ifdef VMS -/* Convert the file to variable record length format. This is done - using undocumented system call sys$modify(). - Pure VMS version. */ - -static void -vms_convert_to_var (char *vms_filename) -{ - struct FAB fab = cc$rms_fab; - - fab.fab$l_fna = vms_filename; - fab.fab$b_fns = strlen (vms_filename); - fab.fab$b_fac = FAB$M_PUT; - fab.fab$l_fop = FAB$M_ESC; - fab.fab$l_ctx = RME$C_SETRFM; - - sys$open (&fab); - - fab.fab$b_rfm = FAB$C_VAR; - - sys$modify (&fab); - sys$close (&fab); -} - -static int -vms_convert_to_var_1 (char *filename, int type) -{ - if (type != DECC$K_FILE) - return FALSE; - vms_convert_to_var (filename); - return TRUE; -} - -/* Convert the file to variable record length format. This is done - using undocumented system call sys$modify(). - Unix filename version. */ - -static int -vms_convert_to_var_unix_filename (const char *unix_filename) -{ - if (decc$to_vms (unix_filename, &vms_convert_to_var_1, 0, 1) != 1) - return FALSE; - return TRUE; -} -#endif /* VMS */ - -/* Called when the BFD is being closed to do any necessary cleanup. */ - -static bfd_boolean -vms_close_and_cleanup (bfd * abfd) -{ -#if VMS_DEBUG - vms_debug (1, "vms_close_and_cleanup (%p)\n", abfd); -#endif - if (abfd == NULL || abfd->tdata.any == NULL) - return TRUE; - - if (PRIV (vms_buf) != NULL) - free (PRIV (vms_buf)); - - if (PRIV (sections) != NULL) - free (PRIV (sections)); - - if (PRIV (vms_symbol_table)) - bfd_hash_table_free (PRIV (vms_symbol_table)); - - bfd_map_over_sections (abfd, free_reloc_stream, NULL); - - bfd_release (abfd, abfd->tdata.any); - abfd->tdata.any = NULL; - -#ifdef VMS - if (abfd->direction == write_direction) - { - /* Last step on VMS is to convert the file to variable record length - format. */ - if (bfd_cache_close (abfd) != TRUE) - return FALSE; - if (vms_convert_to_var_unix_filename (abfd->filename) != TRUE) - return FALSE; - } -#endif - - return TRUE; -} - -/* Ask the BFD to free all cached information. */ - -static bfd_boolean -vms_bfd_free_cached_info (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_free_cached_info (%p)\n", abfd); -#endif - return TRUE; -} - -/* Called when a new section is created. */ - -static bfd_boolean -vms_new_section_hook (bfd * abfd, asection *section) -{ - bfd_size_type amt; - - /* Count hasn't been incremented yet. */ - unsigned int section_count = abfd->section_count + 1; - -#if VMS_DEBUG - vms_debug (1, "vms_new_section_hook (%p, [%d]%s), count %d\n", - abfd, section->index, section->name, section_count); -#endif - - bfd_set_section_alignment (abfd, section, 0); - - if (section_count > PRIV (section_count)) - { - bfd_size_type amt = section_count; - amt *= sizeof (asection *); - PRIV (sections) = bfd_realloc_or_free (PRIV (sections), amt); - if (PRIV (sections) == NULL) - return FALSE; - PRIV (section_count) = section_count; - } - -#if VMS_DEBUG - vms_debug (6, "section_count: %d\n", PRIV (section_count)); -#endif - - PRIV (sections)[section->index] = section; - -#if VMS_DEBUG - vms_debug (7, "%d: %s\n", section->index, section->name); -#endif - - amt = sizeof (struct vms_section_data_struct); - section->used_by_bfd = (PTR) bfd_zalloc (abfd, amt); - if (section->used_by_bfd == NULL) - return FALSE; - - return _bfd_generic_new_section_hook (abfd, section); -} - -/* Read the contents of a section. - buf points to a buffer of buf_size bytes to be filled with - section data (starting at offset into section) */ - -static bfd_boolean -vms_get_section_contents (bfd * abfd ATTRIBUTE_UNUSED, - asection *section ATTRIBUTE_UNUSED, - void * buf ATTRIBUTE_UNUSED, - file_ptr offset ATTRIBUTE_UNUSED, - bfd_size_type buf_size ATTRIBUTE_UNUSED) -{ - bfd_size_type size = section->size; - -#if VMS_DEBUG - vms_debug (1, "vms_get_section_contents (%p, %s, %p, off %ld, size %d)\n", - abfd, section->name, buf, offset, (int)buf_size); -#endif - - if (section->contents) - abort (); - - section->contents = (unsigned char *) bfd_malloc (size); - - if (section->contents == NULL) - { - bfd_set_error (bfd_error_no_memory); - return FALSE; - } - - if (bfd_seek (abfd, section->filepos, SEEK_SET)) - { - bfd_set_error (bfd_error_file_truncated); - return FALSE; - } - - if (bfd_bread (section->contents, size, abfd) != size) - { - bfd_set_error (bfd_error_file_truncated); - return FALSE; - } - - section->flags |= SEC_IN_MEMORY; - - if (buf) - memcpy (buf, section->contents + offset, (size_t) buf_size); - - return TRUE; -} - -/* Read the contents of a section. - buf points to a buffer of buf_size bytes to be filled with - section data (starting at offset into section). */ - -static bfd_boolean -vms_get_section_contents_in_window (bfd * abfd ATTRIBUTE_UNUSED, - asection *section ATTRIBUTE_UNUSED, - bfd_window *w ATTRIBUTE_UNUSED, - file_ptr offset ATTRIBUTE_UNUSED, - bfd_size_type count ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_get_section_contents_in_window (%p, %s, %p, off %ld, count %d)\n", - abfd, section->name, w, offset, (int)count); -#endif - - /* Shouldn't be called, since all sections are IN_MEMORY. */ - return FALSE; -} - -/* Part 4.2, copy private data. */ - -/* Called to copy BFD general private data from one object file - to another. */ - -static bfd_boolean -vms_bfd_copy_private_bfd_data (bfd *src ATTRIBUTE_UNUSED, - bfd *dest ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_copy_private_bfd_data (%p, %p)\n", src, dest); -#endif - return TRUE; -} - -/* Merge private BFD information from the BFD @var{ibfd} to the - the output file BFD @var{obfd} when linking. Return <> - on success, <> on error. Possible error returns are: - - o <> - - Not enough memory exists to create private data for @var{obfd}. */ - -static bfd_boolean -vms_bfd_merge_private_bfd_data (bfd * ibfd ATTRIBUTE_UNUSED, - bfd * obfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1,"vms_bfd_merge_private_bfd_data (%p, %p)\n", ibfd, obfd); -#endif - return TRUE; -} - -/* Set private BFD flag information in the BFD @var{abfd}. - Return <> on success, <> on error. Possible error - returns are: - - o <> - - Not enough memory exists to create private data for @var{obfd}. */ - -static bfd_boolean -vms_bfd_set_private_flags (bfd * abfd ATTRIBUTE_UNUSED, - flagword flags ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1,"vms_bfd_set_private_flags (%p, %lx)\n", abfd, (long)flags); -#endif - return TRUE; -} - -/* Called to copy BFD private section data from one object file - to another. */ - -static bfd_boolean -vms_bfd_copy_private_section_data (bfd *srcbfd ATTRIBUTE_UNUSED, - asection *srcsec ATTRIBUTE_UNUSED, - bfd *dstbfd ATTRIBUTE_UNUSED, - asection *dstsec ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_copy_private_section_data (%p, %s, %p, %s)\n", - srcbfd, srcsec->name, dstbfd, dstsec->name); -#endif - return TRUE; -} - -/* Called to copy BFD private symbol data from one object file - to another. */ - -static bfd_boolean -vms_bfd_copy_private_symbol_data (bfd *ibfd ATTRIBUTE_UNUSED, - asymbol *isym ATTRIBUTE_UNUSED, - bfd *obfd ATTRIBUTE_UNUSED, - asymbol *osym ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_copy_private_symbol_data (%p, %s, %p, %s)\n", - ibfd, isym->name, obfd, osym->name); -#endif - return TRUE; -} - -/* Part 4.3, core file. */ - -/* Return a read-only string explaining which program was running - when it failed and produced the core file abfd. */ - -static char * -vms_core_file_failing_command (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_core_file_failing_command (%p)\n", abfd); -#endif - return NULL; -} - -/* Returns the signal number which caused the core dump which - generated the file the BFD abfd is attached to. */ - -static int -vms_core_file_failing_signal (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_core_file_failing_signal (%p)\n", abfd); -#endif - return 0; -} - -/* Return TRUE if the core file attached to core_bfd was generated - by a run of the executable file attached to exec_bfd, FALSE otherwise. */ - -static bfd_boolean -vms_core_file_matches_executable_p (bfd * abfd ATTRIBUTE_UNUSED, - bfd *bbfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_core_file_matches_executable_p (%p, %p)\n", abfd, bbfd); -#endif - return FALSE; -} - -/* Part 4.4, archive. */ - -/* ??? do something with an archive map. - Return FALSE on error, TRUE otherwise. */ - -static bfd_boolean -vms_slurp_armap (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_slurp_armap (%p)\n", abfd); -#endif - return FALSE; -} - -/* ??? do something with an extended name table. - Return FALSE on error, TRUE otherwise. */ - -static bfd_boolean -vms_slurp_extended_name_table (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_slurp_extended_name_table (%p)\n", abfd); -#endif - return FALSE; -} - -/* ??? do something with an extended name table. - Return FALSE on error, TRUE otherwise. */ - -static bfd_boolean -vms_construct_extended_name_table (bfd * abfd ATTRIBUTE_UNUSED, - char **tabloc ATTRIBUTE_UNUSED, - bfd_size_type *tablen ATTRIBUTE_UNUSED, - const char **name ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_construct_extended_name_table (%p)\n", abfd); -#endif - return FALSE; -} - -/* Truncate the name of an archive to match system-dependent restrictions. */ - -static void -vms_truncate_arname (bfd * abfd ATTRIBUTE_UNUSED, - const char *pathname ATTRIBUTE_UNUSED, - char *arhdr ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_truncate_arname (%p, %s, %s)\n", abfd, pathname, arhdr); -#endif -} - -/* ??? write archive map. */ - -static bfd_boolean -vms_write_armap (bfd *arch ATTRIBUTE_UNUSED, - unsigned int elength ATTRIBUTE_UNUSED, - struct orl *map ATTRIBUTE_UNUSED, - unsigned int orl_count ATTRIBUTE_UNUSED, - int stridx ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_write_armap (%p, %d, %p, %d %d)\n", - arch, elength, map, orl_count, stridx); -#endif - return TRUE; -} - -/* Read archive header ??? */ - -static void * -vms_read_ar_hdr (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_read_ar_hdr (%p)\n", abfd); -#endif - return NULL; -} - -/* Provided a BFD, @var{archive}, containing an archive and NULL, open - an input BFD on the first contained element and returns that. - Subsequent calls should pass the archive and the previous return value - to return a created BFD to the next contained element. - NULL is returned when there are no more. */ - -static bfd * -vms_openr_next_archived_file (bfd *arch ATTRIBUTE_UNUSED, - bfd *prev ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_openr_next_archived_file (%p, %p)\n", arch, prev); -#endif - return NULL; -} - -/* Return the BFD which is referenced by the symbol in ABFD indexed by - INDEX. INDEX should have been returned by bfd_get_next_mapent. */ - -static bfd * -vms_get_elt_at_index (bfd * abfd, symindex index) -{ -#if VMS_DEBUG - vms_debug (1, "vms_get_elt_at_index (%p, %p)\n", abfd, index); -#endif - return _bfd_generic_get_elt_at_index (abfd, index); -} - -/* ??? - -> bfd_generic_stat_arch_elt. */ - -static int -vms_generic_stat_arch_elt (bfd * abfd, struct stat *st) -{ -#if VMS_DEBUG - vms_debug (1, "vms_generic_stat_arch_elt (%p, %p)\n", abfd, st); -#endif - return bfd_generic_stat_arch_elt (abfd, st); -} - -/* This is a new function in bfd 2.5. */ - -static bfd_boolean -vms_update_armap_timestamp (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_update_armap_timestamp (%p)\n", abfd); -#endif - return TRUE; -} - -/* Part 4.5, symbols. */ - -/* Return the number of bytes required to store a vector of pointers - to asymbols for all the symbols in the BFD abfd, including a - terminal NULL pointer. If there are no symbols in the BFD, - then return 0. If an error occurs, return -1. */ - -static long -vms_get_symtab_upper_bound (bfd * abfd) -{ -#if VMS_DEBUG - vms_debug (1, "vms_get_symtab_upper_bound (%p), %d symbols\n", abfd, PRIV (gsd_sym_count)); -#endif - return (PRIV (gsd_sym_count) + 1) * sizeof (asymbol *); -} - -/* Copy symbols from hash table to symbol vector - - called from bfd_hash_traverse in vms_canonicalize_symtab - init counter to 0 if entry == 0. */ - -static bfd_boolean -copy_symbols (struct bfd_hash_entry *entry, void * arg) -{ - bfd * abfd = (bfd *) arg; - - if (entry == NULL) /* Init counter. */ - PRIV (symnum) = 0; - else /* Fill vector, inc counter. */ - PRIV (symcache)[PRIV (symnum)++] = ((vms_symbol_entry *)entry)->symbol; - - return TRUE; -} - -/* Read the symbols from the BFD abfd, and fills in the vector - location with pointers to the symbols and a trailing NULL. - - Return number of symbols read. */ - -static long -vms_canonicalize_symtab (bfd * abfd, asymbol **symbols) -{ -#if VMS_DEBUG - vms_debug (1, "vms_canonicalize_symtab (%p, )\n", abfd); -#endif - - /* Init counter. */ - copy_symbols (NULL, abfd); - - /* Traverse table and fill symbols vector. */ - PRIV (symcache) = symbols; - bfd_hash_traverse (PRIV (vms_symbol_table), copy_symbols, abfd); - - symbols[PRIV (gsd_sym_count)] = NULL; - - return PRIV (gsd_sym_count); -} - -/* 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 (???) - bfd_print_symbol_all print all we know, which is not much right now :-). */ - -static void -vms_print_symbol (bfd * abfd, - void * file, - asymbol *symbol, - bfd_print_symbol_type how) -{ -#if VMS_DEBUG - vms_debug (1, "vms_print_symbol (%p, %p, %p, %d)\n", abfd, file, symbol, how); -#endif - - switch (how) - { - case bfd_print_symbol_name: - case bfd_print_symbol_more: - fprintf ((FILE *)file," %s", symbol->name); - break; - - case bfd_print_symbol_all: - { - const char *section_name = symbol->section->name; - - bfd_print_symbol_vandf (abfd, file, symbol); - - fprintf ((FILE *) file," %-8s %s", section_name, symbol->name); - } - break; - } -} - -/* Return information about symbol in ret. - - fill type, value and name - type: - A absolute - B bss segment symbol - C common symbol - D data segment symbol - f filename - t a static function symbol - T text segment symbol - U undefined - - debug. */ - -static void -vms_get_symbol_info (bfd * abfd ATTRIBUTE_UNUSED, - asymbol *symbol, - symbol_info *ret) -{ - asection *sec; - -#if VMS_DEBUG - vms_debug (1, "vms_get_symbol_info (%p, %p, %p)\n", abfd, symbol, ret); -#endif - - sec = symbol->section; - - if (ret == NULL) - return; - - if (sec == 0) - ret->type = 'U'; - else if (bfd_is_com_section (sec)) - ret->type = 'C'; - else if (bfd_is_abs_section (sec)) - ret->type = 'A'; - else if (bfd_is_und_section (sec)) - ret->type = 'U'; - else if (bfd_is_ind_section (sec)) - ret->type = 'I'; - else if (bfd_get_section_flags (abfd, sec) & SEC_CODE) - ret->type = 'T'; - else if (bfd_get_section_flags (abfd, sec) & SEC_DATA) - ret->type = 'D'; - else if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) - ret->type = 'B'; - else - ret->type = '-'; - - if (ret->type != 'U') - ret->value = symbol->value + symbol->section->vma; - else - ret->value = 0; - ret->name = symbol->name; -} - -/* Return TRUE if the given symbol sym in the BFD abfd is - a compiler generated local label, else return FALSE. */ - -static bfd_boolean -vms_bfd_is_local_label_name (bfd * abfd ATTRIBUTE_UNUSED, - const char *name) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_is_local_label_name (%p, %s)\n", abfd, name); -#endif - return name[0] == '$'; -} - -/* Get source line number for symbol. */ - -static alent * -vms_get_lineno (bfd * abfd ATTRIBUTE_UNUSED, - asymbol *symbol ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_get_lineno (%p, %p)\n", abfd, symbol); -#endif - return NULL; -} - -/* Provided a BFD, a section and an offset into the section, calculate and - return the name of the source file and the line nearest to the wanted - location. */ - -static bfd_boolean -vms_find_nearest_line (bfd * abfd ATTRIBUTE_UNUSED, - asection *section ATTRIBUTE_UNUSED, - asymbol **symbols ATTRIBUTE_UNUSED, - bfd_vma offset ATTRIBUTE_UNUSED, - const char **file ATTRIBUTE_UNUSED, - const char **func ATTRIBUTE_UNUSED, - unsigned int *line ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_find_nearest_line (%p, %s, %p, %ld, , , )\n", - abfd, section->name, symbols, (long int)offset); -#endif - return _bfd_vms_find_nearest_dst_line (abfd, section, symbols, offset, file, func, line); -} - -static bfd_boolean -vms_find_inliner_info (bfd * abfd ATTRIBUTE_UNUSED, - const char **file ATTRIBUTE_UNUSED, - const char **func ATTRIBUTE_UNUSED, - unsigned int *line ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_find_inliner_info (%p, , , )\n", - abfd); -#endif - return FALSE; -} - -/* Back-door to allow format-aware applications to create debug symbols - while using BFD for everything else. Currently used by the assembler - when creating COFF files. */ - -static asymbol * -vms_bfd_make_debug_symbol (bfd * abfd ATTRIBUTE_UNUSED, - void *ptr ATTRIBUTE_UNUSED, - unsigned long size ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_make_debug_symbol (%p, %p, %ld)\n", abfd, ptr, size); -#endif - return NULL; -} - -/* Read minisymbols. For minisymbols, we use the unmodified a.out - symbols. The minisymbol_to_symbol function translates these into - BFD asymbol structures. */ - -static long -vms_read_minisymbols (bfd * abfd, - bfd_boolean dynamic, - void * *minisymsp, - unsigned int *sizep) -{ -#if VMS_DEBUG - vms_debug (1, "vms_read_minisymbols (%p, %d, %p, %d)\n", abfd, dynamic, minisymsp, *sizep); -#endif - return _bfd_generic_read_minisymbols (abfd, dynamic, minisymsp, sizep); -} - -/* Convert a minisymbol to a BFD asymbol. A minisymbol is just an - unmodified a.out symbol. The SYM argument is a structure returned - by bfd_make_empty_symbol, which we fill in here. */ - -static asymbol * -vms_minisymbol_to_symbol (bfd * abfd, - bfd_boolean dynamic, - const void * minisym, - asymbol *sym) -{ -#if VMS_DEBUG - vms_debug (1, "vms_minisymbol_to_symbol (%p, %d, %p, %p)\n", abfd, dynamic, minisym, sym); -#endif - return _bfd_generic_minisymbol_to_symbol (abfd, dynamic, minisym, sym); -} - -/* Part 4.6, relocations. */ - -/* Allocate the reloc buffer for the specified section. */ - -static void -alloc_reloc_stream (bfd *abfd ATTRIBUTE_UNUSED, asection *section, - void *alloc_error) -{ - unsigned char *ptr; - - /* If there were no relocations, there is nothing to do. */ - if (section->reloc_count == 0) - return; - - ptr = bfd_malloc (vms_section_data (section)->reloc_size); - if (ptr == NULL) - { - *(bfd_boolean *)alloc_error = TRUE; - return; - } - - vms_section_data (section)->reloc_stream = ptr; -} - -/* Read in the relocs for the specified section and internalize them. - - The implementation is loosely based on the SOM code and made up - of 3 distinct phases: - - 1. When the VMS object is opened and parsed, the number and the size - of the relocations are computed for all sections. This makes it - possible to know upfront both which sections have no relocs and - the size of the reloc buffers for the other sections, at virtually - no cost for consumers that don't care about relocs at all. - - 2. When vms_slurp_reloc_table is invoked for the first time on a section - with relocs, the object is traversed and all the reloc information - is saved in per-section reloc buffers. It would be very inefficient - to scan the whole file on each invocation, so we slurp for all the - sections at once. - - 3. On subsequent invocations of vms_slurp_reloc_table, the relocs for the - specified section are fetched from the buffer, decoded and internalized. - The buffer is then freed since the internalized relocs are attached to - the section, turning additional invocations of vms_slurp_reloc_table - on the same section into no-ops. - - Since VMS objects have very few sections, it could be profitable to merge - phase #2 and phase #3, i.e. to decode and internalize the relocs for all - the sections at once. The current implementation is more elegant. */ - -static bfd_boolean -vms_slurp_reloc_table (bfd *abfd, asection *section, asymbol **symbols) -{ - arelent *internal_relocs; - bfd_size_type amt; - int err; - - /* If there were no relocations, there is nothing to do. */ - if (section->reloc_count == 0) - return TRUE; - - /* Return saved information about the relocations if it is available. */ - if (section->relocation != NULL) - return TRUE; - - /* If the relocation stream has not been slurped, do it now. */ - if (vms_section_data (section)->reloc_stream == NULL) - { - bfd_boolean alloc_error = FALSE; - int type; - - /* Size the reloc buffer for each section. */ - bfd_map_over_sections (abfd, alloc_reloc_stream, &alloc_error); - if (alloc_error) - return FALSE; - - if (bfd_seek (abfd, 0, SEEK_SET) != 0) - return FALSE; - - /* Reset section pointer. */ - PRIV (image_section) = NULL; - - do - { - type = _bfd_vms_get_object_record (abfd); - if (type != EOBJ_S_C_ETIR - && type != EOBJ_S_C_EDBG - && type != EOBJ_S_C_ETBT) - continue; - err = _bfd_vms_slurp_relocs (abfd); - if (err != 0) - { -#if VMS_DEBUG - vms_debug (2, "slurp relocs failed with %d\n", err); -#endif - return FALSE; - } - } - while (type != EOBJ_S_C_EEOM); - } - - amt = section->reloc_count * sizeof (arelent); - internal_relocs = (arelent *) bfd_zalloc (abfd, amt); - if (internal_relocs == NULL) - return FALSE; - - /* Decode and internalize the relocations. */ - err = _bfd_vms_decode_relocs (abfd, internal_relocs, section, symbols); - if (err != 0) - { -#if VMS_DEBUG - vms_debug (2, "decode relocs failed with %d\n", err); -#endif - return FALSE; - } - - /* We're done with the external relocations. Free them. */ - free (vms_section_data (section)->reloc_stream); - vms_section_data (section)->reloc_stream = NULL; - - /* Save our results and return success. */ - section->relocation = internal_relocs; - return TRUE; -} - -/* Return the number of bytes required to store the relocation - information associated with the given section. */ - -static long -vms_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED, asection *section) -{ - return (section->reloc_count + 1) * sizeof (arelent *); -} - -/* Convert relocations from VMS (external) form into BFD internal - form. Return the number of relocations. */ - -static long -vms_canonicalize_reloc (bfd *abfd, asection *section, arelent **relptr, - asymbol **symbols) -{ - arelent *tblptr; - int count; - - if (! vms_slurp_reloc_table (abfd, section, symbols)) - return -1; - - count = section->reloc_count; - tblptr = section->relocation; - - while (count--) - *relptr++ = tblptr++; - - *relptr = (arelent *) NULL; - return section->reloc_count; -} - -/* This is just copied from ecoff-alpha, needs to be fixed probably. */ - -/* How to process the various reloc types. */ - -static bfd_reloc_status_type -reloc_nil (bfd * abfd ATTRIBUTE_UNUSED, - arelent *reloc ATTRIBUTE_UNUSED, - asymbol *sym ATTRIBUTE_UNUSED, - void * data ATTRIBUTE_UNUSED, - asection *sec ATTRIBUTE_UNUSED, - bfd *output_bfd ATTRIBUTE_UNUSED, - char **error_message ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "reloc_nil (abfd %p, output_bfd %p)\n", abfd, output_bfd); - vms_debug (2, "In section %s, symbol %s\n", - sec->name, sym->name); - vms_debug (2, "reloc sym %s, addr %08lx, addend %08lx, reloc is a %s\n", - reloc->sym_ptr_ptr[0]->name, - (unsigned long)reloc->address, - (unsigned long)reloc->addend, reloc->howto->name); - vms_debug (2, "data at %p\n", data); - /* _bfd_hexdump (2, data, bfd_get_reloc_size (reloc->howto), 0); */ -#endif - - return bfd_reloc_ok; -} - -/* 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 alpha_howto_table[] = -{ - HOWTO (ALPHA_R_IGNORE, /* Type. */ - 0, /* Rightshift. */ - 0, /* Size (0 = byte, 1 = short, 2 = long). */ - 8, /* Bitsize. */ - TRUE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "IGNORE", /* Name. */ - TRUE, /* Partial_inplace. */ - 0, /* Source mask */ - 0, /* Dest mask. */ - TRUE), /* PC rel offset. */ - - /* A 64 bit reference to a symbol. */ - HOWTO (ALPHA_R_REFQUAD, /* Type. */ - 0, /* Rightshift. */ - 4, /* Size (0 = byte, 1 = short, 2 = long). */ - 64, /* Bitsize. */ - FALSE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_bitfield, /* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "REFQUAD", /* Name. */ - TRUE, /* Partial_inplace. */ - MINUS_ONE, /* Source mask. */ - MINUS_ONE, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* A 21 bit branch. The native assembler generates these for - branches within the text segment, and also fills in the PC - relative offset in the instruction. */ - HOWTO (ALPHA_R_BRADDR, /* Type. */ - 2, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 21, /* Bitsize. */ - TRUE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_signed, /* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "BRADDR", /* Name. */ - TRUE, /* Partial_inplace. */ - 0x1fffff, /* Source mask. */ - 0x1fffff, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* A hint for a jump to a register. */ - HOWTO (ALPHA_R_HINT, /* Type. */ - 2, /* Rightshift. */ - 1, /* Size (0 = byte, 1 = short, 2 = long). */ - 14, /* Bitsize. */ - TRUE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "HINT", /* Name. */ - TRUE, /* Partial_inplace. */ - 0x3fff, /* Source mask. */ - 0x3fff, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* 16 bit PC relative offset. */ - HOWTO (ALPHA_R_SREL16, /* Type. */ - 0, /* Rightshift. */ - 1, /* Size (0 = byte, 1 = short, 2 = long). */ - 16, /* Bitsize. */ - TRUE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_signed, /* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "SREL16", /* Name. */ - TRUE, /* Partial_inplace. */ - 0xffff, /* Source mask. */ - 0xffff, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* 32 bit PC relative offset. */ - HOWTO (ALPHA_R_SREL32, /* Type. */ - 0, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 32, /* Bitsize. */ - TRUE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_signed, /* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "SREL32", /* Name. */ - TRUE, /* Partial_inplace. */ - 0xffffffff, /* Source mask. */ - 0xffffffff, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* A 64 bit PC relative offset. */ - HOWTO (ALPHA_R_SREL64, /* Type. */ - 0, /* Rightshift. */ - 4, /* Size (0 = byte, 1 = short, 2 = long). */ - 64, /* Bitsize. */ - TRUE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_signed, /* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "SREL64", /* Name. */ - TRUE, /* Partial_inplace. */ - MINUS_ONE, /* Source mask. */ - MINUS_ONE, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* Push a value on the reloc evaluation stack. */ - HOWTO (ALPHA_R_OP_PUSH, /* Type. */ - 0, /* Rightshift. */ - 0, /* Size (0 = byte, 1 = short, 2 = long). */ - 0, /* Bitsize. */ - FALSE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "OP_PUSH", /* Name. */ - FALSE, /* Partial_inplace. */ - 0, /* Source mask. */ - 0, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* Store the value from the stack at the given address. Store it in - a bitfield of size r_size starting at bit position r_offset. */ - HOWTO (ALPHA_R_OP_STORE, /* Type. */ - 0, /* Rightshift. */ - 4, /* Size (0 = byte, 1 = short, 2 = long). */ - 64, /* Bitsize. */ - FALSE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "OP_STORE", /* Name. */ - FALSE, /* Partial_inplace. */ - 0, /* Source mask. */ - MINUS_ONE, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* Subtract the reloc address from the value on the top of the - relocation stack. */ - HOWTO (ALPHA_R_OP_PSUB, /* Type. */ - 0, /* Rightshift. */ - 0, /* Size (0 = byte, 1 = short, 2 = long). */ - 0, /* Bitsize. */ - FALSE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "OP_PSUB", /* Name. */ - FALSE, /* Partial_inplace. */ - 0, /* Source mask. */ - 0, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* Shift the value on the top of the relocation stack right by the - given value. */ - HOWTO (ALPHA_R_OP_PRSHIFT, /* Type. */ - 0, /* Rightshift. */ - 0, /* Size (0 = byte, 1 = short, 2 = long). */ - 0, /* Bitsize. */ - FALSE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "OP_PRSHIFT", /* Name. */ - FALSE, /* Partial_inplace. */ - 0, /* Source mask. */ - 0, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* Hack. Linkage is done by linker. */ - HOWTO (ALPHA_R_LINKAGE, /* Type. */ - 0, /* Rightshift. */ - 8, /* Size (0 = byte, 1 = short, 2 = long). */ - 256, /* Bitsize. */ - FALSE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "LINKAGE", /* Name. */ - FALSE, /* Partial_inplace. */ - 0, /* Source mask. */ - 0, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* A 32 bit reference to a symbol. */ - HOWTO (ALPHA_R_REFLONG, /* Type. */ - 0, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 32, /* Bitsize. */ - FALSE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_bitfield, /* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "REFLONG", /* Name. */ - TRUE, /* Partial_inplace. */ - 0xffffffff, /* Source mask. */ - 0xffffffff, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - /* A 64 bit reference to a procedure, written as 32 bit value. */ - HOWTO (ALPHA_R_CODEADDR, /* Type. */ - 0, /* Rightshift. */ - 4, /* Size (0 = byte, 1 = short, 2 = long). */ - 64, /* Bitsize. */ - FALSE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_signed,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "CODEADDR", /* Name. */ - FALSE, /* Partial_inplace. */ - 0xffffffff, /* Source mask. */ - 0xffffffff, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - HOWTO (ALPHA_R_NOP, /* Type. */ - 0, /* Rightshift. */ - 3, /* Size (0 = byte, 1 = short, 2 = long). */ - 0, /* Bitsize. */ - /* The following value must match that of ALPHA_R_BSR/ALPHA_R_BOH - because the calculations for the 3 relocations are the same. - See B.4.5.2 of the OpenVMS Linker Utility Manual. */ - TRUE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "NOP", /* Name. */ - FALSE, /* Partial_inplace. */ - 0xffffffff, /* Source mask. */ - 0xffffffff, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - HOWTO (ALPHA_R_BSR, /* Type. */ - 0, /* Rightshift. */ - 3, /* Size (0 = byte, 1 = short, 2 = long). */ - 0, /* Bitsize. */ - TRUE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "BSR", /* Name. */ - FALSE, /* Partial_inplace. */ - 0xffffffff, /* Source mask. */ - 0xffffffff, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - HOWTO (ALPHA_R_LDA, /* Type. */ - 0, /* Rightshift. */ - 3, /* Size (0 = byte, 1 = short, 2 = long). */ - 0, /* Bitsize. */ - FALSE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "LDA", /* Name. */ - FALSE, /* Partial_inplace. */ - 0xffffffff, /* Source mask. */ - 0xffffffff, /* Dest mask. */ - FALSE), /* PC rel offset. */ - - HOWTO (ALPHA_R_BOH, /* Type. */ - 0, /* Rightshift. */ - 3, /* Size (0 = byte, 1 = short, 2 = long, 3 = nil). */ - 0, /* Bitsize. */ - TRUE, /* PC relative. */ - 0, /* Bitpos. */ - complain_overflow_dont,/* Complain_on_overflow. */ - reloc_nil, /* Special_function. */ - "BOH", /* Name. */ - FALSE, /* Partial_inplace. */ - 0xffffffff, /* Source mask. */ - 0xffffffff, /* Dest mask. */ - FALSE), /* PC rel offset. */ -}; - -/* Return a pointer to a howto structure which, when invoked, will perform - the relocation code on data from the architecture noted. */ - -static const struct reloc_howto_struct * -vms_bfd_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, - bfd_reloc_code_real_type code) -{ - int alpha_type; - -#if VMS_DEBUG - vms_debug (1, "vms_bfd_reloc_type_lookup (%p, %d)\t", abfd, code); -#endif - - switch (code) - { - case BFD_RELOC_16: alpha_type = ALPHA_R_SREL16; break; - case BFD_RELOC_32: alpha_type = ALPHA_R_REFLONG; break; - case BFD_RELOC_64: alpha_type = ALPHA_R_REFQUAD; break; - case BFD_RELOC_CTOR: alpha_type = ALPHA_R_REFQUAD; break; - case BFD_RELOC_23_PCREL_S2: alpha_type = ALPHA_R_BRADDR; break; - case BFD_RELOC_ALPHA_HINT: alpha_type = ALPHA_R_HINT; break; - case BFD_RELOC_16_PCREL: alpha_type = ALPHA_R_SREL16; break; - case BFD_RELOC_32_PCREL: alpha_type = ALPHA_R_SREL32; break; - case BFD_RELOC_64_PCREL: alpha_type = ALPHA_R_SREL64; break; - case BFD_RELOC_ALPHA_LINKAGE: alpha_type = ALPHA_R_LINKAGE; break; - case BFD_RELOC_ALPHA_CODEADDR: alpha_type = ALPHA_R_CODEADDR; break; - case BFD_RELOC_ALPHA_NOP: alpha_type = ALPHA_R_NOP; break; - case BFD_RELOC_ALPHA_BSR: alpha_type = ALPHA_R_BSR; break; - case BFD_RELOC_ALPHA_LDA: alpha_type = ALPHA_R_LDA; break; - case BFD_RELOC_ALPHA_BOH: alpha_type = ALPHA_R_BOH; break; - default: - (*_bfd_error_handler) ("reloc (%d) is *UNKNOWN*", code); - return NULL; - } -#if VMS_DEBUG - vms_debug (2, "reloc is %s\n", alpha_howto_table[alpha_type].name); -#endif - return & alpha_howto_table[alpha_type]; -} - -static reloc_howto_type * -vms_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, - const char *r_name) -{ - unsigned int i; - - for (i = 0; - i < sizeof (alpha_howto_table) / sizeof (alpha_howto_table[0]); - i++) - if (alpha_howto_table[i].name != NULL - && strcasecmp (alpha_howto_table[i].name, r_name) == 0) - return &alpha_howto_table[i]; - - return NULL; -} - -/* Part 4.7, writing an object file. */ - -/* Set the architecture and machine type in BFD abfd to arch and mach. - Find the correct pointer to a structure and insert it into the arch_info - pointer. */ - -static bfd_boolean -vms_set_arch_mach (bfd * abfd, - enum bfd_architecture arch ATTRIBUTE_UNUSED, - unsigned long mach ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_set_arch_mach (%p, %d, %ld)\n", abfd, arch, mach); -#endif - - if (arch != bfd_arch_alpha - && arch != bfd_arch_vax - && arch != bfd_arch_unknown) - return FALSE; - - return bfd_default_set_arch_mach (abfd, arch, mach); -} - -/* Sets the contents of the section section in BFD abfd to the data starting - in memory at LOCATION. The data is written to the output section starting - at offset offset for count bytes. - - Normally TRUE is returned, else FALSE. Possible error returns are: - o bfd_error_no_contents - The output section does not have the - SEC_HAS_CONTENTS attribute, so nothing can be written to it. - o and some more too */ - -static bfd_boolean -vms_set_section_contents (bfd * abfd, - asection *section, - const void * location, - file_ptr offset, - bfd_size_type count) -{ -#if VMS_DEBUG - vms_debug (1, "vms_set_section_contents (%p, sec %s, loc %p, off %ld, count %d)\n", - abfd, section->name, location, (long int)offset, (int)count); - vms_debug (2, "size %d\n", (int) section->size); -#endif - if (count == (bfd_size_type)0) - return TRUE; - - if (section->contents == NULL) - section->contents = bfd_alloc (abfd, section->size); - if (section->contents == NULL) - return FALSE; - - memcpy (section->contents + offset, location, (size_t) count); - return TRUE; -} - -/* Part 4.8, linker. */ - -/* Get the size of the section headers. */ - -static int -vms_sizeof_headers (bfd * abfd ATTRIBUTE_UNUSED, - struct bfd_link_info *info ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_sizeof_headers (%p, %s)\n", abfd, (reloc)?"True":"False"); -#endif - return 0; -} - -/* Provides default handling of relocation effort for back ends - which can't be bothered to do it efficiently. */ - -static bfd_byte * -vms_bfd_get_relocated_section_contents (bfd * abfd ATTRIBUTE_UNUSED, - struct bfd_link_info *link_info ATTRIBUTE_UNUSED, - struct bfd_link_order *link_order ATTRIBUTE_UNUSED, - bfd_byte *data ATTRIBUTE_UNUSED, - bfd_boolean relocatable ATTRIBUTE_UNUSED, - asymbol **symbols ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_get_relocated_section_contents (%p, %p, %p, %p, %s, %p)\n", - abfd, link_info, link_order, data, (relocatable)?"True":"False", symbols); -#endif - return NULL; -} - -/* ??? */ - -static bfd_boolean -vms_bfd_relax_section (bfd * abfd ATTRIBUTE_UNUSED, - asection *section ATTRIBUTE_UNUSED, - struct bfd_link_info *link_info ATTRIBUTE_UNUSED, - bfd_boolean *again ATTRIBUTE_UNUSED) -{ - if (link_info->relocatable) - (*link_info->callbacks->einfo) - (_("%P%F: --relax and -r may not be used together\n")); - -#if VMS_DEBUG - vms_debug (1, "vms_bfd_relax_section (%p, %s, %p, )\n", - abfd, section->name, link_info); -#endif - return TRUE; -} - -static bfd_boolean -vms_bfd_gc_sections (bfd * abfd ATTRIBUTE_UNUSED, - struct bfd_link_info *link_info ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_gc_sections (%p, %p)\n", abfd, link_info); -#endif - return TRUE; -} - -static bfd_boolean -vms_bfd_merge_sections (bfd * abfd ATTRIBUTE_UNUSED, - struct bfd_link_info *link_info ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_merge_sections (%p, %p)\n", abfd, link_info); -#endif - return TRUE; -} - -/* Create a hash table for the linker. Different backends store - different information in this table. */ - -static struct bfd_link_hash_table * -vms_bfd_link_hash_table_create (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_link_hash_table_create (%p)\n", abfd); -#endif - return NULL; -} - -/* Free a linker hash table. */ - -static void -vms_bfd_link_hash_table_free (struct bfd_link_hash_table *hash ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_link_hash_table_free (%p)\n", abfd); -#endif -} - -/* Add symbols from this object file into the hash table. */ - -static bfd_boolean -vms_bfd_link_add_symbols (bfd * abfd ATTRIBUTE_UNUSED, - struct bfd_link_info *link_info ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_link_add_symbols (%p, %p)\n", abfd, link_info); -#endif - return FALSE; -} - -/* Do a link based on the link_order structures attached to each - section of the BFD. */ - -static bfd_boolean -vms_bfd_final_link (bfd * abfd ATTRIBUTE_UNUSED, - struct bfd_link_info *link_info ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_final_link (%p, %p)\n", abfd, link_info); -#endif - return TRUE; -} - -/* Should this section be split up into smaller pieces during linking. */ - -static bfd_boolean -vms_bfd_link_split_section (bfd * abfd ATTRIBUTE_UNUSED, - asection *section ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_link_split_section (%p, %s)\n", abfd, section->name); -#endif - return FALSE; -} - -/* Part 4.9, dynamic symbols and relocations. */ - -/* Get the amount of memory required to hold the dynamic symbols. */ - -static long -vms_get_dynamic_symtab_upper_bound (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_get_dynamic_symtab_upper_bound (%p)\n", abfd); -#endif - return 0L; -} - -static bfd_boolean -vms_bfd_print_private_bfd_data (bfd * abfd ATTRIBUTE_UNUSED, - void *file ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_bfd_print_private_bfd_data (%p)\n", abfd); -#endif - return FALSE; -} - -/* Read in the dynamic symbols. */ - -static long -vms_canonicalize_dynamic_symtab (bfd * abfd ATTRIBUTE_UNUSED, - asymbol **symbols ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_canonicalize_dynamic_symtab (%p, )\n", abfd); -#endif - return 0L; -} - -/* Get the amount of memory required to hold the dynamic relocs. */ - -static long -vms_get_dynamic_reloc_upper_bound (bfd * abfd ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_get_dynamic_reloc_upper_bound (%p)\n", abfd); -#endif - return 0L; -} - -/* Read in the dynamic relocs. */ - -static long -vms_canonicalize_dynamic_reloc (bfd * abfd ATTRIBUTE_UNUSED, - arelent **arel ATTRIBUTE_UNUSED, - asymbol **symbols ATTRIBUTE_UNUSED) -{ -#if VMS_DEBUG - vms_debug (1, "vms_canonicalize_dynamic_reloc (%p)\n", abfd); -#endif - return 0L; -} - -const bfd_target vms_alpha_vec = -{ - "vms-alpha", /* Name. */ - bfd_target_evax_flavour, - BFD_ENDIAN_LITTLE, /* Data byte order is little. */ - BFD_ENDIAN_LITTLE, /* Header byte order is little. */ - - (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS - | WP_TEXT | D_PAGED), /* Object flags. */ - (SEC_ALLOC | SEC_LOAD | SEC_RELOC - | SEC_READONLY | SEC_CODE | SEC_DATA - | SEC_HAS_CONTENTS | SEC_IN_MEMORY), /* Sect flags. */ - 0, /* symbol_leading_char. */ - ' ', /* ar_pad_char. */ - 15, /* ar_max_namelen. */ - bfd_getl64, bfd_getl_signed_64, bfd_putl64, - bfd_getl32, bfd_getl_signed_32, bfd_putl32, - bfd_getl16, bfd_getl_signed_16, bfd_putl16, - bfd_getl64, bfd_getl_signed_64, bfd_putl64, - bfd_getl32, bfd_getl_signed_32, bfd_putl32, - bfd_getl16, bfd_getl_signed_16, bfd_putl16, - - {_bfd_dummy_target, vms_object_p, /* bfd_check_format. */ - vms_archive_p, _bfd_dummy_target}, - {bfd_false, vms_mkobject, /* bfd_set_format. */ - _bfd_generic_mkarchive, bfd_false}, - {bfd_false, vms_write_object_contents, /* bfd_write_contents. */ - _bfd_write_archive_contents, bfd_false}, - - BFD_JUMP_TABLE_GENERIC (vms), - BFD_JUMP_TABLE_COPY (vms), - BFD_JUMP_TABLE_CORE (vms), - BFD_JUMP_TABLE_ARCHIVE (vms), - BFD_JUMP_TABLE_SYMBOLS (vms), - BFD_JUMP_TABLE_RELOCS (vms), - BFD_JUMP_TABLE_WRITE (vms), - BFD_JUMP_TABLE_LINK (vms), - BFD_JUMP_TABLE_DYNAMIC (vms), - - NULL, - - (PTR) 0 -}; - -const bfd_target vms_vax_vec = -{ - "vms-vax", /* Name. */ - bfd_target_ovax_flavour, - BFD_ENDIAN_LITTLE, /* Data byte order is little. */ - BFD_ENDIAN_LITTLE, /* Header byte order is little. */ - - (HAS_RELOC | HAS_SYMS /* Object flags. */ - | WP_TEXT | D_PAGED - | HAS_LINENO | HAS_DEBUG | HAS_LOCALS), - - (SEC_ALLOC | SEC_LOAD | SEC_RELOC - | SEC_READONLY | SEC_CODE | SEC_DATA - | SEC_HAS_CONTENTS | SEC_IN_MEMORY), /* Sect flags. */ - 0, /* symbol_leading_char */ - ' ', /* ar_pad_char */ - 15, /* ar_max_namelen */ - bfd_getl64, bfd_getl_signed_64, bfd_putl64, - bfd_getl32, bfd_getl_signed_32, bfd_putl32, - bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data. */ - bfd_getl64, bfd_getl_signed_64, bfd_putl64, - bfd_getl32, bfd_getl_signed_32, bfd_putl32, - bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Hdrs. */ - - {_bfd_dummy_target, vms_object_p, /* bfd_check_format. */ - vms_archive_p, _bfd_dummy_target}, - {bfd_false, vms_mkobject, /* bfd_set_format. */ - _bfd_generic_mkarchive, bfd_false}, - {bfd_false, vms_write_object_contents, /* bfd_write_contents. */ - _bfd_write_archive_contents, bfd_false}, - - BFD_JUMP_TABLE_GENERIC (vms), - BFD_JUMP_TABLE_COPY (vms), - BFD_JUMP_TABLE_CORE (vms), - BFD_JUMP_TABLE_ARCHIVE (vms), - BFD_JUMP_TABLE_SYMBOLS (vms), - BFD_JUMP_TABLE_RELOCS (vms), - BFD_JUMP_TABLE_WRITE (vms), - BFD_JUMP_TABLE_LINK (vms), - BFD_JUMP_TABLE_DYNAMIC (vms), - - NULL, - - (PTR) 0 -}; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/vms.h crash-6.1.6/=unpacked-tar1=/bfd/vms.h --- crash-5.1.6/=unpacked-tar1=/bfd/vms.h 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/vms.h 2010-06-11 15:13:32.000000000 +0000 @@ -1,6 +1,6 @@ /* vms.h -- Header file for VMS (Alpha and Vax) support. Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, - 2008, 2009 Free Software Foundation, Inc. + 2008, 2009, 2010 Free Software Foundation, Inc. Main header file. @@ -27,820 +27,68 @@ #ifndef VMS_H #define VMS_H -/* Constants starting with 'Exxx_' are for openVMS/Alpha (EVAX object - language). */ +#include -#define VMS_BLOCK_SIZE 512 - -/* VMS Text Information and Relocation Records (TIR/ETIR). */ +/* Size of a VMS block on disk. */ -#define TIR_S_C_STA_GBL 0 -#define TIR_S_C_STA_SB 1 -#define TIR_S_C_STA_SW 2 -#define TIR_S_C_STA_LW 3 -#define TIR_S_C_STA_PB 4 -#define TIR_S_C_STA_PW 5 -#define TIR_S_C_STA_PL 6 -#define TIR_S_C_STA_UB 7 -#define TIR_S_C_STA_UW 8 -#define TIR_S_C_STA_BFI 9 -#define TIR_S_C_STA_WFI 10 -#define TIR_S_C_STA_LFI 11 -#define TIR_S_C_STA_EPM 12 -#define TIR_S_C_STA_CKARG 13 -#define TIR_S_C_STA_WPB 14 -#define TIR_S_C_STA_WPW 15 -#define TIR_S_C_STA_WPL 16 -#define TIR_S_C_STA_LSY 17 -#define TIR_S_C_STA_LIT 18 -#define TIR_S_C_STA_LEPM 19 -#define TIR_S_C_MAXSTACOD 19 -#define TIR_S_C_MINSTOCOD 20 -#define TIR_S_C_STO_SB 20 -#define TIR_S_C_STO_SW 21 -#define TIR_S_C_STO_L 22 -#define TIR_S_C_STO_LW 22 -#define TIR_S_C_STO_BD 23 -#define TIR_S_C_STO_WD 24 -#define TIR_S_C_STO_LD 25 -#define TIR_S_C_STO_LI 26 -#define TIR_S_C_STO_PIDR 27 -#define TIR_S_C_STO_PICR 28 -#define TIR_S_C_STO_RSB 29 -#define TIR_S_C_STO_RSW 30 -#define TIR_S_C_STO_RL 31 -#define TIR_S_C_STO_VPS 32 -#define TIR_S_C_STO_USB 33 -#define TIR_S_C_STO_USW 34 -#define TIR_S_C_STO_RUB 35 -#define TIR_S_C_STO_RUW 36 -#define TIR_S_C_STO_B 37 -#define TIR_S_C_STO_W 38 -#define TIR_S_C_STO_RB 39 -#define TIR_S_C_STO_RW 40 -#define TIR_S_C_STO_RIVB 41 -#define TIR_S_C_STO_PIRR 42 -#define TIR_S_C_MAXSTOCOD 42 -#define TIR_S_C_MINOPRCOD 50 -#define TIR_S_C_OPR_NOP 50 -#define TIR_S_C_OPR_ADD 51 -#define TIR_S_C_OPR_SUB 52 -#define TIR_S_C_OPR_MUL 53 -#define TIR_S_C_OPR_DIV 54 -#define TIR_S_C_OPR_AND 55 -#define TIR_S_C_OPR_IOR 56 -#define TIR_S_C_OPR_EOR 57 -#define TIR_S_C_OPR_NEG 58 -#define TIR_S_C_OPR_COM 59 -#define TIR_S_C_OPR_INSV 60 -#define TIR_S_C_OPR_ASH 61 -#define TIR_S_C_OPR_USH 62 -#define TIR_S_C_OPR_ROT 63 -#define TIR_S_C_OPR_SEL 64 -#define TIR_S_C_OPR_REDEF 65 -#define TIR_S_C_OPR_DFLIT 66 -#define TIR_S_C_MAXOPRCOD 66 -#define TIR_S_C_MINCTLCOD 80 -#define TIR_S_C_CTL_SETRB 80 -#define TIR_S_C_CTL_AUGRB 81 -#define TIR_S_C_CTL_DFLOC 82 -#define TIR_S_C_CTL_STLOC 83 -#define TIR_S_C_CTL_STKDL 84 -#define TIR_S_C_MAXCTLCOD 84 - -#define ETIR_S_C_MINSTACOD 0 /* Minimum store code. */ -#define ETIR_S_C_STA_GBL 0 /* Stack global symbol value. */ -#define ETIR_S_C_STA_LW 1 /* Stack longword. */ -#define ETIR_S_C_STA_QW 2 /* Stack quadword. */ -#define ETIR_S_C_STA_PQ 3 /* Stack psect base + quadword off. */ -#define ETIR_S_C_STA_LI 4 /* Stack literal. */ -#define ETIR_S_C_STA_MOD 5 /* Stack module. */ -#define ETIR_S_C_STA_CKARG 6 /* Check Arguments. */ -#define ETIR_S_C_MAXSTACOD 6 /* Maximum stack code. */ -#define ETIR_S_C_MINSTOCOD 50 /* Minimum store code. */ -#define ETIR_S_C_STO_B 50 /* Store byte. */ -#define ETIR_S_C_STO_W 51 /* Store word. */ -#define ETIR_S_C_STO_LW 52 /* Store longword. */ -#define ETIR_S_C_STO_QW 53 /* Store quadword. */ -#define ETIR_S_C_STO_IMMR 54 /* Store immediate Repeated. */ -#define ETIR_S_C_STO_GBL 55 /* Store global. */ -#define ETIR_S_C_STO_CA 56 /* Store code address. */ -#define ETIR_S_C_STO_RB 57 /* Store relative branch. */ -#define ETIR_S_C_STO_AB 58 /* Store absolute branch. */ -#define ETIR_S_C_STO_OFF 59 /* Store offset within psect. */ -#define ETIR_S_C_STO_IMM 61 /* Store immediate. */ -#define ETIR_S_C_STO_GBL_LW 62 /* Store global Longword. */ -#define ETIR_S_C_STO_LP_PSB 63 /* STO_LP_PSB not valid in level 2 use STC_LP_PSB. */ -#define ETIR_S_C_STO_HINT_GBL 64 /* Store 14 bit HINT at global address. */ -#define ETIR_S_C_STO_HINT_PS 65 /* Store 14 bit HINT at psect + offset */ -#define ETIR_S_C_MAXSTOCOD 65 /* Maximum store code. */ -#define ETIR_S_C_MINOPRCOD 100 /* Minimum operate code. */ -#define ETIR_S_C_OPR_NOP 100 /* No-op. */ -#define ETIR_S_C_OPR_ADD 101 /* Add. */ -#define ETIR_S_C_OPR_SUB 102 /* Subtract. */ -#define ETIR_S_C_OPR_MUL 103 /* Multiply. */ -#define ETIR_S_C_OPR_DIV 104 /* Divide. */ -#define ETIR_S_C_OPR_AND 105 /* Logical AND. */ -#define ETIR_S_C_OPR_IOR 106 /* Logical inclusive OR. */ -#define ETIR_S_C_OPR_EOR 107 /* Logical exclusive OR. */ -#define ETIR_S_C_OPR_NEG 108 /* Negate. */ -#define ETIR_S_C_OPR_COM 109 /* Complement. */ -#define ETIR_S_C_OPR_INSV 110 /* Insert bit field. */ -#define ETIR_S_C_OPR_ASH 111 /* Arithmetic shift. */ -#define ETIR_S_C_OPR_USH 112 /* Unsigned shift. */ -#define ETIR_S_C_OPR_ROT 113 /* Rotate. */ -#define ETIR_S_C_OPR_SEL 114 /* Select one of three longwords on top of stack. */ -#define ETIR_S_C_OPR_REDEF 115 /* Redefine this symbol after pass 2. */ -#define ETIR_S_C_OPR_DFLIT 116 /* Define a literal. */ -#define ETIR_S_C_MAXOPRCOD 116 /* Maximum operate code. */ -#define ETIR_S_C_MINCTLCOD 150 /* Minimum control code. */ -#define ETIR_S_C_CTL_SETRB 150 /* Set relocation base. */ -#define ETIR_S_C_CTL_AUGRB 151 /* Augment relocation base. */ -#define ETIR_S_C_CTL_DFLOC 152 /* Define debug location. */ -#define ETIR_S_C_CTL_STLOC 153 /* Set debug location. */ -#define ETIR_S_C_CTL_STKDL 154 /* Stack debug location. */ -#define ETIR_S_C_MAXCTLCOD 154 /* Maximum control code. */ -#define ETIR_S_C_MINSTCCOD 200 /* Minimum store-conditional code. */ -#define ETIR_S_C_STC_LP 200 /* Store-conditional Linkage Pair. */ -#define ETIR_S_C_STC_LP_PSB 201 /* Store-conditional Linkage Pair with Procedure Signature. */ -#define ETIR_S_C_STC_GBL 202 /* Store-conditional Address at global address. */ -#define ETIR_S_C_STC_GCA 203 /* Store-conditional Code Address at global address. */ -#define ETIR_S_C_STC_PS 204 /* Store-conditional Address at psect + offset. */ -#define ETIR_S_C_STC_NOP_GBL 205 /* Store-conditional NOP at address of global. */ -#define ETIR_S_C_STC_NOP_PS 206 /* Store-conditional NOP at pect + offset. */ -#define ETIR_S_C_STC_BSR_GBL 207 /* Store-conditional BSR at global address. */ -#define ETIR_S_C_STC_BSR_PS 208 /* Store-conditional BSR at pect + offset. */ -#define ETIR_S_C_STC_LDA_GBL 209 /* Store-conditional LDA at global address. */ -#define ETIR_S_C_STC_LDA_PS 210 /* Store-conditional LDA at psect + offset. */ -#define ETIR_S_C_STC_BOH_GBL 211 /* Store-conditional BSR or Hint at global address. */ -#define ETIR_S_C_STC_BOH_PS 212 /* Store-conditional BSR or Hint at pect + offset. */ -#define ETIR_S_C_STC_NBH_GBL 213 /* Store-conditional NOP,BSR or HINT at global address. */ -#define ETIR_S_C_STC_NBH_PS 214 /* Store-conditional NOP,BSR or HINT at psect + offset. */ -#define ETIR_S_C_MAXSTCCOD 214 /* Maximum store-conditional code. */ - -#define ETIR_S_C_HEADER_SIZE 4 /* Size of the header of a command */ - -/* VMS Global Symbol Directory Records (GSD/EGSD). */ - -#define GSD_S_K_ENTRIES 1 -#define GSD_S_C_ENTRIES 1 -#define GSD_S_C_PSC 0 -#define GSD_S_C_SYM 1 -#define GSD_S_C_EPM 2 -#define GSD_S_C_PRO 3 -#define GSD_S_C_SYMW 4 -#define GSD_S_C_EPMW 5 -#define GSD_S_C_PROW 6 -#define GSD_S_C_IDC 7 -#define GSD_S_C_ENV 8 -#define GSD_S_C_LSY 9 -#define GSD_S_C_LEPM 10 -#define GSD_S_C_LPRO 11 -#define GSD_S_C_SPSC 12 -#define GSD_S_C_SYMV 13 -#define GSD_S_C_EPMV 14 -#define GSD_S_C_PROV 15 -#define GSD_S_C_MAXRECTYP 15 - -#define EGSD_S_K_ENTRIES 2 /* Offset to first entry in record. */ -#define EGSD_S_C_ENTRIES 2 /* Offset to first entry in record. */ -#define EGSD_S_C_PSC 0 /* Psect definition. */ -#define EGSD_S_C_SYM 1 /* Symbol specification. */ -#define EGSD_S_C_IDC 2 /* Random entity check. */ -#define EGSD_S_C_SPSC 5 /* Shareable image psect definition. */ -#define EGSD_S_C_SYMV 6 /* Vectored (dual-valued) versions of SYM. */ -#define EGSD_S_C_SYMM 7 /* Masked versions of SYM. */ -#define EGSD_S_C_SYMG 8 /* EGST - gst version of SYM. */ -#define EGSD_S_C_MAXRECTYP 8 /* Maximum entry type defined. */ - -/* Program Section Definition. */ -#define GPS_S_M_PIC 1 -#define GPS_S_M_LIB 2 -#define GPS_S_M_OVR 4 -#define GPS_S_M_REL 8 -#define GPS_S_M_GBL 16 -#define GPS_S_M_SHR 32 -#define GPS_S_M_EXE 64 -#define GPS_S_M_RD 128 -#define GPS_S_M_WRT 256 -#define GPS_S_M_VEC 512 -#define GPS_S_K_NAME 9 -#define GPS_S_C_NAME 9 - -#define EGPS_S_B_ALIGN 4 -#define EGPS_S_W_FLAGS 6 -#define EGPS_S_L_ALLOC 8 -#define EGPS_S_B_NAMLNG 12 - -#define EGPS_S_V_PIC 0x0001 -#define EGPS_S_V_LIB 0x0002 -#define EGPS_S_V_OVR 0x0004 -#define EGPS_S_V_REL 0x0008 -#define EGPS_S_V_GBL 0x0010 -#define EGPS_S_V_SHR 0x0020 -#define EGPS_S_V_EXE 0x0040 -#define EGPS_S_V_RD 0x0080 -#define EGPS_S_V_WRT 0x0100 -#define EGPS_S_V_VEC 0x0200 -#define EGPS_S_V_NOMOD 0x0400 -#define EGPS_S_V_COM 0x0800 -#define EGPS_S_V_ALLOC_64BIT 0x1000 - -/* Symbol Defintion or Reference. */ -#define GSY_S_M_WEAK 1 -#define GSY_S_M_DEF 2 -#define GSY_S_M_UNI 4 -#define GSY_S_M_REL 8 - -#define EGSY_S_W_FLAGS 6 - -#define EGSY_S_V_WEAK 0x0001 -#define EGSY_S_V_DEF 0x0002 -#define EGSY_S_V_UNI 0x0004 -#define EGSY_S_V_REL 0x0008 -#define EGSY_S_V_COMM 0x0010 -#define EGSY_S_V_VECEP 0x0020 -#define EGSY_S_V_NORM 0x0040 -#define EGSY_S_V_QUAD_VAL 0x0080 - -#define LSY_S_M_DEF 2 -#define LSY_S_M_REL 8 - -#define ENV_S_M_DEF 1 -#define ENV_S_M_NESTED 2 - -/* Symbol Definition. */ -#define ESDF_S_L_VALUE 8 -#define ESDF_S_L_PSINDX 28 -#define ESDF_S_B_NAMLNG 32 - -/* Universal Symbol Definition. */ -#define EGST_S_W_FLAGS 6 -#define EGST_S_Q_LP_1 16 -#define EGST_S_Q_LP_2 24 -#define EGST_S_L_PSINDX 32 -#define EGST_S_B_NAMLNG 36 - -/* Symbol Reference. */ -#define ESRF_S_B_NAMLNG 8 - -/* Debugger symbol definitions: These are done by hand, - as no machine-readable version seems to be available. */ -#define DST_S_C_C 7 /* Language == "C". */ -#define DST_S_C_CXX 15 /* Language == "C++". */ -#define DST_S_C_EPILOG 127 -#define DST_S_C_VERSION 153 -#define DST_S_C_SOURCE 155 /* Source file. */ -#define DST_S_C_PROLOG 162 -#define DST_S_C_BLKBEG 176 /* Beginning of block. */ -#define DST_S_C_BLKEND 177 /* End of block. */ -#define DST_S_C_ENTRY 181 -#define DST_S_C_PSECT 184 -#define DST_S_C_LINE_NUM 185 /* Line Number. */ -#define DST_S_C_LBLORLIT 186 -#define DST_S_C_LABEL 187 -#define DST_S_C_MODBEG 188 /* Beginning of module. */ -#define DST_S_C_MODEND 189 /* End of module. */ -#define DST_S_C_RTNBEG 190 /* Beginning of routine.*/ -#define DST_S_C_RTNEND 191 /* End of routine. */ - -/* These are used with DST_S_C_LINE_NUM. */ -#define DST_S_C_LINE_NUM_HEADER_SIZE 4 - -#define DST_S_C_DELTA_PC_W 1 /* Incr PC. */ -#define DST_S_C_INCR_LINUM 2 /* Incr Line #. */ -#define DST_S_C_INCR_LINUM_W 3 /* Incr Line #. */ -#define DST_S_C_SET_LINUM_INCR 4 -#define DST_S_C_SET_LINUM_INCR_W 5 -#define DST_S_C_RESET_LINUM_INCR 6 -#define DST_S_C_BEG_STMT_MODE 7 -#define DST_S_C_END_STMT_MODE 8 -#define DST_S_C_SET_LINE_NUM 9 /* Set Line #. */ -#define DST_S_C_SET_PC 10 -#define DST_S_C_SET_PC_W 11 -#define DST_S_C_SET_PC_L 12 -#define DST_S_C_SET_STMTNUM 13 -#define DST_S_C_TERM 14 /* End of lines. */ -#define DST_S_C_TERM_W 15 /* End of lines. */ -#define DST_S_C_SET_ABS_PC 16 /* Set PC. */ -#define DST_S_C_DELTA_PC_L 17 /* Incr PC. */ -#define DST_S_C_INCR_LINUM_L 18 /* Incr Line #. */ -#define DST_S_C_SET_LINUM_B 19 /* Set Line #. */ -#define DST_S_C_SET_LINUM_L 20 /* Set Line #. */ -#define DST_S_C_TERM_L 21 /* End of lines. */ -/* These are used with DST_S_C_SOURCE */ -#define DST_S_C_SRC_DECLFILE 1 /* Declare source file. */ -#define DST_S_C_SRC_SETFILE 2 /* Set source file. */ -#define DST_S_C_SRC_SETREC_L 3 /* Set record, longword value. */ -#define DST_S_C_SRC_SETREC_W 4 /* Set record, word value. */ -#define DST_S_C_SRC_SETLNUM_L 5 /* Set line, longword value. */ -#define DST_S_C_SRC_SETLNUM_W 6 /* Set line, word value. */ -#define DST_S_C_SRC_INCRLNUM_B 7 /* Increment line. */ -#define DST_S_C_SRC_DEFLINES_W 10 /* # of line, word counter. */ -#define DST_S_C_SRC_DEFLINES_B 11 /* # of line, byte counter. */ -#define DST_S_C_SRC_FORMFEED 16 /* ^L counts as a record. */ - -#define DST_S_B_PCLINE_UNSBYTE 1 -#define DST_S_W_PCLINE_UNSWORD 1 -#define DST_S_L_PCLINE_UNSLONG 1 - -#define DST_S_B_MODBEG_NAME 14 -#define DST_S_L_RTNBEG_ADDRESS 5 -#define DST_S_B_RTNBEG_NAME 13 -#define DST_S_L_RTNEND_SIZE 5 - -/* These are used with DST_S_C_SOURCE. */ -#define DST_S_C_SOURCE_HEADER_SIZE 4 - -#define DST_S_B_SRC_DF_LENGTH 1 -#define DST_S_W_SRC_DF_FILEID 3 -#define DST_S_B_SRC_DF_FILENAME 20 -#define DST_S_B_SRC_UNSBYTE 1 -#define DST_S_W_SRC_UNSWORD 1 -#define DST_S_L_SRC_UNSLONG 1 - -/* The following are the codes for the various data types. Anything not on - the list is included under 'advanced_type'. */ -#define DBG_S_C_UCHAR 0x02 -#define DBG_S_C_USINT 0x03 -#define DBG_S_C_ULINT 0x04 -#define DBG_S_C_UQUAD 0x05 -#define DBG_S_C_SCHAR 0x06 -#define DBG_S_C_SSINT 0x07 -#define DBG_S_C_SLINT 0x08 -#define DBG_S_C_SQUAD 0x09 -#define DBG_S_C_REAL4 0x0a -#define DBG_S_C_REAL8 0x0b /* D_float double. */ -#define DBG_S_C_COMPLX4 0x0c /* 2xF_float complex float. */ -#define DBG_S_C_COMPLX8 0x0d /* 2xD_float complex double. */ -#define DBG_S_C_REAL8_G 0x1b /* G_float double. */ -#define DBG_S_C_COMPLX8_G 0x1d /* 2xG_float complex double. */ -#define DBG_S_C_FUNCTION_ADDR 0x17 -#define DBG_S_C_ADVANCED_TYPE 0xa3 -/* Some of these are just for future reference. [pr]. */ -#define DBG_S_C_UBITA 0x01 /* Unsigned, aligned bit field. */ -#define DBG_S_C_UBITU 0x22 /* Unsigned, unaligned bit field. */ -#define DBG_S_C_SBITA 0x29 /* Signed, aligned bit field. */ -#define DBG_S_C_SBITU 0x2a /* Signed, unaligned bit field. */ -#define DBG_S_C_CSTRING 0x2e /* Asciz ('\0' terminated) string. */ -#define DBG_S_C_WCHAR 0x38 /* Wchar_t. */ -/* These are descriptor class codes. */ -#define DSC_K_CLASS_S 0x01 /* Static (fixed length). */ -#define DSC_K_CLASS_D 0x02 /* Dynamic string (not via malloc!). */ -#define DSC_K_CLASS_A 0x04 /* Array. */ -#define DSC_K_CLASS_UBS 0x0d /* Unaligned bit string. */ - -/* These are the codes that are used to generate the definitions of struct - union and enum records. */ -#define DBG_S_C_ENUM_ITEM 0xa4 -#define DBG_S_C_ENUM_START 0xa5 -#define DBG_S_C_ENUM_END 0xa6 -#define DBG_S_C_STRUCT_ITEM DST_K_VFLAGS_BITOFFS /* 0xff */ -#define DBG_S_C_STRUCT_START 0xab -#define DBG_S_C_STRUCT_END 0xac -#define DST_K_TYPSPEC 0xaf /* Type specification. */ -/* These codes are used in the generation of the symbol definition records. */ -#define DST_K_VFLAGS_NOVAL 0x80 /* Struct definition only. */ -#define DST_K_VFLAGS_DSC 0xfa /* Descriptor used. */ -#define DST_K_VFLAGS_TVS 0xfb /* Trailing value specified. */ -#define DST_K_VS_FOLLOWS 0xfd /* Value spec follows. */ -#define DST_K_VFLAGS_BITOFFS 0xff /* Value contains bit offset. */ -#define DST_K_VALKIND_LITERAL 0 -#define DST_K_VALKIND_ADDR 1 -#define DST_K_VALKIND_DESC 2 -#define DST_K_VALKIND_REG 3 -#define DST_K_REG_VAX_AP 0x0c /* R12. */ -#define DST_K_REG_VAX_FP 0x0d /* R13. */ -#define DST_K_REG_VAX_SP 0x0e /* R14. */ -#define DST_V_VALKIND 0 /* Offset of valkind field. */ -#define DST_V_INDIRECT 2 /* Offset to indirect bit. */ -#define DST_V_DISP 3 /* Offset to displacement bit. */ -#define DST_V_REGNUM 4 /* Offset to register number. */ -#define DST_M_INDIRECT (1<contents */ - - unsigned char pdsc[8]; /* procedure descriptor */ - - struct module *modules; /* list of all compilation units */ - - struct dst_info *dst_info; - asection *dst_section; - unsigned char *dst_ptr_end; - unsigned int dst_ptr_offsets_count; /* # of offsets in following array */ - unsigned int *dst_ptr_offsets; /* array of saved image_ptr offsets */ - - /* Shared library support */ - bfd_vma symvva; /* relative virtual address of symbol vector */ - - /* Output routine storage */ - unsigned char *output_buf; /* output data */ - int push_level; - int pushed_size; - int length_pos; - int output_size; - int output_alignment; - - /* linkage index counter used by conditional store commands */ - int vms_linkage_index; - - /* see tc-alpha.c of gas for a description. */ - int flag_hash_long_names; /* -+, hash instead of truncate */ - int flag_show_after_trunc; /* -H, show hashing/truncation */ }; -#define PRIV(name) ((struct vms_private_data_struct *)abfd->tdata.any)->name +/* VMS records output buffer. */ -/* Used to keep extra VMS specific information for a given section. +struct vms_rec_wr +{ + /* Output buffer. */ + unsigned char *buf; - reloc_size holds the size of the relocation stream, note this - is very different from the number of relocations as VMS relocations - are variable length. + /* Current length of the record. */ + unsigned short int size; - reloc_stream is the actual stream of relocation entries. */ + /* Sub-record start offset. */ + unsigned short int subrec_offset; -struct vms_section_data_struct -{ - bfd_size_type reloc_size; - unsigned char *reloc_stream; - bfd_size_type reloc_offset; - flagword vflags; + /* Some records must have a size that is a multiple of the alignment. + Mustn't be 0. */ + unsigned short int align; }; -#define vms_section_data(sec) \ - ((struct vms_section_data_struct *)sec->used_by_bfd) - struct evax_private_udata_struct { asymbol *bsym; @@ -849,41 +97,47 @@ int lkindex; }; -#define SECTION_NAME_TEMPLATE "__SEC__%d" - -#if VMS_DEBUG +/* vms-misc.c. */ + +#define VMS_DEBUG 1 + +#if VMS_DEBUG extern void _bfd_vms_debug (int, char *, ...) ATTRIBUTE_PRINTF_2; extern void _bfd_hexdump (int, unsigned char *, int, int); - -#define vms_debug _bfd_vms_debug -#endif - -extern struct bfd_hash_entry * _bfd_vms_hash_newfunc (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); -extern void _bfd_vms_get_header_values (bfd *, unsigned char *, int *, int *); -extern int _bfd_vms_get_record (bfd *abf); -extern int _bfd_vms_next_record (bfd *abf); -extern char * _bfd_vms_save_sized_string (unsigned char *, int); -extern char * _bfd_vms_save_counted_string (unsigned char *); -extern void _bfd_vms_push (bfd *, uquad, int); -extern uquad _bfd_vms_pop (bfd *, int *); -extern void _bfd_vms_output_begin (bfd *, int, int); -extern void _bfd_vms_output_alignment (bfd *, int); -extern void _bfd_vms_output_push (bfd *); -extern void _bfd_vms_output_pop (bfd *); -extern void _bfd_vms_output_flush (bfd *); -extern void _bfd_vms_output_end (bfd *); -extern int _bfd_vms_output_check (bfd *, int); -extern void _bfd_vms_output_byte (bfd *, unsigned); -extern void _bfd_vms_output_short (bfd *, unsigned); -extern void _bfd_vms_output_long (bfd *, unsigned long); -extern void _bfd_vms_output_quad (bfd *, uquad); -extern void _bfd_vms_output_counted (bfd *, char *); -extern void _bfd_vms_output_dump (bfd *, unsigned char *, int); -extern void _bfd_vms_output_fill (bfd *, int, int); -extern char * _bfd_vms_length_hash_symbol (bfd *, const char *, int); -extern vms_symbol_entry * _bfd_vms_enter_symbol (bfd *, char *); -#define EGPS_S_V_NO_SHIFT 16 +#define vms_debug _bfd_vms_debug +#define vms_debug2(X) _bfd_vms_debug X +#else +#define vms_debug2(X) +#endif + +extern char * vms_get_module_name (const char *, bfd_boolean); +extern unsigned char *get_vms_time_string (void); +extern time_t vms_time_to_time_t (unsigned int hi, unsigned int lo); +extern time_t vms_rawtime_to_time_t (unsigned char *); +extern void vms_time_t_to_vms_time (time_t ut, unsigned int *hi, unsigned int *lo); +extern void vms_get_time (unsigned int *hi, unsigned int *lo); +extern void vms_raw_get_time (unsigned char *buf); + +extern char * _bfd_vms_save_sized_string (unsigned char *, int); +extern char * _bfd_vms_save_counted_string (unsigned char *); +extern void _bfd_vms_output_begin (struct vms_rec_wr *, int); +extern void _bfd_vms_output_alignment (struct vms_rec_wr *, int); +extern void _bfd_vms_output_begin_subrec (struct vms_rec_wr *, int); +extern void _bfd_vms_output_end_subrec (struct vms_rec_wr *); +extern void _bfd_vms_output_end (bfd *, struct vms_rec_wr *); +extern int _bfd_vms_output_check (struct vms_rec_wr *, int); +extern void _bfd_vms_output_byte (struct vms_rec_wr *, unsigned); +extern void _bfd_vms_output_short (struct vms_rec_wr *, unsigned); +extern void _bfd_vms_output_long (struct vms_rec_wr *, unsigned long); +extern void _bfd_vms_output_quad (struct vms_rec_wr *, bfd_vma); +extern void _bfd_vms_output_counted (struct vms_rec_wr *, const char *); +extern void _bfd_vms_output_dump (struct vms_rec_wr *, const unsigned char *, int); +extern void _bfd_vms_output_fill (struct vms_rec_wr *, int, int); +extern int _bfd_vms_convert_to_var_unix_filename (const char *); + +/* vms-alpha.c */ + +extern void bfd_vms_set_section_flags (bfd *, asection *, flagword, flagword); -extern void bfd_vms_set_section_flags (bfd *, asection *, flagword); #endif /* VMS_H */ diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/warning.m4 crash-6.1.6/=unpacked-tar1=/bfd/warning.m4 --- crash-5.1.6/=unpacked-tar1=/bfd/warning.m4 2008-02-04 19:43:50.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/warning.m4 2010-04-07 07:19:02.000000000 +0000 @@ -2,6 +2,7 @@ AC_DEFUN([AM_BINUTILS_WARNINGS],[ GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" +AC_EGREP_CPP([^[0-3]$],[__GNUC__],,GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wshadow") AC_ARG_ENABLE(werror, [ --enable-werror treat compile warnings as errors], @@ -11,7 +12,7 @@ *) AC_MSG_ERROR(bad value ${enableval} for --enable-werror) ;; esac]) -# Enable -Wno-format by default when using gcc on mingw +# Disable -Wformat by default when using gcc on mingw case "${host}" in *-*-mingw32*) if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/xcoff-target.h crash-6.1.6/=unpacked-tar1=/bfd/xcoff-target.h --- crash-5.1.6/=unpacked-tar1=/bfd/xcoff-target.h 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/xcoff-target.h 2010-08-18 12:24:07.000000000 +0000 @@ -51,6 +51,7 @@ #define coff_core_file_failing_command _bfd_nocore_core_file_failing_command #define coff_core_file_failing_signal _bfd_nocore_core_file_failing_signal #define coff_core_file_matches_executable_p _bfd_nocore_core_file_matches_executable_p +#define coff_core_file_pid _bfd_nocore_core_file_pid #define _bfd_xcoff_bfd_get_relocated_section_contents coff_bfd_get_relocated_section_contents #define _bfd_xcoff_bfd_relax_section coff_bfd_relax_section #define _bfd_xcoff_bfd_gc_sections coff_bfd_gc_sections diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/xcofflink.c crash-6.1.6/=unpacked-tar1=/bfd/xcofflink.c --- crash-5.1.6/=unpacked-tar1=/bfd/xcofflink.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/xcofflink.c 2011-02-28 18:30:16.000000000 +0000 @@ -1,6 +1,6 @@ /* POWER/PowerPC XCOFF linker support. Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Written by Ian Lance Taylor , Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -687,12 +687,12 @@ bfd_xcoff_split_import_path (bfd *abfd, const char *filename, const char **imppath, const char **impfile) { - const char *basename; + const char *base; size_t length; char *path; - basename = lbasename (filename); - length = basename - filename; + base = lbasename (filename); + length = base - filename; if (length == 0) /* The filename has no directory component, so use an empty path. */ *imppath = ""; @@ -711,7 +711,7 @@ path[length - 1] = 0; *imppath = path; } - *impfile = basename; + *impfile = base; return TRUE; } @@ -758,9 +758,9 @@ *pp != NULL; pp = &(*pp)->next, ++c) { - if (strcmp ((*pp)->path, imppath) == 0 - && strcmp ((*pp)->file, impfile) == 0 - && strcmp ((*pp)->member, impmember) == 0) + if (filename_cmp ((*pp)->path, imppath) == 0 + && filename_cmp ((*pp)->file, impfile) == 0 + && filename_cmp ((*pp)->member, impmember) == 0) break; } @@ -2233,7 +2233,8 @@ static bfd_boolean xcoff_link_check_dynamic_ar_symbols (bfd *abfd, struct bfd_link_info *info, - bfd_boolean *pneeded) + bfd_boolean *pneeded, + bfd **subsbfd) { asection *lsec; bfd_byte *contents; @@ -2291,7 +2292,8 @@ && (((struct xcoff_link_hash_entry *) h)->flags & XCOFF_DEF_DYNAMIC) == 0) { - if (! (*info->callbacks->add_archive_element) (info, abfd, name)) + if (!(*info->callbacks + ->add_archive_element) (info, abfd, name, subsbfd)) return FALSE; *pneeded = TRUE; return TRUE; @@ -2314,7 +2316,8 @@ static bfd_boolean xcoff_link_check_ar_symbols (bfd *abfd, struct bfd_link_info *info, - bfd_boolean *pneeded) + bfd_boolean *pneeded, + bfd **subsbfd) { bfd_size_type symesz; bfd_byte *esym; @@ -2325,7 +2328,7 @@ if ((abfd->flags & DYNAMIC) != 0 && ! info->static_link && info->output_bfd->xvec == abfd->xvec) - return xcoff_link_check_dynamic_ar_symbols (abfd, info, pneeded); + return xcoff_link_check_dynamic_ar_symbols (abfd, info, pneeded, subsbfd); symesz = bfd_coff_symesz (abfd); esym = (bfd_byte *) obj_coff_external_syms (abfd); @@ -2361,7 +2364,8 @@ || (((struct xcoff_link_hash_entry *) h)->flags & XCOFF_DEF_DYNAMIC) == 0)) { - if (! (*info->callbacks->add_archive_element) (info, abfd, name)) + if (!(*info->callbacks + ->add_archive_element) (info, abfd, name, subsbfd)) return FALSE; *pneeded = TRUE; return TRUE; @@ -2386,17 +2390,30 @@ bfd_boolean *pneeded) { bfd_boolean keep_syms_p; + bfd *oldbfd; keep_syms_p = (obj_coff_external_syms (abfd) != NULL); - if (! _bfd_coff_get_external_symbols (abfd)) + if (!_bfd_coff_get_external_symbols (abfd)) return FALSE; - if (! xcoff_link_check_ar_symbols (abfd, info, pneeded)) + oldbfd = abfd; + if (!xcoff_link_check_ar_symbols (abfd, info, pneeded, &abfd)) return FALSE; if (*pneeded) { - if (! xcoff_link_add_symbols (abfd, info)) + /* Potentially, the add_archive_element hook may have set a + substitute BFD for us. */ + if (abfd != oldbfd) + { + if (!keep_syms_p + && !_bfd_coff_free_symbols (oldbfd)) + return FALSE; + keep_syms_p = (obj_coff_external_syms (abfd) != NULL); + if (!_bfd_coff_get_external_symbols (abfd)) + return FALSE; + } + if (!xcoff_link_add_symbols (abfd, info)) return FALSE; if (info->keep_memory) keep_syms_p = TRUE; @@ -2404,7 +2421,7 @@ if (!keep_syms_p) { - if (! _bfd_coff_free_symbols (abfd)) + if (!_bfd_coff_free_symbols (abfd)) return FALSE; } @@ -3976,7 +3993,9 @@ abfd->format = bfd_object; abfd->iostream = (void *) bim; abfd->flags = BFD_IN_MEMORY; + abfd->iovec = &_bfd_memory_iovec; abfd->direction = write_direction; + abfd->origin = 0; abfd->where = 0; if (! bfd_xcoff_generate_rtinit (abfd, init, fini, rtld)) @@ -4016,7 +4035,7 @@ REFERENCE_BFD is the bfd to use in error messages about the relocation. */ static bfd_boolean -xcoff_create_ldrel (bfd *output_bfd, struct xcoff_final_link_info *finfo, +xcoff_create_ldrel (bfd *output_bfd, struct xcoff_final_link_info *flinfo, asection *output_section, bfd *reference_bfd, struct internal_reloc *irel, asection *hsec, struct xcoff_link_hash_entry *h) @@ -4061,7 +4080,7 @@ ldrel.l_rtype = (irel->r_size << 8) | irel->r_type; ldrel.l_rsecnm = output_section->target_index; - if (xcoff_hash_table (finfo->info)->textro + if (xcoff_hash_table (flinfo->info)->textro && strcmp (output_section->name, ".text") == 0) { (*_bfd_error_handler) @@ -4070,8 +4089,8 @@ bfd_set_error (bfd_error_invalid_operation); return FALSE; } - bfd_xcoff_swap_ldrel_out (output_bfd, &ldrel, finfo->ldrel); - finfo->ldrel += bfd_xcoff_ldrelsz (output_bfd); + bfd_xcoff_swap_ldrel_out (output_bfd, &ldrel, flinfo->ldrel); + flinfo->ldrel += bfd_xcoff_ldrelsz (output_bfd); return TRUE; } @@ -4079,7 +4098,7 @@ handles all the sections and relocations of the input file at once. */ static bfd_boolean -xcoff_link_input_bfd (struct xcoff_final_link_info *finfo, +xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo, bfd *input_bfd) { bfd *output_bfd; @@ -4108,11 +4127,11 @@ /* We can just skip DYNAMIC files, unless this is a static link. */ if ((input_bfd->flags & DYNAMIC) != 0 - && ! finfo->info->static_link) + && ! flinfo->info->static_link) return TRUE; /* Move all the symbols to the output file. */ - output_bfd = finfo->output_bfd; + output_bfd = flinfo->output_bfd; strings = NULL; syment_base = obj_raw_syment_count (output_bfd); isymesz = bfd_coff_symesz (input_bfd); @@ -4128,7 +4147,7 @@ #define N_BTSHFT n_btshft copy = FALSE; - if (! finfo->info->keep_memory) + if (! flinfo->info->keep_memory) copy = TRUE; hash = TRUE; if ((output_bfd->flags & BFD_TRADITIONAL_FORMAT) != 0) @@ -4145,8 +4164,8 @@ sym_hash = obj_xcoff_sym_hashes (input_bfd); csectpp = xcoff_data (input_bfd)->csects; debug_index = xcoff_data (input_bfd)->debug_indices; - isymp = finfo->internal_syms; - indexp = finfo->sym_indices; + isymp = flinfo->internal_syms; + indexp = flinfo->sym_indices; output_index = syment_base; while (esym < esym_end) { @@ -4236,7 +4255,7 @@ ldsym->l_ifile = 0; else { - BFD_ASSERT (impbfd->xvec == finfo->output_bfd->xvec); + BFD_ASSERT (impbfd->xvec == flinfo->output_bfd->xvec); ldsym->l_ifile = xcoff_data (impbfd)->import_file_id; } } @@ -4245,10 +4264,10 @@ ldsym->l_parm = 0; BFD_ASSERT (h->ldindx >= 0); - bfd_xcoff_swap_ldsym_out (finfo->output_bfd, ldsym, - (finfo->ldsym + bfd_xcoff_swap_ldsym_out (flinfo->output_bfd, ldsym, + (flinfo->ldsym + ((h->ldindx - 3) - * bfd_xcoff_ldsymsz (finfo->output_bfd)))); + * bfd_xcoff_ldsymsz (flinfo->output_bfd)))); h->ldsym = NULL; /* Fill in snentry now that we know the target_index. */ @@ -4307,12 +4326,12 @@ esym = (bfd_byte *) obj_coff_external_syms (input_bfd); esym_end = esym + obj_raw_syment_count (input_bfd) * isymesz; sym_hash = obj_xcoff_sym_hashes (input_bfd); - isymp = finfo->internal_syms; - indexp = finfo->sym_indices; + isymp = flinfo->internal_syms; + indexp = flinfo->sym_indices; csectpp = xcoff_data (input_bfd)->csects; lineno_counts = xcoff_data (input_bfd)->lineno_counts; debug_index = xcoff_data (input_bfd)->debug_indices; - outsym = finfo->outsyms; + outsym = flinfo->outsyms; incls = 0; oline = NULL; while (esym < esym_end) @@ -4347,7 +4366,7 @@ if (name == NULL) return FALSE; - indx = _bfd_stringtab_add (finfo->strtab, name, hash, copy); + indx = _bfd_stringtab_add (flinfo->strtab, name, hash, copy); if (indx == (bfd_size_type) -1) return FALSE; isym._n._n_n._n_offset = STRING_SIZE_SIZE + indx; @@ -4371,18 +4390,18 @@ have to write the symbol out twice. */ if (isym.n_sclass == C_FILE) { - if (finfo->last_file_index != -1 - && finfo->last_file.n_value != (bfd_vma) *indexp) + if (flinfo->last_file_index != -1 + && flinfo->last_file.n_value != (bfd_vma) *indexp) { /* We must correct the value of the last C_FILE entry. */ - finfo->last_file.n_value = *indexp; - if ((bfd_size_type) finfo->last_file_index >= syment_base) + flinfo->last_file.n_value = *indexp; + if ((bfd_size_type) flinfo->last_file_index >= syment_base) { /* The last C_FILE symbol is in this input file. */ bfd_coff_swap_sym_out (output_bfd, - (void *) &finfo->last_file, - (void *) (finfo->outsyms - + ((finfo->last_file_index + (void *) &flinfo->last_file, + (void *) (flinfo->outsyms + + ((flinfo->last_file_index - syment_base) * osymesz))); } @@ -4394,11 +4413,11 @@ file_ptr pos; bfd_coff_swap_sym_out (output_bfd, - (void *) &finfo->last_file, + (void *) &flinfo->last_file, (void *) outsym); pos = obj_sym_filepos (output_bfd); - pos += finfo->last_file_index * osymesz; + pos += flinfo->last_file_index * osymesz; if (bfd_seek (output_bfd, pos, SEEK_SET) != 0 || (bfd_bwrite (outsym, osymesz, output_bfd) != osymesz)) @@ -4406,8 +4425,8 @@ } } - finfo->last_file_index = *indexp; - finfo->last_file = isym; + flinfo->last_file_index = *indexp; + flinfo->last_file = isym; } /* The value of a C_BINCL or C_EINCL symbol is a file offset @@ -4416,7 +4435,7 @@ if (isym.n_sclass == C_BINCL || isym.n_sclass == C_EINCL) { - isym.n_value = finfo->line_filepos; + isym.n_value = flinfo->line_filepos; ++incls; } /* The value of a C_BSTAT symbol is the symbol table @@ -4430,7 +4449,7 @@ { long symindx; - symindx = finfo->sym_indices[indx]; + symindx = flinfo->sym_indices[indx]; if (symindx < 0) isym.n_value = 0; else @@ -4481,7 +4500,7 @@ return FALSE; } filename = strings + aux.x_file.x_n.x_offset; - indx = _bfd_stringtab_add (finfo->strtab, filename, + indx = _bfd_stringtab_add (flinfo->strtab, filename, hash, copy); if (indx == (bfd_size_type) -1) return FALSE; @@ -4509,7 +4528,7 @@ { long symindx; - symindx = finfo->sym_indices[indx]; + symindx = flinfo->sym_indices[indx]; if (symindx < 0) { aux.x_csect.x_scnlen.l = 0; @@ -4538,13 +4557,13 @@ the index of the next symbol we are going to include. I don't know if this is entirely right. */ - while (finfo->sym_indices[indx] < 0 + while (flinfo->sym_indices[indx] < 0 && indx < obj_raw_syment_count (input_bfd)) ++indx; if (indx >= obj_raw_syment_count (input_bfd)) indx = output_index; else - indx = finfo->sym_indices[indx]; + indx = flinfo->sym_indices[indx]; aux.x_sym.x_fcnary.x_fcn.x_endndx.l = indx; } @@ -4555,7 +4574,7 @@ { long symindx; - symindx = finfo->sym_indices[indx]; + symindx = flinfo->sym_indices[indx]; if (symindx < 0) aux.x_sym.x_tagndx.l = 0; else @@ -4597,7 +4616,7 @@ pos = enclosing->line_filepos; amt = linesz * enc_count; if (bfd_seek (input_bfd, pos, SEEK_SET) != 0 - || (bfd_bread (finfo->linenos, amt, input_bfd) + || (bfd_bread (flinfo->linenos, amt, input_bfd) != amt)) return FALSE; oline = enclosing; @@ -4607,7 +4626,7 @@ symbol index. */ linoff = (aux.x_sym.x_fcnary.x_fcn.x_lnnoptr - enclosing->line_filepos); - linp = finfo->linenos + linoff; + linp = flinfo->linenos + linoff; bfd_coff_swap_lineno_in (input_bfd, linp, &lin); lin.l_addr.l_symndx = *indexp; bfd_coff_swap_lineno_out (output_bfd, &lin, linp); @@ -4629,7 +4648,7 @@ + o->output_section->lineno_count * linesz); amt = linesz * *lineno_counts; if (bfd_seek (output_bfd, pos, SEEK_SET) != 0 - || bfd_bwrite (finfo->linenos + linoff, + || bfd_bwrite (flinfo->linenos + linoff, amt, output_bfd) != amt) return FALSE; o->output_section->lineno_count += *lineno_counts; @@ -4649,10 +4668,10 @@ /* Update any C_BINCL or C_EINCL symbols that refer to a line number in the range we just output. */ - iisp = finfo->internal_syms; + iisp = flinfo->internal_syms; iispend = iisp + obj_raw_syment_count (input_bfd); - iindp = finfo->sym_indices; - oos = finfo->outsyms; + iindp = flinfo->sym_indices; + oos = flinfo->outsyms; range_start = enclosing->line_filepos + linoff; range_end = range_start + *lineno_counts * linesz; while (iisp < iispend) @@ -4704,27 +4723,27 @@ symbol will be the first symbol in the next input file. In the normal case, this will save us from writing out the C_FILE symbol again. */ - if (finfo->last_file_index != -1 - && (bfd_size_type) finfo->last_file_index >= syment_base) + if (flinfo->last_file_index != -1 + && (bfd_size_type) flinfo->last_file_index >= syment_base) { - finfo->last_file.n_value = output_index; - bfd_coff_swap_sym_out (output_bfd, (void *) &finfo->last_file, - (void *) (finfo->outsyms - + ((finfo->last_file_index - syment_base) + flinfo->last_file.n_value = output_index; + bfd_coff_swap_sym_out (output_bfd, (void *) &flinfo->last_file, + (void *) (flinfo->outsyms + + ((flinfo->last_file_index - syment_base) * osymesz))); } /* Write the modified symbols to the output file. */ - if (outsym > finfo->outsyms) + if (outsym > flinfo->outsyms) { file_ptr pos = obj_sym_filepos (output_bfd) + syment_base * osymesz; - bfd_size_type amt = outsym - finfo->outsyms; + bfd_size_type amt = outsym - flinfo->outsyms; if (bfd_seek (output_bfd, pos, SEEK_SET) != 0 - || bfd_bwrite (finfo->outsyms, amt, output_bfd) != amt) + || bfd_bwrite (flinfo->outsyms, amt, output_bfd) != amt) return FALSE; BFD_ASSERT ((obj_raw_syment_count (output_bfd) - + (outsym - finfo->outsyms) / osymesz) + + (outsym - flinfo->outsyms) / osymesz) == output_index); obj_raw_syment_count (output_bfd) = output_index; @@ -4756,9 +4775,9 @@ else { bfd_size_type sz = o->rawsize ? o->rawsize : o->size; - if (!bfd_get_section_contents (input_bfd, o, finfo->contents, 0, sz)) + if (!bfd_get_section_contents (input_bfd, o, flinfo->contents, 0, sz)) return FALSE; - contents = finfo->contents; + contents = flinfo->contents; } if ((o->flags & SEC_RELOC) != 0) @@ -4774,27 +4793,27 @@ /* Read in the relocs. */ target_index = o->output_section->target_index; internal_relocs = (xcoff_read_internal_relocs - (input_bfd, o, FALSE, finfo->external_relocs, + (input_bfd, o, FALSE, flinfo->external_relocs, TRUE, - (finfo->section_info[target_index].relocs + (flinfo->section_info[target_index].relocs + o->output_section->reloc_count))); if (internal_relocs == NULL) return FALSE; /* Call processor specific code to relocate the section contents. */ - if (! bfd_coff_relocate_section (output_bfd, finfo->info, + if (! bfd_coff_relocate_section (output_bfd, flinfo->info, input_bfd, o, contents, internal_relocs, - finfo->internal_syms, + flinfo->internal_syms, xcoff_data (input_bfd)->csects)) return FALSE; offset = o->output_section->vma + o->output_offset - o->vma; irel = internal_relocs; irelend = irel + o->reloc_count; - rel_hash = (finfo->section_info[target_index].rel_hashes + rel_hash = (flinfo->section_info[target_index].rel_hashes + o->output_section->reloc_count); for (; irel < irelend; irel++, rel_hash++) { @@ -4813,7 +4832,7 @@ else h = obj_xcoff_sym_hashes (input_bfd)[r_symndx]; - if (r_symndx != -1 && finfo->info->strip != strip_all) + if (r_symndx != -1 && flinfo->info->strip != strip_all) { if (h != NULL && h->smclas != XMC_TD @@ -4839,10 +4858,10 @@ bfd_size_type amt; amt = sizeof (* n); - n = bfd_alloc (finfo->output_bfd, amt); + n = bfd_alloc (flinfo->output_bfd, amt); if (n == NULL) return FALSE; - si = finfo->section_info + target_index; + si = flinfo->section_info + target_index; n->next = si->toc_rel_hashes; n->h = h; n->rel = irel; @@ -4870,7 +4889,7 @@ { long indx; - indx = finfo->sym_indices[r_symndx]; + indx = flinfo->sym_indices[r_symndx]; if (indx == -1) { @@ -4879,7 +4898,7 @@ /* Relocations against a TC0 TOC anchor are automatically transformed to be against the TOC anchor in the output file. */ - is = finfo->internal_syms + r_symndx; + is = flinfo->internal_syms + r_symndx; if (is->n_sclass == C_HIDEXT && is->n_numaux > 0) { @@ -4898,7 +4917,7 @@ (void *) &aux); if (SMTYP_SMTYP (aux.x_csect.x_smtyp) == XTY_SD && aux.x_csect.x_smclas == XMC_TC0) - indx = finfo->toc_symindx; + indx = flinfo->toc_symindx; } } @@ -4915,7 +4934,7 @@ /* This reloc is against a symbol we are stripping. It would be possible to handle this case, but I don't think it's worth it. */ - is = finfo->internal_syms + r_symndx; + is = flinfo->internal_syms + r_symndx; name = (_bfd_coff_internal_syment_name (input_bfd, is, buf)); @@ -4923,15 +4942,15 @@ if (name == NULL) return FALSE; - if (! ((*finfo->info->callbacks->unattached_reloc) - (finfo->info, name, input_bfd, o, + if (! ((*flinfo->info->callbacks->unattached_reloc) + (flinfo->info, name, input_bfd, o, irel->r_vaddr))) return FALSE; } } } - if (xcoff_need_ldrel_p (finfo->info, irel, h)) + if (xcoff_need_ldrel_p (flinfo->info, irel, h)) { asection *sec; @@ -4941,7 +4960,7 @@ sec = xcoff_data (input_bfd)->csects[r_symndx]; else sec = xcoff_symbol_section (h); - if (!xcoff_create_ldrel (output_bfd, finfo, + if (!xcoff_create_ldrel (output_bfd, flinfo, o->output_section, input_bfd, irel, sec, h)) return FALSE; @@ -4960,7 +4979,7 @@ obj_coff_keep_syms (input_bfd) = keep_syms; - if (! finfo->info->keep_memory) + if (! flinfo->info->keep_memory) { if (! _bfd_coff_free_symbols (input_bfd)) return FALSE; @@ -5016,7 +5035,7 @@ symbol. */ static bfd_boolean -xcoff_find_tc0 (bfd *output_bfd, struct xcoff_final_link_info *finfo) +xcoff_find_tc0 (bfd *output_bfd, struct xcoff_final_link_info *flinfo) { bfd_vma toc_start, toc_end, start, end, best_address; asection *sec; @@ -5032,7 +5051,7 @@ toc_start = ~(bfd_vma) 0; toc_end = 0; section_index = -1; - for (input_bfd = finfo->info->input_bfds; + for (input_bfd = flinfo->info->input_bfds; input_bfd != NULL; input_bfd = input_bfd->link_next) for (sec = input_bfd->sections; sec != NULL; sec = sec->next) @@ -5064,7 +5083,7 @@ { /* Find the lowest TOC csect that is still within range of TOC_END. */ best_address = toc_end; - for (input_bfd = finfo->info->input_bfds; + for (input_bfd = flinfo->info->input_bfds; input_bfd != NULL; input_bfd = input_bfd->link_next) for (sec = input_bfd->sections; sec != NULL; sec = sec->next) @@ -5092,19 +5111,19 @@ } /* Record the chosen TOC value. */ - finfo->toc_symindx = obj_raw_syment_count (output_bfd); + flinfo->toc_symindx = obj_raw_syment_count (output_bfd); xcoff_data (output_bfd)->toc = best_address; xcoff_data (output_bfd)->sntoc = section_index; /* Fill out the TC0 symbol. */ - if (!bfd_xcoff_put_symbol_name (output_bfd, finfo->strtab, &irsym, "TOC")) + if (!bfd_xcoff_put_symbol_name (output_bfd, flinfo->strtab, &irsym, "TOC")) return FALSE; irsym.n_value = best_address; irsym.n_scnum = section_index; irsym.n_sclass = C_HIDEXT; irsym.n_type = T_NULL; irsym.n_numaux = 1; - bfd_coff_swap_sym_out (output_bfd, &irsym, finfo->outsyms); + bfd_coff_swap_sym_out (output_bfd, &irsym, flinfo->outsyms); /* Fill out the auxillary csect information. */ memset (&iraux, 0, sizeof iraux); @@ -5112,14 +5131,14 @@ iraux.x_csect.x_smclas = XMC_TC0; iraux.x_csect.x_scnlen.l = 0; bfd_coff_swap_aux_out (output_bfd, &iraux, T_NULL, C_HIDEXT, 0, 1, - finfo->outsyms + bfd_coff_symesz (output_bfd)); + flinfo->outsyms + bfd_coff_symesz (output_bfd)); /* Write the contents to the file. */ pos = obj_sym_filepos (output_bfd); pos += obj_raw_syment_count (output_bfd) * bfd_coff_symesz (output_bfd); size = 2 * bfd_coff_symesz (output_bfd); if (bfd_seek (output_bfd, pos, SEEK_SET) != 0 - || bfd_bwrite (finfo->outsyms, size, output_bfd) != size) + || bfd_bwrite (flinfo->outsyms, size, output_bfd) != size) return FALSE; obj_raw_syment_count (output_bfd) += 2; @@ -5131,7 +5150,7 @@ static bfd_boolean xcoff_write_global_symbol (struct xcoff_link_hash_entry *h, void * inf) { - struct xcoff_final_link_info *finfo = (struct xcoff_final_link_info *) inf; + struct xcoff_final_link_info *flinfo = (struct xcoff_final_link_info *) inf; bfd *output_bfd; bfd_byte *outsym; struct internal_syment isym; @@ -5140,8 +5159,8 @@ file_ptr pos; bfd_size_type amt; - output_bfd = finfo->output_bfd; - outsym = finfo->outsyms; + output_bfd = flinfo->output_bfd; + outsym = flinfo->outsyms; if (h->root.type == bfd_link_hash_warning) { @@ -5151,7 +5170,7 @@ } /* If this symbol was garbage collected, just skip it. */ - if (xcoff_hash_table (finfo->info)->gc + if (xcoff_hash_table (flinfo->info)->gc && (h->flags & XCOFF_MARK) == 0) return TRUE; @@ -5252,16 +5271,16 @@ BFD_ASSERT (h->ldindx >= 0); bfd_xcoff_swap_ldsym_out (output_bfd, ldsym, - (finfo->ldsym + + (flinfo->ldsym + (h->ldindx - 3) - * bfd_xcoff_ldsymsz(finfo->output_bfd))); + * bfd_xcoff_ldsymsz(flinfo->output_bfd))); h->ldsym = NULL; } /* If this symbol needs global linkage code, write it out. */ if (h->root.type == bfd_link_hash_defined && (h->root.u.def.section - == xcoff_hash_table (finfo->info)->linkage_section)) + == xcoff_hash_table (flinfo->info)->linkage_section)) { bfd_byte *p; bfd_vma tocoff; @@ -5307,7 +5326,7 @@ tocsec = h->toc_section; osec = tocsec->output_section; oindx = osec->target_index; - irel = finfo->section_info[oindx].relocs + osec->reloc_count; + irel = flinfo->section_info[oindx].relocs + osec->reloc_count; irel->r_vaddr = (osec->vma + tocsec->output_offset + h->u.toc_offset); @@ -5350,18 +5369,18 @@ return FALSE; irel->r_type = R_POS; - finfo->section_info[oindx].rel_hashes[osec->reloc_count] = NULL; + flinfo->section_info[oindx].rel_hashes[osec->reloc_count] = NULL; ++osec->reloc_count; - if (!xcoff_create_ldrel (output_bfd, finfo, osec, + if (!xcoff_create_ldrel (output_bfd, flinfo, osec, output_bfd, irel, NULL, h)) return FALSE; /* We need to emit a symbol to define a csect which holds the reloc. */ - if (finfo->info->strip != strip_all) + if (flinfo->info->strip != strip_all) { - result = bfd_xcoff_put_symbol_name (output_bfd, finfo->strtab, + result = bfd_xcoff_put_symbol_name (output_bfd, flinfo->strtab, &irsym, h->root.root.string); if (!result) return FALSE; @@ -5387,14 +5406,14 @@ pos = obj_sym_filepos (output_bfd); pos += (obj_raw_syment_count (output_bfd) * bfd_coff_symesz (output_bfd)); - amt = outsym - finfo->outsyms; + amt = outsym - flinfo->outsyms; if (bfd_seek (output_bfd, pos, SEEK_SET) != 0 - || bfd_bwrite (finfo->outsyms, amt, output_bfd) != amt) + || bfd_bwrite (flinfo->outsyms, amt, output_bfd) != amt) return FALSE; obj_raw_syment_count (output_bfd) += - (outsym - finfo->outsyms) / bfd_coff_symesz (output_bfd); + (outsym - flinfo->outsyms) / bfd_coff_symesz (output_bfd); - outsym = finfo->outsyms; + outsym = flinfo->outsyms; } } } @@ -5412,7 +5431,7 @@ if ((h->flags & XCOFF_DESCRIPTOR) != 0 && h->root.type == bfd_link_hash_defined && (h->root.u.def.section - == xcoff_hash_table (finfo->info)->descriptor_section)) + == xcoff_hash_table (flinfo->info)->descriptor_section)) { asection *sec; asection *osec; @@ -5448,17 +5467,17 @@ || hentry->root.type == bfd_link_hash_defweak)); esec = hentry->root.u.def.section; - irel = finfo->section_info[oindx].relocs + osec->reloc_count; + irel = flinfo->section_info[oindx].relocs + osec->reloc_count; irel->r_vaddr = (osec->vma + sec->output_offset + h->root.u.def.value); irel->r_symndx = esec->output_section->target_index; irel->r_type = R_POS; irel->r_size = reloc_size; - finfo->section_info[oindx].rel_hashes[osec->reloc_count] = NULL; + flinfo->section_info[oindx].rel_hashes[osec->reloc_count] = NULL; ++osec->reloc_count; - if (!xcoff_create_ldrel (output_bfd, finfo, osec, + if (!xcoff_create_ldrel (output_bfd, flinfo, osec, output_bfd, irel, esec, NULL)) return FALSE; @@ -5500,34 +5519,34 @@ irel->r_symndx = tsec->output_section->target_index; irel->r_type = R_POS; irel->r_size = reloc_size; - finfo->section_info[oindx].rel_hashes[osec->reloc_count] = NULL; + flinfo->section_info[oindx].rel_hashes[osec->reloc_count] = NULL; ++osec->reloc_count; - if (!xcoff_create_ldrel (output_bfd, finfo, osec, + if (!xcoff_create_ldrel (output_bfd, flinfo, osec, output_bfd, irel, tsec, NULL)) return FALSE; } - if (h->indx >= 0 || finfo->info->strip == strip_all) + if (h->indx >= 0 || flinfo->info->strip == strip_all) { - BFD_ASSERT (outsym == finfo->outsyms); + BFD_ASSERT (outsym == flinfo->outsyms); return TRUE; } if (h->indx != -2 - && (finfo->info->strip == strip_all - || (finfo->info->strip == strip_some - && bfd_hash_lookup (finfo->info->keep_hash, h->root.root.string, + && (flinfo->info->strip == strip_all + || (flinfo->info->strip == strip_some + && bfd_hash_lookup (flinfo->info->keep_hash, h->root.root.string, FALSE, FALSE) == NULL))) { - BFD_ASSERT (outsym == finfo->outsyms); + BFD_ASSERT (outsym == flinfo->outsyms); return TRUE; } if (h->indx != -2 && (h->flags & (XCOFF_REF_REGULAR | XCOFF_DEF_REGULAR)) == 0) { - BFD_ASSERT (outsym == finfo->outsyms); + BFD_ASSERT (outsym == flinfo->outsyms); return TRUE; } @@ -5535,7 +5554,7 @@ h->indx = obj_raw_syment_count (output_bfd); - result = bfd_xcoff_put_symbol_name (output_bfd, finfo->strtab, &isym, + result = bfd_xcoff_put_symbol_name (output_bfd, flinfo->strtab, &isym, h->root.root.string); if (!result) return FALSE; @@ -5583,7 +5602,7 @@ if ((h->flags & XCOFF_HAS_SIZE) != 0) { - for (l = xcoff_hash_table (finfo->info)->size_list; + for (l = xcoff_hash_table (flinfo->info)->size_list; l != NULL; l = l->next) { @@ -5642,12 +5661,12 @@ pos = obj_sym_filepos (output_bfd); pos += obj_raw_syment_count (output_bfd) * bfd_coff_symesz (output_bfd); - amt = outsym - finfo->outsyms; + amt = outsym - flinfo->outsyms; if (bfd_seek (output_bfd, pos, SEEK_SET) != 0 - || bfd_bwrite (finfo->outsyms, amt, output_bfd) != amt) + || bfd_bwrite (flinfo->outsyms, amt, output_bfd) != amt) return FALSE; obj_raw_syment_count (output_bfd) += - (outsym - finfo->outsyms) / bfd_coff_symesz (output_bfd); + (outsym - flinfo->outsyms) / bfd_coff_symesz (output_bfd); return TRUE; } @@ -5656,7 +5675,7 @@ static bfd_boolean xcoff_reloc_link_order (bfd *output_bfd, - struct xcoff_final_link_info *finfo, + struct xcoff_final_link_info *flinfo, asection *output_section, struct bfd_link_order *link_order) { @@ -5683,13 +5702,13 @@ } h = ((struct xcoff_link_hash_entry *) - bfd_wrapped_link_hash_lookup (output_bfd, finfo->info, + bfd_wrapped_link_hash_lookup (output_bfd, flinfo->info, link_order->u.reloc.p->u.name, FALSE, FALSE, TRUE)); if (h == NULL) { - if (! ((*finfo->info->callbacks->unattached_reloc) - (finfo->info, link_order->u.reloc.p->u.name, NULL, NULL, (bfd_vma) 0))) + if (! ((*flinfo->info->callbacks->unattached_reloc) + (flinfo->info, link_order->u.reloc.p->u.name, NULL, NULL, (bfd_vma) 0))) return FALSE; return TRUE; } @@ -5728,8 +5747,8 @@ case bfd_reloc_outofrange: abort (); case bfd_reloc_overflow: - if (! ((*finfo->info->callbacks->reloc_overflow) - (finfo->info, NULL, link_order->u.reloc.p->u.name, + if (! ((*flinfo->info->callbacks->reloc_overflow) + (flinfo->info, NULL, link_order->u.reloc.p->u.name, howto->name, addend, NULL, NULL, (bfd_vma) 0))) { free (buf); @@ -5746,9 +5765,9 @@ /* Store the reloc information in the right place. It will get swapped and written out at the end of the final_link routine. */ - irel = (finfo->section_info[output_section->target_index].relocs + irel = (flinfo->section_info[output_section->target_index].relocs + output_section->reloc_count); - rel_hash_ptr = (finfo->section_info[output_section->target_index].rel_hashes + rel_hash_ptr = (flinfo->section_info[output_section->target_index].rel_hashes + output_section->reloc_count); memset (irel, 0, sizeof (struct internal_reloc)); @@ -5774,9 +5793,9 @@ ++output_section->reloc_count; /* Now output the reloc to the .loader section. */ - if (xcoff_hash_table (finfo->info)->loader_section) + if (xcoff_hash_table (flinfo->info)->loader_section) { - if (!xcoff_create_ldrel (output_bfd, finfo, output_section, + if (!xcoff_create_ldrel (output_bfd, flinfo, output_section, output_bfd, irel, hsec, h)) return FALSE; } @@ -5790,7 +5809,7 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, struct bfd_link_info *info) { bfd_size_type symesz; - struct xcoff_final_link_info finfo; + struct xcoff_final_link_info flinfo; asection *o; struct bfd_link_order *p; bfd_size_type max_contents_size; @@ -5813,38 +5832,38 @@ symesz = bfd_coff_symesz (abfd); - finfo.info = info; - finfo.output_bfd = abfd; - finfo.strtab = NULL; - finfo.section_info = NULL; - finfo.last_file_index = -1; - finfo.toc_symindx = -1; - finfo.internal_syms = NULL; - finfo.sym_indices = NULL; - finfo.outsyms = NULL; - finfo.linenos = NULL; - finfo.contents = NULL; - finfo.external_relocs = NULL; + flinfo.info = info; + flinfo.output_bfd = abfd; + flinfo.strtab = NULL; + flinfo.section_info = NULL; + flinfo.last_file_index = -1; + flinfo.toc_symindx = -1; + flinfo.internal_syms = NULL; + flinfo.sym_indices = NULL; + flinfo.outsyms = NULL; + flinfo.linenos = NULL; + flinfo.contents = NULL; + flinfo.external_relocs = NULL; if (xcoff_hash_table (info)->loader_section) { - finfo.ldsym = (xcoff_hash_table (info)->loader_section->contents + flinfo.ldsym = (xcoff_hash_table (info)->loader_section->contents + bfd_xcoff_ldhdrsz (abfd)); - finfo.ldrel = (xcoff_hash_table (info)->loader_section->contents + flinfo.ldrel = (xcoff_hash_table (info)->loader_section->contents + bfd_xcoff_ldhdrsz (abfd) + (xcoff_hash_table (info)->ldhdr.l_nsyms * bfd_xcoff_ldsymsz (abfd))); } else { - finfo.ldsym = NULL; - finfo.ldrel = NULL; + flinfo.ldsym = NULL; + flinfo.ldrel = NULL; } xcoff_data (abfd)->coff.link_info = info; - finfo.strtab = _bfd_stringtab_init (); - if (finfo.strtab == NULL) + flinfo.strtab = _bfd_stringtab_init (); + if (flinfo.strtab == NULL) goto error_return; /* Count the relocation entries required for the output file. @@ -5872,10 +5891,13 @@ o->reloc_count += sec->reloc_count; - if (sec->rawsize > max_contents_size) - max_contents_size = sec->rawsize; - if (sec->size > max_contents_size) - max_contents_size = sec->size; + if ((sec->flags & SEC_IN_MEMORY) == 0) + { + if (sec->rawsize > max_contents_size) + max_contents_size = sec->rawsize; + if (sec->size > max_contents_size) + max_contents_size = sec->size; + } if (coff_section_data (sec->owner, sec) != NULL && xcoff_section_data (sec->owner, sec) != NULL && (xcoff_section_data (sec->owner, sec)->lineno_count @@ -6001,14 +6023,14 @@ the target_index fields are 1 based. */ amt = abfd->section_count + 1; amt *= sizeof (struct xcoff_link_section_info); - finfo.section_info = bfd_malloc (amt); - if (finfo.section_info == NULL) + flinfo.section_info = bfd_malloc (amt); + if (flinfo.section_info == NULL) goto error_return; for (i = 0; i <= abfd->section_count; i++) { - finfo.section_info[i].relocs = NULL; - finfo.section_info[i].rel_hashes = NULL; - finfo.section_info[i].toc_rel_hashes = NULL; + flinfo.section_info[i].relocs = NULL; + flinfo.section_info[i].rel_hashes = NULL; + flinfo.section_info[i].toc_rel_hashes = NULL; } } @@ -6049,14 +6071,14 @@ would be slow. */ amt = o->reloc_count; amt *= sizeof (struct internal_reloc); - finfo.section_info[o->target_index].relocs = bfd_malloc (amt); + flinfo.section_info[o->target_index].relocs = bfd_malloc (amt); amt = o->reloc_count; amt *= sizeof (struct xcoff_link_hash_entry *); - finfo.section_info[o->target_index].rel_hashes = bfd_malloc (amt); + flinfo.section_info[o->target_index].rel_hashes = bfd_malloc (amt); - if (finfo.section_info[o->target_index].relocs == NULL - || finfo.section_info[o->target_index].rel_hashes == NULL) + if (flinfo.section_info[o->target_index].relocs == NULL + || flinfo.section_info[o->target_index].rel_hashes == NULL) goto error_return; if (o->reloc_count > max_output_reloc_count) @@ -6067,7 +6089,7 @@ /* We now know the size of the relocs, so we can determine the file positions of the line numbers. */ line_filepos = rel_filepos; - finfo.line_filepos = line_filepos; + flinfo.line_filepos = line_filepos; linesz = bfd_coff_linesz (abfd); for (o = abfd->sections; o != NULL; o = o->next) { @@ -6104,35 +6126,35 @@ /* Allocate some buffers used while linking. */ amt = max_sym_count * sizeof (struct internal_syment); - finfo.internal_syms = bfd_malloc (amt); + flinfo.internal_syms = bfd_malloc (amt); amt = max_sym_count * sizeof (long); - finfo.sym_indices = bfd_malloc (amt); + flinfo.sym_indices = bfd_malloc (amt); amt = (max_sym_count + 1) * symesz; - finfo.outsyms = bfd_malloc (amt); + flinfo.outsyms = bfd_malloc (amt); amt = max_lineno_count * bfd_coff_linesz (abfd); - finfo.linenos = bfd_malloc (amt); + flinfo.linenos = bfd_malloc (amt); amt = max_contents_size; - finfo.contents = bfd_malloc (amt); + flinfo.contents = bfd_malloc (amt); amt = max_reloc_count * relsz; - finfo.external_relocs = bfd_malloc (amt); + flinfo.external_relocs = bfd_malloc (amt); - if ((finfo.internal_syms == NULL && max_sym_count > 0) - || (finfo.sym_indices == NULL && max_sym_count > 0) - || finfo.outsyms == NULL - || (finfo.linenos == NULL && max_lineno_count > 0) - || (finfo.contents == NULL && max_contents_size > 0) - || (finfo.external_relocs == NULL && max_reloc_count > 0)) + if ((flinfo.internal_syms == NULL && max_sym_count > 0) + || (flinfo.sym_indices == NULL && max_sym_count > 0) + || flinfo.outsyms == NULL + || (flinfo.linenos == NULL && max_lineno_count > 0) + || (flinfo.contents == NULL && max_contents_size > 0) + || (flinfo.external_relocs == NULL && max_reloc_count > 0)) goto error_return; obj_raw_syment_count (abfd) = 0; /* Find a TOC symbol, if we need one. */ - if (!xcoff_find_tc0 (abfd, &finfo)) + if (!xcoff_find_tc0 (abfd, &flinfo)) goto error_return; /* We now know the position of everything in the file, except that @@ -6150,7 +6172,7 @@ sub = p->u.indirect.section->owner; if (! sub->output_has_begun) { - if (! xcoff_link_input_bfd (&finfo, sub)) + if (! xcoff_link_input_bfd (&flinfo, sub)) goto error_return; sub->output_has_begun = TRUE; } @@ -6158,7 +6180,7 @@ else if (p->type == bfd_section_reloc_link_order || p->type == bfd_symbol_reloc_link_order) { - if (! xcoff_reloc_link_order (abfd, &finfo, o, p)) + if (! xcoff_reloc_link_order (abfd, &flinfo, o, p)) goto error_return; } else @@ -6170,42 +6192,42 @@ } /* Free up the buffers used by xcoff_link_input_bfd. */ - if (finfo.internal_syms != NULL) + if (flinfo.internal_syms != NULL) { - free (finfo.internal_syms); - finfo.internal_syms = NULL; + free (flinfo.internal_syms); + flinfo.internal_syms = NULL; } - if (finfo.sym_indices != NULL) + if (flinfo.sym_indices != NULL) { - free (finfo.sym_indices); - finfo.sym_indices = NULL; + free (flinfo.sym_indices); + flinfo.sym_indices = NULL; } - if (finfo.linenos != NULL) + if (flinfo.linenos != NULL) { - free (finfo.linenos); - finfo.linenos = NULL; + free (flinfo.linenos); + flinfo.linenos = NULL; } - if (finfo.contents != NULL) + if (flinfo.contents != NULL) { - free (finfo.contents); - finfo.contents = NULL; + free (flinfo.contents); + flinfo.contents = NULL; } - if (finfo.external_relocs != NULL) + if (flinfo.external_relocs != NULL) { - free (finfo.external_relocs); - finfo.external_relocs = NULL; + free (flinfo.external_relocs); + flinfo.external_relocs = NULL; } /* The value of the last C_FILE symbol is supposed to be -1. Write it out again. */ - if (finfo.last_file_index != -1) + if (flinfo.last_file_index != -1) { - finfo.last_file.n_value = -(bfd_vma) 1; - bfd_coff_swap_sym_out (abfd, (void *) &finfo.last_file, - (void *) finfo.outsyms); - pos = obj_sym_filepos (abfd) + finfo.last_file_index * symesz; + flinfo.last_file.n_value = -(bfd_vma) 1; + bfd_coff_swap_sym_out (abfd, (void *) &flinfo.last_file, + (void *) flinfo.outsyms); + pos = obj_sym_filepos (abfd) + flinfo.last_file_index * symesz; if (bfd_seek (abfd, pos, SEEK_SET) != 0 - || bfd_bwrite (finfo.outsyms, symesz, abfd) != symesz) + || bfd_bwrite (flinfo.outsyms, symesz, abfd) != symesz) goto error_return; } @@ -6213,12 +6235,12 @@ input files. */ xcoff_link_hash_traverse (xcoff_hash_table (info), xcoff_write_global_symbol, - (void *) &finfo); + (void *) &flinfo); - if (finfo.outsyms != NULL) + if (flinfo.outsyms != NULL) { - free (finfo.outsyms); - finfo.outsyms = NULL; + free (flinfo.outsyms); + flinfo.outsyms = NULL; } /* Now that we have written out all the global symbols, we know the @@ -6248,9 +6270,9 @@ if (o->reloc_count == 0) continue; - irel = finfo.section_info[o->target_index].relocs; + irel = flinfo.section_info[o->target_index].relocs; irelend = irel + o->reloc_count; - rel_hash = finfo.section_info[o->target_index].rel_hashes; + rel_hash = flinfo.section_info[o->target_index].rel_hashes; for (; irel < irelend; irel++, rel_hash++, erel += relsz) { if (*rel_hash != NULL) @@ -6267,7 +6289,7 @@ } } - for (toc_rel_hash = finfo.section_info[o->target_index].toc_rel_hashes; + for (toc_rel_hash = flinfo.section_info[o->target_index].toc_rel_hashes; toc_rel_hash != NULL; toc_rel_hash = toc_rel_hash->next) { @@ -6287,11 +6309,11 @@ appear in the symbol table, which is not necessarily by address. So we sort them here. There may be a better way to do this. */ - qsort ((void *) finfo.section_info[o->target_index].relocs, + qsort ((void *) flinfo.section_info[o->target_index].relocs, o->reloc_count, sizeof (struct internal_reloc), xcoff_sort_relocs); - irel = finfo.section_info[o->target_index].relocs; + irel = flinfo.section_info[o->target_index].relocs; irelend = irel + o->reloc_count; erel = external_relocs; for (; irel < irelend; irel++, rel_hash++, erel += relsz) @@ -6310,26 +6332,26 @@ } /* Free up the section information. */ - if (finfo.section_info != NULL) + if (flinfo.section_info != NULL) { unsigned int i; for (i = 0; i < abfd->section_count; i++) { - if (finfo.section_info[i].relocs != NULL) - free (finfo.section_info[i].relocs); - if (finfo.section_info[i].rel_hashes != NULL) - free (finfo.section_info[i].rel_hashes); + if (flinfo.section_info[i].relocs != NULL) + free (flinfo.section_info[i].relocs); + if (flinfo.section_info[i].rel_hashes != NULL) + free (flinfo.section_info[i].rel_hashes); } - free (finfo.section_info); - finfo.section_info = NULL; + free (flinfo.section_info); + flinfo.section_info = NULL; } /* Write out the loader section contents. */ o = xcoff_hash_table (info)->loader_section; if (o) { - BFD_ASSERT ((bfd_byte *) finfo.ldrel + BFD_ASSERT ((bfd_byte *) flinfo.ldrel == (xcoff_hash_table (info)->loader_section->contents + xcoff_hash_table (info)->ldhdr.l_impoff)); if (!bfd_set_section_contents (abfd, o->output_section, o->contents, @@ -6362,15 +6384,15 @@ if (bfd_seek (abfd, pos, SEEK_SET) != 0) goto error_return; H_PUT_32 (abfd, - _bfd_stringtab_size (finfo.strtab) + STRING_SIZE_SIZE, + _bfd_stringtab_size (flinfo.strtab) + STRING_SIZE_SIZE, strbuf); amt = STRING_SIZE_SIZE; if (bfd_bwrite (strbuf, amt, abfd) != amt) goto error_return; - if (! _bfd_stringtab_emit (abfd, finfo.strtab)) + if (! _bfd_stringtab_emit (abfd, flinfo.strtab)) goto error_return; - _bfd_stringtab_free (finfo.strtab); + _bfd_stringtab_free (flinfo.strtab); /* Write out the debugging string table. */ o = xcoff_hash_table (info)->debug_section; @@ -6395,35 +6417,35 @@ return TRUE; error_return: - if (finfo.strtab != NULL) - _bfd_stringtab_free (finfo.strtab); + if (flinfo.strtab != NULL) + _bfd_stringtab_free (flinfo.strtab); - if (finfo.section_info != NULL) + if (flinfo.section_info != NULL) { unsigned int i; for (i = 0; i < abfd->section_count; i++) { - if (finfo.section_info[i].relocs != NULL) - free (finfo.section_info[i].relocs); - if (finfo.section_info[i].rel_hashes != NULL) - free (finfo.section_info[i].rel_hashes); - } - free (finfo.section_info); - } - - if (finfo.internal_syms != NULL) - free (finfo.internal_syms); - if (finfo.sym_indices != NULL) - free (finfo.sym_indices); - if (finfo.outsyms != NULL) - free (finfo.outsyms); - if (finfo.linenos != NULL) - free (finfo.linenos); - if (finfo.contents != NULL) - free (finfo.contents); - if (finfo.external_relocs != NULL) - free (finfo.external_relocs); + if (flinfo.section_info[i].relocs != NULL) + free (flinfo.section_info[i].relocs); + if (flinfo.section_info[i].rel_hashes != NULL) + free (flinfo.section_info[i].rel_hashes); + } + free (flinfo.section_info); + } + + if (flinfo.internal_syms != NULL) + free (flinfo.internal_syms); + if (flinfo.sym_indices != NULL) + free (flinfo.sym_indices); + if (flinfo.outsyms != NULL) + free (flinfo.outsyms); + if (flinfo.linenos != NULL) + free (flinfo.linenos); + if (flinfo.contents != NULL) + free (flinfo.contents); + if (flinfo.external_relocs != NULL) + free (flinfo.external_relocs); if (external_relocs != NULL) free (external_relocs); return FALSE; diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/xsym.c crash-6.1.6/=unpacked-tar1=/bfd/xsym.c --- crash-5.1.6/=unpacked-tar1=/bfd/xsym.c 2009-04-16 23:06:59.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/xsym.c 2010-06-27 04:07:53.000000000 +0000 @@ -1,6 +1,6 @@ /* xSYM symbol-file support for BFD. Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009 Free Software Foundation, Inc. + 2009, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -51,6 +51,8 @@ #define bfd_sym_bfd_link_hash_table_free _bfd_generic_link_hash_table_free #define bfd_sym_bfd_link_add_symbols _bfd_generic_link_add_symbols #define bfd_sym_bfd_link_just_syms _bfd_generic_link_just_syms +#define bfd_sym_bfd_copy_link_hash_symbol_type \ + _bfd_generic_copy_link_hash_symbol_type #define bfd_sym_bfd_final_link _bfd_generic_final_link #define bfd_sym_bfd_link_split_section _bfd_generic_link_split_section #define bfd_sym_get_section_contents_in_window _bfd_generic_get_section_contents_in_window @@ -82,11 +84,11 @@ compute_offset (unsigned long first_page, unsigned long page_size, unsigned long entry_size, - unsigned long index) + unsigned long sym_index) { unsigned long entries_per_page = page_size / entry_size; - unsigned long page_number = first_page + (index / entries_per_page); - unsigned long page_offset = (index % entries_per_page) * entry_size; + unsigned long page_number = first_page + (sym_index / entries_per_page); + unsigned long page_offset = (sym_index % entries_per_page) * entry_size; return (page_number * page_size) + page_offset; } @@ -528,7 +530,7 @@ int bfd_sym_fetch_resources_table_entry (bfd *abfd, bfd_sym_resources_table_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_resources_table_entry *); unsigned long offset; @@ -540,7 +542,7 @@ BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return -1; switch (sdata->version) @@ -564,7 +566,7 @@ offset = compute_offset (sdata->header.dshb_rte.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -579,7 +581,7 @@ int bfd_sym_fetch_modules_table_entry (bfd *abfd, bfd_sym_modules_table_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_modules_table_entry *); unsigned long offset; @@ -591,7 +593,7 @@ BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return -1; switch (sdata->version) @@ -615,7 +617,7 @@ offset = compute_offset (sdata->header.dshb_mte.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -630,7 +632,7 @@ int bfd_sym_fetch_file_references_table_entry (bfd *abfd, bfd_sym_file_references_table_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_file_references_table_entry *); unsigned long offset; @@ -642,7 +644,7 @@ BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return -1; switch (sdata->version) @@ -665,7 +667,7 @@ offset = compute_offset (sdata->header.dshb_frte.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -680,7 +682,7 @@ int bfd_sym_fetch_contained_modules_table_entry (bfd *abfd, bfd_sym_contained_modules_table_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_contained_modules_table_entry *); unsigned long offset; @@ -692,7 +694,7 @@ BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return -1; switch (sdata->version) @@ -715,7 +717,7 @@ offset = compute_offset (sdata->header.dshb_cmte.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -730,7 +732,7 @@ int bfd_sym_fetch_contained_variables_table_entry (bfd *abfd, bfd_sym_contained_variables_table_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_contained_variables_table_entry *); unsigned long offset; @@ -742,7 +744,7 @@ BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return -1; switch (sdata->version) @@ -765,7 +767,7 @@ offset = compute_offset (sdata->header.dshb_cvte.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -780,7 +782,7 @@ int bfd_sym_fetch_contained_statements_table_entry (bfd *abfd, bfd_sym_contained_statements_table_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_contained_statements_table_entry *); unsigned long offset; @@ -792,7 +794,7 @@ BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return -1; switch (sdata->version) @@ -815,7 +817,7 @@ offset = compute_offset (sdata->header.dshb_csnte.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -830,7 +832,7 @@ int bfd_sym_fetch_contained_labels_table_entry (bfd *abfd, bfd_sym_contained_labels_table_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_contained_labels_table_entry *); unsigned long offset; @@ -842,7 +844,7 @@ BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return -1; switch (sdata->version) @@ -865,7 +867,7 @@ offset = compute_offset (sdata->header.dshb_clte.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -880,7 +882,7 @@ int bfd_sym_fetch_contained_types_table_entry (bfd *abfd, bfd_sym_contained_types_table_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_contained_types_table_entry *); unsigned long offset; @@ -892,7 +894,7 @@ BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return -1; switch (sdata->version) @@ -915,7 +917,7 @@ offset = compute_offset (sdata->header.dshb_ctte.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -930,7 +932,7 @@ int bfd_sym_fetch_file_references_index_table_entry (bfd *abfd, bfd_sym_file_references_index_table_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_file_references_index_table_entry *); unsigned long offset; @@ -942,7 +944,7 @@ BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return -1; switch (sdata->version) @@ -965,7 +967,7 @@ offset = compute_offset (sdata->header.dshb_fite.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -980,7 +982,7 @@ int bfd_sym_fetch_constant_pool_entry (bfd *abfd, bfd_sym_constant_pool_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_constant_pool_entry *); unsigned long offset; @@ -992,7 +994,7 @@ BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return -1; switch (sdata->version) @@ -1015,7 +1017,7 @@ offset = compute_offset (sdata->header.dshb_fite.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -1030,7 +1032,7 @@ int bfd_sym_fetch_type_table_entry (bfd *abfd, bfd_sym_type_table_entry *entry, - unsigned long index) + unsigned long sym_index) { void (*parser) (unsigned char *, size_t, bfd_sym_type_table_entry *); unsigned long offset; @@ -1062,7 +1064,7 @@ offset = compute_offset (sdata->header.dshb_tte.dti_first_page, sdata->header.dshb_page_size, - entry_size, index); + entry_size, sym_index); if (bfd_seek (abfd, offset, SEEK_SET) < 0) return -1; @@ -1080,10 +1082,8 @@ unsigned long offset) { unsigned char buf[4]; - bfd_sym_data_struct *sdata = NULL; BFD_ASSERT (bfd_sym_valid (abfd)); - sdata = abfd->tdata.sym_data; if (offset == 0) return -1; @@ -1122,7 +1122,7 @@ int bfd_sym_fetch_type_table_information (bfd *abfd, bfd_sym_type_information_table_entry *entry, - unsigned long index) + unsigned long sym_index) { bfd_sym_type_table_entry tindex; bfd_sym_data_struct *sdata = NULL; @@ -1132,10 +1132,10 @@ if (sdata->header.dshb_tte.dti_object_count <= 99) return -1; - if (index < 100) + if (sym_index < 100) return -1; - if (bfd_sym_fetch_type_table_entry (abfd, &tindex, index - 100) < 0) + if (bfd_sym_fetch_type_table_entry (abfd, &tindex, sym_index - 100) < 0) return -1; if (bfd_sym_fetch_type_information_table_entry (abfd, entry, tindex) < 0) return -1; @@ -1144,30 +1144,30 @@ } const unsigned char * -bfd_sym_symbol_name (bfd *abfd, unsigned long index) +bfd_sym_symbol_name (bfd *abfd, unsigned long sym_index) { bfd_sym_data_struct *sdata = NULL; BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - if (index == 0) + if (sym_index == 0) return (const unsigned char *) ""; - index *= 2; - if ((index / sdata->header.dshb_page_size) + sym_index *= 2; + if ((sym_index / sdata->header.dshb_page_size) > sdata->header.dshb_nte.dti_page_count) return (const unsigned char *) "\09[INVALID]"; - return (const unsigned char *) sdata->name_table + index; + return (const unsigned char *) sdata->name_table + sym_index; } const unsigned char * -bfd_sym_module_name (bfd *abfd, unsigned long index) +bfd_sym_module_name (bfd *abfd, unsigned long sym_index) { bfd_sym_modules_table_entry entry; - if (bfd_sym_fetch_modules_table_entry (abfd, &entry, index) < 0) + if (bfd_sym_fetch_modules_table_entry (abfd, &entry, sym_index) < 0) return (const unsigned char *) "\09[INVALID]"; return bfd_sym_symbol_name (abfd, entry.mte_nte_index); @@ -1857,24 +1857,24 @@ FILE *f, unsigned char *entry) { - unsigned long index; + unsigned long sym_index; unsigned long offset; bfd_sym_data_struct *sdata = NULL; BFD_ASSERT (bfd_sym_valid (abfd)); sdata = abfd->tdata.sym_data; - index = (entry - sdata->name_table) / 2; + sym_index = (entry - sdata->name_table) / 2; if (sdata->version >= BFD_SYM_VERSION_3_4 && entry[0] == 255 && entry[1] == 0) { unsigned short length = bfd_getb16 (entry + 2); - fprintf (f, "[%8lu] \"%.*s\"\n", index, length, entry + 4); + fprintf (f, "[%8lu] \"%.*s\"\n", sym_index, length, entry + 4); offset = 2 + length + 1; } else { if (! (entry[0] == 0 || (entry[0] == 1 && entry[1] == '\0'))) - fprintf (f, "[%8lu] \"%.*s\"\n", index, entry[0], entry + 1); + fprintf (f, "[%8lu] \"%.*s\"\n", sym_index, entry[0], entry + 1); if (sdata->version >= BFD_SYM_VERSION_3_4) offset = entry[0] + 2; @@ -2176,7 +2176,7 @@ bfd_sym_display_type_information_table (bfd *abfd, FILE *f) { unsigned long i; - bfd_sym_type_table_entry index; + bfd_sym_type_table_entry sym_index; bfd_sym_type_information_table_entry entry; bfd_sym_data_struct *sdata = NULL; @@ -2194,13 +2194,13 @@ for (i = 100; i <= sdata->header.dshb_tte.dti_object_count; i++) { - if (bfd_sym_fetch_type_table_entry (abfd, &index, i - 100) < 0) + if (bfd_sym_fetch_type_table_entry (abfd, &sym_index, i - 100) < 0) fprintf (f, " [%8lu] [INVALID]\n", i); else { - fprintf (f, " [%8lu] (TINFO %lu) ", i, index); + fprintf (f, " [%8lu] (TINFO %lu) ", i, sym_index); - if (bfd_sym_fetch_type_information_table_entry (abfd, &entry, index) < 0) + if (bfd_sym_fetch_type_information_table_entry (abfd, &entry, sym_index) < 0) fprintf (f, "[INVALID]"); else bfd_sym_print_type_information_table_entry (abfd, f, &entry); diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/xtensa-isa.c crash-6.1.6/=unpacked-tar1=/bfd/xtensa-isa.c --- crash-5.1.6/=unpacked-tar1=/bfd/xtensa-isa.c 2008-11-21 22:13:31.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/xtensa-isa.c 2011-02-28 18:30:16.000000000 +0000 @@ -1,5 +1,5 @@ /* Configurable Xtensa ISA support. - Copyright 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. + Copyright 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -1028,15 +1028,14 @@ uint32 test_val, orig_val; intop = get_operand (intisa, opc, opnd); - if (!intop) return -1; + if (!intop) + return -1; if (!intop->encode) { /* This is a default operand for a field. How can we tell if the value fits in the field? Write the value into the field, read it back, and then make sure we get the same value. */ - - xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; static xtensa_insnbuf tmpbuf = 0; int slot_id; @@ -1081,9 +1080,9 @@ was successfully encoded is to decode it and check if it matches the original value. */ orig_val = *valp; - if ((*intop->encode) (valp) || - (test_val = *valp, (*intop->decode) (&test_val)) || - test_val != orig_val) + if ((*intop->encode) (valp) + || (test_val = *valp, (*intop->decode) (&test_val)) + || test_val != orig_val) { xtisa_errno = xtensa_isa_bad_value; sprintf (xtisa_error_msg, "cannot encode operand value 0x%08x", *valp); @@ -1365,7 +1364,7 @@ /* The expected number of regfiles is small; use a linear search. */ for (n = 0; n < intisa->num_regfiles; n++) { - if (!strcmp (intisa->regfiles[n].name, name)) + if (!filename_cmp (intisa->regfiles[n].name, name)) return n; } @@ -1395,7 +1394,7 @@ as their parents. */ if (intisa->regfiles[n].parent != n) continue; - if (!strcmp (intisa->regfiles[n].shortname, shortname)) + if (!filename_cmp (intisa->regfiles[n].shortname, shortname)) return n; } diff -Nru crash-5.1.6/=unpacked-tar1=/bfd/xtensa-modules.c crash-6.1.6/=unpacked-tar1=/bfd/xtensa-modules.c --- crash-5.1.6/=unpacked-tar1=/bfd/xtensa-modules.c 2009-09-02 07:18:37.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/bfd/xtensa-modules.c 2010-05-28 18:10:45.000000000 +0000 @@ -1,11 +1,11 @@ /* Xtensa configuration-specific ISA information. - Copyright 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright 2003, 2004, 2005 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 3 of the + 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, @@ -29,6 +29,13 @@ { "LBEG", 0, 0 }, { "LEND", 1, 0 }, { "LCOUNT", 2, 0 }, + { "BR", 4, 0 }, + { "ACCLO", 16, 0 }, + { "ACCHI", 17, 0 }, + { "M0", 32, 0 }, + { "M1", 33, 0 }, + { "M2", 34, 0 }, + { "M3", 35, 0 }, { "PTEVADDR", 83, 0 }, { "MMID", 89, 0 }, { "DDR", 104, 0 }, @@ -73,6 +80,8 @@ { "PS", 230, 0 }, { "MISC0", 244, 0 }, { "MISC1", 245, 0 }, + { "MISC2", 246, 0 }, + { "MISC3", 247, 0 }, { "INTENABLE", 228, 0 }, { "DBREAKA0", 144, 0 }, { "DBREAKC0", 160, 0 }, @@ -88,12 +97,14 @@ { "DTLBCFG", 92, 0 }, { "CPENABLE", 224, 0 }, { "SCOMPARE1", 12, 0 }, - { "THREADPTR", 231, 1 } + { "THREADPTR", 231, 1 }, + { "FCR", 232, 1 }, + { "FSR", 233, 1 } }; -#define NUM_SYSREGS 63 -#define MAX_SPECIAL_REG 245 -#define MAX_USER_REG 231 +#define NUM_SYSREGS 74 +#define MAX_SPECIAL_REG 247 +#define MAX_USER_REG 233 /* Processor states. */ @@ -103,7 +114,7 @@ { "PC", 32, 0 }, { "ICOUNT", 32, 0 }, { "DDR", 32, 0 }, - { "INTERRUPT", 22, 0 }, + { "INTERRUPT", 32, 0 }, { "CCOUNT", 32, 0 }, { "XTSYNC", 1, 0 }, { "VECBASE", 22, 0 }, @@ -135,8 +146,8 @@ { "PSEXCM", 1, 0 }, { "DEPC", 32, 0 }, { "EXCVADDR", 32, 0 }, - { "WindowBase", 3, 0 }, - { "WindowStart", 8, 0 }, + { "WindowBase", 4, 0 }, + { "WindowStart", 16, 0 }, { "PSCALLINC", 2, 0 }, { "PSOWB", 4, 0 }, { "LBEG", 32, 0 }, @@ -147,8 +158,11 @@ { "LITBEN", 1, 0 }, { "MISC0", 32, 0 }, { "MISC1", 32, 0 }, + { "MISC2", 32, 0 }, + { "MISC3", 32, 0 }, + { "ACC", 40, 0 }, { "InOCDMode", 1, 0 }, - { "INTENABLE", 22, 0 }, + { "INTENABLE", 32, 0 }, { "DBREAKA0", 32, 0 }, { "DBREAKC0", 8, 0 }, { "DBREAKA1", 32, 0 }, @@ -168,85 +182,119 @@ { "INSTPGSZID4", 2, 0 }, { "DATAPGSZID4", 2, 0 }, { "PTBASE", 10, 0 }, - { "CPENABLE", 8, 0 }, - { "SCOMPARE1", 32, 0 } -}; - -#define NUM_STATES 71 - -enum xtensa_state_id { - STATE_LCOUNT, - STATE_PC, - STATE_ICOUNT, - STATE_DDR, - STATE_INTERRUPT, - STATE_CCOUNT, - STATE_XTSYNC, - STATE_VECBASE, - STATE_EPC1, - STATE_EPC2, - STATE_EPC3, - STATE_EPC4, - STATE_EPC5, - STATE_EPC6, - STATE_EPC7, - STATE_EXCSAVE1, - STATE_EXCSAVE2, - STATE_EXCSAVE3, - STATE_EXCSAVE4, - STATE_EXCSAVE5, - STATE_EXCSAVE6, - STATE_EXCSAVE7, - STATE_EPS2, - STATE_EPS3, - STATE_EPS4, - STATE_EPS5, - STATE_EPS6, - STATE_EPS7, - STATE_EXCCAUSE, - STATE_PSINTLEVEL, - STATE_PSUM, - STATE_PSWOE, - STATE_PSRING, - STATE_PSEXCM, - STATE_DEPC, - STATE_EXCVADDR, - STATE_WindowBase, - STATE_WindowStart, - STATE_PSCALLINC, - STATE_PSOWB, - STATE_LBEG, - STATE_LEND, - STATE_SAR, - STATE_THREADPTR, - STATE_LITBADDR, - STATE_LITBEN, - STATE_MISC0, - STATE_MISC1, - STATE_InOCDMode, - STATE_INTENABLE, - STATE_DBREAKA0, - STATE_DBREAKC0, - STATE_DBREAKA1, - STATE_DBREAKC1, - STATE_IBREAKA0, - STATE_IBREAKA1, - STATE_IBREAKENABLE, - STATE_ICOUNTLEVEL, - STATE_DEBUGCAUSE, - STATE_DBNUM, - STATE_CCOMPARE0, - STATE_CCOMPARE1, - STATE_CCOMPARE2, - STATE_ASID3, - STATE_ASID2, - STATE_ASID1, - STATE_INSTPGSZID4, - STATE_DATAPGSZID4, - STATE_PTBASE, - STATE_CPENABLE, - STATE_SCOMPARE1 -}; + { "CPENABLE", 1, 0 }, + { "SCOMPARE1", 32, 0 }, + { "RoundMode", 2, 0 }, + { "InvalidEnable", 1, 0 }, + { "DivZeroEnable", 1, 0 }, + { "OverflowEnable", 1, 0 }, + { "UnderflowEnable", 1, 0 }, + { "InexactEnable", 1, 0 }, + { "InvalidFlag", 1, 0 }, + { "DivZeroFlag", 1, 0 }, + { "OverflowFlag", 1, 0 }, + { "UnderflowFlag", 1, 0 }, + { "InexactFlag", 1, 0 }, + { "FPreserved20", 20, 0 }, + { "FPreserved20a", 20, 0 }, + { "FPreserved5", 5, 0 }, + { "FPreserved7", 7, 0 } +}; + +#define NUM_STATES 89 + +/* Macros for xtensa_state numbers (for use in iclasses because the + state numbers are not available when the iclass table is generated). */ + +#define STATE_LCOUNT 0 +#define STATE_PC 1 +#define STATE_ICOUNT 2 +#define STATE_DDR 3 +#define STATE_INTERRUPT 4 +#define STATE_CCOUNT 5 +#define STATE_XTSYNC 6 +#define STATE_VECBASE 7 +#define STATE_EPC1 8 +#define STATE_EPC2 9 +#define STATE_EPC3 10 +#define STATE_EPC4 11 +#define STATE_EPC5 12 +#define STATE_EPC6 13 +#define STATE_EPC7 14 +#define STATE_EXCSAVE1 15 +#define STATE_EXCSAVE2 16 +#define STATE_EXCSAVE3 17 +#define STATE_EXCSAVE4 18 +#define STATE_EXCSAVE5 19 +#define STATE_EXCSAVE6 20 +#define STATE_EXCSAVE7 21 +#define STATE_EPS2 22 +#define STATE_EPS3 23 +#define STATE_EPS4 24 +#define STATE_EPS5 25 +#define STATE_EPS6 26 +#define STATE_EPS7 27 +#define STATE_EXCCAUSE 28 +#define STATE_PSINTLEVEL 29 +#define STATE_PSUM 30 +#define STATE_PSWOE 31 +#define STATE_PSRING 32 +#define STATE_PSEXCM 33 +#define STATE_DEPC 34 +#define STATE_EXCVADDR 35 +#define STATE_WindowBase 36 +#define STATE_WindowStart 37 +#define STATE_PSCALLINC 38 +#define STATE_PSOWB 39 +#define STATE_LBEG 40 +#define STATE_LEND 41 +#define STATE_SAR 42 +#define STATE_THREADPTR 43 +#define STATE_LITBADDR 44 +#define STATE_LITBEN 45 +#define STATE_MISC0 46 +#define STATE_MISC1 47 +#define STATE_MISC2 48 +#define STATE_MISC3 49 +#define STATE_ACC 50 +#define STATE_InOCDMode 51 +#define STATE_INTENABLE 52 +#define STATE_DBREAKA0 53 +#define STATE_DBREAKC0 54 +#define STATE_DBREAKA1 55 +#define STATE_DBREAKC1 56 +#define STATE_IBREAKA0 57 +#define STATE_IBREAKA1 58 +#define STATE_IBREAKENABLE 59 +#define STATE_ICOUNTLEVEL 60 +#define STATE_DEBUGCAUSE 61 +#define STATE_DBNUM 62 +#define STATE_CCOMPARE0 63 +#define STATE_CCOMPARE1 64 +#define STATE_CCOMPARE2 65 +#define STATE_ASID3 66 +#define STATE_ASID2 67 +#define STATE_ASID1 68 +#define STATE_INSTPGSZID4 69 +#define STATE_DATAPGSZID4 70 +#define STATE_PTBASE 71 +#define STATE_CPENABLE 72 +#define STATE_SCOMPARE1 73 +#define STATE_RoundMode 74 +#define STATE_InvalidEnable 75 +#define STATE_DivZeroEnable 76 +#define STATE_OverflowEnable 77 +#define STATE_UnderflowEnable 78 +#define STATE_InexactEnable 79 +#define STATE_InvalidFlag 80 +#define STATE_DivZeroFlag 81 +#define STATE_OverflowFlag 82 +#define STATE_UnderflowFlag 83 +#define STATE_InexactFlag 84 +#define STATE_FPreserved20 85 +#define STATE_FPreserved20a 86 +#define STATE_FPreserved5 87 +#define STATE_FPreserved7 88 /* Field definitions. */ @@ -255,7 +303,7 @@ Field_t_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } @@ -264,43 +312,43 @@ { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16); + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); } static unsigned -Field_s_Slot_inst_get (const xtensa_insnbuf insn) +Field_t_Slot_inst16a_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } static void -Field_s_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_t_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); } static unsigned -Field_r_Slot_inst_get (const xtensa_insnbuf insn) +Field_t_Slot_inst16b_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } static void -Field_r_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_t_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); } static unsigned -Field_op2_Slot_inst_get (const xtensa_insnbuf insn) +Field_t_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); @@ -308,7 +356,7 @@ } static void -Field_op2_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_t_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; @@ -316,221 +364,224 @@ } static unsigned -Field_op1_Slot_inst_get (const xtensa_insnbuf insn) +Field_t_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); return tie_t; } static void -Field_op1_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_t_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); } static unsigned -Field_op0_Slot_inst_get (const xtensa_insnbuf insn) +Field_t_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 8) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); return tie_t; } static void -Field_op0_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_t_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf00000) | (tie_t << 20); + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); } static unsigned -Field_n_Slot_inst_get (const xtensa_insnbuf insn) +Field_t_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 2) | ((insn[0] << 12) >> 30); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); return tie_t; } static void -Field_n_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_t_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 30) >> 30; - insn[0] = (insn[0] & ~0xc0000) | (tie_t << 18); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); } static unsigned -Field_m_Slot_inst_get (const xtensa_insnbuf insn) +Field_bbi4_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 2) | ((insn[0] << 14) >> 30); + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); return tie_t; } static void -Field_m_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_bbi4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 30) >> 30; - insn[0] = (insn[0] & ~0x30000) | (tie_t << 16); + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); } static unsigned -Field_sr_Slot_inst_get (const xtensa_insnbuf insn) +Field_bbi_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); - tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } static void -Field_sr_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_bbi_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); - tie_t = (val << 24) >> 28; - insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); } static unsigned -Field_st_Slot_inst_get (const xtensa_insnbuf insn) +Field_bbi_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); - tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); return tie_t; } static void -Field_st_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_bbi_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16); - tie_t = (val << 24) >> 28; - insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); } static unsigned -Field_thi3_Slot_inst_get (const xtensa_insnbuf insn) +Field_imm12_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 3) | ((insn[0] << 12) >> 29); + tie_t = (tie_t << 12) | ((insn[0] << 8) >> 20); return tie_t; } static void -Field_thi3_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_imm12_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 29) >> 29; - insn[0] = (insn[0] & ~0xe0000) | (tie_t << 17); + tie_t = (val << 20) >> 20; + insn[0] = (insn[0] & ~0xfff000) | (tie_t << 12); } static unsigned -Field_op0_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_imm8_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + tie_t = (tie_t << 8) | ((insn[0] << 8) >> 24); return tie_t; } static void -Field_op0_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_imm8_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); + tie_t = (val << 24) >> 24; + insn[0] = (insn[0] & ~0xff0000) | (tie_t << 16); } static unsigned -Field_t_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_imm8_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + tie_t = (tie_t << 8) | ((insn[0] << 12) >> 24); return tie_t; } static void -Field_t_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_imm8_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); + tie_t = (val << 24) >> 24; + insn[0] = (insn[0] & ~0xff000) | (tie_t << 12); } static unsigned -Field_r_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_imm8_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } static void -Field_r_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_imm8_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + tie_t = (val << 24) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } static unsigned -Field_op0_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_s_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); return tie_t; } static void -Field_op0_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_s_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); } static unsigned -Field_z_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_s_Slot_inst16a_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 21) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); return tie_t; } static void -Field_z_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_s_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 31) >> 31; - insn[0] = (insn[0] & ~0x400) | (tie_t << 10); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); } static unsigned -Field_i_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_s_Slot_inst16b_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 20) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); return tie_t; } static void -Field_i_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_s_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 31) >> 31; - insn[0] = (insn[0] & ~0x800) | (tie_t << 11); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); } static unsigned -Field_s_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_s_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); @@ -538,7 +589,7 @@ } static void -Field_s_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_s_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; @@ -546,7 +597,7 @@ } static unsigned -Field_t_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_s_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); @@ -554,7 +605,7 @@ } static void -Field_t_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_s_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; @@ -562,357 +613,333 @@ } static unsigned -Field_bbi4_Slot_inst_get (const xtensa_insnbuf insn) +Field_s_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 23) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); return tie_t; } static void -Field_bbi4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_s_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 31) >> 31; - insn[0] = (insn[0] & ~0x100) | (tie_t << 8); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); } static unsigned -Field_bbi_Slot_inst_get (const xtensa_insnbuf insn) +Field_s_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 23) >> 31); - tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } static void -Field_bbi_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_s_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16); - tie_t = (val << 27) >> 31; - insn[0] = (insn[0] & ~0x100) | (tie_t << 8); + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); } static unsigned -Field_imm12_Slot_inst_get (const xtensa_insnbuf insn) +Field_imm12b_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 12) | ((insn[0] << 20) >> 20); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + tie_t = (tie_t << 8) | ((insn[0] << 8) >> 24); return tie_t; } static void -Field_imm12_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_imm12b_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 20) >> 20; - insn[0] = (insn[0] & ~0xfff) | (tie_t << 0); + tie_t = (val << 24) >> 24; + insn[0] = (insn[0] & ~0xff0000) | (tie_t << 16); + tie_t = (val << 20) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); } static unsigned -Field_imm8_Slot_inst_get (const xtensa_insnbuf insn) +Field_imm12b_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 8) | ((insn[0] << 24) >> 24); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); + tie_t = (tie_t << 8) | ((insn[0] << 12) >> 24); return tie_t; } static void -Field_imm8_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_imm12b_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 24) >> 24; - insn[0] = (insn[0] & ~0xff) | (tie_t << 0); + insn[0] = (insn[0] & ~0xff000) | (tie_t << 12); + tie_t = (val << 20) >> 28; + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); } static unsigned -Field_s_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_imm12b_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); + tie_t = (tie_t << 12) | ((insn[0] << 16) >> 20); return tie_t; } static void -Field_s_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_imm12b_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + tie_t = (val << 20) >> 20; + insn[0] = (insn[0] & ~0xfff0) | (tie_t << 4); } static unsigned -Field_imm12b_Slot_inst_get (const xtensa_insnbuf insn) +Field_imm16_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); - tie_t = (tie_t << 8) | ((insn[0] << 24) >> 24); + tie_t = (tie_t << 16) | ((insn[0] << 8) >> 16); return tie_t; } static void -Field_imm12b_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_imm16_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 24) >> 24; - insn[0] = (insn[0] & ~0xff) | (tie_t << 0); - tie_t = (val << 20) >> 28; - insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); + tie_t = (val << 16) >> 16; + insn[0] = (insn[0] & ~0xffff00) | (tie_t << 8); } static unsigned -Field_imm16_Slot_inst_get (const xtensa_insnbuf insn) +Field_imm16_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 16) | ((insn[0] << 16) >> 16); + tie_t = (tie_t << 16) | ((insn[0] << 12) >> 16); return tie_t; } static void -Field_imm16_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_imm16_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 16) >> 16; - insn[0] = (insn[0] & ~0xffff) | (tie_t << 0); + insn[0] = (insn[0] & ~0xffff0) | (tie_t << 4); } static unsigned -Field_offset_Slot_inst_get (const xtensa_insnbuf insn) +Field_m_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 18) | ((insn[0] << 14) >> 14); + tie_t = (tie_t << 2) | ((insn[0] << 24) >> 30); return tie_t; } static void -Field_offset_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_m_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 14) >> 14; - insn[0] = (insn[0] & ~0x3ffff) | (tie_t << 0); + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc0) | (tie_t << 6); } static unsigned -Field_r_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_m_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 2) | ((insn[0] << 28) >> 30); return tie_t; } static void -Field_r_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_m_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc) | (tie_t << 2); } static unsigned -Field_sa4_Slot_inst_get (const xtensa_insnbuf insn) +Field_n_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 31) >> 31); + tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30); return tie_t; } static void -Field_sa4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_n_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 31) >> 31; - insn[0] = (insn[0] & ~0x1) | (tie_t << 0); + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x30) | (tie_t << 4); } static unsigned -Field_sae4_Slot_inst_get (const xtensa_insnbuf insn) +Field_n_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 27) >> 31); + tie_t = (tie_t << 2) | ((insn[0] << 30) >> 30); return tie_t; } static void -Field_sae4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_n_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 31) >> 31; - insn[0] = (insn[0] & ~0x10) | (tie_t << 4); + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x3) | (tie_t << 0); } static unsigned -Field_sae_Slot_inst_get (const xtensa_insnbuf insn) +Field_offset_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 27) >> 31); - tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + tie_t = (tie_t << 18) | ((insn[0] << 8) >> 14); return tie_t; } static void -Field_sae_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_offset_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); - tie_t = (val << 27) >> 31; - insn[0] = (insn[0] & ~0x10) | (tie_t << 4); + tie_t = (val << 14) >> 14; + insn[0] = (insn[0] & ~0xffffc0) | (tie_t << 6); } static unsigned -Field_sal_Slot_inst_get (const xtensa_insnbuf insn) +Field_offset_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 31) >> 31); - tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28); + tie_t = (tie_t << 18) | ((insn[0] << 14) >> 14); return tie_t; } static void -Field_sal_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_offset_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16); - tie_t = (val << 27) >> 31; - insn[0] = (insn[0] & ~0x1) | (tie_t << 0); + tie_t = (val << 14) >> 14; + insn[0] = (insn[0] & ~0x3ffff) | (tie_t << 0); } static unsigned -Field_sargt_Slot_inst_get (const xtensa_insnbuf insn) +Field_op0_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 31) >> 31); - tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); return tie_t; } static void -Field_sargt_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_op0_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); - tie_t = (val << 27) >> 31; - insn[0] = (insn[0] & ~0x1) | (tie_t << 0); + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); } static unsigned -Field_sas4_Slot_inst_get (const xtensa_insnbuf insn) +Field_op0_Slot_inst16a_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 15) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); return tie_t; } static void -Field_sas4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_op0_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 31) >> 31; - insn[0] = (insn[0] & ~0x10000) | (tie_t << 16); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); } static unsigned -Field_sas_Slot_inst_get (const xtensa_insnbuf insn) +Field_op0_Slot_inst16b_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 15) >> 31); - tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); return tie_t; } static void -Field_sas_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_op0_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); - tie_t = (val << 27) >> 31; - insn[0] = (insn[0] & ~0x10000) | (tie_t << 16); + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); } static unsigned -Field_sr_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_op1_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28); return tie_t; } static void -Field_sr_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_op1_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); - tie_t = (val << 24) >> 28; - insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16); } static unsigned -Field_sr_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_op1_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); return tie_t; } static void -Field_sr_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_op1_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); - tie_t = (val << 24) >> 28; - insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } static unsigned -Field_st_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_op2_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); - tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 8) >> 28); return tie_t; } static void -Field_st_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_op2_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); - tie_t = (val << 24) >> 28; - insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + insn[0] = (insn[0] & ~0xf00000) | (tie_t << 20); } static unsigned -Field_st_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_op2_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); - tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28); return tie_t; } static void -Field_st_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_op2_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); - tie_t = (val << 24) >> 28; - insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16); } static unsigned -Field_imm4_Slot_inst_get (const xtensa_insnbuf insn) +Field_op2_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); @@ -920,7 +947,7 @@ } static void -Field_imm4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_op2_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; @@ -928,4194 +955,7744 @@ } static unsigned -Field_imm4_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_r_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); return tie_t; } static void -Field_imm4_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_r_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } static unsigned -Field_imm4_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_r_Slot_inst16a_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); return tie_t; } static void -Field_imm4_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_r_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } static unsigned -Field_mn_Slot_inst_get (const xtensa_insnbuf insn) +Field_r_Slot_inst16b_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 2) | ((insn[0] << 12) >> 30); - tie_t = (tie_t << 2) | ((insn[0] << 14) >> 30); + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); return tie_t; } static void -Field_mn_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_r_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 30) >> 30; - insn[0] = (insn[0] & ~0x30000) | (tie_t << 16); - tie_t = (val << 28) >> 30; - insn[0] = (insn[0] & ~0xc0000) | (tie_t << 18); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } static unsigned -Field_i_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_r_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 20) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); return tie_t; } static void -Field_i_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_r_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 31) >> 31; - insn[0] = (insn[0] & ~0x800) | (tie_t << 11); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); } static unsigned -Field_imm6lo_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_r_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } static void -Field_imm6lo_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_r_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); } static unsigned -Field_imm6lo_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_r_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } static void -Field_imm6lo_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_r_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); } static unsigned -Field_imm6hi_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_r_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 2) | ((insn[0] << 22) >> 30); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); return tie_t; } static void -Field_imm6hi_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_r_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 30) >> 30; - insn[0] = (insn[0] & ~0x300) | (tie_t << 8); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); } static unsigned -Field_imm6hi_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_sa4_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 2) | ((insn[0] << 22) >> 30); + tie_t = (tie_t << 1) | ((insn[0] << 11) >> 31); return tie_t; } static void -Field_imm6hi_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_sa4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 30) >> 30; - insn[0] = (insn[0] & ~0x300) | (tie_t << 8); + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x100000) | (tie_t << 20); } static unsigned -Field_imm7lo_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_sae4_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 1) | ((insn[0] << 15) >> 31); return tie_t; } static void -Field_imm7lo_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_sae4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x10000) | (tie_t << 16); } static unsigned -Field_imm7lo_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_sae4_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); return tie_t; } static void -Field_imm7lo_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_sae4_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); } static unsigned -Field_imm7hi_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_sae_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 3) | ((insn[0] << 21) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 15) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); return tie_t; } static void -Field_imm7hi_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_sae_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 29) >> 29; - insn[0] = (insn[0] & ~0x700) | (tie_t << 8); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x10000) | (tie_t << 16); } static unsigned -Field_imm7hi_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_sae_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 3) | ((insn[0] << 21) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } static void -Field_imm7hi_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_sae_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 29) >> 29; - insn[0] = (insn[0] & ~0x700) | (tie_t << 8); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); } static unsigned -Field_z_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_sae_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 1) | ((insn[0] << 21) >> 31); + tie_t = (tie_t << 5) | ((insn[0] << 15) >> 27); return tie_t; } static void -Field_z_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_sae_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 31) >> 31; - insn[0] = (insn[0] & ~0x400) | (tie_t << 10); + tie_t = (val << 27) >> 27; + insn[0] = (insn[0] & ~0x1f000) | (tie_t << 12); } static unsigned -Field_imm6_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_sal_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 2) | ((insn[0] << 22) >> 30); - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 1) | ((insn[0] << 11) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } static void -Field_imm6_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_sal_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); - tie_t = (val << 26) >> 30; - insn[0] = (insn[0] & ~0x300) | (tie_t << 8); + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x100000) | (tie_t << 20); } static unsigned -Field_imm6_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_sal_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 2) | ((insn[0] << 22) >> 30); + tie_t = (tie_t << 1) | ((insn[0] << 15) >> 31); tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); return tie_t; } static void -Field_imm6_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_sal_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; insn[0] = (insn[0] & ~0xf) | (tie_t << 0); - tie_t = (val << 26) >> 30; - insn[0] = (insn[0] & ~0x300) | (tie_t << 8); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x10000) | (tie_t << 16); } static unsigned -Field_imm7_Slot_inst16a_get (const xtensa_insnbuf insn) +Field_sal_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 3) | ((insn[0] << 21) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); return tie_t; } static void -Field_imm7_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +Field_sal_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; insn[0] = (insn[0] & ~0xf) | (tie_t << 0); - tie_t = (val << 25) >> 29; - insn[0] = (insn[0] & ~0x700) | (tie_t << 8); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); } static unsigned -Field_imm7_Slot_inst16b_get (const xtensa_insnbuf insn) +Field_sargt_Slot_inst_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 3) | ((insn[0] << 21) >> 29); - tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + tie_t = (tie_t << 1) | ((insn[0] << 11) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); return tie_t; } static void -Field_imm7_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +Field_sargt_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; tie_t = (val << 28) >> 28; - insn[0] = (insn[0] & ~0xf) | (tie_t << 0); - tie_t = (val << 25) >> 29; - insn[0] = (insn[0] & ~0x700) | (tie_t << 8); + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x100000) | (tie_t << 20); } static unsigned -Field_xt_wbr15_imm_Slot_inst_get (const xtensa_insnbuf insn) +Field_sargt_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 15) | ((insn[0] << 8) >> 17); + tie_t = (tie_t << 1) | ((insn[0] << 15) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); return tie_t; } static void -Field_xt_wbr15_imm_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_sargt_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 17) >> 17; - insn[0] = (insn[0] & ~0xfffe00) | (tie_t << 9); + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x10000) | (tie_t << 16); } static unsigned -Field_xt_wbr18_imm_Slot_inst_get (const xtensa_insnbuf insn) +Field_sargt_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) { unsigned tie_t = 0; - tie_t = (tie_t << 18) | ((insn[0] << 8) >> 14); + tie_t = (tie_t << 5) | ((insn[0] << 19) >> 27); return tie_t; } static void -Field_xt_wbr18_imm_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +Field_sargt_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) { uint32 tie_t; - tie_t = (val << 14) >> 14; - insn[0] = (insn[0] & ~0xffffc0) | (tie_t << 6); + tie_t = (val << 27) >> 27; + insn[0] = (insn[0] & ~0x1f00) | (tie_t << 8); } -static void -Implicit_Field_set (xtensa_insnbuf insn ATTRIBUTE_UNUSED, - uint32 val ATTRIBUTE_UNUSED) +static unsigned +Field_sargt_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) { - /* Do nothing. */ + unsigned tie_t = 0; + tie_t = (tie_t << 5) | ((insn[0] << 19) >> 27); + return tie_t; } -static unsigned -Implicit_Field_ar0_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +static void +Field_sargt_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) { - return 0; + uint32 tie_t; + tie_t = (val << 27) >> 27; + insn[0] = (insn[0] & ~0x1f00) | (tie_t << 8); } static unsigned -Implicit_Field_ar4_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +Field_sas4_Slot_inst_get (const xtensa_insnbuf insn) { - return 4; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 27) >> 31); + return tie_t; } -static unsigned -Implicit_Field_ar8_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +static void +Field_sas4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - return 8; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x10) | (tie_t << 4); } static unsigned -Implicit_Field_ar12_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +Field_sas_Slot_inst_get (const xtensa_insnbuf insn) { - return 12; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 27) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + return tie_t; } -enum xtensa_field_id { - FIELD_t, - FIELD_bbi4, - FIELD_bbi, - FIELD_imm12, - FIELD_imm8, - FIELD_s, - FIELD_imm12b, - FIELD_imm16, - FIELD_m, - FIELD_n, - FIELD_offset, - FIELD_op0, - FIELD_op1, - FIELD_op2, - FIELD_r, - FIELD_sa4, - FIELD_sae4, - FIELD_sae, - FIELD_sal, - FIELD_sargt, - FIELD_sas4, - FIELD_sas, - FIELD_sr, - FIELD_st, - FIELD_thi3, - FIELD_imm4, - FIELD_mn, - FIELD_i, - FIELD_imm6lo, - FIELD_imm6hi, - FIELD_imm7lo, - FIELD_imm7hi, - FIELD_z, - FIELD_imm6, - FIELD_imm7, - FIELD_xt_wbr15_imm, - FIELD_xt_wbr18_imm, - FIELD__ar0, - FIELD__ar4, - FIELD__ar8, - FIELD__ar12 -}; - - -/* Functional units. */ - -static xtensa_funcUnit_internal funcUnits[] = { - -}; - - -/* Register files. */ - -enum xtensa_regfile_id { - REGFILE_AR -}; - -static xtensa_regfile_internal regfiles[] = { - { "AR", "a", REGFILE_AR, 32, 32 } -}; - - -/* Interfaces. */ - -static xtensa_interface_internal interfaces[] = { - -}; - - -/* Constant tables. */ - -/* constant table ai4c */ -static const unsigned CONST_TBL_ai4c_0[] = { - 0xffffffff, - 0x1, - 0x2, - 0x3, - 0x4, - 0x5, - 0x6, - 0x7, - 0x8, - 0x9, - 0xa, - 0xb, - 0xc, - 0xd, - 0xe, - 0xf, - 0 -}; - -/* constant table b4c */ -static const unsigned CONST_TBL_b4c_0[] = { - 0xffffffff, - 0x1, - 0x2, - 0x3, - 0x4, - 0x5, - 0x6, - 0x7, - 0x8, - 0xa, - 0xc, - 0x10, - 0x20, - 0x40, - 0x80, - 0x100, - 0 -}; - -/* constant table b4cu */ -static const unsigned CONST_TBL_b4cu_0[] = { - 0x8000, - 0x10000, - 0x2, - 0x3, - 0x4, - 0x5, - 0x6, - 0x7, - 0x8, - 0xa, - 0xc, - 0x10, - 0x20, - 0x40, - 0x80, - 0x100, - 0 -}; - - -/* Instruction operands. */ - -static int -Operand_soffsetx4_decode (uint32 *valp) +static void +Field_sas_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - unsigned soffsetx4_0, offset_0; - offset_0 = *valp & 0x3ffff; - soffsetx4_0 = 0x4 + ((((int) offset_0 << 14) >> 14) << 2); - *valp = soffsetx4_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x10) | (tie_t << 4); } -static int -Operand_soffsetx4_encode (uint32 *valp) +static unsigned +Field_sas_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { - unsigned offset_0, soffsetx4_0; - soffsetx4_0 = *valp; - offset_0 = ((soffsetx4_0 - 0x4) >> 2) & 0x3ffff; - *valp = offset_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 31) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); + return tie_t; } -static int -Operand_soffsetx4_ator (uint32 *valp, uint32 pc) +static void +Field_sas_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { - *valp -= (pc & ~0x3); - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x1) | (tie_t << 0); } -static int -Operand_soffsetx4_rtoa (uint32 *valp, uint32 pc) +static unsigned +Field_sr_Slot_inst_get (const xtensa_insnbuf insn) { - *valp += (pc & ~0x3); - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + return tie_t; } -static int -Operand_uimm12x8_decode (uint32 *valp) +static void +Field_sr_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - unsigned uimm12x8_0, imm12_0; - imm12_0 = *valp & 0xfff; - uimm12x8_0 = imm12_0 << 3; - *valp = uimm12x8_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); + tie_t = (val << 24) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } -static int -Operand_uimm12x8_encode (uint32 *valp) +static unsigned +Field_sr_Slot_inst16a_get (const xtensa_insnbuf insn) { - unsigned imm12_0, uimm12x8_0; - uimm12x8_0 = *valp; - imm12_0 = ((uimm12x8_0 >> 3) & 0xfff); - *valp = imm12_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + return tie_t; } -static int -Operand_simm4_decode (uint32 *valp) +static void +Field_sr_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - unsigned simm4_0, mn_0; - mn_0 = *valp & 0xf; - simm4_0 = ((int) mn_0 << 28) >> 28; - *valp = simm4_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); + tie_t = (val << 24) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } -static int -Operand_simm4_encode (uint32 *valp) +static unsigned +Field_sr_Slot_inst16b_get (const xtensa_insnbuf insn) { - unsigned mn_0, simm4_0; - simm4_0 = *valp; - mn_0 = (simm4_0 & 0xf); - *valp = mn_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + return tie_t; } -static int -Operand_arr_decode (uint32 *valp ATTRIBUTE_UNUSED) +static void +Field_sr_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); + tie_t = (val << 24) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } -static int -Operand_arr_encode (uint32 *valp) +static unsigned +Field_st_Slot_inst_get (const xtensa_insnbuf insn) { - int error; - error = (*valp & ~0xf) != 0; - return error; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); + return tie_t; } -static int -Operand_ars_decode (uint32 *valp ATTRIBUTE_UNUSED) +static void +Field_st_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + tie_t = (val << 24) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); } -static int -Operand_ars_encode (uint32 *valp) +static unsigned +Field_st_Slot_inst16a_get (const xtensa_insnbuf insn) { - int error; - error = (*valp & ~0xf) != 0; - return error; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); + return tie_t; } -static int -Operand_art_decode (uint32 *valp ATTRIBUTE_UNUSED) +static void +Field_st_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + tie_t = (val << 24) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); } -static int -Operand_art_encode (uint32 *valp) +static unsigned +Field_st_Slot_inst16b_get (const xtensa_insnbuf insn) { - int error; - error = (*valp & ~0xf) != 0; - return error; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28); + return tie_t; } -static int -Operand_ar0_decode (uint32 *valp ATTRIBUTE_UNUSED) +static void +Field_st_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf0) | (tie_t << 4); + tie_t = (val << 24) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); } -static int -Operand_ar0_encode (uint32 *valp) +static unsigned +Field_thi3_Slot_inst_get (const xtensa_insnbuf insn) { - int error; - error = (*valp & ~0x1f) != 0; - return error; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 24) >> 29); + return tie_t; } -static int -Operand_ar4_decode (uint32 *valp ATTRIBUTE_UNUSED) +static void +Field_thi3_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - return 0; + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe0) | (tie_t << 5); } -static int -Operand_ar4_encode (uint32 *valp) +static unsigned +Field_thi3_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) { - int error; - error = (*valp & ~0x1f) != 0; - return error; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 28) >> 29); + return tie_t; } -static int -Operand_ar8_decode (uint32 *valp ATTRIBUTE_UNUSED) +static void +Field_thi3_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) { - return 0; + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe) | (tie_t << 1); } -static int -Operand_ar8_encode (uint32 *valp) +static unsigned +Field_imm4_Slot_inst_get (const xtensa_insnbuf insn) { - int error; - error = (*valp & ~0x1f) != 0; - return error; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_ar12_decode (uint32 *valp ATTRIBUTE_UNUSED) +static void +Field_imm4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } -static int -Operand_ar12_encode (uint32 *valp) +static unsigned +Field_imm4_Slot_inst16a_get (const xtensa_insnbuf insn) { - int error; - error = (*valp & ~0x1f) != 0; - return error; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_ars_entry_decode (uint32 *valp ATTRIBUTE_UNUSED) +static void +Field_imm4_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } -static int -Operand_ars_entry_encode (uint32 *valp) +static unsigned +Field_imm4_Slot_inst16b_get (const xtensa_insnbuf insn) { - int error; - error = (*valp & ~0x1f) != 0; - return error; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_immrx4_decode (uint32 *valp) +static void +Field_imm4_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - unsigned immrx4_0, r_0; - r_0 = *valp & 0xf; - immrx4_0 = (((0xfffffff) << 4) | r_0) << 2; - *valp = immrx4_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } -static int -Operand_immrx4_encode (uint32 *valp) +static unsigned +Field_mn_Slot_inst_get (const xtensa_insnbuf insn) { - unsigned r_0, immrx4_0; - immrx4_0 = *valp; - r_0 = ((immrx4_0 >> 2) & 0xf); - *valp = r_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 24) >> 30); + tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30); + return tie_t; } -static int -Operand_lsi4x4_decode (uint32 *valp) +static void +Field_mn_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - unsigned lsi4x4_0, r_0; - r_0 = *valp & 0xf; - lsi4x4_0 = r_0 << 2; - *valp = lsi4x4_0; - return 0; + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x30) | (tie_t << 4); + tie_t = (val << 28) >> 30; + insn[0] = (insn[0] & ~0xc0) | (tie_t << 6); } -static int -Operand_lsi4x4_encode (uint32 *valp) +static unsigned +Field_i_Slot_inst16a_get (const xtensa_insnbuf insn) { - unsigned r_0, lsi4x4_0; - lsi4x4_0 = *valp; - r_0 = ((lsi4x4_0 >> 2) & 0xf); - *valp = r_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + return tie_t; } -static int -Operand_simm7_decode (uint32 *valp) +static void +Field_i_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - unsigned simm7_0, imm7_0; - imm7_0 = *valp & 0x7f; - simm7_0 = ((((-((((imm7_0 >> 6) & 1)) & (((imm7_0 >> 5) & 1)))) & 0x1ffffff)) << 7) | imm7_0; - *valp = simm7_0; - return 0; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); } -static int -Operand_simm7_encode (uint32 *valp) +static unsigned +Field_i_Slot_inst16b_get (const xtensa_insnbuf insn) { - unsigned imm7_0, simm7_0; - simm7_0 = *valp; - imm7_0 = (simm7_0 & 0x7f); - *valp = imm7_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + return tie_t; } -static int -Operand_uimm6_decode (uint32 *valp) +static void +Field_i_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - unsigned uimm6_0, imm6_0; - imm6_0 = *valp & 0x3f; - uimm6_0 = 0x4 + (((0) << 6) | imm6_0); - *valp = uimm6_0; - return 0; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); } -static int -Operand_uimm6_encode (uint32 *valp) +static unsigned +Field_imm6lo_Slot_inst16a_get (const xtensa_insnbuf insn) { - unsigned imm6_0, uimm6_0; - uimm6_0 = *valp; - imm6_0 = (uimm6_0 - 0x4) & 0x3f; - *valp = imm6_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_uimm6_ator (uint32 *valp, uint32 pc) +static void +Field_imm6lo_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - *valp -= pc; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } -static int -Operand_uimm6_rtoa (uint32 *valp, uint32 pc) +static unsigned +Field_imm6lo_Slot_inst16b_get (const xtensa_insnbuf insn) { - *valp += pc; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_ai4const_decode (uint32 *valp) +static void +Field_imm6lo_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - unsigned ai4const_0, t_0; - t_0 = *valp & 0xf; - ai4const_0 = CONST_TBL_ai4c_0[t_0 & 0xf]; - *valp = ai4const_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } -static int -Operand_ai4const_encode (uint32 *valp) +static unsigned +Field_imm6hi_Slot_inst16a_get (const xtensa_insnbuf insn) { - unsigned t_0, ai4const_0; - ai4const_0 = *valp; - switch (ai4const_0) - { - case 0xffffffff: t_0 = 0; break; - case 0x1: t_0 = 0x1; break; - case 0x2: t_0 = 0x2; break; - case 0x3: t_0 = 0x3; break; - case 0x4: t_0 = 0x4; break; - case 0x5: t_0 = 0x5; break; - case 0x6: t_0 = 0x6; break; - case 0x7: t_0 = 0x7; break; - case 0x8: t_0 = 0x8; break; - case 0x9: t_0 = 0x9; break; - case 0xa: t_0 = 0xa; break; - case 0xb: t_0 = 0xb; break; - case 0xc: t_0 = 0xc; break; - case 0xd: t_0 = 0xd; break; - case 0xe: t_0 = 0xe; break; - default: t_0 = 0xf; break; - } - *valp = t_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30); + return tie_t; } -static int -Operand_b4const_decode (uint32 *valp) +static void +Field_imm6hi_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - unsigned b4const_0, r_0; - r_0 = *valp & 0xf; - b4const_0 = CONST_TBL_b4c_0[r_0 & 0xf]; - *valp = b4const_0; - return 0; + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x30) | (tie_t << 4); } -static int -Operand_b4const_encode (uint32 *valp) +static unsigned +Field_imm6hi_Slot_inst16b_get (const xtensa_insnbuf insn) { - unsigned r_0, b4const_0; - b4const_0 = *valp; - switch (b4const_0) - { - case 0xffffffff: r_0 = 0; break; - case 0x1: r_0 = 0x1; break; - case 0x2: r_0 = 0x2; break; - case 0x3: r_0 = 0x3; break; - case 0x4: r_0 = 0x4; break; - case 0x5: r_0 = 0x5; break; - case 0x6: r_0 = 0x6; break; - case 0x7: r_0 = 0x7; break; - case 0x8: r_0 = 0x8; break; - case 0xa: r_0 = 0x9; break; - case 0xc: r_0 = 0xa; break; - case 0x10: r_0 = 0xb; break; - case 0x20: r_0 = 0xc; break; - case 0x40: r_0 = 0xd; break; - case 0x80: r_0 = 0xe; break; - default: r_0 = 0xf; break; - } - *valp = r_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30); + return tie_t; } -static int -Operand_b4constu_decode (uint32 *valp) +static void +Field_imm6hi_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - unsigned b4constu_0, r_0; - r_0 = *valp & 0xf; - b4constu_0 = CONST_TBL_b4cu_0[r_0 & 0xf]; - *valp = b4constu_0; - return 0; + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x30) | (tie_t << 4); } -static int -Operand_b4constu_encode (uint32 *valp) +static unsigned +Field_imm7lo_Slot_inst16a_get (const xtensa_insnbuf insn) { - unsigned r_0, b4constu_0; - b4constu_0 = *valp; - switch (b4constu_0) - { - case 0x8000: r_0 = 0; break; - case 0x10000: r_0 = 0x1; break; - case 0x2: r_0 = 0x2; break; - case 0x3: r_0 = 0x3; break; - case 0x4: r_0 = 0x4; break; - case 0x5: r_0 = 0x5; break; - case 0x6: r_0 = 0x6; break; - case 0x7: r_0 = 0x7; break; - case 0x8: r_0 = 0x8; break; - case 0xa: r_0 = 0x9; break; - case 0xc: r_0 = 0xa; break; - case 0x10: r_0 = 0xb; break; - case 0x20: r_0 = 0xc; break; - case 0x40: r_0 = 0xd; break; - case 0x80: r_0 = 0xe; break; - default: r_0 = 0xf; break; - } - *valp = r_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_uimm8_decode (uint32 *valp) +static void +Field_imm7lo_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - unsigned uimm8_0, imm8_0; - imm8_0 = *valp & 0xff; - uimm8_0 = imm8_0; - *valp = uimm8_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } -static int -Operand_uimm8_encode (uint32 *valp) +static unsigned +Field_imm7lo_Slot_inst16b_get (const xtensa_insnbuf insn) { - unsigned imm8_0, uimm8_0; - uimm8_0 = *valp; - imm8_0 = (uimm8_0 & 0xff); - *valp = imm8_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_uimm8x2_decode (uint32 *valp) +static void +Field_imm7lo_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - unsigned uimm8x2_0, imm8_0; - imm8_0 = *valp & 0xff; - uimm8x2_0 = imm8_0 << 1; - *valp = uimm8x2_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); } -static int -Operand_uimm8x2_encode (uint32 *valp) +static unsigned +Field_imm7hi_Slot_inst16a_get (const xtensa_insnbuf insn) { - unsigned imm8_0, uimm8x2_0; - uimm8x2_0 = *valp; - imm8_0 = ((uimm8x2_0 >> 1) & 0xff); - *valp = imm8_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 25) >> 29); + return tie_t; } -static int -Operand_uimm8x4_decode (uint32 *valp) +static void +Field_imm7hi_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - unsigned uimm8x4_0, imm8_0; - imm8_0 = *valp & 0xff; - uimm8x4_0 = imm8_0 << 2; - *valp = uimm8x4_0; - return 0; + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0x70) | (tie_t << 4); } -static int -Operand_uimm8x4_encode (uint32 *valp) +static unsigned +Field_imm7hi_Slot_inst16b_get (const xtensa_insnbuf insn) { - unsigned imm8_0, uimm8x4_0; - uimm8x4_0 = *valp; - imm8_0 = ((uimm8x4_0 >> 2) & 0xff); - *valp = imm8_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 25) >> 29); + return tie_t; } -static int -Operand_uimm4x16_decode (uint32 *valp) +static void +Field_imm7hi_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - unsigned uimm4x16_0, op2_0; - op2_0 = *valp & 0xf; - uimm4x16_0 = op2_0 << 4; - *valp = uimm4x16_0; - return 0; + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0x70) | (tie_t << 4); } -static int -Operand_uimm4x16_encode (uint32 *valp) +static unsigned +Field_z_Slot_inst16a_get (const xtensa_insnbuf insn) { - unsigned op2_0, uimm4x16_0; - uimm4x16_0 = *valp; - op2_0 = ((uimm4x16_0 >> 4) & 0xf); - *valp = op2_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 25) >> 31); + return tie_t; } -static int -Operand_simm8_decode (uint32 *valp) +static void +Field_z_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - unsigned simm8_0, imm8_0; - imm8_0 = *valp & 0xff; - simm8_0 = ((int) imm8_0 << 24) >> 24; - *valp = simm8_0; - return 0; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x40) | (tie_t << 6); } -static int -Operand_simm8_encode (uint32 *valp) +static unsigned +Field_z_Slot_inst16b_get (const xtensa_insnbuf insn) { - unsigned imm8_0, simm8_0; - simm8_0 = *valp; - imm8_0 = (simm8_0 & 0xff); - *valp = imm8_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 25) >> 31); + return tie_t; } -static int -Operand_simm8x256_decode (uint32 *valp) +static void +Field_z_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - unsigned simm8x256_0, imm8_0; - imm8_0 = *valp & 0xff; - simm8x256_0 = (((int) imm8_0 << 24) >> 24) << 8; - *valp = simm8x256_0; - return 0; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x40) | (tie_t << 6); } -static int -Operand_simm8x256_encode (uint32 *valp) +static unsigned +Field_imm6_Slot_inst16a_get (const xtensa_insnbuf insn) { - unsigned imm8_0, simm8x256_0; - simm8x256_0 = *valp; - imm8_0 = ((simm8x256_0 >> 8) & 0xff); - *valp = imm8_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30); + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_simm12b_decode (uint32 *valp) +static void +Field_imm6_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - unsigned simm12b_0, imm12b_0; - imm12b_0 = *valp & 0xfff; - simm12b_0 = ((int) imm12b_0 << 20) >> 20; - *valp = simm12b_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); + tie_t = (val << 26) >> 30; + insn[0] = (insn[0] & ~0x30) | (tie_t << 4); } -static int -Operand_simm12b_encode (uint32 *valp) +static unsigned +Field_imm6_Slot_inst16b_get (const xtensa_insnbuf insn) { - unsigned imm12b_0, simm12b_0; - simm12b_0 = *valp; - imm12b_0 = (simm12b_0 & 0xfff); - *valp = imm12b_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30); + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_msalp32_decode (uint32 *valp) +static void +Field_imm6_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - unsigned msalp32_0, sal_0; - sal_0 = *valp & 0x1f; - msalp32_0 = 0x20 - sal_0; - *valp = msalp32_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); + tie_t = (val << 26) >> 30; + insn[0] = (insn[0] & ~0x30) | (tie_t << 4); } -static int -Operand_msalp32_encode (uint32 *valp) +static unsigned +Field_imm7_Slot_inst16a_get (const xtensa_insnbuf insn) { - unsigned sal_0, msalp32_0; - msalp32_0 = *valp; - sal_0 = (0x20 - msalp32_0) & 0x1f; - *valp = sal_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 25) >> 29); + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_op2p1_decode (uint32 *valp) +static void +Field_imm7_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - unsigned op2p1_0, op2_0; - op2_0 = *valp & 0xf; - op2p1_0 = op2_0 + 0x1; - *valp = op2p1_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); + tie_t = (val << 25) >> 29; + insn[0] = (insn[0] & ~0x70) | (tie_t << 4); } -static int -Operand_op2p1_encode (uint32 *valp) +static unsigned +Field_imm7_Slot_inst16b_get (const xtensa_insnbuf insn) { - unsigned op2_0, op2p1_0; - op2p1_0 = *valp; - op2_0 = (op2p1_0 - 0x1) & 0xf; - *valp = op2_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 25) >> 29); + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; } -static int -Operand_label8_decode (uint32 *valp) +static void +Field_imm7_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - unsigned label8_0, imm8_0; - imm8_0 = *valp & 0xff; - label8_0 = 0x4 + (((int) imm8_0 << 24) >> 24); - *valp = label8_0; - return 0; + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); + tie_t = (val << 25) >> 29; + insn[0] = (insn[0] & ~0x70) | (tie_t << 4); } -static int -Operand_label8_encode (uint32 *valp) +static unsigned +Field_imm7_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) { - unsigned imm8_0, label8_0; - label8_0 = *valp; - imm8_0 = (label8_0 - 0x4) & 0xff; - *valp = imm8_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 7) | ((insn[0] << 25) >> 25); + return tie_t; } -static int -Operand_label8_ator (uint32 *valp, uint32 pc) +static void +Field_imm7_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) { - *valp -= pc; - return 0; + uint32 tie_t; + tie_t = (val << 25) >> 25; + insn[0] = (insn[0] & ~0x7f) | (tie_t << 0); } -static int -Operand_label8_rtoa (uint32 *valp, uint32 pc) +static unsigned +Field_r3_Slot_inst_get (const xtensa_insnbuf insn) { - *valp += pc; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 16) >> 31); + return tie_t; } -static int -Operand_ulabel8_decode (uint32 *valp) +static void +Field_r3_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - unsigned ulabel8_0, imm8_0; - imm8_0 = *valp & 0xff; - ulabel8_0 = 0x4 + (((0) << 8) | imm8_0); - *valp = ulabel8_0; - return 0; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x8000) | (tie_t << 15); } -static int -Operand_ulabel8_encode (uint32 *valp) +static unsigned +Field_rbit2_Slot_inst_get (const xtensa_insnbuf insn) { - unsigned imm8_0, ulabel8_0; - ulabel8_0 = *valp; - imm8_0 = (ulabel8_0 - 0x4) & 0xff; - *valp = imm8_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 17) >> 31); + return tie_t; } -static int -Operand_ulabel8_ator (uint32 *valp, uint32 pc) +static void +Field_rbit2_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - *valp -= pc; - return 0; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000) | (tie_t << 14); } -static int -Operand_ulabel8_rtoa (uint32 *valp, uint32 pc) +static unsigned +Field_rhi_Slot_inst_get (const xtensa_insnbuf insn) { - *valp += pc; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 16) >> 30); + return tie_t; } -static int -Operand_label12_decode (uint32 *valp) +static void +Field_rhi_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - unsigned label12_0, imm12_0; - imm12_0 = *valp & 0xfff; - label12_0 = 0x4 + (((int) imm12_0 << 20) >> 20); - *valp = label12_0; - return 0; + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc000) | (tie_t << 14); } -static int -Operand_label12_encode (uint32 *valp) +static unsigned +Field_t3_Slot_inst_get (const xtensa_insnbuf insn) { - unsigned imm12_0, label12_0; - label12_0 = *valp; - imm12_0 = (label12_0 - 0x4) & 0xfff; - *valp = imm12_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + return tie_t; } -static int -Operand_label12_ator (uint32 *valp, uint32 pc) +static void +Field_t3_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - *valp -= pc; - return 0; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); } -static int -Operand_label12_rtoa (uint32 *valp, uint32 pc) +static unsigned +Field_tbit2_Slot_inst_get (const xtensa_insnbuf insn) { - *valp += pc; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 25) >> 31); + return tie_t; } -static int -Operand_soffset_decode (uint32 *valp) +static void +Field_tbit2_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - unsigned soffset_0, offset_0; - offset_0 = *valp & 0x3ffff; - soffset_0 = 0x4 + (((int) offset_0 << 14) >> 14); - *valp = soffset_0; - return 0; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x40) | (tie_t << 6); } -static int -Operand_soffset_encode (uint32 *valp) +static unsigned +Field_tlo_Slot_inst_get (const xtensa_insnbuf insn) { - unsigned offset_0, soffset_0; - soffset_0 = *valp; - offset_0 = (soffset_0 - 0x4) & 0x3ffff; - *valp = offset_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30); + return tie_t; } -static int -Operand_soffset_ator (uint32 *valp, uint32 pc) +static void +Field_tlo_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - *valp -= pc; - return 0; + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x30) | (tie_t << 4); } -static int -Operand_soffset_rtoa (uint32 *valp, uint32 pc) +static unsigned +Field_w_Slot_inst_get (const xtensa_insnbuf insn) { - *valp += pc; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 18) >> 30); + return tie_t; } -static int -Operand_uimm16x4_decode (uint32 *valp) +static void +Field_w_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - unsigned uimm16x4_0, imm16_0; - imm16_0 = *valp & 0xffff; - uimm16x4_0 = (((0xffff) << 16) | imm16_0) << 2; - *valp = uimm16x4_0; - return 0; + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x3000) | (tie_t << 12); } -static int -Operand_uimm16x4_encode (uint32 *valp) +static unsigned +Field_y_Slot_inst_get (const xtensa_insnbuf insn) { - unsigned imm16_0, uimm16x4_0; - uimm16x4_0 = *valp; - imm16_0 = (uimm16x4_0 >> 2) & 0xffff; - *valp = imm16_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 25) >> 31); + return tie_t; } -static int -Operand_uimm16x4_ator (uint32 *valp, uint32 pc) +static void +Field_y_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - *valp -= ((pc + 3) & ~0x3); - return 0; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x40) | (tie_t << 6); } -static int -Operand_uimm16x4_rtoa (uint32 *valp, uint32 pc) +static unsigned +Field_x_Slot_inst_get (const xtensa_insnbuf insn) { - *valp += ((pc + 3) & ~0x3); - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 17) >> 31); + return tie_t; } -static int -Operand_immt_decode (uint32 *valp) +static void +Field_x_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - unsigned immt_0, t_0; - t_0 = *valp & 0xf; - immt_0 = t_0; - *valp = immt_0; - return 0; + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000) | (tie_t << 14); } -static int -Operand_immt_encode (uint32 *valp) +static unsigned +Field_t2_Slot_inst_get (const xtensa_insnbuf insn) { - unsigned t_0, immt_0; - immt_0 = *valp; - t_0 = immt_0 & 0xf; - *valp = t_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 24) >> 29); + return tie_t; } -static int -Operand_imms_decode (uint32 *valp) +static void +Field_t2_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - unsigned imms_0, s_0; - s_0 = *valp & 0xf; - imms_0 = s_0; - *valp = imms_0; - return 0; + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe0) | (tie_t << 5); } -static int -Operand_imms_encode (uint32 *valp) +static unsigned +Field_t2_Slot_inst16a_get (const xtensa_insnbuf insn) { - unsigned s_0, imms_0; - imms_0 = *valp; - s_0 = imms_0 & 0xf; - *valp = s_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 24) >> 29); + return tie_t; } -static int -Operand_tp7_decode (uint32 *valp) +static void +Field_t2_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - unsigned tp7_0, t_0; - t_0 = *valp & 0xf; - tp7_0 = t_0 + 0x7; - *valp = tp7_0; - return 0; + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe0) | (tie_t << 5); } -static int -Operand_tp7_encode (uint32 *valp) +static unsigned +Field_t2_Slot_inst16b_get (const xtensa_insnbuf insn) { - unsigned t_0, tp7_0; - tp7_0 = *valp; - t_0 = (tp7_0 - 0x7) & 0xf; - *valp = t_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 24) >> 29); + return tie_t; } -static int -Operand_xt_wbr15_label_decode (uint32 *valp) +static void +Field_t2_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - unsigned xt_wbr15_label_0, xt_wbr15_imm_0; - xt_wbr15_imm_0 = *valp & 0x7fff; - xt_wbr15_label_0 = 0x4 + (((int) xt_wbr15_imm_0 << 17) >> 17); - *valp = xt_wbr15_label_0; - return 0; + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe0) | (tie_t << 5); } -static int -Operand_xt_wbr15_label_encode (uint32 *valp) +static unsigned +Field_s2_Slot_inst_get (const xtensa_insnbuf insn) { - unsigned xt_wbr15_imm_0, xt_wbr15_label_0; - xt_wbr15_label_0 = *valp; - xt_wbr15_imm_0 = (xt_wbr15_label_0 - 0x4) & 0x7fff; - *valp = xt_wbr15_imm_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 20) >> 29); + return tie_t; } -static int -Operand_xt_wbr15_label_ator (uint32 *valp, uint32 pc) +static void +Field_s2_Slot_inst_set (xtensa_insnbuf insn, uint32 val) { - *valp -= pc; - return 0; + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe00) | (tie_t << 9); } -static int -Operand_xt_wbr15_label_rtoa (uint32 *valp, uint32 pc) +static unsigned +Field_s2_Slot_inst16a_get (const xtensa_insnbuf insn) { - *valp += pc; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 20) >> 29); + return tie_t; } -static int -Operand_xt_wbr18_label_decode (uint32 *valp) +static void +Field_s2_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) { - unsigned xt_wbr18_label_0, xt_wbr18_imm_0; - xt_wbr18_imm_0 = *valp & 0x3ffff; - xt_wbr18_label_0 = 0x4 + (((int) xt_wbr18_imm_0 << 14) >> 14); - *valp = xt_wbr18_label_0; - return 0; + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe00) | (tie_t << 9); } -static int -Operand_xt_wbr18_label_encode (uint32 *valp) +static unsigned +Field_s2_Slot_inst16b_get (const xtensa_insnbuf insn) { - unsigned xt_wbr18_imm_0, xt_wbr18_label_0; - xt_wbr18_label_0 = *valp; - xt_wbr18_imm_0 = (xt_wbr18_label_0 - 0x4) & 0x3ffff; - *valp = xt_wbr18_imm_0; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 20) >> 29); + return tie_t; } -static int -Operand_xt_wbr18_label_ator (uint32 *valp, uint32 pc) +static void +Field_s2_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) { - *valp -= pc; - return 0; + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe00) | (tie_t << 9); } -static int -Operand_xt_wbr18_label_rtoa (uint32 *valp, uint32 pc) +static unsigned +Field_r2_Slot_inst_get (const xtensa_insnbuf insn) { - *valp += pc; - return 0; + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 16) >> 29); + return tie_t; } -static xtensa_operand_internal operands[] = { - { "soffsetx4", FIELD_offset, -1, 0, - XTENSA_OPERAND_IS_PCRELATIVE, - Operand_soffsetx4_encode, Operand_soffsetx4_decode, - Operand_soffsetx4_ator, Operand_soffsetx4_rtoa }, - { "uimm12x8", FIELD_imm12, -1, 0, - 0, - Operand_uimm12x8_encode, Operand_uimm12x8_decode, - 0, 0 }, - { "simm4", FIELD_mn, -1, 0, - 0, - Operand_simm4_encode, Operand_simm4_decode, - 0, 0 }, - { "arr", FIELD_r, REGFILE_AR, 1, - XTENSA_OPERAND_IS_REGISTER, - Operand_arr_encode, Operand_arr_decode, - 0, 0 }, - { "ars", FIELD_s, REGFILE_AR, 1, - XTENSA_OPERAND_IS_REGISTER, - Operand_ars_encode, Operand_ars_decode, - 0, 0 }, - { "*ars_invisible", FIELD_s, REGFILE_AR, 1, - XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, - Operand_ars_encode, Operand_ars_decode, - 0, 0 }, - { "art", FIELD_t, REGFILE_AR, 1, - XTENSA_OPERAND_IS_REGISTER, - Operand_art_encode, Operand_art_decode, - 0, 0 }, - { "ar0", FIELD__ar0, REGFILE_AR, 1, - XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, - Operand_ar0_encode, Operand_ar0_decode, - 0, 0 }, - { "ar4", FIELD__ar4, REGFILE_AR, 1, - XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, - Operand_ar4_encode, Operand_ar4_decode, - 0, 0 }, - { "ar8", FIELD__ar8, REGFILE_AR, 1, - XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, - Operand_ar8_encode, Operand_ar8_decode, - 0, 0 }, - { "ar12", FIELD__ar12, REGFILE_AR, 1, - XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, - Operand_ar12_encode, Operand_ar12_decode, - 0, 0 }, - { "ars_entry", FIELD_s, REGFILE_AR, 1, - XTENSA_OPERAND_IS_REGISTER, - Operand_ars_entry_encode, Operand_ars_entry_decode, - 0, 0 }, - { "immrx4", FIELD_r, -1, 0, - 0, - Operand_immrx4_encode, Operand_immrx4_decode, - 0, 0 }, - { "lsi4x4", FIELD_r, -1, 0, - 0, - Operand_lsi4x4_encode, Operand_lsi4x4_decode, - 0, 0 }, - { "simm7", FIELD_imm7, -1, 0, - 0, - Operand_simm7_encode, Operand_simm7_decode, - 0, 0 }, - { "uimm6", FIELD_imm6, -1, 0, - XTENSA_OPERAND_IS_PCRELATIVE, - Operand_uimm6_encode, Operand_uimm6_decode, - Operand_uimm6_ator, Operand_uimm6_rtoa }, - { "ai4const", FIELD_t, -1, 0, - 0, - Operand_ai4const_encode, Operand_ai4const_decode, - 0, 0 }, - { "b4const", FIELD_r, -1, 0, - 0, - Operand_b4const_encode, Operand_b4const_decode, - 0, 0 }, - { "b4constu", FIELD_r, -1, 0, - 0, - Operand_b4constu_encode, Operand_b4constu_decode, - 0, 0 }, - { "uimm8", FIELD_imm8, -1, 0, - 0, - Operand_uimm8_encode, Operand_uimm8_decode, - 0, 0 }, - { "uimm8x2", FIELD_imm8, -1, 0, - 0, - Operand_uimm8x2_encode, Operand_uimm8x2_decode, - 0, 0 }, - { "uimm8x4", FIELD_imm8, -1, 0, - 0, - Operand_uimm8x4_encode, Operand_uimm8x4_decode, - 0, 0 }, - { "uimm4x16", FIELD_op2, -1, 0, - 0, - Operand_uimm4x16_encode, Operand_uimm4x16_decode, - 0, 0 }, - { "simm8", FIELD_imm8, -1, 0, - 0, - Operand_simm8_encode, Operand_simm8_decode, - 0, 0 }, - { "simm8x256", FIELD_imm8, -1, 0, - 0, - Operand_simm8x256_encode, Operand_simm8x256_decode, - 0, 0 }, - { "simm12b", FIELD_imm12b, -1, 0, - 0, - Operand_simm12b_encode, Operand_simm12b_decode, - 0, 0 }, - { "msalp32", FIELD_sal, -1, 0, - 0, - Operand_msalp32_encode, Operand_msalp32_decode, - 0, 0 }, - { "op2p1", FIELD_op2, -1, 0, - 0, - Operand_op2p1_encode, Operand_op2p1_decode, - 0, 0 }, - { "label8", FIELD_imm8, -1, 0, - XTENSA_OPERAND_IS_PCRELATIVE, - Operand_label8_encode, Operand_label8_decode, - Operand_label8_ator, Operand_label8_rtoa }, - { "ulabel8", FIELD_imm8, -1, 0, - XTENSA_OPERAND_IS_PCRELATIVE, - Operand_ulabel8_encode, Operand_ulabel8_decode, - Operand_ulabel8_ator, Operand_ulabel8_rtoa }, - { "label12", FIELD_imm12, -1, 0, - XTENSA_OPERAND_IS_PCRELATIVE, - Operand_label12_encode, Operand_label12_decode, - Operand_label12_ator, Operand_label12_rtoa }, - { "soffset", FIELD_offset, -1, 0, - XTENSA_OPERAND_IS_PCRELATIVE, - Operand_soffset_encode, Operand_soffset_decode, - Operand_soffset_ator, Operand_soffset_rtoa }, - { "uimm16x4", FIELD_imm16, -1, 0, - XTENSA_OPERAND_IS_PCRELATIVE, - Operand_uimm16x4_encode, Operand_uimm16x4_decode, - Operand_uimm16x4_ator, Operand_uimm16x4_rtoa }, - { "immt", FIELD_t, -1, 0, - 0, - Operand_immt_encode, Operand_immt_decode, - 0, 0 }, - { "imms", FIELD_s, -1, 0, - 0, - Operand_imms_encode, Operand_imms_decode, - 0, 0 }, - { "tp7", FIELD_t, -1, 0, - 0, - Operand_tp7_encode, Operand_tp7_decode, - 0, 0 }, - { "xt_wbr15_label", FIELD_xt_wbr15_imm, -1, 0, - XTENSA_OPERAND_IS_PCRELATIVE, - Operand_xt_wbr15_label_encode, Operand_xt_wbr15_label_decode, - Operand_xt_wbr15_label_ator, Operand_xt_wbr15_label_rtoa }, - { "xt_wbr18_label", FIELD_xt_wbr18_imm, -1, 0, - XTENSA_OPERAND_IS_PCRELATIVE, - Operand_xt_wbr18_label_encode, Operand_xt_wbr18_label_decode, - Operand_xt_wbr18_label_ator, Operand_xt_wbr18_label_rtoa }, - { "t", FIELD_t, -1, 0, 0, 0, 0, 0, 0 }, - { "bbi4", FIELD_bbi4, -1, 0, 0, 0, 0, 0, 0 }, - { "bbi", FIELD_bbi, -1, 0, 0, 0, 0, 0, 0 }, - { "imm12", FIELD_imm12, -1, 0, 0, 0, 0, 0, 0 }, - { "imm8", FIELD_imm8, -1, 0, 0, 0, 0, 0, 0 }, - { "s", FIELD_s, -1, 0, 0, 0, 0, 0, 0 }, - { "imm12b", FIELD_imm12b, -1, 0, 0, 0, 0, 0, 0 }, - { "imm16", FIELD_imm16, -1, 0, 0, 0, 0, 0, 0 }, - { "m", FIELD_m, -1, 0, 0, 0, 0, 0, 0 }, - { "n", FIELD_n, -1, 0, 0, 0, 0, 0, 0 }, - { "offset", FIELD_offset, -1, 0, 0, 0, 0, 0, 0 }, - { "op0", FIELD_op0, -1, 0, 0, 0, 0, 0, 0 }, - { "op1", FIELD_op1, -1, 0, 0, 0, 0, 0, 0 }, - { "op2", FIELD_op2, -1, 0, 0, 0, 0, 0, 0 }, - { "r", FIELD_r, -1, 0, 0, 0, 0, 0, 0 }, - { "sa4", FIELD_sa4, -1, 0, 0, 0, 0, 0, 0 }, - { "sae4", FIELD_sae4, -1, 0, 0, 0, 0, 0, 0 }, - { "sae", FIELD_sae, -1, 0, 0, 0, 0, 0, 0 }, - { "sal", FIELD_sal, -1, 0, 0, 0, 0, 0, 0 }, - { "sargt", FIELD_sargt, -1, 0, 0, 0, 0, 0, 0 }, - { "sas4", FIELD_sas4, -1, 0, 0, 0, 0, 0, 0 }, - { "sas", FIELD_sas, -1, 0, 0, 0, 0, 0, 0 }, - { "sr", FIELD_sr, -1, 0, 0, 0, 0, 0, 0 }, - { "st", FIELD_st, -1, 0, 0, 0, 0, 0, 0 }, - { "thi3", FIELD_thi3, -1, 0, 0, 0, 0, 0, 0 }, - { "imm4", FIELD_imm4, -1, 0, 0, 0, 0, 0, 0 }, - { "mn", FIELD_mn, -1, 0, 0, 0, 0, 0, 0 }, - { "i", FIELD_i, -1, 0, 0, 0, 0, 0, 0 }, - { "imm6lo", FIELD_imm6lo, -1, 0, 0, 0, 0, 0, 0 }, - { "imm6hi", FIELD_imm6hi, -1, 0, 0, 0, 0, 0, 0 }, - { "imm7lo", FIELD_imm7lo, -1, 0, 0, 0, 0, 0, 0 }, - { "imm7hi", FIELD_imm7hi, -1, 0, 0, 0, 0, 0, 0 }, - { "z", FIELD_z, -1, 0, 0, 0, 0, 0, 0 }, - { "imm6", FIELD_imm6, -1, 0, 0, 0, 0, 0, 0 }, - { "imm7", FIELD_imm7, -1, 0, 0, 0, 0, 0, 0 }, - { "xt_wbr15_imm", FIELD_xt_wbr15_imm, -1, 0, 0, 0, 0, 0, 0 }, - { "xt_wbr18_imm", FIELD_xt_wbr18_imm, -1, 0, 0, 0, 0, 0, 0 } -}; - -enum xtensa_operand_id { - OPERAND_soffsetx4, - OPERAND_uimm12x8, - OPERAND_simm4, - OPERAND_arr, - OPERAND_ars, - OPERAND__ars_invisible, - OPERAND_art, - OPERAND_ar0, - OPERAND_ar4, - OPERAND_ar8, - OPERAND_ar12, - OPERAND_ars_entry, - OPERAND_immrx4, - OPERAND_lsi4x4, - OPERAND_simm7, - OPERAND_uimm6, - OPERAND_ai4const, - OPERAND_b4const, - OPERAND_b4constu, - OPERAND_uimm8, - OPERAND_uimm8x2, - OPERAND_uimm8x4, - OPERAND_uimm4x16, - OPERAND_simm8, - OPERAND_simm8x256, - OPERAND_simm12b, - OPERAND_msalp32, - OPERAND_op2p1, - OPERAND_label8, - OPERAND_ulabel8, - OPERAND_label12, - OPERAND_soffset, - OPERAND_uimm16x4, - OPERAND_immt, - OPERAND_imms, - OPERAND_tp7, - OPERAND_xt_wbr15_label, - OPERAND_xt_wbr18_label, - OPERAND_t, - OPERAND_bbi4, - OPERAND_bbi, - OPERAND_imm12, - OPERAND_imm8, - OPERAND_s, - OPERAND_imm12b, - OPERAND_imm16, - OPERAND_m, - OPERAND_n, - OPERAND_offset, - OPERAND_op0, - OPERAND_op1, - OPERAND_op2, - OPERAND_r, - OPERAND_sa4, - OPERAND_sae4, - OPERAND_sae, - OPERAND_sal, - OPERAND_sargt, - OPERAND_sas4, - OPERAND_sas, - OPERAND_sr, - OPERAND_st, - OPERAND_thi3, - OPERAND_imm4, - OPERAND_mn, - OPERAND_i, - OPERAND_imm6lo, - OPERAND_imm6hi, - OPERAND_imm7lo, - OPERAND_imm7hi, - OPERAND_z, - OPERAND_imm6, - OPERAND_imm7, - OPERAND_xt_wbr15_imm, - OPERAND_xt_wbr18_imm -}; - - -/* Iclass table. */ +static void +Field_r2_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe000) | (tie_t << 13); +} -static xtensa_arg_internal Iclass_xt_iclass_rfe_stateArgs[] = { - { { STATE_PSRING }, 'i' }, - { { STATE_PSEXCM }, 'm' }, - { { STATE_EPC1 }, 'i' } -}; +static unsigned +Field_r2_Slot_inst16a_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 16) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rfde_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DEPC }, 'i' } -}; +static void +Field_r2_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe000) | (tie_t << 13); +} -static xtensa_arg_internal Iclass_xt_iclass_call12_args[] = { - { { OPERAND_soffsetx4 }, 'i' }, - { { OPERAND_ar12 }, 'o' } -}; +static unsigned +Field_r2_Slot_inst16b_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 16) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_call12_stateArgs[] = { - { { STATE_PSCALLINC }, 'o' } -}; +static void +Field_r2_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe000) | (tie_t << 13); +} -static xtensa_arg_internal Iclass_xt_iclass_call8_args[] = { - { { OPERAND_soffsetx4 }, 'i' }, - { { OPERAND_ar8 }, 'o' } -}; +static unsigned +Field_t4_Slot_inst_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 24) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_call8_stateArgs[] = { - { { STATE_PSCALLINC }, 'o' } -}; +static void +Field_t4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc0) | (tie_t << 6); +} -static xtensa_arg_internal Iclass_xt_iclass_call4_args[] = { - { { OPERAND_soffsetx4 }, 'i' }, - { { OPERAND_ar4 }, 'o' } -}; +static unsigned +Field_t4_Slot_inst16a_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 24) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_call4_stateArgs[] = { - { { STATE_PSCALLINC }, 'o' } -}; +static void +Field_t4_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc0) | (tie_t << 6); +} -static xtensa_arg_internal Iclass_xt_iclass_callx12_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_ar12 }, 'o' } -}; +static unsigned +Field_t4_Slot_inst16b_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 24) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_callx12_stateArgs[] = { - { { STATE_PSCALLINC }, 'o' } -}; +static void +Field_t4_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc0) | (tie_t << 6); +} -static xtensa_arg_internal Iclass_xt_iclass_callx8_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_ar8 }, 'o' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_callx8_stateArgs[] = { - { { STATE_PSCALLINC }, 'o' } -}; +static unsigned +Field_s4_Slot_inst_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 20) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_callx4_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_ar4 }, 'o' } -}; +static void +Field_s4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc00) | (tie_t << 10); +} -static xtensa_arg_internal Iclass_xt_iclass_callx4_stateArgs[] = { - { { STATE_PSCALLINC }, 'o' } -}; +static unsigned +Field_s4_Slot_inst16a_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 20) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_entry_args[] = { - { { OPERAND_ars_entry }, 's' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm12x8 }, 'i' } -}; +static void +Field_s4_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc00) | (tie_t << 10); +} -static xtensa_arg_internal Iclass_xt_iclass_entry_stateArgs[] = { - { { STATE_PSCALLINC }, 'i' }, - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSWOE }, 'i' }, - { { STATE_WindowBase }, 'm' }, - { { STATE_WindowStart }, 'm' } -}; +static unsigned +Field_s4_Slot_inst16b_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 20) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_movsp_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' } -}; +static void +Field_s4_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc00) | (tie_t << 10); +} -static xtensa_arg_internal Iclass_xt_iclass_movsp_stateArgs[] = { - { { STATE_WindowBase }, 'i' }, - { { STATE_WindowStart }, 'i' } -}; +static unsigned +Field_r4_Slot_inst_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 16) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rotw_args[] = { - { { OPERAND_simm4 }, 'i' } -}; +static void +Field_r4_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc000) | (tie_t << 14); +} -static xtensa_arg_internal Iclass_xt_iclass_rotw_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_WindowBase }, 'm' } -}; +static unsigned +Field_r4_Slot_inst16a_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 16) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_retw_args[] = { - { { OPERAND__ars_invisible }, 'i' } -}; +static void +Field_r4_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc000) | (tie_t << 14); +} -static xtensa_arg_internal Iclass_xt_iclass_retw_stateArgs[] = { - { { STATE_WindowBase }, 'm' }, - { { STATE_WindowStart }, 'm' }, - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSWOE }, 'i' } -}; +static unsigned +Field_r4_Slot_inst16b_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 16) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rfwou_stateArgs[] = { - { { STATE_EPC1 }, 'i' }, - { { STATE_PSEXCM }, 'm' }, - { { STATE_PSRING }, 'i' }, - { { STATE_WindowBase }, 'm' }, - { { STATE_WindowStart }, 'm' }, - { { STATE_PSOWB }, 'i' } -}; +static void +Field_r4_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc000) | (tie_t << 14); +} -static xtensa_arg_internal Iclass_xt_iclass_l32e_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_immrx4 }, 'i' } -}; +static unsigned +Field_t8_Slot_inst_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_l32e_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } -}; +static void +Field_t8_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); +} -static xtensa_arg_internal Iclass_xt_iclass_s32e_args[] = { - { { OPERAND_art }, 'i' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_immrx4 }, 'i' } -}; +static unsigned +Field_t8_Slot_inst16a_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_s32e_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } -}; +static void +Field_t8_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_windowbase_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Field_t8_Slot_inst16b_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_windowbase_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_WindowBase }, 'i' } -}; +static void +Field_t8_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_windowbase_args[] = { - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_s8_Slot_inst_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 20) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_windowbase_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_WindowBase }, 'o' } -}; +static void +Field_s8_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x800) | (tie_t << 11); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_windowbase_args[] = { - { { OPERAND_art }, 'm' } -}; +static unsigned +Field_s8_Slot_inst16a_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 20) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_windowbase_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_WindowBase }, 'm' } -}; +static void +Field_s8_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x800) | (tie_t << 11); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_windowstart_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Field_s8_Slot_inst16b_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 20) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_windowstart_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_WindowStart }, 'i' } -}; +static void +Field_s8_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x800) | (tie_t << 11); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_windowstart_args[] = { - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_r8_Slot_inst_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 16) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_windowstart_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_WindowStart }, 'o' } -}; +static void +Field_r8_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x8000) | (tie_t << 15); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_windowstart_args[] = { - { { OPERAND_art }, 'm' } -}; +static unsigned +Field_r8_Slot_inst16a_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 16) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_windowstart_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_WindowStart }, 'm' } -}; +static void +Field_r8_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x8000) | (tie_t << 15); +} -static xtensa_arg_internal Iclass_xt_iclass_add_n_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_r8_Slot_inst16b_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 16) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_addi_n_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_ai4const }, 'i' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_bz6_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm6 }, 'i' } -}; +static void +Field_r8_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x8000) | (tie_t << 15); +} -static xtensa_arg_internal Iclass_xt_iclass_loadi4_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_lsi4x4 }, 'i' } -}; +static unsigned +Field_xt_wbr15_imm_Slot_inst_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 15) | ((insn[0] << 8) >> 17); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_mov_n_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' } -}; +static void +Field_xt_wbr15_imm_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 17) >> 17; + insn[0] = (insn[0] & ~0xfffe00) | (tie_t << 9); +} -static xtensa_arg_internal Iclass_xt_iclass_movi_n_args[] = { - { { OPERAND_ars }, 'o' }, - { { OPERAND_simm7 }, 'i' } -}; +static unsigned +Field_xt_wbr18_imm_Slot_inst_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 18) | ((insn[0] << 8) >> 14); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_retn_args[] = { - { { OPERAND__ars_invisible }, 'i' } -}; +static void +Field_xt_wbr18_imm_Slot_inst_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 14) >> 14; + insn[0] = (insn[0] & ~0xffffc0) | (tie_t << 6); +} -static xtensa_arg_internal Iclass_xt_iclass_storei4_args[] = { - { { OPERAND_art }, 'i' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_lsi4x4 }, 'i' } -}; +static unsigned +Field_xt_wbr18_imm_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 18) | ((insn[0] << 6) >> 14); + return tie_t; +} -static xtensa_arg_internal Iclass_rur_threadptr_args[] = { - { { OPERAND_arr }, 'o' } -}; +static void +Field_xt_wbr18_imm_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 14) >> 14; + insn[0] = (insn[0] & ~0x3ffff00) | (tie_t << 8); +} -static xtensa_arg_internal Iclass_rur_threadptr_stateArgs[] = { - { { STATE_THREADPTR }, 'i' } -}; +static unsigned +Field_op0_xt_flix64_slot0_s3_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 8) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_wur_threadptr_args[] = { - { { OPERAND_art }, 'i' } -}; +static void +Field_op0_xt_flix64_slot0_s3_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00000) | (tie_t << 20); +} -static xtensa_arg_internal Iclass_wur_threadptr_stateArgs[] = { - { { STATE_THREADPTR }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld7_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 16) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_addi_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_simm8 }, 'i' } -}; +static void +Field_combined3e2c5767_fld7_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe000) | (tie_t << 13); +} -static xtensa_arg_internal Iclass_xt_iclass_addmi_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_simm8x256 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld8_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 16) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_addsub_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_art }, 'i' } -}; +static void +Field_combined3e2c5767_fld8_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe000) | (tie_t << 13); +} -static xtensa_arg_internal Iclass_xt_iclass_bit_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld9_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 12) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_bsi8_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_b4const }, 'i' }, - { { OPERAND_label8 }, 'i' } -}; +static void +Field_combined3e2c5767_fld9_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe0000) | (tie_t << 17); +} -static xtensa_arg_internal Iclass_xt_iclass_bsi8b_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_bbi }, 'i' }, - { { OPERAND_label8 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld11_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 12) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_bsi8u_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_b4constu }, 'i' }, - { { OPERAND_label8 }, 'i' } -}; +static void +Field_combined3e2c5767_fld11_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe0000) | (tie_t << 17); +} -static xtensa_arg_internal Iclass_xt_iclass_bst8_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_art }, 'i' }, - { { OPERAND_label8 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld49xt_flix64_slot0_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28); + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_bsz12_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_label12 }, 'i' } -}; +static void +Field_combined3e2c5767_fld49xt_flix64_slot0_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); + tie_t = (val << 24) >> 28; + insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16); +} -static xtensa_arg_internal Iclass_xt_iclass_call0_args[] = { - { { OPERAND_soffsetx4 }, 'i' }, - { { OPERAND_ar0 }, 'o' } -}; +static unsigned +Field_op0_s4_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 12) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_callx0_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_ar0 }, 'o' } -}; +static void +Field_op0_s4_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc0000) | (tie_t << 18); +} -static xtensa_arg_internal Iclass_xt_iclass_exti_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_art }, 'i' }, - { { OPERAND_sae }, 'i' }, - { { OPERAND_op2p1 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld16_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_jump_args[] = { - { { OPERAND_soffset }, 'i' } -}; +static void +Field_combined3e2c5767_fld16_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_jumpx_args[] = { - { { OPERAND_ars }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld19xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 14) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_l16ui_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x2 }, 'i' } -}; +static void +Field_combined3e2c5767_fld19xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x20000) | (tie_t << 17); +} -static xtensa_arg_internal Iclass_xt_iclass_l16si_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x2 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld20xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 14) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_l32i_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x4 }, 'i' } -}; +static void +Field_combined3e2c5767_fld20xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x30000) | (tie_t << 16); +} -static xtensa_arg_internal Iclass_xt_iclass_l32r_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_uimm16x4 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld21xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 5) | ((insn[0] << 14) >> 27); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_l32r_stateArgs[] = { - { { STATE_LITBADDR }, 'i' }, - { { STATE_LITBEN }, 'i' } -}; +static void +Field_combined3e2c5767_fld21xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 27) >> 27; + insn[0] = (insn[0] & ~0x3e000) | (tie_t << 13); +} -static xtensa_arg_internal Iclass_xt_iclass_l8i_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld22xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 6) | ((insn[0] << 14) >> 26); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_loop_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_ulabel8 }, 'i' } -}; +static void +Field_combined3e2c5767_fld22xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 26) >> 26; + insn[0] = (insn[0] & ~0x3f000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_loop_stateArgs[] = { - { { STATE_LBEG }, 'o' }, - { { STATE_LEND }, 'o' }, - { { STATE_LCOUNT }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld23xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 6) | ((insn[0] << 14) >> 26); + tie_t = (tie_t << 3) | ((insn[0] << 25) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_loopz_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_ulabel8 }, 'i' } -}; +static void +Field_combined3e2c5767_fld23xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0x70) | (tie_t << 4); + tie_t = (val << 23) >> 26; + insn[0] = (insn[0] & ~0x3f000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_loopz_stateArgs[] = { - { { STATE_LBEG }, 'o' }, - { { STATE_LEND }, 'o' }, - { { STATE_LCOUNT }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld25xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 6) | ((insn[0] << 14) >> 26); + tie_t = (tie_t << 3) | ((insn[0] << 25) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_movi_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_simm12b }, 'i' } -}; +static void +Field_combined3e2c5767_fld25xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0x70) | (tie_t << 4); + tie_t = (val << 23) >> 26; + insn[0] = (insn[0] & ~0x3f000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_movz_args[] = { - { { OPERAND_arr }, 'm' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld26xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 6) | ((insn[0] << 14) >> 26); + tie_t = (tie_t << 2) | ((insn[0] << 25) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_neg_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_art }, 'i' } -}; +static void +Field_combined3e2c5767_fld26xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x60) | (tie_t << 5); + tie_t = (val << 24) >> 26; + insn[0] = (insn[0] & ~0x3f000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_return_args[] = { - { { OPERAND__ars_invisible }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld28xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 6) | ((insn[0] << 14) >> 26); + tie_t = (tie_t << 1) | ((insn[0] << 25) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_s16i_args[] = { - { { OPERAND_art }, 'i' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x2 }, 'i' } -}; +static void +Field_combined3e2c5767_fld28xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x40) | (tie_t << 6); + tie_t = (val << 25) >> 26; + insn[0] = (insn[0] & ~0x3f000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_s32i_args[] = { - { { OPERAND_art }, 'i' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x4 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld30xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 6) | ((insn[0] << 14) >> 26); + tie_t = (tie_t << 2) | ((insn[0] << 22) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_s8i_args[] = { - { { OPERAND_art }, 'i' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8 }, 'i' } -}; +static void +Field_combined3e2c5767_fld30xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x300) | (tie_t << 8); + tie_t = (val << 24) >> 26; + insn[0] = (insn[0] & ~0x3f000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_sar_args[] = { - { { OPERAND_ars }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld32xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 6) | ((insn[0] << 14) >> 26); + tie_t = (tie_t << 2) | ((insn[0] << 22) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_sar_stateArgs[] = { - { { STATE_SAR }, 'o' } -}; +static void +Field_combined3e2c5767_fld32xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x300) | (tie_t << 8); + tie_t = (val << 24) >> 26; + insn[0] = (insn[0] & ~0x3f000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_sari_args[] = { - { { OPERAND_sas }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld33xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 6) | ((insn[0] << 14) >> 26); + tie_t = (tie_t << 1) | ((insn[0] << 22) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_sari_stateArgs[] = { - { { STATE_SAR }, 'o' } -}; +static void +Field_combined3e2c5767_fld33xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x200) | (tie_t << 9); + tie_t = (val << 25) >> 26; + insn[0] = (insn[0] & ~0x3f000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_shifts_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld35xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 14) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_shifts_stateArgs[] = { - { { STATE_SAR }, 'i' } -}; +static void +Field_combined3e2c5767_fld35xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0x38000) | (tie_t << 15); +} -static xtensa_arg_internal Iclass_xt_iclass_shiftst_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld51xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_shiftst_stateArgs[] = { - { { STATE_SAR }, 'i' } -}; +static void +Field_combined3e2c5767_fld51xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); +} -static xtensa_arg_internal Iclass_xt_iclass_shiftt_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld52xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_shiftt_stateArgs[] = { - { { STATE_SAR }, 'i' } -}; +static void +Field_combined3e2c5767_fld52xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); +} -static xtensa_arg_internal Iclass_xt_iclass_slli_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_msalp32 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld53xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 20) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_srai_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_art }, 'i' }, - { { OPERAND_sargt }, 'i' } -}; +static void +Field_combined3e2c5767_fld53xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0xc00) | (tie_t << 10); +} -static xtensa_arg_internal Iclass_xt_iclass_srli_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_art }, 'i' }, - { { OPERAND_s }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld54xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 5) | ((insn[0] << 20) >> 27); + tie_t = (tie_t << 6) | ((insn[0] << 26) >> 26); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_sync_stateArgs[] = { - { { STATE_XTSYNC }, 'i' } -}; +static void +Field_combined3e2c5767_fld54xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 26) >> 26; + insn[0] = (insn[0] & ~0x3f) | (tie_t << 0); + tie_t = (val << 21) >> 27; + insn[0] = (insn[0] & ~0xf80) | (tie_t << 7); +} -static xtensa_arg_internal Iclass_xt_iclass_rsil_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_s }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld57xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsil_stateArgs[] = { - { { STATE_PSWOE }, 'i' }, - { { STATE_PSCALLINC }, 'i' }, - { { STATE_PSOWB }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_PSUM }, 'i' }, - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSINTLEVEL }, 'm' } -}; +static void +Field_combined3e2c5767_fld57xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_lend_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld58xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 20) >> 30); + tie_t = (tie_t << 1) | ((insn[0] << 23) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_lend_stateArgs[] = { - { { STATE_LEND }, 'i' } -}; +static void +Field_combined3e2c5767_fld58xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x100) | (tie_t << 8); + tie_t = (val << 29) >> 30; + insn[0] = (insn[0] & ~0xc00) | (tie_t << 10); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_lend_args[] = { - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld60xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + tie_t = (tie_t << 5) | ((insn[0] << 27) >> 27); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_lend_stateArgs[] = { - { { STATE_LEND }, 'o' } -}; +static void +Field_combined3e2c5767_fld60xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 27) >> 27; + insn[0] = (insn[0] & ~0x1f) | (tie_t << 0); + tie_t = (val << 26) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_lend_args[] = { - { { OPERAND_art }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld62xt_flix64_slot1_Slot_xt_flix64_slot1_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 17) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_lend_stateArgs[] = { - { { STATE_LEND }, 'm' } -}; +static void +Field_combined3e2c5767_fld62xt_flix64_slot1_Slot_xt_flix64_slot1_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0x7000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_lcount_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Field_op0_s5_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[0] << 16) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_lcount_stateArgs[] = { - { { STATE_LCOUNT }, 'i' } -}; +static void +Field_op0_s5_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0xe000) | (tie_t << 13); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_lcount_args[] = { - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld36xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_lcount_stateArgs[] = { - { { STATE_XTSYNC }, 'o' }, - { { STATE_LCOUNT }, 'o' } -}; +static void +Field_combined3e2c5767_fld36xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_lcount_args[] = { - { { OPERAND_art }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld37xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_lcount_stateArgs[] = { - { { STATE_XTSYNC }, 'o' }, - { { STATE_LCOUNT }, 'm' } -}; +static void +Field_combined3e2c5767_fld37xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); + tie_t = (val << 30) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_lbeg_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld39xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + tie_t = (tie_t << 1) | ((insn[0] << 27) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_lbeg_stateArgs[] = { - { { STATE_LBEG }, 'i' } -}; +static void +Field_combined3e2c5767_fld39xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x10) | (tie_t << 4); + tie_t = (val << 30) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); + tie_t = (val << 29) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_lbeg_args[] = { - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld41xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31); + tie_t = (tie_t << 1) | ((insn[0] << 27) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_lbeg_stateArgs[] = { - { { STATE_LBEG }, 'o' } -}; +static void +Field_combined3e2c5767_fld41xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x10) | (tie_t << 4); + tie_t = (val << 30) >> 31; + insn[0] = (insn[0] & ~0x80) | (tie_t << 7); + tie_t = (val << 29) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_lbeg_args[] = { - { { OPERAND_art }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld42xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + tie_t = (tie_t << 3) | ((insn[0] << 21) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_lbeg_stateArgs[] = { - { { STATE_LBEG }, 'm' } -}; +static void +Field_combined3e2c5767_fld42xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0x700) | (tie_t << 8); + tie_t = (val << 28) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_sar_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld44xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + tie_t = (tie_t << 3) | ((insn[0] << 21) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_sar_stateArgs[] = { - { { STATE_SAR }, 'i' } -}; +static void +Field_combined3e2c5767_fld44xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[0] = (insn[0] & ~0x700) | (tie_t << 8); + tie_t = (val << 28) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_sar_args[] = { - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld45xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + tie_t = (tie_t << 2) | ((insn[0] << 21) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_sar_stateArgs[] = { - { { STATE_SAR }, 'o' }, - { { STATE_XTSYNC }, 'o' } -}; +static void +Field_combined3e2c5767_fld45xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x600) | (tie_t << 9); + tie_t = (val << 29) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_sar_args[] = { - { { OPERAND_art }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld47xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31); + tie_t = (tie_t << 1) | ((insn[0] << 21) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_sar_stateArgs[] = { - { { STATE_SAR }, 'm' } -}; +static void +Field_combined3e2c5767_fld47xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x400) | (tie_t << 10); + tie_t = (val << 30) >> 31; + insn[0] = (insn[0] & ~0x1000) | (tie_t << 12); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_litbase_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld63xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 2) | ((insn[0] << 25) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_litbase_stateArgs[] = { - { { STATE_LITBADDR }, 'i' }, - { { STATE_LITBEN }, 'i' } -}; +static void +Field_combined3e2c5767_fld63xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x60) | (tie_t << 5); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_litbase_args[] = { - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld64xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 20) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_litbase_stateArgs[] = { - { { STATE_LITBADDR }, 'o' }, - { { STATE_LITBEN }, 'o' } -}; +static void +Field_combined3e2c5767_fld64xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x800) | (tie_t << 11); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_litbase_args[] = { - { { OPERAND_art }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld65xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28); + tie_t = (tie_t << 2) | ((insn[0] << 25) >> 30); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_litbase_stateArgs[] = { - { { STATE_LITBADDR }, 'm' }, - { { STATE_LITBEN }, 'm' } -}; +static void +Field_combined3e2c5767_fld65xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 26) >> 30; + insn[0] = (insn[0] & ~0x60) | (tie_t << 5); + tie_t = (val << 22) >> 28; + insn[0] = (insn[0] & ~0xf00) | (tie_t << 8); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_176_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld66xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 20) >> 31); + tie_t = (tie_t << 1) | ((insn[0] << 23) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_176_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } -}; +static void +Field_combined3e2c5767_fld66xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x100) | (tie_t << 8); + tie_t = (val << 30) >> 31; + insn[0] = (insn[0] & ~0x800) | (tie_t << 11); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_176_args[] = { - { { OPERAND_art }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld68xt_flix64_slot2_Slot_xt_flix64_slot2_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 1) | ((insn[0] << 20) >> 31); + tie_t = (tie_t << 2) | ((insn[0] << 22) >> 30); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_176_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } -}; +static void +Field_combined3e2c5767_fld68xt_flix64_slot2_Slot_xt_flix64_slot2_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 30) >> 30; + insn[0] = (insn[0] & ~0x300) | (tie_t << 8); + tie_t = (val << 29) >> 31; + insn[0] = (insn[0] & ~0x800) | (tie_t << 11); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_208_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Field_op0_s6_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 5) | ((insn[0] << 0) >> 27); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_208_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } -}; +static void +Field_op0_s6_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 27) >> 27; + insn[0] = (insn[0] & ~0xf8000000) | (tie_t << 27); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_ps_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld70xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_ps_stateArgs[] = { - { { STATE_PSWOE }, 'i' }, - { { STATE_PSCALLINC }, 'i' }, - { { STATE_PSOWB }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_PSUM }, 'i' }, - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSINTLEVEL }, 'i' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_wsr_ps_args[] = { - { { OPERAND_art }, 'i' } -}; +static void +Field_combined3e2c5767_fld70xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 24) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_ps_stateArgs[] = { - { { STATE_PSWOE }, 'o' }, - { { STATE_PSCALLINC }, 'o' }, - { { STATE_PSOWB }, 'o' }, - { { STATE_PSRING }, 'm' }, - { { STATE_PSUM }, 'o' }, - { { STATE_PSEXCM }, 'm' }, - { { STATE_PSINTLEVEL }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld71_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_ps_args[] = { - { { OPERAND_art }, 'm' } -}; +static void +Field_combined3e2c5767_fld71_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 29) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_ps_stateArgs[] = { - { { STATE_PSWOE }, 'm' }, - { { STATE_PSCALLINC }, 'm' }, - { { STATE_PSOWB }, 'm' }, - { { STATE_PSRING }, 'm' }, - { { STATE_PSUM }, 'm' }, - { { STATE_PSEXCM }, 'm' }, - { { STATE_PSINTLEVEL }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld72xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc1_args[] = { - { { OPERAND_art }, 'o' } -}; +static void +Field_combined3e2c5767_fld72xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 24) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC1 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld73xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc1_args[] = { - { { OPERAND_art }, 'i' } -}; +static void +Field_combined3e2c5767_fld73xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 24) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC1 }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld74xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc1_args[] = { - { { OPERAND_art }, 'm' } -}; +static void +Field_combined3e2c5767_fld74xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf) | (tie_t << 0); + tie_t = (val << 27) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 24) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC1 }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld75xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave1_args[] = { - { { OPERAND_art }, 'o' } -}; +static void +Field_combined3e2c5767_fld75xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE1 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld76xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave1_args[] = { - { { OPERAND_art }, 'i' } -}; +static void +Field_combined3e2c5767_fld76xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE1 }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld77xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave1_args[] = { - { { OPERAND_art }, 'm' } -}; +static void +Field_combined3e2c5767_fld77xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE1 }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld78xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc2_args[] = { - { { OPERAND_art }, 'o' } -}; +static void +Field_combined3e2c5767_fld78xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc2_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC2 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld79xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc2_args[] = { - { { OPERAND_art }, 'i' } -}; +static void +Field_combined3e2c5767_fld79xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc2_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC2 }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld80xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc2_args[] = { - { { OPERAND_art }, 'm' } -}; +static void +Field_combined3e2c5767_fld80xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc2_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC2 }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld81xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave2_args[] = { - { { OPERAND_art }, 'o' } -}; +static void +Field_combined3e2c5767_fld81xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave2_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE2 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld82xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave2_args[] = { - { { OPERAND_art }, 'i' } -}; +static void +Field_combined3e2c5767_fld82xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave2_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE2 }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld83xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave2_args[] = { - { { OPERAND_art }, 'm' } -}; +static void +Field_combined3e2c5767_fld83xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave2_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE2 }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld84xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc3_args[] = { - { { OPERAND_art }, 'o' } -}; +static void +Field_combined3e2c5767_fld84xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc3_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC3 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld85xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc3_args[] = { - { { OPERAND_art }, 'i' } -}; +static void +Field_combined3e2c5767_fld85xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc3_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC3 }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld86xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc3_args[] = { - { { OPERAND_art }, 'm' } -}; +static void +Field_combined3e2c5767_fld86xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc3_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC3 }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld87xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave3_args[] = { - { { OPERAND_art }, 'o' } -}; +static void +Field_combined3e2c5767_fld87xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave3_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE3 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld88xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave3_args[] = { - { { OPERAND_art }, 'i' } -}; +static void +Field_combined3e2c5767_fld88xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave3_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE3 }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld89xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave3_args[] = { - { { OPERAND_art }, 'm' } -}; +static void +Field_combined3e2c5767_fld89xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave3_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE3 }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld90xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc4_args[] = { - { { OPERAND_art }, 'o' } -}; +static void +Field_combined3e2c5767_fld90xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc4_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC4 }, 'i' } -}; +static unsigned +Field_combined3e2c5767_fld91xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc4_args[] = { - { { OPERAND_art }, 'i' } -}; +static void +Field_combined3e2c5767_fld91xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc4_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC4 }, 'o' } -}; +static unsigned +Field_combined3e2c5767_fld92xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 1) | ((insn[0] << 5) >> 31); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc4_args[] = { - { { OPERAND_art }, 'm' } -}; +static void +Field_combined3e2c5767_fld92xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 31) >> 31; + insn[0] = (insn[0] & ~0x4000000) | (tie_t << 26); + tie_t = (val << 28) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc4_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC4 }, 'm' } -}; +static unsigned +Field_combined3e2c5767_fld93xt_flix64_slot3_Slot_xt_flix64_slot3_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 3) | ((insn[1] << 29) >> 29); + tie_t = (tie_t << 27) | ((insn[0] << 5) >> 5); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave4_args[] = { - { { OPERAND_art }, 'o' } -}; +static void +Field_combined3e2c5767_fld93xt_flix64_slot3_Slot_xt_flix64_slot3_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 5) >> 5; + insn[0] = (insn[0] & ~0x7ffffff) | (tie_t << 0); + tie_t = (val << 2) >> 29; + insn[1] = (insn[1] & ~0x7) | (tie_t << 0); +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave4_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE4 }, 'i' } -}; +static unsigned +Field_op0_xt_flix64_slot0_Slot_xt_flix64_slot0_get (const xtensa_insnbuf insn) +{ + unsigned tie_t = 0; + tie_t = (tie_t << 4) | ((insn[0] << 8) >> 28); + return tie_t; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave4_args[] = { - { { OPERAND_art }, 'i' } -}; +static void +Field_op0_xt_flix64_slot0_Slot_xt_flix64_slot0_set (xtensa_insnbuf insn, uint32 val) +{ + uint32 tie_t; + tie_t = (val << 28) >> 28; + insn[0] = (insn[0] & ~0xf00000) | (tie_t << 20); +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave4_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE4 }, 'o' } -}; +static void +Implicit_Field_set (xtensa_insnbuf insn ATTRIBUTE_UNUSED, + uint32 val ATTRIBUTE_UNUSED) +{ + /* Do nothing. */ +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave4_args[] = { - { { OPERAND_art }, 'm' } -}; +static unsigned +Implicit_Field_ar0_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave4_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE4 }, 'm' } -}; +static unsigned +Implicit_Field_ar4_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 4; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc5_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Implicit_Field_ar8_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 8; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc5_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC5 }, 'i' } -}; +static unsigned +Implicit_Field_ar12_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 12; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc5_args[] = { - { { OPERAND_art }, 'i' } -}; +static unsigned +Implicit_Field_mr0_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc5_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC5 }, 'o' } -}; +static unsigned +Implicit_Field_mr1_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 1; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc5_args[] = { - { { OPERAND_art }, 'm' } -}; +static unsigned +Implicit_Field_mr2_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 2; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc5_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC5 }, 'm' } -}; +static unsigned +Implicit_Field_mr3_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 3; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave5_args[] = { - { { OPERAND_art }, 'o' } -}; +static unsigned +Implicit_Field_bt16_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave5_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE5 }, 'i' } -}; +static unsigned +Implicit_Field_bs16_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave5_args[] = { - { { OPERAND_art }, 'i' } -}; +static unsigned +Implicit_Field_br16_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave5_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE5 }, 'o' } -}; +static unsigned +Implicit_Field_brall_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave5_args[] = { - { { OPERAND_art }, 'm' } -}; + +/* Functional units. */ -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave5_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE5 }, 'm' } -}; +static xtensa_funcUnit_internal funcUnits[] = { -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc6_args[] = { - { { OPERAND_art }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc6_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC6 }, 'i' } -}; + +/* Register files. */ -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc6_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_regfile_internal regfiles[] = { + { "AR", "a", 0, 32, 64 }, + { "MR", "m", 1, 32, 4 }, + { "BR", "b", 2, 1, 16 }, + { "FR", "f", 3, 32, 16 }, + { "BR2", "b", 2, 2, 8 }, + { "BR4", "b", 2, 4, 4 }, + { "BR8", "b", 2, 8, 2 }, + { "BR16", "b", 2, 16, 1 } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc6_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC6 }, 'o' } -}; + +/* Interfaces. */ -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc6_args[] = { - { { OPERAND_art }, 'm' } -}; +static xtensa_interface_internal interfaces[] = { -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc6_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC6 }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave6_args[] = { - { { OPERAND_art }, 'o' } -}; + +/* Constant tables. */ -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave6_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE6 }, 'i' } +/* constant table ai4c */ +static const unsigned CONST_TBL_ai4c_0[] = { + 0xffffffff, + 0x1, + 0x2, + 0x3, + 0x4, + 0x5, + 0x6, + 0x7, + 0x8, + 0x9, + 0xa, + 0xb, + 0xc, + 0xd, + 0xe, + 0xf, + 0 }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave6_args[] = { - { { OPERAND_art }, 'i' } +/* constant table b4c */ +static const unsigned CONST_TBL_b4c_0[] = { + 0xffffffff, + 0x1, + 0x2, + 0x3, + 0x4, + 0x5, + 0x6, + 0x7, + 0x8, + 0xa, + 0xc, + 0x10, + 0x20, + 0x40, + 0x80, + 0x100, + 0 }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave6_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE6 }, 'o' } +/* constant table b4cu */ +static const unsigned CONST_TBL_b4cu_0[] = { + 0x8000, + 0x10000, + 0x2, + 0x3, + 0x4, + 0x5, + 0x6, + 0x7, + 0x8, + 0xa, + 0xc, + 0x10, + 0x20, + 0x40, + 0x80, + 0x100, + 0 }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave6_args[] = { - { { OPERAND_art }, 'm' } -}; + +/* Instruction operands. */ -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave6_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE6 }, 'm' } -}; +static int +Operand_soffsetx4_decode (uint32 *valp) +{ + unsigned soffsetx4_0, offset_0; + offset_0 = *valp & 0x3ffff; + soffsetx4_0 = 0x4 + ((((int) offset_0 << 14) >> 14) << 2); + *valp = soffsetx4_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc7_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_soffsetx4_encode (uint32 *valp) +{ + unsigned offset_0, soffsetx4_0; + soffsetx4_0 = *valp; + offset_0 = ((soffsetx4_0 - 0x4) >> 2) & 0x3ffff; + *valp = offset_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_epc7_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC7 }, 'i' } -}; +static int +Operand_soffsetx4_ator (uint32 *valp, uint32 pc) +{ + *valp -= (pc & ~0x3); + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc7_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_soffsetx4_rtoa (uint32 *valp, uint32 pc) +{ + *valp += (pc & ~0x3); + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_epc7_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC7 }, 'o' } -}; +static int +Operand_uimm12x8_decode (uint32 *valp) +{ + unsigned uimm12x8_0, imm12_0; + imm12_0 = *valp & 0xfff; + uimm12x8_0 = imm12_0 << 3; + *valp = uimm12x8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc7_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_uimm12x8_encode (uint32 *valp) +{ + unsigned imm12_0, uimm12x8_0; + uimm12x8_0 = *valp; + imm12_0 = ((uimm12x8_0 >> 3) & 0xfff); + *valp = imm12_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_epc7_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPC7 }, 'm' } -}; +static int +Operand_simm4_decode (uint32 *valp) +{ + unsigned simm4_0, mn_0; + mn_0 = *valp & 0xf; + simm4_0 = ((int) mn_0 << 28) >> 28; + *valp = simm4_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave7_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_simm4_encode (uint32 *valp) +{ + unsigned mn_0, simm4_0; + simm4_0 = *valp; + mn_0 = (simm4_0 & 0xf); + *valp = mn_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave7_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE7 }, 'i' } -}; +static int +Operand_arr_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave7_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_arr_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0xf) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave7_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE7 }, 'o' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave7_args[] = { - { { OPERAND_art }, 'm' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave7_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCSAVE7 }, 'm' } -}; +static int +Operand_ars_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps2_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_ars_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0xf) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps2_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS2 }, 'i' } -}; +static int +Operand_art_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps2_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_art_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0xf) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps2_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS2 }, 'o' } -}; +static int +Operand_ar0_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps2_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_ar0_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3f) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps2_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS2 }, 'm' } -}; +static int +Operand_ar4_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps3_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_ar4_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3f) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps3_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS3 }, 'i' } -}; +static int +Operand_ar8_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps3_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_ar8_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3f) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps3_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS3 }, 'o' } -}; +static int +Operand_ar12_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps3_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_ar12_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3f) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps3_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS3 }, 'm' } -}; +static int +Operand_ars_entry_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps4_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_ars_entry_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3f) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps4_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS4 }, 'i' } -}; +static int +Operand_immrx4_decode (uint32 *valp) +{ + unsigned immrx4_0, r_0; + r_0 = *valp & 0xf; + immrx4_0 = (((0xfffffff) << 4) | r_0) << 2; + *valp = immrx4_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps4_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_immrx4_encode (uint32 *valp) +{ + unsigned r_0, immrx4_0; + immrx4_0 = *valp; + r_0 = ((immrx4_0 >> 2) & 0xf); + *valp = r_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps4_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS4 }, 'o' } -}; +static int +Operand_lsi4x4_decode (uint32 *valp) +{ + unsigned lsi4x4_0, r_0; + r_0 = *valp & 0xf; + lsi4x4_0 = r_0 << 2; + *valp = lsi4x4_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps4_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_lsi4x4_encode (uint32 *valp) +{ + unsigned r_0, lsi4x4_0; + lsi4x4_0 = *valp; + r_0 = ((lsi4x4_0 >> 2) & 0xf); + *valp = r_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps4_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS4 }, 'm' } -}; +static int +Operand_simm7_decode (uint32 *valp) +{ + unsigned simm7_0, imm7_0; + imm7_0 = *valp & 0x7f; + simm7_0 = ((((-((((imm7_0 >> 6) & 1)) & (((imm7_0 >> 5) & 1)))) & 0x1ffffff)) << 7) | imm7_0; + *valp = simm7_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps5_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_simm7_encode (uint32 *valp) +{ + unsigned imm7_0, simm7_0; + simm7_0 = *valp; + imm7_0 = (simm7_0 & 0x7f); + *valp = imm7_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps5_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS5 }, 'i' } -}; +static int +Operand_uimm6_decode (uint32 *valp) +{ + unsigned uimm6_0, imm6_0; + imm6_0 = *valp & 0x3f; + uimm6_0 = 0x4 + (((0) << 6) | imm6_0); + *valp = uimm6_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps5_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_uimm6_encode (uint32 *valp) +{ + unsigned imm6_0, uimm6_0; + uimm6_0 = *valp; + imm6_0 = (uimm6_0 - 0x4) & 0x3f; + *valp = imm6_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps5_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS5 }, 'o' } -}; +static int +Operand_uimm6_ator (uint32 *valp, uint32 pc) +{ + *valp -= pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps5_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_uimm6_rtoa (uint32 *valp, uint32 pc) +{ + *valp += pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps5_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS5 }, 'm' } -}; +static int +Operand_ai4const_decode (uint32 *valp) +{ + unsigned ai4const_0, t_0; + t_0 = *valp & 0xf; + ai4const_0 = CONST_TBL_ai4c_0[t_0 & 0xf]; + *valp = ai4const_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps6_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_ai4const_encode (uint32 *valp) +{ + unsigned t_0, ai4const_0; + ai4const_0 = *valp; + switch (ai4const_0) + { + case 0xffffffff: t_0 = 0; break; + case 0x1: t_0 = 0x1; break; + case 0x2: t_0 = 0x2; break; + case 0x3: t_0 = 0x3; break; + case 0x4: t_0 = 0x4; break; + case 0x5: t_0 = 0x5; break; + case 0x6: t_0 = 0x6; break; + case 0x7: t_0 = 0x7; break; + case 0x8: t_0 = 0x8; break; + case 0x9: t_0 = 0x9; break; + case 0xa: t_0 = 0xa; break; + case 0xb: t_0 = 0xb; break; + case 0xc: t_0 = 0xc; break; + case 0xd: t_0 = 0xd; break; + case 0xe: t_0 = 0xe; break; + default: t_0 = 0xf; break; + } + *valp = t_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps6_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS6 }, 'i' } -}; +static int +Operand_b4const_decode (uint32 *valp) +{ + unsigned b4const_0, r_0; + r_0 = *valp & 0xf; + b4const_0 = CONST_TBL_b4c_0[r_0 & 0xf]; + *valp = b4const_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps6_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_b4const_encode (uint32 *valp) +{ + unsigned r_0, b4const_0; + b4const_0 = *valp; + switch (b4const_0) + { + case 0xffffffff: r_0 = 0; break; + case 0x1: r_0 = 0x1; break; + case 0x2: r_0 = 0x2; break; + case 0x3: r_0 = 0x3; break; + case 0x4: r_0 = 0x4; break; + case 0x5: r_0 = 0x5; break; + case 0x6: r_0 = 0x6; break; + case 0x7: r_0 = 0x7; break; + case 0x8: r_0 = 0x8; break; + case 0xa: r_0 = 0x9; break; + case 0xc: r_0 = 0xa; break; + case 0x10: r_0 = 0xb; break; + case 0x20: r_0 = 0xc; break; + case 0x40: r_0 = 0xd; break; + case 0x80: r_0 = 0xe; break; + default: r_0 = 0xf; break; + } + *valp = r_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps6_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS6 }, 'o' } -}; +static int +Operand_b4constu_decode (uint32 *valp) +{ + unsigned b4constu_0, r_0; + r_0 = *valp & 0xf; + b4constu_0 = CONST_TBL_b4cu_0[r_0 & 0xf]; + *valp = b4constu_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps6_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_b4constu_encode (uint32 *valp) +{ + unsigned r_0, b4constu_0; + b4constu_0 = *valp; + switch (b4constu_0) + { + case 0x8000: r_0 = 0; break; + case 0x10000: r_0 = 0x1; break; + case 0x2: r_0 = 0x2; break; + case 0x3: r_0 = 0x3; break; + case 0x4: r_0 = 0x4; break; + case 0x5: r_0 = 0x5; break; + case 0x6: r_0 = 0x6; break; + case 0x7: r_0 = 0x7; break; + case 0x8: r_0 = 0x8; break; + case 0xa: r_0 = 0x9; break; + case 0xc: r_0 = 0xa; break; + case 0x10: r_0 = 0xb; break; + case 0x20: r_0 = 0xc; break; + case 0x40: r_0 = 0xd; break; + case 0x80: r_0 = 0xe; break; + default: r_0 = 0xf; break; + } + *valp = r_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps6_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS6 }, 'm' } -}; +static int +Operand_uimm8_decode (uint32 *valp) +{ + unsigned uimm8_0, imm8_0; + imm8_0 = *valp & 0xff; + uimm8_0 = imm8_0; + *valp = uimm8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps7_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_uimm8_encode (uint32 *valp) +{ + unsigned imm8_0, uimm8_0; + uimm8_0 = *valp; + imm8_0 = (uimm8_0 & 0xff); + *valp = imm8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_eps7_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS7 }, 'i' } -}; +static int +Operand_uimm8x2_decode (uint32 *valp) +{ + unsigned uimm8x2_0, imm8_0; + imm8_0 = *valp & 0xff; + uimm8x2_0 = imm8_0 << 1; + *valp = uimm8x2_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps7_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_uimm8x2_encode (uint32 *valp) +{ + unsigned imm8_0, uimm8x2_0; + uimm8x2_0 = *valp; + imm8_0 = ((uimm8x2_0 >> 1) & 0xff); + *valp = imm8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_eps7_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS7 }, 'o' } -}; +static int +Operand_uimm8x4_decode (uint32 *valp) +{ + unsigned uimm8x4_0, imm8_0; + imm8_0 = *valp & 0xff; + uimm8x4_0 = imm8_0 << 2; + *valp = uimm8x4_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps7_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_uimm8x4_encode (uint32 *valp) +{ + unsigned imm8_0, uimm8x4_0; + uimm8x4_0 = *valp; + imm8_0 = ((uimm8x4_0 >> 2) & 0xff); + *valp = imm8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_eps7_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EPS7 }, 'm' } -}; +static int +Operand_uimm4x16_decode (uint32 *valp) +{ + unsigned uimm4x16_0, op2_0; + op2_0 = *valp & 0xf; + uimm4x16_0 = op2_0 << 4; + *valp = uimm4x16_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excvaddr_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_uimm4x16_encode (uint32 *valp) +{ + unsigned op2_0, uimm4x16_0; + uimm4x16_0 = *valp; + op2_0 = ((uimm4x16_0 >> 4) & 0xf); + *valp = op2_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_excvaddr_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCVADDR }, 'i' } -}; +static int +Operand_simm8_decode (uint32 *valp) +{ + unsigned simm8_0, imm8_0; + imm8_0 = *valp & 0xff; + simm8_0 = ((int) imm8_0 << 24) >> 24; + *valp = simm8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excvaddr_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_simm8_encode (uint32 *valp) +{ + unsigned imm8_0, simm8_0; + simm8_0 = *valp; + imm8_0 = (simm8_0 & 0xff); + *valp = imm8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_excvaddr_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCVADDR }, 'o' } -}; +static int +Operand_simm8x256_decode (uint32 *valp) +{ + unsigned simm8x256_0, imm8_0; + imm8_0 = *valp & 0xff; + simm8x256_0 = (((int) imm8_0 << 24) >> 24) << 8; + *valp = simm8x256_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excvaddr_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_simm8x256_encode (uint32 *valp) +{ + unsigned imm8_0, simm8x256_0; + simm8x256_0 = *valp; + imm8_0 = ((simm8x256_0 >> 8) & 0xff); + *valp = imm8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_excvaddr_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCVADDR }, 'm' } -}; +static int +Operand_simm12b_decode (uint32 *valp) +{ + unsigned simm12b_0, imm12b_0; + imm12b_0 = *valp & 0xfff; + simm12b_0 = ((int) imm12b_0 << 20) >> 20; + *valp = simm12b_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_depc_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_simm12b_encode (uint32 *valp) +{ + unsigned imm12b_0, simm12b_0; + simm12b_0 = *valp; + imm12b_0 = (simm12b_0 & 0xfff); + *valp = imm12b_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_depc_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DEPC }, 'i' } -}; +static int +Operand_msalp32_decode (uint32 *valp) +{ + unsigned msalp32_0, sal_0; + sal_0 = *valp & 0x1f; + msalp32_0 = 0x20 - sal_0; + *valp = msalp32_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_depc_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_msalp32_encode (uint32 *valp) +{ + unsigned sal_0, msalp32_0; + msalp32_0 = *valp; + sal_0 = (0x20 - msalp32_0) & 0x1f; + *valp = sal_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_depc_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DEPC }, 'o' } -}; +static int +Operand_op2p1_decode (uint32 *valp) +{ + unsigned op2p1_0, op2_0; + op2_0 = *valp & 0xf; + op2p1_0 = op2_0 + 0x1; + *valp = op2p1_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_depc_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_op2p1_encode (uint32 *valp) +{ + unsigned op2_0, op2p1_0; + op2p1_0 = *valp; + op2_0 = (op2p1_0 - 0x1) & 0xf; + *valp = op2_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_depc_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DEPC }, 'm' } -}; +static int +Operand_label8_decode (uint32 *valp) +{ + unsigned label8_0, imm8_0; + imm8_0 = *valp & 0xff; + label8_0 = 0x4 + (((int) imm8_0 << 24) >> 24); + *valp = label8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_exccause_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_label8_encode (uint32 *valp) +{ + unsigned imm8_0, label8_0; + label8_0 = *valp; + imm8_0 = (label8_0 - 0x4) & 0xff; + *valp = imm8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_exccause_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCCAUSE }, 'i' }, - { { STATE_XTSYNC }, 'i' } -}; +static int +Operand_label8_ator (uint32 *valp, uint32 pc) +{ + *valp -= pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_exccause_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_label8_rtoa (uint32 *valp, uint32 pc) +{ + *valp += pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_exccause_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCCAUSE }, 'o' } -}; +static int +Operand_ulabel8_decode (uint32 *valp) +{ + unsigned ulabel8_0, imm8_0; + imm8_0 = *valp & 0xff; + ulabel8_0 = 0x4 + (((0) << 8) | imm8_0); + *valp = ulabel8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_exccause_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_ulabel8_encode (uint32 *valp) +{ + unsigned imm8_0, ulabel8_0; + ulabel8_0 = *valp; + imm8_0 = (ulabel8_0 - 0x4) & 0xff; + *valp = imm8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_exccause_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_EXCCAUSE }, 'm' } -}; +static int +Operand_ulabel8_ator (uint32 *valp, uint32 pc) +{ + *valp -= pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_misc0_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_ulabel8_rtoa (uint32 *valp, uint32 pc) +{ + *valp += pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_misc0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_MISC0 }, 'i' } -}; +static int +Operand_label12_decode (uint32 *valp) +{ + unsigned label12_0, imm12_0; + imm12_0 = *valp & 0xfff; + label12_0 = 0x4 + (((int) imm12_0 << 20) >> 20); + *valp = label12_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_misc0_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_label12_encode (uint32 *valp) +{ + unsigned imm12_0, label12_0; + label12_0 = *valp; + imm12_0 = (label12_0 - 0x4) & 0xfff; + *valp = imm12_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_misc0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_MISC0 }, 'o' } -}; +static int +Operand_label12_ator (uint32 *valp, uint32 pc) +{ + *valp -= pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_misc0_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_label12_rtoa (uint32 *valp, uint32 pc) +{ + *valp += pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_misc0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_MISC0 }, 'm' } -}; +static int +Operand_soffset_decode (uint32 *valp) +{ + unsigned soffset_0, offset_0; + offset_0 = *valp & 0x3ffff; + soffset_0 = 0x4 + (((int) offset_0 << 14) >> 14); + *valp = soffset_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_misc1_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_soffset_encode (uint32 *valp) +{ + unsigned offset_0, soffset_0; + soffset_0 = *valp; + offset_0 = (soffset_0 - 0x4) & 0x3ffff; + *valp = offset_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_misc1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_MISC1 }, 'i' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_wsr_misc1_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_soffset_ator (uint32 *valp, uint32 pc) +{ + *valp -= pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_misc1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_MISC1 }, 'o' } -}; +static int +Operand_soffset_rtoa (uint32 *valp, uint32 pc) +{ + *valp += pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_misc1_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_uimm16x4_decode (uint32 *valp) +{ + unsigned uimm16x4_0, imm16_0; + imm16_0 = *valp & 0xffff; + uimm16x4_0 = (((0xffff) << 16) | imm16_0) << 2; + *valp = uimm16x4_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_misc1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_MISC1 }, 'm' } -}; +static int +Operand_uimm16x4_encode (uint32 *valp) +{ + unsigned imm16_0, uimm16x4_0; + uimm16x4_0 = *valp; + imm16_0 = (uimm16x4_0 >> 2) & 0xffff; + *valp = imm16_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_prid_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_uimm16x4_ator (uint32 *valp, uint32 pc) +{ + *valp -= ((pc + 3) & ~0x3); + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_prid_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } -}; +static int +Operand_uimm16x4_rtoa (uint32 *valp, uint32 pc) +{ + *valp += ((pc + 3) & ~0x3); + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_vecbase_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_mx_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_vecbase_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_VECBASE }, 'i' } -}; +static int +Operand_mx_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_vecbase_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_my_decode (uint32 *valp) +{ + *valp += 2; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_vecbase_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_VECBASE }, 'o' } -}; +static int +Operand_my_encode (uint32 *valp) +{ + int error; + error = ((*valp & ~0x3) != 0) || ((*valp & 0x2) == 0); + *valp = *valp & 1; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_vecbase_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_mw_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_vecbase_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_VECBASE }, 'm' } -}; +static int +Operand_mw_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_mul16_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_art }, 'i' } -}; +static int +Operand_mr0_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rfi_args[] = { - { { OPERAND_s }, 'i' } -}; +static int +Operand_mr0_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_rfi_stateArgs[] = { - { { STATE_PSWOE }, 'o' }, - { { STATE_PSCALLINC }, 'o' }, - { { STATE_PSOWB }, 'o' }, - { { STATE_PSRING }, 'm' }, - { { STATE_PSUM }, 'o' }, - { { STATE_PSEXCM }, 'm' }, - { { STATE_PSINTLEVEL }, 'o' }, - { { STATE_EPC1 }, 'i' }, - { { STATE_EPC2 }, 'i' }, - { { STATE_EPC3 }, 'i' }, - { { STATE_EPC4 }, 'i' }, - { { STATE_EPC5 }, 'i' }, - { { STATE_EPC6 }, 'i' }, - { { STATE_EPC7 }, 'i' }, - { { STATE_EPS2 }, 'i' }, - { { STATE_EPS3 }, 'i' }, - { { STATE_EPS4 }, 'i' }, - { { STATE_EPS5 }, 'i' }, - { { STATE_EPS6 }, 'i' }, - { { STATE_EPS7 }, 'i' }, - { { STATE_InOCDMode }, 'm' } -}; +static int +Operand_mr1_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wait_args[] = { - { { OPERAND_s }, 'i' } -}; +static int +Operand_mr1_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wait_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_PSINTLEVEL }, 'o' } -}; +static int +Operand_mr2_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_interrupt_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_mr2_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_interrupt_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_INTERRUPT }, 'i' } -}; +static int +Operand_mr3_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_intset_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_mr3_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0x3) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_intset_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' }, - { { STATE_INTERRUPT }, 'm' } -}; +static int +Operand_immt_decode (uint32 *valp) +{ + unsigned immt_0, t_0; + t_0 = *valp & 0xf; + immt_0 = t_0; + *valp = immt_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_intclear_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_immt_encode (uint32 *valp) +{ + unsigned t_0, immt_0; + immt_0 = *valp; + t_0 = immt_0 & 0xf; + *valp = t_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_intclear_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' }, - { { STATE_INTERRUPT }, 'm' } -}; +static int +Operand_imms_decode (uint32 *valp) +{ + unsigned imms_0, s_0; + s_0 = *valp & 0xf; + imms_0 = s_0; + *valp = imms_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_intenable_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_imms_encode (uint32 *valp) +{ + unsigned s_0, imms_0; + imms_0 = *valp; + s_0 = imms_0 & 0xf; + *valp = s_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_intenable_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_INTENABLE }, 'i' } -}; +static int +Operand_bt_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_intenable_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_bt_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0xf) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_intenable_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_INTENABLE }, 'o' } -}; +static int +Operand_bs_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_intenable_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_bs_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0xf) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_intenable_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_INTENABLE }, 'm' } -}; +static int +Operand_br_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_break_args[] = { - { { OPERAND_imms }, 'i' }, - { { OPERAND_immt }, 'i' } -}; +static int +Operand_br_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0xf) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_break_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSINTLEVEL }, 'i' } -}; +static int +Operand_bt2_decode (uint32 *valp) +{ + *valp = *valp << 1; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_break_n_args[] = { - { { OPERAND_imms }, 'i' } -}; +static int +Operand_bt2_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0x7 << 1)) != 0; + *valp = *valp >> 1; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_break_n_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSINTLEVEL }, 'i' } -}; +static int +Operand_bs2_decode (uint32 *valp) +{ + *valp = *valp << 1; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreaka0_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_bs2_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0x7 << 1)) != 0; + *valp = *valp >> 1; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreaka0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKA0 }, 'i' } -}; +static int +Operand_br2_decode (uint32 *valp) +{ + *valp = *valp << 1; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreaka0_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_br2_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0x7 << 1)) != 0; + *valp = *valp >> 1; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreaka0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKA0 }, 'o' }, - { { STATE_XTSYNC }, 'o' } -}; +static int +Operand_bt4_decode (uint32 *valp) +{ + *valp = *valp << 2; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreaka0_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_bt4_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0x3 << 2)) != 0; + *valp = *valp >> 2; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreaka0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKA0 }, 'm' }, - { { STATE_XTSYNC }, 'o' } -}; +static int +Operand_bs4_decode (uint32 *valp) +{ + *valp = *valp << 2; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreakc0_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_bs4_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0x3 << 2)) != 0; + *valp = *valp >> 2; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreakc0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKC0 }, 'i' } -}; +static int +Operand_br4_decode (uint32 *valp) +{ + *valp = *valp << 2; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreakc0_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_br4_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0x3 << 2)) != 0; + *valp = *valp >> 2; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreakc0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKC0 }, 'o' }, - { { STATE_XTSYNC }, 'o' } -}; +static int +Operand_bt8_decode (uint32 *valp) +{ + *valp = *valp << 3; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreakc0_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_bt8_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0x1 << 3)) != 0; + *valp = *valp >> 3; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreakc0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKC0 }, 'm' }, - { { STATE_XTSYNC }, 'o' } -}; +static int +Operand_bs8_decode (uint32 *valp) +{ + *valp = *valp << 3; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreaka1_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_bs8_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0x1 << 3)) != 0; + *valp = *valp >> 3; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreaka1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKA1 }, 'i' } -}; +static int +Operand_br8_decode (uint32 *valp) +{ + *valp = *valp << 3; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreaka1_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_br8_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0x1 << 3)) != 0; + *valp = *valp >> 3; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreaka1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKA1 }, 'o' }, - { { STATE_XTSYNC }, 'o' } -}; +static int +Operand_bt16_decode (uint32 *valp) +{ + *valp = *valp << 4; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreaka1_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_bt16_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0 << 4)) != 0; + *valp = *valp >> 4; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreaka1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKA1 }, 'm' }, - { { STATE_XTSYNC }, 'o' } -}; +static int +Operand_bs16_decode (uint32 *valp) +{ + *valp = *valp << 4; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreakc1_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_bs16_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0 << 4)) != 0; + *valp = *valp >> 4; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreakc1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKC1 }, 'i' } -}; +static int +Operand_br16_decode (uint32 *valp) +{ + *valp = *valp << 4; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreakc1_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_br16_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0 << 4)) != 0; + *valp = *valp >> 4; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreakc1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKC1 }, 'o' }, - { { STATE_XTSYNC }, 'o' } -}; +static int +Operand_brall_decode (uint32 *valp) +{ + *valp = *valp << 4; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreakc1_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_brall_encode (uint32 *valp) +{ + int error; + error = (*valp & ~(0 << 4)) != 0; + *valp = *valp >> 4; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreakc1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DBREAKC1 }, 'm' }, - { { STATE_XTSYNC }, 'o' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreaka0_args[] = { - { { OPERAND_art }, 'o' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreaka0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_IBREAKA0 }, 'i' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreaka0_args[] = { - { { OPERAND_art }, 'i' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreaka0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_IBREAKA0 }, 'o' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreaka0_args[] = { - { { OPERAND_art }, 'm' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreaka0_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_IBREAKA0 }, 'm' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreaka1_args[] = { - { { OPERAND_art }, 'o' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreaka1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_IBREAKA1 }, 'i' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreaka1_args[] = { - { { OPERAND_art }, 'i' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreaka1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_IBREAKA1 }, 'o' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreaka1_args[] = { - { { OPERAND_art }, 'm' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreaka1_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_IBREAKA1 }, 'm' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreakenable_args[] = { - { { OPERAND_art }, 'o' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreakenable_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_IBREAKENABLE }, 'i' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreakenable_args[] = { - { { OPERAND_art }, 'i' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreakenable_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_IBREAKENABLE }, 'o' } -}; +static int +Operand_tp7_decode (uint32 *valp) +{ + unsigned tp7_0, t_0; + t_0 = *valp & 0xf; + tp7_0 = t_0 + 0x7; + *valp = tp7_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreakenable_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_tp7_encode (uint32 *valp) +{ + unsigned t_0, tp7_0; + tp7_0 = *valp; + t_0 = (tp7_0 - 0x7) & 0xf; + *valp = t_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreakenable_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_IBREAKENABLE }, 'm' } -}; +static int +Operand_xt_wbr15_label_decode (uint32 *valp) +{ + unsigned xt_wbr15_label_0, xt_wbr15_imm_0; + xt_wbr15_imm_0 = *valp & 0x7fff; + xt_wbr15_label_0 = 0x4 + (((int) xt_wbr15_imm_0 << 17) >> 17); + *valp = xt_wbr15_label_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_debugcause_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_xt_wbr15_label_encode (uint32 *valp) +{ + unsigned xt_wbr15_imm_0, xt_wbr15_label_0; + xt_wbr15_label_0 = *valp; + xt_wbr15_imm_0 = (xt_wbr15_label_0 - 0x4) & 0x7fff; + *valp = xt_wbr15_imm_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_debugcause_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DEBUGCAUSE }, 'i' }, - { { STATE_DBNUM }, 'i' } -}; +static int +Operand_xt_wbr15_label_ator (uint32 *valp, uint32 pc) +{ + *valp -= pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_debugcause_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_xt_wbr15_label_rtoa (uint32 *valp, uint32 pc) +{ + *valp += pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_debugcause_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DEBUGCAUSE }, 'o' }, - { { STATE_DBNUM }, 'o' } -}; +static int +Operand_xt_wbr18_label_decode (uint32 *valp) +{ + unsigned xt_wbr18_label_0, xt_wbr18_imm_0; + xt_wbr18_imm_0 = *valp & 0x3ffff; + xt_wbr18_label_0 = 0x4 + (((int) xt_wbr18_imm_0 << 14) >> 14); + *valp = xt_wbr18_label_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_debugcause_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_xt_wbr18_label_encode (uint32 *valp) +{ + unsigned xt_wbr18_imm_0, xt_wbr18_label_0; + xt_wbr18_label_0 = *valp; + xt_wbr18_imm_0 = (xt_wbr18_label_0 - 0x4) & 0x3ffff; + *valp = xt_wbr18_imm_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_debugcause_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DEBUGCAUSE }, 'm' }, - { { STATE_DBNUM }, 'm' } -}; +static int +Operand_xt_wbr18_label_ator (uint32 *valp, uint32 pc) +{ + *valp -= pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_icount_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_xt_wbr18_label_rtoa (uint32 *valp, uint32 pc) +{ + *valp += pc; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_icount_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_ICOUNT }, 'i' } -}; +static int +Operand_cimm8x4_decode (uint32 *valp) +{ + unsigned cimm8x4_0, imm8_0; + imm8_0 = *valp & 0xff; + cimm8x4_0 = (imm8_0 << 2) | 0; + *valp = cimm8x4_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_icount_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_cimm8x4_encode (uint32 *valp) +{ + unsigned imm8_0, cimm8x4_0; + cimm8x4_0 = *valp; + imm8_0 = (cimm8x4_0 >> 2) & 0xff; + *valp = imm8_0; + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_icount_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' }, - { { STATE_ICOUNT }, 'o' } -}; +static int +Operand_frr_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_icount_args[] = { - { { OPERAND_art }, 'm' } -}; +static int +Operand_frr_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0xf) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_xsr_icount_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' }, - { { STATE_ICOUNT }, 'm' } -}; +static int +Operand_frs_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_icountlevel_args[] = { - { { OPERAND_art }, 'o' } -}; +static int +Operand_frs_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0xf) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_rsr_icountlevel_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_ICOUNTLEVEL }, 'i' } -}; +static int +Operand_frt_decode (uint32 *valp ATTRIBUTE_UNUSED) +{ + return 0; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_icountlevel_args[] = { - { { OPERAND_art }, 'i' } -}; +static int +Operand_frt_encode (uint32 *valp) +{ + int error; + error = (*valp & ~0xf) != 0; + return error; +} -static xtensa_arg_internal Iclass_xt_iclass_wsr_icountlevel_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_ICOUNTLEVEL }, 'o' } +static xtensa_operand_internal operands[] = { + { "soffsetx4", 10, -1, 0, + XTENSA_OPERAND_IS_PCRELATIVE, + Operand_soffsetx4_encode, Operand_soffsetx4_decode, + Operand_soffsetx4_ator, Operand_soffsetx4_rtoa }, + { "uimm12x8", 3, -1, 0, + 0, + Operand_uimm12x8_encode, Operand_uimm12x8_decode, + 0, 0 }, + { "simm4", 26, -1, 0, + 0, + Operand_simm4_encode, Operand_simm4_decode, + 0, 0 }, + { "arr", 14, 0, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_arr_encode, Operand_arr_decode, + 0, 0 }, + { "ars", 5, 0, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_ars_encode, Operand_ars_decode, + 0, 0 }, + { "*ars_invisible", 5, 0, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, + Operand_ars_encode, Operand_ars_decode, + 0, 0 }, + { "art", 0, 0, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_art_encode, Operand_art_decode, + 0, 0 }, + { "ar0", 123, 0, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, + Operand_ar0_encode, Operand_ar0_decode, + 0, 0 }, + { "ar4", 124, 0, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, + Operand_ar4_encode, Operand_ar4_decode, + 0, 0 }, + { "ar8", 125, 0, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, + Operand_ar8_encode, Operand_ar8_decode, + 0, 0 }, + { "ar12", 126, 0, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, + Operand_ar12_encode, Operand_ar12_decode, + 0, 0 }, + { "ars_entry", 5, 0, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_ars_entry_encode, Operand_ars_entry_decode, + 0, 0 }, + { "immrx4", 14, -1, 0, + 0, + Operand_immrx4_encode, Operand_immrx4_decode, + 0, 0 }, + { "lsi4x4", 14, -1, 0, + 0, + Operand_lsi4x4_encode, Operand_lsi4x4_decode, + 0, 0 }, + { "simm7", 34, -1, 0, + 0, + Operand_simm7_encode, Operand_simm7_decode, + 0, 0 }, + { "uimm6", 33, -1, 0, + XTENSA_OPERAND_IS_PCRELATIVE, + Operand_uimm6_encode, Operand_uimm6_decode, + Operand_uimm6_ator, Operand_uimm6_rtoa }, + { "ai4const", 0, -1, 0, + 0, + Operand_ai4const_encode, Operand_ai4const_decode, + 0, 0 }, + { "b4const", 14, -1, 0, + 0, + Operand_b4const_encode, Operand_b4const_decode, + 0, 0 }, + { "b4constu", 14, -1, 0, + 0, + Operand_b4constu_encode, Operand_b4constu_decode, + 0, 0 }, + { "uimm8", 4, -1, 0, + 0, + Operand_uimm8_encode, Operand_uimm8_decode, + 0, 0 }, + { "uimm8x2", 4, -1, 0, + 0, + Operand_uimm8x2_encode, Operand_uimm8x2_decode, + 0, 0 }, + { "uimm8x4", 4, -1, 0, + 0, + Operand_uimm8x4_encode, Operand_uimm8x4_decode, + 0, 0 }, + { "uimm4x16", 13, -1, 0, + 0, + Operand_uimm4x16_encode, Operand_uimm4x16_decode, + 0, 0 }, + { "simm8", 4, -1, 0, + 0, + Operand_simm8_encode, Operand_simm8_decode, + 0, 0 }, + { "simm8x256", 4, -1, 0, + 0, + Operand_simm8x256_encode, Operand_simm8x256_decode, + 0, 0 }, + { "simm12b", 6, -1, 0, + 0, + Operand_simm12b_encode, Operand_simm12b_decode, + 0, 0 }, + { "msalp32", 18, -1, 0, + 0, + Operand_msalp32_encode, Operand_msalp32_decode, + 0, 0 }, + { "op2p1", 13, -1, 0, + 0, + Operand_op2p1_encode, Operand_op2p1_decode, + 0, 0 }, + { "label8", 4, -1, 0, + XTENSA_OPERAND_IS_PCRELATIVE, + Operand_label8_encode, Operand_label8_decode, + Operand_label8_ator, Operand_label8_rtoa }, + { "ulabel8", 4, -1, 0, + XTENSA_OPERAND_IS_PCRELATIVE, + Operand_ulabel8_encode, Operand_ulabel8_decode, + Operand_ulabel8_ator, Operand_ulabel8_rtoa }, + { "label12", 3, -1, 0, + XTENSA_OPERAND_IS_PCRELATIVE, + Operand_label12_encode, Operand_label12_decode, + Operand_label12_ator, Operand_label12_rtoa }, + { "soffset", 10, -1, 0, + XTENSA_OPERAND_IS_PCRELATIVE, + Operand_soffset_encode, Operand_soffset_decode, + Operand_soffset_ator, Operand_soffset_rtoa }, + { "uimm16x4", 7, -1, 0, + XTENSA_OPERAND_IS_PCRELATIVE, + Operand_uimm16x4_encode, Operand_uimm16x4_decode, + Operand_uimm16x4_ator, Operand_uimm16x4_rtoa }, + { "mx", 43, 1, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_UNKNOWN, + Operand_mx_encode, Operand_mx_decode, + 0, 0 }, + { "my", 42, 1, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_UNKNOWN, + Operand_my_encode, Operand_my_decode, + 0, 0 }, + { "mw", 41, 1, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_mw_encode, Operand_mw_decode, + 0, 0 }, + { "mr0", 127, 1, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, + Operand_mr0_encode, Operand_mr0_decode, + 0, 0 }, + { "mr1", 128, 1, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, + Operand_mr1_encode, Operand_mr1_decode, + 0, 0 }, + { "mr2", 129, 1, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, + Operand_mr2_encode, Operand_mr2_decode, + 0, 0 }, + { "mr3", 130, 1, 1, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, + Operand_mr3_encode, Operand_mr3_decode, + 0, 0 }, + { "immt", 0, -1, 0, + 0, + Operand_immt_encode, Operand_immt_decode, + 0, 0 }, + { "imms", 5, -1, 0, + 0, + Operand_imms_encode, Operand_imms_decode, + 0, 0 }, + { "bt", 0, 2, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_bt_encode, Operand_bt_decode, + 0, 0 }, + { "bs", 5, 2, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_bs_encode, Operand_bs_decode, + 0, 0 }, + { "br", 14, 2, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_br_encode, Operand_br_decode, + 0, 0 }, + { "bt2", 44, 2, 2, + XTENSA_OPERAND_IS_REGISTER, + Operand_bt2_encode, Operand_bt2_decode, + 0, 0 }, + { "bs2", 45, 2, 2, + XTENSA_OPERAND_IS_REGISTER, + Operand_bs2_encode, Operand_bs2_decode, + 0, 0 }, + { "br2", 46, 2, 2, + XTENSA_OPERAND_IS_REGISTER, + Operand_br2_encode, Operand_br2_decode, + 0, 0 }, + { "bt4", 47, 2, 4, + XTENSA_OPERAND_IS_REGISTER, + Operand_bt4_encode, Operand_bt4_decode, + 0, 0 }, + { "bs4", 48, 2, 4, + XTENSA_OPERAND_IS_REGISTER, + Operand_bs4_encode, Operand_bs4_decode, + 0, 0 }, + { "br4", 49, 2, 4, + XTENSA_OPERAND_IS_REGISTER, + Operand_br4_encode, Operand_br4_decode, + 0, 0 }, + { "bt8", 50, 2, 8, + XTENSA_OPERAND_IS_REGISTER, + Operand_bt8_encode, Operand_bt8_decode, + 0, 0 }, + { "bs8", 51, 2, 8, + XTENSA_OPERAND_IS_REGISTER, + Operand_bs8_encode, Operand_bs8_decode, + 0, 0 }, + { "br8", 52, 2, 8, + XTENSA_OPERAND_IS_REGISTER, + Operand_br8_encode, Operand_br8_decode, + 0, 0 }, + { "bt16", 131, 2, 16, + XTENSA_OPERAND_IS_REGISTER, + Operand_bt16_encode, Operand_bt16_decode, + 0, 0 }, + { "bs16", 132, 2, 16, + XTENSA_OPERAND_IS_REGISTER, + Operand_bs16_encode, Operand_bs16_decode, + 0, 0 }, + { "br16", 133, 2, 16, + XTENSA_OPERAND_IS_REGISTER, + Operand_br16_encode, Operand_br16_decode, + 0, 0 }, + { "brall", 134, 2, 16, + XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE, + Operand_brall_encode, Operand_brall_decode, + 0, 0 }, + { "tp7", 0, -1, 0, + 0, + Operand_tp7_encode, Operand_tp7_decode, + 0, 0 }, + { "xt_wbr15_label", 53, -1, 0, + XTENSA_OPERAND_IS_PCRELATIVE, + Operand_xt_wbr15_label_encode, Operand_xt_wbr15_label_decode, + Operand_xt_wbr15_label_ator, Operand_xt_wbr15_label_rtoa }, + { "xt_wbr18_label", 54, -1, 0, + XTENSA_OPERAND_IS_PCRELATIVE, + Operand_xt_wbr18_label_encode, Operand_xt_wbr18_label_decode, + Operand_xt_wbr18_label_ator, Operand_xt_wbr18_label_rtoa }, + { "cimm8x4", 4, -1, 0, + 0, + Operand_cimm8x4_encode, Operand_cimm8x4_decode, + 0, 0 }, + { "frr", 14, 3, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_frr_encode, Operand_frr_decode, + 0, 0 }, + { "frs", 5, 3, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_frs_encode, Operand_frs_decode, + 0, 0 }, + { "frt", 0, 3, 1, + XTENSA_OPERAND_IS_REGISTER, + Operand_frt_encode, Operand_frt_decode, + 0, 0 }, + { "t", 0, -1, 0, 0, 0, 0, 0, 0 }, + { "bbi4", 1, -1, 0, 0, 0, 0, 0, 0 }, + { "bbi", 2, -1, 0, 0, 0, 0, 0, 0 }, + { "imm12", 3, -1, 0, 0, 0, 0, 0, 0 }, + { "imm8", 4, -1, 0, 0, 0, 0, 0, 0 }, + { "s", 5, -1, 0, 0, 0, 0, 0, 0 }, + { "imm12b", 6, -1, 0, 0, 0, 0, 0, 0 }, + { "imm16", 7, -1, 0, 0, 0, 0, 0, 0 }, + { "m", 8, -1, 0, 0, 0, 0, 0, 0 }, + { "n", 9, -1, 0, 0, 0, 0, 0, 0 }, + { "offset", 10, -1, 0, 0, 0, 0, 0, 0 }, + { "op0", 11, -1, 0, 0, 0, 0, 0, 0 }, + { "op1", 12, -1, 0, 0, 0, 0, 0, 0 }, + { "op2", 13, -1, 0, 0, 0, 0, 0, 0 }, + { "r", 14, -1, 0, 0, 0, 0, 0, 0 }, + { "sa4", 15, -1, 0, 0, 0, 0, 0, 0 }, + { "sae4", 16, -1, 0, 0, 0, 0, 0, 0 }, + { "sae", 17, -1, 0, 0, 0, 0, 0, 0 }, + { "sal", 18, -1, 0, 0, 0, 0, 0, 0 }, + { "sargt", 19, -1, 0, 0, 0, 0, 0, 0 }, + { "sas4", 20, -1, 0, 0, 0, 0, 0, 0 }, + { "sas", 21, -1, 0, 0, 0, 0, 0, 0 }, + { "sr", 22, -1, 0, 0, 0, 0, 0, 0 }, + { "st", 23, -1, 0, 0, 0, 0, 0, 0 }, + { "thi3", 24, -1, 0, 0, 0, 0, 0, 0 }, + { "imm4", 25, -1, 0, 0, 0, 0, 0, 0 }, + { "mn", 26, -1, 0, 0, 0, 0, 0, 0 }, + { "i", 27, -1, 0, 0, 0, 0, 0, 0 }, + { "imm6lo", 28, -1, 0, 0, 0, 0, 0, 0 }, + { "imm6hi", 29, -1, 0, 0, 0, 0, 0, 0 }, + { "imm7lo", 30, -1, 0, 0, 0, 0, 0, 0 }, + { "imm7hi", 31, -1, 0, 0, 0, 0, 0, 0 }, + { "z", 32, -1, 0, 0, 0, 0, 0, 0 }, + { "imm6", 33, -1, 0, 0, 0, 0, 0, 0 }, + { "imm7", 34, -1, 0, 0, 0, 0, 0, 0 }, + { "r3", 35, -1, 0, 0, 0, 0, 0, 0 }, + { "rbit2", 36, -1, 0, 0, 0, 0, 0, 0 }, + { "rhi", 37, -1, 0, 0, 0, 0, 0, 0 }, + { "t3", 38, -1, 0, 0, 0, 0, 0, 0 }, + { "tbit2", 39, -1, 0, 0, 0, 0, 0, 0 }, + { "tlo", 40, -1, 0, 0, 0, 0, 0, 0 }, + { "w", 41, -1, 0, 0, 0, 0, 0, 0 }, + { "y", 42, -1, 0, 0, 0, 0, 0, 0 }, + { "x", 43, -1, 0, 0, 0, 0, 0, 0 }, + { "t2", 44, -1, 0, 0, 0, 0, 0, 0 }, + { "s2", 45, -1, 0, 0, 0, 0, 0, 0 }, + { "r2", 46, -1, 0, 0, 0, 0, 0, 0 }, + { "t4", 47, -1, 0, 0, 0, 0, 0, 0 }, + { "s4", 48, -1, 0, 0, 0, 0, 0, 0 }, + { "r4", 49, -1, 0, 0, 0, 0, 0, 0 }, + { "t8", 50, -1, 0, 0, 0, 0, 0, 0 }, + { "s8", 51, -1, 0, 0, 0, 0, 0, 0 }, + { "r8", 52, -1, 0, 0, 0, 0, 0, 0 }, + { "xt_wbr15_imm", 53, -1, 0, 0, 0, 0, 0, 0 }, + { "xt_wbr18_imm", 54, -1, 0, 0, 0, 0, 0, 0 }, + { "op0_xt_flix64_slot0_s3", 55, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld7", 56, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld8", 57, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld9", 58, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld11", 59, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld49xt_flix64_slot0", 60, -1, 0, 0, 0, 0, 0, 0 }, + { "op0_s4", 61, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld16", 62, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld19xt_flix64_slot1", 63, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld20xt_flix64_slot1", 64, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld21xt_flix64_slot1", 65, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld22xt_flix64_slot1", 66, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld23xt_flix64_slot1", 67, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld25xt_flix64_slot1", 68, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld26xt_flix64_slot1", 69, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld28xt_flix64_slot1", 70, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld30xt_flix64_slot1", 71, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld32xt_flix64_slot1", 72, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld33xt_flix64_slot1", 73, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld35xt_flix64_slot1", 74, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld51xt_flix64_slot1", 75, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld52xt_flix64_slot1", 76, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld53xt_flix64_slot1", 77, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld54xt_flix64_slot1", 78, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld57xt_flix64_slot1", 79, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld58xt_flix64_slot1", 80, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld60xt_flix64_slot1", 81, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld62xt_flix64_slot1", 82, -1, 0, 0, 0, 0, 0, 0 }, + { "op0_s5", 83, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld36xt_flix64_slot2", 84, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld37xt_flix64_slot2", 85, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld39xt_flix64_slot2", 86, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld41xt_flix64_slot2", 87, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld42xt_flix64_slot2", 88, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld44xt_flix64_slot2", 89, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld45xt_flix64_slot2", 90, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld47xt_flix64_slot2", 91, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld63xt_flix64_slot2", 92, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld64xt_flix64_slot2", 93, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld65xt_flix64_slot2", 94, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld66xt_flix64_slot2", 95, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld68xt_flix64_slot2", 96, -1, 0, 0, 0, 0, 0, 0 }, + { "op0_s6", 97, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld70xt_flix64_slot3", 98, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld71", 99, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld72xt_flix64_slot3", 100, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld73xt_flix64_slot3", 101, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld74xt_flix64_slot3", 102, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld75xt_flix64_slot3", 103, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld76xt_flix64_slot3", 104, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld77xt_flix64_slot3", 105, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld78xt_flix64_slot3", 106, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld79xt_flix64_slot3", 107, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld80xt_flix64_slot3", 108, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld81xt_flix64_slot3", 109, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld82xt_flix64_slot3", 110, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld83xt_flix64_slot3", 111, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld84xt_flix64_slot3", 112, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld85xt_flix64_slot3", 113, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld86xt_flix64_slot3", 114, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld87xt_flix64_slot3", 115, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld88xt_flix64_slot3", 116, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld89xt_flix64_slot3", 117, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld90xt_flix64_slot3", 118, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld91xt_flix64_slot3", 119, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld92xt_flix64_slot3", 120, -1, 0, 0, 0, 0, 0, 0 }, + { "combined3e2c5767_fld93xt_flix64_slot3", 121, -1, 0, 0, 0, 0, 0, 0 }, + { "op0_xt_flix64_slot0", 122, -1, 0, 0, 0, 0, 0, 0 } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_icountlevel_args[] = { - { { OPERAND_art }, 'm' } -}; + +/* Iclass table. */ -static xtensa_arg_internal Iclass_xt_iclass_xsr_icountlevel_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, +static xtensa_arg_internal Iclass_xt_iclass_rfe_stateArgs[] = { { { STATE_PSRING }, 'i' }, - { { STATE_ICOUNTLEVEL }, 'm' } -}; - -static xtensa_arg_internal Iclass_xt_iclass_rsr_ddr_args[] = { - { { OPERAND_art }, 'o' } + { { STATE_PSEXCM }, 'm' }, + { { STATE_EPC1 }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ddr_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_rfde_stateArgs[] = { { { STATE_PSEXCM }, 'i' }, { { STATE_PSRING }, 'i' }, - { { STATE_DDR }, 'i' } + { { STATE_DEPC }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ddr_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_call12_args[] = { + { { 0 /* soffsetx4 */ }, 'i' }, + { { 10 /* ar12 */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ddr_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' }, - { { STATE_DDR }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_call12_stateArgs[] = { + { { STATE_PSCALLINC }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ddr_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_call8_args[] = { + { { 0 /* soffsetx4 */ }, 'i' }, + { { 9 /* ar8 */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ddr_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' }, - { { STATE_DDR }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_call8_stateArgs[] = { + { { STATE_PSCALLINC }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rfdo_args[] = { - { { OPERAND_imms }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_call4_args[] = { + { { 0 /* soffsetx4 */ }, 'i' }, + { { 8 /* ar4 */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rfdo_stateArgs[] = { - { { STATE_InOCDMode }, 'm' }, - { { STATE_EPC6 }, 'i' }, - { { STATE_PSWOE }, 'o' }, - { { STATE_PSCALLINC }, 'o' }, - { { STATE_PSOWB }, 'o' }, - { { STATE_PSRING }, 'o' }, - { { STATE_PSUM }, 'o' }, - { { STATE_PSEXCM }, 'o' }, - { { STATE_PSINTLEVEL }, 'o' }, - { { STATE_EPS6 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_call4_stateArgs[] = { + { { STATE_PSCALLINC }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rfdd_stateArgs[] = { - { { STATE_InOCDMode }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_callx12_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 10 /* ar12 */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_mmid_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_callx12_stateArgs[] = { + { { STATE_PSCALLINC }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_mmid_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_callx8_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 9 /* ar8 */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ccount_args[] = { - { { OPERAND_art }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_callx8_stateArgs[] = { + { { STATE_PSCALLINC }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ccount_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_CCOUNT }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_callx4_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 8 /* ar4 */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ccount_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_callx4_stateArgs[] = { + { { STATE_PSCALLINC }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ccount_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' }, - { { STATE_CCOUNT }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_entry_args[] = { + { { 11 /* ars_entry */ }, 's' }, + { { 4 /* ars */ }, 'i' }, + { { 1 /* uimm12x8 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ccount_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_entry_stateArgs[] = { + { { STATE_PSCALLINC }, 'i' }, + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSWOE }, 'i' }, + { { STATE_WindowBase }, 'm' }, + { { STATE_WindowStart }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ccount_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' }, - { { STATE_CCOUNT }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_movsp_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare0_args[] = { - { { OPERAND_art }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_movsp_stateArgs[] = { + { { STATE_WindowBase }, 'i' }, + { { STATE_WindowStart }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare0_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_rotw_args[] = { + { { 2 /* simm4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rotw_stateArgs[] = { { { STATE_PSEXCM }, 'i' }, { { STATE_PSRING }, 'i' }, - { { STATE_CCOMPARE0 }, 'i' } + { { STATE_WindowBase }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare0_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_retw_args[] = { + { { 5 /* *ars_invisible */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare0_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_retw_stateArgs[] = { + { { STATE_WindowBase }, 'm' }, + { { STATE_WindowStart }, 'm' }, { { STATE_PSEXCM }, 'i' }, + { { STATE_PSWOE }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rfwou_stateArgs[] = { + { { STATE_EPC1 }, 'i' }, + { { STATE_PSEXCM }, 'm' }, { { STATE_PSRING }, 'i' }, - { { STATE_CCOMPARE0 }, 'o' }, - { { STATE_INTERRUPT }, 'm' } + { { STATE_WindowBase }, 'm' }, + { { STATE_WindowStart }, 'm' }, + { { STATE_PSOWB }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare0_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_l32e_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 12 /* immrx4 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare0_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_l32e_stateArgs[] = { { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_CCOMPARE0 }, 'm' }, - { { STATE_INTERRUPT }, 'm' } + { { STATE_PSRING }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare1_args[] = { - { { OPERAND_art }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_s32e_args[] = { + { { 6 /* art */ }, 'i' }, + { { 4 /* ars */ }, 'i' }, + { { 12 /* immrx4 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare1_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_s32e_stateArgs[] = { { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_CCOMPARE1 }, 'i' } + { { STATE_PSRING }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare1_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_windowbase_args[] = { + { { 6 /* art */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare1_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_rsr_windowbase_stateArgs[] = { { { STATE_PSEXCM }, 'i' }, { { STATE_PSRING }, 'i' }, - { { STATE_CCOMPARE1 }, 'o' }, - { { STATE_INTERRUPT }, 'm' } + { { STATE_WindowBase }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare1_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_wsr_windowbase_args[] = { + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare1_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_wsr_windowbase_stateArgs[] = { { { STATE_PSEXCM }, 'i' }, { { STATE_PSRING }, 'i' }, - { { STATE_CCOMPARE1 }, 'm' }, - { { STATE_INTERRUPT }, 'm' } + { { STATE_WindowBase }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare2_args[] = { - { { OPERAND_art }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_xsr_windowbase_args[] = { + { { 6 /* art */ }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare2_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_xsr_windowbase_stateArgs[] = { { { STATE_PSEXCM }, 'i' }, { { STATE_PSRING }, 'i' }, - { { STATE_CCOMPARE2 }, 'i' } + { { STATE_WindowBase }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare2_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_windowstart_args[] = { + { { 6 /* art */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare2_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_rsr_windowstart_stateArgs[] = { { { STATE_PSEXCM }, 'i' }, { { STATE_PSRING }, 'i' }, - { { STATE_CCOMPARE2 }, 'o' }, - { { STATE_INTERRUPT }, 'm' } + { { STATE_WindowStart }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare2_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_wsr_windowstart_args[] = { + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare2_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_wsr_windowstart_stateArgs[] = { { { STATE_PSEXCM }, 'i' }, { { STATE_PSRING }, 'i' }, - { { STATE_CCOMPARE2 }, 'm' }, - { { STATE_INTERRUPT }, 'm' } + { { STATE_WindowStart }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_icache_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x4 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_xsr_windowstart_args[] = { + { { 6 /* art */ }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_icache_lock_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm4x16 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_xsr_windowstart_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_WindowStart }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_icache_lock_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_add_n_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_icache_inv_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x4 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_addi_n_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 16 /* ai4const */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_icache_inv_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_bz6_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 15 /* uimm6 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_licx_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_loadi4_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 13 /* lsi4x4 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_licx_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_mov_n_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_sicx_args[] = { - { { OPERAND_art }, 'i' }, - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_movi_n_args[] = { + { { 4 /* ars */ }, 'o' }, + { { 14 /* simm7 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_sicx_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_retn_args[] = { + { { 5 /* *ars_invisible */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_dcache_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x4 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_storei4_args[] = { + { { 6 /* art */ }, 'i' }, + { { 4 /* ars */ }, 'i' }, + { { 13 /* lsi4x4 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_dcache_ind_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm4x16 }, 'i' } +static xtensa_arg_internal Iclass_rur_threadptr_args[] = { + { { 3 /* arr */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_dcache_ind_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_rur_threadptr_stateArgs[] = { + { { STATE_THREADPTR }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_dcache_inv_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x4 }, 'i' } +static xtensa_arg_internal Iclass_wur_threadptr_args[] = { + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_dcache_inv_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_wur_threadptr_stateArgs[] = { + { { STATE_THREADPTR }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_dpf_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x4 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_addi_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 23 /* simm8 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_dcache_lock_args[] = { - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm4x16 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_addmi_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 24 /* simm8x256 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_dcache_lock_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_addsub_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_sdct_args[] = { - { { OPERAND_art }, 'i' }, - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_bit_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_sdct_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_bsi8_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 17 /* b4const */ }, 'i' }, + { { 28 /* label8 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_ldct_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_bsi8b_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 67 /* bbi */ }, 'i' }, + { { 28 /* label8 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_ldct_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_bsi8u_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 18 /* b4constu */ }, 'i' }, + { { 28 /* label8 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ptevaddr_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_bst8_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' }, + { { 28 /* label8 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_ptevaddr_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_PTBASE }, 'o' }, - { { STATE_XTSYNC }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_bsz12_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 30 /* label12 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ptevaddr_args[] = { - { { OPERAND_art }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_call0_args[] = { + { { 0 /* soffsetx4 */ }, 'i' }, + { { 7 /* ar0 */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_ptevaddr_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_PTBASE }, 'i' }, - { { STATE_EXCVADDR }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_callx0_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 7 /* ar0 */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ptevaddr_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_exti_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 6 /* art */ }, 'i' }, + { { 82 /* sae */ }, 'i' }, + { { 27 /* op2p1 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_ptevaddr_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_PTBASE }, 'm' }, - { { STATE_EXCVADDR }, 'i' }, - { { STATE_XTSYNC }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_jump_args[] = { + { { 31 /* soffset */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_rasid_args[] = { - { { OPERAND_art }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_jumpx_args[] = { + { { 4 /* ars */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_rasid_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_ASID3 }, 'i' }, - { { STATE_ASID2 }, 'i' }, - { { STATE_ASID1 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_l16ui_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 20 /* uimm8x2 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_rasid_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_l16si_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 20 /* uimm8x2 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_rasid_stateArgs[] = { - { { STATE_XTSYNC }, 'o' }, - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_ASID3 }, 'o' }, - { { STATE_ASID2 }, 'o' }, - { { STATE_ASID1 }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_l32i_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 21 /* uimm8x4 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_rasid_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_l32r_args[] = { + { { 6 /* art */ }, 'o' }, + { { 32 /* uimm16x4 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_rasid_stateArgs[] = { - { { STATE_XTSYNC }, 'o' }, - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_ASID3 }, 'm' }, - { { STATE_ASID2 }, 'm' }, - { { STATE_ASID1 }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_l32r_stateArgs[] = { + { { STATE_LITBADDR }, 'i' }, + { { STATE_LITBEN }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_itlbcfg_args[] = { - { { OPERAND_art }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_l8i_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 19 /* uimm8 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_itlbcfg_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_INSTPGSZID4 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_loop_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 29 /* ulabel8 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_itlbcfg_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_loop_stateArgs[] = { + { { STATE_LBEG }, 'o' }, + { { STATE_LEND }, 'o' }, + { { STATE_LCOUNT }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_itlbcfg_stateArgs[] = { - { { STATE_XTSYNC }, 'o' }, - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_INSTPGSZID4 }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_loopz_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 29 /* ulabel8 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_itlbcfg_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_loopz_stateArgs[] = { + { { STATE_LBEG }, 'o' }, + { { STATE_LEND }, 'o' }, + { { STATE_LCOUNT }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_itlbcfg_stateArgs[] = { - { { STATE_XTSYNC }, 'o' }, - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_INSTPGSZID4 }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_movi_args[] = { + { { 6 /* art */ }, 'o' }, + { { 25 /* simm12b */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_dtlbcfg_args[] = { - { { OPERAND_art }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_movz_args[] = { + { { 3 /* arr */ }, 'm' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_dtlbcfg_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DATAPGSZID4 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_neg_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_dtlbcfg_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_return_args[] = { + { { 5 /* *ars_invisible */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_dtlbcfg_stateArgs[] = { - { { STATE_XTSYNC }, 'o' }, - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DATAPGSZID4 }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_s16i_args[] = { + { { 6 /* art */ }, 'i' }, + { { 4 /* ars */ }, 'i' }, + { { 20 /* uimm8x2 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_dtlbcfg_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_s32i_args[] = { + { { 6 /* art */ }, 'i' }, + { { 4 /* ars */ }, 'i' }, + { { 21 /* uimm8x4 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_dtlbcfg_stateArgs[] = { - { { STATE_XTSYNC }, 'o' }, - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_DATAPGSZID4 }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_s8i_args[] = { + { { 6 /* art */ }, 'i' }, + { { 4 /* ars */ }, 'i' }, + { { 19 /* uimm8 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_idtlb_args[] = { - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_sar_args[] = { + { { 4 /* ars */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_idtlb_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_sar_stateArgs[] = { + { { STATE_SAR }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rdtlb_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_sari_args[] = { + { { 86 /* sas */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rdtlb_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_sari_stateArgs[] = { + { { STATE_SAR }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_wdtlb_args[] = { - { { OPERAND_art }, 'i' }, - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_shifts_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wdtlb_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_XTSYNC }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_shifts_stateArgs[] = { + { { STATE_SAR }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_iitlb_args[] = { - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_shiftst_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_iitlb_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_shiftst_stateArgs[] = { + { { STATE_SAR }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_ritlb_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_shiftt_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_ritlb_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_shiftt_stateArgs[] = { + { { STATE_SAR }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_witlb_args[] = { - { { OPERAND_art }, 'i' }, - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_slli_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 26 /* msalp32 */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_witlb_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_srai_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 6 /* art */ }, 'i' }, + { { 84 /* sargt */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_srli_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 6 /* art */ }, 'i' }, + { { 70 /* s */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_sync_stateArgs[] = { + { { STATE_XTSYNC }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsil_args[] = { + { { 6 /* art */ }, 'o' }, + { { 70 /* s */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsil_stateArgs[] = { + { { STATE_PSWOE }, 'i' }, + { { STATE_PSCALLINC }, 'i' }, + { { STATE_PSOWB }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_PSUM }, 'i' }, { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' } + { { STATE_PSINTLEVEL }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_ldpte_stateArgs[] = { - { { STATE_PTBASE }, 'i' }, - { { STATE_EXCVADDR }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_lend_args[] = { + { { 6 /* art */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_hwwitlba_stateArgs[] = { - { { STATE_EXCVADDR }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_lend_stateArgs[] = { + { { STATE_LEND }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_hwwdtlba_stateArgs[] = { - { { STATE_EXCVADDR }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_wsr_lend_args[] = { + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_cpenable_args[] = { - { { OPERAND_art }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_wsr_lend_stateArgs[] = { + { { STATE_LEND }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_cpenable_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_CPENABLE }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_xsr_lend_args[] = { + { { 6 /* art */ }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_cpenable_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_xsr_lend_stateArgs[] = { + { { STATE_LEND }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_cpenable_stateArgs[] = { - { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_CPENABLE }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_lcount_args[] = { + { { 6 /* art */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_cpenable_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_lcount_stateArgs[] = { + { { STATE_LCOUNT }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_cpenable_stateArgs[] = { +static xtensa_arg_internal Iclass_xt_iclass_wsr_lcount_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_lcount_stateArgs[] = { + { { STATE_XTSYNC }, 'o' }, + { { STATE_LCOUNT }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_lcount_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_lcount_stateArgs[] = { + { { STATE_XTSYNC }, 'o' }, + { { STATE_LCOUNT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_lbeg_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_lbeg_stateArgs[] = { + { { STATE_LBEG }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_lbeg_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_lbeg_stateArgs[] = { + { { STATE_LBEG }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_lbeg_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_lbeg_stateArgs[] = { + { { STATE_LBEG }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_sar_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_sar_stateArgs[] = { + { { STATE_SAR }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_sar_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_sar_stateArgs[] = { + { { STATE_SAR }, 'o' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_sar_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_sar_stateArgs[] = { + { { STATE_SAR }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_litbase_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_litbase_stateArgs[] = { + { { STATE_LITBADDR }, 'i' }, + { { STATE_LITBEN }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_litbase_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_litbase_stateArgs[] = { + { { STATE_LITBADDR }, 'o' }, + { { STATE_LITBEN }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_litbase_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_litbase_stateArgs[] = { + { { STATE_LITBADDR }, 'm' }, + { { STATE_LITBEN }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_176_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_176_stateArgs[] = { { { STATE_PSEXCM }, 'i' }, - { { STATE_PSRING }, 'i' }, - { { STATE_CPENABLE }, 'm' } + { { STATE_PSRING }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_clamp_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_tp7 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_208_args[] = { + { { 6 /* art */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_minmax_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_208_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_nsa_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_ps_args[] = { + { { 6 /* art */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_sx_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_tp7 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_ps_stateArgs[] = { + { { STATE_PSWOE }, 'i' }, + { { STATE_PSCALLINC }, 'i' }, + { { STATE_PSOWB }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_PSUM }, 'i' }, + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSINTLEVEL }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_l32ai_args[] = { - { { OPERAND_art }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x4 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_wsr_ps_args[] = { + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_s32ri_args[] = { - { { OPERAND_art }, 'i' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x4 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_wsr_ps_stateArgs[] = { + { { STATE_PSWOE }, 'o' }, + { { STATE_PSCALLINC }, 'o' }, + { { STATE_PSOWB }, 'o' }, + { { STATE_PSRING }, 'm' }, + { { STATE_PSUM }, 'o' }, + { { STATE_PSEXCM }, 'm' }, + { { STATE_PSINTLEVEL }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_s32c1i_args[] = { - { { OPERAND_art }, 'm' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_uimm8x4 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_xsr_ps_args[] = { + { { 6 /* art */ }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_s32c1i_stateArgs[] = { - { { STATE_SCOMPARE1 }, 'i' }, - { { STATE_SCOMPARE1 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_xsr_ps_stateArgs[] = { + { { STATE_PSWOE }, 'm' }, + { { STATE_PSCALLINC }, 'm' }, + { { STATE_PSOWB }, 'm' }, + { { STATE_PSRING }, 'm' }, + { { STATE_PSUM }, 'm' }, + { { STATE_PSEXCM }, 'm' }, + { { STATE_PSINTLEVEL }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_scompare1_args[] = { - { { OPERAND_art }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc1_args[] = { + { { 6 /* art */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_rsr_scompare1_stateArgs[] = { - { { STATE_SCOMPARE1 }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC1 }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_scompare1_args[] = { - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc1_args[] = { + { { 6 /* art */ }, 'i' } }; -static xtensa_arg_internal Iclass_xt_iclass_wsr_scompare1_stateArgs[] = { - { { STATE_SCOMPARE1 }, 'o' } +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC1 }, 'o' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_scompare1_args[] = { - { { OPERAND_art }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc1_args[] = { + { { 6 /* art */ }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_xsr_scompare1_stateArgs[] = { - { { STATE_SCOMPARE1 }, 'm' } +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC1 }, 'm' } }; -static xtensa_arg_internal Iclass_xt_iclass_div_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave1_args[] = { + { { 6 /* art */ }, 'o' } }; -static xtensa_arg_internal Iclass_xt_mul32_args[] = { - { { OPERAND_arr }, 'o' }, - { { OPERAND_ars }, 'i' }, - { { OPERAND_art }, 'i' } +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE1 }, 'i' } }; -static xtensa_iclass_internal iclasses[] = { - { 0, 0 /* xt_iclass_excw */, +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave1_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE1 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave1_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE1 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc2_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC2 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc2_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC2 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc2_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC2 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave2_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE2 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave2_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE2 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave2_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE2 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc3_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC3 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc3_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC3 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc3_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC3 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave3_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE3 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave3_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE3 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave3_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE3 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc4_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc4_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC4 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc4_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc4_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC4 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc4_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc4_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC4 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave4_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave4_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE4 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave4_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave4_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE4 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave4_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave4_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE4 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc5_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc5_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC5 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc5_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc5_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC5 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc5_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc5_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC5 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave5_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave5_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE5 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave5_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave5_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE5 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave5_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave5_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE5 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc6_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc6_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC6 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc6_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc6_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC6 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc6_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc6_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC6 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave6_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave6_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE6 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave6_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave6_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE6 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave6_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave6_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE6 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc7_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_epc7_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC7 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc7_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_epc7_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC7 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc7_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_epc7_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPC7 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave7_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excsave7_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE7 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave7_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excsave7_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE7 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave7_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excsave7_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCSAVE7 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps2_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS2 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps2_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS2 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps2_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS2 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps3_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS3 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps3_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS3 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps3_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS3 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps4_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps4_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS4 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps4_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps4_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS4 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps4_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps4_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS4 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps5_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps5_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS5 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps5_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps5_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS5 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps5_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps5_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS5 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps6_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps6_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS6 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps6_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps6_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS6 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps6_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps6_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS6 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps7_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_eps7_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS7 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps7_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_eps7_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS7 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps7_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_eps7_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EPS7 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excvaddr_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_excvaddr_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCVADDR }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excvaddr_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_excvaddr_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCVADDR }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excvaddr_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_excvaddr_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCVADDR }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_depc_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_depc_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DEPC }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_depc_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_depc_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DEPC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_depc_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_depc_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DEPC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_exccause_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_exccause_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCCAUSE }, 'i' }, + { { STATE_XTSYNC }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_exccause_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_exccause_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCCAUSE }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_exccause_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_exccause_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_EXCCAUSE }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_misc0_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_misc0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC0 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_misc0_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_misc0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC0 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_misc0_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_misc0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC0 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_misc1_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_misc1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC1 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_misc1_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_misc1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC1 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_misc1_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_misc1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC1 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_misc2_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_misc2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC2 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_misc2_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_misc2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC2 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_misc2_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_misc2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC2 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_misc3_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_misc3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC3 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_misc3_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_misc3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC3 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_misc3_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_misc3_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_MISC3 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_prid_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_prid_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_vecbase_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_vecbase_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_VECBASE }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_vecbase_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_vecbase_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_VECBASE }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_vecbase_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_vecbase_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_VECBASE }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16_aa_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16_aa_stateArgs[] = { + { { STATE_ACC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16_ad_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 34 /* my */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16_ad_stateArgs[] = { + { { STATE_ACC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16_da_args[] = { + { { 33 /* mx */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16_da_stateArgs[] = { + { { STATE_ACC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16_dd_args[] = { + { { 33 /* mx */ }, 'i' }, + { { 34 /* my */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16_dd_stateArgs[] = { + { { STATE_ACC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16a_aa_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16a_aa_stateArgs[] = { + { { STATE_ACC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16a_ad_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 34 /* my */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16a_ad_stateArgs[] = { + { { STATE_ACC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16a_da_args[] = { + { { 33 /* mx */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16a_da_stateArgs[] = { + { { STATE_ACC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16a_dd_args[] = { + { { 33 /* mx */ }, 'i' }, + { { 34 /* my */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16a_dd_stateArgs[] = { + { { STATE_ACC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16al_da_args[] = { + { { 35 /* mw */ }, 'o' }, + { { 4 /* ars */ }, 'm' }, + { { 33 /* mx */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16al_da_stateArgs[] = { + { { STATE_ACC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16al_dd_args[] = { + { { 35 /* mw */ }, 'o' }, + { { 4 /* ars */ }, 'm' }, + { { 33 /* mx */ }, 'i' }, + { { 34 /* my */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16al_dd_stateArgs[] = { + { { STATE_ACC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mac16_l_args[] = { + { { 35 /* mw */ }, 'o' }, + { { 4 /* ars */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_mul16_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_m0_args[] = { + { { 6 /* art */ }, 'o' }, + { { 36 /* mr0 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_m0_args[] = { + { { 6 /* art */ }, 'i' }, + { { 36 /* mr0 */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_m0_args[] = { + { { 6 /* art */ }, 'm' }, + { { 36 /* mr0 */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_m1_args[] = { + { { 6 /* art */ }, 'o' }, + { { 37 /* mr1 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_m1_args[] = { + { { 6 /* art */ }, 'i' }, + { { 37 /* mr1 */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_m1_args[] = { + { { 6 /* art */ }, 'm' }, + { { 37 /* mr1 */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_m2_args[] = { + { { 6 /* art */ }, 'o' }, + { { 38 /* mr2 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_m2_args[] = { + { { 6 /* art */ }, 'i' }, + { { 38 /* mr2 */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_m2_args[] = { + { { 6 /* art */ }, 'm' }, + { { 38 /* mr2 */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_m3_args[] = { + { { 6 /* art */ }, 'o' }, + { { 39 /* mr3 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_m3_args[] = { + { { 6 /* art */ }, 'i' }, + { { 39 /* mr3 */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_m3_args[] = { + { { 6 /* art */ }, 'm' }, + { { 39 /* mr3 */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_acclo_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_acclo_stateArgs[] = { + { { STATE_ACC }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_acclo_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_acclo_stateArgs[] = { + { { STATE_ACC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_acclo_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_acclo_stateArgs[] = { + { { STATE_ACC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_acchi_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_acchi_stateArgs[] = { + { { STATE_ACC }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_acchi_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_acchi_stateArgs[] = { + { { STATE_ACC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_acchi_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_acchi_stateArgs[] = { + { { STATE_ACC }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rfi_args[] = { + { { 70 /* s */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rfi_stateArgs[] = { + { { STATE_PSWOE }, 'o' }, + { { STATE_PSCALLINC }, 'o' }, + { { STATE_PSOWB }, 'o' }, + { { STATE_PSRING }, 'm' }, + { { STATE_PSUM }, 'o' }, + { { STATE_PSEXCM }, 'm' }, + { { STATE_PSINTLEVEL }, 'o' }, + { { STATE_EPC1 }, 'i' }, + { { STATE_EPC2 }, 'i' }, + { { STATE_EPC3 }, 'i' }, + { { STATE_EPC4 }, 'i' }, + { { STATE_EPC5 }, 'i' }, + { { STATE_EPC6 }, 'i' }, + { { STATE_EPC7 }, 'i' }, + { { STATE_EPS2 }, 'i' }, + { { STATE_EPS3 }, 'i' }, + { { STATE_EPS4 }, 'i' }, + { { STATE_EPS5 }, 'i' }, + { { STATE_EPS6 }, 'i' }, + { { STATE_EPS7 }, 'i' }, + { { STATE_InOCDMode }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wait_args[] = { + { { 70 /* s */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wait_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_PSINTLEVEL }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_interrupt_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_interrupt_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_INTERRUPT }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_intset_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_intset_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' }, + { { STATE_INTERRUPT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_intclear_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_intclear_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' }, + { { STATE_INTERRUPT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_intenable_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_intenable_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_INTENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_intenable_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_intenable_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_INTENABLE }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_intenable_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_intenable_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_INTENABLE }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_break_args[] = { + { { 41 /* imms */ }, 'i' }, + { { 40 /* immt */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_break_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSINTLEVEL }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_break_n_args[] = { + { { 41 /* imms */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_break_n_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSINTLEVEL }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreaka0_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreaka0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKA0 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreaka0_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreaka0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKA0 }, 'o' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreaka0_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreaka0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKA0 }, 'm' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreakc0_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreakc0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKC0 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreakc0_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreakc0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKC0 }, 'o' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreakc0_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreakc0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKC0 }, 'm' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreaka1_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreaka1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKA1 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreaka1_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreaka1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKA1 }, 'o' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreaka1_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreaka1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKA1 }, 'm' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreakc1_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_dbreakc1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKC1 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreakc1_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_dbreakc1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKC1 }, 'o' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreakc1_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_dbreakc1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DBREAKC1 }, 'm' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreaka0_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreaka0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_IBREAKA0 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreaka0_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreaka0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_IBREAKA0 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreaka0_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreaka0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_IBREAKA0 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreaka1_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreaka1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_IBREAKA1 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreaka1_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreaka1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_IBREAKA1 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreaka1_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreaka1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_IBREAKA1 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreakenable_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ibreakenable_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_IBREAKENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreakenable_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ibreakenable_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_IBREAKENABLE }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreakenable_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ibreakenable_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_IBREAKENABLE }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_debugcause_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_debugcause_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DEBUGCAUSE }, 'i' }, + { { STATE_DBNUM }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_debugcause_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_debugcause_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DEBUGCAUSE }, 'o' }, + { { STATE_DBNUM }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_debugcause_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_debugcause_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DEBUGCAUSE }, 'm' }, + { { STATE_DBNUM }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_icount_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_icount_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_ICOUNT }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_icount_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_icount_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' }, + { { STATE_ICOUNT }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_icount_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_icount_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' }, + { { STATE_ICOUNT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_icountlevel_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_icountlevel_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_ICOUNTLEVEL }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_icountlevel_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_icountlevel_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_ICOUNTLEVEL }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_icountlevel_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_icountlevel_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_ICOUNTLEVEL }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ddr_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ddr_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DDR }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ddr_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ddr_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' }, + { { STATE_DDR }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ddr_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ddr_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' }, + { { STATE_DDR }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rfdo_args[] = { + { { 41 /* imms */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rfdo_stateArgs[] = { + { { STATE_InOCDMode }, 'm' }, + { { STATE_EPC6 }, 'i' }, + { { STATE_PSWOE }, 'o' }, + { { STATE_PSCALLINC }, 'o' }, + { { STATE_PSOWB }, 'o' }, + { { STATE_PSRING }, 'o' }, + { { STATE_PSUM }, 'o' }, + { { STATE_PSEXCM }, 'o' }, + { { STATE_PSINTLEVEL }, 'o' }, + { { STATE_EPS6 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rfdd_stateArgs[] = { + { { STATE_InOCDMode }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_mmid_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_mmid_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_bbool1_args[] = { + { { 44 /* br */ }, 'o' }, + { { 43 /* bs */ }, 'i' }, + { { 42 /* bt */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_bbool4_args[] = { + { { 42 /* bt */ }, 'o' }, + { { 49 /* bs4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_bbool8_args[] = { + { { 42 /* bt */ }, 'o' }, + { { 52 /* bs8 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_bbranch_args[] = { + { { 43 /* bs */ }, 'i' }, + { { 28 /* label8 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_bmove_args[] = { + { { 3 /* arr */ }, 'm' }, + { { 4 /* ars */ }, 'i' }, + { { 42 /* bt */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_RSR_BR_args[] = { + { { 6 /* art */ }, 'o' }, + { { 57 /* brall */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_WSR_BR_args[] = { + { { 6 /* art */ }, 'i' }, + { { 57 /* brall */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_XSR_BR_args[] = { + { { 6 /* art */ }, 'm' }, + { { 57 /* brall */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ccount_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ccount_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CCOUNT }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ccount_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ccount_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' }, + { { STATE_CCOUNT }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ccount_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ccount_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' }, + { { STATE_CCOUNT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare0_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CCOMPARE0 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare0_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CCOMPARE0 }, 'o' }, + { { STATE_INTERRUPT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare0_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare0_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CCOMPARE0 }, 'm' }, + { { STATE_INTERRUPT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare1_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CCOMPARE1 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare1_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CCOMPARE1 }, 'o' }, + { { STATE_INTERRUPT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare1_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare1_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CCOMPARE1 }, 'm' }, + { { STATE_INTERRUPT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare2_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ccompare2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CCOMPARE2 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare2_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ccompare2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CCOMPARE2 }, 'o' }, + { { STATE_INTERRUPT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare2_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ccompare2_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CCOMPARE2 }, 'm' }, + { { STATE_INTERRUPT }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_icache_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 21 /* uimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_icache_lock_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 22 /* uimm4x16 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_icache_lock_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_icache_inv_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 21 /* uimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_icache_inv_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_licx_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_licx_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_sicx_args[] = { + { { 6 /* art */ }, 'i' }, + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_sicx_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_dcache_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 21 /* uimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_dcache_ind_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 22 /* uimm4x16 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_dcache_ind_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_dcache_inv_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 21 /* uimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_dcache_inv_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_dpf_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 21 /* uimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_dcache_lock_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 22 /* uimm4x16 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_dcache_lock_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_sdct_args[] = { + { { 6 /* art */ }, 'i' }, + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_sdct_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_ldct_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_ldct_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ptevaddr_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_ptevaddr_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_PTBASE }, 'o' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ptevaddr_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_ptevaddr_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_PTBASE }, 'i' }, + { { STATE_EXCVADDR }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ptevaddr_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_ptevaddr_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_PTBASE }, 'm' }, + { { STATE_EXCVADDR }, 'i' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_rasid_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_rasid_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_ASID3 }, 'i' }, + { { STATE_ASID2 }, 'i' }, + { { STATE_ASID1 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_rasid_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_rasid_stateArgs[] = { + { { STATE_XTSYNC }, 'o' }, + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_ASID3 }, 'o' }, + { { STATE_ASID2 }, 'o' }, + { { STATE_ASID1 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_rasid_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_rasid_stateArgs[] = { + { { STATE_XTSYNC }, 'o' }, + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_ASID3 }, 'm' }, + { { STATE_ASID2 }, 'm' }, + { { STATE_ASID1 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_itlbcfg_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_itlbcfg_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_INSTPGSZID4 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_itlbcfg_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_itlbcfg_stateArgs[] = { + { { STATE_XTSYNC }, 'o' }, + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_INSTPGSZID4 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_itlbcfg_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_itlbcfg_stateArgs[] = { + { { STATE_XTSYNC }, 'o' }, + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_INSTPGSZID4 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_dtlbcfg_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_dtlbcfg_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DATAPGSZID4 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_dtlbcfg_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_dtlbcfg_stateArgs[] = { + { { STATE_XTSYNC }, 'o' }, + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DATAPGSZID4 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_dtlbcfg_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_dtlbcfg_stateArgs[] = { + { { STATE_XTSYNC }, 'o' }, + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_DATAPGSZID4 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_idtlb_args[] = { + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_idtlb_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rdtlb_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rdtlb_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wdtlb_args[] = { + { { 6 /* art */ }, 'i' }, + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wdtlb_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_XTSYNC }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_iitlb_args[] = { + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_iitlb_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_ritlb_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_ritlb_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_witlb_args[] = { + { { 6 /* art */ }, 'i' }, + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_witlb_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_ldpte_stateArgs[] = { + { { STATE_PTBASE }, 'i' }, + { { STATE_EXCVADDR }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_hwwitlba_stateArgs[] = { + { { STATE_EXCVADDR }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_hwwdtlba_stateArgs[] = { + { { STATE_EXCVADDR }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_cpenable_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_cpenable_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_cpenable_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_cpenable_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CPENABLE }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_cpenable_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_cpenable_stateArgs[] = { + { { STATE_PSEXCM }, 'i' }, + { { STATE_PSRING }, 'i' }, + { { STATE_CPENABLE }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_clamp_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 58 /* tp7 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_minmax_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_nsa_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_sx_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 58 /* tp7 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_l32ai_args[] = { + { { 6 /* art */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 21 /* uimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_s32ri_args[] = { + { { 6 /* art */ }, 'i' }, + { { 4 /* ars */ }, 'i' }, + { { 21 /* uimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_s32c1i_args[] = { + { { 6 /* art */ }, 'm' }, + { { 4 /* ars */ }, 'i' }, + { { 21 /* uimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_s32c1i_stateArgs[] = { + { { STATE_SCOMPARE1 }, 'i' }, + { { STATE_SCOMPARE1 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_scompare1_args[] = { + { { 6 /* art */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_rsr_scompare1_stateArgs[] = { + { { STATE_SCOMPARE1 }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_scompare1_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wsr_scompare1_stateArgs[] = { + { { STATE_SCOMPARE1 }, 'o' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_scompare1_args[] = { + { { 6 /* art */ }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_xsr_scompare1_stateArgs[] = { + { { STATE_SCOMPARE1 }, 'm' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_div_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_mul32_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_rur_fcr_args[] = { + { { 3 /* arr */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_rur_fcr_stateArgs[] = { + { { STATE_RoundMode }, 'i' }, + { { STATE_InvalidEnable }, 'i' }, + { { STATE_DivZeroEnable }, 'i' }, + { { STATE_OverflowEnable }, 'i' }, + { { STATE_UnderflowEnable }, 'i' }, + { { STATE_InexactEnable }, 'i' }, + { { STATE_FPreserved20 }, 'i' }, + { { STATE_FPreserved5 }, 'i' }, + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_wur_fcr_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_wur_fcr_stateArgs[] = { + { { STATE_RoundMode }, 'o' }, + { { STATE_InvalidEnable }, 'o' }, + { { STATE_DivZeroEnable }, 'o' }, + { { STATE_OverflowEnable }, 'o' }, + { { STATE_UnderflowEnable }, 'o' }, + { { STATE_InexactEnable }, 'o' }, + { { STATE_FPreserved20 }, 'o' }, + { { STATE_FPreserved5 }, 'o' }, + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_rur_fsr_args[] = { + { { 3 /* arr */ }, 'o' } +}; + +static xtensa_arg_internal Iclass_rur_fsr_stateArgs[] = { + { { STATE_InvalidFlag }, 'i' }, + { { STATE_DivZeroFlag }, 'i' }, + { { STATE_OverflowFlag }, 'i' }, + { { STATE_UnderflowFlag }, 'i' }, + { { STATE_InexactFlag }, 'i' }, + { { STATE_FPreserved20a }, 'i' }, + { { STATE_FPreserved7 }, 'i' }, + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_wur_fsr_args[] = { + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_wur_fsr_stateArgs[] = { + { { STATE_InvalidFlag }, 'o' }, + { { STATE_DivZeroFlag }, 'o' }, + { { STATE_OverflowFlag }, 'o' }, + { { STATE_UnderflowFlag }, 'o' }, + { { STATE_InexactFlag }, 'o' }, + { { STATE_FPreserved20a }, 'o' }, + { { STATE_FPreserved7 }, 'o' }, + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_args[] = { + { { 62 /* frr */ }, 'o' }, + { { 63 /* frs */ }, 'i' }, + { { 64 /* frt */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_stateArgs[] = { + { { STATE_RoundMode }, 'i' }, + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_mac_args[] = { + { { 62 /* frr */ }, 'm' }, + { { 63 /* frs */ }, 'i' }, + { { 64 /* frt */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_mac_stateArgs[] = { + { { STATE_RoundMode }, 'i' }, + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_cmov_args[] = { + { { 62 /* frr */ }, 'm' }, + { { 63 /* frs */ }, 'i' }, + { { 42 /* bt */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_cmov_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_mov_args[] = { + { { 62 /* frr */ }, 'm' }, + { { 63 /* frs */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_mov_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_mov2_args[] = { + { { 62 /* frr */ }, 'o' }, + { { 63 /* frs */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_mov2_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_cmp_args[] = { + { { 44 /* br */ }, 'o' }, + { { 63 /* frs */ }, 'i' }, + { { 64 /* frt */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_cmp_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_float_args[] = { + { { 62 /* frr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 65 /* t */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_float_stateArgs[] = { + { { STATE_RoundMode }, 'i' }, + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_int_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 63 /* frs */ }, 'i' }, + { { 65 /* t */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_int_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_rfr_args[] = { + { { 3 /* arr */ }, 'o' }, + { { 63 /* frs */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_rfr_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_wfr_args[] = { + { { 62 /* frr */ }, 'o' }, + { { 4 /* ars */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_wfr_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_lsi_args[] = { + { { 64 /* frt */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 61 /* cimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_lsi_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_lsiu_args[] = { + { { 64 /* frt */ }, 'o' }, + { { 4 /* ars */ }, 'm' }, + { { 61 /* cimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_lsiu_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_lsx_args[] = { + { { 62 /* frr */ }, 'o' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_lsx_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_lsxu_args[] = { + { { 62 /* frr */ }, 'o' }, + { { 4 /* ars */ }, 'm' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_lsxu_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_ssi_args[] = { + { { 64 /* frt */ }, 'i' }, + { { 4 /* ars */ }, 'i' }, + { { 61 /* cimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_ssi_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_ssiu_args[] = { + { { 64 /* frt */ }, 'i' }, + { { 4 /* ars */ }, 'm' }, + { { 61 /* cimm8x4 */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_ssiu_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_ssx_args[] = { + { { 62 /* frr */ }, 'i' }, + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_ssx_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_ssxu_args[] = { + { { 62 /* frr */ }, 'i' }, + { { 4 /* ars */ }, 'm' }, + { { 6 /* art */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_fp_ssxu_stateArgs[] = { + { { STATE_CPENABLE }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wb18_0_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 60 /* xt_wbr18_label */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wb18_1_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 17 /* b4const */ }, 'i' }, + { { 60 /* xt_wbr18_label */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wb18_2_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 18 /* b4constu */ }, 'i' }, + { { 60 /* xt_wbr18_label */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wb18_3_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 67 /* bbi */ }, 'i' }, + { { 60 /* xt_wbr18_label */ }, 'i' } +}; + +static xtensa_arg_internal Iclass_xt_iclass_wb18_4_args[] = { + { { 4 /* ars */ }, 'i' }, + { { 6 /* art */ }, 'i' }, + { { 60 /* xt_wbr18_label */ }, 'i' } +}; + +static xtensa_iclass_internal iclasses[] = { + { 0, 0 /* xt_iclass_excw */, 0, 0, 0, 0 }, { 0, 0 /* xt_iclass_rfe */, 3, Iclass_xt_iclass_rfe_stateArgs, 0, 0 }, @@ -5305,8 +8882,6 @@ 2, Iclass_xt_iclass_xsr_litbase_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_rsr_176_args, 2, Iclass_xt_iclass_rsr_176_stateArgs, 0, 0 }, - { 1, Iclass_xt_iclass_wsr_176_args, - 2, Iclass_xt_iclass_wsr_176_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_rsr_208_args, 2, Iclass_xt_iclass_rsr_208_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_rsr_ps_args, @@ -5465,6 +9040,18 @@ 3, Iclass_xt_iclass_wsr_misc1_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_xsr_misc1_args, 3, Iclass_xt_iclass_xsr_misc1_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_rsr_misc2_args, + 3, Iclass_xt_iclass_rsr_misc2_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_wsr_misc2_args, + 3, Iclass_xt_iclass_wsr_misc2_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_xsr_misc2_args, + 3, Iclass_xt_iclass_xsr_misc2_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_rsr_misc3_args, + 3, Iclass_xt_iclass_rsr_misc3_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_wsr_misc3_args, + 3, Iclass_xt_iclass_wsr_misc3_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_xsr_misc3_args, + 3, Iclass_xt_iclass_xsr_misc3_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_rsr_prid_args, 2, Iclass_xt_iclass_rsr_prid_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_rsr_vecbase_args, @@ -5473,8 +9060,66 @@ 3, Iclass_xt_iclass_wsr_vecbase_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_xsr_vecbase_args, 3, Iclass_xt_iclass_xsr_vecbase_stateArgs, 0, 0 }, + { 2, Iclass_xt_iclass_mac16_aa_args, + 1, Iclass_xt_iclass_mac16_aa_stateArgs, 0, 0 }, + { 2, Iclass_xt_iclass_mac16_ad_args, + 1, Iclass_xt_iclass_mac16_ad_stateArgs, 0, 0 }, + { 2, Iclass_xt_iclass_mac16_da_args, + 1, Iclass_xt_iclass_mac16_da_stateArgs, 0, 0 }, + { 2, Iclass_xt_iclass_mac16_dd_args, + 1, Iclass_xt_iclass_mac16_dd_stateArgs, 0, 0 }, + { 2, Iclass_xt_iclass_mac16a_aa_args, + 1, Iclass_xt_iclass_mac16a_aa_stateArgs, 0, 0 }, + { 2, Iclass_xt_iclass_mac16a_ad_args, + 1, Iclass_xt_iclass_mac16a_ad_stateArgs, 0, 0 }, + { 2, Iclass_xt_iclass_mac16a_da_args, + 1, Iclass_xt_iclass_mac16a_da_stateArgs, 0, 0 }, + { 2, Iclass_xt_iclass_mac16a_dd_args, + 1, Iclass_xt_iclass_mac16a_dd_stateArgs, 0, 0 }, + { 4, Iclass_xt_iclass_mac16al_da_args, + 1, Iclass_xt_iclass_mac16al_da_stateArgs, 0, 0 }, + { 4, Iclass_xt_iclass_mac16al_dd_args, + 1, Iclass_xt_iclass_mac16al_dd_stateArgs, 0, 0 }, + { 2, Iclass_xt_iclass_mac16_l_args, + 0, 0, 0, 0 }, { 3, Iclass_xt_iclass_mul16_args, 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_rsr_m0_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_wsr_m0_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_xsr_m0_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_rsr_m1_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_wsr_m1_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_xsr_m1_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_rsr_m2_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_wsr_m2_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_xsr_m2_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_rsr_m3_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_wsr_m3_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_xsr_m3_args, + 0, 0, 0, 0 }, + { 1, Iclass_xt_iclass_rsr_acclo_args, + 1, Iclass_xt_iclass_rsr_acclo_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_wsr_acclo_args, + 1, Iclass_xt_iclass_wsr_acclo_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_xsr_acclo_args, + 1, Iclass_xt_iclass_xsr_acclo_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_rsr_acchi_args, + 1, Iclass_xt_iclass_rsr_acchi_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_wsr_acchi_args, + 1, Iclass_xt_iclass_wsr_acchi_stateArgs, 0, 0 }, + { 1, Iclass_xt_iclass_xsr_acchi_args, + 1, Iclass_xt_iclass_xsr_acchi_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_rfi_args, 21, Iclass_xt_iclass_rfi_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_wait_args, @@ -5567,6 +9212,22 @@ 1, Iclass_xt_iclass_rfdd_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_wsr_mmid_args, 3, Iclass_xt_iclass_wsr_mmid_stateArgs, 0, 0 }, + { 3, Iclass_xt_iclass_bbool1_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_bbool4_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_bbool8_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_bbranch_args, + 0, 0, 0, 0 }, + { 3, Iclass_xt_iclass_bmove_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_RSR_BR_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_WSR_BR_args, + 0, 0, 0, 0 }, + { 2, Iclass_xt_iclass_XSR_BR_args, + 0, 0, 0, 0 }, { 1, Iclass_xt_iclass_rsr_ccount_args, 3, Iclass_xt_iclass_rsr_ccount_stateArgs, 0, 0 }, { 1, Iclass_xt_iclass_wsr_ccount_args, @@ -5686,5250 +9347,7621 @@ { 3, Iclass_xt_iclass_div_args, 0, 0, 0, 0 }, { 3, Iclass_xt_mul32_args, + 0, 0, 0, 0 }, + { 1, Iclass_rur_fcr_args, + 9, Iclass_rur_fcr_stateArgs, 0, 0 }, + { 1, Iclass_wur_fcr_args, + 9, Iclass_wur_fcr_stateArgs, 0, 0 }, + { 1, Iclass_rur_fsr_args, + 8, Iclass_rur_fsr_stateArgs, 0, 0 }, + { 1, Iclass_wur_fsr_args, + 8, Iclass_wur_fsr_stateArgs, 0, 0 }, + { 3, Iclass_fp_args, + 2, Iclass_fp_stateArgs, 0, 0 }, + { 3, Iclass_fp_mac_args, + 2, Iclass_fp_mac_stateArgs, 0, 0 }, + { 3, Iclass_fp_cmov_args, + 1, Iclass_fp_cmov_stateArgs, 0, 0 }, + { 3, Iclass_fp_mov_args, + 1, Iclass_fp_mov_stateArgs, 0, 0 }, + { 2, Iclass_fp_mov2_args, + 1, Iclass_fp_mov2_stateArgs, 0, 0 }, + { 3, Iclass_fp_cmp_args, + 1, Iclass_fp_cmp_stateArgs, 0, 0 }, + { 3, Iclass_fp_float_args, + 2, Iclass_fp_float_stateArgs, 0, 0 }, + { 3, Iclass_fp_int_args, + 1, Iclass_fp_int_stateArgs, 0, 0 }, + { 2, Iclass_fp_rfr_args, + 1, Iclass_fp_rfr_stateArgs, 0, 0 }, + { 2, Iclass_fp_wfr_args, + 1, Iclass_fp_wfr_stateArgs, 0, 0 }, + { 3, Iclass_fp_lsi_args, + 1, Iclass_fp_lsi_stateArgs, 0, 0 }, + { 3, Iclass_fp_lsiu_args, + 1, Iclass_fp_lsiu_stateArgs, 0, 0 }, + { 3, Iclass_fp_lsx_args, + 1, Iclass_fp_lsx_stateArgs, 0, 0 }, + { 3, Iclass_fp_lsxu_args, + 1, Iclass_fp_lsxu_stateArgs, 0, 0 }, + { 3, Iclass_fp_ssi_args, + 1, Iclass_fp_ssi_stateArgs, 0, 0 }, + { 3, Iclass_fp_ssiu_args, + 1, Iclass_fp_ssiu_stateArgs, 0, 0 }, + { 3, Iclass_fp_ssx_args, + 1, Iclass_fp_ssx_stateArgs, 0, 0 }, + { 3, Iclass_fp_ssxu_args, + 1, Iclass_fp_ssxu_stateArgs, 0, 0 }, + { 2, Iclass_xt_iclass_wb18_0_args, + 0, 0, 0, 0 }, + { 3, Iclass_xt_iclass_wb18_1_args, + 0, 0, 0, 0 }, + { 3, Iclass_xt_iclass_wb18_2_args, + 0, 0, 0, 0 }, + { 3, Iclass_xt_iclass_wb18_3_args, + 0, 0, 0, 0 }, + { 3, Iclass_xt_iclass_wb18_4_args, 0, 0, 0, 0 } }; -enum xtensa_iclass_id { - ICLASS_xt_iclass_excw, - ICLASS_xt_iclass_rfe, - ICLASS_xt_iclass_rfde, - ICLASS_xt_iclass_syscall, - ICLASS_xt_iclass_simcall, - ICLASS_xt_iclass_call12, - ICLASS_xt_iclass_call8, - ICLASS_xt_iclass_call4, - ICLASS_xt_iclass_callx12, - ICLASS_xt_iclass_callx8, - ICLASS_xt_iclass_callx4, - ICLASS_xt_iclass_entry, - ICLASS_xt_iclass_movsp, - ICLASS_xt_iclass_rotw, - ICLASS_xt_iclass_retw, - ICLASS_xt_iclass_rfwou, - ICLASS_xt_iclass_l32e, - ICLASS_xt_iclass_s32e, - ICLASS_xt_iclass_rsr_windowbase, - ICLASS_xt_iclass_wsr_windowbase, - ICLASS_xt_iclass_xsr_windowbase, - ICLASS_xt_iclass_rsr_windowstart, - ICLASS_xt_iclass_wsr_windowstart, - ICLASS_xt_iclass_xsr_windowstart, - ICLASS_xt_iclass_add_n, - ICLASS_xt_iclass_addi_n, - ICLASS_xt_iclass_bz6, - ICLASS_xt_iclass_ill_n, - ICLASS_xt_iclass_loadi4, - ICLASS_xt_iclass_mov_n, - ICLASS_xt_iclass_movi_n, - ICLASS_xt_iclass_nopn, - ICLASS_xt_iclass_retn, - ICLASS_xt_iclass_storei4, - ICLASS_rur_threadptr, - ICLASS_wur_threadptr, - ICLASS_xt_iclass_addi, - ICLASS_xt_iclass_addmi, - ICLASS_xt_iclass_addsub, - ICLASS_xt_iclass_bit, - ICLASS_xt_iclass_bsi8, - ICLASS_xt_iclass_bsi8b, - ICLASS_xt_iclass_bsi8u, - ICLASS_xt_iclass_bst8, - ICLASS_xt_iclass_bsz12, - ICLASS_xt_iclass_call0, - ICLASS_xt_iclass_callx0, - ICLASS_xt_iclass_exti, - ICLASS_xt_iclass_ill, - ICLASS_xt_iclass_jump, - ICLASS_xt_iclass_jumpx, - ICLASS_xt_iclass_l16ui, - ICLASS_xt_iclass_l16si, - ICLASS_xt_iclass_l32i, - ICLASS_xt_iclass_l32r, - ICLASS_xt_iclass_l8i, - ICLASS_xt_iclass_loop, - ICLASS_xt_iclass_loopz, - ICLASS_xt_iclass_movi, - ICLASS_xt_iclass_movz, - ICLASS_xt_iclass_neg, - ICLASS_xt_iclass_nop, - ICLASS_xt_iclass_return, - ICLASS_xt_iclass_s16i, - ICLASS_xt_iclass_s32i, - ICLASS_xt_iclass_s8i, - ICLASS_xt_iclass_sar, - ICLASS_xt_iclass_sari, - ICLASS_xt_iclass_shifts, - ICLASS_xt_iclass_shiftst, - ICLASS_xt_iclass_shiftt, - ICLASS_xt_iclass_slli, - ICLASS_xt_iclass_srai, - ICLASS_xt_iclass_srli, - ICLASS_xt_iclass_memw, - ICLASS_xt_iclass_extw, - ICLASS_xt_iclass_isync, - ICLASS_xt_iclass_sync, - ICLASS_xt_iclass_rsil, - ICLASS_xt_iclass_rsr_lend, - ICLASS_xt_iclass_wsr_lend, - ICLASS_xt_iclass_xsr_lend, - ICLASS_xt_iclass_rsr_lcount, - ICLASS_xt_iclass_wsr_lcount, - ICLASS_xt_iclass_xsr_lcount, - ICLASS_xt_iclass_rsr_lbeg, - ICLASS_xt_iclass_wsr_lbeg, - ICLASS_xt_iclass_xsr_lbeg, - ICLASS_xt_iclass_rsr_sar, - ICLASS_xt_iclass_wsr_sar, - ICLASS_xt_iclass_xsr_sar, - ICLASS_xt_iclass_rsr_litbase, - ICLASS_xt_iclass_wsr_litbase, - ICLASS_xt_iclass_xsr_litbase, - ICLASS_xt_iclass_rsr_176, - ICLASS_xt_iclass_wsr_176, - ICLASS_xt_iclass_rsr_208, - ICLASS_xt_iclass_rsr_ps, - ICLASS_xt_iclass_wsr_ps, - ICLASS_xt_iclass_xsr_ps, - ICLASS_xt_iclass_rsr_epc1, - ICLASS_xt_iclass_wsr_epc1, - ICLASS_xt_iclass_xsr_epc1, - ICLASS_xt_iclass_rsr_excsave1, - ICLASS_xt_iclass_wsr_excsave1, - ICLASS_xt_iclass_xsr_excsave1, - ICLASS_xt_iclass_rsr_epc2, - ICLASS_xt_iclass_wsr_epc2, - ICLASS_xt_iclass_xsr_epc2, - ICLASS_xt_iclass_rsr_excsave2, - ICLASS_xt_iclass_wsr_excsave2, - ICLASS_xt_iclass_xsr_excsave2, - ICLASS_xt_iclass_rsr_epc3, - ICLASS_xt_iclass_wsr_epc3, - ICLASS_xt_iclass_xsr_epc3, - ICLASS_xt_iclass_rsr_excsave3, - ICLASS_xt_iclass_wsr_excsave3, - ICLASS_xt_iclass_xsr_excsave3, - ICLASS_xt_iclass_rsr_epc4, - ICLASS_xt_iclass_wsr_epc4, - ICLASS_xt_iclass_xsr_epc4, - ICLASS_xt_iclass_rsr_excsave4, - ICLASS_xt_iclass_wsr_excsave4, - ICLASS_xt_iclass_xsr_excsave4, - ICLASS_xt_iclass_rsr_epc5, - ICLASS_xt_iclass_wsr_epc5, - ICLASS_xt_iclass_xsr_epc5, - ICLASS_xt_iclass_rsr_excsave5, - ICLASS_xt_iclass_wsr_excsave5, - ICLASS_xt_iclass_xsr_excsave5, - ICLASS_xt_iclass_rsr_epc6, - ICLASS_xt_iclass_wsr_epc6, - ICLASS_xt_iclass_xsr_epc6, - ICLASS_xt_iclass_rsr_excsave6, - ICLASS_xt_iclass_wsr_excsave6, - ICLASS_xt_iclass_xsr_excsave6, - ICLASS_xt_iclass_rsr_epc7, - ICLASS_xt_iclass_wsr_epc7, - ICLASS_xt_iclass_xsr_epc7, - ICLASS_xt_iclass_rsr_excsave7, - ICLASS_xt_iclass_wsr_excsave7, - ICLASS_xt_iclass_xsr_excsave7, - ICLASS_xt_iclass_rsr_eps2, - ICLASS_xt_iclass_wsr_eps2, - ICLASS_xt_iclass_xsr_eps2, - ICLASS_xt_iclass_rsr_eps3, - ICLASS_xt_iclass_wsr_eps3, - ICLASS_xt_iclass_xsr_eps3, - ICLASS_xt_iclass_rsr_eps4, - ICLASS_xt_iclass_wsr_eps4, - ICLASS_xt_iclass_xsr_eps4, - ICLASS_xt_iclass_rsr_eps5, - ICLASS_xt_iclass_wsr_eps5, - ICLASS_xt_iclass_xsr_eps5, - ICLASS_xt_iclass_rsr_eps6, - ICLASS_xt_iclass_wsr_eps6, - ICLASS_xt_iclass_xsr_eps6, - ICLASS_xt_iclass_rsr_eps7, - ICLASS_xt_iclass_wsr_eps7, - ICLASS_xt_iclass_xsr_eps7, - ICLASS_xt_iclass_rsr_excvaddr, - ICLASS_xt_iclass_wsr_excvaddr, - ICLASS_xt_iclass_xsr_excvaddr, - ICLASS_xt_iclass_rsr_depc, - ICLASS_xt_iclass_wsr_depc, - ICLASS_xt_iclass_xsr_depc, - ICLASS_xt_iclass_rsr_exccause, - ICLASS_xt_iclass_wsr_exccause, - ICLASS_xt_iclass_xsr_exccause, - ICLASS_xt_iclass_rsr_misc0, - ICLASS_xt_iclass_wsr_misc0, - ICLASS_xt_iclass_xsr_misc0, - ICLASS_xt_iclass_rsr_misc1, - ICLASS_xt_iclass_wsr_misc1, - ICLASS_xt_iclass_xsr_misc1, - ICLASS_xt_iclass_rsr_prid, - ICLASS_xt_iclass_rsr_vecbase, - ICLASS_xt_iclass_wsr_vecbase, - ICLASS_xt_iclass_xsr_vecbase, - ICLASS_xt_iclass_mul16, - ICLASS_xt_iclass_rfi, - ICLASS_xt_iclass_wait, - ICLASS_xt_iclass_rsr_interrupt, - ICLASS_xt_iclass_wsr_intset, - ICLASS_xt_iclass_wsr_intclear, - ICLASS_xt_iclass_rsr_intenable, - ICLASS_xt_iclass_wsr_intenable, - ICLASS_xt_iclass_xsr_intenable, - ICLASS_xt_iclass_break, - ICLASS_xt_iclass_break_n, - ICLASS_xt_iclass_rsr_dbreaka0, - ICLASS_xt_iclass_wsr_dbreaka0, - ICLASS_xt_iclass_xsr_dbreaka0, - ICLASS_xt_iclass_rsr_dbreakc0, - ICLASS_xt_iclass_wsr_dbreakc0, - ICLASS_xt_iclass_xsr_dbreakc0, - ICLASS_xt_iclass_rsr_dbreaka1, - ICLASS_xt_iclass_wsr_dbreaka1, - ICLASS_xt_iclass_xsr_dbreaka1, - ICLASS_xt_iclass_rsr_dbreakc1, - ICLASS_xt_iclass_wsr_dbreakc1, - ICLASS_xt_iclass_xsr_dbreakc1, - ICLASS_xt_iclass_rsr_ibreaka0, - ICLASS_xt_iclass_wsr_ibreaka0, - ICLASS_xt_iclass_xsr_ibreaka0, - ICLASS_xt_iclass_rsr_ibreaka1, - ICLASS_xt_iclass_wsr_ibreaka1, - ICLASS_xt_iclass_xsr_ibreaka1, - ICLASS_xt_iclass_rsr_ibreakenable, - ICLASS_xt_iclass_wsr_ibreakenable, - ICLASS_xt_iclass_xsr_ibreakenable, - ICLASS_xt_iclass_rsr_debugcause, - ICLASS_xt_iclass_wsr_debugcause, - ICLASS_xt_iclass_xsr_debugcause, - ICLASS_xt_iclass_rsr_icount, - ICLASS_xt_iclass_wsr_icount, - ICLASS_xt_iclass_xsr_icount, - ICLASS_xt_iclass_rsr_icountlevel, - ICLASS_xt_iclass_wsr_icountlevel, - ICLASS_xt_iclass_xsr_icountlevel, - ICLASS_xt_iclass_rsr_ddr, - ICLASS_xt_iclass_wsr_ddr, - ICLASS_xt_iclass_xsr_ddr, - ICLASS_xt_iclass_rfdo, - ICLASS_xt_iclass_rfdd, - ICLASS_xt_iclass_wsr_mmid, - ICLASS_xt_iclass_rsr_ccount, - ICLASS_xt_iclass_wsr_ccount, - ICLASS_xt_iclass_xsr_ccount, - ICLASS_xt_iclass_rsr_ccompare0, - ICLASS_xt_iclass_wsr_ccompare0, - ICLASS_xt_iclass_xsr_ccompare0, - ICLASS_xt_iclass_rsr_ccompare1, - ICLASS_xt_iclass_wsr_ccompare1, - ICLASS_xt_iclass_xsr_ccompare1, - ICLASS_xt_iclass_rsr_ccompare2, - ICLASS_xt_iclass_wsr_ccompare2, - ICLASS_xt_iclass_xsr_ccompare2, - ICLASS_xt_iclass_icache, - ICLASS_xt_iclass_icache_lock, - ICLASS_xt_iclass_icache_inv, - ICLASS_xt_iclass_licx, - ICLASS_xt_iclass_sicx, - ICLASS_xt_iclass_dcache, - ICLASS_xt_iclass_dcache_ind, - ICLASS_xt_iclass_dcache_inv, - ICLASS_xt_iclass_dpf, - ICLASS_xt_iclass_dcache_lock, - ICLASS_xt_iclass_sdct, - ICLASS_xt_iclass_ldct, - ICLASS_xt_iclass_wsr_ptevaddr, - ICLASS_xt_iclass_rsr_ptevaddr, - ICLASS_xt_iclass_xsr_ptevaddr, - ICLASS_xt_iclass_rsr_rasid, - ICLASS_xt_iclass_wsr_rasid, - ICLASS_xt_iclass_xsr_rasid, - ICLASS_xt_iclass_rsr_itlbcfg, - ICLASS_xt_iclass_wsr_itlbcfg, - ICLASS_xt_iclass_xsr_itlbcfg, - ICLASS_xt_iclass_rsr_dtlbcfg, - ICLASS_xt_iclass_wsr_dtlbcfg, - ICLASS_xt_iclass_xsr_dtlbcfg, - ICLASS_xt_iclass_idtlb, - ICLASS_xt_iclass_rdtlb, - ICLASS_xt_iclass_wdtlb, - ICLASS_xt_iclass_iitlb, - ICLASS_xt_iclass_ritlb, - ICLASS_xt_iclass_witlb, - ICLASS_xt_iclass_ldpte, - ICLASS_xt_iclass_hwwitlba, - ICLASS_xt_iclass_hwwdtlba, - ICLASS_xt_iclass_rsr_cpenable, - ICLASS_xt_iclass_wsr_cpenable, - ICLASS_xt_iclass_xsr_cpenable, - ICLASS_xt_iclass_clamp, - ICLASS_xt_iclass_minmax, - ICLASS_xt_iclass_nsa, - ICLASS_xt_iclass_sx, - ICLASS_xt_iclass_l32ai, - ICLASS_xt_iclass_s32ri, - ICLASS_xt_iclass_s32c1i, - ICLASS_xt_iclass_rsr_scompare1, - ICLASS_xt_iclass_wsr_scompare1, - ICLASS_xt_iclass_xsr_scompare1, - ICLASS_xt_iclass_div, - ICLASS_xt_mul32 -}; + +/* Opcode encodings. */ + +static void +Opcode_excw_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2080; +} + +static void +Opcode_rfe_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3000; +} + +static void +Opcode_rfde_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3200; +} + +static void +Opcode_syscall_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x5000; +} + +static void +Opcode_simcall_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x5100; +} + +static void +Opcode_call12_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x35; +} + +static void +Opcode_call8_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x25; +} + +static void +Opcode_call4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x15; +} + +static void +Opcode_callx12_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xf0; +} + +static void +Opcode_callx8_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xe0; +} + +static void +Opcode_callx4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd0; +} + +static void +Opcode_entry_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x36; +} + +static void +Opcode_movsp_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x1000; +} + +static void +Opcode_rotw_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x408000; +} + +static void +Opcode_retw_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x90; +} + +static void +Opcode_retw_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xf01d; +} + +static void +Opcode_rfwo_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3400; +} + +static void +Opcode_rfwu_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3500; +} + +static void +Opcode_l32e_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x90000; +} + +static void +Opcode_s32e_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x490000; +} + +static void +Opcode_rsr_windowbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x34800; +} + +static void +Opcode_wsr_windowbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x134800; +} + +static void +Opcode_xsr_windowbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x614800; +} + +static void +Opcode_rsr_windowstart_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x34900; +} + +static void +Opcode_wsr_windowstart_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x134900; +} + +static void +Opcode_xsr_windowstart_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x614900; +} + +static void +Opcode_add_n_Slot_inst16a_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa; +} + +static void +Opcode_addi_n_Slot_inst16a_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb; +} + +static void +Opcode_addi_n_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3000; +} + +static void +Opcode_beqz_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x8c; +} + +static void +Opcode_bnez_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xcc; +} + +static void +Opcode_ill_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xf06d; +} + +static void +Opcode_l32i_n_Slot_inst16a_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x8; +} + +static void +Opcode_mov_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd; +} + +static void +Opcode_mov_n_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6000; +} + +static void +Opcode_mov_n_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa3000; +} + +static void +Opcode_mov_n_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc080; +} + +static void +Opcode_movi_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc; +} + +static void +Opcode_movi_n_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc000; +} + +static void +Opcode_nop_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xf03d; +} + +static void +Opcode_ret_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xf00d; +} + +static void +Opcode_s32i_n_Slot_inst16a_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x9; +} + +static void +Opcode_rur_threadptr_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xe30e70; +} + +static void +Opcode_wur_threadptr_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xf3e700; +} + +static void +Opcode_addi_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc002; +} + +static void +Opcode_addi_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x60000; +} + +static void +Opcode_addi_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200c00; +} + +static void +Opcode_addmi_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd002; +} + +static void +Opcode_addmi_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x70000; +} + +static void +Opcode_addmi_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200d00; +} + +static void +Opcode_add_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x800000; +} + +static void +Opcode_add_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x92000; +} + +static void +Opcode_add_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2000; +} + +static void +Opcode_add_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x80000; +} + +static void +Opcode_sub_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc00000; +} + +static void +Opcode_sub_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa8000; +} + +static void +Opcode_sub_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa000; +} + +static void +Opcode_sub_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc0000; +} + +static void +Opcode_addx2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x900000; +} + +static void +Opcode_addx2_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x94000; +} + +static void +Opcode_addx2_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x4000; +} + +static void +Opcode_addx2_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x90000; +} + +static void +Opcode_addx4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa00000; +} + +static void +Opcode_addx4_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x98000; +} + +static void +Opcode_addx4_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x5000; +} + +static void +Opcode_addx4_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa0000; +} + +static void +Opcode_addx8_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb00000; +} + +static void +Opcode_addx8_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x93000; +} + +static void +Opcode_addx8_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb0000; +} + +static void +Opcode_subx2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd00000; +} + +static void +Opcode_subx2_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd0000; +} + +static void +Opcode_subx4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xe00000; +} + +static void +Opcode_subx4_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xe0000; +} + +static void +Opcode_subx8_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xf00000; +} + +static void +Opcode_subx8_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xf0000; +} + +static void +Opcode_and_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x100000; +} + +static void +Opcode_and_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x95000; +} + +static void +Opcode_and_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6000; +} + +static void +Opcode_and_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x10000; +} + +static void +Opcode_or_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200000; +} + +static void +Opcode_or_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x9e000; +} + +static void +Opcode_or_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x7000; +} + +static void +Opcode_or_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x20000; +} + +static void +Opcode_xor_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x300000; +} + +static void +Opcode_xor_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb0000; +} + +static void +Opcode_xor_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb000; +} + +static void +Opcode_xor_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x30000; +} + +static void +Opcode_beqi_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x26; +} + +static void +Opcode_bnei_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x66; +} + +static void +Opcode_bgei_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xe6; +} + +static void +Opcode_blti_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa6; +} + +static void +Opcode_bbci_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6007; +} + +static void +Opcode_bbsi_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xe007; +} + +static void +Opcode_bgeui_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xf6; +} + +static void +Opcode_bltui_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb6; +} + +static void +Opcode_beq_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x1007; +} + +static void +Opcode_bne_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x9007; +} + +static void +Opcode_bge_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa007; +} + +static void +Opcode_blt_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2007; +} + +static void +Opcode_bgeu_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb007; +} + +static void +Opcode_bltu_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3007; +} + +static void +Opcode_bany_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x8007; +} + +static void +Opcode_bnone_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x7; +} + +static void +Opcode_ball_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x4007; +} + +static void +Opcode_bnall_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc007; +} + +static void +Opcode_bbc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x5007; +} + +static void +Opcode_bbs_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd007; +} + +static void +Opcode_beqz_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x16; +} + +static void +Opcode_bnez_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x56; +} + +static void +Opcode_bgez_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd6; +} + +static void +Opcode_bltz_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x96; +} + +static void +Opcode_call0_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x5; +} + +static void +Opcode_callx0_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc0; +} + +static void +Opcode_extui_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x40000; +} + +static void +Opcode_extui_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x40000; +} + +static void +Opcode_extui_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x4000; +} + +static void +Opcode_ill_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0; +} + +static void +Opcode_j_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6; +} + +static void +Opcode_j_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc0000; +} + +static void +Opcode_jx_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa0; +} + +static void +Opcode_jx_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa3010; +} + +static void +Opcode_l16ui_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x1002; +} + +static void +Opcode_l16ui_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200100; +} + +static void +Opcode_l16si_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x9002; +} + +static void +Opcode_l16si_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200900; +} + +static void +Opcode_l32i_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2002; +} + +static void +Opcode_l32i_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200200; +} + +static void +Opcode_l32r_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x1; +} + +static void +Opcode_l32r_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x100000; +} + +static void +Opcode_l8ui_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2; +} + +static void +Opcode_l8ui_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200000; +} + +static void +Opcode_loop_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x8076; +} + +static void +Opcode_loopnez_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x9076; +} + +static void +Opcode_loopgtz_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa076; +} + +static void +Opcode_movi_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa002; +} + +static void +Opcode_movi_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x80000; +} + +static void +Opcode_movi_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200a00; +} + +static void +Opcode_moveqz_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x830000; +} + +static void +Opcode_moveqz_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x96000; +} + +static void +Opcode_moveqz_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x83000; +} + +static void +Opcode_movnez_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x930000; +} + +static void +Opcode_movnez_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x9a000; +} + +static void +Opcode_movnez_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x93000; +} + +static void +Opcode_movltz_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa30000; +} + +static void +Opcode_movltz_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x99000; +} + +static void +Opcode_movltz_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa3000; +} + +static void +Opcode_movgez_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb30000; +} + +static void +Opcode_movgez_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x97000; +} + +static void +Opcode_movgez_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb3000; +} + +static void +Opcode_neg_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x600000; +} + +static void +Opcode_neg_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa5000; +} + +static void +Opcode_neg_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd100; +} + +static void +Opcode_neg_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x60000; +} + +static void +Opcode_abs_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x600100; +} + +static void +Opcode_abs_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd000; +} + +static void +Opcode_abs_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x60010; +} + +static void +Opcode_nop_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x20f0; +} + +static void +Opcode_nop_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa3040; +} + +static void +Opcode_nop_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc090; +} + +static void +Opcode_nop_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc8000000; + slotbuf[1] = 0; +} + +static void +Opcode_nop_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x20f; +} + +static void +Opcode_ret_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x80; +} + +static void +Opcode_s16i_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x5002; +} + +static void +Opcode_s16i_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200500; +} + +static void +Opcode_s32i_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6002; +} + +static void +Opcode_s32i_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200600; +} + +static void +Opcode_s8i_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x4002; +} + +static void +Opcode_s8i_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x200400; +} + +static void +Opcode_ssr_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x400000; +} + +static void +Opcode_ssr_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x40000; +} + +static void +Opcode_ssl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x401000; +} + +static void +Opcode_ssl_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa3020; +} + +static void +Opcode_ssl_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x40100; +} + +static void +Opcode_ssa8l_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x402000; +} + +static void +Opcode_ssa8l_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x40200; +} + +static void +Opcode_ssa8b_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x403000; +} + +static void +Opcode_ssa8b_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x40300; +} + +static void +Opcode_ssai_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x404000; +} + +static void +Opcode_ssai_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x40400; +} + +static void +Opcode_sll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa10000; +} + +static void +Opcode_sll_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa6000; +} + +static void +Opcode_sll_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa1000; +} + +static void +Opcode_src_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x810000; +} + +static void +Opcode_src_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa2000; +} + +static void +Opcode_src_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x81000; +} + +static void +Opcode_srl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x910000; +} + +static void +Opcode_srl_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa5200; +} + +static void +Opcode_srl_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd400; +} + +static void +Opcode_srl_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x91000; +} + +static void +Opcode_sra_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb10000; +} + +static void +Opcode_sra_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa5100; +} + +static void +Opcode_sra_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd200; +} + +static void +Opcode_sra_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb1000; +} + +static void +Opcode_slli_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x10000; +} + +static void +Opcode_slli_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x90000; +} + +static void +Opcode_slli_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x1000; +} + +static void +Opcode_srai_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x210000; +} + +static void +Opcode_srai_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa0000; +} + +static void +Opcode_srai_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xe000; +} + +static void +Opcode_srai_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x21000; +} + +static void +Opcode_srli_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x410000; +} + +static void +Opcode_srli_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa4000; +} + +static void +Opcode_srli_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x9000; +} + +static void +Opcode_srli_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x41000; +} + +static void +Opcode_memw_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x20c0; +} + +static void +Opcode_extw_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x20d0; +} + +static void +Opcode_isync_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2000; +} + +static void +Opcode_rsync_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2010; +} + +static void +Opcode_esync_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2020; +} + +static void +Opcode_dsync_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2030; +} + +static void +Opcode_rsil_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6000; +} + +static void +Opcode_rsr_lend_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x30100; +} + +static void +Opcode_wsr_lend_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x130100; +} + +static void +Opcode_xsr_lend_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x610100; +} + +static void +Opcode_rsr_lcount_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x30200; +} + +static void +Opcode_wsr_lcount_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x130200; +} + +static void +Opcode_xsr_lcount_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x610200; +} + +static void +Opcode_rsr_lbeg_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x30000; +} + +static void +Opcode_wsr_lbeg_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x130000; +} + +static void +Opcode_xsr_lbeg_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x610000; +} + +static void +Opcode_rsr_sar_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x30300; +} + +static void +Opcode_wsr_sar_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x130300; +} + +static void +Opcode_xsr_sar_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x610300; +} + +static void +Opcode_rsr_litbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x30500; +} + +static void +Opcode_wsr_litbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x130500; +} + +static void +Opcode_xsr_litbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x610500; +} + +static void +Opcode_rsr_176_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3b000; +} + +static void +Opcode_rsr_208_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3d000; +} + +static void +Opcode_rsr_ps_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3e600; +} + +static void +Opcode_wsr_ps_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13e600; +} + +static void +Opcode_xsr_ps_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61e600; +} + +static void +Opcode_rsr_epc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3b100; +} + +static void +Opcode_wsr_epc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13b100; +} + +static void +Opcode_xsr_epc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61b100; +} + +static void +Opcode_rsr_excsave1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3d100; +} + +static void +Opcode_wsr_excsave1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13d100; +} + +static void +Opcode_xsr_excsave1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61d100; +} + +static void +Opcode_rsr_epc2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3b200; +} + +static void +Opcode_wsr_epc2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13b200; +} + +static void +Opcode_xsr_epc2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61b200; +} + +static void +Opcode_rsr_excsave2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3d200; +} + +static void +Opcode_wsr_excsave2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13d200; +} + +static void +Opcode_xsr_excsave2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61d200; +} + +static void +Opcode_rsr_epc3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3b300; +} + +static void +Opcode_wsr_epc3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13b300; +} + +static void +Opcode_xsr_epc3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61b300; +} + +static void +Opcode_rsr_excsave3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3d300; +} + +static void +Opcode_wsr_excsave3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13d300; +} + +static void +Opcode_xsr_excsave3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61d300; +} + +static void +Opcode_rsr_epc4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3b400; +} + +static void +Opcode_wsr_epc4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13b400; +} + +static void +Opcode_xsr_epc4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61b400; +} + +static void +Opcode_rsr_excsave4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3d400; +} + +static void +Opcode_wsr_excsave4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13d400; +} + +static void +Opcode_xsr_excsave4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61d400; +} + +static void +Opcode_rsr_epc5_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3b500; +} + +static void +Opcode_wsr_epc5_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13b500; +} + +static void +Opcode_xsr_epc5_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61b500; +} + +static void +Opcode_rsr_excsave5_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3d500; +} + +static void +Opcode_wsr_excsave5_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13d500; +} + +static void +Opcode_xsr_excsave5_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61d500; +} + +static void +Opcode_rsr_epc6_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3b600; +} + +static void +Opcode_wsr_epc6_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13b600; +} + +static void +Opcode_xsr_epc6_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61b600; +} + +static void +Opcode_rsr_excsave6_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3d600; +} + +static void +Opcode_wsr_excsave6_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13d600; +} + +static void +Opcode_xsr_excsave6_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61d600; +} + +static void +Opcode_rsr_epc7_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3b700; +} + +static void +Opcode_wsr_epc7_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13b700; +} + +static void +Opcode_xsr_epc7_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61b700; +} + +static void +Opcode_rsr_excsave7_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3d700; +} + +static void +Opcode_wsr_excsave7_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13d700; +} + +static void +Opcode_xsr_excsave7_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61d700; +} + +static void +Opcode_rsr_eps2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3c200; +} + +static void +Opcode_wsr_eps2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13c200; +} + +static void +Opcode_xsr_eps2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61c200; +} + +static void +Opcode_rsr_eps3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3c300; +} + +static void +Opcode_wsr_eps3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13c300; +} + +static void +Opcode_xsr_eps3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61c300; +} + +static void +Opcode_rsr_eps4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3c400; +} + +static void +Opcode_wsr_eps4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13c400; +} + +static void +Opcode_xsr_eps4_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61c400; +} + +static void +Opcode_rsr_eps5_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3c500; +} + +static void +Opcode_wsr_eps5_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13c500; +} + +static void +Opcode_xsr_eps5_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61c500; +} + +static void +Opcode_rsr_eps6_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3c600; +} + +static void +Opcode_wsr_eps6_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13c600; +} + +static void +Opcode_xsr_eps6_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61c600; +} + +static void +Opcode_rsr_eps7_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3c700; +} + +static void +Opcode_wsr_eps7_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13c700; +} + +static void +Opcode_xsr_eps7_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61c700; +} + +static void +Opcode_rsr_excvaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3ee00; +} + +static void +Opcode_wsr_excvaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13ee00; +} + +static void +Opcode_xsr_excvaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61ee00; +} + +static void +Opcode_rsr_depc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3c000; +} + +static void +Opcode_wsr_depc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13c000; +} + +static void +Opcode_xsr_depc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61c000; +} + +static void +Opcode_rsr_exccause_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3e800; +} + +static void +Opcode_wsr_exccause_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13e800; +} + +static void +Opcode_xsr_exccause_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61e800; +} + +static void +Opcode_rsr_misc0_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3f400; +} + +static void +Opcode_wsr_misc0_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13f400; +} + +static void +Opcode_xsr_misc0_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61f400; +} + +static void +Opcode_rsr_misc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3f500; +} + +static void +Opcode_wsr_misc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13f500; +} + +static void +Opcode_xsr_misc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61f500; +} + +static void +Opcode_rsr_misc2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3f600; +} + +static void +Opcode_wsr_misc2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13f600; +} + +static void +Opcode_xsr_misc2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61f600; +} + +static void +Opcode_rsr_misc3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3f700; +} + +static void +Opcode_wsr_misc3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13f700; +} + +static void +Opcode_xsr_misc3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61f700; +} + +static void +Opcode_rsr_prid_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3eb00; +} + +static void +Opcode_rsr_vecbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3e700; +} + +static void +Opcode_wsr_vecbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13e700; +} + +static void +Opcode_xsr_vecbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61e700; +} + +static void +Opcode_mul_aa_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x740004; +} + +static void +Opcode_mul_aa_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x750004; +} + +static void +Opcode_mul_aa_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x760004; +} + +static void +Opcode_mul_aa_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x770004; +} + +static void +Opcode_umul_aa_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x700004; +} + +static void +Opcode_umul_aa_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x710004; +} + +static void +Opcode_umul_aa_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x720004; +} + +static void +Opcode_umul_aa_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x730004; +} + +static void +Opcode_mul_ad_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x340004; +} + +static void +Opcode_mul_ad_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x350004; +} + +static void +Opcode_mul_ad_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x360004; +} + +static void +Opcode_mul_ad_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x370004; +} + +static void +Opcode_mul_da_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x640004; +} + +static void +Opcode_mul_da_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x650004; +} + +static void +Opcode_mul_da_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x660004; +} + +static void +Opcode_mul_da_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x670004; +} + +static void +Opcode_mul_dd_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x240004; +} + +static void +Opcode_mul_dd_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x250004; +} + +static void +Opcode_mul_dd_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x260004; +} + +static void +Opcode_mul_dd_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x270004; +} + +static void +Opcode_mula_aa_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x780004; +} + +static void +Opcode_mula_aa_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x790004; +} + +static void +Opcode_mula_aa_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x7a0004; +} + +static void +Opcode_mula_aa_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x7b0004; +} + +static void +Opcode_muls_aa_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x7c0004; +} + +static void +Opcode_muls_aa_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x7d0004; +} + +static void +Opcode_muls_aa_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x7e0004; +} + +static void +Opcode_muls_aa_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x7f0004; +} + +static void +Opcode_mula_ad_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x380004; +} + +static void +Opcode_mula_ad_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x390004; +} + +static void +Opcode_mula_ad_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3a0004; +} + +static void +Opcode_mula_ad_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3b0004; +} + +static void +Opcode_muls_ad_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3c0004; +} + +static void +Opcode_muls_ad_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3d0004; +} + +static void +Opcode_muls_ad_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3e0004; +} + +static void +Opcode_muls_ad_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3f0004; +} + +static void +Opcode_mula_da_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x680004; +} + +static void +Opcode_mula_da_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x690004; +} + +static void +Opcode_mula_da_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6a0004; +} + +static void +Opcode_mula_da_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6b0004; +} + +static void +Opcode_muls_da_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6c0004; +} + +static void +Opcode_muls_da_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6d0004; +} - -/* Opcode encodings. */ +static void +Opcode_muls_da_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6e0004; +} + +static void +Opcode_muls_da_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x6f0004; +} + +static void +Opcode_mula_dd_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x280004; +} + +static void +Opcode_mula_dd_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x290004; +} + +static void +Opcode_mula_dd_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2a0004; +} + +static void +Opcode_mula_dd_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2b0004; +} + +static void +Opcode_muls_dd_ll_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2c0004; +} + +static void +Opcode_muls_dd_hl_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2d0004; +} + +static void +Opcode_muls_dd_lh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2e0004; +} + +static void +Opcode_muls_dd_hh_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x2f0004; +} + +static void +Opcode_mula_da_ll_lddec_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x580004; +} + +static void +Opcode_mula_da_ll_ldinc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x480004; +} + +static void +Opcode_mula_da_hl_lddec_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x590004; +} + +static void +Opcode_mula_da_hl_ldinc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x490004; +} + +static void +Opcode_mula_da_lh_lddec_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x5a0004; +} + +static void +Opcode_mula_da_lh_ldinc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x4a0004; +} + +static void +Opcode_mula_da_hh_lddec_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x5b0004; +} + +static void +Opcode_mula_da_hh_ldinc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x4b0004; +} + +static void +Opcode_mula_dd_ll_lddec_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x180004; +} + +static void +Opcode_mula_dd_ll_ldinc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x80004; +} + +static void +Opcode_mula_dd_hl_lddec_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x190004; +} + +static void +Opcode_mula_dd_hl_ldinc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x90004; +} + +static void +Opcode_mula_dd_lh_lddec_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x1a0004; +} + +static void +Opcode_mula_dd_lh_ldinc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xa0004; +} + +static void +Opcode_mula_dd_hh_lddec_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x1b0004; +} + +static void +Opcode_mula_dd_hh_ldinc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xb0004; +} + +static void +Opcode_lddec_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x900004; +} + +static void +Opcode_ldinc_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x800004; +} + +static void +Opcode_mul16u_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc10000; +} + +static void +Opcode_mul16u_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x9b000; +} + +static void +Opcode_mul16u_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xc1000; +} + +static void +Opcode_mul16s_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd10000; +} + +static void +Opcode_mul16s_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x9c000; +} + +static void +Opcode_mul16s_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0xd1000; +} + +static void +Opcode_rsr_m0_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x32000; +} + +static void +Opcode_wsr_m0_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x132000; +} + +static void +Opcode_xsr_m0_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x612000; +} + +static void +Opcode_rsr_m1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x32100; +} + +static void +Opcode_wsr_m1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x132100; +} + +static void +Opcode_xsr_m1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x612100; +} + +static void +Opcode_rsr_m2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x32200; +} + +static void +Opcode_wsr_m2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x132200; +} + +static void +Opcode_xsr_m2_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x612200; +} + +static void +Opcode_rsr_m3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x32300; +} + +static void +Opcode_wsr_m3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x132300; +} + +static void +Opcode_xsr_m3_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x612300; +} + +static void +Opcode_rsr_acclo_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x31000; +} + +static void +Opcode_wsr_acclo_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x131000; +} + +static void +Opcode_xsr_acclo_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x611000; +} + +static void +Opcode_rsr_acchi_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x31100; +} + +static void +Opcode_wsr_acchi_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x131100; +} + +static void +Opcode_xsr_acchi_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x611100; +} + +static void +Opcode_rfi_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3010; +} + +static void +Opcode_waiti_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x7000; +} + +static void +Opcode_rsr_interrupt_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3e200; +} + +static void +Opcode_wsr_intset_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13e200; +} + +static void +Opcode_wsr_intclear_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13e300; +} + +static void +Opcode_rsr_intenable_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x3e400; +} + +static void +Opcode_wsr_intenable_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x13e400; +} + +static void +Opcode_xsr_intenable_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x61e400; +} static void -Opcode_excw_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_break_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x80200; + slotbuf[0] = 0x4000; } static void -Opcode_rfe_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_break_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x300; + slotbuf[0] = 0xf02d; } static void -Opcode_rfde_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_dbreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x2300; + slotbuf[0] = 0x39000; } static void -Opcode_syscall_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_dbreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x500; + slotbuf[0] = 0x139000; } static void -Opcode_simcall_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_dbreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x1500; + slotbuf[0] = 0x619000; } static void -Opcode_call12_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_dbreakc0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x5c0000; + slotbuf[0] = 0x3a000; } static void -Opcode_call8_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_dbreakc0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x580000; + slotbuf[0] = 0x13a000; } static void -Opcode_call4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_dbreakc0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x540000; + slotbuf[0] = 0x61a000; } static void -Opcode_callx12_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_dbreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xf0000; + slotbuf[0] = 0x39100; } static void -Opcode_callx8_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_dbreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb0000; + slotbuf[0] = 0x139100; } static void -Opcode_callx4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_dbreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x70000; + slotbuf[0] = 0x619100; } static void -Opcode_entry_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_dbreakc1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x6c0000; + slotbuf[0] = 0x3a100; } static void -Opcode_movsp_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_dbreakc1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x100; + slotbuf[0] = 0x13a100; } static void -Opcode_rotw_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_dbreakc1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x804; + slotbuf[0] = 0x61a100; } static void -Opcode_retw_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_ibreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x60000; + slotbuf[0] = 0x38000; } static void -Opcode_retw_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_ibreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd10f; + slotbuf[0] = 0x138000; } static void -Opcode_rfwo_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_ibreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x4300; + slotbuf[0] = 0x618000; } static void -Opcode_rfwu_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_ibreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x5300; + slotbuf[0] = 0x38100; } static void -Opcode_l32e_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_ibreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x90; + slotbuf[0] = 0x138100; } static void -Opcode_s32e_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_ibreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x94; + slotbuf[0] = 0x618100; } static void -Opcode_rsr_windowbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_ibreakenable_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x4830; + slotbuf[0] = 0x36000; } static void -Opcode_wsr_windowbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_ibreakenable_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x4831; + slotbuf[0] = 0x136000; } static void -Opcode_xsr_windowbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_ibreakenable_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x4816; + slotbuf[0] = 0x616000; } static void -Opcode_rsr_windowstart_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_debugcause_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x4930; + slotbuf[0] = 0x3e900; } static void -Opcode_wsr_windowstart_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_debugcause_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x4931; + slotbuf[0] = 0x13e900; } static void -Opcode_xsr_windowstart_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_debugcause_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x4916; + slotbuf[0] = 0x61e900; } static void -Opcode_add_n_Slot_inst16a_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_icount_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xa000; + slotbuf[0] = 0x3ec00; } static void -Opcode_addi_n_Slot_inst16a_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_icount_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb000; + slotbuf[0] = 0x13ec00; } static void -Opcode_beqz_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_icount_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc800; + slotbuf[0] = 0x61ec00; } static void -Opcode_bnez_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_icountlevel_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xcc00; + slotbuf[0] = 0x3ed00; } static void -Opcode_ill_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_icountlevel_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd60f; + slotbuf[0] = 0x13ed00; } static void -Opcode_l32i_n_Slot_inst16a_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_icountlevel_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x8000; + slotbuf[0] = 0x61ed00; } static void -Opcode_mov_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_ddr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd000; + slotbuf[0] = 0x36800; } static void -Opcode_movi_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_ddr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc000; + slotbuf[0] = 0x136800; } static void -Opcode_nop_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_ddr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd30f; + slotbuf[0] = 0x616800; } static void -Opcode_ret_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) +Opcode_rfdo_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd00f; + slotbuf[0] = 0xf1e000; } static void -Opcode_s32i_n_Slot_inst16a_encode (xtensa_insnbuf slotbuf) +Opcode_rfdd_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x9000; + slotbuf[0] = 0xf1e010; } static void -Opcode_rur_threadptr_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_mmid_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x7e03e; + slotbuf[0] = 0x135900; } static void -Opcode_wur_threadptr_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_andb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xe73f; + slotbuf[0] = 0x20000; } static void -Opcode_addi_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_andbc_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200c00; + slotbuf[0] = 0x120000; } static void -Opcode_addmi_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_orb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200d00; + slotbuf[0] = 0x220000; } static void -Opcode_add_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_orbc_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x8; + slotbuf[0] = 0x320000; } static void -Opcode_sub_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xorb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc; + slotbuf[0] = 0x420000; } static void -Opcode_addx2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_any4_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x9; + slotbuf[0] = 0x8000; } static void -Opcode_addx4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_all4_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xa; + slotbuf[0] = 0x9000; } static void -Opcode_addx8_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_any8_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb; + slotbuf[0] = 0xa000; } static void -Opcode_subx2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_all8_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd; + slotbuf[0] = 0xb000; } static void -Opcode_subx4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bf_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xe; + slotbuf[0] = 0x76; } static void -Opcode_subx8_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bt_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xf; + slotbuf[0] = 0x1076; } static void -Opcode_and_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_movf_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x1; + slotbuf[0] = 0xc30000; } static void -Opcode_or_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_movt_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x2; + slotbuf[0] = 0xd30000; } static void -Opcode_xor_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_br_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x3; + slotbuf[0] = 0x30400; } static void -Opcode_beqi_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_br_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x680000; + slotbuf[0] = 0x130400; } static void -Opcode_bnei_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_br_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x690000; + slotbuf[0] = 0x610400; } static void -Opcode_bgei_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_ccount_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x6b0000; + slotbuf[0] = 0x3ea00; } static void -Opcode_blti_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_ccount_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x6a0000; + slotbuf[0] = 0x13ea00; } static void -Opcode_bbci_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_ccount_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700600; + slotbuf[0] = 0x61ea00; } static void -Opcode_bbsi_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_ccompare0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700e00; + slotbuf[0] = 0x3f000; } static void -Opcode_bgeui_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_ccompare0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x6f0000; + slotbuf[0] = 0x13f000; } static void -Opcode_bltui_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_ccompare0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x6e0000; + slotbuf[0] = 0x61f000; } static void -Opcode_beq_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_ccompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700100; + slotbuf[0] = 0x3f100; } static void -Opcode_bne_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_ccompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700900; + slotbuf[0] = 0x13f100; } static void -Opcode_bge_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_ccompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700a00; + slotbuf[0] = 0x61f100; } static void -Opcode_blt_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_ccompare2_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700200; + slotbuf[0] = 0x3f200; } static void -Opcode_bgeu_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_ccompare2_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700b00; + slotbuf[0] = 0x13f200; } static void -Opcode_bltu_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_ccompare2_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700300; + slotbuf[0] = 0x61f200; } static void -Opcode_bany_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ipf_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700800; + slotbuf[0] = 0x70c2; } static void -Opcode_bnone_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ihi_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700000; + slotbuf[0] = 0x70e2; } static void -Opcode_ball_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ipfl_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700400; + slotbuf[0] = 0x70d2; } static void -Opcode_bnall_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ihu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700c00; + slotbuf[0] = 0x270d2; } static void -Opcode_bbc_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_iiu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700500; + slotbuf[0] = 0x370d2; } static void -Opcode_bbs_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_iii_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x700d00; + slotbuf[0] = 0x70f2; } static void -Opcode_beqz_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_lict_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x640000; + slotbuf[0] = 0xf10000; } static void -Opcode_bnez_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_licw_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x650000; + slotbuf[0] = 0xf12000; } static void -Opcode_bgez_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_sict_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x670000; + slotbuf[0] = 0xf11000; } static void -Opcode_bltz_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_sicw_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x660000; + slotbuf[0] = 0xf13000; } static void -Opcode_call0_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_dhwb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x500000; + slotbuf[0] = 0x7042; } static void -Opcode_callx0_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_dhwbi_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x30000; + slotbuf[0] = 0x7052; } static void -Opcode_extui_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_diwb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x40; + slotbuf[0] = 0x47082; } static void -Opcode_ill_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_diwbi_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0; + slotbuf[0] = 0x57082; } static void -Opcode_j_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_dhi_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x600000; + slotbuf[0] = 0x7062; } static void -Opcode_jx_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_dii_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xa0000; + slotbuf[0] = 0x7072; } static void -Opcode_l16ui_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_dpfr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200100; + slotbuf[0] = 0x7002; } static void -Opcode_l16si_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_dpfw_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200900; + slotbuf[0] = 0x7012; } static void -Opcode_l32i_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_dpfro_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200200; + slotbuf[0] = 0x7022; } static void -Opcode_l32r_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_dpfwo_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x100000; + slotbuf[0] = 0x7032; } static void -Opcode_l8ui_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_dpfl_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200000; + slotbuf[0] = 0x7082; } static void -Opcode_loop_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_dhu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x6d0800; + slotbuf[0] = 0x27082; } static void -Opcode_loopnez_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_diu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x6d0900; + slotbuf[0] = 0x37082; } static void -Opcode_loopgtz_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_sdct_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x6d0a00; + slotbuf[0] = 0xf19000; } static void -Opcode_movi_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ldct_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200a00; + slotbuf[0] = 0xf18000; } static void -Opcode_moveqz_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_ptevaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x38; + slotbuf[0] = 0x135300; } static void -Opcode_movnez_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_ptevaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x39; + slotbuf[0] = 0x35300; } static void -Opcode_movltz_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_ptevaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x3a; + slotbuf[0] = 0x615300; } static void -Opcode_movgez_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_rasid_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x3b; + slotbuf[0] = 0x35a00; } static void -Opcode_neg_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_rasid_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x6; + slotbuf[0] = 0x135a00; } static void -Opcode_abs_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_rasid_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x1006; + slotbuf[0] = 0x615a00; } static void -Opcode_nop_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_itlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xf0200; + slotbuf[0] = 0x35b00; } static void -Opcode_ret_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_itlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x20000; + slotbuf[0] = 0x135b00; } static void -Opcode_s16i_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_itlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200500; + slotbuf[0] = 0x615b00; } static void -Opcode_s32i_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_dtlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200600; + slotbuf[0] = 0x35c00; } static void -Opcode_s8i_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_dtlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200400; + slotbuf[0] = 0x135c00; } static void -Opcode_ssr_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_dtlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x4; + slotbuf[0] = 0x615c00; } static void -Opcode_ssl_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_idtlb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x104; + slotbuf[0] = 0x50c000; } static void -Opcode_ssa8l_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_pdtlb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x204; + slotbuf[0] = 0x50d000; } static void -Opcode_ssa8b_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rdtlb0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x304; + slotbuf[0] = 0x50b000; } static void -Opcode_ssai_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rdtlb1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x404; + slotbuf[0] = 0x50f000; } static void -Opcode_sll_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wdtlb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x1a; + slotbuf[0] = 0x50e000; } static void -Opcode_src_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_iitlb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x18; + slotbuf[0] = 0x504000; } static void -Opcode_srl_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_pitlb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x19; + slotbuf[0] = 0x505000; } static void -Opcode_sra_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ritlb0_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x1b; + slotbuf[0] = 0x503000; } static void -Opcode_slli_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ritlb1_Slot_inst_encode (xtensa_insnbuf slotbuf) +{ + slotbuf[0] = 0x507000; +} + +static void +Opcode_witlb_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x10; + slotbuf[0] = 0x506000; } static void -Opcode_srai_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ldpte_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x12; + slotbuf[0] = 0xf1f000; } static void -Opcode_srli_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_hwwitlba_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x14; + slotbuf[0] = 0x501000; } static void -Opcode_memw_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_hwwdtlba_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc0200; + slotbuf[0] = 0x509000; } static void -Opcode_extw_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_cpenable_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd0200; + slotbuf[0] = 0x3e000; } static void -Opcode_isync_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_cpenable_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x200; + slotbuf[0] = 0x13e000; } static void -Opcode_rsync_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_cpenable_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x10200; + slotbuf[0] = 0x61e000; } static void -Opcode_esync_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_clamps_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x20200; + slotbuf[0] = 0x330000; } static void -Opcode_dsync_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_clamps_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x30200; + slotbuf[0] = 0x33000; } static void -Opcode_rsil_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_min_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x600; + slotbuf[0] = 0x430000; } static void -Opcode_rsr_lend_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_min_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x130; + slotbuf[0] = 0x43000; } static void -Opcode_wsr_lend_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_max_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x131; + slotbuf[0] = 0x530000; } static void -Opcode_xsr_lend_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_max_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x116; + slotbuf[0] = 0x53000; } static void -Opcode_rsr_lcount_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_minu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x230; + slotbuf[0] = 0x630000; } static void -Opcode_wsr_lcount_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_minu_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x231; + slotbuf[0] = 0x63000; } static void -Opcode_xsr_lcount_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_maxu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x216; + slotbuf[0] = 0x730000; } static void -Opcode_rsr_lbeg_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_maxu_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x30; + slotbuf[0] = 0x73000; } static void -Opcode_wsr_lbeg_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_nsa_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x31; + slotbuf[0] = 0x40e000; } static void -Opcode_xsr_lbeg_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_nsa_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x16; + slotbuf[0] = 0x40e00; } static void -Opcode_rsr_sar_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_nsau_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x330; + slotbuf[0] = 0x40f000; } static void -Opcode_wsr_sar_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_nsau_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x331; + slotbuf[0] = 0x40f00; } static void -Opcode_xsr_sar_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_sext_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x316; + slotbuf[0] = 0x230000; } static void -Opcode_rsr_litbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_sext_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x530; + slotbuf[0] = 0x9f000; } static void -Opcode_wsr_litbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_sext_Slot_xt_flix64_slot2_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x531; + slotbuf[0] = 0x8000; } static void -Opcode_xsr_litbase_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_sext_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0x516; + slotbuf[0] = 0x23000; } static void -Opcode_rsr_176_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_l32ai_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb030; + slotbuf[0] = 0xb002; } static void -Opcode_wsr_176_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_s32ri_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb031; + slotbuf[0] = 0xf002; } static void -Opcode_rsr_208_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_s32c1i_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd030; + slotbuf[0] = 0xe002; } static void -Opcode_rsr_ps_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rsr_scompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xe630; + slotbuf[0] = 0x30c00; } static void -Opcode_wsr_ps_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wsr_scompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xe631; + slotbuf[0] = 0x130c00; } static void -Opcode_xsr_ps_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_xsr_scompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xe616; + slotbuf[0] = 0x610c00; } static void -Opcode_rsr_epc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_quou_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb130; + slotbuf[0] = 0xc20000; } static void -Opcode_wsr_epc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_quos_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb131; + slotbuf[0] = 0xd20000; } static void -Opcode_xsr_epc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_remu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb116; + slotbuf[0] = 0xe20000; } static void -Opcode_rsr_excsave1_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rems_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd130; + slotbuf[0] = 0xf20000; } static void -Opcode_wsr_excsave1_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_mull_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd131; + slotbuf[0] = 0x820000; } static void -Opcode_xsr_excsave1_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_mull_Slot_xt_flix64_slot1_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd116; + slotbuf[0] = 0x9d000; } static void -Opcode_rsr_epc2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_mull_Slot_xt_flix64_slot0_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb230; + slotbuf[0] = 0x82000; } static void -Opcode_wsr_epc2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_muluh_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb231; + slotbuf[0] = 0xa20000; } static void -Opcode_xsr_epc2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_mulsh_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb216; + slotbuf[0] = 0xb20000; } static void -Opcode_rsr_excsave2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rur_fcr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd230; + slotbuf[0] = 0xe30e80; } static void -Opcode_wsr_excsave2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wur_fcr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd231; + slotbuf[0] = 0xf3e800; } static void -Opcode_xsr_excsave2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rur_fsr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd216; + slotbuf[0] = 0xe30e90; } static void -Opcode_rsr_epc3_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wur_fsr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb330; + slotbuf[0] = 0xf3e900; } static void -Opcode_wsr_epc3_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_add_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb331; + slotbuf[0] = 0xa0000; } static void -Opcode_xsr_epc3_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_sub_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb316; + slotbuf[0] = 0x1a0000; } static void -Opcode_rsr_excsave3_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_mul_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd330; + slotbuf[0] = 0x2a0000; } static void -Opcode_wsr_excsave3_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_madd_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd331; + slotbuf[0] = 0x4a0000; } static void -Opcode_xsr_excsave3_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_msub_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd316; + slotbuf[0] = 0x5a0000; } static void -Opcode_rsr_epc4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_movf_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb430; + slotbuf[0] = 0xcb0000; } static void -Opcode_wsr_epc4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_movt_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb431; + slotbuf[0] = 0xdb0000; } static void -Opcode_xsr_epc4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_moveqz_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb416; + slotbuf[0] = 0x8b0000; } static void -Opcode_rsr_excsave4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_movnez_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd430; + slotbuf[0] = 0x9b0000; } static void -Opcode_wsr_excsave4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_movltz_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd431; + slotbuf[0] = 0xab0000; } static void -Opcode_xsr_excsave4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_movgez_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd416; + slotbuf[0] = 0xbb0000; } static void -Opcode_rsr_epc5_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_abs_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb530; + slotbuf[0] = 0xfa0010; } static void -Opcode_wsr_epc5_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_mov_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb531; + slotbuf[0] = 0xfa0000; } static void -Opcode_xsr_epc5_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_neg_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb516; + slotbuf[0] = 0xfa0060; } static void -Opcode_rsr_excsave5_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_un_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd530; + slotbuf[0] = 0x1b0000; } static void -Opcode_wsr_excsave5_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_oeq_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd531; + slotbuf[0] = 0x2b0000; } static void -Opcode_xsr_excsave5_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ueq_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd516; + slotbuf[0] = 0x3b0000; } static void -Opcode_rsr_epc6_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_olt_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb630; + slotbuf[0] = 0x4b0000; } static void -Opcode_wsr_epc6_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ult_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb631; + slotbuf[0] = 0x5b0000; } static void -Opcode_xsr_epc6_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ole_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb616; + slotbuf[0] = 0x6b0000; } static void -Opcode_rsr_excsave6_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ule_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd630; + slotbuf[0] = 0x7b0000; } static void -Opcode_wsr_excsave6_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_float_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd631; + slotbuf[0] = 0xca0000; } static void -Opcode_xsr_excsave6_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ufloat_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd616; + slotbuf[0] = 0xda0000; } static void -Opcode_rsr_epc7_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_round_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb730; + slotbuf[0] = 0x8a0000; } static void -Opcode_wsr_epc7_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ceil_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb731; + slotbuf[0] = 0xba0000; } static void -Opcode_xsr_epc7_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_floor_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xb716; + slotbuf[0] = 0xaa0000; } static void -Opcode_rsr_excsave7_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_trunc_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd730; + slotbuf[0] = 0x9a0000; } static void -Opcode_wsr_excsave7_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_utrunc_s_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd731; + slotbuf[0] = 0xea0000; } static void -Opcode_xsr_excsave7_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_rfr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xd716; + slotbuf[0] = 0xfa0040; } static void -Opcode_rsr_eps2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_wfr_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc230; + slotbuf[0] = 0xfa0050; } static void -Opcode_wsr_eps2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_lsi_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc231; + slotbuf[0] = 0x3; } static void -Opcode_xsr_eps2_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_lsiu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc216; + slotbuf[0] = 0x8003; } static void -Opcode_rsr_eps3_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_lsx_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc330; + slotbuf[0] = 0x80000; } static void -Opcode_wsr_eps3_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_lsxu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc331; + slotbuf[0] = 0x180000; } static void -Opcode_xsr_eps3_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ssi_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc316; + slotbuf[0] = 0x4003; } static void -Opcode_rsr_eps4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ssiu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc430; + slotbuf[0] = 0xc003; } static void -Opcode_wsr_eps4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ssx_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc431; + slotbuf[0] = 0x480000; } static void -Opcode_xsr_eps4_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ssxu_Slot_inst_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc416; + slotbuf[0] = 0x580000; } static void -Opcode_rsr_eps5_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_beqz_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc530; + slotbuf[0] = 0xa8000000; + slotbuf[1] = 0; } static void -Opcode_wsr_eps5_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bnez_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc531; + slotbuf[0] = 0xc0000000; + slotbuf[1] = 0; } static void -Opcode_xsr_eps5_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bgez_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc516; + slotbuf[0] = 0xb0000000; + slotbuf[1] = 0; } static void -Opcode_rsr_eps6_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bltz_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc630; + slotbuf[0] = 0xb8000000; + slotbuf[1] = 0; } static void -Opcode_wsr_eps6_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_beqi_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc631; + slotbuf[0] = 0x40000000; + slotbuf[1] = 0; } static void -Opcode_xsr_eps6_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bnei_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc616; + slotbuf[0] = 0x98000000; + slotbuf[1] = 0; } static void -Opcode_rsr_eps7_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bgei_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc730; + slotbuf[0] = 0x50000000; + slotbuf[1] = 0; } static void -Opcode_wsr_eps7_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_blti_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc731; + slotbuf[0] = 0x70000000; + slotbuf[1] = 0; } static void -Opcode_xsr_eps7_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bgeui_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc716; + slotbuf[0] = 0x60000000; + slotbuf[1] = 0; } static void -Opcode_rsr_excvaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bltui_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xee30; + slotbuf[0] = 0x80000000; + slotbuf[1] = 0; } static void -Opcode_wsr_excvaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bbci_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xee31; + slotbuf[0] = 0x8000000; + slotbuf[1] = 0; } static void -Opcode_xsr_excvaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bbsi_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xee16; + slotbuf[0] = 0x10000000; + slotbuf[1] = 0; } static void -Opcode_rsr_depc_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_beq_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc030; + slotbuf[0] = 0x38000000; + slotbuf[1] = 0; } static void -Opcode_wsr_depc_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bne_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc031; + slotbuf[0] = 0x90000000; + slotbuf[1] = 0; } static void -Opcode_xsr_depc_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bge_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xc016; + slotbuf[0] = 0x48000000; + slotbuf[1] = 0; } static void -Opcode_rsr_exccause_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_blt_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xe830; + slotbuf[0] = 0x68000000; + slotbuf[1] = 0; } static void -Opcode_wsr_exccause_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bgeu_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xe831; + slotbuf[0] = 0x58000000; + slotbuf[1] = 0; } static void -Opcode_xsr_exccause_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bltu_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xe816; + slotbuf[0] = 0x78000000; + slotbuf[1] = 0; } static void -Opcode_rsr_misc0_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bany_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xf430; + slotbuf[0] = 0x20000000; + slotbuf[1] = 0; } static void -Opcode_wsr_misc0_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bnone_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xf431; + slotbuf[0] = 0xa0000000; + slotbuf[1] = 0; } static void -Opcode_xsr_misc0_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_ball_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xf416; + slotbuf[0] = 0x18000000; + slotbuf[1] = 0; } static void -Opcode_rsr_misc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bnall_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xf530; + slotbuf[0] = 0x88000000; + slotbuf[1] = 0; } static void -Opcode_wsr_misc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bbc_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xf531; + slotbuf[0] = 0x28000000; + slotbuf[1] = 0; } static void -Opcode_xsr_misc1_Slot_inst_encode (xtensa_insnbuf slotbuf) +Opcode_bbs_w18_Slot_xt_flix64_slot3_encode (xtensa_insnbuf slotbuf) { - slotbuf[0] = 0xf516; + slotbuf[0] = 0x30000000; + slotbuf[1] = 0; } -static void -Opcode_rsr_prid_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xeb30; -} +xtensa_opcode_encode_fn Opcode_excw_encode_fns[] = { + Opcode_excw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_rfe_encode_fns[] = { + Opcode_rfe_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_rfde_encode_fns[] = { + Opcode_rfde_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_syscall_encode_fns[] = { + Opcode_syscall_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_simcall_encode_fns[] = { + Opcode_simcall_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_call12_encode_fns[] = { + Opcode_call12_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_call8_encode_fns[] = { + Opcode_call8_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_call4_encode_fns[] = { + Opcode_call4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_callx12_encode_fns[] = { + Opcode_callx12_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_callx8_encode_fns[] = { + Opcode_callx8_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_callx4_encode_fns[] = { + Opcode_callx4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_entry_encode_fns[] = { + Opcode_entry_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_movsp_encode_fns[] = { + Opcode_movsp_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_rotw_encode_fns[] = { + Opcode_rotw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_retw_encode_fns[] = { + Opcode_retw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_retw_n_encode_fns[] = { + 0, 0, Opcode_retw_n_Slot_inst16b_encode, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_rfwo_encode_fns[] = { + Opcode_rfwo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_rfwu_encode_fns[] = { + Opcode_rfwu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_l32e_encode_fns[] = { + Opcode_l32e_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_s32e_encode_fns[] = { + Opcode_s32e_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_rsr_windowbase_encode_fns[] = { + Opcode_rsr_windowbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_wsr_windowbase_encode_fns[] = { + Opcode_wsr_windowbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_xsr_windowbase_encode_fns[] = { + Opcode_xsr_windowbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_rsr_windowstart_encode_fns[] = { + Opcode_rsr_windowstart_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_wsr_windowstart_encode_fns[] = { + Opcode_wsr_windowstart_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_xsr_windowstart_encode_fns[] = { + Opcode_xsr_windowstart_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_add_n_encode_fns[] = { + 0, Opcode_add_n_Slot_inst16a_encode, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_addi_n_encode_fns[] = { + 0, Opcode_addi_n_Slot_inst16a_encode, 0, 0, 0, 0, Opcode_addi_n_Slot_xt_flix64_slot2_encode, 0 +}; + +xtensa_opcode_encode_fn Opcode_beqz_n_encode_fns[] = { + 0, 0, Opcode_beqz_n_Slot_inst16b_encode, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_bnez_n_encode_fns[] = { + 0, 0, Opcode_bnez_n_Slot_inst16b_encode, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_ill_n_encode_fns[] = { + 0, 0, Opcode_ill_n_Slot_inst16b_encode, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_l32i_n_encode_fns[] = { + 0, Opcode_l32i_n_Slot_inst16a_encode, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_mov_n_encode_fns[] = { + 0, 0, Opcode_mov_n_Slot_inst16b_encode, Opcode_mov_n_Slot_xt_flix64_slot0_encode, Opcode_mov_n_Slot_xt_flix64_slot0_encode, Opcode_mov_n_Slot_xt_flix64_slot1_encode, Opcode_mov_n_Slot_xt_flix64_slot2_encode, 0 +}; + +xtensa_opcode_encode_fn Opcode_movi_n_encode_fns[] = { + 0, 0, Opcode_movi_n_Slot_inst16b_encode, 0, 0, 0, Opcode_movi_n_Slot_xt_flix64_slot2_encode, 0 +}; + +xtensa_opcode_encode_fn Opcode_nop_n_encode_fns[] = { + 0, 0, Opcode_nop_n_Slot_inst16b_encode, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_ret_n_encode_fns[] = { + 0, 0, Opcode_ret_n_Slot_inst16b_encode, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_s32i_n_encode_fns[] = { + 0, Opcode_s32i_n_Slot_inst16a_encode, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_rur_threadptr_encode_fns[] = { + Opcode_rur_threadptr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_wur_threadptr_encode_fns[] = { + Opcode_wur_threadptr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_addi_encode_fns[] = { + Opcode_addi_Slot_inst_encode, 0, 0, Opcode_addi_Slot_xt_flix64_slot0_encode, Opcode_addi_Slot_xt_flix64_slot0_encode, Opcode_addi_Slot_xt_flix64_slot1_encode, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_addmi_encode_fns[] = { + Opcode_addmi_Slot_inst_encode, 0, 0, Opcode_addmi_Slot_xt_flix64_slot0_encode, Opcode_addmi_Slot_xt_flix64_slot0_encode, Opcode_addmi_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_rsr_vecbase_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe730; -} +xtensa_opcode_encode_fn Opcode_add_encode_fns[] = { + Opcode_add_Slot_inst_encode, 0, 0, Opcode_add_Slot_xt_flix64_slot0_encode, Opcode_add_Slot_xt_flix64_slot0_encode, Opcode_add_Slot_xt_flix64_slot1_encode, Opcode_add_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_wsr_vecbase_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe731; -} +xtensa_opcode_encode_fn Opcode_sub_encode_fns[] = { + Opcode_sub_Slot_inst_encode, 0, 0, Opcode_sub_Slot_xt_flix64_slot0_encode, Opcode_sub_Slot_xt_flix64_slot0_encode, Opcode_sub_Slot_xt_flix64_slot1_encode, Opcode_sub_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_xsr_vecbase_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe716; -} +xtensa_opcode_encode_fn Opcode_addx2_encode_fns[] = { + Opcode_addx2_Slot_inst_encode, 0, 0, Opcode_addx2_Slot_xt_flix64_slot0_encode, Opcode_addx2_Slot_xt_flix64_slot0_encode, Opcode_addx2_Slot_xt_flix64_slot1_encode, Opcode_addx2_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_mul16u_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x1c; -} +xtensa_opcode_encode_fn Opcode_addx4_encode_fns[] = { + Opcode_addx4_Slot_inst_encode, 0, 0, Opcode_addx4_Slot_xt_flix64_slot0_encode, Opcode_addx4_Slot_xt_flix64_slot0_encode, Opcode_addx4_Slot_xt_flix64_slot1_encode, Opcode_addx4_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_mul16s_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x1d; -} +xtensa_opcode_encode_fn Opcode_addx8_encode_fns[] = { + Opcode_addx8_Slot_inst_encode, 0, 0, Opcode_addx8_Slot_xt_flix64_slot0_encode, Opcode_addx8_Slot_xt_flix64_slot0_encode, Opcode_addx8_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_rfi_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x10300; -} +xtensa_opcode_encode_fn Opcode_subx2_encode_fns[] = { + Opcode_subx2_Slot_inst_encode, 0, 0, Opcode_subx2_Slot_xt_flix64_slot0_encode, Opcode_subx2_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_waiti_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x700; -} +xtensa_opcode_encode_fn Opcode_subx4_encode_fns[] = { + Opcode_subx4_Slot_inst_encode, 0, 0, Opcode_subx4_Slot_xt_flix64_slot0_encode, Opcode_subx4_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_rsr_interrupt_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe230; -} +xtensa_opcode_encode_fn Opcode_subx8_encode_fns[] = { + Opcode_subx8_Slot_inst_encode, 0, 0, Opcode_subx8_Slot_xt_flix64_slot0_encode, Opcode_subx8_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_wsr_intset_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe231; -} +xtensa_opcode_encode_fn Opcode_and_encode_fns[] = { + Opcode_and_Slot_inst_encode, 0, 0, Opcode_and_Slot_xt_flix64_slot0_encode, Opcode_and_Slot_xt_flix64_slot0_encode, Opcode_and_Slot_xt_flix64_slot1_encode, Opcode_and_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_wsr_intclear_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe331; -} +xtensa_opcode_encode_fn Opcode_or_encode_fns[] = { + Opcode_or_Slot_inst_encode, 0, 0, Opcode_or_Slot_xt_flix64_slot0_encode, Opcode_or_Slot_xt_flix64_slot0_encode, Opcode_or_Slot_xt_flix64_slot1_encode, Opcode_or_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_rsr_intenable_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe430; -} +xtensa_opcode_encode_fn Opcode_xor_encode_fns[] = { + Opcode_xor_Slot_inst_encode, 0, 0, Opcode_xor_Slot_xt_flix64_slot0_encode, Opcode_xor_Slot_xt_flix64_slot0_encode, Opcode_xor_Slot_xt_flix64_slot1_encode, Opcode_xor_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_wsr_intenable_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe431; -} +xtensa_opcode_encode_fn Opcode_beqi_encode_fns[] = { + Opcode_beqi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_intenable_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe416; -} +xtensa_opcode_encode_fn Opcode_bnei_encode_fns[] = { + Opcode_bnei_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_break_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x400; -} +xtensa_opcode_encode_fn Opcode_bgei_encode_fns[] = { + Opcode_bgei_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_break_n_Slot_inst16b_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xd20f; -} +xtensa_opcode_encode_fn Opcode_blti_encode_fns[] = { + Opcode_blti_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_dbreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x9030; -} +xtensa_opcode_encode_fn Opcode_bbci_encode_fns[] = { + Opcode_bbci_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_dbreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x9031; -} +xtensa_opcode_encode_fn Opcode_bbsi_encode_fns[] = { + Opcode_bbsi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_dbreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x9016; -} +xtensa_opcode_encode_fn Opcode_bgeui_encode_fns[] = { + Opcode_bgeui_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_dbreakc0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xa030; -} +xtensa_opcode_encode_fn Opcode_bltui_encode_fns[] = { + Opcode_bltui_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_dbreakc0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xa031; -} +xtensa_opcode_encode_fn Opcode_beq_encode_fns[] = { + Opcode_beq_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_dbreakc0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xa016; -} +xtensa_opcode_encode_fn Opcode_bne_encode_fns[] = { + Opcode_bne_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_dbreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x9130; -} +xtensa_opcode_encode_fn Opcode_bge_encode_fns[] = { + Opcode_bge_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_dbreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x9131; -} +xtensa_opcode_encode_fn Opcode_blt_encode_fns[] = { + Opcode_blt_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_dbreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x9116; -} +xtensa_opcode_encode_fn Opcode_bgeu_encode_fns[] = { + Opcode_bgeu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_dbreakc1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xa130; -} +xtensa_opcode_encode_fn Opcode_bltu_encode_fns[] = { + Opcode_bltu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_dbreakc1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xa131; -} +xtensa_opcode_encode_fn Opcode_bany_encode_fns[] = { + Opcode_bany_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_dbreakc1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xa116; -} +xtensa_opcode_encode_fn Opcode_bnone_encode_fns[] = { + Opcode_bnone_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_ibreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x8030; -} +xtensa_opcode_encode_fn Opcode_ball_encode_fns[] = { + Opcode_ball_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_ibreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x8031; -} +xtensa_opcode_encode_fn Opcode_bnall_encode_fns[] = { + Opcode_bnall_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_ibreaka0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x8016; -} +xtensa_opcode_encode_fn Opcode_bbc_encode_fns[] = { + Opcode_bbc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_ibreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x8130; -} +xtensa_opcode_encode_fn Opcode_bbs_encode_fns[] = { + Opcode_bbs_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_ibreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x8131; -} +xtensa_opcode_encode_fn Opcode_beqz_encode_fns[] = { + Opcode_beqz_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_ibreaka1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x8116; -} +xtensa_opcode_encode_fn Opcode_bnez_encode_fns[] = { + Opcode_bnez_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_ibreakenable_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x6030; -} +xtensa_opcode_encode_fn Opcode_bgez_encode_fns[] = { + Opcode_bgez_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_ibreakenable_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x6031; -} +xtensa_opcode_encode_fn Opcode_bltz_encode_fns[] = { + Opcode_bltz_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_ibreakenable_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x6016; -} +xtensa_opcode_encode_fn Opcode_call0_encode_fns[] = { + Opcode_call0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_debugcause_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe930; -} +xtensa_opcode_encode_fn Opcode_callx0_encode_fns[] = { + Opcode_callx0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_debugcause_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe931; -} +xtensa_opcode_encode_fn Opcode_extui_encode_fns[] = { + Opcode_extui_Slot_inst_encode, 0, 0, Opcode_extui_Slot_xt_flix64_slot0_encode, Opcode_extui_Slot_xt_flix64_slot0_encode, Opcode_extui_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_xsr_debugcause_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe916; -} +xtensa_opcode_encode_fn Opcode_ill_encode_fns[] = { + Opcode_ill_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_icount_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xec30; -} +xtensa_opcode_encode_fn Opcode_j_encode_fns[] = { + Opcode_j_Slot_inst_encode, 0, 0, 0, 0, Opcode_j_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_wsr_icount_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xec31; -} +xtensa_opcode_encode_fn Opcode_jx_encode_fns[] = { + Opcode_jx_Slot_inst_encode, 0, 0, 0, 0, Opcode_jx_Slot_xt_flix64_slot1_encode, 0, 0 +}; + +xtensa_opcode_encode_fn Opcode_l16ui_encode_fns[] = { + Opcode_l16ui_Slot_inst_encode, 0, 0, Opcode_l16ui_Slot_xt_flix64_slot0_encode, Opcode_l16ui_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_xsr_icount_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xec16; -} +xtensa_opcode_encode_fn Opcode_l16si_encode_fns[] = { + Opcode_l16si_Slot_inst_encode, 0, 0, Opcode_l16si_Slot_xt_flix64_slot0_encode, Opcode_l16si_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_rsr_icountlevel_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xed30; -} +xtensa_opcode_encode_fn Opcode_l32i_encode_fns[] = { + Opcode_l32i_Slot_inst_encode, 0, 0, Opcode_l32i_Slot_xt_flix64_slot0_encode, Opcode_l32i_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_wsr_icountlevel_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xed31; -} +xtensa_opcode_encode_fn Opcode_l32r_encode_fns[] = { + Opcode_l32r_Slot_inst_encode, 0, 0, Opcode_l32r_Slot_xt_flix64_slot0_encode, Opcode_l32r_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_xsr_icountlevel_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xed16; -} +xtensa_opcode_encode_fn Opcode_l8ui_encode_fns[] = { + Opcode_l8ui_Slot_inst_encode, 0, 0, Opcode_l8ui_Slot_xt_flix64_slot0_encode, Opcode_l8ui_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_rsr_ddr_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x6830; -} +xtensa_opcode_encode_fn Opcode_loop_encode_fns[] = { + Opcode_loop_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_ddr_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x6831; -} +xtensa_opcode_encode_fn Opcode_loopnez_encode_fns[] = { + Opcode_loopnez_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_ddr_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x6816; -} +xtensa_opcode_encode_fn Opcode_loopgtz_encode_fns[] = { + Opcode_loopgtz_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rfdo_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe1f; -} +xtensa_opcode_encode_fn Opcode_movi_encode_fns[] = { + Opcode_movi_Slot_inst_encode, 0, 0, Opcode_movi_Slot_xt_flix64_slot0_encode, Opcode_movi_Slot_xt_flix64_slot0_encode, Opcode_movi_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_rfdd_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x10e1f; -} +xtensa_opcode_encode_fn Opcode_moveqz_encode_fns[] = { + Opcode_moveqz_Slot_inst_encode, 0, 0, Opcode_moveqz_Slot_xt_flix64_slot0_encode, Opcode_moveqz_Slot_xt_flix64_slot0_encode, Opcode_moveqz_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_wsr_mmid_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5931; -} +xtensa_opcode_encode_fn Opcode_movnez_encode_fns[] = { + Opcode_movnez_Slot_inst_encode, 0, 0, Opcode_movnez_Slot_xt_flix64_slot0_encode, Opcode_movnez_Slot_xt_flix64_slot0_encode, Opcode_movnez_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_rsr_ccount_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xea30; -} +xtensa_opcode_encode_fn Opcode_movltz_encode_fns[] = { + Opcode_movltz_Slot_inst_encode, 0, 0, Opcode_movltz_Slot_xt_flix64_slot0_encode, Opcode_movltz_Slot_xt_flix64_slot0_encode, Opcode_movltz_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_wsr_ccount_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xea31; -} +xtensa_opcode_encode_fn Opcode_movgez_encode_fns[] = { + Opcode_movgez_Slot_inst_encode, 0, 0, Opcode_movgez_Slot_xt_flix64_slot0_encode, Opcode_movgez_Slot_xt_flix64_slot0_encode, Opcode_movgez_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_xsr_ccount_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xea16; -} +xtensa_opcode_encode_fn Opcode_neg_encode_fns[] = { + Opcode_neg_Slot_inst_encode, 0, 0, Opcode_neg_Slot_xt_flix64_slot0_encode, Opcode_neg_Slot_xt_flix64_slot0_encode, Opcode_neg_Slot_xt_flix64_slot1_encode, Opcode_neg_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_rsr_ccompare0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf030; -} +xtensa_opcode_encode_fn Opcode_abs_encode_fns[] = { + Opcode_abs_Slot_inst_encode, 0, 0, Opcode_abs_Slot_xt_flix64_slot0_encode, Opcode_abs_Slot_xt_flix64_slot0_encode, 0, Opcode_abs_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_wsr_ccompare0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf031; -} +xtensa_opcode_encode_fn Opcode_nop_encode_fns[] = { + Opcode_nop_Slot_inst_encode, 0, 0, Opcode_nop_Slot_xt_flix64_slot0_encode, Opcode_nop_Slot_xt_flix64_slot0_encode, Opcode_nop_Slot_xt_flix64_slot1_encode, Opcode_nop_Slot_xt_flix64_slot2_encode, Opcode_nop_Slot_xt_flix64_slot3_encode +}; -static void -Opcode_xsr_ccompare0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf016; -} +xtensa_opcode_encode_fn Opcode_ret_encode_fns[] = { + Opcode_ret_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_ccompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf130; -} +xtensa_opcode_encode_fn Opcode_s16i_encode_fns[] = { + Opcode_s16i_Slot_inst_encode, 0, 0, Opcode_s16i_Slot_xt_flix64_slot0_encode, Opcode_s16i_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_wsr_ccompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf131; -} +xtensa_opcode_encode_fn Opcode_s32i_encode_fns[] = { + Opcode_s32i_Slot_inst_encode, 0, 0, Opcode_s32i_Slot_xt_flix64_slot0_encode, Opcode_s32i_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_xsr_ccompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf116; -} +xtensa_opcode_encode_fn Opcode_s8i_encode_fns[] = { + Opcode_s8i_Slot_inst_encode, 0, 0, Opcode_s8i_Slot_xt_flix64_slot0_encode, Opcode_s8i_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_rsr_ccompare2_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf230; -} +xtensa_opcode_encode_fn Opcode_ssr_encode_fns[] = { + Opcode_ssr_Slot_inst_encode, 0, 0, Opcode_ssr_Slot_xt_flix64_slot0_encode, Opcode_ssr_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_wsr_ccompare2_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf231; -} +xtensa_opcode_encode_fn Opcode_ssl_encode_fns[] = { + Opcode_ssl_Slot_inst_encode, 0, 0, Opcode_ssl_Slot_xt_flix64_slot0_encode, Opcode_ssl_Slot_xt_flix64_slot0_encode, Opcode_ssl_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_xsr_ccompare2_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf216; -} +xtensa_opcode_encode_fn Opcode_ssa8l_encode_fns[] = { + Opcode_ssa8l_Slot_inst_encode, 0, 0, Opcode_ssa8l_Slot_xt_flix64_slot0_encode, Opcode_ssa8l_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_ipf_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x2c0700; -} +xtensa_opcode_encode_fn Opcode_ssa8b_encode_fns[] = { + Opcode_ssa8b_Slot_inst_encode, 0, 0, Opcode_ssa8b_Slot_xt_flix64_slot0_encode, Opcode_ssa8b_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_ihi_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x2e0700; -} +xtensa_opcode_encode_fn Opcode_ssai_encode_fns[] = { + Opcode_ssai_Slot_inst_encode, 0, 0, Opcode_ssai_Slot_xt_flix64_slot0_encode, Opcode_ssai_Slot_xt_flix64_slot0_encode, 0, 0, 0 +}; -static void -Opcode_ipfl_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x2d0700; -} +xtensa_opcode_encode_fn Opcode_sll_encode_fns[] = { + Opcode_sll_Slot_inst_encode, 0, 0, Opcode_sll_Slot_xt_flix64_slot0_encode, Opcode_sll_Slot_xt_flix64_slot0_encode, Opcode_sll_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_ihu_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x2d0720; -} +xtensa_opcode_encode_fn Opcode_src_encode_fns[] = { + Opcode_src_Slot_inst_encode, 0, 0, Opcode_src_Slot_xt_flix64_slot0_encode, Opcode_src_Slot_xt_flix64_slot0_encode, Opcode_src_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_iiu_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x2d0730; -} +xtensa_opcode_encode_fn Opcode_srl_encode_fns[] = { + Opcode_srl_Slot_inst_encode, 0, 0, Opcode_srl_Slot_xt_flix64_slot0_encode, Opcode_srl_Slot_xt_flix64_slot0_encode, Opcode_srl_Slot_xt_flix64_slot1_encode, Opcode_srl_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_iii_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x2f0700; -} +xtensa_opcode_encode_fn Opcode_sra_encode_fns[] = { + Opcode_sra_Slot_inst_encode, 0, 0, Opcode_sra_Slot_xt_flix64_slot0_encode, Opcode_sra_Slot_xt_flix64_slot0_encode, Opcode_sra_Slot_xt_flix64_slot1_encode, Opcode_sra_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_lict_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x1f; -} +xtensa_opcode_encode_fn Opcode_slli_encode_fns[] = { + Opcode_slli_Slot_inst_encode, 0, 0, Opcode_slli_Slot_xt_flix64_slot0_encode, Opcode_slli_Slot_xt_flix64_slot0_encode, Opcode_slli_Slot_xt_flix64_slot1_encode, 0, 0 +}; -static void -Opcode_licw_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x21f; -} +xtensa_opcode_encode_fn Opcode_srai_encode_fns[] = { + Opcode_srai_Slot_inst_encode, 0, 0, Opcode_srai_Slot_xt_flix64_slot0_encode, Opcode_srai_Slot_xt_flix64_slot0_encode, Opcode_srai_Slot_xt_flix64_slot1_encode, Opcode_srai_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_sict_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x11f; -} +xtensa_opcode_encode_fn Opcode_srli_encode_fns[] = { + Opcode_srli_Slot_inst_encode, 0, 0, Opcode_srli_Slot_xt_flix64_slot0_encode, Opcode_srli_Slot_xt_flix64_slot0_encode, Opcode_srli_Slot_xt_flix64_slot1_encode, Opcode_srli_Slot_xt_flix64_slot2_encode, 0 +}; -static void -Opcode_sicw_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x31f; -} +xtensa_opcode_encode_fn Opcode_memw_encode_fns[] = { + Opcode_memw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_dhwb_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x240700; -} +xtensa_opcode_encode_fn Opcode_extw_encode_fns[] = { + Opcode_extw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_dhwbi_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x250700; -} +xtensa_opcode_encode_fn Opcode_isync_encode_fns[] = { + Opcode_isync_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_diwb_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x280740; -} +xtensa_opcode_encode_fn Opcode_rsync_encode_fns[] = { + Opcode_rsync_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_diwbi_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x280750; -} +xtensa_opcode_encode_fn Opcode_esync_encode_fns[] = { + Opcode_esync_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_dhi_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x260700; -} +xtensa_opcode_encode_fn Opcode_dsync_encode_fns[] = { + Opcode_dsync_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_dii_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x270700; -} +xtensa_opcode_encode_fn Opcode_rsil_encode_fns[] = { + Opcode_rsil_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_dpfr_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x200700; -} +xtensa_opcode_encode_fn Opcode_rsr_lend_encode_fns[] = { + Opcode_rsr_lend_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_dpfw_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x210700; -} +xtensa_opcode_encode_fn Opcode_wsr_lend_encode_fns[] = { + Opcode_wsr_lend_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_dpfro_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x220700; -} +xtensa_opcode_encode_fn Opcode_xsr_lend_encode_fns[] = { + Opcode_xsr_lend_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_dpfwo_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x230700; -} +xtensa_opcode_encode_fn Opcode_rsr_lcount_encode_fns[] = { + Opcode_rsr_lcount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_dpfl_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x280700; -} +xtensa_opcode_encode_fn Opcode_wsr_lcount_encode_fns[] = { + Opcode_wsr_lcount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_dhu_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x280720; -} +xtensa_opcode_encode_fn Opcode_xsr_lcount_encode_fns[] = { + Opcode_xsr_lcount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_diu_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x280730; -} +xtensa_opcode_encode_fn Opcode_rsr_lbeg_encode_fns[] = { + Opcode_rsr_lbeg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_sdct_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x91f; -} +xtensa_opcode_encode_fn Opcode_wsr_lbeg_encode_fns[] = { + Opcode_wsr_lbeg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_ldct_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x81f; -} +xtensa_opcode_encode_fn Opcode_xsr_lbeg_encode_fns[] = { + Opcode_xsr_lbeg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_ptevaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5331; -} +xtensa_opcode_encode_fn Opcode_rsr_sar_encode_fns[] = { + Opcode_rsr_sar_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_ptevaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5330; -} +xtensa_opcode_encode_fn Opcode_wsr_sar_encode_fns[] = { + Opcode_wsr_sar_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_ptevaddr_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5316; -} +xtensa_opcode_encode_fn Opcode_xsr_sar_encode_fns[] = { + Opcode_xsr_sar_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_rasid_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5a30; -} +xtensa_opcode_encode_fn Opcode_rsr_litbase_encode_fns[] = { + Opcode_rsr_litbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_rasid_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5a31; -} +xtensa_opcode_encode_fn Opcode_wsr_litbase_encode_fns[] = { + Opcode_wsr_litbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_rasid_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5a16; -} +xtensa_opcode_encode_fn Opcode_xsr_litbase_encode_fns[] = { + Opcode_xsr_litbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_itlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5b30; -} +xtensa_opcode_encode_fn Opcode_rsr_176_encode_fns[] = { + Opcode_rsr_176_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_itlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5b31; -} +xtensa_opcode_encode_fn Opcode_rsr_208_encode_fns[] = { + Opcode_rsr_208_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_itlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5b16; -} +xtensa_opcode_encode_fn Opcode_rsr_ps_encode_fns[] = { + Opcode_rsr_ps_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_dtlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5c30; -} +xtensa_opcode_encode_fn Opcode_wsr_ps_encode_fns[] = { + Opcode_wsr_ps_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_dtlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5c31; -} +xtensa_opcode_encode_fn Opcode_xsr_ps_encode_fns[] = { + Opcode_xsr_ps_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_dtlbcfg_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x5c16; -} +xtensa_opcode_encode_fn Opcode_rsr_epc1_encode_fns[] = { + Opcode_rsr_epc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_idtlb_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xc05; -} +xtensa_opcode_encode_fn Opcode_wsr_epc1_encode_fns[] = { + Opcode_wsr_epc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_pdtlb_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xd05; -} +xtensa_opcode_encode_fn Opcode_xsr_epc1_encode_fns[] = { + Opcode_xsr_epc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rdtlb0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xb05; -} +xtensa_opcode_encode_fn Opcode_rsr_excsave1_encode_fns[] = { + Opcode_rsr_excsave1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rdtlb1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf05; -} +xtensa_opcode_encode_fn Opcode_wsr_excsave1_encode_fns[] = { + Opcode_wsr_excsave1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wdtlb_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe05; -} +xtensa_opcode_encode_fn Opcode_xsr_excsave1_encode_fns[] = { + Opcode_xsr_excsave1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_iitlb_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x405; -} +xtensa_opcode_encode_fn Opcode_rsr_epc2_encode_fns[] = { + Opcode_rsr_epc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_pitlb_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x505; -} +xtensa_opcode_encode_fn Opcode_wsr_epc2_encode_fns[] = { + Opcode_wsr_epc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_ritlb0_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x305; -} +xtensa_opcode_encode_fn Opcode_xsr_epc2_encode_fns[] = { + Opcode_xsr_epc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_ritlb1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x705; -} +xtensa_opcode_encode_fn Opcode_rsr_excsave2_encode_fns[] = { + Opcode_rsr_excsave2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_witlb_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x605; -} +xtensa_opcode_encode_fn Opcode_wsr_excsave2_encode_fns[] = { + Opcode_wsr_excsave2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_ldpte_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf1f; -} +xtensa_opcode_encode_fn Opcode_xsr_excsave2_encode_fns[] = { + Opcode_xsr_excsave2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_hwwitlba_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x105; -} +xtensa_opcode_encode_fn Opcode_rsr_epc3_encode_fns[] = { + Opcode_rsr_epc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_hwwdtlba_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x905; -} +xtensa_opcode_encode_fn Opcode_wsr_epc3_encode_fns[] = { + Opcode_wsr_epc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_cpenable_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe030; -} +xtensa_opcode_encode_fn Opcode_xsr_epc3_encode_fns[] = { + Opcode_xsr_epc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_cpenable_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe031; -} +xtensa_opcode_encode_fn Opcode_rsr_excsave3_encode_fns[] = { + Opcode_rsr_excsave3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_cpenable_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe016; -} +xtensa_opcode_encode_fn Opcode_wsr_excsave3_encode_fns[] = { + Opcode_wsr_excsave3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_clamps_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x33; -} +xtensa_opcode_encode_fn Opcode_xsr_excsave3_encode_fns[] = { + Opcode_xsr_excsave3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_min_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x34; -} +xtensa_opcode_encode_fn Opcode_rsr_epc4_encode_fns[] = { + Opcode_rsr_epc4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_max_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x35; -} +xtensa_opcode_encode_fn Opcode_wsr_epc4_encode_fns[] = { + Opcode_wsr_epc4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_minu_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x36; -} +xtensa_opcode_encode_fn Opcode_xsr_epc4_encode_fns[] = { + Opcode_xsr_epc4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_maxu_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x37; -} +xtensa_opcode_encode_fn Opcode_rsr_excsave4_encode_fns[] = { + Opcode_rsr_excsave4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_nsa_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xe04; -} +xtensa_opcode_encode_fn Opcode_wsr_excsave4_encode_fns[] = { + Opcode_wsr_excsave4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_nsau_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xf04; -} +xtensa_opcode_encode_fn Opcode_xsr_excsave4_encode_fns[] = { + Opcode_xsr_excsave4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_sext_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x32; -} +xtensa_opcode_encode_fn Opcode_rsr_epc5_encode_fns[] = { + Opcode_rsr_epc5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_l32ai_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x200b00; -} +xtensa_opcode_encode_fn Opcode_wsr_epc5_encode_fns[] = { + Opcode_wsr_epc5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_s32ri_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x200f00; -} +xtensa_opcode_encode_fn Opcode_xsr_epc5_encode_fns[] = { + Opcode_xsr_epc5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_s32c1i_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x200e00; -} +xtensa_opcode_encode_fn Opcode_rsr_excsave5_encode_fns[] = { + Opcode_rsr_excsave5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rsr_scompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xc30; -} +xtensa_opcode_encode_fn Opcode_wsr_excsave5_encode_fns[] = { + Opcode_wsr_excsave5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_wsr_scompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xc31; -} +xtensa_opcode_encode_fn Opcode_xsr_excsave5_encode_fns[] = { + Opcode_xsr_excsave5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_xsr_scompare1_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0xc16; -} +xtensa_opcode_encode_fn Opcode_rsr_epc6_encode_fns[] = { + Opcode_rsr_epc6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_quou_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x2c; -} +xtensa_opcode_encode_fn Opcode_wsr_epc6_encode_fns[] = { + Opcode_wsr_epc6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_quos_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x2d; -} +xtensa_opcode_encode_fn Opcode_xsr_epc6_encode_fns[] = { + Opcode_xsr_epc6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_remu_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x2e; -} +xtensa_opcode_encode_fn Opcode_rsr_excsave6_encode_fns[] = { + Opcode_rsr_excsave6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_rems_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x2f; -} +xtensa_opcode_encode_fn Opcode_wsr_excsave6_encode_fns[] = { + Opcode_wsr_excsave6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -static void -Opcode_mull_Slot_inst_encode (xtensa_insnbuf slotbuf) -{ - slotbuf[0] = 0x28; -} +xtensa_opcode_encode_fn Opcode_xsr_excsave6_encode_fns[] = { + Opcode_xsr_excsave6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 +}; -xtensa_opcode_encode_fn Opcode_excw_encode_fns[] = { - Opcode_excw_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_epc7_encode_fns[] = { + Opcode_rsr_epc7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rfe_encode_fns[] = { - Opcode_rfe_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_epc7_encode_fns[] = { + Opcode_wsr_epc7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rfde_encode_fns[] = { - Opcode_rfde_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_epc7_encode_fns[] = { + Opcode_xsr_epc7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_syscall_encode_fns[] = { - Opcode_syscall_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_excsave7_encode_fns[] = { + Opcode_rsr_excsave7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_simcall_encode_fns[] = { - Opcode_simcall_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_excsave7_encode_fns[] = { + Opcode_wsr_excsave7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_call12_encode_fns[] = { - Opcode_call12_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_excsave7_encode_fns[] = { + Opcode_xsr_excsave7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_call8_encode_fns[] = { - Opcode_call8_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_eps2_encode_fns[] = { + Opcode_rsr_eps2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_call4_encode_fns[] = { - Opcode_call4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_eps2_encode_fns[] = { + Opcode_wsr_eps2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_callx12_encode_fns[] = { - Opcode_callx12_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_eps2_encode_fns[] = { + Opcode_xsr_eps2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_callx8_encode_fns[] = { - Opcode_callx8_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_eps3_encode_fns[] = { + Opcode_rsr_eps3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_callx4_encode_fns[] = { - Opcode_callx4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_eps3_encode_fns[] = { + Opcode_wsr_eps3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_entry_encode_fns[] = { - Opcode_entry_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_eps3_encode_fns[] = { + Opcode_xsr_eps3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_movsp_encode_fns[] = { - Opcode_movsp_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_eps4_encode_fns[] = { + Opcode_rsr_eps4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rotw_encode_fns[] = { - Opcode_rotw_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_eps4_encode_fns[] = { + Opcode_wsr_eps4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_retw_encode_fns[] = { - Opcode_retw_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_eps4_encode_fns[] = { + Opcode_xsr_eps4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_retw_n_encode_fns[] = { - 0, 0, Opcode_retw_n_Slot_inst16b_encode +xtensa_opcode_encode_fn Opcode_rsr_eps5_encode_fns[] = { + Opcode_rsr_eps5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rfwo_encode_fns[] = { - Opcode_rfwo_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_eps5_encode_fns[] = { + Opcode_wsr_eps5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rfwu_encode_fns[] = { - Opcode_rfwu_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_eps5_encode_fns[] = { + Opcode_xsr_eps5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_l32e_encode_fns[] = { - Opcode_l32e_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_eps6_encode_fns[] = { + Opcode_rsr_eps6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_s32e_encode_fns[] = { - Opcode_s32e_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_eps6_encode_fns[] = { + Opcode_wsr_eps6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_windowbase_encode_fns[] = { - Opcode_rsr_windowbase_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_eps6_encode_fns[] = { + Opcode_xsr_eps6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_windowbase_encode_fns[] = { - Opcode_wsr_windowbase_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_eps7_encode_fns[] = { + Opcode_rsr_eps7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_windowbase_encode_fns[] = { - Opcode_xsr_windowbase_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_eps7_encode_fns[] = { + Opcode_wsr_eps7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_windowstart_encode_fns[] = { - Opcode_rsr_windowstart_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_eps7_encode_fns[] = { + Opcode_xsr_eps7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_windowstart_encode_fns[] = { - Opcode_wsr_windowstart_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_excvaddr_encode_fns[] = { + Opcode_rsr_excvaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_windowstart_encode_fns[] = { - Opcode_xsr_windowstart_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_excvaddr_encode_fns[] = { + Opcode_wsr_excvaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_add_n_encode_fns[] = { - 0, Opcode_add_n_Slot_inst16a_encode, 0 +xtensa_opcode_encode_fn Opcode_xsr_excvaddr_encode_fns[] = { + Opcode_xsr_excvaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_addi_n_encode_fns[] = { - 0, Opcode_addi_n_Slot_inst16a_encode, 0 +xtensa_opcode_encode_fn Opcode_rsr_depc_encode_fns[] = { + Opcode_rsr_depc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_beqz_n_encode_fns[] = { - 0, 0, Opcode_beqz_n_Slot_inst16b_encode +xtensa_opcode_encode_fn Opcode_wsr_depc_encode_fns[] = { + Opcode_wsr_depc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bnez_n_encode_fns[] = { - 0, 0, Opcode_bnez_n_Slot_inst16b_encode +xtensa_opcode_encode_fn Opcode_xsr_depc_encode_fns[] = { + Opcode_xsr_depc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ill_n_encode_fns[] = { - 0, 0, Opcode_ill_n_Slot_inst16b_encode +xtensa_opcode_encode_fn Opcode_rsr_exccause_encode_fns[] = { + Opcode_rsr_exccause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_l32i_n_encode_fns[] = { - 0, Opcode_l32i_n_Slot_inst16a_encode, 0 +xtensa_opcode_encode_fn Opcode_wsr_exccause_encode_fns[] = { + Opcode_wsr_exccause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_mov_n_encode_fns[] = { - 0, 0, Opcode_mov_n_Slot_inst16b_encode +xtensa_opcode_encode_fn Opcode_xsr_exccause_encode_fns[] = { + Opcode_xsr_exccause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_movi_n_encode_fns[] = { - 0, 0, Opcode_movi_n_Slot_inst16b_encode +xtensa_opcode_encode_fn Opcode_rsr_misc0_encode_fns[] = { + Opcode_rsr_misc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_nop_n_encode_fns[] = { - 0, 0, Opcode_nop_n_Slot_inst16b_encode +xtensa_opcode_encode_fn Opcode_wsr_misc0_encode_fns[] = { + Opcode_wsr_misc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ret_n_encode_fns[] = { - 0, 0, Opcode_ret_n_Slot_inst16b_encode +xtensa_opcode_encode_fn Opcode_xsr_misc0_encode_fns[] = { + Opcode_xsr_misc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_s32i_n_encode_fns[] = { - 0, Opcode_s32i_n_Slot_inst16a_encode, 0 +xtensa_opcode_encode_fn Opcode_rsr_misc1_encode_fns[] = { + Opcode_rsr_misc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rur_threadptr_encode_fns[] = { - Opcode_rur_threadptr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_misc1_encode_fns[] = { + Opcode_wsr_misc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wur_threadptr_encode_fns[] = { - Opcode_wur_threadptr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_misc1_encode_fns[] = { + Opcode_xsr_misc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_addi_encode_fns[] = { - Opcode_addi_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_misc2_encode_fns[] = { + Opcode_rsr_misc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_addmi_encode_fns[] = { - Opcode_addmi_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_misc2_encode_fns[] = { + Opcode_wsr_misc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_add_encode_fns[] = { - Opcode_add_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_misc2_encode_fns[] = { + Opcode_xsr_misc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_sub_encode_fns[] = { - Opcode_sub_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_misc3_encode_fns[] = { + Opcode_rsr_misc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_addx2_encode_fns[] = { - Opcode_addx2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_misc3_encode_fns[] = { + Opcode_wsr_misc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_addx4_encode_fns[] = { - Opcode_addx4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_misc3_encode_fns[] = { + Opcode_xsr_misc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_addx8_encode_fns[] = { - Opcode_addx8_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_prid_encode_fns[] = { + Opcode_rsr_prid_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_subx2_encode_fns[] = { - Opcode_subx2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_vecbase_encode_fns[] = { + Opcode_rsr_vecbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_subx4_encode_fns[] = { - Opcode_subx4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_vecbase_encode_fns[] = { + Opcode_wsr_vecbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_subx8_encode_fns[] = { - Opcode_subx8_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_vecbase_encode_fns[] = { + Opcode_xsr_vecbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_and_encode_fns[] = { - Opcode_and_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_aa_ll_encode_fns[] = { + Opcode_mul_aa_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_or_encode_fns[] = { - Opcode_or_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_aa_hl_encode_fns[] = { + Opcode_mul_aa_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xor_encode_fns[] = { - Opcode_xor_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_aa_lh_encode_fns[] = { + Opcode_mul_aa_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_beqi_encode_fns[] = { - Opcode_beqi_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_aa_hh_encode_fns[] = { + Opcode_mul_aa_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bnei_encode_fns[] = { - Opcode_bnei_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_umul_aa_ll_encode_fns[] = { + Opcode_umul_aa_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bgei_encode_fns[] = { - Opcode_bgei_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_umul_aa_hl_encode_fns[] = { + Opcode_umul_aa_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_blti_encode_fns[] = { - Opcode_blti_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_umul_aa_lh_encode_fns[] = { + Opcode_umul_aa_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bbci_encode_fns[] = { - Opcode_bbci_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_umul_aa_hh_encode_fns[] = { + Opcode_umul_aa_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bbsi_encode_fns[] = { - Opcode_bbsi_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_ad_ll_encode_fns[] = { + Opcode_mul_ad_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bgeui_encode_fns[] = { - Opcode_bgeui_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_ad_hl_encode_fns[] = { + Opcode_mul_ad_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bltui_encode_fns[] = { - Opcode_bltui_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_ad_lh_encode_fns[] = { + Opcode_mul_ad_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_beq_encode_fns[] = { - Opcode_beq_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_ad_hh_encode_fns[] = { + Opcode_mul_ad_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bne_encode_fns[] = { - Opcode_bne_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_da_ll_encode_fns[] = { + Opcode_mul_da_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bge_encode_fns[] = { - Opcode_bge_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_da_hl_encode_fns[] = { + Opcode_mul_da_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_blt_encode_fns[] = { - Opcode_blt_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_da_lh_encode_fns[] = { + Opcode_mul_da_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bgeu_encode_fns[] = { - Opcode_bgeu_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_da_hh_encode_fns[] = { + Opcode_mul_da_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bltu_encode_fns[] = { - Opcode_bltu_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_dd_ll_encode_fns[] = { + Opcode_mul_dd_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bany_encode_fns[] = { - Opcode_bany_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_dd_hl_encode_fns[] = { + Opcode_mul_dd_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bnone_encode_fns[] = { - Opcode_bnone_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_dd_lh_encode_fns[] = { + Opcode_mul_dd_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ball_encode_fns[] = { - Opcode_ball_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_dd_hh_encode_fns[] = { + Opcode_mul_dd_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bnall_encode_fns[] = { - Opcode_bnall_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_aa_ll_encode_fns[] = { + Opcode_mula_aa_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bbc_encode_fns[] = { - Opcode_bbc_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_aa_hl_encode_fns[] = { + Opcode_mula_aa_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bbs_encode_fns[] = { - Opcode_bbs_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_aa_lh_encode_fns[] = { + Opcode_mula_aa_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_beqz_encode_fns[] = { - Opcode_beqz_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_aa_hh_encode_fns[] = { + Opcode_mula_aa_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bnez_encode_fns[] = { - Opcode_bnez_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_aa_ll_encode_fns[] = { + Opcode_muls_aa_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bgez_encode_fns[] = { - Opcode_bgez_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_aa_hl_encode_fns[] = { + Opcode_muls_aa_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_bltz_encode_fns[] = { - Opcode_bltz_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_aa_lh_encode_fns[] = { + Opcode_muls_aa_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_call0_encode_fns[] = { - Opcode_call0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_aa_hh_encode_fns[] = { + Opcode_muls_aa_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_callx0_encode_fns[] = { - Opcode_callx0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_ad_ll_encode_fns[] = { + Opcode_mula_ad_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_extui_encode_fns[] = { - Opcode_extui_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_ad_hl_encode_fns[] = { + Opcode_mula_ad_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ill_encode_fns[] = { - Opcode_ill_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_ad_lh_encode_fns[] = { + Opcode_mula_ad_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_j_encode_fns[] = { - Opcode_j_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_ad_hh_encode_fns[] = { + Opcode_mula_ad_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_jx_encode_fns[] = { - Opcode_jx_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_ad_ll_encode_fns[] = { + Opcode_muls_ad_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_l16ui_encode_fns[] = { - Opcode_l16ui_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_ad_hl_encode_fns[] = { + Opcode_muls_ad_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_l16si_encode_fns[] = { - Opcode_l16si_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_ad_lh_encode_fns[] = { + Opcode_muls_ad_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_l32i_encode_fns[] = { - Opcode_l32i_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_ad_hh_encode_fns[] = { + Opcode_muls_ad_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_l32r_encode_fns[] = { - Opcode_l32r_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_ll_encode_fns[] = { + Opcode_mula_da_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_l8ui_encode_fns[] = { - Opcode_l8ui_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_hl_encode_fns[] = { + Opcode_mula_da_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_loop_encode_fns[] = { - Opcode_loop_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_lh_encode_fns[] = { + Opcode_mula_da_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_loopnez_encode_fns[] = { - Opcode_loopnez_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_hh_encode_fns[] = { + Opcode_mula_da_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_loopgtz_encode_fns[] = { - Opcode_loopgtz_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_da_ll_encode_fns[] = { + Opcode_muls_da_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_movi_encode_fns[] = { - Opcode_movi_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_da_hl_encode_fns[] = { + Opcode_muls_da_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_moveqz_encode_fns[] = { - Opcode_moveqz_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_da_lh_encode_fns[] = { + Opcode_muls_da_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_movnez_encode_fns[] = { - Opcode_movnez_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_da_hh_encode_fns[] = { + Opcode_muls_da_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_movltz_encode_fns[] = { - Opcode_movltz_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_ll_encode_fns[] = { + Opcode_mula_dd_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_movgez_encode_fns[] = { - Opcode_movgez_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_hl_encode_fns[] = { + Opcode_mula_dd_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_neg_encode_fns[] = { - Opcode_neg_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_lh_encode_fns[] = { + Opcode_mula_dd_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_abs_encode_fns[] = { - Opcode_abs_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_hh_encode_fns[] = { + Opcode_mula_dd_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_nop_encode_fns[] = { - Opcode_nop_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_dd_ll_encode_fns[] = { + Opcode_muls_dd_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ret_encode_fns[] = { - Opcode_ret_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_dd_hl_encode_fns[] = { + Opcode_muls_dd_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_s16i_encode_fns[] = { - Opcode_s16i_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_dd_lh_encode_fns[] = { + Opcode_muls_dd_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_s32i_encode_fns[] = { - Opcode_s32i_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muls_dd_hh_encode_fns[] = { + Opcode_muls_dd_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_s8i_encode_fns[] = { - Opcode_s8i_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_ll_lddec_encode_fns[] = { + Opcode_mula_da_ll_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ssr_encode_fns[] = { - Opcode_ssr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_ll_ldinc_encode_fns[] = { + Opcode_mula_da_ll_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ssl_encode_fns[] = { - Opcode_ssl_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_hl_lddec_encode_fns[] = { + Opcode_mula_da_hl_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ssa8l_encode_fns[] = { - Opcode_ssa8l_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_hl_ldinc_encode_fns[] = { + Opcode_mula_da_hl_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ssa8b_encode_fns[] = { - Opcode_ssa8b_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_lh_lddec_encode_fns[] = { + Opcode_mula_da_lh_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ssai_encode_fns[] = { - Opcode_ssai_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_lh_ldinc_encode_fns[] = { + Opcode_mula_da_lh_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_sll_encode_fns[] = { - Opcode_sll_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_hh_lddec_encode_fns[] = { + Opcode_mula_da_hh_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_src_encode_fns[] = { - Opcode_src_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_da_hh_ldinc_encode_fns[] = { + Opcode_mula_da_hh_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_srl_encode_fns[] = { - Opcode_srl_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_ll_lddec_encode_fns[] = { + Opcode_mula_dd_ll_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_sra_encode_fns[] = { - Opcode_sra_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_ll_ldinc_encode_fns[] = { + Opcode_mula_dd_ll_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_slli_encode_fns[] = { - Opcode_slli_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_hl_lddec_encode_fns[] = { + Opcode_mula_dd_hl_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_srai_encode_fns[] = { - Opcode_srai_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_hl_ldinc_encode_fns[] = { + Opcode_mula_dd_hl_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_srli_encode_fns[] = { - Opcode_srli_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_lh_lddec_encode_fns[] = { + Opcode_mula_dd_lh_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_memw_encode_fns[] = { - Opcode_memw_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_lh_ldinc_encode_fns[] = { + Opcode_mula_dd_lh_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_extw_encode_fns[] = { - Opcode_extw_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_hh_lddec_encode_fns[] = { + Opcode_mula_dd_hh_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_isync_encode_fns[] = { - Opcode_isync_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mula_dd_hh_ldinc_encode_fns[] = { + Opcode_mula_dd_hh_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsync_encode_fns[] = { - Opcode_rsync_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_lddec_encode_fns[] = { + Opcode_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_esync_encode_fns[] = { - Opcode_esync_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ldinc_encode_fns[] = { + Opcode_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dsync_encode_fns[] = { - Opcode_dsync_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul16u_encode_fns[] = { + Opcode_mul16u_Slot_inst_encode, 0, 0, Opcode_mul16u_Slot_xt_flix64_slot0_encode, Opcode_mul16u_Slot_xt_flix64_slot0_encode, Opcode_mul16u_Slot_xt_flix64_slot1_encode, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsil_encode_fns[] = { - Opcode_rsil_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul16s_encode_fns[] = { + Opcode_mul16s_Slot_inst_encode, 0, 0, Opcode_mul16s_Slot_xt_flix64_slot0_encode, Opcode_mul16s_Slot_xt_flix64_slot0_encode, Opcode_mul16s_Slot_xt_flix64_slot1_encode, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_lend_encode_fns[] = { - Opcode_rsr_lend_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_m0_encode_fns[] = { + Opcode_rsr_m0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_lend_encode_fns[] = { - Opcode_wsr_lend_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_m0_encode_fns[] = { + Opcode_wsr_m0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_lend_encode_fns[] = { - Opcode_xsr_lend_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_m0_encode_fns[] = { + Opcode_xsr_m0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_lcount_encode_fns[] = { - Opcode_rsr_lcount_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_m1_encode_fns[] = { + Opcode_rsr_m1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_lcount_encode_fns[] = { - Opcode_wsr_lcount_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_m1_encode_fns[] = { + Opcode_wsr_m1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_lcount_encode_fns[] = { - Opcode_xsr_lcount_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_m1_encode_fns[] = { + Opcode_xsr_m1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_lbeg_encode_fns[] = { - Opcode_rsr_lbeg_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_m2_encode_fns[] = { + Opcode_rsr_m2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_lbeg_encode_fns[] = { - Opcode_wsr_lbeg_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_m2_encode_fns[] = { + Opcode_wsr_m2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_lbeg_encode_fns[] = { - Opcode_xsr_lbeg_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_m2_encode_fns[] = { + Opcode_xsr_m2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_sar_encode_fns[] = { - Opcode_rsr_sar_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_m3_encode_fns[] = { + Opcode_rsr_m3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_sar_encode_fns[] = { - Opcode_wsr_sar_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_m3_encode_fns[] = { + Opcode_wsr_m3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_sar_encode_fns[] = { - Opcode_xsr_sar_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_m3_encode_fns[] = { + Opcode_xsr_m3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_litbase_encode_fns[] = { - Opcode_rsr_litbase_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_acclo_encode_fns[] = { + Opcode_rsr_acclo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_litbase_encode_fns[] = { - Opcode_wsr_litbase_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_acclo_encode_fns[] = { + Opcode_wsr_acclo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_litbase_encode_fns[] = { - Opcode_xsr_litbase_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_acclo_encode_fns[] = { + Opcode_xsr_acclo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_176_encode_fns[] = { - Opcode_rsr_176_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_acchi_encode_fns[] = { + Opcode_rsr_acchi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_176_encode_fns[] = { - Opcode_wsr_176_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_acchi_encode_fns[] = { + Opcode_wsr_acchi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_208_encode_fns[] = { - Opcode_rsr_208_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_acchi_encode_fns[] = { + Opcode_xsr_acchi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_ps_encode_fns[] = { - Opcode_rsr_ps_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rfi_encode_fns[] = { + Opcode_rfi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_ps_encode_fns[] = { - Opcode_wsr_ps_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_waiti_encode_fns[] = { + Opcode_waiti_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_ps_encode_fns[] = { - Opcode_xsr_ps_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_interrupt_encode_fns[] = { + Opcode_rsr_interrupt_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_epc1_encode_fns[] = { - Opcode_rsr_epc1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_intset_encode_fns[] = { + Opcode_wsr_intset_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_epc1_encode_fns[] = { - Opcode_wsr_epc1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_intclear_encode_fns[] = { + Opcode_wsr_intclear_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_epc1_encode_fns[] = { - Opcode_xsr_epc1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_intenable_encode_fns[] = { + Opcode_rsr_intenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_excsave1_encode_fns[] = { - Opcode_rsr_excsave1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_intenable_encode_fns[] = { + Opcode_wsr_intenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_excsave1_encode_fns[] = { - Opcode_wsr_excsave1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_intenable_encode_fns[] = { + Opcode_xsr_intenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_excsave1_encode_fns[] = { - Opcode_xsr_excsave1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_break_encode_fns[] = { + Opcode_break_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_epc2_encode_fns[] = { - Opcode_rsr_epc2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_break_n_encode_fns[] = { + 0, 0, Opcode_break_n_Slot_inst16b_encode, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_epc2_encode_fns[] = { - Opcode_wsr_epc2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_dbreaka0_encode_fns[] = { + Opcode_rsr_dbreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_epc2_encode_fns[] = { - Opcode_xsr_epc2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_dbreaka0_encode_fns[] = { + Opcode_wsr_dbreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_excsave2_encode_fns[] = { - Opcode_rsr_excsave2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_dbreaka0_encode_fns[] = { + Opcode_xsr_dbreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_excsave2_encode_fns[] = { - Opcode_wsr_excsave2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_dbreakc0_encode_fns[] = { + Opcode_rsr_dbreakc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_excsave2_encode_fns[] = { - Opcode_xsr_excsave2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_dbreakc0_encode_fns[] = { + Opcode_wsr_dbreakc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_epc3_encode_fns[] = { - Opcode_rsr_epc3_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_dbreakc0_encode_fns[] = { + Opcode_xsr_dbreakc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_epc3_encode_fns[] = { - Opcode_wsr_epc3_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_dbreaka1_encode_fns[] = { + Opcode_rsr_dbreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_epc3_encode_fns[] = { - Opcode_xsr_epc3_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_dbreaka1_encode_fns[] = { + Opcode_wsr_dbreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_excsave3_encode_fns[] = { - Opcode_rsr_excsave3_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_dbreaka1_encode_fns[] = { + Opcode_xsr_dbreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_excsave3_encode_fns[] = { - Opcode_wsr_excsave3_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_dbreakc1_encode_fns[] = { + Opcode_rsr_dbreakc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_excsave3_encode_fns[] = { - Opcode_xsr_excsave3_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_dbreakc1_encode_fns[] = { + Opcode_wsr_dbreakc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_epc4_encode_fns[] = { - Opcode_rsr_epc4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_dbreakc1_encode_fns[] = { + Opcode_xsr_dbreakc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_epc4_encode_fns[] = { - Opcode_wsr_epc4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_ibreaka0_encode_fns[] = { + Opcode_rsr_ibreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_epc4_encode_fns[] = { - Opcode_xsr_epc4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_ibreaka0_encode_fns[] = { + Opcode_wsr_ibreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_excsave4_encode_fns[] = { - Opcode_rsr_excsave4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_ibreaka0_encode_fns[] = { + Opcode_xsr_ibreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_excsave4_encode_fns[] = { - Opcode_wsr_excsave4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_ibreaka1_encode_fns[] = { + Opcode_rsr_ibreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_excsave4_encode_fns[] = { - Opcode_xsr_excsave4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_ibreaka1_encode_fns[] = { + Opcode_wsr_ibreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_epc5_encode_fns[] = { - Opcode_rsr_epc5_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_ibreaka1_encode_fns[] = { + Opcode_xsr_ibreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_epc5_encode_fns[] = { - Opcode_wsr_epc5_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_ibreakenable_encode_fns[] = { + Opcode_rsr_ibreakenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_epc5_encode_fns[] = { - Opcode_xsr_epc5_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_ibreakenable_encode_fns[] = { + Opcode_wsr_ibreakenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_excsave5_encode_fns[] = { - Opcode_rsr_excsave5_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_ibreakenable_encode_fns[] = { + Opcode_xsr_ibreakenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_excsave5_encode_fns[] = { - Opcode_wsr_excsave5_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_debugcause_encode_fns[] = { + Opcode_rsr_debugcause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_excsave5_encode_fns[] = { - Opcode_xsr_excsave5_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_debugcause_encode_fns[] = { + Opcode_wsr_debugcause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_epc6_encode_fns[] = { - Opcode_rsr_epc6_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_debugcause_encode_fns[] = { + Opcode_xsr_debugcause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_epc6_encode_fns[] = { - Opcode_wsr_epc6_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_icount_encode_fns[] = { + Opcode_rsr_icount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_epc6_encode_fns[] = { - Opcode_xsr_epc6_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_icount_encode_fns[] = { + Opcode_wsr_icount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_excsave6_encode_fns[] = { - Opcode_rsr_excsave6_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_icount_encode_fns[] = { + Opcode_xsr_icount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_excsave6_encode_fns[] = { - Opcode_wsr_excsave6_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_icountlevel_encode_fns[] = { + Opcode_rsr_icountlevel_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_excsave6_encode_fns[] = { - Opcode_xsr_excsave6_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_icountlevel_encode_fns[] = { + Opcode_wsr_icountlevel_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_epc7_encode_fns[] = { - Opcode_rsr_epc7_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_icountlevel_encode_fns[] = { + Opcode_xsr_icountlevel_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_epc7_encode_fns[] = { - Opcode_wsr_epc7_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_ddr_encode_fns[] = { + Opcode_rsr_ddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_epc7_encode_fns[] = { - Opcode_xsr_epc7_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_ddr_encode_fns[] = { + Opcode_wsr_ddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_excsave7_encode_fns[] = { - Opcode_rsr_excsave7_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_ddr_encode_fns[] = { + Opcode_xsr_ddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_excsave7_encode_fns[] = { - Opcode_wsr_excsave7_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rfdo_encode_fns[] = { + Opcode_rfdo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_excsave7_encode_fns[] = { - Opcode_xsr_excsave7_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rfdd_encode_fns[] = { + Opcode_rfdd_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_eps2_encode_fns[] = { - Opcode_rsr_eps2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_mmid_encode_fns[] = { + Opcode_wsr_mmid_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_eps2_encode_fns[] = { - Opcode_wsr_eps2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_andb_encode_fns[] = { + Opcode_andb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_eps2_encode_fns[] = { - Opcode_xsr_eps2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_andbc_encode_fns[] = { + Opcode_andbc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_eps3_encode_fns[] = { - Opcode_rsr_eps3_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_orb_encode_fns[] = { + Opcode_orb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_eps3_encode_fns[] = { - Opcode_wsr_eps3_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_orbc_encode_fns[] = { + Opcode_orbc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_eps3_encode_fns[] = { - Opcode_xsr_eps3_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xorb_encode_fns[] = { + Opcode_xorb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_eps4_encode_fns[] = { - Opcode_rsr_eps4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_any4_encode_fns[] = { + Opcode_any4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_eps4_encode_fns[] = { - Opcode_wsr_eps4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_all4_encode_fns[] = { + Opcode_all4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_eps4_encode_fns[] = { - Opcode_xsr_eps4_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_any8_encode_fns[] = { + Opcode_any8_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_eps5_encode_fns[] = { - Opcode_rsr_eps5_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_all8_encode_fns[] = { + Opcode_all8_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_eps5_encode_fns[] = { - Opcode_wsr_eps5_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bf_encode_fns[] = { + Opcode_bf_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_eps5_encode_fns[] = { - Opcode_xsr_eps5_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bt_encode_fns[] = { + Opcode_bt_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_eps6_encode_fns[] = { - Opcode_rsr_eps6_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_movf_encode_fns[] = { + Opcode_movf_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_eps6_encode_fns[] = { - Opcode_wsr_eps6_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_movt_encode_fns[] = { + Opcode_movt_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_eps6_encode_fns[] = { - Opcode_xsr_eps6_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_br_encode_fns[] = { + Opcode_rsr_br_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_eps7_encode_fns[] = { - Opcode_rsr_eps7_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_br_encode_fns[] = { + Opcode_wsr_br_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_eps7_encode_fns[] = { - Opcode_wsr_eps7_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_br_encode_fns[] = { + Opcode_xsr_br_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_eps7_encode_fns[] = { - Opcode_xsr_eps7_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_ccount_encode_fns[] = { + Opcode_rsr_ccount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_excvaddr_encode_fns[] = { - Opcode_rsr_excvaddr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_ccount_encode_fns[] = { + Opcode_wsr_ccount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_excvaddr_encode_fns[] = { - Opcode_wsr_excvaddr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_ccount_encode_fns[] = { + Opcode_xsr_ccount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_excvaddr_encode_fns[] = { - Opcode_xsr_excvaddr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_ccompare0_encode_fns[] = { + Opcode_rsr_ccompare0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_depc_encode_fns[] = { - Opcode_rsr_depc_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_ccompare0_encode_fns[] = { + Opcode_wsr_ccompare0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_depc_encode_fns[] = { - Opcode_wsr_depc_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_ccompare0_encode_fns[] = { + Opcode_xsr_ccompare0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_depc_encode_fns[] = { - Opcode_xsr_depc_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_ccompare1_encode_fns[] = { + Opcode_rsr_ccompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_exccause_encode_fns[] = { - Opcode_rsr_exccause_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_ccompare1_encode_fns[] = { + Opcode_wsr_ccompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_exccause_encode_fns[] = { - Opcode_wsr_exccause_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_ccompare1_encode_fns[] = { + Opcode_xsr_ccompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_exccause_encode_fns[] = { - Opcode_xsr_exccause_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_ccompare2_encode_fns[] = { + Opcode_rsr_ccompare2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_misc0_encode_fns[] = { - Opcode_rsr_misc0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_ccompare2_encode_fns[] = { + Opcode_wsr_ccompare2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_misc0_encode_fns[] = { - Opcode_wsr_misc0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_ccompare2_encode_fns[] = { + Opcode_xsr_ccompare2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_misc0_encode_fns[] = { - Opcode_xsr_misc0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ipf_encode_fns[] = { + Opcode_ipf_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_misc1_encode_fns[] = { - Opcode_rsr_misc1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ihi_encode_fns[] = { + Opcode_ihi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_misc1_encode_fns[] = { - Opcode_wsr_misc1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ipfl_encode_fns[] = { + Opcode_ipfl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_misc1_encode_fns[] = { - Opcode_xsr_misc1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ihu_encode_fns[] = { + Opcode_ihu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_prid_encode_fns[] = { - Opcode_rsr_prid_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_iiu_encode_fns[] = { + Opcode_iiu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_vecbase_encode_fns[] = { - Opcode_rsr_vecbase_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_iii_encode_fns[] = { + Opcode_iii_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_vecbase_encode_fns[] = { - Opcode_wsr_vecbase_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_lict_encode_fns[] = { + Opcode_lict_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_vecbase_encode_fns[] = { - Opcode_xsr_vecbase_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_licw_encode_fns[] = { + Opcode_licw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_mul16u_encode_fns[] = { - Opcode_mul16u_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_sict_encode_fns[] = { + Opcode_sict_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_mul16s_encode_fns[] = { - Opcode_mul16s_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_sicw_encode_fns[] = { + Opcode_sicw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rfi_encode_fns[] = { - Opcode_rfi_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_dhwb_encode_fns[] = { + Opcode_dhwb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_waiti_encode_fns[] = { - Opcode_waiti_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_dhwbi_encode_fns[] = { + Opcode_dhwbi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_interrupt_encode_fns[] = { - Opcode_rsr_interrupt_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_diwb_encode_fns[] = { + Opcode_diwb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_intset_encode_fns[] = { - Opcode_wsr_intset_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_diwbi_encode_fns[] = { + Opcode_diwbi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_intclear_encode_fns[] = { - Opcode_wsr_intclear_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_dhi_encode_fns[] = { + Opcode_dhi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_intenable_encode_fns[] = { - Opcode_rsr_intenable_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_dii_encode_fns[] = { + Opcode_dii_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_intenable_encode_fns[] = { - Opcode_wsr_intenable_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_dpfr_encode_fns[] = { + Opcode_dpfr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_intenable_encode_fns[] = { - Opcode_xsr_intenable_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_dpfw_encode_fns[] = { + Opcode_dpfw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_break_encode_fns[] = { - Opcode_break_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_dpfro_encode_fns[] = { + Opcode_dpfro_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_break_n_encode_fns[] = { - 0, 0, Opcode_break_n_Slot_inst16b_encode +xtensa_opcode_encode_fn Opcode_dpfwo_encode_fns[] = { + Opcode_dpfwo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_dbreaka0_encode_fns[] = { - Opcode_rsr_dbreaka0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_dpfl_encode_fns[] = { + Opcode_dpfl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_dbreaka0_encode_fns[] = { - Opcode_wsr_dbreaka0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_dhu_encode_fns[] = { + Opcode_dhu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_dbreaka0_encode_fns[] = { - Opcode_xsr_dbreaka0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_diu_encode_fns[] = { + Opcode_diu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_dbreakc0_encode_fns[] = { - Opcode_rsr_dbreakc0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_sdct_encode_fns[] = { + Opcode_sdct_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_dbreakc0_encode_fns[] = { - Opcode_wsr_dbreakc0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ldct_encode_fns[] = { + Opcode_ldct_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_dbreakc0_encode_fns[] = { - Opcode_xsr_dbreakc0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_ptevaddr_encode_fns[] = { + Opcode_wsr_ptevaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_dbreaka1_encode_fns[] = { - Opcode_rsr_dbreaka1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_ptevaddr_encode_fns[] = { + Opcode_rsr_ptevaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_dbreaka1_encode_fns[] = { - Opcode_wsr_dbreaka1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_ptevaddr_encode_fns[] = { + Opcode_xsr_ptevaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_dbreaka1_encode_fns[] = { - Opcode_xsr_dbreaka1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_rasid_encode_fns[] = { + Opcode_rsr_rasid_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_dbreakc1_encode_fns[] = { - Opcode_rsr_dbreakc1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_rasid_encode_fns[] = { + Opcode_wsr_rasid_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_dbreakc1_encode_fns[] = { - Opcode_wsr_dbreakc1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_rasid_encode_fns[] = { + Opcode_xsr_rasid_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_dbreakc1_encode_fns[] = { - Opcode_xsr_dbreakc1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_itlbcfg_encode_fns[] = { + Opcode_rsr_itlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_ibreaka0_encode_fns[] = { - Opcode_rsr_ibreaka0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_itlbcfg_encode_fns[] = { + Opcode_wsr_itlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_ibreaka0_encode_fns[] = { - Opcode_wsr_ibreaka0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_itlbcfg_encode_fns[] = { + Opcode_xsr_itlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_ibreaka0_encode_fns[] = { - Opcode_xsr_ibreaka0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_dtlbcfg_encode_fns[] = { + Opcode_rsr_dtlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_ibreaka1_encode_fns[] = { - Opcode_rsr_ibreaka1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_dtlbcfg_encode_fns[] = { + Opcode_wsr_dtlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_ibreaka1_encode_fns[] = { - Opcode_wsr_ibreaka1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_dtlbcfg_encode_fns[] = { + Opcode_xsr_dtlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_ibreaka1_encode_fns[] = { - Opcode_xsr_ibreaka1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_idtlb_encode_fns[] = { + Opcode_idtlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_ibreakenable_encode_fns[] = { - Opcode_rsr_ibreakenable_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_pdtlb_encode_fns[] = { + Opcode_pdtlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_ibreakenable_encode_fns[] = { - Opcode_wsr_ibreakenable_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rdtlb0_encode_fns[] = { + Opcode_rdtlb0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_ibreakenable_encode_fns[] = { - Opcode_xsr_ibreakenable_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rdtlb1_encode_fns[] = { + Opcode_rdtlb1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_debugcause_encode_fns[] = { - Opcode_rsr_debugcause_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wdtlb_encode_fns[] = { + Opcode_wdtlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_debugcause_encode_fns[] = { - Opcode_wsr_debugcause_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_iitlb_encode_fns[] = { + Opcode_iitlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_debugcause_encode_fns[] = { - Opcode_xsr_debugcause_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_pitlb_encode_fns[] = { + Opcode_pitlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_icount_encode_fns[] = { - Opcode_rsr_icount_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ritlb0_encode_fns[] = { + Opcode_ritlb0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_icount_encode_fns[] = { - Opcode_wsr_icount_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ritlb1_encode_fns[] = { + Opcode_ritlb1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_icount_encode_fns[] = { - Opcode_xsr_icount_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_witlb_encode_fns[] = { + Opcode_witlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_icountlevel_encode_fns[] = { - Opcode_rsr_icountlevel_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ldpte_encode_fns[] = { + Opcode_ldpte_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_icountlevel_encode_fns[] = { - Opcode_wsr_icountlevel_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_hwwitlba_encode_fns[] = { + Opcode_hwwitlba_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_icountlevel_encode_fns[] = { - Opcode_xsr_icountlevel_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_hwwdtlba_encode_fns[] = { + Opcode_hwwdtlba_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_ddr_encode_fns[] = { - Opcode_rsr_ddr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_cpenable_encode_fns[] = { + Opcode_rsr_cpenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_ddr_encode_fns[] = { - Opcode_wsr_ddr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_cpenable_encode_fns[] = { + Opcode_wsr_cpenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_ddr_encode_fns[] = { - Opcode_xsr_ddr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_cpenable_encode_fns[] = { + Opcode_xsr_cpenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rfdo_encode_fns[] = { - Opcode_rfdo_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_clamps_encode_fns[] = { + Opcode_clamps_Slot_inst_encode, 0, 0, Opcode_clamps_Slot_xt_flix64_slot0_encode, Opcode_clamps_Slot_xt_flix64_slot0_encode, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rfdd_encode_fns[] = { - Opcode_rfdd_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_min_encode_fns[] = { + Opcode_min_Slot_inst_encode, 0, 0, Opcode_min_Slot_xt_flix64_slot0_encode, Opcode_min_Slot_xt_flix64_slot0_encode, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_mmid_encode_fns[] = { - Opcode_wsr_mmid_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_max_encode_fns[] = { + Opcode_max_Slot_inst_encode, 0, 0, Opcode_max_Slot_xt_flix64_slot0_encode, Opcode_max_Slot_xt_flix64_slot0_encode, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_ccount_encode_fns[] = { - Opcode_rsr_ccount_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_minu_encode_fns[] = { + Opcode_minu_Slot_inst_encode, 0, 0, Opcode_minu_Slot_xt_flix64_slot0_encode, Opcode_minu_Slot_xt_flix64_slot0_encode, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_ccount_encode_fns[] = { - Opcode_wsr_ccount_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_maxu_encode_fns[] = { + Opcode_maxu_Slot_inst_encode, 0, 0, Opcode_maxu_Slot_xt_flix64_slot0_encode, Opcode_maxu_Slot_xt_flix64_slot0_encode, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_ccount_encode_fns[] = { - Opcode_xsr_ccount_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_nsa_encode_fns[] = { + Opcode_nsa_Slot_inst_encode, 0, 0, Opcode_nsa_Slot_xt_flix64_slot0_encode, Opcode_nsa_Slot_xt_flix64_slot0_encode, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_ccompare0_encode_fns[] = { - Opcode_rsr_ccompare0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_nsau_encode_fns[] = { + Opcode_nsau_Slot_inst_encode, 0, 0, Opcode_nsau_Slot_xt_flix64_slot0_encode, Opcode_nsau_Slot_xt_flix64_slot0_encode, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_ccompare0_encode_fns[] = { - Opcode_wsr_ccompare0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_sext_encode_fns[] = { + Opcode_sext_Slot_inst_encode, 0, 0, Opcode_sext_Slot_xt_flix64_slot0_encode, Opcode_sext_Slot_xt_flix64_slot0_encode, Opcode_sext_Slot_xt_flix64_slot1_encode, Opcode_sext_Slot_xt_flix64_slot2_encode, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_ccompare0_encode_fns[] = { - Opcode_xsr_ccompare0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_l32ai_encode_fns[] = { + Opcode_l32ai_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_ccompare1_encode_fns[] = { - Opcode_rsr_ccompare1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_s32ri_encode_fns[] = { + Opcode_s32ri_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_ccompare1_encode_fns[] = { - Opcode_wsr_ccompare1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_s32c1i_encode_fns[] = { + Opcode_s32c1i_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_ccompare1_encode_fns[] = { - Opcode_xsr_ccompare1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rsr_scompare1_encode_fns[] = { + Opcode_rsr_scompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_ccompare2_encode_fns[] = { - Opcode_rsr_ccompare2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wsr_scompare1_encode_fns[] = { + Opcode_wsr_scompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_ccompare2_encode_fns[] = { - Opcode_wsr_ccompare2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_xsr_scompare1_encode_fns[] = { + Opcode_xsr_scompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_ccompare2_encode_fns[] = { - Opcode_xsr_ccompare2_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_quou_encode_fns[] = { + Opcode_quou_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ipf_encode_fns[] = { - Opcode_ipf_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_quos_encode_fns[] = { + Opcode_quos_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ihi_encode_fns[] = { - Opcode_ihi_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_remu_encode_fns[] = { + Opcode_remu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ipfl_encode_fns[] = { - Opcode_ipfl_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rems_encode_fns[] = { + Opcode_rems_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ihu_encode_fns[] = { - Opcode_ihu_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mull_encode_fns[] = { + Opcode_mull_Slot_inst_encode, 0, 0, Opcode_mull_Slot_xt_flix64_slot0_encode, Opcode_mull_Slot_xt_flix64_slot0_encode, Opcode_mull_Slot_xt_flix64_slot1_encode, 0, 0 }; -xtensa_opcode_encode_fn Opcode_iiu_encode_fns[] = { - Opcode_iiu_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_muluh_encode_fns[] = { + Opcode_muluh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_iii_encode_fns[] = { - Opcode_iii_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mulsh_encode_fns[] = { + Opcode_mulsh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_lict_encode_fns[] = { - Opcode_lict_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rur_fcr_encode_fns[] = { + Opcode_rur_fcr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_licw_encode_fns[] = { - Opcode_licw_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wur_fcr_encode_fns[] = { + Opcode_wur_fcr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_sict_encode_fns[] = { - Opcode_sict_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rur_fsr_encode_fns[] = { + Opcode_rur_fsr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_sicw_encode_fns[] = { - Opcode_sicw_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wur_fsr_encode_fns[] = { + Opcode_wur_fsr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dhwb_encode_fns[] = { - Opcode_dhwb_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_add_s_encode_fns[] = { + Opcode_add_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dhwbi_encode_fns[] = { - Opcode_dhwbi_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_sub_s_encode_fns[] = { + Opcode_sub_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_diwb_encode_fns[] = { - Opcode_diwb_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mul_s_encode_fns[] = { + Opcode_mul_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_diwbi_encode_fns[] = { - Opcode_diwbi_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_madd_s_encode_fns[] = { + Opcode_madd_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dhi_encode_fns[] = { - Opcode_dhi_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_msub_s_encode_fns[] = { + Opcode_msub_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dii_encode_fns[] = { - Opcode_dii_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_movf_s_encode_fns[] = { + Opcode_movf_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dpfr_encode_fns[] = { - Opcode_dpfr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_movt_s_encode_fns[] = { + Opcode_movt_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dpfw_encode_fns[] = { - Opcode_dpfw_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_moveqz_s_encode_fns[] = { + Opcode_moveqz_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dpfro_encode_fns[] = { - Opcode_dpfro_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_movnez_s_encode_fns[] = { + Opcode_movnez_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dpfwo_encode_fns[] = { - Opcode_dpfwo_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_movltz_s_encode_fns[] = { + Opcode_movltz_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dpfl_encode_fns[] = { - Opcode_dpfl_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_movgez_s_encode_fns[] = { + Opcode_movgez_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_dhu_encode_fns[] = { - Opcode_dhu_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_abs_s_encode_fns[] = { + Opcode_abs_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_diu_encode_fns[] = { - Opcode_diu_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_mov_s_encode_fns[] = { + Opcode_mov_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_sdct_encode_fns[] = { - Opcode_sdct_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_neg_s_encode_fns[] = { + Opcode_neg_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ldct_encode_fns[] = { - Opcode_ldct_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_un_s_encode_fns[] = { + Opcode_un_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_ptevaddr_encode_fns[] = { - Opcode_wsr_ptevaddr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_oeq_s_encode_fns[] = { + Opcode_oeq_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_ptevaddr_encode_fns[] = { - Opcode_rsr_ptevaddr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ueq_s_encode_fns[] = { + Opcode_ueq_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_ptevaddr_encode_fns[] = { - Opcode_xsr_ptevaddr_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_olt_s_encode_fns[] = { + Opcode_olt_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_rasid_encode_fns[] = { - Opcode_rsr_rasid_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ult_s_encode_fns[] = { + Opcode_ult_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_rasid_encode_fns[] = { - Opcode_wsr_rasid_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ole_s_encode_fns[] = { + Opcode_ole_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_rasid_encode_fns[] = { - Opcode_xsr_rasid_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ule_s_encode_fns[] = { + Opcode_ule_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_itlbcfg_encode_fns[] = { - Opcode_rsr_itlbcfg_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_float_s_encode_fns[] = { + Opcode_float_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_itlbcfg_encode_fns[] = { - Opcode_wsr_itlbcfg_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ufloat_s_encode_fns[] = { + Opcode_ufloat_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_itlbcfg_encode_fns[] = { - Opcode_xsr_itlbcfg_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_round_s_encode_fns[] = { + Opcode_round_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rsr_dtlbcfg_encode_fns[] = { - Opcode_rsr_dtlbcfg_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ceil_s_encode_fns[] = { + Opcode_ceil_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wsr_dtlbcfg_encode_fns[] = { - Opcode_wsr_dtlbcfg_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_floor_s_encode_fns[] = { + Opcode_floor_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_xsr_dtlbcfg_encode_fns[] = { - Opcode_xsr_dtlbcfg_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_trunc_s_encode_fns[] = { + Opcode_trunc_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_idtlb_encode_fns[] = { - Opcode_idtlb_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_utrunc_s_encode_fns[] = { + Opcode_utrunc_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_pdtlb_encode_fns[] = { - Opcode_pdtlb_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_rfr_encode_fns[] = { + Opcode_rfr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rdtlb0_encode_fns[] = { - Opcode_rdtlb0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_wfr_encode_fns[] = { + Opcode_wfr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_rdtlb1_encode_fns[] = { - Opcode_rdtlb1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_lsi_encode_fns[] = { + Opcode_lsi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_wdtlb_encode_fns[] = { - Opcode_wdtlb_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_lsiu_encode_fns[] = { + Opcode_lsiu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_iitlb_encode_fns[] = { - Opcode_iitlb_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_lsx_encode_fns[] = { + Opcode_lsx_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_pitlb_encode_fns[] = { - Opcode_pitlb_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_lsxu_encode_fns[] = { + Opcode_lsxu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ritlb0_encode_fns[] = { - Opcode_ritlb0_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ssi_encode_fns[] = { + Opcode_ssi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ritlb1_encode_fns[] = { - Opcode_ritlb1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ssiu_encode_fns[] = { + Opcode_ssiu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_witlb_encode_fns[] = { - Opcode_witlb_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ssx_encode_fns[] = { + Opcode_ssx_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_ldpte_encode_fns[] = { - Opcode_ldpte_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ssxu_encode_fns[] = { + Opcode_ssxu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0 }; -xtensa_opcode_encode_fn Opcode_hwwitlba_encode_fns[] = { - Opcode_hwwitlba_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_beqz_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_beqz_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_hwwdtlba_encode_fns[] = { - Opcode_hwwdtlba_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bnez_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bnez_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_rsr_cpenable_encode_fns[] = { - Opcode_rsr_cpenable_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bgez_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bgez_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_wsr_cpenable_encode_fns[] = { - Opcode_wsr_cpenable_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bltz_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bltz_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_xsr_cpenable_encode_fns[] = { - Opcode_xsr_cpenable_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_beqi_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_beqi_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_clamps_encode_fns[] = { - Opcode_clamps_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bnei_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bnei_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_min_encode_fns[] = { - Opcode_min_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bgei_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bgei_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_max_encode_fns[] = { - Opcode_max_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_blti_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_blti_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_minu_encode_fns[] = { - Opcode_minu_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bgeui_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bgeui_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_maxu_encode_fns[] = { - Opcode_maxu_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bltui_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bltui_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_nsa_encode_fns[] = { - Opcode_nsa_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bbci_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bbci_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_nsau_encode_fns[] = { - Opcode_nsau_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bbsi_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bbsi_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_sext_encode_fns[] = { - Opcode_sext_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_beq_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_beq_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_l32ai_encode_fns[] = { - Opcode_l32ai_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bne_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bne_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_s32ri_encode_fns[] = { - Opcode_s32ri_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bge_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bge_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_s32c1i_encode_fns[] = { - Opcode_s32c1i_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_blt_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_blt_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_rsr_scompare1_encode_fns[] = { - Opcode_rsr_scompare1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bgeu_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bgeu_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_wsr_scompare1_encode_fns[] = { - Opcode_wsr_scompare1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bltu_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bltu_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_xsr_scompare1_encode_fns[] = { - Opcode_xsr_scompare1_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bany_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bany_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_quou_encode_fns[] = { - Opcode_quou_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bnone_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bnone_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_quos_encode_fns[] = { - Opcode_quos_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_ball_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_ball_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_remu_encode_fns[] = { - Opcode_remu_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bnall_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bnall_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_rems_encode_fns[] = { - Opcode_rems_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bbc_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bbc_w18_Slot_xt_flix64_slot3_encode }; -xtensa_opcode_encode_fn Opcode_mull_encode_fns[] = { - Opcode_mull_Slot_inst_encode, 0, 0 +xtensa_opcode_encode_fn Opcode_bbs_w18_encode_fns[] = { + 0, 0, 0, 0, 0, 0, 0, Opcode_bbs_w18_Slot_xt_flix64_slot3_encode }; /* Opcode table. */ static xtensa_opcode_internal opcodes[] = { - { "excw", ICLASS_xt_iclass_excw, + { "excw", 0 /* xt_iclass_excw */, 0, Opcode_excw_encode_fns, 0, 0 }, - { "rfe", ICLASS_xt_iclass_rfe, + { "rfe", 1 /* xt_iclass_rfe */, XTENSA_OPCODE_IS_JUMP, Opcode_rfe_encode_fns, 0, 0 }, - { "rfde", ICLASS_xt_iclass_rfde, + { "rfde", 2 /* xt_iclass_rfde */, XTENSA_OPCODE_IS_JUMP, Opcode_rfde_encode_fns, 0, 0 }, - { "syscall", ICLASS_xt_iclass_syscall, + { "syscall", 3 /* xt_iclass_syscall */, 0, Opcode_syscall_encode_fns, 0, 0 }, - { "simcall", ICLASS_xt_iclass_simcall, + { "simcall", 4 /* xt_iclass_simcall */, 0, Opcode_simcall_encode_fns, 0, 0 }, - { "call12", ICLASS_xt_iclass_call12, + { "call12", 5 /* xt_iclass_call12 */, XTENSA_OPCODE_IS_CALL, Opcode_call12_encode_fns, 0, 0 }, - { "call8", ICLASS_xt_iclass_call8, + { "call8", 6 /* xt_iclass_call8 */, XTENSA_OPCODE_IS_CALL, Opcode_call8_encode_fns, 0, 0 }, - { "call4", ICLASS_xt_iclass_call4, + { "call4", 7 /* xt_iclass_call4 */, XTENSA_OPCODE_IS_CALL, Opcode_call4_encode_fns, 0, 0 }, - { "callx12", ICLASS_xt_iclass_callx12, + { "callx12", 8 /* xt_iclass_callx12 */, XTENSA_OPCODE_IS_CALL, Opcode_callx12_encode_fns, 0, 0 }, - { "callx8", ICLASS_xt_iclass_callx8, + { "callx8", 9 /* xt_iclass_callx8 */, XTENSA_OPCODE_IS_CALL, Opcode_callx8_encode_fns, 0, 0 }, - { "callx4", ICLASS_xt_iclass_callx4, + { "callx4", 10 /* xt_iclass_callx4 */, XTENSA_OPCODE_IS_CALL, Opcode_callx4_encode_fns, 0, 0 }, - { "entry", ICLASS_xt_iclass_entry, + { "entry", 11 /* xt_iclass_entry */, 0, Opcode_entry_encode_fns, 0, 0 }, - { "movsp", ICLASS_xt_iclass_movsp, + { "movsp", 12 /* xt_iclass_movsp */, 0, Opcode_movsp_encode_fns, 0, 0 }, - { "rotw", ICLASS_xt_iclass_rotw, + { "rotw", 13 /* xt_iclass_rotw */, 0, Opcode_rotw_encode_fns, 0, 0 }, - { "retw", ICLASS_xt_iclass_retw, + { "retw", 14 /* xt_iclass_retw */, XTENSA_OPCODE_IS_JUMP, Opcode_retw_encode_fns, 0, 0 }, - { "retw.n", ICLASS_xt_iclass_retw, + { "retw.n", 14 /* xt_iclass_retw */, XTENSA_OPCODE_IS_JUMP, Opcode_retw_n_encode_fns, 0, 0 }, - { "rfwo", ICLASS_xt_iclass_rfwou, + { "rfwo", 15 /* xt_iclass_rfwou */, XTENSA_OPCODE_IS_JUMP, Opcode_rfwo_encode_fns, 0, 0 }, - { "rfwu", ICLASS_xt_iclass_rfwou, + { "rfwu", 15 /* xt_iclass_rfwou */, XTENSA_OPCODE_IS_JUMP, Opcode_rfwu_encode_fns, 0, 0 }, - { "l32e", ICLASS_xt_iclass_l32e, + { "l32e", 16 /* xt_iclass_l32e */, 0, Opcode_l32e_encode_fns, 0, 0 }, - { "s32e", ICLASS_xt_iclass_s32e, + { "s32e", 17 /* xt_iclass_s32e */, 0, Opcode_s32e_encode_fns, 0, 0 }, - { "rsr.windowbase", ICLASS_xt_iclass_rsr_windowbase, + { "rsr.windowbase", 18 /* xt_iclass_rsr.windowbase */, 0, Opcode_rsr_windowbase_encode_fns, 0, 0 }, - { "wsr.windowbase", ICLASS_xt_iclass_wsr_windowbase, + { "wsr.windowbase", 19 /* xt_iclass_wsr.windowbase */, 0, Opcode_wsr_windowbase_encode_fns, 0, 0 }, - { "xsr.windowbase", ICLASS_xt_iclass_xsr_windowbase, + { "xsr.windowbase", 20 /* xt_iclass_xsr.windowbase */, 0, Opcode_xsr_windowbase_encode_fns, 0, 0 }, - { "rsr.windowstart", ICLASS_xt_iclass_rsr_windowstart, + { "rsr.windowstart", 21 /* xt_iclass_rsr.windowstart */, 0, Opcode_rsr_windowstart_encode_fns, 0, 0 }, - { "wsr.windowstart", ICLASS_xt_iclass_wsr_windowstart, + { "wsr.windowstart", 22 /* xt_iclass_wsr.windowstart */, 0, Opcode_wsr_windowstart_encode_fns, 0, 0 }, - { "xsr.windowstart", ICLASS_xt_iclass_xsr_windowstart, + { "xsr.windowstart", 23 /* xt_iclass_xsr.windowstart */, 0, Opcode_xsr_windowstart_encode_fns, 0, 0 }, - { "add.n", ICLASS_xt_iclass_add_n, + { "add.n", 24 /* xt_iclass_add.n */, 0, Opcode_add_n_encode_fns, 0, 0 }, - { "addi.n", ICLASS_xt_iclass_addi_n, + { "addi.n", 25 /* xt_iclass_addi.n */, 0, Opcode_addi_n_encode_fns, 0, 0 }, - { "beqz.n", ICLASS_xt_iclass_bz6, + { "beqz.n", 26 /* xt_iclass_bz6 */, XTENSA_OPCODE_IS_BRANCH, Opcode_beqz_n_encode_fns, 0, 0 }, - { "bnez.n", ICLASS_xt_iclass_bz6, + { "bnez.n", 26 /* xt_iclass_bz6 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bnez_n_encode_fns, 0, 0 }, - { "ill.n", ICLASS_xt_iclass_ill_n, + { "ill.n", 27 /* xt_iclass_ill.n */, 0, Opcode_ill_n_encode_fns, 0, 0 }, - { "l32i.n", ICLASS_xt_iclass_loadi4, + { "l32i.n", 28 /* xt_iclass_loadi4 */, 0, Opcode_l32i_n_encode_fns, 0, 0 }, - { "mov.n", ICLASS_xt_iclass_mov_n, + { "mov.n", 29 /* xt_iclass_mov.n */, 0, Opcode_mov_n_encode_fns, 0, 0 }, - { "movi.n", ICLASS_xt_iclass_movi_n, + { "movi.n", 30 /* xt_iclass_movi.n */, 0, Opcode_movi_n_encode_fns, 0, 0 }, - { "nop.n", ICLASS_xt_iclass_nopn, + { "nop.n", 31 /* xt_iclass_nopn */, 0, Opcode_nop_n_encode_fns, 0, 0 }, - { "ret.n", ICLASS_xt_iclass_retn, + { "ret.n", 32 /* xt_iclass_retn */, XTENSA_OPCODE_IS_JUMP, Opcode_ret_n_encode_fns, 0, 0 }, - { "s32i.n", ICLASS_xt_iclass_storei4, + { "s32i.n", 33 /* xt_iclass_storei4 */, 0, Opcode_s32i_n_encode_fns, 0, 0 }, - { "rur.threadptr", ICLASS_rur_threadptr, + { "rur.threadptr", 34 /* rur_threadptr */, 0, Opcode_rur_threadptr_encode_fns, 0, 0 }, - { "wur.threadptr", ICLASS_wur_threadptr, + { "wur.threadptr", 35 /* wur_threadptr */, 0, Opcode_wur_threadptr_encode_fns, 0, 0 }, - { "addi", ICLASS_xt_iclass_addi, + { "addi", 36 /* xt_iclass_addi */, 0, Opcode_addi_encode_fns, 0, 0 }, - { "addmi", ICLASS_xt_iclass_addmi, + { "addmi", 37 /* xt_iclass_addmi */, 0, Opcode_addmi_encode_fns, 0, 0 }, - { "add", ICLASS_xt_iclass_addsub, + { "add", 38 /* xt_iclass_addsub */, 0, Opcode_add_encode_fns, 0, 0 }, - { "sub", ICLASS_xt_iclass_addsub, + { "sub", 38 /* xt_iclass_addsub */, 0, Opcode_sub_encode_fns, 0, 0 }, - { "addx2", ICLASS_xt_iclass_addsub, + { "addx2", 38 /* xt_iclass_addsub */, 0, Opcode_addx2_encode_fns, 0, 0 }, - { "addx4", ICLASS_xt_iclass_addsub, + { "addx4", 38 /* xt_iclass_addsub */, 0, Opcode_addx4_encode_fns, 0, 0 }, - { "addx8", ICLASS_xt_iclass_addsub, + { "addx8", 38 /* xt_iclass_addsub */, 0, Opcode_addx8_encode_fns, 0, 0 }, - { "subx2", ICLASS_xt_iclass_addsub, + { "subx2", 38 /* xt_iclass_addsub */, 0, Opcode_subx2_encode_fns, 0, 0 }, - { "subx4", ICLASS_xt_iclass_addsub, + { "subx4", 38 /* xt_iclass_addsub */, 0, Opcode_subx4_encode_fns, 0, 0 }, - { "subx8", ICLASS_xt_iclass_addsub, + { "subx8", 38 /* xt_iclass_addsub */, 0, Opcode_subx8_encode_fns, 0, 0 }, - { "and", ICLASS_xt_iclass_bit, + { "and", 39 /* xt_iclass_bit */, 0, Opcode_and_encode_fns, 0, 0 }, - { "or", ICLASS_xt_iclass_bit, + { "or", 39 /* xt_iclass_bit */, 0, Opcode_or_encode_fns, 0, 0 }, - { "xor", ICLASS_xt_iclass_bit, + { "xor", 39 /* xt_iclass_bit */, 0, Opcode_xor_encode_fns, 0, 0 }, - { "beqi", ICLASS_xt_iclass_bsi8, + { "beqi", 40 /* xt_iclass_bsi8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_beqi_encode_fns, 0, 0 }, - { "bnei", ICLASS_xt_iclass_bsi8, + { "bnei", 40 /* xt_iclass_bsi8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bnei_encode_fns, 0, 0 }, - { "bgei", ICLASS_xt_iclass_bsi8, + { "bgei", 40 /* xt_iclass_bsi8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bgei_encode_fns, 0, 0 }, - { "blti", ICLASS_xt_iclass_bsi8, + { "blti", 40 /* xt_iclass_bsi8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_blti_encode_fns, 0, 0 }, - { "bbci", ICLASS_xt_iclass_bsi8b, + { "bbci", 41 /* xt_iclass_bsi8b */, XTENSA_OPCODE_IS_BRANCH, Opcode_bbci_encode_fns, 0, 0 }, - { "bbsi", ICLASS_xt_iclass_bsi8b, + { "bbsi", 41 /* xt_iclass_bsi8b */, XTENSA_OPCODE_IS_BRANCH, Opcode_bbsi_encode_fns, 0, 0 }, - { "bgeui", ICLASS_xt_iclass_bsi8u, + { "bgeui", 42 /* xt_iclass_bsi8u */, XTENSA_OPCODE_IS_BRANCH, Opcode_bgeui_encode_fns, 0, 0 }, - { "bltui", ICLASS_xt_iclass_bsi8u, + { "bltui", 42 /* xt_iclass_bsi8u */, XTENSA_OPCODE_IS_BRANCH, Opcode_bltui_encode_fns, 0, 0 }, - { "beq", ICLASS_xt_iclass_bst8, + { "beq", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_beq_encode_fns, 0, 0 }, - { "bne", ICLASS_xt_iclass_bst8, + { "bne", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bne_encode_fns, 0, 0 }, - { "bge", ICLASS_xt_iclass_bst8, + { "bge", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bge_encode_fns, 0, 0 }, - { "blt", ICLASS_xt_iclass_bst8, + { "blt", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_blt_encode_fns, 0, 0 }, - { "bgeu", ICLASS_xt_iclass_bst8, + { "bgeu", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bgeu_encode_fns, 0, 0 }, - { "bltu", ICLASS_xt_iclass_bst8, + { "bltu", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bltu_encode_fns, 0, 0 }, - { "bany", ICLASS_xt_iclass_bst8, + { "bany", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bany_encode_fns, 0, 0 }, - { "bnone", ICLASS_xt_iclass_bst8, + { "bnone", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bnone_encode_fns, 0, 0 }, - { "ball", ICLASS_xt_iclass_bst8, + { "ball", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_ball_encode_fns, 0, 0 }, - { "bnall", ICLASS_xt_iclass_bst8, + { "bnall", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bnall_encode_fns, 0, 0 }, - { "bbc", ICLASS_xt_iclass_bst8, + { "bbc", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bbc_encode_fns, 0, 0 }, - { "bbs", ICLASS_xt_iclass_bst8, + { "bbs", 43 /* xt_iclass_bst8 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bbs_encode_fns, 0, 0 }, - { "beqz", ICLASS_xt_iclass_bsz12, + { "beqz", 44 /* xt_iclass_bsz12 */, XTENSA_OPCODE_IS_BRANCH, Opcode_beqz_encode_fns, 0, 0 }, - { "bnez", ICLASS_xt_iclass_bsz12, + { "bnez", 44 /* xt_iclass_bsz12 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bnez_encode_fns, 0, 0 }, - { "bgez", ICLASS_xt_iclass_bsz12, + { "bgez", 44 /* xt_iclass_bsz12 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bgez_encode_fns, 0, 0 }, - { "bltz", ICLASS_xt_iclass_bsz12, + { "bltz", 44 /* xt_iclass_bsz12 */, XTENSA_OPCODE_IS_BRANCH, Opcode_bltz_encode_fns, 0, 0 }, - { "call0", ICLASS_xt_iclass_call0, + { "call0", 45 /* xt_iclass_call0 */, XTENSA_OPCODE_IS_CALL, Opcode_call0_encode_fns, 0, 0 }, - { "callx0", ICLASS_xt_iclass_callx0, + { "callx0", 46 /* xt_iclass_callx0 */, XTENSA_OPCODE_IS_CALL, Opcode_callx0_encode_fns, 0, 0 }, - { "extui", ICLASS_xt_iclass_exti, + { "extui", 47 /* xt_iclass_exti */, 0, Opcode_extui_encode_fns, 0, 0 }, - { "ill", ICLASS_xt_iclass_ill, + { "ill", 48 /* xt_iclass_ill */, 0, Opcode_ill_encode_fns, 0, 0 }, - { "j", ICLASS_xt_iclass_jump, + { "j", 49 /* xt_iclass_jump */, XTENSA_OPCODE_IS_JUMP, Opcode_j_encode_fns, 0, 0 }, - { "jx", ICLASS_xt_iclass_jumpx, + { "jx", 50 /* xt_iclass_jumpx */, XTENSA_OPCODE_IS_JUMP, Opcode_jx_encode_fns, 0, 0 }, - { "l16ui", ICLASS_xt_iclass_l16ui, + { "l16ui", 51 /* xt_iclass_l16ui */, 0, Opcode_l16ui_encode_fns, 0, 0 }, - { "l16si", ICLASS_xt_iclass_l16si, + { "l16si", 52 /* xt_iclass_l16si */, 0, Opcode_l16si_encode_fns, 0, 0 }, - { "l32i", ICLASS_xt_iclass_l32i, + { "l32i", 53 /* xt_iclass_l32i */, 0, Opcode_l32i_encode_fns, 0, 0 }, - { "l32r", ICLASS_xt_iclass_l32r, + { "l32r", 54 /* xt_iclass_l32r */, 0, Opcode_l32r_encode_fns, 0, 0 }, - { "l8ui", ICLASS_xt_iclass_l8i, + { "l8ui", 55 /* xt_iclass_l8i */, 0, Opcode_l8ui_encode_fns, 0, 0 }, - { "loop", ICLASS_xt_iclass_loop, + { "loop", 56 /* xt_iclass_loop */, XTENSA_OPCODE_IS_LOOP, Opcode_loop_encode_fns, 0, 0 }, - { "loopnez", ICLASS_xt_iclass_loopz, + { "loopnez", 57 /* xt_iclass_loopz */, XTENSA_OPCODE_IS_LOOP, Opcode_loopnez_encode_fns, 0, 0 }, - { "loopgtz", ICLASS_xt_iclass_loopz, + { "loopgtz", 57 /* xt_iclass_loopz */, XTENSA_OPCODE_IS_LOOP, Opcode_loopgtz_encode_fns, 0, 0 }, - { "movi", ICLASS_xt_iclass_movi, + { "movi", 58 /* xt_iclass_movi */, 0, Opcode_movi_encode_fns, 0, 0 }, - { "moveqz", ICLASS_xt_iclass_movz, + { "moveqz", 59 /* xt_iclass_movz */, 0, Opcode_moveqz_encode_fns, 0, 0 }, - { "movnez", ICLASS_xt_iclass_movz, + { "movnez", 59 /* xt_iclass_movz */, 0, Opcode_movnez_encode_fns, 0, 0 }, - { "movltz", ICLASS_xt_iclass_movz, + { "movltz", 59 /* xt_iclass_movz */, 0, Opcode_movltz_encode_fns, 0, 0 }, - { "movgez", ICLASS_xt_iclass_movz, + { "movgez", 59 /* xt_iclass_movz */, 0, Opcode_movgez_encode_fns, 0, 0 }, - { "neg", ICLASS_xt_iclass_neg, + { "neg", 60 /* xt_iclass_neg */, 0, Opcode_neg_encode_fns, 0, 0 }, - { "abs", ICLASS_xt_iclass_neg, + { "abs", 60 /* xt_iclass_neg */, 0, Opcode_abs_encode_fns, 0, 0 }, - { "nop", ICLASS_xt_iclass_nop, + { "nop", 61 /* xt_iclass_nop */, 0, Opcode_nop_encode_fns, 0, 0 }, - { "ret", ICLASS_xt_iclass_return, + { "ret", 62 /* xt_iclass_return */, XTENSA_OPCODE_IS_JUMP, Opcode_ret_encode_fns, 0, 0 }, - { "s16i", ICLASS_xt_iclass_s16i, + { "s16i", 63 /* xt_iclass_s16i */, 0, Opcode_s16i_encode_fns, 0, 0 }, - { "s32i", ICLASS_xt_iclass_s32i, + { "s32i", 64 /* xt_iclass_s32i */, 0, Opcode_s32i_encode_fns, 0, 0 }, - { "s8i", ICLASS_xt_iclass_s8i, + { "s8i", 65 /* xt_iclass_s8i */, 0, Opcode_s8i_encode_fns, 0, 0 }, - { "ssr", ICLASS_xt_iclass_sar, + { "ssr", 66 /* xt_iclass_sar */, 0, Opcode_ssr_encode_fns, 0, 0 }, - { "ssl", ICLASS_xt_iclass_sar, + { "ssl", 66 /* xt_iclass_sar */, 0, Opcode_ssl_encode_fns, 0, 0 }, - { "ssa8l", ICLASS_xt_iclass_sar, + { "ssa8l", 66 /* xt_iclass_sar */, 0, Opcode_ssa8l_encode_fns, 0, 0 }, - { "ssa8b", ICLASS_xt_iclass_sar, + { "ssa8b", 66 /* xt_iclass_sar */, 0, Opcode_ssa8b_encode_fns, 0, 0 }, - { "ssai", ICLASS_xt_iclass_sari, + { "ssai", 67 /* xt_iclass_sari */, 0, Opcode_ssai_encode_fns, 0, 0 }, - { "sll", ICLASS_xt_iclass_shifts, + { "sll", 68 /* xt_iclass_shifts */, 0, Opcode_sll_encode_fns, 0, 0 }, - { "src", ICLASS_xt_iclass_shiftst, + { "src", 69 /* xt_iclass_shiftst */, 0, Opcode_src_encode_fns, 0, 0 }, - { "srl", ICLASS_xt_iclass_shiftt, + { "srl", 70 /* xt_iclass_shiftt */, 0, Opcode_srl_encode_fns, 0, 0 }, - { "sra", ICLASS_xt_iclass_shiftt, + { "sra", 70 /* xt_iclass_shiftt */, 0, Opcode_sra_encode_fns, 0, 0 }, - { "slli", ICLASS_xt_iclass_slli, + { "slli", 71 /* xt_iclass_slli */, 0, Opcode_slli_encode_fns, 0, 0 }, - { "srai", ICLASS_xt_iclass_srai, + { "srai", 72 /* xt_iclass_srai */, 0, Opcode_srai_encode_fns, 0, 0 }, - { "srli", ICLASS_xt_iclass_srli, + { "srli", 73 /* xt_iclass_srli */, 0, Opcode_srli_encode_fns, 0, 0 }, - { "memw", ICLASS_xt_iclass_memw, + { "memw", 74 /* xt_iclass_memw */, 0, Opcode_memw_encode_fns, 0, 0 }, - { "extw", ICLASS_xt_iclass_extw, + { "extw", 75 /* xt_iclass_extw */, 0, Opcode_extw_encode_fns, 0, 0 }, - { "isync", ICLASS_xt_iclass_isync, + { "isync", 76 /* xt_iclass_isync */, 0, Opcode_isync_encode_fns, 0, 0 }, - { "rsync", ICLASS_xt_iclass_sync, + { "rsync", 77 /* xt_iclass_sync */, 0, Opcode_rsync_encode_fns, 0, 0 }, - { "esync", ICLASS_xt_iclass_sync, + { "esync", 77 /* xt_iclass_sync */, 0, Opcode_esync_encode_fns, 0, 0 }, - { "dsync", ICLASS_xt_iclass_sync, + { "dsync", 77 /* xt_iclass_sync */, 0, Opcode_dsync_encode_fns, 0, 0 }, - { "rsil", ICLASS_xt_iclass_rsil, + { "rsil", 78 /* xt_iclass_rsil */, 0, Opcode_rsil_encode_fns, 0, 0 }, - { "rsr.lend", ICLASS_xt_iclass_rsr_lend, + { "rsr.lend", 79 /* xt_iclass_rsr.lend */, 0, Opcode_rsr_lend_encode_fns, 0, 0 }, - { "wsr.lend", ICLASS_xt_iclass_wsr_lend, + { "wsr.lend", 80 /* xt_iclass_wsr.lend */, 0, Opcode_wsr_lend_encode_fns, 0, 0 }, - { "xsr.lend", ICLASS_xt_iclass_xsr_lend, + { "xsr.lend", 81 /* xt_iclass_xsr.lend */, 0, Opcode_xsr_lend_encode_fns, 0, 0 }, - { "rsr.lcount", ICLASS_xt_iclass_rsr_lcount, + { "rsr.lcount", 82 /* xt_iclass_rsr.lcount */, 0, Opcode_rsr_lcount_encode_fns, 0, 0 }, - { "wsr.lcount", ICLASS_xt_iclass_wsr_lcount, + { "wsr.lcount", 83 /* xt_iclass_wsr.lcount */, 0, Opcode_wsr_lcount_encode_fns, 0, 0 }, - { "xsr.lcount", ICLASS_xt_iclass_xsr_lcount, + { "xsr.lcount", 84 /* xt_iclass_xsr.lcount */, 0, Opcode_xsr_lcount_encode_fns, 0, 0 }, - { "rsr.lbeg", ICLASS_xt_iclass_rsr_lbeg, + { "rsr.lbeg", 85 /* xt_iclass_rsr.lbeg */, 0, Opcode_rsr_lbeg_encode_fns, 0, 0 }, - { "wsr.lbeg", ICLASS_xt_iclass_wsr_lbeg, + { "wsr.lbeg", 86 /* xt_iclass_wsr.lbeg */, 0, Opcode_wsr_lbeg_encode_fns, 0, 0 }, - { "xsr.lbeg", ICLASS_xt_iclass_xsr_lbeg, + { "xsr.lbeg", 87 /* xt_iclass_xsr.lbeg */, 0, Opcode_xsr_lbeg_encode_fns, 0, 0 }, - { "rsr.sar", ICLASS_xt_iclass_rsr_sar, + { "rsr.sar", 88 /* xt_iclass_rsr.sar */, 0, Opcode_rsr_sar_encode_fns, 0, 0 }, - { "wsr.sar", ICLASS_xt_iclass_wsr_sar, + { "wsr.sar", 89 /* xt_iclass_wsr.sar */, 0, Opcode_wsr_sar_encode_fns, 0, 0 }, - { "xsr.sar", ICLASS_xt_iclass_xsr_sar, + { "xsr.sar", 90 /* xt_iclass_xsr.sar */, 0, Opcode_xsr_sar_encode_fns, 0, 0 }, - { "rsr.litbase", ICLASS_xt_iclass_rsr_litbase, + { "rsr.litbase", 91 /* xt_iclass_rsr.litbase */, 0, Opcode_rsr_litbase_encode_fns, 0, 0 }, - { "wsr.litbase", ICLASS_xt_iclass_wsr_litbase, + { "wsr.litbase", 92 /* xt_iclass_wsr.litbase */, 0, Opcode_wsr_litbase_encode_fns, 0, 0 }, - { "xsr.litbase", ICLASS_xt_iclass_xsr_litbase, + { "xsr.litbase", 93 /* xt_iclass_xsr.litbase */, 0, Opcode_xsr_litbase_encode_fns, 0, 0 }, - { "rsr.176", ICLASS_xt_iclass_rsr_176, + { "rsr.176", 94 /* xt_iclass_rsr.176 */, 0, Opcode_rsr_176_encode_fns, 0, 0 }, - { "wsr.176", ICLASS_xt_iclass_wsr_176, - 0, - Opcode_wsr_176_encode_fns, 0, 0 }, - { "rsr.208", ICLASS_xt_iclass_rsr_208, + { "rsr.208", 95 /* xt_iclass_rsr.208 */, 0, Opcode_rsr_208_encode_fns, 0, 0 }, - { "rsr.ps", ICLASS_xt_iclass_rsr_ps, + { "rsr.ps", 96 /* xt_iclass_rsr.ps */, 0, Opcode_rsr_ps_encode_fns, 0, 0 }, - { "wsr.ps", ICLASS_xt_iclass_wsr_ps, + { "wsr.ps", 97 /* xt_iclass_wsr.ps */, 0, Opcode_wsr_ps_encode_fns, 0, 0 }, - { "xsr.ps", ICLASS_xt_iclass_xsr_ps, + { "xsr.ps", 98 /* xt_iclass_xsr.ps */, 0, Opcode_xsr_ps_encode_fns, 0, 0 }, - { "rsr.epc1", ICLASS_xt_iclass_rsr_epc1, + { "rsr.epc1", 99 /* xt_iclass_rsr.epc1 */, 0, Opcode_rsr_epc1_encode_fns, 0, 0 }, - { "wsr.epc1", ICLASS_xt_iclass_wsr_epc1, + { "wsr.epc1", 100 /* xt_iclass_wsr.epc1 */, 0, Opcode_wsr_epc1_encode_fns, 0, 0 }, - { "xsr.epc1", ICLASS_xt_iclass_xsr_epc1, + { "xsr.epc1", 101 /* xt_iclass_xsr.epc1 */, 0, Opcode_xsr_epc1_encode_fns, 0, 0 }, - { "rsr.excsave1", ICLASS_xt_iclass_rsr_excsave1, + { "rsr.excsave1", 102 /* xt_iclass_rsr.excsave1 */, 0, Opcode_rsr_excsave1_encode_fns, 0, 0 }, - { "wsr.excsave1", ICLASS_xt_iclass_wsr_excsave1, + { "wsr.excsave1", 103 /* xt_iclass_wsr.excsave1 */, 0, Opcode_wsr_excsave1_encode_fns, 0, 0 }, - { "xsr.excsave1", ICLASS_xt_iclass_xsr_excsave1, + { "xsr.excsave1", 104 /* xt_iclass_xsr.excsave1 */, 0, Opcode_xsr_excsave1_encode_fns, 0, 0 }, - { "rsr.epc2", ICLASS_xt_iclass_rsr_epc2, + { "rsr.epc2", 105 /* xt_iclass_rsr.epc2 */, 0, Opcode_rsr_epc2_encode_fns, 0, 0 }, - { "wsr.epc2", ICLASS_xt_iclass_wsr_epc2, + { "wsr.epc2", 106 /* xt_iclass_wsr.epc2 */, 0, Opcode_wsr_epc2_encode_fns, 0, 0 }, - { "xsr.epc2", ICLASS_xt_iclass_xsr_epc2, + { "xsr.epc2", 107 /* xt_iclass_xsr.epc2 */, 0, Opcode_xsr_epc2_encode_fns, 0, 0 }, - { "rsr.excsave2", ICLASS_xt_iclass_rsr_excsave2, + { "rsr.excsave2", 108 /* xt_iclass_rsr.excsave2 */, 0, Opcode_rsr_excsave2_encode_fns, 0, 0 }, - { "wsr.excsave2", ICLASS_xt_iclass_wsr_excsave2, + { "wsr.excsave2", 109 /* xt_iclass_wsr.excsave2 */, 0, Opcode_wsr_excsave2_encode_fns, 0, 0 }, - { "xsr.excsave2", ICLASS_xt_iclass_xsr_excsave2, + { "xsr.excsave2", 110 /* xt_iclass_xsr.excsave2 */, 0, Opcode_xsr_excsave2_encode_fns, 0, 0 }, - { "rsr.epc3", ICLASS_xt_iclass_rsr_epc3, + { "rsr.epc3", 111 /* xt_iclass_rsr.epc3 */, 0, Opcode_rsr_epc3_encode_fns, 0, 0 }, - { "wsr.epc3", ICLASS_xt_iclass_wsr_epc3, + { "wsr.epc3", 112 /* xt_iclass_wsr.epc3 */, 0, Opcode_wsr_epc3_encode_fns, 0, 0 }, - { "xsr.epc3", ICLASS_xt_iclass_xsr_epc3, + { "xsr.epc3", 113 /* xt_iclass_xsr.epc3 */, 0, Opcode_xsr_epc3_encode_fns, 0, 0 }, - { "rsr.excsave3", ICLASS_xt_iclass_rsr_excsave3, + { "rsr.excsave3", 114 /* xt_iclass_rsr.excsave3 */, 0, Opcode_rsr_excsave3_encode_fns, 0, 0 }, - { "wsr.excsave3", ICLASS_xt_iclass_wsr_excsave3, + { "wsr.excsave3", 115 /* xt_iclass_wsr.excsave3 */, 0, Opcode_wsr_excsave3_encode_fns, 0, 0 }, - { "xsr.excsave3", ICLASS_xt_iclass_xsr_excsave3, + { "xsr.excsave3", 116 /* xt_iclass_xsr.excsave3 */, 0, Opcode_xsr_excsave3_encode_fns, 0, 0 }, - { "rsr.epc4", ICLASS_xt_iclass_rsr_epc4, + { "rsr.epc4", 117 /* xt_iclass_rsr.epc4 */, 0, Opcode_rsr_epc4_encode_fns, 0, 0 }, - { "wsr.epc4", ICLASS_xt_iclass_wsr_epc4, + { "wsr.epc4", 118 /* xt_iclass_wsr.epc4 */, 0, Opcode_wsr_epc4_encode_fns, 0, 0 }, - { "xsr.epc4", ICLASS_xt_iclass_xsr_epc4, + { "xsr.epc4", 119 /* xt_iclass_xsr.epc4 */, 0, Opcode_xsr_epc4_encode_fns, 0, 0 }, - { "rsr.excsave4", ICLASS_xt_iclass_rsr_excsave4, + { "rsr.excsave4", 120 /* xt_iclass_rsr.excsave4 */, 0, Opcode_rsr_excsave4_encode_fns, 0, 0 }, - { "wsr.excsave4", ICLASS_xt_iclass_wsr_excsave4, + { "wsr.excsave4", 121 /* xt_iclass_wsr.excsave4 */, 0, Opcode_wsr_excsave4_encode_fns, 0, 0 }, - { "xsr.excsave4", ICLASS_xt_iclass_xsr_excsave4, + { "xsr.excsave4", 122 /* xt_iclass_xsr.excsave4 */, 0, Opcode_xsr_excsave4_encode_fns, 0, 0 }, - { "rsr.epc5", ICLASS_xt_iclass_rsr_epc5, + { "rsr.epc5", 123 /* xt_iclass_rsr.epc5 */, 0, Opcode_rsr_epc5_encode_fns, 0, 0 }, - { "wsr.epc5", ICLASS_xt_iclass_wsr_epc5, + { "wsr.epc5", 124 /* xt_iclass_wsr.epc5 */, 0, Opcode_wsr_epc5_encode_fns, 0, 0 }, - { "xsr.epc5", ICLASS_xt_iclass_xsr_epc5, + { "xsr.epc5", 125 /* xt_iclass_xsr.epc5 */, 0, Opcode_xsr_epc5_encode_fns, 0, 0 }, - { "rsr.excsave5", ICLASS_xt_iclass_rsr_excsave5, + { "rsr.excsave5", 126 /* xt_iclass_rsr.excsave5 */, 0, Opcode_rsr_excsave5_encode_fns, 0, 0 }, - { "wsr.excsave5", ICLASS_xt_iclass_wsr_excsave5, + { "wsr.excsave5", 127 /* xt_iclass_wsr.excsave5 */, 0, Opcode_wsr_excsave5_encode_fns, 0, 0 }, - { "xsr.excsave5", ICLASS_xt_iclass_xsr_excsave5, + { "xsr.excsave5", 128 /* xt_iclass_xsr.excsave5 */, 0, Opcode_xsr_excsave5_encode_fns, 0, 0 }, - { "rsr.epc6", ICLASS_xt_iclass_rsr_epc6, + { "rsr.epc6", 129 /* xt_iclass_rsr.epc6 */, 0, Opcode_rsr_epc6_encode_fns, 0, 0 }, - { "wsr.epc6", ICLASS_xt_iclass_wsr_epc6, + { "wsr.epc6", 130 /* xt_iclass_wsr.epc6 */, 0, Opcode_wsr_epc6_encode_fns, 0, 0 }, - { "xsr.epc6", ICLASS_xt_iclass_xsr_epc6, + { "xsr.epc6", 131 /* xt_iclass_xsr.epc6 */, 0, Opcode_xsr_epc6_encode_fns, 0, 0 }, - { "rsr.excsave6", ICLASS_xt_iclass_rsr_excsave6, + { "rsr.excsave6", 132 /* xt_iclass_rsr.excsave6 */, 0, Opcode_rsr_excsave6_encode_fns, 0, 0 }, - { "wsr.excsave6", ICLASS_xt_iclass_wsr_excsave6, + { "wsr.excsave6", 133 /* xt_iclass_wsr.excsave6 */, 0, Opcode_wsr_excsave6_encode_fns, 0, 0 }, - { "xsr.excsave6", ICLASS_xt_iclass_xsr_excsave6, + { "xsr.excsave6", 134 /* xt_iclass_xsr.excsave6 */, 0, Opcode_xsr_excsave6_encode_fns, 0, 0 }, - { "rsr.epc7", ICLASS_xt_iclass_rsr_epc7, + { "rsr.epc7", 135 /* xt_iclass_rsr.epc7 */, 0, Opcode_rsr_epc7_encode_fns, 0, 0 }, - { "wsr.epc7", ICLASS_xt_iclass_wsr_epc7, + { "wsr.epc7", 136 /* xt_iclass_wsr.epc7 */, 0, Opcode_wsr_epc7_encode_fns, 0, 0 }, - { "xsr.epc7", ICLASS_xt_iclass_xsr_epc7, + { "xsr.epc7", 137 /* xt_iclass_xsr.epc7 */, 0, Opcode_xsr_epc7_encode_fns, 0, 0 }, - { "rsr.excsave7", ICLASS_xt_iclass_rsr_excsave7, + { "rsr.excsave7", 138 /* xt_iclass_rsr.excsave7 */, 0, Opcode_rsr_excsave7_encode_fns, 0, 0 }, - { "wsr.excsave7", ICLASS_xt_iclass_wsr_excsave7, + { "wsr.excsave7", 139 /* xt_iclass_wsr.excsave7 */, 0, Opcode_wsr_excsave7_encode_fns, 0, 0 }, - { "xsr.excsave7", ICLASS_xt_iclass_xsr_excsave7, + { "xsr.excsave7", 140 /* xt_iclass_xsr.excsave7 */, 0, Opcode_xsr_excsave7_encode_fns, 0, 0 }, - { "rsr.eps2", ICLASS_xt_iclass_rsr_eps2, + { "rsr.eps2", 141 /* xt_iclass_rsr.eps2 */, 0, Opcode_rsr_eps2_encode_fns, 0, 0 }, - { "wsr.eps2", ICLASS_xt_iclass_wsr_eps2, + { "wsr.eps2", 142 /* xt_iclass_wsr.eps2 */, 0, Opcode_wsr_eps2_encode_fns, 0, 0 }, - { "xsr.eps2", ICLASS_xt_iclass_xsr_eps2, + { "xsr.eps2", 143 /* xt_iclass_xsr.eps2 */, 0, Opcode_xsr_eps2_encode_fns, 0, 0 }, - { "rsr.eps3", ICLASS_xt_iclass_rsr_eps3, + { "rsr.eps3", 144 /* xt_iclass_rsr.eps3 */, 0, Opcode_rsr_eps3_encode_fns, 0, 0 }, - { "wsr.eps3", ICLASS_xt_iclass_wsr_eps3, + { "wsr.eps3", 145 /* xt_iclass_wsr.eps3 */, 0, Opcode_wsr_eps3_encode_fns, 0, 0 }, - { "xsr.eps3", ICLASS_xt_iclass_xsr_eps3, + { "xsr.eps3", 146 /* xt_iclass_xsr.eps3 */, 0, Opcode_xsr_eps3_encode_fns, 0, 0 }, - { "rsr.eps4", ICLASS_xt_iclass_rsr_eps4, + { "rsr.eps4", 147 /* xt_iclass_rsr.eps4 */, 0, Opcode_rsr_eps4_encode_fns, 0, 0 }, - { "wsr.eps4", ICLASS_xt_iclass_wsr_eps4, + { "wsr.eps4", 148 /* xt_iclass_wsr.eps4 */, 0, Opcode_wsr_eps4_encode_fns, 0, 0 }, - { "xsr.eps4", ICLASS_xt_iclass_xsr_eps4, + { "xsr.eps4", 149 /* xt_iclass_xsr.eps4 */, 0, Opcode_xsr_eps4_encode_fns, 0, 0 }, - { "rsr.eps5", ICLASS_xt_iclass_rsr_eps5, + { "rsr.eps5", 150 /* xt_iclass_rsr.eps5 */, 0, Opcode_rsr_eps5_encode_fns, 0, 0 }, - { "wsr.eps5", ICLASS_xt_iclass_wsr_eps5, + { "wsr.eps5", 151 /* xt_iclass_wsr.eps5 */, 0, Opcode_wsr_eps5_encode_fns, 0, 0 }, - { "xsr.eps5", ICLASS_xt_iclass_xsr_eps5, + { "xsr.eps5", 152 /* xt_iclass_xsr.eps5 */, 0, Opcode_xsr_eps5_encode_fns, 0, 0 }, - { "rsr.eps6", ICLASS_xt_iclass_rsr_eps6, + { "rsr.eps6", 153 /* xt_iclass_rsr.eps6 */, 0, Opcode_rsr_eps6_encode_fns, 0, 0 }, - { "wsr.eps6", ICLASS_xt_iclass_wsr_eps6, + { "wsr.eps6", 154 /* xt_iclass_wsr.eps6 */, 0, Opcode_wsr_eps6_encode_fns, 0, 0 }, - { "xsr.eps6", ICLASS_xt_iclass_xsr_eps6, + { "xsr.eps6", 155 /* xt_iclass_xsr.eps6 */, 0, Opcode_xsr_eps6_encode_fns, 0, 0 }, - { "rsr.eps7", ICLASS_xt_iclass_rsr_eps7, + { "rsr.eps7", 156 /* xt_iclass_rsr.eps7 */, 0, Opcode_rsr_eps7_encode_fns, 0, 0 }, - { "wsr.eps7", ICLASS_xt_iclass_wsr_eps7, + { "wsr.eps7", 157 /* xt_iclass_wsr.eps7 */, 0, Opcode_wsr_eps7_encode_fns, 0, 0 }, - { "xsr.eps7", ICLASS_xt_iclass_xsr_eps7, + { "xsr.eps7", 158 /* xt_iclass_xsr.eps7 */, 0, Opcode_xsr_eps7_encode_fns, 0, 0 }, - { "rsr.excvaddr", ICLASS_xt_iclass_rsr_excvaddr, + { "rsr.excvaddr", 159 /* xt_iclass_rsr.excvaddr */, 0, Opcode_rsr_excvaddr_encode_fns, 0, 0 }, - { "wsr.excvaddr", ICLASS_xt_iclass_wsr_excvaddr, + { "wsr.excvaddr", 160 /* xt_iclass_wsr.excvaddr */, 0, Opcode_wsr_excvaddr_encode_fns, 0, 0 }, - { "xsr.excvaddr", ICLASS_xt_iclass_xsr_excvaddr, + { "xsr.excvaddr", 161 /* xt_iclass_xsr.excvaddr */, 0, Opcode_xsr_excvaddr_encode_fns, 0, 0 }, - { "rsr.depc", ICLASS_xt_iclass_rsr_depc, + { "rsr.depc", 162 /* xt_iclass_rsr.depc */, 0, Opcode_rsr_depc_encode_fns, 0, 0 }, - { "wsr.depc", ICLASS_xt_iclass_wsr_depc, + { "wsr.depc", 163 /* xt_iclass_wsr.depc */, 0, Opcode_wsr_depc_encode_fns, 0, 0 }, - { "xsr.depc", ICLASS_xt_iclass_xsr_depc, + { "xsr.depc", 164 /* xt_iclass_xsr.depc */, 0, Opcode_xsr_depc_encode_fns, 0, 0 }, - { "rsr.exccause", ICLASS_xt_iclass_rsr_exccause, + { "rsr.exccause", 165 /* xt_iclass_rsr.exccause */, 0, Opcode_rsr_exccause_encode_fns, 0, 0 }, - { "wsr.exccause", ICLASS_xt_iclass_wsr_exccause, + { "wsr.exccause", 166 /* xt_iclass_wsr.exccause */, 0, Opcode_wsr_exccause_encode_fns, 0, 0 }, - { "xsr.exccause", ICLASS_xt_iclass_xsr_exccause, + { "xsr.exccause", 167 /* xt_iclass_xsr.exccause */, 0, Opcode_xsr_exccause_encode_fns, 0, 0 }, - { "rsr.misc0", ICLASS_xt_iclass_rsr_misc0, + { "rsr.misc0", 168 /* xt_iclass_rsr.misc0 */, 0, Opcode_rsr_misc0_encode_fns, 0, 0 }, - { "wsr.misc0", ICLASS_xt_iclass_wsr_misc0, + { "wsr.misc0", 169 /* xt_iclass_wsr.misc0 */, 0, Opcode_wsr_misc0_encode_fns, 0, 0 }, - { "xsr.misc0", ICLASS_xt_iclass_xsr_misc0, + { "xsr.misc0", 170 /* xt_iclass_xsr.misc0 */, 0, Opcode_xsr_misc0_encode_fns, 0, 0 }, - { "rsr.misc1", ICLASS_xt_iclass_rsr_misc1, + { "rsr.misc1", 171 /* xt_iclass_rsr.misc1 */, 0, Opcode_rsr_misc1_encode_fns, 0, 0 }, - { "wsr.misc1", ICLASS_xt_iclass_wsr_misc1, + { "wsr.misc1", 172 /* xt_iclass_wsr.misc1 */, 0, Opcode_wsr_misc1_encode_fns, 0, 0 }, - { "xsr.misc1", ICLASS_xt_iclass_xsr_misc1, + { "xsr.misc1", 173 /* xt_iclass_xsr.misc1 */, 0, Opcode_xsr_misc1_encode_fns, 0, 0 }, - { "rsr.prid", ICLASS_xt_iclass_rsr_prid, + { "rsr.misc2", 174 /* xt_iclass_rsr.misc2 */, + 0, + Opcode_rsr_misc2_encode_fns, 0, 0 }, + { "wsr.misc2", 175 /* xt_iclass_wsr.misc2 */, + 0, + Opcode_wsr_misc2_encode_fns, 0, 0 }, + { "xsr.misc2", 176 /* xt_iclass_xsr.misc2 */, + 0, + Opcode_xsr_misc2_encode_fns, 0, 0 }, + { "rsr.misc3", 177 /* xt_iclass_rsr.misc3 */, + 0, + Opcode_rsr_misc3_encode_fns, 0, 0 }, + { "wsr.misc3", 178 /* xt_iclass_wsr.misc3 */, + 0, + Opcode_wsr_misc3_encode_fns, 0, 0 }, + { "xsr.misc3", 179 /* xt_iclass_xsr.misc3 */, + 0, + Opcode_xsr_misc3_encode_fns, 0, 0 }, + { "rsr.prid", 180 /* xt_iclass_rsr.prid */, 0, Opcode_rsr_prid_encode_fns, 0, 0 }, - { "rsr.vecbase", ICLASS_xt_iclass_rsr_vecbase, + { "rsr.vecbase", 181 /* xt_iclass_rsr.vecbase */, 0, Opcode_rsr_vecbase_encode_fns, 0, 0 }, - { "wsr.vecbase", ICLASS_xt_iclass_wsr_vecbase, + { "wsr.vecbase", 182 /* xt_iclass_wsr.vecbase */, 0, Opcode_wsr_vecbase_encode_fns, 0, 0 }, - { "xsr.vecbase", ICLASS_xt_iclass_xsr_vecbase, + { "xsr.vecbase", 183 /* xt_iclass_xsr.vecbase */, 0, Opcode_xsr_vecbase_encode_fns, 0, 0 }, - { "mul16u", ICLASS_xt_iclass_mul16, + { "mul.aa.ll", 184 /* xt_iclass_mac16_aa */, + 0, + Opcode_mul_aa_ll_encode_fns, 0, 0 }, + { "mul.aa.hl", 184 /* xt_iclass_mac16_aa */, + 0, + Opcode_mul_aa_hl_encode_fns, 0, 0 }, + { "mul.aa.lh", 184 /* xt_iclass_mac16_aa */, + 0, + Opcode_mul_aa_lh_encode_fns, 0, 0 }, + { "mul.aa.hh", 184 /* xt_iclass_mac16_aa */, + 0, + Opcode_mul_aa_hh_encode_fns, 0, 0 }, + { "umul.aa.ll", 184 /* xt_iclass_mac16_aa */, + 0, + Opcode_umul_aa_ll_encode_fns, 0, 0 }, + { "umul.aa.hl", 184 /* xt_iclass_mac16_aa */, + 0, + Opcode_umul_aa_hl_encode_fns, 0, 0 }, + { "umul.aa.lh", 184 /* xt_iclass_mac16_aa */, + 0, + Opcode_umul_aa_lh_encode_fns, 0, 0 }, + { "umul.aa.hh", 184 /* xt_iclass_mac16_aa */, + 0, + Opcode_umul_aa_hh_encode_fns, 0, 0 }, + { "mul.ad.ll", 185 /* xt_iclass_mac16_ad */, + 0, + Opcode_mul_ad_ll_encode_fns, 0, 0 }, + { "mul.ad.hl", 185 /* xt_iclass_mac16_ad */, + 0, + Opcode_mul_ad_hl_encode_fns, 0, 0 }, + { "mul.ad.lh", 185 /* xt_iclass_mac16_ad */, + 0, + Opcode_mul_ad_lh_encode_fns, 0, 0 }, + { "mul.ad.hh", 185 /* xt_iclass_mac16_ad */, + 0, + Opcode_mul_ad_hh_encode_fns, 0, 0 }, + { "mul.da.ll", 186 /* xt_iclass_mac16_da */, + 0, + Opcode_mul_da_ll_encode_fns, 0, 0 }, + { "mul.da.hl", 186 /* xt_iclass_mac16_da */, + 0, + Opcode_mul_da_hl_encode_fns, 0, 0 }, + { "mul.da.lh", 186 /* xt_iclass_mac16_da */, + 0, + Opcode_mul_da_lh_encode_fns, 0, 0 }, + { "mul.da.hh", 186 /* xt_iclass_mac16_da */, + 0, + Opcode_mul_da_hh_encode_fns, 0, 0 }, + { "mul.dd.ll", 187 /* xt_iclass_mac16_dd */, + 0, + Opcode_mul_dd_ll_encode_fns, 0, 0 }, + { "mul.dd.hl", 187 /* xt_iclass_mac16_dd */, + 0, + Opcode_mul_dd_hl_encode_fns, 0, 0 }, + { "mul.dd.lh", 187 /* xt_iclass_mac16_dd */, + 0, + Opcode_mul_dd_lh_encode_fns, 0, 0 }, + { "mul.dd.hh", 187 /* xt_iclass_mac16_dd */, + 0, + Opcode_mul_dd_hh_encode_fns, 0, 0 }, + { "mula.aa.ll", 188 /* xt_iclass_mac16a_aa */, + 0, + Opcode_mula_aa_ll_encode_fns, 0, 0 }, + { "mula.aa.hl", 188 /* xt_iclass_mac16a_aa */, + 0, + Opcode_mula_aa_hl_encode_fns, 0, 0 }, + { "mula.aa.lh", 188 /* xt_iclass_mac16a_aa */, + 0, + Opcode_mula_aa_lh_encode_fns, 0, 0 }, + { "mula.aa.hh", 188 /* xt_iclass_mac16a_aa */, + 0, + Opcode_mula_aa_hh_encode_fns, 0, 0 }, + { "muls.aa.ll", 188 /* xt_iclass_mac16a_aa */, + 0, + Opcode_muls_aa_ll_encode_fns, 0, 0 }, + { "muls.aa.hl", 188 /* xt_iclass_mac16a_aa */, + 0, + Opcode_muls_aa_hl_encode_fns, 0, 0 }, + { "muls.aa.lh", 188 /* xt_iclass_mac16a_aa */, + 0, + Opcode_muls_aa_lh_encode_fns, 0, 0 }, + { "muls.aa.hh", 188 /* xt_iclass_mac16a_aa */, + 0, + Opcode_muls_aa_hh_encode_fns, 0, 0 }, + { "mula.ad.ll", 189 /* xt_iclass_mac16a_ad */, + 0, + Opcode_mula_ad_ll_encode_fns, 0, 0 }, + { "mula.ad.hl", 189 /* xt_iclass_mac16a_ad */, + 0, + Opcode_mula_ad_hl_encode_fns, 0, 0 }, + { "mula.ad.lh", 189 /* xt_iclass_mac16a_ad */, + 0, + Opcode_mula_ad_lh_encode_fns, 0, 0 }, + { "mula.ad.hh", 189 /* xt_iclass_mac16a_ad */, + 0, + Opcode_mula_ad_hh_encode_fns, 0, 0 }, + { "muls.ad.ll", 189 /* xt_iclass_mac16a_ad */, + 0, + Opcode_muls_ad_ll_encode_fns, 0, 0 }, + { "muls.ad.hl", 189 /* xt_iclass_mac16a_ad */, + 0, + Opcode_muls_ad_hl_encode_fns, 0, 0 }, + { "muls.ad.lh", 189 /* xt_iclass_mac16a_ad */, + 0, + Opcode_muls_ad_lh_encode_fns, 0, 0 }, + { "muls.ad.hh", 189 /* xt_iclass_mac16a_ad */, + 0, + Opcode_muls_ad_hh_encode_fns, 0, 0 }, + { "mula.da.ll", 190 /* xt_iclass_mac16a_da */, + 0, + Opcode_mula_da_ll_encode_fns, 0, 0 }, + { "mula.da.hl", 190 /* xt_iclass_mac16a_da */, + 0, + Opcode_mula_da_hl_encode_fns, 0, 0 }, + { "mula.da.lh", 190 /* xt_iclass_mac16a_da */, + 0, + Opcode_mula_da_lh_encode_fns, 0, 0 }, + { "mula.da.hh", 190 /* xt_iclass_mac16a_da */, + 0, + Opcode_mula_da_hh_encode_fns, 0, 0 }, + { "muls.da.ll", 190 /* xt_iclass_mac16a_da */, + 0, + Opcode_muls_da_ll_encode_fns, 0, 0 }, + { "muls.da.hl", 190 /* xt_iclass_mac16a_da */, + 0, + Opcode_muls_da_hl_encode_fns, 0, 0 }, + { "muls.da.lh", 190 /* xt_iclass_mac16a_da */, + 0, + Opcode_muls_da_lh_encode_fns, 0, 0 }, + { "muls.da.hh", 190 /* xt_iclass_mac16a_da */, + 0, + Opcode_muls_da_hh_encode_fns, 0, 0 }, + { "mula.dd.ll", 191 /* xt_iclass_mac16a_dd */, + 0, + Opcode_mula_dd_ll_encode_fns, 0, 0 }, + { "mula.dd.hl", 191 /* xt_iclass_mac16a_dd */, + 0, + Opcode_mula_dd_hl_encode_fns, 0, 0 }, + { "mula.dd.lh", 191 /* xt_iclass_mac16a_dd */, + 0, + Opcode_mula_dd_lh_encode_fns, 0, 0 }, + { "mula.dd.hh", 191 /* xt_iclass_mac16a_dd */, + 0, + Opcode_mula_dd_hh_encode_fns, 0, 0 }, + { "muls.dd.ll", 191 /* xt_iclass_mac16a_dd */, + 0, + Opcode_muls_dd_ll_encode_fns, 0, 0 }, + { "muls.dd.hl", 191 /* xt_iclass_mac16a_dd */, + 0, + Opcode_muls_dd_hl_encode_fns, 0, 0 }, + { "muls.dd.lh", 191 /* xt_iclass_mac16a_dd */, + 0, + Opcode_muls_dd_lh_encode_fns, 0, 0 }, + { "muls.dd.hh", 191 /* xt_iclass_mac16a_dd */, + 0, + Opcode_muls_dd_hh_encode_fns, 0, 0 }, + { "mula.da.ll.lddec", 192 /* xt_iclass_mac16al_da */, + 0, + Opcode_mula_da_ll_lddec_encode_fns, 0, 0 }, + { "mula.da.ll.ldinc", 192 /* xt_iclass_mac16al_da */, + 0, + Opcode_mula_da_ll_ldinc_encode_fns, 0, 0 }, + { "mula.da.hl.lddec", 192 /* xt_iclass_mac16al_da */, + 0, + Opcode_mula_da_hl_lddec_encode_fns, 0, 0 }, + { "mula.da.hl.ldinc", 192 /* xt_iclass_mac16al_da */, + 0, + Opcode_mula_da_hl_ldinc_encode_fns, 0, 0 }, + { "mula.da.lh.lddec", 192 /* xt_iclass_mac16al_da */, + 0, + Opcode_mula_da_lh_lddec_encode_fns, 0, 0 }, + { "mula.da.lh.ldinc", 192 /* xt_iclass_mac16al_da */, + 0, + Opcode_mula_da_lh_ldinc_encode_fns, 0, 0 }, + { "mula.da.hh.lddec", 192 /* xt_iclass_mac16al_da */, + 0, + Opcode_mula_da_hh_lddec_encode_fns, 0, 0 }, + { "mula.da.hh.ldinc", 192 /* xt_iclass_mac16al_da */, + 0, + Opcode_mula_da_hh_ldinc_encode_fns, 0, 0 }, + { "mula.dd.ll.lddec", 193 /* xt_iclass_mac16al_dd */, + 0, + Opcode_mula_dd_ll_lddec_encode_fns, 0, 0 }, + { "mula.dd.ll.ldinc", 193 /* xt_iclass_mac16al_dd */, + 0, + Opcode_mula_dd_ll_ldinc_encode_fns, 0, 0 }, + { "mula.dd.hl.lddec", 193 /* xt_iclass_mac16al_dd */, + 0, + Opcode_mula_dd_hl_lddec_encode_fns, 0, 0 }, + { "mula.dd.hl.ldinc", 193 /* xt_iclass_mac16al_dd */, + 0, + Opcode_mula_dd_hl_ldinc_encode_fns, 0, 0 }, + { "mula.dd.lh.lddec", 193 /* xt_iclass_mac16al_dd */, + 0, + Opcode_mula_dd_lh_lddec_encode_fns, 0, 0 }, + { "mula.dd.lh.ldinc", 193 /* xt_iclass_mac16al_dd */, + 0, + Opcode_mula_dd_lh_ldinc_encode_fns, 0, 0 }, + { "mula.dd.hh.lddec", 193 /* xt_iclass_mac16al_dd */, + 0, + Opcode_mula_dd_hh_lddec_encode_fns, 0, 0 }, + { "mula.dd.hh.ldinc", 193 /* xt_iclass_mac16al_dd */, + 0, + Opcode_mula_dd_hh_ldinc_encode_fns, 0, 0 }, + { "lddec", 194 /* xt_iclass_mac16_l */, + 0, + Opcode_lddec_encode_fns, 0, 0 }, + { "ldinc", 194 /* xt_iclass_mac16_l */, + 0, + Opcode_ldinc_encode_fns, 0, 0 }, + { "mul16u", 195 /* xt_iclass_mul16 */, 0, Opcode_mul16u_encode_fns, 0, 0 }, - { "mul16s", ICLASS_xt_iclass_mul16, + { "mul16s", 195 /* xt_iclass_mul16 */, 0, Opcode_mul16s_encode_fns, 0, 0 }, - { "rfi", ICLASS_xt_iclass_rfi, + { "rsr.m0", 196 /* xt_iclass_rsr.m0 */, + 0, + Opcode_rsr_m0_encode_fns, 0, 0 }, + { "wsr.m0", 197 /* xt_iclass_wsr.m0 */, + 0, + Opcode_wsr_m0_encode_fns, 0, 0 }, + { "xsr.m0", 198 /* xt_iclass_xsr.m0 */, + 0, + Opcode_xsr_m0_encode_fns, 0, 0 }, + { "rsr.m1", 199 /* xt_iclass_rsr.m1 */, + 0, + Opcode_rsr_m1_encode_fns, 0, 0 }, + { "wsr.m1", 200 /* xt_iclass_wsr.m1 */, + 0, + Opcode_wsr_m1_encode_fns, 0, 0 }, + { "xsr.m1", 201 /* xt_iclass_xsr.m1 */, + 0, + Opcode_xsr_m1_encode_fns, 0, 0 }, + { "rsr.m2", 202 /* xt_iclass_rsr.m2 */, + 0, + Opcode_rsr_m2_encode_fns, 0, 0 }, + { "wsr.m2", 203 /* xt_iclass_wsr.m2 */, + 0, + Opcode_wsr_m2_encode_fns, 0, 0 }, + { "xsr.m2", 204 /* xt_iclass_xsr.m2 */, + 0, + Opcode_xsr_m2_encode_fns, 0, 0 }, + { "rsr.m3", 205 /* xt_iclass_rsr.m3 */, + 0, + Opcode_rsr_m3_encode_fns, 0, 0 }, + { "wsr.m3", 206 /* xt_iclass_wsr.m3 */, + 0, + Opcode_wsr_m3_encode_fns, 0, 0 }, + { "xsr.m3", 207 /* xt_iclass_xsr.m3 */, + 0, + Opcode_xsr_m3_encode_fns, 0, 0 }, + { "rsr.acclo", 208 /* xt_iclass_rsr.acclo */, + 0, + Opcode_rsr_acclo_encode_fns, 0, 0 }, + { "wsr.acclo", 209 /* xt_iclass_wsr.acclo */, + 0, + Opcode_wsr_acclo_encode_fns, 0, 0 }, + { "xsr.acclo", 210 /* xt_iclass_xsr.acclo */, + 0, + Opcode_xsr_acclo_encode_fns, 0, 0 }, + { "rsr.acchi", 211 /* xt_iclass_rsr.acchi */, + 0, + Opcode_rsr_acchi_encode_fns, 0, 0 }, + { "wsr.acchi", 212 /* xt_iclass_wsr.acchi */, + 0, + Opcode_wsr_acchi_encode_fns, 0, 0 }, + { "xsr.acchi", 213 /* xt_iclass_xsr.acchi */, + 0, + Opcode_xsr_acchi_encode_fns, 0, 0 }, + { "rfi", 214 /* xt_iclass_rfi */, XTENSA_OPCODE_IS_JUMP, Opcode_rfi_encode_fns, 0, 0 }, - { "waiti", ICLASS_xt_iclass_wait, + { "waiti", 215 /* xt_iclass_wait */, 0, Opcode_waiti_encode_fns, 0, 0 }, - { "rsr.interrupt", ICLASS_xt_iclass_rsr_interrupt, + { "rsr.interrupt", 216 /* xt_iclass_rsr.interrupt */, 0, Opcode_rsr_interrupt_encode_fns, 0, 0 }, - { "wsr.intset", ICLASS_xt_iclass_wsr_intset, + { "wsr.intset", 217 /* xt_iclass_wsr.intset */, 0, Opcode_wsr_intset_encode_fns, 0, 0 }, - { "wsr.intclear", ICLASS_xt_iclass_wsr_intclear, + { "wsr.intclear", 218 /* xt_iclass_wsr.intclear */, 0, Opcode_wsr_intclear_encode_fns, 0, 0 }, - { "rsr.intenable", ICLASS_xt_iclass_rsr_intenable, + { "rsr.intenable", 219 /* xt_iclass_rsr.intenable */, 0, Opcode_rsr_intenable_encode_fns, 0, 0 }, - { "wsr.intenable", ICLASS_xt_iclass_wsr_intenable, + { "wsr.intenable", 220 /* xt_iclass_wsr.intenable */, 0, Opcode_wsr_intenable_encode_fns, 0, 0 }, - { "xsr.intenable", ICLASS_xt_iclass_xsr_intenable, + { "xsr.intenable", 221 /* xt_iclass_xsr.intenable */, 0, Opcode_xsr_intenable_encode_fns, 0, 0 }, - { "break", ICLASS_xt_iclass_break, + { "break", 222 /* xt_iclass_break */, 0, Opcode_break_encode_fns, 0, 0 }, - { "break.n", ICLASS_xt_iclass_break_n, + { "break.n", 223 /* xt_iclass_break.n */, 0, Opcode_break_n_encode_fns, 0, 0 }, - { "rsr.dbreaka0", ICLASS_xt_iclass_rsr_dbreaka0, + { "rsr.dbreaka0", 224 /* xt_iclass_rsr.dbreaka0 */, 0, Opcode_rsr_dbreaka0_encode_fns, 0, 0 }, - { "wsr.dbreaka0", ICLASS_xt_iclass_wsr_dbreaka0, + { "wsr.dbreaka0", 225 /* xt_iclass_wsr.dbreaka0 */, 0, Opcode_wsr_dbreaka0_encode_fns, 0, 0 }, - { "xsr.dbreaka0", ICLASS_xt_iclass_xsr_dbreaka0, + { "xsr.dbreaka0", 226 /* xt_iclass_xsr.dbreaka0 */, 0, Opcode_xsr_dbreaka0_encode_fns, 0, 0 }, - { "rsr.dbreakc0", ICLASS_xt_iclass_rsr_dbreakc0, + { "rsr.dbreakc0", 227 /* xt_iclass_rsr.dbreakc0 */, 0, Opcode_rsr_dbreakc0_encode_fns, 0, 0 }, - { "wsr.dbreakc0", ICLASS_xt_iclass_wsr_dbreakc0, + { "wsr.dbreakc0", 228 /* xt_iclass_wsr.dbreakc0 */, 0, Opcode_wsr_dbreakc0_encode_fns, 0, 0 }, - { "xsr.dbreakc0", ICLASS_xt_iclass_xsr_dbreakc0, + { "xsr.dbreakc0", 229 /* xt_iclass_xsr.dbreakc0 */, 0, Opcode_xsr_dbreakc0_encode_fns, 0, 0 }, - { "rsr.dbreaka1", ICLASS_xt_iclass_rsr_dbreaka1, + { "rsr.dbreaka1", 230 /* xt_iclass_rsr.dbreaka1 */, 0, Opcode_rsr_dbreaka1_encode_fns, 0, 0 }, - { "wsr.dbreaka1", ICLASS_xt_iclass_wsr_dbreaka1, + { "wsr.dbreaka1", 231 /* xt_iclass_wsr.dbreaka1 */, 0, Opcode_wsr_dbreaka1_encode_fns, 0, 0 }, - { "xsr.dbreaka1", ICLASS_xt_iclass_xsr_dbreaka1, + { "xsr.dbreaka1", 232 /* xt_iclass_xsr.dbreaka1 */, 0, Opcode_xsr_dbreaka1_encode_fns, 0, 0 }, - { "rsr.dbreakc1", ICLASS_xt_iclass_rsr_dbreakc1, + { "rsr.dbreakc1", 233 /* xt_iclass_rsr.dbreakc1 */, 0, Opcode_rsr_dbreakc1_encode_fns, 0, 0 }, - { "wsr.dbreakc1", ICLASS_xt_iclass_wsr_dbreakc1, + { "wsr.dbreakc1", 234 /* xt_iclass_wsr.dbreakc1 */, 0, Opcode_wsr_dbreakc1_encode_fns, 0, 0 }, - { "xsr.dbreakc1", ICLASS_xt_iclass_xsr_dbreakc1, + { "xsr.dbreakc1", 235 /* xt_iclass_xsr.dbreakc1 */, 0, Opcode_xsr_dbreakc1_encode_fns, 0, 0 }, - { "rsr.ibreaka0", ICLASS_xt_iclass_rsr_ibreaka0, + { "rsr.ibreaka0", 236 /* xt_iclass_rsr.ibreaka0 */, 0, Opcode_rsr_ibreaka0_encode_fns, 0, 0 }, - { "wsr.ibreaka0", ICLASS_xt_iclass_wsr_ibreaka0, + { "wsr.ibreaka0", 237 /* xt_iclass_wsr.ibreaka0 */, 0, Opcode_wsr_ibreaka0_encode_fns, 0, 0 }, - { "xsr.ibreaka0", ICLASS_xt_iclass_xsr_ibreaka0, + { "xsr.ibreaka0", 238 /* xt_iclass_xsr.ibreaka0 */, 0, Opcode_xsr_ibreaka0_encode_fns, 0, 0 }, - { "rsr.ibreaka1", ICLASS_xt_iclass_rsr_ibreaka1, + { "rsr.ibreaka1", 239 /* xt_iclass_rsr.ibreaka1 */, 0, Opcode_rsr_ibreaka1_encode_fns, 0, 0 }, - { "wsr.ibreaka1", ICLASS_xt_iclass_wsr_ibreaka1, + { "wsr.ibreaka1", 240 /* xt_iclass_wsr.ibreaka1 */, 0, Opcode_wsr_ibreaka1_encode_fns, 0, 0 }, - { "xsr.ibreaka1", ICLASS_xt_iclass_xsr_ibreaka1, + { "xsr.ibreaka1", 241 /* xt_iclass_xsr.ibreaka1 */, 0, Opcode_xsr_ibreaka1_encode_fns, 0, 0 }, - { "rsr.ibreakenable", ICLASS_xt_iclass_rsr_ibreakenable, + { "rsr.ibreakenable", 242 /* xt_iclass_rsr.ibreakenable */, 0, Opcode_rsr_ibreakenable_encode_fns, 0, 0 }, - { "wsr.ibreakenable", ICLASS_xt_iclass_wsr_ibreakenable, + { "wsr.ibreakenable", 243 /* xt_iclass_wsr.ibreakenable */, 0, Opcode_wsr_ibreakenable_encode_fns, 0, 0 }, - { "xsr.ibreakenable", ICLASS_xt_iclass_xsr_ibreakenable, + { "xsr.ibreakenable", 244 /* xt_iclass_xsr.ibreakenable */, 0, Opcode_xsr_ibreakenable_encode_fns, 0, 0 }, - { "rsr.debugcause", ICLASS_xt_iclass_rsr_debugcause, + { "rsr.debugcause", 245 /* xt_iclass_rsr.debugcause */, 0, Opcode_rsr_debugcause_encode_fns, 0, 0 }, - { "wsr.debugcause", ICLASS_xt_iclass_wsr_debugcause, + { "wsr.debugcause", 246 /* xt_iclass_wsr.debugcause */, 0, Opcode_wsr_debugcause_encode_fns, 0, 0 }, - { "xsr.debugcause", ICLASS_xt_iclass_xsr_debugcause, + { "xsr.debugcause", 247 /* xt_iclass_xsr.debugcause */, 0, Opcode_xsr_debugcause_encode_fns, 0, 0 }, - { "rsr.icount", ICLASS_xt_iclass_rsr_icount, + { "rsr.icount", 248 /* xt_iclass_rsr.icount */, 0, Opcode_rsr_icount_encode_fns, 0, 0 }, - { "wsr.icount", ICLASS_xt_iclass_wsr_icount, + { "wsr.icount", 249 /* xt_iclass_wsr.icount */, 0, Opcode_wsr_icount_encode_fns, 0, 0 }, - { "xsr.icount", ICLASS_xt_iclass_xsr_icount, + { "xsr.icount", 250 /* xt_iclass_xsr.icount */, 0, Opcode_xsr_icount_encode_fns, 0, 0 }, - { "rsr.icountlevel", ICLASS_xt_iclass_rsr_icountlevel, + { "rsr.icountlevel", 251 /* xt_iclass_rsr.icountlevel */, 0, Opcode_rsr_icountlevel_encode_fns, 0, 0 }, - { "wsr.icountlevel", ICLASS_xt_iclass_wsr_icountlevel, + { "wsr.icountlevel", 252 /* xt_iclass_wsr.icountlevel */, 0, Opcode_wsr_icountlevel_encode_fns, 0, 0 }, - { "xsr.icountlevel", ICLASS_xt_iclass_xsr_icountlevel, + { "xsr.icountlevel", 253 /* xt_iclass_xsr.icountlevel */, 0, Opcode_xsr_icountlevel_encode_fns, 0, 0 }, - { "rsr.ddr", ICLASS_xt_iclass_rsr_ddr, + { "rsr.ddr", 254 /* xt_iclass_rsr.ddr */, 0, Opcode_rsr_ddr_encode_fns, 0, 0 }, - { "wsr.ddr", ICLASS_xt_iclass_wsr_ddr, + { "wsr.ddr", 255 /* xt_iclass_wsr.ddr */, 0, Opcode_wsr_ddr_encode_fns, 0, 0 }, - { "xsr.ddr", ICLASS_xt_iclass_xsr_ddr, + { "xsr.ddr", 256 /* xt_iclass_xsr.ddr */, 0, Opcode_xsr_ddr_encode_fns, 0, 0 }, - { "rfdo", ICLASS_xt_iclass_rfdo, + { "rfdo", 257 /* xt_iclass_rfdo */, XTENSA_OPCODE_IS_JUMP, Opcode_rfdo_encode_fns, 0, 0 }, - { "rfdd", ICLASS_xt_iclass_rfdd, + { "rfdd", 258 /* xt_iclass_rfdd */, XTENSA_OPCODE_IS_JUMP, Opcode_rfdd_encode_fns, 0, 0 }, - { "wsr.mmid", ICLASS_xt_iclass_wsr_mmid, + { "wsr.mmid", 259 /* xt_iclass_wsr.mmid */, 0, Opcode_wsr_mmid_encode_fns, 0, 0 }, - { "rsr.ccount", ICLASS_xt_iclass_rsr_ccount, + { "andb", 260 /* xt_iclass_bbool1 */, + 0, + Opcode_andb_encode_fns, 0, 0 }, + { "andbc", 260 /* xt_iclass_bbool1 */, + 0, + Opcode_andbc_encode_fns, 0, 0 }, + { "orb", 260 /* xt_iclass_bbool1 */, + 0, + Opcode_orb_encode_fns, 0, 0 }, + { "orbc", 260 /* xt_iclass_bbool1 */, + 0, + Opcode_orbc_encode_fns, 0, 0 }, + { "xorb", 260 /* xt_iclass_bbool1 */, + 0, + Opcode_xorb_encode_fns, 0, 0 }, + { "any4", 261 /* xt_iclass_bbool4 */, + 0, + Opcode_any4_encode_fns, 0, 0 }, + { "all4", 261 /* xt_iclass_bbool4 */, + 0, + Opcode_all4_encode_fns, 0, 0 }, + { "any8", 262 /* xt_iclass_bbool8 */, + 0, + Opcode_any8_encode_fns, 0, 0 }, + { "all8", 262 /* xt_iclass_bbool8 */, + 0, + Opcode_all8_encode_fns, 0, 0 }, + { "bf", 263 /* xt_iclass_bbranch */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bf_encode_fns, 0, 0 }, + { "bt", 263 /* xt_iclass_bbranch */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bt_encode_fns, 0, 0 }, + { "movf", 264 /* xt_iclass_bmove */, + 0, + Opcode_movf_encode_fns, 0, 0 }, + { "movt", 264 /* xt_iclass_bmove */, + 0, + Opcode_movt_encode_fns, 0, 0 }, + { "rsr.br", 265 /* xt_iclass_RSR.BR */, + 0, + Opcode_rsr_br_encode_fns, 0, 0 }, + { "wsr.br", 266 /* xt_iclass_WSR.BR */, + 0, + Opcode_wsr_br_encode_fns, 0, 0 }, + { "xsr.br", 267 /* xt_iclass_XSR.BR */, + 0, + Opcode_xsr_br_encode_fns, 0, 0 }, + { "rsr.ccount", 268 /* xt_iclass_rsr.ccount */, 0, Opcode_rsr_ccount_encode_fns, 0, 0 }, - { "wsr.ccount", ICLASS_xt_iclass_wsr_ccount, + { "wsr.ccount", 269 /* xt_iclass_wsr.ccount */, 0, Opcode_wsr_ccount_encode_fns, 0, 0 }, - { "xsr.ccount", ICLASS_xt_iclass_xsr_ccount, + { "xsr.ccount", 270 /* xt_iclass_xsr.ccount */, 0, Opcode_xsr_ccount_encode_fns, 0, 0 }, - { "rsr.ccompare0", ICLASS_xt_iclass_rsr_ccompare0, + { "rsr.ccompare0", 271 /* xt_iclass_rsr.ccompare0 */, 0, Opcode_rsr_ccompare0_encode_fns, 0, 0 }, - { "wsr.ccompare0", ICLASS_xt_iclass_wsr_ccompare0, + { "wsr.ccompare0", 272 /* xt_iclass_wsr.ccompare0 */, 0, Opcode_wsr_ccompare0_encode_fns, 0, 0 }, - { "xsr.ccompare0", ICLASS_xt_iclass_xsr_ccompare0, + { "xsr.ccompare0", 273 /* xt_iclass_xsr.ccompare0 */, 0, Opcode_xsr_ccompare0_encode_fns, 0, 0 }, - { "rsr.ccompare1", ICLASS_xt_iclass_rsr_ccompare1, + { "rsr.ccompare1", 274 /* xt_iclass_rsr.ccompare1 */, 0, Opcode_rsr_ccompare1_encode_fns, 0, 0 }, - { "wsr.ccompare1", ICLASS_xt_iclass_wsr_ccompare1, + { "wsr.ccompare1", 275 /* xt_iclass_wsr.ccompare1 */, 0, Opcode_wsr_ccompare1_encode_fns, 0, 0 }, - { "xsr.ccompare1", ICLASS_xt_iclass_xsr_ccompare1, + { "xsr.ccompare1", 276 /* xt_iclass_xsr.ccompare1 */, 0, Opcode_xsr_ccompare1_encode_fns, 0, 0 }, - { "rsr.ccompare2", ICLASS_xt_iclass_rsr_ccompare2, + { "rsr.ccompare2", 277 /* xt_iclass_rsr.ccompare2 */, 0, Opcode_rsr_ccompare2_encode_fns, 0, 0 }, - { "wsr.ccompare2", ICLASS_xt_iclass_wsr_ccompare2, + { "wsr.ccompare2", 278 /* xt_iclass_wsr.ccompare2 */, 0, Opcode_wsr_ccompare2_encode_fns, 0, 0 }, - { "xsr.ccompare2", ICLASS_xt_iclass_xsr_ccompare2, + { "xsr.ccompare2", 279 /* xt_iclass_xsr.ccompare2 */, 0, Opcode_xsr_ccompare2_encode_fns, 0, 0 }, - { "ipf", ICLASS_xt_iclass_icache, + { "ipf", 280 /* xt_iclass_icache */, 0, Opcode_ipf_encode_fns, 0, 0 }, - { "ihi", ICLASS_xt_iclass_icache, + { "ihi", 280 /* xt_iclass_icache */, 0, Opcode_ihi_encode_fns, 0, 0 }, - { "ipfl", ICLASS_xt_iclass_icache_lock, + { "ipfl", 281 /* xt_iclass_icache_lock */, 0, Opcode_ipfl_encode_fns, 0, 0 }, - { "ihu", ICLASS_xt_iclass_icache_lock, + { "ihu", 281 /* xt_iclass_icache_lock */, 0, Opcode_ihu_encode_fns, 0, 0 }, - { "iiu", ICLASS_xt_iclass_icache_lock, + { "iiu", 281 /* xt_iclass_icache_lock */, 0, Opcode_iiu_encode_fns, 0, 0 }, - { "iii", ICLASS_xt_iclass_icache_inv, + { "iii", 282 /* xt_iclass_icache_inv */, 0, Opcode_iii_encode_fns, 0, 0 }, - { "lict", ICLASS_xt_iclass_licx, + { "lict", 283 /* xt_iclass_licx */, 0, Opcode_lict_encode_fns, 0, 0 }, - { "licw", ICLASS_xt_iclass_licx, + { "licw", 283 /* xt_iclass_licx */, 0, Opcode_licw_encode_fns, 0, 0 }, - { "sict", ICLASS_xt_iclass_sicx, + { "sict", 284 /* xt_iclass_sicx */, 0, Opcode_sict_encode_fns, 0, 0 }, - { "sicw", ICLASS_xt_iclass_sicx, + { "sicw", 284 /* xt_iclass_sicx */, 0, Opcode_sicw_encode_fns, 0, 0 }, - { "dhwb", ICLASS_xt_iclass_dcache, + { "dhwb", 285 /* xt_iclass_dcache */, 0, Opcode_dhwb_encode_fns, 0, 0 }, - { "dhwbi", ICLASS_xt_iclass_dcache, + { "dhwbi", 285 /* xt_iclass_dcache */, 0, Opcode_dhwbi_encode_fns, 0, 0 }, - { "diwb", ICLASS_xt_iclass_dcache_ind, + { "diwb", 286 /* xt_iclass_dcache_ind */, 0, Opcode_diwb_encode_fns, 0, 0 }, - { "diwbi", ICLASS_xt_iclass_dcache_ind, + { "diwbi", 286 /* xt_iclass_dcache_ind */, 0, Opcode_diwbi_encode_fns, 0, 0 }, - { "dhi", ICLASS_xt_iclass_dcache_inv, + { "dhi", 287 /* xt_iclass_dcache_inv */, 0, Opcode_dhi_encode_fns, 0, 0 }, - { "dii", ICLASS_xt_iclass_dcache_inv, + { "dii", 287 /* xt_iclass_dcache_inv */, 0, Opcode_dii_encode_fns, 0, 0 }, - { "dpfr", ICLASS_xt_iclass_dpf, + { "dpfr", 288 /* xt_iclass_dpf */, 0, Opcode_dpfr_encode_fns, 0, 0 }, - { "dpfw", ICLASS_xt_iclass_dpf, + { "dpfw", 288 /* xt_iclass_dpf */, 0, Opcode_dpfw_encode_fns, 0, 0 }, - { "dpfro", ICLASS_xt_iclass_dpf, + { "dpfro", 288 /* xt_iclass_dpf */, 0, Opcode_dpfro_encode_fns, 0, 0 }, - { "dpfwo", ICLASS_xt_iclass_dpf, + { "dpfwo", 288 /* xt_iclass_dpf */, 0, Opcode_dpfwo_encode_fns, 0, 0 }, - { "dpfl", ICLASS_xt_iclass_dcache_lock, + { "dpfl", 289 /* xt_iclass_dcache_lock */, 0, Opcode_dpfl_encode_fns, 0, 0 }, - { "dhu", ICLASS_xt_iclass_dcache_lock, + { "dhu", 289 /* xt_iclass_dcache_lock */, 0, Opcode_dhu_encode_fns, 0, 0 }, - { "diu", ICLASS_xt_iclass_dcache_lock, + { "diu", 289 /* xt_iclass_dcache_lock */, 0, Opcode_diu_encode_fns, 0, 0 }, - { "sdct", ICLASS_xt_iclass_sdct, + { "sdct", 290 /* xt_iclass_sdct */, 0, Opcode_sdct_encode_fns, 0, 0 }, - { "ldct", ICLASS_xt_iclass_ldct, + { "ldct", 291 /* xt_iclass_ldct */, 0, Opcode_ldct_encode_fns, 0, 0 }, - { "wsr.ptevaddr", ICLASS_xt_iclass_wsr_ptevaddr, + { "wsr.ptevaddr", 292 /* xt_iclass_wsr.ptevaddr */, 0, Opcode_wsr_ptevaddr_encode_fns, 0, 0 }, - { "rsr.ptevaddr", ICLASS_xt_iclass_rsr_ptevaddr, + { "rsr.ptevaddr", 293 /* xt_iclass_rsr.ptevaddr */, 0, Opcode_rsr_ptevaddr_encode_fns, 0, 0 }, - { "xsr.ptevaddr", ICLASS_xt_iclass_xsr_ptevaddr, + { "xsr.ptevaddr", 294 /* xt_iclass_xsr.ptevaddr */, 0, Opcode_xsr_ptevaddr_encode_fns, 0, 0 }, - { "rsr.rasid", ICLASS_xt_iclass_rsr_rasid, + { "rsr.rasid", 295 /* xt_iclass_rsr.rasid */, 0, Opcode_rsr_rasid_encode_fns, 0, 0 }, - { "wsr.rasid", ICLASS_xt_iclass_wsr_rasid, + { "wsr.rasid", 296 /* xt_iclass_wsr.rasid */, 0, Opcode_wsr_rasid_encode_fns, 0, 0 }, - { "xsr.rasid", ICLASS_xt_iclass_xsr_rasid, + { "xsr.rasid", 297 /* xt_iclass_xsr.rasid */, 0, Opcode_xsr_rasid_encode_fns, 0, 0 }, - { "rsr.itlbcfg", ICLASS_xt_iclass_rsr_itlbcfg, + { "rsr.itlbcfg", 298 /* xt_iclass_rsr.itlbcfg */, 0, Opcode_rsr_itlbcfg_encode_fns, 0, 0 }, - { "wsr.itlbcfg", ICLASS_xt_iclass_wsr_itlbcfg, + { "wsr.itlbcfg", 299 /* xt_iclass_wsr.itlbcfg */, 0, Opcode_wsr_itlbcfg_encode_fns, 0, 0 }, - { "xsr.itlbcfg", ICLASS_xt_iclass_xsr_itlbcfg, + { "xsr.itlbcfg", 300 /* xt_iclass_xsr.itlbcfg */, 0, Opcode_xsr_itlbcfg_encode_fns, 0, 0 }, - { "rsr.dtlbcfg", ICLASS_xt_iclass_rsr_dtlbcfg, + { "rsr.dtlbcfg", 301 /* xt_iclass_rsr.dtlbcfg */, 0, Opcode_rsr_dtlbcfg_encode_fns, 0, 0 }, - { "wsr.dtlbcfg", ICLASS_xt_iclass_wsr_dtlbcfg, + { "wsr.dtlbcfg", 302 /* xt_iclass_wsr.dtlbcfg */, 0, Opcode_wsr_dtlbcfg_encode_fns, 0, 0 }, - { "xsr.dtlbcfg", ICLASS_xt_iclass_xsr_dtlbcfg, + { "xsr.dtlbcfg", 303 /* xt_iclass_xsr.dtlbcfg */, 0, Opcode_xsr_dtlbcfg_encode_fns, 0, 0 }, - { "idtlb", ICLASS_xt_iclass_idtlb, + { "idtlb", 304 /* xt_iclass_idtlb */, 0, Opcode_idtlb_encode_fns, 0, 0 }, - { "pdtlb", ICLASS_xt_iclass_rdtlb, + { "pdtlb", 305 /* xt_iclass_rdtlb */, 0, Opcode_pdtlb_encode_fns, 0, 0 }, - { "rdtlb0", ICLASS_xt_iclass_rdtlb, + { "rdtlb0", 305 /* xt_iclass_rdtlb */, 0, Opcode_rdtlb0_encode_fns, 0, 0 }, - { "rdtlb1", ICLASS_xt_iclass_rdtlb, + { "rdtlb1", 305 /* xt_iclass_rdtlb */, 0, Opcode_rdtlb1_encode_fns, 0, 0 }, - { "wdtlb", ICLASS_xt_iclass_wdtlb, + { "wdtlb", 306 /* xt_iclass_wdtlb */, 0, Opcode_wdtlb_encode_fns, 0, 0 }, - { "iitlb", ICLASS_xt_iclass_iitlb, + { "iitlb", 307 /* xt_iclass_iitlb */, 0, Opcode_iitlb_encode_fns, 0, 0 }, - { "pitlb", ICLASS_xt_iclass_ritlb, + { "pitlb", 308 /* xt_iclass_ritlb */, 0, Opcode_pitlb_encode_fns, 0, 0 }, - { "ritlb0", ICLASS_xt_iclass_ritlb, + { "ritlb0", 308 /* xt_iclass_ritlb */, 0, Opcode_ritlb0_encode_fns, 0, 0 }, - { "ritlb1", ICLASS_xt_iclass_ritlb, + { "ritlb1", 308 /* xt_iclass_ritlb */, 0, Opcode_ritlb1_encode_fns, 0, 0 }, - { "witlb", ICLASS_xt_iclass_witlb, + { "witlb", 309 /* xt_iclass_witlb */, 0, Opcode_witlb_encode_fns, 0, 0 }, - { "ldpte", ICLASS_xt_iclass_ldpte, + { "ldpte", 310 /* xt_iclass_ldpte */, 0, Opcode_ldpte_encode_fns, 0, 0 }, - { "hwwitlba", ICLASS_xt_iclass_hwwitlba, + { "hwwitlba", 311 /* xt_iclass_hwwitlba */, XTENSA_OPCODE_IS_BRANCH, Opcode_hwwitlba_encode_fns, 0, 0 }, - { "hwwdtlba", ICLASS_xt_iclass_hwwdtlba, + { "hwwdtlba", 312 /* xt_iclass_hwwdtlba */, 0, Opcode_hwwdtlba_encode_fns, 0, 0 }, - { "rsr.cpenable", ICLASS_xt_iclass_rsr_cpenable, + { "rsr.cpenable", 313 /* xt_iclass_rsr.cpenable */, 0, Opcode_rsr_cpenable_encode_fns, 0, 0 }, - { "wsr.cpenable", ICLASS_xt_iclass_wsr_cpenable, + { "wsr.cpenable", 314 /* xt_iclass_wsr.cpenable */, 0, Opcode_wsr_cpenable_encode_fns, 0, 0 }, - { "xsr.cpenable", ICLASS_xt_iclass_xsr_cpenable, + { "xsr.cpenable", 315 /* xt_iclass_xsr.cpenable */, 0, Opcode_xsr_cpenable_encode_fns, 0, 0 }, - { "clamps", ICLASS_xt_iclass_clamp, + { "clamps", 316 /* xt_iclass_clamp */, 0, Opcode_clamps_encode_fns, 0, 0 }, - { "min", ICLASS_xt_iclass_minmax, + { "min", 317 /* xt_iclass_minmax */, 0, Opcode_min_encode_fns, 0, 0 }, - { "max", ICLASS_xt_iclass_minmax, + { "max", 317 /* xt_iclass_minmax */, 0, Opcode_max_encode_fns, 0, 0 }, - { "minu", ICLASS_xt_iclass_minmax, + { "minu", 317 /* xt_iclass_minmax */, 0, Opcode_minu_encode_fns, 0, 0 }, - { "maxu", ICLASS_xt_iclass_minmax, + { "maxu", 317 /* xt_iclass_minmax */, 0, Opcode_maxu_encode_fns, 0, 0 }, - { "nsa", ICLASS_xt_iclass_nsa, + { "nsa", 318 /* xt_iclass_nsa */, 0, Opcode_nsa_encode_fns, 0, 0 }, - { "nsau", ICLASS_xt_iclass_nsa, + { "nsau", 318 /* xt_iclass_nsa */, 0, Opcode_nsau_encode_fns, 0, 0 }, - { "sext", ICLASS_xt_iclass_sx, + { "sext", 319 /* xt_iclass_sx */, 0, Opcode_sext_encode_fns, 0, 0 }, - { "l32ai", ICLASS_xt_iclass_l32ai, + { "l32ai", 320 /* xt_iclass_l32ai */, 0, Opcode_l32ai_encode_fns, 0, 0 }, - { "s32ri", ICLASS_xt_iclass_s32ri, + { "s32ri", 321 /* xt_iclass_s32ri */, 0, Opcode_s32ri_encode_fns, 0, 0 }, - { "s32c1i", ICLASS_xt_iclass_s32c1i, + { "s32c1i", 322 /* xt_iclass_s32c1i */, 0, Opcode_s32c1i_encode_fns, 0, 0 }, - { "rsr.scompare1", ICLASS_xt_iclass_rsr_scompare1, + { "rsr.scompare1", 323 /* xt_iclass_rsr.scompare1 */, 0, Opcode_rsr_scompare1_encode_fns, 0, 0 }, - { "wsr.scompare1", ICLASS_xt_iclass_wsr_scompare1, + { "wsr.scompare1", 324 /* xt_iclass_wsr.scompare1 */, 0, Opcode_wsr_scompare1_encode_fns, 0, 0 }, - { "xsr.scompare1", ICLASS_xt_iclass_xsr_scompare1, + { "xsr.scompare1", 325 /* xt_iclass_xsr.scompare1 */, 0, Opcode_xsr_scompare1_encode_fns, 0, 0 }, - { "quou", ICLASS_xt_iclass_div, + { "quou", 326 /* xt_iclass_div */, 0, Opcode_quou_encode_fns, 0, 0 }, - { "quos", ICLASS_xt_iclass_div, + { "quos", 326 /* xt_iclass_div */, 0, Opcode_quos_encode_fns, 0, 0 }, - { "remu", ICLASS_xt_iclass_div, + { "remu", 326 /* xt_iclass_div */, 0, Opcode_remu_encode_fns, 0, 0 }, - { "rems", ICLASS_xt_iclass_div, + { "rems", 326 /* xt_iclass_div */, 0, Opcode_rems_encode_fns, 0, 0 }, - { "mull", ICLASS_xt_mul32, + { "mull", 327 /* xt_mul32 */, 0, - Opcode_mull_encode_fns, 0, 0 } -}; - -enum xtensa_opcode_id { - OPCODE_EXCW, - OPCODE_RFE, - OPCODE_RFDE, - OPCODE_SYSCALL, - OPCODE_SIMCALL, - OPCODE_CALL12, - OPCODE_CALL8, - OPCODE_CALL4, - OPCODE_CALLX12, - OPCODE_CALLX8, - OPCODE_CALLX4, - OPCODE_ENTRY, - OPCODE_MOVSP, - OPCODE_ROTW, - OPCODE_RETW, - OPCODE_RETW_N, - OPCODE_RFWO, - OPCODE_RFWU, - OPCODE_L32E, - OPCODE_S32E, - OPCODE_RSR_WINDOWBASE, - OPCODE_WSR_WINDOWBASE, - OPCODE_XSR_WINDOWBASE, - OPCODE_RSR_WINDOWSTART, - OPCODE_WSR_WINDOWSTART, - OPCODE_XSR_WINDOWSTART, - OPCODE_ADD_N, - OPCODE_ADDI_N, - OPCODE_BEQZ_N, - OPCODE_BNEZ_N, - OPCODE_ILL_N, - OPCODE_L32I_N, - OPCODE_MOV_N, - OPCODE_MOVI_N, - OPCODE_NOP_N, - OPCODE_RET_N, - OPCODE_S32I_N, - OPCODE_RUR_THREADPTR, - OPCODE_WUR_THREADPTR, - OPCODE_ADDI, - OPCODE_ADDMI, - OPCODE_ADD, - OPCODE_SUB, - OPCODE_ADDX2, - OPCODE_ADDX4, - OPCODE_ADDX8, - OPCODE_SUBX2, - OPCODE_SUBX4, - OPCODE_SUBX8, - OPCODE_AND, - OPCODE_OR, - OPCODE_XOR, - OPCODE_BEQI, - OPCODE_BNEI, - OPCODE_BGEI, - OPCODE_BLTI, - OPCODE_BBCI, - OPCODE_BBSI, - OPCODE_BGEUI, - OPCODE_BLTUI, - OPCODE_BEQ, - OPCODE_BNE, - OPCODE_BGE, - OPCODE_BLT, - OPCODE_BGEU, - OPCODE_BLTU, - OPCODE_BANY, - OPCODE_BNONE, - OPCODE_BALL, - OPCODE_BNALL, - OPCODE_BBC, - OPCODE_BBS, - OPCODE_BEQZ, - OPCODE_BNEZ, - OPCODE_BGEZ, - OPCODE_BLTZ, - OPCODE_CALL0, - OPCODE_CALLX0, - OPCODE_EXTUI, - OPCODE_ILL, - OPCODE_J, - OPCODE_JX, - OPCODE_L16UI, - OPCODE_L16SI, - OPCODE_L32I, - OPCODE_L32R, - OPCODE_L8UI, - OPCODE_LOOP, - OPCODE_LOOPNEZ, - OPCODE_LOOPGTZ, - OPCODE_MOVI, - OPCODE_MOVEQZ, - OPCODE_MOVNEZ, - OPCODE_MOVLTZ, - OPCODE_MOVGEZ, - OPCODE_NEG, - OPCODE_ABS, - OPCODE_NOP, - OPCODE_RET, - OPCODE_S16I, - OPCODE_S32I, - OPCODE_S8I, - OPCODE_SSR, - OPCODE_SSL, - OPCODE_SSA8L, - OPCODE_SSA8B, - OPCODE_SSAI, - OPCODE_SLL, - OPCODE_SRC, - OPCODE_SRL, - OPCODE_SRA, - OPCODE_SLLI, - OPCODE_SRAI, - OPCODE_SRLI, - OPCODE_MEMW, - OPCODE_EXTW, - OPCODE_ISYNC, - OPCODE_RSYNC, - OPCODE_ESYNC, - OPCODE_DSYNC, - OPCODE_RSIL, - OPCODE_RSR_LEND, - OPCODE_WSR_LEND, - OPCODE_XSR_LEND, - OPCODE_RSR_LCOUNT, - OPCODE_WSR_LCOUNT, - OPCODE_XSR_LCOUNT, - OPCODE_RSR_LBEG, - OPCODE_WSR_LBEG, - OPCODE_XSR_LBEG, - OPCODE_RSR_SAR, - OPCODE_WSR_SAR, - OPCODE_XSR_SAR, - OPCODE_RSR_LITBASE, - OPCODE_WSR_LITBASE, - OPCODE_XSR_LITBASE, - OPCODE_RSR_176, - OPCODE_WSR_176, - OPCODE_RSR_208, - OPCODE_RSR_PS, - OPCODE_WSR_PS, - OPCODE_XSR_PS, - OPCODE_RSR_EPC1, - OPCODE_WSR_EPC1, - OPCODE_XSR_EPC1, - OPCODE_RSR_EXCSAVE1, - OPCODE_WSR_EXCSAVE1, - OPCODE_XSR_EXCSAVE1, - OPCODE_RSR_EPC2, - OPCODE_WSR_EPC2, - OPCODE_XSR_EPC2, - OPCODE_RSR_EXCSAVE2, - OPCODE_WSR_EXCSAVE2, - OPCODE_XSR_EXCSAVE2, - OPCODE_RSR_EPC3, - OPCODE_WSR_EPC3, - OPCODE_XSR_EPC3, - OPCODE_RSR_EXCSAVE3, - OPCODE_WSR_EXCSAVE3, - OPCODE_XSR_EXCSAVE3, - OPCODE_RSR_EPC4, - OPCODE_WSR_EPC4, - OPCODE_XSR_EPC4, - OPCODE_RSR_EXCSAVE4, - OPCODE_WSR_EXCSAVE4, - OPCODE_XSR_EXCSAVE4, - OPCODE_RSR_EPC5, - OPCODE_WSR_EPC5, - OPCODE_XSR_EPC5, - OPCODE_RSR_EXCSAVE5, - OPCODE_WSR_EXCSAVE5, - OPCODE_XSR_EXCSAVE5, - OPCODE_RSR_EPC6, - OPCODE_WSR_EPC6, - OPCODE_XSR_EPC6, - OPCODE_RSR_EXCSAVE6, - OPCODE_WSR_EXCSAVE6, - OPCODE_XSR_EXCSAVE6, - OPCODE_RSR_EPC7, - OPCODE_WSR_EPC7, - OPCODE_XSR_EPC7, - OPCODE_RSR_EXCSAVE7, - OPCODE_WSR_EXCSAVE7, - OPCODE_XSR_EXCSAVE7, - OPCODE_RSR_EPS2, - OPCODE_WSR_EPS2, - OPCODE_XSR_EPS2, - OPCODE_RSR_EPS3, - OPCODE_WSR_EPS3, - OPCODE_XSR_EPS3, - OPCODE_RSR_EPS4, - OPCODE_WSR_EPS4, - OPCODE_XSR_EPS4, - OPCODE_RSR_EPS5, - OPCODE_WSR_EPS5, - OPCODE_XSR_EPS5, - OPCODE_RSR_EPS6, - OPCODE_WSR_EPS6, - OPCODE_XSR_EPS6, - OPCODE_RSR_EPS7, - OPCODE_WSR_EPS7, - OPCODE_XSR_EPS7, - OPCODE_RSR_EXCVADDR, - OPCODE_WSR_EXCVADDR, - OPCODE_XSR_EXCVADDR, - OPCODE_RSR_DEPC, - OPCODE_WSR_DEPC, - OPCODE_XSR_DEPC, - OPCODE_RSR_EXCCAUSE, - OPCODE_WSR_EXCCAUSE, - OPCODE_XSR_EXCCAUSE, - OPCODE_RSR_MISC0, - OPCODE_WSR_MISC0, - OPCODE_XSR_MISC0, - OPCODE_RSR_MISC1, - OPCODE_WSR_MISC1, - OPCODE_XSR_MISC1, - OPCODE_RSR_PRID, - OPCODE_RSR_VECBASE, - OPCODE_WSR_VECBASE, - OPCODE_XSR_VECBASE, - OPCODE_MUL16U, - OPCODE_MUL16S, - OPCODE_RFI, - OPCODE_WAITI, - OPCODE_RSR_INTERRUPT, - OPCODE_WSR_INTSET, - OPCODE_WSR_INTCLEAR, - OPCODE_RSR_INTENABLE, - OPCODE_WSR_INTENABLE, - OPCODE_XSR_INTENABLE, - OPCODE_BREAK, - OPCODE_BREAK_N, - OPCODE_RSR_DBREAKA0, - OPCODE_WSR_DBREAKA0, - OPCODE_XSR_DBREAKA0, - OPCODE_RSR_DBREAKC0, - OPCODE_WSR_DBREAKC0, - OPCODE_XSR_DBREAKC0, - OPCODE_RSR_DBREAKA1, - OPCODE_WSR_DBREAKA1, - OPCODE_XSR_DBREAKA1, - OPCODE_RSR_DBREAKC1, - OPCODE_WSR_DBREAKC1, - OPCODE_XSR_DBREAKC1, - OPCODE_RSR_IBREAKA0, - OPCODE_WSR_IBREAKA0, - OPCODE_XSR_IBREAKA0, - OPCODE_RSR_IBREAKA1, - OPCODE_WSR_IBREAKA1, - OPCODE_XSR_IBREAKA1, - OPCODE_RSR_IBREAKENABLE, - OPCODE_WSR_IBREAKENABLE, - OPCODE_XSR_IBREAKENABLE, - OPCODE_RSR_DEBUGCAUSE, - OPCODE_WSR_DEBUGCAUSE, - OPCODE_XSR_DEBUGCAUSE, - OPCODE_RSR_ICOUNT, - OPCODE_WSR_ICOUNT, - OPCODE_XSR_ICOUNT, - OPCODE_RSR_ICOUNTLEVEL, - OPCODE_WSR_ICOUNTLEVEL, - OPCODE_XSR_ICOUNTLEVEL, - OPCODE_RSR_DDR, - OPCODE_WSR_DDR, - OPCODE_XSR_DDR, - OPCODE_RFDO, - OPCODE_RFDD, - OPCODE_WSR_MMID, - OPCODE_RSR_CCOUNT, - OPCODE_WSR_CCOUNT, - OPCODE_XSR_CCOUNT, - OPCODE_RSR_CCOMPARE0, - OPCODE_WSR_CCOMPARE0, - OPCODE_XSR_CCOMPARE0, - OPCODE_RSR_CCOMPARE1, - OPCODE_WSR_CCOMPARE1, - OPCODE_XSR_CCOMPARE1, - OPCODE_RSR_CCOMPARE2, - OPCODE_WSR_CCOMPARE2, - OPCODE_XSR_CCOMPARE2, - OPCODE_IPF, - OPCODE_IHI, - OPCODE_IPFL, - OPCODE_IHU, - OPCODE_IIU, - OPCODE_III, - OPCODE_LICT, - OPCODE_LICW, - OPCODE_SICT, - OPCODE_SICW, - OPCODE_DHWB, - OPCODE_DHWBI, - OPCODE_DIWB, - OPCODE_DIWBI, - OPCODE_DHI, - OPCODE_DII, - OPCODE_DPFR, - OPCODE_DPFW, - OPCODE_DPFRO, - OPCODE_DPFWO, - OPCODE_DPFL, - OPCODE_DHU, - OPCODE_DIU, - OPCODE_SDCT, - OPCODE_LDCT, - OPCODE_WSR_PTEVADDR, - OPCODE_RSR_PTEVADDR, - OPCODE_XSR_PTEVADDR, - OPCODE_RSR_RASID, - OPCODE_WSR_RASID, - OPCODE_XSR_RASID, - OPCODE_RSR_ITLBCFG, - OPCODE_WSR_ITLBCFG, - OPCODE_XSR_ITLBCFG, - OPCODE_RSR_DTLBCFG, - OPCODE_WSR_DTLBCFG, - OPCODE_XSR_DTLBCFG, - OPCODE_IDTLB, - OPCODE_PDTLB, - OPCODE_RDTLB0, - OPCODE_RDTLB1, - OPCODE_WDTLB, - OPCODE_IITLB, - OPCODE_PITLB, - OPCODE_RITLB0, - OPCODE_RITLB1, - OPCODE_WITLB, - OPCODE_LDPTE, - OPCODE_HWWITLBA, - OPCODE_HWWDTLBA, - OPCODE_RSR_CPENABLE, - OPCODE_WSR_CPENABLE, - OPCODE_XSR_CPENABLE, - OPCODE_CLAMPS, - OPCODE_MIN, - OPCODE_MAX, - OPCODE_MINU, - OPCODE_MAXU, - OPCODE_NSA, - OPCODE_NSAU, - OPCODE_SEXT, - OPCODE_L32AI, - OPCODE_S32RI, - OPCODE_S32C1I, - OPCODE_RSR_SCOMPARE1, - OPCODE_WSR_SCOMPARE1, - OPCODE_XSR_SCOMPARE1, - OPCODE_QUOU, - OPCODE_QUOS, - OPCODE_REMU, - OPCODE_REMS, - OPCODE_MULL + Opcode_mull_encode_fns, 0, 0 }, + { "muluh", 327 /* xt_mul32 */, + 0, + Opcode_muluh_encode_fns, 0, 0 }, + { "mulsh", 327 /* xt_mul32 */, + 0, + Opcode_mulsh_encode_fns, 0, 0 }, + { "rur.fcr", 328 /* rur_fcr */, + 0, + Opcode_rur_fcr_encode_fns, 0, 0 }, + { "wur.fcr", 329 /* wur_fcr */, + 0, + Opcode_wur_fcr_encode_fns, 0, 0 }, + { "rur.fsr", 330 /* rur_fsr */, + 0, + Opcode_rur_fsr_encode_fns, 0, 0 }, + { "wur.fsr", 331 /* wur_fsr */, + 0, + Opcode_wur_fsr_encode_fns, 0, 0 }, + { "add.s", 332 /* fp */, + 0, + Opcode_add_s_encode_fns, 0, 0 }, + { "sub.s", 332 /* fp */, + 0, + Opcode_sub_s_encode_fns, 0, 0 }, + { "mul.s", 332 /* fp */, + 0, + Opcode_mul_s_encode_fns, 0, 0 }, + { "madd.s", 333 /* fp_mac */, + 0, + Opcode_madd_s_encode_fns, 0, 0 }, + { "msub.s", 333 /* fp_mac */, + 0, + Opcode_msub_s_encode_fns, 0, 0 }, + { "movf.s", 334 /* fp_cmov */, + 0, + Opcode_movf_s_encode_fns, 0, 0 }, + { "movt.s", 334 /* fp_cmov */, + 0, + Opcode_movt_s_encode_fns, 0, 0 }, + { "moveqz.s", 335 /* fp_mov */, + 0, + Opcode_moveqz_s_encode_fns, 0, 0 }, + { "movnez.s", 335 /* fp_mov */, + 0, + Opcode_movnez_s_encode_fns, 0, 0 }, + { "movltz.s", 335 /* fp_mov */, + 0, + Opcode_movltz_s_encode_fns, 0, 0 }, + { "movgez.s", 335 /* fp_mov */, + 0, + Opcode_movgez_s_encode_fns, 0, 0 }, + { "abs.s", 336 /* fp_mov2 */, + 0, + Opcode_abs_s_encode_fns, 0, 0 }, + { "mov.s", 336 /* fp_mov2 */, + 0, + Opcode_mov_s_encode_fns, 0, 0 }, + { "neg.s", 336 /* fp_mov2 */, + 0, + Opcode_neg_s_encode_fns, 0, 0 }, + { "un.s", 337 /* fp_cmp */, + 0, + Opcode_un_s_encode_fns, 0, 0 }, + { "oeq.s", 337 /* fp_cmp */, + 0, + Opcode_oeq_s_encode_fns, 0, 0 }, + { "ueq.s", 337 /* fp_cmp */, + 0, + Opcode_ueq_s_encode_fns, 0, 0 }, + { "olt.s", 337 /* fp_cmp */, + 0, + Opcode_olt_s_encode_fns, 0, 0 }, + { "ult.s", 337 /* fp_cmp */, + 0, + Opcode_ult_s_encode_fns, 0, 0 }, + { "ole.s", 337 /* fp_cmp */, + 0, + Opcode_ole_s_encode_fns, 0, 0 }, + { "ule.s", 337 /* fp_cmp */, + 0, + Opcode_ule_s_encode_fns, 0, 0 }, + { "float.s", 338 /* fp_float */, + 0, + Opcode_float_s_encode_fns, 0, 0 }, + { "ufloat.s", 338 /* fp_float */, + 0, + Opcode_ufloat_s_encode_fns, 0, 0 }, + { "round.s", 339 /* fp_int */, + 0, + Opcode_round_s_encode_fns, 0, 0 }, + { "ceil.s", 339 /* fp_int */, + 0, + Opcode_ceil_s_encode_fns, 0, 0 }, + { "floor.s", 339 /* fp_int */, + 0, + Opcode_floor_s_encode_fns, 0, 0 }, + { "trunc.s", 339 /* fp_int */, + 0, + Opcode_trunc_s_encode_fns, 0, 0 }, + { "utrunc.s", 339 /* fp_int */, + 0, + Opcode_utrunc_s_encode_fns, 0, 0 }, + { "rfr", 340 /* fp_rfr */, + 0, + Opcode_rfr_encode_fns, 0, 0 }, + { "wfr", 341 /* fp_wfr */, + 0, + Opcode_wfr_encode_fns, 0, 0 }, + { "lsi", 342 /* fp_lsi */, + 0, + Opcode_lsi_encode_fns, 0, 0 }, + { "lsiu", 343 /* fp_lsiu */, + 0, + Opcode_lsiu_encode_fns, 0, 0 }, + { "lsx", 344 /* fp_lsx */, + 0, + Opcode_lsx_encode_fns, 0, 0 }, + { "lsxu", 345 /* fp_lsxu */, + 0, + Opcode_lsxu_encode_fns, 0, 0 }, + { "ssi", 346 /* fp_ssi */, + 0, + Opcode_ssi_encode_fns, 0, 0 }, + { "ssiu", 347 /* fp_ssiu */, + 0, + Opcode_ssiu_encode_fns, 0, 0 }, + { "ssx", 348 /* fp_ssx */, + 0, + Opcode_ssx_encode_fns, 0, 0 }, + { "ssxu", 349 /* fp_ssxu */, + 0, + Opcode_ssxu_encode_fns, 0, 0 }, + { "beqz.w18", 350 /* xt_iclass_wb18_0 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_beqz_w18_encode_fns, 0, 0 }, + { "bnez.w18", 350 /* xt_iclass_wb18_0 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bnez_w18_encode_fns, 0, 0 }, + { "bgez.w18", 350 /* xt_iclass_wb18_0 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bgez_w18_encode_fns, 0, 0 }, + { "bltz.w18", 350 /* xt_iclass_wb18_0 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bltz_w18_encode_fns, 0, 0 }, + { "beqi.w18", 351 /* xt_iclass_wb18_1 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_beqi_w18_encode_fns, 0, 0 }, + { "bnei.w18", 351 /* xt_iclass_wb18_1 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bnei_w18_encode_fns, 0, 0 }, + { "bgei.w18", 351 /* xt_iclass_wb18_1 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bgei_w18_encode_fns, 0, 0 }, + { "blti.w18", 351 /* xt_iclass_wb18_1 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_blti_w18_encode_fns, 0, 0 }, + { "bgeui.w18", 352 /* xt_iclass_wb18_2 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bgeui_w18_encode_fns, 0, 0 }, + { "bltui.w18", 352 /* xt_iclass_wb18_2 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bltui_w18_encode_fns, 0, 0 }, + { "bbci.w18", 353 /* xt_iclass_wb18_3 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bbci_w18_encode_fns, 0, 0 }, + { "bbsi.w18", 353 /* xt_iclass_wb18_3 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bbsi_w18_encode_fns, 0, 0 }, + { "beq.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_beq_w18_encode_fns, 0, 0 }, + { "bne.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bne_w18_encode_fns, 0, 0 }, + { "bge.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bge_w18_encode_fns, 0, 0 }, + { "blt.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_blt_w18_encode_fns, 0, 0 }, + { "bgeu.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bgeu_w18_encode_fns, 0, 0 }, + { "bltu.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bltu_w18_encode_fns, 0, 0 }, + { "bany.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bany_w18_encode_fns, 0, 0 }, + { "bnone.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bnone_w18_encode_fns, 0, 0 }, + { "ball.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_ball_w18_encode_fns, 0, 0 }, + { "bnall.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bnall_w18_encode_fns, 0, 0 }, + { "bbc.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bbc_w18_encode_fns, 0, 0 }, + { "bbs.w18", 354 /* xt_iclass_wb18_4 */, + XTENSA_OPCODE_IS_BRANCH, + Opcode_bbs_w18_encode_fns, 0, 0 } }; @@ -10955,57 +16987,57 @@ case 0: if (Field_s_Slot_inst_get (insn) == 0 && Field_n_Slot_inst_get (insn) == 0) - return OPCODE_ILL; + return 79; /* ill */ break; case 2: switch (Field_n_Slot_inst_get (insn)) { case 0: - return OPCODE_RET; + return 98; /* ret */ case 1: - return OPCODE_RETW; + return 14; /* retw */ case 2: - return OPCODE_JX; + return 81; /* jx */ } break; case 3: switch (Field_n_Slot_inst_get (insn)) { case 0: - return OPCODE_CALLX0; + return 77; /* callx0 */ case 1: - return OPCODE_CALLX4; + return 10; /* callx4 */ case 2: - return OPCODE_CALLX8; + return 9; /* callx8 */ case 3: - return OPCODE_CALLX12; + return 8; /* callx12 */ } break; } break; case 1: - return OPCODE_MOVSP; + return 12; /* movsp */ case 2: if (Field_s_Slot_inst_get (insn) == 0) { switch (Field_t_Slot_inst_get (insn)) { case 0: - return OPCODE_ISYNC; + return 116; /* isync */ case 1: - return OPCODE_RSYNC; + return 117; /* rsync */ case 2: - return OPCODE_ESYNC; + return 118; /* esync */ case 3: - return OPCODE_DSYNC; + return 119; /* dsync */ case 8: - return OPCODE_EXCW; + return 0; /* excw */ case 12: - return OPCODE_MEMW; + return 114; /* memw */ case 13: - return OPCODE_EXTW; + return 115; /* extw */ case 15: - return OPCODE_NOP; + return 97; /* nop */ } } break; @@ -11016,139 +17048,147 @@ switch (Field_s_Slot_inst_get (insn)) { case 0: - return OPCODE_RFE; + return 1; /* rfe */ case 2: - return OPCODE_RFDE; + return 2; /* rfde */ case 4: - return OPCODE_RFWO; + return 16; /* rfwo */ case 5: - return OPCODE_RFWU; + return 17; /* rfwu */ } break; case 1: - return OPCODE_RFI; + return 316; /* rfi */ } break; case 4: - return OPCODE_BREAK; + return 324; /* break */ case 5: switch (Field_s_Slot_inst_get (insn)) { case 0: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_SYSCALL; + return 3; /* syscall */ break; case 1: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_SIMCALL; + return 4; /* simcall */ break; } break; case 6: - return OPCODE_RSIL; + return 120; /* rsil */ case 7: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_WAITI; + return 317; /* waiti */ break; + case 8: + return 367; /* any4 */ + case 9: + return 368; /* all4 */ + case 10: + return 369; /* any8 */ + case 11: + return 370; /* all8 */ } break; case 1: - return OPCODE_AND; + return 49; /* and */ case 2: - return OPCODE_OR; + return 50; /* or */ case 3: - return OPCODE_XOR; + return 51; /* xor */ case 4: switch (Field_r_Slot_inst_get (insn)) { case 0: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_SSR; + return 102; /* ssr */ break; case 1: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_SSL; + return 103; /* ssl */ break; case 2: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_SSA8L; + return 104; /* ssa8l */ break; case 3: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_SSA8B; + return 105; /* ssa8b */ break; case 4: if (Field_thi3_Slot_inst_get (insn) == 0) - return OPCODE_SSAI; + return 106; /* ssai */ break; case 8: if (Field_s_Slot_inst_get (insn) == 0) - return OPCODE_ROTW; + return 13; /* rotw */ break; case 14: - return OPCODE_NSA; + return 448; /* nsa */ case 15: - return OPCODE_NSAU; + return 449; /* nsau */ } break; case 5: switch (Field_r_Slot_inst_get (insn)) { case 1: - return OPCODE_HWWITLBA; + return 438; /* hwwitlba */ case 3: - return OPCODE_RITLB0; + return 434; /* ritlb0 */ case 4: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_IITLB; + return 432; /* iitlb */ break; case 5: - return OPCODE_PITLB; + return 433; /* pitlb */ case 6: - return OPCODE_WITLB; + return 436; /* witlb */ case 7: - return OPCODE_RITLB1; + return 435; /* ritlb1 */ case 9: - return OPCODE_HWWDTLBA; + return 439; /* hwwdtlba */ case 11: - return OPCODE_RDTLB0; + return 429; /* rdtlb0 */ case 12: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_IDTLB; + return 427; /* idtlb */ break; case 13: - return OPCODE_PDTLB; + return 428; /* pdtlb */ case 14: - return OPCODE_WDTLB; + return 431; /* wdtlb */ case 15: - return OPCODE_RDTLB1; + return 430; /* rdtlb1 */ } break; case 6: switch (Field_s_Slot_inst_get (insn)) { case 0: - return OPCODE_NEG; + return 95; /* neg */ case 1: - return OPCODE_ABS; + return 96; /* abs */ } break; case 8: - return OPCODE_ADD; + return 41; /* add */ case 9: - return OPCODE_ADDX2; + return 43; /* addx2 */ case 10: - return OPCODE_ADDX4; + return 44; /* addx4 */ case 11: - return OPCODE_ADDX8; + return 45; /* addx8 */ case 12: - return OPCODE_SUB; + return 42; /* sub */ case 13: - return OPCODE_SUBX2; + return 46; /* subx2 */ case 14: - return OPCODE_SUBX4; + return 47; /* subx4 */ case 15: - return OPCODE_SUBX8; + return 48; /* subx8 */ } break; case 1: @@ -11156,170 +17196,188 @@ { case 0: case 1: - return OPCODE_SLLI; + return 111; /* slli */ case 2: case 3: - return OPCODE_SRAI; + return 112; /* srai */ case 4: - return OPCODE_SRLI; + return 113; /* srli */ case 6: switch (Field_sr_Slot_inst_get (insn)) { case 0: - return OPCODE_XSR_LBEG; + return 129; /* xsr.lbeg */ case 1: - return OPCODE_XSR_LEND; + return 123; /* xsr.lend */ case 2: - return OPCODE_XSR_LCOUNT; + return 126; /* xsr.lcount */ case 3: - return OPCODE_XSR_SAR; + return 132; /* xsr.sar */ + case 4: + return 377; /* xsr.br */ case 5: - return OPCODE_XSR_LITBASE; + return 135; /* xsr.litbase */ case 12: - return OPCODE_XSR_SCOMPARE1; + return 456; /* xsr.scompare1 */ + case 16: + return 312; /* xsr.acclo */ + case 17: + return 315; /* xsr.acchi */ + case 32: + return 300; /* xsr.m0 */ + case 33: + return 303; /* xsr.m1 */ + case 34: + return 306; /* xsr.m2 */ + case 35: + return 309; /* xsr.m3 */ case 72: - return OPCODE_XSR_WINDOWBASE; + return 22; /* xsr.windowbase */ case 73: - return OPCODE_XSR_WINDOWSTART; + return 25; /* xsr.windowstart */ case 83: - return OPCODE_XSR_PTEVADDR; + return 417; /* xsr.ptevaddr */ case 90: - return OPCODE_XSR_RASID; + return 420; /* xsr.rasid */ case 91: - return OPCODE_XSR_ITLBCFG; + return 423; /* xsr.itlbcfg */ case 92: - return OPCODE_XSR_DTLBCFG; + return 426; /* xsr.dtlbcfg */ case 96: - return OPCODE_XSR_IBREAKENABLE; + return 346; /* xsr.ibreakenable */ case 104: - return OPCODE_XSR_DDR; + return 358; /* xsr.ddr */ case 128: - return OPCODE_XSR_IBREAKA0; + return 340; /* xsr.ibreaka0 */ case 129: - return OPCODE_XSR_IBREAKA1; + return 343; /* xsr.ibreaka1 */ case 144: - return OPCODE_XSR_DBREAKA0; + return 328; /* xsr.dbreaka0 */ case 145: - return OPCODE_XSR_DBREAKA1; + return 334; /* xsr.dbreaka1 */ case 160: - return OPCODE_XSR_DBREAKC0; + return 331; /* xsr.dbreakc0 */ case 161: - return OPCODE_XSR_DBREAKC1; + return 337; /* xsr.dbreakc1 */ case 177: - return OPCODE_XSR_EPC1; + return 143; /* xsr.epc1 */ case 178: - return OPCODE_XSR_EPC2; + return 149; /* xsr.epc2 */ case 179: - return OPCODE_XSR_EPC3; + return 155; /* xsr.epc3 */ case 180: - return OPCODE_XSR_EPC4; + return 161; /* xsr.epc4 */ case 181: - return OPCODE_XSR_EPC5; + return 167; /* xsr.epc5 */ case 182: - return OPCODE_XSR_EPC6; + return 173; /* xsr.epc6 */ case 183: - return OPCODE_XSR_EPC7; + return 179; /* xsr.epc7 */ case 192: - return OPCODE_XSR_DEPC; + return 206; /* xsr.depc */ case 194: - return OPCODE_XSR_EPS2; + return 185; /* xsr.eps2 */ case 195: - return OPCODE_XSR_EPS3; + return 188; /* xsr.eps3 */ case 196: - return OPCODE_XSR_EPS4; + return 191; /* xsr.eps4 */ case 197: - return OPCODE_XSR_EPS5; + return 194; /* xsr.eps5 */ case 198: - return OPCODE_XSR_EPS6; + return 197; /* xsr.eps6 */ case 199: - return OPCODE_XSR_EPS7; + return 200; /* xsr.eps7 */ case 209: - return OPCODE_XSR_EXCSAVE1; + return 146; /* xsr.excsave1 */ case 210: - return OPCODE_XSR_EXCSAVE2; + return 152; /* xsr.excsave2 */ case 211: - return OPCODE_XSR_EXCSAVE3; + return 158; /* xsr.excsave3 */ case 212: - return OPCODE_XSR_EXCSAVE4; + return 164; /* xsr.excsave4 */ case 213: - return OPCODE_XSR_EXCSAVE5; + return 170; /* xsr.excsave5 */ case 214: - return OPCODE_XSR_EXCSAVE6; + return 176; /* xsr.excsave6 */ case 215: - return OPCODE_XSR_EXCSAVE7; + return 182; /* xsr.excsave7 */ case 224: - return OPCODE_XSR_CPENABLE; + return 442; /* xsr.cpenable */ case 228: - return OPCODE_XSR_INTENABLE; + return 323; /* xsr.intenable */ case 230: - return OPCODE_XSR_PS; + return 140; /* xsr.ps */ case 231: - return OPCODE_XSR_VECBASE; + return 225; /* xsr.vecbase */ case 232: - return OPCODE_XSR_EXCCAUSE; + return 209; /* xsr.exccause */ case 233: - return OPCODE_XSR_DEBUGCAUSE; + return 349; /* xsr.debugcause */ case 234: - return OPCODE_XSR_CCOUNT; + return 380; /* xsr.ccount */ case 236: - return OPCODE_XSR_ICOUNT; + return 352; /* xsr.icount */ case 237: - return OPCODE_XSR_ICOUNTLEVEL; + return 355; /* xsr.icountlevel */ case 238: - return OPCODE_XSR_EXCVADDR; + return 203; /* xsr.excvaddr */ case 240: - return OPCODE_XSR_CCOMPARE0; + return 383; /* xsr.ccompare0 */ case 241: - return OPCODE_XSR_CCOMPARE1; + return 386; /* xsr.ccompare1 */ case 242: - return OPCODE_XSR_CCOMPARE2; + return 389; /* xsr.ccompare2 */ case 244: - return OPCODE_XSR_MISC0; + return 212; /* xsr.misc0 */ case 245: - return OPCODE_XSR_MISC1; + return 215; /* xsr.misc1 */ + case 246: + return 218; /* xsr.misc2 */ + case 247: + return 221; /* xsr.misc3 */ } break; case 8: - return OPCODE_SRC; + return 108; /* src */ case 9: if (Field_s_Slot_inst_get (insn) == 0) - return OPCODE_SRL; + return 109; /* srl */ break; case 10: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_SLL; + return 107; /* sll */ break; case 11: if (Field_s_Slot_inst_get (insn) == 0) - return OPCODE_SRA; + return 110; /* sra */ break; case 12: - return OPCODE_MUL16U; + return 296; /* mul16u */ case 13: - return OPCODE_MUL16S; + return 297; /* mul16s */ case 15: switch (Field_r_Slot_inst_get (insn)) { case 0: - return OPCODE_LICT; + return 396; /* lict */ case 1: - return OPCODE_SICT; + return 398; /* sict */ case 2: - return OPCODE_LICW; + return 397; /* licw */ case 3: - return OPCODE_SICW; + return 399; /* sicw */ case 8: - return OPCODE_LDCT; + return 414; /* ldct */ case 9: - return OPCODE_SDCT; + return 413; /* sdct */ case 14: if (Field_t_Slot_inst_get (insn) == 0) - return OPCODE_RFDO; + return 359; /* rfdo */ if (Field_t_Slot_inst_get (insn) == 1) - return OPCODE_RFDD; + return 360; /* rfdd */ break; case 15: - return OPCODE_LDPTE; + return 437; /* ldpte */ } break; } @@ -11327,16 +17385,30 @@ case 2: switch (Field_op2_Slot_inst_get (insn)) { + case 0: + return 362; /* andb */ + case 1: + return 363; /* andbc */ + case 2: + return 364; /* orb */ + case 3: + return 365; /* orbc */ + case 4: + return 366; /* xorb */ case 8: - return OPCODE_MULL; + return 461; /* mull */ + case 10: + return 462; /* muluh */ + case 11: + return 463; /* mulsh */ case 12: - return OPCODE_QUOU; + return 457; /* quou */ case 13: - return OPCODE_QUOS; + return 458; /* quos */ case 14: - return OPCODE_REMU; + return 459; /* remu */ case 15: - return OPCODE_REMS; + return 460; /* rems */ } break; case 3: @@ -11346,446 +17418,1044 @@ switch (Field_sr_Slot_inst_get (insn)) { case 0: - return OPCODE_RSR_LBEG; + return 127; /* rsr.lbeg */ case 1: - return OPCODE_RSR_LEND; + return 121; /* rsr.lend */ case 2: - return OPCODE_RSR_LCOUNT; + return 124; /* rsr.lcount */ case 3: - return OPCODE_RSR_SAR; + return 130; /* rsr.sar */ + case 4: + return 375; /* rsr.br */ case 5: - return OPCODE_RSR_LITBASE; + return 133; /* rsr.litbase */ case 12: - return OPCODE_RSR_SCOMPARE1; + return 454; /* rsr.scompare1 */ + case 16: + return 310; /* rsr.acclo */ + case 17: + return 313; /* rsr.acchi */ + case 32: + return 298; /* rsr.m0 */ + case 33: + return 301; /* rsr.m1 */ + case 34: + return 304; /* rsr.m2 */ + case 35: + return 307; /* rsr.m3 */ case 72: - return OPCODE_RSR_WINDOWBASE; + return 20; /* rsr.windowbase */ case 73: - return OPCODE_RSR_WINDOWSTART; + return 23; /* rsr.windowstart */ case 83: - return OPCODE_RSR_PTEVADDR; + return 416; /* rsr.ptevaddr */ case 90: - return OPCODE_RSR_RASID; + return 418; /* rsr.rasid */ case 91: - return OPCODE_RSR_ITLBCFG; + return 421; /* rsr.itlbcfg */ case 92: - return OPCODE_RSR_DTLBCFG; + return 424; /* rsr.dtlbcfg */ case 96: - return OPCODE_RSR_IBREAKENABLE; + return 344; /* rsr.ibreakenable */ case 104: - return OPCODE_RSR_DDR; + return 356; /* rsr.ddr */ case 128: - return OPCODE_RSR_IBREAKA0; + return 338; /* rsr.ibreaka0 */ case 129: - return OPCODE_RSR_IBREAKA1; + return 341; /* rsr.ibreaka1 */ case 144: - return OPCODE_RSR_DBREAKA0; + return 326; /* rsr.dbreaka0 */ case 145: - return OPCODE_RSR_DBREAKA1; + return 332; /* rsr.dbreaka1 */ case 160: - return OPCODE_RSR_DBREAKC0; + return 329; /* rsr.dbreakc0 */ case 161: - return OPCODE_RSR_DBREAKC1; + return 335; /* rsr.dbreakc1 */ case 176: - return OPCODE_RSR_176; + return 136; /* rsr.176 */ case 177: - return OPCODE_RSR_EPC1; + return 141; /* rsr.epc1 */ case 178: - return OPCODE_RSR_EPC2; + return 147; /* rsr.epc2 */ case 179: - return OPCODE_RSR_EPC3; + return 153; /* rsr.epc3 */ case 180: - return OPCODE_RSR_EPC4; + return 159; /* rsr.epc4 */ case 181: - return OPCODE_RSR_EPC5; + return 165; /* rsr.epc5 */ case 182: - return OPCODE_RSR_EPC6; + return 171; /* rsr.epc6 */ case 183: - return OPCODE_RSR_EPC7; + return 177; /* rsr.epc7 */ case 192: - return OPCODE_RSR_DEPC; + return 204; /* rsr.depc */ case 194: - return OPCODE_RSR_EPS2; + return 183; /* rsr.eps2 */ case 195: - return OPCODE_RSR_EPS3; + return 186; /* rsr.eps3 */ case 196: - return OPCODE_RSR_EPS4; + return 189; /* rsr.eps4 */ case 197: - return OPCODE_RSR_EPS5; + return 192; /* rsr.eps5 */ case 198: - return OPCODE_RSR_EPS6; + return 195; /* rsr.eps6 */ case 199: - return OPCODE_RSR_EPS7; + return 198; /* rsr.eps7 */ case 208: - return OPCODE_RSR_208; + return 137; /* rsr.208 */ case 209: - return OPCODE_RSR_EXCSAVE1; + return 144; /* rsr.excsave1 */ case 210: - return OPCODE_RSR_EXCSAVE2; + return 150; /* rsr.excsave2 */ case 211: - return OPCODE_RSR_EXCSAVE3; + return 156; /* rsr.excsave3 */ case 212: - return OPCODE_RSR_EXCSAVE4; + return 162; /* rsr.excsave4 */ case 213: - return OPCODE_RSR_EXCSAVE5; + return 168; /* rsr.excsave5 */ case 214: - return OPCODE_RSR_EXCSAVE6; + return 174; /* rsr.excsave6 */ case 215: - return OPCODE_RSR_EXCSAVE7; + return 180; /* rsr.excsave7 */ case 224: - return OPCODE_RSR_CPENABLE; + return 440; /* rsr.cpenable */ case 226: - return OPCODE_RSR_INTERRUPT; + return 318; /* rsr.interrupt */ case 228: - return OPCODE_RSR_INTENABLE; + return 321; /* rsr.intenable */ case 230: - return OPCODE_RSR_PS; + return 138; /* rsr.ps */ case 231: - return OPCODE_RSR_VECBASE; + return 223; /* rsr.vecbase */ case 232: - return OPCODE_RSR_EXCCAUSE; + return 207; /* rsr.exccause */ case 233: - return OPCODE_RSR_DEBUGCAUSE; + return 347; /* rsr.debugcause */ case 234: - return OPCODE_RSR_CCOUNT; + return 378; /* rsr.ccount */ case 235: - return OPCODE_RSR_PRID; + return 222; /* rsr.prid */ case 236: - return OPCODE_RSR_ICOUNT; + return 350; /* rsr.icount */ case 237: - return OPCODE_RSR_ICOUNTLEVEL; + return 353; /* rsr.icountlevel */ case 238: - return OPCODE_RSR_EXCVADDR; + return 201; /* rsr.excvaddr */ case 240: - return OPCODE_RSR_CCOMPARE0; + return 381; /* rsr.ccompare0 */ case 241: - return OPCODE_RSR_CCOMPARE1; + return 384; /* rsr.ccompare1 */ case 242: - return OPCODE_RSR_CCOMPARE2; + return 387; /* rsr.ccompare2 */ case 244: - return OPCODE_RSR_MISC0; + return 210; /* rsr.misc0 */ case 245: - return OPCODE_RSR_MISC1; + return 213; /* rsr.misc1 */ + case 246: + return 216; /* rsr.misc2 */ + case 247: + return 219; /* rsr.misc3 */ } break; case 1: switch (Field_sr_Slot_inst_get (insn)) { case 0: - return OPCODE_WSR_LBEG; + return 128; /* wsr.lbeg */ case 1: - return OPCODE_WSR_LEND; + return 122; /* wsr.lend */ case 2: - return OPCODE_WSR_LCOUNT; + return 125; /* wsr.lcount */ case 3: - return OPCODE_WSR_SAR; + return 131; /* wsr.sar */ + case 4: + return 376; /* wsr.br */ case 5: - return OPCODE_WSR_LITBASE; + return 134; /* wsr.litbase */ case 12: - return OPCODE_WSR_SCOMPARE1; + return 455; /* wsr.scompare1 */ + case 16: + return 311; /* wsr.acclo */ + case 17: + return 314; /* wsr.acchi */ + case 32: + return 299; /* wsr.m0 */ + case 33: + return 302; /* wsr.m1 */ + case 34: + return 305; /* wsr.m2 */ + case 35: + return 308; /* wsr.m3 */ case 72: - return OPCODE_WSR_WINDOWBASE; + return 21; /* wsr.windowbase */ case 73: - return OPCODE_WSR_WINDOWSTART; + return 24; /* wsr.windowstart */ case 83: - return OPCODE_WSR_PTEVADDR; + return 415; /* wsr.ptevaddr */ case 89: - return OPCODE_WSR_MMID; + return 361; /* wsr.mmid */ case 90: - return OPCODE_WSR_RASID; + return 419; /* wsr.rasid */ case 91: - return OPCODE_WSR_ITLBCFG; + return 422; /* wsr.itlbcfg */ case 92: - return OPCODE_WSR_DTLBCFG; + return 425; /* wsr.dtlbcfg */ case 96: - return OPCODE_WSR_IBREAKENABLE; + return 345; /* wsr.ibreakenable */ case 104: - return OPCODE_WSR_DDR; + return 357; /* wsr.ddr */ case 128: - return OPCODE_WSR_IBREAKA0; + return 339; /* wsr.ibreaka0 */ case 129: - return OPCODE_WSR_IBREAKA1; + return 342; /* wsr.ibreaka1 */ case 144: - return OPCODE_WSR_DBREAKA0; + return 327; /* wsr.dbreaka0 */ case 145: - return OPCODE_WSR_DBREAKA1; + return 333; /* wsr.dbreaka1 */ case 160: - return OPCODE_WSR_DBREAKC0; + return 330; /* wsr.dbreakc0 */ case 161: - return OPCODE_WSR_DBREAKC1; - case 176: - return OPCODE_WSR_176; + return 336; /* wsr.dbreakc1 */ case 177: - return OPCODE_WSR_EPC1; + return 142; /* wsr.epc1 */ case 178: - return OPCODE_WSR_EPC2; + return 148; /* wsr.epc2 */ case 179: - return OPCODE_WSR_EPC3; + return 154; /* wsr.epc3 */ case 180: - return OPCODE_WSR_EPC4; + return 160; /* wsr.epc4 */ case 181: - return OPCODE_WSR_EPC5; + return 166; /* wsr.epc5 */ case 182: - return OPCODE_WSR_EPC6; + return 172; /* wsr.epc6 */ case 183: - return OPCODE_WSR_EPC7; + return 178; /* wsr.epc7 */ case 192: - return OPCODE_WSR_DEPC; + return 205; /* wsr.depc */ case 194: - return OPCODE_WSR_EPS2; + return 184; /* wsr.eps2 */ case 195: - return OPCODE_WSR_EPS3; + return 187; /* wsr.eps3 */ case 196: - return OPCODE_WSR_EPS4; + return 190; /* wsr.eps4 */ case 197: - return OPCODE_WSR_EPS5; + return 193; /* wsr.eps5 */ case 198: - return OPCODE_WSR_EPS6; + return 196; /* wsr.eps6 */ case 199: - return OPCODE_WSR_EPS7; + return 199; /* wsr.eps7 */ case 209: - return OPCODE_WSR_EXCSAVE1; + return 145; /* wsr.excsave1 */ case 210: - return OPCODE_WSR_EXCSAVE2; + return 151; /* wsr.excsave2 */ case 211: - return OPCODE_WSR_EXCSAVE3; + return 157; /* wsr.excsave3 */ case 212: - return OPCODE_WSR_EXCSAVE4; + return 163; /* wsr.excsave4 */ case 213: - return OPCODE_WSR_EXCSAVE5; + return 169; /* wsr.excsave5 */ case 214: - return OPCODE_WSR_EXCSAVE6; + return 175; /* wsr.excsave6 */ case 215: - return OPCODE_WSR_EXCSAVE7; + return 181; /* wsr.excsave7 */ case 224: - return OPCODE_WSR_CPENABLE; + return 441; /* wsr.cpenable */ case 226: - return OPCODE_WSR_INTSET; + return 319; /* wsr.intset */ case 227: - return OPCODE_WSR_INTCLEAR; + return 320; /* wsr.intclear */ case 228: - return OPCODE_WSR_INTENABLE; + return 322; /* wsr.intenable */ case 230: - return OPCODE_WSR_PS; + return 139; /* wsr.ps */ case 231: - return OPCODE_WSR_VECBASE; + return 224; /* wsr.vecbase */ case 232: - return OPCODE_WSR_EXCCAUSE; + return 208; /* wsr.exccause */ case 233: - return OPCODE_WSR_DEBUGCAUSE; + return 348; /* wsr.debugcause */ case 234: - return OPCODE_WSR_CCOUNT; + return 379; /* wsr.ccount */ case 236: - return OPCODE_WSR_ICOUNT; + return 351; /* wsr.icount */ case 237: - return OPCODE_WSR_ICOUNTLEVEL; + return 354; /* wsr.icountlevel */ case 238: - return OPCODE_WSR_EXCVADDR; + return 202; /* wsr.excvaddr */ case 240: - return OPCODE_WSR_CCOMPARE0; + return 382; /* wsr.ccompare0 */ case 241: - return OPCODE_WSR_CCOMPARE1; + return 385; /* wsr.ccompare1 */ case 242: - return OPCODE_WSR_CCOMPARE2; + return 388; /* wsr.ccompare2 */ case 244: - return OPCODE_WSR_MISC0; + return 211; /* wsr.misc0 */ case 245: - return OPCODE_WSR_MISC1; + return 214; /* wsr.misc1 */ + case 246: + return 217; /* wsr.misc2 */ + case 247: + return 220; /* wsr.misc3 */ } break; case 2: - return OPCODE_SEXT; + return 450; /* sext */ case 3: - return OPCODE_CLAMPS; + return 443; /* clamps */ case 4: - return OPCODE_MIN; + return 444; /* min */ case 5: - return OPCODE_MAX; + return 445; /* max */ case 6: - return OPCODE_MINU; + return 446; /* minu */ case 7: - return OPCODE_MAXU; + return 447; /* maxu */ case 8: - return OPCODE_MOVEQZ; + return 91; /* moveqz */ case 9: - return OPCODE_MOVNEZ; + return 92; /* movnez */ case 10: - return OPCODE_MOVLTZ; + return 93; /* movltz */ case 11: - return OPCODE_MOVGEZ; + return 94; /* movgez */ + case 12: + return 373; /* movf */ + case 13: + return 374; /* movt */ case 14: - if (Field_st_Slot_inst_get (insn) == 231) - return OPCODE_RUR_THREADPTR; + switch (Field_st_Slot_inst_get (insn)) + { + case 231: + return 37; /* rur.threadptr */ + case 232: + return 464; /* rur.fcr */ + case 233: + return 466; /* rur.fsr */ + } break; case 15: - if (Field_sr_Slot_inst_get (insn) == 231) - return OPCODE_WUR_THREADPTR; + switch (Field_sr_Slot_inst_get (insn)) + { + case 231: + return 38; /* wur.threadptr */ + case 232: + return 465; /* wur.fcr */ + case 233: + return 467; /* wur.fsr */ + } break; } break; case 4: case 5: - return OPCODE_EXTUI; + return 78; /* extui */ + case 8: + switch (Field_op2_Slot_inst_get (insn)) + { + case 0: + return 500; /* lsx */ + case 1: + return 501; /* lsxu */ + case 4: + return 504; /* ssx */ + case 5: + return 505; /* ssxu */ + } + break; case 9: switch (Field_op2_Slot_inst_get (insn)) { case 0: - return OPCODE_L32E; + return 18; /* l32e */ + case 4: + return 19; /* s32e */ + } + break; + case 10: + switch (Field_op2_Slot_inst_get (insn)) + { + case 0: + return 468; /* add.s */ + case 1: + return 469; /* sub.s */ + case 2: + return 470; /* mul.s */ + case 4: + return 471; /* madd.s */ + case 5: + return 472; /* msub.s */ + case 8: + return 491; /* round.s */ + case 9: + return 494; /* trunc.s */ + case 10: + return 493; /* floor.s */ + case 11: + return 492; /* ceil.s */ + case 12: + return 489; /* float.s */ + case 13: + return 490; /* ufloat.s */ + case 14: + return 495; /* utrunc.s */ + case 15: + switch (Field_t_Slot_inst_get (insn)) + { + case 0: + return 480; /* mov.s */ + case 1: + return 479; /* abs.s */ + case 4: + return 496; /* rfr */ + case 5: + return 497; /* wfr */ + case 6: + return 481; /* neg.s */ + } + break; + } + break; + case 11: + switch (Field_op2_Slot_inst_get (insn)) + { + case 1: + return 482; /* un.s */ + case 2: + return 483; /* oeq.s */ + case 3: + return 484; /* ueq.s */ case 4: - return OPCODE_S32E; + return 485; /* olt.s */ + case 5: + return 486; /* ult.s */ + case 6: + return 487; /* ole.s */ + case 7: + return 488; /* ule.s */ + case 8: + return 475; /* moveqz.s */ + case 9: + return 476; /* movnez.s */ + case 10: + return 477; /* movltz.s */ + case 11: + return 478; /* movgez.s */ + case 12: + return 473; /* movf.s */ + case 13: + return 474; /* movt.s */ } break; } break; case 1: - return OPCODE_L32R; + return 85; /* l32r */ case 2: switch (Field_r_Slot_inst_get (insn)) { case 0: - return OPCODE_L8UI; + return 86; /* l8ui */ + case 1: + return 82; /* l16ui */ + case 2: + return 84; /* l32i */ + case 4: + return 101; /* s8i */ + case 5: + return 99; /* s16i */ + case 6: + return 100; /* s32i */ + case 7: + switch (Field_t_Slot_inst_get (insn)) + { + case 0: + return 406; /* dpfr */ + case 1: + return 407; /* dpfw */ + case 2: + return 408; /* dpfro */ + case 3: + return 409; /* dpfwo */ + case 4: + return 400; /* dhwb */ + case 5: + return 401; /* dhwbi */ + case 6: + return 404; /* dhi */ + case 7: + return 405; /* dii */ + case 8: + switch (Field_op1_Slot_inst_get (insn)) + { + case 0: + return 410; /* dpfl */ + case 2: + return 411; /* dhu */ + case 3: + return 412; /* diu */ + case 4: + return 402; /* diwb */ + case 5: + return 403; /* diwbi */ + } + break; + case 12: + return 390; /* ipf */ + case 13: + switch (Field_op1_Slot_inst_get (insn)) + { + case 0: + return 392; /* ipfl */ + case 2: + return 393; /* ihu */ + case 3: + return 394; /* iiu */ + } + break; + case 14: + return 391; /* ihi */ + case 15: + return 395; /* iii */ + } + break; + case 9: + return 83; /* l16si */ + case 10: + return 90; /* movi */ + case 11: + return 451; /* l32ai */ + case 12: + return 39; /* addi */ + case 13: + return 40; /* addmi */ + case 14: + return 453; /* s32c1i */ + case 15: + return 452; /* s32ri */ + } + break; + case 3: + switch (Field_r_Slot_inst_get (insn)) + { + case 0: + return 498; /* lsi */ + case 4: + return 502; /* ssi */ + case 8: + return 499; /* lsiu */ + case 12: + return 503; /* ssiu */ + } + break; + case 4: + switch (Field_op2_Slot_inst_get (insn)) + { + case 0: + switch (Field_op1_Slot_inst_get (insn)) + { + case 8: + if (Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 287; /* mula.dd.ll.ldinc */ + break; + case 9: + if (Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 289; /* mula.dd.hl.ldinc */ + break; + case 10: + if (Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 291; /* mula.dd.lh.ldinc */ + break; + case 11: + if (Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 293; /* mula.dd.hh.ldinc */ + break; + } + break; case 1: - return OPCODE_L16UI; + switch (Field_op1_Slot_inst_get (insn)) + { + case 8: + if (Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 286; /* mula.dd.ll.lddec */ + break; + case 9: + if (Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 288; /* mula.dd.hl.lddec */ + break; + case 10: + if (Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 290; /* mula.dd.lh.lddec */ + break; + case 11: + if (Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 292; /* mula.dd.hh.lddec */ + break; + } + break; case 2: - return OPCODE_L32I; + switch (Field_op1_Slot_inst_get (insn)) + { + case 4: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 242; /* mul.dd.ll */ + break; + case 5: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 243; /* mul.dd.hl */ + break; + case 6: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 244; /* mul.dd.lh */ + break; + case 7: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 245; /* mul.dd.hh */ + break; + case 8: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 270; /* mula.dd.ll */ + break; + case 9: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 271; /* mula.dd.hl */ + break; + case 10: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 272; /* mula.dd.lh */ + break; + case 11: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 273; /* mula.dd.hh */ + break; + case 12: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 274; /* muls.dd.ll */ + break; + case 13: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 275; /* muls.dd.hl */ + break; + case 14: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 276; /* muls.dd.lh */ + break; + case 15: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 277; /* muls.dd.hh */ + break; + } + break; + case 3: + switch (Field_op1_Slot_inst_get (insn)) + { + case 4: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 234; /* mul.ad.ll */ + break; + case 5: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 235; /* mul.ad.hl */ + break; + case 6: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 236; /* mul.ad.lh */ + break; + case 7: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 237; /* mul.ad.hh */ + break; + case 8: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 254; /* mula.ad.ll */ + break; + case 9: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 255; /* mula.ad.hl */ + break; + case 10: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 256; /* mula.ad.lh */ + break; + case 11: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 257; /* mula.ad.hh */ + break; + case 12: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 258; /* muls.ad.ll */ + break; + case 13: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 259; /* muls.ad.hl */ + break; + case 14: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 260; /* muls.ad.lh */ + break; + case 15: + if (Field_r_Slot_inst_get (insn) == 0 && + Field_t3_Slot_inst_get (insn) == 0 && + Field_tlo_Slot_inst_get (insn) == 0) + return 261; /* muls.ad.hh */ + break; + } + break; case 4: - return OPCODE_S8I; + switch (Field_op1_Slot_inst_get (insn)) + { + case 8: + if (Field_r3_Slot_inst_get (insn) == 0) + return 279; /* mula.da.ll.ldinc */ + break; + case 9: + if (Field_r3_Slot_inst_get (insn) == 0) + return 281; /* mula.da.hl.ldinc */ + break; + case 10: + if (Field_r3_Slot_inst_get (insn) == 0) + return 283; /* mula.da.lh.ldinc */ + break; + case 11: + if (Field_r3_Slot_inst_get (insn) == 0) + return 285; /* mula.da.hh.ldinc */ + break; + } + break; case 5: - return OPCODE_S16I; + switch (Field_op1_Slot_inst_get (insn)) + { + case 8: + if (Field_r3_Slot_inst_get (insn) == 0) + return 278; /* mula.da.ll.lddec */ + break; + case 9: + if (Field_r3_Slot_inst_get (insn) == 0) + return 280; /* mula.da.hl.lddec */ + break; + case 10: + if (Field_r3_Slot_inst_get (insn) == 0) + return 282; /* mula.da.lh.lddec */ + break; + case 11: + if (Field_r3_Slot_inst_get (insn) == 0) + return 284; /* mula.da.hh.lddec */ + break; + } + break; case 6: - return OPCODE_S32I; + switch (Field_op1_Slot_inst_get (insn)) + { + case 4: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 238; /* mul.da.ll */ + break; + case 5: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 239; /* mul.da.hl */ + break; + case 6: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 240; /* mul.da.lh */ + break; + case 7: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 241; /* mul.da.hh */ + break; + case 8: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 262; /* mula.da.ll */ + break; + case 9: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 263; /* mula.da.hl */ + break; + case 10: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 264; /* mula.da.lh */ + break; + case 11: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 265; /* mula.da.hh */ + break; + case 12: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 266; /* muls.da.ll */ + break; + case 13: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 267; /* muls.da.hl */ + break; + case 14: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 268; /* muls.da.lh */ + break; + case 15: + if (Field_s_Slot_inst_get (insn) == 0 && + Field_w_Slot_inst_get (insn) == 0 && + Field_r3_Slot_inst_get (insn) == 0) + return 269; /* muls.da.hh */ + break; + } + break; case 7: - switch (Field_t_Slot_inst_get (insn)) + switch (Field_op1_Slot_inst_get (insn)) { case 0: - return OPCODE_DPFR; + if (Field_r_Slot_inst_get (insn) == 0) + return 230; /* umul.aa.ll */ + break; case 1: - return OPCODE_DPFW; + if (Field_r_Slot_inst_get (insn) == 0) + return 231; /* umul.aa.hl */ + break; case 2: - return OPCODE_DPFRO; + if (Field_r_Slot_inst_get (insn) == 0) + return 232; /* umul.aa.lh */ + break; case 3: - return OPCODE_DPFWO; + if (Field_r_Slot_inst_get (insn) == 0) + return 233; /* umul.aa.hh */ + break; case 4: - return OPCODE_DHWB; + if (Field_r_Slot_inst_get (insn) == 0) + return 226; /* mul.aa.ll */ + break; case 5: - return OPCODE_DHWBI; + if (Field_r_Slot_inst_get (insn) == 0) + return 227; /* mul.aa.hl */ + break; case 6: - return OPCODE_DHI; + if (Field_r_Slot_inst_get (insn) == 0) + return 228; /* mul.aa.lh */ + break; case 7: - return OPCODE_DII; + if (Field_r_Slot_inst_get (insn) == 0) + return 229; /* mul.aa.hh */ + break; case 8: - switch (Field_op1_Slot_inst_get (insn)) - { - case 0: - return OPCODE_DPFL; - case 2: - return OPCODE_DHU; - case 3: - return OPCODE_DIU; - case 4: - return OPCODE_DIWB; - case 5: - return OPCODE_DIWBI; - } + if (Field_r_Slot_inst_get (insn) == 0) + return 246; /* mula.aa.ll */ + break; + case 9: + if (Field_r_Slot_inst_get (insn) == 0) + return 247; /* mula.aa.hl */ + break; + case 10: + if (Field_r_Slot_inst_get (insn) == 0) + return 248; /* mula.aa.lh */ + break; + case 11: + if (Field_r_Slot_inst_get (insn) == 0) + return 249; /* mula.aa.hh */ break; case 12: - return OPCODE_IPF; + if (Field_r_Slot_inst_get (insn) == 0) + return 250; /* muls.aa.ll */ + break; case 13: - switch (Field_op1_Slot_inst_get (insn)) - { - case 0: - return OPCODE_IPFL; - case 2: - return OPCODE_IHU; - case 3: - return OPCODE_IIU; - } + if (Field_r_Slot_inst_get (insn) == 0) + return 251; /* muls.aa.hl */ break; case 14: - return OPCODE_IHI; + if (Field_r_Slot_inst_get (insn) == 0) + return 252; /* muls.aa.lh */ + break; case 15: - return OPCODE_III; + if (Field_r_Slot_inst_get (insn) == 0) + return 253; /* muls.aa.hh */ + break; } break; + case 8: + if (Field_op1_Slot_inst_get (insn) == 0 && + Field_t_Slot_inst_get (insn) == 0 && + Field_rhi_Slot_inst_get (insn) == 0) + return 295; /* ldinc */ + break; case 9: - return OPCODE_L16SI; - case 10: - return OPCODE_MOVI; - case 11: - return OPCODE_L32AI; - case 12: - return OPCODE_ADDI; - case 13: - return OPCODE_ADDMI; - case 14: - return OPCODE_S32C1I; - case 15: - return OPCODE_S32RI; + if (Field_op1_Slot_inst_get (insn) == 0 && + Field_t_Slot_inst_get (insn) == 0 && + Field_rhi_Slot_inst_get (insn) == 0) + return 294; /* lddec */ + break; } break; case 5: switch (Field_n_Slot_inst_get (insn)) { case 0: - return OPCODE_CALL0; + return 76; /* call0 */ case 1: - return OPCODE_CALL4; + return 7; /* call4 */ case 2: - return OPCODE_CALL8; + return 6; /* call8 */ case 3: - return OPCODE_CALL12; + return 5; /* call12 */ } break; case 6: switch (Field_n_Slot_inst_get (insn)) { case 0: - return OPCODE_J; + return 80; /* j */ case 1: switch (Field_m_Slot_inst_get (insn)) { case 0: - return OPCODE_BEQZ; + return 72; /* beqz */ case 1: - return OPCODE_BNEZ; + return 73; /* bnez */ case 2: - return OPCODE_BLTZ; + return 75; /* bltz */ case 3: - return OPCODE_BGEZ; + return 74; /* bgez */ } break; case 2: switch (Field_m_Slot_inst_get (insn)) { case 0: - return OPCODE_BEQI; + return 52; /* beqi */ case 1: - return OPCODE_BNEI; + return 53; /* bnei */ case 2: - return OPCODE_BLTI; + return 55; /* blti */ case 3: - return OPCODE_BGEI; + return 54; /* bgei */ } break; case 3: switch (Field_m_Slot_inst_get (insn)) { case 0: - return OPCODE_ENTRY; + return 11; /* entry */ case 1: switch (Field_r_Slot_inst_get (insn)) { + case 0: + return 371; /* bf */ + case 1: + return 372; /* bt */ case 8: - return OPCODE_LOOP; + return 87; /* loop */ case 9: - return OPCODE_LOOPNEZ; + return 88; /* loopnez */ case 10: - return OPCODE_LOOPGTZ; + return 89; /* loopgtz */ } break; case 2: - return OPCODE_BLTUI; + return 59; /* bltui */ case 3: - return OPCODE_BGEUI; + return 58; /* bgeui */ } break; } @@ -11794,35 +18464,35 @@ switch (Field_r_Slot_inst_get (insn)) { case 0: - return OPCODE_BNONE; + return 67; /* bnone */ case 1: - return OPCODE_BEQ; + return 60; /* beq */ case 2: - return OPCODE_BLT; + return 63; /* blt */ case 3: - return OPCODE_BLTU; + return 65; /* bltu */ case 4: - return OPCODE_BALL; + return 68; /* ball */ case 5: - return OPCODE_BBC; + return 70; /* bbc */ case 6: case 7: - return OPCODE_BBCI; + return 56; /* bbci */ case 8: - return OPCODE_BANY; + return 66; /* bany */ case 9: - return OPCODE_BNE; + return 61; /* bne */ case 10: - return OPCODE_BGE; + return 62; /* bge */ case 11: - return OPCODE_BGEU; + return 64; /* bgeu */ case 12: - return OPCODE_BNALL; + return 69; /* bnall */ case 13: - return OPCODE_BBS; + return 71; /* bbs */ case 14: case 15: - return OPCODE_BBSI; + return 57; /* bbsi */ } break; } @@ -11835,142 +18505,2299 @@ switch (Field_op0_Slot_inst16b_get (insn)) { case 12: - switch (Field_i_Slot_inst16b_get (insn)) - { - case 0: - return OPCODE_MOVI_N; - case 1: - switch (Field_z_Slot_inst16b_get (insn)) - { - case 0: - return OPCODE_BEQZ_N; - case 1: - return OPCODE_BNEZ_N; - } - break; - } + switch (Field_i_Slot_inst16b_get (insn)) + { + case 0: + return 33; /* movi.n */ + case 1: + switch (Field_z_Slot_inst16b_get (insn)) + { + case 0: + return 28; /* beqz.n */ + case 1: + return 29; /* bnez.n */ + } + break; + } + break; + case 13: + switch (Field_r_Slot_inst16b_get (insn)) + { + case 0: + return 32; /* mov.n */ + case 15: + switch (Field_t_Slot_inst16b_get (insn)) + { + case 0: + return 35; /* ret.n */ + case 1: + return 15; /* retw.n */ + case 2: + return 325; /* break.n */ + case 3: + if (Field_s_Slot_inst16b_get (insn) == 0) + return 34; /* nop.n */ + break; + case 6: + if (Field_s_Slot_inst16b_get (insn) == 0) + return 30; /* ill.n */ + break; + } + break; + } + break; + } + return 0; +} + +static int +Slot_inst16a_decode (const xtensa_insnbuf insn) +{ + switch (Field_op0_Slot_inst16a_get (insn)) + { + case 8: + return 31; /* l32i.n */ + case 9: + return 36; /* s32i.n */ + case 10: + return 26; /* add.n */ + case 11: + return 27; /* addi.n */ + } + return 0; +} + +static int +Slot_xt_flix64_slot2_decode (const xtensa_insnbuf insn) +{ + switch (Field_combined3e2c5767_fld36xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn)) + { + case 0: + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 1) + return 41; /* add */ + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 5) + return 42; /* sub */ + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 2) + return 43; /* addx2 */ + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 3) + return 49; /* and */ + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 4) + return 450; /* sext */ + break; + case 1: + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 1) + return 27; /* addi.n */ + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 2) + return 44; /* addx4 */ + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 3) + return 50; /* or */ + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 5) + return 51; /* xor */ + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 4) + return 113; /* srli */ + break; + } + if (Field_combined3e2c5767_fld37xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 0 && + Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 6) + return 33; /* movi.n */ + if (Field_combined3e2c5767_fld39xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 2 && + Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 6 && + Field_combined3e2c5767_fld63xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 0) + return 32; /* mov.n */ + if (Field_combined3e2c5767_fld41xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 3 && + Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 6 && + Field_combined3e2c5767_fld65xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 0) + return 97; /* nop */ + if (Field_combined3e2c5767_fld42xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 8 && + Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 6 && + Field_combined3e2c5767_fld64xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 0) + return 96; /* abs */ + if (Field_combined3e2c5767_fld44xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 9 && + Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 6 && + Field_combined3e2c5767_fld64xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 0) + return 95; /* neg */ + if (Field_combined3e2c5767_fld45xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 5 && + Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 6 && + Field_combined3e2c5767_fld66xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 0) + return 110; /* sra */ + if (Field_combined3e2c5767_fld47xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 3 && + Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 6 && + Field_combined3e2c5767_fld68xt_flix64_slot2_Slot_xt_flix64_slot2_get (insn) == 0) + return 109; /* srl */ + if (Field_op0_s5_Slot_xt_flix64_slot2_get (insn) == 7) + return 112; /* srai */ + return 0; +} + +static int +Slot_xt_flix64_slot0_decode (const xtensa_insnbuf insn) +{ + switch (Field_op0_xt_flix64_slot0_Slot_xt_flix64_slot0_get (insn)) + { + case 0: + if (Field_combined3e2c5767_fld7_Slot_xt_flix64_slot0_get (insn) == 2) + return 78; /* extui */ + switch (Field_op1_Slot_xt_flix64_slot0_get (insn)) + { + case 0: + switch (Field_op2_Slot_xt_flix64_slot0_get (insn)) + { + case 0: + if (Field_r_Slot_xt_flix64_slot0_get (insn) == 2) + { + if (Field_s_Slot_xt_flix64_slot0_get (insn) == 0) + { + if (Field_t_Slot_xt_flix64_slot0_get (insn) == 15) + return 97; /* nop */ + } + } + break; + case 1: + return 49; /* and */ + case 2: + return 50; /* or */ + case 3: + return 51; /* xor */ + case 4: + switch (Field_r_Slot_xt_flix64_slot0_get (insn)) + { + case 0: + if (Field_t_Slot_xt_flix64_slot0_get (insn) == 0) + return 102; /* ssr */ + break; + case 1: + if (Field_t_Slot_xt_flix64_slot0_get (insn) == 0) + return 103; /* ssl */ + break; + case 2: + if (Field_t_Slot_xt_flix64_slot0_get (insn) == 0) + return 104; /* ssa8l */ + break; + case 3: + if (Field_t_Slot_xt_flix64_slot0_get (insn) == 0) + return 105; /* ssa8b */ + break; + case 4: + if (Field_thi3_Slot_xt_flix64_slot0_get (insn) == 0) + return 106; /* ssai */ + break; + case 14: + return 448; /* nsa */ + case 15: + return 449; /* nsau */ + } + break; + case 6: + switch (Field_s_Slot_xt_flix64_slot0_get (insn)) + { + case 0: + return 95; /* neg */ + case 1: + return 96; /* abs */ + } + break; + case 8: + return 41; /* add */ + case 9: + return 43; /* addx2 */ + case 10: + return 44; /* addx4 */ + case 11: + return 45; /* addx8 */ + case 12: + return 42; /* sub */ + case 13: + return 46; /* subx2 */ + case 14: + return 47; /* subx4 */ + case 15: + return 48; /* subx8 */ + } + break; + case 1: + if (Field_combined3e2c5767_fld11_Slot_xt_flix64_slot0_get (insn) == 1) + return 112; /* srai */ + if (Field_combined3e2c5767_fld9_Slot_xt_flix64_slot0_get (insn) == 0) + return 111; /* slli */ + switch (Field_op2_Slot_xt_flix64_slot0_get (insn)) + { + case 4: + return 113; /* srli */ + case 8: + return 108; /* src */ + case 9: + if (Field_s_Slot_xt_flix64_slot0_get (insn) == 0) + return 109; /* srl */ + break; + case 10: + if (Field_t_Slot_xt_flix64_slot0_get (insn) == 0) + return 107; /* sll */ + break; + case 11: + if (Field_s_Slot_xt_flix64_slot0_get (insn) == 0) + return 110; /* sra */ + break; + case 12: + return 296; /* mul16u */ + case 13: + return 297; /* mul16s */ + } + break; + case 2: + if (Field_op2_Slot_xt_flix64_slot0_get (insn) == 8) + return 461; /* mull */ + break; + case 3: + switch (Field_op2_Slot_xt_flix64_slot0_get (insn)) + { + case 2: + return 450; /* sext */ + case 3: + return 443; /* clamps */ + case 4: + return 444; /* min */ + case 5: + return 445; /* max */ + case 6: + return 446; /* minu */ + case 7: + return 447; /* maxu */ + case 8: + return 91; /* moveqz */ + case 9: + return 92; /* movnez */ + case 10: + return 93; /* movltz */ + case 11: + return 94; /* movgez */ + } + break; + } + break; + case 2: + switch (Field_r_Slot_xt_flix64_slot0_get (insn)) + { + case 0: + return 86; /* l8ui */ + case 1: + return 82; /* l16ui */ + case 2: + return 84; /* l32i */ + case 4: + return 101; /* s8i */ + case 5: + return 99; /* s16i */ + case 6: + return 100; /* s32i */ + case 9: + return 83; /* l16si */ + case 10: + return 90; /* movi */ + case 12: + return 39; /* addi */ + case 13: + return 40; /* addmi */ + } + break; + } + if (Field_op0_xt_flix64_slot0_s3_Slot_xt_flix64_slot0_get (insn) == 1) + return 85; /* l32r */ + if (Field_sae4_Slot_xt_flix64_slot0_get (insn) == 0 && + Field_combined3e2c5767_fld8_Slot_xt_flix64_slot0_get (insn) == 3 && + Field_op0_xt_flix64_slot0_s3_Slot_xt_flix64_slot0_get (insn) == 0 && + Field_combined3e2c5767_fld49xt_flix64_slot0_Slot_xt_flix64_slot0_get (insn) == 0) + return 32; /* mov.n */ + return 0; +} + +static int +Slot_xt_flix64_slot1_decode (const xtensa_insnbuf insn) +{ + if (Field_combined3e2c5767_fld19xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 0 && + Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 1) + return 78; /* extui */ + switch (Field_combined3e2c5767_fld20xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn)) + { + case 0: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 90; /* movi */ + break; + case 2: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 1) + return 39; /* addi */ + break; + case 3: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 1) + return 40; /* addmi */ + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2 && + Field_combined3e2c5767_fld16_Slot_xt_flix64_slot1_get (insn) == 0) + return 51; /* xor */ + break; + } + switch (Field_combined3e2c5767_fld21xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn)) + { + case 8: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 111; /* slli */ + break; + case 16: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 112; /* srai */ + break; + case 19: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2 && + Field_combined3e2c5767_fld57xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 0) + return 107; /* sll */ + break; + } + switch (Field_combined3e2c5767_fld22xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn)) + { + case 18: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 41; /* add */ + break; + case 19: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 45; /* addx8 */ + break; + case 20: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 43; /* addx2 */ + break; + case 21: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 49; /* and */ + break; + case 22: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 91; /* moveqz */ + break; + case 23: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 94; /* movgez */ + break; + case 24: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 44; /* addx4 */ + break; + case 25: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 93; /* movltz */ + break; + case 26: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 92; /* movnez */ + break; + case 27: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 296; /* mul16u */ + break; + case 28: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 297; /* mul16s */ + break; + case 29: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 461; /* mull */ + break; + case 30: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 50; /* or */ + break; + case 31: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 450; /* sext */ + break; + case 34: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 108; /* src */ + break; + case 36: + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2) + return 113; /* srli */ + break; + } + if (Field_combined3e2c5767_fld23xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 280 && + Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2 && + Field_combined3e2c5767_fld51xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 0) + return 32; /* mov.n */ + if (Field_combined3e2c5767_fld25xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 281 && + Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2 && + Field_combined3e2c5767_fld52xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 0) + return 81; /* jx */ + if (Field_combined3e2c5767_fld26xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 141 && + Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2 && + Field_combined3e2c5767_fld60xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 0) + return 103; /* ssl */ + if (Field_combined3e2c5767_fld28xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 71 && + Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2 && + Field_combined3e2c5767_fld54xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 0) + return 97; /* nop */ + if (Field_combined3e2c5767_fld30xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 148 && + Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2 && + Field_combined3e2c5767_fld53xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 0) + return 95; /* neg */ + if (Field_combined3e2c5767_fld32xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 149 && + Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2 && + Field_combined3e2c5767_fld53xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 0) + return 110; /* sra */ + if (Field_combined3e2c5767_fld33xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 75 && + Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2 && + Field_combined3e2c5767_fld58xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 0) + return 109; /* srl */ + if (Field_combined3e2c5767_fld35xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 5 && + Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 2 && + Field_combined3e2c5767_fld62xt_flix64_slot1_Slot_xt_flix64_slot1_get (insn) == 0) + return 42; /* sub */ + if (Field_op0_s4_Slot_xt_flix64_slot1_get (insn) == 3) + return 80; /* j */ + return 0; +} + +static int +Slot_xt_flix64_slot3_decode (const xtensa_insnbuf insn) +{ + switch (Field_op0_s6_Slot_xt_flix64_slot3_get (insn)) + { + case 1: + if (Field_combined3e2c5767_fld71_Slot_xt_flix64_slot3_get (insn) == 0) + return 516; /* bbci.w18 */ + break; + case 2: + if (Field_combined3e2c5767_fld71_Slot_xt_flix64_slot3_get (insn) == 0) + return 517; /* bbsi.w18 */ + break; + case 3: + if (Field_combined3e2c5767_fld89xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 526; /* ball.w18 */ + break; + case 4: + if (Field_combined3e2c5767_fld87xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 524; /* bany.w18 */ + break; + case 5: + if (Field_combined3e2c5767_fld91xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 528; /* bbc.w18 */ + break; + case 6: + if (Field_combined3e2c5767_fld92xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 529; /* bbs.w18 */ + break; + case 7: + if (Field_combined3e2c5767_fld81xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 518; /* beq.w18 */ + break; + case 8: + if (Field_combined3e2c5767_fld75xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 510; /* beqi.w18 */ + break; + case 9: + if (Field_combined3e2c5767_fld83xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 520; /* bge.w18 */ + break; + case 10: + if (Field_combined3e2c5767_fld77xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 512; /* bgei.w18 */ + break; + case 11: + if (Field_combined3e2c5767_fld85xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 522; /* bgeu.w18 */ + break; + case 12: + if (Field_combined3e2c5767_fld79xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 514; /* bgeui.w18 */ break; case 13: - switch (Field_r_Slot_inst16b_get (insn)) - { - case 0: - return OPCODE_MOV_N; - case 15: - switch (Field_t_Slot_inst16b_get (insn)) - { - case 0: - return OPCODE_RET_N; - case 1: - return OPCODE_RETW_N; - case 2: - return OPCODE_BREAK_N; - case 3: - if (Field_s_Slot_inst16b_get (insn) == 0) - return OPCODE_NOP_N; - break; - case 6: - if (Field_s_Slot_inst16b_get (insn) == 0) - return OPCODE_ILL_N; - break; - } - break; - } + if (Field_combined3e2c5767_fld84xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 521; /* blt.w18 */ + break; + case 14: + if (Field_combined3e2c5767_fld78xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 513; /* blti.w18 */ + break; + case 15: + if (Field_combined3e2c5767_fld86xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 523; /* bltu.w18 */ + break; + case 16: + if (Field_combined3e2c5767_fld80xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 515; /* bltui.w18 */ + break; + case 17: + if (Field_combined3e2c5767_fld90xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 527; /* bnall.w18 */ + break; + case 18: + if (Field_combined3e2c5767_fld82xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 519; /* bne.w18 */ + break; + case 19: + if (Field_combined3e2c5767_fld76xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 511; /* bnei.w18 */ + break; + case 20: + if (Field_combined3e2c5767_fld88xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 525; /* bnone.w18 */ + break; + case 21: + if (Field_combined3e2c5767_fld70xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 506; /* beqz.w18 */ + break; + case 22: + if (Field_combined3e2c5767_fld73xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 508; /* bgez.w18 */ + break; + case 23: + if (Field_combined3e2c5767_fld74xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 509; /* bltz.w18 */ + break; + case 24: + if (Field_combined3e2c5767_fld72xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 507; /* bnez.w18 */ + break; + case 25: + if (Field_combined3e2c5767_fld93xt_flix64_slot3_Slot_xt_flix64_slot3_get (insn) == 0) + return 97; /* nop */ break; } return 0; } -static int -Slot_inst16a_decode (const xtensa_insnbuf insn) -{ - switch (Field_op0_Slot_inst16a_get (insn)) - { - case 8: - return OPCODE_L32I_N; - case 9: - return OPCODE_S32I_N; - case 10: - return OPCODE_ADD_N; - case 11: - return OPCODE_ADDI_N; - } - return 0; -} + +/* Instruction slots. */ + +static void +Slot_x24_Format_inst_0_get (const xtensa_insnbuf insn, + xtensa_insnbuf slotbuf) +{ + slotbuf[1] = 0; + slotbuf[0] = (insn[0] & 0xffffff); +} + +static void +Slot_x24_Format_inst_0_set (xtensa_insnbuf insn, + const xtensa_insnbuf slotbuf) +{ + insn[0] = (insn[0] & ~0xffffff) | (slotbuf[0] & 0xffffff); +} + +static void +Slot_x16a_Format_inst16a_0_get (const xtensa_insnbuf insn, + xtensa_insnbuf slotbuf) +{ + slotbuf[1] = 0; + slotbuf[0] = (insn[0] & 0xffff); +} + +static void +Slot_x16a_Format_inst16a_0_set (xtensa_insnbuf insn, + const xtensa_insnbuf slotbuf) +{ + insn[0] = (insn[0] & ~0xffff) | (slotbuf[0] & 0xffff); +} + +static void +Slot_x16b_Format_inst16b_0_get (const xtensa_insnbuf insn, + xtensa_insnbuf slotbuf) +{ + slotbuf[1] = 0; + slotbuf[0] = (insn[0] & 0xffff); +} + +static void +Slot_x16b_Format_inst16b_0_set (xtensa_insnbuf insn, + const xtensa_insnbuf slotbuf) +{ + insn[0] = (insn[0] & ~0xffff) | (slotbuf[0] & 0xffff); +} + +static void +Slot_xt_format1_Format_xt_flix64_slot0_4_get (const xtensa_insnbuf insn, + xtensa_insnbuf slotbuf) +{ + slotbuf[1] = 0; + slotbuf[0] = ((insn[0] & 0xffffff0) >> 4); +} + +static void +Slot_xt_format1_Format_xt_flix64_slot0_4_set (xtensa_insnbuf insn, + const xtensa_insnbuf slotbuf) +{ + insn[0] = (insn[0] & ~0xffffff0) | ((slotbuf[0] & 0xffffff) << 4); +} + +static void +Slot_xt_format2_Format_xt_flix64_slot0_4_get (const xtensa_insnbuf insn, + xtensa_insnbuf slotbuf) +{ + slotbuf[1] = 0; + slotbuf[0] = ((insn[0] & 0xffffff0) >> 4); +} + +static void +Slot_xt_format2_Format_xt_flix64_slot0_4_set (xtensa_insnbuf insn, + const xtensa_insnbuf slotbuf) +{ + insn[0] = (insn[0] & ~0xffffff0) | ((slotbuf[0] & 0xffffff) << 4); +} + +static void +Slot_xt_format1_Format_xt_flix64_slot1_28_get (const xtensa_insnbuf insn, + xtensa_insnbuf slotbuf) +{ + slotbuf[1] = 0; + slotbuf[0] = ((insn[0] & 0xf0000000) >> 28); + slotbuf[0] = (slotbuf[0] & ~0xffff0) | ((insn[1] & 0xffff) << 4); +} + +static void +Slot_xt_format1_Format_xt_flix64_slot1_28_set (xtensa_insnbuf insn, + const xtensa_insnbuf slotbuf) +{ + insn[0] = (insn[0] & ~0xf0000000) | ((slotbuf[0] & 0xf) << 28); + insn[1] = (insn[1] & ~0xffff) | ((slotbuf[0] & 0xffff0) >> 4); +} + +static void +Slot_xt_format1_Format_xt_flix64_slot2_48_get (const xtensa_insnbuf insn, + xtensa_insnbuf slotbuf) +{ + slotbuf[1] = 0; + slotbuf[0] = ((insn[1] & 0xffff0000) >> 16); +} + +static void +Slot_xt_format1_Format_xt_flix64_slot2_48_set (xtensa_insnbuf insn, + const xtensa_insnbuf slotbuf) +{ + insn[1] = (insn[1] & ~0xffff0000) | ((slotbuf[0] & 0xffff) << 16); +} + +static void +Slot_xt_format2_Format_xt_flix64_slot3_28_get (const xtensa_insnbuf insn, + xtensa_insnbuf slotbuf) +{ + slotbuf[0] = ((insn[0] & 0xf0000000) >> 28); + slotbuf[0] = (slotbuf[0] & ~0xfffffff0) | ((insn[1] & 0xfffffff) << 4); + slotbuf[1] = ((insn[1] & 0x70000000) >> 28); +} + +static void +Slot_xt_format2_Format_xt_flix64_slot3_28_set (xtensa_insnbuf insn, + const xtensa_insnbuf slotbuf) +{ + insn[0] = (insn[0] & ~0xf0000000) | ((slotbuf[0] & 0xf) << 28); + insn[1] = (insn[1] & ~0xfffffff) | ((slotbuf[0] & 0xfffffff0) >> 4); + insn[1] = (insn[1] & ~0x70000000) | ((slotbuf[1] & 0x7) << 28); +} + +static xtensa_get_field_fn +Slot_inst_get_field_fns[] = { + Field_t_Slot_inst_get, + Field_bbi4_Slot_inst_get, + Field_bbi_Slot_inst_get, + Field_imm12_Slot_inst_get, + Field_imm8_Slot_inst_get, + Field_s_Slot_inst_get, + Field_imm12b_Slot_inst_get, + Field_imm16_Slot_inst_get, + Field_m_Slot_inst_get, + Field_n_Slot_inst_get, + Field_offset_Slot_inst_get, + Field_op0_Slot_inst_get, + Field_op1_Slot_inst_get, + Field_op2_Slot_inst_get, + Field_r_Slot_inst_get, + Field_sa4_Slot_inst_get, + Field_sae4_Slot_inst_get, + Field_sae_Slot_inst_get, + Field_sal_Slot_inst_get, + Field_sargt_Slot_inst_get, + Field_sas4_Slot_inst_get, + Field_sas_Slot_inst_get, + Field_sr_Slot_inst_get, + Field_st_Slot_inst_get, + Field_thi3_Slot_inst_get, + Field_imm4_Slot_inst_get, + Field_mn_Slot_inst_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_r3_Slot_inst_get, + Field_rbit2_Slot_inst_get, + Field_rhi_Slot_inst_get, + Field_t3_Slot_inst_get, + Field_tbit2_Slot_inst_get, + Field_tlo_Slot_inst_get, + Field_w_Slot_inst_get, + Field_y_Slot_inst_get, + Field_x_Slot_inst_get, + Field_t2_Slot_inst_get, + Field_s2_Slot_inst_get, + Field_r2_Slot_inst_get, + Field_t4_Slot_inst_get, + Field_s4_Slot_inst_get, + Field_r4_Slot_inst_get, + Field_t8_Slot_inst_get, + Field_s8_Slot_inst_get, + Field_r8_Slot_inst_get, + Field_xt_wbr15_imm_Slot_inst_get, + Field_xt_wbr18_imm_Slot_inst_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Implicit_Field_ar0_get, + Implicit_Field_ar4_get, + Implicit_Field_ar8_get, + Implicit_Field_ar12_get, + Implicit_Field_mr0_get, + Implicit_Field_mr1_get, + Implicit_Field_mr2_get, + Implicit_Field_mr3_get, + Implicit_Field_bt16_get, + Implicit_Field_bs16_get, + Implicit_Field_br16_get, + Implicit_Field_brall_get +}; + +static xtensa_set_field_fn +Slot_inst_set_field_fns[] = { + Field_t_Slot_inst_set, + Field_bbi4_Slot_inst_set, + Field_bbi_Slot_inst_set, + Field_imm12_Slot_inst_set, + Field_imm8_Slot_inst_set, + Field_s_Slot_inst_set, + Field_imm12b_Slot_inst_set, + Field_imm16_Slot_inst_set, + Field_m_Slot_inst_set, + Field_n_Slot_inst_set, + Field_offset_Slot_inst_set, + Field_op0_Slot_inst_set, + Field_op1_Slot_inst_set, + Field_op2_Slot_inst_set, + Field_r_Slot_inst_set, + Field_sa4_Slot_inst_set, + Field_sae4_Slot_inst_set, + Field_sae_Slot_inst_set, + Field_sal_Slot_inst_set, + Field_sargt_Slot_inst_set, + Field_sas4_Slot_inst_set, + Field_sas_Slot_inst_set, + Field_sr_Slot_inst_set, + Field_st_Slot_inst_set, + Field_thi3_Slot_inst_set, + Field_imm4_Slot_inst_set, + Field_mn_Slot_inst_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_r3_Slot_inst_set, + Field_rbit2_Slot_inst_set, + Field_rhi_Slot_inst_set, + Field_t3_Slot_inst_set, + Field_tbit2_Slot_inst_set, + Field_tlo_Slot_inst_set, + Field_w_Slot_inst_set, + Field_y_Slot_inst_set, + Field_x_Slot_inst_set, + Field_t2_Slot_inst_set, + Field_s2_Slot_inst_set, + Field_r2_Slot_inst_set, + Field_t4_Slot_inst_set, + Field_s4_Slot_inst_set, + Field_r4_Slot_inst_set, + Field_t8_Slot_inst_set, + Field_s8_Slot_inst_set, + Field_r8_Slot_inst_set, + Field_xt_wbr15_imm_Slot_inst_set, + Field_xt_wbr18_imm_Slot_inst_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set +}; + +static xtensa_get_field_fn +Slot_inst16a_get_field_fns[] = { + Field_t_Slot_inst16a_get, + 0, + 0, + 0, + 0, + Field_s_Slot_inst16a_get, + 0, + 0, + 0, + 0, + 0, + Field_op0_Slot_inst16a_get, + 0, + 0, + Field_r_Slot_inst16a_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_sr_Slot_inst16a_get, + Field_st_Slot_inst16a_get, + 0, + Field_imm4_Slot_inst16a_get, + 0, + Field_i_Slot_inst16a_get, + Field_imm6lo_Slot_inst16a_get, + Field_imm6hi_Slot_inst16a_get, + Field_imm7lo_Slot_inst16a_get, + Field_imm7hi_Slot_inst16a_get, + Field_z_Slot_inst16a_get, + Field_imm6_Slot_inst16a_get, + Field_imm7_Slot_inst16a_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_t2_Slot_inst16a_get, + Field_s2_Slot_inst16a_get, + Field_r2_Slot_inst16a_get, + Field_t4_Slot_inst16a_get, + Field_s4_Slot_inst16a_get, + Field_r4_Slot_inst16a_get, + Field_t8_Slot_inst16a_get, + Field_s8_Slot_inst16a_get, + Field_r8_Slot_inst16a_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Implicit_Field_ar0_get, + Implicit_Field_ar4_get, + Implicit_Field_ar8_get, + Implicit_Field_ar12_get, + Implicit_Field_mr0_get, + Implicit_Field_mr1_get, + Implicit_Field_mr2_get, + Implicit_Field_mr3_get, + Implicit_Field_bt16_get, + Implicit_Field_bs16_get, + Implicit_Field_br16_get, + Implicit_Field_brall_get +}; - -/* Instruction slots. */ +static xtensa_set_field_fn +Slot_inst16a_set_field_fns[] = { + Field_t_Slot_inst16a_set, + 0, + 0, + 0, + 0, + Field_s_Slot_inst16a_set, + 0, + 0, + 0, + 0, + 0, + Field_op0_Slot_inst16a_set, + 0, + 0, + Field_r_Slot_inst16a_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_sr_Slot_inst16a_set, + Field_st_Slot_inst16a_set, + 0, + Field_imm4_Slot_inst16a_set, + 0, + Field_i_Slot_inst16a_set, + Field_imm6lo_Slot_inst16a_set, + Field_imm6hi_Slot_inst16a_set, + Field_imm7lo_Slot_inst16a_set, + Field_imm7hi_Slot_inst16a_set, + Field_z_Slot_inst16a_set, + Field_imm6_Slot_inst16a_set, + Field_imm7_Slot_inst16a_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_t2_Slot_inst16a_set, + Field_s2_Slot_inst16a_set, + Field_r2_Slot_inst16a_set, + Field_t4_Slot_inst16a_set, + Field_s4_Slot_inst16a_set, + Field_r4_Slot_inst16a_set, + Field_t8_Slot_inst16a_set, + Field_s8_Slot_inst16a_set, + Field_r8_Slot_inst16a_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set +}; -static void -Slot_x24_Format_inst_0_get (const xtensa_insnbuf insn, - xtensa_insnbuf slotbuf) -{ - slotbuf[0] = (insn[0] & 0xffffff); -} +static xtensa_get_field_fn +Slot_inst16b_get_field_fns[] = { + Field_t_Slot_inst16b_get, + 0, + 0, + 0, + 0, + Field_s_Slot_inst16b_get, + 0, + 0, + 0, + 0, + 0, + Field_op0_Slot_inst16b_get, + 0, + 0, + Field_r_Slot_inst16b_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_sr_Slot_inst16b_get, + Field_st_Slot_inst16b_get, + 0, + Field_imm4_Slot_inst16b_get, + 0, + Field_i_Slot_inst16b_get, + Field_imm6lo_Slot_inst16b_get, + Field_imm6hi_Slot_inst16b_get, + Field_imm7lo_Slot_inst16b_get, + Field_imm7hi_Slot_inst16b_get, + Field_z_Slot_inst16b_get, + Field_imm6_Slot_inst16b_get, + Field_imm7_Slot_inst16b_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_t2_Slot_inst16b_get, + Field_s2_Slot_inst16b_get, + Field_r2_Slot_inst16b_get, + Field_t4_Slot_inst16b_get, + Field_s4_Slot_inst16b_get, + Field_r4_Slot_inst16b_get, + Field_t8_Slot_inst16b_get, + Field_s8_Slot_inst16b_get, + Field_r8_Slot_inst16b_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Implicit_Field_ar0_get, + Implicit_Field_ar4_get, + Implicit_Field_ar8_get, + Implicit_Field_ar12_get, + Implicit_Field_mr0_get, + Implicit_Field_mr1_get, + Implicit_Field_mr2_get, + Implicit_Field_mr3_get, + Implicit_Field_bt16_get, + Implicit_Field_bs16_get, + Implicit_Field_br16_get, + Implicit_Field_brall_get +}; -static void -Slot_x24_Format_inst_0_set (xtensa_insnbuf insn, - const xtensa_insnbuf slotbuf) -{ - insn[0] = (insn[0] & ~0xffffff) | (slotbuf[0] & 0xffffff); -} +static xtensa_set_field_fn +Slot_inst16b_set_field_fns[] = { + Field_t_Slot_inst16b_set, + 0, + 0, + 0, + 0, + Field_s_Slot_inst16b_set, + 0, + 0, + 0, + 0, + 0, + Field_op0_Slot_inst16b_set, + 0, + 0, + Field_r_Slot_inst16b_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_sr_Slot_inst16b_set, + Field_st_Slot_inst16b_set, + 0, + Field_imm4_Slot_inst16b_set, + 0, + Field_i_Slot_inst16b_set, + Field_imm6lo_Slot_inst16b_set, + Field_imm6hi_Slot_inst16b_set, + Field_imm7lo_Slot_inst16b_set, + Field_imm7hi_Slot_inst16b_set, + Field_z_Slot_inst16b_set, + Field_imm6_Slot_inst16b_set, + Field_imm7_Slot_inst16b_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_t2_Slot_inst16b_set, + Field_s2_Slot_inst16b_set, + Field_r2_Slot_inst16b_set, + Field_t4_Slot_inst16b_set, + Field_s4_Slot_inst16b_set, + Field_r4_Slot_inst16b_set, + Field_t8_Slot_inst16b_set, + Field_s8_Slot_inst16b_set, + Field_r8_Slot_inst16b_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set +}; -static void -Slot_x16a_Format_inst16a_0_get (const xtensa_insnbuf insn, - xtensa_insnbuf slotbuf) -{ - slotbuf[0] = ((insn[0] & 0xffff00) >> 8); -} +static xtensa_get_field_fn +Slot_xt_flix64_slot0_get_field_fns[] = { + Field_t_Slot_xt_flix64_slot0_get, + 0, + 0, + 0, + Field_imm8_Slot_xt_flix64_slot0_get, + Field_s_Slot_xt_flix64_slot0_get, + Field_imm12b_Slot_xt_flix64_slot0_get, + Field_imm16_Slot_xt_flix64_slot0_get, + Field_m_Slot_xt_flix64_slot0_get, + Field_n_Slot_xt_flix64_slot0_get, + 0, + 0, + Field_op1_Slot_xt_flix64_slot0_get, + Field_op2_Slot_xt_flix64_slot0_get, + Field_r_Slot_xt_flix64_slot0_get, + 0, + Field_sae4_Slot_xt_flix64_slot0_get, + Field_sae_Slot_xt_flix64_slot0_get, + Field_sal_Slot_xt_flix64_slot0_get, + Field_sargt_Slot_xt_flix64_slot0_get, + 0, + Field_sas_Slot_xt_flix64_slot0_get, + 0, + 0, + Field_thi3_Slot_xt_flix64_slot0_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_op0_xt_flix64_slot0_s3_Slot_xt_flix64_slot0_get, + Field_combined3e2c5767_fld7_Slot_xt_flix64_slot0_get, + Field_combined3e2c5767_fld8_Slot_xt_flix64_slot0_get, + Field_combined3e2c5767_fld9_Slot_xt_flix64_slot0_get, + Field_combined3e2c5767_fld11_Slot_xt_flix64_slot0_get, + Field_combined3e2c5767_fld49xt_flix64_slot0_Slot_xt_flix64_slot0_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_op0_xt_flix64_slot0_Slot_xt_flix64_slot0_get, + Implicit_Field_ar0_get, + Implicit_Field_ar4_get, + Implicit_Field_ar8_get, + Implicit_Field_ar12_get, + Implicit_Field_mr0_get, + Implicit_Field_mr1_get, + Implicit_Field_mr2_get, + Implicit_Field_mr3_get, + Implicit_Field_bt16_get, + Implicit_Field_bs16_get, + Implicit_Field_br16_get, + Implicit_Field_brall_get +}; -static void -Slot_x16a_Format_inst16a_0_set (xtensa_insnbuf insn, - const xtensa_insnbuf slotbuf) -{ - insn[0] = (insn[0] & ~0xffff00) | ((slotbuf[0] & 0xffff) << 8); -} +static xtensa_set_field_fn +Slot_xt_flix64_slot0_set_field_fns[] = { + Field_t_Slot_xt_flix64_slot0_set, + 0, + 0, + 0, + Field_imm8_Slot_xt_flix64_slot0_set, + Field_s_Slot_xt_flix64_slot0_set, + Field_imm12b_Slot_xt_flix64_slot0_set, + Field_imm16_Slot_xt_flix64_slot0_set, + Field_m_Slot_xt_flix64_slot0_set, + Field_n_Slot_xt_flix64_slot0_set, + 0, + 0, + Field_op1_Slot_xt_flix64_slot0_set, + Field_op2_Slot_xt_flix64_slot0_set, + Field_r_Slot_xt_flix64_slot0_set, + 0, + Field_sae4_Slot_xt_flix64_slot0_set, + Field_sae_Slot_xt_flix64_slot0_set, + Field_sal_Slot_xt_flix64_slot0_set, + Field_sargt_Slot_xt_flix64_slot0_set, + 0, + Field_sas_Slot_xt_flix64_slot0_set, + 0, + 0, + Field_thi3_Slot_xt_flix64_slot0_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_op0_xt_flix64_slot0_s3_Slot_xt_flix64_slot0_set, + Field_combined3e2c5767_fld7_Slot_xt_flix64_slot0_set, + Field_combined3e2c5767_fld8_Slot_xt_flix64_slot0_set, + Field_combined3e2c5767_fld9_Slot_xt_flix64_slot0_set, + Field_combined3e2c5767_fld11_Slot_xt_flix64_slot0_set, + Field_combined3e2c5767_fld49xt_flix64_slot0_Slot_xt_flix64_slot0_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_op0_xt_flix64_slot0_Slot_xt_flix64_slot0_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set +}; -static void -Slot_x16b_Format_inst16b_0_get (const xtensa_insnbuf insn, - xtensa_insnbuf slotbuf) -{ - slotbuf[0] = ((insn[0] & 0xffff00) >> 8); -} +static xtensa_get_field_fn +Slot_xt_flix64_slot1_get_field_fns[] = { + Field_t_Slot_xt_flix64_slot1_get, + 0, + 0, + 0, + Field_imm8_Slot_xt_flix64_slot1_get, + Field_s_Slot_xt_flix64_slot1_get, + Field_imm12b_Slot_xt_flix64_slot1_get, + 0, + 0, + 0, + Field_offset_Slot_xt_flix64_slot1_get, + 0, + 0, + Field_op2_Slot_xt_flix64_slot1_get, + Field_r_Slot_xt_flix64_slot1_get, + 0, + 0, + Field_sae_Slot_xt_flix64_slot1_get, + Field_sal_Slot_xt_flix64_slot1_get, + Field_sargt_Slot_xt_flix64_slot1_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_op0_s4_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld16_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld19xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld20xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld21xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld22xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld23xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld25xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld26xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld28xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld30xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld32xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld33xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld35xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld51xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld52xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld53xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld54xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld57xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld58xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld60xt_flix64_slot1_Slot_xt_flix64_slot1_get, + Field_combined3e2c5767_fld62xt_flix64_slot1_Slot_xt_flix64_slot1_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Implicit_Field_ar0_get, + Implicit_Field_ar4_get, + Implicit_Field_ar8_get, + Implicit_Field_ar12_get, + Implicit_Field_mr0_get, + Implicit_Field_mr1_get, + Implicit_Field_mr2_get, + Implicit_Field_mr3_get, + Implicit_Field_bt16_get, + Implicit_Field_bs16_get, + Implicit_Field_br16_get, + Implicit_Field_brall_get +}; -static void -Slot_x16b_Format_inst16b_0_set (xtensa_insnbuf insn, - const xtensa_insnbuf slotbuf) -{ - insn[0] = (insn[0] & ~0xffff00) | ((slotbuf[0] & 0xffff) << 8); -} +static xtensa_set_field_fn +Slot_xt_flix64_slot1_set_field_fns[] = { + Field_t_Slot_xt_flix64_slot1_set, + 0, + 0, + 0, + Field_imm8_Slot_xt_flix64_slot1_set, + Field_s_Slot_xt_flix64_slot1_set, + Field_imm12b_Slot_xt_flix64_slot1_set, + 0, + 0, + 0, + Field_offset_Slot_xt_flix64_slot1_set, + 0, + 0, + Field_op2_Slot_xt_flix64_slot1_set, + Field_r_Slot_xt_flix64_slot1_set, + 0, + 0, + Field_sae_Slot_xt_flix64_slot1_set, + Field_sal_Slot_xt_flix64_slot1_set, + Field_sargt_Slot_xt_flix64_slot1_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_op0_s4_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld16_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld19xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld20xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld21xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld22xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld23xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld25xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld26xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld28xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld30xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld32xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld33xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld35xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld51xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld52xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld53xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld54xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld57xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld58xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld60xt_flix64_slot1_Slot_xt_flix64_slot1_set, + Field_combined3e2c5767_fld62xt_flix64_slot1_Slot_xt_flix64_slot1_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set +}; static xtensa_get_field_fn -Slot_inst_get_field_fns[] = { - Field_t_Slot_inst_get, - Field_bbi4_Slot_inst_get, - Field_bbi_Slot_inst_get, - Field_imm12_Slot_inst_get, - Field_imm8_Slot_inst_get, - Field_s_Slot_inst_get, - Field_imm12b_Slot_inst_get, - Field_imm16_Slot_inst_get, - Field_m_Slot_inst_get, - Field_n_Slot_inst_get, - Field_offset_Slot_inst_get, - Field_op0_Slot_inst_get, - Field_op1_Slot_inst_get, - Field_op2_Slot_inst_get, - Field_r_Slot_inst_get, - Field_sa4_Slot_inst_get, - Field_sae4_Slot_inst_get, - Field_sae_Slot_inst_get, - Field_sal_Slot_inst_get, - Field_sargt_Slot_inst_get, - Field_sas4_Slot_inst_get, - Field_sas_Slot_inst_get, - Field_sr_Slot_inst_get, - Field_st_Slot_inst_get, - Field_thi3_Slot_inst_get, - Field_imm4_Slot_inst_get, - Field_mn_Slot_inst_get, +Slot_xt_flix64_slot2_get_field_fns[] = { + Field_t_Slot_xt_flix64_slot2_get, + 0, + 0, + 0, + 0, + Field_s_Slot_xt_flix64_slot2_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_r_Slot_xt_flix64_slot2_get, + 0, + 0, + 0, + 0, + Field_sargt_Slot_xt_flix64_slot2_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_imm7_Slot_xt_flix64_slot2_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_op0_s5_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld36xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld37xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld39xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld41xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld42xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld44xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld45xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld47xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld63xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld64xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld65xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld66xt_flix64_slot2_Slot_xt_flix64_slot2_get, + Field_combined3e2c5767_fld68xt_flix64_slot2_Slot_xt_flix64_slot2_get, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Implicit_Field_ar0_get, + Implicit_Field_ar4_get, + Implicit_Field_ar8_get, + Implicit_Field_ar12_get, + Implicit_Field_mr0_get, + Implicit_Field_mr1_get, + Implicit_Field_mr2_get, + Implicit_Field_mr3_get, + Implicit_Field_bt16_get, + Implicit_Field_bs16_get, + Implicit_Field_br16_get, + Implicit_Field_brall_get +}; + +static xtensa_set_field_fn +Slot_xt_flix64_slot2_set_field_fns[] = { + Field_t_Slot_xt_flix64_slot2_set, + 0, + 0, + 0, + 0, + Field_s_Slot_xt_flix64_slot2_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_r_Slot_xt_flix64_slot2_set, + 0, + 0, + 0, + 0, + Field_sargt_Slot_xt_flix64_slot2_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_imm7_Slot_xt_flix64_slot2_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 0, 0, 0, @@ -11978,44 +20805,21 @@ 0, 0, 0, + Field_op0_s5_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld36xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld37xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld39xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld41xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld42xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld44xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld45xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld47xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld63xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld64xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld65xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld66xt_flix64_slot2_Slot_xt_flix64_slot2_set, + Field_combined3e2c5767_fld68xt_flix64_slot2_Slot_xt_flix64_slot2_set, 0, - Field_xt_wbr15_imm_Slot_inst_get, - Field_xt_wbr18_imm_Slot_inst_get, - Implicit_Field_ar0_get, - Implicit_Field_ar4_get, - Implicit_Field_ar8_get, - Implicit_Field_ar12_get -}; - -static xtensa_set_field_fn -Slot_inst_set_field_fns[] = { - Field_t_Slot_inst_set, - Field_bbi4_Slot_inst_set, - Field_bbi_Slot_inst_set, - Field_imm12_Slot_inst_set, - Field_imm8_Slot_inst_set, - Field_s_Slot_inst_set, - Field_imm12b_Slot_inst_set, - Field_imm16_Slot_inst_set, - Field_m_Slot_inst_set, - Field_n_Slot_inst_set, - Field_offset_Slot_inst_set, - Field_op0_Slot_inst_set, - Field_op1_Slot_inst_set, - Field_op2_Slot_inst_set, - Field_r_Slot_inst_set, - Field_sa4_Slot_inst_set, - Field_sae4_Slot_inst_set, - Field_sae_Slot_inst_set, - Field_sal_Slot_inst_set, - Field_sargt_Slot_inst_set, - Field_sas4_Slot_inst_set, - Field_sas_Slot_inst_set, - Field_sr_Slot_inst_set, - Field_st_Slot_inst_set, - Field_thi3_Slot_inst_set, - Field_imm4_Slot_inst_set, - Field_mn_Slot_inst_set, 0, 0, 0, @@ -12024,8 +20828,31 @@ 0, 0, 0, - Field_xt_wbr15_imm_Slot_inst_set, - Field_xt_wbr18_imm_Slot_inst_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, Implicit_Field_set, Implicit_Field_set, Implicit_Field_set, @@ -12033,22 +20860,22 @@ }; static xtensa_get_field_fn -Slot_inst16a_get_field_fns[] = { - Field_t_Slot_inst16a_get, +Slot_xt_flix64_slot3_get_field_fns[] = { + Field_t_Slot_xt_flix64_slot3_get, 0, + Field_bbi_Slot_xt_flix64_slot3_get, 0, 0, + Field_s_Slot_xt_flix64_slot3_get, 0, - Field_s_Slot_inst16a_get, 0, 0, 0, 0, 0, - Field_op0_Slot_inst16a_get, 0, 0, - Field_r_Slot_inst16a_get, + Field_r_Slot_xt_flix64_slot3_get, 0, 0, 0, @@ -12056,44 +20883,21 @@ 0, 0, 0, - Field_sr_Slot_inst16a_get, - Field_st_Slot_inst16a_get, 0, - Field_imm4_Slot_inst16a_get, 0, - Field_i_Slot_inst16a_get, - Field_imm6lo_Slot_inst16a_get, - Field_imm6hi_Slot_inst16a_get, - Field_imm7lo_Slot_inst16a_get, - Field_imm7hi_Slot_inst16a_get, - Field_z_Slot_inst16a_get, - Field_imm6_Slot_inst16a_get, - Field_imm7_Slot_inst16a_get, 0, 0, - Implicit_Field_ar0_get, - Implicit_Field_ar4_get, - Implicit_Field_ar8_get, - Implicit_Field_ar12_get -}; - -static xtensa_set_field_fn -Slot_inst16a_set_field_fns[] = { - Field_t_Slot_inst16a_set, 0, 0, 0, 0, - Field_s_Slot_inst16a_set, 0, 0, 0, 0, 0, - Field_op0_Slot_inst16a_set, 0, 0, - Field_r_Slot_inst16a_set, 0, 0, 0, @@ -12101,44 +20905,26 @@ 0, 0, 0, - Field_sr_Slot_inst16a_set, - Field_st_Slot_inst16a_set, 0, - Field_imm4_Slot_inst16a_set, 0, - Field_i_Slot_inst16a_set, - Field_imm6lo_Slot_inst16a_set, - Field_imm6hi_Slot_inst16a_set, - Field_imm7lo_Slot_inst16a_set, - Field_imm7hi_Slot_inst16a_set, - Field_z_Slot_inst16a_set, - Field_imm6_Slot_inst16a_set, - Field_imm7_Slot_inst16a_set, 0, 0, - Implicit_Field_set, - Implicit_Field_set, - Implicit_Field_set, - Implicit_Field_set -}; - -static xtensa_get_field_fn -Slot_inst16b_get_field_fns[] = { - Field_t_Slot_inst16b_get, 0, 0, 0, 0, - Field_s_Slot_inst16b_get, + 0, + 0, + Field_xt_wbr18_imm_Slot_xt_flix64_slot3_get, + 0, + 0, 0, 0, 0, 0, 0, - Field_op0_Slot_inst16b_get, 0, 0, - Field_r_Slot_inst16b_get, 0, 0, 0, @@ -12146,44 +20932,114 @@ 0, 0, 0, - Field_sr_Slot_inst16b_get, - Field_st_Slot_inst16b_get, 0, - Field_imm4_Slot_inst16b_get, 0, - Field_i_Slot_inst16b_get, - Field_imm6lo_Slot_inst16b_get, - Field_imm6hi_Slot_inst16b_get, - Field_imm7lo_Slot_inst16b_get, - Field_imm7hi_Slot_inst16b_get, - Field_z_Slot_inst16b_get, - Field_imm6_Slot_inst16b_get, - Field_imm7_Slot_inst16b_get, 0, 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_op0_s6_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld70xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld71_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld72xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld73xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld74xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld75xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld76xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld77xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld78xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld79xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld80xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld81xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld82xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld83xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld84xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld85xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld86xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld87xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld88xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld89xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld90xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld91xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld92xt_flix64_slot3_Slot_xt_flix64_slot3_get, + Field_combined3e2c5767_fld93xt_flix64_slot3_Slot_xt_flix64_slot3_get, + 0, Implicit_Field_ar0_get, Implicit_Field_ar4_get, Implicit_Field_ar8_get, - Implicit_Field_ar12_get + Implicit_Field_ar12_get, + Implicit_Field_mr0_get, + Implicit_Field_mr1_get, + Implicit_Field_mr2_get, + Implicit_Field_mr3_get, + Implicit_Field_bt16_get, + Implicit_Field_bs16_get, + Implicit_Field_br16_get, + Implicit_Field_brall_get }; static xtensa_set_field_fn -Slot_inst16b_set_field_fns[] = { - Field_t_Slot_inst16b_set, +Slot_xt_flix64_slot3_set_field_fns[] = { + Field_t_Slot_xt_flix64_slot3_set, + 0, + Field_bbi_Slot_xt_flix64_slot3_set, + 0, + 0, + Field_s_Slot_xt_flix64_slot3_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_r_Slot_xt_flix64_slot3_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 0, 0, 0, 0, - Field_s_Slot_inst16b_set, 0, 0, 0, 0, 0, - Field_op0_Slot_inst16b_set, 0, 0, - Field_r_Slot_inst16b_set, 0, 0, 0, @@ -12191,21 +21047,90 @@ 0, 0, 0, - Field_sr_Slot_inst16b_set, - Field_st_Slot_inst16b_set, 0, - Field_imm4_Slot_inst16b_set, 0, - Field_i_Slot_inst16b_set, - Field_imm6lo_Slot_inst16b_set, - Field_imm6hi_Slot_inst16b_set, - Field_imm7lo_Slot_inst16b_set, - Field_imm7hi_Slot_inst16b_set, - Field_z_Slot_inst16b_set, - Field_imm6_Slot_inst16b_set, - Field_imm7_Slot_inst16b_set, 0, 0, + 0, + 0, + 0, + Field_xt_wbr18_imm_Slot_xt_flix64_slot3_set, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + Field_op0_s6_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld70xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld71_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld72xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld73xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld74xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld75xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld76xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld77xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld78xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld79xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld80xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld81xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld82xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld83xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld84xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld85xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld86xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld87xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld88xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld89xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld90xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld91xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld92xt_flix64_slot3_Slot_xt_flix64_slot3_set, + Field_combined3e2c5767_fld93xt_flix64_slot3_Slot_xt_flix64_slot3_set, + 0, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, + Implicit_Field_set, Implicit_Field_set, Implicit_Field_set, Implicit_Field_set, @@ -12224,7 +21149,27 @@ { "Inst16b", "x16b", 0, Slot_x16b_Format_inst16b_0_get, Slot_x16b_Format_inst16b_0_set, Slot_inst16b_get_field_fns, Slot_inst16b_set_field_fns, - Slot_inst16b_decode, "nop.n" } + Slot_inst16b_decode, "nop.n" }, + { "xt_flix64_slot0", "xt_format1", 0, + Slot_xt_format1_Format_xt_flix64_slot0_4_get, Slot_xt_format1_Format_xt_flix64_slot0_4_set, + Slot_xt_flix64_slot0_get_field_fns, Slot_xt_flix64_slot0_set_field_fns, + Slot_xt_flix64_slot0_decode, "nop" }, + { "xt_flix64_slot0", "xt_format2", 0, + Slot_xt_format2_Format_xt_flix64_slot0_4_get, Slot_xt_format2_Format_xt_flix64_slot0_4_set, + Slot_xt_flix64_slot0_get_field_fns, Slot_xt_flix64_slot0_set_field_fns, + Slot_xt_flix64_slot0_decode, "nop" }, + { "xt_flix64_slot1", "xt_format1", 1, + Slot_xt_format1_Format_xt_flix64_slot1_28_get, Slot_xt_format1_Format_xt_flix64_slot1_28_set, + Slot_xt_flix64_slot1_get_field_fns, Slot_xt_flix64_slot1_set_field_fns, + Slot_xt_flix64_slot1_decode, "nop" }, + { "xt_flix64_slot2", "xt_format1", 2, + Slot_xt_format1_Format_xt_flix64_slot2_48_get, Slot_xt_format1_Format_xt_flix64_slot2_48_set, + Slot_xt_flix64_slot2_get_field_fns, Slot_xt_flix64_slot2_set_field_fns, + Slot_xt_flix64_slot2_decode, "nop" }, + { "xt_flix64_slot3", "xt_format2", 1, + Slot_xt_format2_Format_xt_flix64_slot3_28_get, Slot_xt_format2_Format_xt_flix64_slot3_28_set, + Slot_xt_flix64_slot3_get_field_fns, Slot_xt_flix64_slot3_set_field_fns, + Slot_xt_flix64_slot3_decode, "nop" } }; @@ -12234,18 +21179,35 @@ Format_x24_encode (xtensa_insnbuf insn) { insn[0] = 0; + insn[1] = 0; } static void Format_x16a_encode (xtensa_insnbuf insn) { - insn[0] = 0x800000; + insn[0] = 0x8; + insn[1] = 0; } static void Format_x16b_encode (xtensa_insnbuf insn) { - insn[0] = 0xc00000; + insn[0] = 0xc; + insn[1] = 0; +} + +static void +Format_xt_format1_encode (xtensa_insnbuf insn) +{ + insn[0] = 0xe; + insn[1] = 0; +} + +static void +Format_xt_format2_encode (xtensa_insnbuf insn) +{ + insn[0] = 0xf; + insn[1] = 0; } static int Format_x24_slots[] = { 0 }; @@ -12254,22 +21216,32 @@ static int Format_x16b_slots[] = { 2 }; +static int Format_xt_format1_slots[] = { 3, 5, 6 }; + +static int Format_xt_format2_slots[] = { 4, 7 }; + static xtensa_format_internal formats[] = { { "x24", 3, Format_x24_encode, 1, Format_x24_slots }, { "x16a", 2, Format_x16a_encode, 1, Format_x16a_slots }, - { "x16b", 2, Format_x16b_encode, 1, Format_x16b_slots } + { "x16b", 2, Format_x16b_encode, 1, Format_x16b_slots }, + { "xt_format1", 8, Format_xt_format1_encode, 3, Format_xt_format1_slots }, + { "xt_format2", 8, Format_xt_format2_encode, 2, Format_xt_format2_slots } }; static int format_decoder (const xtensa_insnbuf insn) { - if ((insn[0] & 0x800000) == 0) + if ((insn[0] & 0x8) == 0 && (insn[1] & 0) == 0) return 0; /* x24 */ - if ((insn[0] & 0xc00000) == 0x800000) + if ((insn[0] & 0xc) == 0x8 && (insn[1] & 0) == 0) return 1; /* x16a */ - if ((insn[0] & 0xe00000) == 0xc00000) + if ((insn[0] & 0xe) == 0xc && (insn[1] & 0) == 0) return 2; /* x16b */ + if ((insn[0] & 0xf) == 0xe && (insn[1] & 0) == 0) + return 3; /* xt_format1 */ + if ((insn[0] & 0xf) == 0xf && (insn[1] & 0x80000000) == 0) + return 4; /* xt_format2 */ return -1; } @@ -12288,14 +21260,14 @@ 2, 2, 2, - -1, - -1 + 8, + 8 }; static int length_decoder (const unsigned char *insn) { - int op0 = (insn[0] >> 4) & 0xf; + int op0 = insn[0] & 0xf; return length_table[op0]; } @@ -12303,15 +21275,15 @@ /* Top-level ISA structure. */ xtensa_isa_internal xtensa_modules = { - 1 /* big-endian */, - 3 /* insn_size */, 0, - 3, formats, format_decoder, length_decoder, - 3, slots, - 41 /* num_fields */, - 75, operands, - 286, iclasses, - 353, opcodes, 0, - 1, regfiles, + 0 /* little-endian */, + 8 /* insn_size */, 0, + 5, formats, format_decoder, length_decoder, + 8, slots, + 135 /* num_fields */, + 188, operands, + 355, iclasses, + 530, opcodes, 0, + 8, regfiles, NUM_STATES, states, 0, NUM_SYSREGS, sysregs, 0, { MAX_SPECIAL_REG, MAX_USER_REG }, { 0, 0 }, diff -Nru crash-5.1.6/=unpacked-tar1=/cgen/cpu/ChangeLog crash-6.1.6/=unpacked-tar1=/cgen/cpu/ChangeLog --- crash-5.1.6/=unpacked-tar1=/cgen/cpu/ChangeLog 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/cgen/cpu/ChangeLog 2010-10-08 14:00:48.000000000 +0000 @@ -0,0 +1,771 @@ +2010-10-08 Pierre Muller + + * frv.opc: #undef DEBUG. + +2010-07-03 DJ Delorie + + * m32c.cpu (f-dsp-8-s24): Mask high byte after shifting it. + +2010-02-11 Doug Evans + + * m32r.cpu (HASH-PREFIX): Delete. + (duhpo, dshpo): New pmacros. + (simm8, simm16): Delete HASH-PREFIX attribute, define with dshpo. + (uimm3, uimm4, uimm5, uimm8, uimm16, imm1): Delete HASH-PREFIX + attribute, define with dshpo. + (uimm24): Delete HASH-PREFIX attribute. + * m32r.opc (CGEN_PRINT_NORMAL): Delete. + (print_signed_with_hash_prefix): New function. + (print_unsigned_with_hash_prefix): New function. + * xc16x.cpu (dowh): New pmacro. + (upof16): Define with dowh, specify print handler. + (qbit, qlobit, qhibit): Ditto. + (upag16): Ditto. + * xc16x.opc (CGEN_PRINT_NORMAL): Delete. + (print_with_dot_prefix): New functions. + (print_with_pof_prefix, print_with_pag_prefix): New functions. + +2010-01-24 Doug Evans + + * frv.cpu (floating-point-conversion): Update call to fp conv op. + (floating-point-dual-conversion, ne-floating-point-dual-conversion, + conditional-floating-point-conversion, ne-floating-point-conversion, + float-parallel-mul-add-double-semantics): Ditto. + +2010-01-05 Doug Evans + + * m32c.cpu (f-dsp-32-u24): Fix mode of extract handler. + (f-dsp-40-u20, f-dsp-40-u24): Ditto. + +2010-01-02 Doug Evans + + * m32c.opc (parse_signed16): Fix typo. + +2009-12-11 Nick Clifton + + * frv.opc: Fix shadowed variable warnings. + * m32c.opc: Fix shadowed variable warnings. + +2009-11-14 Doug Evans + + Must use VOID expression in VOID context. + * xc16x.cpu (mov4): Fix mode of `sequence'. + (mov9, mov10): Ditto. + (movbsrr, moveb1, jmprel, jmpseg, jmps): Fix mode of `if'. + (callr, callseg, calls, trap, rets, reti): Ditto. + (jb, jbc, jnb, jnbs): Fix mode of `if'. Comment out no-op `sll'. + (atomic, extr, extp, extp1, extpg1, extpr, extpr1): Fix mode of `cond'. + (exts, exts1, extsr, extsr1, prior): Ditto. + +2009-10-23 Doug Evans + + * m32c.opc (opc.h): cgen-types.h -> cgen/basic-modes.h. + cgen-ops.h -> cgen/basic-ops.h. + +2009-09-25 Alan Modra + + * m32r.cpu (stb-plus): Typo fix. + +2009-09-23 Doug Evans + + * m32r.cpu (sth-plus): Fix address mode and calculation. + (stb-plus): Ditto. + (clrpsw): Fix mask calculation. + (bset, bclr, btst): Make mode in bit calculation match expression. + + * xc16x.cpu (rtl-version): Set to 0.8. + (gr-names, ext-names,psw-names): Update, print-name -> enum-prefix, + make uppercase. Remove unnecessary name-prefix spec. + (grb-names, conditioncode-names, extconditioncode-names): Ditto. + (grb8-names, r8-names, regmem8-names, regdiv8-names): Ditto. + (reg0-name, reg0-name1, regbmem8-names, memgr8-names): Ditto. + (h-cr): New hardware. + (muls): Comment out parts that won't compile, add fixme. + (mulu, divl, divlu, jmpabs, jmpa-, jmprel, jbc, jnbs, callr): Ditto. + (scxti, scxtmg, scxtm, bclear, bclr18, bset19, bitset, bmov): Ditto. + (bmovn, band, bor, bxor, bcmp, bfldl, bfldh): Ditto. + +2009-07-16 Doug Evans + + * cpu/simplify.inc (*): One line doc strings don't need \n. + (df): Invoke define-full-ifield instead of claiming it's an alias. + (dno): Define. + (dnop): Mark as deprecated. + +2009-06-22 Alan Modra + + * m32c.opc (parse_lab_5_3): Use correct enum. + +2009-01-07 Hans-Peter Nilsson + + * frv.cpu (mabshs): Explicitly sign-extend arguments of abs to DI. + (DI-ext-HI, DI-ext-UHI, DI-ext-DI): New pmacros. + (media-arith-sat-semantics): Explicitly sign- or zero-extend + arguments of "operation" to DI using "mode" and the new pmacros. + +2009-01-03 Hans-Peter Nilsson + + * cris.cpu (cris-implemented-writable-specregs-v32): Correct size + of number 2, PID. + +2008-12-23 Jon Beniston + + * lm32.cpu: New file. + * lm32.opc: New file. + +2008-01-29 Alan Modra + + * mt.opc (parse_imm16): Apply 2007-09-26 opcodes/mt-asm.c change + to source. + +2007-10-22 Hans-Peter Nilsson + + * cris.cpu (movs, movu): Use result of extension operation when + updating flags. + +2007-07-04 Nick Clifton + + * cris.cpu: Update copyright notice to refer to GPLv3. + * frv.cpu, frv.opc, iq10.cpu, iq2000m.cpu, iq2000.opc, m32c.cpu, + m32c.opc, m32r.cpu, m32r.opc, mt.cpu, mt.opc, sh64-compact.cpu, + sh64-media.cpu, sh.cpu, sh.opc, simplify.inc, xc16x.cpu, + xc16x.opc: Likewise. + * iq2000.cpu: Fix copyright notice to refer to FSF. + +2007-04-30 Mark Salter + + * frv.cpu (spr-names): Support new coprocessor SPR registers. + +2007-04-20 Nick Clifton + + * xc16x.cpu: Restore after accidentally overwriting this file with + xc16x.opc. + +2007-03-29 DJ Delorie + + * m32c.cpu (Imm-8-s4n): Fix print hook. + (Lab-24-8, Lab-32-8, Lab-40-8): Fix. + (arith-jnz-imm4-dst-defn): Make relaxable. + (arith-jnz16-imm4-dst-defn): Fix encodings. + +2007-03-20 DJ Delorie + + * m32c.cpu (f-dsp-40-u20, f-dsp-48-u20, Dsp-40-u20, Dsp-40-u20, + mem20): New. + (src16-16-20-An-relative-*): New. + (dst16-*-20-An-relative-*): New. + (dst16-16-16sa-*): New + (dst16-16-16ar-*): New + (dst32-16-16sa-Unprefixed-*): New + (jsri): Fix operands. + (setzx): Fix encoding. + +2007-03-08 Alan Modra + + * m32r.opc: Formatting. + +2006-05-22 Nick Clifton + + * iq2000.cpu: Fix include paths for iq2000m.cpu and iq10.cpu. + +2006-04-10 DJ Delorie + + * m32c.opc (parse_unsigned_bitbase): Take a new parameter which + decides if this function accepts symbolic constants or not. + (parse_signed_bitbase): Likewise. + (parse_unsigned_bitbase8): Pass the new parameter. + (parse_unsigned_bitbase11): Likewise. + (parse_unsigned_bitbase16): Likewise. + (parse_unsigned_bitbase19): Likewise. + (parse_unsigned_bitbase27): Likewise. + (parse_signed_bitbase8): Likewise. + (parse_signed_bitbase11): Likewise. + (parse_signed_bitbase19): Likewise. + +2006-03-13 DJ Delorie + + * m32c.cpu (Bit3-S): New. + (btst:s): New. + * m32c.opc (parse_bit3_S): New. + + * m32c.cpu (decimal-subtraction16-insn): Add second operand. + (btst): Add optional :G suffix for MACH32. + (or.b:S): New. + (pop.w:G): Add optional :G suffix for MACH16. + (push.b.imm): Fix syntax. + +2006-03-10 DJ Delorie + + * m32c.cpu (mul.l): New. + (mulu.l): New. + +2006-03-03 Shrirang Khisti + + * m32c.cpu (RL_TYPE): New attribute, with macros. + (Lab-8-24): Add RELAX. + (unary-insn-defn-g, binary-arith-imm-dst-defn, + binary-arith-imm4-dst-defn): Add 1ADDR attribute. + (binary-arith-src-dst-defn): Add 2ADDR attribute. + (jcnd16-5, jcnd16, jcnd32, jmp16.s, jmp16.b, jmp16.w, jmp16.a, + jmp32.s, jmp32.b, jmp32.w, jmp32.a, jsr16.w, jsr16.a): Add JUMP + attribute. + (jsri16, jsri32): Add 1ADDR attribute. + (jsr32.w, jsr32.a): Add JUMP attribute. + +2006-02-17 Shrirang Khisti + Anil Paranjape + Shilin Shakti + + * xc16x.cpu: New file containing complete CGEN specific XC16X CPU + description. + * xc16x.opc: New file containing supporting XC16C routines. + +2006-02-10 Nick Clifton + + * iq2000.opc (parse_hi16): Truncate shifted values to 16 bits. + +2006-01-06 DJ Delorie + + * m32c.cpu (mov.w:q): Fix mode. + (push32.b.imm): Likewise, for the comment. + +2005-12-16 Nathan Sidwell + + Second part of ms1 to mt renaming. + * mt.cpu (define-arch, define-isa): Set name to mt. + (define-mach): Adjust. + * mt.opc (CGEN_ASM_HASH): Update. + (mt_asm_hash, mt_cgen_insn_supported): Renamed. + (parse_loopsize, parse_imm16): Adjust. + +2005-12-13 DJ Delorie + + * m32c.cpu (jsri): Fix order so register names aren't treated as + symbols. + (indexb, indexbd, indexbs, indexl, indexld, indexls, indexw, + indexwd, indexws): Fix encodings. + +2005-12-12 Nathan Sidwell + + * mt.cpu: Rename from ms1.cpu. + * mt.opc: Rename from ms1.opc. + +2005-12-06 Hans-Peter Nilsson + + * cris.cpu (simplecris-common-writable-specregs) + (simplecris-common-readable-specregs): Split from + simplecris-common-specregs. All users changed. + (cris-implemented-writable-specregs-v0) + (cris-implemented-readable-specregs-v0): Similar from + cris-implemented-specregs-v0. + (cris-implemented-writable-specregs-v3) + (cris-implemented-readable-specregs-v3) + (cris-implemented-writable-specregs-v8) + (cris-implemented-readable-specregs-v8) + (cris-implemented-writable-specregs-v10) + (cris-implemented-readable-specregs-v10) + (cris-implemented-writable-specregs-v32) + (cris-implemented-readable-specregs-v32): Similar. + (bdap-32-pc, move-m-pcplus-p0, move-m-spplus-p8): New + insns and specializations. + +2005-11-08 Nathan Sidwell + + Add ms2 + * ms1.cpu (ms2, ms2bf): New architecture variant, cpu, machine and + model. + (f-uu8, f-uu1, f-imm16l, f-loopo, f-cb1sel, f-cb2sel, f-cb1incr, + f-cb2incr, f-rc3): New fields. + (LOOP): New instruction. + (JAL-HAZARD): New hazard. + (imm16o, loopsize, imm16l, rc3, cb1sel, cb2sel, cb1incr, cb2incr): + New operands. + (mul, muli, dbnz, iflush): Enable for ms2 + (jal, reti): Has JAL-HAZARD. + (ldctxt, ldfb, stfb): Only ms1. + (fbcb): Only ms1,ms1-003. + (wfbinc, mefbinc, wfbincr, mwfbincr, fbcbincs, mfbcbincs, + fbcbincrs, mfbcbincrs): Enable for ms2. + (loop, loopu, dfbc, dwfb, fbwfb, dfbr): New ms2 insns. + * ms1.opc (parse_loopsize): New. + (parse_imm16): hi16/lo16 relocs are applicable to IMM16L. + (print_pcrel): New. + +2005-10-28 Dave Brolley + + Contribute the following change: + 2003-09-24 Dave Brolley + + * frv.opc: Use CGEN_ATTR_VALUE_ENUM_TYPE in place of + CGEN_ATTR_VALUE_TYPE. + * m32c.opc (m32c_cgen_insn_supported): Use CGEN_INSN_BITSET_ATTR_VALUE. + Use cgen_bitset_intersect_p. + +2005-10-27 DJ Delorie + + * m32c.cpu (Imm-8-s4n, Imm-12-s4n): New. + (arith-jnz16-imm4-dst-defn, arith-jnz32-imm4-dst-defn, + arith-jnz-imm4-dst-mach, arith-jnz-imm4-dst): Keep track of which + imm operand is needed. + (adjnz, sbjnz): Pass the right operands. + (unary-insn-defn, unary16-defn, unary32-defn, unary-insn-mach, + unary-insn): Add -g variants for opcodes that need to support :G. + (not.BW:G, push.BW:G): Call it. + (stzx16-imm8-imm8-dsp8sb, stzx16-imm8-imm8-dsp8fb, + stzx16-imm8-imm8-abs16): Fix operand typos. + * m32c.opc (m32c_asm_hash): Support bnCND. + (parse_signed4n, print_signed4n): New. + +2005-10-26 DJ Delorie + + * m32c.cpu (f-dsp-8-s24, Dsp-8-s24): New. + (mov-dspsp-dst-defn, mov-src-dspsp-defn, mov16-dspsp-dst-defn, + mov16-src-dspsp-defn, mov32-dspsp-dst-defn, mov32-src-dspsp-defn): + dsp8[sp] is signed. + (mov.WL:S #imm,A0/A1): dsp24 is signed (i.e. -0x800000..0xffffff). + (mov.BW:S r0,r1): Fix typo r1l->r1. + (tst): Allow :G suffix. + * m32c.opc (parse_signed24): New, for -0x800000..0xffffff. + +2005-10-26 Kazuhiro Inaoka + + * m32r.opc (parse_hi16): Do not assume a 32-bit host word size. + +2005-10-25 DJ Delorie + + * m32c.cpu (add16-bQ-sp,add16-wQ-sp): Fix to allow either width by + making one a macro of the other. + +2005-10-21 DJ Delorie + + * m32c.cpu (lde, ste): Add dsp[a0] and [a1a] addressing. + (indexb, indexbd, indexbs, indexw, indexwd, indexws, indexl, + indexld, indexls): .w variants have `1' bit. + (rot32.b): QI, not SI. + (rot32.w): HI, not SI. + (xchg16): HI for .w variant. + +2005-10-19 Nick Clifton + + * m32r.opc (parse_slo16): Fix bad application of previous patch. + +2005-10-18 Andreas Schwab + + * m32r.opc (parse_slo16): Better version of previous patch. + +2005-10-14 Kazuhiro Inaoka + + * cpu/m32r.opc (parse_slo16): Do not assume a 32-bit host word + size. + +2005-07-25 DJ Delorie + + * m32c.opc (parse_unsigned8): Add %dsp8(). + (parse_signed8): Add %hi8(). + (parse_unsigned16): Add %dsp16(). + (parse_signed16): Add %lo16() and %hi16(). + (parse_lab_5_3): Make valuep a bfd_vma *. + +2005-07-18 Nick Clifton + + * m32c.cpu (f-16-8, f-24-8, f-32-16, f-dsp-8-u24): New opcode + components. + (f-lab32-jmp-s): Fix insertion sequence. + (Dsp-8-u24, Lab-5-3, Lab32-jmp-s): New operands. + (Dsp-40-s8): Make parameter be signed. + (Dsp-40-s16): Likewise. + (Dsp-48-s8): Likewise. + (Dsp-48-s16): Likewise. + (Imm-13-u3): Likewise. (Despite its name!) + (BitBase16-16-s8): Make the parameter be unsigned. + (BitBase16-8-u11-S): Likewise. + (Lab-8-8, Lab-8-16, Lab-16-8, jcnd16-5, jcnd16, jcnd32, jmp16.s, + jmp16.b, jmp16.w, jmp32.s, jmp32.b, jmp32.w, jsp16.w, jsr32.w): Allow + relaxation. + + * m32c.opc: Fix formatting. + Use safe-ctype.h instead of ctype.h + Move duplicated code sequences into a macro. + Fix compile time warnings about signedness mismatches. + Remove dead code. + (parse_lab_5_3): New parser function. + +2005-07-16 Jim Blandy + + * m32c.opc (m32c_cgen_insn_supported): Use int, not CGEN_BITSET, + to represent isa sets. + +2005-07-15 Jim Blandy + + * m32c.cpu, m32c.opc: Fix copyright. + +2005-07-14 Jim Blandy + + * m32c.cpu, m32c.opc: Machine description for the Renesas M32C. + +2005-07-14 Alan Modra + + * ms1.opc (print_dollarhex): Correct format string. + +2005-07-06 Alan Modra + + * iq2000.cpu: Include from binutils cpu dir. + +2005-07-05 Nick Clifton + + * iq2000.opc (parse_lo16, parse_mlo16): Make value parameter + unsigned in order to avoid compile time warnings about sign + conflicts. + + * ms1.opc (parse_*): Likewise. + (parse_imm16): Use a "void *" as it is passed both signed and + unsigned arguments. + +2005-07-01 Nick Clifton + + * frv.opc: Update to ISO C90 function declaration style. + * iq2000.opc: Likewise. + * m32r.opc: Likewise. + * sh.opc: Likewise. + +2005-06-15 Dave Brolley + + Contributed by Red Hat. + * ms1.cpu: New file. Written by Nick Clifton, Stan Cox. + * ms1.opc: New file. Written by Stan Cox. + +2005-05-10 Nick Clifton + + * Update the address and phone number of the FSF organization in + the GPL notices in the following files: + cris.cpu, frv.cpu, frv.opc, iq10.cpu, iq2000.opc, iq2000m.cpu, + m32r.cpu, m32r.opc, sh.cpu, sh.opc, sh64-compact.cpu, + sh64-media.cpu, simplify.inc + +2005-02-24 Alan Modra + + * frv.opc (parse_A): Warning fix. + +2005-02-23 Nick Clifton + + * frv.opc: Fixed compile time warnings about differing signed'ness + of pointers passed to functions. + * m32r.opc: Likewise. + +2005-02-11 Nick Clifton + + * iq2000.opc (parse_jtargq10): Change type of valuep argument to + 'bfd_vma *' in order avoid compile time warning message. + +2005-01-28 Hans-Peter Nilsson + + * cris.cpu (mstep): Add missing insn. + +2005-01-25 Alexandre Oliva + + 2004-11-10 Alexandre Oliva + * frv.cpu: Add support for TLS annotations in loads and calll. + * frv.opc (parse_symbolic_address): New. + (parse_ldd_annotation): New. + (parse_call_annotation): New. + (parse_ld_annotation): New. + (parse_ulo16, parse_uslo16): Use parse_symbolic_address. + Introduce TLS relocations. + (parse_d12, parse_s12, parse_u12): Likewise. + (parse_uhi16): Likewise. Fix constant checking on 64-bit host. + (parse_call_label, print_at): New. + +2004-12-21 Mikael Starvik + + * cris.cpu (cris-set-mem): Correct integral write semantics. + +2004-11-29 Hans-Peter Nilsson + + * cris.cpu: New file. + +2004-11-15 Michael K. Lechner + + * iq2000.cpu: Added quotes around macro arguments so that they + will work with newer versions of guile. + +2004-10-27 Nick Clifton + + * iq2000m.cpu (pkrlr1, pkrlr30, rbr1, rbr30, rxr1, rxr30, wbr1, + wbr1u, wbr30, wbr30u, wxr1, wxr1u, wxr30, wxr30u): Add an index + operand. + * iq2000.cpu (dnop index): Rename to _index to avoid complications + with guile. + +2004-08-27 Richard Sandiford + + * frv.cpu (cfmovs): Change UNIT attribute to FMALL. + +2004-05-15 Nick Clifton + + * iq2000.opc (iq2000_cgen_insn_supported): Make 'insn' argument const. + +2004-03-30 Kazuhiro Inaoka + + * m32r.opc (parse_hi16): Fixed shigh(0xffff8000) bug. + +2004-03-01 Richard Sandiford + + * frv.cpu (define-arch frv): Add fr450 mach. + (define-mach fr450): New. + (define-model fr450): New. Add profile units to every fr450 insn. + (define-attr UNIT): Add MDCUTSSI. + (define-attr FR450-MAJOR): New enum. Add to every fr450 insn. + (define-attr AUDIO): New boolean. + (f-LRAE, f-LRAD, f-LRAS, f-TLBPRopx, f-TLBPRL) + (f-LRA-null, f-TLBPR-null): New fields. + (scr0, scr1, scr2, scr3, imavr1, damvr1, cxnr, ttbr) + (tplr, tppr, tpxr, timerh, timerl, timerd, btbr): New SPRs. + (LRAE, LRAD, LRAS, TLBPRopx, TLBPRL): New operands. + (LRA-null, TLBPR-null): New macros. + (iacc-multiply-r-r, slass, scutss, int-arith-ss-r-r): Add AUDIO attr. + (load-real-address): New macro. + (lrai, lrad, tlbpr): New instructions. + (media-cut-acc, media-cut-acc-ss): Add fr450-major argument. + (mcut, mcuti, mcutss, mcutssi): Adjust accordingly. + (mdcutssi): Change UNIT attribute to MDCUTSSI. + (media-low-clear-semantics, media-scope-limit-semantics) + (media-quad-limit, media-quad-shift): New macros. + (mqlclrhs, mqlmths, mqsllhi, mqsrahi): New instructions. + * frv.opc (frv_is_branch_major, frv_is_float_major, frv_is_media_major) + (frv_is_branch_insn, frv_is_float_insn, frv_is_media_insn) + (frv_vliw_reset, frv_vliw_add_insn): Handle bfd_mach_fr450. + (fr450_unit_mapping): New array. + (fr400_unit_mapping, fr500_unit_mapping, fr550_unit_mapping): Add entry + for new MDCUTSSI unit. + (fr450_check_insn_major_constraints): New function. + (check_insn_major_constraints): Use it. + +2004-03-01 Richard Sandiford + + * frv.cpu (nsdiv, nudiv, nsdivi, nudivi): Remove fr400 profiling unit. + (scutss): Change unit to I0. + (calll, callil, ccalll): Add missing FR550-MAJOR and profile unit. + (mqsaths): Fix FR400-MAJOR categorization. + (media-quad-multiply-cross-acc, media-quad-cross-multiply-cross-acc) + (media-quad-cross-multiply-acc): Change unit from MDUALACC to FMALL. + * frv.opc (fr400_check_insn_major_constraints): Check for (M-2,M-1) + combinations. + +2004-03-01 Richard Sandiford + + * frv.cpu (r-store, r-store-dual, r-store-quad): Delete. + (rstb, rsth, rst, rstd, rstq): Delete. + (rstbf, rsthf, rstf, rstdf, rstqf): Delete. + +2004-02-23 Nick Clifton + + * Apply these patches from Renesas: + + 2004-02-10 Kazuhiro Inaoka + + * cpu/m32r.opc (my_print_insn): Fixed incorrect output when + disassembling codes for 0x*2 addresses. + + 2003-12-15 Kazuhiro Inaoka + + * cpu/m32r.cpu: Add PIPE_O attribute to "pop" instruction. + + 2003-12-03 Kazuhiro Inaoka + + * cpu/m32r.cpu : Add new model m32r2. + Add new instructions. + Replace occurrances of 'Mitsubishi' with 'Renesas'. + Changed PIPE attr of push from O to OS. + Care for Little-endian of M32R. + * cpu/m32r.opc (CGEN_DIS_HASH, my_print_insn): + Care for Little-endian of M32R. + (parse_slo16): signed extension for value. + +2004-02-20 Andrew Cagney + + * m32r.opc, m32r.cpu: New files. Written by , Doug Evans, Nick + Clifton, Ben Elliston, Matthew Green, and Andrew Haley. + + * sh.cpu, sh.opc, sh64-compact.cpu, sh64-media.cpu: New files, all + written by Ben Elliston. + +2004-01-14 Richard Sandiford + + * frv.cpu (UNIT): Add IACC. + (iacc-multiply-r-r): Use it. + * frv.opc (fr400_unit_mapping): Add entry for IACC. + (fr500_unit_mapping, fr550_unit_mapping): Likewise. + +2004-01-06 Alexandre Oliva + + 2003-12-19 Alexandre Oliva + * frv.opc (parse_ulo16, parse_uhi16, parse_d12): Fix some + cut&paste errors in shifting/truncating numerical operands. + 2003-08-08 Alexandre Oliva + * frv.opc (parse_ulo16): Parse gotofflo and gotofffuncdesclo. + (parse_uslo16): Likewise. + (parse_uhi16): Parse gotoffhi and gotofffuncdeschi. + (parse_d12): Parse gotoff12 and gotofffuncdesc12. + (parse_s12): Likewise. + 2003-08-04 Alexandre Oliva + * frv.opc (parse_ulo16): Parse gotlo and gotfuncdesclo. + (parse_uslo16): Likewise. + (parse_uhi16): Parse gothi and gotfuncdeschi. + (parse_d12): Parse got12 and gotfuncdesc12. + (parse_s12): Likewise. + +2003-10-10 Dave Brolley + + * frv.cpu (dnpmop): New p-macro. + (GRdoublek): Use dnpmop. + (CPRdoublek, FRdoublei, FRdoublej, FRdoublek): Ditto. + (store-double-r-r): Use (.sym regtype doublek). + (r-store-double): Ditto. + (store-double-r-r-u): Ditto. + (conditional-store-double): Ditto. + (conditional-store-double-u): Ditto. + (store-double-r-simm): Ditto. + (fmovs): Assign to UNIT FMALL. + +2003-10-06 Dave Brolley + + * frv.cpu, frv.opc: Add support for fr550. + +2003-09-24 Dave Brolley + + * frv.cpu (u-commit): New modelling unit for fr500. + (mwtaccg): Use frv_ref_SI to reference ACC40Sk as an input operand. + (commit-r): Use u-commit model for fr500. + (commit): Ditto. + (conditional-float-binary-op): Take profiling data as an argument. + Update callers. + (ne-float-binary-op): Ditto. + +2003-09-19 Michael Snyder + + * frv.cpu (nldqi): Delete unimplemented instruction. + +2003-09-12 Dave Brolley + + * frv.cpu (u-clrgr, u-clrfr): New units of model fr500. + (clear-ne-flag-r): Pass insn profiling in as an argument. Call + frv_ref_SI to get input register referenced for profiling. + (clear-ne-flag-all): Pass insn profiling in as an argument. + (clrgr,clrfr,clrga,clrfa): Add profiling information. + +2003-09-11 Michael Snyder + + * frv.cpu: Typographical corrections. + +2003-09-09 Dave Brolley + + * frv.cpu (media-dual-complex): Change UNIT to FMALL. + (conditional-media-dual-complex, media-quad-complex): Likewise. + +2003-09-04 Dave Brolley + + * frv.cpu (register-transfer): Pass in all attributes in on argument. + Update all callers. + (conditional-register-transfer): Ditto. + (cache-preload): Ditto. + (floating-point-conversion): Ditto. + (floating-point-neg): Ditto. + (float-abs): Ditto. + (float-binary-op-s): Ditto. + (conditional-float-binary-op): Ditto. + (ne-float-binary-op): Ditto. + (float-dual-arith): Ditto. + (ne-float-dual-arith): Ditto. + +2003-09-03 Dave Brolley + + * frv.opc (parse_A, parse_A0, parse_A1): New parse handlers. + * frv.cpu (UNIT): Add IALL, FMALL, FMLOW, STORE, SCAN, DCPL, MDUALACC, + MCLRACC-1. + (A): Removed operand. + (A0,A1): New operands replace operand A. + (mnop): Now a real insn + (mclracc): Removed insn. + (mclracc-0, mclracc-1): New insns replace mclracc. + (all insns): Use new UNIT attributes. + +2003-08-21 Nick Clifton + + * frv.cpu (mbtoh): Replace input parameter to u-media-dual-expand + and u-media-dual-btoh with output parameter. + (cmbtoh): Add profiling hack. + +2003-08-19 Michael Snyder + + * frv.cpu: Fix typo, Frintkeven -> FRintkeven + +2003-06-10 Doug Evans + + * frv.cpu: Add IDOC attribute. + +2003-06-06 Andrew Cagney + + Contributed by Red Hat. + * iq2000.cpu: New file. Written by Ben Elliston, Jeff Johnston, + Stan Cox, and Frank Ch. Eigler. + * iq2000.opc: New file. Written by Ben Elliston, Frank + Ch. Eigler, Chris Moller, Jeff Johnston, and Stan Cox. + * iq2000m.cpu: New file. Written by Jeff Johnston. + * iq10.cpu: New file. Written by Jeff Johnston. + +2003-06-05 Nick Clifton + + * frv.cpu (FRintieven): New operand. An even-numbered only + version of the FRinti operand. + (FRintjeven): Likewise for FRintj. + (FRintkeven): Likewise for FRintk. + (mdcutssi, media-dual-word-rotate-r-r, mqsaths, + media-quad-arith-sat-semantics, media-quad-arith-sat, + conditional-media-quad-arith-sat, mdunpackh, + media-quad-multiply-semantics, media-quad-multiply, + conditional-media-quad-multiply, media-quad-complex-i, + media-quad-multiply-acc-semantics, media-quad-multiply-acc, + conditional-media-quad-multiply-acc, munpackh, + media-quad-multiply-cross-acc-semantics, mdpackh, + media-quad-multiply-cross-acc, mbtoh-semantics, + media-quad-cross-multiply-cross-acc-semantics, + media-quad-cross-multiply-cross-acc, mbtoh, mhtob-semantics, + media-quad-cross-multiply-acc-semantics, cmbtoh, + media-quad-cross-multiply-acc, media-quad-complex, mhtob, + media-expand-halfword-to-double-semantics, mexpdhd, cmexpdhd, + cmhtob): Use new operands. + * frv.opc (CGEN_VERBOSE_ASSEMBLER_ERRORS): Define. + (parse_even_register): New function. + +2003-06-03 Nick Clifton + + * frv.cpu (media-dual-word-rotate-r-r): Use a signed 6-bit + immediate value not unsigned. + +2003-06-03 Andrew Cagney + + Contributed by Red Hat. + * frv.cpu: New file. Written by Dave Brolley, Catherine Moore, + and Eric Christopher. + * frv.opc: New file. Written by Catherine Moore, and Dave + Brolley. + * simplify.inc: New file. Written by Doug Evans. + +2003-05-02 Andrew Cagney + + * New file. + + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff -Nru crash-5.1.6/=unpacked-tar1=/cgen/cpu/cris.cpu crash-6.1.6/=unpacked-tar1=/cgen/cpu/cris.cpu --- crash-5.1.6/=unpacked-tar1=/cgen/cpu/cris.cpu 1970-01-01 00:00:00.000000000 +0000 +++ crash-6.1.6/=unpacked-tar1=/cgen/cpu/cris.cpu 2009-09-02 07:21:03.000000000 +0000 @@ -0,0 +1,4553 @@ +; CRIS CPU description. -*- Scheme -*- +; +; Copyright 2003, 2004, 2007, 2009 Free Software Foundation, Inc. +; +; Contributed by Axis Communications AB. +; +; This file is part of the 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 3 of the License, or +; (at your option) any later version. +; +; This program is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +; MA 02110-1301, USA. + +(include "simplify.inc") + +;;;;;;;;;;;;;;;;;; -pmacro (generic ones) + +(define-pmacro (.car2 l) (.apply (.pmacro (a b) a) l)) +(define-pmacro (.cadr2 l) (.apply (.pmacro (a b) b) l)) +(define-pmacro (SI-ext x) "How to sign-extend a dword to dword (a nop)" x) +(define-pmacro (HI-ext x) "How to sign-extend a word to dword" (ext SI x)) +(define-pmacro (QI-ext x) "How to sign-extend a byte to dword" (ext SI x)) +(define-pmacro (SI-zext x) "How to zero-extend a dword to dword (a nop)" x) +(define-pmacro (HI-zext x) "How to zero-extend a word to dword" (zext SI x)) +(define-pmacro (QI-zext x) "How to zero-extend a byte to dword" (zext SI x)) +(define-pmacro + (define-pmacro-map x) + "On a list ((x0 y0) .. (xN yN)), 0 <= m <= N, (define-pmacro xm ym)" + (.splice + begin + (.unsplice + (.map + (.pmacro (l) (.apply (.pmacro (xm ym) (define-pmacro xm ym)) l)) x))) +) + +;;;;;;;;;;;;;;;;;; -arch -isa -cpu -model + +(define-arch + (name cris) + (comment "Axis Communications CRIS") + (default-alignment unaligned) + (insn-lsb0? #t) + (machs crisv0 crisv3 crisv8 crisv10 crisv32) + (isas cris) +) + +(define-isa + (name cris) + (base-insn-bitsize 16) + (liw-insns 1) + (parallel-insns 1) +) + +(define-pmacro + (define-cpu-cris x-suffix x-comment) + "Define a CRIS CPU family" + (define-cpu + (name (.sym cris x-suffix f)) + (comment x-comment) + (endian little) + ; CGEN-FIXME: Should be deduced from the default? + (word-bitsize 32) + (file-transform (.str x-suffix)) + ) +) + +; Useful when there's a need to iterate over all models. +(define-pmacro (cris-cpu-model-numbers) + "List of CRIS CPU model numbers (version register contents)" + (0 3 8 10 32) +) + +(define-pmacro (cris-cpu-models) + "List of CRIS CPU model names" + (.map (.pmacro (n) (.sym v n)) (cris-cpu-model-numbers)) +) + +; Mapping from model name to number. +(define-pmacro-map + (.map (.pmacro (n) ((.sym v n -number) n)) + (cris-cpu-model-numbers))) + +; FIXME: Rationalize these rules. +; CPU names must be distinct from the architecture name and machine names. +; The "b" suffix stands for "base" and is the convention. +; The "f" suffix stands for "family" and is the convention. +; We ignore the "b" convention, partly because v0 isn't really a "base", at +; least not for some aspects of v32. +(define-cpu-cris v0 "CRIS base family") +(define-cpu-cris v3 "CRIS v3 family") +(define-cpu-cris v8 "CRIS v8 family") +(define-cpu-cris v10 "CRIS v10 family") +(define-cpu-cris v32 "CRIS v32 family") + +(define-pmacro MACH-PRE-V32 (MACH crisv0,crisv3,crisv8,crisv10)) +(define-pmacro MACH-V3-UP (MACH crisv3,crisv8,crisv10,crisv32)) +(define-pmacro MACH-V32 (MACH crisv32)) +(define-pmacro MACH-PC MACH-PRE-V32) +(define-pmacro MACH-ACR MACH-V32) +(define-pmacro MACH-BRANCH-OFFSET-AT-INSN MACH-V32) +(define-pmacro MACH-BRANCH-OFFSET-AFTER-INSN MACH-PRE-V32) + +(define-pmacro + current-mach-is-v32 + "Whether the generated code is for V32. See comment at h-v32." + (reg h-v32) +) + +(define-pmacro (define-mach-cris x-suffix x-comment x-name) + "Define a CRIS mach" + (define-mach + (name (.sym cris x-suffix)) + ; They're all called "cris" in bfd. Watch out for breakages for some + ; uses. + (bfd-name x-name) + (comment x-comment) + (cpu (.sym cris x-suffix f))) +) + +(define-mach-cris v0 "Generic CRIS v0 CPU, ETRAX 1 .. 3" "cris") +(define-mach-cris v3 "Generic CRIS v3 CPU, ETRAX 4" "cris") +(define-mach-cris v8 "Generic CRIS v8 CPU, ETRAX 100" "cris") +(define-mach-cris v10 "Generic CRIS v10 CPU, ETRAX 100 LX" "cris") +(define-mach-cris v32 "Generic CRIS v32 CPU, ETRAX FS" "crisv32") + +(define-pmacro (define-model-simplecris x-name x-comment) + "Define a simple CRIS model" + (define-model + (name (.sym cris x-name)) + (comment x-comment) + (mach (.sym cris x-name)) + + (unit u-exec "Execution Unit" () 1 1 () () () ()) + (unit u-mem "Memory Unit" () 1 1 () () () ()) + + (unit u-const16 "Fetch 16-bit operand" () 1 1 () () () ()) + (unit u-const32 "Fetch 32-bit operand" () 1 1 + () () () ()) + ; Used in special-case insn, for example arithmetic with PC destination. + (unit u-stall "Stall unit" () 1 1 () () () ()) + (unit u-skip4 "Skip 4 bytes" () 1 1 () () () ()) + (unit u-multiply "Multiply Unit" () 1 1 ((MACH crisv10)) () () ()) + (unit u-movem "Movem Unit" () 1 1 () + ((Rd INT -1)) + () ())) +) + +(define-model-simplecris v0 "Model of CRIS v0, ETRAX 1 .. 3") +(define-model-simplecris v3 "Model of CRIS v3, ETRAX 4") +(define-model-simplecris v8 "Model of CRIS v8, ETRAX 100") +(define-model-simplecris v10 "Model of CRIS v10, ETRAX 100 LX") + +; For some reason, we get an error: +; Generating arch.h ... +; ERROR: In procedure vector-ref: +; ERROR: Wrong type argument in position 1: () +; if we include timings for machs that we don't generate sims for. +; Last checked: CVS as of 2004-11-18. +; CGEN-FIXME: Looks like another CGEN bug. When it's fixed (or when +; generating sims for v0, v3 or v8), add 0, 3 and 8 to +; simplecris-timing-models. But before that, simplecris-timing-x has to +; be rewritten to work on a multiple-element-list, not assume a single +; element. (A change which seems likely to depend on lexical scoping for +; macros to be introduced: try the obvious implementation.) +(define-pmacro simplecris-timing-models (10)) +(define-pmacro (simplecris-common-timing x-units) + "Make timing models, using x-units for all simplecris-timing-models" + ; CGEN-FIXME: Another CGEN bug: the part (.unsplice (10)) will remain + ; unexpanded in (.sym crisv (.unsplice (10)) if we write this as + ; ((.splice (.sym crisv (.unsplice simplecris-timing-models)) + ; (.unsplice x-units))) + ((.splice (.sym crisv (.apply (.pmacro (x) x) simplecris-timing-models)) + (.unsplice x-units))) +) + +(define-pmacro-map + ( + ; Timing for memory instructions running on a simple cris model. + ((simplecris-mem-timing) (simplecris-common-timing + ((unit u-mem) (unit u-exec)))) + ; Timing for movem instructions running on a simple cris model. + ((simplecris-movem-timing) (simplecris-common-timing + ((unit u-movem) (unit u-exec)))) + ; Similar, for an 8- or 16-bit constant ([PC+]) operand. + ((simplecris-const-timing-HI) + (simplecris-common-timing + ((unit u-const16) (unit u-exec)))) + ; Similar, for a 32-bit constant ([PC+]) operand. + ((simplecris-const-timing-SI) + (simplecris-common-timing + ((unit u-const32) (unit u-exec)))) + ; Similar, no particular operand. + ((simplecris-timing) (simplecris-common-timing + ((unit u-exec))))) +) + +(define-model + (name crisv32) + (comment "Model of CRISv32") + (mach crisv32) + + (state + ; Bitmask of h-gr register (0..15) and h-sr register (17..31) + ; modified by 3rd previous insn, updated by the u-exec unit. + ; Because there's no need to mark writes to special registers BZ and + ; WZ, bit 16 is for jump mark and bit 20 for memory-write mark. + (prev-prev-prev-modf-regs UINT) + + ; Ditto for the 2nd previous insn. + (prev-prev-modf-regs UINT) + + ; Ditto for the previous insn. + (prev-modf-regs UINT) + + ; Bit-mask for regs modified by the current insn, propagated to + ; prev-modf-regs. + (modf-regs UINT) + + ; Registers loaded by movem are not forwarded to the execution + ; stage, so we need to insert stall-cycles for ordinary insns + ; accessing such registers. In addition to the *modf-regs + ; above, these are set to tell *ordinary* insns which registers + ; are inaccessible. + + (prev-prev-prev-movem-dest-regs UINT) + + ; Ditto for the 2nd previous insn. + (prev-prev-movem-dest-regs UINT) + + ; Ditto for the previous insn. + (prev-movem-dest-regs UINT) + + ; Bit-mask for regs modified by the current insn, propagated to + ; prev-movem-dest-regs. + (movem-dest-regs UINT)) + + ; It seems this pipeline description isn't used at all; this is just + ; for show. + ; Noteworthy is the placement of the memory stage before the execute stage. + (pipeline all "" () ((fetch) (decode) (memory) (execute) (writeback))) + + ; Units that contribute only a constant pipeline delay are not included. + (unit u-mem "Memory Unit" () 1 1 () + ((Rs INT -1)) + () ()) + + ; Artificial units for read/write-related hazard accounting. + (unit u-mem-r "Memory Unit Read" () 1 1 () () () ()) + (unit u-mem-w "Memory Unit Write" () 1 1 () () () ()) + + (unit u-movem-rtom "Movem-to-memory Unit" () 1 1 () + ((Rs INT -1) (Rd INT -1)) + () ()) + (unit u-movem-mtor "Movem-to-register Unit" () 1 1 () + ((Rs INT -1) (Rd INT -1)) + () ()) + (unit u-multiply "Multiply Unit" () 1 1 () + ((Rs INT -1) (Rd INT -1)) + () ()) + (unit u-branch "Branch Unit" () 1 1 () + () + () ()) + (unit u-jump-r "Jump-to-register Unit" () 1 1 () + ((Rs INT -1)) + () ()) + (unit u-jump-sr "Jump-to-special-register Unit" () 1 1 () + ((Ps INT -1)) + () ()) + (unit u-jump "JAS/BAS Unit, saving PC" () 1 1 () + () + ((Pd INT -1)) ()) + + ; To keep track of PC; not really functional units. + (unit u-const16 "Fetch 16-bit operand" () 1 1 () () () ()) + (unit u-const32 "Fetch 32-bit operand" () 1 1 () () () ()) + (unit u-skip4 "Skip 4 bytes" () 1 1 () () () ()) + + ; For v32, we need to keep track of inputs (for movem destination + ; cycle penalties) and output (for e.g. memory source and jump + ; source cycle penalties). + (unit u-exec "Execution Unit" () 1 1 () + ((Rd INT -1) (Rs INT -1)) + ((Rd INT -1)) + ()) + + ; Special case of u-exec for movem: don't treat Rd as an incoming + ; parameter. + (unit u-exec-movem "Execution Unit" () 1 1 () + ((Rs INT -1)) + ((Rd INT -1)) + ()) + + ; Special case of u-exec when the destination is a special + ; register. + (unit u-exec-to-sr "Execution Unit" () 1 1 () + ((Rs INT -1)) + ((Pd INT -1)) ()) +) + +(define-pmacro (crisv32-timing-destreg d) + "Timing for instructions running on a crisv32 model" + ((crisv32 + (.splice unit u-exec (.unsplice d)))) +) +(define-pmacro (crisv32-timing) (crisv32-timing-destreg ())) + +(define-pmacro (cris-timing-Rd-sfield) + (crisv32-timing-destreg ((out Rd Rd-sfield))) +) + +(define-pmacro (crisv32-timing-c-HI) + ((crisv32 (unit u-const16) (unit u-exec))) +) + +(define-pmacro-map + ((crisv32-timing-c-QI crisv32-timing-c-HI) + ((crisv32-timing-c-SI) ((crisv32 (unit u-const32) (unit u-exec)))) + ((crisv32-timing-c-sr-SI) ((crisv32 (unit u-const32) (unit u-exec-to-sr)))) + ((crisv32-reg-sr-timing) ((crisv32 (unit u-exec-to-sr)))) + ((crisv32-mem-sr-timing) + ((crisv32 (unit u-mem) (unit u-mem-r) (unit u-exec-to-sr)))) + ((crisv32-mem-timing) ((crisv32 (unit u-mem) (unit u-mem-r) (unit u-exec)))) + ((crisv32-mem-write-timing) ((crisv32 (unit u-mem) (unit u-exec) (unit u-mem-w))))) +) + +(define-pmacro-map + ( + ; Timing for instructions using memory operands. + ((cris-mem-timing) (.splice (.unsplice (simplecris-mem-timing)) + (.unsplice (crisv32-mem-timing)))) + ; Timing for instructions using memory operands. + ((cris-mem-write-timing) (.splice + (.unsplice (simplecris-mem-timing)) + (.unsplice (crisv32-mem-write-timing)))) + ; Timing for moves from general register to special register. + ((cris-reg-sr-timing) (.splice (.unsplice (simplecris-timing)) + (.unsplice (crisv32-reg-sr-timing)))) + ; Timing for moves from memory to special register. + ((cris-mem-sr-timing) (.splice (.unsplice (simplecris-mem-timing)) + (.unsplice (crisv32-mem-sr-timing)))) + ; Timing for non-mul, non-memory, non-special-register, 16-bit instructions. + ((cris-timing) (.splice (.unsplice (simplecris-timing)) + (.unsplice (crisv32-timing)))) + ; Timing for instructions with 8- or 16-bit constant operand ([PC+]). + ((cris-timing-const-HI) (.splice + (.unsplice (simplecris-const-timing-HI)) + (.unsplice (crisv32-timing-c-HI)))) + ; Timing for instructions with a 32-bit constant operand ([PC+]). + ((cris-timing-const-SI) (.splice + (.unsplice (simplecris-const-timing-SI)) + (.unsplice (crisv32-timing-c-SI)))) + ; Like cris-timing-const-SI, but destination special register. + ((cris-timing-const-sr-SI) (.splice + (.unsplice (simplecris-const-timing-SI)) + (.unsplice (crisv32-timing-c-sr-SI)))) + ; Like cris-timing-const-HI, but destination special register. + ((cris-timing-const-sr-HI) (.splice + (.unsplice (simplecris-const-timing-HI)) + (.unsplice (crisv32-timing-c-sr-SI))))) +) + +(define-pmacro cris-timing-const-QI cris-timing-const-HI) +(define-pmacro cris-timing-const-sr-QI cris-timing-const-sr-HI) + +(define-pmacro (simplecris-common-writable-specregs) + "The common writable special registers in pre-v32 models." + ((HI 5) (SI 9) (SI 10) (SI 11) (SI 12) (SI 13)) +) + +(define-pmacro (simplecris-common-readable-specregs) + "The common readable special registers in pre-v32 models." + (.splice (.unsplice (simplecris-common-writable-specregs)) + (QI 0) (QI 1) (HI 4) (SI 8)) +) + +(define-pmacro (cris-implemented-writable-specregs-v0) + "Special writable registers in v0 and their sizes" + (.splice (.unsplice (simplecris-common-writable-specregs)) (HI 6) (HI 7)) +) +(define-pmacro + cris-implemented-specregs-const-v0 + cris-implemented-writable-specregs-v0 +) +(define-pmacro (cris-implemented-readable-specregs-v0) + "Special readable registers in v0 and their sizes" + (.splice (.unsplice (simplecris-common-readable-specregs)) (HI 6) (HI 7)) +) + +(define-pmacro (cris-implemented-writable-specregs-v3) + "Special writable registers in v3 and their sizes" + (.splice (.unsplice (cris-implemented-writable-specregs-v0)) (SI 14)) +) +(define-pmacro + cris-implemented-specregs-const-v3 + cris-implemented-writable-specregs-v3 +) +(define-pmacro (cris-implemented-readable-specregs-v3) + "Special readable registers in v3 and their sizes" + (.splice (.unsplice (cris-implemented-readable-specregs-v0)) (SI 14)) +) + +(define-pmacro (cris-implemented-writable-specregs-v8) + "Special writable registers in v8 and their sizes" + (.splice (.unsplice (simplecris-common-writable-specregs)) (SI 14)) +) +(define-pmacro + cris-implemented-specregs-const-v8 + cris-implemented-writable-specregs-v8 +) +(define-pmacro (cris-implemented-readable-specregs-v8) + "Special readable registers in v8 and their sizes" + (.splice (.unsplice (simplecris-common-readable-specregs)) (SI 14)) +) + +(define-pmacro (cris-implemented-writable-specregs-v10) + "Special writable registers in v10 and their sizes" + (.splice (.unsplice (simplecris-common-writable-specregs)) + (SI 7) (SI 14) (SI 15)) +) +(define-pmacro + cris-implemented-specregs-const-v10 + cris-implemented-writable-specregs-v10 +) +(define-pmacro (cris-implemented-readable-specregs-v10) + "Special registers in v10 and their sizes" + (.splice (.unsplice (simplecris-common-readable-specregs)) + (SI 7) (SI 14) (SI 15)) +) + +(define-pmacro (cris-implemented-writable-specregs-v32) + "Special writable registers in v32 and their sizes" + ((SI 2) (QI 3) + (SI 5) (SI 6) (SI 7) (SI 9) + (SI 10) (SI 11) (SI 12) (SI 13) (SI 14) (SI 15)) +) +(define-pmacro (cris-implemented-readable-specregs-v32) + "Special readable registers in v32 and their sizes" + (.splice (.unsplice (cris-implemented-writable-specregs-v32)) + (QI 0) (QI 1) (HI 4) (SI 8)) +) + +; For v32, all special register operations on constants (that is, +; move) take 32-bit operands, not the real size of the register, as in +; other move operations. +(define-pmacro (cris-implemented-specregs-const-v32) + (.map (.pmacro (x) (SI (.cadr2 x))) + (cris-implemented-writable-specregs-v32)) +) + +(define-pmacro cris-swap-codes + "CRIS Swap codes in numeric order (no zero)" + ( r b br w wr wb wbr + n nr nb nbr nw nwr nwb nwbr) +) + +(define-pmacro cris-flagnames + "CRIS flag field values, dest and src fields concatenated" + (c v z n x i u p) ; ... b m for pre-v32 +) + +(define-pmacro-map + ; Bitnumber for each respective flag. + (.map (.pmacro (x num) ((.sym x -bitnumber) num)) + cris-flagnames (.iota 8)) +) + +; I give up. Here's a perl-script to get the values I want for this macro +; (not working along list principles, though). You can run this region. +; perl -e '$x = "cvznxiup"; for ($i = 0; $i < 256; $i++) { $s = ""; +; for ($j = 0; $j < 8; $j++) { if ($i & (1 << $j)) { +; $s .= substr ($x, $j, 1);}} +; printf ("%s%s", $s eq "" ? "_" : $s, (($i + 1) % 8) == 0 ? "\n " : " "); }' +(define-pmacro cris-flag-combinations + "Combinations of flags in numeric order" + (_ c v cv z cz vz cvz + n cn vn cvn zn czn vzn cvzn + x cx vx cvx zx czx vzx cvzx + nx cnx vnx cvnx znx cznx vznx cvznx + i ci vi cvi zi czi vzi cvzi + ni cni vni cvni zni czni vzni cvzni + xi cxi vxi cvxi zxi czxi vzxi cvzxi + nxi cnxi vnxi cvnxi znxi cznxi vznxi cvznxi + u cu vu cvu zu czu vzu cvzu + nu cnu vnu cvnu znu cznu vznu cvznu + xu cxu vxu cvxu zxu czxu vzxu cvzxu + nxu cnxu vnxu cvnxu znxu cznxu vznxu cvznxu + iu ciu viu cviu ziu cziu vziu cvziu + niu cniu vniu cvniu zniu czniu vzniu cvzniu + xiu cxiu vxiu cvxiu zxiu czxiu vzxiu cvzxiu + nxiu cnxiu vnxiu cvnxiu znxiu cznxiu vznxiu cvznxiu + p cp vp cvp zp czp vzp cvzp + np cnp vnp cvnp znp cznp vznp cvznp + xp cxp vxp cvxp zxp czxp vzxp cvzxp + nxp cnxp vnxp cvnxp znxp cznxp vznxp cvznxp + ip cip vip cvip zip czip vzip cvzip + nip cnip vnip cvnip znip cznip vznip cvznip + xip cxip vxip cvxip zxip czxip vzxip cvzxip + nxip cnxip vnxip cvnxip znxip cznxip vznxip cvznxip + up cup vup cvup zup czup vzup cvzup + nup cnup vnup cvnup znup cznup vznup cvznup + xup cxup vxup cvxup zxup czxup vzxup cvzxup + nxup cnxup vnxup cvnxup znxup cznxup vznxup cvznxup + iup ciup viup cviup ziup cziup vziup cvziup + niup cniup vniup cvniup zniup czniup vzniup cvzniup + xiup cxiup vxiup cvxiup zxiup czxiup vzxiup cvzxiup + nxiup cnxiup vnxiup cvnxiup znxiup cznxiup vznxiup cvznxiup + ) +) + +(define-pmacro cc-condition (not cbit)) +(define-pmacro cs-condition cbit) +(define-pmacro ne-condition (not zbit)) +(define-pmacro eq-condition zbit) +(define-pmacro vc-condition (not vbit)) +(define-pmacro vs-condition vbit) +(define-pmacro pl-condition (not nbit)) +(define-pmacro mi-condition nbit) +(define-pmacro ls-condition (or cbit zbit)) +(define-pmacro hi-condition (not (or cbit zbit))) +(define-pmacro ge-condition (not (xor vbit nbit))) +(define-pmacro lt-condition (xor vbit nbit)) +(define-pmacro gt-condition (not (or (xor vbit nbit) zbit))) +(define-pmacro le-condition (or (xor vbit nbit) zbit)) +(define-pmacro a-condition 1) + +; FIXME: define this properly for v10 and pre-v10. +(define-pmacro wf-condition pbit) + +(define-pmacro (cris-condition condno) + "Return condition state for condition number CONDNO" + (sequence + BI + ((SI tmpcond) (BI condres)) + (set tmpcond condno) + (.splice + cond + (.unsplice + (.map + (.pmacro + (condn condc) + ((eq tmpcond condn) (set condres (.sym condc -condition)))) + (.iota 16) + cris-condition-codes))) + condres) +) + +;;;;;;;;;;;;;;;;;; -keyword + +; General registers. +(define-pmacro (cris-general-gregs) + (.splice (SP 14) (.unsplice (.map (.pmacro (n) ((.sym R n) n)) (.iota 15)))) +) + +; Can't keep more than one gr-names definition at the same time; +; generated enum declarations in sim/cris/cris-desc.h will collide. +; FIXME: (include "different-mach-parts") + +(define-keyword + (name gr-names-pcreg) + (attrs MACH-PC) + (print-name h-gr-real-pc) + ; Put PC first so it is preferred over r15. + (.splice values (PC 15) (.unsplice (cris-general-gregs))) +) + +(define-keyword + (name gr-names-acr) + (attrs MACH-ACR) + ; The print-name directive will control the enum prefix. With the + ; arguably more appropriate h-gr-v32 or h-gr-acr, we'd get names like + ; H_GR_ACR_R0 instead of H_GR_R0. Since we have to choose something for + ; unprefixed names, we use the CRISv32 names. FIXME: All users should + ; change to use H_GR_V32_R0 (etc.), then change this to h-gr-v32. + (print-name h-gr) + ; Put ACR first so it is preferred over r15. + (.splice values (ACR 15) (.unsplice (cris-general-gregs))) +) + +(define-keyword + (name gr-names-v32) + (attrs MACH-V32) + ; In preparation for implementing the FIXME above. + (print-name h-gr-v32) + ; Put ACR first so it is preferred over r15. + (.splice values (ACR 15) (.unsplice (cris-general-gregs))) +) + +; Special registers with names common to all. +(define-pmacro (cris-general-pregs) + (.splice + (VR 1) + (SRP 11) + (.unsplice (.map (.pmacro (n) ((.sym P n) n)) (.iota 15)))) +) + +(define-keyword + (name p-names-v10) + (attrs MACH-PRE-V32) + (print-name h-sr-pre-v32) + (.splice + values + (CCR 5) + (MOF 7) + (IBR 9) + (IRP 10) + (BAR 12) + (DCCR 13) + (BRP 14) + (USP 15) + (.unsplice (cris-general-pregs))) +) + +(define-keyword + (name p-names-v32) + (attrs MACH-V32) + ; See comment for gr-names-acr. + (print-name h-sr) + (.splice + values + (BZ 0) + (PID 2) + (SRS 3) + (WZ 4) + (EXS 5) + (EDA 6) + (MOF 7) + (DZ 8) + (EBP 9) + (ERP 10) + (NRP 12) + (CCS 13) + (USP 14) + (SPC 15) + (.unsplice (cris-general-pregs))) +) + +; Similarly as for h-gr-v32, in preparation. +(define-keyword + (name p-names-v32-x) + (attrs MACH-V32) + ; See comment for gr-names-acr. + (print-name h-sr-v32) + (.splice + values + (BZ 0) + (PID 2) + (SRS 3) + (WZ 4) + (EXS 5) + (EDA 6) + (MOF 7) + (DZ 8) + (EBP 9) + (ERP 10) + (NRP 12) + (CCS 13) + (USP 14) + (SPC 15) + (.unsplice (cris-general-pregs))) +) + +(define-pmacro p0 (reg h-sr 0)) +(define-pmacro vr (reg h-sr 1)) +(define-pmacro pid (reg h-sr 2)) +(define-pmacro srs (reg h-sr 3)) +(define-pmacro p4 (reg h-sr 4)) +(define-pmacro ccr (reg h-sr 5)) +(define-pmacro mof (reg h-sr 7)) +(define-pmacro p8 (reg h-sr 8)) +(define-pmacro ibr (reg h-sr 9)) +(define-pmacro ebp (reg h-sr 9)) +(define-pmacro erp (reg h-sr 10)) +(define-pmacro srp (reg h-sr 11)) +(define-pmacro ccs (reg h-sr 13)) +(define-pmacro dccr (reg h-sr 13)) +(define-pmacro usp (reg h-sr 14)) +(define-pmacro spc (reg h-sr 15)) + +(define-pmacro sp (reg h-gr 14)) +(define-pmacro acr (reg h-gr 15)) + +(define-pmacro cris-condition-codes + "CRIS condition codes in numeric order" + (cc cs ne eq vc vs pl mi ls hi ge lt gt le a wf) +) + +; No use having different lists; this is the only CC that +; differs between v10 and v32, and mostly in the name. +(define-pmacro sb wf) + + +;;;;;;;;;;;;;;;;;; -hardware + +;; Various constant generators. + +(define-hardware + (name h-inc) + (comment "autoincrement-bit syntax specifier") + (type immediate (UINT 1)) + (values keyword "" (("" 0) ("+" 1))) +) + +(define-hardware + (name h-ccode) + (comment "Condition code specifier") + (type immediate (UINT 4)) + (values keyword "" + (.map (.pmacro (x y) ((.str x) y)) + cris-condition-codes (.iota 16))) +) + +(define-hardware + (name h-swap) + (comment "Swap option specifier") + (type immediate (UINT 4)) + (values + keyword "" + (.splice + (" " 0) + (.unsplice + (.map + (.pmacro (x y) ((.str x) y)) cris-swap-codes (.iota 15 1))))) +) + +(define-hardware + (name h-flagbits) + (comment "Flag bits specifier") + (type immediate (UINT 8)) + (values + keyword "" + (.map (.pmacro (x y) ((.str x) y)) cris-flag-combinations (.iota 256))) +) + +; Apparently, the semantic-name isn't used for accessors, so external +; users like the sim glue and SID sees the -v32 and -pre-v32 munged names. +; Defining "dispatchers"; virtual registers whose getter and setter works +; on the "real" mach variants, seems to help. CGEN-FIXME: Make +; semantic-name set the generated names. +(define-pmacro (cris-d-hwreg x-name x-type) + (define-hardware + (name x-name) + (comment (.str "Dispatcher for " x-name)) + (attrs VIRTUAL) + (type register x-type) + (get () (reg (.sym x-name -x))) + (set (val) (set (reg (.sym x-name -x)) val))) +) +(define-pmacro (cris-d-hwregf-a x-name x-type x-n x-attrs) + (define-hardware + (name x-name) + (comment (.str "Dispatcher for " x-name)) + (.splice attrs VIRTUAL (.unsplice x-attrs)) + (type register x-type (x-n)) + (get (index) (reg (.sym x-name -x) index)) + (set (index val) (set-quiet (reg (.sym x-name -x) index) val))) +) +(define-pmacro (cris-d-hwregf x-name x-type x-n) + (cris-d-hwregf-a x-name x-type x-n ()) +) +(define-pmacro (cris-d-hwregf-p x-name x-type x-n) + (cris-d-hwregf-a x-name x-type x-n (PROFILE)) +) + +; At first glance we could use (eq-attr (current-mach) ...) for +; everything, but that seems sometimes (always?) to yield false. For +; ifields, it causes noncompilable C-code. For the insn semantics code, +; it causes tests movei.ms and mulv32.ms to fail, apparently because the +; current-mach-is-v32 usage in flags setting is miscompiled as 0 (or +; rather, misgenerated). Instead we use different definitions of a +; MACH-tagged virtual register yielding a constant, together with a +; pmacro. CGEN-FIXME: If eq-attr is someday fixed, we could just remove +; these h-v32 virtual register definitions and change the pmacro +; definition for current-mach-is-v32. +(define-hardware + (semantic-name h-v32) + (name h-v32-v32) + (attrs MACH-V32 VIRTUAL) + (type register BI) + (get () (const BI 1)) + (set (val) (error "Can't set h-v32")) +) +(define-hardware + (semantic-name h-v32) + (name h-v32-non-v32) + (attrs MACH-PRE-V32 VIRTUAL) + (type register BI) + (get () (const BI 0)) + (set (val) (error "Can't set h-v32")) +) + +;; "Real" hardware. + +(define-hardware + (name h-pc) + (comment "program counter") + (attrs PC PROFILE) + (type pc) + ; There's no bit 0 in PC, so just ignore it when jumping etc. + (set (val) (set (raw-reg h-pc) (and val (inv 1)))) +) + +; Note that setting register 15 isn't handled here, but in each insn, so +; the proper "jump" attributes and other special stuff for speedy +; execution can be present. +(cris-d-hwregf-p h-gr SI 16) +(define-hardware + (semantic-name h-gr-x) + (name h-gr-pc) + (attrs MACH-PC VIRTUAL) + (comment "General purpose registers, aborting on PC access") + (type register SI (16)) + (indices extern-keyword gr-names-pcreg) + (get + (index) + (if SI (eq index 15) + (error SI "General register read of PC is not implemented.") + (reg SI h-gr-real-pc index))) + (set + (index val) + (sequence + () + (if (eq index 15) + (error "General register write to PC is not implemented.")) + (set (reg SI h-gr-real-pc index) val))) +) +(define-hardware + (name h-gr-real-pc) + (attrs MACH-PC) + (comment "General purpose registers") + (type register SI (16)) + (indices extern-keyword gr-names-pcreg) +) + +; We have to use a virtual register trick to get the "raw", unaccounted +; contents of the global register; the raw-reg RTX only works for +; non-virtual register files. +(define-hardware + (semantic-name h-raw-gr) + (name h-raw-gr-pc) + (attrs MACH-PC VIRTUAL) + (comment "Unaccounted version of general purpose registers") + (type register SI (16)) + (get (index) (raw-reg h-gr-real-pc index)) + (set (index val) (set-quiet (raw-reg h-gr-real-pc index) val)) +) +(define-hardware + (semantic-name h-gr-x) + (name h-gr-acr) + (attrs MACH-ACR) + (comment "General purpose registers") + (type register SI (16)) + (indices extern-keyword gr-names-acr) +) +(define-hardware + (semantic-name h-raw-gr) + (name h-raw-gr-acr) + (attrs MACH-ACR VIRTUAL) + (comment "Unaccounted version of general purpose registers") + (type register SI (16)) + (get (index) (raw-reg h-gr-x index)) + (set (index val) (set-quiet (raw-reg h-gr-x index) val)) +) + +; FIXME: get and set semantics? Unknown how to split semantics best; with +; get/set semantics or within the insn specification. Doing the former for +; now. Should use different names for pre-v10. +; FIXME: No dccr for v0 and v3. Different high flag bits. +(cris-d-hwregf-p h-sr SI 16) +(define-pmacro + (cris-h-sr machver) + (define-hardware + (semantic-name h-sr-x) + (name (.sym h-sr-v machver)) + (attrs (MACH (.sym crisv machver))) + (comment (.str "Special registers for v" machver)) + (type register SI (16)) + (indices extern-keyword p-names-v10) + (get + (index) + (cond + SI + ((orif (orif (eq index (regno p0)) (eq index (regno p4))) + (eq index (regno p8))) 0) + ((eq index (regno vr)) machver) + ((orif (eq index (regno ccr)) + (eq index (regno dccr))) + ; Return "P U I X N Z V C" for the low 8 bits. + ; FIXME: More bits. + (or SI + (and SI (raw-reg SI h-sr-x (regno ccr)) #xffffff00) + (or + (zext SI (reg BI h-cbit)) + (or + (sll (zext SI (reg BI h-vbit)) 1) + (or + (sll (zext SI (reg BI h-zbit)) 2) + (or + (sll (zext SI (reg BI h-nbit)) 3) + (or + (sll (zext SI (reg BI h-xbit)) 4) + (or + (sll (zext SI (reg BI h-ibit)) 5) + (or + (sll (zext SI (reg BI h-ubit)) 6) + (or + (sll (zext SI (reg BI h-pbit)) 7) + 0)))))))))) + (else (raw-reg SI h-sr-x index)))) + (set + (index val) + (cond + ((orif (orif (eq index (regno p0)) (eq index (regno p4))) + (orif (eq index (regno p8)) (eq index (regno vr)))) + (nop)) + ((orif (eq index (regno ccr)) (eq index (regno dccr))) + (sequence + () + (set (reg BI h-cbit) (if BI (ne SI (and val (sll 1 0)) 0) 1 0)) + (set (reg BI h-vbit) (if BI (ne SI (and val (sll 1 1)) 0) 1 0)) + (set (reg BI h-zbit) (if BI (ne SI (and val (sll 1 2)) 0) 1 0)) + (set (reg BI h-nbit) (if BI (ne SI (and val (sll 1 3)) 0) 1 0)) + (set (reg BI h-xbit) (if BI (ne SI (and val (sll 1 4)) 0) 1 0)) + (set (reg BI h-ibit) (if BI (ne SI (and val (sll 1 5)) 0) 1 0)) + (set (reg BI h-ubit) (if BI (ne SI (and val (sll 1 6)) 0) 1 0)) + (set (reg BI h-pbit) (if BI (ne SI (and val (sll 1 7)) 0) 1 0)) + (set-quiet (raw-reg SI h-sr-x (regno ccr)) val) + (set-quiet (raw-reg SI h-sr-x (regno dccr)) val))) + (else (set-quiet (raw-reg SI h-sr-x index) val))))) +) + +(cris-h-sr 0) +(cris-h-sr 3) +(cris-h-sr 8) +(cris-h-sr 10) + +(define-hardware + (semantic-name h-sr-x) + (name h-sr-v32) + (attrs MACH-V32) + (comment "Special registers for v32") + (type register SI (16)) + (indices extern-keyword p-names-v32) + + (get + (index) + (cond + SI + ((orif (orif (eq index (regno p0)) (eq index (regno p4))) + (eq index (regno p8))) 0) + ((eq index (regno vr)) 32) + ((eq index (regno ccs)) + ; Return "S R P U I X N Z V C" for the low 10 bits. + (or SI + (and SI (raw-reg SI h-sr-x (regno ccs)) #x3ffffc00) + (or + (zext SI (reg BI h-cbit)) + (or + (sll (zext SI (reg BI h-vbit)) 1) + (or + (sll (zext SI (reg BI h-zbit)) 2) + (or + (sll (zext SI (reg BI h-nbit)) 3) + (or + (sll (zext SI (reg BI h-xbit)) 4) + (or + (sll (zext SI (reg BI h-ibit)) 5) + (or + (sll (zext SI (reg BI h-ubit)) 6) + (or + (sll (zext SI (reg BI h-pbit)) 7) + (or + (sll (zext SI (reg BI h-rbit)) 8) + (or + (sll (zext SI (reg BI h-sbit)) 9) + (or + (sll (zext SI (reg BI h-mbit)) 30) + (or + (sll (zext SI (reg BI h-qbit)) 31) + 0)))))))))))))) + ((eq index (regno usp)) + ; In user mode, return general stack pointer. + (if BI (reg BI h-ubit) + (raw-reg SI h-gr-x (regno sp)) + (raw-reg SI h-sr-x (regno usp)))) + (else (raw-reg SI h-sr-x index)))) + + (set + (index val) + (cond + ((orif (orif (eq index (regno p0)) (eq index (regno p4))) + (orif (eq index (regno p8)) (eq index (regno vr)))) + (nop)) + ((eq index (regno ccs)) + (sequence + () + ; Protected bits are handled as such in the respective setter function. + (set (reg BI h-cbit) (if BI (ne SI (and val (sll 1 0)) 0) 1 0)) + (set (reg BI h-vbit) (if BI (ne SI (and val (sll 1 1)) 0) 1 0)) + (set (reg BI h-zbit) (if BI (ne SI (and val (sll 1 2)) 0) 1 0)) + (set (reg BI h-nbit) (if BI (ne SI (and val (sll 1 3)) 0) 1 0)) + (set (reg BI h-xbit) (if BI (ne SI (and val (sll 1 4)) 0) 1 0)) + (set (reg BI h-ibit) (if BI (ne SI (and val (sll 1 5)) 0) 1 0)) + (set (reg BI h-sbit) (if BI (ne SI (and val (sll 1 9)) 0) 1 0)) + (set (reg BI h-mbit) (if BI (ne SI (and val (sll 1 30)) 0) 1 0)) + (set (reg BI h-pbit) (if BI (ne SI (and val (sll 1 7)) 0) 1 0)) + (set (reg BI h-rbit) (if BI (ne SI (and val (sll 1 8)) 0) 1 0)) + (set (reg BI h-qbit) (if BI (ne SI (and val (sll 1 31)) 0) 1 0)) + ; Set the U bit last, so the setter functions for the other bits + ; don't see it as set from this operation. It is not cleared from + ; this operation, so we don't have to handle that; it's only + ; cleared "manually" from within simulator-specific context-switch + ; machinery. + (set (reg BI h-ubit) (if BI (ne SI (and val (sll 1 6)) 0) 1 0)) + (set-quiet (raw-reg SI h-sr-x index) val))) + ((eq index (regno usp)) + ; In user mode, set general register 14 too, whenever setting USP. + (sequence + () + (if (reg BI h-ubit) (set (raw-reg SI h-gr-x (regno sp)) val)) + (set (raw-reg SI h-sr-x (regno usp)) val))) + ((eq index (regno srs)) + (if (not (reg BI h-ubit)) (set (raw-reg h-sr-x (regno srs)) val))) + ((eq index (regno ebp)) + (if (not (reg BI h-ubit)) (set (raw-reg h-sr-x (regno ebp)) val))) + ((eq index (regno pid)) + (if (not (reg BI h-ubit)) + (sequence + () + (c-call VOID "@cpu@_write_pid_handler" val) + (set (raw-reg h-sr-x (regno pid)) val)))) + ((eq index (regno spc)) + (if (not (reg BI h-ubit)) (set (raw-reg h-sr-x (regno spc)) val))) + (else (set-quiet (raw-reg SI h-sr-x index) val)))) +) + +(define-hardware + (name h-supr) + (attrs MACH-V32 VIRTUAL) + (comment "Support registers") + (type register SI (16)) + (values keyword "" (.map (.pmacro (y) ((.str S y) y)) (.iota 16))) + (get (index) (c-call SI "@cpu@_read_supr" index)) + (set (index val) (c-call VOID "@cpu@_write_supr" index val)) +) + +(define-pmacro (cris-dsh semantic-name name comment attrs type) + "Like dsh, but the semantic-name is separate" + (define-full-hardware + name comment attrs semantic-name type () () () () () ()) +) + +; We define the condition codes that hold arithmetic flags separately +; and "or" them in, in the get and set methods of the special +; registers. We define arithmetic flags as any of C V Z N X. They +; thankfully have that order (zero-based) in all processor versions. + +; To avoid having two variants of most move-type instructions because V32 +; doesn't set C and V (and N and Z), we fake the setting to virtual +; registers which have two different implementations. +(define-pmacro (cris-move-flag f f-name f-whence) + "Flag set differently in pre-v32 and v32 in some cases" + (begin + (dsh (.sym h- f bit) (.str f-name " bit") () (register BI)) + (cris-d-hwreg (.sym h- f bit-move) BI) + (define-hardware + (semantic-name (.sym h- f bit-move-x)) + (name (.sym h- f bit-move-v32)) + (comment (.str f-name " bit set in " f-whence " instructions, ignored")) + (attrs MACH-V32 VIRTUAL) + (type register BI) + (get + () + (sequence BI () + (error (.str "Can't get h-" f "bit-move on CRISv32")) 0)) + (set (val) (nop))) + (define-hardware + (semantic-name (.sym h- f bit-move-x)) + (name (.sym h- f bit-move-pre-v32)) + (comment + (.str + f-name " bit set in " f-whence " instructions, same as " f "bit")) + (attrs MACH-PRE-V32 VIRTUAL) + (type register BI) + (get () (reg (.sym h- f bit))) + (set (val) (set (reg (.sym h- f bit)) val)))) +) + +(cris-move-flag c "carry" "move-type") +(cris-move-flag v "overflow" "move-type") +(cris-move-flag z "zero" "moveq") +(cris-move-flag n "sign" "moveq") + +(dsh h-xbit "extended-arithmetic bit" () (register BI)) +(cris-d-hwreg h-ibit BI) +(cris-dsh h-ibit-x h-ibit-pre-v32 + "interrupt-enable bit" (MACH-PRE-V32) (register BI)) +(dsh h-pbit "sequence-broken bit" ((MACH crisv10,crisv32)) (register BI)) +(dsh h-rbit "carry bit for MCP+restore-p bit" (MACH-V32) (register BI)) +(cris-d-hwreg h-ubit BI) +(cris-dsh h-ubit-x h-ubit-pre-v32 + "user mode bit" ((MACH crisv10)) (register BI)) +(dsh h-gbit "guru mode bit" (MACH-V32) (register BI)) + +; When doing a transition from kernel to user mode on V32, we save the +; stack pointer in an internal register and copy USP to R14, so we don't +; need non-trivial handlers for general registers. +(dsh + h-kernel-sp + "Kernel stack pointer during user mode" + (MACH-V32) + (register SI) +) + +(define-hardware + (semantic-name h-ubit-x) + (name h-ubit-v32) + (comment "User mode bit") + (attrs MACH-V32) + (type register BI) + (set + (val) + (sequence + () + (if (andif val (not (raw-reg BI h-ubit-x))) + (sequence + () + (set (reg SI h-kernel-sp) (raw-reg h-gr-x (regno sp))) + (set (raw-reg h-gr-x (regno sp)) (raw-reg h-sr-x (regno usp))) + (set (raw-reg BI h-ubit-x) val) + (c-call VOID "@cpu@_usermode_enabled"))))) +) + +(define-hardware + (semantic-name h-ibit-x) + (name h-ibit-v32) + (comment "Interrupt-enable bit") + (attrs MACH-V32) + (type register BI) + (set + (val) + (sequence + () + (if (not (reg BI h-ubit)) + (sequence + ((BI enabled)) + (set enabled (andif val (not (raw-reg BI h-ibit-x)))) + (set (raw-reg BI h-ibit-x) val) + ; Call handler when enabling. + (if enabled (c-call VOID "@cpu@_interrupts_enabled")))))) +) + +(define-hardware + (name h-mbit) + (comment "NMI enable bit") + (attrs MACH-V32) + (type register BI) + (set + (val) + (sequence + () + ; Don't allow clearing (through this handler) when once set. + (if (andif val (andif (not (raw-reg BI h-mbit)) (not (reg BI h-ubit)))) + (sequence + () + (set (raw-reg BI h-mbit) 1) + ; Call handler when enabling. + (c-call VOID "@cpu@_nmi_enabled"))))) +) + +(define-pmacro + (dsh-cond-bit-v32 x-name x-comment x-cond) + "dsh bit for MACH-V32, with bit only changeable when X-COND" + (define-hardware + (name x-name) + (comment x-comment) + (attrs MACH-V32) + (type register BI) + (set (val) (sequence () (if x-cond (set (raw-reg BI x-name) val))))) +) +(define-pmacro + (dsh-protected-bit-v32 x-name x-comment) + "dsh bit for MACH-V32, with bit only changeable in kernel mode" + (dsh-cond-bit-v32 x-name x-comment (not (reg BI h-ubit))) +) +(dsh-protected-bit-v32 h-qbit "Pending single-step bit") + +(define-hardware + (name h-sbit) + (comment "Cause single step exception on ... [see CRISv32 ref] bit") + (attrs MACH-V32) + (type register BI) + (set + (val) + (sequence + () + (if (not (reg BI h-ubit)) + (sequence + ((BI enabled)) + (set enabled (andif val (not (raw-reg BI h-sbit)))) + (set (raw-reg BI h-sbit) val) + ; Call handler when enabling. + (if enabled (c-call VOID "@cpu@_single_step_enabled")))))) +) + +(dnop cbit "" (SEM-ONLY) h-cbit f-nil) +(dnop cbit-move + "cbit for pre-V32, nothing for newer" (SEM-ONLY) h-cbit-move f-nil) +(dnop vbit "" (SEM-ONLY) h-vbit f-nil) +(dnop vbit-move + "vbit for pre-V32, nothing for newer" (SEM-ONLY) h-vbit-move f-nil) +(dnop zbit "" (SEM-ONLY) h-zbit f-nil) +(dnop zbit-move + "zbit for pre-V32, nothing for newer" (SEM-ONLY) h-zbit-move f-nil) +(dnop nbit "" (SEM-ONLY) h-nbit f-nil) +(dnop nbit-move + "nbit for pre-V32, nothing for newer" (SEM-ONLY) h-nbit-move f-nil) +(dnop xbit "" (SEM-ONLY) h-xbit f-nil) +(dnop ibit "" (SEM-ONLY) h-ibit f-nil) +(dnop ubit "" (SEM-ONLY (MACH crisv10,crisv32)) h-ubit f-nil) +(dnop pbit "" (SEM-ONLY (MACH crisv10,crisv32)) h-pbit f-nil) +(dnop + rbit "carry bit for MCP+restore-P flag bit" (SEM-ONLY MACH-V32) h-rbit f-nil) +(dnop sbit "" (SEM-ONLY MACH-V32) h-sbit f-nil) +(dnop mbit "" (SEM-ONLY MACH-V32) h-mbit f-nil) +(dnop qbit "" (SEM-ONLY MACH-V32) h-qbit f-nil) + +(cris-d-hwreg h-insn-prefixed-p BI) +(cris-dsh + h-insn-prefixed-p-x + h-insn-prefixed-p-pre-v32 + "instruction-is-prefixed bit" + (MACH-PRE-V32) + (register BI) +) + +; CRISv32 has no prefixing on memory accesses. CGEN-FIXME: [Once (eq-attr +; (current-mach) ...) works]: can we change andif and/or orif so it +; doesn't look too close at short-circuited operands and avoid defining an +; operand that doesn't apply to a certain mach? +(define-hardware + (semantic-name h-insn-prefixed-p-x) + (name h-insn-prefixed-p-v32) + (attrs MACH-V32 VIRTUAL) + (comment "instruction-is-prefixed bit") + (type register BI) + (get () (const BI 0)) + (set (val) (nop)) +) +(dnop + prefix-set + "Instruction-prefixed flag" + (SEM-ONLY) + h-insn-prefixed-p + f-nil +) + +(cris-dsh + h-prefixreg h-prefixreg-pre-v32 + "Prefix-address register" (MACH-PRE-V32) (register SI)) +(define-hardware + (semantic-name h-prefixreg) + (name h-prefixreg-v32) + (comment "Prefix-address register, redirecting to ACR") + (attrs MACH-V32 VIRTUAL) + (type register SI) + ; Why can't we have just a "acr" a.k.a "(reg h-gr 15)" here? + (get () acr) + (set (value) (set acr value)) +) + +(dnop + prefixreg + "Prefix address" + (SEM-ONLY) + h-prefixreg + f-nil +) + +;;;;;;;;;;;;;;;;;; -ifield + +; 15 0 +; +-----------+-----+-----------+-----+-----------+ +; | Operand2 | Mode| Opcode | Size| Operand1 | +; +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +; +; Figure 5. General instruction format. +; +; Some deviations from this format exist, [see below]. + +; Field specifiers in CGEN specify the highest numbered bit followed by +; the number of bits. + +(dnf f-operand1 "Operand1" () 3 4) +(dnf f-size "Size" () 5 2) +(dnf f-opcode "Opcode" () 9 4) +(dnf f-mode "Mode" () 11 2) +(dnf f-operand2 "Operand2" () 15 4) + +; Subfields. FIXME: unfortunately there's some limitation in CGEN so we +; can't (as would be somewhat intuitive) make f-mode a multi-ifield +; consisting of these two, concatenated. +(dnf f-memmode "Indirect of autoincrement" () 10 1) +(dnf f-membit "Memory specifier" () 11 1) + +(dnf f-b5 "Bit 5 (zero for some quick operands)" () 5 1) + +; When the addressing mode is quick immediate, the low bits are +; part of the operand. +(dnf f-opcode-hi "Opcode field, high bits" () 9 2) + +; Common synonyms for those fields. +(define-pmacro f-source f-operand1) +(define-pmacro f-dest f-operand2) + +(dnmf + f-dstsrc "Dest and source fields concatenated" () UINT + (f-dest f-source) + ; Insert-code. + (sequence + ((SI tmpval)) + (set tmpval (ifield f-dstsrc)) + (set (ifield f-dest) (and (srl tmpval 4) #xf)) + (set (ifield f-source) (and tmpval #xf))) + ; Extract-code. + (set + (ifield f-dstsrc) + (and (or (ifield f-source) (sll (ifield f-dest) 4)) #xff)) +) + +;The 6-bit value may be sign or zero extended depending on the instruction. +; +; 15 0 +; +-----------+-----+-----------+-----+-----------+ +; | Operand2 | Mode| Opcode | Immediate value | +; +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +; +; Figure 6. Quick immediate addressing mode instruction format. + +(dnf f-u6 "Quick immediate unsigned 6-bit" () 5 6) +(df f-s6 "Quick signed 6-bit" () 5 6 INT #f #f) + +; There's also a variant used with shift insns, with one bit larger opcode +; and one bit smaller immediate value, though it doesn't have a general +; graphic description. +(dnf f-u5 "Quick unsigned 5-bit" () 4 5) + +; Similarly, a four-bit immediate field. +(dnf f-u4 "Quick unsigned 4-bit" () 3 4) + +; An 8-bit signed value, which doesn't have a general graphic description. +(df f-s8 "Source signed byte" () 7 8 INT #f #f) + +; The 9-bit branch offset, with bit 0 in the field being bit 8 in the +; offset, and bit 0 in the offset always 0. +(df f-disp9-hi "PC-relative 9-bit offset, sign bit" () 0 1 INT #f #f) +(dnf f-disp9-lo "PC-relative 9-bit offset, low bits" () 7 7) + +; It would work to have this in two mach-specific variants, but +; considering that current-mach-is-v32 is a compile-time constant, we +; don't win any simulator performance. +(dnmf + f-disp9 "PC-relative 9-bit offset" + (PCREL-ADDR) + INT + (f-disp9-hi f-disp9-lo) + ; Insert-code. + (sequence + ((SI absval)) + (set absval (srl (sub (sub SI (ifield f-disp9) pc) + (if SI current-mach-is-v32 0 2)) 1)) + (set (ifield f-disp9-hi) (if (lt absval 0) 1 0)) + (set (ifield f-disp9-lo) (and absval) #x7f)) + ; Extract-code. + (sequence + ((SI abslo) (SI absval)) + (set abslo (sll (ifield f-disp9-lo) 1)) + (set absval + (or (if SI (ne (ifield f-disp9-hi) 0) + (inv SI #xff) + 0) + abslo)) + (set (ifield f-disp9) + (add SI (add SI pc absval) (if SI current-mach-is-v32 0 2)))) +) + +; The operand of LAPCQ is PC-relative, similar to f-disp9 but unsigned, +; and only four bits. +(df + f-qo + "PC-relative 4-bit unsigned offset, counted from start of insn" + (MACH-V32 PCREL-ADDR) + 3 4 + UINT + ; Insert-code. + ((value pc) (srl SI (sub SI value pc) 1)) + ; Extract-code. + ((value pc) (add SI pc (sll SI value 1))) +) + +; 8-bit, 16-bit and 32-bit immediates. The 8-bit values are constructed +; through encoding/decoding functions, since the PC increment is by a +; word. +(define-pmacro (dcrisf x-name x-comment x-attrs x-word-offset x-word-length + x-start x-length x-mode x-encode x-decode) + (define-ifield + (name x-name) + (comment x-comment) + (.splice attrs (.unsplice x-attrs)) + (word-offset x-word-offset) + (word-length x-word-length) + (start x-start) + (length x-length) + (mode x-mode) + (.splice encode (.unsplice x-encode)) + (.splice decode (.unsplice x-decode)) + ) +) + +(dcrisf + f-indir-pc+-byte "[PC+] 8-bit field" (SIGN-OPT) + 16 16 + 15 16 ; CGEN-FIXME: Should be 7 8 + INT (#f) (#f) +) + +(dcrisf + f-indir-pc+-word "[PC+] 16-bit field" (SIGN-OPT) + 16 16 15 16 INT (#f) (#f) +) + +; CGEN-FIXME: I shouldn't have to use trunc here, should I? +; Sign-extension should be implicit through use of SI (as opposed to USI) +; and additionally through SIGN-OPT. The ext isn't actually needed, but +; having it there rather than implicit makes more sense than to just have +; the trunc. +(dcrisf + f-indir-pc+-word-pcrel "[PC+] PC-relative 16-bit field" + (PCREL-ADDR SIGN-OPT) + 16 16 15 16 SI + ((value pc) (sub SI value (add SI pc (if SI current-mach-is-v32 0 4)))) + ((value pc) (add SI (ext SI (trunc HI value)) (add SI pc (if SI current-mach-is-v32 0 4)))) +) + +(dcrisf + f-indir-pc+-dword "PC autoincrement - 32-bit field" (SIGN-OPT) + 16 32 31 32 INT (#f) (#f) +) + +(dcrisf + f-indir-pc+-dword-pcrel + "[PC+] PC-relative 32-bit field, counted from start of insn" + (SIGN-OPT MACH-V32 PCREL-ADDR) + 16 32 31 32 INT + ((value pc) (sub SI value pc)) + ((value pc) (add SI pc value)) +) + +;;;;;;;;;;;;;;;;;; -insn-enum -normal-operand -normal-derived-operand + +;; How different fields are transformed into something we put in insns. + +; m := size modifier, byte (00), word (01) or dword (10) +; z := size modifier, byte (0) or word (1) +; (For the latter, the "higher" bit is always 0, mapping trivially on m.) + +(define-normal-insn-enum + insn-size + "Standard instruction operand size" + () + SIZE_ + f-size + ("BYTE" "WORD" "DWORD" "FIXED") +) + +; The mode field for insns with "s" operand (perhaps with a partial set of +; operand types). +(define-normal-insn-enum + insn-mode + "Standard instruction addressing modes" + () + MODE_ + f-mode + ("QUICK_IMMEDIATE" "REGISTER" "INDIRECT" "AUTOINCREMENT") +) + +(define-normal-insn-enum + insn-memoryness-mode + "Whether the operand is indirect" + () + MODEMEMP_ + f-membit + ("NO" "YES") +) + +; FIXME: Needed? +(define-normal-insn-enum + insn-memincness-mode + "Whether the indirect operand is autoincrement" + () + MODEINCP_ + f-memmode + ("NO" "YES") +) + +; Special semantics for multiply. +(define-pmacro MODE_MULU MODE_INDIRECT) +(define-pmacro MODE_MULS MODE_AUTOINCREMENT) + +(define-normal-insn-enum + insn-signed-size + "Signed instruction operand size" + () + SIGNED_ + f-size + ("UNDEF_SIZE_0" "UNDEF_SIZE_1" "BYTE" "WORD") +) + +(define-normal-insn-enum + insn-unsigned-size + "Unsigned instruction operand size" + () + UNSIGNED_ + f-size + ("BYTE" "WORD" "UNDEF_SIZE_2" "UNDEF_SIZE_3") +) + +; Rs := source operand, register addressing mode +(dnop Rs "Source general register" () h-gr f-source) + +; [Rs] := source operand, indirect addressing mode +; = MODE_INDIRECT Rs + +; [Rs+] := source operand, autoincrement addressing mode (see note!) +; = MODE_AUTOINCREMENT Rs + +; The union of [Rs] and [Rs(+)] +; = MODEMEMP_YES Rs + +; Whether an indirect operand is increment can be obtained as an operand by +; = inc +(dnop inc "Incrementness of indirect operand" () h-inc f-memmode) + +; or as an affirmative specifier +; = MODEINCP_YES +; (or MODEINCP_NO) + +; s := source operand, any of the modes Rs, [Rs] or [Rs+] +; No common operand; each are handled separately, using the above definitions. + +; Ps := source operand, special register +; It's in the field usually used for the destination. +(dnop Ps "Source special register" () h-sr f-dest) + +; Ss := source operand, support register +; It's in the field usually used for the destination. +(dnop Ss "Source support register" (MACH-V32) h-supr f-dest) + +; Sd := source operand, support register +(dnop Sd "Destination support register" (MACH-V32) h-supr f-dest) + +; i := 6-bit signed immediate operand +(dnop i "Quick signed 6-bit" () h-sint f-s6) + +; j := 6-bit unsigned immediate operand +(dnop j "Quick unsigned 6-bit" () h-uint f-u6) + +; c := 5-bit immediate shift value +(dnop c "Quick unsigned 5-bit" () h-uint f-u5) + +; qo := 4-bit unsigned immediate operand +(dnop qo "Quick unsigned 4-bit, PC-relative" (MACH-V32) h-addr f-qo) + +; Rd := destination operand, register addressing mode +(dnop Rd "Destination general register" () h-gr f-dest) +(define-pmacro Rd-sfield Rs) +(define-pmacro Rs-dfield Rd) + +; [Rd] := destination operand, indirect addressing mode +; = MODE_INDIRECT Rd + +; [Rd+] := destination operand, autoincrement addressing mode +; = MODE_AUTOINCREMENT Rd + +; [PC+] := destination operand PC, autoincrement addressing mode +; = MODE_AUTOINCREMENT (f-dest 15) X +; where X is one of sconst8, uconst8, sconst16, uconst16 or const32. +(dnop sconst8 "Signed byte [PC+]" () h-sint f-indir-pc+-byte) +(dnop uconst8 "Unsigned byte [PC+]" () h-uint f-indir-pc+-byte) +(dnop sconst16 "Signed word [PC+]" () h-sint f-indir-pc+-word) +(dnop uconst16 "Unsigned word [PC+]" () h-uint f-indir-pc+-word) +(dnop const32 "Dword [PC+]" () h-uint f-indir-pc+-dword) +(dnop const32-pcrel "Dword [PC+]" () h-addr f-indir-pc+-dword-pcrel) + +; d := destination operand, any of the modes Rd, [Rd] or [Rd+] +; No common operand; each are handled separately, using the above definitions. + +; Pd := destination operand, special register +(dnop Pd "Destination special register" () h-sr f-dest) + +; o := 8-bit immediate offset value +(dnop o "Signed 8-bit" () h-sint f-s8) + +; The division of operand semantics and insn fields in the CRIS +; instruction set reference doesn't permit a simple mapping to a +; simulator description, and the division of insn fields and +; semantics in CGEN is not between the define-normal-ifield +; vs. define-normal-operand. For example, the "o" operand is +; PC-relative for branch insns, as described by the CGEN f-disp9 +; field. +; See comment at f-disp9; thankfully the mach +; attribute works here to have two different definitions by the +; same name. +(dnop o-pcrel "9-bit signed immediate PC-rel" + () + h-iaddr f-disp9) + +(dnop o-word-pcrel "16-bit signed immediate PC-rel" + () + h-iaddr f-indir-pc+-word-pcrel) + +; cc := condition code +(dnop cc "Condition codes" () h-ccode f-dest) + +; n := 4 bit breakpoint exception vector index +(dnop n "Quick unsigned 4-bit" () h-uint f-u4) + +; The "option" in the SWAP insn. +(dnop swapoption "Swap option" () h-swap f-dest) + +(dnop list-of-flags "Flag bits as operand" () h-flagbits f-dstsrc) + +; Enumerations for insn codes, for use in insn definitions +; instead of raw numbers. See it as operand definitions for the +; opcode field. + +(define-normal-insn-enum + insn-qi-opc + "Insns for MODE_QUICK_IMMEDIATE" + () + Q_ + f-opcode + ("BCC_0" "BCC_1" "BCC_2" "BCC_3" + "BDAP_0" "BDAP_1" "BDAP_2" "BDAP_3" + "ADDQ" "MOVEQ" "SUBQ" "CMPQ" + "ANDQ" "ORQ" "ASHQ" "LSHQ") +) + +(define-normal-insn-enum + insn-qihi-opc + "Same as insn-qi-opc, though using only the high two bits of the opcode" + () + QHI_ + f-opcode-hi + ("BCC" "BDAP" "OTHER2" "OTHER3") +) +(define-pmacro QHI_ADDOQ QHI_BDAP) + +(define-normal-insn-enum + insn-r-opc + "Insns for MODE_REGISTER and either SIZE_BYTE, SIZE_WORD or SIZE_DWORD" + () + R_ + f-opcode + ("ADDX" "MOVX" "SUBX" "LSL" + "ADDI" "BIAP" "NEG" "BOUND" + "ADD" "MOVE" "SUB" "CMP" + "AND" "OR" "ASR" "LSR") +) +(define-pmacro R_ADDI_ACR R_BIAP) + +(define-normal-insn-enum + insn-rfix-opc + "Insns for MODE_REGISTER and SIZE_FIXED" + () + RFIX_ + f-opcode + ("ADDX" "MOVX" "SUBX" "BTST" + "SCC" "ADDC" "SETF" "CLEARF" + "MOVE_R_S" "MOVE_S_R" "ABS" "DSTEP" + "LZ" "SWAP" "XOR" "MSTEP") +) +(define-pmacro RFIX_MCP RFIX_MSTEP) + +(define-normal-insn-enum + insn-indir-opc + "Insns for (MODE_INDIRECT or MODE_AUTOINCREMENT) and either SIZE_BYTE, SIZE_WORD or SIZE_DWORD" + () + INDIR_ + f-opcode + ("ADDX" "MOVX" "SUBX" "CMPX" + "MUL" "BDAP_M" "ADDC" "BOUND" + "ADD" "MOVE_M_R" "SUB" "CMP" + "AND" "OR" "TEST" "MOVE_R_M") +) +(define-pmacro INDIR_ADDO INDIR_BDAP_M) + +(define-normal-insn-enum + insn-infix-opc + "Insns for (MODE_INDIRECT or MODE_AUTOINCREMENT) and SIZE_FIXED" + () + INFIX_ + f-opcode + ("ADDX" "MOVX" "SUBX" "CMPX" + "JUMP_M" "DIP" "JUMP_R" "BCC_M" + "MOVE_M_S" "MOVE_S_M" "BMOD" "BSTORE" + "RBF" "SBFS" "MOVEM_M_R" "MOVEM_R_M") +) + +(define-pmacro INFIX_MOVE_SS INFIX_SBFS) +(define-pmacro INFIX_LAPC INFIX_DIP) +(define-pmacro INFIX_RFE INFIX_JUMP_M) +(define-pmacro INFIX_RFN INFIX_JUMP_M) +(define-pmacro INFIX_HALT INFIX_JUMP_M) +(define-pmacro INFIX_SFE INFIX_JUMP_M) +(define-pmacro INFIX_RFG INFIX_JUMP_M) +(define-pmacro INFIX_JAS_R INFIX_JUMP_R) +(define-pmacro INFIX_JAS_M INFIX_JUMP_R) +(define-pmacro INFIX_JASC INFIX_RBF) +(define-pmacro INFIX_JUMP_P INFIX_BCC_M) +(define-pmacro INFIX_BAS INFIX_BMOD) +(define-pmacro INFIX_BASC INFIX_BSTORE) +(define-pmacro INFIX_BREAK INFIX_JUMP_M) +(define-pmacro INFIX_FIDXI INFIX_JUMP_M) +(define-pmacro INFIX_FIDXD INFIX_BAS) +(define-pmacro INFIX_FTAGI INFIX_JUMP_M) +(define-pmacro INFIX_FTAGD INFIX_BAS) + +; Classes of insns: +; Move-to-register, move-to-memory, move-to/from-other-register, +; logical, arithmetic, branch. +; Classes of operands: +; quick, register, memory-indirect, memory-postinc. + + +;;;;;;;;;;;;;;;;;; -normal-insn + +(define-pmacro (dni-bwd-attr name comment attr syntax fmt fsem timing) + (begin + (dni (.sym name .b) (.str "byte " comment) attr (.str name ".b " syntax) + (.splice (.unsplice fmt) SIZE_BYTE) + (fsem QI) + timing) + (dni (.sym name .w) (.str "word " comment) attr (.str name ".w " syntax) + (.splice (.unsplice fmt) SIZE_WORD) + (fsem HI) + timing) + (dni (.sym name .d) (.str "dword " comment) attr (.str name ".d " syntax) + (.splice (.unsplice fmt) SIZE_DWORD) + (fsem SI) + timing)) +) + +(define-pmacro (dni-cdt-attr name comment attr syntax fmt semantics) + "dni without specifying timing" + (dni name comment attr syntax fmt semantics (cris-timing)) +) + +(define-pmacro (dni-cdt-bwd-attr name comment attr syntax fmt fsem) + (begin + (dni-cdt-attr (.sym name .b-r) (.str "byte " comment) attr (.str name ".b " syntax) + (.splice (.unsplice fmt) SIZE_BYTE) + (fsem QI)) + (dni-cdt-attr (.sym name .w-r) (.str "word " comment) attr (.str name ".w " syntax) + (.splice (.unsplice fmt) SIZE_WORD) + (fsem HI)) + (dni-cdt-attr (.sym name .d-r) (.str "dword " comment) attr (.str name ".d " syntax) + (.splice (.unsplice fmt) SIZE_DWORD) + (fsem SI))) +) + +; Some convenience macros based on the above ones. +(define-pmacro (dni-cdt-bwd name comment syntax fmt fsem) + (dni-cdt-bwd-attr name comment () syntax fmt fsem) +) + +(define-pmacro (dni-bwd name comment syntax fmt fsem timing) + (dni-bwd-attr comment () syntax fmt fsem timing) +) + +(define-pmacro-map + (((dni-cdt name comment syntax fmt semantics) + (dni-cdt-attr name comment () syntax fmt semantics)) + ((dni-c-QI-attr name comment attr syntax fmt fsem) + (dni name comment attr syntax fmt fsem (cris-timing-const-QI))) + ((dni-c-HI-attr name comment attr syntax fmt fsem) + (dni name comment attr syntax fmt fsem (cris-timing-const-HI))) + ((dni-c-SI-attr name comment attr syntax fmt fsem) + (dni name comment attr syntax fmt fsem (cris-timing-const-SI)))) +) + +(define-pmacro-map + (((dni-c-QI name comment syntax fmt fsem) + (dni-c-QI-attr name comment () syntax fmt fsem)) + ((dni-c-HI name comment syntax fmt fsem) + (dni-c-HI-attr name comment () syntax fmt fsem)) + ((dni-c-SI name comment syntax fmt fsem) + (dni-c-SI-attr name comment () syntax fmt fsem))) +) + +; These flags are both cleared by all insns except prefixes (before +; CRISv32) and "setf x", so we put them in a handy macro. +(define-pmacro + (reset-x-p) + (sequence + () + (set xbit 0) + (set prefix-set 0)) +) + +; NOP | 0 0 0 0| 0 1| 0 1 0 0| 0 0| 1 1 1 1| +; (For V32, "SETF" (no flags) is used.) +(dni-cdt-attr + nop "nop" (MACH-PC) "nop" + (+ (f-operand2 0) R_ADDI MODE_REGISTER SIZE_BYTE (f-operand1 15)) + (reset-x-p) +) + +; Pre- and v32+ variants MOVE insns set flags differently. These two +; macros for flag settings are meant to be used in all MOVE insns. +(define-pmacro (setf-moveq value) + (sequence + () + (set-quiet nbit-move (lt SI value 0)) + (set-quiet zbit-move (andif BI (eq SI value 0) (if BI xbit zbit 1))) + (set-quiet cbit-move 0) + (set-quiet vbit-move 0) + (reset-x-p)) +) + +(define-pmacro (setf-move size value) + (sequence + () + (set nbit (lt size value 0)) + (set zbit (andif BI (eq size value 0) (if BI xbit zbit 1))) + (set-quiet cbit-move 0) + (set-quiet vbit-move 0) + (reset-x-p)) +) +; The CGEN binop-with-bit operations are not documented well enough that I +; trust their semantics to remain stable. Better define local ones: the +; semantics become explicit. +(define-pmacro-map + (((add-overflow size R D S carry) + (orif BI (andif BI (andif BI (lt size S 0) (lt size D 0)) (ge size R 0)) + (andif BI (andif BI (ge size S 0) (ge size D 0)) (lt size R 0)))) + ((add-carry size R D S carry) + (orif BI (andif BI (lt size S 0) (lt size D 0)) + (orif BI (andif BI (lt size D 0) (ge size R 0)) + (andif BI (lt size S 0) (ge size R 0))))) + ((sub-overflow size R D S carry) + (orif BI (andif BI (andif BI (ge size S 0) (lt size D 0)) (ge size R 0)) + (andif BI (andif BI (lt size S 0) (ge size D 0)) (lt size R 0)))) + ((sub-carry size R D S carry) + (orif BI (andif BI (lt size S 0) (ge size D 0)) + (orif BI (andif BI (ge size D 0) (lt size R 0)) + (andif BI (lt size S 0) (lt size R 0))))) + ; Only valid for size := DI + ((mulu-overflow size R D S carry) + (ne DI R (zext DI (trunc SI R)))) + ((mulu-carry size R D S carry) + (andif current-mach-is-v32 carry)) + ((muls-overflow size R D S carry) + (ne DI R (ext DI (trunc SI R)))) + ((muls-carry size R D S carry) + (andif current-mach-is-v32 carry))) +) + +(define-pmacro (setf-arit2 size op source1 source2 result carryin carryout) + "Set no-prefix, x=0, carryout, v, z and n according to operation OP in size SIZE" + (sequence + () + (set carryout ((.sym op -carry) size result source1 source2 carryin)) + (set nbit (lt size result 0)) + (set zbit (andif BI (eq size result 0) (orif BI zbit (not BI xbit)))) + (set vbit ((.sym op -overflow) size result source1 source2 carryin)) + (reset-x-p)) +) +(define-pmacro (setf-arit size op source1 source2 result carry) + "Set no-prefix, x=0, c, v, z and n according to operation OP in size SIZE" + (setf-arit2 size op source1 source2 result carry cbit) +) + +; Let's have convienence macros for arithmetic, including evaluation of the +; operation, destination modification, flag setting and carry propagation. +(define-pmacro + (cris-arit6-int arit size fdest fdest_op srcop1 srcop2 carryout carryin) + "Core for performing some three-operand arithmetic with carry as parameter" + (sequence + ((size tmpopd) (size tmpops) (BI carry) (size newval)) + (set tmpops srcop2) + (set tmpopd srcop1) + (set carry carryin) + (set newval ((.sym arit c) tmpopd tmpops (if BI (eq xbit 0) 0 carry))) + (fdest size fdest_op newval) + (setf-arit2 size arit tmpopd tmpops newval carry carryout)) +) + +(define-pmacro + (cris-arit5-int arit size destregno srcop1 srcop2 carryout carryin) + "As cris-arit6-int, but to set a part of a general register" + (cris-arit6-int + arit + size + (.pmacro (sz regno val) (set-subreg-gr sz regno val)) + destregno + srcop1 + srcop2 + carryout + carryin) +) + +(define-pmacro (cris-arit5 arit size destreg srcop1 srcop2 carryout carryin) + "As cris-arit5-int, but takes a register as parameter, not register number" + (cris-arit5-int arit size (regno destreg) srcop1 srcop2 carryout carryin) +) +(define-pmacro (cris-arit3-int arit size destregno srcop1 srcop2) + "As cris-arit5-int, but with carry-in same as carry-out" + (cris-arit5-int arit size destregno srcop1 srcop2 cbit cbit) +) +(define-pmacro (cris-arit3 arit size destreg srcop1 srcop2) + "As cris-arit3-int, but takes a register as parameter, not register number" + (cris-arit3-int arit size (regno destreg) srcop1 srcop2) +) +(define-pmacro (cris-arit arit size destreg srcop) + "As cris-arit3, but with destination same as srcop1" + (cris-arit3 arit size destreg destreg srcop) +) +(define-pmacro (cris-arit-3op arit size destsrcop2 srcop1 dest-3op) + "Similar to cris-arit3-int, but for prefixed operand only" + (cris-arit3-int arit size + (if SI (andif prefix-set (not inc)) + (regno dest-3op) + (regno destsrcop2)) + destsrcop2 srcop1) +) + +; Convenience macros to select a part of a value and its complement, for +; the .b, .w and .d operations. +(define-pmacro (QI-part val) (and SI val #xff)) +(define-pmacro (non-QI-part val) (and SI val #xffffff00)) +(define-pmacro (HI-part val) (and SI val #xffff)) +(define-pmacro (non-HI-part val) (and SI val #xffff0000)) +(define-pmacro (SI-part val) val) +(define-pmacro (non-SI-part val) 0) +(define-pmacro + (set-subreg-gr-bw BWD gregno newval) + "Set a byte or word part or full dword of a general register" + (sequence + ((SI oldregval)) + (set oldregval (reg h-raw-gr gregno)) + (set (reg h-gr gregno) + (or SI ((.sym BWD -part) newval) ((.sym non- BWD -part) oldregval)))) +) +(define-pmacro (set-subreg-gr BWD gregno newval) + ((.sym set-subreg-gr- BWD) BWD gregno newval) +) +(define-pmacro (set-subreg-gr-SI SI gregno newval) + (set (reg h-gr gregno) newval) +) +(define-pmacro set-subreg-gr-HI set-subreg-gr-bw) +(define-pmacro set-subreg-gr-QI set-subreg-gr-bw) + +; MOVE.m Rs,Rd [ Rd | 011001mm | Rs ] +(dni-cdt-bwd + move "move.m r,R" + "move.m ${Rs},${Rd}" + (+ Rd MODE_REGISTER R_MOVE Rs) + (.pmacro + (BWD) + (sequence + ((BWD newval)) + (set newval Rs) + (set-subreg-gr BWD (regno Rd) newval) + (setf-move BWD newval))) +) + +; MOVE.D PC,Rd [ Rd | 01100110 | 1111 ] +; This insn is used in PIC code to find out the code address. It's an +; exception to the (guarded) non-implementation of PC operands in this +; file. +(dni-cdt-attr + movepcr "move.d PC,R" + (MACH-PC UNCOND-CTI) + "move.d PC,${Rd}" + (+ Rd MODE_REGISTER R_MOVE SIZE_DWORD (f-source 15)) + (sequence + ((SI pcval)) + (set pcval (add SI pc 2)) + (set Rd pcval) + (setf-move SI pcval)) +) + +; MOVEQ i,Rd [ Rd | 001001 | i ] +(dni-cdt + moveq "moveq" + "moveq $i,$Rd" + (+ Rd MODE_QUICK_IMMEDIATE Q_MOVEQ i) + (sequence + ((SI newval)) + (set newval i) + (set Rd newval) + (setf-moveq newval)) +) + +(define-pmacro (dni-cdt-sbw name comment syntax fmt fsem) + "Insn generator for insns with signed .b and .w variants" + (begin + (dni-cdt + (.sym name .b-r) (.str "byte " comment) (.str name ".b " syntax) + (.splice (.unsplice fmt) SIGNED_BYTE) + (fsem QI)) + (dni-cdt + (.sym name .w-r) (.str "word " comment) (.str name ".w " syntax) + (.splice (.unsplice fmt) SIGNED_WORD) + (fsem HI))) +) + +; MOVS.z Rs,Rd [ Rd | 0100011z | Rs ] +(dni-cdt-sbw + movs "movs.m r,R" + "movs.m ${Rs},${Rd}" + (+ Rd MODE_REGISTER R_MOVX Rs) + (.pmacro + (BW) + (sequence + ((BW tmpops) (SI newval)) + (set tmpops Rs) + (set newval (ext SI tmpops)) + (set Rd newval) + (setf-move SI newval))) +) + +(define-pmacro (dni-cdt-ubw name comment syntax fmt fsem) + "Similar to dni-cdt-sbw but for unsigned operations" + (begin + (dni-cdt + (.sym name .b-r) (.str "byte " comment) (.str name ".b " syntax) + (.splice (.unsplice fmt) UNSIGNED_BYTE) + (fsem QI)) + (dni-cdt + (.sym name .w-r) (.str "word " comment) (.str name ".w " syntax) + (.splice (.unsplice fmt) UNSIGNED_WORD) + (fsem HI))) +) + +; MOVU.z Rs,Rd [ Rd | 0100010z | Rs ] +(dni-cdt-ubw + movu "movu.m r,R" + "movu.m ${Rs},${Rd}" + (+ Rd MODE_REGISTER R_MOVX Rs) + (.pmacro + (BW) + (sequence + ((BW tmpops) (SI newval)) + (set tmpops Rs) + (set newval (zext SI tmpops)) + (set Rd newval) + (setf-move SI newval))) +) + +; (MOVE.m [PC+],Rd [ Rd | 111001mm | 1111 ]) +; For the moment, it doesn't seem worthwhile to make a dni-c-bwd macro; +; too many places to parametrize. +(dni-c-QI + movecbr "move.b [PC+],R" + "move.b ${sconst8},${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_MOVE_M_R SIZE_BYTE (f-source 15) sconst8) + (sequence + ((QI newval)) + (set newval sconst8) + (set-subreg-gr QI (regno Rd) newval) + (setf-move QI newval)) +) + +(dni-c-HI + movecwr "move.w [PC+],R" + "move.w ${sconst16},${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_MOVE_M_R SIZE_WORD (f-source 15) sconst16) + (sequence + ((HI newval)) + (set newval sconst16) + (set-subreg-gr HI (regno Rd) newval) + (setf-move HI newval)) +) + +(dni-c-SI + movecdr "move.d [PC+],R" + "move.d ${const32},${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_MOVE_M_R SIZE_DWORD (f-source 15) const32) + (sequence + ((SI newval)) + (set newval const32) + (set Rd newval) + (setf-move SI newval)) +) + +; (MOVS.z [PC+],Rd [ Rd | 1100011z | 1111 ]) +; Similarly, no likely net improvement for a dni-c-bw. +(dni-c-QI + movscbr "movs.b [PC+],R" + "movs.b ${sconst8},${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_MOVX SIGNED_BYTE (f-source 15) sconst8) + (sequence + ((SI newval)) + ; FIXME: Make trunc unnecessary. + (set newval (ext SI (trunc QI sconst8))) + (set Rd newval) + (setf-move SI newval)) +) + +(dni-c-HI + movscwr "movs.w [PC+],R" + "movs.w ${sconst16},${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_MOVX SIGNED_WORD (f-source 15) sconst16) + (sequence + ((SI newval)) + ; FIXME: Make trunc unnecessary. + (set newval (ext SI (trunc HI sconst16))) + (set Rd newval) + (setf-move SI newval)) +) + +; (MOVU.z [PC+],Rd [ Rd | 1100010z | 1111 ]) +(dni-c-QI + movucbr "movu.b [PC+],R" + "movu.b ${uconst8},${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_MOVX UNSIGNED_BYTE (f-source 15) uconst8) + (sequence + ((SI newval)) + ; FIXME: Make trunc unnecessary. + (set newval (zext SI (trunc QI uconst8))) + (set Rd newval) + (setf-move SI newval)) +) + +(dni-c-HI + movucwr "movu.w [PC+],R" + "movu.w ${uconst16},${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_MOVX UNSIGNED_WORD (f-source 15) uconst16) + (sequence + ((SI newval)) + ; FIXME: Make trunc unnecessary. + (set newval (zext SI (trunc HI uconst16))) + (set Rd newval) + (setf-move SI newval)) +) + +; ADDQ j,Rd [ Rd | 001000 | j ] +(dni-cdt + addq "addq j,Rd" + "addq $j,$Rd" + (+ Rd MODE_QUICK_IMMEDIATE Q_ADDQ j) + (cris-arit add SI Rd j) +) + +; SUBQ j,Rd [ Rd | 001010| j ] +(dni-cdt + subq "subq j,Rd" + "subq $j,$Rd" + (+ Rd MODE_QUICK_IMMEDIATE Q_SUBQ j) + (cris-arit sub SI Rd j) +) + +; Convenience macros for insns with a memory operand. +(define-pmacro + (dni-cmt-attr-tim name comment attr syntax fmt semantics timing) + "dni with memory-access" + (dni name comment attr syntax + ; Specifying MODE_INDIRECT and MODE_AUTOINCREMENT in this + ; manner makes the autoincrementness handily available. + ; It also effectively excludes non-memory use of dni-cmt. + (.splice (.unsplice fmt) MODEMEMP_YES inc) + semantics + timing) +) + +(define-pmacro (dni-cmt-attr name comment attr syntax fmt semantics) + "dni with read memory-access timing" + (dni-cmt-attr-tim name comment attr syntax fmt semantics + (cris-mem-timing)) +) + +(define-pmacro (dni-cmwt-attr name comment attr syntax fmt semantics) + "dni with write memory-access timing" + (dni-cmt-attr-tim name comment attr syntax fmt semantics + (cris-mem-write-timing)) +) + +(define-pmacro QI-size 1) +(define-pmacro HI-size 2) +(define-pmacro SI-size 4) + +(define-pmacro (cris-get-mem size regop) + "Handle reading memory in , with source address register\ + (read once, maybe set once) in or prefixed" + (sequence + size + ((SI addr) (size tmp-mem) (BI postinc)) + + ; Cache the incrementness of the operand. + (set postinc inc) + + ; Get the address from somewhere. + (set addr + (if SI (eq prefix-set 0) + ; If the insn was prefixed, it's in the prefix-register. + regop + prefixreg)) + + ; Get the memory contents. + (set tmp-mem (mem size addr)) + + ; For non-prefixed post-increment, we increment the address by the + ; size of the memory access. + (if (ne postinc 0) + (sequence + () + (if (eq prefix-set 0) + (set addr (add addr (.sym size -size)))) + ; Update the source-register for post-increments. + (set regop addr))) + + ; Don't forget the return-value. + tmp-mem) +) + +(define-pmacro (cris-set-mem size regop value) + "Handle writing of to memory, with memory address register\ + (read once, maybe set once) in or prefixed." + (sequence + ((SI addr) (BI postinc)) + + ; Cache the incrementness of the operand. + (set postinc inc) + + ; Get the address from somewhere. + (set addr + (if SI (eq prefix-set 0) + ; If the insn was prefixed, it's in the prefix-register. + regop + prefixreg)) + + ; Set the memory contents. Integral-write semantics apply. + ; FIXME: currently v32 only; when proper semantics needed, fix v10. + (if (andif current-mach-is-v32 (ne xbit 0)) + (if (eq pbit 0) + (sequence + () + (set (mem size addr) value) + ; Write failures are signalled (by whatever entity "sends + ; the signal") by setting P at time of the write above, if X + ; is set. Here, we just need to copy P into C. + (set cbit pbit)) + (set cbit 1)) + (set (mem size addr) value)) + + ; For non-prefixed post-increment, we increment the address by the + ; size of the memory access. As for the integral-write, this needs to + ; be tweaked for pre-v32: increment should have been performed if + ; there's a fault at the memory access above. + (if (ne postinc 0) + (sequence + () + (if (eq prefix-set 0) + (set addr (add addr (.sym size -size)))) + ; Update the source-register for post-increments. + (set regop addr)))) +) + +(define-pmacro + (dni-cmt-bwd-attr-tim name comment attr syntax fmt fsem timing) + "Core generator macro for insns with .b, .w and .d variants\ + and a memory operand." + (begin + (dni-cmt-attr-tim + (.sym name .b-m) + (.str "byte mem " comment) + attr + (.str name ".b " syntax) + (.splice (.unsplice fmt) SIZE_BYTE) + (fsem QI) + timing) + (dni-cmt-attr-tim + (.sym name .w-m) + (.str "word mem " comment) + attr + (.str name ".w " syntax) + (.splice (.unsplice fmt) SIZE_WORD) + (fsem HI) + timing) + (dni-cmt-attr-tim + (.sym name .d-m) + (.str "dword mem " comment) + attr + (.str name ".d " syntax) + (.splice (.unsplice fmt) SIZE_DWORD) + (fsem SI) + timing)) +) + +; Further refinement macros. +(define-pmacro (dni-cmt-bwd-attr name comment attr syntax fmt fsem) + (dni-cmt-bwd-attr-tim name comment attr syntax fmt fsem + (cris-mem-timing)) +) + +(define-pmacro (dni-cmwt-bwd name comment syntax fmt fsem) + (dni-cmt-bwd-attr-tim name comment () syntax fmt fsem + (cris-mem-write-timing)) +) + +(define-pmacro (dni-cmt-bwd name comment syntax fmt fsem) + (dni-cmt-bwd-attr name comment () syntax fmt fsem) +) + +(define-pmacro (dni-cmt-sbw name comment syntax fmt fsem) + "Core generator macro for insns with .b and .w variants\ + and a signed memory operand." + (begin + (dni-cmt-attr + (.sym name .b-m) (.str "byte mem " comment) + () + (.str name ".b " syntax) + (.splice (.unsplice fmt) SIGNED_BYTE) + (fsem QI)) + (dni-cmt-attr + (.sym name .w-m) (.str "word mem " comment) + () + (.str name ".w " syntax) + (.splice (.unsplice fmt) SIGNED_WORD) + (fsem HI))) +) + +(define-pmacro (dni-cmt-ubw name comment syntax fmt fsem) + "Core generator macro for insns with .b and .w variants\ + and an unsigned memory operand." + (begin + (dni-cmt-attr + (.sym name .b-m) (.str "byte mem " comment) + () + (.str name ".b " syntax) + (.splice (.unsplice fmt) UNSIGNED_BYTE) + (fsem QI)) + (dni-cmt-attr + (.sym name .w-m) (.str "word mem " comment) + () + (.str name ".w " syntax) + (.splice (.unsplice fmt) UNSIGNED_WORD) + (fsem HI))) +) + +; CMP.m Rs,Rd [ Rd | 011011mm | Rs ] +(dni-cdt-bwd + cmp-r "compare register to register" + "$Rs,$Rd" + (+ Rd MODE_REGISTER R_CMP Rs) + (.pmacro + (BWD) + (cris-arit6-int + sub BWD (.pmacro (sz regno val) (nop)) 0 + Rd Rs cbit cbit)) +) + +; CMP.m [Rs],Rd [ Rd | 101011mm | Rs ] +; CMP.m [Rs+],Rd [ Rd | 111011mm | Rs ] +(dni-cmt-bwd + cmp-m "compare memory to register" + "[${Rs}${inc}],${Rd}" + (+ INDIR_CMP Rs Rd) + (.pmacro + (BWD) + (cris-arit6-int + sub BWD (.pmacro (sz regno val) (nop)) 0 + Rd (cris-get-mem BWD Rs) cbit cbit)) +) + +; (CMP.m [PC+],Rd [ Rd | 111011mm | 1111 ]) +(dni-c-QI + cmpcbr "cmp constant byte to register" + "cmp.b $sconst8,$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_CMP SIZE_BYTE (f-source 15) sconst8) + (cris-arit6-int + sub QI (.pmacro (sz regno val) (nop)) 0 + Rd (trunc QI sconst8) cbit cbit) +) + +(dni-c-HI + cmpcwr "cmp constant word to register" + "cmp.w $sconst16,$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_CMP SIZE_WORD (f-source 15) sconst16) + (cris-arit6-int + sub HI (.pmacro (sz regno val) (nop)) 0 + Rd (trunc HI sconst16) cbit cbit) +) + +(dni-c-SI + cmpcdr "cmp constant dword to register" + "cmp.d $const32,$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_CMP SIZE_DWORD (f-source 15) const32) + (cris-arit6-int + sub SI (.pmacro (sz regno val) (nop)) 0 + Rd const32 cbit cbit) +) + +; CMPQ i,Rd [ Rd | 001011 | i ] +(dni-cdt + cmpq "cmpq i,Rd" + "cmpq $i,$Rd" + (+ Rd MODE_QUICK_IMMEDIATE Q_CMPQ i) + (cris-arit6-int + sub SI (.pmacro (sz regno val) (nop)) 0 + Rd i cbit cbit) +) + +; CMPS.z [Rs],Rd [ Rd | 1000111z | Rs ] +; CMPS.z [Rs+],Rd [ Rd | 1100111z | Rs ] +(dni-cmt-sbw + cmps-m "cmp sign-extended from memory to register" + "[${Rs}${inc}],$Rd" + (+ Rd INDIR_CMPX Rs) + (.pmacro + (BW) + (cris-arit6-int + sub SI (.pmacro (sz regno val) (nop)) 0 + Rd ((.sym BW -ext) (cris-get-mem BW Rs)) cbit cbit)) +) + +; (CMPS.z [PC+],Rd [ Rd | 1100111z | 1111 ]) +(dni-c-QI + cmpscbr "cmp sign-extended constant byte to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_CMPX SIGNED_BYTE (f-source 15) sconst8) + (cris-arit6-int + sub SI (.pmacro (sz regno val) (nop)) 0 + Rd (ext SI (trunc QI sconst8)) cbit cbit) +) +(dni-c-HI + cmpscwr "cmp sign-extended constant word to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_CMPX SIGNED_WORD (f-source 15) sconst16) + (cris-arit6-int + sub SI (.pmacro (sz regno val) (nop)) 0 + Rd (ext SI (trunc HI sconst16)) cbit cbit) +) + +; CMPU.z [Rs],Rd [ Rd | 1000110z | Rs ] +; CMPU.z [Rs+],Rd [ Rd | 1100110z | Rs ] +(dni-cmt-ubw + cmpu-m "cmp zero-extended from memory to register" + "[${Rs}${inc}],$Rd" + (+ Rd INDIR_CMPX Rs) + (.pmacro + (BW) + (cris-arit6-int + sub SI (.pmacro (sz regno val) (nop)) 0 + Rd ((.sym BW -zext) (cris-get-mem BW Rs)) cbit cbit)) +) + +; (CMPU.z [PC+],Rd [ Rd | 1100110z | 1111 ]) +(dni-c-QI + cmpucbr "cmp zero-extended constant byte to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_CMPX UNSIGNED_BYTE (f-source 15) uconst8) + (cris-arit6-int + sub SI (.pmacro (sz regno val) (nop)) 0 + Rd (zext SI (trunc QI uconst8)) cbit cbit) +) +(dni-c-HI + cmpucwr "cmp zero-extended constant word to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_CMPX UNSIGNED_WORD (f-source 15) uconst16) + (cris-arit6-int + sub SI (.pmacro (sz regno val) (nop)) 0 + Rd (zext SI (trunc HI uconst16)) cbit cbit) +) + +; MOVE.m [Rs],Rd [ Rd | 101001mm | Rs ] +; MOVE.m [Rs+],Rd [ Rd | 111001mm | Rs ] +(dni-cmt-bwd + move-m "move from memory to register" + "[${Rs}${inc}],${Rd}" + (+ INDIR_MOVE_M_R Rs Rd) + (.pmacro + (BWD) + (sequence + ((SI tmp)) + (set tmp (cris-get-mem BWD Rs)) + (set-subreg-gr + BWD + (if SI (andif prefix-set (not inc)) (regno Rs) (regno Rd)) + tmp) + (setf-move BWD tmp))) +) + +; MOVS.z [Rs],Rd [ Rd | 1000011z | Rs ] +; MOVS.z [Rs+],Rd [ Rd | 1100011z | Rs ] +(dni-cmt-sbw + movs-m "movs from memory to register" + "[${Rs}${inc}],${Rd}" + (+ INDIR_MOVX Rs Rd) + (.pmacro + (BW) + (sequence + ((SI tmp)) + (set tmp (ext SI (cris-get-mem BW Rs))) + (if (andif prefix-set (not inc)) + (set Rs tmp) + (set Rd tmp)) + (setf-move SI tmp))) +) + +; MOVU.z [Rs],Rd [ Rd | 1000010z | Rs ] +; MOVU.z [Rs+],Rd [ Rd | 1100010z | Rs ] +(dni-cmt-ubw + movu-m "movu from memory to register" + "[${Rs}${inc}],${Rd}" + (+ INDIR_MOVX Rs Rd) + (.pmacro + (BW) + (sequence + ((SI tmp)) + (set tmp (zext SI (cris-get-mem BW Rs))) + (if (andif prefix-set (not inc)) + (set Rs tmp) + (set Rd tmp)) + (setf-move SI tmp))) +) + +; MOVE Rs,Pd [ Pd | 01100011 | Rs ] +(.splice + begin + (.unsplice + (.map + (.pmacro + (VER) + (dni + (.sym move-r-spr VER) + "Move from general register to special register" + ((MACH (.sym cris VER))) + "move ${Rs},${Pd}" + (+ RFIX_MOVE_R_S MODE_REGISTER SIZE_FIXED Rs Pd) + (sequence + ((SI tmp) (SI rno)) + (set tmp Rs) + (set rno (regno Pd)) + (cond + ; See reg-sr setter for most of the special-register semantics. + ; The sanity check for known read-only registers is for program + ; debug help; the real insn would be harmless and have no effect. + ; CGEN-FIXME: regno of symbolic h-sr names doesn't work here. + ((orif (orif (eq rno 0) (eq rno 1)) (orif (eq rno 4) (eq rno 8))) + (error "move-r-spr: trying to set a read-only special register")) + (else (set Pd tmp))) + (reset-x-p)) + (cris-reg-sr-timing))) + (cris-cpu-models))) +) + +(define-pmacro (dni-cdt-ver-attr name comment fattr syntax fmt fsem) + "Generator for each MACH, using default timing." + (.splice + begin + (.unsplice + (.map + (.pmacro (v) (dni-cdt-attr name comment (fattr v) syntax fmt (fsem v))) + (cris-cpu-models)))) +) + +; MOVE Ps,Rd [ Ps | 01100111 | Rd ] +; Note that in the insn format, the Rd operand is in the Rs field (the +; Rd field by the definition used everywhere else is the Ps position in +; this insn). +; It gets a little weird here because we can't get this insn into a +; define-pmacro unless we make named pmacros for e.g. a separate attr +; function and a semantics function: a .pmacro can't refer to the +; parameters of the outer define-pmacro. (The manual refers to this as +; not implementing "lexical scoping"). +(.splice + begin + (.unsplice + (.map + (.pmacro + (VER) + (dni-cdt-attr + (.sym move-spr-r VER) + "Move from special register to general register" + ((MACH (.sym cris VER))) + "move ${Ps},${Rd-sfield}" + (+ Ps RFIX_MOVE_S_R MODE_REGISTER SIZE_FIXED Rd-sfield) + (sequence + ((SI grno) (SI prno) (SI newval)) + (set prno (regno Ps)) + ; CGEN-FIXME: Can't use the following and then "grno" below because + ; CGEN will emit a "tmp_grno" *also* in decodev32.c:crisv32f_decode + ; (set grno (regno Rd-sfield)) + (set newval Ps) + (.splice + cond + (.unsplice + (.map + (.pmacro + (r) + ((eq prno (.cadr2 r)) + (set-subreg-gr (.car2 r) (regno Rd-sfield) newval))) + ((.sym cris-implemented-readable-specregs- VER)))) + (else (error "move-spr-r from unimplemented register"))) + (reset-x-p)))) + (cris-cpu-models))) +) + +; MOVE Ps,PC [ Ps | 01100111 | 1111 ] +; The move-special-register-to-pc insns are return-type instructions and +; have to be special-cased to get the delay-slot and avoid being indicated +; as invalid. +(dni-cdt-attr + ret-type + "ret-type" + (MACH-PC) + "ret/reti/retb" + (+ Ps MODE_REGISTER RFIX_MOVE_S_R SIZE_FIXED (f-source 15)) + (sequence + ((SI retaddr)) + (set retaddr Ps) + (reset-x-p) + (delay 1 (set pc retaddr))) +) + +; MOVE [Rs],Pd [ Pd | 10100011 | Rs ] +; MOVE [Rs+],Pd [ Pd | 11100011 | Rs ] +; We make variants that loads constants or memory for each MACH version, +; since each consider some subset of the "special registers" to have +; different sizes. FIXME: Should be able to simplify this. +(.splice + begin + (.unsplice + (.map + (.pmacro + (VER) + (dni + (.sym move-m-spr VER) + "Move from memory to special register" + ((MACH (.sym cris VER))) + "move [${Rs}${inc}],${Pd}" + (+ Pd INFIX_MOVE_M_S MODEMEMP_YES inc SIZE_FIXED Rs) + (sequence + ((SI rno) (SI newval)) + (set rno (regno Pd)) + (.splice + cond + ; No sanity check for constant special register here, since the + ; memory read side-effect or post-increment may be the goal, or + ; for pre-v32 a prefix assignment side-effect. + (.unsplice + (.map + (.pmacro + (r) + ((eq rno (.cadr2 r)) + (set newval ((.sym (.car2 r) -ext) (cris-get-mem (.car2 r) Rs))))) + ((.sym cris-implemented-writable-specregs- VER)))) + (else (error "Trying to set unimplemented special register"))) + (set Pd newval) + (reset-x-p)) + (cris-mem-sr-timing))) + (cris-cpu-models))) +) + +(define-pmacro QI-operand sconst8) +(define-pmacro HI-operand sconst16) +(define-pmacro SI-operand const32) + +(define-pmacro + (cris-move-c-spr VER VERFN) + "Generator for loading constant into special register" + (.splice + begin + (.unsplice + (.map + (.pmacro + (srdef v) + (dni + (.sym move-c-spr v -p (.cadr2 srdef)) + (.str "Move constant to special register p" (.cadr2 srdef)) + ((MACH (.sym cris v))) + (.str "move ${" (.sym (.car2 srdef) -operand) "},${Pd}") + ; We use Pd in semantics without naming it in the format (which + ; would CGEN-FIXME: cause a CGEN error for some reason, likely + ; related to specifying an insn field multiple times). This + ; currently works and is guarded with test-cases (specifically + ; wrt. the timing model) but may need to be tweaked in the future. + ; Note that using instead (ifield f-dest) causes incorrect timing + ; model to be generated; the timing model requires that Pd is set. + (+ (f-dest (.cadr2 srdef)) MODE_AUTOINCREMENT INFIX_MOVE_M_S SIZE_FIXED + (f-source 15) (.sym (.car2 srdef) -operand)) + (sequence + () + (set Pd (.sym (.car2 srdef) -operand)) ; (reg h-sr (.cadr2 srdef)) + (reset-x-p)) + ((.sym cris-timing-const-sr- (.car2 srdef))))) + ((.sym cris-implemented-specregs-const- VER)) + (.map VERFN ((.sym cris-implemented-specregs-const- VER)))))) +) + +; CGEN-FIXME: +; Unfortunately we can't iterate over the list of models due to the +; problem with referring to the parameters of a surrounding pmacro from +; within an enclosed .pmacro (perhaps related to "lexical scoping"). +; We get e.g. 'insn already defined:: (move-c-sprvn-p0)' with this: +;(.splice +; begin (.unsplice (.map (.pmacro (vn) (cris-move-c-spr vn (.pmacro (x) vn))) +; (cris-cpu-models))) +;) +(cris-move-c-spr v0 (.pmacro (x) v0)) +(cris-move-c-spr v3 (.pmacro (x) v3)) +(cris-move-c-spr v8 (.pmacro (x) v8)) +(cris-move-c-spr v10 (.pmacro (x) v10)) +(cris-move-c-spr v32 (.pmacro (x) v32)) + +; MOVE Ps,[Rd] [ Ps | 10100111 | Rd ] +; MOVE Ps,[Rd+] [ Ps | 11100111 | Rd ] +(.splice + begin + (.unsplice + (.map + (.pmacro + (VER) + (dni-cmwt-attr + (.sym move-spr-m VER) + "Move from special register to memory" + ((MACH (.sym cris VER))) + "move ${Ps},[${Rd-sfield}${inc}]" + (+ INFIX_MOVE_S_M SIZE_FIXED Rd-sfield Ps) + (sequence + ((SI rno)) + (set rno (regno Ps)) + (.splice + cond + (.unsplice + (.map + (.pmacro + (r) + ((eq rno (.cadr2 r)) + (cris-set-mem (.car2 r) Rd-sfield Ps))) + ((.sym cris-implemented-readable-specregs- VER)))) + (else (error "write from unimplemented special register"))) + (reset-x-p)))) + (cris-cpu-models))) +) + +; SBFS [Rs(+)] +; Instruction format: |0 0 1 1 1 m 1 1 0 1 1 1| Dest. | +(dni-cdt-attr + sbfs + "sbfs" + ((MACH crisv10)) + "sbfs [${Rd-sfield}${inc}]" + (+ (f-dest 3) INFIX_SBFS SIZE_FIXED MODEMEMP_YES inc Rd-sfield) + (error "SBFS isn't implemented") +) + +; MOVE Ss,Rd [ Ss | 11110111 | Rd ] +(dni-cdt-attr + move-ss-r + "move from support register to general register" + (MACH-V32) + "move ${Ss},${Rd-sfield}" + (+ Ss INFIX_MOVE_SS SIZE_FIXED (f-mode 3) Rd-sfield) + (sequence + () + (set Rd-sfield Ss) + (reset-x-p)) +) + +; MOVE Rs,Sd [ Sd | 10110111 | Rs ] +(dni-cdt-attr + move-r-ss + "move from general register to support register" + (MACH-V32) + "move ${Rs},${Sd}" + (+ Sd INFIX_MOVE_SS SIZE_FIXED (f-mode 2) Rs) + (sequence + () + (set Sd Rs) + (reset-x-p)) +) + +; MOVEM Rs,[Rd] [ Rs | 10111111 | Rd ] +; MOVEM Rs,[Rd+] [ Rs | 11111111 | Rd ] + +(define-pmacro (movem-to-mem-step regn) + ; Without the SI attribute, UINT is generated, which isn't supported by + ; the sim framework. + (if (ge SI (regno Rs-dfield) regn) + (sequence + ((SI tmp)) + (set tmp (reg h-gr regn)) + (set (mem SI addr) tmp) + (set addr (add addr 4)))) +) + +(dni + movem-r-m + "movem to memory" + (MACH-PRE-V32) + "movem ${Rs-dfield},[${Rd-sfield}${inc}]" + (+ INFIX_MOVEM_R_M MODEMEMP_YES inc SIZE_FIXED Rs-dfield Rd-sfield) + (sequence + ((SI addr) (BI postinc)) + ; FIXME: A copy of what's in cris-get-mem. + + ; Cache the incrementness of the operand. + (set postinc inc) + + ; CGEN-FIXME: Kludge to work around a CGEN bug: it doesn't see that + ; Rs-dfield is used as an input, causing the timing model to be wrong. + (sequence ((SI dummy)) (set dummy Rs-dfield)) + + ; Get the address from somewhere. If the insn was prefixed, it's in + ; the prefix-register. + (set addr + (if SI (eq prefix-set 0) + Rd-sfield + prefixreg)) + + (.splice + sequence () + (.unsplice (.map movem-to-mem-step (.iota 16 15 -1)))) + + ; Update the source-register for post-increments. + (if (ne postinc 0) + (set Rd-sfield + (if SI (eq prefix-set 0) addr prefixreg))) + (reset-x-p)) + (simplecris-movem-timing) +) + +(dni + movem-r-m-v32 + "movem to memory" + (MACH-V32) + "movem ${Rs-dfield},[${Rd-sfield}${inc}]" + (+ INFIX_MOVEM_R_M MODEMEMP_YES inc SIZE_FIXED Rs-dfield Rd-sfield) + (sequence + ((SI addr) (BI postinc)) + ; FIXME: Mostly a copy of what's in cris-get-mem. + + ; Cache the incrementness of the operand. + (set postinc inc) + + ; CGEN-FIXME: See movem-r-m. + (sequence ((SI dummy)) (set dummy Rs-dfield)) + + (set addr Rd-sfield) + + (.splice + sequence () + (.unsplice (.map movem-to-mem-step (.iota 16)))) + + ; Update the source-register for post-increments. + (if (ne postinc 0) + (set Rd-sfield addr)) + (reset-x-p)) + ; Unit u-mem must be specified before the u-movem-* for memory address + ; register stall count to be right. + ((crisv32 (unit u-mem) (unit u-movem-rtom) (unit u-exec-movem) + (unit u-mem-w))) +) + +; MOVEM [Rs],Rd [ Rd | 10111011 | Rs ] +; MOVEM [Rs+],Rd [ Rd | 11111011 | Rs ] + +(define-pmacro + (movem-to-reg-step regn) + ; Without the SI attribute, UINT is generated, which isn't supported by + ; the sim framework. + (if (ge SI (regno Rd) regn) + (sequence + ((SI tmp)) + (set tmp (mem SI addr)) + (set (reg h-gr regn) tmp) + (set addr (add addr 4)))) +) + +(dni + movem-m-r + "movem to register" + (MACH-PRE-V32) + "movem [${Rs}${inc}],${Rd}" + (+ Rd INFIX_MOVEM_M_R MODEMEMP_YES inc SIZE_FIXED Rs) + (sequence + ((SI addr) (BI postinc)) + ; FIXME: Mostly a copy of what's in cris-get-mem. + + ; Cache the incrementness of the operand. + (set postinc inc) + + ; Get the address from somewhere. If the insn was prefixed, it's in + ; the prefix-register. + (set addr + (if SI (eq prefix-set 0) + Rs + prefixreg)) + + ; CGEN-FIXME: See movem-r-m. + (sequence ((SI dummy)) (set dummy Rd)) + + (.splice + sequence () + ; The first movem step is left out because it can't happen; it's for + ; PC destination. See the pattern below. + (.unsplice (.map movem-to-reg-step (.iota 15 14 -1)))) + + ; Update the source-register for post-increments. + ; FIXME: No postinc-prefixed for v0 IIRC. + (if (ne postinc 0) + (set Rs (if SI (eq prefix-set 0) addr prefixreg))) + (reset-x-p)) + (simplecris-movem-timing) +) + +; (MOVEM [Rs],PC [ 1111 | 10111011 | Rs ]) +; (MOVEM [Rs+],PC [ 1111 | 11111011 | Rs ]) +; We have to special-case it for PC destination; used in longjump. +; We shouldn't *have* to special-case it; the main reason is (FIXME:) +; misgeneration of the simulator when the PC case is folded into the +; generic PRE-V32 movem; possibly related to then being a COND-CTI rather +; than an UNCOND-CTI. +(dni-cmt-attr + movem-m-pc + "movem to register, ending with PC" + (MACH-PRE-V32) + "movem [${Rs}${inc}],${Rd}" + (+ (f-dest 15) INFIX_MOVEM_M_R SIZE_FIXED Rs) + (sequence + ((SI addr) (BI postinc)) + ; FIXME: Mostly a copy of what's in cris-get-mem. + + ; Cache the incrementness of the operand. + (set postinc inc) + + ; Get the address from somewhere. If the insn was prefixed, it's in + ; the prefix-register. + (set addr + (if SI (eq prefix-set 0) + Rs + prefixreg)) + + ; FIXME: Add kludge here too *and* a test-case. + + (.splice + sequence () + ; The first movem step is for PC destination, used in longjmp. + (set pc (mem SI addr)) + (set addr (add addr 4)) + (.unsplice + (.map + (.pmacro + (regn) + (sequence + ((SI tmp)) + (set tmp (mem SI addr)) + (set (reg h-gr regn) tmp) + (set addr (add addr 4)))) + (.iota 15 14 -1)))) + + ; Update the source-register for post-increments. + ; FIXME: No postinc-prefixed for v0. + (if (ne postinc 0) + (set Rs (if SI (eq prefix-set 0) addr prefixreg))) + (reset-x-p)) +) + +(dni + movem-m-r-v32 + "movem to register" + (MACH-V32) + "movem [${Rs}${inc}],${Rd}" + (+ INFIX_MOVEM_M_R MODEMEMP_YES inc SIZE_FIXED Rs Rd) + (sequence + ((SI addr) (BI postinc)) + ; FIXME: A copy of what's in cris-get-mem + + ; Cache the incrementness of the operand. + (set postinc inc) + + ; Get the address from somewhere. + (set addr Rs) + + ; CGEN-FIXME: See movem-r-m. + (sequence ((SI dummy)) (set dummy Rd)) + + (.splice + sequence () + (.unsplice (.map movem-to-reg-step (.iota 16)))) + + ; Update the source-register for post-increments. + ; FIXME: No postinc-prefixed for v0 IIRC. + (if (ne postinc 0) + (set Rs addr)) + (reset-x-p)) + ; u-mem must be specified before the u-movem-* for memory source + ; register stall count to be right. + ((crisv32 (unit u-mem) (unit u-mem-r) (unit u-movem-mtor) + (unit u-exec-movem))) +) + +; ADD.m Rs,Rd [ Rd | 011000mm | Rs ] +(dni-cdt-bwd + add "add from register to register" + "$Rs,$Rd" + (+ Rd MODE_REGISTER R_ADD Rs) + (.pmacro (BWD) (cris-arit add BWD Rd Rs)) +) + +; ADD.m [Rs],Rd [ Rd | 101000mm | Rs ] +; ADD.m [Rs+],Rd [ Rd | 111000mm | Rs ] +(dni-cmt-bwd + add-m "add from memory to register" + "[${Rs}${inc}],${Rd}" + (+ INDIR_ADD Rs Rd) + (.pmacro (BWD) (cris-arit-3op add BWD Rd (cris-get-mem BWD Rs) Rs)) +) +; (ADD.m [PC+],Rd [ Rd | 111000mm | 1111 ]) +(dni-c-QI + addcbr "add constant byte to register" + "add.b ${sconst8}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_ADD SIZE_BYTE (f-source 15) sconst8) + (cris-arit add QI Rd sconst8) +) + +(dni-c-HI + addcwr "add constant word to register" + "add.w ${sconst16}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_ADD SIZE_WORD (f-source 15) sconst16) + (cris-arit add HI Rd sconst16) +) + +(dni-c-SI + addcdr "add constant dword to register" + "add.d ${const32}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_ADD SIZE_DWORD (f-source 15) const32) + (cris-arit add SI Rd const32) +) + +; (ADD.D [PC+],PC [ 1111 | 11100010 | 1111 ]) +; This insn is used for DSO-local jumps in PIC code. +(dni + addcpc "Relative jump by adding constant to PC" + (MACH-PC) + "add.d ${sconst32},PC" + (+ (f-dest 15) MODE_AUTOINCREMENT INDIR_ADD SIZE_DWORD (f-source 15) const32) + (sequence + ((SI newpc) (SI oldpc) (SI offs)) + (set offs const32) + (set oldpc (add SI pc 6)) + (set newpc (add SI oldpc offs)) + (set pc newpc) + (setf-arit SI add oldpc offs newpc cbit)) + (simplecris-common-timing ((unit u-const32) (unit u-stall) (unit u-exec))) +) + +; ADDS.z Rs,Rd [ Rd | 0100001z | Rs ] +(dni-cdt-sbw + adds "add sign-extended from register to register" + "$Rs,$Rd" + (+ Rd MODE_REGISTER R_ADDX Rs) + (.pmacro (BW) (cris-arit add SI Rd ((.sym BW -ext) (trunc BW Rs)))) +) + +; ADDS.z [Rs],Rd [ Rd | 1000001z | Rs ] +; ADDS.z [Rs+],Rd [ Rd | 1100001z | Rs ] +(dni-cmt-sbw + adds-m "add sign-extended from memory to register" + "[${Rs}${inc}],$Rd" + (+ Rd INDIR_ADDX Rs) + (.pmacro (BW) (cris-arit-3op add SI Rd ((.sym BW -ext) (cris-get-mem BW Rs)) Rs)) +) + +; (ADDS.z [PC+],Rd [ Rd | 1100001z | 1111 ]) +(dni-c-QI + addscbr "add sign-extended constant byte to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_ADDX SIGNED_BYTE (f-source 15) sconst8) + (cris-arit add SI Rd (ext SI (trunc QI sconst8))) +) +(dni-c-HI + addscwr "add sign-extended constant word to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_ADDX SIGNED_WORD (f-source 15) sconst16) + (cris-arit add SI Rd (ext SI (trunc HI sconst16))) +) + +; (ADDS.w [],PC [ 1111 | 10000011 | 1111 ]) +; For a PC destination, we support only the two-operand case +; (dest == src), which is used in switch/case statements. +; FIXME: Should implement ADD.D [PC],PC and ADDS.B [PC],PC for use if/when +; implementing CASE_VECTOR_SHORTEN_MODE. +(dni + addspcpc "add sign-extended prefixed arg to PC" + (MACH-PC) + "adds.w [PC],PC" + (+ (f-dest 15) MODE_INDIRECT INDIR_ADDX SIGNED_WORD (f-source 15)) + (sequence + ((SI newpc) (SI oldpc) (HI offs)) + (if (not prefix-set) + (error "Unexpected adds.w [PC],PC without prefix")) + ; We don't use cris-get-mem but instead special-case this one, since we + ; have most instruction fields fixed where cris-get-mem expects + ; field-parametrization by certain names. + (set offs (mem HI prefixreg)) + (set oldpc (add SI pc 2)) + (set newpc (add SI oldpc offs)) + (set pc newpc) + (setf-arit SI add oldpc (ext SI offs) newpc cbit)) + (simplecris-common-timing ((unit u-mem) (unit u-stall) (unit u-exec))) +) + +; ADDU.z Rs,Rd [ Rd | 0100000z | Rs ] +(dni-cdt-ubw + addu "add zero-extended from register to register" + "$Rs,$Rd" + (+ Rd MODE_REGISTER R_ADDX Rs) + (.pmacro (BW) (cris-arit add SI Rd ((.sym BW -zext) (trunc BW Rs)))) +) + +; ADDU.z [Rs],Rd [ Rd | 1000000z | Rs ] +; ADDU.z [Rs+],Rd [ Rd | 1100000z | Rs ] +(dni-cmt-ubw + addu-m "add zero-extended from memory to register" + "[${Rs}${inc}],$Rd" + (+ Rd INDIR_ADDX Rs) + (.pmacro (BW) + (cris-arit-3op add SI Rd ((.sym BW -zext) (cris-get-mem BW Rs)) Rs)) +) + +; (ADDU.z [PC+],Rd [ Rd | 1100000z | 1111 ]) +(dni-c-QI + adducbr "add zero-extended constant byte to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_ADDX UNSIGNED_BYTE (f-source 15) sconst8) + (cris-arit add SI Rd (zext SI (trunc QI sconst8))) +) +(dni-c-HI + adducwr "add zero-extended constant word to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_ADDX UNSIGNED_WORD (f-source 15) sconst16) + (cris-arit add SI Rd (zext SI (trunc HI sconst16))) +) + +; SUB.m Rs,Rd [ Rd | 011010mm | Rs ] +(dni-cdt-bwd + sub "subtract from register to register" + "$Rs,$Rd" + (+ Rd MODE_REGISTER R_SUB Rs) + (.pmacro (BWD) (cris-arit sub BWD Rd Rs)) +) + +; SUB.m [Rs],Rd [ Rd | 101010mm | Rs ] +; SUB.m [Rs+],Rd [ Rd | 111010mm | Rs ] +(dni-cmt-bwd + sub-m "subtract from memory to register" + "[${Rs}${inc}],${Rd}" + (+ INDIR_SUB Rs Rd) + (.pmacro (BWD) (cris-arit-3op sub BWD Rd (cris-get-mem BWD Rs) Rs)) +) + +; (SUB.m [PC+],Rd [ Rd | 111010mm | 1111 ] +(dni-c-QI + subcbr "subtract constant byte from register" + "sub.b ${sconst8}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_SUB SIZE_BYTE (f-source 15) sconst8) + (cris-arit sub QI Rd sconst8) +) + +(dni-c-HI + subcwr "subtract constant word from register" + "sub.w ${sconst16}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_SUB SIZE_WORD (f-source 15) sconst16) + (cris-arit sub HI Rd sconst16) +) + +(dni-c-SI + subcdr "subtract constant dword from register" + "sub.d ${const32}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_SUB SIZE_DWORD (f-source 15) const32) + (cris-arit sub SI Rd const32) +) + +; SUBS.z Rs,Rd [ Rd | 0100101z | Rs ] +(dni-cdt-sbw + subs "sub sign-extended from register to register" + "$Rs,$Rd" + (+ Rd MODE_REGISTER R_SUBX Rs) + (.pmacro (BW) (cris-arit sub SI Rd ((.sym BW -ext) (trunc BW Rs)))) +) + +; SUBS.z [Rs],Rd [ Rd | 1000101z | Rs ] +; SUBS.z [Rs+],Rd [ Rd | 1100101z | Rs ] +(dni-cmt-sbw + subs-m "sub sign-extended from memory to register" + "[${Rs}${inc}],$Rd" + (+ Rd INDIR_SUBX Rs) + (.pmacro (BW) + (cris-arit-3op sub SI Rd ((.sym BW -ext) (cris-get-mem BW Rs)) Rs)) +) + +; (SUBS.z [PC+],Rd [ Rd | 1100101z | 1111 ]) +(dni-c-QI + subscbr "sub sign-extended constant byte to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_SUBX SIGNED_BYTE (f-source 15) sconst8) + (cris-arit sub SI Rd (ext SI (trunc QI sconst8))) +) +(dni-c-HI + subscwr "sub sign-extended constant word to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_SUBX SIGNED_WORD (f-source 15) sconst16) + (cris-arit sub SI Rd (ext SI (trunc HI sconst16))) +) + +; SUBU.z Rs,Rd [ Rd | 0100100z | Rs ] +(dni-cdt-ubw + subu "sub zero-extended from register to register" + "$Rs,$Rd" + (+ Rd MODE_REGISTER R_SUBX Rs) + (.pmacro (BW) (cris-arit sub SI Rd ((.sym BW -zext) (trunc BW Rs)))) +) + +; SUBU.z [Rs],Rd [ Rd | 1000100z | Rs ] +; SUBU.z [Rs+],Rd [ Rd | 1100100z | Rs ] +(dni-cmt-ubw + subu-m "sub zero-extended from memory to register" + "[${Rs}${inc}],$Rd" + (+ Rd INDIR_SUBX Rs) + (.pmacro (BW) + (cris-arit-3op sub SI Rd ((.sym BW -zext) (cris-get-mem BW Rs)) Rs)) +) + +; (SUBU.z [PC+],Rd [ Rd | 1100100z | 1111 ]) +(dni-c-QI + subucbr "sub zero-extended constant byte to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_SUBX UNSIGNED_BYTE (f-source 15) sconst8) + (cris-arit sub SI Rd (zext SI (trunc QI sconst8))) +) +(dni-c-HI + subucwr "sub zero-extended constant word to register" + "[${Rs}${inc}],$Rd" + (+ Rd MODE_AUTOINCREMENT INDIR_SUBX UNSIGNED_WORD (f-source 15) sconst16) + (cris-arit sub SI Rd (zext SI (trunc HI sconst16))) +) + +; ADDC Rs,Rd [ Rd | 01010111 | Rs ] +(dni-cdt-attr + addc-r "addc from register to register" + (MACH-V32) + "addc $Rs,$Rd" + (+ Rd MODE_REGISTER RFIX_ADDC SIZE_FIXED Rs) + ; Since this is equivalent to "ax" plus "add.d Rs,Rd", we'll just do + ; that, semantically. + (sequence + () + (set-quiet xbit 1) + (cris-arit add SI Rd Rs)) +) + +; ADDC [Rs],Rd [ Rd | 10011010 | Rs ] +; ADDC [Rs+],Rd [ Rd | 11011010 | Rs ] +(dni-cmt-attr + addc-m "addc from memory to register" + (MACH-V32) + "addc [${Rs}${inc}],${Rd}" + (+ Rd INDIR_ADDC SIZE_DWORD Rs) + (sequence + () + (set-quiet xbit 1) + (cris-arit add SI Rd (cris-get-mem SI Rs))) +) + +; (ADDC [Rs+],Rd [ Rd | 11011010 | 1111 ]) +(dni-c-SI-attr + addc-c "addc constant to register" + (MACH-V32) + "addc ${const32},${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_ADDC SIZE_DWORD (f-source 15) const32) + (sequence + () + (set-quiet xbit 1) + (cris-arit add SI Rd const32)) +) + +; LAPC [PC+],Rd [ Rd | 11010111 1111 ] +(dni-c-SI-attr + lapc-d "lapc.d" + (MACH-V32) + "lapc.d ${const32-pcrel},${Rd}" + (+ Rd MODE_AUTOINCREMENT INFIX_LAPC SIZE_FIXED (f-source 15) const32-pcrel) + (sequence + () + (set Rd const32-pcrel) + (reset-x-p)) +) + +; LAPCQ qo,Rd [ Rd | 10010111 | qo ] +(dni-cdt-attr + lapcq "lapcq" + (MACH-V32) + "lapcq ${qo},${Rd}" + (+ Rd MODE_INDIRECT INFIX_LAPC SIZE_FIXED qo) + (sequence + () + (set Rd qo) + (reset-x-p)) +) + +; ADDI Rs.m,Rd [ Rs | 010100mm | Rd ] +(dni-cdt-bwd + addi "addi" + "${Rs-dfield}.m,${Rd-sfield}" + (+ Rd-sfield MODE_REGISTER R_ADDI Rs-dfield) + (.pmacro + (BWD) + (sequence + () + (set Rd-sfield (add SI Rd-sfield (mul Rs-dfield (.sym BWD -size)))) + (reset-x-p))) +) + +; NEG.m Rs,Rd [ Rd | 010110mm | Rs ] +(dni-cdt-bwd + neg "neg.m Rs,Rd" + "$Rs,$Rd" + (+ Rd MODE_REGISTER R_NEG Rs) + (.pmacro (BWD) (cris-arit3 sub BWD Rd 0 Rs)) +) + +; TEST.m [Rs] [ 0000101110mm | Rs ] +; TEST.m [Rs+] [ 0000111110mm | Rs ] +(dni-cmt-bwd + test-m "test.m [Rs(+)]" + "[${Rs}${inc}]" + (+ (f-dest 0) INDIR_TEST Rs) + (.pmacro + (BWD) + (sequence + ((BWD tmpd)) + (set tmpd (cris-get-mem BWD Rs)) + ; This is supposed to be the same result as for cmpq 0,X, hence same code. + (cris-arit6-int + sub BWD (.pmacro (sz regno val) (nop)) 0 tmpd 0 cbit cbit))) +) + +; MOVE.m Rs,[Rd] [ Rs | 101111mm | Rd ] +; MOVE.m Rs,[Rd+] [ Rs | 111111mm | Rd ] + +(dni-cmwt-bwd + move-r-m "move.m R,[]" + "${Rs-dfield},[${Rd-sfield}${inc}]" + (+ Rs-dfield INDIR_MOVE_R_M Rd-sfield) + (.pmacro + (BWD) + (sequence + ((BWD tmpd)) + (set tmpd Rs-dfield) + (cris-set-mem BWD Rd-sfield tmpd) + (reset-x-p))) +) + +; MULS.m Rs,Rd [ Rd | 110100mm | Rs ] +(dni-bwd-attr + muls "muls.m Rs,Rd" + ((MACH crisv10,crisv32)) + "$Rs,$Rd" + (+ Rd MODE_MULS INDIR_MUL Rs) + (.pmacro + (BWD) + (sequence + ((DI src1) (DI src2) (DI tmpr)) + (set src1 (ext DI (trunc BWD Rs))) + (set src2 (ext DI (trunc BWD Rd))) + (set tmpr (mul src1 src2)) + (set Rd (trunc SI tmpr)) + (set mof (trunc SI (srl tmpr 32))) + (setf-arit DI muls src1 src2 tmpr cbit))) + ((crisv10 (unit u-multiply) (unit u-exec)) + (crisv32 (unit u-multiply) (unit u-exec))) +) + +; MULU.m Rs,Rd [ Rd | 100100mm | Rs ] +(dni-bwd-attr + mulu "mulu.m Rs,Rd" + ((MACH crisv10,crisv32)) + "$Rs,$Rd" + (+ Rd MODE_MULU INDIR_MUL Rs) + (.pmacro + (BWD) + (sequence + ((DI src1) (DI src2) (DI tmpr)) + (set src1 (zext DI (trunc BWD Rs))) + (set src2 (zext DI (trunc BWD Rd))) + (set tmpr (mul src1 src2)) + (set Rd (trunc SI tmpr)) + (set mof (trunc SI (srl tmpr 32))) + (setf-arit DI mulu src1 src2 tmpr cbit))) + ((crisv10 (unit u-multiply) (unit u-exec)) + (crisv32 (unit u-multiply) (unit u-exec))) +) + +; MCP Ps,Rd [ Ps | 01111111 | Rd ] +(dni-cdt-attr + mcp "Multiply Carry Propagation" + (MACH-V32) + "mcp $Ps,$Rd" + (+ Ps MODE_REGISTER RFIX_MCP SIZE_FIXED Rd-sfield) + (sequence + () + (set-quiet xbit 1) + (set-quiet zbit 1) + (cris-arit5 add SI Rd-sfield Rd-sfield Ps rbit rbit)) +) + +; MSTEP Rs,Rd [ Rd | 01111111 | Rs ] +(dni-cdt-attr + mstep "Multiply step" + (MACH-PRE-V32) + "mstep $Rs,$Rd" + (+ Rd MODE_REGISTER RFIX_MSTEP SIZE_FIXED Rs) + (sequence + ((SI tmpd) (SI tmps)) + (set tmps Rs) + (set tmpd (add (sll Rd 1) (if SI nbit tmps 0))) + (set Rd tmpd) + (setf-move SI tmpd)) +) + +; DSTEP Rs,Rd [ Rd | 01101111 | Rs ] +(dni-cdt + dstep "Division step" + "dstep $Rs,$Rd" + (+ Rd MODE_REGISTER RFIX_DSTEP SIZE_FIXED Rs) + (sequence + ((SI tmp) (SI tmps) (SI tmpd)) + (set tmps Rs) + (set tmp (sll Rd 1)) + (set tmpd (if SI (geu tmp tmps) (sub tmp tmps) tmp)) + (set Rd tmpd) + (setf-move SI tmpd)) +) + +; ABS Rs,Rd [ Rd | 01101011 | Rs ] +(dni-cdt + abs "Absolut Instruction" + "abs $Rs,$Rd" + (+ Rd MODE_REGISTER RFIX_ABS SIZE_FIXED Rs) + (sequence + ((SI tmpd)) + (set tmpd (abs Rs)) + (set Rd tmpd) + (setf-move SI tmpd)) +) + +; AND.m Rs,Rd [ Rd | 011100mm | Rs ] +(dni-cdt-bwd + and "And from register to register" + "$Rs,$Rd" + (+ Rd MODE_REGISTER R_AND Rs) + (.pmacro + (BWD) + (sequence + ((BWD tmpd)) + (set tmpd (and BWD Rd Rs)) + (set-subreg-gr BWD (regno Rd) tmpd) + (setf-move BWD tmpd))) +) + +; AND.m [Rs],Rd [ Rd | 101100mm | Rs ] +; AND.m [Rs+],Rd [ Rd | 111100mm | Rs ] +(dni-cmt-bwd + and-m "And from memory to register" + "[${Rs}${inc}],${Rd}" + (+ INDIR_AND Rs Rd) + (.pmacro + (BWD) + (sequence + ((BWD tmpd)) + (set tmpd (and BWD Rd (cris-get-mem BWD Rs))) + (set-subreg-gr + BWD + (if SI (andif prefix-set (not inc)) (regno Rs) (regno Rd)) + tmpd) + (setf-move BWD tmpd))) +) + +; (AND.m [PC+],Rd [ Rd | 111100mm | 1111 ]) +(dni-c-QI + andcbr "And constant byte to register" + "and.b ${sconst8}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_AND SIZE_BYTE (f-source 15) sconst8) + (sequence + ((QI tmpd)) + (set tmpd (and QI Rd sconst8)) + (set-subreg-gr QI (regno Rd) tmpd) + (setf-move QI tmpd)) +) + +(dni-c-HI + andcwr "And constant word to register" + "and.w ${sconst16}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_AND SIZE_WORD (f-source 15) sconst16) + (sequence + ((HI tmpd)) + (set tmpd (and HI Rd sconst16)) + (set-subreg-gr HI (regno Rd) tmpd) + (setf-move HI tmpd)) +) + +(dni-c-SI + andcdr "And constant dword to register" + "and.d ${const32}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_AND SIZE_DWORD (f-source 15) const32) + (sequence + ((SI tmpd)) + (set tmpd (and SI Rd const32)) + (set-subreg-gr SI (regno Rd) tmpd) + (setf-move SI tmpd)) +) + +; ANDQ i,Rd [ Rd | 001100 | i ] +(dni-cdt + andq "And quick-immediate to register" + "andq $i,$Rd" + (+ Rd MODE_QUICK_IMMEDIATE Q_ANDQ i) + (sequence + ((SI tmpd)) + (set tmpd (and SI Rd i)) + (set-subreg-gr SI (regno Rd) tmpd) + (setf-move SI tmpd)) +) + +; OR.m Rs,Rd [ Rd | 011101mm | Rs ] +(dni-cdt-bwd + orr "Or from register to register" + "$Rs,$Rd" + (+ Rd MODE_REGISTER R_OR Rs) + (.pmacro + (BWD) + (sequence + ((BWD tmpd)) + (set tmpd (or BWD Rd Rs)) + (set-subreg-gr BWD (regno Rd) tmpd) + (setf-move BWD tmpd))) +) + +; OR.m [Rs],Rd [ Rd | 101101mm | Rs ] +; OR.m [Rs+],Rd [ Rd | 111101mm | Rs ] +(dni-cmt-bwd + or-m "Or from memory to register" + "[${Rs}${inc}],${Rd}" + (+ INDIR_OR Rs Rd) + (.pmacro + (BWD) + (sequence + ((BWD tmpd)) + (set tmpd (or BWD Rd (cris-get-mem BWD Rs))) + (set-subreg-gr + BWD + (if SI (andif prefix-set (not inc)) (regno Rs) (regno Rd)) + tmpd) + (setf-move BWD tmpd))) +) + +; (OR.m [PC+],Rd [ Rd | 111101mm | 1111 ]) +(dni-c-QI + orcbr "Or constant byte to register" + "or.b ${sconst8}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_OR SIZE_BYTE (f-source 15) sconst8) + (sequence + ((QI tmpd)) + (set tmpd (or QI Rd sconst8)) + (set-subreg-gr QI (regno Rd) tmpd) + (setf-move QI tmpd)) +) + +(dni-c-HI + orcwr "Or constant word to register" + "or.w ${sconst16}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_OR SIZE_WORD (f-source 15) sconst16) + (sequence + ((HI tmpd)) + (set tmpd (or HI Rd sconst16)) + (set-subreg-gr HI (regno Rd) tmpd) + (setf-move HI tmpd)) +) + +(dni-c-SI + orcdr "Or constant dword to register" + "or.d ${const32}],${Rd}" + (+ Rd MODE_AUTOINCREMENT INDIR_OR SIZE_DWORD (f-source 15) const32) + (sequence + ((SI tmpd)) + (set tmpd (or SI Rd const32)) + (set-subreg-gr SI (regno Rd) tmpd) + (setf-move SI tmpd)) +) + +; ORQ i,Rd [ Rd | 001101 | i ] +(dni-cdt + orq "Or quick-immediate to register" + "orq $i,$Rd" + (+ Rd MODE_QUICK_IMMEDIATE Q_ORQ i) + (sequence + ((SI tmpd)) + (set tmpd (or SI Rd i)) + (set-subreg-gr SI (regno Rd) tmpd) + (setf-move SI tmpd)) +) + +; XOR Rs,Rd [ Rd | 01111011 | Rs ] +(dni-cdt + xor "Xor from register to register" + "xor $Rs,$Rd" + (+ Rd MODE_REGISTER RFIX_XOR SIZE_FIXED Rs) + (sequence + ((SI tmpd)) + (set tmpd (xor SI Rd Rs)) + (set Rd tmpd) + (setf-move SI tmpd)) +) + +(define-pmacro (swap-r x) + "Perform bit-wise swap within each byte" + (sequence + SI + ((SI tmpr)) + (set tmpr x) + (or (sll (and tmpr #x1010101) 7) + (or (sll (and tmpr #x2020202) 5) + (or (sll (and tmpr #x4040404) 3) + (or (sll (and tmpr #x8080808) 1) + (or (srl (and tmpr #x10101010) 1) + (or (srl (and tmpr #x20202020) 3) + (or (srl (and tmpr #x40404040) 5) + (srl (and tmpr #x80808080) 7))))))))) +) + +(define-pmacro (swap-b x) + "Perform byte-wise swap within each word" + (sequence + SI + ((SI tmpb)) + (set tmpb x) + (or (and (sll tmpb 8) #xff00ff00) + (and (srl tmpb 8) #xff00ff))) +) + +(define-pmacro (swap-w x) + "Perform word-wise swap within each dword" + (sequence + SI + ((SI tmpb)) + (set tmpb x) + (or (and (sll tmpb 16) #xffff0000) + (and (srl tmpb 16) #xffff))) +) + +(define-pmacro (swap-_ x) + "Do nothing swap-wise" + (error SI "SWAP without swap modifier isn't implemented") +) + +(define-pmacro (swap-n x) + "Perform bitwise not (that is, perform a not, not not perform)" + (inv x) +) + +(define-pmacro (swap-br x) "Combine swap-r and swap-b" (swap-r (swap-b x))) +(define-pmacro (swap-wr x) "Combine swap-r and swap-w" (swap-r (swap-w x))) +(define-pmacro (swap-wb x) "Combine swap-b and swap-w" (swap-b (swap-w x))) +(define-pmacro (swap-wbr x) "Combine swap-r and swap-wb" (swap-r (swap-wb x))) +(define-pmacro (swap-nr x) "Combine swap-r and swap-n" (swap-r (swap-n x))) +(define-pmacro (swap-nb x) "Combine swap-n and swap-b" (swap-b (swap-n x))) +(define-pmacro (swap-nbr x) "Combine swap-r and swap-nb" (swap-r (swap-nb x))) +(define-pmacro (swap-nw x) "Combine swap-n and swap-w" (swap-w (swap-n x))) +(define-pmacro (swap-nwr x) "Combine swap-r and swap-nw" (swap-r (swap-nw x))) +(define-pmacro (swap-nwb x) "Combine swap-b and swap-nw" (swap-b (swap-nw x))) +(define-pmacro (swap-nwbr x) "Combine swap-r and swap-nwb" (swap-r (swap-nwb x))) + +(define-pmacro (cris-swap swapcode val) + (sequence + SI + ((SI tmpcode) (SI tmpval) (SI tmpres)) + (set tmpcode swapcode) + (set tmpval val) + (.splice + cond + (.unsplice + (.map + (.pmacro + (x-swapcode x-swap) + ((eq tmpcode x-swapcode) + (set tmpres ((.sym swap- x-swap) tmpval)))) + (.iota 16) + (.splice _ (.unsplice cris-swap-codes))))) + tmpres) +) + +; NOT Rd alias for SWAPN Rd +(dni-cdt-attr + not "Not" + ((MACH crisv0,crisv3)) + "not ${Rs}" + (+ (f-dest 8) RFIX_SWAP MODE_REGISTER SIZE_FIXED Rd-sfield) + (sequence + ((SI tmp) (SI tmpd)) + (set tmp Rd-sfield) + (set tmpd (cris-swap 8 tmp)) + (set Rd-sfield tmpd) + (setf-move SI tmpd)) +) + +; SWAP