From 56d33867facfaab419b912c3d8851dfd628cc8e9 Mon Sep 17 00:00:00 2001 From: Hyeongsik Min Date: Fri, 25 Mar 2016 16:02:59 +0900 Subject: [PATCH] Imported Upstream version 7.10.1 --- ChangeLog | 101 + Makefile.def | 56 +- Makefile.in | 8993 +++++--- Makefile.tpl | 67 +- bfd/ChangeLog | 2161 +- bfd/Makefile.am | 16 +- bfd/Makefile.in | 28 +- bfd/acinclude.m4 | 2 - bfd/aclocal.m4 | 1 + bfd/aoutx.h | 6 +- bfd/archive.c | 91 +- bfd/archures.c | 16 +- bfd/bfd-in.h | 28 +- bfd/bfd-in2.h | 147 +- bfd/bfd.c | 194 +- bfd/coff-i386.c | 7 +- bfd/coff-sparc.c | 2 +- bfd/coffcode.h | 64 +- bfd/coffgen.c | 477 +- bfd/cofflink.c | 24 +- bfd/compress.c | 422 +- bfd/config.bfd | 81 +- bfd/config.in | 14 +- bfd/configure | 121 +- bfd/configure.ac | 8 +- bfd/cpu-ft32.c | 41 + bfd/cpu-iamcu.c | 60 + bfd/cpu-nios2.c | 34 +- bfd/cpu-ns32k.c | 3 +- bfd/cpu-s390.c | 61 +- bfd/cpu-w65.c | 4 +- bfd/doc/ChangeLog | 10 + bfd/doc/Makefile.am | 50 +- bfd/doc/Makefile.in | 59 +- bfd/doc/archures.texi | 12 +- bfd/doc/bfd.info | 3875 ++-- bfd/doc/bfdt.texi | 79 +- bfd/doc/bfdver.texi | 2 +- bfd/doc/coffcode.texi | 4 + bfd/doc/reloc.texi | 33 + bfd/doc/section.texi | 12 + bfd/dwarf2.c | 476 +- bfd/ecoff.c | 30 +- bfd/elf-attrs.c | 25 +- bfd/elf-bfd.h | 127 +- bfd/elf-eh-frame.c | 672 +- bfd/elf-hppa.h | 2 +- bfd/elf-m10200.c | 6 +- bfd/elf-m10300.c | 14 +- bfd/elf-s390-common.c | 70 + bfd/elf.c | 707 +- bfd/elf32-arc.c | 6 +- bfd/elf32-arm.c | 54 +- bfd/elf32-avr.c | 768 +- bfd/elf32-avr.h | 84 + bfd/elf32-bfin.c | 26 +- bfd/elf32-cr16.c | 12 +- bfd/elf32-cr16c.c | 2 +- bfd/elf32-cris.c | 8 +- bfd/elf32-crx.c | 12 +- bfd/elf32-d10v.c | 6 +- bfd/elf32-d30v.c | 10 +- bfd/elf32-dlx.c | 2 +- bfd/elf32-epiphany.c | 4 +- bfd/elf32-fr30.c | 10 +- bfd/elf32-frv.c | 8 +- bfd/elf32-ft32.c | 380 + bfd/elf32-h8300.c | 11 +- bfd/elf32-i370.c | 19 +- bfd/elf32-i386.c | 204 +- bfd/elf32-i860.c | 6 +- bfd/elf32-i960.c | 4 +- bfd/elf32-ip2k.c | 4 +- bfd/elf32-iq2000.c | 8 +- bfd/elf32-lm32.c | 8 +- bfd/elf32-m32c.c | 85 +- bfd/elf32-m32r.c | 8 +- bfd/elf32-m68hc11.c | 6 +- bfd/elf32-m68hc12.c | 6 +- bfd/elf32-m68k.c | 2 +- bfd/elf32-mcore.c | 19 +- bfd/elf32-mep.c | 23 +- bfd/elf32-metag.c | 4 +- bfd/elf32-microblaze.c | 25 +- bfd/elf32-mips.c | 9 +- bfd/elf32-moxie.c | 10 +- bfd/elf32-msp430.c | 139 +- bfd/elf32-mt.c | 6 +- bfd/elf32-nds32.c | 109 +- bfd/elf32-nios2.c | 1207 +- bfd/elf32-or1k.c | 8 +- bfd/elf32-pj.c | 10 +- bfd/elf32-ppc.c | 421 +- bfd/elf32-ppc.h | 4 + bfd/elf32-rl78.c | 937 +- bfd/elf32-rx.c | 39 +- bfd/elf32-s390.c | 12 +- bfd/elf32-score.c | 2 +- bfd/elf32-score7.c | 2 +- bfd/elf32-sh-relocs.h | 2 +- bfd/elf32-sh.c | 25 +- bfd/elf32-spu.c | 15 +- bfd/elf32-tic6x.c | 4 +- bfd/elf32-tilepro.c | 8 +- bfd/elf32-v850.c | 385 +- bfd/elf32-vax.c | 18 +- bfd/elf32-visium.c | 8 +- bfd/elf32-xc16x.c | 6 +- bfd/elf32-xgate.c | 6 +- bfd/elf32-xstormy16.c | 8 +- bfd/elf32-xtensa.c | 990 +- bfd/elf64-alpha.c | 13 +- bfd/elf64-mips.c | 11 +- bfd/elf64-mmix.c | 8 +- bfd/elf64-ppc.c | 165 +- bfd/elf64-ppc.h | 3 + bfd/elf64-s390.c | 21 +- bfd/elf64-sh64.c | 2 +- bfd/elf64-x86-64.c | 340 +- bfd/elfcode.h | 2 +- bfd/elflink.c | 736 +- bfd/elfn32-mips.c | 9 +- bfd/elfnn-aarch64.c | 1378 +- bfd/elfxx-aarch64.c | 150 +- bfd/elfxx-aarch64.h | 13 + bfd/elfxx-ia64.c | 2 +- bfd/elfxx-mips.c | 64 +- bfd/elfxx-mips.h | 5 + bfd/elfxx-sparc.c | 2 +- bfd/elfxx-target.h | 27 +- bfd/elfxx-tilegx.c | 8 +- bfd/libbfd-in.h | 8 + bfd/libbfd.h | 34 + bfd/libcoff-in.h | 16 + bfd/libcoff.h | 23 + bfd/libpei.h | 4 + bfd/linker.c | 4 +- bfd/mach-o.c | 147 +- bfd/mach-o.h | 8 + bfd/merge.c | 53 +- bfd/nlm32-sparc.c | 2 +- bfd/opncls.c | 2 + bfd/pdp11.c | 18 +- bfd/peXXigen.c | 101 +- bfd/peicode.h | 112 +- bfd/plugin.c | 63 +- bfd/plugin.h | 3 + bfd/po/SRC-POTFILES.in | 2 + bfd/reloc.c | 93 +- bfd/section.c | 12 + bfd/som.h | 7 + bfd/syms.c | 9 +- bfd/targets.c | 10 + bfd/tekhex.c | 8 +- bfd/verilog.c | 2 +- bfd/versados.c | 23 +- bfd/version.h | 2 +- bfd/vms-alpha.c | 18 + bfd/xcofflink.c | 2 +- config-ml.in | 68 +- config.guess | 27 +- config.sub | 13 +- config/ChangeLog | 71 + config/bootstrap-asan.mk | 3 + config/bootstrap-lto.mk | 16 +- config/cloog.m4 | 152 - config/dfp.m4 | 2 +- config/elf.m4 | 7 +- config/isl.m4 | 24 +- config/mh-darwin | 31 +- config/mt-gnu | 2 +- config/mt-ospace | 4 +- config/picflag.m4 | 12 +- config/zlib.m4 | 27 +- configure | 735 +- configure.ac | 368 +- djunpack.bat | 4 +- gdb/ChangeLog | 6029 +++++- gdb/MAINTAINERS | 22 +- gdb/Makefile.in | 128 +- gdb/NEWS | 292 + gdb/aarch64-linux-nat.c | 5 +- gdb/aarch64-linux-tdep.c | 767 +- gdb/aarch64-tdep.c | 974 +- gdb/aarch64-tdep.h | 8 + gdb/acinclude.m4 | 14 +- gdb/ada-lang.c | 443 +- gdb/ada-lang.h | 2 +- gdb/ada-lex.c | 71 +- gdb/ada-typeprint.c | 11 +- gdb/ada-valprint.c | 16 +- gdb/ada-varobj.c | 33 +- gdb/addrmap.c | 56 +- gdb/aix-thread.c | 34 +- gdb/alphanbsd-tdep.c | 4 +- gdb/amd64-linux-nat.c | 5 +- gdb/amd64-linux-tdep.c | 154 +- gdb/amd64-tdep.c | 144 +- gdb/amd64-tdep.h | 3 + gdb/amd64-windows-tdep.c | 119 +- gdb/amd64bsd-nat.c | 36 + gdb/amd64bsd-nat.h | 3 + gdb/amd64fbsd-nat.c | 83 +- gdb/amd64fbsd-tdep.c | 103 +- gdb/amd64obsd-tdep.c | 4 +- gdb/arch-utils.c | 19 +- gdb/arch-utils.h | 6 +- gdb/arm-linux-nat.c | 300 +- gdb/arm-linux-tdep.c | 94 +- gdb/arm-tdep.c | 130 +- gdb/arm-tdep.h | 5 +- gdb/arm-wince-tdep.c | 2 +- gdb/armbsd-tdep.c | 4 +- gdb/auto-load.c | 524 +- gdb/auto-load.h | 3 +- gdb/ax-gdb.c | 2 +- gdb/bcache.c | 14 +- gdb/block.c | 86 +- gdb/block.h | 40 +- gdb/break-catch-syscall.c | 659 + gdb/break-catch-throw.c | 51 +- gdb/breakpoint.c | 1021 +- gdb/breakpoint.h | 63 +- gdb/bsd-uthread.c | 2 +- gdb/btrace.c | 1785 +- gdb/btrace.h | 171 +- gdb/build-id.c | 28 +- gdb/build-id.h | 2 +- gdb/build-with-cxx.m4 | 41 + gdb/buildsym.c | 18 +- gdb/c-exp.c | 31 +- gdb/c-exp.y | 45 +- gdb/c-typeprint.c | 29 +- gdb/c-varobj.c | 95 +- gdb/cli-out.c | 84 +- gdb/cli-out.h | 2 + gdb/cli/cli-cmds.c | 31 +- gdb/cli/cli-decode.c | 119 +- gdb/cli/cli-decode.h | 2 +- gdb/cli/cli-dump.c | 50 +- gdb/cli/cli-interp.c | 9 +- gdb/cli/cli-script.c | 58 +- gdb/cli/cli-setshow.c | 20 +- gdb/cli/cli-utils.c | 36 - gdb/cli/cli-utils.h | 18 - gdb/coffread.c | 107 +- gdb/command.h | 24 +- gdb/common/agent.h | 3 +- gdb/common/btrace-common.c | 180 + gdb/common/btrace-common.h | 147 +- gdb/common/buffer.c | 2 - gdb/common/cleanups.c | 12 +- gdb/common/common-defs.h | 13 +- gdb/common/common-exceptions.c | 143 +- gdb/common/common-exceptions.h | 108 +- gdb/common/common-utils.c | 137 + gdb/common/common-utils.h | 35 + gdb/common/common.host | 36 + gdb/common/fileio.c | 255 + gdb/common/fileio.h | 73 + gdb/common/filestuff.c | 30 +- gdb/common/filestuff.h | 8 +- gdb/common/host-defs.h | 21 + gdb/common/mingw-strerror.c | 64 + gdb/common/posix-strerror.c | 38 + gdb/common/print-utils.c | 2 - gdb/common/rsp-low.c | 71 +- gdb/common/rsp-low.h | 18 +- gdb/compile/compile-c-support.c | 56 +- gdb/compile/compile-c-symbols.c | 73 +- gdb/compile/compile-c-types.c | 5 +- gdb/compile/compile-internal.h | 4 + gdb/compile/compile-loc2c.c | 41 +- gdb/compile/compile-object-load.c | 341 +- gdb/compile/compile-object-load.h | 29 +- gdb/compile/compile-object-run.c | 111 +- gdb/compile/compile.c | 128 +- gdb/compile/compile.h | 8 +- gdb/complaints.c | 16 +- gdb/completer.c | 831 +- gdb/completer.h | 115 + gdb/config.in | 63 +- gdb/config/aarch64/linux.mh | 3 +- gdb/config/alpha/alpha-linux.mh | 2 +- gdb/config/arm/linux.mh | 2 +- gdb/config/djgpp/README | 4 +- gdb/config/djgpp/fnchange.lst | 2 - gdb/config/i386/linux.mh | 3 +- gdb/config/i386/linux64.mh | 3 +- gdb/config/ia64/hpux.mh | 3 - gdb/config/ia64/linux.mh | 4 +- gdb/config/m32r/linux.mh | 2 +- gdb/config/m68k/linux.mh | 3 +- gdb/config/mips/linux.mh | 3 +- gdb/config/pa/hpux.mh | 3 - gdb/config/pa/linux.mh | 3 +- gdb/config/pa/obsd.mh | 2 +- gdb/config/powerpc/linux.mh | 2 +- gdb/config/powerpc/ppc64-linux.mh | 3 +- gdb/config/powerpc/spu-linux.mh | 4 +- gdb/config/s390/linux.mh | 3 +- gdb/config/sparc/linux.mh | 3 +- gdb/config/sparc/linux64.mh | 3 +- gdb/config/tilegx/linux.mh | 3 +- gdb/config/xtensa/linux.mh | 2 +- gdb/configure | 1654 +- gdb/configure.ac | 117 +- gdb/configure.host | 10 +- gdb/configure.tgt | 17 +- gdb/continuations.c | 12 +- gdb/contrib/ari/gdb_ari.sh | 4 +- gdb/copyright.py | 3 - gdb/corefile.c | 4 +- gdb/corelow.c | 33 +- gdb/cp-abi.c | 33 +- gdb/cp-name-parser.c | 6 +- gdb/cp-name-parser.y | 22 +- gdb/cp-namespace.c | 157 +- gdb/cp-support.c | 88 +- gdb/cp-support.h | 5 +- gdb/cp-valprint.c | 90 +- gdb/ctf.c | 5 + gdb/d-exp.c | 8 +- gdb/d-exp.y | 8 +- gdb/darwin-nat-info.c | 22 +- gdb/darwin-nat.c | 131 +- gdb/data-directory/Makefile.in | 4 +- gdb/dbxread.c | 90 +- gdb/dcache.c | 5 +- gdb/defs.h | 58 +- gdb/dictionary.c | 2 +- gdb/doc/ChangeLog | 368 +- gdb/doc/Makefile.in | 4 +- gdb/doc/gcore.1 | 4 +- gdb/doc/gdb.1 | 4 +- gdb/doc/gdb.info | 1396 +- gdb/doc/gdb.info-1 | 305 +- gdb/doc/gdb.info-2 | 411 +- gdb/doc/gdb.info-3 | 848 +- gdb/doc/gdb.info-4 | 1467 +- gdb/doc/gdb.info-5 | 1734 +- gdb/doc/gdb.info-6 | 1716 +- gdb/doc/gdb.info-7 | Bin 329283 -> 361160 bytes gdb/doc/gdb.texinfo | 1390 +- gdb/doc/gdbinit.5 | 4 +- gdb/doc/gdbserver.1 | 4 +- gdb/doc/guile.texi | 25 +- gdb/doc/python.texi | 184 +- gdb/doc/stabs.info | 30 +- gdb/doc/stabs.texinfo | 11 +- gdb/dtrace-probe.c | 921 + gdb/dummy-frame.c | 61 +- gdb/dummy-frame.h | 14 +- gdb/dwarf2-frame-tailcall.c | 8 +- gdb/dwarf2-frame.c | 60 +- gdb/dwarf2loc.c | 56 +- gdb/dwarf2loc.h | 48 +- gdb/dwarf2read.c | 1103 +- gdb/elfread.c | 200 +- gdb/environ.c | 6 +- gdb/eval.c | 38 +- gdb/event-loop.c | 143 +- gdb/event-loop.h | 9 + gdb/event-top.c | 12 +- gdb/exceptions.c | 20 +- gdb/exceptions.h | 3 - gdb/exec.c | 113 +- gdb/expression.h | 3 + gdb/extension-priv.h | 5 + gdb/extension.c | 16 + gdb/extension.h | 9 + gdb/f-exp.c | 16 +- gdb/f-exp.y | 16 +- gdb/f-valprint.c | 14 +- gdb/fbsd-nat.c | 378 +- gdb/fbsd-nat.h | 14 +- gdb/fbsd-tdep.c | 3 +- gdb/features/Makefile | 7 +- gdb/features/btrace-conf.dtd | 14 + gdb/features/btrace.dtd | 14 +- gdb/features/feature_to_c.sh | 8 +- gdb/features/s390-tevx-linux64.c | 188 + gdb/features/s390-tevx-linux64.xml | 26 + gdb/features/s390-vx-linux64.c | 166 + gdb/features/s390-vx-linux64.xml | 25 + gdb/features/s390-vx.xml | 59 + gdb/features/s390x-tevx-linux64.c | 172 + gdb/features/s390x-tevx-linux64.xml | 25 + gdb/features/s390x-vx-linux64.c | 150 + gdb/features/s390x-vx-linux64.xml | 24 + gdb/findvar.c | 4 +- gdb/frame-unwind.c | 27 +- gdb/frame.c | 49 +- gdb/frame.h | 2 - gdb/ft32-tdep.c | 547 + gdb/{solib-ia64-hpux.h => ft32-tdep.h} | 17 +- gdb/gcore.c | 19 +- gdb/gdb-gdb.py | 3 +- gdb/gdb-stabs.h | 17 - gdb/gdb_bfd.c | 206 +- gdb/gdb_bfd.h | 29 +- gdb/gdb_curses.h | 4 +- gdb/gdb_proc_service.h | 11 + gdb/gdbarch.c | 222 +- gdb/gdbarch.h | 61 +- gdb/gdbarch.sh | 54 +- gdb/gdbcore.h | 13 +- gdb/gdbserver/ChangeLog | 907 + gdb/gdbserver/Makefile.in | 65 +- gdb/gdbserver/acinclude.m4 | 6 + gdb/gdbserver/config.in | 56 + gdb/gdbserver/configure | 933 +- gdb/gdbserver/configure.ac | 50 +- gdb/gdbserver/configure.srv | 19 +- gdb/gdbserver/gdb_proc_service.h | 83 + gdb/gdbserver/gdbreplay.c | 6 +- gdb/gdbserver/hostio-errno.c | 56 +- gdb/gdbserver/hostio.c | 163 +- gdb/gdbserver/hostio.h | 3 + gdb/gdbserver/inferiors.h | 2 +- gdb/gdbserver/linux-aarch64-low.c | 58 +- gdb/gdbserver/linux-amd64-ipa.c | 2 +- gdb/gdbserver/linux-arm-low.c | 58 +- gdb/gdbserver/linux-i386-ipa.c | 5 +- gdb/gdbserver/linux-low.c | 1234 +- gdb/gdbserver/linux-low.h | 40 +- gdb/gdbserver/linux-mips-low.c | 138 +- gdb/gdbserver/linux-nios2-low.c | 11 +- gdb/gdbserver/linux-ppc-low.c | 34 +- gdb/gdbserver/linux-s390-low.c | 98 +- gdb/gdbserver/linux-x86-low.c | 237 +- gdb/gdbserver/linux-xtensa-low.c | 12 +- gdb/gdbserver/lynx-i386-low.c | 2 - gdb/gdbserver/lynx-low.c | 23 +- gdb/gdbserver/lynx-ppc-low.c | 2 - gdb/gdbserver/mem-break.c | 107 +- gdb/gdbserver/mem-break.h | 6 + gdb/gdbserver/notif.c | 2 +- gdb/gdbserver/nto-low.c | 8 + gdb/gdbserver/proc-service.c | 4 +- gdb/gdbserver/remote-utils.c | 41 +- gdb/gdbserver/server.c | 464 +- gdb/gdbserver/server.h | 13 + gdb/gdbserver/spu-low.c | 5 + gdb/gdbserver/target.h | 119 +- gdb/gdbserver/thread-db.c | 65 +- gdb/gdbserver/tracepoint.c | 263 +- gdb/gdbserver/tracepoint.h | 50 +- gdb/gdbserver/win32-low.c | 15 +- gdb/gdbthread.h | 32 +- gdb/gdbtypes.c | 555 +- gdb/gdbtypes.h | 753 +- gdb/gnu-v2-abi.c | 6 +- gdb/gnu-v3-abi.c | 84 +- gdb/gnulib/Makefile.in | 1 + gdb/gnulib/aclocal.m4 | 1 + gdb/gnulib/config.in | 10 + gdb/gnulib/configure | 125 + gdb/gnulib/import/Makefile.am | 11 +- gdb/gnulib/import/Makefile.in | 10 +- gdb/gnulib/import/m4/gnulib-cache.m4 | 3 +- gdb/gnulib/import/m4/gnulib-comp.m4 | 9 + gdb/gnulib/import/m4/strtok_r.m4 | 74 + gdb/gnulib/import/strtok_r.c | 76 + gdb/gnulib/update-gnulib.sh | 19 +- gdb/go-exp.c | 8 +- gdb/go-exp.y | 8 +- gdb/go-lang.c | 4 +- gdb/go32-nat.c | 6 +- gdb/guile/guile-internal.h | 13 +- gdb/guile/guile.c | 32 +- gdb/guile/lib/gdb.scm | 2 + gdb/guile/scm-block.c | 9 +- gdb/guile/scm-breakpoint.c | 79 +- gdb/guile/scm-cmd.c | 16 +- gdb/guile/scm-disasm.c | 9 +- gdb/guile/scm-frame.c | 237 +- gdb/guile/scm-lazy-string.c | 15 +- gdb/guile/scm-math.c | 38 +- gdb/guile/scm-objfile.c | 45 +- gdb/guile/scm-param.c | 19 +- gdb/guile/scm-ports.c | 185 +- gdb/guile/scm-pretty-print.c | 7 +- gdb/guile/scm-safe-call.c | 4 + gdb/guile/scm-symbol.c | 68 +- gdb/guile/scm-symtab.c | 9 +- gdb/guile/scm-type.c | 111 +- gdb/guile/scm-utils.c | 13 +- gdb/guile/scm-value.c | 246 +- gdb/hppa-hpux-nat.c | 273 - gdb/hppa-hpux-tdep.c | 1570 -- gdb/hppa-linux-tdep.c | 14 +- gdb/hppa-tdep.c | 175 +- gdb/hppa-tdep.h | 35 - gdb/{hppabsd-nat.c => hppaobsd-nat.c} | 53 +- gdb/hppaobsd-tdep.c | 4 +- gdb/i386-cygwin-tdep.c | 2 +- gdb/i386-linux-nat.c | 11 +- gdb/i386-linux-tdep.c | 9 +- gdb/i386-sol2-tdep.c | 3 +- gdb/i386-tdep.c | 356 +- gdb/i386-tdep.h | 3 + gdb/i386bsd-nat.c | 51 +- gdb/i386bsd-nat.h | 3 + gdb/i386fbsd-nat.c | 70 +- gdb/i386fbsd-tdep.c | 266 +- gdb/i386fbsd-tdep.h | 31 + gdb/i386obsd-tdep.c | 6 +- gdb/ia64-hpux-nat.c | 756 - gdb/ia64-hpux-tdep.c | 434 - gdb/ia64-tdep.c | 30 +- gdb/inf-child.c | 159 +- gdb/inf-loop.c | 17 +- gdb/inf-ptrace.c | 36 +- gdb/inf-ttrace.c | 1224 -- gdb/infcall.c | 164 +- gdb/infcall.h | 14 +- gdb/infcmd.c | 227 +- gdb/inferior.c | 4 +- gdb/inferior.h | 24 +- gdb/infrun.c | 659 +- gdb/infrun.h | 19 +- gdb/inline-frame.c | 5 + gdb/interps.c | 1 - gdb/jit.c | 33 +- gdb/jv-exp.c | 24 +- gdb/jv-exp.y | 24 +- gdb/jv-typeprint.c | 4 +- gdb/jv-varobj.c | 15 +- gdb/libiberty.m4 | 31 + gdb/linespec.c | 114 +- gdb/linespec.h | 4 + gdb/linux-nat.c | 887 +- gdb/linux-nat.h | 48 +- gdb/linux-record.h | 1 + gdb/linux-tdep.c | 553 +- gdb/linux-tdep.h | 7 +- gdb/linux-thread-db.c | 361 +- gdb/m2-typeprint.c | 10 +- gdb/m32c-tdep.c | 35 +- gdb/m32r-rom.c | 2 +- gdb/m68kbsd-tdep.c | 4 +- gdb/m68klinux-tdep.c | 2 - gdb/machoread.c | 4 +- gdb/macrocmd.c | 4 +- gdb/macrotab.c | 14 +- gdb/main.c | 115 +- gdb/maint.c | 10 +- gdb/mdebugread.c | 70 +- gdb/mem-break.c | 11 +- gdb/memattr.c | 24 +- gdb/mi/mi-cmd-stack.c | 48 +- gdb/mi/mi-cmd-var.c | 40 +- gdb/mi/mi-interp.c | 24 +- gdb/mi/mi-main.c | 73 +- gdb/microblaze-rom.c | 4 +- gdb/microblaze-tdep.c | 26 - gdb/mingw-hdep.c | 44 - gdb/minidebug.c | 23 +- gdb/minsyms.c | 22 +- gdb/mips-sde-tdep.c | 2 +- gdb/mips-tdep.c | 58 +- gdb/mipsnbsd-tdep.c | 4 +- gdb/monitor.c | 17 +- gdb/msp430-tdep.c | 3 +- gdb/nat/linux-btrace.c | 775 +- gdb/nat/linux-btrace.h | 86 +- gdb/nat/linux-namespaces.c | 1057 + gdb/nat/linux-namespaces.h | 76 + gdb/nat/linux-nat.h | 55 + gdb/nat/linux-osdata.c | 124 +- gdb/nat/linux-personality.c | 94 + gdb/nat/linux-personality.h | 31 + gdb/nat/linux-procfs.c | 62 +- gdb/nat/linux-procfs.h | 17 +- gdb/nat/linux-ptrace.c | 120 +- gdb/nat/linux-ptrace.h | 62 +- gdb/nat/linux-waitpid.c | 2 +- gdb/nat/mips-linux-watch.h | 2 - gdb/nat/ppc-linux.c | 75 + gdb/nat/ppc-linux.h | 91 + gdb/nat/x86-dregs.c | 4 +- gdb/nat/x86-dregs.h | 8 +- gdb/nat/x86-linux-dregs.c | 183 + gdb/nat/x86-linux-dregs.h | 53 + gdb/nat/x86-linux.c | 74 + gdb/nat/x86-linux.h | 46 + gdb/nbsd-tdep.c | 2 +- gdb/nios2-linux-tdep.c | 23 +- gdb/nios2-tdep.c | 26 +- gdb/nto-procfs.c | 16 +- gdb/nto-tdep.c | 12 +- gdb/objc-lang.c | 68 +- gdb/objfiles.c | 16 +- gdb/objfiles.h | 9 + gdb/osabi.c | 84 +- gdb/p-exp.c | 10 +- gdb/p-exp.y | 10 +- gdb/p-typeprint.c | 12 +- gdb/p-valprint.c | 24 +- gdb/parse.c | 49 +- gdb/parser-defs.h | 2 +- gdb/po/gdb.pot | 12726 +++++------ gdb/posix-hdep.c | 20 - gdb/ppc-linux-nat.c | 56 +- gdb/ppc-linux-tdep.c | 64 +- gdb/ppc-sysv-tdep.c | 31 +- gdb/ppcfbsd-nat.c | 4 +- gdb/ppcnbsd-tdep.c | 4 +- gdb/printcmd.c | 222 +- gdb/probe.c | 338 +- gdb/probe.h | 18 + gdb/procfs.c | 1 + gdb/prologue-value.h | 41 +- gdb/psympriv.h | 7 - gdb/psymtab.c | 71 +- gdb/python/lib/gdb/__init__.py | 38 +- gdb/python/lib/gdb/command/type_printers.py | 2 +- gdb/python/lib/gdb/command/unwinders.py | 198 + gdb/python/lib/gdb/command/xmethods.py | 4 +- gdb/python/lib/gdb/unwinder.py | 94 + gdb/python/py-arch.c | 10 +- gdb/python/py-block.c | 13 +- gdb/python/py-bpevent.c | 5 +- gdb/python/py-breakpoint.c | 60 +- gdb/python/py-cmd.c | 132 +- gdb/python/py-continueevent.c | 5 +- gdb/python/py-event.h | 5 +- gdb/python/py-evtregistry.c | 4 +- gdb/python/py-exitedevent.c | 5 +- gdb/python/py-finishbreakpoint.c | 56 +- gdb/python/py-frame.c | 162 +- gdb/python/py-framefilter.c | 134 +- gdb/python/py-function.c | 4 +- gdb/python/py-gdb-readline.c | 19 +- gdb/python/py-inferior.c | 47 +- gdb/python/py-infevents.c | 20 +- gdb/python/py-infthread.c | 13 +- gdb/python/py-lazy-string.c | 17 +- gdb/python/py-linetable.c | 21 +- gdb/python/py-newobjfileevent.c | 10 +- gdb/python/py-objfile.c | 111 +- gdb/python/py-param.c | 11 +- gdb/python/py-prettyprint.c | 30 +- gdb/python/py-progspace.c | 57 +- gdb/python/py-signalevent.c | 5 +- gdb/python/py-stopevent.c | 3 +- gdb/python/py-symbol.c | 67 +- gdb/python/py-symtab.c | 8 +- gdb/python/py-threadevent.c | 3 +- gdb/python/py-type.c | 183 +- gdb/python/py-unwind.c | 790 + gdb/python/py-utils.c | 9 +- gdb/python/py-value.c | 289 +- gdb/python/python-internal.h | 12 +- gdb/python/python.c | 132 +- gdb/record-btrace.c | 736 +- gdb/record-full.c | 117 +- gdb/record.c | 19 + gdb/record.h | 13 + gdb/regcache.c | 12 +- gdb/regcache.h | 9 +- gdb/regformats/s390-tevx-linux64.dat | 127 + gdb/regformats/s390-vx-linux64.dat | 107 + gdb/regformats/s390x-tevx-linux64.dat | 111 + gdb/regformats/s390x-vx-linux64.dat | 91 + gdb/reggroups.c | 29 + gdb/reggroups.h | 9 +- gdb/regset.h | 7 + gdb/remote-fileio.c | 240 +- gdb/remote-fileio.h | 6 + gdb/remote-m32r-sdi.c | 9 +- gdb/remote-mips.c | 4 +- gdb/remote-notif.c | 2 +- gdb/remote-sim.c | 10 +- gdb/remote.c | 1845 +- gdb/remote.h | 11 - gdb/reply_mig_hack.awk | 33 +- gdb/reverse.c | 6 +- gdb/rl78-tdep.c | 99 +- gdb/rs6000-aix-tdep.c | 7 +- gdb/rs6000-tdep.c | 25 +- gdb/rx-tdep.c | 340 +- gdb/s390-linux-nat.c | 166 +- gdb/s390-linux-tdep.c | 1023 +- gdb/s390-linux-tdep.h | 45 +- gdb/score-tdep.c | 16 +- gdb/ser-base.c | 8 + gdb/ser-base.h | 3 +- gdb/ser-go32.c | 1 + gdb/ser-mingw.c | 40 +- gdb/ser-pipe.c | 1 + gdb/ser-tcp.c | 5 +- gdb/ser-unix.c | 51 +- gdb/serial.c | 44 +- gdb/serial.h | 11 + gdb/sh-tdep.c | 9 +- gdb/solib-darwin.c | 20 +- gdb/solib-dsbt.c | 8 +- gdb/solib-frv.c | 8 +- gdb/solib-ia64-hpux.c | 701 - gdb/solib-pa64.c | 654 - gdb/solib-som.c | 891 - gdb/solib-spu.c | 31 +- gdb/solib-svr4.c | 137 +- gdb/solib-target.c | 18 +- gdb/solib.c | 347 +- gdb/solist.h | 3 + gdb/somread.c | 547 - gdb/source.c | 26 +- gdb/sparc-sol2-tdep.c | 4 +- gdb/sparc-tdep.c | 4 +- gdb/sparc-tdep.h | 2 +- gdb/sparc64-tdep.c | 2 +- gdb/sparc64fbsd-nat.c | 4 +- gdb/sparc64nbsd-tdep.c | 2 +- gdb/sparcnbsd-tdep.c | 2 +- gdb/spu-linux-nat.c | 1 + gdb/spu-tdep.c | 10 +- gdb/stabsread.c | 119 +- gdb/stabsread.h | 2 - gdb/stack.c | 187 +- gdb/stap-probe.c | 125 +- gdb/{windows-termcap.c => stub-termcap.c} | 35 +- gdb/symfile-debug.c | 11 +- gdb/symfile.c | 119 +- gdb/symfile.h | 38 +- gdb/symmisc.c | 2 +- gdb/symtab.c | 1105 +- gdb/symtab.h | 11 +- gdb/syscalls/aarch64-linux.xml | 271 + gdb/syscalls/s390-linux.xml | 11 + gdb/syscalls/s390x-linux.xml | 11 + gdb/target-debug.h | 8 + gdb/target-delegates.c | 287 +- gdb/target-descriptions.c | 54 +- gdb/target.c | 485 +- gdb/target.h | 310 +- gdb/target/target.h | 2 - gdb/target/waitstatus.h | 22 + gdb/testsuite/ChangeLog | 1478 +- gdb/testsuite/Makefile.in | 2 +- gdb/testsuite/README | 3 +- gdb/testsuite/aclocal.m4 | 1 + gdb/testsuite/boards/native-extended-gdbserver.exp | 13 +- .../boards/remote-gdbserver-on-localhost.exp | 82 + gdb/testsuite/configure | 70 +- gdb/testsuite/configure.ac | 13 +- gdb/testsuite/dg-extract-results.py | 585 - gdb/testsuite/dg-extract-results.sh | 25 +- gdb/testsuite/gdb.ada/byte_packed_arr.exp | 32 + .../gdb.ada/byte_packed_arr/array_list_g.ads | 27 + gdb/testsuite/gdb.ada/byte_packed_arr/reprod.adb | 22 + gdb/testsuite/gdb.ada/byte_packed_arr/reprod.ads | 35 + .../gdb.ada/byte_packed_arr/reprod_main.adb | 23 + gdb/testsuite/gdb.ada/complete.exp | 10 - gdb/testsuite/gdb.ada/disc_arr_bound.exp | 36 + .../gdb.ada/disc_arr_bound/foo_n612_026.adb | 22 + gdb/testsuite/gdb.ada/disc_arr_bound/pck.adb | 32 + gdb/testsuite/gdb.ada/disc_arr_bound/pck.ads | 29 + gdb/testsuite/gdb.ada/dyn_arrayidx.exp | 2 +- gdb/testsuite/gdb.ada/exec_changed.exp | 27 + gdb/testsuite/gdb.ada/exec_changed/first.adb | 8 +- gdb/testsuite/gdb.ada/exec_changed/second.adb | 8 +- gdb/testsuite/gdb.ada/funcall_ref.exp | 44 + gdb/testsuite/gdb.ada/funcall_ref/foo.adb | 34 + gdb/testsuite/gdb.ada/info_exc.exp | 11 - gdb/testsuite/gdb.ada/mi_var_array.exp | 52 + gdb/testsuite/gdb.ada/mi_var_array/bar.adb | 29 + gdb/testsuite/gdb.ada/mi_var_array/pck.adb | 21 + gdb/testsuite/gdb.ada/mi_var_array/pck.ads | 19 + gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp | 43 + .../gdb.ada/out_of_line_in_inlined/bar.adb | 28 + .../gdb.ada/out_of_line_in_inlined/bar.ads | 27 + .../out_of_line_in_inlined/foo_o224_021.adb | 44 + gdb/testsuite/gdb.ada/packed_tagged.exp | 11 - gdb/testsuite/gdb.ada/pckd_neg.exp | 44 + gdb/testsuite/gdb.ada/pckd_neg/foo_o508_021.adb | 22 + gdb/testsuite/gdb.ada/pckd_neg/pck.adb | 21 + gdb/testsuite/gdb.ada/pckd_neg/pck.ads | 22 + gdb/testsuite/gdb.ada/ptype_field.exp | 11 - gdb/testsuite/gdb.ada/rec_comp.exp | 37 + gdb/testsuite/gdb.ada/rec_comp/bar_o203_012.adb | 32 + gdb/testsuite/gdb.ada/rec_comp/pck.adb | 23 + gdb/testsuite/gdb.ada/rec_comp/pck.ads | 22 + gdb/testsuite/gdb.ada/sym_print_name.exp | 11 - gdb/testsuite/gdb.ada/tagged.exp | 11 - gdb/testsuite/gdb.ada/var_arr_attrs.exp | 39 + .../gdb.ada/var_arr_attrs/foo_o115_002.adb | 25 + gdb/testsuite/gdb.ada/var_arr_attrs/pck.adb | 21 + gdb/testsuite/gdb.ada/var_arr_attrs/pck.ads | 36 + gdb/testsuite/gdb.ada/var_rec_arr.exp | 51 + gdb/testsuite/gdb.ada/var_rec_arr/foo_na09_042.adb | 23 + gdb/testsuite/gdb.ada/var_rec_arr/pck.adb | 28 + gdb/testsuite/gdb.ada/var_rec_arr/pck.ads | 38 + gdb/testsuite/gdb.arch/amd64-prologue-skip.S | 28 + gdb/testsuite/gdb.arch/amd64-prologue-skip.exp | 35 + gdb/testsuite/gdb.arch/amd64-tailcall-self.S | 614 + gdb/testsuite/gdb.arch/amd64-tailcall-self.c | 40 + gdb/testsuite/gdb.arch/amd64-tailcall-self.exp | 31 + gdb/testsuite/gdb.arch/arm-disp-step.S | 19 + gdb/testsuite/gdb.arch/arm-disp-step.exp | 41 + gdb/testsuite/gdb.arch/cordic.ko.bz2 | Bin 0 -> 2208 bytes gdb/testsuite/gdb.arch/cordic.ko.debug.bz2 | Bin 0 -> 910 bytes gdb/testsuite/gdb.arch/i386-avx512.c | 2 +- gdb/testsuite/gdb.arch/i386-avx512.exp | 2 +- gdb/testsuite/gdb.arch/i386-biarch-core.core.bz2 | Bin 0 -> 420 bytes gdb/testsuite/gdb.arch/i386-biarch-core.exp | 58 + gdb/testsuite/gdb.arch/i386-bp_permanent.c | 2 + gdb/testsuite/gdb.arch/i386-mpx-map.c | 93 + gdb/testsuite/gdb.arch/i386-mpx-map.exp | 76 + gdb/testsuite/gdb.arch/i386-mpx.c | 21 +- gdb/testsuite/gdb.arch/i386-mpx.exp | 35 +- gdb/testsuite/gdb.arch/powerpc-power.exp | 4 +- gdb/testsuite/gdb.arch/powerpc-power.s | 2 +- gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp | 51 + gdb/testsuite/gdb.arch/s390-vregs.S | 96 + gdb/testsuite/gdb.arch/s390-vregs.exp | 203 + gdb/testsuite/gdb.arch/thumb-singlestep.exp | 3 + gdb/testsuite/gdb.asm/asm-source.exp | 6 +- gdb/testsuite/gdb.asm/asmsrc1.s | 1 + gdb/testsuite/gdb.base/attach-pie-noexec.exp | 9 +- gdb/testsuite/gdb.base/attach-twice.exp | 9 +- gdb/testsuite/gdb.base/attach.exp | 21 +- gdb/testsuite/gdb.base/bp-permanent.exp | 16 +- gdb/testsuite/gdb.base/break-always.exp | 32 +- gdb/testsuite/gdb.base/break-idempotent.exp | 3 +- gdb/testsuite/gdb.base/break-probes.exp | 4 + gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp | 5 +- gdb/testsuite/gdb.base/catch-gdb-caused-signals.c | 36 + .../gdb.base/catch-gdb-caused-signals.exp | 63 + gdb/testsuite/gdb.base/catch-syscall.c | 4 + gdb/testsuite/gdb.base/catch-syscall.exp | 51 +- gdb/testsuite/gdb.base/completion.exp | 204 +- gdb/testsuite/gdb.base/coredump-filter.c | 77 + gdb/testsuite/gdb.base/coredump-filter.exp | 208 + gdb/testsuite/gdb.base/disp-step-fork.c | 1 + gdb/testsuite/gdb.base/disp-step-syscall.exp | 53 +- gdb/testsuite/gdb.base/dso2dso-dso1.c | 26 + .../gdb.base/dso2dso-dso1.h} | 9 +- gdb/testsuite/gdb.base/dso2dso-dso2.c | 24 + .../gdb.base/dso2dso-dso2.h} | 10 +- gdb/testsuite/gdb.base/dso2dso.c | 25 + gdb/testsuite/gdb.base/dso2dso.exp | 74 + gdb/testsuite/gdb.base/dtrace-probe.c | 38 + gdb/testsuite/gdb.base/dtrace-probe.d | 21 + gdb/testsuite/gdb.base/dtrace-probe.exp | 106 + gdb/testsuite/gdb.base/dump.exp | 24 +- gdb/testsuite/gdb.base/ena-dis-br.exp | 8 + gdb/testsuite/gdb.base/foll-fork.exp | 3 +- gdb/testsuite/gdb.base/foll-vfork.exp | 29 +- gdb/testsuite/gdb.base/gdb-sigterm.c | 6 +- gdb/testsuite/gdb.base/gdb-sigterm.exp | 39 +- gdb/testsuite/gdb.base/gdbhistsize-history.exp | 70 + gdb/testsuite/gdb.base/gdbinit-history.exp | 136 + .../gdb.base/gdbinit-history/unlimited/.gdbinit | 1 + .../gdb.base/gdbinit-history/zero/.gdbinit | 1 + gdb/testsuite/gdb.base/gnu_vector.c | 105 +- gdb/testsuite/gdb.base/gnu_vector.exp | 52 +- gdb/testsuite/gdb.base/history-duplicates.exp | 117 + gdb/testsuite/gdb.base/info-os.c | 23 +- gdb/testsuite/gdb.base/interrupt.c | 5 + gdb/testsuite/gdb.base/interrupt.exp | 150 +- gdb/testsuite/gdb.base/maint.exp | 2 +- gdb/testsuite/gdb.base/noreturn-finish.c | 31 + gdb/testsuite/gdb.base/noreturn-finish.exp | 51 + gdb/testsuite/gdb.base/noreturn-return.c | 31 + gdb/testsuite/gdb.base/noreturn-return.exp | 51 + gdb/testsuite/gdb.base/readline.exp | 12 +- gdb/testsuite/gdb.base/relativedebug.exp | 11 + gdb/testsuite/gdb.base/savedregs.exp | 2 +- gdb/testsuite/gdb.base/sepdebug.exp | 12 +- gdb/testsuite/gdb.base/siginfo-obj.c | 1 + gdb/testsuite/gdb.base/siginfo-obj.exp | 4 +- gdb/testsuite/gdb.base/siginfo-thread.c | 1 + gdb/testsuite/gdb.base/siginfo-thread.exp | 4 +- gdb/testsuite/gdb.base/sigstep.exp | 86 +- gdb/testsuite/gdb.base/solib-corrupted.exp | 2 +- gdb/testsuite/gdb.base/stap-probe.exp | 2 +- gdb/testsuite/gdb.base/statistics.exp | 2 +- gdb/testsuite/gdb.base/step-over-no-symbols.exp | 92 + gdb/testsuite/gdb.base/structs.exp | 2 +- gdb/testsuite/gdb.base/tui-layout.exp | 7 + gdb/testsuite/gdb.base/valgrind-db-attach.exp | 2 +- gdb/testsuite/gdb.base/valgrind-infcall.exp | 2 +- gdb/testsuite/gdb.base/watch-bitfields.exp | 23 +- gdb/testsuite/gdb.base/watch_thread_num.exp | 4 +- gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp | 58 + gdb/testsuite/gdb.base/watchpoint-solib.exp | 13 +- gdb/testsuite/gdb.btrace/Makefile.in | 4 +- gdb/testsuite/gdb.btrace/buffer-size.exp | 57 + gdb/testsuite/gdb.btrace/delta.exp | 30 +- gdb/testsuite/gdb.btrace/enable.exp | 4 +- gdb/testsuite/gdb.btrace/exception.exp | 10 +- gdb/testsuite/gdb.btrace/function_call_history.exp | 44 +- gdb/testsuite/gdb.btrace/gcore.exp | 2 +- gdb/testsuite/gdb.btrace/i686-record_goto.S | 384 + gdb/testsuite/gdb.btrace/i686-tailcall.S | 351 + gdb/testsuite/gdb.btrace/instruction_history.exp | 18 +- gdb/testsuite/gdb.btrace/next.exp | 76 - gdb/testsuite/gdb.btrace/nexti.exp | 76 - gdb/testsuite/gdb.btrace/nohist.exp | 9 +- .../{finish.exp => record_goto-step.exp} | 40 +- gdb/testsuite/gdb.btrace/record_goto.exp | 75 +- gdb/testsuite/gdb.btrace/segv.exp | 4 +- gdb/testsuite/gdb.btrace/step.exp | 64 +- gdb/testsuite/gdb.btrace/stepi.exp | 60 +- .../gdb.btrace/{x86-tailcall.c => tailcall.c} | 4 +- gdb/testsuite/gdb.btrace/tailcall.exp | 66 +- gdb/testsuite/gdb.btrace/unknown_functions.exp | 8 +- .../{x86-record_goto.S => x86_64-record_goto.S} | 2 +- .../{x86-tailcall.S => x86_64-tailcall.S} | 304 +- gdb/testsuite/gdb.compile/compile-ifunc.c | 46 + gdb/testsuite/gdb.compile/compile-ifunc.exp | 54 + gdb/testsuite/gdb.compile/compile-ops.exp | 2 +- gdb/testsuite/gdb.compile/compile-print.c | 32 + gdb/testsuite/gdb.compile/compile-print.exp | 58 + gdb/testsuite/gdb.compile/compile.c | 2 +- gdb/testsuite/gdb.compile/compile.exp | 94 +- gdb/testsuite/gdb.cp/anon-ns.exp | 4 + gdb/testsuite/gdb.cp/class2.cc | 19 + gdb/testsuite/gdb.cp/class2.exp | 16 +- gdb/testsuite/gdb.cp/classes.cc | 18 + gdb/testsuite/gdb.cp/classes.exp | 9 + gdb/testsuite/gdb.cp/iostream.cc | 27 + gdb/testsuite/gdb.cp/iostream.exp | 44 + gdb/testsuite/gdb.cp/var-tag-2.cc | 22 + .../gdb.cp/var-tag-3.cc} | 20 +- gdb/testsuite/gdb.cp/var-tag-4.cc | 22 + gdb/testsuite/gdb.cp/var-tag.cc | 44 + gdb/testsuite/gdb.cp/var-tag.exp | 105 + gdb/testsuite/gdb.dlang/demangle.exp | 12 +- gdb/testsuite/gdb.dwarf2/atomic-type.exp | 89 + gdb/testsuite/gdb.dwarf2/atomic.c | 34 + gdb/testsuite/gdb.dwarf2/dw2-intercu.S | 79 + gdb/testsuite/gdb.dwarf2/dw2-intercu.exp | 5 + gdb/testsuite/gdb.dwarf2/dw2-op-call.exp | 2 +- .../gdb.dwarf2/dw2-undefined-ret-addr.exp | 4 +- gdb/testsuite/gdb.dwarf2/dw4-sig-types.exp | 2 +- gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp | 2 +- gdb/testsuite/gdb.dwarf2/implptr.exp | 2 +- gdb/testsuite/gdb.dwarf2/opaque-type-lookup-2.c | 24 + gdb/testsuite/gdb.dwarf2/opaque-type-lookup.c | 23 + gdb/testsuite/gdb.dwarf2/opaque-type-lookup.exp | 200 + gdb/testsuite/gdb.dwarf2/staticvirtual.exp | 54 + gdb/testsuite/gdb.gdb/complaints.exp | 6 +- gdb/testsuite/gdb.gdb/python-interrupts.exp | 2 +- gdb/testsuite/gdb.gdb/python-selftest.exp | 2 +- gdb/testsuite/gdb.gdb/selftest.exp | 6 +- gdb/testsuite/gdb.go/handcall.exp | 8 - gdb/testsuite/gdb.go/handcall.go | 2 +- gdb/testsuite/gdb.go/hello.exp | 13 +- gdb/testsuite/gdb.go/hello.go | 6 +- gdb/testsuite/gdb.go/strings.exp | 8 - gdb/testsuite/gdb.go/strings.go | 2 +- gdb/testsuite/gdb.go/unsafe.exp | 8 - gdb/testsuite/gdb.go/unsafe.go | 2 +- gdb/testsuite/gdb.guile/scm-frame.exp | 20 + gdb/testsuite/gdb.guile/scm-objfile.exp | 3 + gdb/testsuite/gdb.guile/scm-parameter.exp | 3 +- gdb/testsuite/gdb.guile/scm-ports.c | 22 + gdb/testsuite/gdb.guile/scm-ports.exp | 136 +- gdb/testsuite/gdb.guile/scm-section-script.c | 38 +- gdb/testsuite/gdb.guile/scm-section-script.exp | 45 +- gdb/testsuite/gdb.hp/Makefile.in | 42 - gdb/testsuite/gdb.hp/gdb.aCC/Makefile.in | 25 - gdb/testsuite/gdb.hp/gdb.aCC/optimize.c | 76 - gdb/testsuite/gdb.hp/gdb.aCC/optimize.exp | 143 - gdb/testsuite/gdb.hp/gdb.aCC/run.c | 37 - gdb/testsuite/gdb.hp/gdb.aCC/watch-cmd.exp | 148 - gdb/testsuite/gdb.hp/gdb.base-hp/Makefile.in | 30 - gdb/testsuite/gdb.hp/gdb.base-hp/callfwmall.c | 358 - gdb/testsuite/gdb.hp/gdb.base-hp/callfwmall.exp | 334 - gdb/testsuite/gdb.hp/gdb.base-hp/dollar.c | 10 - gdb/testsuite/gdb.hp/gdb.base-hp/dollar.exp | 146 - gdb/testsuite/gdb.hp/gdb.base-hp/genso-thresh.c | 229 - gdb/testsuite/gdb.hp/gdb.base-hp/hwwatchbus.c | 9 - gdb/testsuite/gdb.hp/gdb.base-hp/hwwatchbus.exp | 74 - gdb/testsuite/gdb.hp/gdb.base-hp/pxdb.c | 37 - gdb/testsuite/gdb.hp/gdb.base-hp/pxdb.exp | 119 - gdb/testsuite/gdb.hp/gdb.base-hp/reg-pa64.exp | 182 - gdb/testsuite/gdb.hp/gdb.base-hp/reg-pa64.s | 104 - gdb/testsuite/gdb.hp/gdb.base-hp/reg.exp | 230 - gdb/testsuite/gdb.hp/gdb.base-hp/reg.s | 96 - gdb/testsuite/gdb.hp/gdb.base-hp/sized-enum.c | 43 - gdb/testsuite/gdb.hp/gdb.base-hp/sized-enum.exp | 156 - gdb/testsuite/gdb.hp/gdb.base-hp/so-thresh.exp | 331 - gdb/testsuite/gdb.hp/gdb.base-hp/so-thresh.mk | 74 - gdb/testsuite/gdb.hp/gdb.base-hp/so-thresh.sh | 34 - gdb/testsuite/gdb.hp/gdb.compat/Makefile.in | 25 - gdb/testsuite/gdb.hp/gdb.compat/average.c | 46 - gdb/testsuite/gdb.hp/gdb.compat/sum.c | 15 - gdb/testsuite/gdb.hp/gdb.compat/xdb.c | 20 - gdb/testsuite/gdb.hp/gdb.compat/xdb0.c | 39 - gdb/testsuite/gdb.hp/gdb.compat/xdb0.h | 36 - gdb/testsuite/gdb.hp/gdb.compat/xdb1.c | 33 - gdb/testsuite/gdb.hp/gdb.compat/xdb1.exp | 67 - gdb/testsuite/gdb.hp/gdb.compat/xdb2.exp | 95 - gdb/testsuite/gdb.hp/gdb.compat/xdb3.exp | 316 - gdb/testsuite/gdb.hp/gdb.defects/Makefile.in | 25 - gdb/testsuite/gdb.hp/gdb.defects/bs14602.c | 9 - gdb/testsuite/gdb.hp/gdb.defects/bs14602.exp | 111 - gdb/testsuite/gdb.hp/gdb.defects/solib-d.c | 6 - gdb/testsuite/gdb.hp/gdb.defects/solib-d.exp | 271 - gdb/testsuite/gdb.hp/gdb.defects/solib-d1.c | 12 - gdb/testsuite/gdb.hp/gdb.defects/solib-d2.c | 11 - gdb/testsuite/gdb.hp/gdb.objdbg/Makefile.in | 26 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01.exp | 223 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01/x1.cc | 25 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01/x2.cc | 14 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01/x3.cc | 7 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01/x3.h | 22 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02.exp | 86 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02/x1.cc | 16 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02/x2.cc | 17 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02/x3.cc | 6 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg03.exp | 165 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg03/x1.cc | 15 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg03/x2.cc | 7 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg03/x3.cc | 21 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg04.exp | 66 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg04/x.h | 30 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg04/x1.cc | 15 - gdb/testsuite/gdb.hp/gdb.objdbg/objdbg04/x2.cc | 3 - gdb/testsuite/gdb.hp/gdb.objdbg/tools/symaddr | 8 - gdb/testsuite/gdb.hp/gdb.objdbg/tools/symaddr.pa64 | 8 - .../gdb.hp/gdb.objdbg/tools/test-objdbg.cc | 4 - gdb/testsuite/gdb.hp/tools/odump | 7 - gdb/testsuite/gdb.linespec/break-asm-file.exp | 23 +- gdb/testsuite/gdb.linespec/break-asm-file0.s | 25 +- gdb/testsuite/gdb.linespec/break-asm-file1.s | 25 +- gdb/testsuite/gdb.linespec/keywords.c | 36 + gdb/testsuite/gdb.linespec/keywords.exp | 77 + gdb/testsuite/gdb.linespec/ls-errs.exp | 3 + gdb/testsuite/gdb.mi/Makefile.in | 2 +- gdb/testsuite/gdb.mi/mi-cmd-param-changed.exp | 6 +- gdb/testsuite/gdb.mi/mi-detach.exp | 35 + gdb/testsuite/gdb.mi/mi-dprintf-pending.c | 25 + gdb/testsuite/gdb.mi/mi-dprintf-pending.exp | 79 + gdb/testsuite/gdb.mi/mi-dprintf-pendshr.c | 27 + gdb/testsuite/gdb.mi/mi-pending.c | 44 +- gdb/testsuite/gdb.mi/mi-pending.exp | 72 +- gdb/testsuite/gdb.mi/mi-pendshr.c | 13 +- gdb/testsuite/gdb.mi/mi-pendshr2.c | 21 + .../mi-var-list-children-invalid-grandchild.c | 46 + .../mi-var-list-children-invalid-grandchild.exp | 63 + gdb/testsuite/gdb.mi/non-stop.c | 1 + gdb/testsuite/gdb.mi/nsthrexec.c | 1 + gdb/testsuite/gdb.mi/pthreads.c | 1 + gdb/testsuite/gdb.modula2/unbounded1.c | 2 +- .../gdb.pascal/case-insensitive-symbols.exp | 58 + .../gdb.pascal/case-insensitive-symbols.pas | 63 + gdb/testsuite/gdb.pascal/stub-method.exp | 30 + gdb/testsuite/gdb.pascal/stub-method.pas | 33 + gdb/testsuite/gdb.python/py-bad-printers.c | 57 + gdb/testsuite/gdb.python/py-bad-printers.exp | 54 + gdb/testsuite/gdb.python/py-bad-printers.py | 80 + gdb/testsuite/gdb.python/py-completion.exp | 65 +- gdb/testsuite/gdb.python/py-completion.py | 89 + gdb/testsuite/gdb.python/py-framefilter.py | 7 +- gdb/testsuite/gdb.python/py-lazy-string.c | 24 + gdb/testsuite/gdb.python/py-lazy-string.exp | 42 + gdb/testsuite/gdb.python/py-lookup-type.exp | 3 +- gdb/testsuite/gdb.python/py-objfile.exp | 29 + gdb/testsuite/gdb.python/py-parameter.exp | 3 +- gdb/testsuite/gdb.python/py-pp-registration.c | 55 + gdb/testsuite/gdb.python/py-pp-registration.exp | 116 + gdb/testsuite/gdb.python/py-pp-registration.py | 80 + gdb/testsuite/gdb.python/py-prettyprint.c | 11 +- gdb/testsuite/gdb.python/py-prettyprint.exp | 4 + gdb/testsuite/gdb.python/py-prettyprint.py | 14 +- gdb/testsuite/gdb.python/py-section-script.c | 49 +- gdb/testsuite/gdb.python/py-section-script.exp | 50 +- gdb/testsuite/gdb.python/py-type.exp | 7 +- gdb/testsuite/gdb.python/py-unwind-maint.c | 24 + gdb/testsuite/gdb.python/py-unwind-maint.exp | 64 + gdb/testsuite/gdb.python/py-unwind-maint.py | 59 + gdb/testsuite/gdb.python/py-unwind.c | 81 + gdb/testsuite/gdb.python/py-unwind.exp | 54 + gdb/testsuite/gdb.python/py-unwind.py | 99 + gdb/testsuite/gdb.python/py-xmethods.cc | 2 +- gdb/testsuite/gdb.python/py-xmethods.exp | 5 + gdb/testsuite/gdb.python/py-xmethods.py | 16 + gdb/testsuite/gdb.reverse/aarch64.c | 99 + gdb/testsuite/gdb.reverse/aarch64.exp | 115 + gdb/testsuite/gdb.reverse/consecutive-reverse.c | 1 + gdb/testsuite/gdb.reverse/sigall-reverse.exp | 15 +- gdb/testsuite/gdb.reverse/until-precsave.exp | 21 +- gdb/testsuite/gdb.server/non-existing-program.exp | 67 + gdb/testsuite/gdb.server/server-exec-info.exp | 1 + .../gdb.threads/attach-many-short-lived-threads.c | 29 +- .../attach-many-short-lived-threads.exp | 13 +- gdb/testsuite/gdb.threads/clone-thread_db.c | 75 + gdb/testsuite/gdb.threads/clone-thread_db.exp | 37 + .../gdb.threads/continue-pending-status.c | 58 + .../gdb.threads/continue-pending-status.exp | 124 + gdb/testsuite/gdb.threads/create-fail.c | 1 + gdb/testsuite/gdb.threads/fork-plus-threads.c | 115 + gdb/testsuite/gdb.threads/fork-plus-threads.exp | 105 + .../gdb.threads/forking-threads-plus-breakpoint.c | 139 + .../forking-threads-plus-breakpoint.exp | 117 + gdb/testsuite/gdb.threads/hand-call-new-thread.c | 50 + gdb/testsuite/gdb.threads/hand-call-new-thread.exp | 48 + gdb/testsuite/gdb.threads/killed.c | 1 + gdb/testsuite/gdb.threads/linux-dp.c | 1 + gdb/testsuite/gdb.threads/manythreads.exp | 2 +- .../gdb.threads/multi-create-ns-info-thr.exp | 52 + gdb/testsuite/gdb.threads/multiple-step-overs.c | 7 + gdb/testsuite/gdb.threads/multiple-step-overs.exp | 73 +- .../gdb.threads/next-while-other-thread-longjmps.c | 127 + .../next-while-other-thread-longjmps.exp | 40 + gdb/testsuite/gdb.threads/no-unwaited-for-left.exp | 10 + gdb/testsuite/gdb.threads/non-ldr-exc-1.c | 2 + gdb/testsuite/gdb.threads/non-ldr-exc-2.c | 2 + gdb/testsuite/gdb.threads/non-ldr-exc-3.c | 2 + gdb/testsuite/gdb.threads/non-ldr-exc-4.c | 2 + gdb/testsuite/gdb.threads/non-stop-fair-events.c | 9 +- gdb/testsuite/gdb.threads/non-stop-fair-events.exp | 3 +- gdb/testsuite/gdb.threads/pthread_cond_wait.c | 1 + gdb/testsuite/gdb.threads/pthreads.c | 2 + gdb/testsuite/gdb.threads/schedlock.exp | 11 +- gdb/testsuite/gdb.threads/signal-sigtrap.c | 46 + gdb/testsuite/gdb.threads/signal-sigtrap.exp | 67 + .../signal-while-stepping-over-bp-other-thread.exp | 20 +- .../gdb.threads/step-bg-decr-pc-switch-thread.c | 54 + .../gdb.threads/step-bg-decr-pc-switch-thread.exp | 91 + .../gdb.threads/step-over-lands-on-breakpoint.exp | 22 +- .../gdb.threads/step-over-trips-on-watchpoint.c | 2 +- .../gdb.threads/step-over-trips-on-watchpoint.exp | 71 +- gdb/testsuite/gdb.threads/thread-execl.exp | 24 +- gdb/testsuite/gdb.threads/thread-specific-bp.exp | 13 - gdb/testsuite/gdb.threads/tid-reuse.c | 151 + gdb/testsuite/gdb.threads/tid-reuse.exp | 80 + gdb/testsuite/gdb.threads/tls-main.c | 1 + gdb/testsuite/gdb.threads/watchpoint-fork-mt.c | 3 + gdb/testsuite/gdb.trace/Makefile.in | 4 +- gdb/testsuite/gdb.trace/actions.exp | 13 +- gdb/testsuite/gdb.trace/ax.exp | 2 + gdb/testsuite/gdb.trace/infotrace.exp | 11 +- gdb/testsuite/gdb.trace/no-attach-trace.c | 26 + gdb/testsuite/gdb.trace/no-attach-trace.exp | 49 + gdb/testsuite/gdb.trace/pending.exp | 8 +- gdb/testsuite/gdb.trace/while-stepping.exp | 14 +- gdb/testsuite/gdb.xml/tdesc-regs.exp | 3 + gdb/testsuite/lib/dtrace.exp | 71 + gdb/testsuite/lib/dwarf.exp | 151 +- gdb/testsuite/lib/future.exp | 11 + gdb/testsuite/lib/gdb.exp | 312 +- gdb/testsuite/lib/gdbserver-support.exp | 84 +- gdb/testsuite/lib/mi-support.exp | 7 +- gdb/testsuite/lib/pascal.exp | 20 +- gdb/testsuite/lib/pdtrace | 1033 + gdb/testsuite/lib/pdtrace.in | 1033 + gdb/testsuite/lib/prompt.exp | 2 +- gdb/testsuite/lib/unbuffer_output.c | 39 + gdb/thread.c | 85 +- gdb/tic6x-tdep.c | 6 +- gdb/tilegx-linux-tdep.c | 2 - gdb/tilegx-tdep.c | 7 +- gdb/top.c | 239 +- gdb/tracefile-tfile.c | 16 +- gdb/tracepoint.c | 6 +- gdb/transform.m4 | 23 + gdb/tui/tui-command.c | 105 +- gdb/tui/tui-data.c | 41 +- gdb/tui/tui-data.h | 39 +- gdb/tui/tui-disasm.c | 8 +- gdb/tui/tui-hooks.c | 82 +- gdb/tui/tui-io.c | 287 +- gdb/tui/tui-layout.c | 353 +- gdb/tui/tui-layout.h | 3 +- gdb/tui/tui-regs.c | 209 +- gdb/tui/tui-source.c | 38 +- gdb/tui/tui-stack.c | 93 +- gdb/tui/tui-stack.h | 2 +- gdb/tui/tui-win.c | 210 +- gdb/tui/tui-windata.c | 2 +- gdb/tui/tui-wingeneral.c | 2 +- gdb/tui/tui-winsource.c | 54 +- gdb/tui/tui.c | 61 +- gdb/tui/tui.h | 2 +- gdb/typeprint.c | 24 +- gdb/ui-file.h | 2 +- gdb/utils.c | 233 +- gdb/utils.h | 12 +- gdb/valarith.c | 6 +- gdb/valops.c | 68 +- gdb/valprint.c | 39 +- gdb/valprint.h | 15 + gdb/value.c | 180 +- gdb/value.h | 4 +- gdb/varobj.c | 208 +- gdb/varobj.h | 87 +- gdb/version.in | 2 +- gdb/windows-nat.c | 126 +- gdb/windows-tdep.c | 3 +- gdb/x86-linux-nat.c | 220 +- gdb/x86-linux-nat.h | 10 - gdb/x86-nat.h | 5 - gdb/xcoffread.c | 44 +- gdb/xml-support.c | 12 +- gdb/xstormy16-tdep.c | 11 +- gdb/xtensa-linux-nat.c | 2 - gdb/xtensa-tdep.c | 8 - gdb/xtensa-tdep.h | 14 +- include/ChangeLog | 85 + include/bfdlink.h | 17 +- include/demangle.h | 6 + include/dis-asm.h | 13 + include/dwarf2.def | 4 + include/dwarf2.h | 2 + include/elf/ChangeLog | 108 + include/elf/aarch64.h | 3 +- include/elf/arm.h | 1 - include/elf/common.h | 18 +- include/elf/external.h | 14 + include/elf/ft32.h | 37 + include/elf/internal.h | 15 + include/elf/mep.h | 4 - include/elf/mips.h | 3 + include/elf/nios2.h | 26 +- include/elf/rl78.h | 6 +- include/elf/rx.h | 5 + include/elf/s390.h | 15 +- include/elf/score.h | 5 +- include/elf/v850.h | 56 +- include/filenames.h | 2 + include/floatformat.h | 8 + include/gdb/ChangeLog | 21 + include/gdb/callback.h | 9 + include/gdb/remote-sim.h | 3 +- include/gdb/section-scripts.h | 16 +- include/gdb/sim-ft32.h | 35 + include/libiberty.h | 2 +- include/opcode/ChangeLog | 102 + include/opcode/aarch64.h | 16 + include/opcode/arm.h | 228 +- include/opcode/cgen.h | 8 + include/opcode/ft32.h | 100 + include/opcode/msp430-decode.h | 8 + include/opcode/nios2.h | 87 +- include/opcode/nios2r2.h | 1081 + include/opcode/ppc.h | 22 + include/opcode/rl78.h | 17 +- include/opcode/rx.h | 8 + include/opcode/s390.h | 23 +- include/opcode/tilegx.h | 8 + include/partition.h | 8 +- libdecnumber/ChangeLog | 8 + libdecnumber/Makefile.in | 2 + libdecnumber/configure | 2 +- libiberty/ChangeLog | 158 + libiberty/Makefile.in | 5 +- libiberty/config.in | 32 + libiberty/configure | 1676 +- libiberty/configure.ac | 1 + libiberty/cp-demangle.c | 114 +- libiberty/cp-demangle.h | 29 +- libiberty/cp-demint.c | 1 + libiberty/d-demangle.c | 469 +- libiberty/floatformat.c | 4 +- libiberty/mkstemps.c | 2 + libiberty/setenv.c | 2 + libiberty/testsuite/Makefile.in | 2 +- libiberty/testsuite/d-demangle-expected | 168 +- libiberty/testsuite/demangle-expected | 65 + md5.sum | 21553 ++++++++++--------- opcodes/ChangeLog | 476 + opcodes/Makefile.am | 2 + opcodes/Makefile.in | 5 +- opcodes/aarch64-asm-2.c | 418 +- opcodes/aarch64-dis-2.c | 2193 +- opcodes/aarch64-opc-2.c | 100 +- opcodes/aarch64-opc.c | 39 + opcodes/aarch64-tbl.h | 59 +- opcodes/arm-dis.c | 3888 ++-- opcodes/bfin-dis.c | 2 +- opcodes/configure | 3 +- opcodes/configure.ac | 3 +- opcodes/d10v-opc.c | 2 +- opcodes/dis-buf.c | 4 +- opcodes/disassemble.c | 9 +- opcodes/ft32-dis.c | 177 + opcodes/ft32-opc.c | 88 + opcodes/i386-dis-evex.h | 944 +- opcodes/i386-dis.c | 3066 +-- opcodes/i386-gen.c | 17 +- opcodes/i386-init.h | 363 +- opcodes/i386-opc.h | 15 + opcodes/i386-opc.tbl | 33 +- opcodes/i386-tbl.h | 11580 +++++----- opcodes/mcore-dis.c | 11 +- opcodes/microblaze-dis.h | 8 + opcodes/microblaze-opc.h | 6 +- opcodes/microblaze-opcm.h | 4 +- opcodes/mips-opc.c | 8 +- opcodes/msp430-dis.c | 2 +- opcodes/nds32-asm.c | 15 +- opcodes/nios2-dis.c | 550 +- opcodes/nios2-opc.c | 436 +- opcodes/po/POTFILES.in | 2 + opcodes/po/fr.gmo | Bin 25313 -> 30871 bytes opcodes/po/fr.po | 1185 +- opcodes/ppc-dis.c | 67 +- opcodes/ppc-opc.c | 156 +- opcodes/rl78-decode.c | 972 +- opcodes/rl78-decode.opc | 58 +- opcodes/rl78-dis.c | 51 +- opcodes/s390-dis.c | 50 +- opcodes/s390-mkopc.c | 151 +- opcodes/s390-opc.c | 969 +- opcodes/s390-opc.txt | 572 +- opcodes/sh-dis.c | 2 + opcodes/sh-opc.h | 6 +- opcodes/tic6x-dis.c | 3 + opcodes/vax-dis.c | 3 +- sim/.gitignore | 1 - sim/ChangeLog | 104 +- sim/README-HACKING | 12 +- sim/arm/ChangeLog | 190 + sim/arm/Makefile.in | 40 +- sim/arm/aclocal.m4 | 17 +- sim/arm/armdefs.h | 35 +- sim/arm/armemu.c | 1012 +- sim/arm/armemu.h | 53 +- sim/arm/armos.c | 3 +- sim/arm/armsupp.c | 908 +- sim/arm/bag.c | 6 +- sim/arm/config.in | 20 +- sim/arm/configure | 669 +- sim/arm/configure.ac | 11 +- sim/arm/dbg_hif.h | 6 +- sim/arm/maverick.c | 49 - gdb/solib-som.h => sim/arm/sim-main.h | 36 +- sim/arm/tconfig.in | 17 - sim/arm/thumbemu.c | 2028 +- sim/arm/wrapper.c | 272 +- sim/avr/ChangeLog | 102 + sim/avr/Makefile.in | 13 +- sim/avr/aclocal.m4 | 17 +- sim/avr/config.in | 20 +- sim/avr/configure | 667 +- sim/avr/configure.ac | 7 + sim/avr/interp.c | 1577 +- sim/avr/sim-main.h | 40 + sim/bfin/ChangeLog | 149 + sim/bfin/Makefile.in | 17 +- sim/bfin/aclocal.m4 | 17 +- sim/bfin/bfin-sim.c | 24 +- sim/bfin/bfin-sim.h | 4 +- sim/bfin/config.in | 5 +- sim/bfin/configure | 192 +- sim/bfin/configure.ac | 3 - sim/bfin/dv-bfin_cec.c | 10 +- sim/bfin/dv-bfin_uart.c | 6 - sim/bfin/interp.c | 51 +- sim/bfin/linux-targ-map.h | 992 +- sim/bfin/sim-main.h | 52 +- sim/bfin/{tconfig.in => tconfig.h} | 12 - sim/common/ChangeLog | 410 + sim/common/Make-common.in | 23 +- sim/common/acinclude.m4 | 125 +- sim/common/callback.c | 94 +- sim/common/cgen-engine.h | 4 - sim/common/cgen-mem.h | 3 +- sim/common/cgen-ops.h | 3 +- sim/common/cgen-run.c | 2 +- sim/common/cgen-trace.c | 29 +- sim/common/cgen-trace.h | 39 +- sim/common/cgen-utils.c | 2 +- sim/common/cgen.sh | 0 sim/common/config.in | 5 +- sim/common/configure | 129 +- sim/common/create-version.sh | 38 - sim/common/dv-sockser.c | 1 + sim/common/dv-sockser.h | 39 + sim/common/genmloop.sh | 8 +- sim/common/gennltvals.sh | 45 +- sim/common/gentmap.c | 22 +- sim/common/gentvals.sh | 0 sim/common/nltvals.def | 18 + sim/common/nrun.c | 1 - sim/common/run-sim.h | 93 - sim/common/run.c | 357 - sim/common/sim-alu.h | 4 +- sim/common/sim-arange.h | 20 +- sim/common/sim-assert.h | 31 +- sim/common/sim-base.h | 19 +- sim/common/sim-basics.h | 11 +- sim/common/sim-bits.h | 6 +- sim/common/sim-config.h | 6 +- sim/common/sim-core.c | 4 +- sim/common/sim-endian.c | 1 - sim/common/sim-endian.h | 6 +- sim/common/sim-engine.h | 2 +- sim/common/sim-events.c | 18 +- sim/common/sim-events.h | 1 - sim/common/sim-fpu.c | 4 +- sim/common/sim-inline.h | 4 +- sim/common/sim-model.c | 1 + sim/common/sim-module.c | 12 +- sim/common/sim-module.h | 1 + sim/common/sim-options.c | 16 +- sim/common/sim-profile.c | 16 +- sim/common/sim-run.c | 4 +- sim/common/sim-syscall.c | 123 + sim/common/sim-syscall.h | 45 + sim/common/sim-trace.c | 169 +- sim/common/sim-trace.h | 135 +- sim/common/sim-types.h | 103 +- sim/common/syscall.c | 2 +- sim/common/{tconfig.in => tconfig.h} | 10 - sim/configure | 34 +- sim/configure.ac | 6 +- sim/configure.tgt | 23 +- sim/cr16/ChangeLog | 152 + sim/cr16/Makefile.in | 28 +- sim/cr16/aclocal.m4 | 17 +- sim/cr16/config.in | 20 +- sim/cr16/configure | 570 +- sim/cr16/configure.ac | 8 +- sim/cr16/cr16_sim.h | 9 +- sim/cr16/endian.c | 21 +- sim/cr16/gencode.c | 25 +- sim/cr16/interp.c | 514 +- sim/cr16/sim-main.h | 44 + sim/cr16/simops.c | 866 +- sim/cris/ChangeLog | 111 + sim/cris/Makefile.in | 8 +- sim/cris/aclocal.m4 | 17 +- sim/cris/config.in | 5 +- sim/cris/configure | 189 +- sim/cris/crisv10f.c | 2 +- sim/cris/crisv32f.c | 2 +- sim/cris/decodev10.c | 226 +- sim/cris/decodev32.c | 216 +- sim/cris/mloop.in | 6 +- sim/cris/rvdummy.c | 1 - sim/cris/semcrisv10f-switch.c | 2466 +-- sim/cris/semcrisv32f-switch.c | 2476 +-- sim/cris/sim-main.h | 25 +- sim/cris/{tconfig.in => tconfig.h} | 13 +- sim/cris/traps.c | 355 +- sim/d10v/ChangeLog | 134 + sim/d10v/Makefile.in | 24 +- sim/d10v/aclocal.m4 | 17 +- sim/d10v/config.in | 20 +- sim/d10v/configure | 570 +- sim/d10v/configure.ac | 8 +- sim/d10v/d10v_sim.h | 10 +- sim/d10v/endian.c | 21 +- sim/d10v/gencode.c | 21 +- sim/d10v/interp.c | 323 +- sim/d10v/sim-main.h | 44 + sim/d10v/simops.c | 359 +- sim/erc32/ChangeLog | 179 + sim/erc32/Makefile.in | 21 +- sim/erc32/aclocal.m4 | 17 +- sim/erc32/config.in | 20 +- sim/erc32/configure | 402 +- sim/erc32/configure.ac | 18 +- sim/erc32/end.c | 27 - sim/erc32/erc32.c | 339 +- sim/erc32/exec.c | 136 +- sim/erc32/float.c | 249 +- sim/erc32/func.c | 231 +- sim/erc32/help.c | 20 +- sim/erc32/interf.c | 120 +- sim/erc32/sis.c | 89 +- sim/erc32/sis.h | 64 +- sim/erc32/startsim | 14 + sim/frv/ChangeLog | 100 + sim/frv/Makefile.in | 5 +- sim/frv/aclocal.m4 | 17 +- sim/frv/config.in | 5 +- sim/frv/configure | 191 +- sim/frv/configure.ac | 5 +- sim/frv/decode.c | 546 +- sim/frv/devices.c | 37 - sim/frv/mloop.in | 6 +- sim/frv/sem.c | 2770 +-- sim/frv/sim-main.h | 22 +- sim/frv/{tconfig.in => tconfig.h} | 6 - sim/frv/traps.c | 2 +- sim/ft32/ChangeLog | 64 + sim/ft32/Makefile.in | 45 + sim/ft32/aclocal.m4 | 129 + sim/ft32/config.in | 160 + sim/ft32/configure | 15685 ++++++++++++++ sim/ft32/configure.ac | 15 + sim/ft32/ft32-sim.h | 43 + sim/ft32/interp.c | 891 + sim/ft32/sim-main.h | 46 + sim/h8300/ChangeLog | 79 + sim/h8300/Makefile.in | 10 +- sim/h8300/aclocal.m4 | 17 +- sim/h8300/compile.c | 55 +- sim/h8300/config.in | 5 +- sim/h8300/configure | 146 +- sim/h8300/configure.ac | 2 +- sim/h8300/sim-main.h | 9 +- sim/h8300/{tconfig.in => tconfig.h} | 6 - sim/igen/ChangeLog | 19 + sim/igen/configure | 3 +- sim/igen/gen-engine.c | 10 +- sim/igen/misc.c | 4 +- sim/iq2000/ChangeLog | 93 + sim/iq2000/Makefile.in | 11 +- sim/iq2000/aclocal.m4 | 17 +- sim/iq2000/config.in | 5 +- sim/iq2000/configure | 192 +- sim/iq2000/configure.ac | 2 +- sim/iq2000/decode.c | 60 +- sim/iq2000/mloop.in | 6 +- sim/iq2000/sem-switch.c | 176 +- sim/iq2000/sem.c | 174 +- sim/iq2000/sim-main.h | 14 +- sim/iq2000/{tconfig.in => tconfig.h} | 6 - sim/lm32/ChangeLog | 105 + sim/lm32/Makefile.in | 7 +- sim/lm32/aclocal.m4 | 17 +- sim/lm32/config.in | 5 +- sim/lm32/configure | 189 +- sim/lm32/decode.c | 46 +- sim/lm32/dv-lm32cpu.c | 4 +- sim/lm32/mloop.in | 6 +- sim/lm32/sem-switch.c | 132 +- sim/lm32/sem.c | 130 +- sim/lm32/sim-main.h | 25 +- sim/lm32/{tconfig.in => tconfig.h} | 0 sim/lm32/traps.c | 57 +- sim/m32c/ChangeLog | 60 + sim/m32c/aclocal.m4 | 17 +- sim/m32c/config.in | 5 +- sim/m32c/configure | 247 +- sim/m32c/configure.ac | 2 + sim/m32c/cpu.h | 10 +- sim/m32c/gdb-if.c | 19 +- sim/m32c/load.c | 6 +- sim/m32c/load.h | 2 +- sim/m32c/m32c.opc | 8 +- sim/m32c/mem.c | 16 +- sim/m32c/mem.h | 4 +- sim/m32c/r8c.opc | 6 +- sim/m32c/reg.c | 9 +- sim/m32c/sample2.c | 3 +- sim/m32c/srcdest.c | 18 +- sim/m32c/timer_a.h | 2 +- sim/m32c/trace.c | 6 +- sim/m32r/ChangeLog | 117 + sim/m32r/Makefile.in | 5 +- sim/m32r/aclocal.m4 | 17 +- sim/m32r/config.in | 5 +- sim/m32r/configure | 192 +- sim/m32r/configure.ac | 2 +- sim/m32r/decode.c | 118 +- sim/m32r/decode2.c | 144 +- sim/m32r/decodex.c | 144 +- sim/m32r/mloop.in | 6 +- sim/m32r/sem-switch.c | 254 +- sim/m32r/sem.c | 252 +- sim/m32r/sem2-switch.c | 522 +- sim/m32r/semx-switch.c | 508 +- sim/m32r/sim-if.c | 8 - sim/m32r/sim-main.h | 25 +- sim/m32r/{tconfig.in => tconfig.h} | 6 - sim/m32r/traps-linux.c | 64 +- sim/m32r/traps.c | 58 +- sim/m68hc11/ChangeLog | 111 + sim/m68hc11/Makefile.in | 9 +- sim/m68hc11/aclocal.m4 | 17 +- sim/m68hc11/config.in | 5 +- sim/m68hc11/configure | 199 +- sim/m68hc11/configure.ac | 8 - sim/m68hc11/gencode.c | 3 + sim/m68hc11/interp.c | 156 +- sim/m68hc11/m68hc11_sim.c | 14 +- sim/m68hc11/sim-main.h | 18 +- sim/mcore/ChangeLog | 208 + sim/mcore/Makefile.in | 17 +- sim/mcore/aclocal.m4 | 17 +- sim/mcore/config.in | 20 +- sim/mcore/configure | 668 +- sim/mcore/configure.ac | 7 +- sim/mcore/interp.c | 1127 +- sim/mcore/sim-main.h | 45 + sim/mcore/sysdep.h | 94 - sim/microblaze/ChangeLog | 185 + sim/microblaze/Makefile.in | 14 +- sim/microblaze/aclocal.m4 | 17 +- sim/microblaze/config.in | 20 +- sim/microblaze/configure | 668 +- sim/microblaze/configure.ac | 7 +- sim/microblaze/interp.c | 846 +- sim/microblaze/microblaze.h | 16 +- sim/microblaze/microblaze.isa | 6 +- sim/microblaze/sim-main.h | 18 +- sim/microblaze/sysdep.h | 94 - sim/mips/ChangeLog | 147 + sim/mips/Makefile.in | 9 +- sim/mips/aclocal.m4 | 17 +- sim/mips/config.in | 5 +- sim/mips/configure | 226 +- sim/mips/configure.ac | 18 +- sim/mips/dv-tx3904cpu.c | 8 +- sim/mips/interp.c | 171 +- sim/mips/m16run.c | 6 +- sim/mips/sim-main.c | 4 - sim/mips/sim-main.h | 24 +- sim/mips/tconfig.h | 17 + sim/mips/tconfig.in | 40 - sim/mn10300/ChangeLog | 157 + sim/mn10300/Makefile.in | 8 +- sim/mn10300/aclocal.m4 | 17 +- sim/mn10300/config.in | 5 +- sim/mn10300/configure | 318 +- sim/mn10300/configure.ac | 10 +- sim/mn10300/dv-mn103cpu.c | 12 +- sim/mn10300/interp.c | 107 +- sim/mn10300/mn10300_sim.h | 77 +- sim/mn10300/op_utils.c | 89 +- sim/mn10300/sim-main.h | 13 +- sim/mn10300/tconfig.in | 29 - sim/moxie/ChangeLog | 147 + sim/moxie/Makefile.in | 20 +- sim/moxie/aclocal.m4 | 17 +- sim/moxie/config.in | 5 +- sim/moxie/configure | 266 +- sim/moxie/configure.ac | 5 +- sim/moxie/interp.c | 526 +- sim/moxie/sim-main.h | 15 +- sim/moxie/sysdep.h | 94 - sim/msp430/ChangeLog | 116 + sim/msp430/Makefile.in | 26 +- sim/msp430/aclocal.m4 | 17 +- sim/msp430/config.in | 5 +- sim/msp430/configure | 300 +- sim/msp430/configure.ac | 2 + sim/msp430/msp430-sim.c | 338 +- sim/msp430/sim-main.h | 63 - sim/msp430/trace.c | 4 +- sim/msp430/trace.h | 2 +- sim/ppc/ChangeLog | 21 + sim/ppc/Makefile.in | 8 +- sim/ppc/config.in | 3 - sim/ppc/configure | 266 +- sim/ppc/hw_htab.c | 2 +- sim/rl78/ChangeLog | 51 + sim/rl78/aclocal.m4 | 17 +- sim/rl78/config.in | 5 +- sim/rl78/configure | 136 +- sim/rl78/cpu.c | 3 + sim/rl78/cpu.h | 6 +- sim/rl78/gdb-if.c | 31 + sim/rl78/load.c | 27 +- sim/rl78/main.c | 24 +- sim/rl78/mem.c | 36 +- sim/rl78/rl78.c | 10 +- sim/rl78/trace.c | 17 +- sim/rx/ChangeLog | 31 + sim/rx/aclocal.m4 | 17 +- sim/rx/config.in | 5 +- sim/rx/configure | 139 +- sim/rx/configure.ac | 6 +- sim/rx/reg.c | 2 +- sim/sh/ChangeLog | 151 + sim/sh/Makefile.in | 12 +- sim/sh/aclocal.m4 | 17 +- sim/sh/config.in | 20 +- sim/sh/configure | 668 +- sim/sh/configure.ac | 7 +- sim/sh/gencode.c | 111 +- sim/sh/interp.c | 582 +- sim/sh/sim-main.h | 141 + sim/sh/tconfig.in | 17 - sim/sh64/ChangeLog | 105 + sim/sh64/Makefile.in | 11 +- sim/sh64/aclocal.m4 | 17 +- sim/sh64/config.in | 5 +- sim/sh64/configure | 193 +- sim/sh64/configure.ac | 3 +- sim/sh64/decode-compact.c | 274 +- sim/sh64/decode-media.c | 170 +- sim/sh64/mloop-compact.c | 14 +- sim/sh64/mloop-media.c | 14 +- sim/sh64/sem-compact-switch.c | 600 +- sim/sh64/sem-compact.c | 598 +- sim/sh64/sem-media-switch.c | 476 +- sim/sh64/sem-media.c | 474 +- sim/sh64/sim-main.h | 12 +- sim/sh64/{tconfig.in => tconfig.h} | 9 - sim/testsuite/ChangeLog | 27 + sim/testsuite/configure | 34 +- sim/testsuite/configure.ac | 3 + sim/testsuite/d10v-elf/ChangeLog | 4 + sim/testsuite/d10v-elf/Makefile.in | 2 +- sim/testsuite/lib/sim-defs.exp | 14 +- sim/testsuite/sim/avr/ChangeLog | 7 + sim/testsuite/sim/avr/allinsn.exp | 15 + sim/testsuite/sim/avr/pass.s | 7 + sim/testsuite/sim/avr/testutils.inc | 42 + sim/testsuite/sim/cr16/ChangeLog | 5 + sim/testsuite/sim/cr16/testutils.inc | 2 + sim/testsuite/sim/ft32/ChangeLog | 3 + sim/testsuite/sim/ft32/allinsn.exp | 15 + sim/testsuite/sim/ft32/basic.s | 862 + sim/testsuite/sim/ft32/testutils.inc | 65 + sim/testsuite/sim/iq2000/ChangeLog | 3 + sim/testsuite/sim/iq2000/allinsn.exp | 15 + sim/testsuite/sim/iq2000/pass.s | 7 + sim/testsuite/sim/iq2000/testutils.inc | 53 + sim/testsuite/sim/lm32/ChangeLog | 3 + sim/testsuite/sim/lm32/allinsn.exp | 15 + sim/testsuite/sim/lm32/pass.s | 7 + sim/testsuite/sim/lm32/testutils.inc | 59 + sim/testsuite/sim/m68hc11/ChangeLog | 3 + sim/testsuite/sim/m68hc11/allinsn.exp | 15 + sim/testsuite/sim/m68hc11/pass.s | 7 + sim/testsuite/sim/m68hc11/testutils.inc | 53 + sim/testsuite/sim/mcore/ChangeLog | 3 + sim/testsuite/sim/mcore/allinsn.exp | 15 + sim/testsuite/sim/mcore/pass.s | 7 + sim/testsuite/sim/mcore/testutils.inc | 52 + sim/testsuite/sim/microblaze/ChangeLog | 3 + sim/testsuite/sim/microblaze/allinsn.exp | 15 + sim/testsuite/sim/microblaze/pass.s | 8 + sim/testsuite/sim/microblaze/testutils.inc | 29 + sim/testsuite/sim/mips/ChangeLog | 4 + sim/testsuite/sim/mips/basic.exp | 6 - sim/testsuite/sim/mn10300/ChangeLog | 3 + sim/testsuite/sim/mn10300/allinsn.exp | 15 + sim/testsuite/sim/mn10300/pass.s | 7 + sim/testsuite/sim/mn10300/testutils.inc | 63 + sim/testsuite/sim/moxie/ChangeLog | 3 + sim/testsuite/sim/moxie/allinsn.exp | 15 + sim/testsuite/sim/moxie/pass.s | 7 + sim/testsuite/sim/moxie/testutils.inc | 46 + sim/v850/ChangeLog | 130 + sim/v850/Makefile.in | 4 - sim/v850/aclocal.m4 | 17 +- sim/v850/config.in | 5 +- sim/v850/configure | 162 +- sim/v850/configure.ac | 2 +- sim/v850/interp.c | 88 +- sim/v850/sim-main.h | 99 +- sim/v850/simops.c | 338 +- sim/v850/v850-dc | 6 + sim/v850/v850.igen | 847 +- src-release.sh | 353 + zlib/CMakeLists.txt | 211 + zlib/ChangeLog | 1409 ++ zlib/ChangeLog.gcj | 365 + zlib/ChangeLog.jit | 22 + zlib/FAQ | 368 + zlib/INDEX | 68 + zlib/Makefile.am | 61 + zlib/Makefile.in | 697 + zlib/README | 118 + zlib/acinclude.m4 | 9 + zlib/aclocal.m4 | 979 + zlib/adler32.c | 179 + zlib/amiga/Makefile.pup | 69 + zlib/amiga/Makefile.sas | 68 + zlib/as400/bndsrc | 205 + zlib/as400/compile.clp | 110 + zlib/as400/readme.txt | 115 + zlib/as400/zlib.inc | 445 + zlib/compress.c | 80 + zlib/configure | 13426 ++++++++++++ zlib/configure.ac | 131 + zlib/contrib/README.contrib | 77 + zlib/contrib/ada/buffer_demo.adb | 106 + zlib/contrib/ada/mtest.adb | 156 + zlib/contrib/ada/read.adb | 156 + zlib/contrib/ada/readme.txt | 65 + zlib/contrib/ada/test.adb | 463 + zlib/contrib/ada/zlib-streams.adb | 225 + zlib/contrib/ada/zlib-streams.ads | 114 + zlib/contrib/ada/zlib-thin.adb | 141 + zlib/contrib/ada/zlib-thin.ads | 450 + zlib/contrib/ada/zlib.adb | 701 + zlib/contrib/ada/zlib.ads | 328 + zlib/contrib/ada/zlib.gpr | 20 + zlib/contrib/amd64/amd64-match.S | 452 + zlib/contrib/asm686/README.686 | 51 + zlib/contrib/asm686/match.S | 357 + zlib/contrib/blast/Makefile | 8 + zlib/contrib/blast/README | 4 + zlib/contrib/blast/blast.c | 444 + zlib/contrib/blast/blast.h | 71 + zlib/contrib/blast/test.pk | Bin 0 -> 8 bytes zlib/contrib/blast/test.txt | 1 + zlib/contrib/delphi/ZLib.pas | 557 + zlib/contrib/delphi/ZLibConst.pas | 11 + zlib/contrib/delphi/readme.txt | 76 + zlib/contrib/delphi/zlibd32.mak | 99 + zlib/contrib/dotzlib/DotZLib.build | 33 + zlib/contrib/dotzlib/DotZLib.chm | Bin 0 -> 72728 bytes zlib/contrib/dotzlib/DotZLib.sln | 21 + zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs | 58 + zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs | 202 + zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs | 83 + zlib/contrib/dotzlib/DotZLib/CodecBase.cs | 198 + zlib/contrib/dotzlib/DotZLib/Deflater.cs | 106 + zlib/contrib/dotzlib/DotZLib/DotZLib.cs | 288 + zlib/contrib/dotzlib/DotZLib/DotZLib.csproj | 141 + zlib/contrib/dotzlib/DotZLib/GZipStream.cs | 301 + zlib/contrib/dotzlib/DotZLib/Inflater.cs | 105 + zlib/contrib/dotzlib/DotZLib/UnitTests.cs | 274 + zlib/contrib/dotzlib/LICENSE_1_0.txt | 23 + zlib/contrib/dotzlib/readme.txt | 58 + zlib/contrib/gcc_gvmat64/gvmat64.S | 574 + zlib/contrib/infback9/README | 1 + zlib/contrib/infback9/infback9.c | 617 + zlib/contrib/infback9/infback9.h | 37 + zlib/contrib/infback9/inffix9.h | 107 + zlib/contrib/infback9/inflate9.h | 47 + zlib/contrib/infback9/inftree9.c | 324 + zlib/contrib/infback9/inftree9.h | 61 + zlib/contrib/inflate86/inffas86.c | 1157 + zlib/contrib/inflate86/inffast.S | 1368 ++ zlib/contrib/iostream/test.cpp | 24 + zlib/contrib/iostream/zfstream.cpp | 329 + zlib/contrib/iostream/zfstream.h | 128 + zlib/contrib/iostream2/zstream.h | 307 + zlib/contrib/iostream2/zstream_test.cpp | 25 + zlib/contrib/iostream3/README | 35 + zlib/contrib/iostream3/TODO | 17 + zlib/contrib/iostream3/test.cc | 50 + zlib/contrib/iostream3/zfstream.cc | 479 + zlib/contrib/iostream3/zfstream.h | 466 + zlib/contrib/masmx64/bld_ml64.bat | 2 + zlib/contrib/masmx64/gvmat64.asm | 553 + zlib/contrib/masmx64/gvmat64.obj | Bin 0 -> 4119 bytes zlib/contrib/masmx64/inffas8664.c | 186 + zlib/contrib/masmx64/inffasx64.asm | 396 + zlib/contrib/masmx64/inffasx64.obj | Bin 0 -> 5913 bytes zlib/contrib/masmx64/readme.txt | 31 + zlib/contrib/masmx86/bld_ml32.bat | 2 + zlib/contrib/masmx86/gvmat32.obj | Bin 0 -> 10241 bytes zlib/contrib/masmx86/inffas32.asm | 1080 + zlib/contrib/masmx86/inffas32.obj | Bin 0 -> 14893 bytes zlib/contrib/masmx86/match686.asm | 479 + zlib/contrib/masmx86/readme.txt | 27 + zlib/contrib/minizip/Makefile | 25 + zlib/contrib/minizip/Makefile.am | 45 + zlib/contrib/minizip/MiniZip64_Changes.txt | 6 + zlib/contrib/minizip/MiniZip64_info.txt | 74 + zlib/contrib/minizip/configure.ac | 32 + zlib/contrib/minizip/crypt.h | 131 + zlib/contrib/minizip/ioapi.c | 247 + zlib/contrib/minizip/ioapi.h | 208 + zlib/contrib/minizip/iowin32.c | 389 + zlib/contrib/minizip/iowin32.h | 28 + zlib/contrib/minizip/make_vms.com | 25 + zlib/contrib/minizip/miniunz.c | 660 + zlib/contrib/minizip/minizip.c | 520 + zlib/contrib/minizip/minizip.pc.in | 12 + zlib/contrib/minizip/mztools.c | 291 + zlib/contrib/minizip/mztools.h | 37 + zlib/contrib/minizip/unzip.c | 2125 ++ zlib/contrib/minizip/unzip.h | 437 + zlib/contrib/minizip/zip.c | 2007 ++ zlib/contrib/minizip/zip.h | 362 + zlib/contrib/pascal/example.pas | 599 + zlib/contrib/pascal/readme.txt | 76 + zlib/contrib/pascal/zlibd32.mak | 99 + zlib/contrib/pascal/zlibpas.pas | 276 + zlib/contrib/puff/Makefile | 42 + zlib/contrib/puff/README | 63 + zlib/contrib/puff/puff.c | 837 + zlib/contrib/puff/puff.h | 35 + zlib/contrib/puff/pufftest.c | 165 + zlib/contrib/puff/zeros.raw | Bin 0 -> 1213 bytes zlib/contrib/testzlib/testzlib.c | 275 + zlib/contrib/testzlib/testzlib.txt | 10 + zlib/contrib/untgz/Makefile | 14 + zlib/contrib/untgz/Makefile.msc | 17 + zlib/contrib/untgz/untgz.c | 674 + zlib/contrib/vstudio/readme.txt | 60 + zlib/contrib/vstudio/vc10/miniunz.vcxproj | 310 + zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters | 22 + zlib/contrib/vstudio/vc10/miniunz.vcxproj.user | 3 + zlib/contrib/vstudio/vc10/minizip.vcxproj | 307 + zlib/contrib/vstudio/vc10/minizip.vcxproj.filters | 22 + zlib/contrib/vstudio/vc10/minizip.vcxproj.user | 3 + zlib/contrib/vstudio/vc10/testzlib.vcxproj | 420 + zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters | 58 + zlib/contrib/vstudio/vc10/testzlib.vcxproj.user | 3 + zlib/contrib/vstudio/vc10/testzlibdll.vcxproj | 310 + .../vstudio/vc10/testzlibdll.vcxproj.filters | 22 + zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user | 3 + zlib/contrib/vstudio/vc10/zlib.rc | 32 + zlib/contrib/vstudio/vc10/zlibstat.vcxproj | 457 + zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters | 77 + zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user | 3 + zlib/contrib/vstudio/vc10/zlibvc.def | 139 + zlib/contrib/vstudio/vc10/zlibvc.sln | 135 + zlib/contrib/vstudio/vc10/zlibvc.vcxproj | 681 + zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters | 118 + zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user | 3 + zlib/contrib/vstudio/vc9/miniunz.vcproj | 565 + zlib/contrib/vstudio/vc9/minizip.vcproj | 562 + zlib/contrib/vstudio/vc9/testzlib.vcproj | 852 + zlib/contrib/vstudio/vc9/testzlibdll.vcproj | 565 + zlib/contrib/vstudio/vc9/zlib.rc | 32 + zlib/contrib/vstudio/vc9/zlibstat.vcproj | 835 + zlib/contrib/vstudio/vc9/zlibvc.def | 139 + zlib/contrib/vstudio/vc9/zlibvc.sln | 144 + zlib/contrib/vstudio/vc9/zlibvc.vcproj | 1156 + zlib/crc32.c | 425 + zlib/crc32.h | 441 + zlib/deflate.c | 1965 ++ zlib/deflate.h | 346 + zlib/doc/algorithm.txt | 209 + zlib/doc/rfc1950.txt | 619 + zlib/doc/rfc1951.txt | 955 + zlib/doc/rfc1952.txt | 675 + zlib/doc/txtvsbin.txt | 107 + zlib/example.c | 565 + zlib/examples/README.examples | 49 + zlib/examples/enough.c | 569 + zlib/examples/fitblk.c | 233 + zlib/examples/gun.c | 701 + zlib/examples/gzappend.c | 500 + zlib/examples/gzjoin.c | 448 + zlib/examples/gzlog.c | 1058 + zlib/examples/gzlog.h | 89 + zlib/examples/zlib_how.html | 545 + zlib/examples/zpipe.c | 205 + zlib/examples/zran.c | 404 + zlib/gzclose.c | 25 + zlib/gzguts.h | 193 + zlib/gzlib.c | 620 + zlib/gzread.c | 589 + zlib/gzwrite.c | 565 + zlib/infback.c | 640 + zlib/inffast.c | 340 + zlib/inffast.h | 11 + zlib/inffixed.h | 94 + zlib/inflate.c | 1496 ++ zlib/inflate.h | 122 + zlib/inftrees.c | 306 + zlib/inftrees.h | 62 + zlib/make_vms.com | 867 + zlib/minigzip.c | 440 + zlib/msdos/Makefile.bor | 115 + zlib/msdos/Makefile.dj2 | 104 + zlib/msdos/Makefile.emx | 69 + zlib/msdos/Makefile.msc | 112 + zlib/msdos/Makefile.tc | 100 + zlib/nintendods/Makefile | 126 + zlib/nintendods/README | 5 + zlib/old/Makefile.emx | 69 + zlib/old/Makefile.riscos | 151 + zlib/old/README | 3 + zlib/old/descrip.mms | 48 + zlib/old/os2/Makefile.os2 | 136 + zlib/old/os2/zlib.def | 51 + zlib/old/visual-basic.txt | 160 + zlib/qnx/package.qpg | 141 + zlib/test/example.c | 601 + zlib/test/infcover.c | 671 + zlib/test/minigzip.c | 631 + zlib/treebuild.xml | 116 + zlib/trees.c | 1224 ++ zlib/trees.h | 128 + zlib/uncompr.c | 59 + zlib/watcom/watcom_f.mak | 43 + zlib/watcom/watcom_l.mak | 43 + zlib/win32/DLL_FAQ.txt | 397 + zlib/win32/Makefile.bor | 110 + zlib/win32/Makefile.gcc | 182 + zlib/win32/Makefile.msc | 160 + zlib/win32/README-WIN32.txt | 103 + zlib/win32/VisualC.txt | 3 + zlib/win32/zlib.def | 84 + zlib/win32/zlib1.rc | 40 + zlib/zconf.h | 522 + zlib/zconf.h.cmakein | 508 + zlib/zconf.h.in | 506 + zlib/zlib.3 | 151 + zlib/zlib.h | 1744 ++ zlib/zlib.map | 78 + zlib/zlib.pc.cmakein | 13 + zlib/zlib.pc.in | 13 + zlib/zlib2ansi | 152 + zlib/zutil.c | 324 + zlib/zutil.h | 252 + 1989 files changed, 256838 insertions(+), 90371 deletions(-) create mode 100644 bfd/cpu-ft32.c create mode 100644 bfd/cpu-iamcu.c create mode 100644 bfd/elf32-ft32.c delete mode 100644 config/cloog.m4 create mode 100644 gdb/break-catch-syscall.c create mode 100644 gdb/build-with-cxx.m4 create mode 100644 gdb/common/btrace-common.c create mode 100644 gdb/common/common.host create mode 100644 gdb/common/fileio.c create mode 100644 gdb/common/fileio.h create mode 100644 gdb/common/mingw-strerror.c create mode 100644 gdb/common/posix-strerror.c delete mode 100644 gdb/config/ia64/hpux.mh delete mode 100644 gdb/config/pa/hpux.mh create mode 100644 gdb/dtrace-probe.c create mode 100644 gdb/features/btrace-conf.dtd mode change 100644 => 100755 gdb/features/feature_to_c.sh create mode 100644 gdb/features/s390-tevx-linux64.c create mode 100644 gdb/features/s390-tevx-linux64.xml create mode 100644 gdb/features/s390-vx-linux64.c create mode 100644 gdb/features/s390-vx-linux64.xml create mode 100644 gdb/features/s390-vx.xml create mode 100644 gdb/features/s390x-tevx-linux64.c create mode 100644 gdb/features/s390x-tevx-linux64.xml create mode 100644 gdb/features/s390x-vx-linux64.c create mode 100644 gdb/features/s390x-vx-linux64.xml create mode 100644 gdb/ft32-tdep.c rename gdb/{solib-ia64-hpux.h => ft32-tdep.h} (70%) create mode 100644 gdb/gnulib/import/m4/strtok_r.m4 create mode 100644 gdb/gnulib/import/strtok_r.c mode change 100644 => 100755 gdb/gnulib/update-gnulib.sh delete mode 100644 gdb/hppa-hpux-nat.c delete mode 100644 gdb/hppa-hpux-tdep.c rename gdb/{hppabsd-nat.c => hppaobsd-nat.c} (86%) create mode 100644 gdb/i386fbsd-tdep.h delete mode 100644 gdb/ia64-hpux-nat.c delete mode 100644 gdb/ia64-hpux-tdep.c delete mode 100644 gdb/inf-ttrace.c create mode 100644 gdb/libiberty.m4 create mode 100644 gdb/nat/linux-namespaces.c create mode 100644 gdb/nat/linux-namespaces.h create mode 100644 gdb/nat/linux-personality.c create mode 100644 gdb/nat/linux-personality.h create mode 100644 gdb/nat/ppc-linux.c create mode 100644 gdb/nat/ppc-linux.h create mode 100644 gdb/nat/x86-linux-dregs.c create mode 100644 gdb/nat/x86-linux-dregs.h create mode 100644 gdb/nat/x86-linux.c create mode 100644 gdb/nat/x86-linux.h create mode 100644 gdb/python/lib/gdb/command/unwinders.py create mode 100644 gdb/python/lib/gdb/unwinder.py create mode 100644 gdb/python/py-unwind.c create mode 100644 gdb/regformats/s390-tevx-linux64.dat create mode 100644 gdb/regformats/s390-vx-linux64.dat create mode 100644 gdb/regformats/s390x-tevx-linux64.dat create mode 100644 gdb/regformats/s390x-vx-linux64.dat delete mode 100644 gdb/solib-ia64-hpux.c delete mode 100644 gdb/solib-pa64.c delete mode 100644 gdb/solib-som.c delete mode 100644 gdb/somread.c rename gdb/{windows-termcap.c => stub-termcap.c} (57%) create mode 100644 gdb/syscalls/aarch64-linux.xml create mode 100644 gdb/testsuite/boards/remote-gdbserver-on-localhost.exp delete mode 100644 gdb/testsuite/dg-extract-results.py create mode 100644 gdb/testsuite/gdb.ada/byte_packed_arr.exp create mode 100644 gdb/testsuite/gdb.ada/byte_packed_arr/array_list_g.ads create mode 100644 gdb/testsuite/gdb.ada/byte_packed_arr/reprod.adb create mode 100644 gdb/testsuite/gdb.ada/byte_packed_arr/reprod.ads create mode 100644 gdb/testsuite/gdb.ada/byte_packed_arr/reprod_main.adb create mode 100644 gdb/testsuite/gdb.ada/disc_arr_bound.exp create mode 100644 gdb/testsuite/gdb.ada/disc_arr_bound/foo_n612_026.adb create mode 100644 gdb/testsuite/gdb.ada/disc_arr_bound/pck.adb create mode 100644 gdb/testsuite/gdb.ada/disc_arr_bound/pck.ads create mode 100644 gdb/testsuite/gdb.ada/funcall_ref.exp create mode 100644 gdb/testsuite/gdb.ada/funcall_ref/foo.adb create mode 100644 gdb/testsuite/gdb.ada/mi_var_array.exp create mode 100644 gdb/testsuite/gdb.ada/mi_var_array/bar.adb create mode 100644 gdb/testsuite/gdb.ada/mi_var_array/pck.adb create mode 100644 gdb/testsuite/gdb.ada/mi_var_array/pck.ads create mode 100644 gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp create mode 100644 gdb/testsuite/gdb.ada/out_of_line_in_inlined/bar.adb create mode 100644 gdb/testsuite/gdb.ada/out_of_line_in_inlined/bar.ads create mode 100644 gdb/testsuite/gdb.ada/out_of_line_in_inlined/foo_o224_021.adb create mode 100644 gdb/testsuite/gdb.ada/pckd_neg.exp create mode 100644 gdb/testsuite/gdb.ada/pckd_neg/foo_o508_021.adb create mode 100644 gdb/testsuite/gdb.ada/pckd_neg/pck.adb create mode 100644 gdb/testsuite/gdb.ada/pckd_neg/pck.ads create mode 100644 gdb/testsuite/gdb.ada/rec_comp.exp create mode 100644 gdb/testsuite/gdb.ada/rec_comp/bar_o203_012.adb create mode 100644 gdb/testsuite/gdb.ada/rec_comp/pck.adb create mode 100644 gdb/testsuite/gdb.ada/rec_comp/pck.ads create mode 100644 gdb/testsuite/gdb.ada/var_arr_attrs.exp create mode 100644 gdb/testsuite/gdb.ada/var_arr_attrs/foo_o115_002.adb create mode 100644 gdb/testsuite/gdb.ada/var_arr_attrs/pck.adb create mode 100644 gdb/testsuite/gdb.ada/var_arr_attrs/pck.ads create mode 100644 gdb/testsuite/gdb.ada/var_rec_arr.exp create mode 100644 gdb/testsuite/gdb.ada/var_rec_arr/foo_na09_042.adb create mode 100644 gdb/testsuite/gdb.ada/var_rec_arr/pck.adb create mode 100644 gdb/testsuite/gdb.ada/var_rec_arr/pck.ads create mode 100644 gdb/testsuite/gdb.arch/amd64-prologue-skip.S create mode 100644 gdb/testsuite/gdb.arch/amd64-prologue-skip.exp create mode 100644 gdb/testsuite/gdb.arch/amd64-tailcall-self.S create mode 100644 gdb/testsuite/gdb.arch/amd64-tailcall-self.c create mode 100644 gdb/testsuite/gdb.arch/amd64-tailcall-self.exp create mode 100644 gdb/testsuite/gdb.arch/cordic.ko.bz2 create mode 100644 gdb/testsuite/gdb.arch/cordic.ko.debug.bz2 create mode 100644 gdb/testsuite/gdb.arch/i386-biarch-core.core.bz2 create mode 100644 gdb/testsuite/gdb.arch/i386-biarch-core.exp create mode 100644 gdb/testsuite/gdb.arch/i386-mpx-map.c create mode 100644 gdb/testsuite/gdb.arch/i386-mpx-map.exp create mode 100644 gdb/testsuite/gdb.arch/ppc64-symtab-cordic.exp create mode 100644 gdb/testsuite/gdb.arch/s390-vregs.S create mode 100644 gdb/testsuite/gdb.arch/s390-vregs.exp create mode 100644 gdb/testsuite/gdb.base/catch-gdb-caused-signals.c create mode 100644 gdb/testsuite/gdb.base/catch-gdb-caused-signals.exp create mode 100644 gdb/testsuite/gdb.base/coredump-filter.c create mode 100644 gdb/testsuite/gdb.base/coredump-filter.exp create mode 100644 gdb/testsuite/gdb.base/dso2dso-dso1.c rename gdb/{ia64-hpux-tdep.h => testsuite/gdb.base/dso2dso-dso1.h} (79%) create mode 100644 gdb/testsuite/gdb.base/dso2dso-dso2.c rename gdb/{solib-pa64.h => testsuite/gdb.base/dso2dso-dso2.h} (76%) create mode 100644 gdb/testsuite/gdb.base/dso2dso.c create mode 100644 gdb/testsuite/gdb.base/dso2dso.exp create mode 100644 gdb/testsuite/gdb.base/dtrace-probe.c create mode 100644 gdb/testsuite/gdb.base/dtrace-probe.d create mode 100644 gdb/testsuite/gdb.base/dtrace-probe.exp create mode 100644 gdb/testsuite/gdb.base/gdbhistsize-history.exp create mode 100644 gdb/testsuite/gdb.base/gdbinit-history.exp create mode 100644 gdb/testsuite/gdb.base/gdbinit-history/unlimited/.gdbinit create mode 100644 gdb/testsuite/gdb.base/gdbinit-history/zero/.gdbinit create mode 100644 gdb/testsuite/gdb.base/history-duplicates.exp create mode 100644 gdb/testsuite/gdb.base/noreturn-finish.c create mode 100644 gdb/testsuite/gdb.base/noreturn-finish.exp create mode 100644 gdb/testsuite/gdb.base/noreturn-return.c create mode 100644 gdb/testsuite/gdb.base/noreturn-return.exp create mode 100644 gdb/testsuite/gdb.base/step-over-no-symbols.exp create mode 100644 gdb/testsuite/gdb.btrace/buffer-size.exp create mode 100644 gdb/testsuite/gdb.btrace/i686-record_goto.S create mode 100644 gdb/testsuite/gdb.btrace/i686-tailcall.S delete mode 100644 gdb/testsuite/gdb.btrace/next.exp delete mode 100644 gdb/testsuite/gdb.btrace/nexti.exp rename gdb/testsuite/gdb.btrace/{finish.exp => record_goto-step.exp} (51%) rename gdb/testsuite/gdb.btrace/{x86-tailcall.c => tailcall.c} (96%) rename gdb/testsuite/gdb.btrace/{x86-record_goto.S => x86_64-record_goto.S} (99%) rename gdb/testsuite/gdb.btrace/{x86-tailcall.S => x86_64-tailcall.S} (50%) create mode 100644 gdb/testsuite/gdb.compile/compile-ifunc.c create mode 100644 gdb/testsuite/gdb.compile/compile-ifunc.exp create mode 100644 gdb/testsuite/gdb.compile/compile-print.c create mode 100644 gdb/testsuite/gdb.compile/compile-print.exp create mode 100644 gdb/testsuite/gdb.cp/iostream.cc create mode 100644 gdb/testsuite/gdb.cp/iostream.exp create mode 100644 gdb/testsuite/gdb.cp/var-tag-2.cc rename gdb/{inf-ttrace.h => testsuite/gdb.cp/var-tag-3.cc} (64%) create mode 100644 gdb/testsuite/gdb.cp/var-tag-4.cc create mode 100644 gdb/testsuite/gdb.cp/var-tag.cc create mode 100644 gdb/testsuite/gdb.cp/var-tag.exp create mode 100644 gdb/testsuite/gdb.dwarf2/atomic-type.exp create mode 100644 gdb/testsuite/gdb.dwarf2/atomic.c create mode 100644 gdb/testsuite/gdb.dwarf2/opaque-type-lookup-2.c create mode 100644 gdb/testsuite/gdb.dwarf2/opaque-type-lookup.c create mode 100644 gdb/testsuite/gdb.dwarf2/opaque-type-lookup.exp create mode 100644 gdb/testsuite/gdb.dwarf2/staticvirtual.exp create mode 100644 gdb/testsuite/gdb.guile/scm-ports.c delete mode 100644 gdb/testsuite/gdb.hp/Makefile.in delete mode 100644 gdb/testsuite/gdb.hp/gdb.aCC/Makefile.in delete mode 100644 gdb/testsuite/gdb.hp/gdb.aCC/optimize.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.aCC/optimize.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.aCC/run.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.aCC/watch-cmd.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/Makefile.in delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/callfwmall.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/callfwmall.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/dollar.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/dollar.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/genso-thresh.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/hwwatchbus.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/hwwatchbus.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/pxdb.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/pxdb.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/reg-pa64.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/reg-pa64.s delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/reg.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/reg.s delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/sized-enum.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/sized-enum.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/so-thresh.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.base-hp/so-thresh.mk delete mode 100755 gdb/testsuite/gdb.hp/gdb.base-hp/so-thresh.sh delete mode 100644 gdb/testsuite/gdb.hp/gdb.compat/Makefile.in delete mode 100644 gdb/testsuite/gdb.hp/gdb.compat/average.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.compat/sum.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.compat/xdb.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.compat/xdb0.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.compat/xdb0.h delete mode 100644 gdb/testsuite/gdb.hp/gdb.compat/xdb1.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.compat/xdb1.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.compat/xdb2.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.compat/xdb3.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.defects/Makefile.in delete mode 100644 gdb/testsuite/gdb.hp/gdb.defects/bs14602.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.defects/bs14602.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.defects/solib-d.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.defects/solib-d.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.defects/solib-d1.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.defects/solib-d2.c delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/Makefile.in delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01/x1.cc delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01/x2.cc delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01/x3.cc delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg01/x3.h delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02/x1.cc delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02/x2.cc delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg02/x3.cc delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg03.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg03/x1.cc delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg03/x2.cc delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg03/x3.cc delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg04.exp delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg04/x.h delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg04/x1.cc delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/objdbg04/x2.cc delete mode 100755 gdb/testsuite/gdb.hp/gdb.objdbg/tools/symaddr delete mode 100755 gdb/testsuite/gdb.hp/gdb.objdbg/tools/symaddr.pa64 delete mode 100644 gdb/testsuite/gdb.hp/gdb.objdbg/tools/test-objdbg.cc delete mode 100755 gdb/testsuite/gdb.hp/tools/odump create mode 100644 gdb/testsuite/gdb.linespec/keywords.c create mode 100644 gdb/testsuite/gdb.linespec/keywords.exp create mode 100644 gdb/testsuite/gdb.mi/mi-detach.exp create mode 100644 gdb/testsuite/gdb.mi/mi-dprintf-pending.c create mode 100644 gdb/testsuite/gdb.mi/mi-dprintf-pending.exp create mode 100644 gdb/testsuite/gdb.mi/mi-dprintf-pendshr.c create mode 100644 gdb/testsuite/gdb.mi/mi-pendshr2.c create mode 100644 gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.c create mode 100644 gdb/testsuite/gdb.mi/mi-var-list-children-invalid-grandchild.exp create mode 100644 gdb/testsuite/gdb.pascal/case-insensitive-symbols.exp create mode 100644 gdb/testsuite/gdb.pascal/case-insensitive-symbols.pas create mode 100644 gdb/testsuite/gdb.pascal/stub-method.exp create mode 100644 gdb/testsuite/gdb.pascal/stub-method.pas create mode 100644 gdb/testsuite/gdb.python/py-bad-printers.c create mode 100644 gdb/testsuite/gdb.python/py-bad-printers.exp create mode 100644 gdb/testsuite/gdb.python/py-bad-printers.py create mode 100644 gdb/testsuite/gdb.python/py-lazy-string.c create mode 100644 gdb/testsuite/gdb.python/py-lazy-string.exp create mode 100644 gdb/testsuite/gdb.python/py-pp-registration.c create mode 100644 gdb/testsuite/gdb.python/py-pp-registration.exp create mode 100644 gdb/testsuite/gdb.python/py-pp-registration.py create mode 100644 gdb/testsuite/gdb.python/py-unwind-maint.c create mode 100644 gdb/testsuite/gdb.python/py-unwind-maint.exp create mode 100644 gdb/testsuite/gdb.python/py-unwind-maint.py create mode 100644 gdb/testsuite/gdb.python/py-unwind.c create mode 100644 gdb/testsuite/gdb.python/py-unwind.exp create mode 100644 gdb/testsuite/gdb.python/py-unwind.py create mode 100644 gdb/testsuite/gdb.reverse/aarch64.c create mode 100644 gdb/testsuite/gdb.reverse/aarch64.exp create mode 100644 gdb/testsuite/gdb.server/non-existing-program.exp create mode 100644 gdb/testsuite/gdb.threads/clone-thread_db.c create mode 100644 gdb/testsuite/gdb.threads/clone-thread_db.exp create mode 100644 gdb/testsuite/gdb.threads/continue-pending-status.c create mode 100644 gdb/testsuite/gdb.threads/continue-pending-status.exp create mode 100644 gdb/testsuite/gdb.threads/fork-plus-threads.c create mode 100644 gdb/testsuite/gdb.threads/fork-plus-threads.exp create mode 100644 gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.c create mode 100644 gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.exp create mode 100644 gdb/testsuite/gdb.threads/hand-call-new-thread.c create mode 100644 gdb/testsuite/gdb.threads/hand-call-new-thread.exp create mode 100644 gdb/testsuite/gdb.threads/multi-create-ns-info-thr.exp create mode 100644 gdb/testsuite/gdb.threads/next-while-other-thread-longjmps.c create mode 100644 gdb/testsuite/gdb.threads/next-while-other-thread-longjmps.exp create mode 100644 gdb/testsuite/gdb.threads/signal-sigtrap.c create mode 100644 gdb/testsuite/gdb.threads/signal-sigtrap.exp create mode 100644 gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.c create mode 100644 gdb/testsuite/gdb.threads/step-bg-decr-pc-switch-thread.exp create mode 100644 gdb/testsuite/gdb.threads/tid-reuse.c create mode 100644 gdb/testsuite/gdb.threads/tid-reuse.exp create mode 100644 gdb/testsuite/gdb.trace/no-attach-trace.c create mode 100644 gdb/testsuite/gdb.trace/no-attach-trace.exp create mode 100644 gdb/testsuite/lib/dtrace.exp create mode 100755 gdb/testsuite/lib/pdtrace create mode 100755 gdb/testsuite/lib/pdtrace.in create mode 100644 gdb/testsuite/lib/unbuffer_output.c create mode 100644 gdb/transform.m4 create mode 100644 include/elf/ft32.h create mode 100644 include/gdb/sim-ft32.h create mode 100644 include/opcode/ft32.h create mode 100644 include/opcode/nios2r2.h create mode 100644 opcodes/ft32-dis.c create mode 100644 opcodes/ft32-opc.c rename gdb/solib-som.h => sim/arm/sim-main.h (60%) delete mode 100644 sim/arm/tconfig.in create mode 100644 sim/avr/sim-main.h rename sim/bfin/{tconfig.in => tconfig.h} (66%) mode change 100644 => 100755 sim/common/cgen.sh delete mode 100755 sim/common/create-version.sh mode change 100644 => 100755 sim/common/genmloop.sh mode change 100644 => 100755 sim/common/gennltvals.sh mode change 100644 => 100755 sim/common/gentvals.sh delete mode 100644 sim/common/run-sim.h delete mode 100644 sim/common/run.c create mode 100644 sim/common/sim-syscall.c create mode 100644 sim/common/sim-syscall.h rename sim/common/{tconfig.in => tconfig.h} (52%) mode change 100644 => 100755 sim/cr16/configure create mode 100644 sim/cr16/sim-main.h rename sim/cris/{tconfig.in => tconfig.h} (86%) create mode 100644 sim/d10v/sim-main.h delete mode 100644 sim/erc32/end.c rename sim/frv/{tconfig.in => tconfig.h} (89%) create mode 100644 sim/ft32/ChangeLog create mode 100644 sim/ft32/Makefile.in create mode 100644 sim/ft32/aclocal.m4 create mode 100644 sim/ft32/config.in create mode 100755 sim/ft32/configure create mode 100644 sim/ft32/configure.ac create mode 100644 sim/ft32/ft32-sim.h create mode 100644 sim/ft32/interp.c create mode 100644 sim/ft32/sim-main.h rename sim/h8300/{tconfig.in => tconfig.h} (65%) rename sim/iq2000/{tconfig.in => tconfig.h} (89%) rename sim/lm32/{tconfig.in => tconfig.h} (100%) rename sim/m32r/{tconfig.in => tconfig.h} (89%) create mode 100644 sim/mcore/sim-main.h delete mode 100644 sim/mcore/sysdep.h mode change 100644 => 100755 sim/microblaze/configure delete mode 100644 sim/microblaze/sysdep.h create mode 100644 sim/mips/tconfig.h delete mode 100644 sim/mips/tconfig.in delete mode 100644 sim/mn10300/tconfig.in mode change 100644 => 100755 sim/moxie/configure delete mode 100644 sim/moxie/sysdep.h create mode 100644 sim/sh/sim-main.h delete mode 100644 sim/sh/tconfig.in rename sim/sh64/{tconfig.in => tconfig.h} (82%) create mode 100644 sim/testsuite/sim/avr/ChangeLog create mode 100644 sim/testsuite/sim/avr/allinsn.exp create mode 100644 sim/testsuite/sim/avr/pass.s create mode 100644 sim/testsuite/sim/avr/testutils.inc create mode 100644 sim/testsuite/sim/ft32/ChangeLog create mode 100644 sim/testsuite/sim/ft32/allinsn.exp create mode 100644 sim/testsuite/sim/ft32/basic.s create mode 100644 sim/testsuite/sim/ft32/testutils.inc create mode 100644 sim/testsuite/sim/iq2000/ChangeLog create mode 100644 sim/testsuite/sim/iq2000/allinsn.exp create mode 100644 sim/testsuite/sim/iq2000/pass.s create mode 100644 sim/testsuite/sim/iq2000/testutils.inc create mode 100644 sim/testsuite/sim/lm32/ChangeLog create mode 100644 sim/testsuite/sim/lm32/allinsn.exp create mode 100644 sim/testsuite/sim/lm32/pass.s create mode 100644 sim/testsuite/sim/lm32/testutils.inc create mode 100644 sim/testsuite/sim/m68hc11/ChangeLog create mode 100644 sim/testsuite/sim/m68hc11/allinsn.exp create mode 100644 sim/testsuite/sim/m68hc11/pass.s create mode 100644 sim/testsuite/sim/m68hc11/testutils.inc create mode 100644 sim/testsuite/sim/mcore/ChangeLog create mode 100644 sim/testsuite/sim/mcore/allinsn.exp create mode 100644 sim/testsuite/sim/mcore/pass.s create mode 100644 sim/testsuite/sim/mcore/testutils.inc create mode 100644 sim/testsuite/sim/microblaze/ChangeLog create mode 100644 sim/testsuite/sim/microblaze/allinsn.exp create mode 100644 sim/testsuite/sim/microblaze/pass.s create mode 100644 sim/testsuite/sim/microblaze/testutils.inc create mode 100644 sim/testsuite/sim/mn10300/ChangeLog create mode 100644 sim/testsuite/sim/mn10300/allinsn.exp create mode 100644 sim/testsuite/sim/mn10300/pass.s create mode 100644 sim/testsuite/sim/mn10300/testutils.inc create mode 100644 sim/testsuite/sim/moxie/ChangeLog create mode 100644 sim/testsuite/sim/moxie/allinsn.exp create mode 100644 sim/testsuite/sim/moxie/pass.s create mode 100644 sim/testsuite/sim/moxie/testutils.inc create mode 100755 src-release.sh create mode 100644 zlib/CMakeLists.txt create mode 100644 zlib/ChangeLog create mode 100644 zlib/ChangeLog.gcj create mode 100644 zlib/ChangeLog.jit create mode 100644 zlib/FAQ create mode 100644 zlib/INDEX create mode 100644 zlib/Makefile.am create mode 100644 zlib/Makefile.in create mode 100644 zlib/README create mode 100644 zlib/acinclude.m4 create mode 100644 zlib/aclocal.m4 create mode 100644 zlib/adler32.c create mode 100644 zlib/amiga/Makefile.pup create mode 100644 zlib/amiga/Makefile.sas create mode 100644 zlib/as400/bndsrc create mode 100644 zlib/as400/compile.clp create mode 100644 zlib/as400/readme.txt create mode 100644 zlib/as400/zlib.inc create mode 100644 zlib/compress.c create mode 100755 zlib/configure create mode 100644 zlib/configure.ac create mode 100644 zlib/contrib/README.contrib create mode 100644 zlib/contrib/ada/buffer_demo.adb create mode 100644 zlib/contrib/ada/mtest.adb create mode 100644 zlib/contrib/ada/read.adb create mode 100644 zlib/contrib/ada/readme.txt create mode 100644 zlib/contrib/ada/test.adb create mode 100644 zlib/contrib/ada/zlib-streams.adb create mode 100644 zlib/contrib/ada/zlib-streams.ads create mode 100644 zlib/contrib/ada/zlib-thin.adb create mode 100644 zlib/contrib/ada/zlib-thin.ads create mode 100644 zlib/contrib/ada/zlib.adb create mode 100644 zlib/contrib/ada/zlib.ads create mode 100644 zlib/contrib/ada/zlib.gpr create mode 100644 zlib/contrib/amd64/amd64-match.S create mode 100644 zlib/contrib/asm686/README.686 create mode 100644 zlib/contrib/asm686/match.S create mode 100644 zlib/contrib/blast/Makefile create mode 100644 zlib/contrib/blast/README create mode 100644 zlib/contrib/blast/blast.c create mode 100644 zlib/contrib/blast/blast.h create mode 100644 zlib/contrib/blast/test.pk create mode 100644 zlib/contrib/blast/test.txt create mode 100644 zlib/contrib/delphi/ZLib.pas create mode 100644 zlib/contrib/delphi/ZLibConst.pas create mode 100644 zlib/contrib/delphi/readme.txt create mode 100644 zlib/contrib/delphi/zlibd32.mak create mode 100644 zlib/contrib/dotzlib/DotZLib.build create mode 100644 zlib/contrib/dotzlib/DotZLib.chm create mode 100644 zlib/contrib/dotzlib/DotZLib.sln create mode 100644 zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs create mode 100644 zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs create mode 100644 zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs create mode 100644 zlib/contrib/dotzlib/DotZLib/CodecBase.cs create mode 100644 zlib/contrib/dotzlib/DotZLib/Deflater.cs create mode 100644 zlib/contrib/dotzlib/DotZLib/DotZLib.cs create mode 100644 zlib/contrib/dotzlib/DotZLib/DotZLib.csproj create mode 100644 zlib/contrib/dotzlib/DotZLib/GZipStream.cs create mode 100644 zlib/contrib/dotzlib/DotZLib/Inflater.cs create mode 100644 zlib/contrib/dotzlib/DotZLib/UnitTests.cs create mode 100644 zlib/contrib/dotzlib/LICENSE_1_0.txt create mode 100644 zlib/contrib/dotzlib/readme.txt create mode 100644 zlib/contrib/gcc_gvmat64/gvmat64.S create mode 100644 zlib/contrib/infback9/README create mode 100644 zlib/contrib/infback9/infback9.c create mode 100644 zlib/contrib/infback9/infback9.h create mode 100644 zlib/contrib/infback9/inffix9.h create mode 100644 zlib/contrib/infback9/inflate9.h create mode 100644 zlib/contrib/infback9/inftree9.c create mode 100644 zlib/contrib/infback9/inftree9.h create mode 100644 zlib/contrib/inflate86/inffas86.c create mode 100644 zlib/contrib/inflate86/inffast.S create mode 100644 zlib/contrib/iostream/test.cpp create mode 100644 zlib/contrib/iostream/zfstream.cpp create mode 100644 zlib/contrib/iostream/zfstream.h create mode 100644 zlib/contrib/iostream2/zstream.h create mode 100644 zlib/contrib/iostream2/zstream_test.cpp create mode 100644 zlib/contrib/iostream3/README create mode 100644 zlib/contrib/iostream3/TODO create mode 100644 zlib/contrib/iostream3/test.cc create mode 100644 zlib/contrib/iostream3/zfstream.cc create mode 100644 zlib/contrib/iostream3/zfstream.h create mode 100644 zlib/contrib/masmx64/bld_ml64.bat create mode 100644 zlib/contrib/masmx64/gvmat64.asm create mode 100644 zlib/contrib/masmx64/gvmat64.obj create mode 100644 zlib/contrib/masmx64/inffas8664.c create mode 100644 zlib/contrib/masmx64/inffasx64.asm create mode 100644 zlib/contrib/masmx64/inffasx64.obj create mode 100644 zlib/contrib/masmx64/readme.txt create mode 100644 zlib/contrib/masmx86/bld_ml32.bat create mode 100644 zlib/contrib/masmx86/gvmat32.obj create mode 100644 zlib/contrib/masmx86/inffas32.asm create mode 100644 zlib/contrib/masmx86/inffas32.obj create mode 100644 zlib/contrib/masmx86/match686.asm create mode 100644 zlib/contrib/masmx86/readme.txt create mode 100644 zlib/contrib/minizip/Makefile create mode 100644 zlib/contrib/minizip/Makefile.am create mode 100644 zlib/contrib/minizip/MiniZip64_Changes.txt create mode 100644 zlib/contrib/minizip/MiniZip64_info.txt create mode 100644 zlib/contrib/minizip/configure.ac create mode 100644 zlib/contrib/minizip/crypt.h create mode 100644 zlib/contrib/minizip/ioapi.c create mode 100644 zlib/contrib/minizip/ioapi.h create mode 100644 zlib/contrib/minizip/iowin32.c create mode 100644 zlib/contrib/minizip/iowin32.h create mode 100644 zlib/contrib/minizip/make_vms.com create mode 100644 zlib/contrib/minizip/miniunz.c create mode 100644 zlib/contrib/minizip/minizip.c create mode 100644 zlib/contrib/minizip/minizip.pc.in create mode 100644 zlib/contrib/minizip/mztools.c create mode 100644 zlib/contrib/minizip/mztools.h create mode 100644 zlib/contrib/minizip/unzip.c create mode 100644 zlib/contrib/minizip/unzip.h create mode 100644 zlib/contrib/minizip/zip.c create mode 100644 zlib/contrib/minizip/zip.h create mode 100644 zlib/contrib/pascal/example.pas create mode 100644 zlib/contrib/pascal/readme.txt create mode 100644 zlib/contrib/pascal/zlibd32.mak create mode 100644 zlib/contrib/pascal/zlibpas.pas create mode 100644 zlib/contrib/puff/Makefile create mode 100644 zlib/contrib/puff/README create mode 100644 zlib/contrib/puff/puff.c create mode 100644 zlib/contrib/puff/puff.h create mode 100644 zlib/contrib/puff/pufftest.c create mode 100644 zlib/contrib/puff/zeros.raw create mode 100644 zlib/contrib/testzlib/testzlib.c create mode 100644 zlib/contrib/testzlib/testzlib.txt create mode 100644 zlib/contrib/untgz/Makefile create mode 100644 zlib/contrib/untgz/Makefile.msc create mode 100644 zlib/contrib/untgz/untgz.c create mode 100644 zlib/contrib/vstudio/readme.txt create mode 100644 zlib/contrib/vstudio/vc10/miniunz.vcxproj create mode 100644 zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters create mode 100644 zlib/contrib/vstudio/vc10/miniunz.vcxproj.user create mode 100644 zlib/contrib/vstudio/vc10/minizip.vcxproj create mode 100644 zlib/contrib/vstudio/vc10/minizip.vcxproj.filters create mode 100644 zlib/contrib/vstudio/vc10/minizip.vcxproj.user create mode 100644 zlib/contrib/vstudio/vc10/testzlib.vcxproj create mode 100644 zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters create mode 100644 zlib/contrib/vstudio/vc10/testzlib.vcxproj.user create mode 100644 zlib/contrib/vstudio/vc10/testzlibdll.vcxproj create mode 100644 zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters create mode 100644 zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user create mode 100644 zlib/contrib/vstudio/vc10/zlib.rc create mode 100644 zlib/contrib/vstudio/vc10/zlibstat.vcxproj create mode 100644 zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters create mode 100644 zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user create mode 100644 zlib/contrib/vstudio/vc10/zlibvc.def create mode 100644 zlib/contrib/vstudio/vc10/zlibvc.sln create mode 100644 zlib/contrib/vstudio/vc10/zlibvc.vcxproj create mode 100644 zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters create mode 100644 zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user create mode 100644 zlib/contrib/vstudio/vc9/miniunz.vcproj create mode 100644 zlib/contrib/vstudio/vc9/minizip.vcproj create mode 100644 zlib/contrib/vstudio/vc9/testzlib.vcproj create mode 100644 zlib/contrib/vstudio/vc9/testzlibdll.vcproj create mode 100644 zlib/contrib/vstudio/vc9/zlib.rc create mode 100644 zlib/contrib/vstudio/vc9/zlibstat.vcproj create mode 100644 zlib/contrib/vstudio/vc9/zlibvc.def create mode 100644 zlib/contrib/vstudio/vc9/zlibvc.sln create mode 100644 zlib/contrib/vstudio/vc9/zlibvc.vcproj create mode 100644 zlib/crc32.c create mode 100644 zlib/crc32.h create mode 100644 zlib/deflate.c create mode 100644 zlib/deflate.h create mode 100644 zlib/doc/algorithm.txt create mode 100644 zlib/doc/rfc1950.txt create mode 100644 zlib/doc/rfc1951.txt create mode 100644 zlib/doc/rfc1952.txt create mode 100644 zlib/doc/txtvsbin.txt create mode 100644 zlib/example.c create mode 100644 zlib/examples/README.examples create mode 100644 zlib/examples/enough.c create mode 100644 zlib/examples/fitblk.c create mode 100644 zlib/examples/gun.c create mode 100644 zlib/examples/gzappend.c create mode 100644 zlib/examples/gzjoin.c create mode 100644 zlib/examples/gzlog.c create mode 100644 zlib/examples/gzlog.h create mode 100644 zlib/examples/zlib_how.html create mode 100644 zlib/examples/zpipe.c create mode 100644 zlib/examples/zran.c create mode 100644 zlib/gzclose.c create mode 100644 zlib/gzguts.h create mode 100644 zlib/gzlib.c create mode 100644 zlib/gzread.c create mode 100644 zlib/gzwrite.c create mode 100644 zlib/infback.c create mode 100644 zlib/inffast.c create mode 100644 zlib/inffast.h create mode 100644 zlib/inffixed.h create mode 100644 zlib/inflate.c create mode 100644 zlib/inflate.h create mode 100644 zlib/inftrees.c create mode 100644 zlib/inftrees.h create mode 100644 zlib/make_vms.com create mode 100644 zlib/minigzip.c create mode 100644 zlib/msdos/Makefile.bor create mode 100644 zlib/msdos/Makefile.dj2 create mode 100644 zlib/msdos/Makefile.emx create mode 100644 zlib/msdos/Makefile.msc create mode 100644 zlib/msdos/Makefile.tc create mode 100644 zlib/nintendods/Makefile create mode 100644 zlib/nintendods/README create mode 100644 zlib/old/Makefile.emx create mode 100644 zlib/old/Makefile.riscos create mode 100644 zlib/old/README create mode 100644 zlib/old/descrip.mms create mode 100644 zlib/old/os2/Makefile.os2 create mode 100644 zlib/old/os2/zlib.def create mode 100644 zlib/old/visual-basic.txt create mode 100644 zlib/qnx/package.qpg create mode 100644 zlib/test/example.c create mode 100644 zlib/test/infcover.c create mode 100644 zlib/test/minigzip.c create mode 100644 zlib/treebuild.xml create mode 100644 zlib/trees.c create mode 100644 zlib/trees.h create mode 100644 zlib/uncompr.c create mode 100644 zlib/watcom/watcom_f.mak create mode 100644 zlib/watcom/watcom_l.mak create mode 100644 zlib/win32/DLL_FAQ.txt create mode 100644 zlib/win32/Makefile.bor create mode 100644 zlib/win32/Makefile.gcc create mode 100644 zlib/win32/Makefile.msc create mode 100644 zlib/win32/README-WIN32.txt create mode 100644 zlib/win32/VisualC.txt create mode 100644 zlib/win32/zlib.def create mode 100644 zlib/win32/zlib1.rc create mode 100644 zlib/zconf.h create mode 100644 zlib/zconf.h.cmakein create mode 100644 zlib/zconf.h.in create mode 100644 zlib/zlib.3 create mode 100644 zlib/zlib.h create mode 100644 zlib/zlib.map create mode 100644 zlib/zlib.pc.cmakein create mode 100644 zlib/zlib.pc.in create mode 100644 zlib/zlib2ansi create mode 100644 zlib/zutil.c create mode 100644 zlib/zutil.h diff --git a/ChangeLog b/ChangeLog index 6dcf4ca..0daaa5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,104 @@ +2015-06-30 H.J. Lu + + * configure.ac (ospace_frag): Enable for i?86*-*-elfiamcu + target. + * configure: Regenerate. + +2015-05-13 John David Anglin + + * configure.ac: Disable configuration of GDB for HPUX targets. + * configure: Regenerate. + +2015-05-01 H.J. Lu + + PR ld/18355 + * Makefile.def: Add extra_configure_flags to host zlib. + * configure.ac (extra_host_zlib_configure_flags): New. Set + to --enable-host-shared When bfd is to be built as shared + library. AC_SUBST. + * Makefile.in: Regenerated. + +2015-04-15 Mike Frysinger + Hans-Peter Nilsson + + Adjust src-release.sh for sim using the gdb create-version.sh. + * src-release.sh (tar_compress): If there's a fifth parameter, + use that in the getver call instead of $tool. + (sim_release): Pass gdb as fifth parameter to tar_compress. + (SIM_SUPPORT_DIRS): Add gdb/common/create-version.sh. + +2015-04-14 Max Ostapenko + + * Makefile.tpl (EXTRA_HOST_EXPORTS): New variables. + (EXTRA_BOOTSTRAP_FLAGS): Likewise. + (check-[+module+]): Add EXTRA_HOST_EXPORTS and EXTRA_BOOTSTRAP_FLAGS. + * Makefile.in: Regenerate. + +2015-04-01 H.J. Lu + + * configure.ac: Add --with-system-zlib. + * configure: Regenerated. + +2015-03-31 H.J. Lu + + * src-release.sh: Don't configure with --with-target-subdir=. + --disable-multilib. + +2015-03-31 H.J. Lu + + * src-release.sh (DEVO_SUPPORT): Replace src-release with + src-release.sh. + +2015-03-30 Ed Schouten + + * config.sub: Update from upstream, to 2015-03-04 version. + * config.guess: Likewise. + +2015-03-30 H.J. Lu + + * Makefile.def (dependencies): Add all-zlib to all-bfd. + * Makefile.in: Regenerated. + +2015-03-28 H.J. Lu + + * src-release.sh (do_proto_toplev): Configure with --target + --with-target-subdir and --disable-multilib. + (BINUTILS_SUPPORT_DIRS): Add zlib. + (GAS_SUPPORT_DIRS): Likewise. + (GDB_SUPPORT_DIRS): Likewise. + (SIM_SUPPORT_DIRS): Likewise. + +2015-03-17 H.J. Lu + + * configure.ac (target_configdirs): Exclude target-zlib if + target-libjava isn't built. + * configure: Regenerated. + +2015-03-17 H.J. Lu + + Sync with GCC + 2014-06-13 Thomas Schwinge + + * config-ml.in: Robustify ac_configure_args parsing. + +2015-03-16 H.J. Lu + + * Makefile.def: Updated from GCC trunk. + * Makefile.tpl: Likewise. + * configure.ac: Likewise. + * Makefile.in: Regenerated. + * configure: Likewise. + +2015-01-28 James Bowman + + * configure.ac: Add FT32 support. + * configure: Regenerate. + +2015-01-12 Anthony Green + + * configure.ac: Don't disable gprof for moxie. + * configure: Rebuild. + 2015-01-03 Andrew Pinski * Makefile.def (flags_to_pass): Pass OBJCOPY_FOR_TARGET also. diff --git a/Makefile.def b/Makefile.def index 7b739ff..4394188 100644 --- a/Makefile.def +++ b/Makefile.def @@ -30,6 +30,8 @@ build_modules= { module= flex; }; build_modules= { module= m4; }; build_modules= { module= texinfo; }; build_modules= { module= fixincludes; }; +build_modules= { module= libcpp; + extra_configure_flags='--disable-nls am_cv_func_iconv=no';}; host_modules= { module= bfd; bootstrap=true; }; host_modules= { module= opcodes; bootstrap=true; }; @@ -46,7 +48,8 @@ host_modules= { module= gas; bootstrap=true; }; host_modules= { module= gcc; bootstrap=true; extra_make_flags="$(EXTRA_GCC_FLAGS)"; }; host_modules= { module= gmp; lib_path=.libs; bootstrap=true; - extra_configure_flags='--disable-shared'; + // Work around in-tree gmp configure bug with missing flex. + extra_configure_flags='--disable-shared LEX="touch lex.yy.c"'; no_install= true; // none-*-* disables asm optimizations, bootstrap-testing // the compiler more thoroughly. @@ -64,11 +67,6 @@ host_modules= { module= isl; lib_path=.libs; bootstrap=true; extra_configure_flags='--disable-shared @extra_isl_gmp_configure_flags@'; extra_make_flags='V=1'; no_install= true; }; -host_modules= { module= cloog; lib_path=.libs; bootstrap=true; - extra_configure_flags='--disable-shared --with-gmp=system --with-bits=gmp --with-isl=system'; - extra_exports='CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; '; - extra_make_flags='CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1'; - no_install= true; }; host_modules= { module= libelf; lib_path=.libs; bootstrap=true; extra_configure_flags='--disable-shared'; no_install= true; }; @@ -85,6 +83,14 @@ host_modules= { module= libdecnumber; bootstrap=true; }; host_modules= { module= libgui; }; host_modules= { module= libiberty; bootstrap=true; extra_configure_flags='@extra_host_libiberty_configure_flags@';}; +// Linker plugins may need their own build of libiberty; see +// gcc/doc/install.texi. We take care that this build of libiberty doesn't get +// installed. It's a helper library for linker plugins, so we pay attention to +// @extra_linker_plugin_flags@ and @extra_linker_plugin_configure_flags@. +host_modules= { module= libiberty-linker-plugin; bootstrap=true; + module_srcdir=libiberty; + extra_configure_flags='@extra_host_libiberty_configure_flags@ --disable-install-libiberty @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@'; + extra_make_flags='@extra_linker_plugin_flags@'; }; // We abuse missing to avoid installing anything for libiconv. host_modules= { module= libiconv; extra_configure_flags='--disable-shared'; @@ -98,7 +104,9 @@ host_modules= { module= readline; }; host_modules= { module= sid; }; host_modules= { module= sim; }; host_modules= { module= texinfo; no_install= true; }; -host_modules= { module= zlib; no_install=true; no_check=true; bootstrap=true; }; +host_modules= { module= zlib; no_install=true; no_check=true; + bootstrap=true; + extra_configure_flags='@extra_host_zlib_configure_flags@';}; host_modules= { module= gdb; }; host_modules= { module= expect; }; host_modules= { module= guile; }; @@ -111,7 +119,10 @@ host_modules= { module= libtermcap; no_check=true; host_modules= { module= utils; no_check=true; }; host_modules= { module= gnattools; }; host_modules= { module= lto-plugin; bootstrap=true; - extra_configure_flags=--enable-shared; }; + extra_configure_flags='--enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@'; + extra_make_flags='@extra_linker_plugin_flags@'; }; +host_modules= { module= libcc1; extra_configure_flags=--enable-shared; }; +host_modules= { module= gotools; }; target_modules = { module= libstdc++-v3; bootstrap=true; @@ -121,12 +132,18 @@ target_modules = { module= libsanitizer; bootstrap=true; lib_path=.libs; raw_cxx=true; }; +target_modules = { module= libmpx; + bootstrap=true; + lib_path=.libs; }; target_modules = { module= libvtv; bootstrap=true; lib_path=.libs; raw_cxx=true; }; target_modules = { module= libcilkrts; lib_path=.libs; }; +target_modules = { module= liboffloadmic; + lib_path=.libs; + extra_configure_flags='@extra_liboffloadmic_configure_flags@'; }; target_modules = { module= libssp; lib_path=.libs; }; target_modules = { module= newlib; }; target_modules = { module= libgcc; bootstrap=true; no_check=true; }; @@ -293,10 +310,14 @@ dependencies = { module=all-build-flex; on=all-build-m4; }; dependencies = { module=all-build-libiberty; on=all-build-texinfo; }; dependencies = { module=all-build-m4; on=all-build-texinfo; }; dependencies = { module=all-build-fixincludes; on=all-build-libiberty; }; +dependencies = { module=all-build-libcpp; on=all-build-libiberty; }; // Host modules specific to gcc. dependencies = { module=configure-gcc; on=configure-intl; }; dependencies = { module=configure-gcc; on=all-gmp; }; +dependencies = { module=configure-gcc; on=all-mpfr; }; +dependencies = { module=configure-gcc; on=all-mpc; }; +dependencies = { module=configure-gcc; on=all-isl; }; dependencies = { module=configure-gcc; on=all-lto-plugin; }; dependencies = { module=configure-gcc; on=all-binutils; }; dependencies = { module=configure-gcc; on=all-gas; }; @@ -307,12 +328,13 @@ dependencies = { module=all-gcc; on=all-libiberty; hard=true; }; dependencies = { module=all-gcc; on=all-intl; }; dependencies = { module=all-gcc; on=all-mpfr; }; dependencies = { module=all-gcc; on=all-mpc; }; -dependencies = { module=all-gcc; on=all-cloog; }; +dependencies = { module=all-gcc; on=all-isl; }; dependencies = { module=all-gcc; on=all-build-texinfo; }; dependencies = { module=all-gcc; on=all-build-bison; }; dependencies = { module=all-gcc; on=all-build-flex; }; dependencies = { module=all-gcc; on=all-build-libiberty; }; dependencies = { module=all-gcc; on=all-build-fixincludes; }; +dependencies = { module=all-gcc; on=all-build-libcpp; }; dependencies = { module=all-gcc; on=all-zlib; }; dependencies = { module=all-gcc; on=all-libbacktrace; hard=true; }; dependencies = { module=all-gcc; on=all-libcpp; hard=true; }; @@ -339,15 +361,21 @@ dependencies = { module=all-fixincludes; on=all-libiberty; }; dependencies = { module=all-gnattools; on=all-target-libada; }; dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; +// Depending on the specific configuration, the LTO plugin will either use the +// generic libiberty build or the specific build for linker plugins. dependencies = { module=all-lto-plugin; on=all-libiberty; }; +dependencies = { module=all-lto-plugin; on=all-libiberty-linker-plugin; }; + +dependencies = { module=configure-libcc1; on=configure-gcc; }; +dependencies = { module=all-libcc1; on=all-gcc; }; + +dependencies = { module=all-gotools; on=all-target-libgo; }; dependencies = { module=all-utils; on=all-libiberty; }; dependencies = { module=configure-mpfr; on=all-gmp; }; dependencies = { module=configure-mpc; on=all-mpfr; }; dependencies = { module=configure-isl; on=all-gmp; }; -dependencies = { module=configure-cloog; on=all-isl; }; -dependencies = { module=configure-cloog; on=all-gmp; }; // Host modules specific to gdb. dependencies = { module=configure-gdb; on=all-intl; }; @@ -376,6 +404,7 @@ dependencies = { module=configure-bfd; on=configure-libiberty; hard=true; }; dependencies = { module=configure-bfd; on=configure-intl; }; dependencies = { module=all-bfd; on=all-libiberty; }; dependencies = { module=all-bfd; on=all-intl; }; +dependencies = { module=all-bfd; on=all-zlib; }; dependencies = { module=configure-opcodes; on=configure-libiberty; hard=true; }; dependencies = { module=all-opcodes; on=all-libiberty; }; @@ -497,6 +526,7 @@ dependencies = { module=all-m4; on=all-build-texinfo; }; lang_env_dependencies = { module=libjava; cxx=true; }; lang_env_dependencies = { module=libitm; cxx=true; }; lang_env_dependencies = { module=libcilkrts; cxx=true; }; +lang_env_dependencies = { module=liboffloadmic; cxx=true; }; lang_env_dependencies = { module=newlib; no_c=true; }; lang_env_dependencies = { module=libgloss; no_c=true; }; lang_env_dependencies = { module=libgcc; no_gcc=true; no_c=true; }; @@ -523,12 +553,14 @@ dependencies = { module=all-target-libjava; on=all-target-libffi; }; dependencies = { module=configure-target-libobjc; on=configure-target-boehm-gc; }; dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; }; dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; }; +dependencies = { module=configure-target-liboffloadmic; on=configure-target-libgomp; }; dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; }; dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; }; // 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; }; +dependencies = { module=all-target-liboffloadmic; on=all-target-libgomp; }; dependencies = { module=install-target-libgo; on=install-target-libatomic; }; dependencies = { module=install-target-libgfortran; on=install-target-libquadmath; }; @@ -539,6 +571,8 @@ dependencies = { module=install-target-libvtv; on=install-target-libstdc++-v3; } dependencies = { module=install-target-libvtv; on=install-target-libgcc; }; dependencies = { module=install-target-libcilkrts; on=install-target-libstdc++-v3; }; dependencies = { module=install-target-libcilkrts; on=install-target-libgcc; }; +dependencies = { module=install-target-liboffloadmic; on=install-target-libstdc++-v3; }; +dependencies = { module=install-target-liboffloadmic; on=install-target-libgcc; }; dependencies = { module=install-target-libjava; on=install-target-libgcc; }; dependencies = { module=install-target-libitm; on=install-target-libgcc; }; dependencies = { module=install-target-libobjc; on=install-target-libgcc; }; diff --git a/Makefile.in b/Makefile.in index 1472dd8..61e0ab6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -220,9 +220,8 @@ HOST_EXPORTS = \ HOST_LIBS="$(STAGE1_LIBS)"; export HOST_LIBS; \ GMPLIBS="$(HOST_GMPLIBS)"; export GMPLIBS; \ GMPINC="$(HOST_GMPINC)"; export GMPINC; \ + ISLLIBS="$(HOST_ISLLIBS)"; export ISLLIBS; \ ISLINC="$(HOST_ISLINC)"; export ISLINC; \ - CLOOGLIBS="$(HOST_CLOOGLIBS)"; export CLOOGLIBS; \ - CLOOGINC="$(HOST_CLOOGINC)"; export CLOOGINC; \ LIBELFLIBS="$(HOST_LIBELFLIBS)" ; export LIBELFLIBS; \ LIBELFINC="$(HOST_LIBELFINC)" ; export LIBELFINC; \ @if gcc-bootstrap @@ -257,6 +256,7 @@ POSTSTAGE1_HOST_EXPORTS = \ $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ $(POSTSTAGE1_CXX_EXPORT) \ + $(LTO_EXPORTS) \ GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind"; export GNATBIND; \ LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)"; export LDFLAGS; \ HOST_LIBS="$(POSTSTAGE1_LIBS)"; export HOST_LIBS; @@ -312,12 +312,9 @@ HOST_GMPLIBS = @gmplibs@ HOST_GMPINC = @gmpinc@ # Where to find ISL +HOST_ISLLIBS = @isllibs@ HOST_ISLINC = @islinc@ -# Where to find CLOOG -HOST_CLOOGLIBS = @clooglibs@ -HOST_CLOOGINC = @clooginc@ - # Where to find libelf HOST_LIBELFLIBS = @libelflibs@ HOST_LIBELFINC = @libelfinc@ @@ -580,7 +577,7 @@ all: # This is the list of directories that may be needed in RPATH_ENVVAR # so that programs built for the target machine work. -TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libcilkrts)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) +TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libmpx)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libcilkrts)$(TARGET_LIB_PATH_liboffloadmic)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) @if target-libstdc++-v3 TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: @@ -590,6 +587,10 @@ TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: TARGET_LIB_PATH_libsanitizer = $$r/$(TARGET_SUBDIR)/libsanitizer/.libs: @endif target-libsanitizer +@if target-libmpx +TARGET_LIB_PATH_libmpx = $$r/$(TARGET_SUBDIR)/libmpx/.libs: +@endif target-libmpx + @if target-libvtv TARGET_LIB_PATH_libvtv = $$r/$(TARGET_SUBDIR)/libvtv/.libs: @endif target-libvtv @@ -598,6 +599,10 @@ TARGET_LIB_PATH_libvtv = $$r/$(TARGET_SUBDIR)/libvtv/.libs: TARGET_LIB_PATH_libcilkrts = $$r/$(TARGET_SUBDIR)/libcilkrts/.libs: @endif target-libcilkrts +@if target-liboffloadmic +TARGET_LIB_PATH_liboffloadmic = $$r/$(TARGET_SUBDIR)/liboffloadmic/.libs: +@endif target-liboffloadmic + @if target-libssp TARGET_LIB_PATH_libssp = $$r/$(TARGET_SUBDIR)/libssp/.libs: @endif target-libssp @@ -618,7 +623,7 @@ TARGET_LIB_PATH_libatomic = $$r/$(TARGET_SUBDIR)/libatomic/.libs: # 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_gmp)$(HOST_LIB_PATH_mpfr)$(HOST_LIB_PATH_mpc)$(HOST_LIB_PATH_isl)$(HOST_LIB_PATH_cloog)$(HOST_LIB_PATH_libelf) +HOST_LIB_PATH = $(HOST_LIB_PATH_gmp)$(HOST_LIB_PATH_mpfr)$(HOST_LIB_PATH_mpc)$(HOST_LIB_PATH_isl)$(HOST_LIB_PATH_libelf) # Define HOST_LIB_PATH_gcc here, for the sake of TARGET_LIB_PATH, ouch @if gcc @@ -646,11 +651,6 @@ HOST_LIB_PATH_isl = \ $$r/$(HOST_SUBDIR)/isl/.libs:$$r/$(HOST_SUBDIR)/prev-isl/.libs: @endif isl -@if cloog -HOST_LIB_PATH_cloog = \ - $$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: @@ -830,8 +830,17 @@ POSTSTAGE1_FLAGS_TO_PASS = \ GNATBIND="$${GNATBIND}" \ LDFLAGS="$${LDFLAGS}" \ HOST_LIBS="$${HOST_LIBS}" \ + $(LTO_FLAGS_TO_PASS) \ "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" +@if gcc-bootstrap +EXTRA_HOST_EXPORTS = if [ $(current_stage) != stage1 ]; then \ + $(POSTSTAGE1_HOST_EXPORTS) \ + fi ; + +EXTRA_BOOTSTRAP_FLAGS = CC="$$CC" CXX="$$CXX" LDFLAGS="$$LDFLAGS" +@endif gcc-bootstrap + # Flags to pass down to makes which are built with the target environment. # The double $ decreases the length of the command line; those variables # are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. The @@ -842,7 +851,9 @@ EXTRA_TARGET_FLAGS = \ 'AS=$(COMPILER_AS_FOR_TARGET)' \ 'CC=$$(CC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ 'CFLAGS=$$(CFLAGS_FOR_TARGET)' \ - 'CXX=$$(CXX_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'CXX=$$(CXX_FOR_TARGET) -B$$r/$$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \ + -B$$r/$$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \ + $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \ 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ 'GCJ=$$(GCJ_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ @@ -861,6 +872,8 @@ EXTRA_TARGET_FLAGS = \ 'WINDRES=$$(WINDRES_FOR_TARGET)' \ 'WINDMC=$$(WINDMC_FOR_TARGET)' \ 'XGCC_FLAGS_FOR_TARGET=$(XGCC_FLAGS_FOR_TARGET)' \ + 'STAGE1_LDFLAGS=$$(POSTSTAGE1_LDFLAGS)' \ + 'STAGE1_LIBS=$$(POSTSTAGE1_LIBS)' \ "TFLAGS=$$TFLAGS" TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) @@ -903,7 +916,6 @@ configure-host: \ maybe-configure-mpfr \ maybe-configure-mpc \ maybe-configure-isl \ - maybe-configure-cloog \ maybe-configure-libelf \ maybe-configure-gold \ maybe-configure-gprof \ @@ -916,6 +928,7 @@ configure-host: \ maybe-configure-libdecnumber \ maybe-configure-libgui \ maybe-configure-libiberty \ + maybe-configure-libiberty-linker-plugin \ maybe-configure-libiconv \ maybe-configure-m4 \ maybe-configure-readline \ @@ -930,13 +943,17 @@ configure-host: \ maybe-configure-libtermcap \ maybe-configure-utils \ maybe-configure-gnattools \ - maybe-configure-lto-plugin + maybe-configure-lto-plugin \ + maybe-configure-libcc1 \ + maybe-configure-gotools .PHONY: configure-target configure-target: \ maybe-configure-target-libstdc++-v3 \ maybe-configure-target-libsanitizer \ + maybe-configure-target-libmpx \ maybe-configure-target-libvtv \ maybe-configure-target-libcilkrts \ + maybe-configure-target-liboffloadmic \ maybe-configure-target-libssp \ maybe-configure-target-newlib \ maybe-configure-target-libgcc \ @@ -991,6 +1008,7 @@ all-build: maybe-all-build-flex all-build: maybe-all-build-m4 all-build: maybe-all-build-texinfo all-build: maybe-all-build-fixincludes +all-build: maybe-all-build-libcpp .PHONY: all-host @@ -1030,9 +1048,6 @@ all-host: maybe-all-mpc @if isl-no-bootstrap all-host: maybe-all-isl @endif isl-no-bootstrap -@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 @@ -1061,6 +1076,9 @@ all-host: maybe-all-libgui @if libiberty-no-bootstrap all-host: maybe-all-libiberty @endif libiberty-no-bootstrap +@if libiberty-linker-plugin-no-bootstrap +all-host: maybe-all-libiberty-linker-plugin +@endif libiberty-linker-plugin-no-bootstrap all-host: maybe-all-libiconv all-host: maybe-all-m4 all-host: maybe-all-readline @@ -1080,6 +1098,8 @@ all-host: maybe-all-gnattools @if lto-plugin-no-bootstrap all-host: maybe-all-lto-plugin @endif lto-plugin-no-bootstrap +all-host: maybe-all-libcc1 +all-host: maybe-all-gotools .PHONY: all-target @@ -1089,10 +1109,14 @@ all-target: maybe-all-target-libstdc++-v3 @if target-libsanitizer-no-bootstrap all-target: maybe-all-target-libsanitizer @endif target-libsanitizer-no-bootstrap +@if target-libmpx-no-bootstrap +all-target: maybe-all-target-libmpx +@endif target-libmpx-no-bootstrap @if target-libvtv-no-bootstrap all-target: maybe-all-target-libvtv @endif target-libvtv-no-bootstrap all-target: maybe-all-target-libcilkrts +all-target: maybe-all-target-liboffloadmic all-target: maybe-all-target-libssp all-target: maybe-all-target-newlib @if target-libgcc-no-bootstrap @@ -1150,7 +1174,6 @@ info-host: maybe-info-gmp info-host: maybe-info-mpfr info-host: maybe-info-mpc info-host: maybe-info-isl -info-host: maybe-info-cloog info-host: maybe-info-libelf info-host: maybe-info-gold info-host: maybe-info-gprof @@ -1163,6 +1186,7 @@ info-host: maybe-info-libcpp info-host: maybe-info-libdecnumber info-host: maybe-info-libgui info-host: maybe-info-libiberty +info-host: maybe-info-libiberty-linker-plugin info-host: maybe-info-libiconv info-host: maybe-info-m4 info-host: maybe-info-readline @@ -1178,13 +1202,17 @@ info-host: maybe-info-libtermcap info-host: maybe-info-utils info-host: maybe-info-gnattools info-host: maybe-info-lto-plugin +info-host: maybe-info-libcc1 +info-host: maybe-info-gotools .PHONY: info-target info-target: maybe-info-target-libstdc++-v3 info-target: maybe-info-target-libsanitizer +info-target: maybe-info-target-libmpx info-target: maybe-info-target-libvtv info-target: maybe-info-target-libcilkrts +info-target: maybe-info-target-liboffloadmic info-target: maybe-info-target-libssp info-target: maybe-info-target-newlib info-target: maybe-info-target-libgcc @@ -1233,7 +1261,6 @@ dvi-host: maybe-dvi-gmp dvi-host: maybe-dvi-mpfr dvi-host: maybe-dvi-mpc dvi-host: maybe-dvi-isl -dvi-host: maybe-dvi-cloog dvi-host: maybe-dvi-libelf dvi-host: maybe-dvi-gold dvi-host: maybe-dvi-gprof @@ -1246,6 +1273,7 @@ dvi-host: maybe-dvi-libcpp dvi-host: maybe-dvi-libdecnumber dvi-host: maybe-dvi-libgui dvi-host: maybe-dvi-libiberty +dvi-host: maybe-dvi-libiberty-linker-plugin dvi-host: maybe-dvi-libiconv dvi-host: maybe-dvi-m4 dvi-host: maybe-dvi-readline @@ -1261,13 +1289,17 @@ dvi-host: maybe-dvi-libtermcap dvi-host: maybe-dvi-utils dvi-host: maybe-dvi-gnattools dvi-host: maybe-dvi-lto-plugin +dvi-host: maybe-dvi-libcc1 +dvi-host: maybe-dvi-gotools .PHONY: dvi-target dvi-target: maybe-dvi-target-libstdc++-v3 dvi-target: maybe-dvi-target-libsanitizer +dvi-target: maybe-dvi-target-libmpx dvi-target: maybe-dvi-target-libvtv dvi-target: maybe-dvi-target-libcilkrts +dvi-target: maybe-dvi-target-liboffloadmic dvi-target: maybe-dvi-target-libssp dvi-target: maybe-dvi-target-newlib dvi-target: maybe-dvi-target-libgcc @@ -1316,7 +1348,6 @@ pdf-host: maybe-pdf-gmp pdf-host: maybe-pdf-mpfr pdf-host: maybe-pdf-mpc pdf-host: maybe-pdf-isl -pdf-host: maybe-pdf-cloog pdf-host: maybe-pdf-libelf pdf-host: maybe-pdf-gold pdf-host: maybe-pdf-gprof @@ -1329,6 +1360,7 @@ pdf-host: maybe-pdf-libcpp pdf-host: maybe-pdf-libdecnumber pdf-host: maybe-pdf-libgui pdf-host: maybe-pdf-libiberty +pdf-host: maybe-pdf-libiberty-linker-plugin pdf-host: maybe-pdf-libiconv pdf-host: maybe-pdf-m4 pdf-host: maybe-pdf-readline @@ -1344,13 +1376,17 @@ pdf-host: maybe-pdf-libtermcap pdf-host: maybe-pdf-utils pdf-host: maybe-pdf-gnattools pdf-host: maybe-pdf-lto-plugin +pdf-host: maybe-pdf-libcc1 +pdf-host: maybe-pdf-gotools .PHONY: pdf-target pdf-target: maybe-pdf-target-libstdc++-v3 pdf-target: maybe-pdf-target-libsanitizer +pdf-target: maybe-pdf-target-libmpx pdf-target: maybe-pdf-target-libvtv pdf-target: maybe-pdf-target-libcilkrts +pdf-target: maybe-pdf-target-liboffloadmic pdf-target: maybe-pdf-target-libssp pdf-target: maybe-pdf-target-newlib pdf-target: maybe-pdf-target-libgcc @@ -1399,7 +1435,6 @@ html-host: maybe-html-gmp html-host: maybe-html-mpfr html-host: maybe-html-mpc html-host: maybe-html-isl -html-host: maybe-html-cloog html-host: maybe-html-libelf html-host: maybe-html-gold html-host: maybe-html-gprof @@ -1412,6 +1447,7 @@ html-host: maybe-html-libcpp html-host: maybe-html-libdecnumber html-host: maybe-html-libgui html-host: maybe-html-libiberty +html-host: maybe-html-libiberty-linker-plugin html-host: maybe-html-libiconv html-host: maybe-html-m4 html-host: maybe-html-readline @@ -1427,13 +1463,17 @@ html-host: maybe-html-libtermcap html-host: maybe-html-utils html-host: maybe-html-gnattools html-host: maybe-html-lto-plugin +html-host: maybe-html-libcc1 +html-host: maybe-html-gotools .PHONY: html-target html-target: maybe-html-target-libstdc++-v3 html-target: maybe-html-target-libsanitizer +html-target: maybe-html-target-libmpx html-target: maybe-html-target-libvtv html-target: maybe-html-target-libcilkrts +html-target: maybe-html-target-liboffloadmic html-target: maybe-html-target-libssp html-target: maybe-html-target-newlib html-target: maybe-html-target-libgcc @@ -1482,7 +1522,6 @@ TAGS-host: maybe-TAGS-gmp TAGS-host: maybe-TAGS-mpfr TAGS-host: maybe-TAGS-mpc TAGS-host: maybe-TAGS-isl -TAGS-host: maybe-TAGS-cloog TAGS-host: maybe-TAGS-libelf TAGS-host: maybe-TAGS-gold TAGS-host: maybe-TAGS-gprof @@ -1495,6 +1534,7 @@ TAGS-host: maybe-TAGS-libcpp TAGS-host: maybe-TAGS-libdecnumber TAGS-host: maybe-TAGS-libgui TAGS-host: maybe-TAGS-libiberty +TAGS-host: maybe-TAGS-libiberty-linker-plugin TAGS-host: maybe-TAGS-libiconv TAGS-host: maybe-TAGS-m4 TAGS-host: maybe-TAGS-readline @@ -1510,13 +1550,17 @@ TAGS-host: maybe-TAGS-libtermcap TAGS-host: maybe-TAGS-utils TAGS-host: maybe-TAGS-gnattools TAGS-host: maybe-TAGS-lto-plugin +TAGS-host: maybe-TAGS-libcc1 +TAGS-host: maybe-TAGS-gotools .PHONY: TAGS-target TAGS-target: maybe-TAGS-target-libstdc++-v3 TAGS-target: maybe-TAGS-target-libsanitizer +TAGS-target: maybe-TAGS-target-libmpx TAGS-target: maybe-TAGS-target-libvtv TAGS-target: maybe-TAGS-target-libcilkrts +TAGS-target: maybe-TAGS-target-liboffloadmic TAGS-target: maybe-TAGS-target-libssp TAGS-target: maybe-TAGS-target-newlib TAGS-target: maybe-TAGS-target-libgcc @@ -1565,7 +1609,6 @@ install-info-host: maybe-install-info-gmp install-info-host: maybe-install-info-mpfr install-info-host: maybe-install-info-mpc install-info-host: maybe-install-info-isl -install-info-host: maybe-install-info-cloog install-info-host: maybe-install-info-libelf install-info-host: maybe-install-info-gold install-info-host: maybe-install-info-gprof @@ -1578,6 +1621,7 @@ install-info-host: maybe-install-info-libcpp install-info-host: maybe-install-info-libdecnumber install-info-host: maybe-install-info-libgui install-info-host: maybe-install-info-libiberty +install-info-host: maybe-install-info-libiberty-linker-plugin install-info-host: maybe-install-info-libiconv install-info-host: maybe-install-info-m4 install-info-host: maybe-install-info-readline @@ -1593,13 +1637,17 @@ 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 +install-info-host: maybe-install-info-libcc1 +install-info-host: maybe-install-info-gotools .PHONY: install-info-target install-info-target: maybe-install-info-target-libstdc++-v3 install-info-target: maybe-install-info-target-libsanitizer +install-info-target: maybe-install-info-target-libmpx install-info-target: maybe-install-info-target-libvtv install-info-target: maybe-install-info-target-libcilkrts +install-info-target: maybe-install-info-target-liboffloadmic install-info-target: maybe-install-info-target-libssp install-info-target: maybe-install-info-target-newlib install-info-target: maybe-install-info-target-libgcc @@ -1648,7 +1696,6 @@ install-pdf-host: maybe-install-pdf-gmp install-pdf-host: maybe-install-pdf-mpfr install-pdf-host: maybe-install-pdf-mpc install-pdf-host: maybe-install-pdf-isl -install-pdf-host: maybe-install-pdf-cloog install-pdf-host: maybe-install-pdf-libelf install-pdf-host: maybe-install-pdf-gold install-pdf-host: maybe-install-pdf-gprof @@ -1661,6 +1708,7 @@ install-pdf-host: maybe-install-pdf-libcpp install-pdf-host: maybe-install-pdf-libdecnumber install-pdf-host: maybe-install-pdf-libgui install-pdf-host: maybe-install-pdf-libiberty +install-pdf-host: maybe-install-pdf-libiberty-linker-plugin install-pdf-host: maybe-install-pdf-libiconv install-pdf-host: maybe-install-pdf-m4 install-pdf-host: maybe-install-pdf-readline @@ -1676,13 +1724,17 @@ 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 +install-pdf-host: maybe-install-pdf-libcc1 +install-pdf-host: maybe-install-pdf-gotools .PHONY: install-pdf-target install-pdf-target: maybe-install-pdf-target-libstdc++-v3 install-pdf-target: maybe-install-pdf-target-libsanitizer +install-pdf-target: maybe-install-pdf-target-libmpx install-pdf-target: maybe-install-pdf-target-libvtv install-pdf-target: maybe-install-pdf-target-libcilkrts +install-pdf-target: maybe-install-pdf-target-liboffloadmic install-pdf-target: maybe-install-pdf-target-libssp install-pdf-target: maybe-install-pdf-target-newlib install-pdf-target: maybe-install-pdf-target-libgcc @@ -1731,7 +1783,6 @@ install-html-host: maybe-install-html-gmp install-html-host: maybe-install-html-mpfr install-html-host: maybe-install-html-mpc install-html-host: maybe-install-html-isl -install-html-host: maybe-install-html-cloog install-html-host: maybe-install-html-libelf install-html-host: maybe-install-html-gold install-html-host: maybe-install-html-gprof @@ -1744,6 +1795,7 @@ install-html-host: maybe-install-html-libcpp install-html-host: maybe-install-html-libdecnumber install-html-host: maybe-install-html-libgui install-html-host: maybe-install-html-libiberty +install-html-host: maybe-install-html-libiberty-linker-plugin install-html-host: maybe-install-html-libiconv install-html-host: maybe-install-html-m4 install-html-host: maybe-install-html-readline @@ -1759,13 +1811,17 @@ 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 +install-html-host: maybe-install-html-libcc1 +install-html-host: maybe-install-html-gotools .PHONY: install-html-target install-html-target: maybe-install-html-target-libstdc++-v3 install-html-target: maybe-install-html-target-libsanitizer +install-html-target: maybe-install-html-target-libmpx install-html-target: maybe-install-html-target-libvtv install-html-target: maybe-install-html-target-libcilkrts +install-html-target: maybe-install-html-target-liboffloadmic install-html-target: maybe-install-html-target-libssp install-html-target: maybe-install-html-target-newlib install-html-target: maybe-install-html-target-libgcc @@ -1814,7 +1870,6 @@ installcheck-host: maybe-installcheck-gmp installcheck-host: maybe-installcheck-mpfr installcheck-host: maybe-installcheck-mpc installcheck-host: maybe-installcheck-isl -installcheck-host: maybe-installcheck-cloog installcheck-host: maybe-installcheck-libelf installcheck-host: maybe-installcheck-gold installcheck-host: maybe-installcheck-gprof @@ -1827,6 +1882,7 @@ installcheck-host: maybe-installcheck-libcpp installcheck-host: maybe-installcheck-libdecnumber installcheck-host: maybe-installcheck-libgui installcheck-host: maybe-installcheck-libiberty +installcheck-host: maybe-installcheck-libiberty-linker-plugin installcheck-host: maybe-installcheck-libiconv installcheck-host: maybe-installcheck-m4 installcheck-host: maybe-installcheck-readline @@ -1842,13 +1898,17 @@ installcheck-host: maybe-installcheck-libtermcap installcheck-host: maybe-installcheck-utils installcheck-host: maybe-installcheck-gnattools installcheck-host: maybe-installcheck-lto-plugin +installcheck-host: maybe-installcheck-libcc1 +installcheck-host: maybe-installcheck-gotools .PHONY: installcheck-target installcheck-target: maybe-installcheck-target-libstdc++-v3 installcheck-target: maybe-installcheck-target-libsanitizer +installcheck-target: maybe-installcheck-target-libmpx installcheck-target: maybe-installcheck-target-libvtv installcheck-target: maybe-installcheck-target-libcilkrts +installcheck-target: maybe-installcheck-target-liboffloadmic installcheck-target: maybe-installcheck-target-libssp installcheck-target: maybe-installcheck-target-newlib installcheck-target: maybe-installcheck-target-libgcc @@ -1897,7 +1957,6 @@ mostlyclean-host: maybe-mostlyclean-gmp mostlyclean-host: maybe-mostlyclean-mpfr mostlyclean-host: maybe-mostlyclean-mpc mostlyclean-host: maybe-mostlyclean-isl -mostlyclean-host: maybe-mostlyclean-cloog mostlyclean-host: maybe-mostlyclean-libelf mostlyclean-host: maybe-mostlyclean-gold mostlyclean-host: maybe-mostlyclean-gprof @@ -1910,6 +1969,7 @@ mostlyclean-host: maybe-mostlyclean-libcpp mostlyclean-host: maybe-mostlyclean-libdecnumber mostlyclean-host: maybe-mostlyclean-libgui mostlyclean-host: maybe-mostlyclean-libiberty +mostlyclean-host: maybe-mostlyclean-libiberty-linker-plugin mostlyclean-host: maybe-mostlyclean-libiconv mostlyclean-host: maybe-mostlyclean-m4 mostlyclean-host: maybe-mostlyclean-readline @@ -1925,13 +1985,17 @@ mostlyclean-host: maybe-mostlyclean-libtermcap mostlyclean-host: maybe-mostlyclean-utils mostlyclean-host: maybe-mostlyclean-gnattools mostlyclean-host: maybe-mostlyclean-lto-plugin +mostlyclean-host: maybe-mostlyclean-libcc1 +mostlyclean-host: maybe-mostlyclean-gotools .PHONY: mostlyclean-target mostlyclean-target: maybe-mostlyclean-target-libstdc++-v3 mostlyclean-target: maybe-mostlyclean-target-libsanitizer +mostlyclean-target: maybe-mostlyclean-target-libmpx mostlyclean-target: maybe-mostlyclean-target-libvtv mostlyclean-target: maybe-mostlyclean-target-libcilkrts +mostlyclean-target: maybe-mostlyclean-target-liboffloadmic mostlyclean-target: maybe-mostlyclean-target-libssp mostlyclean-target: maybe-mostlyclean-target-newlib mostlyclean-target: maybe-mostlyclean-target-libgcc @@ -1980,7 +2044,6 @@ clean-host: maybe-clean-gmp clean-host: maybe-clean-mpfr clean-host: maybe-clean-mpc clean-host: maybe-clean-isl -clean-host: maybe-clean-cloog clean-host: maybe-clean-libelf clean-host: maybe-clean-gold clean-host: maybe-clean-gprof @@ -1993,6 +2056,7 @@ clean-host: maybe-clean-libcpp clean-host: maybe-clean-libdecnumber clean-host: maybe-clean-libgui clean-host: maybe-clean-libiberty +clean-host: maybe-clean-libiberty-linker-plugin clean-host: maybe-clean-libiconv clean-host: maybe-clean-m4 clean-host: maybe-clean-readline @@ -2008,13 +2072,17 @@ clean-host: maybe-clean-libtermcap clean-host: maybe-clean-utils clean-host: maybe-clean-gnattools clean-host: maybe-clean-lto-plugin +clean-host: maybe-clean-libcc1 +clean-host: maybe-clean-gotools .PHONY: clean-target clean-target: maybe-clean-target-libstdc++-v3 clean-target: maybe-clean-target-libsanitizer +clean-target: maybe-clean-target-libmpx clean-target: maybe-clean-target-libvtv clean-target: maybe-clean-target-libcilkrts +clean-target: maybe-clean-target-liboffloadmic clean-target: maybe-clean-target-libssp clean-target: maybe-clean-target-newlib clean-target: maybe-clean-target-libgcc @@ -2063,7 +2131,6 @@ distclean-host: maybe-distclean-gmp distclean-host: maybe-distclean-mpfr distclean-host: maybe-distclean-mpc distclean-host: maybe-distclean-isl -distclean-host: maybe-distclean-cloog distclean-host: maybe-distclean-libelf distclean-host: maybe-distclean-gold distclean-host: maybe-distclean-gprof @@ -2076,6 +2143,7 @@ distclean-host: maybe-distclean-libcpp distclean-host: maybe-distclean-libdecnumber distclean-host: maybe-distclean-libgui distclean-host: maybe-distclean-libiberty +distclean-host: maybe-distclean-libiberty-linker-plugin distclean-host: maybe-distclean-libiconv distclean-host: maybe-distclean-m4 distclean-host: maybe-distclean-readline @@ -2091,13 +2159,17 @@ distclean-host: maybe-distclean-libtermcap distclean-host: maybe-distclean-utils distclean-host: maybe-distclean-gnattools distclean-host: maybe-distclean-lto-plugin +distclean-host: maybe-distclean-libcc1 +distclean-host: maybe-distclean-gotools .PHONY: distclean-target distclean-target: maybe-distclean-target-libstdc++-v3 distclean-target: maybe-distclean-target-libsanitizer +distclean-target: maybe-distclean-target-libmpx distclean-target: maybe-distclean-target-libvtv distclean-target: maybe-distclean-target-libcilkrts +distclean-target: maybe-distclean-target-liboffloadmic distclean-target: maybe-distclean-target-libssp distclean-target: maybe-distclean-target-newlib distclean-target: maybe-distclean-target-libgcc @@ -2146,7 +2218,6 @@ maintainer-clean-host: maybe-maintainer-clean-gmp maintainer-clean-host: maybe-maintainer-clean-mpfr maintainer-clean-host: maybe-maintainer-clean-mpc maintainer-clean-host: maybe-maintainer-clean-isl -maintainer-clean-host: maybe-maintainer-clean-cloog maintainer-clean-host: maybe-maintainer-clean-libelf maintainer-clean-host: maybe-maintainer-clean-gold maintainer-clean-host: maybe-maintainer-clean-gprof @@ -2159,6 +2230,7 @@ maintainer-clean-host: maybe-maintainer-clean-libcpp maintainer-clean-host: maybe-maintainer-clean-libdecnumber maintainer-clean-host: maybe-maintainer-clean-libgui maintainer-clean-host: maybe-maintainer-clean-libiberty +maintainer-clean-host: maybe-maintainer-clean-libiberty-linker-plugin maintainer-clean-host: maybe-maintainer-clean-libiconv maintainer-clean-host: maybe-maintainer-clean-m4 maintainer-clean-host: maybe-maintainer-clean-readline @@ -2174,13 +2246,17 @@ 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 +maintainer-clean-host: maybe-maintainer-clean-libcc1 +maintainer-clean-host: maybe-maintainer-clean-gotools .PHONY: maintainer-clean-target maintainer-clean-target: maybe-maintainer-clean-target-libstdc++-v3 maintainer-clean-target: maybe-maintainer-clean-target-libsanitizer +maintainer-clean-target: maybe-maintainer-clean-target-libmpx maintainer-clean-target: maybe-maintainer-clean-target-libvtv maintainer-clean-target: maybe-maintainer-clean-target-libcilkrts +maintainer-clean-target: maybe-maintainer-clean-target-liboffloadmic maintainer-clean-target: maybe-maintainer-clean-target-libssp maintainer-clean-target: maybe-maintainer-clean-target-newlib maintainer-clean-target: maybe-maintainer-clean-target-libgcc @@ -2284,7 +2360,6 @@ check-host: \ maybe-check-mpfr \ maybe-check-mpc \ maybe-check-isl \ - maybe-check-cloog \ maybe-check-libelf \ maybe-check-gold \ maybe-check-gprof \ @@ -2297,6 +2372,7 @@ check-host: \ maybe-check-libdecnumber \ maybe-check-libgui \ maybe-check-libiberty \ + maybe-check-libiberty-linker-plugin \ maybe-check-libiconv \ maybe-check-m4 \ maybe-check-readline \ @@ -2311,14 +2387,18 @@ check-host: \ maybe-check-libtermcap \ maybe-check-utils \ maybe-check-gnattools \ - maybe-check-lto-plugin + maybe-check-lto-plugin \ + maybe-check-libcc1 \ + maybe-check-gotools .PHONY: check-target check-target: \ maybe-check-target-libstdc++-v3 \ maybe-check-target-libsanitizer \ + maybe-check-target-libmpx \ maybe-check-target-libvtv \ maybe-check-target-libcilkrts \ + maybe-check-target-liboffloadmic \ maybe-check-target-libssp \ maybe-check-target-newlib \ maybe-check-target-libgcc \ @@ -2367,6 +2447,18 @@ mail-report-with-warnings.log: warning.log chmod +x $@ echo If you really want to send e-mail, run ./$@ now +# Local Vim config + +$(srcdir)/.local.vimrc: + $(LN_S) $(srcdir)/contrib/vimrc $@ + +$(srcdir)/.lvimrc: + $(LN_S) $(srcdir)/contrib/vimrc $@ + +vimrc: $(srcdir)/.local.vimrc $(srcdir)/.lvimrc + +.PHONY: vimrc + # Installation targets. .PHONY: install uninstall @@ -2393,7 +2485,6 @@ install-host-nogcc: \ maybe-install-mpfr \ maybe-install-mpc \ maybe-install-isl \ - maybe-install-cloog \ maybe-install-libelf \ maybe-install-gold \ maybe-install-gprof \ @@ -2406,6 +2497,7 @@ install-host-nogcc: \ maybe-install-libdecnumber \ maybe-install-libgui \ maybe-install-libiberty \ + maybe-install-libiberty-linker-plugin \ maybe-install-libiconv \ maybe-install-m4 \ maybe-install-readline \ @@ -2420,7 +2512,9 @@ install-host-nogcc: \ maybe-install-libtermcap \ maybe-install-utils \ maybe-install-gnattools \ - maybe-install-lto-plugin + maybe-install-lto-plugin \ + maybe-install-libcc1 \ + maybe-install-gotools .PHONY: install-host install-host: \ @@ -2440,7 +2534,6 @@ install-host: \ maybe-install-mpfr \ maybe-install-mpc \ maybe-install-isl \ - maybe-install-cloog \ maybe-install-libelf \ maybe-install-gold \ maybe-install-gprof \ @@ -2453,6 +2546,7 @@ install-host: \ maybe-install-libdecnumber \ maybe-install-libgui \ maybe-install-libiberty \ + maybe-install-libiberty-linker-plugin \ maybe-install-libiconv \ maybe-install-m4 \ maybe-install-readline \ @@ -2467,14 +2561,18 @@ install-host: \ maybe-install-libtermcap \ maybe-install-utils \ maybe-install-gnattools \ - maybe-install-lto-plugin + maybe-install-lto-plugin \ + maybe-install-libcc1 \ + maybe-install-gotools .PHONY: install-target install-target: \ maybe-install-target-libstdc++-v3 \ maybe-install-target-libsanitizer \ + maybe-install-target-libmpx \ maybe-install-target-libvtv \ maybe-install-target-libcilkrts \ + maybe-install-target-liboffloadmic \ maybe-install-target-libssp \ maybe-install-target-newlib \ maybe-install-target-libgcc \ @@ -2543,7 +2641,6 @@ install-strip-host: \ maybe-install-strip-mpfr \ maybe-install-strip-mpc \ maybe-install-strip-isl \ - maybe-install-strip-cloog \ maybe-install-strip-libelf \ maybe-install-strip-gold \ maybe-install-strip-gprof \ @@ -2556,6 +2653,7 @@ install-strip-host: \ maybe-install-strip-libdecnumber \ maybe-install-strip-libgui \ maybe-install-strip-libiberty \ + maybe-install-strip-libiberty-linker-plugin \ maybe-install-strip-libiconv \ maybe-install-strip-m4 \ maybe-install-strip-readline \ @@ -2570,14 +2668,18 @@ install-strip-host: \ maybe-install-strip-libtermcap \ maybe-install-strip-utils \ maybe-install-strip-gnattools \ - maybe-install-strip-lto-plugin + maybe-install-strip-lto-plugin \ + maybe-install-strip-libcc1 \ + maybe-install-strip-gotools .PHONY: install-strip-target install-strip-target: \ maybe-install-strip-target-libstdc++-v3 \ maybe-install-strip-target-libsanitizer \ + maybe-install-strip-target-libmpx \ maybe-install-strip-target-libvtv \ maybe-install-strip-target-libcilkrts \ + maybe-install-strip-target-liboffloadmic \ maybe-install-strip-target-libssp \ maybe-install-strip-target-newlib \ maybe-install-strip-target-libgcc \ @@ -2664,12 +2766,13 @@ configure-build-libiberty: *) topdir=`echo $(BUILD_SUBDIR)/libiberty/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ + module_srcdir=libiberty; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif build-libiberty @@ -2720,12 +2823,13 @@ configure-build-bison: *) topdir=`echo $(BUILD_SUBDIR)/bison/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/bison"; \ - libsrcdir="$$s/bison"; \ + module_srcdir=bison; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif build-bison @@ -2776,12 +2880,13 @@ configure-build-flex: *) topdir=`echo $(BUILD_SUBDIR)/flex/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/flex"; \ - libsrcdir="$$s/flex"; \ + module_srcdir=flex; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif build-flex @@ -2832,12 +2937,13 @@ configure-build-m4: *) topdir=`echo $(BUILD_SUBDIR)/m4/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/m4"; \ - libsrcdir="$$s/m4"; \ + module_srcdir=m4; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif build-m4 @@ -2888,12 +2994,13 @@ configure-build-texinfo: *) topdir=`echo $(BUILD_SUBDIR)/texinfo/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/texinfo"; \ - libsrcdir="$$s/texinfo"; \ + module_srcdir=texinfo; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif build-texinfo @@ -2944,12 +3051,13 @@ configure-build-fixincludes: *) topdir=`echo $(BUILD_SUBDIR)/fixincludes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/fixincludes"; \ - libsrcdir="$$s/fixincludes"; \ + module_srcdir=fixincludes; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif build-fixincludes @@ -2979,6 +3087,63 @@ all-build-fixincludes: configure-build-fixincludes +.PHONY: configure-build-libcpp maybe-configure-build-libcpp +maybe-configure-build-libcpp: +@if gcc-bootstrap +configure-build-libcpp: stage_current +@endif gcc-bootstrap +@if build-libcpp +maybe-configure-build-libcpp: configure-build-libcpp +configure-build-libcpp: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + test ! -f $(BUILD_SUBDIR)/libcpp/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/libcpp ; \ + $(BUILD_EXPORTS) \ + echo Configuring in $(BUILD_SUBDIR)/libcpp; \ + cd "$(BUILD_SUBDIR)/libcpp" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(BUILD_SUBDIR)/libcpp/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libcpp; \ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(BUILD_CONFIGARGS) --build=${build_alias} --host=${build_alias} \ + --target=${target_alias} --disable-nls am_cv_func_iconv=no \ + || exit 1 +@endif build-libcpp + + + + + +.PHONY: all-build-libcpp maybe-all-build-libcpp +maybe-all-build-libcpp: +@if gcc-bootstrap +all-build-libcpp: stage_current +@endif gcc-bootstrap +@if build-libcpp +TARGET-build-libcpp=all +maybe-all-build-libcpp: all-build-libcpp +all-build-libcpp: configure-build-libcpp + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(BUILD_EXPORTS) \ + (cd $(BUILD_SUBDIR)/libcpp && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS) \ + $(TARGET-build-libcpp)) +@endif build-libcpp + + + + + # -------------------------------------- # Modules which run on the host machine # -------------------------------------- @@ -3004,11 +3169,12 @@ configure-bfd: *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=bfd; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif bfd @@ -3037,11 +3203,12 @@ configure-stage1-bfd: *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=bfd; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif bfd-bootstrap @@ -3069,12 +3236,12 @@ configure-stage2-bfd: *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=bfd; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif bfd-bootstrap @@ -3102,12 +3269,12 @@ configure-stage3-bfd: *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=bfd; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif bfd-bootstrap @@ -3135,12 +3302,12 @@ configure-stage4-bfd: *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=bfd; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif bfd-bootstrap @@ -3168,12 +3335,12 @@ configure-stageprofile-bfd: *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=bfd; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif bfd-bootstrap @@ -3201,12 +3368,12 @@ configure-stagefeedback-bfd: *) topdir=`echo $(HOST_SUBDIR)/bfd/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/bfd"; \ - libsrcdir="$$s/bfd"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=bfd; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif bfd-bootstrap @@ -3492,9 +3659,9 @@ check-bfd: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/bfd && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif bfd @@ -3876,11 +4043,12 @@ configure-opcodes: *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=opcodes; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif opcodes @@ -3909,11 +4077,12 @@ configure-stage1-opcodes: *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=opcodes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif opcodes-bootstrap @@ -3941,12 +4110,12 @@ configure-stage2-opcodes: *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=opcodes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif opcodes-bootstrap @@ -3974,12 +4143,12 @@ configure-stage3-opcodes: *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=opcodes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif opcodes-bootstrap @@ -4007,12 +4176,12 @@ configure-stage4-opcodes: *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=opcodes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif opcodes-bootstrap @@ -4040,12 +4209,12 @@ configure-stageprofile-opcodes: *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=opcodes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif opcodes-bootstrap @@ -4073,12 +4242,12 @@ configure-stagefeedback-opcodes: *) topdir=`echo $(HOST_SUBDIR)/opcodes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/opcodes"; \ - libsrcdir="$$s/opcodes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=opcodes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif opcodes-bootstrap @@ -4364,9 +4533,9 @@ check-opcodes: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/opcodes && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif opcodes @@ -4748,11 +4917,12 @@ configure-binutils: *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=binutils; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif binutils @@ -4781,11 +4951,12 @@ configure-stage1-binutils: *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=binutils; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif binutils-bootstrap @@ -4813,12 +4984,12 @@ configure-stage2-binutils: *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=binutils; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif binutils-bootstrap @@ -4846,12 +5017,12 @@ configure-stage3-binutils: *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=binutils; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif binutils-bootstrap @@ -4879,12 +5050,12 @@ configure-stage4-binutils: *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=binutils; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif binutils-bootstrap @@ -4912,12 +5083,12 @@ configure-stageprofile-binutils: *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=binutils; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif binutils-bootstrap @@ -4945,12 +5116,12 @@ configure-stagefeedback-binutils: *) topdir=`echo $(HOST_SUBDIR)/binutils/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/binutils"; \ - libsrcdir="$$s/binutils"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=binutils; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif binutils-bootstrap @@ -5236,9 +5407,9 @@ check-binutils: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/binutils && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif binutils @@ -5621,11 +5792,12 @@ configure-bison: *) topdir=`echo $(HOST_SUBDIR)/bison/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/bison"; \ - libsrcdir="$$s/bison"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=bison; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif bison @@ -5665,9 +5837,9 @@ check-bison: @if [ '$(host)' = '$(target)' ] ; then \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/bison && \ - $(MAKE) $(FLAGS_TO_PASS) check); \ + $(MAKE) $(FLAGS_TO_PASS) check) fi @endif bison @@ -6064,11 +6236,12 @@ configure-cgen: *) topdir=`echo $(HOST_SUBDIR)/cgen/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/cgen"; \ - libsrcdir="$$s/cgen"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=cgen; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif cgen @@ -6106,7 +6279,7 @@ check-cgen: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/cgen && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -6504,11 +6677,12 @@ configure-dejagnu: *) topdir=`echo $(HOST_SUBDIR)/dejagnu/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/dejagnu"; \ - libsrcdir="$$s/dejagnu"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=dejagnu; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif dejagnu @@ -6546,7 +6720,7 @@ check-dejagnu: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/dejagnu && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -6944,11 +7118,12 @@ configure-etc: *) topdir=`echo $(HOST_SUBDIR)/etc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/etc"; \ - libsrcdir="$$s/etc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=etc; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif etc @@ -6986,7 +7161,7 @@ check-etc: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/etc && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -7384,11 +7559,12 @@ configure-fastjar: *) topdir=`echo $(HOST_SUBDIR)/fastjar/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/fastjar"; \ - libsrcdir="$$s/fastjar"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=fastjar; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif fastjar @@ -7428,9 +7604,9 @@ check-fastjar: @if [ '$(host)' = '$(target)' ] ; then \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/fastjar && \ - $(MAKE) $(FLAGS_TO_PASS) check); \ + $(MAKE) $(FLAGS_TO_PASS) check) fi @endif fastjar @@ -7826,11 +8002,12 @@ configure-fixincludes: *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/fixincludes"; \ - libsrcdir="$$s/fixincludes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=fixincludes; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif fixincludes @@ -7859,11 +8036,12 @@ configure-stage1-fixincludes: *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/fixincludes"; \ - libsrcdir="$$s/fixincludes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=fixincludes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif fixincludes-bootstrap @@ -7891,12 +8069,12 @@ configure-stage2-fixincludes: *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/fixincludes"; \ - libsrcdir="$$s/fixincludes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=fixincludes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif fixincludes-bootstrap @@ -7924,12 +8102,12 @@ configure-stage3-fixincludes: *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/fixincludes"; \ - libsrcdir="$$s/fixincludes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=fixincludes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif fixincludes-bootstrap @@ -7957,12 +8135,12 @@ configure-stage4-fixincludes: *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/fixincludes"; \ - libsrcdir="$$s/fixincludes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=fixincludes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif fixincludes-bootstrap @@ -7990,12 +8168,12 @@ configure-stageprofile-fixincludes: *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/fixincludes"; \ - libsrcdir="$$s/fixincludes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=fixincludes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif fixincludes-bootstrap @@ -8023,12 +8201,12 @@ configure-stagefeedback-fixincludes: *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/fixincludes"; \ - libsrcdir="$$s/fixincludes"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=fixincludes; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif fixincludes-bootstrap @@ -8314,9 +8492,9 @@ check-fixincludes: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/fixincludes && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif fixincludes @@ -8684,11 +8862,12 @@ configure-flex: *) topdir=`echo $(HOST_SUBDIR)/flex/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/flex"; \ - libsrcdir="$$s/flex"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=flex; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif flex @@ -8728,9 +8907,9 @@ check-flex: @if [ '$(host)' = '$(target)' ] ; then \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/flex && \ - $(MAKE) $(FLAGS_TO_PASS) check); \ + $(MAKE) $(FLAGS_TO_PASS) check) fi @endif flex @@ -9126,11 +9305,12 @@ configure-gas: *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gas; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif gas @@ -9159,11 +9339,12 @@ configure-stage1-gas: *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gas; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif gas-bootstrap @@ -9191,12 +9372,12 @@ configure-stage2-gas: *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gas; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif gas-bootstrap @@ -9224,12 +9405,12 @@ configure-stage3-gas: *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gas; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif gas-bootstrap @@ -9257,12 +9438,12 @@ configure-stage4-gas: *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gas; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif gas-bootstrap @@ -9290,12 +9471,12 @@ configure-stageprofile-gas: *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gas; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif gas-bootstrap @@ -9323,12 +9504,12 @@ configure-stagefeedback-gas: *) topdir=`echo $(HOST_SUBDIR)/gas/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gas"; \ - libsrcdir="$$s/gas"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gas; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif gas-bootstrap @@ -9614,9 +9795,9 @@ check-gas: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gas && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif gas @@ -9998,11 +10179,12 @@ configure-gcc: *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gcc; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif gcc @@ -10031,11 +10213,12 @@ configure-stage1-gcc: *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif gcc-bootstrap @@ -10063,12 +10246,12 @@ configure-stage2-gcc: *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif gcc-bootstrap @@ -10096,12 +10279,12 @@ configure-stage3-gcc: *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif gcc-bootstrap @@ -10129,12 +10312,12 @@ configure-stage4-gcc: *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif gcc-bootstrap @@ -10162,12 +10345,12 @@ configure-stageprofile-gcc: *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif gcc-bootstrap @@ -10195,12 +10378,12 @@ configure-stagefeedback-gcc: *) topdir=`echo $(HOST_SUBDIR)/gcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gcc"; \ - libsrcdir="$$s/gcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif gcc-bootstrap @@ -10486,9 +10669,9 @@ check-gcc: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gcc && \ - $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif gcc @@ -10870,11 +11053,12 @@ configure-gmp: *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gmp; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} --disable-shared \ + --target=none-${host_vendor}-${host_os} --disable-shared LEX="touch lex.yy.c" \ || exit 1 @endif gmp @@ -10903,13 +11087,14 @@ configure-stage1-gmp: *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gmp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ + --target=none-${host_vendor}-${host_os} \ + \ $(STAGE1_CONFIGURE_FLAGS) \ - --disable-shared + --disable-shared LEX="touch lex.yy.c" @endif gmp-bootstrap .PHONY: configure-stage2-gmp maybe-configure-stage2-gmp @@ -10936,14 +11121,14 @@ configure-stage2-gmp: *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gmp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=none-${host_vendor}-${host_os} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ - --disable-shared + --disable-shared LEX="touch lex.yy.c" @endif gmp-bootstrap .PHONY: configure-stage3-gmp maybe-configure-stage3-gmp @@ -10970,14 +11155,14 @@ configure-stage3-gmp: *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gmp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=none-${host_vendor}-${host_os} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ - --disable-shared + --disable-shared LEX="touch lex.yy.c" @endif gmp-bootstrap .PHONY: configure-stage4-gmp maybe-configure-stage4-gmp @@ -11004,14 +11189,14 @@ configure-stage4-gmp: *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gmp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=none-${host_vendor}-${host_os} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ - --disable-shared + --disable-shared LEX="touch lex.yy.c" @endif gmp-bootstrap .PHONY: configure-stageprofile-gmp maybe-configure-stageprofile-gmp @@ -11038,14 +11223,14 @@ configure-stageprofile-gmp: *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gmp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=none-${host_vendor}-${host_os} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ - --disable-shared + --disable-shared LEX="touch lex.yy.c" @endif gmp-bootstrap .PHONY: configure-stagefeedback-gmp maybe-configure-stagefeedback-gmp @@ -11072,14 +11257,14 @@ configure-stagefeedback-gmp: *) topdir=`echo $(HOST_SUBDIR)/gmp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gmp"; \ - libsrcdir="$$s/gmp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gmp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \ - --target=none-${host_vendor}-${host_os} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=none-${host_vendor}-${host_os} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ - --disable-shared + --disable-shared LEX="touch lex.yy.c" @endif gmp-bootstrap @@ -11364,9 +11549,9 @@ check-gmp: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gmp && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif gmp @@ -11736,11 +11921,12 @@ configure-mpfr: *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpfr; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} --disable-shared @extra_mpfr_configure_flags@ \ + --target=${target_alias} --disable-shared @extra_mpfr_configure_flags@ \ || exit 1 @endif mpfr @@ -11769,11 +11955,12 @@ configure-stage1-mpfr: *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpfr; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @endif mpfr-bootstrap @@ -11802,12 +11989,12 @@ configure-stage2-mpfr: *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpfr; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @endif mpfr-bootstrap @@ -11836,12 +12023,12 @@ configure-stage3-mpfr: *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpfr; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @endif mpfr-bootstrap @@ -11870,12 +12057,12 @@ configure-stage4-mpfr: *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpfr; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @endif mpfr-bootstrap @@ -11904,12 +12091,12 @@ configure-stageprofile-mpfr: *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpfr; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @endif mpfr-bootstrap @@ -11938,12 +12125,12 @@ configure-stagefeedback-mpfr: *) topdir=`echo $(HOST_SUBDIR)/mpfr/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpfr"; \ - libsrcdir="$$s/mpfr"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpfr; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ --disable-shared @extra_mpfr_configure_flags@ @endif mpfr-bootstrap @@ -12230,9 +12417,9 @@ check-mpfr: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/mpfr && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif mpfr @@ -12602,11 +12789,12 @@ configure-mpc: *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpc; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \ + --target=${target_alias} --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \ || exit 1 @endif mpc @@ -12635,11 +12823,12 @@ configure-stage1-mpc: *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) \ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ @endif mpc-bootstrap @@ -12668,12 +12857,12 @@ configure-stage2-mpc: *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ @endif mpc-bootstrap @@ -12702,12 +12891,12 @@ configure-stage3-mpc: *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ @endif mpc-bootstrap @@ -12736,12 +12925,12 @@ configure-stage4-mpc: *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ @endif mpc-bootstrap @@ -12770,12 +12959,12 @@ configure-stageprofile-mpc: *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ @endif mpc-bootstrap @@ -12804,12 +12993,12 @@ configure-stagefeedback-mpc: *) topdir=`echo $(HOST_SUBDIR)/mpc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/mpc"; \ - libsrcdir="$$s/mpc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=mpc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ @endif mpc-bootstrap @@ -13096,9 +13285,9 @@ check-mpc: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/mpc && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif mpc @@ -13468,11 +13657,12 @@ configure-isl: *) topdir=`echo $(HOST_SUBDIR)/isl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/isl"; \ - libsrcdir="$$s/isl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=isl; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} --disable-shared @extra_isl_gmp_configure_flags@ \ + --target=${target_alias} --disable-shared @extra_isl_gmp_configure_flags@ \ || exit 1 @endif isl @@ -13501,11 +13691,12 @@ configure-stage1-isl: *) topdir=`echo $(HOST_SUBDIR)/isl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/isl"; \ - libsrcdir="$$s/isl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=isl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) \ --disable-shared @extra_isl_gmp_configure_flags@ @endif isl-bootstrap @@ -13534,12 +13725,12 @@ configure-stage2-isl: *) topdir=`echo $(HOST_SUBDIR)/isl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/isl"; \ - libsrcdir="$$s/isl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=isl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ --disable-shared @extra_isl_gmp_configure_flags@ @endif isl-bootstrap @@ -13568,12 +13759,12 @@ configure-stage3-isl: *) topdir=`echo $(HOST_SUBDIR)/isl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/isl"; \ - libsrcdir="$$s/isl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=isl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ --disable-shared @extra_isl_gmp_configure_flags@ @endif isl-bootstrap @@ -13602,12 +13793,12 @@ configure-stage4-isl: *) topdir=`echo $(HOST_SUBDIR)/isl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/isl"; \ - libsrcdir="$$s/isl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=isl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ --disable-shared @extra_isl_gmp_configure_flags@ @endif isl-bootstrap @@ -13636,12 +13827,12 @@ configure-stageprofile-isl: *) topdir=`echo $(HOST_SUBDIR)/isl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/isl"; \ - libsrcdir="$$s/isl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=isl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ --disable-shared @extra_isl_gmp_configure_flags@ @endif isl-bootstrap @@ -13670,12 +13861,12 @@ configure-stagefeedback-isl: *) topdir=`echo $(HOST_SUBDIR)/isl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/isl"; \ - libsrcdir="$$s/isl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=isl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ --disable-shared @extra_isl_gmp_configure_flags@ @endif isl-bootstrap @@ -13962,9 +14153,9 @@ check-isl: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/isl && \ - $(MAKE) $(FLAGS_TO_PASS) V=1 check) + $(MAKE) $(FLAGS_TO_PASS) V=1 $(EXTRA_BOOTSTRAP_FLAGS) check) @endif isl @@ -14314,872 +14505,6 @@ maintainer-clean-isl: -.PHONY: configure-cloog maybe-configure-cloog -maybe-configure-cloog: -@if gcc-bootstrap -configure-cloog: stage_current -@endif gcc-bootstrap -@if cloog -maybe-configure-cloog: configure-cloog -configure-cloog: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - $(HOST_EXPORTS) CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - echo Configuring in $(HOST_SUBDIR)/cloog; \ - cd "$(HOST_SUBDIR)/cloog" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \ - || exit 1 -@endif cloog - - - -.PHONY: configure-stage1-cloog maybe-configure-stage1-cloog -maybe-configure-stage1-cloog: -@if cloog-bootstrap -maybe-configure-stage1-cloog: configure-stage1-cloog -configure-stage1-cloog: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - echo Configuring stage 1 in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(SHELL) $${libsrcdir}/configure \ - $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) \ - --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system -@endif cloog-bootstrap - -.PHONY: configure-stage2-cloog maybe-configure-stage2-cloog -maybe-configure-stage2-cloog: -@if cloog-bootstrap -maybe-configure-stage2-cloog: configure-stage2-cloog -configure-stage2-cloog: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - echo Configuring stage 2 in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(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 --with-gmp=system --with-bits=gmp --with-isl=system -@endif cloog-bootstrap - -.PHONY: configure-stage3-cloog maybe-configure-stage3-cloog -maybe-configure-stage3-cloog: -@if cloog-bootstrap -maybe-configure-stage3-cloog: configure-stage3-cloog -configure-stage3-cloog: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - echo Configuring stage 3 in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(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 --with-gmp=system --with-bits=gmp --with-isl=system -@endif cloog-bootstrap - -.PHONY: configure-stage4-cloog maybe-configure-stage4-cloog -maybe-configure-stage4-cloog: -@if cloog-bootstrap -maybe-configure-stage4-cloog: configure-stage4-cloog -configure-stage4-cloog: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - echo Configuring stage 4 in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(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 --with-gmp=system --with-bits=gmp --with-isl=system -@endif cloog-bootstrap - -.PHONY: configure-stageprofile-cloog maybe-configure-stageprofile-cloog -maybe-configure-stageprofile-cloog: -@if cloog-bootstrap -maybe-configure-stageprofile-cloog: configure-stageprofile-cloog -configure-stageprofile-cloog: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - echo Configuring stage profile in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(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 --with-gmp=system --with-bits=gmp --with-isl=system -@endif cloog-bootstrap - -.PHONY: configure-stagefeedback-cloog maybe-configure-stagefeedback-cloog -maybe-configure-stagefeedback-cloog: -@if cloog-bootstrap -maybe-configure-stagefeedback-cloog: configure-stagefeedback-cloog -configure-stagefeedback-cloog: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - test ! -f $(HOST_SUBDIR)/cloog/Makefile || exit 0; \ - $(HOST_EXPORTS) \ - $(POSTSTAGE1_HOST_EXPORTS) \ - CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ - CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ - LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - echo Configuring stage feedback in $(HOST_SUBDIR)/cloog ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/cloog ; \ - cd $(HOST_SUBDIR)/cloog || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(HOST_SUBDIR)/cloog/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/cloog"; \ - libsrcdir="$$s/cloog"; \ - $(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 --with-gmp=system --with-bits=gmp --with-isl=system -@endif cloog-bootstrap - - - - - -.PHONY: all-cloog maybe-all-cloog -maybe-all-cloog: -@if gcc-bootstrap -all-cloog: stage_current -@endif gcc-bootstrap -@if cloog -TARGET-cloog=all -maybe-all-cloog: all-cloog -all-cloog: configure-cloog - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 \ - $(TARGET-cloog)) -@endif cloog - - - -.PHONY: all-stage1-cloog maybe-all-stage1-cloog -.PHONY: clean-stage1-cloog maybe-clean-stage1-cloog -maybe-all-stage1-cloog: -maybe-clean-stage1-cloog: -@if cloog-bootstrap -maybe-all-stage1-cloog: all-stage1-cloog -all-stage1: all-stage1-cloog -TARGET-stage1-cloog = $(TARGET-cloog) -all-stage1-cloog: configure-stage1-cloog - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(HOST_EXPORTS) CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - cd $(HOST_SUBDIR)/cloog && \ - $(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) \ - $(STAGE1_FLAGS_TO_PASS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-cloog) - -maybe-clean-stage1-cloog: clean-stage1-cloog -clean-stage1: clean-stage1-cloog -clean-stage1-cloog: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage1-cloog/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(STAGE1_FLAGS_TO_PASS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 clean -@endif cloog-bootstrap - - -.PHONY: all-stage2-cloog maybe-all-stage2-cloog -.PHONY: clean-stage2-cloog maybe-clean-stage2-cloog -maybe-all-stage2-cloog: -maybe-clean-stage2-cloog: -@if cloog-bootstrap -maybe-all-stage2-cloog: all-stage2-cloog -all-stage2: all-stage2-cloog -TARGET-stage2-cloog = $(TARGET-cloog) -all-stage2-cloog: configure-stage2-cloog - @[ $(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) CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - cd $(HOST_SUBDIR)/cloog && \ - $(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) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-cloog) - -maybe-clean-stage2-cloog: clean-stage2-cloog -clean-stage2: clean-stage2-cloog -clean-stage2-cloog: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage2-cloog/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 clean -@endif cloog-bootstrap - - -.PHONY: all-stage3-cloog maybe-all-stage3-cloog -.PHONY: clean-stage3-cloog maybe-clean-stage3-cloog -maybe-all-stage3-cloog: -maybe-clean-stage3-cloog: -@if cloog-bootstrap -maybe-all-stage3-cloog: all-stage3-cloog -all-stage3: all-stage3-cloog -TARGET-stage3-cloog = $(TARGET-cloog) -all-stage3-cloog: configure-stage3-cloog - @[ $(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) CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - cd $(HOST_SUBDIR)/cloog && \ - $(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) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 \ - TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-cloog) - -maybe-clean-stage3-cloog: clean-stage3-cloog -clean-stage3: clean-stage3-cloog -clean-stage3-cloog: - @if [ $(current_stage) = stage3 ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage3-cloog/Makefile ] || exit 0; \ - $(MAKE) stage3-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 clean -@endif cloog-bootstrap - - -.PHONY: all-stage4-cloog maybe-all-stage4-cloog -.PHONY: clean-stage4-cloog maybe-clean-stage4-cloog -maybe-all-stage4-cloog: -maybe-clean-stage4-cloog: -@if cloog-bootstrap -maybe-all-stage4-cloog: all-stage4-cloog -all-stage4: all-stage4-cloog -TARGET-stage4-cloog = $(TARGET-cloog) -all-stage4-cloog: configure-stage4-cloog - @[ $(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) CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - cd $(HOST_SUBDIR)/cloog && \ - $(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) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 \ - TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-cloog) - -maybe-clean-stage4-cloog: clean-stage4-cloog -clean-stage4: clean-stage4-cloog -clean-stage4-cloog: - @if [ $(current_stage) = stage4 ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stage4-cloog/Makefile ] || exit 0; \ - $(MAKE) stage4-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 clean -@endif cloog-bootstrap - - -.PHONY: all-stageprofile-cloog maybe-all-stageprofile-cloog -.PHONY: clean-stageprofile-cloog maybe-clean-stageprofile-cloog -maybe-all-stageprofile-cloog: -maybe-clean-stageprofile-cloog: -@if cloog-bootstrap -maybe-all-stageprofile-cloog: all-stageprofile-cloog -all-stageprofile: all-stageprofile-cloog -TARGET-stageprofile-cloog = $(TARGET-cloog) -all-stageprofile-cloog: configure-stageprofile-cloog - @[ $(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) CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - cd $(HOST_SUBDIR)/cloog && \ - $(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) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 \ - TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-cloog) - -maybe-clean-stageprofile-cloog: clean-stageprofile-cloog -clean-stageprofile: clean-stageprofile-cloog -clean-stageprofile-cloog: - @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stageprofile-cloog/Makefile ] || exit 0; \ - $(MAKE) stageprofile-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 clean -@endif cloog-bootstrap - - -.PHONY: all-stagefeedback-cloog maybe-all-stagefeedback-cloog -.PHONY: clean-stagefeedback-cloog maybe-clean-stagefeedback-cloog -maybe-all-stagefeedback-cloog: -maybe-clean-stagefeedback-cloog: -@if cloog-bootstrap -maybe-all-stagefeedback-cloog: all-stagefeedback-cloog -all-stagefeedback: all-stagefeedback-cloog -TARGET-stagefeedback-cloog = $(TARGET-cloog) -all-stagefeedback-cloog: configure-stagefeedback-cloog - @[ $(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) CPPFLAGS="$(HOST_GMPINC) $(HOST_ISLINC) $$CPPFLAGS"; export CPPFLAGS; LDFLAGS="-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/isl/.libs $$LDFLAGS"; export LDFLAGS; \ - cd $(HOST_SUBDIR)/cloog && \ - $(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) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 \ - TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-cloog) - -maybe-clean-stagefeedback-cloog: clean-stagefeedback-cloog -clean-stagefeedback: clean-stagefeedback-cloog -clean-stagefeedback-cloog: - @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(HOST_SUBDIR)/cloog/Makefile ] || exit 0; \ - else \ - [ -f $(HOST_SUBDIR)/stagefeedback-cloog/Makefile ] || exit 0; \ - $(MAKE) stagefeedback-start; \ - fi; \ - cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 clean -@endif cloog-bootstrap - - - - - -.PHONY: check-cloog maybe-check-cloog -maybe-check-cloog: -@if cloog -maybe-check-cloog: check-cloog - -check-cloog: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - (cd $(HOST_SUBDIR)/cloog && \ - $(MAKE) $(FLAGS_TO_PASS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1 check) - -@endif cloog - -.PHONY: install-cloog maybe-install-cloog -maybe-install-cloog: -@if cloog -maybe-install-cloog: install-cloog - -install-cloog: - -@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 -maybe-info-cloog: -@if cloog -maybe-info-cloog: info-cloog - -info-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing info in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-dvi-cloog dvi-cloog -maybe-dvi-cloog: -@if cloog -maybe-dvi-cloog: dvi-cloog - -dvi-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing dvi in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-pdf-cloog pdf-cloog -maybe-pdf-cloog: -@if cloog -maybe-pdf-cloog: pdf-cloog - -pdf-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing pdf in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-html-cloog html-cloog -maybe-html-cloog: -@if cloog -maybe-html-cloog: html-cloog - -html-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing html in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-TAGS-cloog TAGS-cloog -maybe-TAGS-cloog: -@if cloog -maybe-TAGS-cloog: TAGS-cloog - -TAGS-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing TAGS in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-install-info-cloog install-info-cloog -maybe-install-info-cloog: -@if cloog -maybe-install-info-cloog: install-info-cloog - -install-info-cloog: \ - configure-cloog \ - info-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-info in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-install-pdf-cloog install-pdf-cloog -maybe-install-pdf-cloog: -@if cloog -maybe-install-pdf-cloog: install-pdf-cloog - -install-pdf-cloog: \ - configure-cloog \ - pdf-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-pdf in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-install-html-cloog install-html-cloog -maybe-install-html-cloog: -@if cloog -maybe-install-html-cloog: install-html-cloog - -install-html-cloog: \ - configure-cloog \ - html-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing install-html in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-installcheck-cloog installcheck-cloog -maybe-installcheck-cloog: -@if cloog -maybe-installcheck-cloog: installcheck-cloog - -installcheck-cloog: \ - configure-cloog - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing installcheck in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-mostlyclean-cloog mostlyclean-cloog -maybe-mostlyclean-cloog: -@if cloog -maybe-mostlyclean-cloog: mostlyclean-cloog - -mostlyclean-cloog: - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing mostlyclean in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-clean-cloog clean-cloog -maybe-clean-cloog: -@if cloog -maybe-clean-cloog: clean-cloog - -clean-cloog: - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing clean in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-distclean-cloog distclean-cloog -maybe-distclean-cloog: -@if cloog -maybe-distclean-cloog: distclean-cloog - -distclean-cloog: - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing distclean in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - -.PHONY: maybe-maintainer-clean-cloog maintainer-clean-cloog -maybe-maintainer-clean-cloog: -@if cloog -maybe-maintainer-clean-cloog: maintainer-clean-cloog - -maintainer-clean-cloog: - @[ -f ./cloog/Makefile ] || exit 0; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ - for flag in $(EXTRA_HOST_FLAGS) CPPFLAGS="$$CPPFLAGS" LDFLAGS="$$LDFLAGS" V=1; do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - echo "Doing maintainer-clean in cloog" ; \ - (cd $(HOST_SUBDIR)/cloog && \ - $(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 cloog - - - .PHONY: configure-libelf maybe-configure-libelf maybe-configure-libelf: @if gcc-bootstrap @@ -15200,11 +14525,12 @@ configure-libelf: *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libelf"; \ - libsrcdir="$$s/libelf"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libelf; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} --disable-shared \ + --target=${target_alias} --disable-shared \ || exit 1 @endif libelf @@ -15233,11 +14559,12 @@ configure-stage1-libelf: *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libelf"; \ - libsrcdir="$$s/libelf"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libelf; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) \ --disable-shared @endif libelf-bootstrap @@ -15266,12 +14593,12 @@ configure-stage2-libelf: *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libelf"; \ - libsrcdir="$$s/libelf"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libelf; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ --disable-shared @endif libelf-bootstrap @@ -15300,12 +14627,12 @@ configure-stage3-libelf: *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libelf"; \ - libsrcdir="$$s/libelf"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libelf; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ --disable-shared @endif libelf-bootstrap @@ -15334,12 +14661,12 @@ configure-stage4-libelf: *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libelf"; \ - libsrcdir="$$s/libelf"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libelf; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ --disable-shared @endif libelf-bootstrap @@ -15368,12 +14695,12 @@ configure-stageprofile-libelf: *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libelf"; \ - libsrcdir="$$s/libelf"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libelf; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ --disable-shared @endif libelf-bootstrap @@ -15402,12 +14729,12 @@ configure-stagefeedback-libelf: *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libelf"; \ - libsrcdir="$$s/libelf"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libelf; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ --disable-shared @endif libelf-bootstrap @@ -15694,9 +15021,9 @@ check-libelf: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libelf && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif libelf @@ -16066,11 +15393,12 @@ configure-gold: *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gold; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif gold @@ -16099,11 +15427,12 @@ configure-stage1-gold: *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gold; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif gold-bootstrap @@ -16131,12 +15460,12 @@ configure-stage2-gold: *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gold; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif gold-bootstrap @@ -16164,12 +15493,12 @@ configure-stage3-gold: *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gold; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif gold-bootstrap @@ -16197,12 +15526,12 @@ configure-stage4-gold: *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gold; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif gold-bootstrap @@ -16230,12 +15559,12 @@ configure-stageprofile-gold: *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gold; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif gold-bootstrap @@ -16263,12 +15592,12 @@ configure-stagefeedback-gold: *) topdir=`echo $(HOST_SUBDIR)/gold/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gold"; \ - libsrcdir="$$s/gold"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gold; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif gold-bootstrap @@ -16554,9 +15883,9 @@ check-gold: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gold && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif gold @@ -16939,11 +16268,12 @@ configure-gprof: *) topdir=`echo $(HOST_SUBDIR)/gprof/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gprof"; \ - libsrcdir="$$s/gprof"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gprof; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif gprof @@ -16981,7 +16311,7 @@ check-gprof: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gprof && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -17378,11 +16708,12 @@ configure-intl: *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=intl; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif intl @@ -17411,11 +16742,12 @@ configure-stage1-intl: *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=intl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif intl-bootstrap @@ -17443,12 +16775,12 @@ configure-stage2-intl: *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=intl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif intl-bootstrap @@ -17476,12 +16808,12 @@ configure-stage3-intl: *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=intl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif intl-bootstrap @@ -17509,12 +16841,12 @@ configure-stage4-intl: *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=intl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif intl-bootstrap @@ -17542,12 +16874,12 @@ configure-stageprofile-intl: *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=intl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif intl-bootstrap @@ -17575,12 +16907,12 @@ configure-stagefeedback-intl: *) topdir=`echo $(HOST_SUBDIR)/intl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/intl"; \ - libsrcdir="$$s/intl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=intl; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif intl-bootstrap @@ -17866,9 +17198,9 @@ check-intl: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/intl && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif intl @@ -18251,11 +17583,12 @@ configure-tcl: *) topdir=`echo $(HOST_SUBDIR)/tcl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/tcl"; \ - libsrcdir="$$s/tcl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=tcl; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif tcl @@ -18293,7 +17626,7 @@ check-tcl: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/tcl && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -18676,11 +18009,12 @@ configure-itcl: *) topdir=`echo $(HOST_SUBDIR)/itcl/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/itcl"; \ - libsrcdir="$$s/itcl"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=itcl; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif itcl @@ -18718,7 +18052,7 @@ check-itcl: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/itcl && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -19115,11 +18449,12 @@ configure-ld: *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=ld; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif ld @@ -19148,11 +18483,12 @@ configure-stage1-ld: *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=ld; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif ld-bootstrap @@ -19180,12 +18516,12 @@ configure-stage2-ld: *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=ld; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif ld-bootstrap @@ -19213,12 +18549,12 @@ configure-stage3-ld: *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=ld; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif ld-bootstrap @@ -19246,12 +18582,12 @@ configure-stage4-ld: *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=ld; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif ld-bootstrap @@ -19279,12 +18615,12 @@ configure-stageprofile-ld: *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=ld; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif ld-bootstrap @@ -19312,12 +18648,12 @@ configure-stagefeedback-ld: *) topdir=`echo $(HOST_SUBDIR)/ld/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/ld"; \ - libsrcdir="$$s/ld"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=ld; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif ld-bootstrap @@ -19603,9 +18939,9 @@ check-ld: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/ld && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif ld @@ -19987,11 +19323,12 @@ configure-libbacktrace: *) topdir=`echo $(HOST_SUBDIR)/libbacktrace/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libbacktrace"; \ - libsrcdir="$$s/libbacktrace"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libbacktrace; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif libbacktrace @@ -20020,11 +19357,12 @@ configure-stage1-libbacktrace: *) topdir=`echo $(HOST_SUBDIR)/libbacktrace/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libbacktrace"; \ - libsrcdir="$$s/libbacktrace"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libbacktrace; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif libbacktrace-bootstrap @@ -20052,12 +19390,12 @@ configure-stage2-libbacktrace: *) topdir=`echo $(HOST_SUBDIR)/libbacktrace/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libbacktrace"; \ - libsrcdir="$$s/libbacktrace"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libbacktrace; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif libbacktrace-bootstrap @@ -20085,12 +19423,12 @@ configure-stage3-libbacktrace: *) topdir=`echo $(HOST_SUBDIR)/libbacktrace/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libbacktrace"; \ - libsrcdir="$$s/libbacktrace"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libbacktrace; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif libbacktrace-bootstrap @@ -20118,12 +19456,12 @@ configure-stage4-libbacktrace: *) topdir=`echo $(HOST_SUBDIR)/libbacktrace/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libbacktrace"; \ - libsrcdir="$$s/libbacktrace"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libbacktrace; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif libbacktrace-bootstrap @@ -20151,12 +19489,12 @@ configure-stageprofile-libbacktrace: *) topdir=`echo $(HOST_SUBDIR)/libbacktrace/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libbacktrace"; \ - libsrcdir="$$s/libbacktrace"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libbacktrace; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif libbacktrace-bootstrap @@ -20184,12 +19522,12 @@ configure-stagefeedback-libbacktrace: *) topdir=`echo $(HOST_SUBDIR)/libbacktrace/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libbacktrace"; \ - libsrcdir="$$s/libbacktrace"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libbacktrace; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif libbacktrace-bootstrap @@ -20475,9 +19813,9 @@ check-libbacktrace: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libbacktrace && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif libbacktrace @@ -20859,11 +20197,12 @@ configure-libcpp: *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libcpp; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif libcpp @@ -20892,11 +20231,12 @@ configure-stage1-libcpp: *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libcpp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif libcpp-bootstrap @@ -20924,12 +20264,12 @@ configure-stage2-libcpp: *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libcpp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif libcpp-bootstrap @@ -20957,12 +20297,12 @@ configure-stage3-libcpp: *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libcpp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif libcpp-bootstrap @@ -20990,12 +20330,12 @@ configure-stage4-libcpp: *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libcpp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif libcpp-bootstrap @@ -21023,12 +20363,12 @@ configure-stageprofile-libcpp: *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libcpp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif libcpp-bootstrap @@ -21056,12 +20396,12 @@ configure-stagefeedback-libcpp: *) topdir=`echo $(HOST_SUBDIR)/libcpp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libcpp"; \ - libsrcdir="$$s/libcpp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libcpp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif libcpp-bootstrap @@ -21347,9 +20687,9 @@ check-libcpp: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libcpp && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif libcpp @@ -21731,11 +21071,12 @@ configure-libdecnumber: *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libdecnumber; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif libdecnumber @@ -21764,11 +21105,12 @@ configure-stage1-libdecnumber: *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libdecnumber; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif libdecnumber-bootstrap @@ -21796,12 +21138,12 @@ configure-stage2-libdecnumber: *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libdecnumber; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif libdecnumber-bootstrap @@ -21829,12 +21171,12 @@ configure-stage3-libdecnumber: *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libdecnumber; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif libdecnumber-bootstrap @@ -21862,12 +21204,12 @@ configure-stage4-libdecnumber: *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libdecnumber; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif libdecnumber-bootstrap @@ -21895,12 +21237,12 @@ configure-stageprofile-libdecnumber: *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libdecnumber; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif libdecnumber-bootstrap @@ -21928,12 +21270,12 @@ configure-stagefeedback-libdecnumber: *) topdir=`echo $(HOST_SUBDIR)/libdecnumber/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libdecnumber"; \ - libsrcdir="$$s/libdecnumber"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libdecnumber; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif libdecnumber-bootstrap @@ -22219,9 +21561,9 @@ check-libdecnumber: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libdecnumber && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif libdecnumber @@ -22604,11 +21946,12 @@ configure-libgui: *) topdir=`echo $(HOST_SUBDIR)/libgui/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgui"; \ - libsrcdir="$$s/libgui"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgui; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif libgui @@ -22646,7 +21989,7 @@ check-libgui: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libgui && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -23043,11 +22386,12 @@ configure-libiberty: *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libiberty; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} @extra_host_libiberty_configure_flags@ \ + --target=${target_alias} @extra_host_libiberty_configure_flags@ \ || exit 1 @endif libiberty @@ -23076,11 +22420,12 @@ configure-stage1-libiberty: *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) \ @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap @@ -23109,12 +22454,12 @@ configure-stage2-libiberty: *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap @@ -23143,12 +22488,12 @@ configure-stage3-libiberty: *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap @@ -23177,12 +22522,12 @@ configure-stage4-libiberty: *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap @@ -23211,12 +22556,12 @@ configure-stageprofile-libiberty: *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap @@ -23245,12 +22590,12 @@ configure-stagefeedback-libiberty: *) topdir=`echo $(HOST_SUBDIR)/libiberty/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ @extra_host_libiberty_configure_flags@ @endif libiberty-bootstrap @@ -23537,9 +22882,9 @@ check-libiberty: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libiberty && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) $(EXTRA_BOOTSTRAP_FLAGS) check) @endif libiberty @@ -23901,6 +23246,886 @@ maintainer-clean-libiberty: +.PHONY: configure-libiberty-linker-plugin maybe-configure-libiberty-linker-plugin +maybe-configure-libiberty-linker-plugin: +@if gcc-bootstrap +configure-libiberty-linker-plugin: stage_current +@endif gcc-bootstrap +@if libiberty-linker-plugin +maybe-configure-libiberty-linker-plugin: configure-libiberty-linker-plugin +configure-libiberty-linker-plugin: + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + test ! -f $(HOST_SUBDIR)/libiberty-linker-plugin/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin ; \ + $(HOST_EXPORTS) \ + echo Configuring in $(HOST_SUBDIR)/libiberty-linker-plugin; \ + cd "$(HOST_SUBDIR)/libiberty-linker-plugin" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiberty-linker-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiberty; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} @extra_host_libiberty_configure_flags@ --disable-install-libiberty @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ \ + || exit 1 +@endif libiberty-linker-plugin + + + +.PHONY: configure-stage1-libiberty-linker-plugin maybe-configure-stage1-libiberty-linker-plugin +maybe-configure-stage1-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-configure-stage1-libiberty-linker-plugin: configure-stage1-libiberty-linker-plugin +configure-stage1-libiberty-linker-plugin: + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiberty-linker-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)/libiberty-linker-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin ; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiberty-linker-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + \ + $(STAGE1_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ --disable-install-libiberty @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ +@endif libiberty-linker-plugin-bootstrap + +.PHONY: configure-stage2-libiberty-linker-plugin maybe-configure-stage2-libiberty-linker-plugin +maybe-configure-stage2-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-configure-stage2-libiberty-linker-plugin: configure-stage2-libiberty-linker-plugin +configure-stage2-libiberty-linker-plugin: + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiberty-linker-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)/libiberty-linker-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin ; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiberty-linker-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ --disable-install-libiberty @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ +@endif libiberty-linker-plugin-bootstrap + +.PHONY: configure-stage3-libiberty-linker-plugin maybe-configure-stage3-libiberty-linker-plugin +maybe-configure-stage3-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-configure-stage3-libiberty-linker-plugin: configure-stage3-libiberty-linker-plugin +configure-stage3-libiberty-linker-plugin: + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiberty-linker-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)/libiberty-linker-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin ; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiberty-linker-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ --disable-install-libiberty @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ +@endif libiberty-linker-plugin-bootstrap + +.PHONY: configure-stage4-libiberty-linker-plugin maybe-configure-stage4-libiberty-linker-plugin +maybe-configure-stage4-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-configure-stage4-libiberty-linker-plugin: configure-stage4-libiberty-linker-plugin +configure-stage4-libiberty-linker-plugin: + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiberty-linker-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)/libiberty-linker-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin ; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiberty-linker-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ --disable-install-libiberty @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ +@endif libiberty-linker-plugin-bootstrap + +.PHONY: configure-stageprofile-libiberty-linker-plugin maybe-configure-stageprofile-libiberty-linker-plugin +maybe-configure-stageprofile-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-configure-stageprofile-libiberty-linker-plugin: configure-stageprofile-libiberty-linker-plugin +configure-stageprofile-libiberty-linker-plugin: + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiberty-linker-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)/libiberty-linker-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin ; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiberty-linker-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ --disable-install-libiberty @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ +@endif libiberty-linker-plugin-bootstrap + +.PHONY: configure-stagefeedback-libiberty-linker-plugin maybe-configure-stagefeedback-libiberty-linker-plugin +maybe-configure-stagefeedback-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-configure-stagefeedback-libiberty-linker-plugin: configure-stagefeedback-libiberty-linker-plugin +configure-stagefeedback-libiberty-linker-plugin: + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiberty-linker-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)/libiberty-linker-plugin ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiberty-linker-plugin ; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiberty-linker-plugin/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiberty; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ + @extra_host_libiberty_configure_flags@ --disable-install-libiberty @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ +@endif libiberty-linker-plugin-bootstrap + + + + + +.PHONY: all-libiberty-linker-plugin maybe-all-libiberty-linker-plugin +maybe-all-libiberty-linker-plugin: +@if gcc-bootstrap +all-libiberty-linker-plugin: stage_current +@endif gcc-bootstrap +@if libiberty-linker-plugin +TARGET-libiberty-linker-plugin=all +maybe-all-libiberty-linker-plugin: all-libiberty-linker-plugin +all-libiberty-linker-plugin: configure-libiberty-linker-plugin + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libiberty-linker-plugin && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ \ + $(TARGET-libiberty-linker-plugin)) +@endif libiberty-linker-plugin + + + +.PHONY: all-stage1-libiberty-linker-plugin maybe-all-stage1-libiberty-linker-plugin +.PHONY: clean-stage1-libiberty-linker-plugin maybe-clean-stage1-libiberty-linker-plugin +maybe-all-stage1-libiberty-linker-plugin: +maybe-clean-stage1-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-all-stage1-libiberty-linker-plugin: all-stage1-libiberty-linker-plugin +all-stage1: all-stage1-libiberty-linker-plugin +TARGET-stage1-libiberty-linker-plugin = $(TARGET-libiberty-linker-plugin) +all-stage1-libiberty-linker-plugin: configure-stage1-libiberty-linker-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)/libiberty-linker-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) \ + $(STAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ \ + TFLAGS="$(STAGE1_TFLAGS)" \ + $(TARGET-stage1-libiberty-linker-plugin) + +maybe-clean-stage1-libiberty-linker-plugin: clean-stage1-libiberty-linker-plugin +clean-stage1: clean-stage1-libiberty-linker-plugin +clean-stage1-libiberty-linker-plugin: + @if [ $(current_stage) = stage1 ]; then \ + [ -f $(HOST_SUBDIR)/libiberty-linker-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage1-libiberty-linker-plugin/Makefile ] || exit 0; \ + $(MAKE) stage1-start; \ + fi; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(STAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean +@endif libiberty-linker-plugin-bootstrap + + +.PHONY: all-stage2-libiberty-linker-plugin maybe-all-stage2-libiberty-linker-plugin +.PHONY: clean-stage2-libiberty-linker-plugin maybe-clean-stage2-libiberty-linker-plugin +maybe-all-stage2-libiberty-linker-plugin: +maybe-clean-stage2-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-all-stage2-libiberty-linker-plugin: all-stage2-libiberty-linker-plugin +all-stage2: all-stage2-libiberty-linker-plugin +TARGET-stage2-libiberty-linker-plugin = $(TARGET-libiberty-linker-plugin) +all-stage2-libiberty-linker-plugin: configure-stage2-libiberty-linker-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)/libiberty-linker-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) @extra_linker_plugin_flags@ \ + TFLAGS="$(STAGE2_TFLAGS)" \ + $(TARGET-stage2-libiberty-linker-plugin) + +maybe-clean-stage2-libiberty-linker-plugin: clean-stage2-libiberty-linker-plugin +clean-stage2: clean-stage2-libiberty-linker-plugin +clean-stage2-libiberty-linker-plugin: + @if [ $(current_stage) = stage2 ]; then \ + [ -f $(HOST_SUBDIR)/libiberty-linker-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage2-libiberty-linker-plugin/Makefile ] || exit 0; \ + $(MAKE) stage2-start; \ + fi; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean +@endif libiberty-linker-plugin-bootstrap + + +.PHONY: all-stage3-libiberty-linker-plugin maybe-all-stage3-libiberty-linker-plugin +.PHONY: clean-stage3-libiberty-linker-plugin maybe-clean-stage3-libiberty-linker-plugin +maybe-all-stage3-libiberty-linker-plugin: +maybe-clean-stage3-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-all-stage3-libiberty-linker-plugin: all-stage3-libiberty-linker-plugin +all-stage3: all-stage3-libiberty-linker-plugin +TARGET-stage3-libiberty-linker-plugin = $(TARGET-libiberty-linker-plugin) +all-stage3-libiberty-linker-plugin: configure-stage3-libiberty-linker-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)/libiberty-linker-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) @extra_linker_plugin_flags@ \ + TFLAGS="$(STAGE3_TFLAGS)" \ + $(TARGET-stage3-libiberty-linker-plugin) + +maybe-clean-stage3-libiberty-linker-plugin: clean-stage3-libiberty-linker-plugin +clean-stage3: clean-stage3-libiberty-linker-plugin +clean-stage3-libiberty-linker-plugin: + @if [ $(current_stage) = stage3 ]; then \ + [ -f $(HOST_SUBDIR)/libiberty-linker-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage3-libiberty-linker-plugin/Makefile ] || exit 0; \ + $(MAKE) stage3-start; \ + fi; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean +@endif libiberty-linker-plugin-bootstrap + + +.PHONY: all-stage4-libiberty-linker-plugin maybe-all-stage4-libiberty-linker-plugin +.PHONY: clean-stage4-libiberty-linker-plugin maybe-clean-stage4-libiberty-linker-plugin +maybe-all-stage4-libiberty-linker-plugin: +maybe-clean-stage4-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-all-stage4-libiberty-linker-plugin: all-stage4-libiberty-linker-plugin +all-stage4: all-stage4-libiberty-linker-plugin +TARGET-stage4-libiberty-linker-plugin = $(TARGET-libiberty-linker-plugin) +all-stage4-libiberty-linker-plugin: configure-stage4-libiberty-linker-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)/libiberty-linker-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) @extra_linker_plugin_flags@ \ + TFLAGS="$(STAGE4_TFLAGS)" \ + $(TARGET-stage4-libiberty-linker-plugin) + +maybe-clean-stage4-libiberty-linker-plugin: clean-stage4-libiberty-linker-plugin +clean-stage4: clean-stage4-libiberty-linker-plugin +clean-stage4-libiberty-linker-plugin: + @if [ $(current_stage) = stage4 ]; then \ + [ -f $(HOST_SUBDIR)/libiberty-linker-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage4-libiberty-linker-plugin/Makefile ] || exit 0; \ + $(MAKE) stage4-start; \ + fi; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean +@endif libiberty-linker-plugin-bootstrap + + +.PHONY: all-stageprofile-libiberty-linker-plugin maybe-all-stageprofile-libiberty-linker-plugin +.PHONY: clean-stageprofile-libiberty-linker-plugin maybe-clean-stageprofile-libiberty-linker-plugin +maybe-all-stageprofile-libiberty-linker-plugin: +maybe-clean-stageprofile-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-all-stageprofile-libiberty-linker-plugin: all-stageprofile-libiberty-linker-plugin +all-stageprofile: all-stageprofile-libiberty-linker-plugin +TARGET-stageprofile-libiberty-linker-plugin = $(TARGET-libiberty-linker-plugin) +all-stageprofile-libiberty-linker-plugin: configure-stageprofile-libiberty-linker-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)/libiberty-linker-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) @extra_linker_plugin_flags@ \ + TFLAGS="$(STAGEprofile_TFLAGS)" \ + $(TARGET-stageprofile-libiberty-linker-plugin) + +maybe-clean-stageprofile-libiberty-linker-plugin: clean-stageprofile-libiberty-linker-plugin +clean-stageprofile: clean-stageprofile-libiberty-linker-plugin +clean-stageprofile-libiberty-linker-plugin: + @if [ $(current_stage) = stageprofile ]; then \ + [ -f $(HOST_SUBDIR)/libiberty-linker-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stageprofile-libiberty-linker-plugin/Makefile ] || exit 0; \ + $(MAKE) stageprofile-start; \ + fi; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean +@endif libiberty-linker-plugin-bootstrap + + +.PHONY: all-stagefeedback-libiberty-linker-plugin maybe-all-stagefeedback-libiberty-linker-plugin +.PHONY: clean-stagefeedback-libiberty-linker-plugin maybe-clean-stagefeedback-libiberty-linker-plugin +maybe-all-stagefeedback-libiberty-linker-plugin: +maybe-clean-stagefeedback-libiberty-linker-plugin: +@if libiberty-linker-plugin-bootstrap +maybe-all-stagefeedback-libiberty-linker-plugin: all-stagefeedback-libiberty-linker-plugin +all-stagefeedback: all-stagefeedback-libiberty-linker-plugin +TARGET-stagefeedback-libiberty-linker-plugin = $(TARGET-libiberty-linker-plugin) +all-stagefeedback-libiberty-linker-plugin: configure-stagefeedback-libiberty-linker-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)/libiberty-linker-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) @extra_linker_plugin_flags@ \ + TFLAGS="$(STAGEfeedback_TFLAGS)" \ + $(TARGET-stagefeedback-libiberty-linker-plugin) + +maybe-clean-stagefeedback-libiberty-linker-plugin: clean-stagefeedback-libiberty-linker-plugin +clean-stagefeedback: clean-stagefeedback-libiberty-linker-plugin +clean-stagefeedback-libiberty-linker-plugin: + @if [ $(current_stage) = stagefeedback ]; then \ + [ -f $(HOST_SUBDIR)/libiberty-linker-plugin/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stagefeedback-libiberty-linker-plugin/Makefile ] || exit 0; \ + $(MAKE) stagefeedback-start; \ + fi; \ + cd $(HOST_SUBDIR)/libiberty-linker-plugin && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean +@endif libiberty-linker-plugin-bootstrap + + + + + +.PHONY: check-libiberty-linker-plugin maybe-check-libiberty-linker-plugin +maybe-check-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-check-libiberty-linker-plugin: check-libiberty-linker-plugin + +check-libiberty-linker-plugin: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libiberty-linker-plugin && \ + $(MAKE) $(FLAGS_TO_PASS) @extra_linker_plugin_flags@ $(EXTRA_BOOTSTRAP_FLAGS) check) + +@endif libiberty-linker-plugin + +.PHONY: install-libiberty-linker-plugin maybe-install-libiberty-linker-plugin +maybe-install-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-install-libiberty-linker-plugin: install-libiberty-linker-plugin + +install-libiberty-linker-plugin: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libiberty-linker-plugin && \ + $(MAKE) $(FLAGS_TO_PASS) @extra_linker_plugin_flags@ install) + +@endif libiberty-linker-plugin + +.PHONY: install-strip-libiberty-linker-plugin maybe-install-strip-libiberty-linker-plugin +maybe-install-strip-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-install-strip-libiberty-linker-plugin: install-strip-libiberty-linker-plugin + +install-strip-libiberty-linker-plugin: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libiberty-linker-plugin && \ + $(MAKE) $(FLAGS_TO_PASS) @extra_linker_plugin_flags@ install-strip) + +@endif libiberty-linker-plugin + +# Other targets (info, dvi, pdf, etc.) + +.PHONY: maybe-info-libiberty-linker-plugin info-libiberty-linker-plugin +maybe-info-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-info-libiberty-linker-plugin: info-libiberty-linker-plugin + +info-libiberty-linker-plugin: \ + configure-libiberty-linker-plugin + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing info in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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 libiberty-linker-plugin + +.PHONY: maybe-dvi-libiberty-linker-plugin dvi-libiberty-linker-plugin +maybe-dvi-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-dvi-libiberty-linker-plugin: dvi-libiberty-linker-plugin + +dvi-libiberty-linker-plugin: \ + configure-libiberty-linker-plugin + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing dvi in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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 libiberty-linker-plugin + +.PHONY: maybe-pdf-libiberty-linker-plugin pdf-libiberty-linker-plugin +maybe-pdf-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-pdf-libiberty-linker-plugin: pdf-libiberty-linker-plugin + +pdf-libiberty-linker-plugin: \ + configure-libiberty-linker-plugin + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing pdf in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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 libiberty-linker-plugin + +.PHONY: maybe-html-libiberty-linker-plugin html-libiberty-linker-plugin +maybe-html-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-html-libiberty-linker-plugin: html-libiberty-linker-plugin + +html-libiberty-linker-plugin: \ + configure-libiberty-linker-plugin + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing html in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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 libiberty-linker-plugin + +.PHONY: maybe-TAGS-libiberty-linker-plugin TAGS-libiberty-linker-plugin +maybe-TAGS-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-TAGS-libiberty-linker-plugin: TAGS-libiberty-linker-plugin + +TAGS-libiberty-linker-plugin: \ + configure-libiberty-linker-plugin + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing TAGS in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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 libiberty-linker-plugin + +.PHONY: maybe-install-info-libiberty-linker-plugin install-info-libiberty-linker-plugin +maybe-install-info-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-install-info-libiberty-linker-plugin: install-info-libiberty-linker-plugin + +install-info-libiberty-linker-plugin: \ + configure-libiberty-linker-plugin \ + info-libiberty-linker-plugin + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing install-info in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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 libiberty-linker-plugin + +.PHONY: maybe-install-pdf-libiberty-linker-plugin install-pdf-libiberty-linker-plugin +maybe-install-pdf-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-install-pdf-libiberty-linker-plugin: install-pdf-libiberty-linker-plugin + +install-pdf-libiberty-linker-plugin: \ + configure-libiberty-linker-plugin \ + pdf-libiberty-linker-plugin + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing install-pdf in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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 libiberty-linker-plugin + +.PHONY: maybe-install-html-libiberty-linker-plugin install-html-libiberty-linker-plugin +maybe-install-html-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-install-html-libiberty-linker-plugin: install-html-libiberty-linker-plugin + +install-html-libiberty-linker-plugin: \ + configure-libiberty-linker-plugin \ + html-libiberty-linker-plugin + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing install-html in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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 libiberty-linker-plugin + +.PHONY: maybe-installcheck-libiberty-linker-plugin installcheck-libiberty-linker-plugin +maybe-installcheck-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-installcheck-libiberty-linker-plugin: installcheck-libiberty-linker-plugin + +installcheck-libiberty-linker-plugin: \ + configure-libiberty-linker-plugin + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing installcheck in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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}" \ + installcheck) \ + || exit 1 + +@endif libiberty-linker-plugin + +.PHONY: maybe-mostlyclean-libiberty-linker-plugin mostlyclean-libiberty-linker-plugin +maybe-mostlyclean-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-mostlyclean-libiberty-linker-plugin: mostlyclean-libiberty-linker-plugin + +mostlyclean-libiberty-linker-plugin: + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing mostlyclean in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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}" \ + mostlyclean) \ + || exit 1 + +@endif libiberty-linker-plugin + +.PHONY: maybe-clean-libiberty-linker-plugin clean-libiberty-linker-plugin +maybe-clean-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-clean-libiberty-linker-plugin: clean-libiberty-linker-plugin + +clean-libiberty-linker-plugin: + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing clean in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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}" \ + clean) \ + || exit 1 + +@endif libiberty-linker-plugin + +.PHONY: maybe-distclean-libiberty-linker-plugin distclean-libiberty-linker-plugin +maybe-distclean-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-distclean-libiberty-linker-plugin: distclean-libiberty-linker-plugin + +distclean-libiberty-linker-plugin: + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing distclean in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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}" \ + distclean) \ + || exit 1 + +@endif libiberty-linker-plugin + +.PHONY: maybe-maintainer-clean-libiberty-linker-plugin maintainer-clean-libiberty-linker-plugin +maybe-maintainer-clean-libiberty-linker-plugin: +@if libiberty-linker-plugin +maybe-maintainer-clean-libiberty-linker-plugin: maintainer-clean-libiberty-linker-plugin + +maintainer-clean-libiberty-linker-plugin: + @[ -f ./libiberty-linker-plugin/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) @extra_linker_plugin_flags@; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing maintainer-clean in libiberty-linker-plugin" ; \ + (cd $(HOST_SUBDIR)/libiberty-linker-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}" \ + maintainer-clean) \ + || exit 1 + +@endif libiberty-linker-plugin + + + .PHONY: configure-libiconv maybe-configure-libiconv maybe-configure-libiconv: @if gcc-bootstrap @@ -23922,11 +24147,12 @@ configure-libiconv: *) topdir=`echo $(HOST_SUBDIR)/libiconv/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libiconv"; \ - libsrcdir="$$s/libiconv"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libiconv; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} --disable-shared \ + --target=${target_alias} --disable-shared \ || exit 1 @endif libiconv @@ -23964,7 +24190,7 @@ check-libiconv: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/libiconv && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -24299,11 +24525,12 @@ configure-m4: *) topdir=`echo $(HOST_SUBDIR)/m4/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/m4"; \ - libsrcdir="$$s/m4"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=m4; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif m4 @@ -24341,7 +24568,7 @@ check-m4: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/m4 && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -24739,11 +24966,12 @@ configure-readline: *) topdir=`echo $(HOST_SUBDIR)/readline/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/readline"; \ - libsrcdir="$$s/readline"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=readline; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif readline @@ -24781,7 +25009,7 @@ check-readline: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/readline && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -25179,11 +25407,12 @@ configure-sid: *) topdir=`echo $(HOST_SUBDIR)/sid/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/sid"; \ - libsrcdir="$$s/sid"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=sid; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif sid @@ -25221,7 +25450,7 @@ check-sid: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/sid && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -25619,11 +25848,12 @@ configure-sim: *) topdir=`echo $(HOST_SUBDIR)/sim/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/sim"; \ - libsrcdir="$$s/sim"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=sim; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif sim @@ -25661,7 +25891,7 @@ check-sim: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/sim && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -26059,11 +26289,12 @@ configure-texinfo: *) topdir=`echo $(HOST_SUBDIR)/texinfo/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/texinfo"; \ - libsrcdir="$$s/texinfo"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=texinfo; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif texinfo @@ -26101,7 +26332,7 @@ check-texinfo: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/texinfo && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -26486,11 +26717,12 @@ configure-zlib: *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=zlib; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} @extra_host_zlib_configure_flags@ \ || exit 1 @endif zlib @@ -26519,12 +26751,14 @@ configure-stage1-zlib: *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=zlib; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) + --target=${target_alias} \ + \ + $(STAGE1_CONFIGURE_FLAGS) \ + @extra_host_zlib_configure_flags@ @endif zlib-bootstrap .PHONY: configure-stage2-zlib maybe-configure-stage2-zlib @@ -26551,13 +26785,14 @@ configure-stage2-zlib: *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=zlib; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE2_CONFIGURE_FLAGS) + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ + @extra_host_zlib_configure_flags@ @endif zlib-bootstrap .PHONY: configure-stage3-zlib maybe-configure-stage3-zlib @@ -26584,13 +26819,14 @@ configure-stage3-zlib: *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=zlib; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE3_CONFIGURE_FLAGS) + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ + @extra_host_zlib_configure_flags@ @endif zlib-bootstrap .PHONY: configure-stage4-zlib maybe-configure-stage4-zlib @@ -26617,13 +26853,14 @@ configure-stage4-zlib: *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=zlib; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGE4_CONFIGURE_FLAGS) + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ + @extra_host_zlib_configure_flags@ @endif zlib-bootstrap .PHONY: configure-stageprofile-zlib maybe-configure-stageprofile-zlib @@ -26650,13 +26887,14 @@ configure-stageprofile-zlib: *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=zlib; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEprofile_CONFIGURE_FLAGS) + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ + @extra_host_zlib_configure_flags@ @endif zlib-bootstrap .PHONY: configure-stagefeedback-zlib maybe-configure-stagefeedback-zlib @@ -26683,13 +26921,14 @@ configure-stagefeedback-zlib: *) topdir=`echo $(HOST_SUBDIR)/zlib/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=zlib; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ - $(STAGEfeedback_CONFIGURE_FLAGS) + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ + @extra_host_zlib_configure_flags@ @endif zlib-bootstrap @@ -27341,11 +27580,12 @@ configure-gdb: *) topdir=`echo $(HOST_SUBDIR)/gdb/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gdb"; \ - libsrcdir="$$s/gdb"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gdb; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif gdb @@ -27383,7 +27623,7 @@ check-gdb: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gdb && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -27781,11 +28021,12 @@ configure-expect: *) topdir=`echo $(HOST_SUBDIR)/expect/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/expect"; \ - libsrcdir="$$s/expect"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=expect; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif expect @@ -27823,7 +28064,7 @@ check-expect: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/expect && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -28221,11 +28462,12 @@ configure-guile: *) topdir=`echo $(HOST_SUBDIR)/guile/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/guile"; \ - libsrcdir="$$s/guile"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=guile; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif guile @@ -28263,7 +28505,7 @@ check-guile: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/guile && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -28661,11 +28903,12 @@ configure-tk: *) topdir=`echo $(HOST_SUBDIR)/tk/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/tk"; \ - libsrcdir="$$s/tk"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=tk; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif tk @@ -28703,7 +28946,7 @@ check-tk: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/tk && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -29101,11 +29344,12 @@ configure-libtermcap: *) topdir=`echo $(HOST_SUBDIR)/libtermcap/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libtermcap"; \ - libsrcdir="$$s/libtermcap"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libtermcap; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif libtermcap @@ -29475,11 +29719,12 @@ configure-utils: *) topdir=`echo $(HOST_SUBDIR)/utils/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/utils"; \ - libsrcdir="$$s/utils"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=utils; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif utils @@ -29909,11 +30154,12 @@ configure-gnattools: *) topdir=`echo $(HOST_SUBDIR)/gnattools/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/gnattools"; \ - libsrcdir="$$s/gnattools"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=gnattools; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif gnattools @@ -29951,7 +30197,7 @@ check-gnattools: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/gnattools && \ $(MAKE) $(FLAGS_TO_PASS) check) @@ -30348,11 +30594,12 @@ configure-lto-plugin: *) 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 \ + module_srcdir=lto-plugin; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} --enable-shared \ + --target=${target_alias} --enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ \ || exit 1 @endif lto-plugin @@ -30381,13 +30628,14 @@ configure-stage1-lto-plugin: *) 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 \ + module_srcdir=lto-plugin; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) \ - --enable-shared + --enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ @endif lto-plugin-bootstrap .PHONY: configure-stage2-lto-plugin maybe-configure-stage2-lto-plugin @@ -30414,14 +30662,14 @@ configure-stage2-lto-plugin: *) 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 \ + module_srcdir=lto-plugin; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) \ - --enable-shared + --enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ @endif lto-plugin-bootstrap .PHONY: configure-stage3-lto-plugin maybe-configure-stage3-lto-plugin @@ -30448,14 +30696,14 @@ configure-stage3-lto-plugin: *) 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 \ + module_srcdir=lto-plugin; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) \ - --enable-shared + --enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ @endif lto-plugin-bootstrap .PHONY: configure-stage4-lto-plugin maybe-configure-stage4-lto-plugin @@ -30482,14 +30730,14 @@ configure-stage4-lto-plugin: *) 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 \ + module_srcdir=lto-plugin; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) \ - --enable-shared + --enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ @endif lto-plugin-bootstrap .PHONY: configure-stageprofile-lto-plugin maybe-configure-stageprofile-lto-plugin @@ -30516,14 +30764,14 @@ configure-stageprofile-lto-plugin: *) 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 \ + module_srcdir=lto-plugin; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) \ - --enable-shared + --enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ @endif lto-plugin-bootstrap .PHONY: configure-stagefeedback-lto-plugin maybe-configure-stagefeedback-lto-plugin @@ -30550,14 +30798,14 @@ configure-stagefeedback-lto-plugin: *) 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 \ + module_srcdir=lto-plugin; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) \ - --enable-shared + --enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@ @endif lto-plugin-bootstrap @@ -30577,7 +30825,7 @@ all-lto-plugin: configure-lto-plugin s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/lto-plugin && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ \ $(TARGET-lto-plugin)) @endif lto-plugin @@ -30606,7 +30854,7 @@ all-stage1-lto-plugin: configure-stage1-lto-plugin CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ $(EXTRA_HOST_FLAGS) \ - $(STAGE1_FLAGS_TO_PASS) \ + $(STAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ \ TFLAGS="$(STAGE1_TFLAGS)" \ $(TARGET-stage1-lto-plugin) @@ -30621,7 +30869,7 @@ clean-stage1-lto-plugin: fi; \ cd $(HOST_SUBDIR)/lto-plugin && \ $(MAKE) $(EXTRA_HOST_FLAGS) \ - $(STAGE1_FLAGS_TO_PASS) clean + $(STAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean @endif lto-plugin-bootstrap @@ -30648,7 +30896,7 @@ all-stage2-lto-plugin: configure-stage2-lto-plugin 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) @extra_linker_plugin_flags@ \ TFLAGS="$(STAGE2_TFLAGS)" \ $(TARGET-stage2-lto-plugin) @@ -30662,7 +30910,7 @@ clean-stage2-lto-plugin: $(MAKE) stage2-start; \ fi; \ cd $(HOST_SUBDIR)/lto-plugin && \ - $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean @endif lto-plugin-bootstrap @@ -30689,7 +30937,7 @@ all-stage3-lto-plugin: configure-stage3-lto-plugin 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) @extra_linker_plugin_flags@ \ TFLAGS="$(STAGE3_TFLAGS)" \ $(TARGET-stage3-lto-plugin) @@ -30703,7 +30951,7 @@ clean-stage3-lto-plugin: $(MAKE) stage3-start; \ fi; \ cd $(HOST_SUBDIR)/lto-plugin && \ - $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean @endif lto-plugin-bootstrap @@ -30730,7 +30978,7 @@ all-stage4-lto-plugin: configure-stage4-lto-plugin 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) @extra_linker_plugin_flags@ \ TFLAGS="$(STAGE4_TFLAGS)" \ $(TARGET-stage4-lto-plugin) @@ -30744,7 +30992,7 @@ clean-stage4-lto-plugin: $(MAKE) stage4-start; \ fi; \ cd $(HOST_SUBDIR)/lto-plugin && \ - $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean @endif lto-plugin-bootstrap @@ -30771,7 +31019,7 @@ all-stageprofile-lto-plugin: configure-stageprofile-lto-plugin 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) @extra_linker_plugin_flags@ \ TFLAGS="$(STAGEprofile_TFLAGS)" \ $(TARGET-stageprofile-lto-plugin) @@ -30785,7 +31033,7 @@ clean-stageprofile-lto-plugin: $(MAKE) stageprofile-start; \ fi; \ cd $(HOST_SUBDIR)/lto-plugin && \ - $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean @endif lto-plugin-bootstrap @@ -30812,7 +31060,7 @@ all-stagefeedback-lto-plugin: configure-stagefeedback-lto-plugin 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) @extra_linker_plugin_flags@ \ TFLAGS="$(STAGEfeedback_TFLAGS)" \ $(TARGET-stagefeedback-lto-plugin) @@ -30826,7 +31074,7 @@ clean-stagefeedback-lto-plugin: $(MAKE) stagefeedback-start; \ fi; \ cd $(HOST_SUBDIR)/lto-plugin && \ - $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) @extra_linker_plugin_flags@ clean @endif lto-plugin-bootstrap @@ -30842,9 +31090,9 @@ check-lto-plugin: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/lto-plugin && \ - $(MAKE) $(FLAGS_TO_PASS) check) + $(MAKE) $(FLAGS_TO_PASS) @extra_linker_plugin_flags@ $(EXTRA_BOOTSTRAP_FLAGS) check) @endif lto-plugin @@ -30859,7 +31107,7 @@ install-lto-plugin: installdirs s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/lto-plugin && \ - $(MAKE) $(FLAGS_TO_PASS) install) + $(MAKE) $(FLAGS_TO_PASS) @extra_linker_plugin_flags@ install) @endif lto-plugin @@ -30874,7 +31122,7 @@ install-strip-lto-plugin: installdirs s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ (cd $(HOST_SUBDIR)/lto-plugin && \ - $(MAKE) $(FLAGS_TO_PASS) install-strip) + $(MAKE) $(FLAGS_TO_PASS) @extra_linker_plugin_flags@ install-strip) @endif lto-plugin @@ -30891,7 +31139,7 @@ info-lto-plugin: \ 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing info in lto-plugin" ; \ @@ -30916,7 +31164,7 @@ dvi-lto-plugin: \ 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing dvi in lto-plugin" ; \ @@ -30941,7 +31189,7 @@ pdf-lto-plugin: \ 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing pdf in lto-plugin" ; \ @@ -30966,7 +31214,7 @@ html-lto-plugin: \ 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing html in lto-plugin" ; \ @@ -30991,7 +31239,7 @@ TAGS-lto-plugin: \ 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing TAGS in lto-plugin" ; \ @@ -31017,7 +31265,7 @@ install-info-lto-plugin: \ 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-info in lto-plugin" ; \ @@ -31043,7 +31291,7 @@ install-pdf-lto-plugin: \ 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-pdf in lto-plugin" ; \ @@ -31069,7 +31317,7 @@ install-html-lto-plugin: \ 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing install-html in lto-plugin" ; \ @@ -31094,7 +31342,7 @@ installcheck-lto-plugin: \ 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing installcheck in lto-plugin" ; \ @@ -31118,7 +31366,7 @@ mostlyclean-lto-plugin: 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing mostlyclean in lto-plugin" ; \ @@ -31142,7 +31390,7 @@ clean-lto-plugin: 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing clean in lto-plugin" ; \ @@ -31166,7 +31414,7 @@ distclean-lto-plugin: 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing distclean in lto-plugin" ; \ @@ -31190,7 +31438,7 @@ maintainer-clean-lto-plugin: 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) @extra_linker_plugin_flags@; do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ echo "Doing maintainer-clean in lto-plugin" ; \ @@ -31206,488 +31454,2348 @@ maintainer-clean-lto-plugin: -# --------------------------------------- -# Modules which run on the target machine -# --------------------------------------- - - - - -.PHONY: configure-target-libstdc++-v3 maybe-configure-target-libstdc++-v3 -maybe-configure-target-libstdc++-v3: +.PHONY: configure-libcc1 maybe-configure-libcc1 +maybe-configure-libcc1: @if gcc-bootstrap -configure-target-libstdc++-v3: stage_current +configure-libcc1: stage_current @endif gcc-bootstrap -@if target-libstdc++-v3 -maybe-configure-target-libstdc++-v3: configure-target-libstdc++-v3 -configure-target-libstdc++-v3: +@if libcc1 +maybe-configure-libcc1: configure-libcc1 +configure-libcc1: + @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libstdc++-v3; \ - cd "$(TARGET_SUBDIR)/libstdc++-v3" || exit 1; \ + test ! -f $(HOST_SUBDIR)/libcc1/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libcc1 ; \ + $(HOST_EXPORTS) \ + echo Configuring in $(HOST_SUBDIR)/libcc1; \ + cd "$(HOST_SUBDIR)/libcc1" || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + *) topdir=`echo $(HOST_SUBDIR)/libcc1/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - 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} \ + module_srcdir=libcc1; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} --enable-shared \ || exit 1 -@endif target-libstdc++-v3 +@endif libcc1 -.PHONY: configure-stage1-target-libstdc++-v3 maybe-configure-stage1-target-libstdc++-v3 -maybe-configure-stage1-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stage1-target-libstdc++-v3: configure-stage1-target-libstdc++-v3 -configure-stage1-target-libstdc++-v3: - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_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)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - $(STAGE1_CONFIGURE_FLAGS) -@endif target-libstdc++-v3-bootstrap -.PHONY: configure-stage2-target-libstdc++-v3 maybe-configure-stage2-target-libstdc++-v3 -maybe-configure-stage2-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stage2-target-libstdc++-v3: configure-stage2-target-libstdc++-v3 -configure-stage2-target-libstdc++-v3: - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE2_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_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)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(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-libstdc++-v3-bootstrap -.PHONY: configure-stage3-target-libstdc++-v3 maybe-configure-stage3-target-libstdc++-v3 -maybe-configure-stage3-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stage3-target-libstdc++-v3: configure-stage3-target-libstdc++-v3 -configure-stage3-target-libstdc++-v3: - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 +.PHONY: all-libcc1 maybe-all-libcc1 +maybe-all-libcc1: +@if gcc-bootstrap +all-libcc1: stage_current +@endif gcc-bootstrap +@if libcc1 +TARGET-libcc1=all +maybe-all-libcc1: all-libcc1 +all-libcc1: configure-libcc1 + @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE3_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_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)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(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-libstdc++-v3-bootstrap + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) \ + $(TARGET-libcc1)) +@endif libcc1 -.PHONY: configure-stage4-target-libstdc++-v3 maybe-configure-stage4-target-libstdc++-v3 -maybe-configure-stage4-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stage4-target-libstdc++-v3: configure-stage4-target-libstdc++-v3 -configure-stage4-target-libstdc++-v3: - @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + + + +.PHONY: check-libcc1 maybe-check-libcc1 +maybe-check-libcc1: +@if libcc1 +maybe-check-libcc1: check-libcc1 + +check-libcc1: + @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE4_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_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)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(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-libstdc++-v3-bootstrap + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(MAKE) $(FLAGS_TO_PASS) check) -.PHONY: configure-stageprofile-target-libstdc++-v3 maybe-configure-stageprofile-target-libstdc++-v3 -maybe-configure-stageprofile-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stageprofile-target-libstdc++-v3: configure-stageprofile-target-libstdc++-v3 -configure-stageprofile-target-libstdc++-v3: - @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 +@endif libcc1 + +.PHONY: install-libcc1 maybe-install-libcc1 +maybe-install-libcc1: +@if libcc1 +maybe-install-libcc1: install-libcc1 + +install-libcc1: installdirs + @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEprofile_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_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)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(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-libstdc++-v3-bootstrap + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(MAKE) $(FLAGS_TO_PASS) install) -.PHONY: configure-stagefeedback-target-libstdc++-v3 maybe-configure-stagefeedback-target-libstdc++-v3 -maybe-configure-stagefeedback-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-configure-stagefeedback-target-libstdc++-v3: configure-stagefeedback-target-libstdc++-v3 -configure-stagefeedback-target-libstdc++-v3: - @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 +@endif libcc1 + +.PHONY: install-strip-libcc1 maybe-install-strip-libcc1 +maybe-install-strip-libcc1: +@if libcc1 +maybe-install-strip-libcc1: install-strip-libcc1 + +install-strip-libcc1: installdirs + @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - echo "Checking multilib configuration for libstdc++-v3..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ - $(RAW_CXX_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)/libstdc++-v3 ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \ - libsrcdir="$$s/libstdc++-v3"; \ - $(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-libstdc++-v3-bootstrap + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif libcc1 + +# Other targets (info, dvi, pdf, etc.) +.PHONY: maybe-info-libcc1 info-libcc1 +maybe-info-libcc1: +@if libcc1 +maybe-info-libcc1: info-libcc1 +info-libcc1: \ + configure-libcc1 + @: $(MAKE); $(unstage) + @[ -f ./libcc1/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 libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 +.PHONY: maybe-dvi-libcc1 dvi-libcc1 +maybe-dvi-libcc1: +@if libcc1 +maybe-dvi-libcc1: dvi-libcc1 -.PHONY: all-target-libstdc++-v3 maybe-all-target-libstdc++-v3 -maybe-all-target-libstdc++-v3: -@if gcc-bootstrap -all-target-libstdc++-v3: stage_current -@endif gcc-bootstrap -@if target-libstdc++-v3 -TARGET-target-libstdc++-v3=all -maybe-all-target-libstdc++-v3: all-target-libstdc++-v3 -all-target-libstdc++-v3: configure-target-libstdc++-v3 - @r=`${PWD_COMMAND}`; export r; \ +dvi-libcc1: \ + configure-libcc1 + @: $(MAKE); $(unstage) + @[ -f ./libcc1/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(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)) -@endif target-libstdc++-v3 + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing dvi in libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 +.PHONY: maybe-pdf-libcc1 pdf-libcc1 +maybe-pdf-libcc1: +@if libcc1 +maybe-pdf-libcc1: pdf-libcc1 -.PHONY: all-stage1-target-libstdc++-v3 maybe-all-stage1-target-libstdc++-v3 -.PHONY: clean-stage1-target-libstdc++-v3 maybe-clean-stage1-target-libstdc++-v3 -maybe-all-stage1-target-libstdc++-v3: -maybe-clean-stage1-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stage1-target-libstdc++-v3: all-stage1-target-libstdc++-v3 -all-stage1: all-stage1-target-libstdc++-v3 -TARGET-stage1-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stage1-target-libstdc++-v3: configure-stage1-target-libstdc++-v3 - @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @r=`${PWD_COMMAND}`; export r; \ +pdf-libcc1: \ + configure-libcc1 + @: $(MAKE); $(unstage) + @[ -f ./libcc1/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - TFLAGS="$(STAGE1_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - \ - TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-target-libstdc++-v3) + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing pdf in libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 -maybe-clean-stage1-target-libstdc++-v3: clean-stage1-target-libstdc++-v3 -clean-stage1: clean-stage1-target-libstdc++-v3 -clean-stage1-target-libstdc++-v3: - @if [ $(current_stage) = stage1 ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stage1-libstdc++-v3/Makefile ] || exit 0; \ - $(MAKE) stage1-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - clean -@endif target-libstdc++-v3-bootstrap +@endif libcc1 +.PHONY: maybe-html-libcc1 html-libcc1 +maybe-html-libcc1: +@if libcc1 +maybe-html-libcc1: html-libcc1 -.PHONY: all-stage2-target-libstdc++-v3 maybe-all-stage2-target-libstdc++-v3 -.PHONY: clean-stage2-target-libstdc++-v3 maybe-clean-stage2-target-libstdc++-v3 -maybe-all-stage2-target-libstdc++-v3: -maybe-clean-stage2-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stage2-target-libstdc++-v3: all-stage2-target-libstdc++-v3 -all-stage2: all-stage2-target-libstdc++-v3 -TARGET-stage2-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stage2-target-libstdc++-v3: configure-stage2-target-libstdc++-v3 - @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @r=`${PWD_COMMAND}`; export r; \ +html-libcc1: \ + configure-libcc1 + @: $(MAKE); $(unstage) + @[ -f ./libcc1/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ 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)" \ - 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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-target-libstdc++-v3) + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing html in libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 -maybe-clean-stage2-target-libstdc++-v3: clean-stage2-target-libstdc++-v3 -clean-stage2: clean-stage2-target-libstdc++-v3 -clean-stage2-target-libstdc++-v3: - @if [ $(current_stage) = stage2 ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ - else \ - [ -f $(TARGET_SUBDIR)/stage2-libstdc++-v3/Makefile ] || exit 0; \ - $(MAKE) stage2-start; \ - fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean -@endif target-libstdc++-v3-bootstrap +@endif libcc1 +.PHONY: maybe-TAGS-libcc1 TAGS-libcc1 +maybe-TAGS-libcc1: +@if libcc1 +maybe-TAGS-libcc1: TAGS-libcc1 -.PHONY: all-stage3-target-libstdc++-v3 maybe-all-stage3-target-libstdc++-v3 -.PHONY: clean-stage3-target-libstdc++-v3 maybe-clean-stage3-target-libstdc++-v3 -maybe-all-stage3-target-libstdc++-v3: -maybe-clean-stage3-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stage3-target-libstdc++-v3: all-stage3-target-libstdc++-v3 -all-stage3: all-stage3-target-libstdc++-v3 -TARGET-stage3-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stage3-target-libstdc++-v3: configure-stage3-target-libstdc++-v3 - @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @r=`${PWD_COMMAND}`; export r; \ +TAGS-libcc1: \ + configure-libcc1 + @: $(MAKE); $(unstage) + @[ -f ./libcc1/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ 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)" \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ - LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \ + $(HOST_EXPORTS) \ + for flag in $(EXTRA_HOST_FLAGS) ; do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + echo "Doing TAGS in libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 + +.PHONY: maybe-install-info-libcc1 install-info-libcc1 +maybe-install-info-libcc1: +@if libcc1 +maybe-install-info-libcc1: install-info-libcc1 + +install-info-libcc1: \ + configure-libcc1 \ + info-libcc1 + @: $(MAKE); $(unstage) + @[ -f ./libcc1/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 libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 + +.PHONY: maybe-install-pdf-libcc1 install-pdf-libcc1 +maybe-install-pdf-libcc1: +@if libcc1 +maybe-install-pdf-libcc1: install-pdf-libcc1 + +install-pdf-libcc1: \ + configure-libcc1 \ + pdf-libcc1 + @: $(MAKE); $(unstage) + @[ -f ./libcc1/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 libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 + +.PHONY: maybe-install-html-libcc1 install-html-libcc1 +maybe-install-html-libcc1: +@if libcc1 +maybe-install-html-libcc1: install-html-libcc1 + +install-html-libcc1: \ + configure-libcc1 \ + html-libcc1 + @: $(MAKE); $(unstage) + @[ -f ./libcc1/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 libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 + +.PHONY: maybe-installcheck-libcc1 installcheck-libcc1 +maybe-installcheck-libcc1: +@if libcc1 +maybe-installcheck-libcc1: installcheck-libcc1 + +installcheck-libcc1: \ + configure-libcc1 + @: $(MAKE); $(unstage) + @[ -f ./libcc1/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 libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 + +.PHONY: maybe-mostlyclean-libcc1 mostlyclean-libcc1 +maybe-mostlyclean-libcc1: +@if libcc1 +maybe-mostlyclean-libcc1: mostlyclean-libcc1 + +mostlyclean-libcc1: + @: $(MAKE); $(unstage) + @[ -f ./libcc1/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 libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 + +.PHONY: maybe-clean-libcc1 clean-libcc1 +maybe-clean-libcc1: +@if libcc1 +maybe-clean-libcc1: clean-libcc1 + +clean-libcc1: + @: $(MAKE); $(unstage) + @[ -f ./libcc1/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 libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 + +.PHONY: maybe-distclean-libcc1 distclean-libcc1 +maybe-distclean-libcc1: +@if libcc1 +maybe-distclean-libcc1: distclean-libcc1 + +distclean-libcc1: + @: $(MAKE); $(unstage) + @[ -f ./libcc1/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 libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 + +.PHONY: maybe-maintainer-clean-libcc1 maintainer-clean-libcc1 +maybe-maintainer-clean-libcc1: +@if libcc1 +maybe-maintainer-clean-libcc1: maintainer-clean-libcc1 + +maintainer-clean-libcc1: + @: $(MAKE); $(unstage) + @[ -f ./libcc1/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 libcc1" ; \ + (cd $(HOST_SUBDIR)/libcc1 && \ + $(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 libcc1 + + + +.PHONY: configure-gotools maybe-configure-gotools +maybe-configure-gotools: +@if gcc-bootstrap +configure-gotools: stage_current +@endif gcc-bootstrap +@if gotools +maybe-configure-gotools: configure-gotools +configure-gotools: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + test ! -f $(HOST_SUBDIR)/gotools/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/gotools ; \ + $(HOST_EXPORTS) \ + echo Configuring in $(HOST_SUBDIR)/gotools; \ + cd "$(HOST_SUBDIR)/gotools" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/gotools/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=gotools; \ + $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + || exit 1 +@endif gotools + + + + + +.PHONY: all-gotools maybe-all-gotools +maybe-all-gotools: +@if gcc-bootstrap +all-gotools: stage_current +@endif gcc-bootstrap +@if gotools +TARGET-gotools=all +maybe-all-gotools: all-gotools +all-gotools: configure-gotools + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gotools && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) \ + $(TARGET-gotools)) +@endif gotools + + + + +.PHONY: check-gotools maybe-check-gotools +maybe-check-gotools: +@if gotools +maybe-check-gotools: check-gotools + +check-gotools: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gotools && \ + $(MAKE) $(FLAGS_TO_PASS) check) + +@endif gotools + +.PHONY: install-gotools maybe-install-gotools +maybe-install-gotools: +@if gotools +maybe-install-gotools: install-gotools + +install-gotools: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gotools && \ + $(MAKE) $(FLAGS_TO_PASS) install) + +@endif gotools + +.PHONY: install-strip-gotools maybe-install-strip-gotools +maybe-install-strip-gotools: +@if gotools +maybe-install-strip-gotools: install-strip-gotools + +install-strip-gotools: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/gotools && \ + $(MAKE) $(FLAGS_TO_PASS) install-strip) + +@endif gotools + +# Other targets (info, dvi, pdf, etc.) + +.PHONY: maybe-info-gotools info-gotools +maybe-info-gotools: +@if gotools +maybe-info-gotools: info-gotools + +info-gotools: \ + configure-gotools + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-dvi-gotools dvi-gotools +maybe-dvi-gotools: +@if gotools +maybe-dvi-gotools: dvi-gotools + +dvi-gotools: \ + configure-gotools + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-pdf-gotools pdf-gotools +maybe-pdf-gotools: +@if gotools +maybe-pdf-gotools: pdf-gotools + +pdf-gotools: \ + configure-gotools + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-html-gotools html-gotools +maybe-html-gotools: +@if gotools +maybe-html-gotools: html-gotools + +html-gotools: \ + configure-gotools + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-TAGS-gotools TAGS-gotools +maybe-TAGS-gotools: +@if gotools +maybe-TAGS-gotools: TAGS-gotools + +TAGS-gotools: \ + configure-gotools + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-install-info-gotools install-info-gotools +maybe-install-info-gotools: +@if gotools +maybe-install-info-gotools: install-info-gotools + +install-info-gotools: \ + configure-gotools \ + info-gotools + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-install-pdf-gotools install-pdf-gotools +maybe-install-pdf-gotools: +@if gotools +maybe-install-pdf-gotools: install-pdf-gotools + +install-pdf-gotools: \ + configure-gotools \ + pdf-gotools + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-install-html-gotools install-html-gotools +maybe-install-html-gotools: +@if gotools +maybe-install-html-gotools: install-html-gotools + +install-html-gotools: \ + configure-gotools \ + html-gotools + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-installcheck-gotools installcheck-gotools +maybe-installcheck-gotools: +@if gotools +maybe-installcheck-gotools: installcheck-gotools + +installcheck-gotools: \ + configure-gotools + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-mostlyclean-gotools mostlyclean-gotools +maybe-mostlyclean-gotools: +@if gotools +maybe-mostlyclean-gotools: mostlyclean-gotools + +mostlyclean-gotools: + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-clean-gotools clean-gotools +maybe-clean-gotools: +@if gotools +maybe-clean-gotools: clean-gotools + +clean-gotools: + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-distclean-gotools distclean-gotools +maybe-distclean-gotools: +@if gotools +maybe-distclean-gotools: distclean-gotools + +distclean-gotools: + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + +.PHONY: maybe-maintainer-clean-gotools maintainer-clean-gotools +maybe-maintainer-clean-gotools: +@if gotools +maybe-maintainer-clean-gotools: maintainer-clean-gotools + +maintainer-clean-gotools: + @: $(MAKE); $(unstage) + @[ -f ./gotools/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 gotools" ; \ + (cd $(HOST_SUBDIR)/gotools && \ + $(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 gotools + + + +# --------------------------------------- +# Modules which run on the target machine +# --------------------------------------- + + + + +.PHONY: configure-target-libstdc++-v3 maybe-configure-target-libstdc++-v3 +maybe-configure-target-libstdc++-v3: +@if gcc-bootstrap +configure-target-libstdc++-v3: stage_current +@endif gcc-bootstrap +@if target-libstdc++-v3 +maybe-configure-target-libstdc++-v3: configure-target-libstdc++-v3 +configure-target-libstdc++-v3: + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo Configuring in $(TARGET_SUBDIR)/libstdc++-v3; \ + cd "$(TARGET_SUBDIR)/libstdc++-v3" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libstdc++-v3; \ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + || exit 1 +@endif target-libstdc++-v3 + + + +.PHONY: configure-stage1-target-libstdc++-v3 maybe-configure-stage1-target-libstdc++-v3 +maybe-configure-stage1-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stage1-target-libstdc++-v3: configure-stage1-target-libstdc++-v3 +configure-stage1-target-libstdc++-v3: + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_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)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libstdc++-v3; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + \ + $(STAGE1_CONFIGURE_FLAGS) +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stage2-target-libstdc++-v3 maybe-configure-stage2-target-libstdc++-v3 +maybe-configure-stage2-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stage2-target-libstdc++-v3: configure-stage2-target-libstdc++-v3 +configure-stage2-target-libstdc++-v3: + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_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)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libstdc++-v3; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stage3-target-libstdc++-v3 maybe-configure-stage3-target-libstdc++-v3 +maybe-configure-stage3-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stage3-target-libstdc++-v3: configure-stage3-target-libstdc++-v3 +configure-stage3-target-libstdc++-v3: + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_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)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libstdc++-v3; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stage4-target-libstdc++-v3 maybe-configure-stage4-target-libstdc++-v3 +maybe-configure-stage4-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stage4-target-libstdc++-v3: configure-stage4-target-libstdc++-v3 +configure-stage4-target-libstdc++-v3: + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_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)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libstdc++-v3; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stageprofile-target-libstdc++-v3 maybe-configure-stageprofile-target-libstdc++-v3 +maybe-configure-stageprofile-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stageprofile-target-libstdc++-v3: configure-stageprofile-target-libstdc++-v3 +configure-stageprofile-target-libstdc++-v3: + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_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)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libstdc++-v3; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) +@endif target-libstdc++-v3-bootstrap + +.PHONY: configure-stagefeedback-target-libstdc++-v3 maybe-configure-stagefeedback-target-libstdc++-v3 +maybe-configure-stagefeedback-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-configure-stagefeedback-target-libstdc++-v3: configure-stagefeedback-target-libstdc++-v3 +configure-stagefeedback-target-libstdc++-v3: + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + echo "Checking multilib configuration for libstdc++-v3..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile; \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libstdc++-v3/multilib.tmp $(TARGET_SUBDIR)/libstdc++-v3/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \ + $(RAW_CXX_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)/libstdc++-v3 ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libstdc++-v3/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libstdc++-v3; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) +@endif target-libstdc++-v3-bootstrap + + + + + +.PHONY: all-target-libstdc++-v3 maybe-all-target-libstdc++-v3 +maybe-all-target-libstdc++-v3: +@if gcc-bootstrap +all-target-libstdc++-v3: stage_current +@endif gcc-bootstrap +@if target-libstdc++-v3 +TARGET-target-libstdc++-v3=all +maybe-all-target-libstdc++-v3: all-target-libstdc++-v3 +all-target-libstdc++-v3: configure-target-libstdc++-v3 + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(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)) +@endif target-libstdc++-v3 + + + +.PHONY: all-stage1-target-libstdc++-v3 maybe-all-stage1-target-libstdc++-v3 +.PHONY: clean-stage1-target-libstdc++-v3 maybe-clean-stage1-target-libstdc++-v3 +maybe-all-stage1-target-libstdc++-v3: +maybe-clean-stage1-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stage1-target-libstdc++-v3: all-stage1-target-libstdc++-v3 +all-stage1: all-stage1-target-libstdc++-v3 +TARGET-stage1-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stage1-target-libstdc++-v3: configure-stage1-target-libstdc++-v3 + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + $(RAW_CXX_TARGET_EXPORTS) \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + \ + TFLAGS="$(STAGE1_TFLAGS)" \ + $(TARGET-stage1-target-libstdc++-v3) + +maybe-clean-stage1-target-libstdc++-v3: clean-stage1-target-libstdc++-v3 +clean-stage1: clean-stage1-target-libstdc++-v3 +clean-stage1-target-libstdc++-v3: + @if [ $(current_stage) = stage1 ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage1-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stage1-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stage2-target-libstdc++-v3 maybe-all-stage2-target-libstdc++-v3 +.PHONY: clean-stage2-target-libstdc++-v3 maybe-clean-stage2-target-libstdc++-v3 +maybe-all-stage2-target-libstdc++-v3: +maybe-clean-stage2-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stage2-target-libstdc++-v3: all-stage2-target-libstdc++-v3 +all-stage2: all-stage2-target-libstdc++-v3 +TARGET-stage2-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stage2-target-libstdc++-v3: configure-stage2-target-libstdc++-v3 + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @r=`${PWD_COMMAND}`; export r; \ + 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)" \ + 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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + TFLAGS="$(STAGE2_TFLAGS)" \ + $(TARGET-stage2-target-libstdc++-v3) + +maybe-clean-stage2-target-libstdc++-v3: clean-stage2-target-libstdc++-v3 +clean-stage2: clean-stage2-target-libstdc++-v3 +clean-stage2-target-libstdc++-v3: + @if [ $(current_stage) = stage2 ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage2-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stage2-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stage3-target-libstdc++-v3 maybe-all-stage3-target-libstdc++-v3 +.PHONY: clean-stage3-target-libstdc++-v3 maybe-clean-stage3-target-libstdc++-v3 +maybe-all-stage3-target-libstdc++-v3: +maybe-clean-stage3-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stage3-target-libstdc++-v3: all-stage3-target-libstdc++-v3 +all-stage3: all-stage3-target-libstdc++-v3 +TARGET-stage3-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stage3-target-libstdc++-v3: configure-stage3-target-libstdc++-v3 + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @r=`${PWD_COMMAND}`; export r; \ + 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)" \ + 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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + TFLAGS="$(STAGE3_TFLAGS)" \ + $(TARGET-stage3-target-libstdc++-v3) + +maybe-clean-stage3-target-libstdc++-v3: clean-stage3-target-libstdc++-v3 +clean-stage3: clean-stage3-target-libstdc++-v3 +clean-stage3-target-libstdc++-v3: + @if [ $(current_stage) = stage3 ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage3-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stage3-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stage4-target-libstdc++-v3 maybe-all-stage4-target-libstdc++-v3 +.PHONY: clean-stage4-target-libstdc++-v3 maybe-clean-stage4-target-libstdc++-v3 +maybe-all-stage4-target-libstdc++-v3: +maybe-clean-stage4-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stage4-target-libstdc++-v3: all-stage4-target-libstdc++-v3 +all-stage4: all-stage4-target-libstdc++-v3 +TARGET-stage4-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stage4-target-libstdc++-v3: configure-stage4-target-libstdc++-v3 + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @r=`${PWD_COMMAND}`; export r; \ + 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)" \ + 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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + TFLAGS="$(STAGE4_TFLAGS)" \ + $(TARGET-stage4-target-libstdc++-v3) + +maybe-clean-stage4-target-libstdc++-v3: clean-stage4-target-libstdc++-v3 +clean-stage4: clean-stage4-target-libstdc++-v3 +clean-stage4-target-libstdc++-v3: + @if [ $(current_stage) = stage4 ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage4-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stage4-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stageprofile-target-libstdc++-v3 maybe-all-stageprofile-target-libstdc++-v3 +.PHONY: clean-stageprofile-target-libstdc++-v3 maybe-clean-stageprofile-target-libstdc++-v3 +maybe-all-stageprofile-target-libstdc++-v3: +maybe-clean-stageprofile-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stageprofile-target-libstdc++-v3: all-stageprofile-target-libstdc++-v3 +all-stageprofile: all-stageprofile-target-libstdc++-v3 +TARGET-stageprofile-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stageprofile-target-libstdc++-v3: configure-stageprofile-target-libstdc++-v3 + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @r=`${PWD_COMMAND}`; export r; \ + 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)" \ + 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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + TFLAGS="$(STAGEprofile_TFLAGS)" \ + $(TARGET-stageprofile-target-libstdc++-v3) + +maybe-clean-stageprofile-target-libstdc++-v3: clean-stageprofile-target-libstdc++-v3 +clean-stageprofile: clean-stageprofile-target-libstdc++-v3 +clean-stageprofile-target-libstdc++-v3: + @if [ $(current_stage) = stageprofile ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stageprofile-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stageprofile-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean +@endif target-libstdc++-v3-bootstrap + + +.PHONY: all-stagefeedback-target-libstdc++-v3 maybe-all-stagefeedback-target-libstdc++-v3 +.PHONY: clean-stagefeedback-target-libstdc++-v3 maybe-clean-stagefeedback-target-libstdc++-v3 +maybe-all-stagefeedback-target-libstdc++-v3: +maybe-clean-stagefeedback-target-libstdc++-v3: +@if target-libstdc++-v3-bootstrap +maybe-all-stagefeedback-target-libstdc++-v3: all-stagefeedback-target-libstdc++-v3 +all-stagefeedback: all-stagefeedback-target-libstdc++-v3 +TARGET-stagefeedback-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) +all-stagefeedback-target-libstdc++-v3: configure-stagefeedback-target-libstdc++-v3 + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @r=`${PWD_COMMAND}`; export r; \ + 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)" \ + 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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + TFLAGS="$(STAGEfeedback_TFLAGS)" \ + $(TARGET-stagefeedback-target-libstdc++-v3) + +maybe-clean-stagefeedback-target-libstdc++-v3: clean-stagefeedback-target-libstdc++-v3 +clean-stagefeedback: clean-stagefeedback-target-libstdc++-v3 +clean-stagefeedback-target-libstdc++-v3: + @if [ $(current_stage) = stagefeedback ]; then \ + [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stagefeedback-libstdc++-v3/Makefile ] || exit 0; \ + $(MAKE) stagefeedback-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean +@endif target-libstdc++-v3-bootstrap + + + + + + +.PHONY: check-target-libstdc++-v3 maybe-check-target-libstdc++-v3 +maybe-check-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-check-target-libstdc++-v3: check-target-libstdc++-v3 + +check-target-libstdc++-v3: + @: $(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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' check) + +@endif target-libstdc++-v3 + +.PHONY: install-target-libstdc++-v3 maybe-install-target-libstdc++-v3 +maybe-install-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-install-target-libstdc++-v3: install-target-libstdc++-v3 + +install-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) + +@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 +maybe-info-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-info-target-libstdc++-v3: info-target-libstdc++-v3 + +info-target-libstdc++-v3: \ + configure-target-libstdc++-v3 + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing info in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-dvi-target-libstdc++-v3 dvi-target-libstdc++-v3 +maybe-dvi-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-dvi-target-libstdc++-v3: dvi-target-libstdc++-v3 + +dvi-target-libstdc++-v3: \ + configure-target-libstdc++-v3 + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing dvi in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-pdf-target-libstdc++-v3 pdf-target-libstdc++-v3 +maybe-pdf-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-pdf-target-libstdc++-v3: pdf-target-libstdc++-v3 + +pdf-target-libstdc++-v3: \ + configure-target-libstdc++-v3 + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing pdf in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-html-target-libstdc++-v3 html-target-libstdc++-v3 +maybe-html-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-html-target-libstdc++-v3: html-target-libstdc++-v3 + +html-target-libstdc++-v3: \ + configure-target-libstdc++-v3 + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing html in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-TAGS-target-libstdc++-v3 TAGS-target-libstdc++-v3 +maybe-TAGS-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-TAGS-target-libstdc++-v3: TAGS-target-libstdc++-v3 + +TAGS-target-libstdc++-v3: \ + configure-target-libstdc++-v3 + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing TAGS in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-install-info-target-libstdc++-v3 install-info-target-libstdc++-v3 +maybe-install-info-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-install-info-target-libstdc++-v3: install-info-target-libstdc++-v3 + +install-info-target-libstdc++-v3: \ + configure-target-libstdc++-v3 \ + info-target-libstdc++-v3 + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing install-info in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-install-pdf-target-libstdc++-v3 install-pdf-target-libstdc++-v3 +maybe-install-pdf-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-install-pdf-target-libstdc++-v3: install-pdf-target-libstdc++-v3 + +install-pdf-target-libstdc++-v3: \ + configure-target-libstdc++-v3 \ + pdf-target-libstdc++-v3 + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing install-pdf in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-install-html-target-libstdc++-v3 install-html-target-libstdc++-v3 +maybe-install-html-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-install-html-target-libstdc++-v3: install-html-target-libstdc++-v3 + +install-html-target-libstdc++-v3: \ + configure-target-libstdc++-v3 \ + html-target-libstdc++-v3 + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing install-html in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-installcheck-target-libstdc++-v3 installcheck-target-libstdc++-v3 +maybe-installcheck-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-installcheck-target-libstdc++-v3: installcheck-target-libstdc++-v3 + +installcheck-target-libstdc++-v3: \ + configure-target-libstdc++-v3 + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing installcheck in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-mostlyclean-target-libstdc++-v3 mostlyclean-target-libstdc++-v3 +maybe-mostlyclean-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-mostlyclean-target-libstdc++-v3: mostlyclean-target-libstdc++-v3 + +mostlyclean-target-libstdc++-v3: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing mostlyclean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-clean-target-libstdc++-v3 clean-target-libstdc++-v3 +maybe-clean-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-clean-target-libstdc++-v3: clean-target-libstdc++-v3 + +clean-target-libstdc++-v3: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing clean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-distclean-target-libstdc++-v3 distclean-target-libstdc++-v3 +maybe-distclean-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-distclean-target-libstdc++-v3: distclean-target-libstdc++-v3 + +distclean-target-libstdc++-v3: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing distclean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + +.PHONY: maybe-maintainer-clean-target-libstdc++-v3 maintainer-clean-target-libstdc++-v3 +maybe-maintainer-clean-target-libstdc++-v3: +@if target-libstdc++-v3 +maybe-maintainer-clean-target-libstdc++-v3: maintainer-clean-target-libstdc++-v3 + +maintainer-clean-target-libstdc++-v3: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + $(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-libstdc++-v3 + + + + + +.PHONY: configure-target-libsanitizer maybe-configure-target-libsanitizer +maybe-configure-target-libsanitizer: +@if gcc-bootstrap +configure-target-libsanitizer: stage_current +@endif gcc-bootstrap +@if target-libsanitizer +maybe-configure-target-libsanitizer: configure-target-libsanitizer +configure-target-libsanitizer: + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for libsanitizer..."; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ + $(RAW_CXX_TARGET_EXPORTS) \ + echo Configuring in $(TARGET_SUBDIR)/libsanitizer; \ + cd "$(TARGET_SUBDIR)/libsanitizer" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libsanitizer; \ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + || exit 1 +@endif target-libsanitizer + + + +.PHONY: configure-stage1-target-libsanitizer maybe-configure-stage1-target-libsanitizer +maybe-configure-stage1-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-configure-stage1-target-libsanitizer: configure-stage1-target-libsanitizer +configure-stage1-target-libsanitizer: + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + echo "Checking multilib configuration for libsanitizer..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ + $(RAW_CXX_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)/libsanitizer ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ + cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libsanitizer; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + \ + $(STAGE1_CONFIGURE_FLAGS) +@endif target-libsanitizer-bootstrap + +.PHONY: configure-stage2-target-libsanitizer maybe-configure-stage2-target-libsanitizer +maybe-configure-stage2-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-configure-stage2-target-libsanitizer: configure-stage2-target-libsanitizer +configure-stage2-target-libsanitizer: + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + echo "Checking multilib configuration for libsanitizer..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ + $(RAW_CXX_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)/libsanitizer ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ + cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libsanitizer; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) +@endif target-libsanitizer-bootstrap + +.PHONY: configure-stage3-target-libsanitizer maybe-configure-stage3-target-libsanitizer +maybe-configure-stage3-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-configure-stage3-target-libsanitizer: configure-stage3-target-libsanitizer +configure-stage3-target-libsanitizer: + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + echo "Checking multilib configuration for libsanitizer..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ + $(RAW_CXX_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)/libsanitizer ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ + cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libsanitizer; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) +@endif target-libsanitizer-bootstrap + +.PHONY: configure-stage4-target-libsanitizer maybe-configure-stage4-target-libsanitizer +maybe-configure-stage4-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-configure-stage4-target-libsanitizer: configure-stage4-target-libsanitizer +configure-stage4-target-libsanitizer: + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + echo "Checking multilib configuration for libsanitizer..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ + $(RAW_CXX_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)/libsanitizer ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ + cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libsanitizer; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) +@endif target-libsanitizer-bootstrap + +.PHONY: configure-stageprofile-target-libsanitizer maybe-configure-stageprofile-target-libsanitizer +maybe-configure-stageprofile-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-configure-stageprofile-target-libsanitizer: configure-stageprofile-target-libsanitizer +configure-stageprofile-target-libsanitizer: + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + echo "Checking multilib configuration for libsanitizer..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ + $(RAW_CXX_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)/libsanitizer ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ + cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libsanitizer; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) +@endif target-libsanitizer-bootstrap + +.PHONY: configure-stagefeedback-target-libsanitizer maybe-configure-stagefeedback-target-libsanitizer +maybe-configure-stagefeedback-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-configure-stagefeedback-target-libsanitizer: configure-stagefeedback-target-libsanitizer +configure-stagefeedback-target-libsanitizer: + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + echo "Checking multilib configuration for libsanitizer..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ + $(RAW_CXX_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)/libsanitizer ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ + cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libsanitizer; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) +@endif target-libsanitizer-bootstrap + + + + + +.PHONY: all-target-libsanitizer maybe-all-target-libsanitizer +maybe-all-target-libsanitizer: +@if gcc-bootstrap +all-target-libsanitizer: stage_current +@endif gcc-bootstrap +@if target-libsanitizer +TARGET-target-libsanitizer=all +maybe-all-target-libsanitizer: all-target-libsanitizer +all-target-libsanitizer: configure-target-libsanitizer + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(RAW_CXX_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(TARGET-target-libsanitizer)) +@endif target-libsanitizer + + + +.PHONY: all-stage1-target-libsanitizer maybe-all-stage1-target-libsanitizer +.PHONY: clean-stage1-target-libsanitizer maybe-clean-stage1-target-libsanitizer +maybe-all-stage1-target-libsanitizer: +maybe-clean-stage1-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-all-stage1-target-libsanitizer: all-stage1-target-libsanitizer +all-stage1: all-stage1-target-libsanitizer +TARGET-stage1-target-libsanitizer = $(TARGET-target-libsanitizer) +all-stage1-target-libsanitizer: configure-stage1-target-libsanitizer + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + $(RAW_CXX_TARGET_EXPORTS) \ + cd $(TARGET_SUBDIR)/libsanitizer && \ + $(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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + \ + TFLAGS="$(STAGE1_TFLAGS)" \ + $(TARGET-stage1-target-libsanitizer) + +maybe-clean-stage1-target-libsanitizer: clean-stage1-target-libsanitizer +clean-stage1: clean-stage1-target-libsanitizer +clean-stage1-target-libsanitizer: + @if [ $(current_stage) = stage1 ]; then \ + [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage1-libsanitizer/Makefile ] || exit 0; \ + $(MAKE) stage1-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libsanitizer && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + clean +@endif target-libsanitizer-bootstrap + + +.PHONY: all-stage2-target-libsanitizer maybe-all-stage2-target-libsanitizer +.PHONY: clean-stage2-target-libsanitizer maybe-clean-stage2-target-libsanitizer +maybe-all-stage2-target-libsanitizer: +maybe-clean-stage2-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-all-stage2-target-libsanitizer: all-stage2-target-libsanitizer +all-stage2: all-stage2-target-libsanitizer +TARGET-stage2-target-libsanitizer = $(TARGET-target-libsanitizer) +all-stage2-target-libsanitizer: configure-stage2-target-libsanitizer + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libsanitizer && \ + $(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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + TFLAGS="$(STAGE2_TFLAGS)" \ + $(TARGET-stage2-target-libsanitizer) + +maybe-clean-stage2-target-libsanitizer: clean-stage2-target-libsanitizer +clean-stage2: clean-stage2-target-libsanitizer +clean-stage2-target-libsanitizer: + @if [ $(current_stage) = stage2 ]; then \ + [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ + else \ + [ -f $(TARGET_SUBDIR)/stage2-libsanitizer/Makefile ] || exit 0; \ + $(MAKE) stage2-start; \ + fi; \ + cd $(TARGET_SUBDIR)/libsanitizer && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean +@endif target-libsanitizer-bootstrap + + +.PHONY: all-stage3-target-libsanitizer maybe-all-stage3-target-libsanitizer +.PHONY: clean-stage3-target-libsanitizer maybe-clean-stage3-target-libsanitizer +maybe-all-stage3-target-libsanitizer: +maybe-clean-stage3-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-all-stage3-target-libsanitizer: all-stage3-target-libsanitizer +all-stage3: all-stage3-target-libsanitizer +TARGET-stage3-target-libsanitizer = $(TARGET-target-libsanitizer) +all-stage3-target-libsanitizer: configure-stage3-target-libsanitizer + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + $(RAW_CXX_TARGET_EXPORTS) \ + \ + cd $(TARGET_SUBDIR)/libsanitizer && \ + $(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) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-target-libstdc++-v3) + $(TARGET-stage3-target-libsanitizer) -maybe-clean-stage3-target-libstdc++-v3: clean-stage3-target-libstdc++-v3 -clean-stage3: clean-stage3-target-libstdc++-v3 -clean-stage3-target-libstdc++-v3: +maybe-clean-stage3-target-libsanitizer: clean-stage3-target-libsanitizer +clean-stage3: clean-stage3-target-libsanitizer +clean-stage3-target-libsanitizer: @if [ $(current_stage) = stage3 ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ else \ - [ -f $(TARGET_SUBDIR)/stage3-libstdc++-v3/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/stage3-libsanitizer/Makefile ] || exit 0; \ $(MAKE) stage3-start; \ fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean -@endif target-libstdc++-v3-bootstrap +@endif target-libsanitizer-bootstrap -.PHONY: all-stage4-target-libstdc++-v3 maybe-all-stage4-target-libstdc++-v3 -.PHONY: clean-stage4-target-libstdc++-v3 maybe-clean-stage4-target-libstdc++-v3 -maybe-all-stage4-target-libstdc++-v3: -maybe-clean-stage4-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stage4-target-libstdc++-v3: all-stage4-target-libstdc++-v3 -all-stage4: all-stage4-target-libstdc++-v3 -TARGET-stage4-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stage4-target-libstdc++-v3: configure-stage4-target-libstdc++-v3 +.PHONY: all-stage4-target-libsanitizer maybe-all-stage4-target-libsanitizer +.PHONY: clean-stage4-target-libsanitizer maybe-clean-stage4-target-libsanitizer +maybe-all-stage4-target-libsanitizer: +maybe-clean-stage4-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-all-stage4-target-libsanitizer: all-stage4-target-libsanitizer +all-stage4: all-stage4-target-libsanitizer +TARGET-stage4-target-libsanitizer = $(TARGET-target-libsanitizer) +all-stage4-target-libsanitizer: configure-stage4-target-libsanitizer @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ $(RAW_CXX_TARGET_EXPORTS) \ \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ @@ -31697,38 +33805,38 @@ all-stage4-target-libstdc++-v3: configure-stage4-target-libstdc++-v3 LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-target-libstdc++-v3) + $(TARGET-stage4-target-libsanitizer) -maybe-clean-stage4-target-libstdc++-v3: clean-stage4-target-libstdc++-v3 -clean-stage4: clean-stage4-target-libstdc++-v3 -clean-stage4-target-libstdc++-v3: +maybe-clean-stage4-target-libsanitizer: clean-stage4-target-libsanitizer +clean-stage4: clean-stage4-target-libsanitizer +clean-stage4-target-libsanitizer: @if [ $(current_stage) = stage4 ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ else \ - [ -f $(TARGET_SUBDIR)/stage4-libstdc++-v3/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/stage4-libsanitizer/Makefile ] || exit 0; \ $(MAKE) stage4-start; \ fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean -@endif target-libstdc++-v3-bootstrap +@endif target-libsanitizer-bootstrap -.PHONY: all-stageprofile-target-libstdc++-v3 maybe-all-stageprofile-target-libstdc++-v3 -.PHONY: clean-stageprofile-target-libstdc++-v3 maybe-clean-stageprofile-target-libstdc++-v3 -maybe-all-stageprofile-target-libstdc++-v3: -maybe-clean-stageprofile-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stageprofile-target-libstdc++-v3: all-stageprofile-target-libstdc++-v3 -all-stageprofile: all-stageprofile-target-libstdc++-v3 -TARGET-stageprofile-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stageprofile-target-libstdc++-v3: configure-stageprofile-target-libstdc++-v3 +.PHONY: all-stageprofile-target-libsanitizer maybe-all-stageprofile-target-libsanitizer +.PHONY: clean-stageprofile-target-libsanitizer maybe-clean-stageprofile-target-libsanitizer +maybe-all-stageprofile-target-libsanitizer: +maybe-clean-stageprofile-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-all-stageprofile-target-libsanitizer: all-stageprofile-target-libsanitizer +all-stageprofile: all-stageprofile-target-libsanitizer +TARGET-stageprofile-target-libsanitizer = $(TARGET-target-libsanitizer) +all-stageprofile-target-libsanitizer: configure-stageprofile-target-libsanitizer @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ $(RAW_CXX_TARGET_EXPORTS) \ \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ @@ -31738,38 +33846,38 @@ all-stageprofile-target-libstdc++-v3: configure-stageprofile-target-libstdc++-v3 LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-target-libstdc++-v3) + $(TARGET-stageprofile-target-libsanitizer) -maybe-clean-stageprofile-target-libstdc++-v3: clean-stageprofile-target-libstdc++-v3 -clean-stageprofile: clean-stageprofile-target-libstdc++-v3 -clean-stageprofile-target-libstdc++-v3: +maybe-clean-stageprofile-target-libsanitizer: clean-stageprofile-target-libsanitizer +clean-stageprofile: clean-stageprofile-target-libsanitizer +clean-stageprofile-target-libsanitizer: @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ else \ - [ -f $(TARGET_SUBDIR)/stageprofile-libstdc++-v3/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/stageprofile-libsanitizer/Makefile ] || exit 0; \ $(MAKE) stageprofile-start; \ fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean -@endif target-libstdc++-v3-bootstrap +@endif target-libsanitizer-bootstrap -.PHONY: all-stagefeedback-target-libstdc++-v3 maybe-all-stagefeedback-target-libstdc++-v3 -.PHONY: clean-stagefeedback-target-libstdc++-v3 maybe-clean-stagefeedback-target-libstdc++-v3 -maybe-all-stagefeedback-target-libstdc++-v3: -maybe-clean-stagefeedback-target-libstdc++-v3: -@if target-libstdc++-v3-bootstrap -maybe-all-stagefeedback-target-libstdc++-v3: all-stagefeedback-target-libstdc++-v3 -all-stagefeedback: all-stagefeedback-target-libstdc++-v3 -TARGET-stagefeedback-target-libstdc++-v3 = $(TARGET-target-libstdc++-v3) -all-stagefeedback-target-libstdc++-v3: configure-stagefeedback-target-libstdc++-v3 +.PHONY: all-stagefeedback-target-libsanitizer maybe-all-stagefeedback-target-libsanitizer +.PHONY: clean-stagefeedback-target-libsanitizer maybe-clean-stagefeedback-target-libsanitizer +maybe-all-stagefeedback-target-libsanitizer: +maybe-clean-stagefeedback-target-libsanitizer: +@if target-libsanitizer-bootstrap +maybe-all-stagefeedback-target-libsanitizer: all-stagefeedback-target-libsanitizer +all-stagefeedback: all-stagefeedback-target-libsanitizer +TARGET-stagefeedback-target-libsanitizer = $(TARGET-target-libsanitizer) +all-stagefeedback-target-libsanitizer: configure-stagefeedback-target-libsanitizer @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ $(RAW_CXX_TARGET_EXPORTS) \ \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ @@ -31779,90 +33887,90 @@ all-stagefeedback-target-libstdc++-v3: configure-stagefeedback-target-libstdc++- LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-target-libstdc++-v3) + $(TARGET-stagefeedback-target-libsanitizer) -maybe-clean-stagefeedback-target-libstdc++-v3: clean-stagefeedback-target-libstdc++-v3 -clean-stagefeedback: clean-stagefeedback-target-libstdc++-v3 -clean-stagefeedback-target-libstdc++-v3: +maybe-clean-stagefeedback-target-libsanitizer: clean-stagefeedback-target-libsanitizer +clean-stagefeedback: clean-stagefeedback-target-libsanitizer +clean-stagefeedback-target-libsanitizer: @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ else \ - [ -f $(TARGET_SUBDIR)/stagefeedback-libstdc++-v3/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/stagefeedback-libsanitizer/Makefile ] || exit 0; \ $(MAKE) stagefeedback-start; \ fi; \ - cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean -@endif target-libstdc++-v3-bootstrap +@endif target-libsanitizer-bootstrap -.PHONY: check-target-libstdc++-v3 maybe-check-target-libstdc++-v3 -maybe-check-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-check-target-libstdc++-v3: check-target-libstdc++-v3 +.PHONY: check-target-libsanitizer maybe-check-target-libsanitizer +maybe-check-target-libsanitizer: +@if target-libsanitizer +maybe-check-target-libsanitizer: check-target-libsanitizer -check-target-libstdc++-v3: +check-target-libsanitizer: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(TARGET_FLAGS_TO_PASS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' check) -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: install-target-libstdc++-v3 maybe-install-target-libstdc++-v3 -maybe-install-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-install-target-libstdc++-v3: install-target-libstdc++-v3 +.PHONY: install-target-libsanitizer maybe-install-target-libsanitizer +maybe-install-target-libsanitizer: +@if target-libsanitizer +maybe-install-target-libsanitizer: install-target-libsanitizer -install-target-libstdc++-v3: installdirs +install-target-libsanitizer: installdirs @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) -@endif target-libstdc++-v3 +@endif target-libsanitizer -.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 +.PHONY: install-strip-target-libsanitizer maybe-install-strip-target-libsanitizer +maybe-install-strip-target-libsanitizer: +@if target-libsanitizer +maybe-install-strip-target-libsanitizer: install-strip-target-libsanitizer -install-strip-target-libstdc++-v3: installdirs +install-strip-target-libsanitizer: installdirs @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) -@endif target-libstdc++-v3 +@endif target-libsanitizer # Other targets (info, dvi, pdf, etc.) -.PHONY: maybe-info-target-libstdc++-v3 info-target-libstdc++-v3 -maybe-info-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-info-target-libstdc++-v3: info-target-libstdc++-v3 +.PHONY: maybe-info-target-libsanitizer info-target-libsanitizer +maybe-info-target-libsanitizer: +@if target-libsanitizer +maybe-info-target-libsanitizer: info-target-libsanitizer -info-target-libstdc++-v3: \ - configure-target-libstdc++-v3 +info-target-libsanitizer: \ + configure-target-libsanitizer @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing info in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -31870,25 +33978,25 @@ info-target-libstdc++-v3: \ info) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-dvi-target-libstdc++-v3 dvi-target-libstdc++-v3 -maybe-dvi-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-dvi-target-libstdc++-v3: dvi-target-libstdc++-v3 +.PHONY: maybe-dvi-target-libsanitizer dvi-target-libsanitizer +maybe-dvi-target-libsanitizer: +@if target-libsanitizer +maybe-dvi-target-libsanitizer: dvi-target-libsanitizer -dvi-target-libstdc++-v3: \ - configure-target-libstdc++-v3 +dvi-target-libsanitizer: \ + configure-target-libsanitizer @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing dvi in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -31896,25 +34004,25 @@ dvi-target-libstdc++-v3: \ dvi) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-pdf-target-libstdc++-v3 pdf-target-libstdc++-v3 -maybe-pdf-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-pdf-target-libstdc++-v3: pdf-target-libstdc++-v3 +.PHONY: maybe-pdf-target-libsanitizer pdf-target-libsanitizer +maybe-pdf-target-libsanitizer: +@if target-libsanitizer +maybe-pdf-target-libsanitizer: pdf-target-libsanitizer -pdf-target-libstdc++-v3: \ - configure-target-libstdc++-v3 +pdf-target-libsanitizer: \ + configure-target-libsanitizer @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing pdf in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -31922,25 +34030,25 @@ pdf-target-libstdc++-v3: \ pdf) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-html-target-libstdc++-v3 html-target-libstdc++-v3 -maybe-html-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-html-target-libstdc++-v3: html-target-libstdc++-v3 +.PHONY: maybe-html-target-libsanitizer html-target-libsanitizer +maybe-html-target-libsanitizer: +@if target-libsanitizer +maybe-html-target-libsanitizer: html-target-libsanitizer -html-target-libstdc++-v3: \ - configure-target-libstdc++-v3 +html-target-libsanitizer: \ + configure-target-libsanitizer @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing html in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -31948,25 +34056,25 @@ html-target-libstdc++-v3: \ html) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-TAGS-target-libstdc++-v3 TAGS-target-libstdc++-v3 -maybe-TAGS-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-TAGS-target-libstdc++-v3: TAGS-target-libstdc++-v3 +.PHONY: maybe-TAGS-target-libsanitizer TAGS-target-libsanitizer +maybe-TAGS-target-libsanitizer: +@if target-libsanitizer +maybe-TAGS-target-libsanitizer: TAGS-target-libsanitizer -TAGS-target-libstdc++-v3: \ - configure-target-libstdc++-v3 +TAGS-target-libsanitizer: \ + configure-target-libsanitizer @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing TAGS in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -31974,26 +34082,26 @@ TAGS-target-libstdc++-v3: \ TAGS) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-install-info-target-libstdc++-v3 install-info-target-libstdc++-v3 -maybe-install-info-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-install-info-target-libstdc++-v3: install-info-target-libstdc++-v3 +.PHONY: maybe-install-info-target-libsanitizer install-info-target-libsanitizer +maybe-install-info-target-libsanitizer: +@if target-libsanitizer +maybe-install-info-target-libsanitizer: install-info-target-libsanitizer -install-info-target-libstdc++-v3: \ - configure-target-libstdc++-v3 \ - info-target-libstdc++-v3 +install-info-target-libsanitizer: \ + configure-target-libsanitizer \ + info-target-libsanitizer @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing install-info in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32001,26 +34109,26 @@ install-info-target-libstdc++-v3: \ install-info) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-install-pdf-target-libstdc++-v3 install-pdf-target-libstdc++-v3 -maybe-install-pdf-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-install-pdf-target-libstdc++-v3: install-pdf-target-libstdc++-v3 +.PHONY: maybe-install-pdf-target-libsanitizer install-pdf-target-libsanitizer +maybe-install-pdf-target-libsanitizer: +@if target-libsanitizer +maybe-install-pdf-target-libsanitizer: install-pdf-target-libsanitizer -install-pdf-target-libstdc++-v3: \ - configure-target-libstdc++-v3 \ - pdf-target-libstdc++-v3 +install-pdf-target-libsanitizer: \ + configure-target-libsanitizer \ + pdf-target-libsanitizer @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing install-pdf in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32028,26 +34136,26 @@ install-pdf-target-libstdc++-v3: \ install-pdf) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-install-html-target-libstdc++-v3 install-html-target-libstdc++-v3 -maybe-install-html-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-install-html-target-libstdc++-v3: install-html-target-libstdc++-v3 +.PHONY: maybe-install-html-target-libsanitizer install-html-target-libsanitizer +maybe-install-html-target-libsanitizer: +@if target-libsanitizer +maybe-install-html-target-libsanitizer: install-html-target-libsanitizer -install-html-target-libstdc++-v3: \ - configure-target-libstdc++-v3 \ - html-target-libstdc++-v3 +install-html-target-libsanitizer: \ + configure-target-libsanitizer \ + html-target-libsanitizer @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing install-html in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32055,25 +34163,25 @@ install-html-target-libstdc++-v3: \ install-html) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-installcheck-target-libstdc++-v3 installcheck-target-libstdc++-v3 -maybe-installcheck-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-installcheck-target-libstdc++-v3: installcheck-target-libstdc++-v3 +.PHONY: maybe-installcheck-target-libsanitizer installcheck-target-libsanitizer +maybe-installcheck-target-libsanitizer: +@if target-libsanitizer +maybe-installcheck-target-libsanitizer: installcheck-target-libsanitizer -installcheck-target-libstdc++-v3: \ - configure-target-libstdc++-v3 +installcheck-target-libsanitizer: \ + configure-target-libsanitizer @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing installcheck in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32081,24 +34189,24 @@ installcheck-target-libstdc++-v3: \ installcheck) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-mostlyclean-target-libstdc++-v3 mostlyclean-target-libstdc++-v3 -maybe-mostlyclean-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-mostlyclean-target-libstdc++-v3: mostlyclean-target-libstdc++-v3 +.PHONY: maybe-mostlyclean-target-libsanitizer mostlyclean-target-libsanitizer +maybe-mostlyclean-target-libsanitizer: +@if target-libsanitizer +maybe-mostlyclean-target-libsanitizer: mostlyclean-target-libsanitizer -mostlyclean-target-libstdc++-v3: +mostlyclean-target-libsanitizer: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing mostlyclean in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32106,24 +34214,24 @@ mostlyclean-target-libstdc++-v3: mostlyclean) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-clean-target-libstdc++-v3 clean-target-libstdc++-v3 -maybe-clean-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-clean-target-libstdc++-v3: clean-target-libstdc++-v3 +.PHONY: maybe-clean-target-libsanitizer clean-target-libsanitizer +maybe-clean-target-libsanitizer: +@if target-libsanitizer +maybe-clean-target-libsanitizer: clean-target-libsanitizer -clean-target-libstdc++-v3: +clean-target-libsanitizer: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing clean in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32131,24 +34239,24 @@ clean-target-libstdc++-v3: clean) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-distclean-target-libstdc++-v3 distclean-target-libstdc++-v3 -maybe-distclean-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-distclean-target-libstdc++-v3: distclean-target-libstdc++-v3 +.PHONY: maybe-distclean-target-libsanitizer distclean-target-libsanitizer +maybe-distclean-target-libsanitizer: +@if target-libsanitizer +maybe-distclean-target-libsanitizer: distclean-target-libsanitizer -distclean-target-libstdc++-v3: +distclean-target-libsanitizer: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing distclean in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32156,24 +34264,24 @@ distclean-target-libstdc++-v3: distclean) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: maybe-maintainer-clean-target-libstdc++-v3 maintainer-clean-target-libstdc++-v3 -maybe-maintainer-clean-target-libstdc++-v3: -@if target-libstdc++-v3 -maybe-maintainer-clean-target-libstdc++-v3: maintainer-clean-target-libstdc++-v3 +.PHONY: maybe-maintainer-clean-target-libsanitizer maintainer-clean-target-libsanitizer +maybe-maintainer-clean-target-libsanitizer: +@if target-libsanitizer +maybe-maintainer-clean-target-libsanitizer: maintainer-clean-target-libsanitizer -maintainer-clean-target-libstdc++-v3: +maintainer-clean-target-libsanitizer: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libstdc++-v3" ; \ + echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libsanitizer" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libstdc++-v3 && \ + (cd $(TARGET_SUBDIR)/libsanitizer && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32181,362 +34289,364 @@ maintainer-clean-target-libstdc++-v3: maintainer-clean) \ || exit 1 -@endif target-libstdc++-v3 +@endif target-libsanitizer -.PHONY: configure-target-libsanitizer maybe-configure-target-libsanitizer -maybe-configure-target-libsanitizer: +.PHONY: configure-target-libmpx maybe-configure-target-libmpx +maybe-configure-target-libmpx: @if gcc-bootstrap -configure-target-libsanitizer: stage_current +configure-target-libmpx: stage_current @endif gcc-bootstrap -@if target-libsanitizer -maybe-configure-target-libsanitizer: configure-target-libsanitizer -configure-target-libsanitizer: +@if target-libmpx +maybe-configure-target-libmpx: configure-target-libmpx +configure-target-libmpx: @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libsanitizer..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + echo "Checking multilib configuration for libmpx..."; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx ; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libmpx/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libmpx/multilib.tmp; \ else \ - rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + rm -f $(TARGET_SUBDIR)/libmpx/Makefile; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ else \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ - test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libsanitizer; \ - cd "$(TARGET_SUBDIR)/libsanitizer" || exit 1; \ + test ! -f $(TARGET_SUBDIR)/libmpx/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo Configuring in $(TARGET_SUBDIR)/libmpx; \ + cd "$(TARGET_SUBDIR)/libmpx" || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + *) topdir=`echo $(TARGET_SUBDIR)/libmpx/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libsanitizer"; \ - libsrcdir="$$s/libsanitizer"; \ + module_srcdir=libmpx; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: configure-stage1-target-libsanitizer maybe-configure-stage1-target-libsanitizer -maybe-configure-stage1-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-configure-stage1-target-libsanitizer: configure-stage1-target-libsanitizer -configure-stage1-target-libsanitizer: +.PHONY: configure-stage1-target-libmpx maybe-configure-stage1-target-libmpx +maybe-configure-stage1-target-libmpx: +@if target-libmpx-bootstrap +maybe-configure-stage1-target-libmpx: configure-stage1-target-libmpx +configure-stage1-target-libmpx: @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - echo "Checking multilib configuration for libsanitizer..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + echo "Checking multilib configuration for libmpx..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libmpx/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libmpx/multilib.tmp; \ else \ - rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + rm -f $(TARGET_SUBDIR)/libmpx/Makefile; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ else \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ - test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ + test ! -f $(TARGET_SUBDIR)/libmpx/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)/libsanitizer ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ - cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + echo Configuring stage 1 in $(TARGET_SUBDIR)/libmpx ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx ; \ + cd $(TARGET_SUBDIR)/libmpx || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + *) topdir=`echo $(TARGET_SUBDIR)/libmpx/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libsanitizer"; \ - libsrcdir="$$s/libsanitizer"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libmpx; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) -@endif target-libsanitizer-bootstrap +@endif target-libmpx-bootstrap -.PHONY: configure-stage2-target-libsanitizer maybe-configure-stage2-target-libsanitizer -maybe-configure-stage2-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-configure-stage2-target-libsanitizer: configure-stage2-target-libsanitizer -configure-stage2-target-libsanitizer: +.PHONY: configure-stage2-target-libmpx maybe-configure-stage2-target-libmpx +maybe-configure-stage2-target-libmpx: +@if target-libmpx-bootstrap +maybe-configure-stage2-target-libmpx: configure-stage2-target-libmpx +configure-stage2-target-libmpx: @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ - echo "Checking multilib configuration for libsanitizer..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + echo "Checking multilib configuration for libmpx..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libmpx/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libmpx/multilib.tmp; \ else \ - rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + rm -f $(TARGET_SUBDIR)/libmpx/Makefile; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ else \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ - test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ + test ! -f $(TARGET_SUBDIR)/libmpx/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)/libsanitizer ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ - cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + echo Configuring stage 2 in $(TARGET_SUBDIR)/libmpx ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx ; \ + cd $(TARGET_SUBDIR)/libmpx || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + *) topdir=`echo $(TARGET_SUBDIR)/libmpx/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libsanitizer"; \ - libsrcdir="$$s/libsanitizer"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libmpx; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) -@endif target-libsanitizer-bootstrap +@endif target-libmpx-bootstrap -.PHONY: configure-stage3-target-libsanitizer maybe-configure-stage3-target-libsanitizer -maybe-configure-stage3-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-configure-stage3-target-libsanitizer: configure-stage3-target-libsanitizer -configure-stage3-target-libsanitizer: +.PHONY: configure-stage3-target-libmpx maybe-configure-stage3-target-libmpx +maybe-configure-stage3-target-libmpx: +@if target-libmpx-bootstrap +maybe-configure-stage3-target-libmpx: configure-stage3-target-libmpx +configure-stage3-target-libmpx: @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ - echo "Checking multilib configuration for libsanitizer..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + echo "Checking multilib configuration for libmpx..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libmpx/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libmpx/multilib.tmp; \ else \ - rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + rm -f $(TARGET_SUBDIR)/libmpx/Makefile; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ else \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ - test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ + test ! -f $(TARGET_SUBDIR)/libmpx/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)/libsanitizer ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ - cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + echo Configuring stage 3 in $(TARGET_SUBDIR)/libmpx ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx ; \ + cd $(TARGET_SUBDIR)/libmpx || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + *) topdir=`echo $(TARGET_SUBDIR)/libmpx/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libsanitizer"; \ - libsrcdir="$$s/libsanitizer"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libmpx; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) -@endif target-libsanitizer-bootstrap +@endif target-libmpx-bootstrap -.PHONY: configure-stage4-target-libsanitizer maybe-configure-stage4-target-libsanitizer -maybe-configure-stage4-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-configure-stage4-target-libsanitizer: configure-stage4-target-libsanitizer -configure-stage4-target-libsanitizer: +.PHONY: configure-stage4-target-libmpx maybe-configure-stage4-target-libmpx +maybe-configure-stage4-target-libmpx: +@if target-libmpx-bootstrap +maybe-configure-stage4-target-libmpx: configure-stage4-target-libmpx +configure-stage4-target-libmpx: @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ - echo "Checking multilib configuration for libsanitizer..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + echo "Checking multilib configuration for libmpx..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libmpx/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libmpx/multilib.tmp; \ else \ - rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + rm -f $(TARGET_SUBDIR)/libmpx/Makefile; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ else \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ - test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ + test ! -f $(TARGET_SUBDIR)/libmpx/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)/libsanitizer ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ - cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + echo Configuring stage 4 in $(TARGET_SUBDIR)/libmpx ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx ; \ + cd $(TARGET_SUBDIR)/libmpx || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + *) topdir=`echo $(TARGET_SUBDIR)/libmpx/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libsanitizer"; \ - libsrcdir="$$s/libsanitizer"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libmpx; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) -@endif target-libsanitizer-bootstrap +@endif target-libmpx-bootstrap -.PHONY: configure-stageprofile-target-libsanitizer maybe-configure-stageprofile-target-libsanitizer -maybe-configure-stageprofile-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-configure-stageprofile-target-libsanitizer: configure-stageprofile-target-libsanitizer -configure-stageprofile-target-libsanitizer: +.PHONY: configure-stageprofile-target-libmpx maybe-configure-stageprofile-target-libmpx +maybe-configure-stageprofile-target-libmpx: +@if target-libmpx-bootstrap +maybe-configure-stageprofile-target-libmpx: configure-stageprofile-target-libmpx +configure-stageprofile-target-libmpx: @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ - echo "Checking multilib configuration for libsanitizer..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + echo "Checking multilib configuration for libmpx..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libmpx/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libmpx/multilib.tmp; \ else \ - rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + rm -f $(TARGET_SUBDIR)/libmpx/Makefile; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ else \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ - test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ + test ! -f $(TARGET_SUBDIR)/libmpx/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)/libsanitizer ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ - cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + echo Configuring stage profile in $(TARGET_SUBDIR)/libmpx ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx ; \ + cd $(TARGET_SUBDIR)/libmpx || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + *) topdir=`echo $(TARGET_SUBDIR)/libmpx/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libsanitizer"; \ - libsrcdir="$$s/libsanitizer"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libmpx; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) -@endif target-libsanitizer-bootstrap +@endif target-libmpx-bootstrap -.PHONY: configure-stagefeedback-target-libsanitizer maybe-configure-stagefeedback-target-libsanitizer -maybe-configure-stagefeedback-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-configure-stagefeedback-target-libsanitizer: configure-stagefeedback-target-libsanitizer -configure-stagefeedback-target-libsanitizer: +.PHONY: configure-stagefeedback-target-libmpx maybe-configure-stagefeedback-target-libmpx +maybe-configure-stagefeedback-target-libmpx: +@if target-libmpx-bootstrap +maybe-configure-stagefeedback-target-libmpx: configure-stagefeedback-target-libmpx +configure-stagefeedback-target-libmpx: @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start - @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer + @$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - echo "Checking multilib configuration for libsanitizer..."; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libsanitizer/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libsanitizer/multilib.tmp; \ + echo "Checking multilib configuration for libmpx..."; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libmpx/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/libmpx/multilib.tmp; \ else \ - rm -f $(TARGET_SUBDIR)/libsanitizer/Makefile; \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + rm -f $(TARGET_SUBDIR)/libmpx/Makefile; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ else \ - mv $(TARGET_SUBDIR)/libsanitizer/multilib.tmp $(TARGET_SUBDIR)/libsanitizer/multilib.out; \ + mv $(TARGET_SUBDIR)/libmpx/multilib.tmp $(TARGET_SUBDIR)/libmpx/multilib.out; \ fi; \ - test ! -f $(TARGET_SUBDIR)/libsanitizer/Makefile || exit 0; \ - $(RAW_CXX_TARGET_EXPORTS) \ + test ! -f $(TARGET_SUBDIR)/libmpx/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)/libsanitizer ; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libsanitizer ; \ - cd $(TARGET_SUBDIR)/libsanitizer || exit 1; \ + echo Configuring stage feedback in $(TARGET_SUBDIR)/libmpx ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libmpx ; \ + cd $(TARGET_SUBDIR)/libmpx || exit 1; \ case $(srcdir) in \ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libsanitizer/ | \ + *) topdir=`echo $(TARGET_SUBDIR)/libmpx/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libsanitizer"; \ - libsrcdir="$$s/libsanitizer"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libmpx; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) -@endif target-libsanitizer-bootstrap +@endif target-libmpx-bootstrap -.PHONY: all-target-libsanitizer maybe-all-target-libsanitizer -maybe-all-target-libsanitizer: +.PHONY: all-target-libmpx maybe-all-target-libmpx +maybe-all-target-libmpx: @if gcc-bootstrap -all-target-libsanitizer: stage_current +all-target-libmpx: stage_current @endif gcc-bootstrap -@if target-libsanitizer -TARGET-target-libsanitizer=all -maybe-all-target-libsanitizer: all-target-libsanitizer -all-target-libsanitizer: configure-target-libsanitizer +@if target-libmpx +TARGET-target-libmpx=all +maybe-all-target-libmpx: all-target-libmpx +all-target-libmpx: configure-target-libmpx @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ - $(TARGET-target-libsanitizer)) -@endif target-libsanitizer + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libmpx && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ + $(TARGET-target-libmpx)) +@endif target-libmpx -.PHONY: all-stage1-target-libsanitizer maybe-all-stage1-target-libsanitizer -.PHONY: clean-stage1-target-libsanitizer maybe-clean-stage1-target-libsanitizer -maybe-all-stage1-target-libsanitizer: -maybe-clean-stage1-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-all-stage1-target-libsanitizer: all-stage1-target-libsanitizer -all-stage1: all-stage1-target-libsanitizer -TARGET-stage1-target-libsanitizer = $(TARGET-target-libsanitizer) -all-stage1-target-libsanitizer: configure-stage1-target-libsanitizer +.PHONY: all-stage1-target-libmpx maybe-all-stage1-target-libmpx +.PHONY: clean-stage1-target-libmpx maybe-clean-stage1-target-libmpx +maybe-all-stage1-target-libmpx: +maybe-clean-stage1-target-libmpx: +@if target-libmpx-bootstrap +maybe-all-stage1-target-libmpx: all-stage1-target-libmpx +all-stage1: all-stage1-target-libmpx +TARGET-stage1-target-libmpx = $(TARGET-target-libmpx) +all-stage1-target-libmpx: configure-stage1-target-libmpx @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE1_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ - cd $(TARGET_SUBDIR)/libsanitizer && \ + $(NORMAL_TARGET_EXPORTS) \ + cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ @@ -32544,42 +34654,42 @@ all-stage1-target-libsanitizer: configure-stage1-target-libsanitizer CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(EXTRA_TARGET_FLAGS) \ \ TFLAGS="$(STAGE1_TFLAGS)" \ - $(TARGET-stage1-target-libsanitizer) + $(TARGET-stage1-target-libmpx) -maybe-clean-stage1-target-libsanitizer: clean-stage1-target-libsanitizer -clean-stage1: clean-stage1-target-libsanitizer -clean-stage1-target-libsanitizer: +maybe-clean-stage1-target-libmpx: clean-stage1-target-libmpx +clean-stage1: clean-stage1-target-libmpx +clean-stage1-target-libmpx: @if [ $(current_stage) = stage1 ]; then \ - [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0; \ else \ - [ -f $(TARGET_SUBDIR)/stage1-libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/stage1-libmpx/Makefile ] || exit 0; \ $(MAKE) stage1-start; \ fi; \ - cd $(TARGET_SUBDIR)/libsanitizer && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + cd $(TARGET_SUBDIR)/libmpx && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) \ clean -@endif target-libsanitizer-bootstrap - - -.PHONY: all-stage2-target-libsanitizer maybe-all-stage2-target-libsanitizer -.PHONY: clean-stage2-target-libsanitizer maybe-clean-stage2-target-libsanitizer -maybe-all-stage2-target-libsanitizer: -maybe-clean-stage2-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-all-stage2-target-libsanitizer: all-stage2-target-libsanitizer -all-stage2: all-stage2-target-libsanitizer -TARGET-stage2-target-libsanitizer = $(TARGET-target-libsanitizer) -all-stage2-target-libsanitizer: configure-stage2-target-libsanitizer +@endif target-libmpx-bootstrap + + +.PHONY: all-stage2-target-libmpx maybe-all-stage2-target-libmpx +.PHONY: clean-stage2-target-libmpx maybe-clean-stage2-target-libmpx +maybe-all-stage2-target-libmpx: +maybe-clean-stage2-target-libmpx: +@if target-libmpx-bootstrap +maybe-all-stage2-target-libmpx: all-stage2-target-libmpx +all-stage2: all-stage2-target-libmpx +TARGET-stage2-target-libmpx = $(TARGET-target-libmpx) +all-stage2-target-libmpx: configure-stage2-target-libmpx @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE2_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ \ - cd $(TARGET_SUBDIR)/libsanitizer && \ + cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ @@ -32587,40 +34697,40 @@ all-stage2-target-libsanitizer: configure-stage2-target-libsanitizer CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(EXTRA_TARGET_FLAGS) \ TFLAGS="$(STAGE2_TFLAGS)" \ - $(TARGET-stage2-target-libsanitizer) + $(TARGET-stage2-target-libmpx) -maybe-clean-stage2-target-libsanitizer: clean-stage2-target-libsanitizer -clean-stage2: clean-stage2-target-libsanitizer -clean-stage2-target-libsanitizer: +maybe-clean-stage2-target-libmpx: clean-stage2-target-libmpx +clean-stage2: clean-stage2-target-libmpx +clean-stage2-target-libmpx: @if [ $(current_stage) = stage2 ]; then \ - [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0; \ else \ - [ -f $(TARGET_SUBDIR)/stage2-libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/stage2-libmpx/Makefile ] || exit 0; \ $(MAKE) stage2-start; \ fi; \ - cd $(TARGET_SUBDIR)/libsanitizer && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean -@endif target-libsanitizer-bootstrap - - -.PHONY: all-stage3-target-libsanitizer maybe-all-stage3-target-libsanitizer -.PHONY: clean-stage3-target-libsanitizer maybe-clean-stage3-target-libsanitizer -maybe-all-stage3-target-libsanitizer: -maybe-clean-stage3-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-all-stage3-target-libsanitizer: all-stage3-target-libsanitizer -all-stage3: all-stage3-target-libsanitizer -TARGET-stage3-target-libsanitizer = $(TARGET-target-libsanitizer) -all-stage3-target-libsanitizer: configure-stage3-target-libsanitizer + cd $(TARGET_SUBDIR)/libmpx && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) clean +@endif target-libmpx-bootstrap + + +.PHONY: all-stage3-target-libmpx maybe-all-stage3-target-libmpx +.PHONY: clean-stage3-target-libmpx maybe-clean-stage3-target-libmpx +maybe-all-stage3-target-libmpx: +maybe-clean-stage3-target-libmpx: +@if target-libmpx-bootstrap +maybe-all-stage3-target-libmpx: all-stage3-target-libmpx +all-stage3: all-stage3-target-libmpx +TARGET-stage3-target-libmpx = $(TARGET-target-libmpx) +all-stage3-target-libmpx: configure-stage3-target-libmpx @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE3_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ \ - cd $(TARGET_SUBDIR)/libsanitizer && \ + cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ @@ -32628,40 +34738,40 @@ all-stage3-target-libsanitizer: configure-stage3-target-libsanitizer CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(EXTRA_TARGET_FLAGS) \ TFLAGS="$(STAGE3_TFLAGS)" \ - $(TARGET-stage3-target-libsanitizer) + $(TARGET-stage3-target-libmpx) -maybe-clean-stage3-target-libsanitizer: clean-stage3-target-libsanitizer -clean-stage3: clean-stage3-target-libsanitizer -clean-stage3-target-libsanitizer: +maybe-clean-stage3-target-libmpx: clean-stage3-target-libmpx +clean-stage3: clean-stage3-target-libmpx +clean-stage3-target-libmpx: @if [ $(current_stage) = stage3 ]; then \ - [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0; \ else \ - [ -f $(TARGET_SUBDIR)/stage3-libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/stage3-libmpx/Makefile ] || exit 0; \ $(MAKE) stage3-start; \ fi; \ - cd $(TARGET_SUBDIR)/libsanitizer && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean -@endif target-libsanitizer-bootstrap - - -.PHONY: all-stage4-target-libsanitizer maybe-all-stage4-target-libsanitizer -.PHONY: clean-stage4-target-libsanitizer maybe-clean-stage4-target-libsanitizer -maybe-all-stage4-target-libsanitizer: -maybe-clean-stage4-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-all-stage4-target-libsanitizer: all-stage4-target-libsanitizer -all-stage4: all-stage4-target-libsanitizer -TARGET-stage4-target-libsanitizer = $(TARGET-target-libsanitizer) -all-stage4-target-libsanitizer: configure-stage4-target-libsanitizer + cd $(TARGET_SUBDIR)/libmpx && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) clean +@endif target-libmpx-bootstrap + + +.PHONY: all-stage4-target-libmpx maybe-all-stage4-target-libmpx +.PHONY: clean-stage4-target-libmpx maybe-clean-stage4-target-libmpx +maybe-all-stage4-target-libmpx: +maybe-clean-stage4-target-libmpx: +@if target-libmpx-bootstrap +maybe-all-stage4-target-libmpx: all-stage4-target-libmpx +all-stage4: all-stage4-target-libmpx +TARGET-stage4-target-libmpx = $(TARGET-target-libmpx) +all-stage4-target-libmpx: configure-stage4-target-libmpx @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGE4_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ \ - cd $(TARGET_SUBDIR)/libsanitizer && \ + cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ @@ -32669,40 +34779,40 @@ all-stage4-target-libsanitizer: configure-stage4-target-libsanitizer CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(EXTRA_TARGET_FLAGS) \ TFLAGS="$(STAGE4_TFLAGS)" \ - $(TARGET-stage4-target-libsanitizer) + $(TARGET-stage4-target-libmpx) -maybe-clean-stage4-target-libsanitizer: clean-stage4-target-libsanitizer -clean-stage4: clean-stage4-target-libsanitizer -clean-stage4-target-libsanitizer: +maybe-clean-stage4-target-libmpx: clean-stage4-target-libmpx +clean-stage4: clean-stage4-target-libmpx +clean-stage4-target-libmpx: @if [ $(current_stage) = stage4 ]; then \ - [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0; \ else \ - [ -f $(TARGET_SUBDIR)/stage4-libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/stage4-libmpx/Makefile ] || exit 0; \ $(MAKE) stage4-start; \ fi; \ - cd $(TARGET_SUBDIR)/libsanitizer && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean -@endif target-libsanitizer-bootstrap - - -.PHONY: all-stageprofile-target-libsanitizer maybe-all-stageprofile-target-libsanitizer -.PHONY: clean-stageprofile-target-libsanitizer maybe-clean-stageprofile-target-libsanitizer -maybe-all-stageprofile-target-libsanitizer: -maybe-clean-stageprofile-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-all-stageprofile-target-libsanitizer: all-stageprofile-target-libsanitizer -all-stageprofile: all-stageprofile-target-libsanitizer -TARGET-stageprofile-target-libsanitizer = $(TARGET-target-libsanitizer) -all-stageprofile-target-libsanitizer: configure-stageprofile-target-libsanitizer + cd $(TARGET_SUBDIR)/libmpx && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) clean +@endif target-libmpx-bootstrap + + +.PHONY: all-stageprofile-target-libmpx maybe-all-stageprofile-target-libmpx +.PHONY: clean-stageprofile-target-libmpx maybe-clean-stageprofile-target-libmpx +maybe-all-stageprofile-target-libmpx: +maybe-clean-stageprofile-target-libmpx: +@if target-libmpx-bootstrap +maybe-all-stageprofile-target-libmpx: all-stageprofile-target-libmpx +all-stageprofile: all-stageprofile-target-libmpx +TARGET-stageprofile-target-libmpx = $(TARGET-target-libmpx) +all-stageprofile-target-libmpx: configure-stageprofile-target-libmpx @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEprofile_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ \ - cd $(TARGET_SUBDIR)/libsanitizer && \ + cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ @@ -32710,40 +34820,40 @@ all-stageprofile-target-libsanitizer: configure-stageprofile-target-libsanitizer CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(EXTRA_TARGET_FLAGS) \ TFLAGS="$(STAGEprofile_TFLAGS)" \ - $(TARGET-stageprofile-target-libsanitizer) + $(TARGET-stageprofile-target-libmpx) -maybe-clean-stageprofile-target-libsanitizer: clean-stageprofile-target-libsanitizer -clean-stageprofile: clean-stageprofile-target-libsanitizer -clean-stageprofile-target-libsanitizer: +maybe-clean-stageprofile-target-libmpx: clean-stageprofile-target-libmpx +clean-stageprofile: clean-stageprofile-target-libmpx +clean-stageprofile-target-libmpx: @if [ $(current_stage) = stageprofile ]; then \ - [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0; \ else \ - [ -f $(TARGET_SUBDIR)/stageprofile-libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/stageprofile-libmpx/Makefile ] || exit 0; \ $(MAKE) stageprofile-start; \ fi; \ - cd $(TARGET_SUBDIR)/libsanitizer && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean -@endif target-libsanitizer-bootstrap - - -.PHONY: all-stagefeedback-target-libsanitizer maybe-all-stagefeedback-target-libsanitizer -.PHONY: clean-stagefeedback-target-libsanitizer maybe-clean-stagefeedback-target-libsanitizer -maybe-all-stagefeedback-target-libsanitizer: -maybe-clean-stagefeedback-target-libsanitizer: -@if target-libsanitizer-bootstrap -maybe-all-stagefeedback-target-libsanitizer: all-stagefeedback-target-libsanitizer -all-stagefeedback: all-stagefeedback-target-libsanitizer -TARGET-stagefeedback-target-libsanitizer = $(TARGET-target-libsanitizer) -all-stagefeedback-target-libsanitizer: configure-stagefeedback-target-libsanitizer + cd $(TARGET_SUBDIR)/libmpx && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) clean +@endif target-libmpx-bootstrap + + +.PHONY: all-stagefeedback-target-libmpx maybe-all-stagefeedback-target-libmpx +.PHONY: clean-stagefeedback-target-libmpx maybe-clean-stagefeedback-target-libmpx +maybe-all-stagefeedback-target-libmpx: +maybe-clean-stagefeedback-target-libmpx: +@if target-libmpx-bootstrap +maybe-all-stagefeedback-target-libmpx: all-stagefeedback-target-libmpx +all-stagefeedback: all-stagefeedback-target-libmpx +TARGET-stagefeedback-target-libmpx = $(TARGET-target-libmpx) +all-stagefeedback-target-libmpx: configure-stagefeedback-target-libmpx @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ TFLAGS="$(STAGEfeedback_TFLAGS)"; \ - $(RAW_CXX_TARGET_EXPORTS) \ + $(NORMAL_TARGET_EXPORTS) \ \ - cd $(TARGET_SUBDIR)/libsanitizer && \ + cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ @@ -32751,92 +34861,92 @@ all-stagefeedback-target-libsanitizer: configure-stagefeedback-target-libsanitiz CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ - $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' \ + $(EXTRA_TARGET_FLAGS) \ TFLAGS="$(STAGEfeedback_TFLAGS)" \ - $(TARGET-stagefeedback-target-libsanitizer) + $(TARGET-stagefeedback-target-libmpx) -maybe-clean-stagefeedback-target-libsanitizer: clean-stagefeedback-target-libsanitizer -clean-stagefeedback: clean-stagefeedback-target-libsanitizer -clean-stagefeedback-target-libsanitizer: +maybe-clean-stagefeedback-target-libmpx: clean-stagefeedback-target-libmpx +clean-stagefeedback: clean-stagefeedback-target-libmpx +clean-stagefeedback-target-libmpx: @if [ $(current_stage) = stagefeedback ]; then \ - [ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0; \ else \ - [ -f $(TARGET_SUBDIR)/stagefeedback-libsanitizer/Makefile ] || exit 0; \ + [ -f $(TARGET_SUBDIR)/stagefeedback-libmpx/Makefile ] || exit 0; \ $(MAKE) stagefeedback-start; \ fi; \ - cd $(TARGET_SUBDIR)/libsanitizer && \ - $(MAKE) $(EXTRA_TARGET_FLAGS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' clean -@endif target-libsanitizer-bootstrap + cd $(TARGET_SUBDIR)/libmpx && \ + $(MAKE) $(EXTRA_TARGET_FLAGS) clean +@endif target-libmpx-bootstrap -.PHONY: check-target-libsanitizer maybe-check-target-libsanitizer -maybe-check-target-libsanitizer: -@if target-libsanitizer -maybe-check-target-libsanitizer: check-target-libsanitizer +.PHONY: check-target-libmpx maybe-check-target-libmpx +maybe-check-target-libmpx: +@if target-libmpx +maybe-check-target-libmpx: check-target-libmpx -check-target-libsanitizer: +check-target-libmpx: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' check) + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libmpx && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) check) -@endif target-libsanitizer +@endif target-libmpx -.PHONY: install-target-libsanitizer maybe-install-target-libsanitizer -maybe-install-target-libsanitizer: -@if target-libsanitizer -maybe-install-target-libsanitizer: install-target-libsanitizer +.PHONY: install-target-libmpx maybe-install-target-libmpx +maybe-install-target-libmpx: +@if target-libmpx +maybe-install-target-libmpx: install-target-libmpx -install-target-libsanitizer: installdirs +install-target-libmpx: installdirs @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) -@endif target-libsanitizer +@endif target-libmpx -.PHONY: install-strip-target-libsanitizer maybe-install-strip-target-libsanitizer -maybe-install-strip-target-libsanitizer: -@if target-libsanitizer -maybe-install-strip-target-libsanitizer: install-strip-target-libsanitizer +.PHONY: install-strip-target-libmpx maybe-install-strip-target-libmpx +maybe-install-strip-target-libmpx: +@if target-libmpx +maybe-install-strip-target-libmpx: install-strip-target-libmpx -install-strip-target-libsanitizer: installdirs +install-strip-target-libmpx: installdirs @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) -@endif target-libsanitizer +@endif target-libmpx # Other targets (info, dvi, pdf, etc.) -.PHONY: maybe-info-target-libsanitizer info-target-libsanitizer -maybe-info-target-libsanitizer: -@if target-libsanitizer -maybe-info-target-libsanitizer: info-target-libsanitizer +.PHONY: maybe-info-target-libmpx info-target-libmpx +maybe-info-target-libmpx: +@if target-libmpx +maybe-info-target-libmpx: info-target-libmpx -info-target-libsanitizer: \ - configure-target-libsanitizer +info-target-libmpx: \ + configure-target-libmpx @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing info in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32844,25 +34954,25 @@ info-target-libsanitizer: \ info) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-dvi-target-libsanitizer dvi-target-libsanitizer -maybe-dvi-target-libsanitizer: -@if target-libsanitizer -maybe-dvi-target-libsanitizer: dvi-target-libsanitizer +.PHONY: maybe-dvi-target-libmpx dvi-target-libmpx +maybe-dvi-target-libmpx: +@if target-libmpx +maybe-dvi-target-libmpx: dvi-target-libmpx -dvi-target-libsanitizer: \ - configure-target-libsanitizer +dvi-target-libmpx: \ + configure-target-libmpx @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing dvi in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32870,25 +34980,25 @@ dvi-target-libsanitizer: \ dvi) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-pdf-target-libsanitizer pdf-target-libsanitizer -maybe-pdf-target-libsanitizer: -@if target-libsanitizer -maybe-pdf-target-libsanitizer: pdf-target-libsanitizer +.PHONY: maybe-pdf-target-libmpx pdf-target-libmpx +maybe-pdf-target-libmpx: +@if target-libmpx +maybe-pdf-target-libmpx: pdf-target-libmpx -pdf-target-libsanitizer: \ - configure-target-libsanitizer +pdf-target-libmpx: \ + configure-target-libmpx @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing pdf in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32896,25 +35006,25 @@ pdf-target-libsanitizer: \ pdf) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-html-target-libsanitizer html-target-libsanitizer -maybe-html-target-libsanitizer: -@if target-libsanitizer -maybe-html-target-libsanitizer: html-target-libsanitizer +.PHONY: maybe-html-target-libmpx html-target-libmpx +maybe-html-target-libmpx: +@if target-libmpx +maybe-html-target-libmpx: html-target-libmpx -html-target-libsanitizer: \ - configure-target-libsanitizer +html-target-libmpx: \ + configure-target-libmpx @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing html in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32922,25 +35032,25 @@ html-target-libsanitizer: \ html) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-TAGS-target-libsanitizer TAGS-target-libsanitizer -maybe-TAGS-target-libsanitizer: -@if target-libsanitizer -maybe-TAGS-target-libsanitizer: TAGS-target-libsanitizer +.PHONY: maybe-TAGS-target-libmpx TAGS-target-libmpx +maybe-TAGS-target-libmpx: +@if target-libmpx +maybe-TAGS-target-libmpx: TAGS-target-libmpx -TAGS-target-libsanitizer: \ - configure-target-libsanitizer +TAGS-target-libmpx: \ + configure-target-libmpx @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing TAGS in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32948,26 +35058,26 @@ TAGS-target-libsanitizer: \ TAGS) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-install-info-target-libsanitizer install-info-target-libsanitizer -maybe-install-info-target-libsanitizer: -@if target-libsanitizer -maybe-install-info-target-libsanitizer: install-info-target-libsanitizer +.PHONY: maybe-install-info-target-libmpx install-info-target-libmpx +maybe-install-info-target-libmpx: +@if target-libmpx +maybe-install-info-target-libmpx: install-info-target-libmpx -install-info-target-libsanitizer: \ - configure-target-libsanitizer \ - info-target-libsanitizer +install-info-target-libmpx: \ + configure-target-libmpx \ + info-target-libmpx @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-info in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -32975,26 +35085,26 @@ install-info-target-libsanitizer: \ install-info) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-install-pdf-target-libsanitizer install-pdf-target-libsanitizer -maybe-install-pdf-target-libsanitizer: -@if target-libsanitizer -maybe-install-pdf-target-libsanitizer: install-pdf-target-libsanitizer +.PHONY: maybe-install-pdf-target-libmpx install-pdf-target-libmpx +maybe-install-pdf-target-libmpx: +@if target-libmpx +maybe-install-pdf-target-libmpx: install-pdf-target-libmpx -install-pdf-target-libsanitizer: \ - configure-target-libsanitizer \ - pdf-target-libsanitizer +install-pdf-target-libmpx: \ + configure-target-libmpx \ + pdf-target-libmpx @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-pdf in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -33002,26 +35112,26 @@ install-pdf-target-libsanitizer: \ install-pdf) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-install-html-target-libsanitizer install-html-target-libsanitizer -maybe-install-html-target-libsanitizer: -@if target-libsanitizer -maybe-install-html-target-libsanitizer: install-html-target-libsanitizer +.PHONY: maybe-install-html-target-libmpx install-html-target-libmpx +maybe-install-html-target-libmpx: +@if target-libmpx +maybe-install-html-target-libmpx: install-html-target-libmpx -install-html-target-libsanitizer: \ - configure-target-libsanitizer \ - html-target-libsanitizer +install-html-target-libmpx: \ + configure-target-libmpx \ + html-target-libmpx @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing install-html in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -33029,25 +35139,25 @@ install-html-target-libsanitizer: \ install-html) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-installcheck-target-libsanitizer installcheck-target-libsanitizer -maybe-installcheck-target-libsanitizer: -@if target-libsanitizer -maybe-installcheck-target-libsanitizer: installcheck-target-libsanitizer +.PHONY: maybe-installcheck-target-libmpx installcheck-target-libmpx +maybe-installcheck-target-libmpx: +@if target-libmpx +maybe-installcheck-target-libmpx: installcheck-target-libmpx -installcheck-target-libsanitizer: \ - configure-target-libsanitizer +installcheck-target-libmpx: \ + configure-target-libmpx @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing installcheck in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -33055,24 +35165,24 @@ installcheck-target-libsanitizer: \ installcheck) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-mostlyclean-target-libsanitizer mostlyclean-target-libsanitizer -maybe-mostlyclean-target-libsanitizer: -@if target-libsanitizer -maybe-mostlyclean-target-libsanitizer: mostlyclean-target-libsanitizer +.PHONY: maybe-mostlyclean-target-libmpx mostlyclean-target-libmpx +maybe-mostlyclean-target-libmpx: +@if target-libmpx +maybe-mostlyclean-target-libmpx: mostlyclean-target-libmpx -mostlyclean-target-libsanitizer: +mostlyclean-target-libmpx: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing mostlyclean in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -33080,24 +35190,24 @@ mostlyclean-target-libsanitizer: mostlyclean) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-clean-target-libsanitizer clean-target-libsanitizer -maybe-clean-target-libsanitizer: -@if target-libsanitizer -maybe-clean-target-libsanitizer: clean-target-libsanitizer +.PHONY: maybe-clean-target-libmpx clean-target-libmpx +maybe-clean-target-libmpx: +@if target-libmpx +maybe-clean-target-libmpx: clean-target-libmpx -clean-target-libsanitizer: +clean-target-libmpx: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing clean in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -33105,24 +35215,24 @@ clean-target-libsanitizer: clean) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-distclean-target-libsanitizer distclean-target-libsanitizer -maybe-distclean-target-libsanitizer: -@if target-libsanitizer -maybe-distclean-target-libsanitizer: distclean-target-libsanitizer +.PHONY: maybe-distclean-target-libmpx distclean-target-libmpx +maybe-distclean-target-libmpx: +@if target-libmpx +maybe-distclean-target-libmpx: distclean-target-libmpx -distclean-target-libsanitizer: +distclean-target-libmpx: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing distclean in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -33130,24 +35240,24 @@ distclean-target-libsanitizer: distclean) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx -.PHONY: maybe-maintainer-clean-target-libsanitizer maintainer-clean-target-libsanitizer -maybe-maintainer-clean-target-libsanitizer: -@if target-libsanitizer -maybe-maintainer-clean-target-libsanitizer: maintainer-clean-target-libsanitizer +.PHONY: maybe-maintainer-clean-target-libmpx maintainer-clean-target-libmpx +maybe-maintainer-clean-target-libmpx: +@if target-libmpx +maybe-maintainer-clean-target-libmpx: maintainer-clean-target-libmpx -maintainer-clean-target-libsanitizer: +maintainer-clean-target-libmpx: @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libsanitizer/Makefile ] || exit 0 ; \ + @[ -f $(TARGET_SUBDIR)/libmpx/Makefile ] || exit 0 ; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(RAW_CXX_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libsanitizer" ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libmpx" ; \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ done; \ - (cd $(TARGET_SUBDIR)/libsanitizer && \ + (cd $(TARGET_SUBDIR)/libmpx && \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ @@ -33155,7 +35265,7 @@ maintainer-clean-target-libsanitizer: maintainer-clean) \ || exit 1 -@endif target-libsanitizer +@endif target-libmpx @@ -33194,12 +35304,13 @@ configure-target-libvtv: *) topdir=`echo $(TARGET_SUBDIR)/libvtv/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libvtv"; \ - libsrcdir="$$s/libvtv"; \ + module_srcdir=libvtv; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libvtv @@ -33240,11 +35351,12 @@ configure-stage1-target-libvtv: *) topdir=`echo $(TARGET_SUBDIR)/libvtv/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libvtv"; \ - libsrcdir="$$s/libvtv"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libvtv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif target-libvtv-bootstrap @@ -33284,12 +35396,12 @@ configure-stage2-target-libvtv: *) topdir=`echo $(TARGET_SUBDIR)/libvtv/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libvtv"; \ - libsrcdir="$$s/libvtv"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libvtv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif target-libvtv-bootstrap @@ -33329,12 +35441,12 @@ configure-stage3-target-libvtv: *) topdir=`echo $(TARGET_SUBDIR)/libvtv/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libvtv"; \ - libsrcdir="$$s/libvtv"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libvtv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif target-libvtv-bootstrap @@ -33374,12 +35486,12 @@ configure-stage4-target-libvtv: *) topdir=`echo $(TARGET_SUBDIR)/libvtv/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libvtv"; \ - libsrcdir="$$s/libvtv"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libvtv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif target-libvtv-bootstrap @@ -33419,12 +35531,12 @@ configure-stageprofile-target-libvtv: *) topdir=`echo $(TARGET_SUBDIR)/libvtv/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libvtv"; \ - libsrcdir="$$s/libvtv"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libvtv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif target-libvtv-bootstrap @@ -33464,12 +35576,12 @@ configure-stagefeedback-target-libvtv: *) topdir=`echo $(TARGET_SUBDIR)/libvtv/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libvtv"; \ - libsrcdir="$$s/libvtv"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libvtv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif target-libvtv-bootstrap @@ -34169,12 +36281,13 @@ configure-target-libcilkrts: *) topdir=`echo $(TARGET_SUBDIR)/libcilkrts/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libcilkrts"; \ - libsrcdir="$$s/libcilkrts"; \ + module_srcdir=libcilkrts; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libcilkrts @@ -34592,6 +36705,464 @@ maintainer-clean-target-libcilkrts: +.PHONY: configure-target-liboffloadmic maybe-configure-target-liboffloadmic +maybe-configure-target-liboffloadmic: +@if gcc-bootstrap +configure-target-liboffloadmic: stage_current +@endif gcc-bootstrap +@if target-liboffloadmic +maybe-configure-target-liboffloadmic: configure-target-liboffloadmic +configure-target-liboffloadmic: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + echo "Checking multilib configuration for liboffloadmic..."; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/liboffloadmic ; \ + $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp 2> /dev/null ; \ + if test -r $(TARGET_SUBDIR)/liboffloadmic/multilib.out; then \ + if cmp -s $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp $(TARGET_SUBDIR)/liboffloadmic/multilib.out; then \ + rm -f $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp; \ + else \ + rm -f $(TARGET_SUBDIR)/liboffloadmic/Makefile; \ + mv $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp $(TARGET_SUBDIR)/liboffloadmic/multilib.out; \ + fi; \ + else \ + mv $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp $(TARGET_SUBDIR)/liboffloadmic/multilib.out; \ + fi; \ + test ! -f $(TARGET_SUBDIR)/liboffloadmic/Makefile || exit 0; \ + $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/liboffloadmic ; \ + $(NORMAL_TARGET_EXPORTS) \ + echo Configuring in $(TARGET_SUBDIR)/liboffloadmic; \ + cd "$(TARGET_SUBDIR)/liboffloadmic" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(TARGET_SUBDIR)/liboffloadmic/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=liboffloadmic; \ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ + --target=${target_alias} @extra_liboffloadmic_configure_flags@ \ + || exit 1 +@endif target-liboffloadmic + + + + + +.PHONY: all-target-liboffloadmic maybe-all-target-liboffloadmic +maybe-all-target-liboffloadmic: +@if gcc-bootstrap +all-target-liboffloadmic: stage_current +@endif gcc-bootstrap +@if target-liboffloadmic +TARGET-target-liboffloadmic=all +maybe-all-target-liboffloadmic: all-target-liboffloadmic +all-target-liboffloadmic: configure-target-liboffloadmic + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ + $(TARGET-target-liboffloadmic)) +@endif target-liboffloadmic + + + + + +.PHONY: check-target-liboffloadmic maybe-check-target-liboffloadmic +maybe-check-target-liboffloadmic: +@if target-liboffloadmic +maybe-check-target-liboffloadmic: check-target-liboffloadmic + +check-target-liboffloadmic: + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) check) + +@endif target-liboffloadmic + +.PHONY: install-target-liboffloadmic maybe-install-target-liboffloadmic +maybe-install-target-liboffloadmic: +@if target-liboffloadmic +maybe-install-target-liboffloadmic: install-target-liboffloadmic + +install-target-liboffloadmic: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install) + +@endif target-liboffloadmic + +.PHONY: install-strip-target-liboffloadmic maybe-install-strip-target-liboffloadmic +maybe-install-strip-target-liboffloadmic: +@if target-liboffloadmic +maybe-install-strip-target-liboffloadmic: install-strip-target-liboffloadmic + +install-strip-target-liboffloadmic: installdirs + @: $(MAKE); $(unstage) + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) + +@endif target-liboffloadmic + +# Other targets (info, dvi, pdf, etc.) + +.PHONY: maybe-info-target-liboffloadmic info-target-liboffloadmic +maybe-info-target-liboffloadmic: +@if target-liboffloadmic +maybe-info-target-liboffloadmic: info-target-liboffloadmic + +info-target-liboffloadmic: \ + configure-target-liboffloadmic + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing info in $(TARGET_SUBDIR)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-dvi-target-liboffloadmic dvi-target-liboffloadmic +maybe-dvi-target-liboffloadmic: +@if target-liboffloadmic +maybe-dvi-target-liboffloadmic: dvi-target-liboffloadmic + +dvi-target-liboffloadmic: \ + configure-target-liboffloadmic + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing dvi in $(TARGET_SUBDIR)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-pdf-target-liboffloadmic pdf-target-liboffloadmic +maybe-pdf-target-liboffloadmic: +@if target-liboffloadmic +maybe-pdf-target-liboffloadmic: pdf-target-liboffloadmic + +pdf-target-liboffloadmic: \ + configure-target-liboffloadmic + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing pdf in $(TARGET_SUBDIR)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-html-target-liboffloadmic html-target-liboffloadmic +maybe-html-target-liboffloadmic: +@if target-liboffloadmic +maybe-html-target-liboffloadmic: html-target-liboffloadmic + +html-target-liboffloadmic: \ + configure-target-liboffloadmic + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing html in $(TARGET_SUBDIR)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-TAGS-target-liboffloadmic TAGS-target-liboffloadmic +maybe-TAGS-target-liboffloadmic: +@if target-liboffloadmic +maybe-TAGS-target-liboffloadmic: TAGS-target-liboffloadmic + +TAGS-target-liboffloadmic: \ + configure-target-liboffloadmic + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing TAGS in $(TARGET_SUBDIR)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-install-info-target-liboffloadmic install-info-target-liboffloadmic +maybe-install-info-target-liboffloadmic: +@if target-liboffloadmic +maybe-install-info-target-liboffloadmic: install-info-target-liboffloadmic + +install-info-target-liboffloadmic: \ + configure-target-liboffloadmic \ + info-target-liboffloadmic + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/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)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-install-pdf-target-liboffloadmic install-pdf-target-liboffloadmic +maybe-install-pdf-target-liboffloadmic: +@if target-liboffloadmic +maybe-install-pdf-target-liboffloadmic: install-pdf-target-liboffloadmic + +install-pdf-target-liboffloadmic: \ + configure-target-liboffloadmic \ + pdf-target-liboffloadmic + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/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)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-install-html-target-liboffloadmic install-html-target-liboffloadmic +maybe-install-html-target-liboffloadmic: +@if target-liboffloadmic +maybe-install-html-target-liboffloadmic: install-html-target-liboffloadmic + +install-html-target-liboffloadmic: \ + configure-target-liboffloadmic \ + html-target-liboffloadmic + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/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)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-installcheck-target-liboffloadmic installcheck-target-liboffloadmic +maybe-installcheck-target-liboffloadmic: +@if target-liboffloadmic +maybe-installcheck-target-liboffloadmic: installcheck-target-liboffloadmic + +installcheck-target-liboffloadmic: \ + configure-target-liboffloadmic + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing installcheck in $(TARGET_SUBDIR)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-mostlyclean-target-liboffloadmic mostlyclean-target-liboffloadmic +maybe-mostlyclean-target-liboffloadmic: +@if target-liboffloadmic +maybe-mostlyclean-target-liboffloadmic: mostlyclean-target-liboffloadmic + +mostlyclean-target-liboffloadmic: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing mostlyclean in $(TARGET_SUBDIR)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-clean-target-liboffloadmic clean-target-liboffloadmic +maybe-clean-target-liboffloadmic: +@if target-liboffloadmic +maybe-clean-target-liboffloadmic: clean-target-liboffloadmic + +clean-target-liboffloadmic: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing clean in $(TARGET_SUBDIR)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-distclean-target-liboffloadmic distclean-target-liboffloadmic +maybe-distclean-target-liboffloadmic: +@if target-liboffloadmic +maybe-distclean-target-liboffloadmic: distclean-target-liboffloadmic + +distclean-target-liboffloadmic: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0 ; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + echo "Doing distclean in $(TARGET_SUBDIR)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + +.PHONY: maybe-maintainer-clean-target-liboffloadmic maintainer-clean-target-liboffloadmic +maybe-maintainer-clean-target-liboffloadmic: +@if target-liboffloadmic +maybe-maintainer-clean-target-liboffloadmic: maintainer-clean-target-liboffloadmic + +maintainer-clean-target-liboffloadmic: + @: $(MAKE); $(unstage) + @[ -f $(TARGET_SUBDIR)/liboffloadmic/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)/liboffloadmic" ; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ + (cd $(TARGET_SUBDIR)/liboffloadmic && \ + $(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-liboffloadmic + + + + + .PHONY: configure-target-libssp maybe-configure-target-libssp maybe-configure-target-libssp: @if gcc-bootstrap @@ -34626,12 +37197,13 @@ configure-target-libssp: *) topdir=`echo $(TARGET_SUBDIR)/libssp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libssp"; \ - libsrcdir="$$s/libssp"; \ + module_srcdir=libssp; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libssp @@ -35083,12 +37655,13 @@ configure-target-newlib: *) topdir=`echo $(TARGET_SUBDIR)/newlib/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/newlib"; \ - libsrcdir="$$s/newlib"; \ + module_srcdir=newlib; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-newlib @@ -35539,12 +38112,13 @@ configure-target-libgcc: *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ + module_srcdir=libgcc; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libgcc @@ -35585,11 +38159,12 @@ configure-stage1-target-libgcc: *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif target-libgcc-bootstrap @@ -35629,12 +38204,12 @@ configure-stage2-target-libgcc: *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif target-libgcc-bootstrap @@ -35674,12 +38249,12 @@ configure-stage3-target-libgcc: *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif target-libgcc-bootstrap @@ -35719,12 +38294,12 @@ configure-stage4-target-libgcc: *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif target-libgcc-bootstrap @@ -35764,12 +38339,12 @@ configure-stageprofile-target-libgcc: *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif target-libgcc-bootstrap @@ -35809,12 +38384,12 @@ configure-stagefeedback-target-libgcc: *) topdir=`echo $(TARGET_SUBDIR)/libgcc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgcc"; \ - libsrcdir="$$s/libgcc"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgcc; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif target-libgcc-bootstrap @@ -36509,12 +39084,13 @@ configure-target-libbacktrace: *) topdir=`echo $(TARGET_SUBDIR)/libbacktrace/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libbacktrace"; \ - libsrcdir="$$s/libbacktrace"; \ + module_srcdir=libbacktrace; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libbacktrace @@ -36966,12 +39542,13 @@ configure-target-libquadmath: *) topdir=`echo $(TARGET_SUBDIR)/libquadmath/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libquadmath"; \ - libsrcdir="$$s/libquadmath"; \ + module_srcdir=libquadmath; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libquadmath @@ -37423,12 +40000,13 @@ configure-target-libgfortran: *) topdir=`echo $(TARGET_SUBDIR)/libgfortran/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgfortran"; \ - libsrcdir="$$s/libgfortran"; \ + module_srcdir=libgfortran; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libgfortran @@ -37880,12 +40458,13 @@ configure-target-libobjc: *) topdir=`echo $(TARGET_SUBDIR)/libobjc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libobjc"; \ - libsrcdir="$$s/libobjc"; \ + module_srcdir=libobjc; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libobjc @@ -38337,12 +40916,13 @@ configure-target-libgo: *) topdir=`echo $(TARGET_SUBDIR)/libgo/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgo"; \ - libsrcdir="$$s/libgo"; \ + module_srcdir=libgo; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libgo @@ -38794,12 +41374,13 @@ configure-target-libtermcap: *) topdir=`echo $(TARGET_SUBDIR)/libtermcap/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libtermcap"; \ - libsrcdir="$$s/libtermcap"; \ + module_srcdir=libtermcap; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libtermcap @@ -39186,12 +41767,13 @@ configure-target-winsup: *) topdir=`echo $(TARGET_SUBDIR)/winsup/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/winsup"; \ - libsrcdir="$$s/winsup"; \ + module_srcdir=winsup; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-winsup @@ -39643,12 +42225,13 @@ configure-target-libgloss: *) topdir=`echo $(TARGET_SUBDIR)/libgloss/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgloss"; \ - libsrcdir="$$s/libgloss"; \ + module_srcdir=libgloss; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libgloss @@ -40095,12 +42678,13 @@ configure-target-libffi: *) topdir=`echo $(TARGET_SUBDIR)/libffi/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libffi"; \ - libsrcdir="$$s/libffi"; \ + module_srcdir=libffi; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libffi @@ -40542,12 +43126,13 @@ configure-target-libjava: *) topdir=`echo $(TARGET_SUBDIR)/libjava/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libjava"; \ - libsrcdir="$$s/libjava"; \ + module_srcdir=libjava; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} $(EXTRA_CONFIGARGS_LIBJAVA) \ + --target=${target_alias} $(EXTRA_CONFIGARGS_LIBJAVA) \ || exit 1 @endif target-libjava @@ -40999,12 +43584,13 @@ configure-target-zlib: *) topdir=`echo $(TARGET_SUBDIR)/zlib/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/zlib"; \ - libsrcdir="$$s/zlib"; \ + module_srcdir=zlib; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-zlib @@ -41456,12 +44042,13 @@ configure-target-boehm-gc: *) topdir=`echo $(TARGET_SUBDIR)/boehm-gc/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/boehm-gc"; \ - libsrcdir="$$s/boehm-gc"; \ + module_srcdir=boehm-gc; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-boehm-gc @@ -41913,12 +44500,13 @@ configure-target-rda: *) topdir=`echo $(TARGET_SUBDIR)/rda/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/rda"; \ - libsrcdir="$$s/rda"; \ + module_srcdir=rda; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-rda @@ -42370,12 +44958,13 @@ configure-target-libada: *) topdir=`echo $(TARGET_SUBDIR)/libada/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libada"; \ - libsrcdir="$$s/libada"; \ + module_srcdir=libada; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libada @@ -42826,12 +45415,13 @@ configure-target-libgomp: *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgomp"; \ - libsrcdir="$$s/libgomp"; \ + module_srcdir=libgomp; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libgomp @@ -42872,11 +45462,12 @@ configure-stage1-target-libgomp: *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgomp"; \ - libsrcdir="$$s/libgomp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgomp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ + \ $(STAGE1_CONFIGURE_FLAGS) @endif target-libgomp-bootstrap @@ -42916,12 +45507,12 @@ configure-stage2-target-libgomp: *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgomp"; \ - libsrcdir="$$s/libgomp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgomp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE2_CONFIGURE_FLAGS) @endif target-libgomp-bootstrap @@ -42961,12 +45552,12 @@ configure-stage3-target-libgomp: *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgomp"; \ - libsrcdir="$$s/libgomp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgomp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE3_CONFIGURE_FLAGS) @endif target-libgomp-bootstrap @@ -43006,12 +45597,12 @@ configure-stage4-target-libgomp: *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgomp"; \ - libsrcdir="$$s/libgomp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgomp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGE4_CONFIGURE_FLAGS) @endif target-libgomp-bootstrap @@ -43051,12 +45642,12 @@ configure-stageprofile-target-libgomp: *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgomp"; \ - libsrcdir="$$s/libgomp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgomp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEprofile_CONFIGURE_FLAGS) @endif target-libgomp-bootstrap @@ -43096,12 +45687,12 @@ configure-stagefeedback-target-libgomp: *) topdir=`echo $(TARGET_SUBDIR)/libgomp/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libgomp"; \ - libsrcdir="$$s/libgomp"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=libgomp; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - --with-build-libsubdir=$(HOST_SUBDIR) \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ $(STAGEfeedback_CONFIGURE_FLAGS) @endif target-libgomp-bootstrap @@ -43801,12 +46392,13 @@ configure-target-libitm: *) topdir=`echo $(TARGET_SUBDIR)/libitm/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libitm"; \ - libsrcdir="$$s/libitm"; \ + module_srcdir=libitm; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libitm @@ -44258,12 +46850,13 @@ configure-target-libatomic: *) topdir=`echo $(TARGET_SUBDIR)/libatomic/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/libatomic"; \ - libsrcdir="$$s/libatomic"; \ + module_srcdir=libatomic; \ rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file $(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ + --target=${target_alias} \ || exit 1 @endif target-libatomic @@ -44899,11 +47492,6 @@ stage1-start:: mkdir stage1-isl; \ mv stage1-isl isl @endif isl -@if cloog - @cd $(HOST_SUBDIR); [ -d stage1-cloog ] || \ - mkdir stage1-cloog; \ - mv stage1-cloog cloog -@endif cloog @if libelf @cd $(HOST_SUBDIR); [ -d stage1-libelf ] || \ mkdir stage1-libelf; \ @@ -44944,6 +47532,11 @@ stage1-start:: mkdir stage1-libiberty; \ mv stage1-libiberty libiberty @endif libiberty +@if libiberty-linker-plugin + @cd $(HOST_SUBDIR); [ -d stage1-libiberty-linker-plugin ] || \ + mkdir stage1-libiberty-linker-plugin; \ + mv stage1-libiberty-linker-plugin libiberty-linker-plugin +@endif libiberty-linker-plugin @if zlib @cd $(HOST_SUBDIR); [ -d stage1-zlib ] || \ mkdir stage1-zlib; \ @@ -45009,11 +47602,6 @@ stage1-end:: cd $(HOST_SUBDIR); mv isl stage1-isl ; \ fi @endif isl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - 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 ; \ @@ -45054,6 +47642,11 @@ stage1-end:: cd $(HOST_SUBDIR); mv libiberty stage1-libiberty ; \ fi @endif libiberty +@if libiberty-linker-plugin + @if test -d $(HOST_SUBDIR)/libiberty-linker-plugin ; then \ + cd $(HOST_SUBDIR); mv libiberty-linker-plugin stage1-libiberty-linker-plugin ; \ + fi +@endif libiberty-linker-plugin @if zlib @if test -d $(HOST_SUBDIR)/zlib ; then \ cd $(HOST_SUBDIR); mv zlib stage1-zlib ; \ @@ -45172,12 +47765,6 @@ stage2-start:: mv stage2-isl isl ; \ mv stage1-isl prev-isl || test -f stage1-lean @endif isl -@if cloog - @cd $(HOST_SUBDIR); [ -d stage2-cloog ] || \ - mkdir stage2-cloog; \ - 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; \ @@ -45226,6 +47813,12 @@ stage2-start:: mv stage2-libiberty libiberty ; \ mv stage1-libiberty prev-libiberty || test -f stage1-lean @endif libiberty +@if libiberty-linker-plugin + @cd $(HOST_SUBDIR); [ -d stage2-libiberty-linker-plugin ] || \ + mkdir stage2-libiberty-linker-plugin; \ + mv stage2-libiberty-linker-plugin libiberty-linker-plugin ; \ + mv stage1-libiberty-linker-plugin prev-libiberty-linker-plugin || test -f stage1-lean +@endif libiberty-linker-plugin @if zlib @cd $(HOST_SUBDIR); [ -d stage2-zlib ] || \ mkdir stage2-zlib; \ @@ -45304,12 +47897,6 @@ stage2-end:: mv prev-isl stage1-isl ; : ; \ fi @endif isl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stage2-cloog ; \ - mv prev-cloog stage1-cloog ; : ; \ - fi -@endif cloog @if libelf @if test -d $(HOST_SUBDIR)/libelf ; then \ cd $(HOST_SUBDIR); mv libelf stage2-libelf ; \ @@ -45358,6 +47945,12 @@ stage2-end:: mv prev-libiberty stage1-libiberty ; : ; \ fi @endif libiberty +@if libiberty-linker-plugin + @if test -d $(HOST_SUBDIR)/libiberty-linker-plugin ; then \ + cd $(HOST_SUBDIR); mv libiberty-linker-plugin stage2-libiberty-linker-plugin ; \ + mv prev-libiberty-linker-plugin stage1-libiberty-linker-plugin ; : ; \ + fi +@endif libiberty-linker-plugin @if zlib @if test -d $(HOST_SUBDIR)/zlib ; then \ cd $(HOST_SUBDIR); mv zlib stage2-zlib ; \ @@ -45502,12 +48095,6 @@ stage3-start:: mv stage3-isl isl ; \ mv stage2-isl prev-isl || test -f stage2-lean @endif isl -@if cloog - @cd $(HOST_SUBDIR); [ -d stage3-cloog ] || \ - mkdir stage3-cloog; \ - 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; \ @@ -45556,6 +48143,12 @@ stage3-start:: mv stage3-libiberty libiberty ; \ mv stage2-libiberty prev-libiberty || test -f stage2-lean @endif libiberty +@if libiberty-linker-plugin + @cd $(HOST_SUBDIR); [ -d stage3-libiberty-linker-plugin ] || \ + mkdir stage3-libiberty-linker-plugin; \ + mv stage3-libiberty-linker-plugin libiberty-linker-plugin ; \ + mv stage2-libiberty-linker-plugin prev-libiberty-linker-plugin || test -f stage2-lean +@endif libiberty-linker-plugin @if zlib @cd $(HOST_SUBDIR); [ -d stage3-zlib ] || \ mkdir stage3-zlib; \ @@ -45634,12 +48227,6 @@ stage3-end:: mv prev-isl stage2-isl ; : ; \ fi @endif isl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stage3-cloog ; \ - mv prev-cloog stage2-cloog ; : ; \ - fi -@endif cloog @if libelf @if test -d $(HOST_SUBDIR)/libelf ; then \ cd $(HOST_SUBDIR); mv libelf stage3-libelf ; \ @@ -45688,6 +48275,12 @@ stage3-end:: mv prev-libiberty stage2-libiberty ; : ; \ fi @endif libiberty +@if libiberty-linker-plugin + @if test -d $(HOST_SUBDIR)/libiberty-linker-plugin ; then \ + cd $(HOST_SUBDIR); mv libiberty-linker-plugin stage3-libiberty-linker-plugin ; \ + mv prev-libiberty-linker-plugin stage2-libiberty-linker-plugin ; : ; \ + fi +@endif libiberty-linker-plugin @if zlib @if test -d $(HOST_SUBDIR)/zlib ; then \ cd $(HOST_SUBDIR); mv zlib stage3-zlib ; \ @@ -45888,12 +48481,6 @@ stage4-start:: mv stage4-isl isl ; \ mv stage3-isl prev-isl || test -f stage3-lean @endif isl -@if cloog - @cd $(HOST_SUBDIR); [ -d stage4-cloog ] || \ - mkdir stage4-cloog; \ - 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; \ @@ -45942,6 +48529,12 @@ stage4-start:: mv stage4-libiberty libiberty ; \ mv stage3-libiberty prev-libiberty || test -f stage3-lean @endif libiberty +@if libiberty-linker-plugin + @cd $(HOST_SUBDIR); [ -d stage4-libiberty-linker-plugin ] || \ + mkdir stage4-libiberty-linker-plugin; \ + mv stage4-libiberty-linker-plugin libiberty-linker-plugin ; \ + mv stage3-libiberty-linker-plugin prev-libiberty-linker-plugin || test -f stage3-lean +@endif libiberty-linker-plugin @if zlib @cd $(HOST_SUBDIR); [ -d stage4-zlib ] || \ mkdir stage4-zlib; \ @@ -46020,12 +48613,6 @@ stage4-end:: mv prev-isl stage3-isl ; : ; \ fi @endif isl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stage4-cloog ; \ - mv prev-cloog stage3-cloog ; : ; \ - fi -@endif cloog @if libelf @if test -d $(HOST_SUBDIR)/libelf ; then \ cd $(HOST_SUBDIR); mv libelf stage4-libelf ; \ @@ -46074,6 +48661,12 @@ stage4-end:: mv prev-libiberty stage3-libiberty ; : ; \ fi @endif libiberty +@if libiberty-linker-plugin + @if test -d $(HOST_SUBDIR)/libiberty-linker-plugin ; then \ + cd $(HOST_SUBDIR); mv libiberty-linker-plugin stage4-libiberty-linker-plugin ; \ + mv prev-libiberty-linker-plugin stage3-libiberty-linker-plugin ; : ; \ + fi +@endif libiberty-linker-plugin @if zlib @if test -d $(HOST_SUBDIR)/zlib ; then \ cd $(HOST_SUBDIR); mv zlib stage4-zlib ; \ @@ -46262,12 +48855,6 @@ stageprofile-start:: mv stageprofile-isl isl ; \ mv stage1-isl prev-isl || test -f stage1-lean @endif isl -@if cloog - @cd $(HOST_SUBDIR); [ -d stageprofile-cloog ] || \ - mkdir stageprofile-cloog; \ - 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; \ @@ -46316,6 +48903,12 @@ stageprofile-start:: mv stageprofile-libiberty libiberty ; \ mv stage1-libiberty prev-libiberty || test -f stage1-lean @endif libiberty +@if libiberty-linker-plugin + @cd $(HOST_SUBDIR); [ -d stageprofile-libiberty-linker-plugin ] || \ + mkdir stageprofile-libiberty-linker-plugin; \ + mv stageprofile-libiberty-linker-plugin libiberty-linker-plugin ; \ + mv stage1-libiberty-linker-plugin prev-libiberty-linker-plugin || test -f stage1-lean +@endif libiberty-linker-plugin @if zlib @cd $(HOST_SUBDIR); [ -d stageprofile-zlib ] || \ mkdir stageprofile-zlib; \ @@ -46394,12 +48987,6 @@ stageprofile-end:: mv prev-isl stage1-isl ; : ; \ fi @endif isl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stageprofile-cloog ; \ - mv prev-cloog stage1-cloog ; : ; \ - fi -@endif cloog @if libelf @if test -d $(HOST_SUBDIR)/libelf ; then \ cd $(HOST_SUBDIR); mv libelf stageprofile-libelf ; \ @@ -46448,6 +49035,12 @@ stageprofile-end:: mv prev-libiberty stage1-libiberty ; : ; \ fi @endif libiberty +@if libiberty-linker-plugin + @if test -d $(HOST_SUBDIR)/libiberty-linker-plugin ; then \ + cd $(HOST_SUBDIR); mv libiberty-linker-plugin stageprofile-libiberty-linker-plugin ; \ + mv prev-libiberty-linker-plugin stage1-libiberty-linker-plugin ; : ; \ + fi +@endif libiberty-linker-plugin @if zlib @if test -d $(HOST_SUBDIR)/zlib ; then \ cd $(HOST_SUBDIR); mv zlib stageprofile-zlib ; \ @@ -46569,12 +49162,6 @@ stagefeedback-start:: mv stagefeedback-isl isl ; \ mv stageprofile-isl prev-isl || test -f stageprofile-lean @endif isl -@if cloog - @cd $(HOST_SUBDIR); [ -d stagefeedback-cloog ] || \ - mkdir stagefeedback-cloog; \ - 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; \ @@ -46623,6 +49210,12 @@ stagefeedback-start:: mv stagefeedback-libiberty libiberty ; \ mv stageprofile-libiberty prev-libiberty || test -f stageprofile-lean @endif libiberty +@if libiberty-linker-plugin + @cd $(HOST_SUBDIR); [ -d stagefeedback-libiberty-linker-plugin ] || \ + mkdir stagefeedback-libiberty-linker-plugin; \ + mv stagefeedback-libiberty-linker-plugin libiberty-linker-plugin ; \ + mv stageprofile-libiberty-linker-plugin prev-libiberty-linker-plugin || test -f stageprofile-lean +@endif libiberty-linker-plugin @if zlib @cd $(HOST_SUBDIR); [ -d stagefeedback-zlib ] || \ mkdir stagefeedback-zlib; \ @@ -46701,12 +49294,6 @@ stagefeedback-end:: mv prev-isl stageprofile-isl ; : ; \ fi @endif isl -@if cloog - @if test -d $(HOST_SUBDIR)/cloog ; then \ - cd $(HOST_SUBDIR); mv cloog stagefeedback-cloog ; \ - mv prev-cloog stageprofile-cloog ; : ; \ - fi -@endif cloog @if libelf @if test -d $(HOST_SUBDIR)/libelf ; then \ cd $(HOST_SUBDIR); mv libelf stagefeedback-libelf ; \ @@ -46755,6 +49342,12 @@ stagefeedback-end:: mv prev-libiberty stageprofile-libiberty ; : ; \ fi @endif libiberty +@if libiberty-linker-plugin + @if test -d $(HOST_SUBDIR)/libiberty-linker-plugin ; then \ + cd $(HOST_SUBDIR); mv libiberty-linker-plugin stagefeedback-libiberty-linker-plugin ; \ + mv prev-libiberty-linker-plugin stageprofile-libiberty-linker-plugin ; : ; \ + fi +@endif libiberty-linker-plugin @if zlib @if test -d $(HOST_SUBDIR)/zlib ; then \ cd $(HOST_SUBDIR); mv zlib stagefeedback-zlib ; \ @@ -46886,6 +49479,12 @@ configure-stage3-target-libsanitizer: maybe-all-stage3-gcc configure-stage4-target-libsanitizer: maybe-all-stage4-gcc configure-stageprofile-target-libsanitizer: maybe-all-stageprofile-gcc configure-stagefeedback-target-libsanitizer: maybe-all-stagefeedback-gcc +configure-stage1-target-libmpx: maybe-all-stage1-gcc +configure-stage2-target-libmpx: maybe-all-stage2-gcc +configure-stage3-target-libmpx: maybe-all-stage3-gcc +configure-stage4-target-libmpx: maybe-all-stage4-gcc +configure-stageprofile-target-libmpx: maybe-all-stageprofile-gcc +configure-stagefeedback-target-libmpx: maybe-all-stagefeedback-gcc configure-stage1-target-libvtv: maybe-all-stage1-gcc configure-stage2-target-libvtv: maybe-all-stage2-gcc configure-stage3-target-libvtv: maybe-all-stage3-gcc @@ -46893,6 +49492,7 @@ configure-stage4-target-libvtv: maybe-all-stage4-gcc configure-stageprofile-target-libvtv: maybe-all-stageprofile-gcc configure-stagefeedback-target-libvtv: maybe-all-stagefeedback-gcc configure-target-libcilkrts: stage_last +configure-target-liboffloadmic: stage_last configure-target-libssp: stage_last configure-target-newlib: stage_last configure-stage1-target-libgcc: maybe-all-stage1-gcc @@ -46928,8 +49528,10 @@ configure-target-libatomic: stage_last @if gcc-no-bootstrap configure-target-libstdc++-v3: maybe-all-gcc configure-target-libsanitizer: maybe-all-gcc +configure-target-libmpx: maybe-all-gcc configure-target-libvtv: maybe-all-gcc configure-target-libcilkrts: maybe-all-gcc +configure-target-liboffloadmic: maybe-all-gcc configure-target-libssp: maybe-all-gcc configure-target-newlib: maybe-all-gcc configure-target-libgcc: maybe-all-gcc @@ -46977,6 +49579,7 @@ all-build-flex: maybe-all-build-m4 all-build-libiberty: maybe-all-build-texinfo all-build-m4: maybe-all-build-texinfo all-build-fixincludes: maybe-all-build-libiberty +all-build-libcpp: maybe-all-build-libiberty configure-gcc: maybe-configure-intl configure-stage1-gcc: maybe-configure-stage1-intl @@ -46993,6 +49596,30 @@ configure-stage3-gcc: maybe-all-stage3-gmp configure-stage4-gcc: maybe-all-stage4-gmp configure-stageprofile-gcc: maybe-all-stageprofile-gmp configure-stagefeedback-gcc: maybe-all-stagefeedback-gmp +configure-gcc: maybe-all-mpfr + +configure-stage1-gcc: maybe-all-stage1-mpfr +configure-stage2-gcc: maybe-all-stage2-mpfr +configure-stage3-gcc: maybe-all-stage3-mpfr +configure-stage4-gcc: maybe-all-stage4-mpfr +configure-stageprofile-gcc: maybe-all-stageprofile-mpfr +configure-stagefeedback-gcc: maybe-all-stagefeedback-mpfr +configure-gcc: maybe-all-mpc + +configure-stage1-gcc: maybe-all-stage1-mpc +configure-stage2-gcc: maybe-all-stage2-mpc +configure-stage3-gcc: maybe-all-stage3-mpc +configure-stage4-gcc: maybe-all-stage4-mpc +configure-stageprofile-gcc: maybe-all-stageprofile-mpc +configure-stagefeedback-gcc: maybe-all-stagefeedback-mpc +configure-gcc: maybe-all-isl + +configure-stage1-gcc: maybe-all-stage1-isl +configure-stage2-gcc: maybe-all-stage2-isl +configure-stage3-gcc: maybe-all-stage3-isl +configure-stage4-gcc: maybe-all-stage4-isl +configure-stageprofile-gcc: maybe-all-stageprofile-isl +configure-stagefeedback-gcc: maybe-all-stagefeedback-isl configure-gcc: maybe-all-lto-plugin configure-stage1-gcc: maybe-all-stage1-lto-plugin @@ -47073,14 +49700,14 @@ all-stage3-gcc: maybe-all-stage3-mpc all-stage4-gcc: maybe-all-stage4-mpc all-stageprofile-gcc: maybe-all-stageprofile-mpc all-stagefeedback-gcc: maybe-all-stagefeedback-mpc -all-gcc: maybe-all-cloog - -all-stage1-gcc: maybe-all-stage1-cloog -all-stage2-gcc: maybe-all-stage2-cloog -all-stage3-gcc: maybe-all-stage3-cloog -all-stage4-gcc: maybe-all-stage4-cloog -all-stageprofile-gcc: maybe-all-stageprofile-cloog -all-stagefeedback-gcc: maybe-all-stagefeedback-cloog +all-gcc: maybe-all-isl + +all-stage1-gcc: maybe-all-stage1-isl +all-stage2-gcc: maybe-all-stage2-isl +all-stage3-gcc: maybe-all-stage3-isl +all-stage4-gcc: maybe-all-stage4-isl +all-stageprofile-gcc: maybe-all-stageprofile-isl +all-stagefeedback-gcc: maybe-all-stagefeedback-isl all-gcc: maybe-all-build-texinfo all-stage1-gcc: maybe-all-build-texinfo @@ -47121,6 +49748,14 @@ all-stage3-gcc: maybe-all-build-fixincludes all-stage4-gcc: maybe-all-build-fixincludes all-stageprofile-gcc: maybe-all-build-fixincludes all-stagefeedback-gcc: maybe-all-build-fixincludes +all-gcc: maybe-all-build-libcpp + +all-stage1-gcc: maybe-all-build-libcpp +all-stage2-gcc: maybe-all-build-libcpp +all-stage3-gcc: maybe-all-build-libcpp +all-stage4-gcc: maybe-all-build-libcpp +all-stageprofile-gcc: maybe-all-build-libcpp +all-stagefeedback-gcc: maybe-all-build-libcpp all-gcc: maybe-all-zlib all-stage1-gcc: maybe-all-stage1-zlib @@ -47263,6 +49898,17 @@ 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-lto-plugin: maybe-all-libiberty-linker-plugin + +all-stage1-lto-plugin: maybe-all-stage1-libiberty-linker-plugin +all-stage2-lto-plugin: maybe-all-stage2-libiberty-linker-plugin +all-stage3-lto-plugin: maybe-all-stage3-libiberty-linker-plugin +all-stage4-lto-plugin: maybe-all-stage4-libiberty-linker-plugin +all-stageprofile-lto-plugin: maybe-all-stageprofile-libiberty-linker-plugin +all-stagefeedback-lto-plugin: maybe-all-stagefeedback-libiberty-linker-plugin +configure-libcc1: maybe-configure-gcc +all-libcc1: maybe-all-gcc +all-gotools: maybe-all-target-libgo all-utils: maybe-all-libiberty configure-mpfr: maybe-all-gmp @@ -47288,22 +49934,6 @@ configure-stage3-isl: maybe-all-stage3-gmp configure-stage4-isl: maybe-all-stage4-gmp configure-stageprofile-isl: maybe-all-stageprofile-gmp configure-stagefeedback-isl: maybe-all-stagefeedback-gmp -configure-cloog: maybe-all-isl - -configure-stage1-cloog: maybe-all-stage1-isl -configure-stage2-cloog: maybe-all-stage2-isl -configure-stage3-cloog: maybe-all-stage3-isl -configure-stage4-cloog: maybe-all-stage4-isl -configure-stageprofile-cloog: maybe-all-stageprofile-isl -configure-stagefeedback-cloog: maybe-all-stagefeedback-isl -configure-cloog: maybe-all-gmp - -configure-stage1-cloog: maybe-all-stage1-gmp -configure-stage2-cloog: maybe-all-stage2-gmp -configure-stage3-cloog: maybe-all-stage3-gmp -configure-stage4-cloog: maybe-all-stage4-gmp -configure-stageprofile-cloog: maybe-all-stageprofile-gmp -configure-stagefeedback-cloog: maybe-all-stagefeedback-gmp configure-gdb: maybe-all-intl configure-gdb: maybe-configure-sim configure-gdb: maybe-all-bfd @@ -47353,6 +49983,14 @@ all-stage3-bfd: maybe-all-stage3-intl all-stage4-bfd: maybe-all-stage4-intl all-stageprofile-bfd: maybe-all-stageprofile-intl all-stagefeedback-bfd: maybe-all-stagefeedback-intl +all-bfd: maybe-all-zlib + +all-stage1-bfd: maybe-all-stage1-zlib +all-stage2-bfd: maybe-all-stage2-zlib +all-stage3-bfd: maybe-all-stage3-zlib +all-stage4-bfd: maybe-all-stage4-zlib +all-stageprofile-bfd: maybe-all-stageprofile-zlib +all-stagefeedback-bfd: maybe-all-stagefeedback-zlib configure-opcodes: configure-libiberty configure-stage1-opcodes: configure-stage1-libiberty @@ -47720,6 +50358,7 @@ 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 +configure-target-liboffloadmic: maybe-configure-target-libgomp configure-target-libsanitizer: maybe-all-target-libstdc++-v3 configure-stage1-target-libsanitizer: maybe-all-stage1-target-libstdc++-v3 @@ -47744,6 +50383,7 @@ 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-liboffloadmic: maybe-all-target-libgomp install-target-libgo: maybe-install-target-libatomic install-target-libgfortran: maybe-install-target-libquadmath install-target-libgfortran: maybe-install-target-libgcc @@ -47753,6 +50393,8 @@ install-target-libvtv: maybe-install-target-libstdc++-v3 install-target-libvtv: maybe-install-target-libgcc install-target-libcilkrts: maybe-install-target-libstdc++-v3 install-target-libcilkrts: maybe-install-target-libgcc +install-target-liboffloadmic: maybe-install-target-libstdc++-v3 +install-target-liboffloadmic: maybe-install-target-libgcc install-target-libjava: maybe-install-target-libgcc install-target-libitm: maybe-install-target-libgcc install-target-libobjc: maybe-install-target-libgcc @@ -47782,6 +50424,12 @@ configure-stage3-target-libsanitizer: maybe-all-stage3-target-libgcc configure-stage4-target-libsanitizer: maybe-all-stage4-target-libgcc configure-stageprofile-target-libsanitizer: maybe-all-stageprofile-target-libgcc configure-stagefeedback-target-libsanitizer: maybe-all-stagefeedback-target-libgcc +configure-stage1-target-libmpx: maybe-all-stage1-target-libgcc +configure-stage2-target-libmpx: maybe-all-stage2-target-libgcc +configure-stage3-target-libmpx: maybe-all-stage3-target-libgcc +configure-stage4-target-libmpx: maybe-all-stage4-target-libgcc +configure-stageprofile-target-libmpx: maybe-all-stageprofile-target-libgcc +configure-stagefeedback-target-libmpx: maybe-all-stagefeedback-target-libgcc configure-stage1-target-libvtv: maybe-all-stage1-target-libgcc configure-stage2-target-libvtv: maybe-all-stage2-target-libgcc configure-stage3-target-libvtv: maybe-all-stage3-target-libgcc @@ -47799,8 +50447,10 @@ configure-stagefeedback-target-libgomp: maybe-all-stagefeedback-target-libgcc @if gcc-no-bootstrap configure-target-libstdc++-v3: maybe-all-target-libgcc configure-target-libsanitizer: maybe-all-target-libgcc +configure-target-libmpx: maybe-all-target-libgcc configure-target-libvtv: maybe-all-target-libgcc configure-target-libcilkrts: maybe-all-target-libgcc +configure-target-liboffloadmic: maybe-all-target-libgcc configure-target-libssp: maybe-all-target-libgcc configure-target-newlib: maybe-all-target-libgcc configure-target-libbacktrace: maybe-all-target-libgcc @@ -47827,11 +50477,16 @@ configure-target-libstdc++-v3: maybe-all-target-newlib maybe-all-target-libgloss configure-target-libsanitizer: maybe-all-target-newlib maybe-all-target-libgloss +configure-target-libmpx: maybe-all-target-newlib maybe-all-target-libgloss + configure-target-libvtv: maybe-all-target-newlib maybe-all-target-libgloss configure-target-libcilkrts: maybe-all-target-newlib maybe-all-target-libgloss configure-target-libcilkrts: maybe-all-target-libstdc++-v3 +configure-target-liboffloadmic: maybe-all-target-newlib maybe-all-target-libgloss +configure-target-liboffloadmic: maybe-all-target-libstdc++-v3 + configure-target-libssp: maybe-all-target-newlib maybe-all-target-libgloss diff --git a/Makefile.tpl b/Makefile.tpl index f9bbbde..5d2cea2 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -223,9 +223,8 @@ HOST_EXPORTS = \ HOST_LIBS="$(STAGE1_LIBS)"; export HOST_LIBS; \ GMPLIBS="$(HOST_GMPLIBS)"; export GMPLIBS; \ GMPINC="$(HOST_GMPINC)"; export GMPINC; \ + ISLLIBS="$(HOST_ISLLIBS)"; export ISLLIBS; \ ISLINC="$(HOST_ISLINC)"; export ISLINC; \ - CLOOGLIBS="$(HOST_CLOOGLIBS)"; export CLOOGLIBS; \ - CLOOGINC="$(HOST_CLOOGINC)"; export CLOOGINC; \ LIBELFLIBS="$(HOST_LIBELFLIBS)" ; export LIBELFLIBS; \ LIBELFINC="$(HOST_LIBELFINC)" ; export LIBELFINC; \ @if gcc-bootstrap @@ -260,6 +259,7 @@ POSTSTAGE1_HOST_EXPORTS = \ $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ $(POSTSTAGE1_CXX_EXPORT) \ + $(LTO_EXPORTS) \ GNATBIND="$$r/$(HOST_SUBDIR)/prev-gcc/gnatbind"; export GNATBIND; \ LDFLAGS="$(POSTSTAGE1_LDFLAGS) $(BOOT_LDFLAGS)"; export LDFLAGS; \ HOST_LIBS="$(POSTSTAGE1_LIBS)"; export HOST_LIBS; @@ -315,12 +315,9 @@ HOST_GMPLIBS = @gmplibs@ HOST_GMPINC = @gmpinc@ # Where to find ISL +HOST_ISLLIBS = @isllibs@ HOST_ISLINC = @islinc@ -# Where to find CLOOG -HOST_CLOOGLIBS = @clooglibs@ -HOST_CLOOGINC = @clooginc@ - # Where to find libelf HOST_LIBELFLIBS = @libelflibs@ HOST_LIBELFINC = @libelfinc@ @@ -634,8 +631,17 @@ POSTSTAGE1_FLAGS_TO_PASS = \ GNATBIND="$${GNATBIND}" \ LDFLAGS="$${LDFLAGS}" \ HOST_LIBS="$${HOST_LIBS}" \ + $(LTO_FLAGS_TO_PASS) \ "`echo 'ADAFLAGS=$(BOOT_ADAFLAGS)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" +@if gcc-bootstrap +EXTRA_HOST_EXPORTS = if [ $(current_stage) != stage1 ]; then \ + $(POSTSTAGE1_HOST_EXPORTS) \ + fi ; + +EXTRA_BOOTSTRAP_FLAGS = CC="$$CC" CXX="$$CXX" LDFLAGS="$$LDFLAGS" +@endif gcc-bootstrap + # Flags to pass down to makes which are built with the target environment. # The double $ decreases the length of the command line; those variables # are set in BASE_FLAGS_TO_PASS, and the sub-make will expand them. The @@ -646,7 +652,9 @@ EXTRA_TARGET_FLAGS = \ 'AS=$(COMPILER_AS_FOR_TARGET)' \ 'CC=$$(CC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ 'CFLAGS=$$(CFLAGS_FOR_TARGET)' \ - 'CXX=$$(CXX_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'CXX=$$(CXX_FOR_TARGET) -B$$r/$$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \ + -B$$r/$$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \ + $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \ 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ 'GCJ=$$(GCJ_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ @@ -665,6 +673,8 @@ EXTRA_TARGET_FLAGS = \ 'WINDRES=$$(WINDRES_FOR_TARGET)' \ 'WINDMC=$$(WINDMC_FOR_TARGET)' \ 'XGCC_FLAGS_FOR_TARGET=$(XGCC_FLAGS_FOR_TARGET)' \ + 'STAGE1_LDFLAGS=$$(POSTSTAGE1_LDFLAGS)' \ + 'STAGE1_LIBS=$$(POSTSTAGE1_LIBS)' \ "TFLAGS=$$TFLAGS" TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) @@ -867,6 +877,18 @@ mail-report-with-warnings.log: warning.log chmod +x $@ echo If you really want to send e-mail, run ./$@ now +# Local Vim config + +$(srcdir)/.local.vimrc: + $(LN_S) $(srcdir)/contrib/vimrc $@ + +$(srcdir)/.lvimrc: + $(LN_S) $(srcdir)/contrib/vimrc $@ + +vimrc: $(srcdir)/.local.vimrc $(srcdir)/.lvimrc + +.PHONY: vimrc + # Installation targets. .PHONY: install uninstall @@ -1006,12 +1028,13 @@ configure-[+prefix+][+module+]: [+ IF bootstrap +][+ ELSE +] *) topdir=`echo [+subdir+]/[+module+]/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/[+module+]"; \ - libsrcdir="$$s/[+module+]"; \ + module_srcdir=[+? module_srcdir (get "module_srcdir") (get "module")+]; \ [+ IF no-config-site +]rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file [+ ENDIF +]$(SHELL) $${libsrcdir}/configure \ + CONFIG_SITE=no-such-file [+ ENDIF +]$(SHELL) \ + $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ [+args+] --build=${build_alias} --host=[+host_alias+] \ - --target=[+target_alias+] $${srcdiroption} [+extra_configure_flags+] \ + --target=[+target_alias+] [+extra_configure_flags+] \ || exit 1 @endif [+prefix+][+module+] @@ -1059,12 +1082,12 @@ configure-stage[+id+]-[+prefix+][+module+]: *) topdir=`echo [+subdir+]/[+module+]/ | \ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ esac; \ - srcdiroption="--srcdir=$${topdir}/[+module+]"; \ - libsrcdir="$$s/[+module+]"; \ - $(SHELL) $${libsrcdir}/configure \ + module_srcdir=[+? module_srcdir (get "module_srcdir") (get "module")+]; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ [+args+] --build=${build_alias} --host=[+host_alias+] \ - --target=[+target_alias+] $${srcdiroption} [+ IF prev +]\ - --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +]\ + --target=[+target_alias+] \ + [+ IF prev +] --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +] \ $(STAGE[+id+]_CONFIGURE_FLAGS)[+ IF extra_configure_flags +] \ [+extra_configure_flags+][+ ENDIF extra_configure_flags +] @endif [+prefix+][+module+]-bootstrap @@ -1188,18 +1211,22 @@ check-[+module+]: @if [ '$(host)' = '$(target)' ] ; then \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) [+ IF bootstrap +]$(EXTRA_HOST_EXPORTS)[+ + ENDIF bootstrap +] \ (cd $(HOST_SUBDIR)/[+module+] && \ - $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] check); \ + $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+][+ + IF bootstrap +] $(EXTRA_BOOTSTRAP_FLAGS)[+ ENDIF bootstrap +] check) fi [+ ELSE check +] check-[+module+]: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(HOST_EXPORTS) \ + $(HOST_EXPORTS) [+ IF bootstrap +]$(EXTRA_HOST_EXPORTS)[+ + ENDIF bootstrap +] \ (cd $(HOST_SUBDIR)/[+module+] && \ - $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] check) + $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+][+ + IF bootstrap +] $(EXTRA_BOOTSTRAP_FLAGS)[+ ENDIF bootstrap +] check) [+ ENDIF no_check +] @endif [+module+] diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 9918dbd..44b54d9 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,7 +1,2166 @@ -2015-01-13 Joel Brobecker +2015-07-28 Iain Buclaw + + * configure.in: Add asprintf and vasprintf to AC_CHECK_DECLS. + * config.in, configure: Regenerate. + +2015-07-06 Joel Brobecker * development.sh (development): Set to false. +2015-07-05 Richard Sandiford + + * elf64-ppc.c (toc_adjusting_stub_needed): Use the symbol value + plus addend rather than the original st_value when looking up + entries in opd->adjust. + +2015-07-03 Kai Tietz + Nick Clifton + + PR ld/11539 + * coffcode.h (coff_bfd_gc_sections): Define default + to bfd_coff_gc_sections function. + (coff_gc_mark_hook_fn): New type. + * coffgen.c (init_reloc_cookie): Copy and adjust coff + related code about gc-sections from elflink.c to here. + (fini_reloc_cookie): Likewise. + (init_reloc_cookie_rels): Likewise. + (fini_reloc_cookie_rels): Likewise. + (init_reloc_cookie_for_section): Likewise. + (fini_reloc_cookie_for_section): Likewise. + (_bfd_coff_gc_mark_hook): Likewise. + (_bfd_coff_gc_mark_rsec): Likewise. + (_bfd_coff_gc_mark_reloc): Likewise. + (_bfd_coff_gc_mark): Likewise. + (_bfd_coff_gc_mark_extra_sections): Likewise. + (coff_gc_sweep_symbol_info): Likewise. + (coff_gc_sweep_symbol): Likewise. + (gc_sweep_hook_fn): Likewise. + (coff_gc_sweep): Likewise. + (bfd_coff_gc_sections): Likewise. + (_bfd_coff_gc_keep): Likewise. + * libcoff-in.h (coff_reloc_cookie): New struct. + (bfd_coff_gc_sections): New prototype. + * libcoff.h: Regenerate. + +2015-07-01 Sandra Loosemore + Cesar Philippidis + + * bfd-in2.h: Regenerated. + * elf32-nios2.c (elf_nios2_howto_table_rel): Rename to... + (elf_nios2_r1_howto_table_rel): This. + (elf_nios2_r2_howto_table_rel): New. + (BFD_IS_R2): New. + (lookup_howto): Add ABFD parameter. Adjust to look up in either + the R1 or R2 relocation table, as determined by ABFD. + (nios2_reloc_map): Add R2 relocations. + (nios2_elf32_bfd_reloc_type_lookup): Do lookup using lookup_howto. + Pass it the ABFD parameter. + (nios2_elf32_bfd_reloc_name_lookup): Use ABFD to decide whether to + return an R1 or R2 relocation. + (nios2_elf32_info_to_howto): Do lookup using lookup_howto. + Pass it the ABFD parameter. + (nios2_elf32_do_call26_relocate): Check for alignment on a 4-byte + boundary. + (nios2_elf32_relocate_section): Adjust call to lookup_howto. + * libbfd.h: Regenerated. + * reloc.c (BFD_RELOC_NIOS2_R2_S12): New. + (BFD_RELOC_NIOS2_R2_I10_1_PCREL): New. + (BFD_RELOC_NIOS2_R2_T1I7_1_PCREL): New. + (BFD_RELOC_NIOS2_R2_T1I7_2): New. + (BFD_RELOC_NIOS2_R2_T2I4): New. + (BFD_RELOC_NIOS2_R2_T2I4_1): New. + (BFD_RELOC_NIOS2_R2_T2I4_2): New. + (BFD_RELOC_NIOS2_R2_X1I7_2): New. + (BFD_RELOC_NIOS2_R2_X2L5): New. + (BFD_RELOC_NIOS2_R2_F1I5_2): New. + (BFD_RELOC_NIOS2_R2_L5I4X1): New. + (BFD_RELOC_NIOS2_R2_T1X1I6): New. + (BFD_RELOC_NIOS2_R2_T1X1I6_2): New. + +2015-07-01 Sandra Loosemore + Cesar Philippidis + + * archures.c (bfd_mach_nios2r1, bfd_mach_nios2r2): New. + * bfd-in2.h: Regenerated. + * cpu-nios2.c (nios2_compatible): New. + (N): Use nios2_compatible instead of bfd_default_compatible. + (NIOS2R1_NEXT, NIOS2R2_NEXT): Define. + (arch_info_struct): New. + (bfd_nios2_arch): Chain to NIOS2R1_NEXT. + * elf32-nios2.c (is_nios2_elf): New. + (nios2_elf32_merge_private_bfd_data): New. + (nios2_elf32_object_p): New. + (bfd_elf32_bfd_merge_private_bfd_data): Define. + (elf_backend_object_p): Define. + +2015-07-01 H.J. Lu + + * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Refactor. + +2015-06-30 Nick Clifton + + PR binutils/18570 + * elf-attrs.c (obj_attr_size): Use an unsigned int type for the tag. + (write_obj_attribute): Likewise. + (elf_new_obj_attr): Likewise. + (bfd_elf_get_obj_attr_int): Likewise. + (bfd_elf_add_obj_attr_int): Likewise. + (bfd_elf_add_obj_attr_string): Likewise. + (bfd_elf_add_obj_attr_int_string): Likewise. + (gnu_obj_attrs_arg_type): Likewise. + (_bfd_elf_obj_attrs_arg_type): Likewise. + (_bfd_elf_parse_attributes): Likewise. + (_bfd_elf_merge_unknown_attribute_list): Likewise. + * elf-bfd.h (struct obj_attribute_list): Likewise. + Update prototypes. + +2015-06-28 H.J. Lu + + * bfd-in.h (compressed_debug_section_type): Remove + COMPRESS_DEBUG_ZLIB. + * bfd-in2.h : Regenerated. + +2015-06-26 Matthew Fortune + + * elfxx-mips.c (_bfd_mips_elf_create_dynamic_sections): Use executable + instead of !shared to indicate an application vs shared library. + (_bfd_mips_elf_size_dynamic_sections): Likewise. + (_bfd_mips_elf_finish_dynamic_sections): Handle DT_MIPS_RLD_MAP_REL. + (_bfd_mips_elf_get_target_dtag): Likewise. + +2015-06-25 DJ Delorie + + * elf32-msp430.c (msp430_final_link_relocate): Fix comments. Fix + REL loads to match RELA stores. + +2015-06-25 H.J. Lu + + * elf.c (_bfd_elf_compute_section_file_positions): Don't + initialize sh_size for .shstrtab here. + +2015-06-25 H.J. Lu + + PR gas/18451 + * elf-bfd.h (elf_sym_strtab): New. + (elf_link_hash_table): Add strtabcount, strtabsize and + strtab. + (_bfd_elf_stringtab_init): Removed. + * elf.c (_bfd_elf_stringtab_init): Removed. + (_bfd_elf_compute_section_file_positions): Replace + bfd_strtab_hash/_bfd_elf_stringtab_init/_bfd_stringtab_free/ + _bfd_stringtab_size with + elf_strtab_hash/_bfd_elf_strtab_init/_bfd_elf_strtab_free/ + _bfd_elf_strtab_size. Use _bfd_elf_strtab_add, + _bfd_elf_strtab_finalize and _bfd_elf_strtab_offset to get + st_name. + (swap_out_syms): Likewise. + * elflink.c (elf_final_link_info): Replace bfd_strtab_hash + with elf_strtab_hash. Remove symbuf, symbuf_count, + symbuf_size and shndxbuf_size. + (elf_link_flush_output_syms): Removed. + (elf_link_output_sym): Renamed to ... + (elf_link_output_symstrtab): This. Replace _bfd_stringtab_add + with _bfd_elf_strtab_add. Don't flush symbols to the file nor + swap out symbols. + (elf_link_swap_symbols_out): New. + (elf_link_output_extsym): Replace elf_link_output_sym with + elf_link_output_symstrtab. + (elf_link_input_bfd): Likewise. + (elf_final_link_free): Replace _bfd_stringtab_free with + _bfd_elf_strtab_free. Remove symbuf. + (bfd_elf_final_link): Replace _bfd_elf_stringtab_init with + _bfd_elf_strtab_init. Don't set symbuf, symbuf_count, + symbuf_size nor shndxbuf_size. Initialize strtabsize and + strtab. Initialize symshndxbuf to -1 when number of sections + >= 64K. Replace elf_link_output_sym/elf_link_output_sym with + elf_link_output_symstrtab/elf_link_output_symstrtab. Don't + call elf_link_flush_output_syms. Call _bfd_elf_strtab_finalize + and elf_link_swap_symbols_out. Replace _bfd_stringtab_size + and _bfd_stringtab_emit with _bfd_elf_strtab_size and + _bfd_elf_strtab_emit. + +2015-06-24 H.J. Lu + + * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Silence older + GCC warning. + +2015-06-24 H.J. Lu + + * elf32-i386.c (elf_i386_allocate_dynrelocs): Always allocate + space for the first .plt entry. + (elf_i386_size_dynamic_sections): Always add DT_PLTGOT for .plt + section. Add DT_PLTRELSZ, DT_PLTREL and DT_JMPREL only if + there are PLT relocations. + * elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Always + allocate space for the first .plt entry. + (elf_x86_64_size_dynamic_sections): Always add DT_PLTGOT for + .plt section. Add DT_PLTRELSZ, DT_PLTREL and DT_JMPREL only if + there are PLT relocations. + +2015-06-24 H.J. Lu + + PR ld/18591 + * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Don't convert + R_X86_64_GOTPCREL to R_X86_64_PC32 if it will cause relocation + overflow. + +2015-06-23 Jiong Wang + + * elfnn-aarch64.c (aarch64_readonly_dynrelocs): New function. + (elfNN_aarch64_size_dynamic_sections): Traverse hash table to check + relocations against read-only sections. + +2015-06-18 Nick Clifton + + PR 18481 + * elf32-arm.c (R_ARM_TLS_LE32): Set the special function to NULL. + +2015-06-15 Jon Turney + + * bfd.c: Change struct bfd_build_id to use bfd_size_type. + * bfd-in2.h : Regenerate. + +2015-06-16 Alan Modra + + * elf32-ppc.c (ppc_elf_relocate_section): Correct binary search of + dynamic relocs. + +2015-06-10 Jon Turney + + * elf-bfd.h : Remove struct elf_build_id. + * bfd.c : Add struct bfd_build_id. + * bfd-in2.h: Regenerate. + * elf.c (elfobj_grok_gnu_build_id): Update to use bfd_build_id. + * libpei.h: Add protoype and macros for + bfd_XXi_slurp_codeview_record. + * peXXigen.c (_bfd_XXi_slurp_codeview_record): Make public + * peicode.h (pe_bfd_read_buildid): Add. + (pe_bfd_object_p): Use pe_bfd_read_buildid(). + +2015-06-15 Renlin Li + + * reloc.c (BFD_RELOC_AARCH64_LD64_GOTOFF_LO15): New entry. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for + BFD_RELOC_AARCH64_LD64_GOTOFF_LO15. + +2015-06-15 Alan Modra + + * cofflink.c (_bfd_coff_generic_relocate_section): Revert + 2014-03-26 change. Call _bfd_clear_contents for relocs against + local and global symbols defined in discarded input sections. + +2015-06-05 Nick Clifton + + * elf32-msp430.c (rl78_sym_diff_handler): New function. + (msp430_howto_table): Use the new function for the SYM_DIFF reloc. + (msp430x_howto_table): Likewise. + +2015-06-05 Alan Modra + + * elf64-ppc.c (ppc_elf_relocate_section): Move dynamic text + relocs with insns moved by --ppc476-workaround. Correct + output of REL16 relocs. + +2015-06-01 Jiong Wang + + * elfnn-aarch64.c (aarch64_reloc_got_type): Support + BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14. + (elfNN_aarch64_final_link_relocate): Ditto. + (elfNN_aarch64_gc_swap_hook): Ditto. + (elfNN_aarch64_check_relocs): Ditto. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Ditto. + +2015-06-01 Jiong Wang + + * reloc.c (BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14): New entry. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for + BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14. + +2015-06-01 Jiong Wang + + * elfnn-aarch64.c (elfNN_aarch64_howto_table): Set overflow type to + complain_overflow_unsigned for BFD_RELOC_AARCH64_TLSLE_ADD_LO12. + * elfxx-aarch64.c (_bfd_aarch64_elf_resolve_relocation): Don't use + PGOFF for BFD_RELOC_AARCH64_TLSLE_ADD_LO12. + +2015-06-01 Jiong Wang + + * elfnn-aarch64.c (aarch64_reloc_got_type): Support + BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15. + (elfNN_aarch64_final_link_relocate): Ditto. + (elfNN_aarch64_gc_swap_hook): Ditto. + (elfNN_aarch64_check_relocs): Ditto. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Ditto. + +2015-06-01 Jiong Wang + + * reloc.c (BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15): New entry. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for + BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15. + +2015-05-28 Catherine Moore + Bernd Schmidt + Paul Brook + + bfd/ + * bfd-in2.h: Regenerated. + * elf-bfd.h (DWARF2_EH_HDR, COMPACT_EH_HDR): Define. + (COMPACT_EH_CANT_UNWIND_OPCODE): Define. + (dwarf_eh_frame_hdr_info): Move dwarf-specific fields from + eh_frame_hdr_info. + (compact_eh_frame_hdr_info): Declare. + (eh_frame_hdr_info): Redeclare with union for dwarf-specific + fields and compact-eh fields. + (elf_backend_data): Add cant_unwind_opcode and compact_eh_encoding. + (bfd_elf_section_data): Add eh_frame_entry_field. + (elf_section_eh_frame_entry): Define. + (bfd_elf_parse_eh_frame_entries): Declare. + (_bfd_elf_parse_eh_frame_entry): Declare. + (_bfd_elf_end_eh_frame_parsing): Declare. + (_bfd_elf_write_section_eh_frame_entry): Declare. + (_bfd_elf_eh_frame_entry_present): Declare. + (_bfd_elf_section_for_symbol): Declare. + * elf-eh-frame.c (bfd_elf_discard_eh_frame_entry): New function. + (bfd_elf_record_eh_frame_entry): New function. + (_bfd_elf_parse_eh_frame_entry): New function. + (_bfd_elf_parse_eh_frame): Update hdr_info field references. + (cmp_eh_frame_hdr): New function. + (add_eh_frame_hdr_terminator): New function. + (_bfd_elf_end_eh_frame_parsing): New function. + (find_merged_cie): Update hdr_info field references. + (_bfd_elf_discard_section_eh_frame): Likewise. + (_bfd_elf_discard_section_eh_frame_hdr): Add Compact EH support. + (_bfd_elf_eh_frame_entry_present): New function. + (_bfd_elf_maybe_strip_eh_frame_hdr): Add Compact EH support. + (_bfd_elf_write_section_eh_frame_entry): New function. + (_bfd_elf_write_section_eh_frame): Update hdr_info field references. + (_bfd_elf_fixup_eh_frame_hdr): New function. + (write_compact_eh_frame_hdr): New function. + (write_dwarf_eh_frame_hdr): New function. + (_bfd_elf_write_section_eh_frame_hdr): Add Compact EH support. + * elflink.c (_bfd_elf_section_for_symbol): New function. + (elf_section_ignore_discarded_relocs): Add Compact EH support. + (elf_link_input_bfd): Likewise. + (bfd_elf_final_link): Likewise. + (_bfd_elf_gc_mark): Likewise. + (bfd_elf_parse_eh_frame_entries): New function. + (bfd_elf_gc_sections): Add Compact EH support. + (bfd_elf_discard_info): Likewise. + * elfxx-mips.c: Include dwarf2.h. + (_bfd_mips_elf_compact_eh_encoding): New function. + (_bfd_mips_elf_cant_unwind_opcode): New function. + * elfxx-mips.h (_bfd_mips_elf_compact_eh_encoding): Declare. + (_bfd_mips_elf_cant_unwind_opcode): Declare. + (elf_backend_compact_eh_encoding): Define. + (elf_backend_cant_unwind_opcode): Define. + * elfxx-target.h (elf_backend_compact_eh_encoding): Provide default. + (elf_backend_cant_unwind_opcode): Provide default. + (elf_backend_data elfNN_bed): Add elf_backend_compact_eh_encoding and + elf_backend_cant_unwind_opcode. + * section.c (SEC_INFO_TYPE_EH_FRAME_ENTRY): Add definition. + +2015-05-27 H.J. Lu + + PR binutils/18458 + * elf32-i386.c (elf_i386_check_relocs): Create .plt.got section + for now binding only if pointer equality isn't needed. + (elf_i386_allocate_dynrelocs): Use .plt.got section for now + binding only if pointer equality isn't needed. + * elf64-x86-64.c (elf_x86_64_check_relocs): Create .plt.got + section for now binding only if pointer equality isn't needed. + (elf_x86_64_allocate_dynrelocs): Use .plt.got section for now + binding only if pointer equality isn't needed. + +2015-05-26 H.J. Lu + + PR binutils/18437 + * elf32-i386.c (elf_i386_get_plt_sym_val): Skip extra relocations + in .rel.plt/.rela.plt. + * elf64-x86-64.c (elf_x86_64_get_plt_sym_val): Likewise. + +2015-05-19 Jiong Wang + + * elfnn-aarch64.c (aarch64_tls_transition_without_check): Sort + relocation case labels alphabetically. + (elfNN_aarch64_final_link_relocate): Ditto. + (elfNN_aarch64_tls_relax): Ditto. + (elfNN_aarch64_relocate_section): Ditto. + (elfNN_aarch64_gc_sweep_hook): Ditto. + (elfNN_aarch64_check_relocs): Ditto. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Ditto. + (_bfd_aarch64_elf_resolve_relocation): Ditto. + +2015-05-18 Jiong Wang + + * elfnn-aarch64.c (elfNN_aarch64_adjust_dynamic_symbol): Rewrite + comments. + +2015-05-16 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Create .plt.got section + for now binding. + (elf_i386_allocate_dynrelocs): Use .plt.got section for now + binding. + * elf64-x86-64.c (elf_x86_64_check_relocs): Create .plt.got + section for now binding. + (elf_x86_64_allocate_dynrelocs): Use .plt.got section for now + binding. + +2015-05-14 H.J. Lu + + * bfd.c (bfd_update_compression_header): Also write the zlib + header if the SHF_COMPRESSED bit cleared.. + (bfd_check_compression_header): Return the uncompressed size. + * compress.c (decompress_contents): Don't skip the zlib header. + (bfd_compress_section_contents): Properly handle ELFCOMPRESS_ZLIB, + which doesn't have the zlib header. + (bfd_init_section_decompress_status): Likewise. + (bfd_get_full_section_contents): Updated. + (bfd_is_section_compressed): Likewise. + (bfd_is_section_compressed_with_header): Return the uncompressed + size. + * elf.c (_bfd_elf_make_section_from_shdr): Updated. + * bfd-in2.h: Regenerated. + +2015-05-14 Jiong Wang + + * elfnn-aarch64.c (elfNN_aarch64_relocate_section): Remove overflow + check restrictions. + +2015-05-14 Max Filippov + + * elf32-xtensa.c (elf_xtensa_gc_sweep_hook): Treat PLT reference + as GOT reference when plt.refcount is not positive. + +2015-05-12 H.J. Lu + + * elf32-i386.c (elf_i386_allocate_dynrelocs): Allocate space + for the first .plt entry only if needed. + * elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise. + +2015-05-11 H.J. Lu + + * Makefile.am (ALL_MACHINES): Add cpu-iamcu.lo. + (ALL_MACHINES_CFILES): Likewise. + * archures.c (bfd_mach_iamcu): New. + (bfd_mach_i386_iamcu): Likewise. + (bfd_mach_i386_iamcu_intel_syntax): Likewise. + (bfd_iamcu_arch): Likewise. + (bfd_archures_list): Add &bfd_iamcu_arch. + * config.bfd (targ_selvecs): Add iamcu_elf32_vec to + i386_elf32_vec. + (targ_archs): Add bfd_iamcu_arch if needed. + * configure.ac: Support iamcu_elf32_vec. + * cpu-iamcu.c: New file. + * elf32-i386.c (elf32_iamcu_elf_object_p): New function. + Add support for iamcu_elf32_vec and elf32_iamcu_bed. + * targets.c (iamcu_elf32_vec): New. + (_bfd_target_vector): Add iamcu_elf32_vec. + * Makefile.in: Regenerated. + * bfd-in2.h: Likewise. + * configure: Likewise. + +2015-05-11 H.J. Lu + + * elfcode.h (elf_object_p): Replace EM_486 with EM_IAMCU. + +2015-05-10 H.J. Lu + + * elf32-i386.c (elf_i386_convert_mov_to_lea): Replace input_bfd + and output_bfd with abfd. + * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise. + +2015-05-06 Toni Spets + + PR ld/18372 + * peXXigen.c (rsrc_process_section): Skip discarded resource + sections. + +2015-05-01 H.J. Lu + + * config.bfd: Support i[3-7]86-*-elf*. + +2015-04-30 H.J. Lu + + * elf32-i386.c (elf_backend_post_process_headers): Undef for + Solaris 2. + +2015-04-30 Nick Clifton + + PR 18317 + * elf32-mep.c (MEPREL): Use bfd_elf_generic_reloc instead of + mep_reloc. + (mep_reloc): Delete unused function. + +2015-04-29 Nick Clifton + + PR 17099 + * coff-i386.c (coff_i386_rtype_to_howto): Allow absolute PCRLONG + relocs. + +2015-04-27 Andreas Krebbel + + * elf-s390-common.c (elf_s390_merge_obj_attributes): New function. + * elf32-s390.c (elf32_s390_merge_private_bfd_data): Call + elf_s390_merge_obj_attributes. + * elf64-s390.c (elf64_s390_merge_private_bfd_data): New function. + +2015-04-24 Jiong Wang + + PR ld/18270 + * elfnn-aarch64.c (elfNN_aarch64_size_dynamic): Count local symbol for + GOT_NORMAL for both sgot/srelgot section. + (elfNN_aarch64_final_link_relocate): Relocate against GOT entry address + and generate necessary runtime relocation for GOT entry. + +2015-04-24 H.J. Lu + + PR binutils/18209 + * archive.c (_bfd_get_elt_at_filepos): Copy is_linker_input. + +2015-04-24 Jiong Wang + + * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Reject + PC-relative relocation for external symbol. + +2015-04-24 Nick Clifton + + PR 18313 + * compress.c (decompress_contents): Zero initialse the z_stream + structure. + +2015-04-24 Nick Clifton + + * elf.c (_bfd_elf_is_local_label_name): Extend test for assembler + local labels to include local labels with a numeric suffix and + fake symbols. + +2015-04-24 H.J. Lu + + PR binutils/18316 + * section.c (SEC_MEP_VLIW): New. + * bfd-in2.h: Regenerated. + +2015-04-23 H.J. Lu + + PR ld/18277 + * compress.c (bfd_compress_section_contents): Remove the + write_compress argument. + (bfd_init_section_compress_status): Updated. + (bfd_compress_section): Likewise. + * elf.c (_bfd_elf_set_reloc_sh_name): New. + (_bfd_elf_init_reloc_shdr): Add delay_st_name_p. Set sh_name + to (unsigned int) -1 if delay_st_name_p is TRUE. Use + _bfd_elf_set_reloc_sh_name. + (elf_fake_sections): Don't rename DWARF debug section for + linker output if it will be compressed. Instead, set + delay_st_name_p to TRUE and pass it to _bfd_elf_init_reloc_shdr. + (assign_section_numbers): Call _bfd_elf_strtab_addref only if + sh_name != (unsigned int) -1. Don't finalize nor assign + shstrtab section here. Delay setting output section names to + _bfd_elf_write_object_contents. + (_bfd_elf_compute_section_file_positions): Update comments on + sh_offset for shstrtab section. + (assign_file_positions_for_non_load_sections): Set sh_offset to + -1 for shstrtab section. + (assign_file_positions_except_relocs): Likewise. + (_bfd_elf_assign_file_positions_for_non_load): Set up sh_name + when compressing DWARF debug sections. Place shstrtab section + after DWARF debug sections have been compressed. + (_bfd_elf_write_object_contents): Setting sh_name for output + sections. + +2015-04-23 H.J. Lu + + PR binutils/18209 + * bfd.c (bfd): Add is_linker_input. + * elf.c (convert_debug_to_zdebug): New. + (convert_zdebug_to_debug): Likewise. + (_bfd_elf_make_section_from_shdr): Don't convert .debug_* to + .zdebug_* here. Use convert_zdebug_to_debug. Set SEC_ELF_RENAME. + (_bfd_elf_init_reloc_shdr): Pass a pointer to section name + instead of a pointer to section. + (elf_fake_sections): Rename the section name if SEC_ELF_RENAME + is set. + * section.c (SEC_ELF_RENAME): New. + * bfd-in2.h: Regenerated. + +2015-04-23 Alan Modra + + * elf64-ppc.c (TOC_BASE_ALIGN): Define. + (ppc64_elf_next_toc_section): Align multi-got toc base. + (ppc64_elf_set_toc): Likewise initial toc base and .TOC. symbol. + +2015-04-22 H.J. Lu + + PR ld/18289 + * elf32-i386.c (elf_i386_link_hash_entry): Add gotoff_ref. + (elf_i386_link_hash_newfunc): Initialize gotoff_ref to 0. + (elf_i386_create_dynamic_sections): Always allow copy relocs for + building executables. + (elf_i386_copy_indirect_symbol): Also copy gotoff_ref. + (elf_i386_check_relocs): Set gotoff_ref for R_386_GOTOFF. + (elf_i386_adjust_dynamic_symbol): Also allocate copy relocs for + PIE and R_386_GOTOFF. + (elf_i386_relocate_section): Allow R_386_GOTOFF in executable. + +2015-04-20 H.J. Lu + + * elf.c (assign_section_numbers): Always set up sh_name. + +2015-04-20 H.J. Lu + + * elf.c (assign_file_positions_for_non_load_sections): Iterate + sections by pointer. + (_bfd_elf_assign_file_positions_for_non_load): Likewise. + +2015-04-14 H.J. Lu + + * bfd-in.h (compressed_debug_section_type): New. + * compress.c (bfd_compress_section_contents): Add an argument + for linker write compression and always generate .zdebug_* + section when linking. + (bfd_init_section_compress_status): Pass FALSE to + bfd_compress_section_contents. + (bfd_compress_section): New function. + * elf.c (elf_fake_sections): For linking, set SEC_ELF_COMPRESS + on DWARF debug sections if COMPRESS_DEBUG is set and rename + section if COMPRESS_DEBUG_GABI_ZLIB isn't set. + (assign_file_positions_for_non_load_sections): Set sh_offset + to -1 if SEC_ELF_COMPRESS is set. + (assign_file_positions_except_relocs): Likwise. + (_bfd_elf_assign_file_positions_for_relocs): Renamed to ... + (_bfd_elf_assign_file_positions_for_non_load): This. Change + return time to bfd_boolean. Compress the section if + SEC_ELF_COMPRESS is set. + (_bfd_elf_write_object_contents): Updated. + (_bfd_elf_set_section_contents): Write section contents to + the buffer if SEC_ELF_COMPRESS is set. + * merge.c: Include "elf-bfd.h". + (sec_merge_emit): Add arguments for contents and offset. Write + to contents with offset if contents isn't NULL. + (_bfd_write_merged_section): Write section contents to the + buffer if SEC_ELF_COMPRESS is set. Pass contents and + output_offset to sec_merge_emit. + * elflink.c (bfd_elf_final_link): Allocate the buffer for + output section contents if SEC_ELF_COMPRESS is set. + * section.c (SEC_ELF_COMPRESS): New. + * bfd-in2.h: Regenerated. + +2015-04-15 Alan Modra + + * elf32-rl78.c (rl78_elf_relocate_section): Typo fix. + +2015-04-14 Nick Clifton + + * elf32-rl78.c (RL78_OP_REL): New macro. + (rl78_elf_howto_table): Use it for complex relocs. + (get_symbol_value): Handle the cases when the info or status + arguments are NULL. + (get_romstart): Cache the status returned by get_symbol_value. + (get_ramstart): Likewise. + (RL78_STACK_PUSH): Generate an error message if the stack + overflows. + (RL78_STACK_POP): Likewise for underflows. + (rl78_compute_complex_reloc): New function. Contains the basic + processing code for all RL78 complex relocs. + (rl78_special_reloc): New function. Provides special reloc + handling for complex relocs. + (rl78_elf_relocate_section): Use rl78_compute_complex_reloc. + (rl78_offset_for_reloc): Likewise. + +2015-04-14 H.J. Lu + + PR ld/pr17709 + * elflink.c (_bfd_elf_adjust_dynamic_copy): Check + info->extern_protected_data when warning copy relocs against + protected symbols. + (_bfd_elf_symbol_refs_local_p): Check info->extern_protected_data + when checking protected non-function symbols. + +2015-04-13 John Baldwin + + * elf.c (elfcore_grok_note): Recognize NT_X86_XSTATE on + FreeBSD. + (elfcore_write_xstatereg): Use correct note name on FreeBSD. + +2015-04-13 H.J. Lu + + PR ld/18250 + * elflink.c (elf_link_is_defined_archive_symbol): Return FALSE + if the object has been claimed by plugin. + +2015-04-11 H.J. Lu + + * elf32-i386.c (elf_i386_relocate_section): Replace SYMBOLIC_BIND + with SYMBOL_REFERENCES_LOCAL when checking R_386_GOTOFF against + protected data symbol when building shared library. + * elf64-x86-64.c (elf_x86_64_relocate_section): Check + R_X86_64_GOTOFF64 against undefined symbol and replace + SYMBOLIC_BIND with SYMBOL_REFERENCES_LOCAL when checking + R_X86_64_GOTOFF64 against protected data symbol when building + shared library. + +2015-04-10 H.J. Lu + + PR ld/pr17709 + * elf32-i386.c (elf_i386_relocate_section): Also check R_386_GOTOFF + against protected data symbol when building shared library. + * elf64-x86-64.c (elf_x86_64_relocate_section): Also check + R_X86_64_GOTOFF64 against protected data symbol when building + shared library. + +2015-04-10 H.J. Lu + + PR ld/pr15228 + PR ld/pr17709 + * elf-bfd.h (elf_backend_data): Add extern_protected_data. + * elf32-i386.c (elf_backend_extern_protected_data): New. + Defined to 1. + * elf64-x86-64.c (elf_backend_extern_protected_data): Likewise. + * elflink.c (_bfd_elf_adjust_dynamic_copy): Don't error on + copy relocs against protected symbols if extern_protected_data + is true. + (_bfd_elf_symbol_refs_local_p): Don't return true on protected + non-function symbols if extern_protected_data is true. + * elfxx-target.h (elf_backend_extern_protected_data): New. + Default to 0. + (elfNN_bed): Initialize extern_protected_data with + elf_backend_extern_protected_data. + +2015-04-10 H.J. Lu + + * compress.c (bfd_compress_section_contents): Replace bfd_malloc + and free with bfd_alloc and bfd_release on compressed buffer. + Release buffer if compressed section isn't smaller. + +2015-04-10 Alan Modra + + PR ld/18222 + * elflink.c (_bfd_elf_adjust_dynamic_copy): Don't report an error + on adding a protected visibility variable to .dynbss. + +2015-04-10 Alan Modra + + Revert 2015-03-05 H.J. Lu + PR ld/pr15228 + PR ld/pr17709 + * elf-bfd.h (elf_backend_data): Delete extern_protected_data. + * elf32-i386.c (elf_backend_extern_protected_data): Delete. + * elf64-x86-64.c (elf_backend_extern_protected_data): Likewise. + * elflink.c (_bfd_elf_adjust_dynamic_copy): Remove + extern_protected_data test. + (_bfd_elf_symbol_refs_local_p): Likewise. + * elfxx-target.h (elf_backend_extern_protected_data): Delete. + (elfNN_bed): Delete elf_backend_extern_protected_data init. + +2015-04-09 H.J. Lu + + * compress.c (bfd_compress_section_contents): Update comments. + (bfd_init_section_decompress_status): Likewise. + (bfd_init_section_compress_status): Likewise. + +2015-04-09 H.J. Lu + + * elfxx-target.h (TARGET_BIG_SYM): Add BFD_COMPRESS_GABI to + object_flags. + (TARGET_LITTLE_SYM): Likewise. + +2015-04-09 Max Filippov + + * elf32-xtensa.c (splay-tree.h): include header. + (text_action_struct): drop next pointer. + (text_action_list_struct): drop head pointer, add count and + tree fields. + (find_fill_action): instead of linear search in text_action_list + search in the tree. + (text_action_compare, action_first, action_next): new functions. + (text_action_add, text_action_add_literal): instead of linear + search and insertion insert new node into the tree. + (removed_by_actions): pass additional parameter: action_list, + use it to traverse the tree. + (offset_with_removed_text): pass additional action_list parameter + to removed_by_actions. + (map_action_fn_context): new typedef. + (map_action_fn_context_struct): new structure. + (map_action_fn): new function. + (map_removal_by_action): use splay_tree_foreach to build map. + (find_insn_action): replace linear search in text_action_list + with series of splay_tree_lookups. + (print_action, print_action_list_fn): new functions. + (print_action_list): use splay_tree_foreach. + (init_xtensa_relax_info): drop action_list.head initialization. + Initialize the tree. + (compute_text_actions): use non-zero action_list_count instead of + non-NULL action list. + (xlate_map_context): new typedef. + (xlate_map_context_struct): new structure. + (xlate_map_fn): new function. + (build_xlate_map): use splay_tree_foreach to build map. + (action_remove_bytes_fn): new function. + (relax_section): use zero action_list_count instead of NULL + action list. Use splay_tree_foreach to count final section size. + Drop unused variable 'removed'. + +2015-04-09 Max Filippov + + * elf32-xtensa.c (removed_literal_map_entry): new typedef. + (removed_literal_map_entry_struct): new structure. + (removed_literal_list_struct): add new fields: n_map and map. + (map_removed_literal, removed_literal_compare): new functions. + (find_removed_literal): build index array for literals ordered + by VMA, use binary search to find removed literal. + +2015-04-09 Max Filippov + + * elf32-xtensa.c (removal_by_action_entry_struct, + removal_by_action_map_struct): new structures. + (removal_by_action_entry, removal_by_action_map): new typedefs. + (text_action_list_struct): add new field: map. + (map_removal_by_action, removed_by_actions_map, + offset_with_removed_text_map): new functions. + (relax_section): replace offset_with_removed_text with + offset_with_removed_text_map. + (translate_reloc, relax_property_section, relax_section_symbols): + replace removed_by_actions with removed_by_actions_map. + +2015-04-09 Max Filippov + + * elf32-xtensa.c (reloc_range_list, reloc_range_list_entry, + reloc_range): new typedef. + (reloc_range_list_struct, reloc_range_list_entry_struct, + reloc_range_struct): new structures. + (reloc_range_compare, build_reloc_ranges, + reloc_range_list_append, reloc_range_list_remove, + reloc_range_list_update_range, free_reloc_range_list): new + functions. + (compute_text_actions): precompute relocation opcodes before the + loop. Add relevant_relocs variable, initialize it before the + loop, pass it to the check_section_ebb_pcrels_fit. + (check_section_ebb_pcrels_fit): add new parameter: + relevant_relocs. Update address range in the relevant_relocs if + it's non-NULL and iterate only over relevant relocations. + +2015-04-09 Nick Clifton + + * elf32-rx.c (describe_flags): Report the settings of the string + insn using bits. + (rx_elf_merge_private_bfd_data): Handle merging of the string insn + using bits. + +2015-04-08 H.J. Lu + + * compress.c (bfd_compress_section_contents): Work around a GCC + uninitialized warning bug fixed in GCC 4.7. + +2015-04-08 H.J. Lu + + * archive.c (_bfd_get_elt_at_filepos): Also copy BFD_COMPRESS_GABI + bit. + * bfd.c (bfd::flags): Increase size to 18 bits. + (BFD_COMPRESS_GABI): New. + (BFD_FLAGS_SAVED): Add BFD_COMPRESS_GABI. + (BFD_FLAGS_FOR_BFD_USE_MASK): Likewise. + (bfd_update_compression_header): New fuction. + (bfd_check_compression_header): Likewise. + (bfd_get_compression_header_size): Likewise. + (bfd_is_section_compressed_with_header): Likewise. + * compress.c (MAX_COMPRESSION_HEADER_SIZE): New. + (bfd_compress_section_contents): Return the uncompressed size if + the full section contents is compressed successfully. Support + converting from/to .zdebug* sections. + (bfd_get_full_section_contents): Call + bfd_get_compression_header_size to get compression header size. + (bfd_is_section_compressed): Renamed to ... + (bfd_is_section_compressed_with_header): This. Add a pointer + argument to return compression header size. + (bfd_is_section_compressed): Use it. + (bfd_init_section_decompress_status): Call + bfd_get_compression_header_size to get compression header size. + Return FALSE if uncompressed section size is 0. + * elf.c (_bfd_elf_make_section_from_shdr): Support converting + from/to .zdebug* sections. + * bfd-in2.h: Regenerated. + +2015-04-07 Alan Modra + + * elf.c (_bfd_elf_get_reloc_section): Allow for .got.plt being + mapped to output .got section. + +2015-04-07 Alan Modra + + * elf32-ppc.c (struct ppc_elf_link_hash_entry): Add has_addr16_ha + and has_addr16_lo. Make has_sda_refs a bitfield. + (ppc_elf_check_relocs): Set new flags. + (ppc_elf_link_hash_table_create): Update default_params. + (ppc_elf_adjust_dynamic_symbol): Clear protected_def in cases + where we won't be making .dynbss entries or editing code. Set + params->pic_fixup when we'll edit code for protected var access. + (allocate_dynrelocs): Allocate got entry for edited code and + discard dyn_relocs. + (struct ppc_elf_relax_info): Add picfixup_size. + (ppc_elf_relax_section): Rename struct one_fixup to struct + one_branch_fixup. Rename fixups to branch_fixups. Size space for + pic fixups. + (ppc_elf_relocate_section): Edit non-PIC accessing protected + visibility variables to PIC. Don't emit dyn_relocs for code + we've edited. + * elf32-ppc.h (struct ppc_elf_params): Add pic_fixup. + +2015-04-07 Nick Clifton + + * elf.c (_bfd_elf_is_local_label_name): Treat assembler generated + local labels as local. + +2015-04-06 H.J. Lu + + * compress.c (get_uncompressed_size): Removed. + (bfd_compress_section_contents): Use bfd_putb64 to write + uncompressed section size. + (bfd_init_section_decompress_status): Replace + get_uncompressed_size with bfd_getb64. + +2015-04-04 H.J. Lu + + * elf.c (_bfd_elf_init_private_section_data): Also preserve the + SHF_COMPRESSED bit if not decompress. + +2015-04-04 H.J. Lu + + * compress.c (get_uncompressed_size): New. Extracted from ... + (bfd_init_section_decompress_status): This. Use it. + +2015-04-02 Andrew Turner + + * config.bfd: Add aarch64-*-freebsd* target triple. + +2015-04-02 H.J. Lu + + * configure: Regenerated. + +2015-04-01 Tejas Belagod + Marcus Shawcroft + Jiong Wang + + * bfd-in.h (bfd_elf64_aarch64_set_options) + (bfd_elf32_aarch64_set_options): Add parameter. + * bfd-in2.h: Regenerated. + * elfnn-aarch64.c (aarch64_erratum_843419_stub) + (_bfd_aarch64_adrp_p, _bfd_aarch64_erratum_843419_sequence_p) + (_bfd_aarch64_erratum_843419_stub_name) + (_bfd_aarch64_erratum_843419_fixup) + (_bfd_aarch64_erratum_843419_scan) + (_bfd_aarch64_erratum_843419_branch_to_stub) + (_bfd_aarch64_erratum_843419_p): Define. + (enum elf_aarch64_stub_type): Define + aarch64_stub_erratum_843419_veneer. + (struct elf_aarch64_stub_hash_entry): Define adrp_offset. + (struct elf_aarch64_link_hash_table): Define fix_erratum_843419 + and fix_erratum_843419_adr. + (stub_hash_newfunc): Initialize adrp_offset; + (_bfd_aarch64_add_stub_entry_after): Define. + (aarch64_map_one_stub, aarch64_build_one_stub) + (aarch64_size_one_stub): Handle + aarch64_stub_erratum_843419_veneer. + (_bfd_aarch64_resize_stubs): Round stub section size. + (elfNN_aarch64_size_stubs): Add scan for 843419. + (bfd_elfNN_aarch64_set_options): Add parameter. Initialize + fix_erratum_843419 and fix_erratum_843419_adr. + (struct erratum_835769_branch_to_stub_data): Add info. + (elfNN_aarch64_write_section): Initialise info. Handle 843419. + (elfNN_aarch64_size_dynamic_sections): Handle 843419. + * elfxx-aarch64.c (_bfd_aarch64_decode_adrp_imm) + (_bfd_aarch64_sign_extend): Define. + (reencode_adr_imm): Remove static. Rename to: + (_bfd_aarch64_reencode_adr_imm): Define. + (_bfd_aarch64_elf_put_addend): Call _bfd_aarch64_reencode_adr_imm. + * elfxx-aarch64.h (AARCH64_ADR_OP, AARCH64_ADRP_OP) + (AARCH64_ADRP_OP_MASK, _bfd_aarch64_sign_extend) + (_bfd_aarch64_decode_adrp_imm, _bfd_aarch64_reencode_adr_imm): + Define. + +2015-04-01 H.J. Lu + + * configure: Regenerated. + +2015-03-31 Ed Schouten + + * config.bfd (targ_defvec): Set to x86_64_elf64_cloudabi_vec + for x86_64-*-cloudabi*. + * configure.ac: Handle x86_64_elf64_cloudabi_vec. + * configure: Regenerated. + * elf64-x86-64.c (TARGET_LITTLE_SYM): Support x86_64-*-cloudabi*. + (TARGET_LITTLE_NAME): Likewise. + (ELF_OSABI): Likewise. + (elf64_bed): Likewise. + * targets.c (x86_64_elf64_cloudabi_vec): New. + (_bfd_target_vector): Add x86_64_elf64_cloudabi_vec. + +2015-03-31 H.J. Lu + + * configure.ac: Revert the AM_ZLIB change. + * Makefile.in: Regenerated. + * aclocal.m4: Likewise. + * configure: Likewise. + * doc/Makefile.in: Likewise. + +2015-03-30 H.J. Lu + + PR ld/18169 + * elf-bfd.h (elf_backend_data): Add get_reloc_section. + (_bfd_elf_get_reloc_section): New. + * elf.c (_bfd_elf_get_reloc_section): Likewise. + (assign_section_numbers): Call get_reloc_section to look up the + section the relocs apply. + * elfxx-target.h (elf_backend_get_reloc_section): Likewise. + (elfNN_bed): Initialize get_reloc_section with + elf_backend_get_reloc_section. + +2015-03-29 H.J. Lu + + * Makefile.am (ZLIB): New. + (ZLIBINC): Likewise. + (AM_CFLAGS): Add $(ZLIBINC). + (libbfd_la_LIBADD): Add $(ZLIB). + * compress.c: Don't check HAVE_ZLIB_H to include . + (decompress_contents): Don't check HAVE_ZLIB_H. + (bfd_compress_section_contents): Likewise. + (bfd_get_full_section_contents): Likewise. + (bfd_init_section_decompress_status): Likewise. + (bfd_init_section_compress_status): Likewise. + * configure.ac (AM_ZLIB): Removed. + (zlibdir): New. AC_SUBST. + (zlibinc): Likewise. + Add --with-system-zlib. + * Makefile.in: Regenerated. + * acinclude.m4: Likewise. + * config.in: Likewise. + * configure: Likewise. + * doc/Makefile.in: Likewise. + +2015-03-27 Alan Modra + + PR ld/15228 + PR ld/18167 + * elflink.c (elf_merge_st_other): Add "sec" parameter. Don't set + protected_def when symbol section is read-only. Adjust all calls. + * elf-bfd.h (struct elf_link_hash_entry): Update protected_def comment. + +2015-03-26 Tejas Belagod + + * elfnn-aarch64.c (aarch64_build_one_stub): Replace the call to generic + _bfd_final_link_relocate with aarch64_relocate. + +2015-03-26 H.J. Lu + + PR ld/18160 + * elflink.c (elf_gc_sweep): Skip if relocation is incompatible. + (bfd_elf_gc_sections): Likewise. + +2015-03-25 Marcus Shawcroft + + * elfnn-aarch64.c (_bfd_aarch64_resize_stubs): Adjust stub section + size for initial branch. + (elfNN_aarch64_build_stubs): Write initial branch. + _bfd_aarch64_decode_(elfNN_aarch64_output_arch_local_syms): Write + mapping symbol on initial branch. + +2015-03-25 Marcus Shawcroft + + * elfnn-aarch64.c (_bfd_aarch64_erratum_835769_scan): + Update erratum count. + +2015-03-25 Senthil Kumar Selvaraj + + * elflink.c (_bfd_elf_gc_mark_extra_sections): Don't break on + first matching debug section. + +2015-03-24 H.J. Lu + + PR gas/18087 + * compress.c (bfd_compress_section_contents): Don't write the + zlib header and set contents as well as compress_status if + compression didn't make the section smaller. + (bfd_init_section_compress_status): Don't check compression + size here. + +2015-03-24 Nick Clifton + + PR binutils/17512 + * coffgen.c (coff_get_normalized_symtab): Fix test for out of + range auxillary sections. + +2015-03-24 Marcus Shawcroft + + * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Factor + code into: + (_bfd_aarch64_get_stub_for_link_section): Define. + +2015-03-24 Marcus Shawcroft + + * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Adjust + update of section_group[].stub_sec. + +2015-03-24 Marcus Shawcroft + + * elfnn-aarch64.c (struct aarch64_erratum_835769_fix) Remove. + (erratum_835769_scan) Drop fix_table_size_p and fixes_p arguments. + Delete fixes, fix_table_size and associated code. Call + _bfd_aarch64_add_stub_entry_in_group. Rename to... + (bfd_aarch64_erratum_835769_scan): Define. + (elfNN_aarch64_size_stubs): Delete erratum_835769_fixes, + erratum_835769_fix_table_size, i and associated code. Relocate + call to _bfd_aarch64_erratum_835769_scan. Delete adhoc stub size + correction. Delete construction of stub entry from + erratum_835769_fixes array. + +2015-03-24 Marcus Shawcroft + + * elfnn-aarch64.c (elfNN_aarch64_size_stubs): Use + _bfd_aarch64_add_stub_entry_in_group. + +2015-03-24 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Report overflow to + stubs, even those for undefined weak symbols. Otherwise, don't + report relocation overflow on branches to undefined strong + symbols. Fix memory leak. + * elf32-ppc.c (ppc_elf_relocate_section): Don't report relocation + overflow on branches to undefined strong symbols. + +2015-03-23 Keith Seitz + + * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Add + missing ';'. + +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (erratum_835769_scan): Factor stub name + construction into... + (_bfd_aarch64_erratum_835769_stub_name): Define. + +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (elfNN_aarch64_size_stubs): Factor out + stub resize code into... + (bfd_aarch64_resize_stubs): Define. + +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Factor stub + creation code into... + (bfd_aarch64_create_stub_section): Define. + +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Rename + from elf_aarch64_create_or_find_stub_sec. + (_bfd_aarch64_add_stub_entry_in_group): Rename from + elfNN_aarch64_add_stub. Call + _bfd_aarch64_create_or_find_stub_sec. + (elfNN_aarch64_size_stubs, elfNN_aarch64_size_stubs): Call + _bfd_aarch64_add_stub_entry_in_group. + +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (erratum_835769_scan) Add comment. Reverse + sense of boolean return. + (elfNN_aarch64_size_stubs): Adjust for above. + +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (elf_aarch64_create_or_find_stub_sec): + Remove unused parameter. + (elfNN_aarch64_size_stubs): Adjust for above. + +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (elfNN_aarch64_size_stubs): Remove bfd_indx. + +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (aarch64_erratum_835769_fixes) + (num_aarch64_erratum_835769_fixes): Remove. + (elfNN_aarch64_size_stubs): Remove assignments to above. + +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (aarch64_mem_op_p): Update comment. Rename rtn + to rt2. + (aarch64_erratum_seqeunce): Rename rtn to rt2. + +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (elfNN_aarch64_write_section): Adjust layout. + +2015-03-19 Nick Clifton + + * elf32-rl78.c (rl78_cpu_name): New function. Prints the name of + the RL78 core based upon the flags. + (rl78_elf_merge_private_bfd_data): Handle merging of G13 and G14 + flags. + (rl78_elf_print_private_bfd_data): Use rl78_cpu_name. + (elf32_rl78_machine): Always return bfd_mach_rl78. + +2015-03-19 Nick Clifton + + PR 18078 + * compress.c (bfd_compress_section_contents): Do not define this + function if it is not used. + +2015-03-18 H.J. Lu + + * compress.c (bfd_compress_section_contents): Make it static. + * bfd/bfd-in2.h: Regenerated. + +2015-03-18 Eric Youngdale + + PR ld/16598 + * peicode.h (pe_ILF_build_a_bfd): Add support for creating relocs + suitable for the AMD64. + +2015-03-18 Jon Turney + Nick Clifton + + PR binutils/18087 + * coffgen.c (make_a_section_from_file): Only prepend a z to a + debug section's name if the section was actually compressed. + * elf.c (_bfd_elf_make_section_from_shdr): Likewise. + * compress.c (bfd_init_section_compress_status): Do not compress + the section if doing so would make it bigger. In such cases leave + the section alone and return COMPRESS_SECTION_NONE. + +2015-03-17 Alan Modra + + * elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Return count of 0 + on nothing to do, before malloc of returned symbol array. + +2015-03-16 Nick Clifton + + * elf32-rx.c (elf32_rx_relax_delete_bytes): If the relocs are not + stored in the elf_section_data structure then load them as + necessary. + +2015-03-14 Andreas Krebbel + + * elf-s390-common.c (elf_s390_elf_sort_relocs_p): Don't sort + relocs against code sections. + * elf32-s390.c: Define elf_backend_sort_relocs_p. + * elf64-s390.c: Likewise. + +2015-03-11 Alan Modra + + * elf32-ppc.c (ppc_elf_get_synthetic_symtab): Examine stubs in + reverse order. Account for larger size of __tls_get_addr_opt stub. + +2015-03-10 Yuri Gribov + + PR ld/16572 + * elf32-arm.c (elf32_arm_final_link_relocate): Remove support for + ELF_ARM_HASENTRY. + (elf32_arm_print_private_bfd_data): Likewise. + +2015-03-06 Nick Clifton + + PR binutils/17765 + * elflink.c (put_value): Like previous delta, but for the 32-bit + case. + +2015-03-05 Nick Clifton + + PR binutils/17765 + * elflink.c (put_value): Avoid using an undefined shift + operation. + +2015-03-05 H.J. Lu + + PR ld/pr15228 + PR ld/pr17709 + * elf-bfd.h (elf_backend_data): Add extern_protected_data. + * elf32-i386.c (elf_backend_extern_protected_data): New. + Defined to 1. + * elf64-x86-64.c (elf_backend_extern_protected_data): Likewise. + * elflink.c (_bfd_elf_adjust_dynamic_copy): Don't error on + copy relocs against protected symbols if extern_protected_data + is true. + (_bfd_elf_symbol_refs_local_p): Don't return true on protected + non-function symbols if extern_protected_data is true. + * elfxx-target.h (elf_backend_extern_protected_data): New. + Default to 0. + (elfNN_bed): Initialize extern_protected_data with + elf_backend_extern_protected_data. + +2015-03-05 Nick Clifton + + PR binutils/18025 + * coffgen.c (coff_find_nearest_line_with_names): If the dwarf2 + lookup fails, check for an address bias in the dwarf info, and if + one exists, retry the lookup with the biased value. + * dwarf2.c (_bfd_dwarf2_find_symbol_bias): New function. + Determines if a bias exists bewteen the addresses of functions + based on DWARF information vs symbol table information. + * libbfd-in.h (_bfd_dwarf2_find_symbol_bias): Prototype. + * libbfd.h: Regenerate. + +2015-03-04 Marcus Shawcroft + + * elfxx-aarch64.c (decode_add_imm, decode_movw_imm) + (decode_tst_branch_ofs_14, decode_ld_lit_ofs_19) + (decode_cond_branch_ofs_19, decode_branch_ofs_26): Remove. + +2015-03-04 Marcus Shawcroft + + * elfnn-aarch64.c (aarch64_build_one_stub): Call abort. + (aarch64_size_one_stub): Likewise. + (aarch64_map_one_stub): Likewise. + +2015-03-04 Andreas Arnez + + * cpu-s390.c (N): New macro. + (bfd_s390_31_arch): New. Define only if default target word size + is 64 bits. Otherwise define... + (bfd_390_64_arch): ...this. Make static. + (bfd_s390_arch): Define according to the default target word size. + Let the 'next' field point to the alternate arch. + +2015-03-04 Richard Sandiford + + PR gas/17843 + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Expect + R_AARCH64_TLSLE_MOVW_TPREL_G0_NC and R_AARCH64_TLSLE_MOVW_TPREL_G1_NC + to be used with MOVK rather than MOVZ. + +2015-03-03 DJ Delorie + + * elf32-rl78.c (rl78_elf_relax_section): Only relax ADDR16's if + there's a symbol. + +2015-02-28 Alan Modra + + * elf32-ppc.c (ppc_elf_tls_setup): Set no_tls_get_addr_opt if + not PLT_NEW. + +2015-02-27 H.J. Lu + + * elf32-i386.c (need_convert_mov_to_lea): New. + (elf_i386_check_relocs): Set need_convert_mov_to_lea if needed. + (elf_i386_convert_mov_to_lea): Return TRUE if + need_convert_mov_to_lea is unset. + * elf64-x86-64.c (need_convert_mov_to_lea): New. + (elf_x86_64_check_relocs): Set need_convert_mov_to_lea if needed. + (elf_x86_64_convert_mov_to_lea): Return TRUE if + need_convert_mov_to_lea is unset. + +2015-02-27 Nick Clifton + + PR binutils/17910 + * coffgen.c (_bfd_coff_internal_syment_name): Only check for + string length overflow when the string table length is actually + set. + +2015-02-27 Marcus Shawcroft + + * bfd/bfd-in2.h: Regenerate. + * bfd/libbfd.h: Regenerate. + +2015-02-26 Marcus Shawcroft + + * elfnn-aarch64.c (elfNN_aarch64_howto_table): Fix + TLSDESC_LD_PREL19 field width and masks. + (aarch64_tls_transition_without_check) + (aarch64_reloc_got_type, elfNN_aarch64_final_link_relocate) + (elfNN_aarch64_tls_relax, elfNN_aarch64_relocate_section) + (elfNN_aarch64_gc_sweep_hook, elfNN_aarch64_check_relocs): Handle + BFD_RELOC_AARCH64_TLSDESC_LD_PREL19. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend) + (_bfd_aarch64_elf_resolve_relocation): Likewise. + +2015-02-26 Marcus Shawcroft + + * elfnn-aarch64.c (IS_AARCH64_TLSDESC_RELOC): Reorder R_TYPE + tests. + (aarch64_tls_transition_without_check) + (aarch64_reloc_got_type, elfNN_aarch64_final_link_relocate) + (elfNN_aarch64_tls_relax, elfNN_aarch64_relocate_section) + (elfNN_aarch64_gc_sweep_hook, elfNN_aarch64_check_relocs): Handle + BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend) + (_bfd_aarch64_elf_resolve_relocation): Likewise. + * reloc.c (BFD_RELOC_AARCH64_TLSGD_ADR_PREL21): Define. + +2015-02-26 Marcus Shawcroft + + * elfnn-aarch64.c (IS_AARCH64_TLS_RELOC) + (elfNN_aarch64_howto_table, aarch64_tls_transition_without_check) + (aarch64_reloc_got_type, elfNN_aarch64_final_link_relocate) + (elfNN_aarch64_tls_relax, elfNN_aarch64_relocate_section) + (elfNN_aarch64_gc_sweep_hook, elfNN_aarch64_check_relocs): Handle + BFD_RELOC_AARCH64_TLSGD_ADR_PREL21. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend) + (_bfd_aarch64_elf_resolve_relocation): Likewise. + * reloc.c (BFD_RELOC_AARCH64_TLSGD_ADR_PREL21): Define. + +2015-02-26 Marcus Shawcroft + + * elfnn-aarch64.c: (TLSIE_LD_GOTTREL_PREL19): Fix HOWTO bit field width. + (aarch64_tls_transition_without_check, aarch64_reloc_got_type) + (elfNN_aarch64_final_link_relocate, elfNN_aarch64_tls_relax) + (elfNN_aarch64_relocate_section, elfNN_aarch64_gc_sweep_hook) + (elfNN_aarch64_check_relocs): Handle + BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19. + + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend) + (_bfd_aarch64_elf_resolve_relocation): Likewise. + +2015-02-26 Marcus Shawcroft + + * elfnn-aarch64.c: (TLSDESC_CALL): Fix HOWTO bit field width. + +2015-02-26 Marcus Shawcroft + + * elfnn-aarch64.c (TLSLE_MOVW_TPREL_G2) + (TLSLE_MOVW_TPREL_G1, TLSLE_MOVW_TPREL_G1_NC) + (TLSLE_MOVW_TPREL_G0, TLSLE_MOVW_TPREL_G0_NC): Fix bit field + width. + +2015-02-26 Marcus Shawcroft + + * elfnn-aarch64.c: (TLSIE_MOVW_GOTTPREL_G0_NC): Fix HOWTO bit + field width. + +2015-02-26 Nick Clifton + + PR binutils/17512 + * coffcode.h (coff_compute_section_file_positions): Report + negative page sizes. + * elf.c (elf_fake_sections): Handle excessive alignmment powers. + (assign_file_positions_for_non_load_sections): Replace assertion + with an error message. + (rewrite_elf_program_header): Handle excessive segment + alignments. + * mach-o.c (bfd_mach_o_read_section_32): Likewise. + (bfd_mach_o_read_section_64): Likewise. + * peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Use %B to + print a bfd name, not %A. + +2015-02-26 Alan Modra + + * elf64-ppc.c (plt_stub_size, build_plt_stub): Don't build + thread-safe stubs for iplt. + (build_tls_get_addr_stub): Restore r2 immediately after call. + +2015-02-26 Terry Guo + + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Update how we + merge Tag_ABI_HardFP_use. + +2015-02-26 Alan Modra + + * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Heed -z nocopyreloc. + Use text relocs rather than giving an error on trying to use + .dynbss for protected shared lib vars. + * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. + +2015-02-25 Andrew Burgess + + * elf32-avr.c (struct elf_avr_section_data): New structure. + (struct avr_relax_info): New structure. + (elf_avr_new_section_hook): New function. + (struct elf_avr_section_data): Add relax_info. + (get_avr_relax_info): New function. + (init_avr_relax_info): New function. + (elf32_avr_relax_delete_bytes): Find next property record before + deleting bytes. When deleting don't move bytes beyond the next + property record. + (avr_elf32_assign_records_to_section): New function. + (avr_property_record_compare): New function. + (avr_load_all_property_sections): New function. + (elf32_avr_relax_section): Load property data. After relaxing the + section, move any .align directives that have enough deleted bytes + before them. + (bfd_elf32_new_section_hook): Define. + +2015-02-25 Andrew Burgess + + * elf32-avr.h (struct avr_property_header): New strucure. + (avr_elf32_load_property_records): Declare. + (avr_elf32_property_record_name): Declare. + * elf32-avr.c: Add bfd_stdint.h include. + (retrieve_local_syms): New function. + (get_elf_r_symndx_section): New function. + (get_elf_r_symndx_offset): New function. + (internal_reloc_compare): New function. + (struct avr_find_section_data): New structure. + (avr_is_section_for_address): New function. + (avr_find_section_for_address): New function. + (avr_elf32_load_records_from_section): New function. + (avr_elf32_load_property_records): New function. + (avr_elf32_property_record_name): New function. + +2015-02-25 Andrew Burgess + + * elf32-avr.h (AVR_PROPERTY_RECORD_SECTION_NAME): Define. + (AVR_PROPERTY_RECORDS_VERSION): Define. + (AVR_PROPERTY_SECTION_HEADER_SIZE): Define. + (struct avr_property_record): New structure. + +2015-02-24 Nick Clifton + + * elf32-v850.c (v850_set_note): New function. Creates a Renesas + style note entry. + (v850_elf_make_note_section): New function. Creates a note + section. + (v850_elf_create_sections): New function. Create a note section + if one is not already present. + (v850_elf_set_note): New function. Adds a note to a bfd. + (v850_elf_copy_private_bfd_data): New function. Copies V850 + notes. + (v850_elf_merge_notes): New function. Merges V850 notes. + (print_v850_note): New function. Displays a V850 note. + (v850_elf_print_notes): New function. Displays all notes attached + to a bfd. + (v850_elf_merge_private_bfd_data): Call v850_elf_merge_notes. + (v850_elf_print_private_bfd_data): Call v850_elf_print_notes. + (v850_elf_fake_sections): Set the type of the V850 note section. + * bfd-in.h (v850_elf_create_sections): Add prototype. + (v850_elf_set_note): Add prototype. + * bfd-in2.h: Regenerate. + +2015-02-24 Nick Clifton + + * configure.ac (AC_CHECK_HEADERS): Add wctype.h. + * configure: Regenerate. + * config.in: Regenerate. + * peXXigen.c: Include wctype.h if HAVE_WCTYPE_H is defined. + (u16_mbtowc): Use wint_t types if HAVE_WCTYPE_H is defined. + (rsrc_cmp): Use towlower instead of wcsncasecmp if HAVE_WCTYPE_H + is defined. + +2015-02-24 Nick Clifton + + * pdp11.c (set_section_contents): Pad the .text and .data sections + to their aligned sizes. + +2015-02-23 Yoshinori Sato + + * config.bfd: Add h8300-*-linux. + * configure.ac: Add h8300_elf32_linux_vec. + * configure: Regenerate. + * elf32-h8300.c: Likewise. + * targets.c(_bfd_target_vector): Likewise. + +2015-02-23 Nick Clifton + + PR 17914 + * cpu-w65.c: Correct typos in license notice. + + PR 17940 + * elf32-msp430.c (msp430_elf_relax_delete_bytes): Adjust debug + symbols at end of sections. Adjust function sizes. + +2015-02-20 Andreas Arnez + + * elf-bfd.h (elfcore_write_s390_vxrs_low): Add prototype. + (elfcore_write_s390_vxrs_high): Likewise. + * elf.c (elfcore_grok_s390_vxrs_low): New function. + (elfcore_grok_s390_vxrs_high): New function. + (elfcore_grok_note): Call them. + (elfcore_write_s390_vxrs_low): New function. + (elfcore_write_s390_vxrs_high): New function. + (elfcore_write_register_note): Call them. + +2015-02-19 Branko Drevensek + + PR 17995 + * verilog.c (verilog_write_record): Correct buffer size. + +2015-02-19 Alan Modra + + * elflink.c (_bfd_elf_define_linkage_sym): Set 'bed' earlier. + +2015-02-19 Alan Modra + + PR ld/4317 + * elflink.c (elf_link_input_bfd): Drop undefined local syms. + (elf_link_output_extsym): Drop local and global undefined syms. + Tidy. Expand comment. + +2015-02-17 Alan Modra + + PR ld/17975 + * elflink.c (struct elf_outext_info): Remove need_second_pass + and second_pass. + (elf_link_output_extsym): Delete code handling second forced + local pass. Move code emitting NULL STT_FILE symbol later, so + that it can be omitted if forced local is stripped. Don't + emit the NULL STT_FILE if no file symbols have been output. + (bfd_elf_final_link): Remove second forced local pass. + * elf32-ppc.c (add_stub_sym): Set linker_def on linker syms. + (ppc_elf_size_dynamic_sections): Likewise. + * elf64-ppc.c (ppc_build_one_stub): Likewise. + (build_global_entry_stubs): Likewise. + (ppc64_elf_build_stubs): Likewise. + +2015-02-16 H.J. Lu + + PR ld/17975 + * elflink.c (elf_link_output_extsym): Only check filesym_count + when outputting a NULL FILE symbol. Set second_pass_sym to + h->forced_local && !h->root.linker_def. + +2015-02-15 H.J. Lu + + * elf32-i386.c (elf_i386_always_size_sections): Set root.linker_def + on _TLS_MODULE_BASE_. + * elf64-x86-64.c (elf_x86_64_always_size_sections): Likewise. + +2015-02-15 Alan Modra + + * dwarf2.c (read_rangelist): Correct buffer overflow check + Whitespace throughout file. + +2015-02-14 Alan Modra + + PR ld/17973 + * bfd.c (struct bfd): Add lto_output. + * linker.c (_bfd_handle_already_linked): Explicitly test for + objects added by the lto plugin. + * opncls.c (_bfd_new_bfd_contained_in): Copy lto_output and + no_export flags from archive. + * archive.c (open_nested_file): New function, setting lto_output + and no_export, extracted from.. + (find_nested_archive): ..here. Flip params. Rename from + _bfd_find_nested_archive. + (_bfd_get_elt_at_filepos): Correct var typo. Use open_nested_file. + (_bfd_look_for_bfd_in_cache): Copy no_export. + * elflink.c (elf_link_add_object_symbols): Remove now unnecessary + my_archive->no_export test. + (elf_link_input_bfd): Drop existing lto_output STT_FILE syms. + Don't use the file name when adding lto_output STT_FILE sym. + * bfd-in2.h: Regenerate. + +2015-02-13 Alan Modra + + PR binutils/17512 + * elf64-ppc.c (opd_entry_value): Tighten offset check. Remove + now redundant assert. + +2015-02-12 Nick Clifton + + PR binutils/17512 + * dwarf.c (read_1_byte, read_1_signed_byte, read_2_bytes) + (read_4_bytes, read_8_bytes, read_n_bytes, read_string) + (read_indirect_string, read_alt_indirect_string) + (read_alt_indirect_ref, read_address, read_abbrevs) + (read_attribute_value, read_attribute, decode_line_info) + (find_abstract_instance_name, read_rangelist) + (scan_unit_for_symbols, parse_comp_unit) + (_bfd_dwarf2_find_nearest_line): Harden DWARF reading code. Pass + end pointers to reading functions and check for offsets taking + pointers out of range. Replace calls to read_*_leb128 with calls + to safe_read_leb128. + + (* elf64-ppc.c (opd_entry_value): Add a check for an overlarge + offset. + * syms.c (_bfd_stab_section_find_nearest_line): Add checks for + computed file_name address being before the start of the string + table. + +2015-02-11 H.J. Lu + + PR ld/17878 + * bfd.c (bfd_plugin_format): New. + (bfd): Add plugin_format and plugin_dummy_bfd. + * plugin.c (try_load_plugin): Take a pointer to bfd_boolean + argument to return TRUE if any plugin is found. Set plugin_format. + (has_plugin): New. + (bfd_plugin_target_p): New. + (bfd_plugin_specified_p): Likewise. + (bfd_plugin_target_p): Likewise. + (register_ld_plugin_object_p): Likewise. + (bfd_plugin_set_plugin): Set has_plugin. + (load_plugin): Cache try_load_plugin result. + (bfd_plugin_object_p): Try ld_plugin_object_p first. Check + plugin_format. + * plugin.h (bfd_plugin_target_p): New. + (bfd_plugin_specified_p): Likewise. + (register_ld_plugin_object_p): Likewise. + * bfd-in2.h: Regenerated. + +2015-02-11 Pedro Alves + + * libbfd-in.h [__cplusplus]: Open extern "C" scope. + * libcoff-in.h [__cplusplus]: Open extern "C" scope. + * libbfd.h: Regenerate. + * libcoff.h: Regenerate. + + * elf-bfd.h [__cplusplus]: Wrap in extern "C". + * mach-o.h [__cplusplus]: Wrap in extern "C". + * som.h [__cplusplus]: Wrap in extern "C". + +2015-02-10 Nick Clifton + + PR binutils/17512 + * coffcode.h (styp_to_sec_flags): Use an unsigned long type to + hold the flag bits. + * peXXigen.c (pe_print_reloc): Use unsigned types to hold the + size and number of relocs. + (pe_print_debugdata): Use a 32-bit aligned buffer to store the + codeview record. + * versados.c (process_otr): Check the esdid value before using it + to access the EDATA. + +2015-02-09 Ed Maste + + * elf32-i386.c (elf_i386_get_plt_sym_val): Avoid incrementing + uninitialized and unused variable. + * elf64-x86-64.c (elf_x86_64_get_plt_sym_val): Likewise. + +2015-02-09 Alan Modra + + * elf32-ppc.c (ppc_elf_relocate_section): Don't segfault on NULL + tls_sec. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elflink.c (elf_link_output_extsym): Don't assert on NULL tls_sec. + +2015-02-09 Alan Modra + + * elflink.c: Whitespace, formatting fixes. + (elf_link_input_bfd): Clarify comment. + (elf_link_output_extsym): Exclude symbols in linker created + sections when testing for plugin symbols. + +2015-02-07 H.J. Lu + + PR ld/17935 + * elf32-i386.c (elf_i386_readonly_dynrelocs): Also issue a + warning for relocation in readonly section for -z text. + (elf_i386_size_dynamic_sections): Likewise. + * elf64-x86-64.c (elf_x86_64_readonly_dynrelocs): Likewise. + (elf_x86_64_size_dynamic_sections): Likewise. + +2015-02-06 H.J. Lu + + PR ld/12365 + PR ld/14272 + * elflink.c (_bfd_elf_fix_symbol_flags): Revert the last change. + (elf_link_input_bfd): Mark the plugin symbol undefined if it is + referenced from a non-IR file. + +2015-02-06 Nick Clifton + + PR binutils/17512 + * peXXigen.c (rsrc_print_resource_entries): Add range check for + addresses that wrap around the address space. + (rsrc_parse_entry): Likewise. + +2015-02-03 H.J. Lu + + PR ld/12365 + PR ld/14272 + * elflink.c (_bfd_elf_fix_symbol_flags): Mark the plugin symbol + undefined if it is referenced from a non-IR file. + +2015-02-03 Nick Clifton + + PR binutils/17512 + * ecoff.c: Use bfd_alloc2 to allocate space for structure arrays. + (_bfd_ecoff_slurp_symbol_table): Check for a negative symbol + index or an out of range fdr index. + * elf-m10300.c (mn10300_info_to_howto): Fix typo in error message. + * elf32-arc.c (arc_info_to_howto_rel): Likewise. + * elf32-avr.c (avr_info_to_howto_rela): Likewise. + * elf32-cr16.c (elf_cr16_info_to_howto): Likewise. + * elf32-cr16c.c (elf_cr16c_info_to_howto_rel): Likewise. + * elf32-cris.c (cris_info_to_howto_rela): Likewise. + * elf32-crx.c (elf_crx_info_to_howto): Likewise. + * elf32-d10v.c (d10v_info_to_howto_rel): Likewise. + * elf32-d30v.c (d30v_info_to_howto_rel): Likewise. + * elf32-epiphany.c (epiphany_info_to_howto_rela): Likewise. + * elf32-fr30.c (fr30_info_to_howto_rela): Likewise. + * elf32-frv.c (frv_info_to_howto_rela): Likewise. + * elf32-i370.c (i370_elf_info_to_howto): Likewise. + * elf32-i960.c (elf32_i960_info_to_howto_rel): Likewise. + * elf32-ip2k.c (ip2k_info_to_howto_rela): Likewise. + * elf32-iq2000.c (iq2000_info_to_howto_rela): Likewise. + * elf32-lm32.c (lm32_info_to_howto_rela): Likewise. + * elf32-m32c.c (m32c_info_to_howto_rela): Likewise. + * elf32-m32r.c (m32r_info_to_howto_rel): Likewise. + * elf32-m68hc11.c (m68hc11_info_to_howto_rel): Likewise. + * elf32-m68hc12.c (m68hc11_info_to_howto_rel): Likewise. + * elf32-mcore.c (mcore_elf_info_to_howto): Likewise. + * elf32-mep.c (mep_info_to_howto_rela): Likewise. + * elf32-metag.c (metag_info_to_howto_rela): Likewise. + * elf32-microblaze.c (microblaze_elf_info_to_howto): Likewise. + * elf32-moxie.c (moxie_info_to_howto_rela): Likewise. + * elf32-msp430.c (msp430_info_to_howto_rela): Likewise. + * elf32-mt.c (mt_info_to_howto_rela): Likewise. + * elf32-nds32.c (nds32_info_to_howto_rel): Likewise. + * elf32-or1k.c (or1k_info_to_howto_rela): Likewise. + * elf32-pj.c (pj_elf_info_to_howto): Likewise. + * elf32-ppc.c (ppc_elf_info_to_howto): Likewise. + * elf32-rl78.c (rl78_info_to_howto_rela): Likewise. + * elf32-rx.c (rx_info_to_howto_rela): Likewise. + * elf32-sh.c (sh_elf_info_to_howto): Likewise. + * elf32-spu.c (spu_elf_info_to_howto): Likewise. + * elf32-v850.c (v850_elf_perform_relocation): Likewise. + * elf32-vax.c (rtype_to_howto): Likewise. + * elf32-visium.c (visium_info_to_howto_rela): Likewise. + * elf32-xgate.c (xgate_info_to_howto_rel): Likewise. + * elf32-xtensa.c (elf_xtensa_info_to_howto_rela): Likewise. + * elf64-alpha.c (elf64_alpha_info_to_howto): Likewise. + * elf64-mmix.c (mmix_info_to_howto_rela): Likewise. + * mach-o.c: Use bfd_alloc2 to allocate space for structure arrays. + (bfd_mach_o_canonicalize_one_reloc): Fix check on out + of range symbol indicies. + (bfd_mach_o_canonicalize_relocs): Check for out of range alloc. + (bfd_mach_o_canonicalize_dynamic_reloc): Likewise. + (bfd_mach_o_build_dysymtab): Likewise. + (bfd_mach_o_write_symtab_content): Set the string table size to + zero upon error. + (bfd_mach_o_read_symtab_symbols): Reset the nsyms value if the + read fails. + * peXXigen.c (pe_print_edata): Check for numeric overflow in edt + fields. + * tekhex.c (first_phase): Check for src pointer reaching end of + buffer. + +2015-02-03 Will Newton + + * elfnn-aarch64.c (elfNN_aarch64_finish_dynamic_symbol): + Set st_value to zero for undefined symbols if the reference + is weak or pointer_equality_needed is FALSE. + + * elf32-arm.c (elf32_arm_finish_dynamic_symbol): Improve + comment discussing why we clear st_value for some symbols. + +2015-02-02 Kuan-Lin Chen + + * elf32-nds32.c (nds32_get_section_contents): Add one more argument. + (nds32_elf_relocate_section): Do not relocate R_NDS32_LONGJUMP7. + +2015-01-29 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Correct GOT_TLSLD + optimization. Tidy mask for GOT_TLSGD optimization. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. Correct + location of nop zapping high insn too. + +2015-01-28 Alan Modra + + * elf64-ppc.h (struct ppc64_elf_params): Add "object_in_toc". + * elf64-ppc.c (ppc64_elf_add_symbol_hook): Assume that global symbols + in .toc indicate xlc compiled code that might require a rw .toc. + +2015-01-28 James Bowman + + * Makefile.am: Add FT32 files. + * archures.c (enum bfd_architecture): Add bfd_arch_ft32. + (bfd_mach_ft32): Define. + (bfd_ft32_arch): Declare. + (bfd_archures_list): Add bfd_ft32_arch. + * config.bfd: Handle FT32. + * configure.ac: Likewise. + * cpu-ft32.c: New file. + * elf32-ft32.c: New file. + * reloc.c (BFD_RELOC_FT32_10, BFD_RELOC_FT32_20, BFD_RELOC_FT32_17, + BFD_RELOC_FT32_18): Define. + * targets.c (_bfd_target_vector): Add ft32_elf32_vec. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * Makefile.in: Regenerate. + * configure: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + +2015-01-27 Nick Clifton + + PR binutils/17512 + * pdp11.c (aout_get_external_symbols): Return false if there are + no symbols. + + * dwarf2.c (concat_filename): Check for an empty directory table. + (scan_unit_for_symbols): Check for reading off the end of the + unit. + (parse_comp_unit): Check for a DW_AT_comp_dir attribute with a + non-string form. + * elf64-ppc.c (opd_entry_value): Fail if there are no relocs + available. + +2015-01-26 Kuan-Lin Chen + + * elf32-nds32.c (nds32_elf_pick_relax): Fix again setting. + +2015-01-22 DJ Delorie + + * elf32-m32c.c (m32c_apply_reloc_24): New. + (m32c_elf_howto_table): Use it for R_M32C_24. + (m32c_elf_relocate_section): Handle R_M32C_24 specially. + +2015-01-22 Nick Clifton + + PR binutils/17512 + * coffcode.h (handle_COMDAT): When searching for the section + symbol, make sure that there is space left in the symbol table. + * vms-alpha.c (_bfd_vms_slurp_ehdr): Add range checks. + +2015-01-21 Nick Clifton + + PR binutils/17512 + * coffcode.h (coff_set_arch_mach_hook): Check return value from + bfd_malloc. + (coff_slurp_line_table): Return FALSE if the line number + information was corrupt. + (coff_slurp_symbol_table): Return FALSE if the symbol information + was corrupt. + * mach-o.c (bfd_mach_o_bfd_copy_private_header_data): Always + initialise the fields of the dyld_info structure. + (bfd_mach_o_build_exec_seg_command): Replace assertion with an + error message and a return value. + (bfd_mach_o_layout_commands): Change the function to boolean. + Return FALSE if the function fails. + (bfd_mach_o_build_commands): Fail if bfd_mach_o_layout_commands + fails. + (bfd_mach_o_read_command): Fail if an unrecognised command is + encountered. + * peXXigen.c (_bfd_XXi_swap_aouthdr_in): Set bfd_error if the + read fails. + (slurp_symtab): Check the return from bfd_malloc. + (_bfd_XX_bfd_copy_private_bfd_data_common): Fail if the copy + encountered an error. + (_bfd_XXi_final_link_postscript): Fail if a section could not be + copied. + * peicode.h (pe_bfd_object_p): Fail if the header could not be + swapped in. + * tekhex.c (first_phase): Fail if the section is too big. + * versados.c (struct esdid): Add content_size field. + (process_otr): Use and check the new field. + (versados_get_section_contents): Check that the section exists and + that the requested data is available. + +2015-01-20 Chung-Lin Tang + + * elf32-nios2.c (elf_backend_default_execstack): Define as 0. + +2015-01-20 Alan Modra + + PR ld/17615 + * elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Don't drop + ELF_COMMON_DEF syms. + +2015-01-19 Alan Modra + + PR ld/17615 + * elf-bfd.h (ELF_COMMON_DEF_P): Note that this might be true for + linker script assignments too. + * elflink.c (elf_gc_sweep_symbol): Don't drop ELF_COMMON_DEF syms. + (bfd_elf_gc_mark_dynamic_ref_symbol): Similarly. + +2015-01-19 Alan Modra + + * elf32-bfin.c (bfin_bfd_reloc_type_lookup): Correct loop iteration + to allow return of first howto. + * elf32-fr30.c (fr30_reloc_type_lookup): Likewise. + * elf32-m32c.c (m32c_reloc_type_lookup): Likewise. + * elf32-moxie.c (moxie_reloc_type_lookup): Likewise. + * elf32-or1k.c (or1k_reloc_type_lookup): Likewise. + * elf32-rl78.c (rl78_reloc_type_lookup): Likewise. + * elf32-rx.c (rx_reloc_type_lookup): Likewise. + * elf32-tilepro.c (tilepro_reloc_type_lookup): Likewise. + * elf32-xstormy16.c (xstormy16_reloc_type_lookup): Likewise. + * elfxx-tilegx.c (tilegx_reloc_type_lookup): Likewise. + * elf32-nios2.c (nios2_reloc_map): Add mapping for R_NIOS2_NONE. + * elf32-spu.c (spu_elf_bfd_to_reloc_type): Allow return of R_SPU_NONE. + (spu_elf_reloc_type_lookup): Adjust to suit. + +2015-01-19 Alan Modra + + * bfd-in.h (bfd_get_section_limit_octets): New define, extracted from.. + (bfd_get_section_limit): ..here. + * reloc.c (bfd_perform_relocation): Correct bfd_reloc_outofrange check. + (bfd_install_relocation, _bfd_final_link_relocate): Add same check here. + * elf32-sh.c (sh_elf_reloc): Correct bfd_reloc_outofrange check. + * elf32-ppc.c (ppc_elf_addr16_ha_reloc): Remove duplicated + bfd_reloc_outofrange check. + * bfd-in2.h: Regenerate. + + * cpu-ns32k.c (_bfd_do_ns32k_reloc_contents): Return bfd_reloc_ok + on zero size relocs. + * ecoff.c (ecoff_reloc_link_order): Likewise. + * elf32-nds32.c (nds32_relocate_contents): Likewise. + * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise. + + * reloc.c (_bfd_relocate_contents): Don't bomb on zero size relocs. + (_bfd_clear_contents): Likewise. + * elfxx-mips.c (mips_elf_obtain_contents): Likewise. + (mips_elf_perform_relocation): Likewise. + + * aoutx.h (aout_link_reloc_link_order): Allow for NULL return + from malloc on zero size alloc. + * cofflink.c (_bfd_coff_reloc_link_order): Likewise. + * elflink.c (elf_reloc_link_order): Likewise. + * linker.c (_bfd_generic_reloc_link_order): Likewise. + * pdp11.c (aout_link_reloc_link_order): Likewise. + * xcofflink.c (xcoff_reloc_link_order): Likewise. + + * aoutx.h (howto_table_ext): Ensure NONE relocs have size 3, + bitsize 0, and complain_overflow_dont. + * coff-sparc.c (coff_sparc_howto_table): Likewise. + * elf-hppa.h (elf_hppa_howto_table): Likewise. + * elf-m10200.c (elf_mn10200_howto_table): Likewise. + * elf-m10300.c (elf_mn10300_howto_table): Likewise. + * elf32-arc.c (elf_arc_howto_table): Likewise. + * elf32-arm.c (elf32_arm_howto_table_1): Likewise. + * elf32-avr.c (elf_avr_howto_table): Likewise. + * elf32-bfin.c (bfin_howto_table): Likewise. + * elf32-cr16.c (cr16_elf_howto_table): Likewise. + * elf32-cris.c (cris_elf_howto_table): Likewise. + * elf32-crx.c (crx_elf_howto_table): Likewise. + * elf32-d10v.c (elf_d10v_howto_table): Likewise. + * elf32-d30v.c (elf_d30v_howto_table): Likewise. + * elf32-dlx.c (dlx_elf_howto_table): Likewise. + * elf32-epiphany.c (epiphany_elf_howto_table): Likewise. + * elf32-fr30.c (fr30_elf_howto_table): Likewise. + * elf32-frv.c (elf32_frv_howto_table): Likewise. + * elf32-h8300.c (h8_elf_howto_table): Likewise. + * elf32-i370.c (i370_elf_howto_raw): Likewise. + * elf32-i386.c (elf_howto_table): Likewise. + * elf32-i860.c (elf32_i860_howto_table): Likewise. + * elf32-i960.c (elf32_i960_relocate): Likewise. + * elf32-ip2k.c (ip2k_elf_howto_table): Likewise. + * elf32-iq2000.c (iq2000_elf_howto_table): Likewise. + * elf32-lm32.c (lm32_elf_howto_table): Likewise. + * elf32-m32c.c (m32c_elf_howto_table): Likewise. + * elf32-m32r.c (m32r_elf_howto_table): Likewise. + * elf32-m68hc11.c (elf_m68hc11_howto_table): Likewise. + * elf32-m68hc12.c (elf_m68hc11_howto_table): Likewise. + * elf32-m68k.c (howto_table): Likewise. + * elf32-mcore.c (mcore_elf_howto_raw): Likewise. + * elf32-mep.c (mep_elf_howto_table): Likewise. + * elf32-metag.c (elf_metag_howto_table): Likewise. + * elf32-microblaze.c (microblaze_elf_howto_raw): Likewise. + * elf32-mips.c (elf_mips_howto_table_rel): Likewise. + * elf32-moxie.c (moxie_elf_howto_table): Likewise. + * elf32-msp430.c (elf_msp430_howto_table): Likewise. + * elf32-mt.c (mt_elf_howto_table): Likewise. + * elf32-nds32.c (nds32_elf_howto_table): Likewise. + * elf32-nios2.c (elf_nios2_howto_table_rel): Likewise. + * elf32-or1k.c (or1k_elf_howto_table): Likewise. + * elf32-pj.c (pj_elf_howto_table): Likewise. + * elf32-ppc.c (ppc_elf_howto_raw): Likewise. + * elf32-rl78.c (rl78_elf_howto_table): Likewise. + * elf32-rx.c (rx_elf_howto_table): Likewise. + * elf32-s390.c (elf_howto_table): Likewise. + * elf32-score.c (elf32_score_howto_table): Likewise. + * elf32-score7.c (elf32_score_howto_table): Likewise. + * elf32-sh-relocs.h (R_SH_NONE): Likewise. + * elf32-spu.c (elf_howto_table): Likewise. + * elf32-tic6x.c (elf32_tic6x_howto_table): Likewise. + * elf32-tilepro.c (tilepro_elf_howto_table): Likewise. + * elf32-v850.c (v850_elf_howto_table): Likewise. + * elf32-vax.c (howto_table): Likewise. + * elf32-visium.c (visium_elf_howto_table): Likewise. + * elf32-xc16x.c (xc16x_elf_howto_table): Likewise. + * elf32-xgate.c (elf_xgate_howto_table): Likewise. + * elf32-xstormy16.c (xstormy16_elf_howto_table): Likewise. + * elf32-xtensa.c (elf_howto_table): Likewise. + * elf64-alpha.c (elf64_alpha_howto_table): Likewise. + * elf64-mips.c (mips_elf64_howto_table_rel): Likewise. + * elf64-mmix.c (elf_mmix_howto_table): Likewise. + * elf64-ppc.c (ppc64_elf_howto_raw): Likewise. + * elf64-s390.c (elf_howto_table): Likewise. + * elf64-sh64.c (sh_elf64_howto_table): Likewise. + * elf64-x86-64.c (x86_64_elf_howto_table): Likewise. + * elfn32-mips.c (elf_mips_howto_table_rel): Likewise. + * elfnn-aarch64.c (elfNN_aarch64_howto_table): Likewise. + (elfNN_aarch64_howto_none): Likewise. + * elfxx-ia64.c (ia64_howto_table): Likewise. + * elfxx-sparc.c (_bfd_sparc_elf_howto_table): Likewise. + * elfxx-tilegx.c (tilegx_elf_howto_table): Likewise. + * nlm32-sparc.c (nlm32_sparc_howto_table): Likewise. + +2015-01-15 H.J. Lu + + PR ld/17847 + * elf64-x86-64.c (elf_x86_64_relocate_section): Don't complain + about -fPIC if the symbol is undefined when building executable. + +2015-01-15 Nick Clifton + + PR binutils/17512 + * elf-m10300.c (mn10300_info_to_howto): Replace assertion with an + error message. Never return an invalid howto pointer. + * elf32-cr16.c (cr16_info_to_howto): Likewise. + * elf32-crx.c (elf_crx_info_to_howto): Likewise. + * elf32-i370.c (i370_elf_info_to_howto): Likewise. + * elf32-mcore.c (mcore_elf_info_to_howto): Likewise. + * elf32-microblaze.c (microblaze_elf_info_to_howto): Likewise. + * elf32-mips.c (mips_elf32_rtype_to_howto): Likewise. + * elf32-pj.c (pj_elf_info_to_howto): Likewise. + * elf32-ppc.c (ppc_elf_info_to_howto): Likewise. + * elf32-spu.c (spu_elf_info_to_howto): Likewise. + * elf32-v850.c (v850_elf_info_to_howto_rela): Likewise. + * elf32-vax.c (rtype_to_howto): Likewise. + * elf64-alpha.c (elf64_alpha_info_to_howto): Likewise. + * elf64-mips.c (mips_elf64_rtype_to_howto): Likewise. + * elfn32-mips.c (sh_elf_info_to_howto): Likewise. + * elf32-sh.c (sh_elf_info_to_howto): Likewise. + (sh_elf_reloc): Check that the reloc is in range. + * reloc.c (bfd_perform_relocation): Check that the section is big + enough for the entire reloc. + (bfd_generic_get_relocated_section_contents): Report unexpected + return values from perform_reloc. + +2015-01-15 Nick Clifton + + * elf32-msp430.c (msp430_elf_relax_section): Skip unhandled + relocs. Include PC-relative adjustment for R_MSP430X_ABS16 + relaxation. + +2015-01-15 Alan Modra + + * elflink.c (_bfd_elf_link_omit_section_dynsym): Return true for + any output section matching a linker created dynobj section. + +2015-01-15 Alan Modra + + PR 17842 + * elflink.c (elf_link_output_sym): Assert elf_onesymtab set. + (bfd_elf_final_link): Always create a symbol table when emit_relocs. + Don't assign symtab file position unless symbols will be output. + Merge blocks with condition in common. Don't call + elf_backend_output_arch_local_syms or elf_backend_output_arch_syms + unless other symbols are output. Move assignment of symtab_shndx + file position. Localize variable. + +2015-01-14 Jiong Wang + + * elf32-arm.c (elf32_arm_final_link_relocate): Reject R_ARM_32/_NOI when + trying to defer them to runtime. + +2015-01-13 Thomas Preud'homme + + * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Use SYMBOLIC_BIND + to check if a symbol should be bound symbolically. + +2015-01-13 Jiong Wang + + * elfnn-aarch64.c: (elfNN_aarch64_howto_table): Enable overflow check + for TLSLE_MOVW_TPREL_G2. + +2015-01-13 Jiong Wang + + PR ld/17415 + * elfnn-aarch64.c (elfNN_aarch64_howto_table): Mark + R_AARCH64_TLSLE_ADD_TPREL_HI12 as complain_overflow_unsigned. + * elfxx-aarch64.c (_bfd_aarch64_elf_resolve_relocation): Correct the + bit mask. + 2015-01-12 Terry Guo * elflink.c (_bfd_elf_gc_mark_debug_special_section_group): New diff --git a/bfd/Makefile.am b/bfd/Makefile.am index 8ffdbb1..295a83a 100644 --- a/bfd/Makefile.am +++ b/bfd/Makefile.am @@ -43,9 +43,15 @@ noinst_LTLIBRARIES = libbfd.la libbfd_la_LDFLAGS += -rpath $(rpath_bfdlibdir) endif +# This is where we get zlib from. zlibdir is -L../zlib and zlibinc is +# -I../zlib, unless we were configured with --with-system-zlib, in which +# case both are empty. +ZLIB = @zlibdir@ -lz +ZLIBINC = @zlibinc@ + WARN_CFLAGS = @WARN_CFLAGS@ NO_WERROR = @NO_WERROR@ -AM_CFLAGS = $(WARN_CFLAGS) +AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC) AM_CPPFLAGS = -DBINDIR='"$(bindir)"' if PLUGINS bfdinclude_HEADERS += $(INCDIR)/plugin-api.h @@ -99,11 +105,13 @@ ALL_MACHINES = \ cpu-epiphany.lo \ cpu-fr30.lo \ cpu-frv.lo \ + cpu-ft32.lo \ cpu-h8300.lo \ cpu-h8500.lo \ cpu-hppa.lo \ cpu-i370.lo \ cpu-i386.lo \ + cpu-iamcu.lo \ cpu-l1om.lo \ cpu-k1om.lo \ cpu-i860.lo \ @@ -184,11 +192,13 @@ ALL_MACHINES_CFILES = \ cpu-epiphany.c \ cpu-fr30.c \ cpu-frv.c \ + cpu-ft32.c \ cpu-h8300.c \ cpu-h8500.c \ cpu-hppa.c \ cpu-i370.c \ cpu-i386.c \ + cpu-iamcu.c \ cpu-l1om.c \ cpu-k1om.c \ cpu-i860.c \ @@ -323,6 +333,7 @@ BFD32_BACKENDS = \ elf32-epiphany.lo \ elf32-fr30.lo \ elf32-frv.lo \ + elf32-ft32.lo \ elf32-gen.lo \ elf32-h8300.lo \ elf32-hppa.lo \ @@ -513,6 +524,7 @@ BFD32_BACKENDS_CFILES = \ elf32-epiphany.c \ elf32-fr30.c \ elf32-frv.c \ + elf32-ft32.c \ elf32-gen.c \ elf32-h8300.c \ elf32-hppa.c \ @@ -836,7 +848,7 @@ ofiles: stamp-ofiles ; @true libbfd_la_SOURCES = $(BFD32_LIBS_CFILES) EXTRA_libbfd_la_SOURCES = $(CFILES) libbfd_la_DEPENDENCIES = $(OFILES) ofiles -libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) +libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) $(ZLIB) libbfd_la_LDFLAGS += -release `cat libtool-soversion` @SHARED_LDFLAGS@ # libtool will build .libs/libbfd.a. We create libbfd.a in the build diff --git a/bfd/Makefile.in b/bfd/Makefile.in index 2c9435c..7092c82 100644 --- a/bfd/Makefile.in +++ b/bfd/Makefile.in @@ -75,12 +75,13 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/plugins.m4 \ $(top_srcdir)/../config/po.m4 \ $(top_srcdir)/../config/progtest.m4 \ - $(top_srcdir)/../config/stdint.m4 $(top_srcdir)/../libtool.m4 \ + $(top_srcdir)/../config/stdint.m4 \ + $(top_srcdir)/../config/zlib.m4 $(top_srcdir)/../libtool.m4 \ $(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)/../config/zlib.m4 \ - $(top_srcdir)/version.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/acinclude.m4 $(top_srcdir)/version.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ @@ -334,6 +335,8 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wordsize = @wordsize@ +zlibdir = @zlibdir@ +zlibinc = @zlibinc@ AUTOMAKE_OPTIONS = 1.11 no-dist foreign ACLOCAL_AMFLAGS = -I . -I .. -I ../config INCDIR = $(srcdir)/../include @@ -349,7 +352,13 @@ libbfd_la_LDFLAGS = $(am__append_1) -release `cat libtool-soversion` \ @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) + +# This is where we get zlib from. zlibdir is -L../zlib and zlibinc is +# -I../zlib, unless we were configured with --with-system-zlib, in which +# case both are empty. +ZLIB = @zlibdir@ -lz +ZLIBINC = @zlibinc@ +AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC) AM_CPPFLAGS = -DBINDIR='"$(bindir)"' @PLUGINS_TRUE@LIBDL = @lt_cv_dlopen_libs@ @@ -399,11 +408,13 @@ ALL_MACHINES = \ cpu-epiphany.lo \ cpu-fr30.lo \ cpu-frv.lo \ + cpu-ft32.lo \ cpu-h8300.lo \ cpu-h8500.lo \ cpu-hppa.lo \ cpu-i370.lo \ cpu-i386.lo \ + cpu-iamcu.lo \ cpu-l1om.lo \ cpu-k1om.lo \ cpu-i860.lo \ @@ -484,11 +495,13 @@ ALL_MACHINES_CFILES = \ cpu-epiphany.c \ cpu-fr30.c \ cpu-frv.c \ + cpu-ft32.c \ cpu-h8300.c \ cpu-h8500.c \ cpu-hppa.c \ cpu-i370.c \ cpu-i386.c \ + cpu-iamcu.c \ cpu-l1om.c \ cpu-k1om.c \ cpu-i860.c \ @@ -624,6 +637,7 @@ BFD32_BACKENDS = \ elf32-epiphany.lo \ elf32-fr30.lo \ elf32-frv.lo \ + elf32-ft32.lo \ elf32-gen.lo \ elf32-h8300.lo \ elf32-hppa.lo \ @@ -814,6 +828,7 @@ BFD32_BACKENDS_CFILES = \ elf32-epiphany.c \ elf32-fr30.c \ elf32-frv.c \ + elf32-ft32.c \ elf32-gen.c \ elf32-h8300.c \ elf32-hppa.c \ @@ -1109,7 +1124,7 @@ OFILES = $(BFD_BACKENDS) $(BFD_MACHINES) @COREFILE@ @bfd64_libs@ libbfd_la_SOURCES = $(BFD32_LIBS_CFILES) EXTRA_libbfd_la_SOURCES = $(CFILES) libbfd_la_DEPENDENCIES = $(OFILES) ofiles -libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) +libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) $(ZLIB) # libtool will build .libs/libbfd.a. We create libbfd.a in the build # directory so that we don't have to convert all the programs that use @@ -1319,6 +1334,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-epiphany.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-fr30.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-frv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ft32.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-h8300.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-h8500.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-hppa.Plo@am__quote@ @@ -1327,6 +1343,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-i860.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-i960.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ia64.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-iamcu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ip2k.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-iq2000.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-k1om.Plo@am__quote@ @@ -1416,6 +1433,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-epiphany.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-fr30.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-frv.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-ft32.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-gen.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-h8300.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-hppa.Plo@am__quote@ diff --git a/bfd/acinclude.m4 b/bfd/acinclude.m4 index acb6419..ce6a72e 100644 --- a/bfd/acinclude.m4 +++ b/bfd/acinclude.m4 @@ -16,8 +16,6 @@ dnl along with this program; see the file COPYING3. If not see dnl . dnl -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 --git a/bfd/aclocal.m4 b/bfd/aclocal.m4 index d9e743e..d3243c6 100644 --- a/bfd/aclocal.m4 +++ b/bfd/aclocal.m4 @@ -979,6 +979,7 @@ m4_include([../config/plugins.m4]) m4_include([../config/po.m4]) m4_include([../config/progtest.m4]) m4_include([../config/stdint.m4]) +m4_include([../config/zlib.m4]) m4_include([../libtool.m4]) m4_include([../ltoptions.m4]) m4_include([../ltsugar.m4]) diff --git a/bfd/aoutx.h b/bfd/aoutx.h index d4e0fec..e3bd2dd 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -203,8 +203,8 @@ reloc_howto_type howto_table_ext[] = HOWTO (RELOC_GLOB_DAT,0, 2, 0, FALSE, 0, complain_overflow_bitfield, 0, "GLOB_DAT", FALSE, 0, 0x00000000, FALSE), HOWTO (RELOC_JMP_SLOT,0, 2, 0, FALSE, 0, complain_overflow_bitfield, 0, "JMP_SLOT", FALSE, 0, 0x00000000, FALSE), HOWTO (RELOC_RELATIVE,0, 2, 0, FALSE, 0, complain_overflow_bitfield, 0, "RELATIVE", FALSE, 0, 0x00000000, FALSE), - HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, 0, "R_SPARC_NONE",FALSE, 0, 0x00000000, TRUE), - HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, 0, "R_SPARC_NONE",FALSE, 0, 0x00000000, TRUE), + HOWTO (0, 0, 3, 0, FALSE, 0, complain_overflow_dont, 0, "R_SPARC_NONE",FALSE, 0, 0x00000000, TRUE), + HOWTO (0, 0, 3, 0, FALSE, 0, complain_overflow_dont, 0, "R_SPARC_NONE",FALSE, 0, 0x00000000, TRUE), #define RELOC_SPARC_REV32 RELOC_WDISP19 HOWTO (RELOC_SPARC_REV32, 0, 2, 32, FALSE, 0, complain_overflow_dont, 0,"R_SPARC_REV32",FALSE, 0, 0xffffffff, FALSE), }; @@ -3816,7 +3816,7 @@ aout_link_reloc_link_order (struct aout_final_link_info *flaginfo, size = bfd_get_reloc_size (howto); buf = (bfd_byte *) bfd_zmalloc (size); - if (buf == NULL) + if (buf == NULL && size != 0) return FALSE; r = MY_relocate_contents (howto, flaginfo->output_bfd, (bfd_vma) pr->addend, buf); diff --git a/bfd/archive.c b/bfd/archive.c index cc4c52f..1715474 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -311,8 +311,12 @@ _bfd_look_for_bfd_in_cache (bfd *arch_bfd, file_ptr filepos) struct ar_cache *entry = (struct ar_cache *) htab_find (hash_table, &m); if (!entry) return NULL; - else - return entry->arbfd; + + /* Unfortunately this flag is set after checking that we have + an archive, and checking for an archive means one element has + sneaked into the cache. */ + entry->arbfd->no_export = arch_bfd->no_export; + return entry->arbfd; } else return NULL; @@ -375,10 +379,27 @@ _bfd_add_bfd_to_archive_cache (bfd *arch_bfd, file_ptr filepos, bfd *new_elt) } static bfd * -_bfd_find_nested_archive (bfd *arch_bfd, const char *filename) +open_nested_file (const char *filename, bfd *archive) { - bfd *abfd; const char *target; + bfd *n_bfd; + + target = NULL; + if (!archive->target_defaulted) + target = archive->xvec->name; + n_bfd = bfd_openr (filename, target); + if (n_bfd != NULL) + { + n_bfd->lto_output = archive->lto_output; + n_bfd->no_export = archive->no_export; + } + return n_bfd; +} + +static bfd * +find_nested_archive (const char *filename, bfd *arch_bfd) +{ + bfd *abfd; /* PR 15140: Don't allow a nested archive pointing to itself. */ if (filename_cmp (filename, arch_bfd->filename) == 0) @@ -394,10 +415,7 @@ _bfd_find_nested_archive (bfd *arch_bfd, const char *filename) if (filename_cmp (filename, abfd->filename) == 0) return abfd; } - target = NULL; - if (!arch_bfd->target_defaulted) - target = arch_bfd->xvec->name; - abfd = bfd_openr (filename, target); + abfd = open_nested_file (filename, arch_bfd); if (abfd) { abfd->archive_next = arch_bfd->nested_archives; @@ -626,12 +644,12 @@ bfd * _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos) { struct areltdata *new_areldata; - bfd *n_nfd; + bfd *n_bfd; char *filename; - n_nfd = _bfd_look_for_bfd_in_cache (archive, filepos); - if (n_nfd) - return n_nfd; + n_bfd = _bfd_look_for_bfd_in_cache (archive, filepos); + if (n_bfd) + return n_bfd; if (0 > bfd_seek (archive, filepos, SEEK_SET)) return NULL; @@ -643,8 +661,6 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos) if (bfd_is_thin_archive (archive)) { - const char *target; - /* This is a proxy entry for an external file. */ if (! IS_ABSOLUTE_PATH (filename)) { @@ -660,7 +676,7 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos) { /* This proxy entry refers to an element of a nested archive. Locate the member of that archive and return a bfd for it. */ - bfd *ext_arch = _bfd_find_nested_archive (archive, filename); + bfd *ext_arch = find_nested_archive (filename, archive); if (ext_arch == NULL || ! bfd_check_format (ext_arch, bfd_archive)) @@ -668,57 +684,60 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos) free (new_areldata); return NULL; } - n_nfd = _bfd_get_elt_at_filepos (ext_arch, new_areldata->origin); - if (n_nfd == NULL) + n_bfd = _bfd_get_elt_at_filepos (ext_arch, new_areldata->origin); + if (n_bfd == NULL) { free (new_areldata); return NULL; } - n_nfd->proxy_origin = bfd_tell (archive); - return n_nfd; + n_bfd->proxy_origin = bfd_tell (archive); + return n_bfd; } + /* It's not an element of a nested archive; open the external file as a bfd. */ - target = NULL; - if (!archive->target_defaulted) - target = archive->xvec->name; - n_nfd = bfd_openr (filename, target); - if (n_nfd == NULL) + n_bfd = open_nested_file (filename, archive); + if (n_bfd == NULL) bfd_set_error (bfd_error_malformed_archive); } else { - n_nfd = _bfd_create_empty_archive_element_shell (archive); + n_bfd = _bfd_create_empty_archive_element_shell (archive); } - if (n_nfd == NULL) + if (n_bfd == NULL) { free (new_areldata); return NULL; } - n_nfd->proxy_origin = bfd_tell (archive); + n_bfd->proxy_origin = bfd_tell (archive); if (bfd_is_thin_archive (archive)) { - n_nfd->origin = 0; + n_bfd->origin = 0; } else { - n_nfd->origin = n_nfd->proxy_origin; - n_nfd->filename = xstrdup (filename); + n_bfd->origin = n_bfd->proxy_origin; + n_bfd->filename = xstrdup (filename); } - n_nfd->arelt_data = new_areldata; + n_bfd->arelt_data = new_areldata; + + /* Copy BFD_COMPRESS, BFD_DECOMPRESS and BFD_COMPRESS_GABI flags. */ + n_bfd->flags |= archive->flags & (BFD_COMPRESS + | BFD_DECOMPRESS + | BFD_COMPRESS_GABI); - /* Copy BFD_COMPRESS and BFD_DECOMPRESS flags. */ - n_nfd->flags |= archive->flags & (BFD_COMPRESS | BFD_DECOMPRESS); + /* Copy is_linker_input. */ + n_bfd->is_linker_input = archive->is_linker_input; - if (_bfd_add_bfd_to_archive_cache (archive, filepos, n_nfd)) - return n_nfd; + if (_bfd_add_bfd_to_archive_cache (archive, filepos, n_bfd)) + return n_bfd; free (new_areldata); - n_nfd->arelt_data = NULL; + n_bfd->arelt_data = NULL; return NULL; } diff --git a/bfd/archures.c b/bfd/archures.c index ca20fb2..95433f8 100644 --- a/bfd/archures.c +++ b/bfd/archures.c @@ -211,6 +211,10 @@ DESCRIPTION .#define bfd_mach_i386_i386_nacl (bfd_mach_i386_i386 | bfd_mach_i386_nacl) .#define bfd_mach_x86_64_nacl (bfd_mach_x86_64 | bfd_mach_i386_nacl) .#define bfd_mach_x64_32_nacl (bfd_mach_x64_32 | bfd_mach_i386_nacl) +. bfd_arch_iamcu, {* Intel MCU *} +.#define bfd_mach_iamcu (1 << 8) +.#define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu) +.#define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax) . bfd_arch_we32k, {* AT&T WE32xxx *} . bfd_arch_tahoe, {* CCI/Harris Tahoe *} . bfd_arch_i860, {* Intel 860 *} @@ -378,6 +382,8 @@ DESCRIPTION .#define bfd_mach_fr550 550 . bfd_arch_moxie, {* The moxie processor *} .#define bfd_mach_moxie 1 +. bfd_arch_ft32, {* The ft32 processor *} +.#define bfd_mach_ft32 1 . bfd_arch_mcore, . bfd_arch_mep, .#define bfd_mach_mep 1 @@ -495,8 +501,10 @@ DESCRIPTION . bfd_arch_aarch64, {* AArch64 *} .#define bfd_mach_aarch64 0 .#define bfd_mach_aarch64_ilp32 32 -. bfd_arch_nios2, -.#define bfd_mach_nios2 0 +. bfd_arch_nios2, {* Nios II *} +.#define bfd_mach_nios2 0 +.#define bfd_mach_nios2r1 1 +.#define bfd_mach_nios2r2 2 . bfd_arch_visium, {* Visium *} .#define bfd_mach_visium 1 . bfd_arch_last @@ -564,6 +572,7 @@ extern const bfd_arch_info_type bfd_h8500_arch; extern const bfd_arch_info_type bfd_hppa_arch; extern const bfd_arch_info_type bfd_i370_arch; extern const bfd_arch_info_type bfd_i386_arch; +extern const bfd_arch_info_type bfd_iamcu_arch; extern const bfd_arch_info_type bfd_i860_arch; extern const bfd_arch_info_type bfd_i960_arch; extern const bfd_arch_info_type bfd_ia64_arch; @@ -589,6 +598,7 @@ extern const bfd_arch_info_type bfd_mmix_arch; extern const bfd_arch_info_type bfd_mn10200_arch; extern const bfd_arch_info_type bfd_mn10300_arch; extern const bfd_arch_info_type bfd_moxie_arch; +extern const bfd_arch_info_type bfd_ft32_arch; extern const bfd_arch_info_type bfd_msp430_arch; extern const bfd_arch_info_type bfd_mt_arch; extern const bfd_arch_info_type bfd_nds32_arch; @@ -654,6 +664,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] = &bfd_hppa_arch, &bfd_i370_arch, &bfd_i386_arch, + &bfd_iamcu_arch, &bfd_i860_arch, &bfd_i960_arch, &bfd_ia64_arch, @@ -679,6 +690,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] = &bfd_mn10200_arch, &bfd_mn10300_arch, &bfd_moxie_arch, + &bfd_ft32_arch, &bfd_msp430_arch, &bfd_mt_arch, &bfd_nds32_arch, diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index 4b37380..ae99d1e 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -292,10 +292,13 @@ typedef struct bfd_section *sec_ptr; #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0) +#define bfd_get_section_limit_octets(bfd, sec) \ + ((bfd)->direction != write_direction && (sec)->rawsize != 0 \ + ? (sec)->rawsize : (sec)->size) + /* Find the address one past the end of SEC. */ #define bfd_get_section_limit(bfd, sec) \ - (((bfd)->direction != write_direction && (sec)->rawsize != 0 \ - ? (sec)->rawsize : (sec)->size) / bfd_octets_per_byte (bfd)) + (bfd_get_section_limit_octets(bfd, sec) / bfd_octets_per_byte (bfd)) /* Return TRUE if input section SEC has been discarded. */ #define discarded_section(sec) \ @@ -434,6 +437,16 @@ extern void bfd_hash_traverse this size. */ extern unsigned long bfd_hash_set_default_size (unsigned long); +/* Types of compressed DWARF debug sections. We currently support + zlib. */ +enum compressed_debug_section_type +{ + COMPRESS_DEBUG_NONE = 0, + COMPRESS_DEBUG = 1 << 0, + COMPRESS_DEBUG_GNU_ZLIB = COMPRESS_DEBUG | 1 << 1, + COMPRESS_DEBUG_GABI_ZLIB = COMPRESS_DEBUG | 1 << 2 +}; + /* This structure is used to keep track of stabs in sections information while linking. */ @@ -931,10 +944,10 @@ extern void bfd_elf32_aarch64_init_maps (bfd *); extern void bfd_elf64_aarch64_set_options - (bfd *, struct bfd_link_info *, int, int, int, int); + (bfd *, struct bfd_link_info *, int, int, int, int, int); extern void bfd_elf32_aarch64_set_options - (bfd *, struct bfd_link_info *, int, int, int, int); + (bfd *, struct bfd_link_info *, int, int, int, int, int); /* ELF AArch64 mapping symbol support. */ #define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP (1 << 0) @@ -985,3 +998,10 @@ extern void bfd_elf32_ia64_after_parse extern void bfd_elf64_ia64_after_parse (int); + +/* V850 Note manipulation routines. */ +extern bfd_boolean v850_elf_create_sections + (struct bfd_link_info *); + +extern bfd_boolean v850_elf_set_note + (bfd *, unsigned int, unsigned int); diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index b718f10..85f2054 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -299,10 +299,13 @@ typedef struct bfd_section *sec_ptr; #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0) +#define bfd_get_section_limit_octets(bfd, sec) \ + ((bfd)->direction != write_direction && (sec)->rawsize != 0 \ + ? (sec)->rawsize : (sec)->size) + /* Find the address one past the end of SEC. */ #define bfd_get_section_limit(bfd, sec) \ - (((bfd)->direction != write_direction && (sec)->rawsize != 0 \ - ? (sec)->rawsize : (sec)->size) / bfd_octets_per_byte (bfd)) + (bfd_get_section_limit_octets(bfd, sec) / bfd_octets_per_byte (bfd)) /* Return TRUE if input section SEC has been discarded. */ #define discarded_section(sec) \ @@ -441,6 +444,16 @@ extern void bfd_hash_traverse this size. */ extern unsigned long bfd_hash_set_default_size (unsigned long); +/* Types of compressed DWARF debug sections. We currently support + zlib. */ +enum compressed_debug_section_type +{ + COMPRESS_DEBUG_NONE = 0, + COMPRESS_DEBUG = 1 << 0, + COMPRESS_DEBUG_GNU_ZLIB = COMPRESS_DEBUG | 1 << 1, + COMPRESS_DEBUG_GABI_ZLIB = COMPRESS_DEBUG | 1 << 2 +}; + /* This structure is used to keep track of stabs in sections information while linking. */ @@ -938,10 +951,10 @@ extern void bfd_elf32_aarch64_init_maps (bfd *); extern void bfd_elf64_aarch64_set_options - (bfd *, struct bfd_link_info *, int, int, int, int); + (bfd *, struct bfd_link_info *, int, int, int, int, int); extern void bfd_elf32_aarch64_set_options - (bfd *, struct bfd_link_info *, int, int, int, int); + (bfd *, struct bfd_link_info *, int, int, int, int, int); /* ELF AArch64 mapping symbol support. */ #define BFD_AARCH64_SPECIAL_SYM_TYPE_MAP (1 << 0) @@ -992,6 +1005,13 @@ extern void bfd_elf32_ia64_after_parse extern void bfd_elf64_ia64_after_parse (int); + +/* V850 Note manipulation routines. */ +extern bfd_boolean v850_elf_create_sections + (struct bfd_link_info *); + +extern bfd_boolean v850_elf_set_note + (bfd *, unsigned int, unsigned int); /* Extracted from init.c. */ void bfd_init (void); @@ -1368,6 +1388,10 @@ typedef struct bfd_section executables or shared objects. This is for COFF only. */ #define SEC_COFF_SHARED 0x8000000 + /* This section should be compressed. This is for ELF linker + internal use only. */ +#define SEC_ELF_COMPRESS 0x8000000 + /* When a section with this flag is being linked, then if the size of the input section is less than a page, it should not cross a page boundary. If the size of the input section is one page or more, @@ -1375,11 +1399,18 @@ typedef struct bfd_section TMS320C54X only. */ #define SEC_TIC54X_BLOCK 0x10000000 + /* This section should be renamed. This is for ELF linker + internal use only. */ +#define SEC_ELF_RENAME 0x10000000 + /* Conditionally link this section; do not link if there are no references found to any symbol in the section. This is for TI TMS320C54X only. */ #define SEC_TIC54X_CLINK 0x20000000 + /* This section contains vliw code. This is for Toshiba MeP only. */ +#define SEC_MEP_VLIW 0x20000000 + /* Indicate that section has the no read flag set. This happens when memory read flag isn't set. */ #define SEC_COFF_NOREAD 0x40000000 @@ -1420,6 +1451,7 @@ typedef struct bfd_section #define SEC_INFO_TYPE_EH_FRAME 3 #define SEC_INFO_TYPE_JUST_SYMS 4 #define SEC_INFO_TYPE_TARGET 5 +#define SEC_INFO_TYPE_EH_FRAME_ENTRY 6 /* Nonzero if this section uses RELA relocations, rather than REL. */ unsigned int use_rela_p:1; @@ -1972,6 +2004,10 @@ enum bfd_architecture #define bfd_mach_i386_i386_nacl (bfd_mach_i386_i386 | bfd_mach_i386_nacl) #define bfd_mach_x86_64_nacl (bfd_mach_x86_64 | bfd_mach_i386_nacl) #define bfd_mach_x64_32_nacl (bfd_mach_x64_32 | bfd_mach_i386_nacl) + bfd_arch_iamcu, /* Intel MCU */ +#define bfd_mach_iamcu (1 << 8) +#define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu) +#define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax) bfd_arch_we32k, /* AT&T WE32xxx */ bfd_arch_tahoe, /* CCI/Harris Tahoe */ bfd_arch_i860, /* Intel 860 */ @@ -2139,6 +2175,8 @@ enum bfd_architecture #define bfd_mach_fr550 550 bfd_arch_moxie, /* The moxie processor */ #define bfd_mach_moxie 1 + bfd_arch_ft32, /* The ft32 processor */ +#define bfd_mach_ft32 1 bfd_arch_mcore, bfd_arch_mep, #define bfd_mach_mep 1 @@ -2256,8 +2294,10 @@ enum bfd_architecture bfd_arch_aarch64, /* AArch64 */ #define bfd_mach_aarch64 0 #define bfd_mach_aarch64_ilp32 32 - bfd_arch_nios2, -#define bfd_mach_nios2 0 + bfd_arch_nios2, /* Nios II */ +#define bfd_mach_nios2 0 +#define bfd_mach_nios2r1 1 +#define bfd_mach_nios2r2 2 bfd_arch_visium, /* Visium */ #define bfd_mach_visium 1 bfd_arch_last @@ -3002,6 +3042,13 @@ to compensate for the borrow when the low bits are added. */ BFD_RELOC_MOXIE_10_PCREL, +/* FT32 ELF relocations. */ + BFD_RELOC_FT32_10, + BFD_RELOC_FT32_20, + BFD_RELOC_FT32_17, + BFD_RELOC_FT32_18, + + /* Fujitsu Frv Relocations. */ BFD_RELOC_FRV_LABEL16, BFD_RELOC_FRV_LABEL24, @@ -4539,6 +4586,7 @@ number for the SBIC, SBIS, SBI and CBI instructions */ BFD_RELOC_RL78_HI8, BFD_RELOC_RL78_LO16, BFD_RELOC_RL78_CODE, + BFD_RELOC_RL78_SADDR, /* Renesas RX Relocations. */ BFD_RELOC_RX_NEG8, @@ -5305,6 +5353,19 @@ a matching LO8XG part. */ BFD_RELOC_NIOS2_GOT_HA, BFD_RELOC_NIOS2_CALL_LO, BFD_RELOC_NIOS2_CALL_HA, + BFD_RELOC_NIOS2_R2_S12, + BFD_RELOC_NIOS2_R2_I10_1_PCREL, + BFD_RELOC_NIOS2_R2_T1I7_1_PCREL, + BFD_RELOC_NIOS2_R2_T1I7_2, + BFD_RELOC_NIOS2_R2_T2I4, + BFD_RELOC_NIOS2_R2_T2I4_1, + BFD_RELOC_NIOS2_R2_T2I4_2, + BFD_RELOC_NIOS2_R2_X1I7_2, + BFD_RELOC_NIOS2_R2_X2L5, + BFD_RELOC_NIOS2_R2_F1I5_2, + BFD_RELOC_NIOS2_R2_L5I4X1, + BFD_RELOC_NIOS2_R2_T1X1I6, + BFD_RELOC_NIOS2_R2_T1X1I6_2, /* IQ2000 Relocations. */ BFD_RELOC_IQ2000_OFFSET_16, @@ -5691,12 +5752,25 @@ the GOT entry for this symbol. Used in conjunction with BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only. */ BFD_RELOC_AARCH64_LD32_GOT_LO12_NC, +/* Unsigned 15 bit byte offset for 64 bit load/store from the page of +the GOT entry for this symbol. Valid in ILP64 ABI only. */ + BFD_RELOC_AARCH64_LD64_GOTOFF_LO15, + +/* Scaled 14 bit byte offset to the page base of the global offset table. */ + BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14, + +/* Scaled 15 bit byte offset to the page base of the global offset table. */ + BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15, + /* Get to the page base of the global offset table entry for a symbols tls_index structure as part of an adrp instruction using a 21 bit PC relative value. Used in conjunction with BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC. */ BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21, +/* AArch64 TLS General Dynamic */ + BFD_RELOC_AARCH64_TLSGD_ADR_PREL21, + /* Unsigned 12 bit byte offset to global offset table entry for a symbols tls_index structure. Used in conjunction with BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21. */ @@ -6260,6 +6334,19 @@ enum bfd_direction both_direction = 3 }; +enum bfd_plugin_format + { + bfd_plugin_uknown = 0, + bfd_plugin_yes = 1, + bfd_plugin_no = 2 + }; + +struct bfd_build_id + { + bfd_size_type size; + bfd_byte data[1]; + }; + struct bfd { /* The filename the application opened the BFD with. */ @@ -6294,7 +6381,7 @@ struct bfd ENUM_BITFIELD (bfd_direction) direction : 2; /* Format_specific flags. */ - flagword flags : 17; + flagword flags : 18; /* Values that may appear in the flags field of a BFD. These also appear in the object_flags field of the bfd_target structure, where @@ -6371,14 +6458,19 @@ struct bfd /* BFD is a dummy, for plugins. */ #define BFD_PLUGIN 0x10000 + /* Compress sections in this BFD with SHF_COMPRESSED from gABI. */ +#define BFD_COMPRESS_GABI 0x20000 + /* Flags bits to be saved in bfd_preserve_save. */ #define BFD_FLAGS_SAVED \ - (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN) + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN \ + | BFD_COMPRESS_GABI) /* 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_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT) + | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \ + | BFD_COMPRESS_GABI) /* Is the file descriptor being cached? That is, can it be closed as needed, and re-opened when accessed later? */ @@ -6416,6 +6508,19 @@ struct bfd /* Set if this is the linker output BFD. */ unsigned int is_linker_output : 1; + /* Set if this is the linker input BFD. */ + unsigned int is_linker_input : 1; + + /* If this is an input for a compiler plug-in library. */ + ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2; + + /* Set if this is a plugin output file. */ + unsigned int lto_output : 1; + + /* Set to dummy BFD created when claimed by a compiler plug-in + library. */ + bfd *plugin_dummy_bfd; + /* 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. */ @@ -6526,6 +6631,9 @@ struct bfd struct objalloc *, but we use void * to avoid requiring the inclusion of objalloc.h. */ void *memory; + + /* For input BFDs, the build ID, if the object has one. */ + const struct bfd_build_id *build_id; }; /* See note beside bfd_set_section_userdata. */ @@ -6738,6 +6846,15 @@ void bfd_emul_set_commonpagesize (const char *, bfd_vma); char *bfd_demangle (bfd *, const char *, int); +void bfd_update_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec); + +bfd_boolean bfd_check_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec, + bfd_size_type *uncompressed_size); + +int bfd_get_compression_header_size (bfd *abfd, asection *sec); + /* Extracted from archive.c. */ symindex bfd_get_next_mapent (bfd *abfd, symindex previous, carsym **sym); @@ -7244,16 +7361,17 @@ bfd_byte *bfd_simple_get_relocated_section_contents (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table); /* Extracted from compress.c. */ -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); void bfd_cache_section_contents (asection *sec, void *contents); +bfd_boolean bfd_is_section_compressed_with_header + (bfd *abfd, asection *section, + int *compression_header_size_p, + bfd_size_type *uncompressed_size_p); + bfd_boolean bfd_is_section_compressed (bfd *abfd, asection *section); @@ -7263,6 +7381,9 @@ bfd_boolean bfd_init_section_decompress_status bfd_boolean bfd_init_section_compress_status (bfd *abfd, asection *section); +bfd_boolean bfd_compress_section + (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer); + #ifdef __cplusplus } #endif diff --git a/bfd/bfd.c b/bfd/bfd.c index 29a7c5d..8d85de5 100644 --- a/bfd/bfd.c +++ b/bfd/bfd.c @@ -44,6 +44,19 @@ CODE_FRAGMENT . both_direction = 3 . }; . +.enum bfd_plugin_format +. { +. bfd_plugin_uknown = 0, +. bfd_plugin_yes = 1, +. bfd_plugin_no = 2 +. }; +. +.struct bfd_build_id +. { +. bfd_size_type size; +. bfd_byte data[1]; +. }; +. .struct bfd .{ . {* The filename the application opened the BFD with. *} @@ -78,7 +91,7 @@ CODE_FRAGMENT . ENUM_BITFIELD (bfd_direction) direction : 2; . . {* Format_specific flags. *} -. flagword flags : 17; +. flagword flags : 18; . . {* Values that may appear in the flags field of a BFD. These also . appear in the object_flags field of the bfd_target structure, where @@ -155,14 +168,19 @@ CODE_FRAGMENT . {* BFD is a dummy, for plugins. *} .#define BFD_PLUGIN 0x10000 . +. {* Compress sections in this BFD with SHF_COMPRESSED from gABI. *} +.#define BFD_COMPRESS_GABI 0x20000 +. . {* Flags bits to be saved in bfd_preserve_save. *} .#define BFD_FLAGS_SAVED \ -. (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN) +. (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN \ +. | BFD_COMPRESS_GABI) . . {* 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_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT) +. | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \ +. | BFD_COMPRESS_GABI) . . {* Is the file descriptor being cached? That is, can it be closed as . needed, and re-opened when accessed later? *} @@ -200,6 +218,19 @@ CODE_FRAGMENT . {* Set if this is the linker output BFD. *} . unsigned int is_linker_output : 1; . +. {* Set if this is the linker input BFD. *} +. unsigned int is_linker_input : 1; +. +. {* If this is an input for a compiler plug-in library. *} +. ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2; +. +. {* Set if this is a plugin output file. *} +. unsigned int lto_output : 1; +. +. {* Set to dummy BFD created when claimed by a compiler plug-in +. library. *} +. bfd *plugin_dummy_bfd; +. . {* 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. *} @@ -310,6 +341,9 @@ CODE_FRAGMENT . struct objalloc *, but we use void * to avoid requiring the inclusion . of objalloc.h. *} . void *memory; +. +. {* For input BFDs, the build ID, if the object has one. *} +. const struct bfd_build_id *build_id; .}; . .{* See note beside bfd_set_section_userdata. *} @@ -1923,3 +1957,157 @@ bfd_demangle (bfd *abfd, const char *name, int options) return res; } + +/* +FUNCTION + bfd_update_compression_header + +SYNOPSIS + void bfd_update_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec); + +DESCRIPTION + Set the compression header at CONTENTS of SEC in ABFD and update + elf_section_flags for compression. +*/ + +void +bfd_update_compression_header (bfd *abfd, bfd_byte *contents, + asection *sec) +{ + if ((abfd->flags & BFD_COMPRESS) != 0) + { + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) + { + if ((abfd->flags & BFD_COMPRESS_GABI) != 0) + { + const struct elf_backend_data *bed + = get_elf_backend_data (abfd); + + /* Set the SHF_COMPRESSED bit. */ + elf_section_flags (sec) |= SHF_COMPRESSED; + + if (bed->s->elfclass == ELFCLASS32) + { + Elf32_External_Chdr *echdr + = (Elf32_External_Chdr *) contents; + bfd_put_32 (abfd, ELFCOMPRESS_ZLIB, &echdr->ch_type); + bfd_put_32 (abfd, sec->size, &echdr->ch_size); + bfd_put_32 (abfd, 1 << sec->alignment_power, + &echdr->ch_addralign); + } + else + { + Elf64_External_Chdr *echdr + = (Elf64_External_Chdr *) contents; + bfd_put_64 (abfd, ELFCOMPRESS_ZLIB, &echdr->ch_type); + bfd_put_64 (abfd, sec->size, &echdr->ch_size); + bfd_put_64 (abfd, 1 << sec->alignment_power, + &echdr->ch_addralign); + } + } + else + { + /* Clear the SHF_COMPRESSED bit. */ + elf_section_flags (sec) &= ~SHF_COMPRESSED; + + /* Write the zlib header. It should be "ZLIB" followed by + the uncompressed section size, 8 bytes in big-endian + order. */ + memcpy (contents, "ZLIB", 4); + bfd_putb64 (sec->size, contents + 4); + } + } + } + else + abort (); +} + +/* + FUNCTION + bfd_check_compression_header + + SYNOPSIS + bfd_boolean bfd_check_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec, + bfd_size_type *uncompressed_size); + +DESCRIPTION + Check the compression header at CONTENTS of SEC in ABFD and + store the uncompressed size in UNCOMPRESSED_SIZE if the + compression header is valid. + +RETURNS + Return TRUE if the compression header is valid. +*/ + +bfd_boolean +bfd_check_compression_header (bfd *abfd, bfd_byte *contents, + asection *sec, + bfd_size_type *uncompressed_size) +{ + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour + && (elf_section_flags (sec) & SHF_COMPRESSED) != 0) + { + Elf_Internal_Chdr chdr; + const struct elf_backend_data *bed = get_elf_backend_data (abfd); + if (bed->s->elfclass == ELFCLASS32) + { + Elf32_External_Chdr *echdr = (Elf32_External_Chdr *) contents; + chdr.ch_type = bfd_get_32 (abfd, &echdr->ch_type); + chdr.ch_size = bfd_get_32 (abfd, &echdr->ch_size); + chdr.ch_addralign = bfd_get_32 (abfd, &echdr->ch_addralign); + } + else + { + Elf64_External_Chdr *echdr = (Elf64_External_Chdr *) contents; + chdr.ch_type = bfd_get_64 (abfd, &echdr->ch_type); + chdr.ch_size = bfd_get_64 (abfd, &echdr->ch_size); + chdr.ch_addralign = bfd_get_64 (abfd, &echdr->ch_addralign); + } + if (chdr.ch_type == ELFCOMPRESS_ZLIB + && chdr.ch_addralign == 1U << sec->alignment_power) + { + *uncompressed_size = chdr.ch_size; + return TRUE; + } + } + + return FALSE; +} + +/* +FUNCTION + bfd_get_compression_header_size + +SYNOPSIS + int bfd_get_compression_header_size (bfd *abfd, asection *sec); + +DESCRIPTION + Return the size of the compression header of SEC in ABFD. + +RETURNS + Return the size of the compression header in bytes. +*/ + +int +bfd_get_compression_header_size (bfd *abfd, asection *sec) +{ + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) + { + if (sec == NULL) + { + if (!(abfd->flags & BFD_COMPRESS_GABI)) + return 0; + } + else if (!(elf_section_flags (sec) & SHF_COMPRESSED)) + return 0; + + if (get_elf_backend_data (abfd)->s->elfclass == ELFCLASS32) + return sizeof (Elf32_External_Chdr); + else + return sizeof (Elf64_External_Chdr); + } + + return 0; +} diff --git a/bfd/coff-i386.c b/bfd/coff-i386.c index 20d2402..b185b81 100644 --- a/bfd/coff-i386.c +++ b/bfd/coff-i386.c @@ -509,7 +509,12 @@ coff_i386_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED, *addendp -= pe_data(sec->output_section->owner)->pe_opthdr.ImageBase; } - BFD_ASSERT (sym != NULL); + /* PR 17099 - Absolute R_PCRLONG relocations do not need a symbol. */ + if (rel->r_type == R_PCRLONG && sym == NULL) + *addendp -= rel->r_vaddr; + else + BFD_ASSERT (sym != NULL); + if (rel->r_type == R_SECREL32 && sym != NULL) { bfd_vma osect_vma; diff --git a/bfd/coff-sparc.c b/bfd/coff-sparc.c index 232cefa..ae87311 100644 --- a/bfd/coff-sparc.c +++ b/bfd/coff-sparc.c @@ -74,7 +74,7 @@ bfd_coff_generic_reloc (bfd *abfd ATTRIBUTE_UNUSED, static reloc_howto_type coff_sparc_howto_table[] = { - HOWTO(R_SPARC_NONE, 0,0, 0,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_NONE", FALSE,0,0x00000000,TRUE), + HOWTO(R_SPARC_NONE, 0,3, 0,FALSE,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_NONE", FALSE,0,0x00000000,TRUE), HOWTO(R_SPARC_8, 0,0, 8,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_8", FALSE,0,0x000000ff,TRUE), HOWTO(R_SPARC_16, 0,1,16,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_16", FALSE,0,0x0000ffff,TRUE), HOWTO(R_SPARC_32, 0,2,32,FALSE,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_32", FALSE,0,0xffffffff,TRUE), diff --git a/bfd/coffcode.h b/bfd/coffcode.h index 9e1c20a..62a4105 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -1009,6 +1009,13 @@ handle_COMDAT (bfd * abfd, seen_state = 1; + /* PR 17512: file: e2cfe54f. */ + if (esym + bfd_coff_symesz (abfd) >= esymend) + { + _bfd_error_handler (_("%B: warning: No symbol for section '%s' found"), + abfd, symname); + break; + } /* This is the section symbol. */ bfd_coff_swap_aux_in (abfd, (esym + bfd_coff_symesz (abfd)), isym.n_type, isym.n_sclass, @@ -1162,7 +1169,7 @@ styp_to_sec_flags (bfd *abfd, flagword *flags_ptr) { struct internal_scnhdr *internal_s = (struct internal_scnhdr *) hdr; - long styp_flags = internal_s->s_flags; + unsigned long styp_flags = internal_s->s_flags; flagword sec_flags; bfd_boolean result = TRUE; bfd_boolean is_dbg = FALSE; @@ -1185,7 +1192,7 @@ styp_to_sec_flags (bfd *abfd, /* Process each flag bit in styp_flags in turn. */ while (styp_flags) { - long flag = styp_flags & - styp_flags; + unsigned long flag = styp_flags & - styp_flags; char * unhandled = NULL; styp_flags &= ~ flag; @@ -1345,6 +1352,10 @@ CODE_FRAGMENT . COFF_SYMBOL_PE_SECTION .}; . +.typedef asection * (*coff_gc_mark_hook_fn) +. (asection *, struct bfd_link_info *, struct internal_reloc *, +. struct coff_link_hash_entry *, struct internal_syment *); +. Special entry points for gdb to swap in coff symbol table parts: .typedef struct .{ @@ -2073,10 +2084,14 @@ coff_mkobject_hook (bfd * abfd, #endif if ((internal_f->f_flags & F_GO32STUB) != 0) - coff->go32stub = (char *) bfd_alloc (abfd, (bfd_size_type) GO32_STUBSIZE); + { + coff->go32stub = (char *) bfd_alloc (abfd, (bfd_size_type) GO32_STUBSIZE); + if (coff->go32stub == NULL) + return NULL; + } if (coff->go32stub != NULL) memcpy (coff->go32stub, internal_f->go32stub, GO32_STUBSIZE); - + return coff; } #endif @@ -2278,6 +2293,8 @@ coff_set_arch_mach_hook (bfd *abfd, void * filehdr) bfd_size_type amt = bfd_coff_symesz (abfd); buf = bfd_malloc (amt); + if (buf == NULL) + return FALSE; if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0 || bfd_bread (buf, amt, abfd) != amt) { @@ -2666,10 +2683,16 @@ coff_write_relocs (bfd * abfd, int first_undef) amt = s->reloc_count; amt *= sizeof (arelent *); p = bfd_malloc (amt); - if (p == NULL && s->reloc_count > 0) - return FALSE; - memcpy (p, s->orelocation, (size_t) amt); - qsort (p, s->reloc_count, sizeof (arelent *), compare_arelent_ptr); + if (p == NULL) + { + if (s->reloc_count > 0) + return FALSE; + } + else + { + memcpy (p, s->orelocation, (size_t) amt); + qsort (p, s->reloc_count, sizeof (arelent *), compare_arelent_ptr); + } } #endif @@ -3151,6 +3174,15 @@ coff_compute_section_file_positions (bfd * abfd) This repairs 'ld -r' for arm-wince-pe target. */ if (page_size == 0) page_size = 1; + + /* PR 17512: file: 0ac816d3. */ + if (page_size < 0) + { + bfd_set_error (bfd_error_file_too_big); + (*_bfd_error_handler) + (_("%B: page size is too large (0x%x)"), abfd, page_size); + return FALSE; + } } else page_size = PE_DEF_FILE_ALIGNMENT; @@ -4526,6 +4558,7 @@ coff_slurp_line_table (bfd *abfd, asection *asect) unsigned int nbr_func; LINENO *src; bfd_boolean have_func; + bfd_boolean ret = TRUE; BFD_ASSERT (asect->lineno == NULL); @@ -4575,6 +4608,7 @@ coff_slurp_line_table (bfd *abfd, asection *asect) (_("%B: warning: illegal symbol index 0x%lx in line number entry %d"), abfd, (long) symndx, counter); cache_ptr->line_number = -1; + ret = FALSE; continue; } @@ -4587,6 +4621,7 @@ coff_slurp_line_table (bfd *abfd, asection *asect) (_("%B: warning: illegal symbol index 0x%lx in line number entry %d"), abfd, (long) symndx, counter); cache_ptr->line_number = -1; + ret = FALSE; continue; } sym = (coff_symbol_type *) (ent->u.syment._n._n_n._n_zeroes); @@ -4599,6 +4634,7 @@ coff_slurp_line_table (bfd *abfd, asection *asect) (_("%B: warning: illegal symbol in line number entry %d"), abfd, counter); cache_ptr->line_number = -1; + ret = FALSE; continue; } @@ -4678,11 +4714,15 @@ coff_slurp_line_table (bfd *abfd, asection *asect) memcpy (lineno_cache, n_lineno_cache, amt); } + else + ret = FALSE; bfd_release (abfd, func_table); } + else + ret = FALSE; } - return TRUE; + return ret; } /* Slurp in the symbol table, converting it to generic form. Note @@ -4697,6 +4737,7 @@ coff_slurp_symbol_table (bfd * abfd) unsigned int *table_ptr; bfd_size_type amt; unsigned int number_of_symbols = 0; + bfd_boolean ret = TRUE; if (obj_symbols (abfd)) return TRUE; @@ -5017,6 +5058,7 @@ coff_slurp_symbol_table (bfd * abfd) (_("%B: Unrecognized storage class %d for %s symbol `%s'"), abfd, src->u.syment.n_sclass, dst->symbol.section->name, dst->symbol.name); + ret = FALSE; case C_EXTLAB: /* External load time label. */ case C_HIDDEN: /* Ext symbol in dmert public lib. */ dst->symbol.flags = BSF_DEBUGGING; @@ -5052,7 +5094,7 @@ coff_slurp_symbol_table (bfd * abfd) } } - return TRUE; + return ret; } /* Classify a COFF symbol. A couple of targets have globally visible @@ -5955,7 +5997,7 @@ static bfd_coff_backend_data bigobj_swap_table = #endif #ifndef coff_bfd_gc_sections -#define coff_bfd_gc_sections bfd_generic_gc_sections +#define coff_bfd_gc_sections bfd_coff_gc_sections #endif #ifndef coff_bfd_lookup_section_flags diff --git a/bfd/coffgen.c b/bfd/coffgen.c index aa01559..481e4a5 100644 --- a/bfd/coffgen.c +++ b/bfd/coffgen.c @@ -178,18 +178,21 @@ make_a_section_from_file (bfd *abfd, abfd, name); return FALSE; } - if (name[1] != 'z') + if (return_section->compress_status == COMPRESS_SECTION_DONE) { - unsigned int len = strlen (name); + 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); + 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; + break; case decompress: if (!bfd_init_section_decompress_status (abfd, return_section)) { @@ -468,7 +471,10 @@ _bfd_coff_internal_syment_name (bfd *abfd, if (strings == NULL) return NULL; } - if (sym->_n._n_n._n_offset >= obj_coff_strings_len (abfd)) + /* PR 17910: Only check for string overflow if the length has been set. + Some DLLs, eg those produced by Visual Studio, may not set the length field. */ + if (obj_coff_strings_len (abfd) > 0 + && sym->_n._n_n._n_offset >= obj_coff_strings_len (abfd)) return NULL; return strings + sym->_n._n_n._n_offset; } @@ -1802,7 +1808,7 @@ coff_get_normalized_symtab (bfd *abfd) if (symbol_ptr->u.syment.n_sclass == C_FILE && symbol_ptr->u.syment.n_numaux > 0 && raw_src + symesz + symbol_ptr->u.syment.n_numaux - * sizeof (union internal_auxent) >= raw_end) + * symesz > raw_end) { bfd_release (abfd, internal); return NULL; @@ -1821,7 +1827,6 @@ coff_get_normalized_symtab (bfd *abfd) } raw_src += symesz; - bfd_coff_swap_aux_in (abfd, (void *) raw_src, symbol_ptr->u.syment.n_type, symbol_ptr->u.syment.n_sclass, @@ -2242,6 +2247,26 @@ coff_find_nearest_line_with_names (bfd *abfd, &coff_data(abfd)->dwarf2_find_line_info)) return TRUE; + /* If the DWARF lookup failed, but there is DWARF information available + then the problem might be that the file has been rebased. This tool + changes the VMAs of all the sections, but it does not update the DWARF + information. So try again, using a bias against the address sought. */ + if (coff_data (abfd)->dwarf2_find_line_info != NULL) + { + bfd_signed_vma bias; + + bias = _bfd_dwarf2_find_symbol_bias (symbols, + & coff_data (abfd)->dwarf2_find_line_info); + + if (bias + && _bfd_dwarf2_find_nearest_line (abfd, symbols, NULL, section, + offset + bias, + filename_ptr, functionname_ptr, + line_ptr, NULL, debug_sections, 0, + &coff_data(abfd)->dwarf2_find_line_info)) + return TRUE; + } + *filename_ptr = 0; *functionname_ptr = 0; *line_ptr = 0; @@ -2601,3 +2626,431 @@ _bfd_coff_section_already_linked (bfd *abfd, info->callbacks->einfo (_("%F%P: already_linked_table: %E\n")); return FALSE; } + +/* Initialize COOKIE for input bfd ABFD. */ + +static bfd_boolean +init_reloc_cookie (struct coff_reloc_cookie *cookie, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + bfd *abfd) +{ + /* Sometimes the symbol table does not yet have been loaded here. */ + bfd_coff_slurp_symbol_table (abfd); + + cookie->abfd = abfd; + cookie->sym_hashes = obj_coff_sym_hashes (abfd); + + cookie->symbols = obj_symbols (abfd); + + return TRUE; +} + +/* Free the memory allocated by init_reloc_cookie, if appropriate. */ + +static void +fini_reloc_cookie (struct coff_reloc_cookie *cookie ATTRIBUTE_UNUSED, + bfd *abfd ATTRIBUTE_UNUSED) +{ + /* Nothing to do. */ +} + +/* Initialize the relocation information in COOKIE for input section SEC + of input bfd ABFD. */ + +static bfd_boolean +init_reloc_cookie_rels (struct coff_reloc_cookie *cookie, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + bfd *abfd, + asection *sec) +{ + if (sec->reloc_count == 0) + { + cookie->rels = NULL; + cookie->relend = NULL; + cookie->rel = NULL; + return TRUE; + } + + cookie->rels = _bfd_coff_read_internal_relocs (abfd, sec, FALSE, NULL, 0, NULL); + + if (cookie->rels == NULL) + return FALSE; + + cookie->rel = cookie->rels; + cookie->relend = (cookie->rels + sec->reloc_count); + return TRUE; +} + +/* Free the memory allocated by init_reloc_cookie_rels, + if appropriate. */ + +static void +fini_reloc_cookie_rels (struct coff_reloc_cookie *cookie, + asection *sec) +{ + if (cookie->rels && coff_section_data (NULL, sec)->relocs != cookie->rels) + free (cookie->rels); +} + +/* Initialize the whole of COOKIE for input section SEC. */ + +static bfd_boolean +init_reloc_cookie_for_section (struct coff_reloc_cookie *cookie, + struct bfd_link_info *info, + asection *sec) +{ + if (!init_reloc_cookie (cookie, info, sec->owner)) + return FALSE; + + if (!init_reloc_cookie_rels (cookie, info, sec->owner, sec)) + { + fini_reloc_cookie (cookie, sec->owner); + return FALSE; + } + return TRUE; +} + +/* Free the memory allocated by init_reloc_cookie_for_section, + if appropriate. */ + +static void +fini_reloc_cookie_for_section (struct coff_reloc_cookie *cookie, + asection *sec) +{ + fini_reloc_cookie_rels (cookie, sec); + fini_reloc_cookie (cookie, sec->owner); +} + +static asection * +_bfd_coff_gc_mark_hook (asection *sec, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + struct internal_reloc *rel ATTRIBUTE_UNUSED, + struct coff_link_hash_entry *h, + struct internal_syment *sym) +{ + if (h != NULL) + { + switch (h->root.type) + { + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + return h->root.u.def.section; + + case bfd_link_hash_common: + return h->root.u.c.p->section; + + case bfd_link_hash_undefined: + case bfd_link_hash_undefweak: + default: + break; + } + return NULL; + } + + return coff_section_from_bfd_index (sec->owner, sym->n_scnum); +} + +/* COOKIE->rel describes a relocation against section SEC, which is + a section we've decided to keep. Return the section that contains + the relocation symbol, or NULL if no section contains it. */ + +static asection * +_bfd_coff_gc_mark_rsec (struct bfd_link_info *info, asection *sec, + coff_gc_mark_hook_fn gc_mark_hook, + struct coff_reloc_cookie *cookie) +{ + struct coff_link_hash_entry *h; + + h = cookie->sym_hashes[cookie->rel->r_symndx]; + if (h != NULL) + { + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct coff_link_hash_entry *) h->root.u.i.link; + + return (*gc_mark_hook) (sec, info, cookie->rel, h, NULL); + } + + return (*gc_mark_hook) (sec, info, cookie->rel, NULL, + &(cookie->symbols + + obj_convert (sec->owner)[cookie->rel->r_symndx])->native->u.syment); +} + +static bfd_boolean _bfd_coff_gc_mark + (struct bfd_link_info *, asection *, coff_gc_mark_hook_fn); + +/* COOKIE->rel describes a relocation against section SEC, which is + a section we've decided to keep. Mark the section that contains + the relocation symbol. */ + +static bfd_boolean +_bfd_coff_gc_mark_reloc (struct bfd_link_info *info, + asection *sec, + coff_gc_mark_hook_fn gc_mark_hook, + struct coff_reloc_cookie *cookie) +{ + asection *rsec; + + rsec = _bfd_coff_gc_mark_rsec (info, sec, gc_mark_hook, cookie); + if (rsec && !rsec->gc_mark) + { + if (bfd_get_flavour (rsec->owner) != bfd_target_coff_flavour) + rsec->gc_mark = 1; + else if (!_bfd_coff_gc_mark (info, rsec, gc_mark_hook)) + return FALSE; + } + return TRUE; +} + +/* The mark phase of garbage collection. For a given section, mark + it and any sections in this section's group, and all the sections + which define symbols to which it refers. */ + +static bfd_boolean +_bfd_coff_gc_mark (struct bfd_link_info *info, + asection *sec, + coff_gc_mark_hook_fn gc_mark_hook) +{ + bfd_boolean ret = TRUE; + + sec->gc_mark = 1; + + /* Look through the section relocs. */ + if ((sec->flags & SEC_RELOC) != 0 + && sec->reloc_count > 0) + { + struct coff_reloc_cookie cookie; + + if (!init_reloc_cookie_for_section (&cookie, info, sec)) + ret = FALSE; + else + { + for (; cookie.rel < cookie.relend; cookie.rel++) + { + if (!_bfd_coff_gc_mark_reloc (info, sec, gc_mark_hook, &cookie)) + { + ret = FALSE; + break; + } + } + fini_reloc_cookie_for_section (&cookie, sec); + } + } + + return ret; +} + +static bfd_boolean +_bfd_coff_gc_mark_extra_sections (struct bfd_link_info *info, + coff_gc_mark_hook_fn mark_hook ATTRIBUTE_UNUSED) +{ + bfd *ibfd; + + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next) + { + asection *isec; + bfd_boolean some_kept; + + if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour) + continue; + + /* Ensure all linker created sections are kept, and see whether + any other section is already marked. */ + some_kept = FALSE; + for (isec = ibfd->sections; isec != NULL; isec = isec->next) + { + if ((isec->flags & SEC_LINKER_CREATED) != 0) + isec->gc_mark = 1; + else if (isec->gc_mark) + some_kept = TRUE; + } + + /* If no section in this file will be kept, then we can + toss out debug sections. */ + if (!some_kept) + continue; + + /* Keep debug and special sections like .comment when they are + not part of a group, or when we have single-member groups. */ + for (isec = ibfd->sections; isec != NULL; isec = isec->next) + if ((isec->flags & SEC_DEBUGGING) != 0 + || (isec->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0) + isec->gc_mark = 1; + } + return TRUE; +} + +/* Sweep symbols in swept sections. Called via coff_link_hash_traverse. */ + +static bfd_boolean +coff_gc_sweep_symbol (struct coff_link_hash_entry *h, + void *data ATTRIBUTE_UNUSED) +{ + if (h->root.type == bfd_link_hash_warning) + h = (struct coff_link_hash_entry *) h->root.u.i.link; + + if ((h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + && !h->root.u.def.section->gc_mark + && !(h->root.u.def.section->owner->flags & DYNAMIC)) + { + /* Do our best to hide the symbol. */ + h->root.u.def.section = bfd_und_section_ptr; + h->symbol_class = C_HIDDEN; + } + + return TRUE; +} + +/* The sweep phase of garbage collection. Remove all garbage sections. */ + +typedef bfd_boolean (*gc_sweep_hook_fn) + (bfd *, struct bfd_link_info *, asection *, const struct internal_reloc *); + +static bfd_boolean +coff_gc_sweep (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) +{ + bfd *sub; + + for (sub = info->input_bfds; sub != NULL; sub = sub->link.next) + { + asection *o; + + if (bfd_get_flavour (sub) != bfd_target_coff_flavour) + continue; + + for (o = sub->sections; o != NULL; o = o->next) + { + /* Keep debug and special sections. */ + if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0 + || (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0) + o->gc_mark = 1; + else if (CONST_STRNEQ (o->name, ".idata") + || CONST_STRNEQ (o->name, ".pdata") + || CONST_STRNEQ (o->name, ".xdata") + || CONST_STRNEQ (o->name, ".rsrc")) + o->gc_mark = 1; + + if (o->gc_mark) + continue; + + /* Skip sweeping sections already excluded. */ + if (o->flags & SEC_EXCLUDE) + continue; + + /* Since this is early in the link process, it is simple + to remove a section from the output. */ + o->flags |= SEC_EXCLUDE; + + if (info->print_gc_sections && o->size != 0) + _bfd_error_handler (_("Removing unused section '%s' in file '%B'"), sub, o->name); + +#if 0 + /* But we also have to update some of the relocation + info we collected before. */ + if (gc_sweep_hook + && (o->flags & SEC_RELOC) != 0 + && o->reloc_count > 0 + && !bfd_is_abs_section (o->output_section)) + { + struct internal_reloc *internal_relocs; + bfd_boolean r; + + internal_relocs + = _bfd_coff_link_read_relocs (o->owner, o, NULL, NULL, + info->keep_memory); + if (internal_relocs == NULL) + return FALSE; + + r = (*gc_sweep_hook) (o->owner, info, o, internal_relocs); + + if (coff_section_data (o)->relocs != internal_relocs) + free (internal_relocs); + + if (!r) + return FALSE; + } +#endif + } + } + + /* Remove the symbols that were in the swept sections from the dynamic + symbol table. */ + coff_link_hash_traverse (coff_hash_table (info), coff_gc_sweep_symbol, + NULL); + + return TRUE; +} + +/* Keep all sections containing symbols undefined on the command-line, + and the section containing the entry symbol. */ + +static void +_bfd_coff_gc_keep (struct bfd_link_info *info) +{ + struct bfd_sym_chain *sym; + + for (sym = info->gc_sym_list; sym != NULL; sym = sym->next) + { + struct coff_link_hash_entry *h; + + h = coff_link_hash_lookup (coff_hash_table (info), sym->name, + FALSE, FALSE, FALSE); + + if (h != NULL + && (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + && !bfd_is_abs_section (h->root.u.def.section)) + h->root.u.def.section->flags |= SEC_KEEP; + } +} + +/* Do mark and sweep of unused sections. */ + +bfd_boolean +bfd_coff_gc_sections (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) +{ + bfd *sub; + + /* FIXME: Should we implement this? */ +#if 0 + const bfd_coff_backend_data *bed = coff_backend_info (abfd); + + if (!bed->can_gc_sections + || !is_coff_hash_table (info->hash)) + { + (*_bfd_error_handler)(_("Warning: gc-sections option ignored")); + return TRUE; + } +#endif + + _bfd_coff_gc_keep (info); + + /* Grovel through relocs to find out who stays ... */ + for (sub = info->input_bfds; sub != NULL; sub = sub->link.next) + { + asection *o; + + if (bfd_get_flavour (sub) != bfd_target_coff_flavour) + continue; + + for (o = sub->sections; o != NULL; o = o->next) + { + if (((o->flags & (SEC_EXCLUDE | SEC_KEEP)) == SEC_KEEP + || CONST_STRNEQ (o->name, ".vectors") + || CONST_STRNEQ (o->name, ".ctors") + || CONST_STRNEQ (o->name, ".dtors")) + && !o->gc_mark) + { + if (!_bfd_coff_gc_mark (info, o, _bfd_coff_gc_mark_hook)) + return FALSE; + } + } + } + + /* Allow the backend to mark additional target specific sections. */ + _bfd_coff_gc_mark_extra_sections (info, _bfd_coff_gc_mark_hook); + + /* ... and mark SEC_EXCLUDE for those that go. */ + return coff_gc_sweep (abfd, info); +} diff --git a/bfd/cofflink.c b/bfd/cofflink.c index ee4d032..c1541d1 100644 --- a/bfd/cofflink.c +++ b/bfd/cofflink.c @@ -2789,7 +2789,7 @@ _bfd_coff_reloc_link_order (bfd *output_bfd, size = bfd_get_reloc_size (howto); buf = (bfd_byte *) bfd_zmalloc (size); - if (buf == NULL) + if (buf == NULL && size != 0) return FALSE; rstat = _bfd_relocate_contents (howto, output_bfd, @@ -2915,6 +2915,7 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd, struct internal_syment *sym; bfd_vma addend; bfd_vma val; + asection *sec; reloc_howto_type *howto; bfd_reloc_status_type rstat; @@ -2965,11 +2966,9 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd, } val = 0; - + sec = NULL; if (h == NULL) { - asection *sec; - if (symndx == -1) { sec = bfd_abs_section_ptr; @@ -2978,11 +2977,6 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd, else { sec = sections[symndx]; - - /* If the output section has been discarded then ignore this reloc. */ - if (sec->output_section->vma == 0) - continue; - val = (sec->output_section->vma + sec->output_offset + sym->n_value); @@ -2996,8 +2990,6 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd, || h->root.type == bfd_link_hash_defweak) { /* Defined weak symbols are a GNU extension. */ - asection *sec; - sec = h->root.u.def.section; val = (h->root.u.def.value + sec->output_section->vma @@ -3018,7 +3010,6 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd, will resolve a weak external only if a normal external causes the library member to be linked. See also linker.c: generic_link_check_archive_element. */ - asection *sec; struct coff_link_hash_entry *h2 = h->auxbfd->tdata.coff_obj_data->sym_hashes[ h->aux->x_sym.x_tagndx.l]; @@ -3049,6 +3040,15 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd, } } + /* If the input section defining the symbol has been discarded + then zero this reloc field. */ + if (sec != NULL && discarded_section (sec)) + { + _bfd_clear_contents (howto, input_bfd, input_section, + contents + (rel->r_vaddr - input_section->vma)); + continue; + } + if (info->base_file) { /* Emit a reloc if the backend thinks it needs it. */ diff --git a/bfd/compress.c b/bfd/compress.c index 0087a66..7751948 100644 --- a/bfd/compress.c +++ b/bfd/compress.c @@ -19,14 +19,13 @@ MA 02110-1301, USA. */ #include "sysdep.h" +#include #include "bfd.h" #include "libbfd.h" -#ifdef HAVE_ZLIB_H -#include -#endif #include "safe-ctype.h" -#ifdef HAVE_ZLIB_H +#define MAX_COMPRESSION_HEADER_SIZE 24 + static bfd_boolean decompress_contents (bfd_byte *compressed_buffer, bfd_size_type compressed_size, @@ -38,11 +37,14 @@ decompress_contents (bfd_byte *compressed_buffer, /* 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; + /* PR 18313: The state field in the z_stream structure is supposed + to be invisible to the user (ie us), but some compilers will + still complain about it being used without initialisation. So + we first zero the entire z_stream structure and then set the fields + that we need. */ + memset (& strm, 0, sizeof strm); + strm.avail_in = compressed_size; + strm.next_in = (Bytef*) compressed_buffer; strm.avail_out = uncompressed_size; BFD_ASSERT (Z_OK == 0); @@ -61,81 +63,142 @@ decompress_contents (bfd_byte *compressed_buffer, rc |= inflateEnd (&strm); return rc == Z_OK && strm.avail_out == 0; } -#endif - -/* -FUNCTION - bfd_compress_section_contents - -SYNOPSIS - bfd_boolean bfd_compress_section_contents - (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer, - bfd_size_type uncompressed_size); - -DESCRIPTION - 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. +/* 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. - Return @code{TRUE} if the full section contents is compressed - successfully. -*/ + Return the uncompressed size if the full section contents is + compressed successfully. Otherwise return 0. */ -bfd_boolean -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) +static bfd_size_type +bfd_compress_section_contents (bfd *abfd, sec_ptr sec, + bfd_byte *uncompressed_buffer, + bfd_size_type uncompressed_size) { -#ifndef HAVE_ZLIB_H - bfd_set_error (bfd_error_invalid_operation); - return FALSE; -#else uLong compressed_size; - bfd_byte *compressed_buffer; + bfd_byte *buffer; + bfd_size_type buffer_size; + bfd_boolean decompress; + int zlib_size = 0; + int orig_compression_header_size; + bfd_size_type orig_uncompressed_size; + int header_size = bfd_get_compression_header_size (abfd, NULL); + bfd_boolean compressed + = bfd_is_section_compressed_with_header (abfd, sec, + &orig_compression_header_size, + &orig_uncompressed_size); + + /* Either ELF compression header or the 12-byte, "ZLIB" + 8-byte size, + overhead in .zdebug* section. */ + if (!header_size) + header_size = 12; + + if (compressed) + { + /* We shouldn't decompress unsupported compressed section. */ + if (orig_compression_header_size < 0) + abort (); - compressed_size = compressBound (uncompressed_size) + 12; - compressed_buffer = (bfd_byte *) bfd_malloc (compressed_size); + /* Different compression schemes. Just move the compressed section + contents to the right position. */ + if (orig_compression_header_size == 0) + { + /* Convert it from .zdebug* section. Get the uncompressed + size first. We need to substract the 12-byte overhead in + .zdebug* section. Set orig_compression_header_size to + the 12-bye overhead. */ + orig_compression_header_size = 12; + zlib_size = uncompressed_size - 12; + } + else + { + /* Convert it to .zdebug* section. */ + zlib_size = uncompressed_size - orig_compression_header_size; + } - if (compressed_buffer == NULL) - return FALSE; + /* Add the header size. */ + compressed_size = zlib_size + header_size; + } + else + compressed_size = compressBound (uncompressed_size) + header_size; - if (compress ((Bytef*) compressed_buffer + 12, - &compressed_size, - (const Bytef*) uncompressed_buffer, - uncompressed_size) != Z_OK) + /* Uncompress if it leads to smaller size. */ + if (compressed && compressed_size > orig_uncompressed_size) { - free (compressed_buffer); - bfd_set_error (bfd_error_bad_value); - return FALSE; + decompress = TRUE; + buffer_size = orig_uncompressed_size; + } + else + { + decompress = FALSE; + buffer_size = compressed_size; } + buffer = (bfd_byte *) bfd_alloc (abfd, buffer_size); + if (buffer == NULL) + return 0; - /* 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; + if (compressed) + { + sec->size = orig_uncompressed_size; + if (decompress) + { + if (!decompress_contents (uncompressed_buffer + + orig_compression_header_size, + zlib_size, buffer, buffer_size)) + { + bfd_set_error (bfd_error_bad_value); + bfd_release (abfd, buffer); + return 0; + } + free (uncompressed_buffer); + sec->contents = buffer; + sec->compress_status = COMPRESS_SECTION_DONE; + return orig_uncompressed_size; + } + else + { + bfd_update_compression_header (abfd, buffer, sec); + memmove (buffer + header_size, + uncompressed_buffer + orig_compression_header_size, + zlib_size); + } + } + else + { + if (compress ((Bytef*) buffer + header_size, + &compressed_size, + (const Bytef*) uncompressed_buffer, + uncompressed_size) != Z_OK) + { + bfd_release (abfd, buffer); + bfd_set_error (bfd_error_bad_value); + return 0; + } + + compressed_size += header_size; + /* PR binutils/18087: If compression didn't make the section smaller, + just keep it uncompressed. */ + if (compressed_size < uncompressed_size) + bfd_update_compression_header (abfd, buffer, sec); + else + { + /* NOTE: There is a small memory leak here since + uncompressed_buffer is malloced and won't be freed. */ + bfd_release (abfd, buffer); + sec->contents = uncompressed_buffer; + sec->compress_status = COMPRESS_SECTION_NONE; + return uncompressed_size; + } + } + + free (uncompressed_buffer); + sec->contents = buffer; sec->size = compressed_size; sec->compress_status = COMPRESS_SECTION_DONE; - return TRUE; -#endif /* HAVE_ZLIB_H */ + return uncompressed_size; } /* @@ -161,12 +224,11 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr) { bfd_size_type sz; bfd_byte *p = *ptr; -#ifdef HAVE_ZLIB_H bfd_boolean ret; bfd_size_type save_size; bfd_size_type save_rawsize; bfd_byte *compressed_buffer; -#endif + unsigned int compression_header_size; if (abfd->direction != write_direction && sec->rawsize != 0) sz = sec->rawsize; @@ -198,10 +260,6 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr) 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. */ compressed_buffer = (bfd_byte *) bfd_malloc (sec->compressed_size); if (compressed_buffer == NULL) @@ -228,7 +286,13 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr) if (p == NULL) goto fail_compressed; - if (!decompress_contents (compressed_buffer, sec->compressed_size, p, sz)) + compression_header_size = bfd_get_compression_header_size (abfd, sec); + if (compression_header_size == 0) + /* Set header size to the zlib header size if it is a + SHF_COMPRESSED section. */ + compression_header_size = 12; + if (!decompress_contents (compressed_buffer + compression_header_size, + sec->compressed_size, p, sz)) { bfd_set_error (bfd_error_bad_value); if (p != *ptr) @@ -241,7 +305,6 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr) free (compressed_buffer); *ptr = p; return TRUE; -#endif case COMPRESS_SECTION_DONE: if (sec->contents == NULL) @@ -285,50 +348,108 @@ bfd_cache_section_contents (asection *sec, void *contents) sec->flags |= SEC_IN_MEMORY; } - /* FUNCTION - bfd_is_section_compressed + bfd_is_section_compressed_with_header SYNOPSIS - bfd_boolean bfd_is_section_compressed - (bfd *abfd, asection *section); + bfd_boolean bfd_is_section_compressed_with_header + (bfd *abfd, asection *section, + int *compression_header_size_p, + bfd_size_type *uncompressed_size_p); DESCRIPTION - Return @code{TRUE} if @var{section} is compressed. + Return @code{TRUE} if @var{section} is compressed. Compression + header size is returned in @var{compression_header_size_p} and + uncompressed size is returned in @var{uncompressed_size_p}. If + compression is unsupported, compression header size is returned + with -1 and uncompressed size is returned with 0. */ bfd_boolean -bfd_is_section_compressed (bfd *abfd, sec_ptr sec) +bfd_is_section_compressed_with_header (bfd *abfd, sec_ptr sec, + int *compression_header_size_p, + bfd_size_type *uncompressed_size_p) { - bfd_byte compressed_buffer [12]; + bfd_byte header[MAX_COMPRESSION_HEADER_SIZE]; + int compression_header_size; + int header_size; unsigned int saved = sec->compress_status; bfd_boolean compressed; + compression_header_size = bfd_get_compression_header_size (abfd, sec); + if (compression_header_size > MAX_COMPRESSION_HEADER_SIZE) + abort (); + header_size = compression_header_size ? compression_header_size : 12; + /* Don't decompress the section. */ sec->compress_status = COMPRESS_SECTION_NONE; - /* Read the zlib header. In this case, it should be "ZLIB" followed - by the uncompressed section size, 8 bytes in big-endian order. */ - compressed = (bfd_get_section_contents (abfd, sec, compressed_buffer, 0, 12) - && CONST_STRNEQ ((char*) compressed_buffer, "ZLIB")); - - /* Check for the pathalogical case of a debug string section that - contains the string ZLIB.... as the first entry. We assume that - no uncompressed .debug_str section would ever be big enough to - have the first byte of its (big-endian) size be non-zero. */ - if (compressed - && strcmp (sec->name, ".debug_str") == 0 - && ISPRINT (compressed_buffer[4])) + /* Read the header. */ + if (bfd_get_section_contents (abfd, sec, header, 0, header_size)) + { + if (compression_header_size == 0) + /* In this case, it should be "ZLIB" followed by the uncompressed + section size, 8 bytes in big-endian order. */ + compressed = CONST_STRNEQ ((char*) header , "ZLIB"); + else + compressed = TRUE; + } + else compressed = FALSE; + *uncompressed_size_p = sec->size; + if (compressed) + { + if (compression_header_size != 0) + { + if (!bfd_check_compression_header (abfd, header, sec, + uncompressed_size_p)) + compression_header_size = -1; + } + /* Check for the pathalogical case of a debug string section that + contains the string ZLIB.... as the first entry. We assume that + no uncompressed .debug_str section would ever be big enough to + have the first byte of its (big-endian) size be non-zero. */ + else if (strcmp (sec->name, ".debug_str") == 0 + && ISPRINT (header[4])) + compressed = FALSE; + else + *uncompressed_size_p = bfd_getb64 (header + 4); + } + /* Restore compress_status. */ sec->compress_status = saved; + *compression_header_size_p = compression_header_size; return compressed; } /* 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) +{ + int compression_header_size; + bfd_size_type uncompressed_size; + return (bfd_is_section_compressed_with_header (abfd, sec, + &compression_header_size, + &uncompressed_size) + && compression_header_size >= 0 + && uncompressed_size > 0); +} + +/* +FUNCTION bfd_init_section_decompress_status SYNOPSIS @@ -341,53 +462,55 @@ DESCRIPTION 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}. + section. Otherwise, return @code{TRUE}. */ bfd_boolean -bfd_init_section_decompress_status (bfd *abfd ATTRIBUTE_UNUSED, - sec_ptr sec ATTRIBUTE_UNUSED) +bfd_init_section_decompress_status (bfd *abfd, sec_ptr sec) { -#ifndef HAVE_ZLIB_H - bfd_set_error (bfd_error_invalid_operation); - return FALSE; -#else - bfd_byte compressed_buffer [12]; + bfd_byte header[MAX_COMPRESSION_HEADER_SIZE]; + int compression_header_size; + int header_size; bfd_size_type uncompressed_size; + compression_header_size = bfd_get_compression_header_size (abfd, sec); + if (compression_header_size > MAX_COMPRESSION_HEADER_SIZE) + abort (); + header_size = compression_header_size ? compression_header_size : 12; + + /* Read the header. */ if (sec->rawsize != 0 || sec->contents != NULL || sec->compress_status != COMPRESS_SECTION_NONE - || !bfd_get_section_contents (abfd, sec, compressed_buffer, 0, 12)) + || !bfd_get_section_contents (abfd, sec, header, 0, header_size)) { 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")) + if (compression_header_size == 0) + { + /* In this case, it should be "ZLIB" followed by the uncompressed + section size, 8 bytes in big-endian order. */ + if (! CONST_STRNEQ ((char*) header, "ZLIB")) + { + bfd_set_error (bfd_error_wrong_format); + return FALSE; + } + uncompressed_size = bfd_getb64 (header + 4); + } + else if (!bfd_check_compression_header (abfd, header, sec, + &uncompressed_size)) { 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; - uncompressed_size += compressed_buffer[7]; uncompressed_size <<= 8; - uncompressed_size += compressed_buffer[8]; uncompressed_size <<= 8; - uncompressed_size += compressed_buffer[9]; uncompressed_size <<= 8; - uncompressed_size += compressed_buffer[10]; uncompressed_size <<= 8; - uncompressed_size += compressed_buffer[11]; - sec->compressed_size = sec->size; sec->size = uncompressed_size; sec->compress_status = DECOMPRESS_SECTION_SIZED; return TRUE; -#endif } /* @@ -403,18 +526,12 @@ DESCRIPTION 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}. + section. Otherwise, return @code{TRUE}. */ bfd_boolean -bfd_init_section_compress_status (bfd *abfd ATTRIBUTE_UNUSED, - sec_ptr sec ATTRIBUTE_UNUSED) +bfd_init_section_compress_status (bfd *abfd, sec_ptr sec) { -#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; @@ -437,11 +554,50 @@ bfd_init_section_compress_status (bfd *abfd ATTRIBUTE_UNUSED, 0, uncompressed_size)) ret = FALSE; else - ret = bfd_compress_section_contents (abfd, sec, - uncompressed_buffer, - uncompressed_size); + { + uncompressed_size = bfd_compress_section_contents (abfd, sec, + uncompressed_buffer, + uncompressed_size); + ret = uncompressed_size != 0; + } - free (uncompressed_buffer); return ret; -#endif +} + +/* +FUNCTION + bfd_compress_section + +SYNOPSIS + bfd_boolean bfd_compress_section + (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer); + +DESCRIPTION + If open for write, compress section, update section size with + compressed size and set compress_status to COMPRESS_SECTION_DONE. + + Return @code{FALSE} if compression fail. Otherwise, return + @code{TRUE}. +*/ + +bfd_boolean +bfd_compress_section (bfd *abfd, sec_ptr sec, bfd_byte *uncompressed_buffer) +{ + bfd_size_type uncompressed_size = sec->size; + + /* Error if not opened for write. */ + if (abfd->direction != write_direction + || uncompressed_size == 0 + || uncompressed_buffer == NULL + || sec->contents != NULL + || sec->compressed_size != 0 + || sec->compress_status != COMPRESS_SECTION_NONE) + { + bfd_set_error (bfd_error_invalid_operation); + return FALSE; + } + + /* Compress it. */ + return bfd_compress_section_contents (abfd, sec, uncompressed_buffer, + uncompressed_size) != 0; } diff --git a/bfd/config.bfd b/bfd/config.bfd index 75f21e3..e08bb3b 100644 --- a/bfd/config.bfd +++ b/bfd/config.bfd @@ -178,6 +178,11 @@ case "${targ}" in targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec" want64=true ;; + aarch64-*-freebsd*) + targ_defvec=aarch64_elf64_le_vec + targ_selvecs="aarch64_elf64_be_vec arm_elf32_le_vec arm_elf32_be_vec" + want64=true + ;; aarch64-*-linux*) targ_defvec=aarch64_elf64_le_vec targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec" @@ -461,6 +466,10 @@ case "${targ}" in targ_underscore=yes ;; + h8300*-*-linux*) + targ_defvec=h8300_elf32_linux_vec + ;; + h8300*-*-*) targ_defvec=h8300_coff_vec targ_underscore=yes @@ -519,10 +528,10 @@ case "${targ}" in targ_selvecs=i386_elf32_vec ;; i[3-7]86-*-sysv4* | i[3-7]86-*-unixware* | \ - i[3-7]86-*-elf | i[3-7]86-*-sco3.2v5* | \ + i[3-7]86-*-elf* | i[3-7]86-*-sco3.2v5* | \ i[3-7]86-*-dgux* | i[3-7]86-*-sysv5*) targ_defvec=i386_elf32_vec - targ_selvecs=i386_coff_vec + targ_selvecs="iamcu_elf32_vec i386_coff_vec" ;; i[3-7]86-*-solaris2*) targ_defvec=i386_elf32_sol2_vec @@ -543,16 +552,19 @@ case "${targ}" in ;; i[3-7]86-*-nto*) targ_defvec=i386_elf32_vec - targ_selvecs=i386_coff_vec + targ_selvecs="iamcu_elf32_vec i386_coff_vec" ;; i[3-7]86-*-aros*) targ_defvec=i386_elf32_vec + targ_selvecs=iamcu_elf32_vec ;; i[3-7]86-*-chorus*) targ_defvec=i386_elf32_vec + targ_selvecs=iamcu_elf32_vec ;; i[3-7]86-*-dicos*) targ_defvec=i386_elf32_vec + targ_selvecs=iamcu_elf32_vec targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec" ;; *-*-msdosdjgpp* | *-*-go32* ) @@ -565,7 +577,7 @@ case "${targ}" in ;; i[3-7]86-*-rtems*) targ_defvec=i386_elf32_vec - targ_selvecs="i386_coff_vec i386_aout_vec" + targ_selvecs="iamcu_elf32_vec i386_coff_vec i386_aout_vec" ;; i[3-7]86-*-darwin* | i[3-7]86-*-macos10* | i[3-7]86-*-rhapsody*) targ_defvec=i386_mach_o_vec @@ -583,6 +595,7 @@ case "${targ}" in ;; i[3-7]86-*-dragonfly*) targ_defvec=i386_elf32_vec + targ_selvecs=iamcu_elf32_vec targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec" ;; i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | \ @@ -593,7 +606,7 @@ case "${targ}" in ;; i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu) targ_defvec=i386_elf32_fbsd_vec - targ_selvecs="i386_elf32_vec i386_pei_vec i386_coff_vec" + targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_pei_vec i386_coff_vec" targ64_selvecs="x86_64_elf64_fbsd_vec x86_64_elf64_vec x86_64_pei_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec" # FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling. case "${targ}" in @@ -603,35 +616,35 @@ case "${targ}" in ;; i[3-7]86-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu) targ_defvec=i386_elf32_vec - targ_selvecs=i386_aout_nbsd_vec + targ_selvecs="i386_aout_nbsd_vec iamcu_elf32_vec" targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec" ;; i[3-7]86-*-netbsdpe*) targ_defvec=i386_pe_vec - targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec" + targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec" ;; i[3-7]86-*-netbsdaout* | i[3-7]86-*-netbsd* | \ i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3]) targ_defvec=i386_aout_nbsd_vec - targ_selvecs="i386_elf32_vec i386_aout_bsd_vec" + targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_aout_bsd_vec" targ_underscore=yes ;; i[3-7]86-*-openbsd*) targ_defvec=i386_elf32_vec - targ_selvecs=i386_aout_nbsd_vec + targ_selvecs="iamcu_elf32_vec i386_aout_nbsd_vec" ;; i[3-7]86-*-netware*) targ_defvec=i386_elf32_vec - targ_selvecs="i386_nlm32_vec i386_coff_vec i386_aout_vec" + targ_selvecs="iamcu_elf32_vec i386_nlm32_vec i386_coff_vec i386_aout_vec" ;; i[3-7]86-*-linux*aout*) targ_defvec=i386_aout_linux_vec - targ_selvecs=i386_elf32_vec + targ_selvecs="i386_elf32_vec iamcu_elf32_vec" targ_underscore=yes ;; i[3-7]86-*-linux-*) targ_defvec=i386_elf32_vec - targ_selvecs="i386_aout_linux_vec i386_pei_vec" + targ_selvecs="iamcu_elf32_vec i386_aout_linux_vec i386_pei_vec" targ64_selvecs="x86_64_elf64_vec x86_64_elf32_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec" ;; i[3-7]86-*-nacl*) @@ -641,6 +654,10 @@ case "${targ}" in targ_archs="$targ_archs bfd_arm_arch" ;; #ifdef BFD64 + x86_64-*-cloudabi*) + targ_defvec=x86_64_elf64_cloudabi_vec + want64=true + ;; x86_64-*-darwin*) targ_defvec=x86_64_mach_o_vec targ_selvecs="i386_mach_o_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" @@ -649,32 +666,32 @@ case "${targ}" in ;; x86_64-*-dicos*) targ_defvec=x86_64_elf64_vec - targ_selvecs="i386_elf32_vec l1om_elf64_vec k1om_elf64_vec" + targ_selvecs="i386_elf32_vec iamcu_elf32_vec l1om_elf64_vec k1om_elf64_vec" want64=true ;; x86_64-*-elf*) targ_defvec=x86_64_elf64_vec - targ_selvecs="i386_elf32_vec x86_64_elf32_vec l1om_elf64_vec k1om_elf64_vec" + targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec l1om_elf64_vec k1om_elf64_vec" want64=true ;; x86_64-*-dragonfly*) targ_defvec=x86_64_elf64_vec - targ_selvecs="i386_elf32_vec l1om_elf64_vec k1om_elf64_vec" + targ_selvecs="i386_elf32_vec iamcu_elf32_vec l1om_elf64_vec k1om_elf64_vec" want64=true ;; x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu) targ_defvec=x86_64_elf64_fbsd_vec - targ_selvecs="i386_elf32_fbsd_vec i386_coff_vec i386_pei_vec x86_64_pei_vec i386_elf32_vec x86_64_elf64_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec" + targ_selvecs="i386_elf32_fbsd_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pei_vec i386_elf32_vec x86_64_elf64_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec" want64=true ;; x86_64-*-netbsd* | x86_64-*-openbsd*) targ_defvec=x86_64_elf64_vec - targ_selvecs="i386_elf32_vec i386_aout_nbsd_vec i386_coff_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec" + targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_aout_nbsd_vec i386_coff_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec" want64=true ;; x86_64-*-linux-*) targ_defvec=x86_64_elf64_vec - targ_selvecs="i386_elf32_vec x86_64_elf32_vec i386_aout_linux_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec" + targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_aout_linux_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec" want64=true ;; x86_64-*-nacl*) @@ -685,7 +702,7 @@ case "${targ}" in ;; x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin) targ_defvec=x86_64_pe_vec - targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_be_vec x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec" + targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_be_vec x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec" want64=true targ_underscore=no ;; @@ -696,10 +713,11 @@ case "${targ}" in #endif i[3-7]86-*-lynxos*) targ_defvec=i386_elf32_vec - targ_selvecs="i386_coff_lynx_vec i386_aout_lynx_vec" + targ_selvecs="iamcu_elf32_vec i386_coff_lynx_vec i386_aout_lynx_vec" ;; i[3-7]86-*-gnu*) targ_defvec=i386_elf32_vec + targ_selvecs=iamcu_elf32_vec ;; i[3-7]86-*-mach* | i[3-7]86-*-osf1mk*) targ_defvec=i386_aout_mach3_vec @@ -715,7 +733,7 @@ case "${targ}" in ;; i[3-7]86-*-moss*) targ_defvec=i386_elf32_vec - targ_selvecs="i386_msdos_vec i386_aout_vec" + targ_selvecs="iamcu_elf32_vec i386_msdos_vec i386_aout_vec" ;; i[3-7]86-*-beospe*) targ_defvec=i386_pe_vec @@ -723,7 +741,7 @@ case "${targ}" in ;; i[3-7]86-*-beoself* | i[3-7]86-*-beos*) targ_defvec=i386_elf32_vec - targ_selvecs="i386_pe_vec i386_pei_vec" + targ_selvecs="iamcu_elf32_vec i386_pe_vec i386_pei_vec" ;; i[3-7]86-*-interix*) targ_defvec=i386_pei_vec @@ -733,11 +751,11 @@ case "${targ}" in ;; i[3-7]86-*-rdos*) targ_defvec=i386_elf32_vec - targ_selvecs=i386_coff_vec + targ_selvecs="iamcu_elf32_vec i386_coff_vec" ;; i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe) targ_defvec=i386_pe_vec - targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec" + targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec" targ_underscore=yes ;; i[3-7]86-none-*) @@ -752,7 +770,7 @@ case "${targ}" in ;; i[3-7]86-*-chaos) targ_defvec=i386_elf32_vec - targ_selfvecs=i386chaos_vec + targ_selfvecs="iamcu_elf32_vec i386chaos_vec" ;; i860-*-mach3* | i860-*-osf1* | i860-*-coff*) @@ -1194,7 +1212,7 @@ case "${targ}" in pjl-*-*) targ_defvec=pj_elf32_le_vec - targ_selvecs="pj_elf32_le_vec pj_elf32_vec i386_elf32_vec" + targ_selvecs="pj_elf32_le_vec pj_elf32_vec i386_elf32_vec iamcu_elf32_vec" ;; powerpc-*-aix5.[01] | rs6000-*-aix5.[01]) @@ -1628,6 +1646,10 @@ case "${targ}" in targ_defvec=tilepro_elf32_vec ;; + ft32*-*-*) + targ_defvec=ft32_elf32_vec + ;; + v850*-*-*) targ_defvec=v850_elf32_vec targ_selvecs="v800_elf32_vec" @@ -1749,6 +1771,13 @@ case "${targ_defvec} ${targ_selvecs}" in ;; esac +# If we support Intel MCU target, then add support for bfd_iamcu_arch. +case "${targ_defvec} ${targ_selvecs}" in + *iamcu_elf32*) + targ_archs="$targ_archs bfd_iamcu_arch" + ;; +esac + # If we support Intel L1OM target, then add support for bfd_l1om_arch. case "${targ_defvec} ${targ_selvecs}" in *l1om_elf64*) diff --git a/bfd/config.in b/bfd/config.in index b911bf6..58248bd 100644 --- a/bfd/config.in +++ b/bfd/config.in @@ -17,6 +17,10 @@ /* Define to 1 if you have the header file. */ #undef HAVE_ALLOCA_H +/* Define to 1 if you have the declaration of `asprintf', and to 0 if you + don't. */ +#undef HAVE_DECL_ASPRINTF + /* Define to 1 if you have the declaration of `basename', and to 0 if you don't. */ #undef HAVE_DECL_BASENAME @@ -72,6 +76,10 @@ */ #undef HAVE_DECL_STRSTR +/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you + don't. */ +#undef HAVE_DECL_VASPRINTF + /* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you don't. */ #undef HAVE_DECL_VSNPRINTF @@ -262,15 +270,15 @@ /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H +/* Define to 1 if you have the header file. */ +#undef HAVE_WCTYPE_H + /* Define if has win32_pstatus_t. */ #undef HAVE_WIN32_PSTATUS_T /* Define to 1 if you have the header file. */ #undef HAVE_WINDOWS_H -/* Define to 1 if you have the header file. */ -#undef HAVE_ZLIB_H - /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR diff --git a/bfd/configure b/bfd/configure index f7a9e81..1b6350a 100755 --- a/bfd/configure +++ b/bfd/configure @@ -620,6 +620,8 @@ SHARED_LDFLAGS LIBM COREFLAG COREFILE +zlibinc +zlibdir EXEEXT_FOR_BUILD CC_FOR_BUILD BFD_HOSTPTR_T @@ -797,7 +799,7 @@ enable_build_warnings enable_maintainer_mode enable_install_libbfd enable_nls -with_zlib +with_system_zlib ' ac_precious_vars='build_alias host_alias @@ -1463,7 +1465,7 @@ Optional Packages: --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 + --with-system-zlib use installed libz Some influential environment variables: CC C compiler command @@ -11421,7 +11423,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11424 "configure" +#line 11426 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11527,7 +11529,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11530 "configure" +#line 11532 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12988,7 +12990,7 @@ $as_echo "$bfd_cv_build_exeext" >&6; } fi -for ac_header in alloca.h stddef.h string.h strings.h stdlib.h time.h unistd.h wchar.h +for ac_header in alloca.h stddef.h string.h strings.h stdlib.h time.h unistd.h wchar.h wctype.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -13817,6 +13819,28 @@ cat >>confdefs.h <<_ACEOF #define HAVE_DECL_STRSTR $ac_have_decl _ACEOF +ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default" +if test "x$ac_cv_have_decl_asprintf" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_ASPRINTF $ac_have_decl +_ACEOF + +ac_fn_c_check_decl "$LINENO" "vasprintf" "ac_cv_have_decl_vasprintf" "$ac_includes_default" +if test "x$ac_cv_have_decl_vasprintf" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_VASPRINTF $ac_have_decl +_ACEOF + ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default" if test "x$ac_cv_have_decl_snprintf" = x""yes; then : ac_have_decl=1 @@ -13854,88 +13878,21 @@ _ACEOF # Link in zlib if we can. This allows us to read compressed debug sections. # This is used only by compress.c. - # See if the user specified whether he wants zlib support or not. + # Use the system's zlib library. + zlibdir="-L\$(top_builddir)/../zlib" + zlibinc="-I\$(top_srcdir)/../zlib" -# 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 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char zlibVersion (); -int -main () -{ -return zlibVersion (); - ; - return 0; -} -_ACEOF -for ac_lib in '' z; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" +# Check whether --with-system-zlib was given. +if test "${with_system_zlib+set}" = set; then : + withval=$with_system_zlib; if test x$with_system_zlib = xyes ; then + zlibdir= + zlibinc= fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_zlibVersion=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if test "${ac_cv_search_zlibVersion+set}" = set; then : - break -fi -done -if test "${ac_cv_search_zlibVersion+set}" = set; then : - -else - ac_cv_search_zlibVersion=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_zlibVersion" >&5 -$as_echo "$ac_cv_search_zlibVersion" >&6; } -ac_res=$ac_cv_search_zlibVersion -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - for ac_header in zlib.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_ZLIB_H 1 -_ACEOF fi -done -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. @@ -15356,6 +15313,7 @@ do frv_elf32_fdpic_vec) tb="$tb elf32-frv.lo elf32.lo $elf" ;; h8300_coff_vec) tb="$tb coff-h8300.lo reloc16.lo $coffgen" ;; h8300_elf32_vec) tb="$tb elf32-h8300.lo elf32.lo $elf" ;; + h8300_elf32_linux_vec) tb="$tb elf32-h8300.lo elf32.lo $elf" ;; h8500_coff_vec) tb="$tb coff-h8500.lo reloc16.lo $coffgen" ;; hppa_elf32_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;; hppa_elf32_linux_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;; @@ -15387,6 +15345,7 @@ do i386_nlm32_vec) tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;; i386_pe_vec) tb="$tb pe-i386.lo peigen.lo $coff" ;; i386_pei_vec) tb="$tb pei-i386.lo peigen.lo $coff" ;; + iamcu_elf32_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;; i860_coff_vec) tb="$tb coff-i860.lo $coff" ;; i860_elf32_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;; i860_elf32_le_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;; @@ -15598,6 +15557,7 @@ do vax_aout_bsd_vec) tb="$tb vaxbsd.lo aout32.lo" ;; vax_aout_nbsd_vec) tb="$tb vaxnetbsd.lo aout32.lo" ;; vax_elf32_vec) tb="$tb elf32-vax.lo elf32.lo $elf" ;; + ft32_elf32_vec) tb="$tb elf32-ft32.lo elf32.lo $elf" ;; visium_elf32_vec) tb="$tb elf32-visium.lo elf32.lo $elf" ;; w65_coff_vec) tb="$tb coff-w65.lo reloc16.lo $coffgen" ;; we32k_coff_vec) tb="$tb coff-we32k.lo $coffgen" ;; @@ -15605,6 +15565,7 @@ do x86_64_elf32_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;; x86_64_elf32_nacl_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;; x86_64_elf64_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; + x86_64_elf64_cloudabi_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; x86_64_elf64_fbsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; x86_64_elf64_nacl_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; x86_64_elf64_sol2_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; diff --git a/bfd/configure.ac b/bfd/configure.ac index a2743a0..2a38842 100644 --- a/bfd/configure.ac +++ b/bfd/configure.ac @@ -207,7 +207,7 @@ AC_SUBST(BFD_HOSTPTR_T) BFD_CC_FOR_BUILD -AC_CHECK_HEADERS(alloca.h stddef.h string.h strings.h stdlib.h time.h unistd.h wchar.h) +AC_CHECK_HEADERS(alloca.h stddef.h string.h strings.h stdlib.h time.h unistd.h wchar.h wctype.h) AC_CHECK_HEADERS(fcntl.h sys/file.h sys/time.h sys/stat.h sys/resource.h) GCC_HEADER_STDINT(bfd_stdint.h) AC_HEADER_TIME @@ -232,6 +232,8 @@ AC_CHECK_DECLS(malloc) AC_CHECK_DECLS(realloc) AC_CHECK_DECLS(stpcpy) AC_CHECK_DECLS(strstr) +AC_CHECK_DECLS(asprintf) +AC_CHECK_DECLS(vasprintf) AC_CHECK_DECLS(snprintf) AC_CHECK_DECLS(vsnprintf) AC_CHECK_DECLS(strnlen) @@ -757,6 +759,7 @@ do frv_elf32_fdpic_vec) tb="$tb elf32-frv.lo elf32.lo $elf" ;; h8300_coff_vec) tb="$tb coff-h8300.lo reloc16.lo $coffgen" ;; h8300_elf32_vec) tb="$tb elf32-h8300.lo elf32.lo $elf" ;; + h8300_elf32_linux_vec) tb="$tb elf32-h8300.lo elf32.lo $elf" ;; h8500_coff_vec) tb="$tb coff-h8500.lo reloc16.lo $coffgen" ;; hppa_elf32_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;; hppa_elf32_linux_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;; @@ -788,6 +791,7 @@ do i386_nlm32_vec) tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;; i386_pe_vec) tb="$tb pe-i386.lo peigen.lo $coff" ;; i386_pei_vec) tb="$tb pei-i386.lo peigen.lo $coff" ;; + iamcu_elf32_vec) tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;; i860_coff_vec) tb="$tb coff-i860.lo $coff" ;; i860_elf32_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;; i860_elf32_le_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;; @@ -999,6 +1003,7 @@ do vax_aout_bsd_vec) tb="$tb vaxbsd.lo aout32.lo" ;; vax_aout_nbsd_vec) tb="$tb vaxnetbsd.lo aout32.lo" ;; vax_elf32_vec) tb="$tb elf32-vax.lo elf32.lo $elf" ;; + ft32_elf32_vec) tb="$tb elf32-ft32.lo elf32.lo $elf" ;; visium_elf32_vec) tb="$tb elf32-visium.lo elf32.lo $elf" ;; w65_coff_vec) tb="$tb coff-w65.lo reloc16.lo $coffgen" ;; we32k_coff_vec) tb="$tb coff-we32k.lo $coffgen" ;; @@ -1006,6 +1011,7 @@ do x86_64_elf32_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;; x86_64_elf32_nacl_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;; x86_64_elf64_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; + x86_64_elf64_cloudabi_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; x86_64_elf64_fbsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; x86_64_elf64_nacl_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; x86_64_elf64_sol2_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;; diff --git a/bfd/cpu-ft32.c b/bfd/cpu-ft32.c new file mode 100644 index 0000000..950a989 --- /dev/null +++ b/bfd/cpu-ft32.c @@ -0,0 +1,41 @@ +/* BFD support for the ft32 processor. + Copyright (C) 2013-2015 Free Software Foundation, Inc. + Written by FTDI (support@ftdichip.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" + + +const bfd_arch_info_type bfd_ft32_arch = + { + 32, /* 32 bits in a word. */ + 32, /* 32 bits in an address. */ + 8, /* 8 bits in a byte. */ + bfd_arch_ft32, /* enum bfd_architecture arch. */ + bfd_mach_ft32, + "ft32", /* Arch name. */ + "ft32", /* Printable name. */ + 2, /* Unsigned int section alignment power. */ + TRUE, /* The one and only. */ + bfd_default_compatible, + bfd_default_scan, + bfd_arch_default_fill, + 0, + }; diff --git a/bfd/cpu-iamcu.c b/bfd/cpu-iamcu.c new file mode 100644 index 0000000..33d3dcc --- /dev/null +++ b/bfd/cpu-iamcu.c @@ -0,0 +1,60 @@ +/* BFD support for the Intel MCU architecture. + Copyright (C) 2015 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" + +extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean, + bfd_boolean); + +static const bfd_arch_info_type bfd_iamcu_arch_intel_syntax = +{ + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_iamcu, + bfd_mach_i386_iamcu_intel_syntax, + "iamcu:intel", + "iamcu:intel", + 3, + TRUE, + bfd_default_compatible, + bfd_default_scan, + bfd_arch_i386_short_nop_fill, + 0 +}; + +const bfd_arch_info_type bfd_iamcu_arch = +{ + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_iamcu, + bfd_mach_i386_iamcu, + "iamcu", + "iamcu", + 3, + TRUE, + bfd_default_compatible, + bfd_default_scan, + bfd_arch_i386_short_nop_fill, + &bfd_iamcu_arch_intel_syntax +}; diff --git a/bfd/cpu-nios2.c b/bfd/cpu-nios2.c index 57539db..1e8f521 100644 --- a/bfd/cpu-nios2.c +++ b/bfd/cpu-nios2.c @@ -24,6 +24,26 @@ #include "bfd.h" #include "libbfd.h" +static const bfd_arch_info_type * +nios2_compatible (const bfd_arch_info_type *a, + const bfd_arch_info_type *b) +{ + if (a->arch != b->arch) + return NULL; + + if (a->bits_per_word != b->bits_per_word) + return NULL; + + if (a->mach == bfd_mach_nios2) + return a; + else if (b->mach == bfd_mach_nios2) + return b; + else if (a->mach != b->mach) + return NULL; + + return a; +} + #define N(BITS_WORD, BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT) \ { \ BITS_WORD, /* bits in a word */ \ @@ -35,10 +55,20 @@ PRINT, \ 3, \ DEFAULT, \ - bfd_default_compatible, \ + nios2_compatible, \ bfd_default_scan, \ bfd_arch_default_fill, \ NEXT \ } -const bfd_arch_info_type bfd_nios2_arch = N (32, 32, 0, "nios2", TRUE, NULL); +#define NIOS2R1_NEXT &arch_info_struct[0] +#define NIOS2R2_NEXT &arch_info_struct[1] + +static const bfd_arch_info_type arch_info_struct[] = +{ + N (32, 32, bfd_mach_nios2r1, "nios2:r1", FALSE, NIOS2R2_NEXT), + N (32, 32, bfd_mach_nios2r2, "nios2:r2", FALSE, NULL), +}; + +const bfd_arch_info_type bfd_nios2_arch = + N (32, 32, 0, "nios2", TRUE, NIOS2R1_NEXT); diff --git a/bfd/cpu-ns32k.c b/bfd/cpu-ns32k.c index a08cf88..5745427 100644 --- a/bfd/cpu-ns32k.c +++ b/bfd/cpu-ns32k.c @@ -585,8 +585,9 @@ _bfd_do_ns32k_reloc_contents (reloc_howto_type *howto, switch (size) { default: - case 0: abort (); + case 0: + return bfd_reloc_ok; case 1: case 2: case 4: diff --git a/bfd/cpu-s390.c b/bfd/cpu-s390.c index 5fd3271..dbdec4a 100644 --- a/bfd/cpu-s390.c +++ b/bfd/cpu-s390.c @@ -23,44 +23,31 @@ #include "bfd.h" #include "libbfd.h" -const bfd_arch_info_type bfd_s390_64_arch = -{ - 64, /* bits in a word */ - 64, /* bits in an address */ - 8, /* bits in a byte */ - bfd_arch_s390, - bfd_mach_s390_64, - "s390", - "s390:64-bit", - 3, /* section alignment power */ -#if BFD_DEFAULT_TARGET_SIZE == 64 - TRUE, /* the default */ -#else - FALSE, /* the default */ -#endif - bfd_default_compatible, - bfd_default_scan, - bfd_arch_default_fill, - NULL -}; +#define N(bits, number, print, is_default, next) \ + { \ + bits, /* bits in a word */ \ + bits, /* bits in an address */ \ + 8, /* bits in a byte */ \ + bfd_arch_s390, \ + number, \ + "s390", \ + print, \ + 3, /* section alignment power */ \ + is_default, \ + bfd_default_compatible, \ + bfd_default_scan, \ + bfd_arch_default_fill, \ + next \ + } -const bfd_arch_info_type bfd_s390_arch = -{ - 32, /* bits in a word */ - 32, /* bits in an address */ - 8, /* bits in a byte */ - bfd_arch_s390, - bfd_mach_s390_31, - "s390", - "s390:31-bit", - 3, /* section alignment power */ #if BFD_DEFAULT_TARGET_SIZE == 64 - FALSE, /* the default */ +static const bfd_arch_info_type bfd_s390_31_arch = + N (32, bfd_mach_s390_31, "s390:31-bit", FALSE, NULL); +const bfd_arch_info_type bfd_s390_arch = + N (64, bfd_mach_s390_64, "s390:64-bit", TRUE, &bfd_s390_31_arch); #else - TRUE, /* the default */ +static const bfd_arch_info_type bfd_s390_64_arch = + N (64, bfd_mach_s390_64, "s390:64-bit", FALSE, NULL); +const bfd_arch_info_type bfd_s390_arch = + N (32, bfd_mach_s390_31, "s390:31-bit", TRUE, &bfd_s390_64_arch); #endif - bfd_default_compatible, - bfd_default_scan, - bfd_arch_default_fill, - &bfd_s390_64_arch -}; diff --git a/bfd/cpu-w65.c b/bfd/cpu-w65.c index 129b10f..c5252f5 100644 --- a/bfd/cpu-w65.c +++ b/bfd/cpu-w65.c @@ -5,7 +5,7 @@ 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 publiw65ed by + 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. @@ -14,7 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You w65ould have received a copy of the GNU General Public License + 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. */ diff --git a/bfd/doc/ChangeLog b/bfd/doc/ChangeLog index fe3d691..8bf8880 100644 --- a/bfd/doc/ChangeLog +++ b/bfd/doc/ChangeLog @@ -1,3 +1,13 @@ +2015-06-21 Alan Modra + + * Makefile.am: Expand $<. + * Makefile.in: Regenerate. + +2015-02-11 Pedro Alves + + * Makefile.am (libbfd.h, libcoff.h): Close extern "C" scope. + * Makefile.in: Regenerate. + 2015-01-12 Bernd Edlinger Alan Modra diff --git a/bfd/doc/Makefile.am b/bfd/doc/Makefile.am index 779f361..b6e8335 100644 --- a/bfd/doc/Makefile.am +++ b/bfd/doc/Makefile.am @@ -96,21 +96,21 @@ protos: libbfd.h libcoff.h bfd.h aoutx.texi: aoutx.stamp ; @true aoutx.stamp: $(srcdir)/../aoutx.h $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >aoutx.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../aoutx.h >aoutx.tmp test -e aoutx.texi || test ! -f $(srcdir)/aoutx.texi || cp -p $(srcdir)/aoutx.texi . $(SHELL) $(srcdir)/../../move-if-change aoutx.tmp aoutx.texi touch $@ archive.texi: archive.stamp ; @true archive.stamp: $(srcdir)/../archive.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >archive.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../archive.c >archive.tmp test -e archive.texi || test ! -f $(srcdir)/archive.texi || cp -p $(srcdir)/archive.texi . $(SHELL) $(srcdir)/../../move-if-change archive.tmp archive.texi touch $@ archures.texi: archures.stamp ; @true archures.stamp: $(srcdir)/../archures.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >archures.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../archures.c >archures.tmp test -e archures.texi || test ! -f $(srcdir)/archures.texi || cp -p $(srcdir)/archures.texi . $(SHELL) $(srcdir)/../../move-if-change archures.tmp archures.texi touch $@ @@ -119,133 +119,133 @@ archures.stamp: $(srcdir)/../archures.c $(srcdir)/doc.str $(MKDOC) # bfd.texinfo on an 8.3 filesystem. bfdt.texi: bfdt.stamp ; @true bfdt.stamp: $(srcdir)/../bfd.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >bfd.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfd.c >bfd.tmp test -e bfdt.texi || test ! -f $(srcdir)/bfdt.texi || cp -p $(srcdir)/bfdt.texi . $(SHELL) $(srcdir)/../../move-if-change bfd.tmp bfdt.texi touch $@ cache.texi: cache.stamp ; @true cache.stamp: $(srcdir)/../cache.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >cache.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../cache.c >cache.tmp test -e cache.texi || test ! -f $(srcdir)/cache.texi || cp -p $(srcdir)/cache.texi . $(SHELL) $(srcdir)/../../move-if-change cache.tmp cache.texi touch $@ coffcode.texi: coffcode.stamp ; @true coffcode.stamp: $(srcdir)/../coffcode.h $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >coffcode.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../coffcode.h >coffcode.tmp test -e coffcode.texi || test ! -f $(srcdir)/coffcode.texi || cp -p $(srcdir)/coffcode.texi . $(SHELL) $(srcdir)/../../move-if-change coffcode.tmp coffcode.texi touch $@ core.texi: core.stamp ; @true core.stamp: $(srcdir)/../corefile.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >core.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../corefile.c >core.tmp test -e core.texi || test ! -f $(srcdir)/core.texi || cp -p $(srcdir)/core.texi . $(SHELL) $(srcdir)/../../move-if-change core.tmp core.texi touch $@ elf.texi: elf.stamp ; @true elf.stamp: $(srcdir)/../elf.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >elf.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../elf.c >elf.tmp test -e elf.texi || test ! -f $(srcdir)/elf.texi || cp -p $(srcdir)/elf.texi . $(SHELL) $(srcdir)/../../move-if-change elf.tmp elf.texi touch $@ elfcode.texi: elfcode.stamp ; @true elfcode.stamp: $(srcdir)/../elfcode.h $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >elfcode.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../elfcode.h >elfcode.tmp test -e elfcode.texi || test ! -f $(srcdir)/elfcode.texi || cp -p $(srcdir)/elfcode.texi . $(SHELL) $(srcdir)/../../move-if-change elfcode.tmp elfcode.texi touch $@ mmo.texi: mmo.stamp ; @true mmo.stamp: $(srcdir)/../mmo.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >mmo.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../mmo.c >mmo.tmp test -e mmo.texi || test ! -f $(srcdir)/mmo.texi || cp -p $(srcdir)/mmo.texi . $(SHELL) $(srcdir)/../../move-if-change mmo.tmp mmo.texi touch $@ format.texi: format.stamp ; @true format.stamp: $(srcdir)/../format.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >format.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../format.c >format.tmp test -e format.texi || test ! -f $(srcdir)/format.texi || cp -p $(srcdir)/format.texi . $(SHELL) $(srcdir)/../../move-if-change format.tmp format.texi touch $@ libbfd.texi: libbfd.stamp ; @true libbfd.stamp: $(srcdir)/../libbfd.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >libbfd.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../libbfd.c >libbfd.tmp test -e libbfd.texi || test ! -f $(srcdir)/libbfd.texi || cp -p $(srcdir)/libbfd.texi . $(SHELL) $(srcdir)/../../move-if-change libbfd.tmp libbfd.texi touch $@ bfdio.texi: bfdio.stamp ; @true bfdio.stamp: $(srcdir)/../bfdio.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >bfdio.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdio.c >bfdio.tmp test -e bfdio.texi || test ! -f $(srcdir)/bfdio.texi || cp -p $(srcdir)/bfdio.texi . $(SHELL) $(srcdir)/../../move-if-change bfdio.tmp bfdio.texi touch $@ bfdwin.texi: bfdwin.stamp ; @true bfdwin.stamp: $(srcdir)/../bfdwin.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >bfdwin.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdwin.c >bfdwin.tmp test -e bfdwin.texi || test ! -f $(srcdir)/bfdwin.texi || cp -p $(srcdir)/bfdwin.texi . $(SHELL) $(srcdir)/../../move-if-change bfdwin.tmp bfdwin.texi touch $@ opncls.texi: opncls.stamp ; @true opncls.stamp: $(srcdir)/../opncls.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >opncls.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../opncls.c >opncls.tmp test -e opncls.texi || test ! -f $(srcdir)/opncls.texi || cp -p $(srcdir)/opncls.texi . $(SHELL) $(srcdir)/../../move-if-change opncls.tmp opncls.texi touch $@ reloc.texi: reloc.stamp ; @true reloc.stamp: $(srcdir)/../reloc.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >reloc.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../reloc.c >reloc.tmp test -e reloc.texi || test ! -f $(srcdir)/reloc.texi || cp -p $(srcdir)/reloc.texi . $(SHELL) $(srcdir)/../../move-if-change reloc.tmp reloc.texi touch $@ section.texi: section.stamp ; @true section.stamp: $(srcdir)/../section.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >section.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../section.c >section.tmp test -e section.texi || test ! -f $(srcdir)/section.texi || cp -p $(srcdir)/section.texi . $(SHELL) $(srcdir)/../../move-if-change section.tmp section.texi touch $@ syms.texi: syms.stamp ; @true syms.stamp: $(srcdir)/../syms.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >syms.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../syms.c >syms.tmp test -e syms.texi || test ! -f $(srcdir)/syms.texi || cp -p $(srcdir)/syms.texi . $(SHELL) $(srcdir)/../../move-if-change syms.tmp syms.texi touch $@ targets.texi: targets.stamp ; @true targets.stamp: $(srcdir)/../targets.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >targets.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../targets.c >targets.tmp test -e targets.texi || test ! -f $(srcdir)/targets.texi || cp -p $(srcdir)/targets.texi . $(SHELL) $(srcdir)/../../move-if-change targets.tmp targets.texi touch $@ init.texi: init.stamp ; @true init.stamp: $(srcdir)/../init.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >init.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../init.c >init.tmp test -e init.texi || test ! -f $(srcdir)/init.texi || cp -p $(srcdir)/init.texi . $(SHELL) $(srcdir)/../../move-if-change init.tmp init.texi touch $@ hash.texi: hash.stamp ; @true hash.stamp: $(srcdir)/../hash.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >hash.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../hash.c >hash.tmp test -e hash.texi || test ! -f $(srcdir)/hash.texi || cp -p $(srcdir)/hash.texi . $(SHELL) $(srcdir)/../../move-if-change hash.tmp hash.texi touch $@ linker.texi: linker.stamp ; @true linker.stamp: $(srcdir)/../linker.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >linker.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../linker.c >linker.tmp test -e linker.texi || test ! -f $(srcdir)/linker.texi || cp -p $(srcdir)/linker.texi . $(SHELL) $(srcdir)/../../move-if-change linker.tmp linker.texi touch $@ @@ -275,6 +275,9 @@ libbfd.h: $(LIBBFD_H_DEP) ./$(MKDOC) -i -f $(srcdir)/proto.str < $$file >> $@ ;; \ esac; \ done + echo "#ifdef __cplusplus" >> $@ + echo "}" >> $@ + echo "#endif" >> $@ LIBCOFF_H_DEP = \ $(srcdir)/../libcoff-in.h \ @@ -294,6 +297,9 @@ libcoff.h: $(LIBCOFF_H_DEP) ./$(MKDOC) -i -f $(srcdir)/proto.str < $$file >> $@ ;; \ esac; \ done + echo "#ifdef __cplusplus" >> $@ + echo "}" >> $@ + echo "#endif" >> $@ BFD_H_DEP = \ $(srcdir)/../bfd-in.h \ diff --git a/bfd/doc/Makefile.in b/bfd/doc/Makefile.in index 78d8ec0..74be3cb 100644 --- a/bfd/doc/Makefile.in +++ b/bfd/doc/Makefile.in @@ -71,12 +71,13 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ $(top_srcdir)/../config/plugins.m4 \ $(top_srcdir)/../config/po.m4 \ $(top_srcdir)/../config/progtest.m4 \ - $(top_srcdir)/../config/stdint.m4 $(top_srcdir)/../libtool.m4 \ + $(top_srcdir)/../config/stdint.m4 \ + $(top_srcdir)/../config/zlib.m4 $(top_srcdir)/../libtool.m4 \ $(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)/../config/zlib.m4 \ - $(top_srcdir)/version.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/acinclude.m4 $(top_srcdir)/version.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs @@ -289,6 +290,8 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ wordsize = @wordsize@ +zlibdir = @zlibdir@ +zlibinc = @zlibinc@ AUTOMAKE_OPTIONS = 1.9 cygnus DOCFILES = aoutx.texi archive.texi archures.texi \ bfdt.texi cache.texi coffcode.texi \ @@ -795,21 +798,21 @@ protos: libbfd.h libcoff.h bfd.h aoutx.texi: aoutx.stamp ; @true aoutx.stamp: $(srcdir)/../aoutx.h $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >aoutx.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../aoutx.h >aoutx.tmp test -e aoutx.texi || test ! -f $(srcdir)/aoutx.texi || cp -p $(srcdir)/aoutx.texi . $(SHELL) $(srcdir)/../../move-if-change aoutx.tmp aoutx.texi touch $@ archive.texi: archive.stamp ; @true archive.stamp: $(srcdir)/../archive.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >archive.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../archive.c >archive.tmp test -e archive.texi || test ! -f $(srcdir)/archive.texi || cp -p $(srcdir)/archive.texi . $(SHELL) $(srcdir)/../../move-if-change archive.tmp archive.texi touch $@ archures.texi: archures.stamp ; @true archures.stamp: $(srcdir)/../archures.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >archures.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../archures.c >archures.tmp test -e archures.texi || test ! -f $(srcdir)/archures.texi || cp -p $(srcdir)/archures.texi . $(SHELL) $(srcdir)/../../move-if-change archures.tmp archures.texi touch $@ @@ -818,133 +821,133 @@ archures.stamp: $(srcdir)/../archures.c $(srcdir)/doc.str $(MKDOC) # bfd.texinfo on an 8.3 filesystem. bfdt.texi: bfdt.stamp ; @true bfdt.stamp: $(srcdir)/../bfd.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >bfd.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfd.c >bfd.tmp test -e bfdt.texi || test ! -f $(srcdir)/bfdt.texi || cp -p $(srcdir)/bfdt.texi . $(SHELL) $(srcdir)/../../move-if-change bfd.tmp bfdt.texi touch $@ cache.texi: cache.stamp ; @true cache.stamp: $(srcdir)/../cache.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >cache.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../cache.c >cache.tmp test -e cache.texi || test ! -f $(srcdir)/cache.texi || cp -p $(srcdir)/cache.texi . $(SHELL) $(srcdir)/../../move-if-change cache.tmp cache.texi touch $@ coffcode.texi: coffcode.stamp ; @true coffcode.stamp: $(srcdir)/../coffcode.h $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >coffcode.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../coffcode.h >coffcode.tmp test -e coffcode.texi || test ! -f $(srcdir)/coffcode.texi || cp -p $(srcdir)/coffcode.texi . $(SHELL) $(srcdir)/../../move-if-change coffcode.tmp coffcode.texi touch $@ core.texi: core.stamp ; @true core.stamp: $(srcdir)/../corefile.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >core.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../corefile.c >core.tmp test -e core.texi || test ! -f $(srcdir)/core.texi || cp -p $(srcdir)/core.texi . $(SHELL) $(srcdir)/../../move-if-change core.tmp core.texi touch $@ elf.texi: elf.stamp ; @true elf.stamp: $(srcdir)/../elf.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >elf.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../elf.c >elf.tmp test -e elf.texi || test ! -f $(srcdir)/elf.texi || cp -p $(srcdir)/elf.texi . $(SHELL) $(srcdir)/../../move-if-change elf.tmp elf.texi touch $@ elfcode.texi: elfcode.stamp ; @true elfcode.stamp: $(srcdir)/../elfcode.h $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >elfcode.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../elfcode.h >elfcode.tmp test -e elfcode.texi || test ! -f $(srcdir)/elfcode.texi || cp -p $(srcdir)/elfcode.texi . $(SHELL) $(srcdir)/../../move-if-change elfcode.tmp elfcode.texi touch $@ mmo.texi: mmo.stamp ; @true mmo.stamp: $(srcdir)/../mmo.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >mmo.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../mmo.c >mmo.tmp test -e mmo.texi || test ! -f $(srcdir)/mmo.texi || cp -p $(srcdir)/mmo.texi . $(SHELL) $(srcdir)/../../move-if-change mmo.tmp mmo.texi touch $@ format.texi: format.stamp ; @true format.stamp: $(srcdir)/../format.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >format.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../format.c >format.tmp test -e format.texi || test ! -f $(srcdir)/format.texi || cp -p $(srcdir)/format.texi . $(SHELL) $(srcdir)/../../move-if-change format.tmp format.texi touch $@ libbfd.texi: libbfd.stamp ; @true libbfd.stamp: $(srcdir)/../libbfd.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >libbfd.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../libbfd.c >libbfd.tmp test -e libbfd.texi || test ! -f $(srcdir)/libbfd.texi || cp -p $(srcdir)/libbfd.texi . $(SHELL) $(srcdir)/../../move-if-change libbfd.tmp libbfd.texi touch $@ bfdio.texi: bfdio.stamp ; @true bfdio.stamp: $(srcdir)/../bfdio.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >bfdio.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdio.c >bfdio.tmp test -e bfdio.texi || test ! -f $(srcdir)/bfdio.texi || cp -p $(srcdir)/bfdio.texi . $(SHELL) $(srcdir)/../../move-if-change bfdio.tmp bfdio.texi touch $@ bfdwin.texi: bfdwin.stamp ; @true bfdwin.stamp: $(srcdir)/../bfdwin.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >bfdwin.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdwin.c >bfdwin.tmp test -e bfdwin.texi || test ! -f $(srcdir)/bfdwin.texi || cp -p $(srcdir)/bfdwin.texi . $(SHELL) $(srcdir)/../../move-if-change bfdwin.tmp bfdwin.texi touch $@ opncls.texi: opncls.stamp ; @true opncls.stamp: $(srcdir)/../opncls.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >opncls.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../opncls.c >opncls.tmp test -e opncls.texi || test ! -f $(srcdir)/opncls.texi || cp -p $(srcdir)/opncls.texi . $(SHELL) $(srcdir)/../../move-if-change opncls.tmp opncls.texi touch $@ reloc.texi: reloc.stamp ; @true reloc.stamp: $(srcdir)/../reloc.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >reloc.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../reloc.c >reloc.tmp test -e reloc.texi || test ! -f $(srcdir)/reloc.texi || cp -p $(srcdir)/reloc.texi . $(SHELL) $(srcdir)/../../move-if-change reloc.tmp reloc.texi touch $@ section.texi: section.stamp ; @true section.stamp: $(srcdir)/../section.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >section.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../section.c >section.tmp test -e section.texi || test ! -f $(srcdir)/section.texi || cp -p $(srcdir)/section.texi . $(SHELL) $(srcdir)/../../move-if-change section.tmp section.texi touch $@ syms.texi: syms.stamp ; @true syms.stamp: $(srcdir)/../syms.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >syms.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../syms.c >syms.tmp test -e syms.texi || test ! -f $(srcdir)/syms.texi || cp -p $(srcdir)/syms.texi . $(SHELL) $(srcdir)/../../move-if-change syms.tmp syms.texi touch $@ targets.texi: targets.stamp ; @true targets.stamp: $(srcdir)/../targets.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >targets.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../targets.c >targets.tmp test -e targets.texi || test ! -f $(srcdir)/targets.texi || cp -p $(srcdir)/targets.texi . $(SHELL) $(srcdir)/../../move-if-change targets.tmp targets.texi touch $@ init.texi: init.stamp ; @true init.stamp: $(srcdir)/../init.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >init.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../init.c >init.tmp test -e init.texi || test ! -f $(srcdir)/init.texi || cp -p $(srcdir)/init.texi . $(SHELL) $(srcdir)/../../move-if-change init.tmp init.texi touch $@ hash.texi: hash.stamp ; @true hash.stamp: $(srcdir)/../hash.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >hash.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../hash.c >hash.tmp test -e hash.texi || test ! -f $(srcdir)/hash.texi || cp -p $(srcdir)/hash.texi . $(SHELL) $(srcdir)/../../move-if-change hash.tmp hash.texi touch $@ linker.texi: linker.stamp ; @true linker.stamp: $(srcdir)/../linker.c $(srcdir)/doc.str $(MKDOC) - ./$(MKDOC) -f $(srcdir)/doc.str < $< >linker.tmp + ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../linker.c >linker.tmp test -e linker.texi || test ! -f $(srcdir)/linker.texi || cp -p $(srcdir)/linker.texi . $(SHELL) $(srcdir)/../../move-if-change linker.tmp linker.texi touch $@ @@ -960,6 +963,9 @@ libbfd.h: $(LIBBFD_H_DEP) ./$(MKDOC) -i -f $(srcdir)/proto.str < $$file >> $@ ;; \ esac; \ done + echo "#ifdef __cplusplus" >> $@ + echo "}" >> $@ + echo "#endif" >> $@ libcoff.h: $(LIBCOFF_H_DEP) echo "$(LIBCOFF_H_DEP)" | sed -f $(srcdir)/header.sed > $@ @@ -972,6 +978,9 @@ libcoff.h: $(LIBCOFF_H_DEP) ./$(MKDOC) -i -f $(srcdir)/proto.str < $$file >> $@ ;; \ esac; \ done + echo "#ifdef __cplusplus" >> $@ + echo "}" >> $@ + echo "#endif" >> $@ bfd.h: $(BFD_H_DEP) echo "$(BFD_H_DEP)" | sed -f $(srcdir)/header.sed > $@ diff --git a/bfd/doc/archures.texi b/bfd/doc/archures.texi index 698f67a..68ffc39 100644 --- a/bfd/doc/archures.texi +++ b/bfd/doc/archures.texi @@ -178,6 +178,10 @@ enum bfd_architecture #define bfd_mach_i386_i386_nacl (bfd_mach_i386_i386 | bfd_mach_i386_nacl) #define bfd_mach_x86_64_nacl (bfd_mach_x86_64 | bfd_mach_i386_nacl) #define bfd_mach_x64_32_nacl (bfd_mach_x64_32 | bfd_mach_i386_nacl) + bfd_arch_iamcu, /* Intel MCU */ +#define bfd_mach_iamcu (1 << 8) +#define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu) +#define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax) bfd_arch_we32k, /* AT&T WE32xxx */ bfd_arch_tahoe, /* CCI/Harris Tahoe */ bfd_arch_i860, /* Intel 860 */ @@ -345,6 +349,8 @@ enum bfd_architecture #define bfd_mach_fr550 550 bfd_arch_moxie, /* The moxie processor */ #define bfd_mach_moxie 1 + bfd_arch_ft32, /* The ft32 processor */ +#define bfd_mach_ft32 1 bfd_arch_mcore, bfd_arch_mep, #define bfd_mach_mep 1 @@ -462,8 +468,10 @@ enum bfd_architecture bfd_arch_aarch64, /* AArch64 */ #define bfd_mach_aarch64 0 #define bfd_mach_aarch64_ilp32 32 - bfd_arch_nios2, -#define bfd_mach_nios2 0 + bfd_arch_nios2, /* Nios II */ +#define bfd_mach_nios2 0 +#define bfd_mach_nios2r1 1 +#define bfd_mach_nios2r2 2 bfd_arch_visium, /* Visium */ #define bfd_mach_visium 1 bfd_arch_last diff --git a/bfd/doc/bfd.info b/bfd/doc/bfd.info index 449e503..96b1149 100644 --- a/bfd/doc/bfd.info +++ b/bfd/doc/bfd.info @@ -338,6 +338,19 @@ major data about the file and pointers to the rest of the data. both_direction = 3 }; + enum bfd_plugin_format + { + bfd_plugin_uknown = 0, + bfd_plugin_yes = 1, + bfd_plugin_no = 2 + }; + + struct bfd_build_id + { + bfd_size_type size; + bfd_byte data[1]; + }; + struct bfd { /* The filename the application opened the BFD with. */ @@ -372,7 +385,7 @@ major data about the file and pointers to the rest of the data. ENUM_BITFIELD (bfd_direction) direction : 2; /* Format_specific flags. */ - flagword flags : 17; + flagword flags : 18; /* Values that may appear in the flags field of a BFD. These also appear in the object_flags field of the bfd_target structure, where @@ -449,14 +462,19 @@ major data about the file and pointers to the rest of the data. /* BFD is a dummy, for plugins. */ #define BFD_PLUGIN 0x10000 + /* Compress sections in this BFD with SHF_COMPRESSED from gABI. */ + #define BFD_COMPRESS_GABI 0x20000 + /* Flags bits to be saved in bfd_preserve_save. */ #define BFD_FLAGS_SAVED \ - (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN) + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN \ + | BFD_COMPRESS_GABI) /* 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_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT) + | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \ + | BFD_COMPRESS_GABI) /* Is the file descriptor being cached? That is, can it be closed as needed, and re-opened when accessed later? */ @@ -494,6 +512,19 @@ major data about the file and pointers to the rest of the data. /* Set if this is the linker output BFD. */ unsigned int is_linker_output : 1; + /* Set if this is the linker input BFD. */ + unsigned int is_linker_input : 1; + + /* If this is an input for a compiler plug-in library. */ + ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2; + + /* Set if this is a plugin output file. */ + unsigned int lto_output : 1; + + /* Set to dummy BFD created when claimed by a compiler plug-in + library. */ + bfd *plugin_dummy_bfd; + /* 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. */ @@ -604,6 +635,9 @@ major data about the file and pointers to the rest of the data. struct objalloc *, but we use void * to avoid requiring the inclusion of objalloc.h. */ void *memory; + + /* For input BFDs, the build ID, if the object has one. */ + const struct bfd_build_id *build_id; }; /* See note beside bfd_set_section_userdata. */ @@ -1141,7 +1175,43 @@ such chars that would otherwise confuse the demangler. If passed a g++ v3 ABI mangled name, returns a buffer allocated with malloc holding the demangled name. Returns NULL otherwise and on memory alloc failure. -2.3.1.22 'struct bfd_iovec' +2.3.1.22 'bfd_update_compression_header' +........................................ + +*Synopsis* + void bfd_update_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec); + *Description* +Set the compression header at CONTENTS of SEC in ABFD and update +elf_section_flags for compression. + +2.3.1.23 'bfd_check_compression_header' +....................................... + +*Synopsis* + bfd_boolean bfd_check_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec, + bfd_size_type *uncompressed_size); + *Description* +Check the compression header at CONTENTS of SEC in ABFD and store the +uncompressed size in UNCOMPRESSED_SIZE if the compression header is +valid. + + *Returns* +Return TRUE if the compression header is valid. + +2.3.1.24 'bfd_get_compression_header_size' +.......................................... + +*Synopsis* + int bfd_get_compression_header_size (bfd *abfd, asection *sec); + *Description* +Return the size of the compression header of SEC in ABFD. + + *Returns* +Return the size of the compression header in bytes. + +2.3.1.25 'struct bfd_iovec' ........................... *Description* @@ -1180,7 +1250,7 @@ is assumed that the instance implements all methods listed below). }; extern const struct bfd_iovec _bfd_memory_iovec; -2.3.1.23 'bfd_get_mtime' +2.3.1.26 'bfd_get_mtime' ........................ *Synopsis* @@ -1189,7 +1259,7 @@ is assumed that the instance implements all methods listed below). Return the file modification time (as read from the file system, or from the archive header for archive members). -2.3.1.24 'bfd_get_size' +2.3.1.27 'bfd_get_size' ....................... *Synopsis* @@ -1217,7 +1287,7 @@ memory exhausted" error when it tries to allocate 15 bazillon bytes of space for the 15 bazillon byte table it is about to read. This function at least allows us to answer the question, "is the size reasonable?". -2.3.1.25 'bfd_mmap' +2.3.1.28 'bfd_mmap' ................... *Synopsis* @@ -1579,6 +1649,10 @@ Here is the section structure: executables or shared objects. This is for COFF only. */ #define SEC_COFF_SHARED 0x8000000 + /* This section should be compressed. This is for ELF linker + internal use only. */ + #define SEC_ELF_COMPRESS 0x8000000 + /* When a section with this flag is being linked, then if the size of the input section is less than a page, it should not cross a page boundary. If the size of the input section is one page or more, @@ -1586,11 +1660,18 @@ Here is the section structure: TMS320C54X only. */ #define SEC_TIC54X_BLOCK 0x10000000 + /* This section should be renamed. This is for ELF linker + internal use only. */ + #define SEC_ELF_RENAME 0x10000000 + /* Conditionally link this section; do not link if there are no references found to any symbol in the section. This is for TI TMS320C54X only. */ #define SEC_TIC54X_CLINK 0x20000000 + /* This section contains vliw code. This is for Toshiba MeP only. */ + #define SEC_MEP_VLIW 0x20000000 + /* Indicate that section has the no read flag set. This happens when memory read flag isn't set. */ #define SEC_COFF_NOREAD 0x40000000 @@ -1631,6 +1712,7 @@ Here is the section structure: #define SEC_INFO_TYPE_EH_FRAME 3 #define SEC_INFO_TYPE_JUST_SYMS 4 #define SEC_INFO_TYPE_TARGET 5 + #define SEC_INFO_TYPE_EH_FRAME_ENTRY 6 /* Nonzero if this section uses RELA relocations, rather than REL. */ unsigned int use_rela_p:1; @@ -3790,6 +3872,11 @@ attributes. MIPS ELF relocations (VxWorks and PLT extensions). -- : BFD_RELOC_MOXIE_10_PCREL Moxie ELF relocations. + -- : BFD_RELOC_FT32_10 + -- : BFD_RELOC_FT32_20 + -- : BFD_RELOC_FT32_17 + -- : BFD_RELOC_FT32_18 + FT32 ELF relocations. -- : BFD_RELOC_FRV_LABEL16 -- : BFD_RELOC_FRV_LABEL24 -- : BFD_RELOC_FRV_LO16 @@ -5080,6 +5167,7 @@ attributes. -- : BFD_RELOC_RL78_HI8 -- : BFD_RELOC_RL78_LO16 -- : BFD_RELOC_RL78_CODE + -- : BFD_RELOC_RL78_SADDR Renesas RL78 Relocations. -- : BFD_RELOC_RX_NEG8 -- : BFD_RELOC_RX_NEG16 @@ -5715,6 +5803,19 @@ attributes. -- : BFD_RELOC_NIOS2_GOT_HA -- : BFD_RELOC_NIOS2_CALL_LO -- : BFD_RELOC_NIOS2_CALL_HA + -- : BFD_RELOC_NIOS2_R2_S12 + -- : BFD_RELOC_NIOS2_R2_I10_1_PCREL + -- : BFD_RELOC_NIOS2_R2_T1I7_1_PCREL + -- : BFD_RELOC_NIOS2_R2_T1I7_2 + -- : BFD_RELOC_NIOS2_R2_T2I4 + -- : BFD_RELOC_NIOS2_R2_T2I4_1 + -- : BFD_RELOC_NIOS2_R2_T2I4_2 + -- : BFD_RELOC_NIOS2_R2_X1I7_2 + -- : BFD_RELOC_NIOS2_R2_X2L5 + -- : BFD_RELOC_NIOS2_R2_F1I5_2 + -- : BFD_RELOC_NIOS2_R2_L5I4X1 + -- : BFD_RELOC_NIOS2_R2_T1X1I6 + -- : BFD_RELOC_NIOS2_R2_T1X1I6_2 Relocations used by the Altera Nios II core. -- : BFD_RELOC_IQ2000_OFFSET_16 -- : BFD_RELOC_IQ2000_OFFSET_21 @@ -6028,11 +6129,22 @@ attributes. Unsigned 12 bit byte offset for 32 bit load/store from the page of the GOT entry for this symbol. Used in conjunction with BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only. + -- : BFD_RELOC_AARCH64_LD64_GOTOFF_LO15 + Unsigned 15 bit byte offset for 64 bit load/store from the page of + the GOT entry for this symbol. Valid in ILP64 ABI only. + -- : BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14 + Scaled 14 bit byte offset to the page base of the global offset + table. + -- : BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15 + Scaled 15 bit byte offset to the page base of the global offset + table. -- : BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21 Get to the page base of the global offset table entry for a symbols tls_index structure as part of an adrp instruction using a 21 bit PC relative value. Used in conjunction with BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC. + -- : BFD_RELOC_AARCH64_TLSGD_ADR_PREL21 + AArch64 TLS General Dynamic -- : BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC Unsigned 12 bit byte offset to global offset table entry for a symbols tls_index structure. Used in conjunction with @@ -7267,6 +7379,10 @@ i960 KB, and 68020 and 68030 for Motorola 68020 and 68030. #define bfd_mach_i386_i386_nacl (bfd_mach_i386_i386 | bfd_mach_i386_nacl) #define bfd_mach_x86_64_nacl (bfd_mach_x86_64 | bfd_mach_i386_nacl) #define bfd_mach_x64_32_nacl (bfd_mach_x64_32 | bfd_mach_i386_nacl) + bfd_arch_iamcu, /* Intel MCU */ + #define bfd_mach_iamcu (1 << 8) + #define bfd_mach_i386_iamcu (bfd_mach_i386_i386 | bfd_mach_iamcu) + #define bfd_mach_i386_iamcu_intel_syntax (bfd_mach_i386_iamcu | bfd_mach_i386_intel_syntax) bfd_arch_we32k, /* AT&T WE32xxx */ bfd_arch_tahoe, /* CCI/Harris Tahoe */ bfd_arch_i860, /* Intel 860 */ @@ -7434,6 +7550,8 @@ i960 KB, and 68020 and 68030 for Motorola 68020 and 68030. #define bfd_mach_fr550 550 bfd_arch_moxie, /* The moxie processor */ #define bfd_mach_moxie 1 + bfd_arch_ft32, /* The ft32 processor */ + #define bfd_mach_ft32 1 bfd_arch_mcore, bfd_arch_mep, #define bfd_mach_mep 1 @@ -7551,8 +7669,10 @@ i960 KB, and 68020 and 68030 for Motorola 68020 and 68030. bfd_arch_aarch64, /* AArch64 */ #define bfd_mach_aarch64 0 #define bfd_mach_aarch64_ilp32 32 - bfd_arch_nios2, - #define bfd_mach_nios2 0 + bfd_arch_nios2, /* Nios II */ + #define bfd_mach_nios2 0 + #define bfd_mach_nios2r1 1 + #define bfd_mach_nios2r2 2 bfd_arch_visium, /* Visium */ #define bfd_mach_visium 1 bfd_arch_last @@ -9625,6 +9745,10 @@ The hidden information for an 'asymbol' is described in a COFF_SYMBOL_PE_SECTION }; + typedef asection * (*coff_gc_mark_hook_fn) + (asection *, struct bfd_link_info *, struct internal_reloc *, + struct coff_link_hash_entry *, struct internal_syment *); + Special entry points for gdb to swap in coff symbol table parts: typedef struct { @@ -10845,32 +10969,32 @@ BFD Index * bfd_alloc2: Opening and Closing. (line 247) * bfd_alt_mach_code: Miscellaneous. (line 302) -* bfd_arch_bits_per_address: Architectures. (line 601) -* bfd_arch_bits_per_byte: Architectures. (line 593) -* bfd_arch_default_fill: Architectures. (line 682) -* bfd_arch_get_compatible: Architectures. (line 536) -* bfd_arch_list: Architectures. (line 527) -* bfd_arch_mach_octets_per_byte: Architectures. (line 670) -* BFD_ARELOC_BFIN_ADD: howto manager. (line 1011) -* BFD_ARELOC_BFIN_ADDR: howto manager. (line 1045) -* BFD_ARELOC_BFIN_AND: howto manager. (line 1025) -* BFD_ARELOC_BFIN_COMP: howto manager. (line 1039) -* BFD_ARELOC_BFIN_CONST: howto manager. (line 1009) -* BFD_ARELOC_BFIN_DIV: howto manager. (line 1017) -* BFD_ARELOC_BFIN_HWPAGE: howto manager. (line 1043) -* BFD_ARELOC_BFIN_LAND: howto manager. (line 1031) -* BFD_ARELOC_BFIN_LEN: howto manager. (line 1035) -* BFD_ARELOC_BFIN_LOR: howto manager. (line 1033) -* BFD_ARELOC_BFIN_LSHIFT: howto manager. (line 1021) -* BFD_ARELOC_BFIN_MOD: howto manager. (line 1019) -* BFD_ARELOC_BFIN_MULT: howto manager. (line 1015) -* BFD_ARELOC_BFIN_NEG: howto manager. (line 1037) -* BFD_ARELOC_BFIN_OR: howto manager. (line 1027) -* BFD_ARELOC_BFIN_PAGE: howto manager. (line 1041) -* BFD_ARELOC_BFIN_PUSH: howto manager. (line 1007) -* BFD_ARELOC_BFIN_RSHIFT: howto manager. (line 1023) -* BFD_ARELOC_BFIN_SUB: howto manager. (line 1013) -* BFD_ARELOC_BFIN_XOR: howto manager. (line 1029) +* bfd_arch_bits_per_address: Architectures. (line 609) +* bfd_arch_bits_per_byte: Architectures. (line 601) +* bfd_arch_default_fill: Architectures. (line 690) +* bfd_arch_get_compatible: Architectures. (line 544) +* bfd_arch_list: Architectures. (line 535) +* bfd_arch_mach_octets_per_byte: Architectures. (line 678) +* BFD_ARELOC_BFIN_ADD: howto manager. (line 1016) +* BFD_ARELOC_BFIN_ADDR: howto manager. (line 1050) +* BFD_ARELOC_BFIN_AND: howto manager. (line 1030) +* BFD_ARELOC_BFIN_COMP: howto manager. (line 1044) +* BFD_ARELOC_BFIN_CONST: howto manager. (line 1014) +* BFD_ARELOC_BFIN_DIV: howto manager. (line 1022) +* BFD_ARELOC_BFIN_HWPAGE: howto manager. (line 1048) +* BFD_ARELOC_BFIN_LAND: howto manager. (line 1036) +* BFD_ARELOC_BFIN_LEN: howto manager. (line 1040) +* BFD_ARELOC_BFIN_LOR: howto manager. (line 1038) +* BFD_ARELOC_BFIN_LSHIFT: howto manager. (line 1026) +* BFD_ARELOC_BFIN_MOD: howto manager. (line 1024) +* BFD_ARELOC_BFIN_MULT: howto manager. (line 1020) +* BFD_ARELOC_BFIN_NEG: howto manager. (line 1042) +* BFD_ARELOC_BFIN_OR: howto manager. (line 1032) +* BFD_ARELOC_BFIN_PAGE: howto manager. (line 1046) +* BFD_ARELOC_BFIN_PUSH: howto manager. (line 1012) +* BFD_ARELOC_BFIN_RSHIFT: howto manager. (line 1028) +* BFD_ARELOC_BFIN_SUB: howto manager. (line 1018) +* BFD_ARELOC_BFIN_XOR: howto manager. (line 1034) * bfd_cache_close: File Caching. (line 25) * bfd_cache_close_all: File Caching. (line 38) * bfd_cache_init: File Caching. (line 17) @@ -10879,6 +11003,7 @@ BFD Index * bfd_canonicalize_reloc: Miscellaneous. (line 18) * bfd_canonicalize_symtab: symbol handling functions. (line 52) +* bfd_check_compression_header: Miscellaneous. (line 374) * bfd_check_format: Formats. (line 20) * bfd_check_format_matches: Formats. (line 51) * bfd_check_overflow: typedef arelent. (line 353) @@ -10901,11 +11026,11 @@ BFD Index (line 386) * bfd_decode_symclass: symbol handling functions. (line 116) -* bfd_default_arch_struct: Architectures. (line 548) -* bfd_default_compatible: Architectures. (line 610) -* bfd_default_reloc_type_lookup: howto manager. (line 2996) -* bfd_default_scan: Architectures. (line 619) -* bfd_default_set_arch_mach: Architectures. (line 566) +* bfd_default_arch_struct: Architectures. (line 556) +* bfd_default_compatible: Architectures. (line 618) +* bfd_default_reloc_type_lookup: howto manager. (line 3026) +* bfd_default_scan: Architectures. (line 627) +* bfd_default_set_arch_mach: Architectures. (line 574) * bfd_demangle: Miscellaneous. (line 353) * bfd_emul_get_commonpagesize: Miscellaneous. (line 333) * bfd_emul_get_maxpagesize: Miscellaneous. (line 313) @@ -10929,36 +11054,37 @@ BFD Index * bfd_generic_define_common_symbol: Writing the symbol table. (line 69) * bfd_generic_discard_group: section prototypes. (line 302) -* bfd_generic_gc_sections: howto manager. (line 3027) -* bfd_generic_get_relocated_section_contents: howto manager. (line 3057) +* bfd_generic_gc_sections: howto manager. (line 3057) +* bfd_generic_get_relocated_section_contents: howto manager. (line 3087) * bfd_generic_is_group_section: section prototypes. (line 294) -* bfd_generic_lookup_section_flags: howto manager. (line 3037) -* bfd_generic_merge_sections: howto manager. (line 3047) -* bfd_generic_relax_section: howto manager. (line 3014) +* bfd_generic_lookup_section_flags: howto manager. (line 3067) +* bfd_generic_merge_sections: howto manager. (line 3077) +* bfd_generic_relax_section: howto manager. (line 3044) * bfd_get_alt_debug_link_info: Opening and Closing. (line 299) -* bfd_get_arch: Architectures. (line 577) -* bfd_get_arch_info: Architectures. (line 629) +* bfd_get_arch: Architectures. (line 585) +* bfd_get_arch_info: Architectures. (line 637) * bfd_get_arch_size: Miscellaneous. (line 61) * bfd_get_assert_handler: Error reporting. (line 152) +* bfd_get_compression_header_size: Miscellaneous. (line 389) * bfd_get_debug_link_info: Opening and Closing. (line 288) * bfd_get_error: Error reporting. (line 48) * bfd_get_error_handler: Error reporting. (line 119) * bfd_get_gp_size: Miscellaneous. (line 104) * bfd_get_linker_section: section prototypes. (line 35) -* bfd_get_mach: Architectures. (line 585) -* bfd_get_mtime: Miscellaneous. (line 403) +* bfd_get_mach: Architectures. (line 593) +* bfd_get_mtime: Miscellaneous. (line 439) * bfd_get_next_mapent: Archives. (line 57) * bfd_get_next_section_by_name: section prototypes. (line 25) -* bfd_get_reloc_code_name: howto manager. (line 3005) +* bfd_get_reloc_code_name: howto manager. (line 3035) * bfd_get_reloc_size: typedef arelent. (line 331) * bfd_get_reloc_upper_bound: Miscellaneous. (line 8) * bfd_get_section_by_name: section prototypes. (line 16) * bfd_get_section_by_name_if: section prototypes. (line 44) * bfd_get_section_contents: section prototypes. (line 250) * bfd_get_sign_extend_vma: Miscellaneous. (line 76) -* bfd_get_size: Miscellaneous. (line 412) +* bfd_get_size: Miscellaneous. (line 448) * bfd_get_size <1>: Internal. (line 24) * bfd_get_symtab_upper_bound: symbol handling functions. (line 5) @@ -10996,7 +11122,7 @@ BFD Index * bfd_link_split_section: Writing the symbol table. (line 43) * bfd_log2: Internal. (line 166) -* bfd_lookup_arch: Architectures. (line 637) +* bfd_lookup_arch: Architectures. (line 645) * bfd_make_debug_symbol: symbol handling functions. (line 106) * bfd_make_empty_symbol: symbol handling functions. @@ -11013,8 +11139,8 @@ BFD Index * bfd_malloc_and_get_section: section prototypes. (line 267) * bfd_map_over_sections: section prototypes. (line 176) * bfd_merge_private_bfd_data: Miscellaneous. (line 172) -* bfd_mmap: Miscellaneous. (line 440) -* bfd_octets_per_byte: Architectures. (line 660) +* bfd_mmap: Miscellaneous. (line 476) +* bfd_octets_per_byte: Architectures. (line 668) * bfd_openr: Opening and Closing. (line 37) * bfd_openr_iovec: Opening and Closing. @@ -11027,54 +11153,54 @@ BFD Index * bfd_open_file: File Caching. (line 51) * bfd_perform_relocation: typedef arelent. (line 369) * bfd_perror: Error reporting. (line 76) -* bfd_printable_arch_mach: Architectures. (line 648) -* bfd_printable_name: Architectures. (line 508) +* bfd_printable_arch_mach: Architectures. (line 656) +* bfd_printable_name: Architectures. (line 516) * bfd_print_symbol_vandf: symbol handling functions. (line 73) * bfd_put_size: Internal. (line 21) * BFD_RELOC_12_PCREL: howto manager. (line 37) * BFD_RELOC_14: howto manager. (line 30) * BFD_RELOC_16: howto manager. (line 29) -* BFD_RELOC_16C_ABS20: howto manager. (line 2086) -* BFD_RELOC_16C_ABS20_C: howto manager. (line 2087) -* BFD_RELOC_16C_ABS24: howto manager. (line 2088) -* BFD_RELOC_16C_ABS24_C: howto manager. (line 2089) -* BFD_RELOC_16C_DISP04: howto manager. (line 2066) -* BFD_RELOC_16C_DISP04_C: howto manager. (line 2067) -* BFD_RELOC_16C_DISP08: howto manager. (line 2068) -* BFD_RELOC_16C_DISP08_C: howto manager. (line 2069) -* BFD_RELOC_16C_DISP16: howto manager. (line 2070) -* BFD_RELOC_16C_DISP16_C: howto manager. (line 2071) -* BFD_RELOC_16C_DISP24: howto manager. (line 2072) -* BFD_RELOC_16C_DISP24a: howto manager. (line 2074) -* BFD_RELOC_16C_DISP24a_C: howto manager. (line 2075) -* BFD_RELOC_16C_DISP24_C: howto manager. (line 2073) -* BFD_RELOC_16C_IMM04: howto manager. (line 2090) -* BFD_RELOC_16C_IMM04_C: howto manager. (line 2091) -* BFD_RELOC_16C_IMM16: howto manager. (line 2092) -* BFD_RELOC_16C_IMM16_C: howto manager. (line 2093) -* BFD_RELOC_16C_IMM20: howto manager. (line 2094) -* BFD_RELOC_16C_IMM20_C: howto manager. (line 2095) -* BFD_RELOC_16C_IMM24: howto manager. (line 2096) -* BFD_RELOC_16C_IMM24_C: howto manager. (line 2097) -* BFD_RELOC_16C_IMM32: howto manager. (line 2098) -* BFD_RELOC_16C_IMM32_C: howto manager. (line 2099) -* BFD_RELOC_16C_NUM08: howto manager. (line 2060) -* BFD_RELOC_16C_NUM08_C: howto manager. (line 2061) -* BFD_RELOC_16C_NUM16: howto manager. (line 2062) -* BFD_RELOC_16C_NUM16_C: howto manager. (line 2063) -* BFD_RELOC_16C_NUM32: howto manager. (line 2064) -* BFD_RELOC_16C_NUM32_C: howto manager. (line 2065) -* BFD_RELOC_16C_REG04: howto manager. (line 2076) -* BFD_RELOC_16C_REG04a: howto manager. (line 2078) -* BFD_RELOC_16C_REG04a_C: howto manager. (line 2079) -* BFD_RELOC_16C_REG04_C: howto manager. (line 2077) -* BFD_RELOC_16C_REG14: howto manager. (line 2080) -* BFD_RELOC_16C_REG14_C: howto manager. (line 2081) -* BFD_RELOC_16C_REG16: howto manager. (line 2082) -* BFD_RELOC_16C_REG16_C: howto manager. (line 2083) -* BFD_RELOC_16C_REG20: howto manager. (line 2084) -* BFD_RELOC_16C_REG20_C: howto manager. (line 2085) +* BFD_RELOC_16C_ABS20: howto manager. (line 2092) +* BFD_RELOC_16C_ABS20_C: howto manager. (line 2093) +* BFD_RELOC_16C_ABS24: howto manager. (line 2094) +* BFD_RELOC_16C_ABS24_C: howto manager. (line 2095) +* BFD_RELOC_16C_DISP04: howto manager. (line 2072) +* BFD_RELOC_16C_DISP04_C: howto manager. (line 2073) +* BFD_RELOC_16C_DISP08: howto manager. (line 2074) +* BFD_RELOC_16C_DISP08_C: howto manager. (line 2075) +* BFD_RELOC_16C_DISP16: howto manager. (line 2076) +* BFD_RELOC_16C_DISP16_C: howto manager. (line 2077) +* BFD_RELOC_16C_DISP24: howto manager. (line 2078) +* BFD_RELOC_16C_DISP24a: howto manager. (line 2080) +* BFD_RELOC_16C_DISP24a_C: howto manager. (line 2081) +* BFD_RELOC_16C_DISP24_C: howto manager. (line 2079) +* BFD_RELOC_16C_IMM04: howto manager. (line 2096) +* BFD_RELOC_16C_IMM04_C: howto manager. (line 2097) +* BFD_RELOC_16C_IMM16: howto manager. (line 2098) +* BFD_RELOC_16C_IMM16_C: howto manager. (line 2099) +* BFD_RELOC_16C_IMM20: howto manager. (line 2100) +* BFD_RELOC_16C_IMM20_C: howto manager. (line 2101) +* BFD_RELOC_16C_IMM24: howto manager. (line 2102) +* BFD_RELOC_16C_IMM24_C: howto manager. (line 2103) +* BFD_RELOC_16C_IMM32: howto manager. (line 2104) +* BFD_RELOC_16C_IMM32_C: howto manager. (line 2105) +* BFD_RELOC_16C_NUM08: howto manager. (line 2066) +* BFD_RELOC_16C_NUM08_C: howto manager. (line 2067) +* BFD_RELOC_16C_NUM16: howto manager. (line 2068) +* BFD_RELOC_16C_NUM16_C: howto manager. (line 2069) +* BFD_RELOC_16C_NUM32: howto manager. (line 2070) +* BFD_RELOC_16C_NUM32_C: howto manager. (line 2071) +* BFD_RELOC_16C_REG04: howto manager. (line 2082) +* BFD_RELOC_16C_REG04a: howto manager. (line 2084) +* BFD_RELOC_16C_REG04a_C: howto manager. (line 2085) +* BFD_RELOC_16C_REG04_C: howto manager. (line 2083) +* BFD_RELOC_16C_REG14: howto manager. (line 2086) +* BFD_RELOC_16C_REG14_C: howto manager. (line 2087) +* BFD_RELOC_16C_REG16: howto manager. (line 2088) +* BFD_RELOC_16C_REG16_C: howto manager. (line 2089) +* BFD_RELOC_16C_REG20: howto manager. (line 2090) +* BFD_RELOC_16C_REG20_C: howto manager. (line 2091) * BFD_RELOC_16_BASEREL: howto manager. (line 92) * BFD_RELOC_16_GOTOFF: howto manager. (line 51) * BFD_RELOC_16_GOT_PCREL: howto manager. (line 48) @@ -11096,85 +11222,85 @@ BFD Index * BFD_RELOC_32_PLTOFF: howto manager. (line 62) * BFD_RELOC_32_PLT_PCREL: howto manager. (line 57) * BFD_RELOC_32_SECREL: howto manager. (line 45) -* BFD_RELOC_386_COPY: howto manager. (line 515) -* BFD_RELOC_386_GLOB_DAT: howto manager. (line 516) -* BFD_RELOC_386_GOT32: howto manager. (line 513) -* BFD_RELOC_386_GOTOFF: howto manager. (line 519) -* BFD_RELOC_386_GOTPC: howto manager. (line 520) -* BFD_RELOC_386_IRELATIVE: howto manager. (line 536) -* BFD_RELOC_386_JUMP_SLOT: howto manager. (line 517) -* BFD_RELOC_386_PLT32: howto manager. (line 514) -* BFD_RELOC_386_RELATIVE: howto manager. (line 518) -* BFD_RELOC_386_TLS_DESC: howto manager. (line 535) -* BFD_RELOC_386_TLS_DESC_CALL: howto manager. (line 534) -* BFD_RELOC_386_TLS_DTPMOD32: howto manager. (line 530) -* BFD_RELOC_386_TLS_DTPOFF32: howto manager. (line 531) -* BFD_RELOC_386_TLS_GD: howto manager. (line 525) -* BFD_RELOC_386_TLS_GOTDESC: howto manager. (line 533) -* BFD_RELOC_386_TLS_GOTIE: howto manager. (line 523) -* BFD_RELOC_386_TLS_IE: howto manager. (line 522) -* BFD_RELOC_386_TLS_IE_32: howto manager. (line 528) -* BFD_RELOC_386_TLS_LDM: howto manager. (line 526) -* BFD_RELOC_386_TLS_LDO_32: howto manager. (line 527) -* BFD_RELOC_386_TLS_LE: howto manager. (line 524) -* BFD_RELOC_386_TLS_LE_32: howto manager. (line 529) -* BFD_RELOC_386_TLS_TPOFF: howto manager. (line 521) -* BFD_RELOC_386_TLS_TPOFF32: howto manager. (line 532) -* BFD_RELOC_390_12: howto manager. (line 1750) -* BFD_RELOC_390_20: howto manager. (line 1831) -* BFD_RELOC_390_COPY: howto manager. (line 1756) -* BFD_RELOC_390_GLOB_DAT: howto manager. (line 1758) -* BFD_RELOC_390_GOT12: howto manager. (line 1752) -* BFD_RELOC_390_GOT16: howto manager. (line 1766) -* BFD_RELOC_390_GOT20: howto manager. (line 1832) -* BFD_RELOC_390_GOT64: howto manager. (line 1786) -* BFD_RELOC_390_GOTENT: howto manager. (line 1790) -* BFD_RELOC_390_GOTOFF64: howto manager. (line 1792) -* BFD_RELOC_390_GOTPC: howto manager. (line 1764) -* BFD_RELOC_390_GOTPCDBL: howto manager. (line 1784) -* BFD_RELOC_390_GOTPLT12: howto manager. (line 1794) -* BFD_RELOC_390_GOTPLT16: howto manager. (line 1796) -* BFD_RELOC_390_GOTPLT20: howto manager. (line 1833) -* BFD_RELOC_390_GOTPLT32: howto manager. (line 1798) -* BFD_RELOC_390_GOTPLT64: howto manager. (line 1800) -* BFD_RELOC_390_GOTPLTENT: howto manager. (line 1802) -* BFD_RELOC_390_IRELATIVE: howto manager. (line 1836) -* BFD_RELOC_390_JMP_SLOT: howto manager. (line 1760) -* BFD_RELOC_390_PC12DBL: howto manager. (line 1768) -* BFD_RELOC_390_PC16DBL: howto manager. (line 1772) -* BFD_RELOC_390_PC24DBL: howto manager. (line 1776) -* BFD_RELOC_390_PC32DBL: howto manager. (line 1780) -* BFD_RELOC_390_PLT12DBL: howto manager. (line 1770) -* BFD_RELOC_390_PLT16DBL: howto manager. (line 1774) -* BFD_RELOC_390_PLT24DBL: howto manager. (line 1778) -* BFD_RELOC_390_PLT32: howto manager. (line 1754) -* BFD_RELOC_390_PLT32DBL: howto manager. (line 1782) -* BFD_RELOC_390_PLT64: howto manager. (line 1788) -* BFD_RELOC_390_PLTOFF16: howto manager. (line 1804) -* BFD_RELOC_390_PLTOFF32: howto manager. (line 1806) -* BFD_RELOC_390_PLTOFF64: howto manager. (line 1808) -* BFD_RELOC_390_RELATIVE: howto manager. (line 1762) -* BFD_RELOC_390_TLS_DTPMOD: howto manager. (line 1827) -* BFD_RELOC_390_TLS_DTPOFF: howto manager. (line 1828) -* BFD_RELOC_390_TLS_GD32: howto manager. (line 1813) -* BFD_RELOC_390_TLS_GD64: howto manager. (line 1814) -* BFD_RELOC_390_TLS_GDCALL: howto manager. (line 1811) -* BFD_RELOC_390_TLS_GOTIE12: howto manager. (line 1815) -* BFD_RELOC_390_TLS_GOTIE20: howto manager. (line 1834) -* BFD_RELOC_390_TLS_GOTIE32: howto manager. (line 1816) -* BFD_RELOC_390_TLS_GOTIE64: howto manager. (line 1817) -* BFD_RELOC_390_TLS_IE32: howto manager. (line 1820) -* BFD_RELOC_390_TLS_IE64: howto manager. (line 1821) -* BFD_RELOC_390_TLS_IEENT: howto manager. (line 1822) -* BFD_RELOC_390_TLS_LDCALL: howto manager. (line 1812) -* BFD_RELOC_390_TLS_LDM32: howto manager. (line 1818) -* BFD_RELOC_390_TLS_LDM64: howto manager. (line 1819) -* BFD_RELOC_390_TLS_LDO32: howto manager. (line 1825) -* BFD_RELOC_390_TLS_LDO64: howto manager. (line 1826) -* BFD_RELOC_390_TLS_LE32: howto manager. (line 1823) -* BFD_RELOC_390_TLS_LE64: howto manager. (line 1824) -* BFD_RELOC_390_TLS_LOAD: howto manager. (line 1810) -* BFD_RELOC_390_TLS_TPOFF: howto manager. (line 1829) +* BFD_RELOC_386_COPY: howto manager. (line 520) +* BFD_RELOC_386_GLOB_DAT: howto manager. (line 521) +* BFD_RELOC_386_GOT32: howto manager. (line 518) +* BFD_RELOC_386_GOTOFF: howto manager. (line 524) +* BFD_RELOC_386_GOTPC: howto manager. (line 525) +* BFD_RELOC_386_IRELATIVE: howto manager. (line 541) +* BFD_RELOC_386_JUMP_SLOT: howto manager. (line 522) +* BFD_RELOC_386_PLT32: howto manager. (line 519) +* BFD_RELOC_386_RELATIVE: howto manager. (line 523) +* BFD_RELOC_386_TLS_DESC: howto manager. (line 540) +* BFD_RELOC_386_TLS_DESC_CALL: howto manager. (line 539) +* BFD_RELOC_386_TLS_DTPMOD32: howto manager. (line 535) +* BFD_RELOC_386_TLS_DTPOFF32: howto manager. (line 536) +* BFD_RELOC_386_TLS_GD: howto manager. (line 530) +* BFD_RELOC_386_TLS_GOTDESC: howto manager. (line 538) +* BFD_RELOC_386_TLS_GOTIE: howto manager. (line 528) +* BFD_RELOC_386_TLS_IE: howto manager. (line 527) +* BFD_RELOC_386_TLS_IE_32: howto manager. (line 533) +* BFD_RELOC_386_TLS_LDM: howto manager. (line 531) +* BFD_RELOC_386_TLS_LDO_32: howto manager. (line 532) +* BFD_RELOC_386_TLS_LE: howto manager. (line 529) +* BFD_RELOC_386_TLS_LE_32: howto manager. (line 534) +* BFD_RELOC_386_TLS_TPOFF: howto manager. (line 526) +* BFD_RELOC_386_TLS_TPOFF32: howto manager. (line 537) +* BFD_RELOC_390_12: howto manager. (line 1756) +* BFD_RELOC_390_20: howto manager. (line 1837) +* BFD_RELOC_390_COPY: howto manager. (line 1762) +* BFD_RELOC_390_GLOB_DAT: howto manager. (line 1764) +* BFD_RELOC_390_GOT12: howto manager. (line 1758) +* BFD_RELOC_390_GOT16: howto manager. (line 1772) +* BFD_RELOC_390_GOT20: howto manager. (line 1838) +* BFD_RELOC_390_GOT64: howto manager. (line 1792) +* BFD_RELOC_390_GOTENT: howto manager. (line 1796) +* BFD_RELOC_390_GOTOFF64: howto manager. (line 1798) +* BFD_RELOC_390_GOTPC: howto manager. (line 1770) +* BFD_RELOC_390_GOTPCDBL: howto manager. (line 1790) +* BFD_RELOC_390_GOTPLT12: howto manager. (line 1800) +* BFD_RELOC_390_GOTPLT16: howto manager. (line 1802) +* BFD_RELOC_390_GOTPLT20: howto manager. (line 1839) +* BFD_RELOC_390_GOTPLT32: howto manager. (line 1804) +* BFD_RELOC_390_GOTPLT64: howto manager. (line 1806) +* BFD_RELOC_390_GOTPLTENT: howto manager. (line 1808) +* BFD_RELOC_390_IRELATIVE: howto manager. (line 1842) +* BFD_RELOC_390_JMP_SLOT: howto manager. (line 1766) +* BFD_RELOC_390_PC12DBL: howto manager. (line 1774) +* BFD_RELOC_390_PC16DBL: howto manager. (line 1778) +* BFD_RELOC_390_PC24DBL: howto manager. (line 1782) +* BFD_RELOC_390_PC32DBL: howto manager. (line 1786) +* BFD_RELOC_390_PLT12DBL: howto manager. (line 1776) +* BFD_RELOC_390_PLT16DBL: howto manager. (line 1780) +* BFD_RELOC_390_PLT24DBL: howto manager. (line 1784) +* BFD_RELOC_390_PLT32: howto manager. (line 1760) +* BFD_RELOC_390_PLT32DBL: howto manager. (line 1788) +* BFD_RELOC_390_PLT64: howto manager. (line 1794) +* BFD_RELOC_390_PLTOFF16: howto manager. (line 1810) +* BFD_RELOC_390_PLTOFF32: howto manager. (line 1812) +* BFD_RELOC_390_PLTOFF64: howto manager. (line 1814) +* BFD_RELOC_390_RELATIVE: howto manager. (line 1768) +* BFD_RELOC_390_TLS_DTPMOD: howto manager. (line 1833) +* BFD_RELOC_390_TLS_DTPOFF: howto manager. (line 1834) +* BFD_RELOC_390_TLS_GD32: howto manager. (line 1819) +* BFD_RELOC_390_TLS_GD64: howto manager. (line 1820) +* BFD_RELOC_390_TLS_GDCALL: howto manager. (line 1817) +* BFD_RELOC_390_TLS_GOTIE12: howto manager. (line 1821) +* BFD_RELOC_390_TLS_GOTIE20: howto manager. (line 1840) +* BFD_RELOC_390_TLS_GOTIE32: howto manager. (line 1822) +* BFD_RELOC_390_TLS_GOTIE64: howto manager. (line 1823) +* BFD_RELOC_390_TLS_IE32: howto manager. (line 1826) +* BFD_RELOC_390_TLS_IE64: howto manager. (line 1827) +* BFD_RELOC_390_TLS_IEENT: howto manager. (line 1828) +* BFD_RELOC_390_TLS_LDCALL: howto manager. (line 1818) +* BFD_RELOC_390_TLS_LDM32: howto manager. (line 1824) +* BFD_RELOC_390_TLS_LDM64: howto manager. (line 1825) +* BFD_RELOC_390_TLS_LDO32: howto manager. (line 1831) +* BFD_RELOC_390_TLS_LDO64: howto manager. (line 1832) +* BFD_RELOC_390_TLS_LE32: howto manager. (line 1829) +* BFD_RELOC_390_TLS_LE64: howto manager. (line 1830) +* BFD_RELOC_390_TLS_LOAD: howto manager. (line 1816) +* BFD_RELOC_390_TLS_TPOFF: howto manager. (line 1835) * BFD_RELOC_64: howto manager. (line 25) * BFD_RELOC_64_PCREL: howto manager. (line 33) * BFD_RELOC_64_PLTOFF: howto manager. (line 61) @@ -11198,38 +11324,38 @@ BFD Index * BFD_RELOC_68K_TLS_LE32: howto manager. (line 87) * BFD_RELOC_68K_TLS_LE8: howto manager. (line 89) * BFD_RELOC_8: howto manager. (line 31) -* BFD_RELOC_860_COPY: howto manager. (line 2201) -* BFD_RELOC_860_GLOB_DAT: howto manager. (line 2202) -* BFD_RELOC_860_HAGOT: howto manager. (line 2227) -* BFD_RELOC_860_HAGOTOFF: howto manager. (line 2228) -* BFD_RELOC_860_HAPC: howto manager. (line 2229) -* BFD_RELOC_860_HIGH: howto manager. (line 2230) -* BFD_RELOC_860_HIGHADJ: howto manager. (line 2226) -* BFD_RELOC_860_HIGOT: howto manager. (line 2231) -* BFD_RELOC_860_HIGOTOFF: howto manager. (line 2232) -* BFD_RELOC_860_JUMP_SLOT: howto manager. (line 2203) -* BFD_RELOC_860_LOGOT0: howto manager. (line 2215) -* BFD_RELOC_860_LOGOT1: howto manager. (line 2217) -* BFD_RELOC_860_LOGOTOFF0: howto manager. (line 2219) -* BFD_RELOC_860_LOGOTOFF1: howto manager. (line 2221) -* BFD_RELOC_860_LOGOTOFF2: howto manager. (line 2223) -* BFD_RELOC_860_LOGOTOFF3: howto manager. (line 2224) -* BFD_RELOC_860_LOPC: howto manager. (line 2225) -* BFD_RELOC_860_LOW0: howto manager. (line 2208) -* BFD_RELOC_860_LOW1: howto manager. (line 2210) -* BFD_RELOC_860_LOW2: howto manager. (line 2212) -* BFD_RELOC_860_LOW3: howto manager. (line 2214) -* BFD_RELOC_860_PC16: howto manager. (line 2207) -* BFD_RELOC_860_PC26: howto manager. (line 2205) -* BFD_RELOC_860_PLT26: howto manager. (line 2206) -* BFD_RELOC_860_RELATIVE: howto manager. (line 2204) -* BFD_RELOC_860_SPGOT0: howto manager. (line 2216) -* BFD_RELOC_860_SPGOT1: howto manager. (line 2218) -* BFD_RELOC_860_SPGOTOFF0: howto manager. (line 2220) -* BFD_RELOC_860_SPGOTOFF1: howto manager. (line 2222) -* BFD_RELOC_860_SPLIT0: howto manager. (line 2209) -* BFD_RELOC_860_SPLIT1: howto manager. (line 2211) -* BFD_RELOC_860_SPLIT2: howto manager. (line 2213) +* BFD_RELOC_860_COPY: howto manager. (line 2207) +* BFD_RELOC_860_GLOB_DAT: howto manager. (line 2208) +* BFD_RELOC_860_HAGOT: howto manager. (line 2233) +* BFD_RELOC_860_HAGOTOFF: howto manager. (line 2234) +* BFD_RELOC_860_HAPC: howto manager. (line 2235) +* BFD_RELOC_860_HIGH: howto manager. (line 2236) +* BFD_RELOC_860_HIGHADJ: howto manager. (line 2232) +* BFD_RELOC_860_HIGOT: howto manager. (line 2237) +* BFD_RELOC_860_HIGOTOFF: howto manager. (line 2238) +* BFD_RELOC_860_JUMP_SLOT: howto manager. (line 2209) +* BFD_RELOC_860_LOGOT0: howto manager. (line 2221) +* BFD_RELOC_860_LOGOT1: howto manager. (line 2223) +* BFD_RELOC_860_LOGOTOFF0: howto manager. (line 2225) +* BFD_RELOC_860_LOGOTOFF1: howto manager. (line 2227) +* BFD_RELOC_860_LOGOTOFF2: howto manager. (line 2229) +* BFD_RELOC_860_LOGOTOFF3: howto manager. (line 2230) +* BFD_RELOC_860_LOPC: howto manager. (line 2231) +* BFD_RELOC_860_LOW0: howto manager. (line 2214) +* BFD_RELOC_860_LOW1: howto manager. (line 2216) +* BFD_RELOC_860_LOW2: howto manager. (line 2218) +* BFD_RELOC_860_LOW3: howto manager. (line 2220) +* BFD_RELOC_860_PC16: howto manager. (line 2213) +* BFD_RELOC_860_PC26: howto manager. (line 2211) +* BFD_RELOC_860_PLT26: howto manager. (line 2212) +* BFD_RELOC_860_RELATIVE: howto manager. (line 2210) +* BFD_RELOC_860_SPGOT0: howto manager. (line 2222) +* BFD_RELOC_860_SPGOT1: howto manager. (line 2224) +* BFD_RELOC_860_SPGOTOFF0: howto manager. (line 2226) +* BFD_RELOC_860_SPGOTOFF1: howto manager. (line 2228) +* BFD_RELOC_860_SPLIT0: howto manager. (line 2215) +* BFD_RELOC_860_SPLIT1: howto manager. (line 2217) +* BFD_RELOC_860_SPLIT2: howto manager. (line 2219) * BFD_RELOC_8_BASEREL: howto manager. (line 96) * BFD_RELOC_8_FFnn: howto manager. (line 99) * BFD_RELOC_8_GOTOFF: howto manager. (line 55) @@ -11237,89 +11363,93 @@ BFD Index * BFD_RELOC_8_PCREL: howto manager. (line 38) * BFD_RELOC_8_PLTOFF: howto manager. (line 67) * BFD_RELOC_8_PLT_PCREL: howto manager. (line 60) -* BFD_RELOC_AARCH64_16: howto manager. (line 2555) -* BFD_RELOC_AARCH64_16_PCREL: howto manager. (line 2561) -* BFD_RELOC_AARCH64_32: howto manager. (line 2554) -* BFD_RELOC_AARCH64_32_PCREL: howto manager. (line 2560) -* BFD_RELOC_AARCH64_64: howto manager. (line 2553) -* BFD_RELOC_AARCH64_64_PCREL: howto manager. (line 2559) -* BFD_RELOC_AARCH64_ADD_LO12: howto manager. (line 2611) -* BFD_RELOC_AARCH64_ADR_GOT_PAGE: howto manager. (line 2657) -* BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL: howto manager. (line 2607) -* BFD_RELOC_AARCH64_ADR_HI21_PCREL: howto manager. (line 2604) -* BFD_RELOC_AARCH64_ADR_LO21_PCREL: howto manager. (line 2601) -* BFD_RELOC_AARCH64_BRANCH19: howto manager. (line 2623) -* BFD_RELOC_AARCH64_CALL26: howto manager. (line 2631) -* BFD_RELOC_AARCH64_COPY: howto manager. (line 2728) -* BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP: howto manager. (line 2752) -* BFD_RELOC_AARCH64_GLOB_DAT: howto manager. (line 2730) -* BFD_RELOC_AARCH64_GOT_LD_PREL19: howto manager. (line 2651) -* BFD_RELOC_AARCH64_IRELATIVE: howto manager. (line 2744) -* BFD_RELOC_AARCH64_JUMP26: howto manager. (line 2627) -* BFD_RELOC_AARCH64_JUMP_SLOT: howto manager. (line 2732) -* BFD_RELOC_AARCH64_LD32_GOT_LO12_NC: howto manager. (line 2665) -* BFD_RELOC_AARCH64_LD64_GOT_LO12_NC: howto manager. (line 2661) -* BFD_RELOC_AARCH64_LDST128_LO12: howto manager. (line 2647) -* BFD_RELOC_AARCH64_LDST16_LO12: howto manager. (line 2635) -* BFD_RELOC_AARCH64_LDST32_LO12: howto manager. (line 2639) -* BFD_RELOC_AARCH64_LDST64_LO12: howto manager. (line 2643) -* BFD_RELOC_AARCH64_LDST8_LO12: howto manager. (line 2615) -* BFD_RELOC_AARCH64_LDST_LO12: howto manager. (line 2755) -* BFD_RELOC_AARCH64_LD_GOT_LO12_NC: howto manager. (line 2759) -* BFD_RELOC_AARCH64_LD_LO19_PCREL: howto manager. (line 2597) -* BFD_RELOC_AARCH64_MOVW_G0: howto manager. (line 2564) -* BFD_RELOC_AARCH64_MOVW_G0_NC: howto manager. (line 2567) -* BFD_RELOC_AARCH64_MOVW_G0_S: howto manager. (line 2585) -* BFD_RELOC_AARCH64_MOVW_G1: howto manager. (line 2570) -* BFD_RELOC_AARCH64_MOVW_G1_NC: howto manager. (line 2573) -* BFD_RELOC_AARCH64_MOVW_G1_S: howto manager. (line 2589) -* BFD_RELOC_AARCH64_MOVW_G2: howto manager. (line 2576) -* BFD_RELOC_AARCH64_MOVW_G2_NC: howto manager. (line 2579) -* BFD_RELOC_AARCH64_MOVW_G2_S: howto manager. (line 2593) -* BFD_RELOC_AARCH64_MOVW_G3: howto manager. (line 2582) -* BFD_RELOC_AARCH64_NONE: howto manager. (line 2551) -* BFD_RELOC_AARCH64_RELATIVE: howto manager. (line 2734) -* BFD_RELOC_AARCH64_RELOC_END: howto manager. (line 2746) -* BFD_RELOC_AARCH64_RELOC_START: howto manager. (line 2546) -* BFD_RELOC_AARCH64_TLSDESC: howto manager. (line 2742) -* BFD_RELOC_AARCH64_TLSDESC_ADD: howto manager. (line 2724) -* BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC: howto manager. (line 2716) -* BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21: howto manager. (line 2710) -* BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21: howto manager. (line 2708) -* BFD_RELOC_AARCH64_TLSDESC_CALL: howto manager. (line 2726) -* BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC: howto manager. (line 2714) -* BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC: howto manager. (line 2712) -* BFD_RELOC_AARCH64_TLSDESC_LDR: howto manager. (line 2722) -* BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC: howto manager. (line 2765) -* BFD_RELOC_AARCH64_TLSDESC_LD_PREL19: howto manager. (line 2706) -* BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC: howto manager. (line 2720) -* BFD_RELOC_AARCH64_TLSDESC_OFF_G1: howto manager. (line 2718) -* BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC: howto manager. (line 2674) -* BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21: howto manager. (line 2669) +* BFD_RELOC_AARCH64_16: howto manager. (line 2574) +* BFD_RELOC_AARCH64_16_PCREL: howto manager. (line 2580) +* BFD_RELOC_AARCH64_32: howto manager. (line 2573) +* BFD_RELOC_AARCH64_32_PCREL: howto manager. (line 2579) +* BFD_RELOC_AARCH64_64: howto manager. (line 2572) +* BFD_RELOC_AARCH64_64_PCREL: howto manager. (line 2578) +* BFD_RELOC_AARCH64_ADD_LO12: howto manager. (line 2630) +* BFD_RELOC_AARCH64_ADR_GOT_PAGE: howto manager. (line 2676) +* BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL: howto manager. (line 2626) +* BFD_RELOC_AARCH64_ADR_HI21_PCREL: howto manager. (line 2623) +* BFD_RELOC_AARCH64_ADR_LO21_PCREL: howto manager. (line 2620) +* BFD_RELOC_AARCH64_BRANCH19: howto manager. (line 2642) +* BFD_RELOC_AARCH64_CALL26: howto manager. (line 2650) +* BFD_RELOC_AARCH64_COPY: howto manager. (line 2758) +* BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP: howto manager. (line 2782) +* BFD_RELOC_AARCH64_GLOB_DAT: howto manager. (line 2760) +* BFD_RELOC_AARCH64_GOT_LD_PREL19: howto manager. (line 2670) +* BFD_RELOC_AARCH64_IRELATIVE: howto manager. (line 2774) +* BFD_RELOC_AARCH64_JUMP26: howto manager. (line 2646) +* BFD_RELOC_AARCH64_JUMP_SLOT: howto manager. (line 2762) +* BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14: howto manager. (line 2691) +* BFD_RELOC_AARCH64_LD32_GOT_LO12_NC: howto manager. (line 2684) +* BFD_RELOC_AARCH64_LD64_GOTOFF_LO15: howto manager. (line 2688) +* BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15: howto manager. (line 2694) +* BFD_RELOC_AARCH64_LD64_GOT_LO12_NC: howto manager. (line 2680) +* BFD_RELOC_AARCH64_LDST128_LO12: howto manager. (line 2666) +* BFD_RELOC_AARCH64_LDST16_LO12: howto manager. (line 2654) +* BFD_RELOC_AARCH64_LDST32_LO12: howto manager. (line 2658) +* BFD_RELOC_AARCH64_LDST64_LO12: howto manager. (line 2662) +* BFD_RELOC_AARCH64_LDST8_LO12: howto manager. (line 2634) +* BFD_RELOC_AARCH64_LDST_LO12: howto manager. (line 2785) +* BFD_RELOC_AARCH64_LD_GOT_LO12_NC: howto manager. (line 2789) +* BFD_RELOC_AARCH64_LD_LO19_PCREL: howto manager. (line 2616) +* BFD_RELOC_AARCH64_MOVW_G0: howto manager. (line 2583) +* BFD_RELOC_AARCH64_MOVW_G0_NC: howto manager. (line 2586) +* BFD_RELOC_AARCH64_MOVW_G0_S: howto manager. (line 2604) +* BFD_RELOC_AARCH64_MOVW_G1: howto manager. (line 2589) +* BFD_RELOC_AARCH64_MOVW_G1_NC: howto manager. (line 2592) +* BFD_RELOC_AARCH64_MOVW_G1_S: howto manager. (line 2608) +* BFD_RELOC_AARCH64_MOVW_G2: howto manager. (line 2595) +* BFD_RELOC_AARCH64_MOVW_G2_NC: howto manager. (line 2598) +* BFD_RELOC_AARCH64_MOVW_G2_S: howto manager. (line 2612) +* BFD_RELOC_AARCH64_MOVW_G3: howto manager. (line 2601) +* BFD_RELOC_AARCH64_NONE: howto manager. (line 2570) +* BFD_RELOC_AARCH64_RELATIVE: howto manager. (line 2764) +* BFD_RELOC_AARCH64_RELOC_END: howto manager. (line 2776) +* BFD_RELOC_AARCH64_RELOC_START: howto manager. (line 2565) +* BFD_RELOC_AARCH64_TLSDESC: howto manager. (line 2772) +* BFD_RELOC_AARCH64_TLSDESC_ADD: howto manager. (line 2754) +* BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC: howto manager. (line 2746) +* BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21: howto manager. (line 2740) +* BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21: howto manager. (line 2738) +* BFD_RELOC_AARCH64_TLSDESC_CALL: howto manager. (line 2756) +* BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC: howto manager. (line 2744) +* BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC: howto manager. (line 2742) +* BFD_RELOC_AARCH64_TLSDESC_LDR: howto manager. (line 2752) +* BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC: howto manager. (line 2795) +* BFD_RELOC_AARCH64_TLSDESC_LD_PREL19: howto manager. (line 2736) +* BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC: howto manager. (line 2750) +* BFD_RELOC_AARCH64_TLSDESC_OFF_G1: howto manager. (line 2748) +* BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC: howto manager. (line 2704) +* BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21: howto manager. (line 2697) +* BFD_RELOC_AARCH64_TLSGD_ADR_PREL21: howto manager. (line 2702) * BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: howto manager. - (line 2682) + (line 2712) * BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC: howto manager. - (line 2686) + (line 2716) * BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: howto manager. - (line 2684) + (line 2714) * BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC: howto manager. - (line 2762) -* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 2688) + (line 2792) +* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 2718) * BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC: howto manager. - (line 2680) -* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1: howto manager. (line 2678) -* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: howto manager. (line 2700) -* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: howto manager. (line 2702) -* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: howto manager. (line 2704) -* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: howto manager. (line 2696) -* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: howto manager. (line 2698) -* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: howto manager. (line 2692) -* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: howto manager. (line 2694) -* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: howto manager. (line 2690) -* BFD_RELOC_AARCH64_TLS_DTPMOD: howto manager. (line 2736) -* BFD_RELOC_AARCH64_TLS_DTPREL: howto manager. (line 2738) -* BFD_RELOC_AARCH64_TLS_TPREL: howto manager. (line 2740) -* BFD_RELOC_AARCH64_TSTBR14: howto manager. (line 2619) + (line 2710) +* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1: howto manager. (line 2708) +* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: howto manager. (line 2730) +* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: howto manager. (line 2732) +* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: howto manager. (line 2734) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: howto manager. (line 2726) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: howto manager. (line 2728) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: howto manager. (line 2722) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: howto manager. (line 2724) +* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: howto manager. (line 2720) +* BFD_RELOC_AARCH64_TLS_DTPMOD: howto manager. (line 2766) +* BFD_RELOC_AARCH64_TLS_DTPREL: howto manager. (line 2768) +* BFD_RELOC_AARCH64_TLS_TPREL: howto manager. (line 2770) +* BFD_RELOC_AARCH64_TSTBR14: howto manager. (line 2638) * BFD_RELOC_ALPHA_BOH: howto manager. (line 292) * BFD_RELOC_ALPHA_BRSGP: howto manager. (line 279) * BFD_RELOC_ALPHA_BSR: howto manager. (line 286) @@ -11349,362 +11479,366 @@ BFD Index * BFD_RELOC_ALPHA_TPREL64: howto manager. (line 304) * BFD_RELOC_ALPHA_TPREL_HI16: howto manager. (line 305) * BFD_RELOC_ALPHA_TPREL_LO16: howto manager. (line 306) -* BFD_RELOC_ARC_B22_PCREL: howto manager. (line 958) -* BFD_RELOC_ARC_B26: howto manager. (line 962) -* BFD_RELOC_ARM_ADRL_IMMEDIATE: howto manager. (line 832) -* BFD_RELOC_ARM_ADR_IMM: howto manager. (line 846) -* BFD_RELOC_ARM_ALU_PC_G0: howto manager. (line 799) -* BFD_RELOC_ARM_ALU_PC_G0_NC: howto manager. (line 798) -* BFD_RELOC_ARM_ALU_PC_G1: howto manager. (line 801) -* BFD_RELOC_ARM_ALU_PC_G1_NC: howto manager. (line 800) -* BFD_RELOC_ARM_ALU_PC_G2: howto manager. (line 802) -* BFD_RELOC_ARM_ALU_SB_G0: howto manager. (line 813) -* BFD_RELOC_ARM_ALU_SB_G0_NC: howto manager. (line 812) -* BFD_RELOC_ARM_ALU_SB_G1: howto manager. (line 815) -* BFD_RELOC_ARM_ALU_SB_G1_NC: howto manager. (line 814) -* BFD_RELOC_ARM_ALU_SB_G2: howto manager. (line 816) -* BFD_RELOC_ARM_CP_OFF_IMM: howto manager. (line 842) -* BFD_RELOC_ARM_CP_OFF_IMM_S2: howto manager. (line 843) -* BFD_RELOC_ARM_GLOB_DAT: howto manager. (line 775) -* BFD_RELOC_ARM_GOT32: howto manager. (line 776) -* BFD_RELOC_ARM_GOTOFF: howto manager. (line 779) -* BFD_RELOC_ARM_GOTPC: howto manager. (line 780) -* BFD_RELOC_ARM_GOT_PREL: howto manager. (line 781) -* BFD_RELOC_ARM_HVC: howto manager. (line 839) -* BFD_RELOC_ARM_HWLITERAL: howto manager. (line 853) -* BFD_RELOC_ARM_IMMEDIATE: howto manager. (line 831) -* BFD_RELOC_ARM_IN_POOL: howto manager. (line 849) -* BFD_RELOC_ARM_IRELATIVE: howto manager. (line 829) -* BFD_RELOC_ARM_JUMP_SLOT: howto manager. (line 774) -* BFD_RELOC_ARM_LDC_PC_G0: howto manager. (line 809) -* BFD_RELOC_ARM_LDC_PC_G1: howto manager. (line 810) -* BFD_RELOC_ARM_LDC_PC_G2: howto manager. (line 811) -* BFD_RELOC_ARM_LDC_SB_G0: howto manager. (line 823) -* BFD_RELOC_ARM_LDC_SB_G1: howto manager. (line 824) -* BFD_RELOC_ARM_LDC_SB_G2: howto manager. (line 825) -* BFD_RELOC_ARM_LDRS_PC_G0: howto manager. (line 806) -* BFD_RELOC_ARM_LDRS_PC_G1: howto manager. (line 807) -* BFD_RELOC_ARM_LDRS_PC_G2: howto manager. (line 808) -* BFD_RELOC_ARM_LDRS_SB_G0: howto manager. (line 820) -* BFD_RELOC_ARM_LDRS_SB_G1: howto manager. (line 821) -* BFD_RELOC_ARM_LDRS_SB_G2: howto manager. (line 822) -* BFD_RELOC_ARM_LDR_IMM: howto manager. (line 847) -* BFD_RELOC_ARM_LDR_PC_G0: howto manager. (line 803) -* BFD_RELOC_ARM_LDR_PC_G1: howto manager. (line 804) -* BFD_RELOC_ARM_LDR_PC_G2: howto manager. (line 805) -* BFD_RELOC_ARM_LDR_SB_G0: howto manager. (line 817) -* BFD_RELOC_ARM_LDR_SB_G1: howto manager. (line 818) -* BFD_RELOC_ARM_LDR_SB_G2: howto manager. (line 819) -* BFD_RELOC_ARM_LITERAL: howto manager. (line 848) -* BFD_RELOC_ARM_MOVT: howto manager. (line 766) -* BFD_RELOC_ARM_MOVT_PCREL: howto manager. (line 768) -* BFD_RELOC_ARM_MOVW: howto manager. (line 765) -* BFD_RELOC_ARM_MOVW_PCREL: howto manager. (line 767) -* BFD_RELOC_ARM_MULTI: howto manager. (line 841) -* BFD_RELOC_ARM_OFFSET_IMM: howto manager. (line 746) -* BFD_RELOC_ARM_OFFSET_IMM8: howto manager. (line 850) -* BFD_RELOC_ARM_PCREL_BLX: howto manager. (line 722) -* BFD_RELOC_ARM_PCREL_BRANCH: howto manager. (line 719) -* BFD_RELOC_ARM_PCREL_CALL: howto manager. (line 730) -* BFD_RELOC_ARM_PCREL_JUMP: howto manager. (line 733) -* BFD_RELOC_ARM_PLT32: howto manager. (line 777) -* BFD_RELOC_ARM_PREL31: howto manager. (line 763) -* BFD_RELOC_ARM_RELATIVE: howto manager. (line 778) -* BFD_RELOC_ARM_ROSEGREL32: howto manager. (line 755) -* BFD_RELOC_ARM_SBREL32: howto manager. (line 757) -* BFD_RELOC_ARM_SHIFT_IMM: howto manager. (line 837) -* BFD_RELOC_ARM_SMC: howto manager. (line 838) -* BFD_RELOC_ARM_SWI: howto manager. (line 840) -* BFD_RELOC_ARM_T32_ADD_IMM: howto manager. (line 834) -* BFD_RELOC_ARM_T32_ADD_PC12: howto manager. (line 836) -* BFD_RELOC_ARM_T32_CP_OFF_IMM: howto manager. (line 844) -* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2: howto manager. (line 845) -* BFD_RELOC_ARM_T32_IMM12: howto manager. (line 835) -* BFD_RELOC_ARM_T32_IMMEDIATE: howto manager. (line 833) -* BFD_RELOC_ARM_T32_OFFSET_IMM: howto manager. (line 852) -* BFD_RELOC_ARM_T32_OFFSET_U8: howto manager. (line 851) -* BFD_RELOC_ARM_TARGET1: howto manager. (line 752) -* BFD_RELOC_ARM_TARGET2: howto manager. (line 759) -* BFD_RELOC_ARM_THM_TLS_CALL: howto manager. (line 793) -* BFD_RELOC_ARM_THM_TLS_DESCSEQ: howto manager. (line 795) -* BFD_RELOC_ARM_THUMB_ADD: howto manager. (line 854) -* BFD_RELOC_ARM_THUMB_IMM: howto manager. (line 855) -* BFD_RELOC_ARM_THUMB_MOVT: howto manager. (line 770) -* BFD_RELOC_ARM_THUMB_MOVT_PCREL: howto manager. (line 772) -* BFD_RELOC_ARM_THUMB_MOVW: howto manager. (line 769) -* BFD_RELOC_ARM_THUMB_MOVW_PCREL: howto manager. (line 771) -* BFD_RELOC_ARM_THUMB_OFFSET: howto manager. (line 749) -* BFD_RELOC_ARM_THUMB_SHIFT: howto manager. (line 856) -* BFD_RELOC_ARM_TLS_CALL: howto manager. (line 792) -* BFD_RELOC_ARM_TLS_DESC: howto manager. (line 796) -* BFD_RELOC_ARM_TLS_DESCSEQ: howto manager. (line 794) -* BFD_RELOC_ARM_TLS_DTPMOD32: howto manager. (line 787) -* BFD_RELOC_ARM_TLS_DTPOFF32: howto manager. (line 786) -* BFD_RELOC_ARM_TLS_GD32: howto manager. (line 783) -* BFD_RELOC_ARM_TLS_GOTDESC: howto manager. (line 791) -* BFD_RELOC_ARM_TLS_IE32: howto manager. (line 789) -* BFD_RELOC_ARM_TLS_LDM32: howto manager. (line 785) -* BFD_RELOC_ARM_TLS_LDO32: howto manager. (line 784) -* BFD_RELOC_ARM_TLS_LE32: howto manager. (line 790) -* BFD_RELOC_ARM_TLS_TPOFF32: howto manager. (line 788) -* BFD_RELOC_ARM_V4BX: howto manager. (line 827) -* BFD_RELOC_AVR_13_PCREL: howto manager. (line 1584) -* BFD_RELOC_AVR_16_PM: howto manager. (line 1587) -* BFD_RELOC_AVR_6: howto manager. (line 1655) -* BFD_RELOC_AVR_6_ADIW: howto manager. (line 1658) -* BFD_RELOC_AVR_7_PCREL: howto manager. (line 1581) -* BFD_RELOC_AVR_8_HI: howto manager. (line 1664) -* BFD_RELOC_AVR_8_HLO: howto manager. (line 1667) -* BFD_RELOC_AVR_8_LO: howto manager. (line 1661) -* BFD_RELOC_AVR_CALL: howto manager. (line 1649) -* BFD_RELOC_AVR_DIFF16: howto manager. (line 1671) -* BFD_RELOC_AVR_DIFF32: howto manager. (line 1672) -* BFD_RELOC_AVR_DIFF8: howto manager. (line 1670) -* BFD_RELOC_AVR_HH8_LDI: howto manager. (line 1596) -* BFD_RELOC_AVR_HH8_LDI_NEG: howto manager. (line 1611) -* BFD_RELOC_AVR_HH8_LDI_PM: howto manager. (line 1634) -* BFD_RELOC_AVR_HH8_LDI_PM_NEG: howto manager. (line 1645) -* BFD_RELOC_AVR_HI8_LDI: howto manager. (line 1593) -* BFD_RELOC_AVR_HI8_LDI_GS: howto manager. (line 1629) -* BFD_RELOC_AVR_HI8_LDI_NEG: howto manager. (line 1607) -* BFD_RELOC_AVR_HI8_LDI_PM: howto manager. (line 1626) -* BFD_RELOC_AVR_HI8_LDI_PM_NEG: howto manager. (line 1641) -* BFD_RELOC_AVR_LDI: howto manager. (line 1652) -* BFD_RELOC_AVR_LDS_STS_16: howto manager. (line 1679) -* BFD_RELOC_AVR_LO8_LDI: howto manager. (line 1590) -* BFD_RELOC_AVR_LO8_LDI_GS: howto manager. (line 1621) -* BFD_RELOC_AVR_LO8_LDI_NEG: howto manager. (line 1603) -* BFD_RELOC_AVR_LO8_LDI_PM: howto manager. (line 1618) -* BFD_RELOC_AVR_LO8_LDI_PM_NEG: howto manager. (line 1638) -* BFD_RELOC_AVR_MS8_LDI: howto manager. (line 1600) -* BFD_RELOC_AVR_MS8_LDI_NEG: howto manager. (line 1615) -* BFD_RELOC_AVR_PORT5: howto manager. (line 1685) -* BFD_RELOC_AVR_PORT6: howto manager. (line 1682) -* BFD_RELOC_BFIN_10_PCREL: howto manager. (line 976) -* BFD_RELOC_BFIN_11_PCREL: howto manager. (line 978) -* BFD_RELOC_BFIN_12_PCREL_JUMP: howto manager. (line 980) -* BFD_RELOC_BFIN_12_PCREL_JUMP_S: howto manager. (line 982) -* BFD_RELOC_BFIN_16_HIGH: howto manager. (line 968) -* BFD_RELOC_BFIN_16_IMM: howto manager. (line 966) -* BFD_RELOC_BFIN_16_LOW: howto manager. (line 974) -* BFD_RELOC_BFIN_24_PCREL_CALL_X: howto manager. (line 984) -* BFD_RELOC_BFIN_24_PCREL_JUMP_L: howto manager. (line 986) -* BFD_RELOC_BFIN_4_PCREL: howto manager. (line 970) -* BFD_RELOC_BFIN_5_PCREL: howto manager. (line 972) -* BFD_RELOC_BFIN_FUNCDESC: howto manager. (line 991) -* BFD_RELOC_BFIN_FUNCDESC_GOT17M4: howto manager. (line 992) -* BFD_RELOC_BFIN_FUNCDESC_GOTHI: howto manager. (line 993) -* BFD_RELOC_BFIN_FUNCDESC_GOTLO: howto manager. (line 994) -* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4: howto manager. (line 996) -* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI: howto manager. (line 997) -* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO: howto manager. (line 998) -* BFD_RELOC_BFIN_FUNCDESC_VALUE: howto manager. (line 995) -* BFD_RELOC_BFIN_GOT: howto manager. (line 1003) -* BFD_RELOC_BFIN_GOT17M4: howto manager. (line 988) -* BFD_RELOC_BFIN_GOTHI: howto manager. (line 989) -* BFD_RELOC_BFIN_GOTLO: howto manager. (line 990) -* BFD_RELOC_BFIN_GOTOFF17M4: howto manager. (line 999) -* BFD_RELOC_BFIN_GOTOFFHI: howto manager. (line 1000) -* BFD_RELOC_BFIN_GOTOFFLO: howto manager. (line 1001) -* BFD_RELOC_BFIN_PLTPC: howto manager. (line 1005) -* BFD_RELOC_C6000_ABS_H16: howto manager. (line 1426) -* BFD_RELOC_C6000_ABS_L16: howto manager. (line 1425) -* BFD_RELOC_C6000_ABS_S16: howto manager. (line 1424) -* BFD_RELOC_C6000_ALIGN: howto manager. (line 1447) -* BFD_RELOC_C6000_COPY: howto manager. (line 1442) -* BFD_RELOC_C6000_DSBT_INDEX: howto manager. (line 1440) -* BFD_RELOC_C6000_EHTYPE: howto manager. (line 1444) -* BFD_RELOC_C6000_FPHEAD: howto manager. (line 1448) -* BFD_RELOC_C6000_JUMP_SLOT: howto manager. (line 1443) -* BFD_RELOC_C6000_NOCMP: howto manager. (line 1449) -* BFD_RELOC_C6000_PCR_H16: howto manager. (line 1445) -* BFD_RELOC_C6000_PCR_L16: howto manager. (line 1446) -* BFD_RELOC_C6000_PCR_S10: howto manager. (line 1422) -* BFD_RELOC_C6000_PCR_S12: howto manager. (line 1421) -* BFD_RELOC_C6000_PCR_S21: howto manager. (line 1420) -* BFD_RELOC_C6000_PCR_S7: howto manager. (line 1423) -* BFD_RELOC_C6000_PREL31: howto manager. (line 1441) -* BFD_RELOC_C6000_SBR_GOT_H16_W: howto manager. (line 1439) -* BFD_RELOC_C6000_SBR_GOT_L16_W: howto manager. (line 1438) -* BFD_RELOC_C6000_SBR_GOT_U15_W: howto manager. (line 1437) -* BFD_RELOC_C6000_SBR_H16_B: howto manager. (line 1434) -* BFD_RELOC_C6000_SBR_H16_H: howto manager. (line 1435) -* BFD_RELOC_C6000_SBR_H16_W: howto manager. (line 1436) -* BFD_RELOC_C6000_SBR_L16_B: howto manager. (line 1431) -* BFD_RELOC_C6000_SBR_L16_H: howto manager. (line 1432) -* BFD_RELOC_C6000_SBR_L16_W: howto manager. (line 1433) -* BFD_RELOC_C6000_SBR_S16: howto manager. (line 1430) -* BFD_RELOC_C6000_SBR_U15_B: howto manager. (line 1427) -* BFD_RELOC_C6000_SBR_U15_H: howto manager. (line 1428) -* BFD_RELOC_C6000_SBR_U15_W: howto manager. (line 1429) +* BFD_RELOC_ARC_B22_PCREL: howto manager. (line 963) +* BFD_RELOC_ARC_B26: howto manager. (line 967) +* BFD_RELOC_ARM_ADRL_IMMEDIATE: howto manager. (line 837) +* BFD_RELOC_ARM_ADR_IMM: howto manager. (line 851) +* BFD_RELOC_ARM_ALU_PC_G0: howto manager. (line 804) +* BFD_RELOC_ARM_ALU_PC_G0_NC: howto manager. (line 803) +* BFD_RELOC_ARM_ALU_PC_G1: howto manager. (line 806) +* BFD_RELOC_ARM_ALU_PC_G1_NC: howto manager. (line 805) +* BFD_RELOC_ARM_ALU_PC_G2: howto manager. (line 807) +* BFD_RELOC_ARM_ALU_SB_G0: howto manager. (line 818) +* BFD_RELOC_ARM_ALU_SB_G0_NC: howto manager. (line 817) +* BFD_RELOC_ARM_ALU_SB_G1: howto manager. (line 820) +* BFD_RELOC_ARM_ALU_SB_G1_NC: howto manager. (line 819) +* BFD_RELOC_ARM_ALU_SB_G2: howto manager. (line 821) +* BFD_RELOC_ARM_CP_OFF_IMM: howto manager. (line 847) +* BFD_RELOC_ARM_CP_OFF_IMM_S2: howto manager. (line 848) +* BFD_RELOC_ARM_GLOB_DAT: howto manager. (line 780) +* BFD_RELOC_ARM_GOT32: howto manager. (line 781) +* BFD_RELOC_ARM_GOTOFF: howto manager. (line 784) +* BFD_RELOC_ARM_GOTPC: howto manager. (line 785) +* BFD_RELOC_ARM_GOT_PREL: howto manager. (line 786) +* BFD_RELOC_ARM_HVC: howto manager. (line 844) +* BFD_RELOC_ARM_HWLITERAL: howto manager. (line 858) +* BFD_RELOC_ARM_IMMEDIATE: howto manager. (line 836) +* BFD_RELOC_ARM_IN_POOL: howto manager. (line 854) +* BFD_RELOC_ARM_IRELATIVE: howto manager. (line 834) +* BFD_RELOC_ARM_JUMP_SLOT: howto manager. (line 779) +* BFD_RELOC_ARM_LDC_PC_G0: howto manager. (line 814) +* BFD_RELOC_ARM_LDC_PC_G1: howto manager. (line 815) +* BFD_RELOC_ARM_LDC_PC_G2: howto manager. (line 816) +* BFD_RELOC_ARM_LDC_SB_G0: howto manager. (line 828) +* BFD_RELOC_ARM_LDC_SB_G1: howto manager. (line 829) +* BFD_RELOC_ARM_LDC_SB_G2: howto manager. (line 830) +* BFD_RELOC_ARM_LDRS_PC_G0: howto manager. (line 811) +* BFD_RELOC_ARM_LDRS_PC_G1: howto manager. (line 812) +* BFD_RELOC_ARM_LDRS_PC_G2: howto manager. (line 813) +* BFD_RELOC_ARM_LDRS_SB_G0: howto manager. (line 825) +* BFD_RELOC_ARM_LDRS_SB_G1: howto manager. (line 826) +* BFD_RELOC_ARM_LDRS_SB_G2: howto manager. (line 827) +* BFD_RELOC_ARM_LDR_IMM: howto manager. (line 852) +* BFD_RELOC_ARM_LDR_PC_G0: howto manager. (line 808) +* BFD_RELOC_ARM_LDR_PC_G1: howto manager. (line 809) +* BFD_RELOC_ARM_LDR_PC_G2: howto manager. (line 810) +* BFD_RELOC_ARM_LDR_SB_G0: howto manager. (line 822) +* BFD_RELOC_ARM_LDR_SB_G1: howto manager. (line 823) +* BFD_RELOC_ARM_LDR_SB_G2: howto manager. (line 824) +* BFD_RELOC_ARM_LITERAL: howto manager. (line 853) +* BFD_RELOC_ARM_MOVT: howto manager. (line 771) +* BFD_RELOC_ARM_MOVT_PCREL: howto manager. (line 773) +* BFD_RELOC_ARM_MOVW: howto manager. (line 770) +* BFD_RELOC_ARM_MOVW_PCREL: howto manager. (line 772) +* BFD_RELOC_ARM_MULTI: howto manager. (line 846) +* BFD_RELOC_ARM_OFFSET_IMM: howto manager. (line 751) +* BFD_RELOC_ARM_OFFSET_IMM8: howto manager. (line 855) +* BFD_RELOC_ARM_PCREL_BLX: howto manager. (line 727) +* BFD_RELOC_ARM_PCREL_BRANCH: howto manager. (line 724) +* BFD_RELOC_ARM_PCREL_CALL: howto manager. (line 735) +* BFD_RELOC_ARM_PCREL_JUMP: howto manager. (line 738) +* BFD_RELOC_ARM_PLT32: howto manager. (line 782) +* BFD_RELOC_ARM_PREL31: howto manager. (line 768) +* BFD_RELOC_ARM_RELATIVE: howto manager. (line 783) +* BFD_RELOC_ARM_ROSEGREL32: howto manager. (line 760) +* BFD_RELOC_ARM_SBREL32: howto manager. (line 762) +* BFD_RELOC_ARM_SHIFT_IMM: howto manager. (line 842) +* BFD_RELOC_ARM_SMC: howto manager. (line 843) +* BFD_RELOC_ARM_SWI: howto manager. (line 845) +* BFD_RELOC_ARM_T32_ADD_IMM: howto manager. (line 839) +* BFD_RELOC_ARM_T32_ADD_PC12: howto manager. (line 841) +* BFD_RELOC_ARM_T32_CP_OFF_IMM: howto manager. (line 849) +* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2: howto manager. (line 850) +* BFD_RELOC_ARM_T32_IMM12: howto manager. (line 840) +* BFD_RELOC_ARM_T32_IMMEDIATE: howto manager. (line 838) +* BFD_RELOC_ARM_T32_OFFSET_IMM: howto manager. (line 857) +* BFD_RELOC_ARM_T32_OFFSET_U8: howto manager. (line 856) +* BFD_RELOC_ARM_TARGET1: howto manager. (line 757) +* BFD_RELOC_ARM_TARGET2: howto manager. (line 764) +* BFD_RELOC_ARM_THM_TLS_CALL: howto manager. (line 798) +* BFD_RELOC_ARM_THM_TLS_DESCSEQ: howto manager. (line 800) +* BFD_RELOC_ARM_THUMB_ADD: howto manager. (line 859) +* BFD_RELOC_ARM_THUMB_IMM: howto manager. (line 860) +* BFD_RELOC_ARM_THUMB_MOVT: howto manager. (line 775) +* BFD_RELOC_ARM_THUMB_MOVT_PCREL: howto manager. (line 777) +* BFD_RELOC_ARM_THUMB_MOVW: howto manager. (line 774) +* BFD_RELOC_ARM_THUMB_MOVW_PCREL: howto manager. (line 776) +* BFD_RELOC_ARM_THUMB_OFFSET: howto manager. (line 754) +* BFD_RELOC_ARM_THUMB_SHIFT: howto manager. (line 861) +* BFD_RELOC_ARM_TLS_CALL: howto manager. (line 797) +* BFD_RELOC_ARM_TLS_DESC: howto manager. (line 801) +* BFD_RELOC_ARM_TLS_DESCSEQ: howto manager. (line 799) +* BFD_RELOC_ARM_TLS_DTPMOD32: howto manager. (line 792) +* BFD_RELOC_ARM_TLS_DTPOFF32: howto manager. (line 791) +* BFD_RELOC_ARM_TLS_GD32: howto manager. (line 788) +* BFD_RELOC_ARM_TLS_GOTDESC: howto manager. (line 796) +* BFD_RELOC_ARM_TLS_IE32: howto manager. (line 794) +* BFD_RELOC_ARM_TLS_LDM32: howto manager. (line 790) +* BFD_RELOC_ARM_TLS_LDO32: howto manager. (line 789) +* BFD_RELOC_ARM_TLS_LE32: howto manager. (line 795) +* BFD_RELOC_ARM_TLS_TPOFF32: howto manager. (line 793) +* BFD_RELOC_ARM_V4BX: howto manager. (line 832) +* BFD_RELOC_AVR_13_PCREL: howto manager. (line 1589) +* BFD_RELOC_AVR_16_PM: howto manager. (line 1592) +* BFD_RELOC_AVR_6: howto manager. (line 1660) +* BFD_RELOC_AVR_6_ADIW: howto manager. (line 1663) +* BFD_RELOC_AVR_7_PCREL: howto manager. (line 1586) +* BFD_RELOC_AVR_8_HI: howto manager. (line 1669) +* BFD_RELOC_AVR_8_HLO: howto manager. (line 1672) +* BFD_RELOC_AVR_8_LO: howto manager. (line 1666) +* BFD_RELOC_AVR_CALL: howto manager. (line 1654) +* BFD_RELOC_AVR_DIFF16: howto manager. (line 1676) +* BFD_RELOC_AVR_DIFF32: howto manager. (line 1677) +* BFD_RELOC_AVR_DIFF8: howto manager. (line 1675) +* BFD_RELOC_AVR_HH8_LDI: howto manager. (line 1601) +* BFD_RELOC_AVR_HH8_LDI_NEG: howto manager. (line 1616) +* BFD_RELOC_AVR_HH8_LDI_PM: howto manager. (line 1639) +* BFD_RELOC_AVR_HH8_LDI_PM_NEG: howto manager. (line 1650) +* BFD_RELOC_AVR_HI8_LDI: howto manager. (line 1598) +* BFD_RELOC_AVR_HI8_LDI_GS: howto manager. (line 1634) +* BFD_RELOC_AVR_HI8_LDI_NEG: howto manager. (line 1612) +* BFD_RELOC_AVR_HI8_LDI_PM: howto manager. (line 1631) +* BFD_RELOC_AVR_HI8_LDI_PM_NEG: howto manager. (line 1646) +* BFD_RELOC_AVR_LDI: howto manager. (line 1657) +* BFD_RELOC_AVR_LDS_STS_16: howto manager. (line 1684) +* BFD_RELOC_AVR_LO8_LDI: howto manager. (line 1595) +* BFD_RELOC_AVR_LO8_LDI_GS: howto manager. (line 1626) +* BFD_RELOC_AVR_LO8_LDI_NEG: howto manager. (line 1608) +* BFD_RELOC_AVR_LO8_LDI_PM: howto manager. (line 1623) +* BFD_RELOC_AVR_LO8_LDI_PM_NEG: howto manager. (line 1643) +* BFD_RELOC_AVR_MS8_LDI: howto manager. (line 1605) +* BFD_RELOC_AVR_MS8_LDI_NEG: howto manager. (line 1620) +* BFD_RELOC_AVR_PORT5: howto manager. (line 1690) +* BFD_RELOC_AVR_PORT6: howto manager. (line 1687) +* BFD_RELOC_BFIN_10_PCREL: howto manager. (line 981) +* BFD_RELOC_BFIN_11_PCREL: howto manager. (line 983) +* BFD_RELOC_BFIN_12_PCREL_JUMP: howto manager. (line 985) +* BFD_RELOC_BFIN_12_PCREL_JUMP_S: howto manager. (line 987) +* BFD_RELOC_BFIN_16_HIGH: howto manager. (line 973) +* BFD_RELOC_BFIN_16_IMM: howto manager. (line 971) +* BFD_RELOC_BFIN_16_LOW: howto manager. (line 979) +* BFD_RELOC_BFIN_24_PCREL_CALL_X: howto manager. (line 989) +* BFD_RELOC_BFIN_24_PCREL_JUMP_L: howto manager. (line 991) +* BFD_RELOC_BFIN_4_PCREL: howto manager. (line 975) +* BFD_RELOC_BFIN_5_PCREL: howto manager. (line 977) +* BFD_RELOC_BFIN_FUNCDESC: howto manager. (line 996) +* BFD_RELOC_BFIN_FUNCDESC_GOT17M4: howto manager. (line 997) +* BFD_RELOC_BFIN_FUNCDESC_GOTHI: howto manager. (line 998) +* BFD_RELOC_BFIN_FUNCDESC_GOTLO: howto manager. (line 999) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4: howto manager. (line 1001) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI: howto manager. (line 1002) +* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO: howto manager. (line 1003) +* BFD_RELOC_BFIN_FUNCDESC_VALUE: howto manager. (line 1000) +* BFD_RELOC_BFIN_GOT: howto manager. (line 1008) +* BFD_RELOC_BFIN_GOT17M4: howto manager. (line 993) +* BFD_RELOC_BFIN_GOTHI: howto manager. (line 994) +* BFD_RELOC_BFIN_GOTLO: howto manager. (line 995) +* BFD_RELOC_BFIN_GOTOFF17M4: howto manager. (line 1004) +* BFD_RELOC_BFIN_GOTOFFHI: howto manager. (line 1005) +* BFD_RELOC_BFIN_GOTOFFLO: howto manager. (line 1006) +* BFD_RELOC_BFIN_PLTPC: howto manager. (line 1010) +* BFD_RELOC_C6000_ABS_H16: howto manager. (line 1431) +* BFD_RELOC_C6000_ABS_L16: howto manager. (line 1430) +* BFD_RELOC_C6000_ABS_S16: howto manager. (line 1429) +* BFD_RELOC_C6000_ALIGN: howto manager. (line 1452) +* BFD_RELOC_C6000_COPY: howto manager. (line 1447) +* BFD_RELOC_C6000_DSBT_INDEX: howto manager. (line 1445) +* BFD_RELOC_C6000_EHTYPE: howto manager. (line 1449) +* BFD_RELOC_C6000_FPHEAD: howto manager. (line 1453) +* BFD_RELOC_C6000_JUMP_SLOT: howto manager. (line 1448) +* BFD_RELOC_C6000_NOCMP: howto manager. (line 1454) +* BFD_RELOC_C6000_PCR_H16: howto manager. (line 1450) +* BFD_RELOC_C6000_PCR_L16: howto manager. (line 1451) +* BFD_RELOC_C6000_PCR_S10: howto manager. (line 1427) +* BFD_RELOC_C6000_PCR_S12: howto manager. (line 1426) +* BFD_RELOC_C6000_PCR_S21: howto manager. (line 1425) +* BFD_RELOC_C6000_PCR_S7: howto manager. (line 1428) +* BFD_RELOC_C6000_PREL31: howto manager. (line 1446) +* BFD_RELOC_C6000_SBR_GOT_H16_W: howto manager. (line 1444) +* BFD_RELOC_C6000_SBR_GOT_L16_W: howto manager. (line 1443) +* BFD_RELOC_C6000_SBR_GOT_U15_W: howto manager. (line 1442) +* BFD_RELOC_C6000_SBR_H16_B: howto manager. (line 1439) +* BFD_RELOC_C6000_SBR_H16_H: howto manager. (line 1440) +* BFD_RELOC_C6000_SBR_H16_W: howto manager. (line 1441) +* BFD_RELOC_C6000_SBR_L16_B: howto manager. (line 1436) +* BFD_RELOC_C6000_SBR_L16_H: howto manager. (line 1437) +* BFD_RELOC_C6000_SBR_L16_W: howto manager. (line 1438) +* BFD_RELOC_C6000_SBR_S16: howto manager. (line 1435) +* BFD_RELOC_C6000_SBR_U15_B: howto manager. (line 1432) +* BFD_RELOC_C6000_SBR_U15_H: howto manager. (line 1433) +* BFD_RELOC_C6000_SBR_U15_W: howto manager. (line 1434) * bfd_reloc_code_type: howto manager. (line 9) -* BFD_RELOC_CR16_ABS20: howto manager. (line 2113) -* BFD_RELOC_CR16_ABS24: howto manager. (line 2114) -* BFD_RELOC_CR16_DISP16: howto manager. (line 2124) -* BFD_RELOC_CR16_DISP20: howto manager. (line 2125) -* BFD_RELOC_CR16_DISP24: howto manager. (line 2126) -* BFD_RELOC_CR16_DISP24a: howto manager. (line 2127) -* BFD_RELOC_CR16_DISP4: howto manager. (line 2122) -* BFD_RELOC_CR16_DISP8: howto manager. (line 2123) -* BFD_RELOC_CR16_GLOB_DAT: howto manager. (line 2133) -* BFD_RELOC_CR16_GOTC_REGREL20: howto manager. (line 2132) -* BFD_RELOC_CR16_GOT_REGREL20: howto manager. (line 2131) -* BFD_RELOC_CR16_IMM16: howto manager. (line 2117) -* BFD_RELOC_CR16_IMM20: howto manager. (line 2118) -* BFD_RELOC_CR16_IMM24: howto manager. (line 2119) -* BFD_RELOC_CR16_IMM32: howto manager. (line 2120) -* BFD_RELOC_CR16_IMM32a: howto manager. (line 2121) -* BFD_RELOC_CR16_IMM4: howto manager. (line 2115) -* BFD_RELOC_CR16_IMM8: howto manager. (line 2116) -* BFD_RELOC_CR16_NUM16: howto manager. (line 2102) -* BFD_RELOC_CR16_NUM32: howto manager. (line 2103) -* BFD_RELOC_CR16_NUM32a: howto manager. (line 2104) -* BFD_RELOC_CR16_NUM8: howto manager. (line 2101) -* BFD_RELOC_CR16_REGREL0: howto manager. (line 2105) -* BFD_RELOC_CR16_REGREL14: howto manager. (line 2108) -* BFD_RELOC_CR16_REGREL14a: howto manager. (line 2109) -* BFD_RELOC_CR16_REGREL16: howto manager. (line 2110) -* BFD_RELOC_CR16_REGREL20: howto manager. (line 2111) -* BFD_RELOC_CR16_REGREL20a: howto manager. (line 2112) -* BFD_RELOC_CR16_REGREL4: howto manager. (line 2106) -* BFD_RELOC_CR16_REGREL4a: howto manager. (line 2107) -* BFD_RELOC_CR16_SWITCH16: howto manager. (line 2129) -* BFD_RELOC_CR16_SWITCH32: howto manager. (line 2130) -* BFD_RELOC_CR16_SWITCH8: howto manager. (line 2128) -* BFD_RELOC_CRIS_16_DTPREL: howto manager. (line 2193) -* BFD_RELOC_CRIS_16_GOT: howto manager. (line 2175) -* BFD_RELOC_CRIS_16_GOTPLT: howto manager. (line 2179) -* BFD_RELOC_CRIS_16_GOT_GD: howto manager. (line 2189) -* BFD_RELOC_CRIS_16_GOT_TPREL: howto manager. (line 2195) -* BFD_RELOC_CRIS_16_TPREL: howto manager. (line 2197) -* BFD_RELOC_CRIS_32_DTPREL: howto manager. (line 2192) -* BFD_RELOC_CRIS_32_GD: howto manager. (line 2190) -* BFD_RELOC_CRIS_32_GOT: howto manager. (line 2173) -* BFD_RELOC_CRIS_32_GOTPLT: howto manager. (line 2177) -* BFD_RELOC_CRIS_32_GOTREL: howto manager. (line 2181) -* BFD_RELOC_CRIS_32_GOT_GD: howto manager. (line 2188) -* BFD_RELOC_CRIS_32_GOT_TPREL: howto manager. (line 2194) -* BFD_RELOC_CRIS_32_IE: howto manager. (line 2199) -* BFD_RELOC_CRIS_32_PLT_GOTREL: howto manager. (line 2183) -* BFD_RELOC_CRIS_32_PLT_PCREL: howto manager. (line 2185) -* BFD_RELOC_CRIS_32_TPREL: howto manager. (line 2196) -* BFD_RELOC_CRIS_BDISP8: howto manager. (line 2156) -* BFD_RELOC_CRIS_COPY: howto manager. (line 2168) -* BFD_RELOC_CRIS_DTP: howto manager. (line 2191) -* BFD_RELOC_CRIS_DTPMOD: howto manager. (line 2198) -* BFD_RELOC_CRIS_GLOB_DAT: howto manager. (line 2169) -* BFD_RELOC_CRIS_JUMP_SLOT: howto manager. (line 2170) -* BFD_RELOC_CRIS_LAPCQ_OFFSET: howto manager. (line 2164) -* BFD_RELOC_CRIS_RELATIVE: howto manager. (line 2171) -* BFD_RELOC_CRIS_SIGNED_16: howto manager. (line 2162) -* BFD_RELOC_CRIS_SIGNED_6: howto manager. (line 2158) -* BFD_RELOC_CRIS_SIGNED_8: howto manager. (line 2160) -* BFD_RELOC_CRIS_UNSIGNED_16: howto manager. (line 2163) -* BFD_RELOC_CRIS_UNSIGNED_4: howto manager. (line 2165) -* BFD_RELOC_CRIS_UNSIGNED_5: howto manager. (line 2157) -* BFD_RELOC_CRIS_UNSIGNED_6: howto manager. (line 2159) -* BFD_RELOC_CRIS_UNSIGNED_8: howto manager. (line 2161) -* BFD_RELOC_CRX_ABS16: howto manager. (line 2145) -* BFD_RELOC_CRX_ABS32: howto manager. (line 2146) -* BFD_RELOC_CRX_IMM16: howto manager. (line 2150) -* BFD_RELOC_CRX_IMM32: howto manager. (line 2151) -* BFD_RELOC_CRX_NUM16: howto manager. (line 2148) -* BFD_RELOC_CRX_NUM32: howto manager. (line 2149) -* BFD_RELOC_CRX_NUM8: howto manager. (line 2147) -* BFD_RELOC_CRX_REGREL12: howto manager. (line 2141) -* BFD_RELOC_CRX_REGREL22: howto manager. (line 2142) -* BFD_RELOC_CRX_REGREL28: howto manager. (line 2143) -* BFD_RELOC_CRX_REGREL32: howto manager. (line 2144) -* BFD_RELOC_CRX_REL16: howto manager. (line 2138) -* BFD_RELOC_CRX_REL24: howto manager. (line 2139) -* BFD_RELOC_CRX_REL32: howto manager. (line 2140) -* BFD_RELOC_CRX_REL4: howto manager. (line 2135) -* BFD_RELOC_CRX_REL8: howto manager. (line 2136) -* BFD_RELOC_CRX_REL8_CMP: howto manager. (line 2137) -* BFD_RELOC_CRX_SWITCH16: howto manager. (line 2153) -* BFD_RELOC_CRX_SWITCH32: howto manager. (line 2154) -* BFD_RELOC_CRX_SWITCH8: howto manager. (line 2152) -* BFD_RELOC_CTOR: howto manager. (line 714) -* BFD_RELOC_D10V_10_PCREL_L: howto manager. (line 1050) -* BFD_RELOC_D10V_10_PCREL_R: howto manager. (line 1047) -* BFD_RELOC_D10V_18: howto manager. (line 1054) -* BFD_RELOC_D10V_18_PCREL: howto manager. (line 1056) -* BFD_RELOC_D30V_15: howto manager. (line 1067) -* BFD_RELOC_D30V_15_PCREL: howto manager. (line 1070) -* BFD_RELOC_D30V_15_PCREL_R: howto manager. (line 1073) -* BFD_RELOC_D30V_21: howto manager. (line 1077) -* BFD_RELOC_D30V_21_PCREL: howto manager. (line 1080) -* BFD_RELOC_D30V_21_PCREL_R: howto manager. (line 1083) -* BFD_RELOC_D30V_32: howto manager. (line 1087) -* BFD_RELOC_D30V_32_PCREL: howto manager. (line 1089) -* BFD_RELOC_D30V_6: howto manager. (line 1058) -* BFD_RELOC_D30V_9_PCREL: howto manager. (line 1060) -* BFD_RELOC_D30V_9_PCREL_R: howto manager. (line 1063) -* BFD_RELOC_DLX_HI16_S: howto manager. (line 1091) -* BFD_RELOC_DLX_JMP26: howto manager. (line 1095) -* BFD_RELOC_DLX_LO16: howto manager. (line 1093) -* BFD_RELOC_EPIPHANY_HIGH: howto manager. (line 2962) -* BFD_RELOC_EPIPHANY_IMM11: howto manager. (line 2968) -* BFD_RELOC_EPIPHANY_IMM8: howto manager. (line 2971) -* BFD_RELOC_EPIPHANY_LOW: howto manager. (line 2964) -* BFD_RELOC_EPIPHANY_SIMM11: howto manager. (line 2966) -* BFD_RELOC_EPIPHANY_SIMM24: howto manager. (line 2960) -* BFD_RELOC_EPIPHANY_SIMM8: howto manager. (line 2958) -* BFD_RELOC_FR30_10_IN_8: howto manager. (line 1465) -* BFD_RELOC_FR30_12_PCREL: howto manager. (line 1471) -* BFD_RELOC_FR30_20: howto manager. (line 1453) -* BFD_RELOC_FR30_48: howto manager. (line 1451) -* BFD_RELOC_FR30_6_IN_4: howto manager. (line 1456) -* BFD_RELOC_FR30_8_IN_8: howto manager. (line 1459) -* BFD_RELOC_FR30_9_IN_8: howto manager. (line 1462) -* BFD_RELOC_FR30_9_PCREL: howto manager. (line 1468) -* BFD_RELOC_FRV_FUNCDESC: howto manager. (line 443) -* BFD_RELOC_FRV_FUNCDESC_GOT12: howto manager. (line 444) -* BFD_RELOC_FRV_FUNCDESC_GOTHI: howto manager. (line 445) -* BFD_RELOC_FRV_FUNCDESC_GOTLO: howto manager. (line 446) -* BFD_RELOC_FRV_FUNCDESC_GOTOFF12: howto manager. (line 448) -* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: howto manager. (line 449) -* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: howto manager. (line 450) -* BFD_RELOC_FRV_FUNCDESC_VALUE: howto manager. (line 447) -* BFD_RELOC_FRV_GETTLSOFF: howto manager. (line 454) -* BFD_RELOC_FRV_GETTLSOFF_RELAX: howto manager. (line 467) -* BFD_RELOC_FRV_GOT12: howto manager. (line 440) -* BFD_RELOC_FRV_GOTHI: howto manager. (line 441) -* BFD_RELOC_FRV_GOTLO: howto manager. (line 442) -* BFD_RELOC_FRV_GOTOFF12: howto manager. (line 451) -* BFD_RELOC_FRV_GOTOFFHI: howto manager. (line 452) -* BFD_RELOC_FRV_GOTOFFLO: howto manager. (line 453) -* BFD_RELOC_FRV_GOTTLSDESC12: howto manager. (line 456) -* BFD_RELOC_FRV_GOTTLSDESCHI: howto manager. (line 457) -* BFD_RELOC_FRV_GOTTLSDESCLO: howto manager. (line 458) -* BFD_RELOC_FRV_GOTTLSOFF12: howto manager. (line 462) -* BFD_RELOC_FRV_GOTTLSOFFHI: howto manager. (line 463) -* BFD_RELOC_FRV_GOTTLSOFFLO: howto manager. (line 464) -* BFD_RELOC_FRV_GPREL12: howto manager. (line 435) -* BFD_RELOC_FRV_GPREL32: howto manager. (line 437) -* BFD_RELOC_FRV_GPRELHI: howto manager. (line 438) -* BFD_RELOC_FRV_GPRELLO: howto manager. (line 439) -* BFD_RELOC_FRV_GPRELU12: howto manager. (line 436) -* BFD_RELOC_FRV_HI16: howto manager. (line 434) -* BFD_RELOC_FRV_LABEL16: howto manager. (line 431) -* BFD_RELOC_FRV_LABEL24: howto manager. (line 432) -* BFD_RELOC_FRV_LO16: howto manager. (line 433) -* BFD_RELOC_FRV_TLSDESC_RELAX: howto manager. (line 466) -* BFD_RELOC_FRV_TLSDESC_VALUE: howto manager. (line 455) -* BFD_RELOC_FRV_TLSMOFF: howto manager. (line 469) -* BFD_RELOC_FRV_TLSMOFF12: howto manager. (line 459) -* BFD_RELOC_FRV_TLSMOFFHI: howto manager. (line 460) -* BFD_RELOC_FRV_TLSMOFFLO: howto manager. (line 461) -* BFD_RELOC_FRV_TLSOFF: howto manager. (line 465) -* BFD_RELOC_FRV_TLSOFF_RELAX: howto manager. (line 468) +* BFD_RELOC_CR16_ABS20: howto manager. (line 2119) +* BFD_RELOC_CR16_ABS24: howto manager. (line 2120) +* BFD_RELOC_CR16_DISP16: howto manager. (line 2130) +* BFD_RELOC_CR16_DISP20: howto manager. (line 2131) +* BFD_RELOC_CR16_DISP24: howto manager. (line 2132) +* BFD_RELOC_CR16_DISP24a: howto manager. (line 2133) +* BFD_RELOC_CR16_DISP4: howto manager. (line 2128) +* BFD_RELOC_CR16_DISP8: howto manager. (line 2129) +* BFD_RELOC_CR16_GLOB_DAT: howto manager. (line 2139) +* BFD_RELOC_CR16_GOTC_REGREL20: howto manager. (line 2138) +* BFD_RELOC_CR16_GOT_REGREL20: howto manager. (line 2137) +* BFD_RELOC_CR16_IMM16: howto manager. (line 2123) +* BFD_RELOC_CR16_IMM20: howto manager. (line 2124) +* BFD_RELOC_CR16_IMM24: howto manager. (line 2125) +* BFD_RELOC_CR16_IMM32: howto manager. (line 2126) +* BFD_RELOC_CR16_IMM32a: howto manager. (line 2127) +* BFD_RELOC_CR16_IMM4: howto manager. (line 2121) +* BFD_RELOC_CR16_IMM8: howto manager. (line 2122) +* BFD_RELOC_CR16_NUM16: howto manager. (line 2108) +* BFD_RELOC_CR16_NUM32: howto manager. (line 2109) +* BFD_RELOC_CR16_NUM32a: howto manager. (line 2110) +* BFD_RELOC_CR16_NUM8: howto manager. (line 2107) +* BFD_RELOC_CR16_REGREL0: howto manager. (line 2111) +* BFD_RELOC_CR16_REGREL14: howto manager. (line 2114) +* BFD_RELOC_CR16_REGREL14a: howto manager. (line 2115) +* BFD_RELOC_CR16_REGREL16: howto manager. (line 2116) +* BFD_RELOC_CR16_REGREL20: howto manager. (line 2117) +* BFD_RELOC_CR16_REGREL20a: howto manager. (line 2118) +* BFD_RELOC_CR16_REGREL4: howto manager. (line 2112) +* BFD_RELOC_CR16_REGREL4a: howto manager. (line 2113) +* BFD_RELOC_CR16_SWITCH16: howto manager. (line 2135) +* BFD_RELOC_CR16_SWITCH32: howto manager. (line 2136) +* BFD_RELOC_CR16_SWITCH8: howto manager. (line 2134) +* BFD_RELOC_CRIS_16_DTPREL: howto manager. (line 2199) +* BFD_RELOC_CRIS_16_GOT: howto manager. (line 2181) +* BFD_RELOC_CRIS_16_GOTPLT: howto manager. (line 2185) +* BFD_RELOC_CRIS_16_GOT_GD: howto manager. (line 2195) +* BFD_RELOC_CRIS_16_GOT_TPREL: howto manager. (line 2201) +* BFD_RELOC_CRIS_16_TPREL: howto manager. (line 2203) +* BFD_RELOC_CRIS_32_DTPREL: howto manager. (line 2198) +* BFD_RELOC_CRIS_32_GD: howto manager. (line 2196) +* BFD_RELOC_CRIS_32_GOT: howto manager. (line 2179) +* BFD_RELOC_CRIS_32_GOTPLT: howto manager. (line 2183) +* BFD_RELOC_CRIS_32_GOTREL: howto manager. (line 2187) +* BFD_RELOC_CRIS_32_GOT_GD: howto manager. (line 2194) +* BFD_RELOC_CRIS_32_GOT_TPREL: howto manager. (line 2200) +* BFD_RELOC_CRIS_32_IE: howto manager. (line 2205) +* BFD_RELOC_CRIS_32_PLT_GOTREL: howto manager. (line 2189) +* BFD_RELOC_CRIS_32_PLT_PCREL: howto manager. (line 2191) +* BFD_RELOC_CRIS_32_TPREL: howto manager. (line 2202) +* BFD_RELOC_CRIS_BDISP8: howto manager. (line 2162) +* BFD_RELOC_CRIS_COPY: howto manager. (line 2174) +* BFD_RELOC_CRIS_DTP: howto manager. (line 2197) +* BFD_RELOC_CRIS_DTPMOD: howto manager. (line 2204) +* BFD_RELOC_CRIS_GLOB_DAT: howto manager. (line 2175) +* BFD_RELOC_CRIS_JUMP_SLOT: howto manager. (line 2176) +* BFD_RELOC_CRIS_LAPCQ_OFFSET: howto manager. (line 2170) +* BFD_RELOC_CRIS_RELATIVE: howto manager. (line 2177) +* BFD_RELOC_CRIS_SIGNED_16: howto manager. (line 2168) +* BFD_RELOC_CRIS_SIGNED_6: howto manager. (line 2164) +* BFD_RELOC_CRIS_SIGNED_8: howto manager. (line 2166) +* BFD_RELOC_CRIS_UNSIGNED_16: howto manager. (line 2169) +* BFD_RELOC_CRIS_UNSIGNED_4: howto manager. (line 2171) +* BFD_RELOC_CRIS_UNSIGNED_5: howto manager. (line 2163) +* BFD_RELOC_CRIS_UNSIGNED_6: howto manager. (line 2165) +* BFD_RELOC_CRIS_UNSIGNED_8: howto manager. (line 2167) +* BFD_RELOC_CRX_ABS16: howto manager. (line 2151) +* BFD_RELOC_CRX_ABS32: howto manager. (line 2152) +* BFD_RELOC_CRX_IMM16: howto manager. (line 2156) +* BFD_RELOC_CRX_IMM32: howto manager. (line 2157) +* BFD_RELOC_CRX_NUM16: howto manager. (line 2154) +* BFD_RELOC_CRX_NUM32: howto manager. (line 2155) +* BFD_RELOC_CRX_NUM8: howto manager. (line 2153) +* BFD_RELOC_CRX_REGREL12: howto manager. (line 2147) +* BFD_RELOC_CRX_REGREL22: howto manager. (line 2148) +* BFD_RELOC_CRX_REGREL28: howto manager. (line 2149) +* BFD_RELOC_CRX_REGREL32: howto manager. (line 2150) +* BFD_RELOC_CRX_REL16: howto manager. (line 2144) +* BFD_RELOC_CRX_REL24: howto manager. (line 2145) +* BFD_RELOC_CRX_REL32: howto manager. (line 2146) +* BFD_RELOC_CRX_REL4: howto manager. (line 2141) +* BFD_RELOC_CRX_REL8: howto manager. (line 2142) +* BFD_RELOC_CRX_REL8_CMP: howto manager. (line 2143) +* BFD_RELOC_CRX_SWITCH16: howto manager. (line 2159) +* BFD_RELOC_CRX_SWITCH32: howto manager. (line 2160) +* BFD_RELOC_CRX_SWITCH8: howto manager. (line 2158) +* BFD_RELOC_CTOR: howto manager. (line 719) +* BFD_RELOC_D10V_10_PCREL_L: howto manager. (line 1055) +* BFD_RELOC_D10V_10_PCREL_R: howto manager. (line 1052) +* BFD_RELOC_D10V_18: howto manager. (line 1059) +* BFD_RELOC_D10V_18_PCREL: howto manager. (line 1061) +* BFD_RELOC_D30V_15: howto manager. (line 1072) +* BFD_RELOC_D30V_15_PCREL: howto manager. (line 1075) +* BFD_RELOC_D30V_15_PCREL_R: howto manager. (line 1078) +* BFD_RELOC_D30V_21: howto manager. (line 1082) +* BFD_RELOC_D30V_21_PCREL: howto manager. (line 1085) +* BFD_RELOC_D30V_21_PCREL_R: howto manager. (line 1088) +* BFD_RELOC_D30V_32: howto manager. (line 1092) +* BFD_RELOC_D30V_32_PCREL: howto manager. (line 1094) +* BFD_RELOC_D30V_6: howto manager. (line 1063) +* BFD_RELOC_D30V_9_PCREL: howto manager. (line 1065) +* BFD_RELOC_D30V_9_PCREL_R: howto manager. (line 1068) +* BFD_RELOC_DLX_HI16_S: howto manager. (line 1096) +* BFD_RELOC_DLX_JMP26: howto manager. (line 1100) +* BFD_RELOC_DLX_LO16: howto manager. (line 1098) +* BFD_RELOC_EPIPHANY_HIGH: howto manager. (line 2992) +* BFD_RELOC_EPIPHANY_IMM11: howto manager. (line 2998) +* BFD_RELOC_EPIPHANY_IMM8: howto manager. (line 3001) +* BFD_RELOC_EPIPHANY_LOW: howto manager. (line 2994) +* BFD_RELOC_EPIPHANY_SIMM11: howto manager. (line 2996) +* BFD_RELOC_EPIPHANY_SIMM24: howto manager. (line 2990) +* BFD_RELOC_EPIPHANY_SIMM8: howto manager. (line 2988) +* BFD_RELOC_FR30_10_IN_8: howto manager. (line 1470) +* BFD_RELOC_FR30_12_PCREL: howto manager. (line 1476) +* BFD_RELOC_FR30_20: howto manager. (line 1458) +* BFD_RELOC_FR30_48: howto manager. (line 1456) +* BFD_RELOC_FR30_6_IN_4: howto manager. (line 1461) +* BFD_RELOC_FR30_8_IN_8: howto manager. (line 1464) +* BFD_RELOC_FR30_9_IN_8: howto manager. (line 1467) +* BFD_RELOC_FR30_9_PCREL: howto manager. (line 1473) +* BFD_RELOC_FRV_FUNCDESC: howto manager. (line 448) +* BFD_RELOC_FRV_FUNCDESC_GOT12: howto manager. (line 449) +* BFD_RELOC_FRV_FUNCDESC_GOTHI: howto manager. (line 450) +* BFD_RELOC_FRV_FUNCDESC_GOTLO: howto manager. (line 451) +* BFD_RELOC_FRV_FUNCDESC_GOTOFF12: howto manager. (line 453) +* BFD_RELOC_FRV_FUNCDESC_GOTOFFHI: howto manager. (line 454) +* BFD_RELOC_FRV_FUNCDESC_GOTOFFLO: howto manager. (line 455) +* BFD_RELOC_FRV_FUNCDESC_VALUE: howto manager. (line 452) +* BFD_RELOC_FRV_GETTLSOFF: howto manager. (line 459) +* BFD_RELOC_FRV_GETTLSOFF_RELAX: howto manager. (line 472) +* BFD_RELOC_FRV_GOT12: howto manager. (line 445) +* BFD_RELOC_FRV_GOTHI: howto manager. (line 446) +* BFD_RELOC_FRV_GOTLO: howto manager. (line 447) +* BFD_RELOC_FRV_GOTOFF12: howto manager. (line 456) +* BFD_RELOC_FRV_GOTOFFHI: howto manager. (line 457) +* BFD_RELOC_FRV_GOTOFFLO: howto manager. (line 458) +* BFD_RELOC_FRV_GOTTLSDESC12: howto manager. (line 461) +* BFD_RELOC_FRV_GOTTLSDESCHI: howto manager. (line 462) +* BFD_RELOC_FRV_GOTTLSDESCLO: howto manager. (line 463) +* BFD_RELOC_FRV_GOTTLSOFF12: howto manager. (line 467) +* BFD_RELOC_FRV_GOTTLSOFFHI: howto manager. (line 468) +* BFD_RELOC_FRV_GOTTLSOFFLO: howto manager. (line 469) +* BFD_RELOC_FRV_GPREL12: howto manager. (line 440) +* BFD_RELOC_FRV_GPREL32: howto manager. (line 442) +* BFD_RELOC_FRV_GPRELHI: howto manager. (line 443) +* BFD_RELOC_FRV_GPRELLO: howto manager. (line 444) +* BFD_RELOC_FRV_GPRELU12: howto manager. (line 441) +* BFD_RELOC_FRV_HI16: howto manager. (line 439) +* BFD_RELOC_FRV_LABEL16: howto manager. (line 436) +* BFD_RELOC_FRV_LABEL24: howto manager. (line 437) +* BFD_RELOC_FRV_LO16: howto manager. (line 438) +* BFD_RELOC_FRV_TLSDESC_RELAX: howto manager. (line 471) +* BFD_RELOC_FRV_TLSDESC_VALUE: howto manager. (line 460) +* BFD_RELOC_FRV_TLSMOFF: howto manager. (line 474) +* BFD_RELOC_FRV_TLSMOFF12: howto manager. (line 464) +* BFD_RELOC_FRV_TLSMOFFHI: howto manager. (line 465) +* BFD_RELOC_FRV_TLSMOFFLO: howto manager. (line 466) +* BFD_RELOC_FRV_TLSOFF: howto manager. (line 470) +* BFD_RELOC_FRV_TLSOFF_RELAX: howto manager. (line 473) +* BFD_RELOC_FT32_10: howto manager. (line 431) +* BFD_RELOC_FT32_17: howto manager. (line 433) +* BFD_RELOC_FT32_18: howto manager. (line 434) +* BFD_RELOC_FT32_20: howto manager. (line 432) * BFD_RELOC_GPREL16: howto manager. (line 114) * BFD_RELOC_GPREL32: howto manager. (line 115) -* BFD_RELOC_H8_DIR16A8: howto manager. (line 2259) -* BFD_RELOC_H8_DIR16R8: howto manager. (line 2260) -* BFD_RELOC_H8_DIR24A8: howto manager. (line 2261) -* BFD_RELOC_H8_DIR24R8: howto manager. (line 2262) -* BFD_RELOC_H8_DIR32A16: howto manager. (line 2263) -* BFD_RELOC_H8_DISP32A16: howto manager. (line 2264) +* BFD_RELOC_H8_DIR16A8: howto manager. (line 2265) +* BFD_RELOC_H8_DIR16R8: howto manager. (line 2266) +* BFD_RELOC_H8_DIR24A8: howto manager. (line 2267) +* BFD_RELOC_H8_DIR24R8: howto manager. (line 2268) +* BFD_RELOC_H8_DIR32A16: howto manager. (line 2269) +* BFD_RELOC_H8_DISP32A16: howto manager. (line 2270) * BFD_RELOC_HI16: howto manager. (line 316) * BFD_RELOC_HI16_BASEREL: howto manager. (line 94) * BFD_RELOC_HI16_GOTOFF: howto manager. (line 53) @@ -11716,257 +11850,257 @@ BFD Index * BFD_RELOC_HI16_S_PCREL: howto manager. (line 327) * BFD_RELOC_HI16_S_PLTOFF: howto manager. (line 66) * BFD_RELOC_HI22: howto manager. (line 110) -* BFD_RELOC_I370_D12: howto manager. (line 712) +* BFD_RELOC_I370_D12: howto manager. (line 717) * BFD_RELOC_I960_CALLJ: howto manager. (line 120) -* BFD_RELOC_IA64_COPY: howto manager. (line 1962) -* BFD_RELOC_IA64_DIR32LSB: howto manager. (line 1907) -* BFD_RELOC_IA64_DIR32MSB: howto manager. (line 1906) -* BFD_RELOC_IA64_DIR64LSB: howto manager. (line 1909) -* BFD_RELOC_IA64_DIR64MSB: howto manager. (line 1908) -* BFD_RELOC_IA64_DTPMOD64LSB: howto manager. (line 1972) -* BFD_RELOC_IA64_DTPMOD64MSB: howto manager. (line 1971) -* BFD_RELOC_IA64_DTPREL14: howto manager. (line 1974) -* BFD_RELOC_IA64_DTPREL22: howto manager. (line 1975) -* BFD_RELOC_IA64_DTPREL32LSB: howto manager. (line 1978) -* BFD_RELOC_IA64_DTPREL32MSB: howto manager. (line 1977) -* BFD_RELOC_IA64_DTPREL64I: howto manager. (line 1976) -* BFD_RELOC_IA64_DTPREL64LSB: howto manager. (line 1980) -* BFD_RELOC_IA64_DTPREL64MSB: howto manager. (line 1979) -* BFD_RELOC_IA64_FPTR32LSB: howto manager. (line 1924) -* BFD_RELOC_IA64_FPTR32MSB: howto manager. (line 1923) -* BFD_RELOC_IA64_FPTR64I: howto manager. (line 1922) -* BFD_RELOC_IA64_FPTR64LSB: howto manager. (line 1926) -* BFD_RELOC_IA64_FPTR64MSB: howto manager. (line 1925) -* BFD_RELOC_IA64_GPREL22: howto manager. (line 1910) -* BFD_RELOC_IA64_GPREL32LSB: howto manager. (line 1913) -* BFD_RELOC_IA64_GPREL32MSB: howto manager. (line 1912) -* BFD_RELOC_IA64_GPREL64I: howto manager. (line 1911) -* BFD_RELOC_IA64_GPREL64LSB: howto manager. (line 1915) -* BFD_RELOC_IA64_GPREL64MSB: howto manager. (line 1914) -* BFD_RELOC_IA64_IMM14: howto manager. (line 1903) -* BFD_RELOC_IA64_IMM22: howto manager. (line 1904) -* BFD_RELOC_IA64_IMM64: howto manager. (line 1905) -* BFD_RELOC_IA64_IPLTLSB: howto manager. (line 1961) -* BFD_RELOC_IA64_IPLTMSB: howto manager. (line 1960) -* BFD_RELOC_IA64_LDXMOV: howto manager. (line 1964) -* BFD_RELOC_IA64_LTOFF22: howto manager. (line 1916) -* BFD_RELOC_IA64_LTOFF22X: howto manager. (line 1963) -* BFD_RELOC_IA64_LTOFF64I: howto manager. (line 1917) -* BFD_RELOC_IA64_LTOFF_DTPMOD22: howto manager. (line 1973) -* BFD_RELOC_IA64_LTOFF_DTPREL22: howto manager. (line 1981) -* BFD_RELOC_IA64_LTOFF_FPTR22: howto manager. (line 1938) -* BFD_RELOC_IA64_LTOFF_FPTR32LSB: howto manager. (line 1941) -* BFD_RELOC_IA64_LTOFF_FPTR32MSB: howto manager. (line 1940) -* BFD_RELOC_IA64_LTOFF_FPTR64I: howto manager. (line 1939) -* BFD_RELOC_IA64_LTOFF_FPTR64LSB: howto manager. (line 1943) -* BFD_RELOC_IA64_LTOFF_FPTR64MSB: howto manager. (line 1942) -* BFD_RELOC_IA64_LTOFF_TPREL22: howto manager. (line 1970) -* BFD_RELOC_IA64_LTV32LSB: howto manager. (line 1957) -* BFD_RELOC_IA64_LTV32MSB: howto manager. (line 1956) -* BFD_RELOC_IA64_LTV64LSB: howto manager. (line 1959) -* BFD_RELOC_IA64_LTV64MSB: howto manager. (line 1958) -* BFD_RELOC_IA64_PCREL21B: howto manager. (line 1927) -* BFD_RELOC_IA64_PCREL21BI: howto manager. (line 1928) -* BFD_RELOC_IA64_PCREL21F: howto manager. (line 1930) -* BFD_RELOC_IA64_PCREL21M: howto manager. (line 1929) -* BFD_RELOC_IA64_PCREL22: howto manager. (line 1931) -* BFD_RELOC_IA64_PCREL32LSB: howto manager. (line 1935) -* BFD_RELOC_IA64_PCREL32MSB: howto manager. (line 1934) -* BFD_RELOC_IA64_PCREL60B: howto manager. (line 1932) -* BFD_RELOC_IA64_PCREL64I: howto manager. (line 1933) -* BFD_RELOC_IA64_PCREL64LSB: howto manager. (line 1937) -* BFD_RELOC_IA64_PCREL64MSB: howto manager. (line 1936) -* BFD_RELOC_IA64_PLTOFF22: howto manager. (line 1918) -* BFD_RELOC_IA64_PLTOFF64I: howto manager. (line 1919) -* BFD_RELOC_IA64_PLTOFF64LSB: howto manager. (line 1921) -* BFD_RELOC_IA64_PLTOFF64MSB: howto manager. (line 1920) -* BFD_RELOC_IA64_REL32LSB: howto manager. (line 1953) -* BFD_RELOC_IA64_REL32MSB: howto manager. (line 1952) -* BFD_RELOC_IA64_REL64LSB: howto manager. (line 1955) -* BFD_RELOC_IA64_REL64MSB: howto manager. (line 1954) -* BFD_RELOC_IA64_SECREL32LSB: howto manager. (line 1949) -* BFD_RELOC_IA64_SECREL32MSB: howto manager. (line 1948) -* BFD_RELOC_IA64_SECREL64LSB: howto manager. (line 1951) -* BFD_RELOC_IA64_SECREL64MSB: howto manager. (line 1950) -* BFD_RELOC_IA64_SEGREL32LSB: howto manager. (line 1945) -* BFD_RELOC_IA64_SEGREL32MSB: howto manager. (line 1944) -* BFD_RELOC_IA64_SEGREL64LSB: howto manager. (line 1947) -* BFD_RELOC_IA64_SEGREL64MSB: howto manager. (line 1946) -* BFD_RELOC_IA64_TPREL14: howto manager. (line 1965) -* BFD_RELOC_IA64_TPREL22: howto manager. (line 1966) -* BFD_RELOC_IA64_TPREL64I: howto manager. (line 1967) -* BFD_RELOC_IA64_TPREL64LSB: howto manager. (line 1969) -* BFD_RELOC_IA64_TPREL64MSB: howto manager. (line 1968) -* BFD_RELOC_IP2K_ADDR16CJP: howto manager. (line 1864) -* BFD_RELOC_IP2K_BANK: howto manager. (line 1862) -* BFD_RELOC_IP2K_EX8DATA: howto manager. (line 1870) -* BFD_RELOC_IP2K_FR9: howto manager. (line 1860) -* BFD_RELOC_IP2K_FR_OFFSET: howto manager. (line 1879) -* BFD_RELOC_IP2K_HI8DATA: howto manager. (line 1869) -* BFD_RELOC_IP2K_HI8INSN: howto manager. (line 1873) -* BFD_RELOC_IP2K_LO8DATA: howto manager. (line 1868) -* BFD_RELOC_IP2K_LO8INSN: howto manager. (line 1872) -* BFD_RELOC_IP2K_PAGE3: howto manager. (line 1866) -* BFD_RELOC_IP2K_PC_SKIP: howto manager. (line 1875) -* BFD_RELOC_IP2K_TEXT: howto manager. (line 1877) -* BFD_RELOC_IQ2000_OFFSET_16: howto manager. (line 2357) -* BFD_RELOC_IQ2000_OFFSET_21: howto manager. (line 2358) -* BFD_RELOC_IQ2000_UHI16: howto manager. (line 2359) -* BFD_RELOC_LM32_16_GOT: howto manager. (line 2449) -* BFD_RELOC_LM32_BRANCH: howto manager. (line 2448) -* BFD_RELOC_LM32_CALL: howto manager. (line 2447) -* BFD_RELOC_LM32_COPY: howto manager. (line 2452) -* BFD_RELOC_LM32_GLOB_DAT: howto manager. (line 2453) -* BFD_RELOC_LM32_GOTOFF_HI16: howto manager. (line 2450) -* BFD_RELOC_LM32_GOTOFF_LO16: howto manager. (line 2451) -* BFD_RELOC_LM32_JMP_SLOT: howto manager. (line 2454) -* BFD_RELOC_LM32_RELATIVE: howto manager. (line 2455) +* BFD_RELOC_IA64_COPY: howto manager. (line 1968) +* BFD_RELOC_IA64_DIR32LSB: howto manager. (line 1913) +* BFD_RELOC_IA64_DIR32MSB: howto manager. (line 1912) +* BFD_RELOC_IA64_DIR64LSB: howto manager. (line 1915) +* BFD_RELOC_IA64_DIR64MSB: howto manager. (line 1914) +* BFD_RELOC_IA64_DTPMOD64LSB: howto manager. (line 1978) +* BFD_RELOC_IA64_DTPMOD64MSB: howto manager. (line 1977) +* BFD_RELOC_IA64_DTPREL14: howto manager. (line 1980) +* BFD_RELOC_IA64_DTPREL22: howto manager. (line 1981) +* BFD_RELOC_IA64_DTPREL32LSB: howto manager. (line 1984) +* BFD_RELOC_IA64_DTPREL32MSB: howto manager. (line 1983) +* BFD_RELOC_IA64_DTPREL64I: howto manager. (line 1982) +* BFD_RELOC_IA64_DTPREL64LSB: howto manager. (line 1986) +* BFD_RELOC_IA64_DTPREL64MSB: howto manager. (line 1985) +* BFD_RELOC_IA64_FPTR32LSB: howto manager. (line 1930) +* BFD_RELOC_IA64_FPTR32MSB: howto manager. (line 1929) +* BFD_RELOC_IA64_FPTR64I: howto manager. (line 1928) +* BFD_RELOC_IA64_FPTR64LSB: howto manager. (line 1932) +* BFD_RELOC_IA64_FPTR64MSB: howto manager. (line 1931) +* BFD_RELOC_IA64_GPREL22: howto manager. (line 1916) +* BFD_RELOC_IA64_GPREL32LSB: howto manager. (line 1919) +* BFD_RELOC_IA64_GPREL32MSB: howto manager. (line 1918) +* BFD_RELOC_IA64_GPREL64I: howto manager. (line 1917) +* BFD_RELOC_IA64_GPREL64LSB: howto manager. (line 1921) +* BFD_RELOC_IA64_GPREL64MSB: howto manager. (line 1920) +* BFD_RELOC_IA64_IMM14: howto manager. (line 1909) +* BFD_RELOC_IA64_IMM22: howto manager. (line 1910) +* BFD_RELOC_IA64_IMM64: howto manager. (line 1911) +* BFD_RELOC_IA64_IPLTLSB: howto manager. (line 1967) +* BFD_RELOC_IA64_IPLTMSB: howto manager. (line 1966) +* BFD_RELOC_IA64_LDXMOV: howto manager. (line 1970) +* BFD_RELOC_IA64_LTOFF22: howto manager. (line 1922) +* BFD_RELOC_IA64_LTOFF22X: howto manager. (line 1969) +* BFD_RELOC_IA64_LTOFF64I: howto manager. (line 1923) +* BFD_RELOC_IA64_LTOFF_DTPMOD22: howto manager. (line 1979) +* BFD_RELOC_IA64_LTOFF_DTPREL22: howto manager. (line 1987) +* BFD_RELOC_IA64_LTOFF_FPTR22: howto manager. (line 1944) +* BFD_RELOC_IA64_LTOFF_FPTR32LSB: howto manager. (line 1947) +* BFD_RELOC_IA64_LTOFF_FPTR32MSB: howto manager. (line 1946) +* BFD_RELOC_IA64_LTOFF_FPTR64I: howto manager. (line 1945) +* BFD_RELOC_IA64_LTOFF_FPTR64LSB: howto manager. (line 1949) +* BFD_RELOC_IA64_LTOFF_FPTR64MSB: howto manager. (line 1948) +* BFD_RELOC_IA64_LTOFF_TPREL22: howto manager. (line 1976) +* BFD_RELOC_IA64_LTV32LSB: howto manager. (line 1963) +* BFD_RELOC_IA64_LTV32MSB: howto manager. (line 1962) +* BFD_RELOC_IA64_LTV64LSB: howto manager. (line 1965) +* BFD_RELOC_IA64_LTV64MSB: howto manager. (line 1964) +* BFD_RELOC_IA64_PCREL21B: howto manager. (line 1933) +* BFD_RELOC_IA64_PCREL21BI: howto manager. (line 1934) +* BFD_RELOC_IA64_PCREL21F: howto manager. (line 1936) +* BFD_RELOC_IA64_PCREL21M: howto manager. (line 1935) +* BFD_RELOC_IA64_PCREL22: howto manager. (line 1937) +* BFD_RELOC_IA64_PCREL32LSB: howto manager. (line 1941) +* BFD_RELOC_IA64_PCREL32MSB: howto manager. (line 1940) +* BFD_RELOC_IA64_PCREL60B: howto manager. (line 1938) +* BFD_RELOC_IA64_PCREL64I: howto manager. (line 1939) +* BFD_RELOC_IA64_PCREL64LSB: howto manager. (line 1943) +* BFD_RELOC_IA64_PCREL64MSB: howto manager. (line 1942) +* BFD_RELOC_IA64_PLTOFF22: howto manager. (line 1924) +* BFD_RELOC_IA64_PLTOFF64I: howto manager. (line 1925) +* BFD_RELOC_IA64_PLTOFF64LSB: howto manager. (line 1927) +* BFD_RELOC_IA64_PLTOFF64MSB: howto manager. (line 1926) +* BFD_RELOC_IA64_REL32LSB: howto manager. (line 1959) +* BFD_RELOC_IA64_REL32MSB: howto manager. (line 1958) +* BFD_RELOC_IA64_REL64LSB: howto manager. (line 1961) +* BFD_RELOC_IA64_REL64MSB: howto manager. (line 1960) +* BFD_RELOC_IA64_SECREL32LSB: howto manager. (line 1955) +* BFD_RELOC_IA64_SECREL32MSB: howto manager. (line 1954) +* BFD_RELOC_IA64_SECREL64LSB: howto manager. (line 1957) +* BFD_RELOC_IA64_SECREL64MSB: howto manager. (line 1956) +* BFD_RELOC_IA64_SEGREL32LSB: howto manager. (line 1951) +* BFD_RELOC_IA64_SEGREL32MSB: howto manager. (line 1950) +* BFD_RELOC_IA64_SEGREL64LSB: howto manager. (line 1953) +* BFD_RELOC_IA64_SEGREL64MSB: howto manager. (line 1952) +* BFD_RELOC_IA64_TPREL14: howto manager. (line 1971) +* BFD_RELOC_IA64_TPREL22: howto manager. (line 1972) +* BFD_RELOC_IA64_TPREL64I: howto manager. (line 1973) +* BFD_RELOC_IA64_TPREL64LSB: howto manager. (line 1975) +* BFD_RELOC_IA64_TPREL64MSB: howto manager. (line 1974) +* BFD_RELOC_IP2K_ADDR16CJP: howto manager. (line 1870) +* BFD_RELOC_IP2K_BANK: howto manager. (line 1868) +* BFD_RELOC_IP2K_EX8DATA: howto manager. (line 1876) +* BFD_RELOC_IP2K_FR9: howto manager. (line 1866) +* BFD_RELOC_IP2K_FR_OFFSET: howto manager. (line 1885) +* BFD_RELOC_IP2K_HI8DATA: howto manager. (line 1875) +* BFD_RELOC_IP2K_HI8INSN: howto manager. (line 1879) +* BFD_RELOC_IP2K_LO8DATA: howto manager. (line 1874) +* BFD_RELOC_IP2K_LO8INSN: howto manager. (line 1878) +* BFD_RELOC_IP2K_PAGE3: howto manager. (line 1872) +* BFD_RELOC_IP2K_PC_SKIP: howto manager. (line 1881) +* BFD_RELOC_IP2K_TEXT: howto manager. (line 1883) +* BFD_RELOC_IQ2000_OFFSET_16: howto manager. (line 2376) +* BFD_RELOC_IQ2000_OFFSET_21: howto manager. (line 2377) +* BFD_RELOC_IQ2000_UHI16: howto manager. (line 2378) +* BFD_RELOC_LM32_16_GOT: howto manager. (line 2468) +* BFD_RELOC_LM32_BRANCH: howto manager. (line 2467) +* BFD_RELOC_LM32_CALL: howto manager. (line 2466) +* BFD_RELOC_LM32_COPY: howto manager. (line 2471) +* BFD_RELOC_LM32_GLOB_DAT: howto manager. (line 2472) +* BFD_RELOC_LM32_GOTOFF_HI16: howto manager. (line 2469) +* BFD_RELOC_LM32_GOTOFF_LO16: howto manager. (line 2470) +* BFD_RELOC_LM32_JMP_SLOT: howto manager. (line 2473) +* BFD_RELOC_LM32_RELATIVE: howto manager. (line 2474) * BFD_RELOC_LO10: howto manager. (line 111) * BFD_RELOC_LO16: howto manager. (line 323) * BFD_RELOC_LO16_BASEREL: howto manager. (line 93) * BFD_RELOC_LO16_GOTOFF: howto manager. (line 52) * BFD_RELOC_LO16_PCREL: howto manager. (line 329) * BFD_RELOC_LO16_PLTOFF: howto manager. (line 64) -* BFD_RELOC_M32C_HI8: howto manager. (line 1097) -* BFD_RELOC_M32C_RL_1ADDR: howto manager. (line 1099) -* BFD_RELOC_M32C_RL_2ADDR: howto manager. (line 1100) -* BFD_RELOC_M32C_RL_JUMP: howto manager. (line 1098) -* BFD_RELOC_M32R_10_PCREL: howto manager. (line 1105) -* BFD_RELOC_M32R_18_PCREL: howto manager. (line 1108) -* BFD_RELOC_M32R_24: howto manager. (line 1102) -* BFD_RELOC_M32R_26_PCREL: howto manager. (line 1110) -* BFD_RELOC_M32R_26_PLTREL: howto manager. (line 1124) -* BFD_RELOC_M32R_COPY: howto manager. (line 1125) -* BFD_RELOC_M32R_GLOB_DAT: howto manager. (line 1126) -* BFD_RELOC_M32R_GOT16_HI_SLO: howto manager. (line 1135) -* BFD_RELOC_M32R_GOT16_HI_ULO: howto manager. (line 1134) -* BFD_RELOC_M32R_GOT16_LO: howto manager. (line 1136) -* BFD_RELOC_M32R_GOT24: howto manager. (line 1123) -* BFD_RELOC_M32R_GOTOFF: howto manager. (line 1129) -* BFD_RELOC_M32R_GOTOFF_HI_SLO: howto manager. (line 1131) -* BFD_RELOC_M32R_GOTOFF_HI_ULO: howto manager. (line 1130) -* BFD_RELOC_M32R_GOTOFF_LO: howto manager. (line 1132) -* BFD_RELOC_M32R_GOTPC24: howto manager. (line 1133) -* BFD_RELOC_M32R_GOTPC_HI_SLO: howto manager. (line 1138) -* BFD_RELOC_M32R_GOTPC_HI_ULO: howto manager. (line 1137) -* BFD_RELOC_M32R_GOTPC_LO: howto manager. (line 1139) -* BFD_RELOC_M32R_HI16_SLO: howto manager. (line 1115) -* BFD_RELOC_M32R_HI16_ULO: howto manager. (line 1112) -* BFD_RELOC_M32R_JMP_SLOT: howto manager. (line 1127) -* BFD_RELOC_M32R_LO16: howto manager. (line 1118) -* BFD_RELOC_M32R_RELATIVE: howto manager. (line 1128) -* BFD_RELOC_M32R_SDA16: howto manager. (line 1120) -* BFD_RELOC_M68HC11_24: howto manager. (line 2009) -* BFD_RELOC_M68HC11_3B: howto manager. (line 1989) -* BFD_RELOC_M68HC11_HI8: howto manager. (line 1983) -* BFD_RELOC_M68HC11_LO16: howto manager. (line 2000) -* BFD_RELOC_M68HC11_LO8: howto manager. (line 1986) -* BFD_RELOC_M68HC11_PAGE: howto manager. (line 2005) -* BFD_RELOC_M68HC11_RL_GROUP: howto manager. (line 1996) -* BFD_RELOC_M68HC11_RL_JUMP: howto manager. (line 1991) -* BFD_RELOC_M68HC12_10_PCREL: howto manager. (line 2052) -* BFD_RELOC_M68HC12_16B: howto manager. (line 2048) -* BFD_RELOC_M68HC12_5B: howto manager. (line 2014) -* BFD_RELOC_M68HC12_9B: howto manager. (line 2046) -* BFD_RELOC_M68HC12_9_PCREL: howto manager. (line 2050) -* BFD_RELOC_M68HC12_HI8XG: howto manager. (line 2057) -* BFD_RELOC_M68HC12_LO8XG: howto manager. (line 2054) -* BFD_RELOC_MACH_O_LOCAL_SECTDIFF: howto manager. (line 2460) -* BFD_RELOC_MACH_O_PAIR: howto manager. (line 2462) -* BFD_RELOC_MACH_O_SECTDIFF: howto manager. (line 2457) -* BFD_RELOC_MACH_O_X86_64_BRANCH32: howto manager. (line 2464) -* BFD_RELOC_MACH_O_X86_64_BRANCH8: howto manager. (line 2465) -* BFD_RELOC_MACH_O_X86_64_GOT: howto manager. (line 2468) -* BFD_RELOC_MACH_O_X86_64_GOT_LOAD: howto manager. (line 2470) -* BFD_RELOC_MACH_O_X86_64_PCREL32_1: howto manager. (line 2477) -* BFD_RELOC_MACH_O_X86_64_PCREL32_2: howto manager. (line 2479) -* BFD_RELOC_MACH_O_X86_64_PCREL32_4: howto manager. (line 2481) -* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32: howto manager. (line 2473) -* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64: howto manager. (line 2475) -* BFD_RELOC_MCORE_PCREL_32: howto manager. (line 1477) -* BFD_RELOC_MCORE_PCREL_IMM11BY2: howto manager. (line 1475) -* BFD_RELOC_MCORE_PCREL_IMM4BY2: howto manager. (line 1476) -* BFD_RELOC_MCORE_PCREL_IMM8BY4: howto manager. (line 1474) -* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2: howto manager. (line 1478) -* BFD_RELOC_MCORE_RVA: howto manager. (line 1479) -* BFD_RELOC_MEP_16: howto manager. (line 1482) -* BFD_RELOC_MEP_32: howto manager. (line 1483) -* BFD_RELOC_MEP_8: howto manager. (line 1481) -* BFD_RELOC_MEP_ADDR24A4: howto manager. (line 1498) -* BFD_RELOC_MEP_GNU_VTENTRY: howto manager. (line 1500) -* BFD_RELOC_MEP_GNU_VTINHERIT: howto manager. (line 1499) -* BFD_RELOC_MEP_GPREL: howto manager. (line 1492) -* BFD_RELOC_MEP_HI16S: howto manager. (line 1491) -* BFD_RELOC_MEP_HI16U: howto manager. (line 1490) -* BFD_RELOC_MEP_LOW16: howto manager. (line 1489) -* BFD_RELOC_MEP_PCABS24A2: howto manager. (line 1488) -* BFD_RELOC_MEP_PCREL12A2: howto manager. (line 1485) -* BFD_RELOC_MEP_PCREL17A2: howto manager. (line 1486) -* BFD_RELOC_MEP_PCREL24A2: howto manager. (line 1487) -* BFD_RELOC_MEP_PCREL8A2: howto manager. (line 1484) -* BFD_RELOC_MEP_TPREL: howto manager. (line 1493) -* BFD_RELOC_MEP_TPREL7: howto manager. (line 1494) -* BFD_RELOC_MEP_TPREL7A2: howto manager. (line 1495) -* BFD_RELOC_MEP_TPREL7A4: howto manager. (line 1496) -* BFD_RELOC_MEP_UIMM24: howto manager. (line 1497) -* BFD_RELOC_METAG_COPY: howto manager. (line 1521) -* BFD_RELOC_METAG_GETSETOFF: howto manager. (line 1505) -* BFD_RELOC_METAG_GETSET_GOT: howto manager. (line 1513) -* BFD_RELOC_METAG_GETSET_GOTOFF: howto manager. (line 1512) -* BFD_RELOC_METAG_GLOB_DAT: howto manager. (line 1524) -* BFD_RELOC_METAG_GOTOFF: howto manager. (line 1519) -* BFD_RELOC_METAG_HI16_GOTOFF: howto manager. (line 1510) -* BFD_RELOC_METAG_HI16_GOTPC: howto manager. (line 1514) -* BFD_RELOC_METAG_HI16_PLT: howto manager. (line 1516) -* BFD_RELOC_METAG_HIADDR16: howto manager. (line 1502) -* BFD_RELOC_METAG_HIOG: howto manager. (line 1506) -* BFD_RELOC_METAG_JMP_SLOT: howto manager. (line 1522) -* BFD_RELOC_METAG_LO16_GOTOFF: howto manager. (line 1511) -* BFD_RELOC_METAG_LO16_GOTPC: howto manager. (line 1515) -* BFD_RELOC_METAG_LO16_PLT: howto manager. (line 1517) -* BFD_RELOC_METAG_LOADDR16: howto manager. (line 1503) -* BFD_RELOC_METAG_LOOG: howto manager. (line 1507) -* BFD_RELOC_METAG_PLT: howto manager. (line 1520) -* BFD_RELOC_METAG_REL16: howto manager. (line 1509) -* BFD_RELOC_METAG_REL8: howto manager. (line 1508) -* BFD_RELOC_METAG_RELATIVE: howto manager. (line 1523) -* BFD_RELOC_METAG_RELBRANCH: howto manager. (line 1504) -* BFD_RELOC_METAG_RELBRANCH_PLT: howto manager. (line 1518) -* BFD_RELOC_METAG_TLS_DTPMOD: howto manager. (line 1535) -* BFD_RELOC_METAG_TLS_DTPOFF: howto manager. (line 1536) -* BFD_RELOC_METAG_TLS_GD: howto manager. (line 1525) -* BFD_RELOC_METAG_TLS_IE: howto manager. (line 1530) -* BFD_RELOC_METAG_TLS_IENONPIC: howto manager. (line 1531) -* BFD_RELOC_METAG_TLS_IENONPIC_HI16: howto manager. (line 1532) -* BFD_RELOC_METAG_TLS_IENONPIC_LO16: howto manager. (line 1533) -* BFD_RELOC_METAG_TLS_LDM: howto manager. (line 1526) -* BFD_RELOC_METAG_TLS_LDO: howto manager. (line 1529) -* BFD_RELOC_METAG_TLS_LDO_HI16: howto manager. (line 1527) -* BFD_RELOC_METAG_TLS_LDO_LO16: howto manager. (line 1528) -* BFD_RELOC_METAG_TLS_LE: howto manager. (line 1537) -* BFD_RELOC_METAG_TLS_LE_HI16: howto manager. (line 1538) -* BFD_RELOC_METAG_TLS_LE_LO16: howto manager. (line 1539) -* BFD_RELOC_METAG_TLS_TPOFF: howto manager. (line 1534) -* BFD_RELOC_MICROBLAZE_32_GOTOFF: howto manager. (line 2517) -* BFD_RELOC_MICROBLAZE_32_LO: howto manager. (line 2483) -* BFD_RELOC_MICROBLAZE_32_LO_PCREL: howto manager. (line 2486) -* BFD_RELOC_MICROBLAZE_32_ROSDA: howto manager. (line 2489) -* BFD_RELOC_MICROBLAZE_32_RWSDA: howto manager. (line 2492) -* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM: howto manager. (line 2495) -* BFD_RELOC_MICROBLAZE_32_TLSDTPMOD: howto manager. (line 2533) -* BFD_RELOC_MICROBLAZE_32_TLSDTPREL: howto manager. (line 2535) -* BFD_RELOC_MICROBLAZE_64_GOT: howto manager. (line 2506) -* BFD_RELOC_MICROBLAZE_64_GOTOFF: howto manager. (line 2513) -* BFD_RELOC_MICROBLAZE_64_GOTPC: howto manager. (line 2502) -* BFD_RELOC_MICROBLAZE_64_NONE: howto manager. (line 2498) -* BFD_RELOC_MICROBLAZE_64_PLT: howto manager. (line 2509) -* BFD_RELOC_MICROBLAZE_64_TLS: howto manager. (line 2523) -* BFD_RELOC_MICROBLAZE_64_TLSDTPREL: howto manager. (line 2537) -* BFD_RELOC_MICROBLAZE_64_TLSGD: howto manager. (line 2525) -* BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL: howto manager. (line 2540) -* BFD_RELOC_MICROBLAZE_64_TLSLD: howto manager. (line 2529) -* BFD_RELOC_MICROBLAZE_64_TLSTPREL: howto manager. (line 2543) -* BFD_RELOC_MICROBLAZE_COPY: howto manager. (line 2520) +* BFD_RELOC_M32C_HI8: howto manager. (line 1102) +* BFD_RELOC_M32C_RL_1ADDR: howto manager. (line 1104) +* BFD_RELOC_M32C_RL_2ADDR: howto manager. (line 1105) +* BFD_RELOC_M32C_RL_JUMP: howto manager. (line 1103) +* BFD_RELOC_M32R_10_PCREL: howto manager. (line 1110) +* BFD_RELOC_M32R_18_PCREL: howto manager. (line 1113) +* BFD_RELOC_M32R_24: howto manager. (line 1107) +* BFD_RELOC_M32R_26_PCREL: howto manager. (line 1115) +* BFD_RELOC_M32R_26_PLTREL: howto manager. (line 1129) +* BFD_RELOC_M32R_COPY: howto manager. (line 1130) +* BFD_RELOC_M32R_GLOB_DAT: howto manager. (line 1131) +* BFD_RELOC_M32R_GOT16_HI_SLO: howto manager. (line 1140) +* BFD_RELOC_M32R_GOT16_HI_ULO: howto manager. (line 1139) +* BFD_RELOC_M32R_GOT16_LO: howto manager. (line 1141) +* BFD_RELOC_M32R_GOT24: howto manager. (line 1128) +* BFD_RELOC_M32R_GOTOFF: howto manager. (line 1134) +* BFD_RELOC_M32R_GOTOFF_HI_SLO: howto manager. (line 1136) +* BFD_RELOC_M32R_GOTOFF_HI_ULO: howto manager. (line 1135) +* BFD_RELOC_M32R_GOTOFF_LO: howto manager. (line 1137) +* BFD_RELOC_M32R_GOTPC24: howto manager. (line 1138) +* BFD_RELOC_M32R_GOTPC_HI_SLO: howto manager. (line 1143) +* BFD_RELOC_M32R_GOTPC_HI_ULO: howto manager. (line 1142) +* BFD_RELOC_M32R_GOTPC_LO: howto manager. (line 1144) +* BFD_RELOC_M32R_HI16_SLO: howto manager. (line 1120) +* BFD_RELOC_M32R_HI16_ULO: howto manager. (line 1117) +* BFD_RELOC_M32R_JMP_SLOT: howto manager. (line 1132) +* BFD_RELOC_M32R_LO16: howto manager. (line 1123) +* BFD_RELOC_M32R_RELATIVE: howto manager. (line 1133) +* BFD_RELOC_M32R_SDA16: howto manager. (line 1125) +* BFD_RELOC_M68HC11_24: howto manager. (line 2015) +* BFD_RELOC_M68HC11_3B: howto manager. (line 1995) +* BFD_RELOC_M68HC11_HI8: howto manager. (line 1989) +* BFD_RELOC_M68HC11_LO16: howto manager. (line 2006) +* BFD_RELOC_M68HC11_LO8: howto manager. (line 1992) +* BFD_RELOC_M68HC11_PAGE: howto manager. (line 2011) +* BFD_RELOC_M68HC11_RL_GROUP: howto manager. (line 2002) +* BFD_RELOC_M68HC11_RL_JUMP: howto manager. (line 1997) +* BFD_RELOC_M68HC12_10_PCREL: howto manager. (line 2058) +* BFD_RELOC_M68HC12_16B: howto manager. (line 2054) +* BFD_RELOC_M68HC12_5B: howto manager. (line 2020) +* BFD_RELOC_M68HC12_9B: howto manager. (line 2052) +* BFD_RELOC_M68HC12_9_PCREL: howto manager. (line 2056) +* BFD_RELOC_M68HC12_HI8XG: howto manager. (line 2063) +* BFD_RELOC_M68HC12_LO8XG: howto manager. (line 2060) +* BFD_RELOC_MACH_O_LOCAL_SECTDIFF: howto manager. (line 2479) +* BFD_RELOC_MACH_O_PAIR: howto manager. (line 2481) +* BFD_RELOC_MACH_O_SECTDIFF: howto manager. (line 2476) +* BFD_RELOC_MACH_O_X86_64_BRANCH32: howto manager. (line 2483) +* BFD_RELOC_MACH_O_X86_64_BRANCH8: howto manager. (line 2484) +* BFD_RELOC_MACH_O_X86_64_GOT: howto manager. (line 2487) +* BFD_RELOC_MACH_O_X86_64_GOT_LOAD: howto manager. (line 2489) +* BFD_RELOC_MACH_O_X86_64_PCREL32_1: howto manager. (line 2496) +* BFD_RELOC_MACH_O_X86_64_PCREL32_2: howto manager. (line 2498) +* BFD_RELOC_MACH_O_X86_64_PCREL32_4: howto manager. (line 2500) +* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32: howto manager. (line 2492) +* BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64: howto manager. (line 2494) +* BFD_RELOC_MCORE_PCREL_32: howto manager. (line 1482) +* BFD_RELOC_MCORE_PCREL_IMM11BY2: howto manager. (line 1480) +* BFD_RELOC_MCORE_PCREL_IMM4BY2: howto manager. (line 1481) +* BFD_RELOC_MCORE_PCREL_IMM8BY4: howto manager. (line 1479) +* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2: howto manager. (line 1483) +* BFD_RELOC_MCORE_RVA: howto manager. (line 1484) +* BFD_RELOC_MEP_16: howto manager. (line 1487) +* BFD_RELOC_MEP_32: howto manager. (line 1488) +* BFD_RELOC_MEP_8: howto manager. (line 1486) +* BFD_RELOC_MEP_ADDR24A4: howto manager. (line 1503) +* BFD_RELOC_MEP_GNU_VTENTRY: howto manager. (line 1505) +* BFD_RELOC_MEP_GNU_VTINHERIT: howto manager. (line 1504) +* BFD_RELOC_MEP_GPREL: howto manager. (line 1497) +* BFD_RELOC_MEP_HI16S: howto manager. (line 1496) +* BFD_RELOC_MEP_HI16U: howto manager. (line 1495) +* BFD_RELOC_MEP_LOW16: howto manager. (line 1494) +* BFD_RELOC_MEP_PCABS24A2: howto manager. (line 1493) +* BFD_RELOC_MEP_PCREL12A2: howto manager. (line 1490) +* BFD_RELOC_MEP_PCREL17A2: howto manager. (line 1491) +* BFD_RELOC_MEP_PCREL24A2: howto manager. (line 1492) +* BFD_RELOC_MEP_PCREL8A2: howto manager. (line 1489) +* BFD_RELOC_MEP_TPREL: howto manager. (line 1498) +* BFD_RELOC_MEP_TPREL7: howto manager. (line 1499) +* BFD_RELOC_MEP_TPREL7A2: howto manager. (line 1500) +* BFD_RELOC_MEP_TPREL7A4: howto manager. (line 1501) +* BFD_RELOC_MEP_UIMM24: howto manager. (line 1502) +* BFD_RELOC_METAG_COPY: howto manager. (line 1526) +* BFD_RELOC_METAG_GETSETOFF: howto manager. (line 1510) +* BFD_RELOC_METAG_GETSET_GOT: howto manager. (line 1518) +* BFD_RELOC_METAG_GETSET_GOTOFF: howto manager. (line 1517) +* BFD_RELOC_METAG_GLOB_DAT: howto manager. (line 1529) +* BFD_RELOC_METAG_GOTOFF: howto manager. (line 1524) +* BFD_RELOC_METAG_HI16_GOTOFF: howto manager. (line 1515) +* BFD_RELOC_METAG_HI16_GOTPC: howto manager. (line 1519) +* BFD_RELOC_METAG_HI16_PLT: howto manager. (line 1521) +* BFD_RELOC_METAG_HIADDR16: howto manager. (line 1507) +* BFD_RELOC_METAG_HIOG: howto manager. (line 1511) +* BFD_RELOC_METAG_JMP_SLOT: howto manager. (line 1527) +* BFD_RELOC_METAG_LO16_GOTOFF: howto manager. (line 1516) +* BFD_RELOC_METAG_LO16_GOTPC: howto manager. (line 1520) +* BFD_RELOC_METAG_LO16_PLT: howto manager. (line 1522) +* BFD_RELOC_METAG_LOADDR16: howto manager. (line 1508) +* BFD_RELOC_METAG_LOOG: howto manager. (line 1512) +* BFD_RELOC_METAG_PLT: howto manager. (line 1525) +* BFD_RELOC_METAG_REL16: howto manager. (line 1514) +* BFD_RELOC_METAG_REL8: howto manager. (line 1513) +* BFD_RELOC_METAG_RELATIVE: howto manager. (line 1528) +* BFD_RELOC_METAG_RELBRANCH: howto manager. (line 1509) +* BFD_RELOC_METAG_RELBRANCH_PLT: howto manager. (line 1523) +* BFD_RELOC_METAG_TLS_DTPMOD: howto manager. (line 1540) +* BFD_RELOC_METAG_TLS_DTPOFF: howto manager. (line 1541) +* BFD_RELOC_METAG_TLS_GD: howto manager. (line 1530) +* BFD_RELOC_METAG_TLS_IE: howto manager. (line 1535) +* BFD_RELOC_METAG_TLS_IENONPIC: howto manager. (line 1536) +* BFD_RELOC_METAG_TLS_IENONPIC_HI16: howto manager. (line 1537) +* BFD_RELOC_METAG_TLS_IENONPIC_LO16: howto manager. (line 1538) +* BFD_RELOC_METAG_TLS_LDM: howto manager. (line 1531) +* BFD_RELOC_METAG_TLS_LDO: howto manager. (line 1534) +* BFD_RELOC_METAG_TLS_LDO_HI16: howto manager. (line 1532) +* BFD_RELOC_METAG_TLS_LDO_LO16: howto manager. (line 1533) +* BFD_RELOC_METAG_TLS_LE: howto manager. (line 1542) +* BFD_RELOC_METAG_TLS_LE_HI16: howto manager. (line 1543) +* BFD_RELOC_METAG_TLS_LE_LO16: howto manager. (line 1544) +* BFD_RELOC_METAG_TLS_TPOFF: howto manager. (line 1539) +* BFD_RELOC_MICROBLAZE_32_GOTOFF: howto manager. (line 2536) +* BFD_RELOC_MICROBLAZE_32_LO: howto manager. (line 2502) +* BFD_RELOC_MICROBLAZE_32_LO_PCREL: howto manager. (line 2505) +* BFD_RELOC_MICROBLAZE_32_ROSDA: howto manager. (line 2508) +* BFD_RELOC_MICROBLAZE_32_RWSDA: howto manager. (line 2511) +* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM: howto manager. (line 2514) +* BFD_RELOC_MICROBLAZE_32_TLSDTPMOD: howto manager. (line 2552) +* BFD_RELOC_MICROBLAZE_32_TLSDTPREL: howto manager. (line 2554) +* BFD_RELOC_MICROBLAZE_64_GOT: howto manager. (line 2525) +* BFD_RELOC_MICROBLAZE_64_GOTOFF: howto manager. (line 2532) +* BFD_RELOC_MICROBLAZE_64_GOTPC: howto manager. (line 2521) +* BFD_RELOC_MICROBLAZE_64_NONE: howto manager. (line 2517) +* BFD_RELOC_MICROBLAZE_64_PLT: howto manager. (line 2528) +* BFD_RELOC_MICROBLAZE_64_TLS: howto manager. (line 2542) +* BFD_RELOC_MICROBLAZE_64_TLSDTPREL: howto manager. (line 2556) +* BFD_RELOC_MICROBLAZE_64_TLSGD: howto manager. (line 2544) +* BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL: howto manager. (line 2559) +* BFD_RELOC_MICROBLAZE_64_TLSLD: howto manager. (line 2548) +* BFD_RELOC_MICROBLAZE_64_TLSTPREL: howto manager. (line 2562) +* BFD_RELOC_MICROBLAZE_COPY: howto manager. (line 2539) * BFD_RELOC_MICROMIPS_10_PCREL_S1: howto manager. (line 356) * BFD_RELOC_MICROMIPS_16_PCREL_S1: howto manager. (line 357) * BFD_RELOC_MICROMIPS_7_PCREL_S1: howto manager. (line 355) @@ -12054,570 +12188,584 @@ BFD Index * BFD_RELOC_MIPS_TLS_TPREL64: howto manager. (line 419) * BFD_RELOC_MIPS_TLS_TPREL_HI16: howto manager. (line 420) * BFD_RELOC_MIPS_TLS_TPREL_LO16: howto manager. (line 422) -* BFD_RELOC_MMIX_ADDR19: howto manager. (line 1563) -* BFD_RELOC_MMIX_ADDR27: howto manager. (line 1566) -* BFD_RELOC_MMIX_BASE_PLUS_OFFSET: howto manager. (line 1575) -* BFD_RELOC_MMIX_CBRANCH: howto manager. (line 1546) -* BFD_RELOC_MMIX_CBRANCH_1: howto manager. (line 1548) -* BFD_RELOC_MMIX_CBRANCH_2: howto manager. (line 1549) -* BFD_RELOC_MMIX_CBRANCH_3: howto manager. (line 1550) -* BFD_RELOC_MMIX_CBRANCH_J: howto manager. (line 1547) -* BFD_RELOC_MMIX_GETA: howto manager. (line 1541) -* BFD_RELOC_MMIX_GETA_1: howto manager. (line 1542) -* BFD_RELOC_MMIX_GETA_2: howto manager. (line 1543) -* BFD_RELOC_MMIX_GETA_3: howto manager. (line 1544) -* BFD_RELOC_MMIX_JMP: howto manager. (line 1558) -* BFD_RELOC_MMIX_JMP_1: howto manager. (line 1559) -* BFD_RELOC_MMIX_JMP_2: howto manager. (line 1560) -* BFD_RELOC_MMIX_JMP_3: howto manager. (line 1561) -* BFD_RELOC_MMIX_LOCAL: howto manager. (line 1578) -* BFD_RELOC_MMIX_PUSHJ: howto manager. (line 1552) -* BFD_RELOC_MMIX_PUSHJ_1: howto manager. (line 1553) -* BFD_RELOC_MMIX_PUSHJ_2: howto manager. (line 1554) -* BFD_RELOC_MMIX_PUSHJ_3: howto manager. (line 1555) -* BFD_RELOC_MMIX_PUSHJ_STUBBABLE: howto manager. (line 1556) -* BFD_RELOC_MMIX_REG: howto manager. (line 1572) -* BFD_RELOC_MMIX_REG_OR_BYTE: howto manager. (line 1569) -* BFD_RELOC_MN10300_16_PCREL: howto manager. (line 510) -* BFD_RELOC_MN10300_32_PCREL: howto manager. (line 507) -* BFD_RELOC_MN10300_ALIGN: howto manager. (line 494) -* BFD_RELOC_MN10300_COPY: howto manager. (line 482) -* BFD_RELOC_MN10300_GLOB_DAT: howto manager. (line 484) -* BFD_RELOC_MN10300_GOT16: howto manager. (line 479) -* BFD_RELOC_MN10300_GOT24: howto manager. (line 476) -* BFD_RELOC_MN10300_GOT32: howto manager. (line 473) -* BFD_RELOC_MN10300_GOTOFF24: howto manager. (line 471) -* BFD_RELOC_MN10300_JMP_SLOT: howto manager. (line 486) -* BFD_RELOC_MN10300_RELATIVE: howto manager. (line 488) -* BFD_RELOC_MN10300_SYM_DIFF: howto manager. (line 490) -* BFD_RELOC_MN10300_TLS_DTPMOD: howto manager. (line 503) -* BFD_RELOC_MN10300_TLS_DTPOFF: howto manager. (line 504) -* BFD_RELOC_MN10300_TLS_GD: howto manager. (line 497) -* BFD_RELOC_MN10300_TLS_GOTIE: howto manager. (line 500) -* BFD_RELOC_MN10300_TLS_IE: howto manager. (line 501) -* BFD_RELOC_MN10300_TLS_LD: howto manager. (line 498) -* BFD_RELOC_MN10300_TLS_LDO: howto manager. (line 499) -* BFD_RELOC_MN10300_TLS_LE: howto manager. (line 502) -* BFD_RELOC_MN10300_TLS_TPOFF: howto manager. (line 505) +* BFD_RELOC_MMIX_ADDR19: howto manager. (line 1568) +* BFD_RELOC_MMIX_ADDR27: howto manager. (line 1571) +* BFD_RELOC_MMIX_BASE_PLUS_OFFSET: howto manager. (line 1580) +* BFD_RELOC_MMIX_CBRANCH: howto manager. (line 1551) +* BFD_RELOC_MMIX_CBRANCH_1: howto manager. (line 1553) +* BFD_RELOC_MMIX_CBRANCH_2: howto manager. (line 1554) +* BFD_RELOC_MMIX_CBRANCH_3: howto manager. (line 1555) +* BFD_RELOC_MMIX_CBRANCH_J: howto manager. (line 1552) +* BFD_RELOC_MMIX_GETA: howto manager. (line 1546) +* BFD_RELOC_MMIX_GETA_1: howto manager. (line 1547) +* BFD_RELOC_MMIX_GETA_2: howto manager. (line 1548) +* BFD_RELOC_MMIX_GETA_3: howto manager. (line 1549) +* BFD_RELOC_MMIX_JMP: howto manager. (line 1563) +* BFD_RELOC_MMIX_JMP_1: howto manager. (line 1564) +* BFD_RELOC_MMIX_JMP_2: howto manager. (line 1565) +* BFD_RELOC_MMIX_JMP_3: howto manager. (line 1566) +* BFD_RELOC_MMIX_LOCAL: howto manager. (line 1583) +* BFD_RELOC_MMIX_PUSHJ: howto manager. (line 1557) +* BFD_RELOC_MMIX_PUSHJ_1: howto manager. (line 1558) +* BFD_RELOC_MMIX_PUSHJ_2: howto manager. (line 1559) +* BFD_RELOC_MMIX_PUSHJ_3: howto manager. (line 1560) +* BFD_RELOC_MMIX_PUSHJ_STUBBABLE: howto manager. (line 1561) +* BFD_RELOC_MMIX_REG: howto manager. (line 1577) +* BFD_RELOC_MMIX_REG_OR_BYTE: howto manager. (line 1574) +* BFD_RELOC_MN10300_16_PCREL: howto manager. (line 515) +* BFD_RELOC_MN10300_32_PCREL: howto manager. (line 512) +* BFD_RELOC_MN10300_ALIGN: howto manager. (line 499) +* BFD_RELOC_MN10300_COPY: howto manager. (line 487) +* BFD_RELOC_MN10300_GLOB_DAT: howto manager. (line 489) +* BFD_RELOC_MN10300_GOT16: howto manager. (line 484) +* BFD_RELOC_MN10300_GOT24: howto manager. (line 481) +* BFD_RELOC_MN10300_GOT32: howto manager. (line 478) +* BFD_RELOC_MN10300_GOTOFF24: howto manager. (line 476) +* BFD_RELOC_MN10300_JMP_SLOT: howto manager. (line 491) +* BFD_RELOC_MN10300_RELATIVE: howto manager. (line 493) +* BFD_RELOC_MN10300_SYM_DIFF: howto manager. (line 495) +* BFD_RELOC_MN10300_TLS_DTPMOD: howto manager. (line 508) +* BFD_RELOC_MN10300_TLS_DTPOFF: howto manager. (line 509) +* BFD_RELOC_MN10300_TLS_GD: howto manager. (line 502) +* BFD_RELOC_MN10300_TLS_GOTIE: howto manager. (line 505) +* BFD_RELOC_MN10300_TLS_IE: howto manager. (line 506) +* BFD_RELOC_MN10300_TLS_LD: howto manager. (line 503) +* BFD_RELOC_MN10300_TLS_LDO: howto manager. (line 504) +* BFD_RELOC_MN10300_TLS_LE: howto manager. (line 507) +* BFD_RELOC_MN10300_TLS_TPOFF: howto manager. (line 510) * BFD_RELOC_MOXIE_10_PCREL: howto manager. (line 429) -* BFD_RELOC_MSP430X_ABS16: howto manager. (line 2312) -* BFD_RELOC_MSP430X_ABS20_ADR_DST: howto manager. (line 2309) -* BFD_RELOC_MSP430X_ABS20_ADR_SRC: howto manager. (line 2308) -* BFD_RELOC_MSP430X_ABS20_EXT_DST: howto manager. (line 2306) -* BFD_RELOC_MSP430X_ABS20_EXT_ODST: howto manager. (line 2307) -* BFD_RELOC_MSP430X_ABS20_EXT_SRC: howto manager. (line 2305) -* BFD_RELOC_MSP430X_PCR16: howto manager. (line 2310) -* BFD_RELOC_MSP430X_PCR20_CALL: howto manager. (line 2311) -* BFD_RELOC_MSP430X_PCR20_EXT_DST: howto manager. (line 2303) -* BFD_RELOC_MSP430X_PCR20_EXT_ODST: howto manager. (line 2304) -* BFD_RELOC_MSP430X_PCR20_EXT_SRC: howto manager. (line 2302) -* BFD_RELOC_MSP430_10_PCREL: howto manager. (line 2294) -* BFD_RELOC_MSP430_16: howto manager. (line 2296) -* BFD_RELOC_MSP430_16_BYTE: howto manager. (line 2298) -* BFD_RELOC_MSP430_16_PCREL: howto manager. (line 2295) -* BFD_RELOC_MSP430_16_PCREL_BYTE: howto manager. (line 2297) -* BFD_RELOC_MSP430_2X_PCREL: howto manager. (line 2299) -* BFD_RELOC_MSP430_ABS8: howto manager. (line 2301) -* BFD_RELOC_MSP430_ABS_HI16: howto manager. (line 2313) -* BFD_RELOC_MSP430_PREL31: howto manager. (line 2314) -* BFD_RELOC_MSP430_RL_PCREL: howto manager. (line 2300) -* BFD_RELOC_MSP430_SYM_DIFF: howto manager. (line 2315) -* BFD_RELOC_MT_GNU_VTENTRY: howto manager. (line 2290) -* BFD_RELOC_MT_GNU_VTINHERIT: howto manager. (line 2288) -* BFD_RELOC_MT_HI16: howto manager. (line 2284) -* BFD_RELOC_MT_LO16: howto manager. (line 2286) -* BFD_RELOC_MT_PC16: howto manager. (line 2282) -* BFD_RELOC_MT_PCINSN8: howto manager. (line 2292) -* BFD_RELOC_NDS32_10IFCU_PCREL: howto manager. (line 1291) -* BFD_RELOC_NDS32_10_UPCREL: howto manager. (line 1262) -* BFD_RELOC_NDS32_15_FIXED: howto manager. (line 1223) -* BFD_RELOC_NDS32_15_PCREL: howto manager. (line 1149) -* BFD_RELOC_NDS32_17IFC_PCREL: howto manager. (line 1290) -* BFD_RELOC_NDS32_17_FIXED: howto manager. (line 1224) -* BFD_RELOC_NDS32_17_PCREL: howto manager. (line 1151) -* BFD_RELOC_NDS32_20: howto manager. (line 1141) -* BFD_RELOC_NDS32_25_ABS: howto manager. (line 1286) -* BFD_RELOC_NDS32_25_FIXED: howto manager. (line 1225) -* BFD_RELOC_NDS32_25_PCREL: howto manager. (line 1153) -* BFD_RELOC_NDS32_25_PLTREL: howto manager. (line 1199) -* BFD_RELOC_NDS32_5: howto manager. (line 1260) -* BFD_RELOC_NDS32_9_FIXED: howto manager. (line 1222) -* BFD_RELOC_NDS32_9_PCREL: howto manager. (line 1143) -* BFD_RELOC_NDS32_9_PLTREL: howto manager. (line 1198) -* BFD_RELOC_NDS32_COPY: howto manager. (line 1200) -* BFD_RELOC_NDS32_DATA: howto manager. (line 1288) -* BFD_RELOC_NDS32_DIFF16: howto manager. (line 1281) -* BFD_RELOC_NDS32_DIFF32: howto manager. (line 1282) -* BFD_RELOC_NDS32_DIFF8: howto manager. (line 1280) -* BFD_RELOC_NDS32_DIFF_ULEB128: howto manager. (line 1283) -* BFD_RELOC_NDS32_DWARF2_LEB: howto manager. (line 1246) -* BFD_RELOC_NDS32_DWARF2_OP1: howto manager. (line 1244) -* BFD_RELOC_NDS32_DWARF2_OP2: howto manager. (line 1245) -* BFD_RELOC_NDS32_EMPTY: howto manager. (line 1284) -* BFD_RELOC_NDS32_GLOB_DAT: howto manager. (line 1201) -* BFD_RELOC_NDS32_GOT15S2: howto manager. (line 1257) -* BFD_RELOC_NDS32_GOT17S2: howto manager. (line 1258) -* BFD_RELOC_NDS32_GOT20: howto manager. (line 1197) -* BFD_RELOC_NDS32_GOTOFF: howto manager. (line 1204) -* BFD_RELOC_NDS32_GOTOFF_HI20: howto manager. (line 1205) -* BFD_RELOC_NDS32_GOTOFF_LO12: howto manager. (line 1206) -* BFD_RELOC_NDS32_GOTOFF_LO15: howto manager. (line 1255) -* BFD_RELOC_NDS32_GOTOFF_LO19: howto manager. (line 1256) -* BFD_RELOC_NDS32_GOTOFF_SUFF: howto manager. (line 1269) -* BFD_RELOC_NDS32_GOTPC20: howto manager. (line 1207) -* BFD_RELOC_NDS32_GOTPC_HI20: howto manager. (line 1210) -* BFD_RELOC_NDS32_GOTPC_LO12: howto manager. (line 1211) -* BFD_RELOC_NDS32_GOTTPOFF: howto manager. (line 1298) -* BFD_RELOC_NDS32_GOT_HI20: howto manager. (line 1208) -* BFD_RELOC_NDS32_GOT_LO12: howto manager. (line 1209) -* BFD_RELOC_NDS32_GOT_LO15: howto manager. (line 1253) -* BFD_RELOC_NDS32_GOT_LO19: howto manager. (line 1254) -* BFD_RELOC_NDS32_GOT_SUFF: howto manager. (line 1268) -* BFD_RELOC_NDS32_HI20: howto manager. (line 1155) -* BFD_RELOC_NDS32_INSN16: howto manager. (line 1213) -* BFD_RELOC_NDS32_JMP_SLOT: howto manager. (line 1202) -* BFD_RELOC_NDS32_LABEL: howto manager. (line 1214) -* BFD_RELOC_NDS32_LO12S0: howto manager. (line 1167) -* BFD_RELOC_NDS32_LO12S0_ORI: howto manager. (line 1170) -* BFD_RELOC_NDS32_LO12S1: howto manager. (line 1164) -* BFD_RELOC_NDS32_LO12S2: howto manager. (line 1161) -* BFD_RELOC_NDS32_LO12S2_DP: howto manager. (line 1241) -* BFD_RELOC_NDS32_LO12S2_SP: howto manager. (line 1242) -* BFD_RELOC_NDS32_LO12S3: howto manager. (line 1158) -* BFD_RELOC_NDS32_LOADSTORE: howto manager. (line 1221) -* BFD_RELOC_NDS32_LONGCALL1: howto manager. (line 1215) -* BFD_RELOC_NDS32_LONGCALL2: howto manager. (line 1216) -* BFD_RELOC_NDS32_LONGCALL3: howto manager. (line 1217) -* BFD_RELOC_NDS32_LONGCALL4: howto manager. (line 1226) -* BFD_RELOC_NDS32_LONGCALL5: howto manager. (line 1227) -* BFD_RELOC_NDS32_LONGCALL6: howto manager. (line 1228) -* BFD_RELOC_NDS32_LONGJUMP1: howto manager. (line 1218) -* BFD_RELOC_NDS32_LONGJUMP2: howto manager. (line 1219) -* BFD_RELOC_NDS32_LONGJUMP3: howto manager. (line 1220) -* BFD_RELOC_NDS32_LONGJUMP4: howto manager. (line 1229) -* BFD_RELOC_NDS32_LONGJUMP5: howto manager. (line 1230) -* BFD_RELOC_NDS32_LONGJUMP6: howto manager. (line 1231) -* BFD_RELOC_NDS32_LONGJUMP7: howto manager. (line 1232) -* BFD_RELOC_NDS32_MINUEND: howto manager. (line 1278) -* BFD_RELOC_NDS32_MULCALL_SUFF: howto manager. (line 1271) -* BFD_RELOC_NDS32_PLTBLOCK: howto manager. (line 1275) -* BFD_RELOC_NDS32_PLTREL_HI20: howto manager. (line 1234) -* BFD_RELOC_NDS32_PLTREL_LO12: howto manager. (line 1235) -* BFD_RELOC_NDS32_PLT_GOTREL_HI20: howto manager. (line 1236) -* BFD_RELOC_NDS32_PLT_GOTREL_LO12: howto manager. (line 1237) -* BFD_RELOC_NDS32_PLT_GOTREL_LO15: howto manager. (line 1251) -* BFD_RELOC_NDS32_PLT_GOTREL_LO19: howto manager. (line 1252) -* BFD_RELOC_NDS32_PLT_GOTREL_LO20: howto manager. (line 1250) -* BFD_RELOC_NDS32_PLT_GOT_SUFF: howto manager. (line 1270) -* BFD_RELOC_NDS32_PTR: howto manager. (line 1272) -* BFD_RELOC_NDS32_PTR_COUNT: howto manager. (line 1273) -* BFD_RELOC_NDS32_PTR_RESOLVED: howto manager. (line 1274) -* BFD_RELOC_NDS32_RELATIVE: howto manager. (line 1203) -* BFD_RELOC_NDS32_RELAX_ENTRY: howto manager. (line 1267) -* BFD_RELOC_NDS32_RELAX_REGION_BEGIN: howto manager. (line 1276) -* BFD_RELOC_NDS32_RELAX_REGION_END: howto manager. (line 1277) -* BFD_RELOC_NDS32_SDA12S2_DP: howto manager. (line 1239) -* BFD_RELOC_NDS32_SDA12S2_SP: howto manager. (line 1240) -* BFD_RELOC_NDS32_SDA15S0: howto manager. (line 1182) -* BFD_RELOC_NDS32_SDA15S1: howto manager. (line 1179) -* BFD_RELOC_NDS32_SDA15S2: howto manager. (line 1176) -* BFD_RELOC_NDS32_SDA15S3: howto manager. (line 1173) -* BFD_RELOC_NDS32_SDA16S3: howto manager. (line 1185) -* BFD_RELOC_NDS32_SDA17S2: howto manager. (line 1188) -* BFD_RELOC_NDS32_SDA18S1: howto manager. (line 1191) -* BFD_RELOC_NDS32_SDA19S0: howto manager. (line 1194) -* BFD_RELOC_NDS32_SDA_FP7U2_RELA: howto manager. (line 1265) -* BFD_RELOC_NDS32_SUBTRAHEND: howto manager. (line 1279) -* BFD_RELOC_NDS32_TLS_IE_HI20: howto manager. (line 1299) -* BFD_RELOC_NDS32_TLS_IE_LO12S2: howto manager. (line 1300) -* BFD_RELOC_NDS32_TLS_LE_15S0: howto manager. (line 1303) -* BFD_RELOC_NDS32_TLS_LE_15S1: howto manager. (line 1304) -* BFD_RELOC_NDS32_TLS_LE_15S2: howto manager. (line 1305) -* BFD_RELOC_NDS32_TLS_LE_20: howto manager. (line 1302) -* BFD_RELOC_NDS32_TLS_LE_ADD: howto manager. (line 1296) -* BFD_RELOC_NDS32_TLS_LE_HI20: howto manager. (line 1294) -* BFD_RELOC_NDS32_TLS_LE_LO12: howto manager. (line 1295) -* BFD_RELOC_NDS32_TLS_LE_LS: howto manager. (line 1297) -* BFD_RELOC_NDS32_TLS_TPOFF: howto manager. (line 1301) -* BFD_RELOC_NDS32_TPOFF: howto manager. (line 1293) -* BFD_RELOC_NDS32_TRAN: howto manager. (line 1289) -* BFD_RELOC_NDS32_UPDATE_TA: howto manager. (line 1248) -* BFD_RELOC_NDS32_WORD_9_PCREL: howto manager. (line 1146) -* BFD_RELOC_NIOS2_ALIGN: howto manager. (line 2331) -* BFD_RELOC_NIOS2_CACHE_OPX: howto manager. (line 2321) -* BFD_RELOC_NIOS2_CALL16: howto manager. (line 2333) -* BFD_RELOC_NIOS2_CALL26: howto manager. (line 2319) -* BFD_RELOC_NIOS2_CALL26_NOAT: howto manager. (line 2351) -* BFD_RELOC_NIOS2_CALLR: howto manager. (line 2330) -* BFD_RELOC_NIOS2_CALL_HA: howto manager. (line 2355) -* BFD_RELOC_NIOS2_CALL_LO: howto manager. (line 2354) -* BFD_RELOC_NIOS2_CJMP: howto manager. (line 2329) -* BFD_RELOC_NIOS2_COPY: howto manager. (line 2346) -* BFD_RELOC_NIOS2_GLOB_DAT: howto manager. (line 2347) -* BFD_RELOC_NIOS2_GOT16: howto manager. (line 2332) -* BFD_RELOC_NIOS2_GOTOFF: howto manager. (line 2350) -* BFD_RELOC_NIOS2_GOTOFF_HA: howto manager. (line 2335) -* BFD_RELOC_NIOS2_GOTOFF_LO: howto manager. (line 2334) -* BFD_RELOC_NIOS2_GOT_HA: howto manager. (line 2353) -* BFD_RELOC_NIOS2_GOT_LO: howto manager. (line 2352) -* BFD_RELOC_NIOS2_GPREL: howto manager. (line 2327) -* BFD_RELOC_NIOS2_HI16: howto manager. (line 2324) -* BFD_RELOC_NIOS2_HIADJ16: howto manager. (line 2326) -* BFD_RELOC_NIOS2_IMM5: howto manager. (line 2320) -* BFD_RELOC_NIOS2_IMM6: howto manager. (line 2322) -* BFD_RELOC_NIOS2_IMM8: howto manager. (line 2323) -* BFD_RELOC_NIOS2_JUMP_SLOT: howto manager. (line 2348) -* BFD_RELOC_NIOS2_LO16: howto manager. (line 2325) -* BFD_RELOC_NIOS2_PCREL_HA: howto manager. (line 2337) -* BFD_RELOC_NIOS2_PCREL_LO: howto manager. (line 2336) -* BFD_RELOC_NIOS2_RELATIVE: howto manager. (line 2349) -* BFD_RELOC_NIOS2_S16: howto manager. (line 2317) -* BFD_RELOC_NIOS2_TLS_DTPMOD: howto manager. (line 2343) -* BFD_RELOC_NIOS2_TLS_DTPREL: howto manager. (line 2344) -* BFD_RELOC_NIOS2_TLS_GD16: howto manager. (line 2338) -* BFD_RELOC_NIOS2_TLS_IE16: howto manager. (line 2341) -* BFD_RELOC_NIOS2_TLS_LDM16: howto manager. (line 2339) -* BFD_RELOC_NIOS2_TLS_LDO16: howto manager. (line 2340) -* BFD_RELOC_NIOS2_TLS_LE16: howto manager. (line 2342) -* BFD_RELOC_NIOS2_TLS_TPREL: howto manager. (line 2345) -* BFD_RELOC_NIOS2_U16: howto manager. (line 2318) -* BFD_RELOC_NIOS2_UJMP: howto manager. (line 2328) +* BFD_RELOC_MSP430X_ABS16: howto manager. (line 2318) +* BFD_RELOC_MSP430X_ABS20_ADR_DST: howto manager. (line 2315) +* BFD_RELOC_MSP430X_ABS20_ADR_SRC: howto manager. (line 2314) +* BFD_RELOC_MSP430X_ABS20_EXT_DST: howto manager. (line 2312) +* BFD_RELOC_MSP430X_ABS20_EXT_ODST: howto manager. (line 2313) +* BFD_RELOC_MSP430X_ABS20_EXT_SRC: howto manager. (line 2311) +* BFD_RELOC_MSP430X_PCR16: howto manager. (line 2316) +* BFD_RELOC_MSP430X_PCR20_CALL: howto manager. (line 2317) +* BFD_RELOC_MSP430X_PCR20_EXT_DST: howto manager. (line 2309) +* BFD_RELOC_MSP430X_PCR20_EXT_ODST: howto manager. (line 2310) +* BFD_RELOC_MSP430X_PCR20_EXT_SRC: howto manager. (line 2308) +* BFD_RELOC_MSP430_10_PCREL: howto manager. (line 2300) +* BFD_RELOC_MSP430_16: howto manager. (line 2302) +* BFD_RELOC_MSP430_16_BYTE: howto manager. (line 2304) +* BFD_RELOC_MSP430_16_PCREL: howto manager. (line 2301) +* BFD_RELOC_MSP430_16_PCREL_BYTE: howto manager. (line 2303) +* BFD_RELOC_MSP430_2X_PCREL: howto manager. (line 2305) +* BFD_RELOC_MSP430_ABS8: howto manager. (line 2307) +* BFD_RELOC_MSP430_ABS_HI16: howto manager. (line 2319) +* BFD_RELOC_MSP430_PREL31: howto manager. (line 2320) +* BFD_RELOC_MSP430_RL_PCREL: howto manager. (line 2306) +* BFD_RELOC_MSP430_SYM_DIFF: howto manager. (line 2321) +* BFD_RELOC_MT_GNU_VTENTRY: howto manager. (line 2296) +* BFD_RELOC_MT_GNU_VTINHERIT: howto manager. (line 2294) +* BFD_RELOC_MT_HI16: howto manager. (line 2290) +* BFD_RELOC_MT_LO16: howto manager. (line 2292) +* BFD_RELOC_MT_PC16: howto manager. (line 2288) +* BFD_RELOC_MT_PCINSN8: howto manager. (line 2298) +* BFD_RELOC_NDS32_10IFCU_PCREL: howto manager. (line 1296) +* BFD_RELOC_NDS32_10_UPCREL: howto manager. (line 1267) +* BFD_RELOC_NDS32_15_FIXED: howto manager. (line 1228) +* BFD_RELOC_NDS32_15_PCREL: howto manager. (line 1154) +* BFD_RELOC_NDS32_17IFC_PCREL: howto manager. (line 1295) +* BFD_RELOC_NDS32_17_FIXED: howto manager. (line 1229) +* BFD_RELOC_NDS32_17_PCREL: howto manager. (line 1156) +* BFD_RELOC_NDS32_20: howto manager. (line 1146) +* BFD_RELOC_NDS32_25_ABS: howto manager. (line 1291) +* BFD_RELOC_NDS32_25_FIXED: howto manager. (line 1230) +* BFD_RELOC_NDS32_25_PCREL: howto manager. (line 1158) +* BFD_RELOC_NDS32_25_PLTREL: howto manager. (line 1204) +* BFD_RELOC_NDS32_5: howto manager. (line 1265) +* BFD_RELOC_NDS32_9_FIXED: howto manager. (line 1227) +* BFD_RELOC_NDS32_9_PCREL: howto manager. (line 1148) +* BFD_RELOC_NDS32_9_PLTREL: howto manager. (line 1203) +* BFD_RELOC_NDS32_COPY: howto manager. (line 1205) +* BFD_RELOC_NDS32_DATA: howto manager. (line 1293) +* BFD_RELOC_NDS32_DIFF16: howto manager. (line 1286) +* BFD_RELOC_NDS32_DIFF32: howto manager. (line 1287) +* BFD_RELOC_NDS32_DIFF8: howto manager. (line 1285) +* BFD_RELOC_NDS32_DIFF_ULEB128: howto manager. (line 1288) +* BFD_RELOC_NDS32_DWARF2_LEB: howto manager. (line 1251) +* BFD_RELOC_NDS32_DWARF2_OP1: howto manager. (line 1249) +* BFD_RELOC_NDS32_DWARF2_OP2: howto manager. (line 1250) +* BFD_RELOC_NDS32_EMPTY: howto manager. (line 1289) +* BFD_RELOC_NDS32_GLOB_DAT: howto manager. (line 1206) +* BFD_RELOC_NDS32_GOT15S2: howto manager. (line 1262) +* BFD_RELOC_NDS32_GOT17S2: howto manager. (line 1263) +* BFD_RELOC_NDS32_GOT20: howto manager. (line 1202) +* BFD_RELOC_NDS32_GOTOFF: howto manager. (line 1209) +* BFD_RELOC_NDS32_GOTOFF_HI20: howto manager. (line 1210) +* BFD_RELOC_NDS32_GOTOFF_LO12: howto manager. (line 1211) +* BFD_RELOC_NDS32_GOTOFF_LO15: howto manager. (line 1260) +* BFD_RELOC_NDS32_GOTOFF_LO19: howto manager. (line 1261) +* BFD_RELOC_NDS32_GOTOFF_SUFF: howto manager. (line 1274) +* BFD_RELOC_NDS32_GOTPC20: howto manager. (line 1212) +* BFD_RELOC_NDS32_GOTPC_HI20: howto manager. (line 1215) +* BFD_RELOC_NDS32_GOTPC_LO12: howto manager. (line 1216) +* BFD_RELOC_NDS32_GOTTPOFF: howto manager. (line 1303) +* BFD_RELOC_NDS32_GOT_HI20: howto manager. (line 1213) +* BFD_RELOC_NDS32_GOT_LO12: howto manager. (line 1214) +* BFD_RELOC_NDS32_GOT_LO15: howto manager. (line 1258) +* BFD_RELOC_NDS32_GOT_LO19: howto manager. (line 1259) +* BFD_RELOC_NDS32_GOT_SUFF: howto manager. (line 1273) +* BFD_RELOC_NDS32_HI20: howto manager. (line 1160) +* BFD_RELOC_NDS32_INSN16: howto manager. (line 1218) +* BFD_RELOC_NDS32_JMP_SLOT: howto manager. (line 1207) +* BFD_RELOC_NDS32_LABEL: howto manager. (line 1219) +* BFD_RELOC_NDS32_LO12S0: howto manager. (line 1172) +* BFD_RELOC_NDS32_LO12S0_ORI: howto manager. (line 1175) +* BFD_RELOC_NDS32_LO12S1: howto manager. (line 1169) +* BFD_RELOC_NDS32_LO12S2: howto manager. (line 1166) +* BFD_RELOC_NDS32_LO12S2_DP: howto manager. (line 1246) +* BFD_RELOC_NDS32_LO12S2_SP: howto manager. (line 1247) +* BFD_RELOC_NDS32_LO12S3: howto manager. (line 1163) +* BFD_RELOC_NDS32_LOADSTORE: howto manager. (line 1226) +* BFD_RELOC_NDS32_LONGCALL1: howto manager. (line 1220) +* BFD_RELOC_NDS32_LONGCALL2: howto manager. (line 1221) +* BFD_RELOC_NDS32_LONGCALL3: howto manager. (line 1222) +* BFD_RELOC_NDS32_LONGCALL4: howto manager. (line 1231) +* BFD_RELOC_NDS32_LONGCALL5: howto manager. (line 1232) +* BFD_RELOC_NDS32_LONGCALL6: howto manager. (line 1233) +* BFD_RELOC_NDS32_LONGJUMP1: howto manager. (line 1223) +* BFD_RELOC_NDS32_LONGJUMP2: howto manager. (line 1224) +* BFD_RELOC_NDS32_LONGJUMP3: howto manager. (line 1225) +* BFD_RELOC_NDS32_LONGJUMP4: howto manager. (line 1234) +* BFD_RELOC_NDS32_LONGJUMP5: howto manager. (line 1235) +* BFD_RELOC_NDS32_LONGJUMP6: howto manager. (line 1236) +* BFD_RELOC_NDS32_LONGJUMP7: howto manager. (line 1237) +* BFD_RELOC_NDS32_MINUEND: howto manager. (line 1283) +* BFD_RELOC_NDS32_MULCALL_SUFF: howto manager. (line 1276) +* BFD_RELOC_NDS32_PLTBLOCK: howto manager. (line 1280) +* BFD_RELOC_NDS32_PLTREL_HI20: howto manager. (line 1239) +* BFD_RELOC_NDS32_PLTREL_LO12: howto manager. (line 1240) +* BFD_RELOC_NDS32_PLT_GOTREL_HI20: howto manager. (line 1241) +* BFD_RELOC_NDS32_PLT_GOTREL_LO12: howto manager. (line 1242) +* BFD_RELOC_NDS32_PLT_GOTREL_LO15: howto manager. (line 1256) +* BFD_RELOC_NDS32_PLT_GOTREL_LO19: howto manager. (line 1257) +* BFD_RELOC_NDS32_PLT_GOTREL_LO20: howto manager. (line 1255) +* BFD_RELOC_NDS32_PLT_GOT_SUFF: howto manager. (line 1275) +* BFD_RELOC_NDS32_PTR: howto manager. (line 1277) +* BFD_RELOC_NDS32_PTR_COUNT: howto manager. (line 1278) +* BFD_RELOC_NDS32_PTR_RESOLVED: howto manager. (line 1279) +* BFD_RELOC_NDS32_RELATIVE: howto manager. (line 1208) +* BFD_RELOC_NDS32_RELAX_ENTRY: howto manager. (line 1272) +* BFD_RELOC_NDS32_RELAX_REGION_BEGIN: howto manager. (line 1281) +* BFD_RELOC_NDS32_RELAX_REGION_END: howto manager. (line 1282) +* BFD_RELOC_NDS32_SDA12S2_DP: howto manager. (line 1244) +* BFD_RELOC_NDS32_SDA12S2_SP: howto manager. (line 1245) +* BFD_RELOC_NDS32_SDA15S0: howto manager. (line 1187) +* BFD_RELOC_NDS32_SDA15S1: howto manager. (line 1184) +* BFD_RELOC_NDS32_SDA15S2: howto manager. (line 1181) +* BFD_RELOC_NDS32_SDA15S3: howto manager. (line 1178) +* BFD_RELOC_NDS32_SDA16S3: howto manager. (line 1190) +* BFD_RELOC_NDS32_SDA17S2: howto manager. (line 1193) +* BFD_RELOC_NDS32_SDA18S1: howto manager. (line 1196) +* BFD_RELOC_NDS32_SDA19S0: howto manager. (line 1199) +* BFD_RELOC_NDS32_SDA_FP7U2_RELA: howto manager. (line 1270) +* BFD_RELOC_NDS32_SUBTRAHEND: howto manager. (line 1284) +* BFD_RELOC_NDS32_TLS_IE_HI20: howto manager. (line 1304) +* BFD_RELOC_NDS32_TLS_IE_LO12S2: howto manager. (line 1305) +* BFD_RELOC_NDS32_TLS_LE_15S0: howto manager. (line 1308) +* BFD_RELOC_NDS32_TLS_LE_15S1: howto manager. (line 1309) +* BFD_RELOC_NDS32_TLS_LE_15S2: howto manager. (line 1310) +* BFD_RELOC_NDS32_TLS_LE_20: howto manager. (line 1307) +* BFD_RELOC_NDS32_TLS_LE_ADD: howto manager. (line 1301) +* BFD_RELOC_NDS32_TLS_LE_HI20: howto manager. (line 1299) +* BFD_RELOC_NDS32_TLS_LE_LO12: howto manager. (line 1300) +* BFD_RELOC_NDS32_TLS_LE_LS: howto manager. (line 1302) +* BFD_RELOC_NDS32_TLS_TPOFF: howto manager. (line 1306) +* BFD_RELOC_NDS32_TPOFF: howto manager. (line 1298) +* BFD_RELOC_NDS32_TRAN: howto manager. (line 1294) +* BFD_RELOC_NDS32_UPDATE_TA: howto manager. (line 1253) +* BFD_RELOC_NDS32_WORD_9_PCREL: howto manager. (line 1151) +* BFD_RELOC_NIOS2_ALIGN: howto manager. (line 2337) +* BFD_RELOC_NIOS2_CACHE_OPX: howto manager. (line 2327) +* BFD_RELOC_NIOS2_CALL16: howto manager. (line 2339) +* BFD_RELOC_NIOS2_CALL26: howto manager. (line 2325) +* BFD_RELOC_NIOS2_CALL26_NOAT: howto manager. (line 2357) +* BFD_RELOC_NIOS2_CALLR: howto manager. (line 2336) +* BFD_RELOC_NIOS2_CALL_HA: howto manager. (line 2361) +* BFD_RELOC_NIOS2_CALL_LO: howto manager. (line 2360) +* BFD_RELOC_NIOS2_CJMP: howto manager. (line 2335) +* BFD_RELOC_NIOS2_COPY: howto manager. (line 2352) +* BFD_RELOC_NIOS2_GLOB_DAT: howto manager. (line 2353) +* BFD_RELOC_NIOS2_GOT16: howto manager. (line 2338) +* BFD_RELOC_NIOS2_GOTOFF: howto manager. (line 2356) +* BFD_RELOC_NIOS2_GOTOFF_HA: howto manager. (line 2341) +* BFD_RELOC_NIOS2_GOTOFF_LO: howto manager. (line 2340) +* BFD_RELOC_NIOS2_GOT_HA: howto manager. (line 2359) +* BFD_RELOC_NIOS2_GOT_LO: howto manager. (line 2358) +* BFD_RELOC_NIOS2_GPREL: howto manager. (line 2333) +* BFD_RELOC_NIOS2_HI16: howto manager. (line 2330) +* BFD_RELOC_NIOS2_HIADJ16: howto manager. (line 2332) +* BFD_RELOC_NIOS2_IMM5: howto manager. (line 2326) +* BFD_RELOC_NIOS2_IMM6: howto manager. (line 2328) +* BFD_RELOC_NIOS2_IMM8: howto manager. (line 2329) +* BFD_RELOC_NIOS2_JUMP_SLOT: howto manager. (line 2354) +* BFD_RELOC_NIOS2_LO16: howto manager. (line 2331) +* BFD_RELOC_NIOS2_PCREL_HA: howto manager. (line 2343) +* BFD_RELOC_NIOS2_PCREL_LO: howto manager. (line 2342) +* BFD_RELOC_NIOS2_R2_F1I5_2: howto manager. (line 2371) +* BFD_RELOC_NIOS2_R2_I10_1_PCREL: howto manager. (line 2363) +* BFD_RELOC_NIOS2_R2_L5I4X1: howto manager. (line 2372) +* BFD_RELOC_NIOS2_R2_S12: howto manager. (line 2362) +* BFD_RELOC_NIOS2_R2_T1I7_1_PCREL: howto manager. (line 2364) +* BFD_RELOC_NIOS2_R2_T1I7_2: howto manager. (line 2365) +* BFD_RELOC_NIOS2_R2_T1X1I6: howto manager. (line 2373) +* BFD_RELOC_NIOS2_R2_T1X1I6_2: howto manager. (line 2374) +* BFD_RELOC_NIOS2_R2_T2I4: howto manager. (line 2366) +* BFD_RELOC_NIOS2_R2_T2I4_1: howto manager. (line 2367) +* BFD_RELOC_NIOS2_R2_T2I4_2: howto manager. (line 2368) +* BFD_RELOC_NIOS2_R2_X1I7_2: howto manager. (line 2369) +* BFD_RELOC_NIOS2_R2_X2L5: howto manager. (line 2370) +* BFD_RELOC_NIOS2_RELATIVE: howto manager. (line 2355) +* BFD_RELOC_NIOS2_S16: howto manager. (line 2323) +* BFD_RELOC_NIOS2_TLS_DTPMOD: howto manager. (line 2349) +* BFD_RELOC_NIOS2_TLS_DTPREL: howto manager. (line 2350) +* BFD_RELOC_NIOS2_TLS_GD16: howto manager. (line 2344) +* BFD_RELOC_NIOS2_TLS_IE16: howto manager. (line 2347) +* BFD_RELOC_NIOS2_TLS_LDM16: howto manager. (line 2345) +* BFD_RELOC_NIOS2_TLS_LDO16: howto manager. (line 2346) +* BFD_RELOC_NIOS2_TLS_LE16: howto manager. (line 2348) +* BFD_RELOC_NIOS2_TLS_TPREL: howto manager. (line 2351) +* BFD_RELOC_NIOS2_U16: howto manager. (line 2324) +* BFD_RELOC_NIOS2_UJMP: howto manager. (line 2334) * BFD_RELOC_NONE: howto manager. (line 122) -* BFD_RELOC_NS32K_DISP_16: howto manager. (line 575) -* BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. (line 578) -* BFD_RELOC_NS32K_DISP_32: howto manager. (line 576) -* BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. (line 579) -* BFD_RELOC_NS32K_DISP_8: howto manager. (line 574) -* BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. (line 577) -* BFD_RELOC_NS32K_IMM_16: howto manager. (line 569) -* BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. (line 572) -* BFD_RELOC_NS32K_IMM_32: howto manager. (line 570) -* BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. (line 573) -* BFD_RELOC_NS32K_IMM_8: howto manager. (line 568) -* BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. (line 571) -* BFD_RELOC_OR1K_COPY: howto manager. (line 2241) -* BFD_RELOC_OR1K_GLOB_DAT: howto manager. (line 2242) -* BFD_RELOC_OR1K_GOT16: howto manager. (line 2237) -* BFD_RELOC_OR1K_GOTOFF_HI16: howto manager. (line 2239) -* BFD_RELOC_OR1K_GOTOFF_LO16: howto manager. (line 2240) -* BFD_RELOC_OR1K_GOTPC_HI16: howto manager. (line 2235) -* BFD_RELOC_OR1K_GOTPC_LO16: howto manager. (line 2236) -* BFD_RELOC_OR1K_JMP_SLOT: howto manager. (line 2243) -* BFD_RELOC_OR1K_PLT26: howto manager. (line 2238) -* BFD_RELOC_OR1K_RELATIVE: howto manager. (line 2244) -* BFD_RELOC_OR1K_REL_26: howto manager. (line 2234) -* BFD_RELOC_OR1K_TLS_DTPMOD: howto manager. (line 2257) -* BFD_RELOC_OR1K_TLS_DTPOFF: howto manager. (line 2256) -* BFD_RELOC_OR1K_TLS_GD_HI16: howto manager. (line 2245) -* BFD_RELOC_OR1K_TLS_GD_LO16: howto manager. (line 2246) -* BFD_RELOC_OR1K_TLS_IE_HI16: howto manager. (line 2251) -* BFD_RELOC_OR1K_TLS_IE_LO16: howto manager. (line 2252) -* BFD_RELOC_OR1K_TLS_LDM_HI16: howto manager. (line 2247) -* BFD_RELOC_OR1K_TLS_LDM_LO16: howto manager. (line 2248) -* BFD_RELOC_OR1K_TLS_LDO_HI16: howto manager. (line 2249) -* BFD_RELOC_OR1K_TLS_LDO_LO16: howto manager. (line 2250) -* BFD_RELOC_OR1K_TLS_LE_HI16: howto manager. (line 2253) -* BFD_RELOC_OR1K_TLS_LE_LO16: howto manager. (line 2254) -* BFD_RELOC_OR1K_TLS_TPOFF: howto manager. (line 2255) -* BFD_RELOC_PDP11_DISP_6_PCREL: howto manager. (line 582) -* BFD_RELOC_PDP11_DISP_8_PCREL: howto manager. (line 581) -* BFD_RELOC_PJ_CODE_DIR16: howto manager. (line 586) -* BFD_RELOC_PJ_CODE_DIR32: howto manager. (line 587) -* BFD_RELOC_PJ_CODE_HI16: howto manager. (line 584) -* BFD_RELOC_PJ_CODE_LO16: howto manager. (line 585) -* BFD_RELOC_PJ_CODE_REL16: howto manager. (line 588) -* BFD_RELOC_PJ_CODE_REL32: howto manager. (line 589) -* BFD_RELOC_PPC64_ADDR16_DS: howto manager. (line 650) -* BFD_RELOC_PPC64_ADDR16_HIGH: howto manager. (line 661) -* BFD_RELOC_PPC64_ADDR16_HIGHA: howto manager. (line 662) -* BFD_RELOC_PPC64_ADDR16_LO_DS: howto manager. (line 651) -* BFD_RELOC_PPC64_ADDR64_LOCAL: howto manager. (line 663) -* BFD_RELOC_PPC64_DTPREL16_DS: howto manager. (line 701) -* BFD_RELOC_PPC64_DTPREL16_HIGH: howto manager. (line 709) -* BFD_RELOC_PPC64_DTPREL16_HIGHA: howto manager. (line 710) -* BFD_RELOC_PPC64_DTPREL16_HIGHER: howto manager. (line 703) -* BFD_RELOC_PPC64_DTPREL16_HIGHERA: howto manager. (line 704) -* BFD_RELOC_PPC64_DTPREL16_HIGHEST: howto manager. (line 705) -* BFD_RELOC_PPC64_DTPREL16_HIGHESTA: howto manager. (line 706) -* BFD_RELOC_PPC64_DTPREL16_LO_DS: howto manager. (line 702) -* BFD_RELOC_PPC64_GOT16_DS: howto manager. (line 652) -* BFD_RELOC_PPC64_GOT16_LO_DS: howto manager. (line 653) -* BFD_RELOC_PPC64_HIGHER: howto manager. (line 638) -* BFD_RELOC_PPC64_HIGHER_S: howto manager. (line 639) -* BFD_RELOC_PPC64_HIGHEST: howto manager. (line 640) -* BFD_RELOC_PPC64_HIGHEST_S: howto manager. (line 641) -* BFD_RELOC_PPC64_PLT16_LO_DS: howto manager. (line 654) -* BFD_RELOC_PPC64_PLTGOT16: howto manager. (line 646) -* BFD_RELOC_PPC64_PLTGOT16_DS: howto manager. (line 659) -* BFD_RELOC_PPC64_PLTGOT16_HA: howto manager. (line 649) -* BFD_RELOC_PPC64_PLTGOT16_HI: howto manager. (line 648) -* BFD_RELOC_PPC64_PLTGOT16_LO: howto manager. (line 647) -* BFD_RELOC_PPC64_PLTGOT16_LO_DS: howto manager. (line 660) -* BFD_RELOC_PPC64_SECTOFF_DS: howto manager. (line 655) -* BFD_RELOC_PPC64_SECTOFF_LO_DS: howto manager. (line 656) -* BFD_RELOC_PPC64_TOC: howto manager. (line 645) -* BFD_RELOC_PPC64_TOC16_DS: howto manager. (line 657) -* BFD_RELOC_PPC64_TOC16_HA: howto manager. (line 644) -* BFD_RELOC_PPC64_TOC16_HI: howto manager. (line 643) -* BFD_RELOC_PPC64_TOC16_LO: howto manager. (line 642) -* BFD_RELOC_PPC64_TOC16_LO_DS: howto manager. (line 658) -* BFD_RELOC_PPC64_TPREL16_DS: howto manager. (line 695) -* BFD_RELOC_PPC64_TPREL16_HIGH: howto manager. (line 707) -* BFD_RELOC_PPC64_TPREL16_HIGHA: howto manager. (line 708) -* BFD_RELOC_PPC64_TPREL16_HIGHER: howto manager. (line 697) -* BFD_RELOC_PPC64_TPREL16_HIGHERA: howto manager. (line 698) -* BFD_RELOC_PPC64_TPREL16_HIGHEST: howto manager. (line 699) -* BFD_RELOC_PPC64_TPREL16_HIGHESTA: howto manager. (line 700) -* BFD_RELOC_PPC64_TPREL16_LO_DS: howto manager. (line 696) -* BFD_RELOC_PPC_B16: howto manager. (line 594) -* BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. (line 596) -* BFD_RELOC_PPC_B16_BRTAKEN: howto manager. (line 595) -* BFD_RELOC_PPC_B26: howto manager. (line 591) -* BFD_RELOC_PPC_BA16: howto manager. (line 597) -* BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. (line 599) -* BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. (line 598) -* BFD_RELOC_PPC_BA26: howto manager. (line 592) -* BFD_RELOC_PPC_COPY: howto manager. (line 600) -* BFD_RELOC_PPC_DTPMOD: howto manager. (line 668) -* BFD_RELOC_PPC_DTPREL: howto manager. (line 678) -* BFD_RELOC_PPC_DTPREL16: howto manager. (line 674) -* BFD_RELOC_PPC_DTPREL16_HA: howto manager. (line 677) -* BFD_RELOC_PPC_DTPREL16_HI: howto manager. (line 676) -* BFD_RELOC_PPC_DTPREL16_LO: howto manager. (line 675) -* BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. (line 619) -* BFD_RELOC_PPC_EMB_MRKREF: howto manager. (line 614) -* BFD_RELOC_PPC_EMB_NADDR16: howto manager. (line 606) -* BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. (line 609) -* BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. (line 608) -* BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. (line 607) -* BFD_RELOC_PPC_EMB_NADDR32: howto manager. (line 605) -* BFD_RELOC_PPC_EMB_RELSDA: howto manager. (line 620) -* BFD_RELOC_PPC_EMB_RELSEC16: howto manager. (line 615) -* BFD_RELOC_PPC_EMB_RELST_HA: howto manager. (line 618) -* BFD_RELOC_PPC_EMB_RELST_HI: howto manager. (line 617) -* BFD_RELOC_PPC_EMB_RELST_LO: howto manager. (line 616) -* BFD_RELOC_PPC_EMB_SDA21: howto manager. (line 613) -* BFD_RELOC_PPC_EMB_SDA2I16: howto manager. (line 611) -* BFD_RELOC_PPC_EMB_SDA2REL: howto manager. (line 612) -* BFD_RELOC_PPC_EMB_SDAI16: howto manager. (line 610) -* BFD_RELOC_PPC_GLOB_DAT: howto manager. (line 601) -* BFD_RELOC_PPC_GOT_DTPREL16: howto manager. (line 691) -* BFD_RELOC_PPC_GOT_DTPREL16_HA: howto manager. (line 694) -* BFD_RELOC_PPC_GOT_DTPREL16_HI: howto manager. (line 693) -* BFD_RELOC_PPC_GOT_DTPREL16_LO: howto manager. (line 692) -* BFD_RELOC_PPC_GOT_TLSGD16: howto manager. (line 679) -* BFD_RELOC_PPC_GOT_TLSGD16_HA: howto manager. (line 682) -* BFD_RELOC_PPC_GOT_TLSGD16_HI: howto manager. (line 681) -* BFD_RELOC_PPC_GOT_TLSGD16_LO: howto manager. (line 680) -* BFD_RELOC_PPC_GOT_TLSLD16: howto manager. (line 683) -* BFD_RELOC_PPC_GOT_TLSLD16_HA: howto manager. (line 686) -* BFD_RELOC_PPC_GOT_TLSLD16_HI: howto manager. (line 685) -* BFD_RELOC_PPC_GOT_TLSLD16_LO: howto manager. (line 684) -* BFD_RELOC_PPC_GOT_TPREL16: howto manager. (line 687) -* BFD_RELOC_PPC_GOT_TPREL16_HA: howto manager. (line 690) -* BFD_RELOC_PPC_GOT_TPREL16_HI: howto manager. (line 689) -* BFD_RELOC_PPC_GOT_TPREL16_LO: howto manager. (line 688) -* BFD_RELOC_PPC_JMP_SLOT: howto manager. (line 602) -* BFD_RELOC_PPC_LOCAL24PC: howto manager. (line 604) -* BFD_RELOC_PPC_RELATIVE: howto manager. (line 603) -* BFD_RELOC_PPC_TLS: howto manager. (line 665) -* BFD_RELOC_PPC_TLSGD: howto manager. (line 666) -* BFD_RELOC_PPC_TLSLD: howto manager. (line 667) -* BFD_RELOC_PPC_TOC16: howto manager. (line 593) -* BFD_RELOC_PPC_TPREL: howto manager. (line 673) -* BFD_RELOC_PPC_TPREL16: howto manager. (line 669) -* BFD_RELOC_PPC_TPREL16_HA: howto manager. (line 672) -* BFD_RELOC_PPC_TPREL16_HI: howto manager. (line 671) -* BFD_RELOC_PPC_TPREL16_LO: howto manager. (line 670) -* BFD_RELOC_PPC_VLE_HA16A: howto manager. (line 628) -* BFD_RELOC_PPC_VLE_HA16D: howto manager. (line 629) -* BFD_RELOC_PPC_VLE_HI16A: howto manager. (line 626) -* BFD_RELOC_PPC_VLE_HI16D: howto manager. (line 627) -* BFD_RELOC_PPC_VLE_LO16A: howto manager. (line 624) -* BFD_RELOC_PPC_VLE_LO16D: howto manager. (line 625) -* BFD_RELOC_PPC_VLE_REL15: howto manager. (line 622) -* BFD_RELOC_PPC_VLE_REL24: howto manager. (line 623) -* BFD_RELOC_PPC_VLE_REL8: howto manager. (line 621) -* BFD_RELOC_PPC_VLE_SDA21: howto manager. (line 630) -* BFD_RELOC_PPC_VLE_SDA21_LO: howto manager. (line 631) -* BFD_RELOC_PPC_VLE_SDAREL_HA16A: howto manager. (line 636) -* BFD_RELOC_PPC_VLE_SDAREL_HA16D: howto manager. (line 637) -* BFD_RELOC_PPC_VLE_SDAREL_HI16A: howto manager. (line 634) -* BFD_RELOC_PPC_VLE_SDAREL_HI16D: howto manager. (line 635) -* BFD_RELOC_PPC_VLE_SDAREL_LO16A: howto manager. (line 632) -* BFD_RELOC_PPC_VLE_SDAREL_LO16D: howto manager. (line 633) -* BFD_RELOC_RELC: howto manager. (line 2271) -* BFD_RELOC_RL78_16U: howto manager. (line 1696) -* BFD_RELOC_RL78_16_OP: howto manager. (line 1692) -* BFD_RELOC_RL78_24U: howto manager. (line 1697) -* BFD_RELOC_RL78_24_OP: howto manager. (line 1693) -* BFD_RELOC_RL78_32_OP: howto manager. (line 1694) -* BFD_RELOC_RL78_8U: howto manager. (line 1695) -* BFD_RELOC_RL78_ABS16: howto manager. (line 1709) -* BFD_RELOC_RL78_ABS16U: howto manager. (line 1713) -* BFD_RELOC_RL78_ABS16UL: howto manager. (line 1715) -* BFD_RELOC_RL78_ABS16UW: howto manager. (line 1714) -* BFD_RELOC_RL78_ABS16_REV: howto manager. (line 1710) -* BFD_RELOC_RL78_ABS32: howto manager. (line 1711) -* BFD_RELOC_RL78_ABS32_REV: howto manager. (line 1712) -* BFD_RELOC_RL78_ABS8: howto manager. (line 1708) -* BFD_RELOC_RL78_CODE: howto manager. (line 1720) -* BFD_RELOC_RL78_DIFF: howto manager. (line 1699) -* BFD_RELOC_RL78_DIR3U_PCREL: howto manager. (line 1698) -* BFD_RELOC_RL78_GPRELB: howto manager. (line 1700) -* BFD_RELOC_RL78_GPRELL: howto manager. (line 1702) -* BFD_RELOC_RL78_GPRELW: howto manager. (line 1701) -* BFD_RELOC_RL78_HI16: howto manager. (line 1717) -* BFD_RELOC_RL78_HI8: howto manager. (line 1718) -* BFD_RELOC_RL78_LO16: howto manager. (line 1719) -* BFD_RELOC_RL78_NEG16: howto manager. (line 1689) -* BFD_RELOC_RL78_NEG24: howto manager. (line 1690) -* BFD_RELOC_RL78_NEG32: howto manager. (line 1691) -* BFD_RELOC_RL78_NEG8: howto manager. (line 1688) -* BFD_RELOC_RL78_OP_AND: howto manager. (line 1706) -* BFD_RELOC_RL78_OP_NEG: howto manager. (line 1705) -* BFD_RELOC_RL78_OP_SHRA: howto manager. (line 1707) -* BFD_RELOC_RL78_OP_SUBTRACT: howto manager. (line 1704) -* BFD_RELOC_RL78_RELAX: howto manager. (line 1716) -* BFD_RELOC_RL78_SYM: howto manager. (line 1703) +* BFD_RELOC_NS32K_DISP_16: howto manager. (line 580) +* BFD_RELOC_NS32K_DISP_16_PCREL: howto manager. (line 583) +* BFD_RELOC_NS32K_DISP_32: howto manager. (line 581) +* BFD_RELOC_NS32K_DISP_32_PCREL: howto manager. (line 584) +* BFD_RELOC_NS32K_DISP_8: howto manager. (line 579) +* BFD_RELOC_NS32K_DISP_8_PCREL: howto manager. (line 582) +* BFD_RELOC_NS32K_IMM_16: howto manager. (line 574) +* BFD_RELOC_NS32K_IMM_16_PCREL: howto manager. (line 577) +* BFD_RELOC_NS32K_IMM_32: howto manager. (line 575) +* BFD_RELOC_NS32K_IMM_32_PCREL: howto manager. (line 578) +* BFD_RELOC_NS32K_IMM_8: howto manager. (line 573) +* BFD_RELOC_NS32K_IMM_8_PCREL: howto manager. (line 576) +* BFD_RELOC_OR1K_COPY: howto manager. (line 2247) +* BFD_RELOC_OR1K_GLOB_DAT: howto manager. (line 2248) +* BFD_RELOC_OR1K_GOT16: howto manager. (line 2243) +* BFD_RELOC_OR1K_GOTOFF_HI16: howto manager. (line 2245) +* BFD_RELOC_OR1K_GOTOFF_LO16: howto manager. (line 2246) +* BFD_RELOC_OR1K_GOTPC_HI16: howto manager. (line 2241) +* BFD_RELOC_OR1K_GOTPC_LO16: howto manager. (line 2242) +* BFD_RELOC_OR1K_JMP_SLOT: howto manager. (line 2249) +* BFD_RELOC_OR1K_PLT26: howto manager. (line 2244) +* BFD_RELOC_OR1K_RELATIVE: howto manager. (line 2250) +* BFD_RELOC_OR1K_REL_26: howto manager. (line 2240) +* BFD_RELOC_OR1K_TLS_DTPMOD: howto manager. (line 2263) +* BFD_RELOC_OR1K_TLS_DTPOFF: howto manager. (line 2262) +* BFD_RELOC_OR1K_TLS_GD_HI16: howto manager. (line 2251) +* BFD_RELOC_OR1K_TLS_GD_LO16: howto manager. (line 2252) +* BFD_RELOC_OR1K_TLS_IE_HI16: howto manager. (line 2257) +* BFD_RELOC_OR1K_TLS_IE_LO16: howto manager. (line 2258) +* BFD_RELOC_OR1K_TLS_LDM_HI16: howto manager. (line 2253) +* BFD_RELOC_OR1K_TLS_LDM_LO16: howto manager. (line 2254) +* BFD_RELOC_OR1K_TLS_LDO_HI16: howto manager. (line 2255) +* BFD_RELOC_OR1K_TLS_LDO_LO16: howto manager. (line 2256) +* BFD_RELOC_OR1K_TLS_LE_HI16: howto manager. (line 2259) +* BFD_RELOC_OR1K_TLS_LE_LO16: howto manager. (line 2260) +* BFD_RELOC_OR1K_TLS_TPOFF: howto manager. (line 2261) +* BFD_RELOC_PDP11_DISP_6_PCREL: howto manager. (line 587) +* BFD_RELOC_PDP11_DISP_8_PCREL: howto manager. (line 586) +* BFD_RELOC_PJ_CODE_DIR16: howto manager. (line 591) +* BFD_RELOC_PJ_CODE_DIR32: howto manager. (line 592) +* BFD_RELOC_PJ_CODE_HI16: howto manager. (line 589) +* BFD_RELOC_PJ_CODE_LO16: howto manager. (line 590) +* BFD_RELOC_PJ_CODE_REL16: howto manager. (line 593) +* BFD_RELOC_PJ_CODE_REL32: howto manager. (line 594) +* BFD_RELOC_PPC64_ADDR16_DS: howto manager. (line 655) +* BFD_RELOC_PPC64_ADDR16_HIGH: howto manager. (line 666) +* BFD_RELOC_PPC64_ADDR16_HIGHA: howto manager. (line 667) +* BFD_RELOC_PPC64_ADDR16_LO_DS: howto manager. (line 656) +* BFD_RELOC_PPC64_ADDR64_LOCAL: howto manager. (line 668) +* BFD_RELOC_PPC64_DTPREL16_DS: howto manager. (line 706) +* BFD_RELOC_PPC64_DTPREL16_HIGH: howto manager. (line 714) +* BFD_RELOC_PPC64_DTPREL16_HIGHA: howto manager. (line 715) +* BFD_RELOC_PPC64_DTPREL16_HIGHER: howto manager. (line 708) +* BFD_RELOC_PPC64_DTPREL16_HIGHERA: howto manager. (line 709) +* BFD_RELOC_PPC64_DTPREL16_HIGHEST: howto manager. (line 710) +* BFD_RELOC_PPC64_DTPREL16_HIGHESTA: howto manager. (line 711) +* BFD_RELOC_PPC64_DTPREL16_LO_DS: howto manager. (line 707) +* BFD_RELOC_PPC64_GOT16_DS: howto manager. (line 657) +* BFD_RELOC_PPC64_GOT16_LO_DS: howto manager. (line 658) +* BFD_RELOC_PPC64_HIGHER: howto manager. (line 643) +* BFD_RELOC_PPC64_HIGHER_S: howto manager. (line 644) +* BFD_RELOC_PPC64_HIGHEST: howto manager. (line 645) +* BFD_RELOC_PPC64_HIGHEST_S: howto manager. (line 646) +* BFD_RELOC_PPC64_PLT16_LO_DS: howto manager. (line 659) +* BFD_RELOC_PPC64_PLTGOT16: howto manager. (line 651) +* BFD_RELOC_PPC64_PLTGOT16_DS: howto manager. (line 664) +* BFD_RELOC_PPC64_PLTGOT16_HA: howto manager. (line 654) +* BFD_RELOC_PPC64_PLTGOT16_HI: howto manager. (line 653) +* BFD_RELOC_PPC64_PLTGOT16_LO: howto manager. (line 652) +* BFD_RELOC_PPC64_PLTGOT16_LO_DS: howto manager. (line 665) +* BFD_RELOC_PPC64_SECTOFF_DS: howto manager. (line 660) +* BFD_RELOC_PPC64_SECTOFF_LO_DS: howto manager. (line 661) +* BFD_RELOC_PPC64_TOC: howto manager. (line 650) +* BFD_RELOC_PPC64_TOC16_DS: howto manager. (line 662) +* BFD_RELOC_PPC64_TOC16_HA: howto manager. (line 649) +* BFD_RELOC_PPC64_TOC16_HI: howto manager. (line 648) +* BFD_RELOC_PPC64_TOC16_LO: howto manager. (line 647) +* BFD_RELOC_PPC64_TOC16_LO_DS: howto manager. (line 663) +* BFD_RELOC_PPC64_TPREL16_DS: howto manager. (line 700) +* BFD_RELOC_PPC64_TPREL16_HIGH: howto manager. (line 712) +* BFD_RELOC_PPC64_TPREL16_HIGHA: howto manager. (line 713) +* BFD_RELOC_PPC64_TPREL16_HIGHER: howto manager. (line 702) +* BFD_RELOC_PPC64_TPREL16_HIGHERA: howto manager. (line 703) +* BFD_RELOC_PPC64_TPREL16_HIGHEST: howto manager. (line 704) +* BFD_RELOC_PPC64_TPREL16_HIGHESTA: howto manager. (line 705) +* BFD_RELOC_PPC64_TPREL16_LO_DS: howto manager. (line 701) +* BFD_RELOC_PPC_B16: howto manager. (line 599) +* BFD_RELOC_PPC_B16_BRNTAKEN: howto manager. (line 601) +* BFD_RELOC_PPC_B16_BRTAKEN: howto manager. (line 600) +* BFD_RELOC_PPC_B26: howto manager. (line 596) +* BFD_RELOC_PPC_BA16: howto manager. (line 602) +* BFD_RELOC_PPC_BA16_BRNTAKEN: howto manager. (line 604) +* BFD_RELOC_PPC_BA16_BRTAKEN: howto manager. (line 603) +* BFD_RELOC_PPC_BA26: howto manager. (line 597) +* BFD_RELOC_PPC_COPY: howto manager. (line 605) +* BFD_RELOC_PPC_DTPMOD: howto manager. (line 673) +* BFD_RELOC_PPC_DTPREL: howto manager. (line 683) +* BFD_RELOC_PPC_DTPREL16: howto manager. (line 679) +* BFD_RELOC_PPC_DTPREL16_HA: howto manager. (line 682) +* BFD_RELOC_PPC_DTPREL16_HI: howto manager. (line 681) +* BFD_RELOC_PPC_DTPREL16_LO: howto manager. (line 680) +* BFD_RELOC_PPC_EMB_BIT_FLD: howto manager. (line 624) +* BFD_RELOC_PPC_EMB_MRKREF: howto manager. (line 619) +* BFD_RELOC_PPC_EMB_NADDR16: howto manager. (line 611) +* BFD_RELOC_PPC_EMB_NADDR16_HA: howto manager. (line 614) +* BFD_RELOC_PPC_EMB_NADDR16_HI: howto manager. (line 613) +* BFD_RELOC_PPC_EMB_NADDR16_LO: howto manager. (line 612) +* BFD_RELOC_PPC_EMB_NADDR32: howto manager. (line 610) +* BFD_RELOC_PPC_EMB_RELSDA: howto manager. (line 625) +* BFD_RELOC_PPC_EMB_RELSEC16: howto manager. (line 620) +* BFD_RELOC_PPC_EMB_RELST_HA: howto manager. (line 623) +* BFD_RELOC_PPC_EMB_RELST_HI: howto manager. (line 622) +* BFD_RELOC_PPC_EMB_RELST_LO: howto manager. (line 621) +* BFD_RELOC_PPC_EMB_SDA21: howto manager. (line 618) +* BFD_RELOC_PPC_EMB_SDA2I16: howto manager. (line 616) +* BFD_RELOC_PPC_EMB_SDA2REL: howto manager. (line 617) +* BFD_RELOC_PPC_EMB_SDAI16: howto manager. (line 615) +* BFD_RELOC_PPC_GLOB_DAT: howto manager. (line 606) +* BFD_RELOC_PPC_GOT_DTPREL16: howto manager. (line 696) +* BFD_RELOC_PPC_GOT_DTPREL16_HA: howto manager. (line 699) +* BFD_RELOC_PPC_GOT_DTPREL16_HI: howto manager. (line 698) +* BFD_RELOC_PPC_GOT_DTPREL16_LO: howto manager. (line 697) +* BFD_RELOC_PPC_GOT_TLSGD16: howto manager. (line 684) +* BFD_RELOC_PPC_GOT_TLSGD16_HA: howto manager. (line 687) +* BFD_RELOC_PPC_GOT_TLSGD16_HI: howto manager. (line 686) +* BFD_RELOC_PPC_GOT_TLSGD16_LO: howto manager. (line 685) +* BFD_RELOC_PPC_GOT_TLSLD16: howto manager. (line 688) +* BFD_RELOC_PPC_GOT_TLSLD16_HA: howto manager. (line 691) +* BFD_RELOC_PPC_GOT_TLSLD16_HI: howto manager. (line 690) +* BFD_RELOC_PPC_GOT_TLSLD16_LO: howto manager. (line 689) +* BFD_RELOC_PPC_GOT_TPREL16: howto manager. (line 692) +* BFD_RELOC_PPC_GOT_TPREL16_HA: howto manager. (line 695) +* BFD_RELOC_PPC_GOT_TPREL16_HI: howto manager. (line 694) +* BFD_RELOC_PPC_GOT_TPREL16_LO: howto manager. (line 693) +* BFD_RELOC_PPC_JMP_SLOT: howto manager. (line 607) +* BFD_RELOC_PPC_LOCAL24PC: howto manager. (line 609) +* BFD_RELOC_PPC_RELATIVE: howto manager. (line 608) +* BFD_RELOC_PPC_TLS: howto manager. (line 670) +* BFD_RELOC_PPC_TLSGD: howto manager. (line 671) +* BFD_RELOC_PPC_TLSLD: howto manager. (line 672) +* BFD_RELOC_PPC_TOC16: howto manager. (line 598) +* BFD_RELOC_PPC_TPREL: howto manager. (line 678) +* BFD_RELOC_PPC_TPREL16: howto manager. (line 674) +* BFD_RELOC_PPC_TPREL16_HA: howto manager. (line 677) +* BFD_RELOC_PPC_TPREL16_HI: howto manager. (line 676) +* BFD_RELOC_PPC_TPREL16_LO: howto manager. (line 675) +* BFD_RELOC_PPC_VLE_HA16A: howto manager. (line 633) +* BFD_RELOC_PPC_VLE_HA16D: howto manager. (line 634) +* BFD_RELOC_PPC_VLE_HI16A: howto manager. (line 631) +* BFD_RELOC_PPC_VLE_HI16D: howto manager. (line 632) +* BFD_RELOC_PPC_VLE_LO16A: howto manager. (line 629) +* BFD_RELOC_PPC_VLE_LO16D: howto manager. (line 630) +* BFD_RELOC_PPC_VLE_REL15: howto manager. (line 627) +* BFD_RELOC_PPC_VLE_REL24: howto manager. (line 628) +* BFD_RELOC_PPC_VLE_REL8: howto manager. (line 626) +* BFD_RELOC_PPC_VLE_SDA21: howto manager. (line 635) +* BFD_RELOC_PPC_VLE_SDA21_LO: howto manager. (line 636) +* BFD_RELOC_PPC_VLE_SDAREL_HA16A: howto manager. (line 641) +* BFD_RELOC_PPC_VLE_SDAREL_HA16D: howto manager. (line 642) +* BFD_RELOC_PPC_VLE_SDAREL_HI16A: howto manager. (line 639) +* BFD_RELOC_PPC_VLE_SDAREL_HI16D: howto manager. (line 640) +* BFD_RELOC_PPC_VLE_SDAREL_LO16A: howto manager. (line 637) +* BFD_RELOC_PPC_VLE_SDAREL_LO16D: howto manager. (line 638) +* BFD_RELOC_RELC: howto manager. (line 2277) +* BFD_RELOC_RL78_16U: howto manager. (line 1701) +* BFD_RELOC_RL78_16_OP: howto manager. (line 1697) +* BFD_RELOC_RL78_24U: howto manager. (line 1702) +* BFD_RELOC_RL78_24_OP: howto manager. (line 1698) +* BFD_RELOC_RL78_32_OP: howto manager. (line 1699) +* BFD_RELOC_RL78_8U: howto manager. (line 1700) +* BFD_RELOC_RL78_ABS16: howto manager. (line 1714) +* BFD_RELOC_RL78_ABS16U: howto manager. (line 1718) +* BFD_RELOC_RL78_ABS16UL: howto manager. (line 1720) +* BFD_RELOC_RL78_ABS16UW: howto manager. (line 1719) +* BFD_RELOC_RL78_ABS16_REV: howto manager. (line 1715) +* BFD_RELOC_RL78_ABS32: howto manager. (line 1716) +* BFD_RELOC_RL78_ABS32_REV: howto manager. (line 1717) +* BFD_RELOC_RL78_ABS8: howto manager. (line 1713) +* BFD_RELOC_RL78_CODE: howto manager. (line 1725) +* BFD_RELOC_RL78_DIFF: howto manager. (line 1704) +* BFD_RELOC_RL78_DIR3U_PCREL: howto manager. (line 1703) +* BFD_RELOC_RL78_GPRELB: howto manager. (line 1705) +* BFD_RELOC_RL78_GPRELL: howto manager. (line 1707) +* BFD_RELOC_RL78_GPRELW: howto manager. (line 1706) +* BFD_RELOC_RL78_HI16: howto manager. (line 1722) +* BFD_RELOC_RL78_HI8: howto manager. (line 1723) +* BFD_RELOC_RL78_LO16: howto manager. (line 1724) +* BFD_RELOC_RL78_NEG16: howto manager. (line 1694) +* BFD_RELOC_RL78_NEG24: howto manager. (line 1695) +* BFD_RELOC_RL78_NEG32: howto manager. (line 1696) +* BFD_RELOC_RL78_NEG8: howto manager. (line 1693) +* BFD_RELOC_RL78_OP_AND: howto manager. (line 1711) +* BFD_RELOC_RL78_OP_NEG: howto manager. (line 1710) +* BFD_RELOC_RL78_OP_SHRA: howto manager. (line 1712) +* BFD_RELOC_RL78_OP_SUBTRACT: howto manager. (line 1709) +* BFD_RELOC_RL78_RELAX: howto manager. (line 1721) +* BFD_RELOC_RL78_SADDR: howto manager. (line 1726) +* BFD_RELOC_RL78_SYM: howto manager. (line 1708) * BFD_RELOC_RVA: howto manager. (line 97) -* BFD_RELOC_RX_16U: howto manager. (line 1730) -* BFD_RELOC_RX_16_OP: howto manager. (line 1726) -* BFD_RELOC_RX_24U: howto manager. (line 1731) -* BFD_RELOC_RX_24_OP: howto manager. (line 1727) -* BFD_RELOC_RX_32_OP: howto manager. (line 1728) -* BFD_RELOC_RX_8U: howto manager. (line 1729) -* BFD_RELOC_RX_ABS16: howto manager. (line 1741) -* BFD_RELOC_RX_ABS16U: howto manager. (line 1745) -* BFD_RELOC_RX_ABS16UL: howto manager. (line 1747) -* BFD_RELOC_RX_ABS16UW: howto manager. (line 1746) -* BFD_RELOC_RX_ABS16_REV: howto manager. (line 1742) -* BFD_RELOC_RX_ABS32: howto manager. (line 1743) -* BFD_RELOC_RX_ABS32_REV: howto manager. (line 1744) -* BFD_RELOC_RX_ABS8: howto manager. (line 1740) -* BFD_RELOC_RX_DIFF: howto manager. (line 1733) -* BFD_RELOC_RX_DIR3U_PCREL: howto manager. (line 1732) -* BFD_RELOC_RX_GPRELB: howto manager. (line 1734) -* BFD_RELOC_RX_GPRELL: howto manager. (line 1736) -* BFD_RELOC_RX_GPRELW: howto manager. (line 1735) -* BFD_RELOC_RX_NEG16: howto manager. (line 1723) -* BFD_RELOC_RX_NEG24: howto manager. (line 1724) -* BFD_RELOC_RX_NEG32: howto manager. (line 1725) -* BFD_RELOC_RX_NEG8: howto manager. (line 1722) -* BFD_RELOC_RX_OP_NEG: howto manager. (line 1739) -* BFD_RELOC_RX_OP_SUBTRACT: howto manager. (line 1738) -* BFD_RELOC_RX_RELAX: howto manager. (line 1748) -* BFD_RELOC_RX_SYM: howto manager. (line 1737) -* BFD_RELOC_SCORE16_BRANCH: howto manager. (line 1851) -* BFD_RELOC_SCORE16_JMP: howto manager. (line 1849) -* BFD_RELOC_SCORE_BCMP: howto manager. (line 1853) -* BFD_RELOC_SCORE_BRANCH: howto manager. (line 1843) -* BFD_RELOC_SCORE_CALL15: howto manager. (line 1857) -* BFD_RELOC_SCORE_DUMMY2: howto manager. (line 1840) -* BFD_RELOC_SCORE_DUMMY_HI16: howto manager. (line 1858) -* BFD_RELOC_SCORE_GOT15: howto manager. (line 1855) -* BFD_RELOC_SCORE_GOT_LO16: howto manager. (line 1856) -* BFD_RELOC_SCORE_GPREL15: howto manager. (line 1838) -* BFD_RELOC_SCORE_IMM30: howto manager. (line 1845) -* BFD_RELOC_SCORE_IMM32: howto manager. (line 1847) -* BFD_RELOC_SCORE_JMP: howto manager. (line 1841) -* BFD_RELOC_SH_ALIGN: howto manager. (line 881) -* BFD_RELOC_SH_CODE: howto manager. (line 882) -* BFD_RELOC_SH_COPY: howto manager. (line 887) -* BFD_RELOC_SH_COPY64: howto manager. (line 912) -* BFD_RELOC_SH_COUNT: howto manager. (line 880) -* BFD_RELOC_SH_DATA: howto manager. (line 883) -* BFD_RELOC_SH_DISP12: howto manager. (line 863) -* BFD_RELOC_SH_DISP12BY2: howto manager. (line 864) -* BFD_RELOC_SH_DISP12BY4: howto manager. (line 865) -* BFD_RELOC_SH_DISP12BY8: howto manager. (line 866) -* BFD_RELOC_SH_DISP20: howto manager. (line 867) -* BFD_RELOC_SH_DISP20BY8: howto manager. (line 868) -* BFD_RELOC_SH_FUNCDESC: howto manager. (line 955) -* BFD_RELOC_SH_GLOB_DAT: howto manager. (line 888) -* BFD_RELOC_SH_GLOB_DAT64: howto manager. (line 913) -* BFD_RELOC_SH_GOT10BY4: howto manager. (line 916) -* BFD_RELOC_SH_GOT10BY8: howto manager. (line 917) -* BFD_RELOC_SH_GOT20: howto manager. (line 949) -* BFD_RELOC_SH_GOTFUNCDESC: howto manager. (line 951) -* BFD_RELOC_SH_GOTFUNCDESC20: howto manager. (line 952) -* BFD_RELOC_SH_GOTOFF20: howto manager. (line 950) -* BFD_RELOC_SH_GOTOFFFUNCDESC: howto manager. (line 953) -* BFD_RELOC_SH_GOTOFFFUNCDESC20: howto manager. (line 954) -* BFD_RELOC_SH_GOTOFF_HI16: howto manager. (line 907) -* BFD_RELOC_SH_GOTOFF_LOW16: howto manager. (line 904) -* BFD_RELOC_SH_GOTOFF_MEDHI16: howto manager. (line 906) -* BFD_RELOC_SH_GOTOFF_MEDLOW16: howto manager. (line 905) -* BFD_RELOC_SH_GOTPC: howto manager. (line 891) -* BFD_RELOC_SH_GOTPC_HI16: howto manager. (line 911) -* BFD_RELOC_SH_GOTPC_LOW16: howto manager. (line 908) -* BFD_RELOC_SH_GOTPC_MEDHI16: howto manager. (line 910) -* BFD_RELOC_SH_GOTPC_MEDLOW16: howto manager. (line 909) -* BFD_RELOC_SH_GOTPLT10BY4: howto manager. (line 918) -* BFD_RELOC_SH_GOTPLT10BY8: howto manager. (line 919) -* BFD_RELOC_SH_GOTPLT32: howto manager. (line 920) -* BFD_RELOC_SH_GOTPLT_HI16: howto manager. (line 899) -* BFD_RELOC_SH_GOTPLT_LOW16: howto manager. (line 896) -* BFD_RELOC_SH_GOTPLT_MEDHI16: howto manager. (line 898) -* BFD_RELOC_SH_GOTPLT_MEDLOW16: howto manager. (line 897) -* BFD_RELOC_SH_GOT_HI16: howto manager. (line 895) -* BFD_RELOC_SH_GOT_LOW16: howto manager. (line 892) -* BFD_RELOC_SH_GOT_MEDHI16: howto manager. (line 894) -* BFD_RELOC_SH_GOT_MEDLOW16: howto manager. (line 893) -* BFD_RELOC_SH_IMM3: howto manager. (line 861) -* BFD_RELOC_SH_IMM3U: howto manager. (line 862) -* BFD_RELOC_SH_IMM4: howto manager. (line 869) -* BFD_RELOC_SH_IMM4BY2: howto manager. (line 870) -* BFD_RELOC_SH_IMM4BY4: howto manager. (line 871) -* BFD_RELOC_SH_IMM8: howto manager. (line 872) -* BFD_RELOC_SH_IMM8BY2: howto manager. (line 873) -* BFD_RELOC_SH_IMM8BY4: howto manager. (line 874) -* BFD_RELOC_SH_IMMS10: howto manager. (line 926) -* BFD_RELOC_SH_IMMS10BY2: howto manager. (line 927) -* BFD_RELOC_SH_IMMS10BY4: howto manager. (line 928) -* BFD_RELOC_SH_IMMS10BY8: howto manager. (line 929) -* BFD_RELOC_SH_IMMS16: howto manager. (line 930) -* BFD_RELOC_SH_IMMS6: howto manager. (line 923) -* BFD_RELOC_SH_IMMS6BY32: howto manager. (line 924) -* BFD_RELOC_SH_IMMU16: howto manager. (line 931) -* BFD_RELOC_SH_IMMU5: howto manager. (line 922) -* BFD_RELOC_SH_IMMU6: howto manager. (line 925) -* BFD_RELOC_SH_IMM_HI16: howto manager. (line 938) -* BFD_RELOC_SH_IMM_HI16_PCREL: howto manager. (line 939) -* BFD_RELOC_SH_IMM_LOW16: howto manager. (line 932) -* BFD_RELOC_SH_IMM_LOW16_PCREL: howto manager. (line 933) -* BFD_RELOC_SH_IMM_MEDHI16: howto manager. (line 936) -* BFD_RELOC_SH_IMM_MEDHI16_PCREL: howto manager. (line 937) -* BFD_RELOC_SH_IMM_MEDLOW16: howto manager. (line 934) -* BFD_RELOC_SH_IMM_MEDLOW16_PCREL: howto manager. (line 935) -* BFD_RELOC_SH_JMP_SLOT: howto manager. (line 889) -* BFD_RELOC_SH_JMP_SLOT64: howto manager. (line 914) -* BFD_RELOC_SH_LABEL: howto manager. (line 884) -* BFD_RELOC_SH_LOOP_END: howto manager. (line 886) -* BFD_RELOC_SH_LOOP_START: howto manager. (line 885) -* BFD_RELOC_SH_PCDISP12BY2: howto manager. (line 860) -* BFD_RELOC_SH_PCDISP8BY2: howto manager. (line 859) -* BFD_RELOC_SH_PCRELIMM8BY2: howto manager. (line 875) -* BFD_RELOC_SH_PCRELIMM8BY4: howto manager. (line 876) -* BFD_RELOC_SH_PLT_HI16: howto manager. (line 903) -* BFD_RELOC_SH_PLT_LOW16: howto manager. (line 900) -* BFD_RELOC_SH_PLT_MEDHI16: howto manager. (line 902) -* BFD_RELOC_SH_PLT_MEDLOW16: howto manager. (line 901) -* BFD_RELOC_SH_PT_16: howto manager. (line 940) -* BFD_RELOC_SH_RELATIVE: howto manager. (line 890) -* BFD_RELOC_SH_RELATIVE64: howto manager. (line 915) -* BFD_RELOC_SH_SHMEDIA_CODE: howto manager. (line 921) -* BFD_RELOC_SH_SWITCH16: howto manager. (line 877) -* BFD_RELOC_SH_SWITCH32: howto manager. (line 878) -* BFD_RELOC_SH_TLS_DTPMOD32: howto manager. (line 946) -* BFD_RELOC_SH_TLS_DTPOFF32: howto manager. (line 947) -* BFD_RELOC_SH_TLS_GD_32: howto manager. (line 941) -* BFD_RELOC_SH_TLS_IE_32: howto manager. (line 944) -* BFD_RELOC_SH_TLS_LDO_32: howto manager. (line 943) -* BFD_RELOC_SH_TLS_LD_32: howto manager. (line 942) -* BFD_RELOC_SH_TLS_LE_32: howto manager. (line 945) -* BFD_RELOC_SH_TLS_TPOFF32: howto manager. (line 948) -* BFD_RELOC_SH_USES: howto manager. (line 879) +* BFD_RELOC_RX_16U: howto manager. (line 1736) +* BFD_RELOC_RX_16_OP: howto manager. (line 1732) +* BFD_RELOC_RX_24U: howto manager. (line 1737) +* BFD_RELOC_RX_24_OP: howto manager. (line 1733) +* BFD_RELOC_RX_32_OP: howto manager. (line 1734) +* BFD_RELOC_RX_8U: howto manager. (line 1735) +* BFD_RELOC_RX_ABS16: howto manager. (line 1747) +* BFD_RELOC_RX_ABS16U: howto manager. (line 1751) +* BFD_RELOC_RX_ABS16UL: howto manager. (line 1753) +* BFD_RELOC_RX_ABS16UW: howto manager. (line 1752) +* BFD_RELOC_RX_ABS16_REV: howto manager. (line 1748) +* BFD_RELOC_RX_ABS32: howto manager. (line 1749) +* BFD_RELOC_RX_ABS32_REV: howto manager. (line 1750) +* BFD_RELOC_RX_ABS8: howto manager. (line 1746) +* BFD_RELOC_RX_DIFF: howto manager. (line 1739) +* BFD_RELOC_RX_DIR3U_PCREL: howto manager. (line 1738) +* BFD_RELOC_RX_GPRELB: howto manager. (line 1740) +* BFD_RELOC_RX_GPRELL: howto manager. (line 1742) +* BFD_RELOC_RX_GPRELW: howto manager. (line 1741) +* BFD_RELOC_RX_NEG16: howto manager. (line 1729) +* BFD_RELOC_RX_NEG24: howto manager. (line 1730) +* BFD_RELOC_RX_NEG32: howto manager. (line 1731) +* BFD_RELOC_RX_NEG8: howto manager. (line 1728) +* BFD_RELOC_RX_OP_NEG: howto manager. (line 1745) +* BFD_RELOC_RX_OP_SUBTRACT: howto manager. (line 1744) +* BFD_RELOC_RX_RELAX: howto manager. (line 1754) +* BFD_RELOC_RX_SYM: howto manager. (line 1743) +* BFD_RELOC_SCORE16_BRANCH: howto manager. (line 1857) +* BFD_RELOC_SCORE16_JMP: howto manager. (line 1855) +* BFD_RELOC_SCORE_BCMP: howto manager. (line 1859) +* BFD_RELOC_SCORE_BRANCH: howto manager. (line 1849) +* BFD_RELOC_SCORE_CALL15: howto manager. (line 1863) +* BFD_RELOC_SCORE_DUMMY2: howto manager. (line 1846) +* BFD_RELOC_SCORE_DUMMY_HI16: howto manager. (line 1864) +* BFD_RELOC_SCORE_GOT15: howto manager. (line 1861) +* BFD_RELOC_SCORE_GOT_LO16: howto manager. (line 1862) +* BFD_RELOC_SCORE_GPREL15: howto manager. (line 1844) +* BFD_RELOC_SCORE_IMM30: howto manager. (line 1851) +* BFD_RELOC_SCORE_IMM32: howto manager. (line 1853) +* BFD_RELOC_SCORE_JMP: howto manager. (line 1847) +* BFD_RELOC_SH_ALIGN: howto manager. (line 886) +* BFD_RELOC_SH_CODE: howto manager. (line 887) +* BFD_RELOC_SH_COPY: howto manager. (line 892) +* BFD_RELOC_SH_COPY64: howto manager. (line 917) +* BFD_RELOC_SH_COUNT: howto manager. (line 885) +* BFD_RELOC_SH_DATA: howto manager. (line 888) +* BFD_RELOC_SH_DISP12: howto manager. (line 868) +* BFD_RELOC_SH_DISP12BY2: howto manager. (line 869) +* BFD_RELOC_SH_DISP12BY4: howto manager. (line 870) +* BFD_RELOC_SH_DISP12BY8: howto manager. (line 871) +* BFD_RELOC_SH_DISP20: howto manager. (line 872) +* BFD_RELOC_SH_DISP20BY8: howto manager. (line 873) +* BFD_RELOC_SH_FUNCDESC: howto manager. (line 960) +* BFD_RELOC_SH_GLOB_DAT: howto manager. (line 893) +* BFD_RELOC_SH_GLOB_DAT64: howto manager. (line 918) +* BFD_RELOC_SH_GOT10BY4: howto manager. (line 921) +* BFD_RELOC_SH_GOT10BY8: howto manager. (line 922) +* BFD_RELOC_SH_GOT20: howto manager. (line 954) +* BFD_RELOC_SH_GOTFUNCDESC: howto manager. (line 956) +* BFD_RELOC_SH_GOTFUNCDESC20: howto manager. (line 957) +* BFD_RELOC_SH_GOTOFF20: howto manager. (line 955) +* BFD_RELOC_SH_GOTOFFFUNCDESC: howto manager. (line 958) +* BFD_RELOC_SH_GOTOFFFUNCDESC20: howto manager. (line 959) +* BFD_RELOC_SH_GOTOFF_HI16: howto manager. (line 912) +* BFD_RELOC_SH_GOTOFF_LOW16: howto manager. (line 909) +* BFD_RELOC_SH_GOTOFF_MEDHI16: howto manager. (line 911) +* BFD_RELOC_SH_GOTOFF_MEDLOW16: howto manager. (line 910) +* BFD_RELOC_SH_GOTPC: howto manager. (line 896) +* BFD_RELOC_SH_GOTPC_HI16: howto manager. (line 916) +* BFD_RELOC_SH_GOTPC_LOW16: howto manager. (line 913) +* BFD_RELOC_SH_GOTPC_MEDHI16: howto manager. (line 915) +* BFD_RELOC_SH_GOTPC_MEDLOW16: howto manager. (line 914) +* BFD_RELOC_SH_GOTPLT10BY4: howto manager. (line 923) +* BFD_RELOC_SH_GOTPLT10BY8: howto manager. (line 924) +* BFD_RELOC_SH_GOTPLT32: howto manager. (line 925) +* BFD_RELOC_SH_GOTPLT_HI16: howto manager. (line 904) +* BFD_RELOC_SH_GOTPLT_LOW16: howto manager. (line 901) +* BFD_RELOC_SH_GOTPLT_MEDHI16: howto manager. (line 903) +* BFD_RELOC_SH_GOTPLT_MEDLOW16: howto manager. (line 902) +* BFD_RELOC_SH_GOT_HI16: howto manager. (line 900) +* BFD_RELOC_SH_GOT_LOW16: howto manager. (line 897) +* BFD_RELOC_SH_GOT_MEDHI16: howto manager. (line 899) +* BFD_RELOC_SH_GOT_MEDLOW16: howto manager. (line 898) +* BFD_RELOC_SH_IMM3: howto manager. (line 866) +* BFD_RELOC_SH_IMM3U: howto manager. (line 867) +* BFD_RELOC_SH_IMM4: howto manager. (line 874) +* BFD_RELOC_SH_IMM4BY2: howto manager. (line 875) +* BFD_RELOC_SH_IMM4BY4: howto manager. (line 876) +* BFD_RELOC_SH_IMM8: howto manager. (line 877) +* BFD_RELOC_SH_IMM8BY2: howto manager. (line 878) +* BFD_RELOC_SH_IMM8BY4: howto manager. (line 879) +* BFD_RELOC_SH_IMMS10: howto manager. (line 931) +* BFD_RELOC_SH_IMMS10BY2: howto manager. (line 932) +* BFD_RELOC_SH_IMMS10BY4: howto manager. (line 933) +* BFD_RELOC_SH_IMMS10BY8: howto manager. (line 934) +* BFD_RELOC_SH_IMMS16: howto manager. (line 935) +* BFD_RELOC_SH_IMMS6: howto manager. (line 928) +* BFD_RELOC_SH_IMMS6BY32: howto manager. (line 929) +* BFD_RELOC_SH_IMMU16: howto manager. (line 936) +* BFD_RELOC_SH_IMMU5: howto manager. (line 927) +* BFD_RELOC_SH_IMMU6: howto manager. (line 930) +* BFD_RELOC_SH_IMM_HI16: howto manager. (line 943) +* BFD_RELOC_SH_IMM_HI16_PCREL: howto manager. (line 944) +* BFD_RELOC_SH_IMM_LOW16: howto manager. (line 937) +* BFD_RELOC_SH_IMM_LOW16_PCREL: howto manager. (line 938) +* BFD_RELOC_SH_IMM_MEDHI16: howto manager. (line 941) +* BFD_RELOC_SH_IMM_MEDHI16_PCREL: howto manager. (line 942) +* BFD_RELOC_SH_IMM_MEDLOW16: howto manager. (line 939) +* BFD_RELOC_SH_IMM_MEDLOW16_PCREL: howto manager. (line 940) +* BFD_RELOC_SH_JMP_SLOT: howto manager. (line 894) +* BFD_RELOC_SH_JMP_SLOT64: howto manager. (line 919) +* BFD_RELOC_SH_LABEL: howto manager. (line 889) +* BFD_RELOC_SH_LOOP_END: howto manager. (line 891) +* BFD_RELOC_SH_LOOP_START: howto manager. (line 890) +* BFD_RELOC_SH_PCDISP12BY2: howto manager. (line 865) +* BFD_RELOC_SH_PCDISP8BY2: howto manager. (line 864) +* BFD_RELOC_SH_PCRELIMM8BY2: howto manager. (line 880) +* BFD_RELOC_SH_PCRELIMM8BY4: howto manager. (line 881) +* BFD_RELOC_SH_PLT_HI16: howto manager. (line 908) +* BFD_RELOC_SH_PLT_LOW16: howto manager. (line 905) +* BFD_RELOC_SH_PLT_MEDHI16: howto manager. (line 907) +* BFD_RELOC_SH_PLT_MEDLOW16: howto manager. (line 906) +* BFD_RELOC_SH_PT_16: howto manager. (line 945) +* BFD_RELOC_SH_RELATIVE: howto manager. (line 895) +* BFD_RELOC_SH_RELATIVE64: howto manager. (line 920) +* BFD_RELOC_SH_SHMEDIA_CODE: howto manager. (line 926) +* BFD_RELOC_SH_SWITCH16: howto manager. (line 882) +* BFD_RELOC_SH_SWITCH32: howto manager. (line 883) +* BFD_RELOC_SH_TLS_DTPMOD32: howto manager. (line 951) +* BFD_RELOC_SH_TLS_DTPOFF32: howto manager. (line 952) +* BFD_RELOC_SH_TLS_GD_32: howto manager. (line 946) +* BFD_RELOC_SH_TLS_IE_32: howto manager. (line 949) +* BFD_RELOC_SH_TLS_LDO_32: howto manager. (line 948) +* BFD_RELOC_SH_TLS_LD_32: howto manager. (line 947) +* BFD_RELOC_SH_TLS_LE_32: howto manager. (line 950) +* BFD_RELOC_SH_TLS_TPOFF32: howto manager. (line 953) +* BFD_RELOC_SH_USES: howto manager. (line 884) * BFD_RELOC_SIZE32: howto manager. (line 69) * BFD_RELOC_SIZE64: howto manager. (line 70) * BFD_RELOC_SPARC13: howto manager. (line 125) @@ -12713,375 +12861,375 @@ BFD Index * BFD_RELOC_SPU_PCREL9b: howto manager. (line 215) * BFD_RELOC_SPU_PPU32: howto manager. (line 219) * BFD_RELOC_SPU_PPU64: howto manager. (line 220) -* BFD_RELOC_THUMB_PCREL_BLX: howto manager. (line 726) -* BFD_RELOC_THUMB_PCREL_BRANCH12: howto manager. (line 737) -* BFD_RELOC_THUMB_PCREL_BRANCH20: howto manager. (line 738) -* BFD_RELOC_THUMB_PCREL_BRANCH23: howto manager. (line 739) -* BFD_RELOC_THUMB_PCREL_BRANCH25: howto manager. (line 740) -* BFD_RELOC_THUMB_PCREL_BRANCH7: howto manager. (line 735) -* BFD_RELOC_THUMB_PCREL_BRANCH9: howto manager. (line 736) -* BFD_RELOC_TIC30_LDP: howto manager. (line 1399) -* BFD_RELOC_TIC54X_16_OF_23: howto manager. (line 1413) -* BFD_RELOC_TIC54X_23: howto manager. (line 1411) -* BFD_RELOC_TIC54X_MS7_OF_23: howto manager. (line 1417) -* BFD_RELOC_TIC54X_PARTLS7: howto manager. (line 1403) -* BFD_RELOC_TIC54X_PARTMS9: howto manager. (line 1407) -* BFD_RELOC_TILEGX_BROFF_X1: howto manager. (line 2859) -* BFD_RELOC_TILEGX_COPY: howto manager. (line 2855) -* BFD_RELOC_TILEGX_DEST_IMM8_X1: howto manager. (line 2866) -* BFD_RELOC_TILEGX_GLOB_DAT: howto manager. (line 2856) -* BFD_RELOC_TILEGX_HW0: howto manager. (line 2848) -* BFD_RELOC_TILEGX_HW0_LAST: howto manager. (line 2852) -* BFD_RELOC_TILEGX_HW1: howto manager. (line 2849) -* BFD_RELOC_TILEGX_HW1_LAST: howto manager. (line 2853) -* BFD_RELOC_TILEGX_HW2: howto manager. (line 2850) -* BFD_RELOC_TILEGX_HW2_LAST: howto manager. (line 2854) -* BFD_RELOC_TILEGX_HW3: howto manager. (line 2851) -* BFD_RELOC_TILEGX_IMM16_X0_HW0: howto manager. (line 2875) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT: howto manager. (line 2903) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST: howto manager. (line 2883) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT: howto manager. (line 2911) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL: howto manager. (line 2897) +* BFD_RELOC_THUMB_PCREL_BLX: howto manager. (line 731) +* BFD_RELOC_THUMB_PCREL_BRANCH12: howto manager. (line 742) +* BFD_RELOC_THUMB_PCREL_BRANCH20: howto manager. (line 743) +* BFD_RELOC_THUMB_PCREL_BRANCH23: howto manager. (line 744) +* BFD_RELOC_THUMB_PCREL_BRANCH25: howto manager. (line 745) +* BFD_RELOC_THUMB_PCREL_BRANCH7: howto manager. (line 740) +* BFD_RELOC_THUMB_PCREL_BRANCH9: howto manager. (line 741) +* BFD_RELOC_TIC30_LDP: howto manager. (line 1404) +* BFD_RELOC_TIC54X_16_OF_23: howto manager. (line 1418) +* BFD_RELOC_TIC54X_23: howto manager. (line 1416) +* BFD_RELOC_TIC54X_MS7_OF_23: howto manager. (line 1422) +* BFD_RELOC_TIC54X_PARTLS7: howto manager. (line 1408) +* BFD_RELOC_TIC54X_PARTMS9: howto manager. (line 1412) +* BFD_RELOC_TILEGX_BROFF_X1: howto manager. (line 2889) +* BFD_RELOC_TILEGX_COPY: howto manager. (line 2885) +* BFD_RELOC_TILEGX_DEST_IMM8_X1: howto manager. (line 2896) +* BFD_RELOC_TILEGX_GLOB_DAT: howto manager. (line 2886) +* BFD_RELOC_TILEGX_HW0: howto manager. (line 2878) +* BFD_RELOC_TILEGX_HW0_LAST: howto manager. (line 2882) +* BFD_RELOC_TILEGX_HW1: howto manager. (line 2879) +* BFD_RELOC_TILEGX_HW1_LAST: howto manager. (line 2883) +* BFD_RELOC_TILEGX_HW2: howto manager. (line 2880) +* BFD_RELOC_TILEGX_HW2_LAST: howto manager. (line 2884) +* BFD_RELOC_TILEGX_HW3: howto manager. (line 2881) +* BFD_RELOC_TILEGX_IMM16_X0_HW0: howto manager. (line 2905) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT: howto manager. (line 2933) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST: howto manager. (line 2913) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT: howto manager. (line 2941) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL: howto manager. (line 2927) * BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL: howto manager. - (line 2931) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: howto manager. (line 2925) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: howto manager. (line 2937) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: howto manager. (line 2921) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL: howto manager. (line 2889) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL: howto manager. (line 2905) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD: howto manager. (line 2917) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE: howto manager. (line 2929) -* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE: howto manager. (line 2919) -* BFD_RELOC_TILEGX_IMM16_X0_HW1: howto manager. (line 2877) -* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST: howto manager. (line 2885) -* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT: howto manager. (line 2913) -* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL: howto manager. (line 2899) + (line 2961) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: howto manager. (line 2955) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: howto manager. (line 2967) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: howto manager. (line 2951) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL: howto manager. (line 2919) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL: howto manager. (line 2935) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD: howto manager. (line 2947) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE: howto manager. (line 2959) +* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE: howto manager. (line 2949) +* BFD_RELOC_TILEGX_IMM16_X0_HW1: howto manager. (line 2907) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST: howto manager. (line 2915) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT: howto manager. (line 2943) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL: howto manager. (line 2929) * BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL: howto manager. - (line 2933) -* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: howto manager. (line 2927) -* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: howto manager. (line 2939) -* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: howto manager. (line 2923) -* BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL: howto manager. (line 2891) -* BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL: howto manager. (line 2907) -* BFD_RELOC_TILEGX_IMM16_X0_HW2: howto manager. (line 2879) -* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST: howto manager. (line 2887) -* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL: howto manager. (line 2901) + (line 2963) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: howto manager. (line 2957) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: howto manager. (line 2969) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: howto manager. (line 2953) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL: howto manager. (line 2921) +* BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL: howto manager. (line 2937) +* BFD_RELOC_TILEGX_IMM16_X0_HW2: howto manager. (line 2909) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST: howto manager. (line 2917) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL: howto manager. (line 2931) * BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL: howto manager. - (line 2935) -* BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL: howto manager. (line 2893) -* BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL: howto manager. (line 2909) -* BFD_RELOC_TILEGX_IMM16_X0_HW3: howto manager. (line 2881) -* BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL: howto manager. (line 2895) -* BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL: howto manager. (line 2915) -* BFD_RELOC_TILEGX_IMM16_X1_HW0: howto manager. (line 2876) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT: howto manager. (line 2904) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST: howto manager. (line 2884) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT: howto manager. (line 2912) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL: howto manager. (line 2898) + (line 2965) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL: howto manager. (line 2923) +* BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL: howto manager. (line 2939) +* BFD_RELOC_TILEGX_IMM16_X0_HW3: howto manager. (line 2911) +* BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL: howto manager. (line 2925) +* BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL: howto manager. (line 2945) +* BFD_RELOC_TILEGX_IMM16_X1_HW0: howto manager. (line 2906) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT: howto manager. (line 2934) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST: howto manager. (line 2914) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT: howto manager. (line 2942) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL: howto manager. (line 2928) * BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL: howto manager. - (line 2932) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: howto manager. (line 2926) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: howto manager. (line 2938) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: howto manager. (line 2922) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL: howto manager. (line 2890) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL: howto manager. (line 2906) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD: howto manager. (line 2918) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE: howto manager. (line 2930) -* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE: howto manager. (line 2920) -* BFD_RELOC_TILEGX_IMM16_X1_HW1: howto manager. (line 2878) -* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST: howto manager. (line 2886) -* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT: howto manager. (line 2914) -* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL: howto manager. (line 2900) + (line 2962) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: howto manager. (line 2956) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: howto manager. (line 2968) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: howto manager. (line 2952) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL: howto manager. (line 2920) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL: howto manager. (line 2936) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD: howto manager. (line 2948) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE: howto manager. (line 2960) +* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE: howto manager. (line 2950) +* BFD_RELOC_TILEGX_IMM16_X1_HW1: howto manager. (line 2908) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST: howto manager. (line 2916) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT: howto manager. (line 2944) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL: howto manager. (line 2930) * BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL: howto manager. - (line 2934) -* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: howto manager. (line 2928) -* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: howto manager. (line 2940) -* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: howto manager. (line 2924) -* BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL: howto manager. (line 2892) -* BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL: howto manager. (line 2908) -* BFD_RELOC_TILEGX_IMM16_X1_HW2: howto manager. (line 2880) -* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST: howto manager. (line 2888) -* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL: howto manager. (line 2902) + (line 2964) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: howto manager. (line 2958) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: howto manager. (line 2970) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: howto manager. (line 2954) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL: howto manager. (line 2922) +* BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL: howto manager. (line 2938) +* BFD_RELOC_TILEGX_IMM16_X1_HW2: howto manager. (line 2910) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST: howto manager. (line 2918) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL: howto manager. (line 2932) * BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL: howto manager. - (line 2936) -* BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL: howto manager. (line 2894) -* BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL: howto manager. (line 2910) -* BFD_RELOC_TILEGX_IMM16_X1_HW3: howto manager. (line 2882) -* BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL: howto manager. (line 2896) -* BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL: howto manager. (line 2916) -* BFD_RELOC_TILEGX_IMM8_X0: howto manager. (line 2862) -* BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD: howto manager. (line 2953) -* BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD: howto manager. (line 2948) -* BFD_RELOC_TILEGX_IMM8_X1: howto manager. (line 2864) -* BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD: howto manager. (line 2954) -* BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD: howto manager. (line 2949) -* BFD_RELOC_TILEGX_IMM8_Y0: howto manager. (line 2863) -* BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD: howto manager. (line 2955) -* BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD: howto manager. (line 2950) -* BFD_RELOC_TILEGX_IMM8_Y1: howto manager. (line 2865) -* BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD: howto manager. (line 2956) -* BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD: howto manager. (line 2951) -* BFD_RELOC_TILEGX_JMP_SLOT: howto manager. (line 2857) -* BFD_RELOC_TILEGX_JUMPOFF_X1: howto manager. (line 2860) -* BFD_RELOC_TILEGX_JUMPOFF_X1_PLT: howto manager. (line 2861) -* BFD_RELOC_TILEGX_MF_IMM14_X1: howto manager. (line 2868) -* BFD_RELOC_TILEGX_MMEND_X0: howto manager. (line 2870) -* BFD_RELOC_TILEGX_MMSTART_X0: howto manager. (line 2869) -* BFD_RELOC_TILEGX_MT_IMM14_X1: howto manager. (line 2867) -* BFD_RELOC_TILEGX_RELATIVE: howto manager. (line 2858) -* BFD_RELOC_TILEGX_SHAMT_X0: howto manager. (line 2871) -* BFD_RELOC_TILEGX_SHAMT_X1: howto manager. (line 2872) -* BFD_RELOC_TILEGX_SHAMT_Y0: howto manager. (line 2873) -* BFD_RELOC_TILEGX_SHAMT_Y1: howto manager. (line 2874) -* BFD_RELOC_TILEGX_TLS_DTPMOD32: howto manager. (line 2944) -* BFD_RELOC_TILEGX_TLS_DTPMOD64: howto manager. (line 2941) -* BFD_RELOC_TILEGX_TLS_DTPOFF32: howto manager. (line 2945) -* BFD_RELOC_TILEGX_TLS_DTPOFF64: howto manager. (line 2942) -* BFD_RELOC_TILEGX_TLS_GD_CALL: howto manager. (line 2947) -* BFD_RELOC_TILEGX_TLS_IE_LOAD: howto manager. (line 2952) -* BFD_RELOC_TILEGX_TLS_TPOFF32: howto manager. (line 2946) -* BFD_RELOC_TILEGX_TLS_TPOFF64: howto manager. (line 2943) -* BFD_RELOC_TILEPRO_BROFF_X1: howto manager. (line 2772) -* BFD_RELOC_TILEPRO_COPY: howto manager. (line 2768) -* BFD_RELOC_TILEPRO_DEST_IMM8_X1: howto manager. (line 2779) -* BFD_RELOC_TILEPRO_GLOB_DAT: howto manager. (line 2769) -* BFD_RELOC_TILEPRO_IMM16_X0: howto manager. (line 2782) -* BFD_RELOC_TILEPRO_IMM16_X0_GOT: howto manager. (line 2798) -* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA: howto manager. (line 2804) -* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI: howto manager. (line 2802) -* BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO: howto manager. (line 2800) -* BFD_RELOC_TILEPRO_IMM16_X0_HA: howto manager. (line 2788) -* BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL: howto manager. (line 2796) -* BFD_RELOC_TILEPRO_IMM16_X0_HI: howto manager. (line 2786) -* BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL: howto manager. (line 2794) -* BFD_RELOC_TILEPRO_IMM16_X0_LO: howto manager. (line 2784) -* BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL: howto manager. (line 2792) -* BFD_RELOC_TILEPRO_IMM16_X0_PCREL: howto manager. (line 2790) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD: howto manager. (line 2820) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA: howto manager. (line 2826) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI: howto manager. (line 2824) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO: howto manager. (line 2822) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE: howto manager. (line 2828) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA: howto manager. (line 2834) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI: howto manager. (line 2832) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO: howto manager. (line 2830) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE: howto manager. (line 2839) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA: howto manager. (line 2845) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI: howto manager. (line 2843) -* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO: howto manager. (line 2841) -* BFD_RELOC_TILEPRO_IMM16_X1: howto manager. (line 2783) -* BFD_RELOC_TILEPRO_IMM16_X1_GOT: howto manager. (line 2799) -* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA: howto manager. (line 2805) -* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI: howto manager. (line 2803) -* BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO: howto manager. (line 2801) -* BFD_RELOC_TILEPRO_IMM16_X1_HA: howto manager. (line 2789) -* BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL: howto manager. (line 2797) -* BFD_RELOC_TILEPRO_IMM16_X1_HI: howto manager. (line 2787) -* BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL: howto manager. (line 2795) -* BFD_RELOC_TILEPRO_IMM16_X1_LO: howto manager. (line 2785) -* BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL: howto manager. (line 2793) -* BFD_RELOC_TILEPRO_IMM16_X1_PCREL: howto manager. (line 2791) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD: howto manager. (line 2821) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA: howto manager. (line 2827) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI: howto manager. (line 2825) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO: howto manager. (line 2823) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE: howto manager. (line 2829) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA: howto manager. (line 2835) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI: howto manager. (line 2833) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO: howto manager. (line 2831) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE: howto manager. (line 2840) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA: howto manager. (line 2846) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI: howto manager. (line 2844) -* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO: howto manager. (line 2842) -* BFD_RELOC_TILEPRO_IMM8_X0: howto manager. (line 2775) -* BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD: howto manager. (line 2815) -* BFD_RELOC_TILEPRO_IMM8_X1: howto manager. (line 2777) -* BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD: howto manager. (line 2816) -* BFD_RELOC_TILEPRO_IMM8_Y0: howto manager. (line 2776) -* BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD: howto manager. (line 2817) -* BFD_RELOC_TILEPRO_IMM8_Y1: howto manager. (line 2778) -* BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD: howto manager. (line 2818) -* BFD_RELOC_TILEPRO_JMP_SLOT: howto manager. (line 2770) -* BFD_RELOC_TILEPRO_JOFFLONG_X1: howto manager. (line 2773) -* BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT: howto manager. (line 2774) -* BFD_RELOC_TILEPRO_MF_IMM15_X1: howto manager. (line 2781) -* BFD_RELOC_TILEPRO_MMEND_X0: howto manager. (line 2807) -* BFD_RELOC_TILEPRO_MMEND_X1: howto manager. (line 2809) -* BFD_RELOC_TILEPRO_MMSTART_X0: howto manager. (line 2806) -* BFD_RELOC_TILEPRO_MMSTART_X1: howto manager. (line 2808) -* BFD_RELOC_TILEPRO_MT_IMM15_X1: howto manager. (line 2780) -* BFD_RELOC_TILEPRO_RELATIVE: howto manager. (line 2771) -* BFD_RELOC_TILEPRO_SHAMT_X0: howto manager. (line 2810) -* BFD_RELOC_TILEPRO_SHAMT_X1: howto manager. (line 2811) -* BFD_RELOC_TILEPRO_SHAMT_Y0: howto manager. (line 2812) -* BFD_RELOC_TILEPRO_SHAMT_Y1: howto manager. (line 2813) -* BFD_RELOC_TILEPRO_TLS_DTPMOD32: howto manager. (line 2836) -* BFD_RELOC_TILEPRO_TLS_DTPOFF32: howto manager. (line 2837) -* BFD_RELOC_TILEPRO_TLS_GD_CALL: howto manager. (line 2814) -* BFD_RELOC_TILEPRO_TLS_IE_LOAD: howto manager. (line 2819) -* BFD_RELOC_TILEPRO_TLS_TPOFF32: howto manager. (line 2838) -* bfd_reloc_type_lookup: howto manager. (line 2983) -* BFD_RELOC_V850_16_GOT: howto manager. (line 1375) -* BFD_RELOC_V850_16_GOTOFF: howto manager. (line 1391) -* BFD_RELOC_V850_16_PCREL: howto manager. (line 1355) -* BFD_RELOC_V850_16_S1: howto manager. (line 1367) -* BFD_RELOC_V850_16_SPLIT_OFFSET: howto manager. (line 1365) -* BFD_RELOC_V850_17_PCREL: howto manager. (line 1357) -* BFD_RELOC_V850_22_PCREL: howto manager. (line 1309) -* BFD_RELOC_V850_22_PLT_PCREL: howto manager. (line 1379) -* BFD_RELOC_V850_23: howto manager. (line 1359) -* BFD_RELOC_V850_32_ABS: howto manager. (line 1363) -* BFD_RELOC_V850_32_GOT: howto manager. (line 1377) -* BFD_RELOC_V850_32_GOTOFF: howto manager. (line 1393) -* BFD_RELOC_V850_32_GOTPCREL: howto manager. (line 1373) -* BFD_RELOC_V850_32_PCREL: howto manager. (line 1361) -* BFD_RELOC_V850_32_PLT_PCREL: howto manager. (line 1381) -* BFD_RELOC_V850_9_PCREL: howto manager. (line 1307) -* BFD_RELOC_V850_ALIGN: howto manager. (line 1350) -* BFD_RELOC_V850_CALLT_15_16_OFFSET: howto manager. (line 1371) -* BFD_RELOC_V850_CALLT_16_16_OFFSET: howto manager. (line 1344) -* BFD_RELOC_V850_CALLT_6_7_OFFSET: howto manager. (line 1342) -* BFD_RELOC_V850_CODE: howto manager. (line 1395) -* BFD_RELOC_V850_COPY: howto manager. (line 1383) -* BFD_RELOC_V850_DATA: howto manager. (line 1397) -* BFD_RELOC_V850_GLOB_DAT: howto manager. (line 1385) -* BFD_RELOC_V850_JMP_SLOT: howto manager. (line 1387) -* BFD_RELOC_V850_LO16_S1: howto manager. (line 1369) -* BFD_RELOC_V850_LO16_SPLIT_OFFSET: howto manager. (line 1352) -* BFD_RELOC_V850_LONGCALL: howto manager. (line 1346) -* BFD_RELOC_V850_LONGJUMP: howto manager. (line 1348) -* BFD_RELOC_V850_RELATIVE: howto manager. (line 1389) -* BFD_RELOC_V850_SDA_15_16_OFFSET: howto manager. (line 1313) -* BFD_RELOC_V850_SDA_16_16_OFFSET: howto manager. (line 1311) -* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager. (line 1336) -* BFD_RELOC_V850_TDA_16_16_OFFSET: howto manager. (line 1329) -* BFD_RELOC_V850_TDA_4_4_OFFSET: howto manager. (line 1334) -* BFD_RELOC_V850_TDA_4_5_OFFSET: howto manager. (line 1331) -* BFD_RELOC_V850_TDA_6_8_OFFSET: howto manager. (line 1321) -* BFD_RELOC_V850_TDA_7_7_OFFSET: howto manager. (line 1327) -* BFD_RELOC_V850_TDA_7_8_OFFSET: howto manager. (line 1324) -* BFD_RELOC_V850_ZDA_15_16_OFFSET: howto manager. (line 1318) -* BFD_RELOC_V850_ZDA_16_16_OFFSET: howto manager. (line 1316) -* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager. (line 1339) -* BFD_RELOC_VAX_GLOB_DAT: howto manager. (line 2278) -* BFD_RELOC_VAX_JMP_SLOT: howto manager. (line 2279) -* BFD_RELOC_VAX_RELATIVE: howto manager. (line 2280) -* BFD_RELOC_VISIUM_HI16: howto manager. (line 2973) -* BFD_RELOC_VISIUM_HI16_PCREL: howto manager. (line 2977) -* BFD_RELOC_VISIUM_IM16: howto manager. (line 2975) -* BFD_RELOC_VISIUM_IM16_PCREL: howto manager. (line 2979) -* BFD_RELOC_VISIUM_LO16: howto manager. (line 2974) -* BFD_RELOC_VISIUM_LO16_PCREL: howto manager. (line 2978) -* BFD_RELOC_VISIUM_REL16: howto manager. (line 2976) -* BFD_RELOC_VPE4KMATH_DATA: howto manager. (line 1881) -* BFD_RELOC_VPE4KMATH_INSN: howto manager. (line 1882) -* BFD_RELOC_VTABLE_ENTRY: howto manager. (line 1885) -* BFD_RELOC_VTABLE_INHERIT: howto manager. (line 1884) -* BFD_RELOC_X86_64_32S: howto manager. (line 545) -* BFD_RELOC_X86_64_COPY: howto manager. (line 540) -* BFD_RELOC_X86_64_DTPMOD64: howto manager. (line 546) -* BFD_RELOC_X86_64_DTPOFF32: howto manager. (line 551) -* BFD_RELOC_X86_64_DTPOFF64: howto manager. (line 547) -* BFD_RELOC_X86_64_GLOB_DAT: howto manager. (line 541) -* BFD_RELOC_X86_64_GOT32: howto manager. (line 538) -* BFD_RELOC_X86_64_GOT64: howto manager. (line 556) -* BFD_RELOC_X86_64_GOTOFF64: howto manager. (line 554) -* BFD_RELOC_X86_64_GOTPC32: howto manager. (line 555) -* BFD_RELOC_X86_64_GOTPC32_TLSDESC: howto manager. (line 561) -* BFD_RELOC_X86_64_GOTPC64: howto manager. (line 558) -* BFD_RELOC_X86_64_GOTPCREL: howto manager. (line 544) -* BFD_RELOC_X86_64_GOTPCREL64: howto manager. (line 557) -* BFD_RELOC_X86_64_GOTPLT64: howto manager. (line 559) -* BFD_RELOC_X86_64_GOTTPOFF: howto manager. (line 552) -* BFD_RELOC_X86_64_IRELATIVE: howto manager. (line 564) -* BFD_RELOC_X86_64_JUMP_SLOT: howto manager. (line 542) -* BFD_RELOC_X86_64_PC32_BND: howto manager. (line 565) -* BFD_RELOC_X86_64_PLT32: howto manager. (line 539) -* BFD_RELOC_X86_64_PLT32_BND: howto manager. (line 566) -* BFD_RELOC_X86_64_PLTOFF64: howto manager. (line 560) -* BFD_RELOC_X86_64_RELATIVE: howto manager. (line 543) -* BFD_RELOC_X86_64_TLSDESC: howto manager. (line 563) -* BFD_RELOC_X86_64_TLSDESC_CALL: howto manager. (line 562) -* BFD_RELOC_X86_64_TLSGD: howto manager. (line 549) -* BFD_RELOC_X86_64_TLSLD: howto manager. (line 550) -* BFD_RELOC_X86_64_TPOFF32: howto manager. (line 553) -* BFD_RELOC_X86_64_TPOFF64: howto manager. (line 548) -* BFD_RELOC_XC16X_PAG: howto manager. (line 2273) -* BFD_RELOC_XC16X_POF: howto manager. (line 2274) -* BFD_RELOC_XC16X_SEG: howto manager. (line 2275) -* BFD_RELOC_XC16X_SOF: howto manager. (line 2276) -* BFD_RELOC_XGATE_24: howto manager. (line 2028) -* BFD_RELOC_XGATE_GPAGE: howto manager. (line 2026) -* BFD_RELOC_XGATE_IMM3: howto manager. (line 2040) -* BFD_RELOC_XGATE_IMM4: howto manager. (line 2042) -* BFD_RELOC_XGATE_IMM5: howto manager. (line 2044) -* BFD_RELOC_XGATE_IMM8_HI: howto manager. (line 2037) -* BFD_RELOC_XGATE_IMM8_LO: howto manager. (line 2034) -* BFD_RELOC_XGATE_LO16: howto manager. (line 2023) -* BFD_RELOC_XGATE_PCREL_10: howto manager. (line 2032) -* BFD_RELOC_XGATE_PCREL_9: howto manager. (line 2030) -* BFD_RELOC_XGATE_RL_GROUP: howto manager. (line 2019) -* BFD_RELOC_XGATE_RL_JUMP: howto manager. (line 2016) -* BFD_RELOC_XSTORMY16_12: howto manager. (line 2267) -* BFD_RELOC_XSTORMY16_24: howto manager. (line 2268) -* BFD_RELOC_XSTORMY16_FPTR16: howto manager. (line 2269) -* BFD_RELOC_XSTORMY16_REL_12: howto manager. (line 2266) -* BFD_RELOC_XTENSA_ASM_EXPAND: howto manager. (line 2423) -* BFD_RELOC_XTENSA_ASM_SIMPLIFY: howto manager. (line 2427) -* BFD_RELOC_XTENSA_DIFF16: howto manager. (line 2374) -* BFD_RELOC_XTENSA_DIFF32: howto manager. (line 2375) -* BFD_RELOC_XTENSA_DIFF8: howto manager. (line 2373) -* BFD_RELOC_XTENSA_GLOB_DAT: howto manager. (line 2365) -* BFD_RELOC_XTENSA_JMP_SLOT: howto manager. (line 2366) -* BFD_RELOC_XTENSA_OP0: howto manager. (line 2418) -* BFD_RELOC_XTENSA_OP1: howto manager. (line 2419) -* BFD_RELOC_XTENSA_OP2: howto manager. (line 2420) -* BFD_RELOC_XTENSA_PLT: howto manager. (line 2369) -* BFD_RELOC_XTENSA_RELATIVE: howto manager. (line 2367) -* BFD_RELOC_XTENSA_RTLD: howto manager. (line 2361) -* BFD_RELOC_XTENSA_SLOT0_ALT: howto manager. (line 2401) -* BFD_RELOC_XTENSA_SLOT0_OP: howto manager. (line 2382) -* BFD_RELOC_XTENSA_SLOT10_ALT: howto manager. (line 2411) -* BFD_RELOC_XTENSA_SLOT10_OP: howto manager. (line 2392) -* BFD_RELOC_XTENSA_SLOT11_ALT: howto manager. (line 2412) -* BFD_RELOC_XTENSA_SLOT11_OP: howto manager. (line 2393) -* BFD_RELOC_XTENSA_SLOT12_ALT: howto manager. (line 2413) -* BFD_RELOC_XTENSA_SLOT12_OP: howto manager. (line 2394) -* BFD_RELOC_XTENSA_SLOT13_ALT: howto manager. (line 2414) -* BFD_RELOC_XTENSA_SLOT13_OP: howto manager. (line 2395) -* BFD_RELOC_XTENSA_SLOT14_ALT: howto manager. (line 2415) -* BFD_RELOC_XTENSA_SLOT14_OP: howto manager. (line 2396) -* BFD_RELOC_XTENSA_SLOT1_ALT: howto manager. (line 2402) -* BFD_RELOC_XTENSA_SLOT1_OP: howto manager. (line 2383) -* BFD_RELOC_XTENSA_SLOT2_ALT: howto manager. (line 2403) -* BFD_RELOC_XTENSA_SLOT2_OP: howto manager. (line 2384) -* BFD_RELOC_XTENSA_SLOT3_ALT: howto manager. (line 2404) -* BFD_RELOC_XTENSA_SLOT3_OP: howto manager. (line 2385) -* BFD_RELOC_XTENSA_SLOT4_ALT: howto manager. (line 2405) -* BFD_RELOC_XTENSA_SLOT4_OP: howto manager. (line 2386) -* BFD_RELOC_XTENSA_SLOT5_ALT: howto manager. (line 2406) -* BFD_RELOC_XTENSA_SLOT5_OP: howto manager. (line 2387) -* BFD_RELOC_XTENSA_SLOT6_ALT: howto manager. (line 2407) -* BFD_RELOC_XTENSA_SLOT6_OP: howto manager. (line 2388) -* BFD_RELOC_XTENSA_SLOT7_ALT: howto manager. (line 2408) -* BFD_RELOC_XTENSA_SLOT7_OP: howto manager. (line 2389) -* BFD_RELOC_XTENSA_SLOT8_ALT: howto manager. (line 2409) -* BFD_RELOC_XTENSA_SLOT8_OP: howto manager. (line 2390) -* BFD_RELOC_XTENSA_SLOT9_ALT: howto manager. (line 2410) -* BFD_RELOC_XTENSA_SLOT9_OP: howto manager. (line 2391) -* BFD_RELOC_XTENSA_TLSDESC_ARG: howto manager. (line 2432) -* BFD_RELOC_XTENSA_TLSDESC_FN: howto manager. (line 2431) -* BFD_RELOC_XTENSA_TLS_ARG: howto manager. (line 2436) -* BFD_RELOC_XTENSA_TLS_CALL: howto manager. (line 2437) -* BFD_RELOC_XTENSA_TLS_DTPOFF: howto manager. (line 2433) -* BFD_RELOC_XTENSA_TLS_FUNC: howto manager. (line 2435) -* BFD_RELOC_XTENSA_TLS_TPOFF: howto manager. (line 2434) -* BFD_RELOC_Z80_DISP8: howto manager. (line 2439) -* BFD_RELOC_Z8K_CALLR: howto manager. (line 2443) -* BFD_RELOC_Z8K_DISP7: howto manager. (line 2441) -* BFD_RELOC_Z8K_IMM4L: howto manager. (line 2445) + (line 2966) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL: howto manager. (line 2924) +* BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL: howto manager. (line 2940) +* BFD_RELOC_TILEGX_IMM16_X1_HW3: howto manager. (line 2912) +* BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL: howto manager. (line 2926) +* BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL: howto manager. (line 2946) +* BFD_RELOC_TILEGX_IMM8_X0: howto manager. (line 2892) +* BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD: howto manager. (line 2983) +* BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD: howto manager. (line 2978) +* BFD_RELOC_TILEGX_IMM8_X1: howto manager. (line 2894) +* BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD: howto manager. (line 2984) +* BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD: howto manager. (line 2979) +* BFD_RELOC_TILEGX_IMM8_Y0: howto manager. (line 2893) +* BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD: howto manager. (line 2985) +* BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD: howto manager. (line 2980) +* BFD_RELOC_TILEGX_IMM8_Y1: howto manager. (line 2895) +* BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD: howto manager. (line 2986) +* BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD: howto manager. (line 2981) +* BFD_RELOC_TILEGX_JMP_SLOT: howto manager. (line 2887) +* BFD_RELOC_TILEGX_JUMPOFF_X1: howto manager. (line 2890) +* BFD_RELOC_TILEGX_JUMPOFF_X1_PLT: howto manager. (line 2891) +* BFD_RELOC_TILEGX_MF_IMM14_X1: howto manager. (line 2898) +* BFD_RELOC_TILEGX_MMEND_X0: howto manager. (line 2900) +* BFD_RELOC_TILEGX_MMSTART_X0: howto manager. (line 2899) +* BFD_RELOC_TILEGX_MT_IMM14_X1: howto manager. (line 2897) +* BFD_RELOC_TILEGX_RELATIVE: howto manager. (line 2888) +* BFD_RELOC_TILEGX_SHAMT_X0: howto manager. (line 2901) +* BFD_RELOC_TILEGX_SHAMT_X1: howto manager. (line 2902) +* BFD_RELOC_TILEGX_SHAMT_Y0: howto manager. (line 2903) +* BFD_RELOC_TILEGX_SHAMT_Y1: howto manager. (line 2904) +* BFD_RELOC_TILEGX_TLS_DTPMOD32: howto manager. (line 2974) +* BFD_RELOC_TILEGX_TLS_DTPMOD64: howto manager. (line 2971) +* BFD_RELOC_TILEGX_TLS_DTPOFF32: howto manager. (line 2975) +* BFD_RELOC_TILEGX_TLS_DTPOFF64: howto manager. (line 2972) +* BFD_RELOC_TILEGX_TLS_GD_CALL: howto manager. (line 2977) +* BFD_RELOC_TILEGX_TLS_IE_LOAD: howto manager. (line 2982) +* BFD_RELOC_TILEGX_TLS_TPOFF32: howto manager. (line 2976) +* BFD_RELOC_TILEGX_TLS_TPOFF64: howto manager. (line 2973) +* BFD_RELOC_TILEPRO_BROFF_X1: howto manager. (line 2802) +* BFD_RELOC_TILEPRO_COPY: howto manager. (line 2798) +* BFD_RELOC_TILEPRO_DEST_IMM8_X1: howto manager. (line 2809) +* BFD_RELOC_TILEPRO_GLOB_DAT: howto manager. (line 2799) +* BFD_RELOC_TILEPRO_IMM16_X0: howto manager. (line 2812) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT: howto manager. (line 2828) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA: howto manager. (line 2834) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI: howto manager. (line 2832) +* BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO: howto manager. (line 2830) +* BFD_RELOC_TILEPRO_IMM16_X0_HA: howto manager. (line 2818) +* BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL: howto manager. (line 2826) +* BFD_RELOC_TILEPRO_IMM16_X0_HI: howto manager. (line 2816) +* BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL: howto manager. (line 2824) +* BFD_RELOC_TILEPRO_IMM16_X0_LO: howto manager. (line 2814) +* BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL: howto manager. (line 2822) +* BFD_RELOC_TILEPRO_IMM16_X0_PCREL: howto manager. (line 2820) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD: howto manager. (line 2850) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA: howto manager. (line 2856) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI: howto manager. (line 2854) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO: howto manager. (line 2852) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE: howto manager. (line 2858) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA: howto manager. (line 2864) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI: howto manager. (line 2862) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO: howto manager. (line 2860) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE: howto manager. (line 2869) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA: howto manager. (line 2875) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI: howto manager. (line 2873) +* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO: howto manager. (line 2871) +* BFD_RELOC_TILEPRO_IMM16_X1: howto manager. (line 2813) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT: howto manager. (line 2829) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA: howto manager. (line 2835) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI: howto manager. (line 2833) +* BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO: howto manager. (line 2831) +* BFD_RELOC_TILEPRO_IMM16_X1_HA: howto manager. (line 2819) +* BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL: howto manager. (line 2827) +* BFD_RELOC_TILEPRO_IMM16_X1_HI: howto manager. (line 2817) +* BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL: howto manager. (line 2825) +* BFD_RELOC_TILEPRO_IMM16_X1_LO: howto manager. (line 2815) +* BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL: howto manager. (line 2823) +* BFD_RELOC_TILEPRO_IMM16_X1_PCREL: howto manager. (line 2821) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD: howto manager. (line 2851) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA: howto manager. (line 2857) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI: howto manager. (line 2855) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO: howto manager. (line 2853) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE: howto manager. (line 2859) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA: howto manager. (line 2865) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI: howto manager. (line 2863) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO: howto manager. (line 2861) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE: howto manager. (line 2870) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA: howto manager. (line 2876) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI: howto manager. (line 2874) +* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO: howto manager. (line 2872) +* BFD_RELOC_TILEPRO_IMM8_X0: howto manager. (line 2805) +* BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD: howto manager. (line 2845) +* BFD_RELOC_TILEPRO_IMM8_X1: howto manager. (line 2807) +* BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD: howto manager. (line 2846) +* BFD_RELOC_TILEPRO_IMM8_Y0: howto manager. (line 2806) +* BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD: howto manager. (line 2847) +* BFD_RELOC_TILEPRO_IMM8_Y1: howto manager. (line 2808) +* BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD: howto manager. (line 2848) +* BFD_RELOC_TILEPRO_JMP_SLOT: howto manager. (line 2800) +* BFD_RELOC_TILEPRO_JOFFLONG_X1: howto manager. (line 2803) +* BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT: howto manager. (line 2804) +* BFD_RELOC_TILEPRO_MF_IMM15_X1: howto manager. (line 2811) +* BFD_RELOC_TILEPRO_MMEND_X0: howto manager. (line 2837) +* BFD_RELOC_TILEPRO_MMEND_X1: howto manager. (line 2839) +* BFD_RELOC_TILEPRO_MMSTART_X0: howto manager. (line 2836) +* BFD_RELOC_TILEPRO_MMSTART_X1: howto manager. (line 2838) +* BFD_RELOC_TILEPRO_MT_IMM15_X1: howto manager. (line 2810) +* BFD_RELOC_TILEPRO_RELATIVE: howto manager. (line 2801) +* BFD_RELOC_TILEPRO_SHAMT_X0: howto manager. (line 2840) +* BFD_RELOC_TILEPRO_SHAMT_X1: howto manager. (line 2841) +* BFD_RELOC_TILEPRO_SHAMT_Y0: howto manager. (line 2842) +* BFD_RELOC_TILEPRO_SHAMT_Y1: howto manager. (line 2843) +* BFD_RELOC_TILEPRO_TLS_DTPMOD32: howto manager. (line 2866) +* BFD_RELOC_TILEPRO_TLS_DTPOFF32: howto manager. (line 2867) +* BFD_RELOC_TILEPRO_TLS_GD_CALL: howto manager. (line 2844) +* BFD_RELOC_TILEPRO_TLS_IE_LOAD: howto manager. (line 2849) +* BFD_RELOC_TILEPRO_TLS_TPOFF32: howto manager. (line 2868) +* bfd_reloc_type_lookup: howto manager. (line 3013) +* BFD_RELOC_V850_16_GOT: howto manager. (line 1380) +* BFD_RELOC_V850_16_GOTOFF: howto manager. (line 1396) +* BFD_RELOC_V850_16_PCREL: howto manager. (line 1360) +* BFD_RELOC_V850_16_S1: howto manager. (line 1372) +* BFD_RELOC_V850_16_SPLIT_OFFSET: howto manager. (line 1370) +* BFD_RELOC_V850_17_PCREL: howto manager. (line 1362) +* BFD_RELOC_V850_22_PCREL: howto manager. (line 1314) +* BFD_RELOC_V850_22_PLT_PCREL: howto manager. (line 1384) +* BFD_RELOC_V850_23: howto manager. (line 1364) +* BFD_RELOC_V850_32_ABS: howto manager. (line 1368) +* BFD_RELOC_V850_32_GOT: howto manager. (line 1382) +* BFD_RELOC_V850_32_GOTOFF: howto manager. (line 1398) +* BFD_RELOC_V850_32_GOTPCREL: howto manager. (line 1378) +* BFD_RELOC_V850_32_PCREL: howto manager. (line 1366) +* BFD_RELOC_V850_32_PLT_PCREL: howto manager. (line 1386) +* BFD_RELOC_V850_9_PCREL: howto manager. (line 1312) +* BFD_RELOC_V850_ALIGN: howto manager. (line 1355) +* BFD_RELOC_V850_CALLT_15_16_OFFSET: howto manager. (line 1376) +* BFD_RELOC_V850_CALLT_16_16_OFFSET: howto manager. (line 1349) +* BFD_RELOC_V850_CALLT_6_7_OFFSET: howto manager. (line 1347) +* BFD_RELOC_V850_CODE: howto manager. (line 1400) +* BFD_RELOC_V850_COPY: howto manager. (line 1388) +* BFD_RELOC_V850_DATA: howto manager. (line 1402) +* BFD_RELOC_V850_GLOB_DAT: howto manager. (line 1390) +* BFD_RELOC_V850_JMP_SLOT: howto manager. (line 1392) +* BFD_RELOC_V850_LO16_S1: howto manager. (line 1374) +* BFD_RELOC_V850_LO16_SPLIT_OFFSET: howto manager. (line 1357) +* BFD_RELOC_V850_LONGCALL: howto manager. (line 1351) +* BFD_RELOC_V850_LONGJUMP: howto manager. (line 1353) +* BFD_RELOC_V850_RELATIVE: howto manager. (line 1394) +* BFD_RELOC_V850_SDA_15_16_OFFSET: howto manager. (line 1318) +* BFD_RELOC_V850_SDA_16_16_OFFSET: howto manager. (line 1316) +* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager. (line 1341) +* BFD_RELOC_V850_TDA_16_16_OFFSET: howto manager. (line 1334) +* BFD_RELOC_V850_TDA_4_4_OFFSET: howto manager. (line 1339) +* BFD_RELOC_V850_TDA_4_5_OFFSET: howto manager. (line 1336) +* BFD_RELOC_V850_TDA_6_8_OFFSET: howto manager. (line 1326) +* BFD_RELOC_V850_TDA_7_7_OFFSET: howto manager. (line 1332) +* BFD_RELOC_V850_TDA_7_8_OFFSET: howto manager. (line 1329) +* BFD_RELOC_V850_ZDA_15_16_OFFSET: howto manager. (line 1323) +* BFD_RELOC_V850_ZDA_16_16_OFFSET: howto manager. (line 1321) +* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager. (line 1344) +* BFD_RELOC_VAX_GLOB_DAT: howto manager. (line 2284) +* BFD_RELOC_VAX_JMP_SLOT: howto manager. (line 2285) +* BFD_RELOC_VAX_RELATIVE: howto manager. (line 2286) +* BFD_RELOC_VISIUM_HI16: howto manager. (line 3003) +* BFD_RELOC_VISIUM_HI16_PCREL: howto manager. (line 3007) +* BFD_RELOC_VISIUM_IM16: howto manager. (line 3005) +* BFD_RELOC_VISIUM_IM16_PCREL: howto manager. (line 3009) +* BFD_RELOC_VISIUM_LO16: howto manager. (line 3004) +* BFD_RELOC_VISIUM_LO16_PCREL: howto manager. (line 3008) +* BFD_RELOC_VISIUM_REL16: howto manager. (line 3006) +* BFD_RELOC_VPE4KMATH_DATA: howto manager. (line 1887) +* BFD_RELOC_VPE4KMATH_INSN: howto manager. (line 1888) +* BFD_RELOC_VTABLE_ENTRY: howto manager. (line 1891) +* BFD_RELOC_VTABLE_INHERIT: howto manager. (line 1890) +* BFD_RELOC_X86_64_32S: howto manager. (line 550) +* BFD_RELOC_X86_64_COPY: howto manager. (line 545) +* BFD_RELOC_X86_64_DTPMOD64: howto manager. (line 551) +* BFD_RELOC_X86_64_DTPOFF32: howto manager. (line 556) +* BFD_RELOC_X86_64_DTPOFF64: howto manager. (line 552) +* BFD_RELOC_X86_64_GLOB_DAT: howto manager. (line 546) +* BFD_RELOC_X86_64_GOT32: howto manager. (line 543) +* BFD_RELOC_X86_64_GOT64: howto manager. (line 561) +* BFD_RELOC_X86_64_GOTOFF64: howto manager. (line 559) +* BFD_RELOC_X86_64_GOTPC32: howto manager. (line 560) +* BFD_RELOC_X86_64_GOTPC32_TLSDESC: howto manager. (line 566) +* BFD_RELOC_X86_64_GOTPC64: howto manager. (line 563) +* BFD_RELOC_X86_64_GOTPCREL: howto manager. (line 549) +* BFD_RELOC_X86_64_GOTPCREL64: howto manager. (line 562) +* BFD_RELOC_X86_64_GOTPLT64: howto manager. (line 564) +* BFD_RELOC_X86_64_GOTTPOFF: howto manager. (line 557) +* BFD_RELOC_X86_64_IRELATIVE: howto manager. (line 569) +* BFD_RELOC_X86_64_JUMP_SLOT: howto manager. (line 547) +* BFD_RELOC_X86_64_PC32_BND: howto manager. (line 570) +* BFD_RELOC_X86_64_PLT32: howto manager. (line 544) +* BFD_RELOC_X86_64_PLT32_BND: howto manager. (line 571) +* BFD_RELOC_X86_64_PLTOFF64: howto manager. (line 565) +* BFD_RELOC_X86_64_RELATIVE: howto manager. (line 548) +* BFD_RELOC_X86_64_TLSDESC: howto manager. (line 568) +* BFD_RELOC_X86_64_TLSDESC_CALL: howto manager. (line 567) +* BFD_RELOC_X86_64_TLSGD: howto manager. (line 554) +* BFD_RELOC_X86_64_TLSLD: howto manager. (line 555) +* BFD_RELOC_X86_64_TPOFF32: howto manager. (line 558) +* BFD_RELOC_X86_64_TPOFF64: howto manager. (line 553) +* BFD_RELOC_XC16X_PAG: howto manager. (line 2279) +* BFD_RELOC_XC16X_POF: howto manager. (line 2280) +* BFD_RELOC_XC16X_SEG: howto manager. (line 2281) +* BFD_RELOC_XC16X_SOF: howto manager. (line 2282) +* BFD_RELOC_XGATE_24: howto manager. (line 2034) +* BFD_RELOC_XGATE_GPAGE: howto manager. (line 2032) +* BFD_RELOC_XGATE_IMM3: howto manager. (line 2046) +* BFD_RELOC_XGATE_IMM4: howto manager. (line 2048) +* BFD_RELOC_XGATE_IMM5: howto manager. (line 2050) +* BFD_RELOC_XGATE_IMM8_HI: howto manager. (line 2043) +* BFD_RELOC_XGATE_IMM8_LO: howto manager. (line 2040) +* BFD_RELOC_XGATE_LO16: howto manager. (line 2029) +* BFD_RELOC_XGATE_PCREL_10: howto manager. (line 2038) +* BFD_RELOC_XGATE_PCREL_9: howto manager. (line 2036) +* BFD_RELOC_XGATE_RL_GROUP: howto manager. (line 2025) +* BFD_RELOC_XGATE_RL_JUMP: howto manager. (line 2022) +* BFD_RELOC_XSTORMY16_12: howto manager. (line 2273) +* BFD_RELOC_XSTORMY16_24: howto manager. (line 2274) +* BFD_RELOC_XSTORMY16_FPTR16: howto manager. (line 2275) +* BFD_RELOC_XSTORMY16_REL_12: howto manager. (line 2272) +* BFD_RELOC_XTENSA_ASM_EXPAND: howto manager. (line 2442) +* BFD_RELOC_XTENSA_ASM_SIMPLIFY: howto manager. (line 2446) +* BFD_RELOC_XTENSA_DIFF16: howto manager. (line 2393) +* BFD_RELOC_XTENSA_DIFF32: howto manager. (line 2394) +* BFD_RELOC_XTENSA_DIFF8: howto manager. (line 2392) +* BFD_RELOC_XTENSA_GLOB_DAT: howto manager. (line 2384) +* BFD_RELOC_XTENSA_JMP_SLOT: howto manager. (line 2385) +* BFD_RELOC_XTENSA_OP0: howto manager. (line 2437) +* BFD_RELOC_XTENSA_OP1: howto manager. (line 2438) +* BFD_RELOC_XTENSA_OP2: howto manager. (line 2439) +* BFD_RELOC_XTENSA_PLT: howto manager. (line 2388) +* BFD_RELOC_XTENSA_RELATIVE: howto manager. (line 2386) +* BFD_RELOC_XTENSA_RTLD: howto manager. (line 2380) +* BFD_RELOC_XTENSA_SLOT0_ALT: howto manager. (line 2420) +* BFD_RELOC_XTENSA_SLOT0_OP: howto manager. (line 2401) +* BFD_RELOC_XTENSA_SLOT10_ALT: howto manager. (line 2430) +* BFD_RELOC_XTENSA_SLOT10_OP: howto manager. (line 2411) +* BFD_RELOC_XTENSA_SLOT11_ALT: howto manager. (line 2431) +* BFD_RELOC_XTENSA_SLOT11_OP: howto manager. (line 2412) +* BFD_RELOC_XTENSA_SLOT12_ALT: howto manager. (line 2432) +* BFD_RELOC_XTENSA_SLOT12_OP: howto manager. (line 2413) +* BFD_RELOC_XTENSA_SLOT13_ALT: howto manager. (line 2433) +* BFD_RELOC_XTENSA_SLOT13_OP: howto manager. (line 2414) +* BFD_RELOC_XTENSA_SLOT14_ALT: howto manager. (line 2434) +* BFD_RELOC_XTENSA_SLOT14_OP: howto manager. (line 2415) +* BFD_RELOC_XTENSA_SLOT1_ALT: howto manager. (line 2421) +* BFD_RELOC_XTENSA_SLOT1_OP: howto manager. (line 2402) +* BFD_RELOC_XTENSA_SLOT2_ALT: howto manager. (line 2422) +* BFD_RELOC_XTENSA_SLOT2_OP: howto manager. (line 2403) +* BFD_RELOC_XTENSA_SLOT3_ALT: howto manager. (line 2423) +* BFD_RELOC_XTENSA_SLOT3_OP: howto manager. (line 2404) +* BFD_RELOC_XTENSA_SLOT4_ALT: howto manager. (line 2424) +* BFD_RELOC_XTENSA_SLOT4_OP: howto manager. (line 2405) +* BFD_RELOC_XTENSA_SLOT5_ALT: howto manager. (line 2425) +* BFD_RELOC_XTENSA_SLOT5_OP: howto manager. (line 2406) +* BFD_RELOC_XTENSA_SLOT6_ALT: howto manager. (line 2426) +* BFD_RELOC_XTENSA_SLOT6_OP: howto manager. (line 2407) +* BFD_RELOC_XTENSA_SLOT7_ALT: howto manager. (line 2427) +* BFD_RELOC_XTENSA_SLOT7_OP: howto manager. (line 2408) +* BFD_RELOC_XTENSA_SLOT8_ALT: howto manager. (line 2428) +* BFD_RELOC_XTENSA_SLOT8_OP: howto manager. (line 2409) +* BFD_RELOC_XTENSA_SLOT9_ALT: howto manager. (line 2429) +* BFD_RELOC_XTENSA_SLOT9_OP: howto manager. (line 2410) +* BFD_RELOC_XTENSA_TLSDESC_ARG: howto manager. (line 2451) +* BFD_RELOC_XTENSA_TLSDESC_FN: howto manager. (line 2450) +* BFD_RELOC_XTENSA_TLS_ARG: howto manager. (line 2455) +* BFD_RELOC_XTENSA_TLS_CALL: howto manager. (line 2456) +* BFD_RELOC_XTENSA_TLS_DTPOFF: howto manager. (line 2452) +* BFD_RELOC_XTENSA_TLS_FUNC: howto manager. (line 2454) +* BFD_RELOC_XTENSA_TLS_TPOFF: howto manager. (line 2453) +* BFD_RELOC_Z80_DISP8: howto manager. (line 2458) +* BFD_RELOC_Z8K_CALLR: howto manager. (line 2462) +* BFD_RELOC_Z8K_DISP7: howto manager. (line 2460) +* BFD_RELOC_Z8K_IMM4L: howto manager. (line 2464) * bfd_rename_section: section prototypes. (line 167) -* bfd_scan_arch: Architectures. (line 517) +* bfd_scan_arch: Architectures. (line 525) * bfd_scan_vma: Miscellaneous. (line 124) * bfd_seach_for_target: bfd_target. (line 524) * bfd_sections_find_if: section prototypes. (line 197) @@ -13089,7 +13237,7 @@ BFD Index (line 55) * bfd_section_list_clear: section prototypes. (line 7) * bfd_set_archive_head: Archives. (line 74) -* bfd_set_arch_info: Architectures. (line 558) +* bfd_set_arch_info: Architectures. (line 566) * bfd_set_assert_handler: Error reporting. (line 143) * bfd_set_default_target: bfd_target. (line 463) * bfd_set_error: Error reporting. (line 57) @@ -13109,6 +13257,7 @@ BFD Index * bfd_symbol_info: symbol handling functions. (line 135) * bfd_target_list: bfd_target. (line 515) +* bfd_update_compression_header: Miscellaneous. (line 364) * bfd_write_bigendian_4byte_int: Internal. (line 12) * bfd_zalloc: Opening and Closing. (line 256) @@ -13127,7 +13276,7 @@ BFD Index (line 322) * separate_debug_file_exists: Opening and Closing. (line 313) -* struct bfd_iovec: Miscellaneous. (line 364) +* struct bfd_iovec: Miscellaneous. (line 400) * target vector (_bfd_final_link): Performing the Final Link. (line 6) * target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table. @@ -13149,61 +13298,61 @@ Node: BFD information loss6247 Node: Canonical format8788 Node: BFD front end13165 Node: typedef bfd13589 -Node: Error reporting24596 -Node: Miscellaneous29458 -Node: Memory Usage46595 -Node: Initialization47826 -Node: Sections48285 -Node: Section Input48768 -Node: Section Output50137 -Node: typedef asection52624 -Node: section prototypes78790 -Node: Symbols89058 -Node: Reading Symbols90661 -Node: Writing Symbols91769 -Node: Mini Symbols93513 -Node: typedef asymbol94487 -Node: symbol handling functions100529 -Node: Archives105867 -Node: Formats109895 -Node: Relocations112846 -Node: typedef arelent113573 -Node: howto manager129229 -Node: Core Files243926 -Node: Targets245964 -Node: bfd_target247939 -Node: Architectures271024 -Node: Opening and Closing298616 -Node: Internal312931 -Node: File Caching319280 -Node: Linker Functions321198 -Node: Creating a Linker Hash Table322872 -Node: Adding Symbols to the Hash Table324611 -Node: Differing file formats325511 -Node: Adding symbols from an object file327236 -Node: Adding symbols from an archive329386 -Node: Performing the Final Link331732 -Node: Information provided by the linker332973 -Node: Relocating the section contents334127 -Node: Writing the symbol table335879 -Node: Hash Tables340265 -Node: Creating and Freeing a Hash Table341463 -Node: Looking Up or Entering a String342713 -Node: Traversing a Hash Table343966 -Node: Deriving a New Hash Table Type344755 -Node: Define the Derived Structures345821 -Node: Write the Derived Creation Routine346902 -Node: Write Other Derived Routines349526 -Node: BFD back ends350841 -Node: What to Put Where351111 -Node: aout351291 -Node: coff357634 -Node: elf386320 -Node: mmo386721 -Node: File layout387591 -Node: Symbol-table393505 -Node: mmo section mapping397268 -Node: GNU Free Documentation License400922 -Node: BFD Index425986 +Node: Error reporting25551 +Node: Miscellaneous30413 +Node: Memory Usage48629 +Node: Initialization49860 +Node: Sections50319 +Node: Section Input50802 +Node: Section Output52171 +Node: typedef asection54658 +Node: section prototypes81266 +Node: Symbols91534 +Node: Reading Symbols93137 +Node: Writing Symbols94245 +Node: Mini Symbols95989 +Node: typedef asymbol96963 +Node: symbol handling functions103005 +Node: Archives108343 +Node: Formats112371 +Node: Relocations115322 +Node: typedef arelent116049 +Node: howto manager131705 +Node: Core Files247469 +Node: Targets249507 +Node: bfd_target251482 +Node: Architectures274567 +Node: Opening and Closing302626 +Node: Internal316941 +Node: File Caching323290 +Node: Linker Functions325208 +Node: Creating a Linker Hash Table326882 +Node: Adding Symbols to the Hash Table328621 +Node: Differing file formats329521 +Node: Adding symbols from an object file331246 +Node: Adding symbols from an archive333396 +Node: Performing the Final Link335742 +Node: Information provided by the linker336983 +Node: Relocating the section contents338137 +Node: Writing the symbol table339889 +Node: Hash Tables344275 +Node: Creating and Freeing a Hash Table345473 +Node: Looking Up or Entering a String346723 +Node: Traversing a Hash Table347976 +Node: Deriving a New Hash Table Type348765 +Node: Define the Derived Structures349831 +Node: Write the Derived Creation Routine350912 +Node: Write Other Derived Routines353536 +Node: BFD back ends354851 +Node: What to Put Where355121 +Node: aout355301 +Node: coff361644 +Node: elf390514 +Node: mmo390915 +Node: File layout391785 +Node: Symbol-table397699 +Node: mmo section mapping401462 +Node: GNU Free Documentation License405116 +Node: BFD Index430180  End Tag Table diff --git a/bfd/doc/bfdt.texi b/bfd/doc/bfdt.texi index 3d8f104..5bc4826 100644 --- a/bfd/doc/bfdt.texi +++ b/bfd/doc/bfdt.texi @@ -19,6 +19,19 @@ enum bfd_direction both_direction = 3 @}; +enum bfd_plugin_format + @{ + bfd_plugin_uknown = 0, + bfd_plugin_yes = 1, + bfd_plugin_no = 2 + @}; + +struct bfd_build_id + @{ + bfd_size_type size; + bfd_byte data[1]; + @}; + struct bfd @{ /* The filename the application opened the BFD with. */ @@ -53,7 +66,7 @@ struct bfd ENUM_BITFIELD (bfd_direction) direction : 2; /* Format_specific flags. */ - flagword flags : 17; + flagword flags : 18; /* Values that may appear in the flags field of a BFD. These also appear in the object_flags field of the bfd_target structure, where @@ -130,14 +143,19 @@ struct bfd /* BFD is a dummy, for plugins. */ #define BFD_PLUGIN 0x10000 + /* Compress sections in this BFD with SHF_COMPRESSED from gABI. */ +#define BFD_COMPRESS_GABI 0x20000 + /* Flags bits to be saved in bfd_preserve_save. */ #define BFD_FLAGS_SAVED \ - (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN) + (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_PLUGIN \ + | BFD_COMPRESS_GABI) /* 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_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT) + | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \ + | BFD_COMPRESS_GABI) /* Is the file descriptor being cached? That is, can it be closed as needed, and re-opened when accessed later? */ @@ -175,6 +193,19 @@ struct bfd /* Set if this is the linker output BFD. */ unsigned int is_linker_output : 1; + /* Set if this is the linker input BFD. */ + unsigned int is_linker_input : 1; + + /* If this is an input for a compiler plug-in library. */ + ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2; + + /* Set if this is a plugin output file. */ + unsigned int lto_output : 1; + + /* Set to dummy BFD created when claimed by a compiler plug-in + library. */ + bfd *plugin_dummy_bfd; + /* 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. */ @@ -285,6 +316,9 @@ struct bfd struct objalloc *, but we use void * to avoid requiring the inclusion of objalloc.h. */ void *memory; + + /* For input BFDs, the build ID, if the object has one. */ + const struct bfd_build_id *build_id; @}; /* See note beside bfd_set_section_userdata. */ @@ -894,3 +928,42 @@ If passed a g++ v3 ABI mangled name, returns a buffer allocated with malloc holding the demangled name. Returns NULL otherwise and on memory alloc failure. +@findex bfd_update_compression_header +@subsubsection @code{bfd_update_compression_header} +@strong{Synopsis} +@example +void bfd_update_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec); +@end example +@strong{Description}@* +Set the compression header at CONTENTS of SEC in ABFD and update +elf_section_flags for compression. + +@findex bfd_check_compression_header +@subsubsection @code{bfd_check_compression_header} +@strong{Synopsis} +@example +bfd_boolean bfd_check_compression_header + (bfd *abfd, bfd_byte *contents, asection *sec, + bfd_size_type *uncompressed_size); +@end example +@strong{Description}@* +Check the compression header at CONTENTS of SEC in ABFD and +store the uncompressed size in UNCOMPRESSED_SIZE if the +compression header is valid. + +@strong{Returns}@* +Return TRUE if the compression header is valid. + +@findex bfd_get_compression_header_size +@subsubsection @code{bfd_get_compression_header_size} +@strong{Synopsis} +@example +int bfd_get_compression_header_size (bfd *abfd, asection *sec); +@end example +@strong{Description}@* +Return the size of the compression header of SEC in ABFD. + +@strong{Returns}@* +Return the size of the compression header in bytes. + diff --git a/bfd/doc/bfdver.texi b/bfd/doc/bfdver.texi index 8c317e8..bff38e9 100644 --- a/bfd/doc/bfdver.texi +++ b/bfd/doc/bfdver.texi @@ -1,4 +1,4 @@ @set VERSION 2.25.51 @set VERSION_PACKAGE (GNU Binutils) -@set UPDATED May 2015 +@set UPDATED December 2015 @set BUGURL @uref{http://www.sourceware.org/bugzilla/} diff --git a/bfd/doc/coffcode.texi b/bfd/doc/coffcode.texi index bbf0469..b318c8a 100644 --- a/bfd/doc/coffcode.texi +++ b/bfd/doc/coffcode.texi @@ -345,6 +345,10 @@ enum coff_symbol_classification COFF_SYMBOL_PE_SECTION @}; +typedef asection * (*coff_gc_mark_hook_fn) + (asection *, struct bfd_link_info *, struct internal_reloc *, + struct coff_link_hash_entry *, struct internal_syment *); + @end example Special entry points for gdb to swap in coff symbol table parts: @example diff --git a/bfd/doc/reloc.texi b/bfd/doc/reloc.texi index 8647744..15939fa 100644 --- a/bfd/doc/reloc.texi +++ b/bfd/doc/reloc.texi @@ -961,6 +961,12 @@ MIPS ELF relocations (VxWorks and PLT extensions). @deffn {} BFD_RELOC_MOXIE_10_PCREL Moxie ELF relocations. @end deffn +@deffn {} BFD_RELOC_FT32_10 +@deffnx {} BFD_RELOC_FT32_20 +@deffnx {} BFD_RELOC_FT32_17 +@deffnx {} BFD_RELOC_FT32_18 +FT32 ELF relocations. +@end deffn @deffn {} BFD_RELOC_FRV_LABEL16 @deffnx {} BFD_RELOC_FRV_LABEL24 @deffnx {} BFD_RELOC_FRV_LO16 @@ -2494,6 +2500,7 @@ number for the SBIC, SBIS, SBI and CBI instructions @deffnx {} BFD_RELOC_RL78_HI8 @deffnx {} BFD_RELOC_RL78_LO16 @deffnx {} BFD_RELOC_RL78_CODE +@deffnx {} BFD_RELOC_RL78_SADDR Renesas RL78 Relocations. @end deffn @deffn {} BFD_RELOC_RX_NEG8 @@ -3259,6 +3266,19 @@ msp430 specific relocation codes @deffnx {} BFD_RELOC_NIOS2_GOT_HA @deffnx {} BFD_RELOC_NIOS2_CALL_LO @deffnx {} BFD_RELOC_NIOS2_CALL_HA +@deffnx {} BFD_RELOC_NIOS2_R2_S12 +@deffnx {} BFD_RELOC_NIOS2_R2_I10_1_PCREL +@deffnx {} BFD_RELOC_NIOS2_R2_T1I7_1_PCREL +@deffnx {} BFD_RELOC_NIOS2_R2_T1I7_2 +@deffnx {} BFD_RELOC_NIOS2_R2_T2I4 +@deffnx {} BFD_RELOC_NIOS2_R2_T2I4_1 +@deffnx {} BFD_RELOC_NIOS2_R2_T2I4_2 +@deffnx {} BFD_RELOC_NIOS2_R2_X1I7_2 +@deffnx {} BFD_RELOC_NIOS2_R2_X2L5 +@deffnx {} BFD_RELOC_NIOS2_R2_F1I5_2 +@deffnx {} BFD_RELOC_NIOS2_R2_L5I4X1 +@deffnx {} BFD_RELOC_NIOS2_R2_T1X1I6 +@deffnx {} BFD_RELOC_NIOS2_R2_T1X1I6_2 Relocations used by the Altera Nios II core. @end deffn @deffn {} BFD_RELOC_IQ2000_OFFSET_16 @@ -3646,12 +3666,25 @@ Unsigned 12 bit byte offset for 32 bit load/store from the page of the GOT entry for this symbol. Used in conjunction with BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only. @end deffn +@deffn {} BFD_RELOC_AARCH64_LD64_GOTOFF_LO15 +Unsigned 15 bit byte offset for 64 bit load/store from the page of +the GOT entry for this symbol. Valid in ILP64 ABI only. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14 +Scaled 14 bit byte offset to the page base of the global offset table. +@end deffn +@deffn {} BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15 +Scaled 15 bit byte offset to the page base of the global offset table. +@end deffn @deffn {} BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21 Get to the page base of the global offset table entry for a symbols tls_index structure as part of an adrp instruction using a 21 bit PC relative value. Used in conjunction with BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC. @end deffn +@deffn {} BFD_RELOC_AARCH64_TLSGD_ADR_PREL21 +AArch64 TLS General Dynamic +@end deffn @deffn {} BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC Unsigned 12 bit byte offset to global offset table entry for a symbols tls_index structure. Used in conjunction with diff --git a/bfd/doc/section.texi b/bfd/doc/section.texi index 8f856db..c3db676 100644 --- a/bfd/doc/section.texi +++ b/bfd/doc/section.texi @@ -293,6 +293,10 @@ typedef struct bfd_section executables or shared objects. This is for COFF only. */ #define SEC_COFF_SHARED 0x8000000 + /* This section should be compressed. This is for ELF linker + internal use only. */ +#define SEC_ELF_COMPRESS 0x8000000 + /* When a section with this flag is being linked, then if the size of the input section is less than a page, it should not cross a page boundary. If the size of the input section is one page or more, @@ -300,11 +304,18 @@ typedef struct bfd_section TMS320C54X only. */ #define SEC_TIC54X_BLOCK 0x10000000 + /* This section should be renamed. This is for ELF linker + internal use only. */ +#define SEC_ELF_RENAME 0x10000000 + /* Conditionally link this section; do not link if there are no references found to any symbol in the section. This is for TI TMS320C54X only. */ #define SEC_TIC54X_CLINK 0x20000000 + /* This section contains vliw code. This is for Toshiba MeP only. */ +#define SEC_MEP_VLIW 0x20000000 + /* Indicate that section has the no read flag set. This happens when memory read flag isn't set. */ #define SEC_COFF_NOREAD 0x40000000 @@ -345,6 +356,7 @@ typedef struct bfd_section #define SEC_INFO_TYPE_EH_FRAME 3 #define SEC_INFO_TYPE_JUST_SYMS 4 #define SEC_INFO_TYPE_TARGET 5 +#define SEC_INFO_TYPE_EH_FRAME_ENTRY 6 /* Nonzero if this section uses RELA relocations, rather than REL. */ unsigned int use_rela_p:1; diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index 118092c..cbd4cf6 100644 --- a/bfd/dwarf2.c +++ b/bfd/dwarf2.c @@ -556,83 +556,124 @@ read_section (bfd * abfd, return TRUE; } -/* VERBATIM - The following function up to the END VERBATIM mark are - copied directly from dwarf2read.c. */ - /* Read dwarf information from a buffer. */ static unsigned int -read_1_byte (bfd *abfd ATTRIBUTE_UNUSED, bfd_byte *buf) +read_1_byte (bfd *abfd ATTRIBUTE_UNUSED, bfd_byte *buf, bfd_byte *end) { + if (buf + 1 > end) + return 0; return bfd_get_8 (abfd, buf); } static int -read_1_signed_byte (bfd *abfd ATTRIBUTE_UNUSED, bfd_byte *buf) +read_1_signed_byte (bfd *abfd ATTRIBUTE_UNUSED, bfd_byte *buf, bfd_byte *end) { + if (buf + 1 > end) + return 0; return bfd_get_signed_8 (abfd, buf); } static unsigned int -read_2_bytes (bfd *abfd, bfd_byte *buf) +read_2_bytes (bfd *abfd, bfd_byte *buf, bfd_byte *end) { + if (buf + 2 > end) + return 0; return bfd_get_16 (abfd, buf); } static unsigned int -read_4_bytes (bfd *abfd, bfd_byte *buf) +read_4_bytes (bfd *abfd, bfd_byte *buf, bfd_byte *end) { + if (buf + 4 > end) + return 0; return bfd_get_32 (abfd, buf); } static bfd_uint64_t -read_8_bytes (bfd *abfd, bfd_byte *buf) +read_8_bytes (bfd *abfd, bfd_byte *buf, bfd_byte *end) { + if (buf + 8 > end) + return 0; return bfd_get_64 (abfd, buf); } static bfd_byte * read_n_bytes (bfd *abfd ATTRIBUTE_UNUSED, bfd_byte *buf, + bfd_byte *end, unsigned int size ATTRIBUTE_UNUSED) { + if (buf + size > end) + return NULL; return buf; } +/* Scans a NUL terminated string starting at BUF, returning a pointer to it. + Returns the number of characters in the string, *including* the NUL byte, + in BYTES_READ_PTR. This value is set even if the function fails. Bytes + at or beyond BUF_END will not be read. Returns NULL if there was a + problem, or if the string is empty. */ + static char * -read_string (bfd *abfd ATTRIBUTE_UNUSED, - bfd_byte *buf, - unsigned int *bytes_read_ptr) +read_string (bfd * abfd ATTRIBUTE_UNUSED, + bfd_byte * buf, + bfd_byte * buf_end, + unsigned int * bytes_read_ptr) { - /* Return a pointer to the embedded string. */ - char *str = (char *) buf; + bfd_byte *str = buf; + + if (buf >= buf_end) + { + * bytes_read_ptr = 0; + return NULL; + } if (*str == '\0') { - *bytes_read_ptr = 1; + * bytes_read_ptr = 1; return NULL; } - *bytes_read_ptr = strlen (str) + 1; - return str; + while (buf < buf_end) + if (* buf ++ == 0) + { + * bytes_read_ptr = buf - str; + return (char *) str; + } + + * bytes_read_ptr = buf - str; + return NULL; } -/* END VERBATIM */ +/* Reads an offset from BUF and then locates the string at this offset + inside the debug string section. Returns a pointer to the string. + Returns the number of bytes read from BUF, *not* the length of the string, + in BYTES_READ_PTR. This value is set even if the function fails. Bytes + at or beyond BUF_END will not be read from BUF. Returns NULL if there was + a problem, or if the string is empty. Does not check for NUL termination + of the string. */ static char * read_indirect_string (struct comp_unit * unit, bfd_byte * buf, + bfd_byte * buf_end, unsigned int * bytes_read_ptr) { bfd_uint64_t offset; struct dwarf2_debug *stash = unit->stash; char *str; + if (buf + unit->offset_size > buf_end) + { + * bytes_read_ptr = 0; + return NULL; + } + if (unit->offset_size == 4) - offset = read_4_bytes (unit->abfd, buf); + offset = read_4_bytes (unit->abfd, buf, buf_end); else - offset = read_8_bytes (unit->abfd, buf); + offset = read_8_bytes (unit->abfd, buf, buf_end); *bytes_read_ptr = unit->offset_size; @@ -641,6 +682,8 @@ read_indirect_string (struct comp_unit * unit, &stash->dwarf_str_buffer, &stash->dwarf_str_size)) return NULL; + if (offset >= stash->dwarf_str_size) + return NULL; str = (char *) stash->dwarf_str_buffer + offset; if (*str == '\0') return NULL; @@ -654,16 +697,23 @@ read_indirect_string (struct comp_unit * unit, static char * read_alt_indirect_string (struct comp_unit * unit, bfd_byte * buf, + bfd_byte * buf_end, unsigned int * bytes_read_ptr) { bfd_uint64_t offset; struct dwarf2_debug *stash = unit->stash; char *str; + if (buf + unit->offset_size > buf_end) + { + * bytes_read_ptr = 0; + return NULL; + } + if (unit->offset_size == 4) - offset = read_4_bytes (unit->abfd, buf); + offset = read_4_bytes (unit->abfd, buf, buf_end); else - offset = read_8_bytes (unit->abfd, buf); + offset = read_8_bytes (unit->abfd, buf, buf_end); *bytes_read_ptr = unit->offset_size; @@ -687,7 +737,7 @@ read_alt_indirect_string (struct comp_unit * unit, } stash->alt_bfd_ptr = debug_bfd; } - + if (! read_section (unit->stash->alt_bfd_ptr, stash->debug_sections + debug_str_alt, NULL, /* FIXME: Do we need to load alternate symbols ? */ @@ -696,6 +746,8 @@ read_alt_indirect_string (struct comp_unit * unit, &stash->alt_dwarf_str_size)) return NULL; + if (offset >= stash->alt_dwarf_str_size) + return NULL; str = (char *) stash->alt_dwarf_str_buffer + offset; if (*str == '\0') return NULL; @@ -733,7 +785,7 @@ read_alt_indirect_ref (struct comp_unit * unit, } stash->alt_bfd_ptr = debug_bfd; } - + if (! read_section (unit->stash->alt_bfd_ptr, stash->debug_sections + debug_info_alt, NULL, /* FIXME: Do we need to load alternate symbols ? */ @@ -742,17 +794,22 @@ read_alt_indirect_ref (struct comp_unit * unit, &stash->alt_dwarf_info_size)) return NULL; + if (offset >= stash->alt_dwarf_info_size) + return NULL; return stash->alt_dwarf_info_buffer + offset; } static bfd_uint64_t -read_address (struct comp_unit *unit, bfd_byte *buf) +read_address (struct comp_unit *unit, bfd_byte *buf, bfd_byte * buf_end) { int signed_vma = 0; if (bfd_get_flavour (unit->abfd) == bfd_target_elf_flavour) signed_vma = get_elf_backend_data (unit->abfd)->sign_extend_vma; + if (buf + unit->addr_size > buf_end) + return 0; + if (signed_vma) { switch (unit->addr_size) @@ -815,6 +872,7 @@ read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash) { struct abbrev_info **abbrevs; bfd_byte *abbrev_ptr; + bfd_byte *abbrev_end; struct abbrev_info *cur_abbrev; unsigned int abbrev_number, bytes_read, abbrev_name; unsigned int abbrev_form, hash_number; @@ -825,13 +883,17 @@ read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash) &stash->dwarf_abbrev_buffer, &stash->dwarf_abbrev_size)) return NULL; + if (offset >= stash->dwarf_abbrev_size) + 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); + abbrev_end = stash->dwarf_abbrev_buffer + stash->dwarf_abbrev_size; + abbrev_number = safe_read_leb128 (abfd, abbrev_ptr, &bytes_read, FALSE, abbrev_end); abbrev_ptr += bytes_read; /* Loop until we reach an abbrev number of 0. */ @@ -845,15 +907,15 @@ read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash) /* Read in abbrev header. */ cur_abbrev->number = abbrev_number; cur_abbrev->tag = (enum dwarf_tag) - read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); + safe_read_leb128 (abfd, abbrev_ptr, &bytes_read, FALSE, abbrev_end); abbrev_ptr += bytes_read; - cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr); + cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr, abbrev_end); abbrev_ptr += 1; /* Now read in declarations. */ - abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); + abbrev_name = safe_read_leb128 (abfd, abbrev_ptr, &bytes_read, FALSE, abbrev_end); abbrev_ptr += bytes_read; - abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); + abbrev_form = safe_read_leb128 (abfd, abbrev_ptr, &bytes_read, FALSE, abbrev_end); abbrev_ptr += bytes_read; while (abbrev_name) @@ -888,9 +950,9 @@ read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash) = (enum dwarf_attribute) abbrev_name; cur_abbrev->attrs[cur_abbrev->num_attrs++].form = (enum dwarf_form) abbrev_form; - abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); + abbrev_name = safe_read_leb128 (abfd, abbrev_ptr, &bytes_read, FALSE, abbrev_end); abbrev_ptr += bytes_read; - abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); + abbrev_form = safe_read_leb128 (abfd, abbrev_ptr, &bytes_read, FALSE, abbrev_end); abbrev_ptr += bytes_read; } @@ -908,9 +970,9 @@ read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash) if ((unsigned int) (abbrev_ptr - stash->dwarf_abbrev_buffer) >= stash->dwarf_abbrev_size) break; - abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); + abbrev_number = safe_read_leb128 (abfd, abbrev_ptr, &bytes_read, FALSE, abbrev_end); abbrev_ptr += bytes_read; - if (lookup_abbrev (abbrev_number,abbrevs) != NULL) + if (lookup_abbrev (abbrev_number, abbrevs) != NULL) break; } @@ -925,19 +987,29 @@ is_str_attr (enum dwarf_form form) return form == DW_FORM_string || form == DW_FORM_strp || form == DW_FORM_GNU_strp_alt; } -/* Read an attribute value described by an attribute form. */ +/* Read and fill in the value of attribute ATTR as described by FORM. + Read data starting from INFO_PTR, but never at or beyond INFO_PTR_END. + Returns an updated INFO_PTR taking into account the amount of data read. */ static bfd_byte * -read_attribute_value (struct attribute *attr, - unsigned form, - struct comp_unit *unit, - bfd_byte *info_ptr) +read_attribute_value (struct attribute * attr, + unsigned form, + struct comp_unit * unit, + bfd_byte * info_ptr, + bfd_byte * info_ptr_end) { bfd *abfd = unit->abfd; unsigned int bytes_read; struct dwarf_block *blk; bfd_size_type amt; + if (info_ptr >= info_ptr_end) + { + (*_bfd_error_handler) (_("Dwarf Error: Info pointer extends beyond end of attributes")); + bfd_set_error (bfd_error_bad_value); + return info_ptr; + } + attr->form = (enum dwarf_form) form; switch (form) @@ -948,23 +1020,23 @@ read_attribute_value (struct attribute *attr, if (unit->version == 3 || unit->version == 4) { if (unit->offset_size == 4) - attr->u.val = read_4_bytes (unit->abfd, info_ptr); + attr->u.val = read_4_bytes (unit->abfd, info_ptr, info_ptr_end); else - attr->u.val = read_8_bytes (unit->abfd, info_ptr); + attr->u.val = read_8_bytes (unit->abfd, info_ptr, info_ptr_end); info_ptr += unit->offset_size; break; } /* FALLTHROUGH */ case DW_FORM_addr: - attr->u.val = read_address (unit, info_ptr); + attr->u.val = read_address (unit, info_ptr, info_ptr_end); info_ptr += unit->addr_size; break; case DW_FORM_GNU_ref_alt: case DW_FORM_sec_offset: if (unit->offset_size == 4) - attr->u.val = read_4_bytes (unit->abfd, info_ptr); + attr->u.val = read_4_bytes (unit->abfd, info_ptr, info_ptr_end); else - attr->u.val = read_8_bytes (unit->abfd, info_ptr); + attr->u.val = read_8_bytes (unit->abfd, info_ptr, info_ptr_end); info_ptr += unit->offset_size; break; case DW_FORM_block2: @@ -972,9 +1044,9 @@ read_attribute_value (struct attribute *attr, blk = (struct dwarf_block *) bfd_alloc (abfd, amt); if (blk == NULL) return NULL; - blk->size = read_2_bytes (abfd, info_ptr); + blk->size = read_2_bytes (abfd, info_ptr, info_ptr_end); info_ptr += 2; - blk->data = read_n_bytes (abfd, info_ptr, blk->size); + blk->data = read_n_bytes (abfd, info_ptr, info_ptr_end, blk->size); info_ptr += blk->size; attr->u.blk = blk; break; @@ -983,34 +1055,34 @@ read_attribute_value (struct attribute *attr, blk = (struct dwarf_block *) bfd_alloc (abfd, amt); if (blk == NULL) return NULL; - blk->size = read_4_bytes (abfd, info_ptr); + blk->size = read_4_bytes (abfd, info_ptr, info_ptr_end); info_ptr += 4; - blk->data = read_n_bytes (abfd, info_ptr, blk->size); + blk->data = read_n_bytes (abfd, info_ptr, info_ptr_end, blk->size); info_ptr += blk->size; attr->u.blk = blk; break; case DW_FORM_data2: - attr->u.val = read_2_bytes (abfd, info_ptr); + attr->u.val = read_2_bytes (abfd, info_ptr, info_ptr_end); info_ptr += 2; break; case DW_FORM_data4: - attr->u.val = read_4_bytes (abfd, info_ptr); + attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end); info_ptr += 4; break; case DW_FORM_data8: - attr->u.val = read_8_bytes (abfd, info_ptr); + attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end); info_ptr += 8; break; case DW_FORM_string: - attr->u.str = read_string (abfd, info_ptr, &bytes_read); + attr->u.str = read_string (abfd, info_ptr, info_ptr_end, &bytes_read); info_ptr += bytes_read; break; case DW_FORM_strp: - attr->u.str = read_indirect_string (unit, info_ptr, &bytes_read); + attr->u.str = read_indirect_string (unit, info_ptr, info_ptr_end, &bytes_read); info_ptr += bytes_read; break; case DW_FORM_GNU_strp_alt: - attr->u.str = read_alt_indirect_string (unit, info_ptr, &bytes_read); + attr->u.str = read_alt_indirect_string (unit, info_ptr, info_ptr_end, &bytes_read); info_ptr += bytes_read; break; case DW_FORM_exprloc: @@ -1019,9 +1091,9 @@ read_attribute_value (struct attribute *attr, blk = (struct dwarf_block *) bfd_alloc (abfd, amt); if (blk == NULL) return NULL; - blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); + blk->size = safe_read_leb128 (abfd, info_ptr, &bytes_read, FALSE, info_ptr_end); info_ptr += bytes_read; - blk->data = read_n_bytes (abfd, info_ptr, blk->size); + blk->data = read_n_bytes (abfd, info_ptr, info_ptr_end, blk->size); info_ptr += blk->size; attr->u.blk = blk; break; @@ -1030,59 +1102,59 @@ read_attribute_value (struct attribute *attr, blk = (struct dwarf_block *) bfd_alloc (abfd, amt); if (blk == NULL) return NULL; - blk->size = read_1_byte (abfd, info_ptr); + blk->size = read_1_byte (abfd, info_ptr, info_ptr_end); info_ptr += 1; - blk->data = read_n_bytes (abfd, info_ptr, blk->size); + blk->data = read_n_bytes (abfd, info_ptr, info_ptr_end, blk->size); info_ptr += blk->size; attr->u.blk = blk; break; case DW_FORM_data1: - attr->u.val = read_1_byte (abfd, info_ptr); + attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end); info_ptr += 1; break; case DW_FORM_flag: - attr->u.val = read_1_byte (abfd, info_ptr); + attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end); 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); + attr->u.sval = safe_read_leb128 (abfd, info_ptr, &bytes_read, TRUE, info_ptr_end); info_ptr += bytes_read; break; case DW_FORM_udata: - attr->u.val = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); + attr->u.val = safe_read_leb128 (abfd, info_ptr, &bytes_read, FALSE, info_ptr_end); info_ptr += bytes_read; break; case DW_FORM_ref1: - attr->u.val = read_1_byte (abfd, info_ptr); + attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end); info_ptr += 1; break; case DW_FORM_ref2: - attr->u.val = read_2_bytes (abfd, info_ptr); + attr->u.val = read_2_bytes (abfd, info_ptr, info_ptr_end); info_ptr += 2; break; case DW_FORM_ref4: - attr->u.val = read_4_bytes (abfd, info_ptr); + attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end); info_ptr += 4; break; case DW_FORM_ref8: - attr->u.val = read_8_bytes (abfd, info_ptr); + attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end); info_ptr += 8; break; case DW_FORM_ref_sig8: - attr->u.val = read_8_bytes (abfd, info_ptr); + attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end); info_ptr += 8; break; case DW_FORM_ref_udata: - attr->u.val = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); + attr->u.val = safe_read_leb128 (abfd, info_ptr, &bytes_read, FALSE, info_ptr_end); info_ptr += bytes_read; break; case DW_FORM_indirect: - form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); + form = safe_read_leb128 (abfd, info_ptr, &bytes_read, FALSE, info_ptr_end); info_ptr += bytes_read; - info_ptr = read_attribute_value (attr, form, unit, info_ptr); + info_ptr = read_attribute_value (attr, form, unit, info_ptr, info_ptr_end); break; default: (*_bfd_error_handler) (_("Dwarf Error: Invalid or unhandled FORM value: %#x."), @@ -1096,13 +1168,14 @@ read_attribute_value (struct attribute *attr, /* Read an attribute described by an abbreviated attribute. */ static bfd_byte * -read_attribute (struct attribute *attr, - struct attr_abbrev *abbrev, - struct comp_unit *unit, - bfd_byte *info_ptr) +read_attribute (struct attribute * attr, + struct attr_abbrev * abbrev, + struct comp_unit * unit, + bfd_byte * info_ptr, + bfd_byte * info_ptr_end) { attr->name = abbrev->name; - info_ptr = read_attribute_value (attr, abbrev->form, unit, info_ptr); + info_ptr = read_attribute_value (attr, abbrev->form, unit, info_ptr, info_ptr_end); return info_ptr; } @@ -1387,7 +1460,11 @@ concat_filename (struct line_info_table *table, unsigned int file) char *name; size_t len; - if (table->files[file - 1].dir) + if (table->files[file - 1].dir + /* PR 17512: file: 0317e960. */ + && table->files[file - 1].dir <= table->num_dirs + /* PR 17512: file: 7f3d2e4b. */ + && table->dirs != NULL) subdir_name = table->dirs[table->files[file - 1].dir - 1]; if (!subdir_name || !IS_ABSOLUTE_PATH (subdir_name)) @@ -1608,27 +1685,47 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) table->lcl_head = NULL; + if (stash->dwarf_line_size < 16) + { + (*_bfd_error_handler) + (_("Dwarf Error: Line info section is too small (%ld)"), + (long) stash->dwarf_line_size); + bfd_set_error (bfd_error_bad_value); + return NULL; + } line_ptr = stash->dwarf_line_buffer + unit->line_offset; + line_end = stash->dwarf_line_buffer + stash->dwarf_line_size; /* Read in the prologue. */ - lh.total_length = read_4_bytes (abfd, line_ptr); + lh.total_length = read_4_bytes (abfd, line_ptr, line_end); line_ptr += 4; offset_size = 4; if (lh.total_length == 0xffffffff) { - lh.total_length = read_8_bytes (abfd, line_ptr); + lh.total_length = read_8_bytes (abfd, line_ptr, line_end); line_ptr += 8; offset_size = 8; } else if (lh.total_length == 0 && unit->addr_size == 8) { /* Handle (non-standard) 64-bit DWARF2 formats. */ - lh.total_length = read_4_bytes (abfd, line_ptr); + lh.total_length = read_4_bytes (abfd, line_ptr, line_end); line_ptr += 4; offset_size = 8; } + + if (lh.total_length > stash->dwarf_line_size) + { + (*_bfd_error_handler) + (_("Dwarf Error: Line info data is bigger (0x%lx) than the section (0x%lx)"), + (long) lh.total_length, (long) stash->dwarf_line_size); + bfd_set_error (bfd_error_bad_value); + return NULL; + } + line_end = line_ptr + lh.total_length; - lh.version = read_2_bytes (abfd, line_ptr); + + lh.version = read_2_bytes (abfd, line_ptr, line_end); if (lh.version < 2 || lh.version > 4) { (*_bfd_error_handler) @@ -1637,20 +1734,32 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) return NULL; } line_ptr += 2; + + if (line_ptr + offset_size + (lh.version >=4 ? 6 : 5) >= line_end) + { + (*_bfd_error_handler) + (_("Dwarf Error: Ran out of room reading prologue")); + bfd_set_error (bfd_error_bad_value); + return NULL; + } + if (offset_size == 4) - lh.prologue_length = read_4_bytes (abfd, line_ptr); + lh.prologue_length = read_4_bytes (abfd, line_ptr, line_end); else - lh.prologue_length = read_8_bytes (abfd, line_ptr); + lh.prologue_length = read_8_bytes (abfd, line_ptr, line_end); line_ptr += offset_size; - lh.minimum_instruction_length = read_1_byte (abfd, line_ptr); + + lh.minimum_instruction_length = read_1_byte (abfd, line_ptr, line_end); line_ptr += 1; + if (lh.version >= 4) { - lh.maximum_ops_per_insn = read_1_byte (abfd, line_ptr); + lh.maximum_ops_per_insn = read_1_byte (abfd, line_ptr, line_end); line_ptr += 1; } else lh.maximum_ops_per_insn = 1; + if (lh.maximum_ops_per_insn == 0) { (*_bfd_error_handler) @@ -1658,14 +1767,26 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) bfd_set_error (bfd_error_bad_value); return NULL; } - lh.default_is_stmt = read_1_byte (abfd, line_ptr); + + lh.default_is_stmt = read_1_byte (abfd, line_ptr, line_end); line_ptr += 1; - lh.line_base = read_1_signed_byte (abfd, line_ptr); + + lh.line_base = read_1_signed_byte (abfd, line_ptr, line_end); line_ptr += 1; - lh.line_range = read_1_byte (abfd, line_ptr); + + lh.line_range = read_1_byte (abfd, line_ptr, line_end); line_ptr += 1; - lh.opcode_base = read_1_byte (abfd, line_ptr); + + lh.opcode_base = read_1_byte (abfd, line_ptr, line_end); line_ptr += 1; + + if (line_ptr + (lh.opcode_base - 1) >= line_end) + { + (*_bfd_error_handler) (_("Dwarf Error: Ran out of room reading opcodes")); + bfd_set_error (bfd_error_bad_value); + return NULL; + } + amt = lh.opcode_base * sizeof (unsigned char); lh.standard_opcode_lengths = (unsigned char *) bfd_alloc (abfd, amt); @@ -1673,12 +1794,12 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) for (i = 1; i < lh.opcode_base; ++i) { - lh.standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr); + lh.standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr, line_end); line_ptr += 1; } /* Read directory table. */ - while ((cur_dir = read_string (abfd, line_ptr, &bytes_read)) != NULL) + while ((cur_dir = read_string (abfd, line_ptr, line_end, &bytes_read)) != NULL) { line_ptr += bytes_read; @@ -1701,7 +1822,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) line_ptr += bytes_read; /* Read file name table. */ - while ((cur_file = read_string (abfd, line_ptr, &bytes_read)) != NULL) + while ((cur_file = read_string (abfd, line_ptr, line_end, &bytes_read)) != NULL) { line_ptr += bytes_read; @@ -1720,13 +1841,11 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) table->files[table->num_files].name = cur_file; table->files[table->num_files].dir = - read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; - table->files[table->num_files].time = - read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + table->files[table->num_files].time = safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; - table->files[table->num_files].size = - read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + table->files[table->num_files].size = safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; table->num_files++; } @@ -1756,13 +1875,15 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) /* Decode the table. */ while (! end_sequence) { - op_code = read_1_byte (abfd, line_ptr); + op_code = read_1_byte (abfd, line_ptr, line_end); line_ptr += 1; if (op_code >= lh.opcode_base) { /* Special operand. */ adj_opcode = op_code - lh.opcode_base; + if (lh.line_range == 0) + goto line_fail; if (lh.maximum_ops_per_insn == 1) address += (adj_opcode / lh.line_range * lh.minimum_instruction_length); @@ -1788,9 +1909,9 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) else switch (op_code) { case DW_LNS_extended_op: - exop_len = read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + exop_len = safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; - extended_op = read_1_byte (abfd, line_ptr); + extended_op = read_1_byte (abfd, line_ptr, line_end); line_ptr += 1; switch (extended_op) @@ -1809,12 +1930,12 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) goto line_fail; break; case DW_LNE_set_address: - address = read_address (unit, line_ptr); + address = read_address (unit, line_ptr, line_end); op_index = 0; line_ptr += unit->addr_size; break; case DW_LNE_define_file: - cur_file = read_string (abfd, line_ptr, &bytes_read); + cur_file = read_string (abfd, line_ptr, line_end, &bytes_read); line_ptr += bytes_read; if ((table->num_files % FILE_ALLOC_CHUNK) == 0) { @@ -1829,19 +1950,19 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) } table->files[table->num_files].name = cur_file; table->files[table->num_files].dir = - read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; table->files[table->num_files].time = - read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; table->files[table->num_files].size = - read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; table->num_files++; break; case DW_LNE_set_discriminator: discriminator = - read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; break; case DW_LNE_HP_source_file_correlation: @@ -1870,12 +1991,12 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) case DW_LNS_advance_pc: if (lh.maximum_ops_per_insn == 1) address += (lh.minimum_instruction_length - * read_unsigned_leb128 (abfd, line_ptr, - &bytes_read)); + * safe_read_leb128 (abfd, line_ptr, &bytes_read, + FALSE, line_end)); else { - bfd_vma adjust = read_unsigned_leb128 (abfd, line_ptr, - &bytes_read); + bfd_vma adjust = safe_read_leb128 (abfd, line_ptr, &bytes_read, + FALSE, line_end); address = ((op_index + adjust) / lh.maximum_ops_per_insn * lh.minimum_instruction_length); op_index = (op_index + adjust) % lh.maximum_ops_per_insn; @@ -1883,7 +2004,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) line_ptr += bytes_read; break; case DW_LNS_advance_line: - line += read_signed_leb128 (abfd, line_ptr, &bytes_read); + line += safe_read_leb128 (abfd, line_ptr, &bytes_read, TRUE, line_end); line_ptr += bytes_read; break; case DW_LNS_set_file: @@ -1892,7 +2013,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) /* The file and directory tables are 0 based, the references are 1 based. */ - file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + file = safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; if (filename) free (filename); @@ -1900,7 +2021,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) break; } case DW_LNS_set_column: - column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read); + column = safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; break; case DW_LNS_negate_stmt: @@ -1922,7 +2043,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) } break; case DW_LNS_fixed_advance_pc: - address += read_2_bytes (abfd, line_ptr); + address += read_2_bytes (abfd, line_ptr, line_end); op_index = 0; line_ptr += 2; break; @@ -1930,7 +2051,7 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) /* 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); + (void) safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end); line_ptr += bytes_read; } break; @@ -2159,6 +2280,7 @@ find_abstract_instance_name (struct comp_unit *unit, { bfd *abfd = unit->abfd; bfd_byte *info_ptr; + bfd_byte *info_ptr_end; unsigned int abbrev_number, bytes_read, i; struct abbrev_info *abbrev; bfd_uint64_t die_ref = attr_ptr->u.val; @@ -2175,6 +2297,7 @@ find_abstract_instance_name (struct comp_unit *unit, abort (); info_ptr = unit->sec_info_ptr + die_ref; + info_ptr_end = unit->end_ptr; /* Now find the CU containing this pointer. */ if (info_ptr >= unit->info_ptr_unit && info_ptr < unit->end_ptr) @@ -2208,13 +2331,18 @@ find_abstract_instance_name (struct comp_unit *unit, bfd_set_error (bfd_error_bad_value); return NULL; } + info_ptr_end = unit->stash->alt_dwarf_info_buffer + unit->stash->alt_dwarf_info_size; + /* FIXME: Do we need to locate the correct CU, in a similar fashion to the code in the DW_FORM_ref_addr case above ? */ } else - info_ptr = unit->info_ptr_unit + die_ref; + { + info_ptr = unit->info_ptr_unit + die_ref; + info_ptr_end = unit->end_ptr; + } - abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); + abbrev_number = safe_read_leb128 (abfd, info_ptr, &bytes_read, FALSE, info_ptr_end); info_ptr += bytes_read; if (abbrev_number) @@ -2231,7 +2359,7 @@ find_abstract_instance_name (struct comp_unit *unit, for (i = 0; i < abbrev->num_attrs; ++i) { info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, - info_ptr); + info_ptr, info_ptr_end); if (info_ptr == NULL) break; switch (attr.name) @@ -2273,6 +2401,7 @@ read_rangelist (struct comp_unit *unit, struct arange *arange, bfd_uint64_t offset) { bfd_byte *ranges_ptr; + bfd_byte *ranges_end; bfd_vma base_address = unit->base_address; if (! unit->stash->dwarf_ranges_buffer) @@ -2280,16 +2409,24 @@ read_rangelist (struct comp_unit *unit, struct arange *arange, if (! read_debug_ranges (unit)) return FALSE; } + ranges_ptr = unit->stash->dwarf_ranges_buffer + offset; + if (ranges_ptr < unit->stash->dwarf_ranges_buffer) + return FALSE; + ranges_end = unit->stash->dwarf_ranges_buffer + unit->stash->dwarf_ranges_size; for (;;) { bfd_vma low_pc; bfd_vma high_pc; - low_pc = read_address (unit, ranges_ptr); + /* PR 17512: file: 62cada7d. */ + if (ranges_ptr + 2 * unit->addr_size > ranges_end) + return FALSE; + + low_pc = read_address (unit, ranges_ptr, ranges_end); ranges_ptr += unit->addr_size; - high_pc = read_address (unit, ranges_ptr); + high_pc = read_address (unit, ranges_ptr, ranges_end); ranges_ptr += unit->addr_size; if (low_pc == 0 && high_pc == 0) @@ -2316,6 +2453,7 @@ scan_unit_for_symbols (struct comp_unit *unit) { bfd *abfd = unit->abfd; bfd_byte *info_ptr = unit->first_child_die_ptr; + bfd_byte *info_ptr_end = unit->stash->info_ptr_end; int nesting_level = 1; struct funcinfo **nested_funcs; int nested_funcs_size; @@ -2340,7 +2478,11 @@ scan_unit_for_symbols (struct comp_unit *unit) bfd_vma high_pc = 0; bfd_boolean high_pc_relative = FALSE; - abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); + /* PR 17512: file: 9f405d9d. */ + if (info_ptr >= info_ptr_end) + goto fail; + + abbrev_number = safe_read_leb128 (abfd, info_ptr, &bytes_read, FALSE, info_ptr_end); info_ptr += bytes_read; if (! abbrev_number) @@ -2404,7 +2546,7 @@ scan_unit_for_symbols (struct comp_unit *unit) 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, info_ptr_end); if (info_ptr == NULL) goto fail; @@ -2602,15 +2744,15 @@ parse_comp_unit (struct dwarf2_debug *stash, bfd *abfd = stash->bfd_ptr; bfd_boolean high_pc_relative = FALSE; - version = read_2_bytes (abfd, info_ptr); + version = read_2_bytes (abfd, info_ptr, end_ptr); info_ptr += 2; BFD_ASSERT (offset_size == 4 || offset_size == 8); if (offset_size == 4) - abbrev_offset = read_4_bytes (abfd, info_ptr); + abbrev_offset = read_4_bytes (abfd, info_ptr, end_ptr); else - abbrev_offset = read_8_bytes (abfd, info_ptr); + abbrev_offset = read_8_bytes (abfd, info_ptr, end_ptr); info_ptr += offset_size; - addr_size = read_1_byte (abfd, info_ptr); + addr_size = read_1_byte (abfd, info_ptr, end_ptr); info_ptr += 1; if (version != 2 && version != 3 && version != 4) @@ -2647,7 +2789,7 @@ parse_comp_unit (struct dwarf2_debug *stash, if (! abbrevs) return 0; - abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read); + abbrev_number = safe_read_leb128 (abfd, info_ptr, &bytes_read, FALSE, end_ptr); info_ptr += bytes_read; if (! abbrev_number) { @@ -2682,7 +2824,7 @@ parse_comp_unit (struct dwarf2_debug *stash, 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, end_ptr); if (info_ptr == NULL) return NULL; @@ -2721,6 +2863,15 @@ parse_comp_unit (struct dwarf2_debug *stash, case DW_AT_comp_dir: { char *comp_dir = attr.u.str; + + /* PR 17512: file: 1fe726be. */ + if (! is_str_attr (attr.form)) + { + (*_bfd_error_handler) + (_("Dwarf Error: DW_AT_comp_dir attribute encountered with a non-string form.")); + comp_dir = NULL; + } + if (comp_dir) { /* Irix 6.2 native cc prepends .: to the compilation @@ -3637,6 +3788,57 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd, bfd *debug_bfd, return TRUE; } +/* Scan the debug information in PINFO looking for a DW_TAG_subprogram + abbrev with a DW_AT_low_pc attached to it. Then lookup that same + symbol in SYMBOLS and return the difference between the low_pc and + the symbol's address. Returns 0 if no suitable symbol could be found. */ + +bfd_signed_vma +_bfd_dwarf2_find_symbol_bias (asymbol ** symbols, void ** pinfo) +{ + struct dwarf2_debug *stash; + struct comp_unit * unit; + + stash = (struct dwarf2_debug *) *pinfo; + + if (stash == NULL) + return 0; + + for (unit = stash->all_comp_units; unit; unit = unit->next_unit) + { + struct funcinfo * func; + + if (unit->function_table == NULL) + { + if (unit->line_table == NULL) + unit->line_table = decode_line_info (unit, stash); + if (unit->line_table != NULL) + scan_unit_for_symbols (unit); + } + + for (func = unit->function_table; func != NULL; func = func->prev_func) + if (func->name && func->arange.low) + { + asymbol ** psym; + + /* FIXME: Do we need to scan the aranges looking for the lowest pc value ? */ + + for (psym = symbols; * psym != NULL; psym++) + { + asymbol * sym = * psym; + + if (sym->flags & BSF_FUNCTION + && sym->section != NULL + && strcmp (sym->name, func->name) == 0) + return ((bfd_signed_vma) func->arange.low) - + ((bfd_signed_vma) (sym->value + sym->section->vma)); + } + } + } + + return 0; +} + /* Find the source code location of SYMBOL. If SYMBOL is NULL then find the nearest source code location corresponding to the address SECTION + OFFSET. @@ -3823,13 +4025,13 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd, unsigned int offset_size = addr_size; bfd_byte *info_ptr_unit = stash->info_ptr; - length = read_4_bytes (stash->bfd_ptr, stash->info_ptr); + length = read_4_bytes (stash->bfd_ptr, stash->info_ptr, stash->info_ptr_end); /* A 0xffffff length is the DWARF3 way of indicating we use 64-bit offsets, instead of 32-bit offsets. */ if (length == 0xffffffff) { offset_size = 8; - length = read_8_bytes (stash->bfd_ptr, stash->info_ptr + 4); + length = read_8_bytes (stash->bfd_ptr, stash->info_ptr + 4, stash->info_ptr_end); stash->info_ptr += 12; } /* A zero length is the IRIX way of indicating 64-bit offsets, @@ -3838,7 +4040,7 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd, else if (length == 0) { offset_size = 8; - length = read_4_bytes (stash->bfd_ptr, stash->info_ptr + 4); + length = read_4_bytes (stash->bfd_ptr, stash->info_ptr + 4, stash->info_ptr_end); stash->info_ptr += 8; } /* In the absence of the hints above, we assume 32-bit DWARF2 @@ -3860,13 +4062,25 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd, if (length > 0) { + bfd_byte * new_ptr; + each = parse_comp_unit (stash, length, info_ptr_unit, offset_size); if (!each) /* The dwarf information is damaged, don't trust it any more. */ break; - stash->info_ptr += length; + + new_ptr = stash->info_ptr + length; + /* PR 17512: file: 1500698c. */ + if (new_ptr < stash->info_ptr) + { + /* A corrupt length value - do not trust the info any more. */ + found = FALSE; + break; + } + else + stash->info_ptr = new_ptr; if (stash->all_comp_units) stash->all_comp_units->prev_unit = each; diff --git a/bfd/ecoff.c b/bfd/ecoff.c index f4f45a4..a8ba28a 100644 --- a/bfd/ecoff.c +++ b/bfd/ecoff.c @@ -504,7 +504,6 @@ _bfd_ecoff_slurp_symbolic_info (bfd *abfd, struct fdr *fdr_ptr; bfd_size_type raw_end; bfd_size_type cb_end; - bfd_size_type amt; file_ptr pos; BFD_ASSERT (debug == &ecoff_data (abfd)->debug_info); @@ -607,9 +606,8 @@ _bfd_ecoff_slurp_symbolic_info (bfd *abfd, We need to look at the fdr to deal with a lot of information in the symbols, so we swap them here. */ - amt = internal_symhdr->ifdMax; - amt *= sizeof (struct fdr); - debug->fdr = (FDR *) bfd_alloc (abfd, amt); + debug->fdr = (FDR *) bfd_alloc2 (abfd, internal_symhdr->ifdMax, + sizeof (struct fdr)); if (debug->fdr == NULL) return FALSE; external_fdr_size = backend->debug_swap.external_fdr_size; @@ -859,7 +857,6 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd) = backend->debug_swap.swap_ext_in; void (* const swap_sym_in) (bfd *, void *, SYMR *) = backend->debug_swap.swap_sym_in; - bfd_size_type internal_size; ecoff_symbol_type *internal; ecoff_symbol_type *internal_ptr; char *eraw_src; @@ -878,9 +875,8 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd) if (bfd_get_symcount (abfd) == 0) return TRUE; - internal_size = bfd_get_symcount (abfd); - internal_size *= sizeof (ecoff_symbol_type); - internal = (ecoff_symbol_type *) bfd_alloc (abfd, internal_size); + internal = (ecoff_symbol_type *) bfd_alloc2 (abfd, bfd_get_symcount (abfd), + sizeof (ecoff_symbol_type)); if (internal == NULL) return FALSE; @@ -896,20 +892,28 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd) (*swap_ext_in) (abfd, (void *) eraw_src, &internal_esym); /* PR 17512: file: 3372-1000-0.004. */ - if (internal_esym.asym.iss >= ecoff_data (abfd)->debug_info.symbolic_header.issExtMax) + if (internal_esym.asym.iss >= ecoff_data (abfd)->debug_info.symbolic_header.issExtMax + || internal_esym.asym.iss < 0) return FALSE; internal_ptr->symbol.name = (ecoff_data (abfd)->debug_info.ssext + internal_esym.asym.iss); + if (!ecoff_set_symbol_info (abfd, &internal_esym.asym, &internal_ptr->symbol, 1, internal_esym.weakext)) return FALSE; - + /* The alpha uses a negative ifd field for section symbols. */ if (internal_esym.ifd >= 0) - internal_ptr->fdr = (ecoff_data (abfd)->debug_info.fdr - + internal_esym.ifd); + { + /* PR 17512: file: 3372-1983-0.004. */ + if (internal_esym.ifd >= ecoff_data (abfd)->debug_info.symbolic_header.ifdMax) + internal_ptr->fdr = NULL; + else + internal_ptr->fdr = (ecoff_data (abfd)->debug_info.fdr + + internal_esym.ifd); + } else internal_ptr->fdr = NULL; internal_ptr->local = FALSE; @@ -3999,7 +4003,7 @@ ecoff_reloc_link_order (bfd *output_bfd, size = bfd_get_reloc_size (rel.howto); buf = (bfd_byte *) bfd_zmalloc (size); - if (buf == NULL) + if (buf == NULL && size != 0) return FALSE; rstat = _bfd_relocate_contents (rel.howto, output_bfd, (bfd_vma) addend, buf); diff --git a/bfd/elf-attrs.c b/bfd/elf-attrs.c index d06825e..ceafd44 100644 --- a/bfd/elf-attrs.c +++ b/bfd/elf-attrs.c @@ -54,7 +54,7 @@ is_default_attr (obj_attribute *attr) /* Return the size of a single attribute. */ static bfd_vma -obj_attr_size (int tag, obj_attribute *attr) +obj_attr_size (unsigned int tag, obj_attribute *attr) { bfd_vma size; @@ -143,7 +143,7 @@ write_uleb128 (bfd_byte *p, unsigned int val) /* Write attribute ATTR to butter P, and return a pointer to the following byte. */ static bfd_byte * -write_obj_attribute (bfd_byte *p, int tag, obj_attribute *attr) +write_obj_attribute (bfd_byte *p, unsigned int tag, obj_attribute *attr) { /* Suppress default entries. */ if (is_default_attr (attr)) @@ -189,7 +189,7 @@ vendor_set_obj_attr_contents (bfd *abfd, bfd_byte *contents, bfd_vma size, attr = elf_known_obj_attributes (abfd)[vendor]; for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) { - int tag = i; + unsigned int tag = i; if (get_elf_backend_data (abfd)->obj_attrs_order) tag = get_elf_backend_data (abfd)->obj_attrs_order (i); p = write_obj_attribute (p, tag, &attr[tag]); @@ -227,7 +227,7 @@ bfd_elf_set_obj_attr_contents (bfd *abfd, bfd_byte *contents, bfd_vma size) /* Allocate/find an object attribute. */ static obj_attribute * -elf_new_obj_attr (bfd *abfd, int vendor, int tag) +elf_new_obj_attr (bfd *abfd, int vendor, unsigned int tag) { obj_attribute *attr; obj_attribute_list *list; @@ -265,7 +265,7 @@ elf_new_obj_attr (bfd *abfd, int vendor, int tag) /* Return the value of an integer object attribute. */ int -bfd_elf_get_obj_attr_int (bfd *abfd, int vendor, int tag) +bfd_elf_get_obj_attr_int (bfd *abfd, int vendor, unsigned int tag) { obj_attribute_list *p; @@ -291,7 +291,7 @@ bfd_elf_get_obj_attr_int (bfd *abfd, int vendor, int tag) /* Add an integer object attribute. */ void -bfd_elf_add_obj_attr_int (bfd *abfd, int vendor, int tag, unsigned int i) +bfd_elf_add_obj_attr_int (bfd *abfd, int vendor, unsigned int tag, unsigned int i) { obj_attribute *attr; @@ -314,7 +314,7 @@ _bfd_elf_attr_strdup (bfd *abfd, const char * s) /* Add a string object attribute. */ void -bfd_elf_add_obj_attr_string (bfd *abfd, int vendor, int tag, const char *s) +bfd_elf_add_obj_attr_string (bfd *abfd, int vendor, unsigned int tag, const char *s) { obj_attribute *attr; @@ -325,7 +325,8 @@ bfd_elf_add_obj_attr_string (bfd *abfd, int vendor, int tag, const char *s) /* Add a int+string object attribute. */ void -bfd_elf_add_obj_attr_int_string (bfd *abfd, int vendor, int tag, +bfd_elf_add_obj_attr_int_string (bfd *abfd, int vendor, + unsigned int tag, unsigned int i, const char *s) { obj_attribute *attr; @@ -394,7 +395,7 @@ _bfd_elf_copy_obj_attributes (bfd *ibfd, bfd *obfd) /* Determine whether a GNU object attribute tag takes an integer, a string or both. */ static int -gnu_obj_attrs_arg_type (int tag) +gnu_obj_attrs_arg_type (unsigned int tag) { /* Except for Tag_compatibility, for GNU attributes we follow the same rule ARM ones > 32 follow: odd-numbered tags take strings @@ -409,7 +410,7 @@ gnu_obj_attrs_arg_type (int tag) /* Determine what arguments an attribute tag takes. */ int -_bfd_elf_obj_attrs_arg_type (bfd *abfd, int vendor, int tag) +_bfd_elf_obj_attrs_arg_type (bfd *abfd, int vendor, unsigned int tag) { switch (vendor) { @@ -486,7 +487,7 @@ _bfd_elf_parse_attributes (bfd *abfd, Elf_Internal_Shdr * hdr) p += namelen; while (section_len > 0 && p < p_end) { - int tag; + unsigned int tag; unsigned int n; unsigned int val; bfd_vma subsection_len; @@ -666,7 +667,7 @@ _bfd_elf_merge_unknown_attribute_list (bfd *ibfd, bfd *obfd) for (; in_list || out_list; ) { bfd *err_bfd = NULL; - int err_tag = 0; + unsigned int err_tag = 0; /* The tags for each list are in numerical order. */ /* If the tags are equal, then merge. */ diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index da7c522..e08b2d6 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -27,6 +27,10 @@ #include "elf/internal.h" #include "bfdlink.h" +#ifdef __cplusplus +extern "C" { +#endif + /* The number of entries in a section is its size divided by the size of a single entry. This is normally only applicable to reloc and symbol table sections. @@ -196,7 +200,8 @@ struct elf_link_hash_entry unsigned int pointer_equality_needed : 1; /* Symbol is a unique global symbol. */ unsigned int unique_global : 1; - /* Symbol is defined with non-default visibility. */ + /* Symbol is defined by a shared library with non-default visibility + in a read/write section. */ unsigned int protected_def : 1; /* String table index in .dynstr if this is a dynamic symbol. */ @@ -241,7 +246,8 @@ struct elf_link_hash_entry _bfd_elf_symbol_refs_local_p (H, INFO, 1) /* Common symbols that are turned into definitions don't have the - DEF_REGULAR flag set, so they might appear to be undefined. */ + DEF_REGULAR flag set, so they might appear to be undefined. + Symbols defined in linker scripts also don't have DEF_REGULAR set. */ #define ELF_COMMON_DEF_P(H) \ (!(H)->def_regular \ && !(H)->def_dynamic \ @@ -382,16 +388,41 @@ struct eh_frame_array_ent struct htab; -struct eh_frame_hdr_info +#define DWARF2_EH_HDR 1 +#define COMPACT_EH_HDR 2 + +/* Endian-neutral code indicating that a function cannot be unwound. */ +#define COMPACT_EH_CANT_UNWIND_OPCODE 0x015d5d01 + +struct dwarf_eh_frame_hdr_info { struct htab *cies; - asection *hdr_sec; - unsigned int fde_count, array_count; - struct eh_frame_array_ent *array; + unsigned int fde_count; /* TRUE if .eh_frame_hdr should contain the sorted search table. We build it if we successfully read all .eh_frame input sections and recognize them. */ bfd_boolean table; + struct eh_frame_array_ent *array; +}; + +struct compact_eh_frame_hdr_info +{ + unsigned int allocated_entries; + /* eh_frame_entry fragments. */ + asection **entries; +}; + +struct eh_frame_hdr_info +{ + asection *hdr_sec; + unsigned int array_count; + bfd_boolean frame_hdr_is_compact; + union + { + struct dwarf_eh_frame_hdr_info dwarf; + struct compact_eh_frame_hdr_info compact; + } + u; }; /* Enum used to identify target specific extensions to the elf_obj_tdata @@ -438,6 +469,13 @@ enum elf_target_id GENERIC_ELF_DATA }; +struct elf_sym_strtab +{ + Elf_Internal_Sym sym; + unsigned long dest_index; + unsigned long destshndx_index; +}; + /* ELF linker hash table. */ struct elf_link_hash_table @@ -481,6 +519,17 @@ struct elf_link_hash_table section. */ struct elf_strtab_hash *dynstr; + /* The number of symbol strings found in the link which must be put + into the .strtab section. */ + bfd_size_type strtabcount; + + /* The array size of the symbol string table, which becomes the + .strtab section. */ + bfd_size_type strtabsize; + + /* The array of strings, which becomes the .strtab section. */ + struct elf_sym_strtab *strtab; + /* The number of buckets in the hash table in the .hash section. This is based on the number of dynamic symbols. */ bfd_size_type bucketcount; @@ -1233,6 +1282,9 @@ struct elf_backend_data bfd_size_type (*maybe_function_sym) (const asymbol *sym, asection *sec, bfd_vma *code_off); + /* Return the section which RELOC_SEC applies to. */ + asection *(*get_reloc_section) (asection *reloc_sec); + /* Used to handle bad SHF_LINK_ORDER input. */ bfd_error_handler_type link_order_error_handler; @@ -1282,6 +1334,12 @@ struct elf_backend_data or give an error and return FALSE. */ bfd_boolean (*obj_attrs_handle_unknown) (bfd *, int); + /* Encoding used for compact EH tables. */ + int (*compact_eh_encoding) (struct bfd_link_info *); + + /* Opcode representing no unwind. */ + int (*cant_unwind_opcode) (struct bfd_link_info *); + /* This is non-zero if static TLS segments require a special alignment. */ unsigned static_tls_alignment; @@ -1354,6 +1412,10 @@ struct elf_backend_data in length rather than sec->size in length, if sec->rawsize is non-zero and smaller than sec->size. */ unsigned caches_rawsize : 1; + + /* Address of protected data defined in the shared library may be + external, i.e., due to copy relocation. */ + unsigned extern_protected_data : 1; }; /* Information about reloc sections associated with a bfd_elf_section_data @@ -1432,6 +1494,9 @@ struct bfd_elf_section_data field acts as a chain pointer. */ struct eh_cie_fde *fde_list; + /* Link from a text section to its .eh_frame_entry section. */ + asection *eh_frame_entry; + /* A pointer used for various section optimizations. */ void *sec_info; }; @@ -1445,6 +1510,7 @@ struct bfd_elf_section_data #define elf_next_in_group(sec) (elf_section_data(sec)->next_in_group) #define elf_fde_list(sec) (elf_section_data(sec)->fde_list) #define elf_sec_group(sec) (elf_section_data(sec)->sec_group) +#define elf_section_eh_frame_entry(sec) (elf_section_data(sec)->eh_frame_entry) #define xvec_get_elf_backend_data(xvec) \ ((const struct elf_backend_data *) (xvec)->backend_data) @@ -1483,7 +1549,7 @@ typedef struct obj_attribute typedef struct obj_attribute_list { struct obj_attribute_list *next; - int tag; + unsigned int tag; obj_attribute attr; } obj_attribute_list; @@ -1515,13 +1581,6 @@ struct sdt_note bfd_byte data[1]; }; -/* NT_GNU_BUILD_ID note type info for input BFDs. */ -struct elf_build_id -{ - size_t size; - bfd_byte data[1]; -}; - /* tdata information grabbed from an elf core file. */ struct core_elf_obj_tdata { @@ -1656,9 +1715,6 @@ struct elf_obj_tdata obj_attribute known_obj_attributes[2][NUM_KNOWN_OBJ_ATTRIBUTES]; obj_attribute_list *other_obj_attributes[2]; - /* NT_GNU_BUILD_ID note type. */ - struct elf_build_id *build_id; - /* Linked-list containing information about every Systemtap section found in the object file. Each section corresponds to one entry in the list. */ @@ -1942,8 +1998,6 @@ extern Elf_Internal_Sym *bfd_sym_from_r_symndx (struct sym_cache *, bfd *, unsigned long); extern asection *bfd_section_from_elf_index (bfd *, unsigned int); -extern struct bfd_strtab_hash *_bfd_elf_stringtab_init - (void); extern struct elf_strtab_hash * _bfd_elf_strtab_init (void); @@ -1970,8 +2024,15 @@ extern bfd_boolean _bfd_elf_strtab_emit extern void _bfd_elf_strtab_finalize (struct elf_strtab_hash *); +extern bfd_boolean bfd_elf_parse_eh_frame_entries + (bfd *, struct bfd_link_info *); +extern bfd_boolean _bfd_elf_parse_eh_frame_entry + (struct bfd_link_info *, asection *, struct elf_reloc_cookie *); extern void _bfd_elf_parse_eh_frame (bfd *, struct bfd_link_info *, asection *, struct elf_reloc_cookie *); +extern bfd_boolean _bfd_elf_end_eh_frame_parsing + (struct bfd_link_info *info); + extern bfd_boolean _bfd_elf_discard_section_eh_frame (bfd *, struct bfd_link_info *, asection *, bfd_boolean (*) (bfd_vma, void *), struct elf_reloc_cookie *); @@ -1981,10 +2042,15 @@ extern bfd_vma _bfd_elf_eh_frame_section_offset (bfd *, struct bfd_link_info *, asection *, bfd_vma); extern bfd_boolean _bfd_elf_write_section_eh_frame (bfd *, struct bfd_link_info *, asection *, bfd_byte *); +bfd_boolean _bfd_elf_write_section_eh_frame_entry + (bfd *, struct bfd_link_info *, asection *, bfd_byte *); +extern bfd_boolean _bfd_elf_fixup_eh_frame_hdr (struct bfd_link_info *); extern bfd_boolean _bfd_elf_write_section_eh_frame_hdr (bfd *, struct bfd_link_info *); extern bfd_boolean _bfd_elf_eh_frame_present (struct bfd_link_info *); +extern bfd_boolean _bfd_elf_eh_frame_entry_present + (struct bfd_link_info *); extern bfd_boolean _bfd_elf_maybe_strip_eh_frame_hdr (struct bfd_link_info *); @@ -2008,6 +2074,8 @@ extern bfd_boolean _bfd_elf_create_dynamic_sections (bfd *, struct bfd_link_info *); extern bfd_boolean _bfd_elf_create_got_section (bfd *, struct bfd_link_info *); +extern asection *_bfd_elf_section_for_symbol + (struct elf_reloc_cookie *, unsigned long, bfd_boolean); extern struct elf_link_hash_entry *_bfd_elf_define_linkage_sym (bfd *, struct bfd_link_info *, asection *, const char *); extern void _bfd_elf_init_1_index_section @@ -2237,6 +2305,8 @@ extern bfd_boolean _bfd_elf_is_function_type (unsigned int); extern bfd_size_type _bfd_elf_maybe_function_sym (const asymbol *, asection *, bfd_vma *); +extern asection *_bfd_elf_get_reloc_section (asection *); + extern int bfd_elf_get_default_section_type (flagword); extern bfd_boolean bfd_elf_lookup_section_flags @@ -2280,6 +2350,10 @@ extern char *elfcore_write_s390_system_call (bfd *, char *, int *, const void *, int); extern char *elfcore_write_s390_tdb (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_vxrs_low + (bfd *, char *, int *, const void *, int); +extern char *elfcore_write_s390_vxrs_high + (bfd *, char *, int *, const void *, int); extern char *elfcore_write_arm_vfp (bfd *, char *, int *, const void *, int); extern char *elfcore_write_aarch_tls @@ -2338,22 +2412,22 @@ extern bfd *_bfd_elf64_bfd_from_remote_memory extern bfd_vma bfd_elf_obj_attr_size (bfd *); extern void bfd_elf_set_obj_attr_contents (bfd *, bfd_byte *, bfd_vma); -extern int bfd_elf_get_obj_attr_int (bfd *, int, int); -extern void bfd_elf_add_obj_attr_int (bfd *, int, int, unsigned int); +extern int bfd_elf_get_obj_attr_int (bfd *, int, unsigned int); +extern void bfd_elf_add_obj_attr_int (bfd *, int, unsigned int, unsigned int); #define bfd_elf_add_proc_attr_int(BFD, TAG, VALUE) \ bfd_elf_add_obj_attr_int ((BFD), OBJ_ATTR_PROC, (TAG), (VALUE)) -extern void bfd_elf_add_obj_attr_string (bfd *, int, int, const char *); +extern void bfd_elf_add_obj_attr_string (bfd *, int, unsigned int, const char *); #define bfd_elf_add_proc_attr_string(BFD, TAG, VALUE) \ bfd_elf_add_obj_attr_string ((BFD), OBJ_ATTR_PROC, (TAG), (VALUE)) -extern void bfd_elf_add_obj_attr_int_string (bfd *, int, int, unsigned int, - const char *); +extern void bfd_elf_add_obj_attr_int_string (bfd *, int, unsigned int, + unsigned int, const char *); #define bfd_elf_add_proc_attr_int_string(BFD, TAG, INTVAL, STRVAL) \ bfd_elf_add_obj_attr_int_string ((BFD), OBJ_ATTR_PROC, (TAG), \ (INTVAL), (STRVAL)) extern char *_bfd_elf_attr_strdup (bfd *, const char *); extern void _bfd_elf_copy_obj_attributes (bfd *, bfd *); -extern int _bfd_elf_obj_attrs_arg_type (bfd *, int, int); +extern int _bfd_elf_obj_attrs_arg_type (bfd *, int, unsigned 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); @@ -2539,4 +2613,7 @@ extern asection _bfd_elf_large_com_section; (!(H)->unique_global \ && ((INFO)->symbolic || ((INFO)->dynamic && !(H)->dynamic))) +#ifdef __cplusplus +} +#endif #endif /* _LIBELF_H_ */ diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c index faa0461..22068ab 100644 --- a/bfd/elf-eh-frame.c +++ b/bfd/elf-eh-frame.c @@ -452,6 +452,111 @@ make_pc_relative (unsigned char encoding, unsigned int ptr_size) return encoding | DW_EH_PE_pcrel; } +/* Examine each .eh_frame_entry section and discard those + those that are marked SEC_EXCLUDE. */ + +static void +bfd_elf_discard_eh_frame_entry (struct eh_frame_hdr_info *hdr_info) +{ + unsigned int i; + for (i = 0; i < hdr_info->array_count; i++) + { + if (hdr_info->u.compact.entries[i]->flags & SEC_EXCLUDE) + { + unsigned int j; + for (j = i + 1; j < hdr_info->array_count; j++) + hdr_info->u.compact.entries[j-1] = hdr_info->u.compact.entries[j]; + + hdr_info->array_count--; + hdr_info->u.compact.entries[hdr_info->array_count] = NULL; + i--; + } + } +} + +/* Add a .eh_frame_entry section. */ + +static void +bfd_elf_record_eh_frame_entry (struct eh_frame_hdr_info *hdr_info, + asection *sec) +{ + if (hdr_info->array_count == hdr_info->u.compact.allocated_entries) + { + if (hdr_info->u.compact.allocated_entries == 0) + { + hdr_info->frame_hdr_is_compact = TRUE; + hdr_info->u.compact.allocated_entries = 2; + hdr_info->u.compact.entries = + bfd_malloc (hdr_info->u.compact.allocated_entries + * sizeof (hdr_info->u.compact.entries[0])); + } + else + { + hdr_info->u.compact.allocated_entries *= 2; + hdr_info->u.compact.entries = + bfd_realloc (hdr_info->u.compact.entries, + hdr_info->u.compact.allocated_entries + * sizeof (hdr_info->u.compact.entries[0])); + } + + BFD_ASSERT (hdr_info->u.compact.entries); + } + + hdr_info->u.compact.entries[hdr_info->array_count++] = sec; +} + +/* Parse a .eh_frame_entry section. Figure out which text section it + references. */ + +bfd_boolean +_bfd_elf_parse_eh_frame_entry (struct bfd_link_info *info, + asection *sec, struct elf_reloc_cookie *cookie) +{ + struct elf_link_hash_table *htab; + struct eh_frame_hdr_info *hdr_info; + unsigned long r_symndx; + asection *text_sec; + + htab = elf_hash_table (info); + hdr_info = &htab->eh_info; + + if (sec->size == 0 + || sec->sec_info_type != SEC_INFO_TYPE_NONE) + { + return TRUE; + } + + if (sec->output_section && bfd_is_abs_section (sec->output_section)) + { + /* At least one of the sections is being discarded from the + link, so we should just ignore them. */ + return TRUE; + } + + if (cookie->rel == cookie->relend) + return FALSE; + + /* The first relocation is the function start. */ + r_symndx = cookie->rel->r_info >> cookie->r_sym_shift; + if (r_symndx == STN_UNDEF) + return FALSE; + + text_sec = _bfd_elf_section_for_symbol (cookie, r_symndx, FALSE); + + if (text_sec == NULL) + return FALSE; + + elf_section_eh_frame_entry (text_sec) = sec; + if (text_sec->output_section + && bfd_is_abs_section (text_sec->output_section)) + sec->flags |= SEC_EXCLUDE; + + sec->sec_info_type = SEC_INFO_TYPE_EH_FRAME_ENTRY; + elf_section_data (sec)->sec_info = text_sec; + bfd_elf_record_eh_frame_entry (hdr_info, sec); + return TRUE; +} + /* Try to parse .eh_frame section SEC, which belongs to ABFD. Store the information in the section's sec_info field on success. COOKIE describes the relocations in SEC. */ @@ -925,7 +1030,7 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, (*info->callbacks->einfo) (_("%P: error in %B(%A); no .eh_frame_hdr table will be created.\n"), abfd, sec); - hdr_info->table = FALSE; + hdr_info->u.dwarf.table = FALSE; if (sec_info) free (sec_info); success: @@ -936,6 +1041,89 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, #undef REQUIRE } +/* Order eh_frame_hdr entries by the VMA of their text section. */ + +static int +cmp_eh_frame_hdr (const void *a, const void *b) +{ + bfd_vma text_a; + bfd_vma text_b; + asection *sec; + + sec = *(asection *const *)a; + sec = (asection *) elf_section_data (sec)->sec_info; + text_a = sec->output_section->vma + sec->output_offset; + sec = *(asection *const *)b; + sec = (asection *) elf_section_data (sec)->sec_info; + text_b = sec->output_section->vma + sec->output_offset; + + if (text_a < text_b) + return -1; + return text_a > text_b; + +} + +/* Add space for a CANTUNWIND terminator to SEC if the text sections + referenced by it and NEXT are not contiguous, or NEXT is NULL. */ + +static void +add_eh_frame_hdr_terminator (asection *sec, + asection *next) +{ + bfd_vma end; + bfd_vma next_start; + asection *text_sec; + + if (next) + { + /* See if there is a gap (presumably a text section without unwind info) + between these two entries. */ + text_sec = (asection *) elf_section_data (sec)->sec_info; + end = text_sec->output_section->vma + text_sec->output_offset + + text_sec->size; + text_sec = (asection *) elf_section_data (next)->sec_info; + next_start = text_sec->output_section->vma + text_sec->output_offset; + if (end == next_start) + return; + } + + /* Add space for a CANTUNWIND terminator. */ + if (!sec->rawsize) + sec->rawsize = sec->size; + + bfd_set_section_size (sec->owner, sec, sec->size + 8); +} + +/* Finish a pass over all .eh_frame_entry sections. */ + +bfd_boolean +_bfd_elf_end_eh_frame_parsing (struct bfd_link_info *info) +{ + struct eh_frame_hdr_info *hdr_info; + unsigned int i; + + hdr_info = &elf_hash_table (info)->eh_info; + + if (info->eh_frame_hdr_type != COMPACT_EH_HDR + || hdr_info->array_count == 0) + return FALSE; + + bfd_elf_discard_eh_frame_entry (hdr_info); + + qsort (hdr_info->u.compact.entries, hdr_info->array_count, + sizeof (asection *), cmp_eh_frame_hdr); + + for (i = 0; i < hdr_info->array_count - 1; i++) + { + add_eh_frame_hdr_terminator (hdr_info->u.compact.entries[i], + hdr_info->u.compact.entries[i + 1]); + } + + /* Add a CANTUNWIND terminator after the last entry. */ + add_eh_frame_hdr_terminator (hdr_info->u.compact.entries[i], NULL); + return TRUE; +} + /* Mark all relocations against CIE or FDE ENT, which occurs in .eh_frame section SEC. COOKIE describes the relocations in SEC; its "rel" field can be changed freely. */ @@ -1089,13 +1277,14 @@ find_merged_cie (bfd *abfd, struct bfd_link_info *info, asection *sec, /* See if we can merge this CIE with an earlier one. */ cie_compute_hash (cie); - if (hdr_info->cies == NULL) + if (hdr_info->u.dwarf.cies == NULL) { - hdr_info->cies = htab_try_create (1, cie_hash, cie_eq, free); - if (hdr_info->cies == NULL) + hdr_info->u.dwarf.cies = htab_try_create (1, cie_hash, cie_eq, free); + if (hdr_info->u.dwarf.cies == NULL) return cie_inf; } - loc = htab_find_slot_with_hash (hdr_info->cies, cie, cie->hash, INSERT); + loc = htab_find_slot_with_hash (hdr_info->u.dwarf.cies, cie, + cie->hash, INSERT); if (loc == NULL) return cie_inf; @@ -1185,13 +1374,13 @@ _bfd_elf_discard_section_eh_frame which we cannot turn into PC relative, don't create the binary search table, since it is affected by runtime relocations. */ - hdr_info->table = FALSE; + hdr_info->u.dwarf.table = FALSE; (*info->callbacks->einfo) (_("%P: FDE encoding in %B(%A) prevents .eh_frame_hdr" " table being created.\n"), abfd, sec); } ent->removed = 0; - hdr_info->fde_count++; + hdr_info->u.dwarf.fde_count++; ent->u.fde.cie_inf = find_merged_cie (abfd, info, sec, hdr_info, cookie, ent->u.fde.cie_inf); } @@ -1230,19 +1419,28 @@ _bfd_elf_discard_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info) htab = elf_hash_table (info); hdr_info = &htab->eh_info; - if (hdr_info->cies != NULL) + if (!hdr_info->frame_hdr_is_compact && hdr_info->u.dwarf.cies != NULL) { - htab_delete (hdr_info->cies); - hdr_info->cies = NULL; + htab_delete (hdr_info->u.dwarf.cies); + hdr_info->u.dwarf.cies = NULL; } sec = hdr_info->hdr_sec; if (sec == NULL) return FALSE; - sec->size = EH_FRAME_HDR_SIZE; - if (hdr_info->table) - sec->size += 4 + hdr_info->fde_count * 8; + if (info->eh_frame_hdr_type == COMPACT_EH_HDR) + { + /* For compact frames we only add the header. The actual table comes + from the .eh_frame_entry sections. */ + sec->size = 8; + } + else + { + sec->size = EH_FRAME_HDR_SIZE; + if (hdr_info->u.dwarf.table) + sec->size += 4 + hdr_info->u.dwarf.fde_count * 8; + } elf_eh_frame_hdr (abfd) = sec; return TRUE; @@ -1251,6 +1449,7 @@ _bfd_elf_discard_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info) /* Return true if there is at least one non-empty .eh_frame section in input files. Can only be called after ld has mapped input to output sections, and before sections are stripped. */ + bfd_boolean _bfd_elf_eh_frame_present (struct bfd_link_info *info) { @@ -1268,6 +1467,29 @@ _bfd_elf_eh_frame_present (struct bfd_link_info *info) return FALSE; } +/* Return true if there is at least one .eh_frame_entry section in + input files. */ + +bfd_boolean +_bfd_elf_eh_frame_entry_present (struct bfd_link_info *info) +{ + asection *o; + bfd *abfd; + + for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link.next) + { + for (o = abfd->sections; o; o = o->next) + { + const char *name = bfd_get_section_name (abfd, o); + + if (strcmp (name, ".eh_frame_entry") + && !bfd_is_abs_section (o->output_section)) + return TRUE; + } + } + return FALSE; +} + /* This function is called from size_dynamic_sections. It needs to decide whether .eh_frame_hdr should be output or not, because when the dynamic symbol table has been sized it is too late @@ -1278,6 +1500,8 @@ _bfd_elf_maybe_strip_eh_frame_hdr (struct bfd_link_info *info) { struct elf_link_hash_table *htab; struct eh_frame_hdr_info *hdr_info; + struct bfd_link_hash_entry *bh = NULL; + struct elf_link_hash_entry *h; htab = elf_hash_table (info); hdr_info = &htab->eh_info; @@ -1285,15 +1509,32 @@ _bfd_elf_maybe_strip_eh_frame_hdr (struct bfd_link_info *info) return TRUE; if (bfd_is_abs_section (hdr_info->hdr_sec->output_section) - || !info->eh_frame_hdr - || !_bfd_elf_eh_frame_present (info)) + || info->eh_frame_hdr_type == 0 + || (info->eh_frame_hdr_type == DWARF2_EH_HDR + && !_bfd_elf_eh_frame_present (info)) + || (info->eh_frame_hdr_type == COMPACT_EH_HDR + && !_bfd_elf_eh_frame_entry_present (info))) { hdr_info->hdr_sec->flags |= SEC_EXCLUDE; hdr_info->hdr_sec = NULL; return TRUE; } - hdr_info->table = TRUE; + /* Add a hidden symbol so that systems without access to PHDRs can + find the table. */ + if (! (_bfd_generic_link_add_one_symbol + (info, info->output_bfd, "__GNU_EH_FRAME_HDR", BSF_LOCAL, + hdr_info->hdr_sec, 0, NULL, FALSE, FALSE, &bh))) + return FALSE; + + h = (struct elf_link_hash_entry *) bh; + h->def_regular = 1; + h->other = STV_HIDDEN; + get_elf_backend_data + (info->output_bfd)->elf_backend_hide_symbol (info, h, TRUE); + + if (!hdr_info->frame_hdr_is_compact) + hdr_info->u.dwarf.table = TRUE; return TRUE; } @@ -1384,6 +1625,83 @@ _bfd_elf_eh_frame_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED, + extra_augmentation_data_bytes (sec_info->entry + mid)); } +/* Write out .eh_frame_entry section. Add CANTUNWIND terminator if needed. + Also check that the contents look sane. */ + +bfd_boolean +_bfd_elf_write_section_eh_frame_entry (bfd *abfd, struct bfd_link_info *info, + asection *sec, bfd_byte *contents) +{ + const struct elf_backend_data *bed; + bfd_byte cantunwind[8]; + bfd_vma addr; + bfd_vma last_addr; + bfd_vma offset; + asection *text_sec = (asection *) elf_section_data (sec)->sec_info; + + if (!sec->rawsize) + sec->rawsize = sec->size; + + BFD_ASSERT (sec->sec_info_type == SEC_INFO_TYPE_EH_FRAME_ENTRY); + + /* Check to make sure that the text section corresponding to this eh_frame_entry + section has not been excluded. In particular, mips16 stub entries will be + excluded outside of the normal process. */ + if (sec->flags & SEC_EXCLUDE + || text_sec->flags & SEC_EXCLUDE) + return TRUE; + + if (!bfd_set_section_contents (abfd, sec->output_section, contents, + sec->output_offset, sec->rawsize)) + return FALSE; + + last_addr = bfd_get_signed_32 (abfd, contents); + /* Check that all the entries are in order. */ + for (offset = 8; offset < sec->rawsize; offset += 8) + { + addr = bfd_get_signed_32 (abfd, contents + offset) + offset; + if (addr <= last_addr) + { + (*_bfd_error_handler) (_("%B: %s not in order"), sec->owner, sec->name); + return FALSE; + } + + last_addr = addr; + } + + addr = text_sec->output_section->vma + text_sec->output_offset + + text_sec->size; + addr &= ~1; + addr -= (sec->output_section->vma + sec->output_offset + sec->rawsize); + if (addr & 1) + { + (*_bfd_error_handler) (_("%B: %s invalid input section size"), + sec->owner, sec->name); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + if (last_addr >= addr + sec->rawsize) + { + (*_bfd_error_handler) (_("%B: %s points past end of text section"), + sec->owner, sec->name); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + + if (sec->size == sec->rawsize) + return TRUE; + + bed = get_elf_backend_data (abfd); + BFD_ASSERT (sec->size == sec->rawsize + 8); + BFD_ASSERT ((addr & 1) == 0); + BFD_ASSERT (bed->cant_unwind_opcode); + + bfd_put_32 (abfd, addr, cantunwind); + bfd_put_32 (abfd, (*bed->cant_unwind_opcode) (info), cantunwind + 4); + return bfd_set_section_contents (abfd, sec->output_section, cantunwind, + sec->output_offset + sec->rawsize, 8); +} + /* Write out .eh_frame section. This is called with the relocated contents. */ @@ -1413,10 +1731,14 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, htab = elf_hash_table (info); hdr_info = &htab->eh_info; - if (hdr_info->table && hdr_info->array == NULL) - hdr_info->array = (struct eh_frame_array_ent *) - bfd_malloc (hdr_info->fde_count * sizeof(*hdr_info->array)); - if (hdr_info->array == NULL) + if (hdr_info->u.dwarf.table && hdr_info->u.dwarf.array == NULL) + { + hdr_info->frame_hdr_is_compact = FALSE; + hdr_info->u.dwarf.array = (struct eh_frame_array_ent *) + bfd_malloc (hdr_info->u.dwarf.fde_count + * sizeof (*hdr_info->u.dwarf.array)); + } + if (hdr_info->u.dwarf.array == NULL) hdr_info = NULL; /* The new offsets can be bigger or smaller than the original offsets. @@ -1651,10 +1973,11 @@ _bfd_elf_write_section_eh_frame (bfd *abfd, 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].range + hdr_info->u.dwarf.array[hdr_info->array_count].initial_loc + = address; + hdr_info->u.dwarf.array[hdr_info->array_count].range = read_value (abfd, buf + width, width, FALSE); - hdr_info->array[hdr_info->array_count++].fde + hdr_info->u.dwarf.array[hdr_info->array_count++].fde = (sec->output_section->vma + sec->output_offset + ent->new_offset); @@ -1756,10 +2079,111 @@ vma_compare (const void *a, const void *b) return 0; } -/* Write out .eh_frame_hdr section. This must be called after - _bfd_elf_write_section_eh_frame has been called on all input - .eh_frame sections. - .eh_frame_hdr format: +/* Reorder .eh_frame_entry sections to match the associated text sections. + This routine is called during the final linking step, just before writing + the contents. At this stage, sections in the eh_frame_hdr_info are already + sorted in order of increasing text section address and so we simply need + to make the .eh_frame_entrys follow that same order. Note that it is + invalid for a linker script to try to force a particular order of + .eh_frame_entry sections. */ + +bfd_boolean +_bfd_elf_fixup_eh_frame_hdr (struct bfd_link_info *info) +{ + asection *sec = NULL; + asection *osec; + struct eh_frame_hdr_info *hdr_info; + unsigned int i; + bfd_vma offset; + struct bfd_link_order *p; + + hdr_info = &elf_hash_table (info)->eh_info; + + if (hdr_info->hdr_sec == NULL + || info->eh_frame_hdr_type != COMPACT_EH_HDR + || hdr_info->array_count == 0) + return TRUE; + + /* Change section output offsets to be in text section order. */ + offset = 8; + osec = hdr_info->u.compact.entries[0]->output_section; + for (i = 0; i < hdr_info->array_count; i++) + { + sec = hdr_info->u.compact.entries[i]; + if (sec->output_section != osec) + { + (*_bfd_error_handler) + (_("Invalid output section for .eh_frame_entry: %s"), + sec->output_section->name); + return FALSE; + } + sec->output_offset = offset; + offset += sec->size; + } + + + /* Fix the link_order to match. */ + for (p = sec->output_section->map_head.link_order; p != NULL; p = p->next) + { + if (p->type != bfd_indirect_link_order) + abort(); + + p->offset = p->u.indirect.section->output_offset; + if (p->next != NULL) + i--; + } + + if (i != 0) + { + (*_bfd_error_handler) + (_("Invalid contents in %s section"), osec->name); + return FALSE; + } + + return TRUE; +} + +/* The .eh_frame_hdr format for Compact EH frames: + ubyte version (2) + ubyte eh_ref_enc (DW_EH_PE_* encoding of typinfo references) + uint32_t count (Number of entries in table) + [array from .eh_frame_entry sections] */ + +static bfd_boolean +write_compact_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info) +{ + struct elf_link_hash_table *htab; + struct eh_frame_hdr_info *hdr_info; + asection *sec; + const struct elf_backend_data *bed; + bfd_vma count; + bfd_byte contents[8]; + unsigned int i; + + htab = elf_hash_table (info); + hdr_info = &htab->eh_info; + sec = hdr_info->hdr_sec; + + if (sec->size != 8) + abort(); + + for (i = 0; i < sizeof (contents); i++) + contents[i] = 0; + + contents[0] = COMPACT_EH_HDR; + bed = get_elf_backend_data (abfd); + + BFD_ASSERT (bed->compact_eh_encoding); + contents[1] = (*bed->compact_eh_encoding) (info); + + count = (sec->output_section->size - 8) / 8; + bfd_put_32 (abfd, count, contents + 4); + return bfd_set_section_contents (abfd, sec->output_section, contents, + (file_ptr) sec->output_offset, sec->size); +} + +/* The .eh_frame_hdr format for DWARF frames: + ubyte version (currently 1) ubyte eh_frame_ptr_enc (DW_EH_PE_* encoding of pointer to start of .eh_frame section) @@ -1778,8 +2202,8 @@ vma_compare (const void *a, const void *b) FDE initial_location field and FDE address, sorted by increasing initial_loc). */ -bfd_boolean -_bfd_elf_write_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info) +static bfd_boolean +write_dwarf_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info) { struct elf_link_hash_table *htab; struct eh_frame_hdr_info *hdr_info; @@ -1789,100 +2213,130 @@ _bfd_elf_write_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info) htab = elf_hash_table (info); hdr_info = &htab->eh_info; sec = hdr_info->hdr_sec; + bfd_byte *contents; + asection *eh_frame_sec; + bfd_size_type size; + bfd_vma encoded_eh_frame; + + size = EH_FRAME_HDR_SIZE; + if (hdr_info->u.dwarf.array + && hdr_info->array_count == hdr_info->u.dwarf.fde_count) + size += 4 + hdr_info->u.dwarf.fde_count * 8; + contents = (bfd_byte *) bfd_malloc (size); + if (contents == NULL) + return FALSE; - if (info->eh_frame_hdr && sec != NULL) + eh_frame_sec = bfd_get_section_by_name (abfd, ".eh_frame"); + if (eh_frame_sec == NULL) { - bfd_byte *contents; - asection *eh_frame_sec; - bfd_size_type size; - bfd_vma encoded_eh_frame; - - size = EH_FRAME_HDR_SIZE; - if (hdr_info->array && hdr_info->array_count == hdr_info->fde_count) - size += 4 + hdr_info->fde_count * 8; - contents = (bfd_byte *) bfd_malloc (size); - if (contents == NULL) - return FALSE; + free (contents); + return FALSE; + } - eh_frame_sec = bfd_get_section_by_name (abfd, ".eh_frame"); - if (eh_frame_sec == NULL) - { - free (contents); - return FALSE; - } + memset (contents, 0, EH_FRAME_HDR_SIZE); + /* Version. */ + contents[0] = 1; + /* .eh_frame offset. */ + contents[1] = get_elf_backend_data (abfd)->elf_backend_encode_eh_address + (abfd, info, eh_frame_sec, 0, sec, 4, &encoded_eh_frame); - memset (contents, 0, EH_FRAME_HDR_SIZE); - /* Version. */ - contents[0] = 1; - /* .eh_frame offset. */ - contents[1] = get_elf_backend_data (abfd)->elf_backend_encode_eh_address - (abfd, info, eh_frame_sec, 0, sec, 4, &encoded_eh_frame); + if (hdr_info->u.dwarf.array + && hdr_info->array_count == hdr_info->u.dwarf.fde_count) + { + /* FDE count encoding. */ + contents[2] = DW_EH_PE_udata4; + /* Search table encoding. */ + contents[3] = DW_EH_PE_datarel | DW_EH_PE_sdata4; + } + else + { + contents[2] = DW_EH_PE_omit; + contents[3] = DW_EH_PE_omit; + } + bfd_put_32 (abfd, encoded_eh_frame, contents + 4); - if (hdr_info->array && hdr_info->array_count == hdr_info->fde_count) + if (contents[2] != DW_EH_PE_omit) + { + unsigned int i; + bfd_boolean overlap, overflow; + + bfd_put_32 (abfd, hdr_info->u.dwarf.fde_count, + contents + EH_FRAME_HDR_SIZE); + qsort (hdr_info->u.dwarf.array, hdr_info->u.dwarf.fde_count, + sizeof (*hdr_info->u.dwarf.array), vma_compare); + overlap = FALSE; + overflow = FALSE; + for (i = 0; i < hdr_info->u.dwarf.fde_count; i++) { - /* FDE count encoding. */ - contents[2] = DW_EH_PE_udata4; - /* Search table encoding. */ - contents[3] = DW_EH_PE_datarel | DW_EH_PE_sdata4; + bfd_vma val; + + val = hdr_info->u.dwarf.array[i].initial_loc + - sec->output_section->vma; + val = ((val & 0xffffffff) ^ 0x80000000) - 0x80000000; + if (elf_elfheader (abfd)->e_ident[EI_CLASS] == ELFCLASS64 + && (hdr_info->u.dwarf.array[i].initial_loc + != sec->output_section->vma + val)) + overflow = TRUE; + bfd_put_32 (abfd, val, contents + EH_FRAME_HDR_SIZE + i * 8 + 4); + val = hdr_info->u.dwarf.array[i].fde - sec->output_section->vma; + val = ((val & 0xffffffff) ^ 0x80000000) - 0x80000000; + if (elf_elfheader (abfd)->e_ident[EI_CLASS] == ELFCLASS64 + && (hdr_info->u.dwarf.array[i].fde + != sec->output_section->vma + val)) + overflow = TRUE; + bfd_put_32 (abfd, val, contents + EH_FRAME_HDR_SIZE + i * 8 + 8); + if (i != 0 + && (hdr_info->u.dwarf.array[i].initial_loc + < (hdr_info->u.dwarf.array[i - 1].initial_loc + + hdr_info->u.dwarf.array[i - 1].range))) + overlap = TRUE; } - else + if (overflow) + (*info->callbacks->einfo) (_("%P: .eh_frame_hdr entry overflow.\n")); + if (overlap) + (*info->callbacks->einfo) + (_("%P: .eh_frame_hdr refers to overlapping FDEs.\n")); + if (overflow || overlap) { - contents[2] = DW_EH_PE_omit; - contents[3] = DW_EH_PE_omit; + bfd_set_error (bfd_error_bad_value); + retval = FALSE; } - bfd_put_32 (abfd, encoded_eh_frame, contents + 4); + } - if (contents[2] != DW_EH_PE_omit) - { - unsigned int i; + /* FIXME: octets_per_byte. */ + if (!bfd_set_section_contents (abfd, sec->output_section, contents, + (file_ptr) sec->output_offset, + sec->size)) + retval = FALSE; + free (contents); + + if (hdr_info->u.dwarf.array != NULL) + free (hdr_info->u.dwarf.array); + return retval; +} - bfd_put_32 (abfd, hdr_info->fde_count, contents + EH_FRAME_HDR_SIZE); - qsort (hdr_info->array, hdr_info->fde_count, - sizeof (*hdr_info->array), vma_compare); - for (i = 0; i < hdr_info->fde_count; i++) - { - bfd_vma val; +/* Write out .eh_frame_hdr section. This must be called after + _bfd_elf_write_section_eh_frame has been called on all input + .eh_frame sections. */ - val = hdr_info->array[i].initial_loc - sec->output_section->vma; - val = ((val & 0xffffffff) ^ 0x80000000) - 0x80000000; - if (elf_elfheader (abfd)->e_ident[EI_CLASS] == ELFCLASS64 - && (hdr_info->array[i].initial_loc - != sec->output_section->vma + val)) - (*info->callbacks->einfo) - (_("%X%P: .eh_frame_hdr table[%u] PC overflow.\n"), i); - bfd_put_32 (abfd, val, contents + EH_FRAME_HDR_SIZE + i * 8 + 4); - - val = hdr_info->array[i].fde - sec->output_section->vma; - val = ((val & 0xffffffff) ^ 0x80000000) - 0x80000000; - if (elf_elfheader (abfd)->e_ident[EI_CLASS] == ELFCLASS64 - && (hdr_info->array[i].fde - != sec->output_section->vma + val)) - (*info->callbacks->einfo) - (_("%X%P: .eh_frame_hdr table[%u] FDE overflow.\n"), i); - bfd_put_32 (abfd, val, contents + EH_FRAME_HDR_SIZE + i * 8 + 8); +bfd_boolean +_bfd_elf_write_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info) +{ + struct elf_link_hash_table *htab; + struct eh_frame_hdr_info *hdr_info; + asection *sec; - if (i != 0 - && (hdr_info->array[i].initial_loc - < (hdr_info->array[i - 1].initial_loc - + hdr_info->array[i - 1].range))) - (*info->callbacks->einfo) - (_("%X%P: .eh_frame_hdr table[%u] FDE at %V overlaps " - "table[%u] FDE at %V.\n"), - i - 1, hdr_info->array[i - 1].fde, - i, hdr_info->array[i].fde); - } - } + htab = elf_hash_table (info); + hdr_info = &htab->eh_info; + sec = hdr_info->hdr_sec; - /* FIXME: octets_per_byte. */ - if (!bfd_set_section_contents (abfd, sec->output_section, contents, - (file_ptr) sec->output_offset, - sec->size)) - retval = FALSE; - free (contents); - } - if (hdr_info->array != NULL) - free (hdr_info->array); - return retval; + if (info->eh_frame_hdr_type == 0 || sec == NULL) + return TRUE; + + if (info->eh_frame_hdr_type == COMPACT_EH_HDR) + return write_compact_eh_frame_hdr (abfd, info); + else + return write_dwarf_eh_frame_hdr (abfd, info); } /* Return the width of FDE addresses. This is the default implementation. */ diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h index 5e64796..b907f6e 100644 --- a/bfd/elf-hppa.h +++ b/bfd/elf-hppa.h @@ -47,7 +47,7 @@ static reloc_howto_type elf_hppa_howto_table[ELF_HOWTO_TABLE_SIZE] = { - { R_PARISC_NONE, 0, 0, 0, FALSE, 0, complain_overflow_bitfield, + { R_PARISC_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont, bfd_elf_generic_reloc, "R_PARISC_NONE", FALSE, 0, 0, FALSE }, /* The values in DIR32 are to placate the check in diff --git a/bfd/elf-m10200.c b/bfd/elf-m10200.c index 7092686..45bfed7 100644 --- a/bfd/elf-m10200.c +++ b/bfd/elf-m10200.c @@ -46,11 +46,11 @@ static reloc_howto_type elf_mn10200_howto_table[] = /* Dummy relocation. Does nothing. */ HOWTO (R_MN10200_NONE, 0, - 2, - 16, + 3, + 0, FALSE, 0, - complain_overflow_bitfield, + complain_overflow_dont, bfd_elf_generic_reloc, "R_MN10200_NONE", FALSE, diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c index 6a18b44..a6a22b3 100644 --- a/bfd/elf-m10300.c +++ b/bfd/elf-m10300.c @@ -142,11 +142,11 @@ static reloc_howto_type elf_mn10300_howto_table[] = /* Dummy relocation. Does nothing. */ HOWTO (R_MN10300_NONE, 0, - 2, - 16, + 3, + 0, FALSE, 0, - complain_overflow_bitfield, + complain_overflow_dont, bfd_elf_generic_reloc, "R_MN10300_NONE", FALSE, @@ -806,7 +806,13 @@ mn10300_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, unsigned int r_type; r_type = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r_type < (unsigned int) R_MN10300_MAX); + if (r_type >= R_MN10300_MAX) + { + (*_bfd_error_handler) (_("%B: unrecognised MN10300 reloc number: %d"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_MN10300_NONE; + } cache_ptr->howto = elf_mn10300_howto_table + r_type; } diff --git a/bfd/elf-s390-common.c b/bfd/elf-s390-common.c index 6fd1027..dc6f55b 100644 --- a/bfd/elf-s390-common.c +++ b/bfd/elf-s390-common.c @@ -242,3 +242,73 @@ elf_s390_add_symbol_hook (bfd *abfd, return TRUE; } + +/* Whether to sort relocs output by ld -r or ld --emit-relocs, by + r_offset. Don't do so for code sections. We want to keep ordering + of GDCALL / PLT32DBL for TLS optimizations as is. On the other + hand, elf-eh-frame.c processing requires .eh_frame relocs to be + sorted. */ + +static bfd_boolean +elf_s390_elf_sort_relocs_p (asection *sec) +{ + return (sec->flags & SEC_CODE) == 0; +} + +/* Merge object attributes from IBFD into OBFD. Raise an error if + there are conflicting attributes. */ +static bfd_boolean +elf_s390_merge_obj_attributes (bfd *ibfd, bfd *obfd) +{ + obj_attribute *in_attr, *in_attrs; + obj_attribute *out_attr, *out_attrs; + + if (!elf_known_obj_attributes_proc (obfd)[0].i) + { + /* This is the first object. Copy the attributes. */ + _bfd_elf_copy_obj_attributes (ibfd, obfd); + + /* Use the Tag_null value to indicate the attributes have been + initialized. */ + elf_known_obj_attributes_proc (obfd)[0].i = 1; + + return TRUE; + } + + in_attrs = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU]; + out_attrs = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU]; + + /* Check for conflicting Tag_GNU_S390_ABI_Vector attributes and + merge non-conflicting ones. */ + in_attr = &in_attrs[Tag_GNU_S390_ABI_Vector]; + out_attr = &out_attrs[Tag_GNU_S390_ABI_Vector]; + + if (in_attr->i > 2) + _bfd_error_handler + (_("Warning: %B uses unknown vector ABI %d"), ibfd, + in_attr->i); + else if (out_attr->i > 2) + _bfd_error_handler + (_("Warning: %B uses unknown vector ABI %d"), obfd, + out_attr->i); + else if (in_attr->i != out_attr->i) + { + out_attr->type = ATTR_TYPE_FLAG_INT_VAL; + + if (in_attr->i && out_attr->i) + { + const char abi_str[3][9] = { "none", "software", "hardware" }; + + _bfd_error_handler + (_("Warning: %B uses vector %s ABI, %B uses %s ABI"), + ibfd, obfd, abi_str[in_attr->i], abi_str[out_attr->i]); + } + if (in_attr->i > out_attr->i) + out_attr->i = in_attr->i; + } + + /* Merge Tag_compatibility attributes and any common GNU ones. */ + _bfd_elf_merge_object_attributes (ibfd, obfd); + + return TRUE; +} diff --git a/bfd/elf.c b/bfd/elf.c index 0aa5f8e..9846046 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -51,7 +51,7 @@ SECTION 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 *); -static bfd_boolean swap_out_syms (bfd *, struct bfd_strtab_hash **, int) ; +static bfd_boolean swap_out_syms (bfd *, struct elf_strtab_hash **, int) ; static bfd_boolean elf_read_notes (bfd *, file_ptr, bfd_size_type) ; static bfd_boolean elf_parse_notes (bfd *abfd, char *buf, size_t size, file_ptr offset); @@ -342,7 +342,7 @@ bfd_elf_string_from_elf_section (bfd *abfd, abfd, shindex); return NULL; } - + if (bfd_elf_get_str_section (abfd, shindex) == NULL) return NULL; } @@ -855,6 +855,31 @@ bfd_elf_is_group_section (bfd *abfd ATTRIBUTE_UNUSED, const asection *sec) return elf_next_in_group (sec) != NULL; } +static char * +convert_debug_to_zdebug (bfd *abfd, const char *name) +{ + unsigned int len = strlen (name); + char *new_name = bfd_alloc (abfd, len + 2); + if (new_name == NULL) + return NULL; + new_name[0] = '.'; + new_name[1] = 'z'; + memcpy (new_name + 2, name + 1, len); + return new_name; +} + +static char * +convert_zdebug_to_debug (bfd *abfd, const char *name) +{ + unsigned int len = strlen (name); + char *new_name = bfd_alloc (abfd, len); + if (new_name == NULL) + return NULL; + new_name[0] = '.'; + memcpy (new_name + 1, name + 2, len - 1); + return new_name; +} + /* Make a BFD section from an ELF section. We store a pointer to the BFD section in the bfd_section field of the header. */ @@ -1041,27 +1066,38 @@ _bfd_elf_make_section_from_shdr (bfd *abfd, || (name[1] == 'z' && name[7] == '_'))) { enum { nothing, compress, decompress } action = nothing; - char *new_name; + int compression_header_size; + bfd_size_type uncompressed_size; + bfd_boolean compressed + = bfd_is_section_compressed_with_header (abfd, newsect, + &compression_header_size, + &uncompressed_size); - if (bfd_is_section_compressed (abfd, newsect)) + if (compressed) { /* Compressed section. Check if we should decompress. */ if ((abfd->flags & BFD_DECOMPRESS)) action = decompress; } - else + + /* Compress the uncompressed section or convert from/to .zdebug* + section. Check if we should compress. */ + if (action == nothing) { - /* Normal section. Check if we should compress. */ - if ((abfd->flags & BFD_COMPRESS) && newsect->size != 0) + if (newsect->size != 0 + && (abfd->flags & BFD_COMPRESS) + && compression_header_size >= 0 + && uncompressed_size > 0 + && (!compressed + || ((compression_header_size > 0) + != ((abfd->flags & BFD_COMPRESS_GABI) != 0)))) action = compress; + else + return TRUE; } - new_name = NULL; - switch (action) + if (action == compress) { - case nothing: - break; - case compress: if (!bfd_init_section_compress_status (abfd, newsect)) { (*_bfd_error_handler) @@ -1069,19 +1105,9 @@ _bfd_elf_make_section_from_shdr (bfd *abfd, 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: + } + else + { if (!bfd_init_section_decompress_status (abfd, newsect)) { (*_bfd_error_handler) @@ -1089,20 +1115,28 @@ _bfd_elf_make_section_from_shdr (bfd *abfd, abfd, name); return FALSE; } - if (name[1] == 'z') - { - unsigned int len = strlen (name); + } - new_name = bfd_alloc (abfd, len); + if (abfd->is_linker_input) + { + if (name[1] == 'z' + && (action == decompress + || (action == compress + && (abfd->flags & BFD_COMPRESS_GABI) != 0))) + { + /* Convert section name from .zdebug_* to .debug_* so + that linker will consider this section as a debug + section. */ + char *new_name = convert_zdebug_to_debug (abfd, name); if (new_name == NULL) return FALSE; - new_name[0] = '.'; - memcpy (new_name + 1, name + 2, len - 1); + bfd_rename_section (abfd, newsect, new_name); } - break; } - if (new_name != NULL) - bfd_rename_section (abfd, newsect, new_name); + else + /* For objdump, don't rename the section. For objcopy, delay + section rename to elf_fake_sections. */ + newsect->flags |= SEC_ELF_RENAME; } return TRUE; @@ -1576,29 +1610,6 @@ bfd_elf_print_symbol (bfd *abfd, break; } } - -/* Allocate an ELF string table--force the first byte to be zero. */ - -struct bfd_strtab_hash * -_bfd_elf_stringtab_init (void) -{ - struct bfd_strtab_hash *ret; - - ret = _bfd_stringtab_init (); - if (ret != NULL) - { - bfd_size_type loc; - - loc = _bfd_stringtab_add (ret, "", TRUE, FALSE); - BFD_ASSERT (loc == 0 || loc == (bfd_size_type) -1); - if (loc == (bfd_size_type) -1) - { - _bfd_stringtab_free (ret); - ret = NULL; - } - } - return ret; -} /* ELF .o/exec file reading */ @@ -2658,6 +2669,27 @@ _bfd_elf_single_rel_hdr (asection *sec) return elf_section_data (sec)->rela.hdr; } +static bfd_boolean +_bfd_elf_set_reloc_sh_name (bfd *abfd, + Elf_Internal_Shdr *rel_hdr, + const char *sec_name, + bfd_boolean use_rela_p) +{ + char *name = (char *) bfd_alloc (abfd, + sizeof ".rela" + strlen (sec_name)); + if (name == NULL) + return FALSE; + + sprintf (name, "%s%s", use_rela_p ? ".rela" : ".rel", sec_name); + rel_hdr->sh_name = + (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd), name, + FALSE); + if (rel_hdr->sh_name == (unsigned int) -1) + return FALSE; + + return TRUE; +} + /* 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 @@ -2666,11 +2698,11 @@ _bfd_elf_single_rel_hdr (asection *sec) static bfd_boolean _bfd_elf_init_reloc_shdr (bfd *abfd, struct bfd_elf_section_reloc_data *reldata, - asection *asect, - bfd_boolean use_rela_p) + const char *sec_name, + bfd_boolean use_rela_p, + bfd_boolean delay_st_name_p) { Elf_Internal_Shdr *rel_hdr; - char *name; const struct elf_backend_data *bed = get_elf_backend_data (abfd); bfd_size_type amt; @@ -2679,15 +2711,10 @@ _bfd_elf_init_reloc_shdr (bfd *abfd, 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; - sprintf (name, "%s%s", use_rela_p ? ".rela" : ".rel", asect->name); - rel_hdr->sh_name = - (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd), name, - FALSE); - if (rel_hdr->sh_name == (unsigned int) -1) + if (delay_st_name_p) + rel_hdr->sh_name = (unsigned int) -1; + else if (!_bfd_elf_set_reloc_sh_name (abfd, rel_hdr, sec_name, + use_rela_p)) return FALSE; rel_hdr->sh_type = use_rela_p ? SHT_RELA : SHT_REL; rel_hdr->sh_entsize = (use_rela_p @@ -2729,6 +2756,8 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) struct bfd_elf_section_data *esd = elf_section_data (asect); Elf_Internal_Shdr *this_hdr; unsigned int sh_type; + const char *name = asect->name; + bfd_boolean delay_st_name_p = FALSE; if (arg->failed) { @@ -2739,12 +2768,72 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) 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) + if (arg->link_info) { - arg->failed = TRUE; - return; + /* ld: compress DWARF debug sections with names: .debug_*. */ + if ((arg->link_info->compress_debug & COMPRESS_DEBUG) + && (asect->flags & SEC_DEBUGGING) + && name[1] == 'd' + && name[6] == '_') + { + /* Set SEC_ELF_COMPRESS to indicate this section should be + compressed. */ + asect->flags |= SEC_ELF_COMPRESS; + + /* If this section will be compressed, delay adding setion + name to section name section after it is compressed in + _bfd_elf_assign_file_positions_for_non_load. */ + delay_st_name_p = TRUE; + } + } + else if ((asect->flags & SEC_ELF_RENAME)) + { + /* objcopy: rename output DWARF debug section. */ + if ((abfd->flags & (BFD_DECOMPRESS | BFD_COMPRESS_GABI))) + { + /* When we decompress or compress with SHF_COMPRESSED, + convert section name from .zdebug_* to .debug_* if + needed. */ + if (name[1] == 'z') + { + char *new_name = convert_zdebug_to_debug (abfd, name); + if (new_name == NULL) + { + arg->failed = TRUE; + return; + } + name = new_name; + } + } + else if (asect->compress_status == COMPRESS_SECTION_DONE) + { + /* PR binutils/18087: Compression does not always make a + section smaller. So only rename the section when + compression has actually taken place. If input section + name is .zdebug_*, we should never compress it again. */ + char *new_name = convert_debug_to_zdebug (abfd, name); + if (new_name == NULL) + { + arg->failed = TRUE; + return; + } + BFD_ASSERT (name[1] != 'z'); + name = new_name; + } + } + + if (delay_st_name_p) + this_hdr->sh_name = (unsigned int) -1; + else + { + this_hdr->sh_name + = (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd), + name, FALSE); + if (this_hdr->sh_name == (unsigned int) -1) + { + arg->failed = TRUE; + return; + } } /* Don't clear sh_flags. Assembler may set additional bits. */ @@ -2758,6 +2847,15 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) this_hdr->sh_offset = 0; this_hdr->sh_size = asect->size; this_hdr->sh_link = 0; + /* PR 17512: file: 0eb809fe, 8b0535ee. */ + if (asect->alignment_power >= (sizeof (bfd_vma) * 8) - 1) + { + (*_bfd_error_handler) + (_("%B: error: Alignment power %d of section `%A' is too big"), + abfd, asect, asect->alignment_power); + arg->failed = TRUE; + return; + } this_hdr->sh_addralign = (bfd_vma) 1 << asect->alignment_power; /* The sh_entsize and sh_info fields may have been set already by copy_private_section_data. */ @@ -2909,13 +3007,15 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) && (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)) + && !_bfd_elf_init_reloc_shdr (abfd, &esd->rel, name, FALSE, + delay_st_name_p)) { arg->failed = TRUE; return; } if (esd->rela.count && esd->rela.hdr == NULL - && !_bfd_elf_init_reloc_shdr (abfd, &esd->rela, asect, TRUE)) + && !_bfd_elf_init_reloc_shdr (abfd, &esd->rela, name, TRUE, + delay_st_name_p)) { arg->failed = TRUE; return; @@ -2924,8 +3024,9 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) else if (!_bfd_elf_init_reloc_shdr (abfd, (asect->use_rela_p ? &esd->rela : &esd->rel), - asect, - asect->use_rela_p)) + name, + asect->use_rela_p, + delay_st_name_p)) arg->failed = TRUE; } @@ -3059,6 +3160,48 @@ bfd_elf_set_group_contents (bfd *abfd, asection *sec, void *failedptrarg) H_PUT_32 (abfd, sec->flags & SEC_LINK_ONCE ? GRP_COMDAT : 0, loc); } +/* Return the section which RELOC_SEC applies to. */ + +asection * +_bfd_elf_get_reloc_section (asection *reloc_sec) +{ + const char *name; + unsigned int type; + bfd *abfd; + + if (reloc_sec == NULL) + return NULL; + + type = elf_section_data (reloc_sec)->this_hdr.sh_type; + if (type != SHT_REL && type != SHT_RELA) + return NULL; + + /* We look up the section the relocs apply to by name. */ + name = reloc_sec->name; + if (type == SHT_REL) + name += 4; + else + name += 5; + + /* If a target needs .got.plt section, relocations in rela.plt/rel.plt + section apply to .got.plt section. */ + abfd = reloc_sec->owner; + if (get_elf_backend_data (abfd)->want_got_plt + && strcmp (name, ".plt") == 0) + { + /* .got.plt is a linker created input section. It may be mapped + to some other output section. Try two likely sections. */ + name = ".got.plt"; + reloc_sec = bfd_get_section_by_name (abfd, name); + if (reloc_sec != NULL) + return reloc_sec; + name = ".got"; + } + + reloc_sec = bfd_get_section_by_name (abfd, name); + return reloc_sec; +} + /* Assign all ELF section numbers. The dummy first section is handled here too. The link/info pointers for the standard section types are filled in here too, while we're at it. */ @@ -3068,7 +3211,7 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info) { struct elf_obj_tdata *t = elf_tdata (abfd); asection *sec; - unsigned int section_number, secn; + unsigned int section_number; Elf_Internal_Shdr **i_shdrp; struct bfd_elf_section_data *d; bfd_boolean need_symtab; @@ -3105,11 +3248,13 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info) 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 (d->this_hdr.sh_name != (unsigned int) -1) + _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->this_hdr.sh_name); if (d->rel.hdr) { d->rel.idx = section_number++; - _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->rel.hdr->sh_name); + if (d->rel.hdr->sh_name != (unsigned int) -1) + _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->rel.hdr->sh_name); } else d->rel.idx = 0; @@ -3117,7 +3262,8 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info) if (d->rela.hdr) { d->rela.idx = section_number++; - _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->rela.hdr->sh_name); + if (d->rela.hdr->sh_name != (unsigned int) -1) + _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->rela.hdr->sh_name); } else d->rela.idx = 0; @@ -3155,9 +3301,6 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info) return FALSE; } - _bfd_elf_strtab_finalize (elf_shstrtab (abfd)); - t->shstrtab_hdr.sh_size = _bfd_elf_strtab_size (elf_shstrtab (abfd)); - elf_numsections (abfd) = section_number; elf_elfheader (abfd)->e_shnum = section_number; @@ -3194,7 +3337,6 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info) for (sec = abfd->sections; sec; sec = sec->next) { asection *s; - const char *name; d = elf_section_data (sec); @@ -3298,13 +3440,7 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info) if (s != NULL) d->this_hdr.sh_link = elf_section_data (s)->this_idx; - /* We look up the section the relocs apply to by name. */ - name = sec->name; - if (d->this_hdr.sh_type == SHT_REL) - name += 4; - else - name += 5; - s = bfd_get_section_by_name (abfd, name); + s = get_elf_backend_data (abfd)->get_reloc_section (sec); if (s != NULL) { d->this_hdr.sh_info = elf_section_data (s)->this_idx; @@ -3380,12 +3516,10 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info) } } - for (secn = 1; secn < section_number; ++secn) - if (i_shdrp[secn] == NULL) - i_shdrp[secn] = i_shdrp[0]; - else - i_shdrp[secn]->sh_name = _bfd_elf_strtab_offset (elf_shstrtab (abfd), - i_shdrp[secn]->sh_name); + /* Delay setting sh_name to _bfd_elf_write_object_contents so that + _bfd_elf_assign_file_positions_for_non_load can convert DWARF + debug section name from .debug_* to .zdebug_* if needed. */ + return TRUE; } @@ -3585,7 +3719,7 @@ _bfd_elf_compute_section_file_positions (bfd *abfd, 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; + struct elf_strtab_hash *strtab = NULL; Elf_Internal_Shdr *shstrtab_hdr; bfd_boolean need_symtab; @@ -3638,11 +3772,11 @@ _bfd_elf_compute_section_file_positions (bfd *abfd, shstrtab_hdr->sh_type = SHT_STRTAB; shstrtab_hdr->sh_flags = 0; shstrtab_hdr->sh_addr = 0; - shstrtab_hdr->sh_size = _bfd_elf_strtab_size (elf_shstrtab (abfd)); + /* sh_size is set in _bfd_elf_assign_file_positions_for_non_load. */ shstrtab_hdr->sh_entsize = 0; shstrtab_hdr->sh_link = 0; shstrtab_hdr->sh_info = 0; - /* sh_offset is set in assign_file_positions_except_relocs. */ + /* sh_offset is set in _bfd_elf_assign_file_positions_for_non_load. */ shstrtab_hdr->sh_addralign = 1; if (!assign_file_positions_except_relocs (abfd, link_info)) @@ -3670,9 +3804,9 @@ _bfd_elf_compute_section_file_positions (bfd *abfd, /* Now that we know where the .strtab section goes, write it out. */ if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0 - || ! _bfd_stringtab_emit (abfd, strtab)) + || ! _bfd_elf_strtab_emit (abfd, strtab)) return FALSE; - _bfd_stringtab_free (strtab); + _bfd_elf_strtab_free (strtab); } abfd->output_has_begun = TRUE; @@ -5003,7 +5137,7 @@ assign_file_positions_for_non_load_sections (bfd *abfd, { const struct elf_backend_data *bed = get_elf_backend_data (abfd); Elf_Internal_Shdr **i_shdrpp; - Elf_Internal_Shdr **hdrpp; + Elf_Internal_Shdr **hdrpp, **end_hdrpp; Elf_Internal_Phdr *phdrs; Elf_Internal_Phdr *p; struct elf_segment_map *m; @@ -5011,14 +5145,12 @@ assign_file_positions_for_non_load_sections (bfd *abfd, bfd_vma filehdr_vaddr, filehdr_paddr; bfd_vma phdrs_vaddr, phdrs_paddr; file_ptr off; - unsigned int num_sec; - unsigned int i; unsigned int count; i_shdrpp = elf_elfsections (abfd); - num_sec = elf_numsections (abfd); + end_hdrpp = i_shdrpp + elf_numsections (abfd); off = elf_next_file_pos (abfd); - for (i = 1, hdrpp = i_shdrpp + 1; i < num_sec; i++, hdrpp++) + for (hdrpp = i_shdrpp + 1; hdrpp < end_hdrpp; hdrpp++) { Elf_Internal_Shdr *hdr; @@ -5049,9 +5181,13 @@ assign_file_positions_for_non_load_sections (bfd *abfd, } else if (((hdr->sh_type == SHT_REL || hdr->sh_type == SHT_RELA) && hdr->bfd_section == NULL) + || (hdr->bfd_section != NULL + && (hdr->bfd_section->flags & SEC_ELF_COMPRESS)) + /* Compress DWARF debug sections. */ || hdr == i_shdrpp[elf_onesymtab (abfd)] || hdr == i_shdrpp[elf_symtab_shndx (abfd)] - || hdr == i_shdrpp[elf_strtab_sec (abfd)]) + || hdr == i_shdrpp[elf_strtab_sec (abfd)] + || hdr == i_shdrpp[elf_shstrtab_sec (abfd)]) hdr->sh_offset = -1; else off = _bfd_elf_assign_file_position_for_section (hdr, off, TRUE); @@ -5207,11 +5343,19 @@ assign_file_positions_for_non_load_sections (bfd *abfd, } else if (m->count != 0) { + unsigned int i; if (p->p_type != PT_LOAD && (p->p_type != PT_NOTE || bfd_get_format (abfd) != bfd_core)) { - BFD_ASSERT (!m->includes_filehdr && !m->includes_phdrs); + if (m->includes_filehdr || m->includes_phdrs) + { + /* PR 17512: file: 2195325e. */ + (*_bfd_error_handler) + (_("%B: warning: non-load segment includes file header and/or program header"), + abfd); + return FALSE; + } p->p_filesz = 0; p->p_offset = m->sections[0]->filepos; @@ -5291,9 +5435,13 @@ assign_file_positions_except_relocs (bfd *abfd, hdr = *hdrpp; if (((hdr->sh_type == SHT_REL || hdr->sh_type == SHT_RELA) && hdr->bfd_section == NULL) + || (hdr->bfd_section != NULL + && (hdr->bfd_section->flags & SEC_ELF_COMPRESS)) + /* Compress DWARF debug sections. */ || i == elf_onesymtab (abfd) || i == elf_symtab_shndx (abfd) - || i == elf_strtab_sec (abfd)) + || i == elf_strtab_sec (abfd) + || i == elf_shstrtab_sec (abfd)) { hdr->sh_offset = -1; } @@ -5444,35 +5592,99 @@ prep_headers (bfd *abfd) /* Assign file positions for all the reloc sections which are not part of the loadable file image, and the file position of section headers. */ -static void -_bfd_elf_assign_file_positions_for_relocs (bfd *abfd) +static bfd_boolean +_bfd_elf_assign_file_positions_for_non_load (bfd *abfd) { file_ptr off; - unsigned int i, num_sec; - Elf_Internal_Shdr **shdrpp; + Elf_Internal_Shdr **shdrpp, **end_shdrpp; + Elf_Internal_Shdr *shdrp; Elf_Internal_Ehdr *i_ehdrp; const struct elf_backend_data *bed; off = elf_next_file_pos (abfd); - num_sec = elf_numsections (abfd); - for (i = 1, shdrpp = elf_elfsections (abfd) + 1; i < num_sec; i++, shdrpp++) + shdrpp = elf_elfsections (abfd); + end_shdrpp = shdrpp + elf_numsections (abfd); + for (shdrpp++; shdrpp < end_shdrpp; shdrpp++) { - Elf_Internal_Shdr *shdrp; - shdrp = *shdrpp; - if ((shdrp->sh_type == SHT_REL || shdrp->sh_type == SHT_RELA) - && shdrp->sh_offset == -1) - off = _bfd_elf_assign_file_position_for_section (shdrp, off, TRUE); + if (shdrp->sh_offset == -1) + { + asection *sec = shdrp->bfd_section; + bfd_boolean is_rel = (shdrp->sh_type == SHT_REL + || shdrp->sh_type == SHT_RELA); + if (is_rel + || (sec != NULL && (sec->flags & SEC_ELF_COMPRESS))) + { + if (!is_rel) + { + const char *name = sec->name; + struct bfd_elf_section_data *d; + + /* Compress DWARF debug sections. */ + if (!bfd_compress_section (abfd, sec, + shdrp->contents)) + return FALSE; + + if (sec->compress_status == COMPRESS_SECTION_DONE + && (abfd->flags & BFD_COMPRESS_GABI) == 0) + { + /* If section is compressed with zlib-gnu, convert + section name from .debug_* to .zdebug_*. */ + char *new_name + = convert_debug_to_zdebug (abfd, name); + if (new_name == NULL) + return FALSE; + name = new_name; + } + /* Add setion name to section name section. */ + if (shdrp->sh_name != (unsigned int) -1) + abort (); + shdrp->sh_name + = (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd), + name, FALSE); + d = elf_section_data (sec); + + /* Add reloc setion name to section name section. */ + if (d->rel.hdr + && !_bfd_elf_set_reloc_sh_name (abfd, + d->rel.hdr, + name, FALSE)) + return FALSE; + if (d->rela.hdr + && !_bfd_elf_set_reloc_sh_name (abfd, + d->rela.hdr, + name, FALSE)) + return FALSE; + + /* Update section size and contents. */ + shdrp->sh_size = sec->size; + shdrp->contents = sec->contents; + shdrp->bfd_section->contents = NULL; + } + off = _bfd_elf_assign_file_position_for_section (shdrp, + off, + TRUE); + } + } } -/* Place the section headers. */ + /* Place section name section after DWARF debug sections have been + compressed. */ + _bfd_elf_strtab_finalize (elf_shstrtab (abfd)); + shdrp = &elf_tdata (abfd)->shstrtab_hdr; + shdrp->sh_size = _bfd_elf_strtab_size (elf_shstrtab (abfd)); + off = _bfd_elf_assign_file_position_for_section (shdrp, off, TRUE); + + /* Place the section headers. */ i_ehdrp = elf_elfheader (abfd); bed = get_elf_backend_data (abfd); off = align_file_position (off, 1 << bed->s->log_file_align); i_ehdrp->e_shoff = off; off += i_ehdrp->e_shnum * i_ehdrp->e_shentsize; elf_next_file_pos (abfd) = off; + + return TRUE; } bfd_boolean @@ -5495,12 +5707,16 @@ _bfd_elf_write_object_contents (bfd *abfd) if (failed) return FALSE; - _bfd_elf_assign_file_positions_for_relocs (abfd); + if (!_bfd_elf_assign_file_positions_for_non_load (abfd)) + return FALSE; /* After writing the headers, we need to write the sections too... */ num_sec = elf_numsections (abfd); for (count = 1; count < num_sec; count++) { + i_shdrp[count]->sh_name + = _bfd_elf_strtab_offset (elf_shstrtab (abfd), + i_shdrp[count]->sh_name); if (bed->elf_backend_section_processing) (*bed->elf_backend_section_processing) (abfd, i_shdrp[count]); if (i_shdrp[count]->contents) @@ -5952,8 +6168,8 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd) something. They are allowed by the ELF spec however, so only a warning is produced. */ if (segment->p_type == PT_LOAD) - (*_bfd_error_handler) (_("%B: warning: Empty loadable segment" - " detected, is this intentional ?\n"), + (*_bfd_error_handler) (_("\ +%B: warning: Empty loadable segment detected, is this intentional ?"), ibfd); map->count = 0; @@ -6566,7 +6782,15 @@ rewrite: i++, segment++) if (segment->p_type == PT_LOAD && maxpagesize < segment->p_align) - maxpagesize = segment->p_align; + { + /* PR 17512: file: f17299af. */ + if (segment->p_align > (bfd_vma) 1 << ((sizeof (bfd_vma) * 8) - 2)) + (*_bfd_error_handler) (_("\ +%B: warning: segment alignment of 0x%llx is too large"), + ibfd, (long long) segment->p_align); + else + maxpagesize = segment->p_align; + } if (maxpagesize != get_elf_backend_data (obfd)->maxpagesize) bfd_emul_set_maxpagesize (bfd_get_target (obfd), maxpagesize); @@ -6623,6 +6847,11 @@ _bfd_elf_init_private_section_data (bfd *ibfd, elf_next_in_group (osec) = elf_next_in_group (isec); elf_section_data (osec)->group = elf_section_data (isec)->group; } + + /* If not decompress, preserve SHF_COMPRESSED. */ + if ((ibfd->flags & BFD_DECOMPRESS) == 0) + elf_section_flags (osec) |= (elf_section_flags (isec) + & SHF_COMPRESSED); } ihdr = &elf_section_data (isec)->this_hdr; @@ -6813,18 +7042,21 @@ _bfd_elf_copy_private_symbol_data (bfd *ibfd, static bfd_boolean swap_out_syms (bfd *abfd, - struct bfd_strtab_hash **sttp, + struct elf_strtab_hash **sttp, int relocatable_p) { const struct elf_backend_data *bed; int symcount; asymbol **syms; - struct bfd_strtab_hash *stt; + struct elf_strtab_hash *stt; Elf_Internal_Shdr *symtab_hdr; Elf_Internal_Shdr *symtab_shndx_hdr; Elf_Internal_Shdr *symstrtab_hdr; + struct elf_sym_strtab *symstrtab; bfd_byte *outbound_syms; bfd_byte *outbound_shndx; + unsigned long outbound_syms_index; + unsigned long outbound_shndx_index; int idx; unsigned int num_locals; bfd_size_type amt; @@ -6834,7 +7066,7 @@ swap_out_syms (bfd *abfd, return FALSE; /* Dump out the symtabs. */ - stt = _bfd_elf_stringtab_init (); + stt = _bfd_elf_strtab_init (); if (stt == NULL) return FALSE; @@ -6850,16 +7082,29 @@ swap_out_syms (bfd *abfd, symstrtab_hdr = &elf_tdata (abfd)->strtab_hdr; symstrtab_hdr->sh_type = SHT_STRTAB; + /* Allocate buffer to swap out the .strtab section. */ + symstrtab = (struct elf_sym_strtab *) bfd_malloc ((symcount + 1) + * sizeof (*symstrtab)); + if (symstrtab == NULL) + { + _bfd_elf_strtab_free (stt); + return FALSE; + } + outbound_syms = (bfd_byte *) bfd_alloc2 (abfd, 1 + symcount, bed->s->sizeof_sym); if (outbound_syms == NULL) { - _bfd_stringtab_free (stt); +error_return: + _bfd_elf_strtab_free (stt); + free (symstrtab); return FALSE; } symtab_hdr->contents = outbound_syms; + outbound_syms_index = 0; outbound_shndx = NULL; + outbound_shndx_index = 0; symtab_shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; if (symtab_shndx_hdr->sh_name != 0) { @@ -6867,10 +7112,7 @@ swap_out_syms (bfd *abfd, outbound_shndx = (bfd_byte *) bfd_zalloc2 (abfd, 1 + symcount, sizeof (Elf_External_Sym_Shndx)); if (outbound_shndx == NULL) - { - _bfd_stringtab_free (stt); - return FALSE; - } + goto error_return; symtab_shndx_hdr->contents = outbound_shndx; symtab_shndx_hdr->sh_type = SHT_SYMTAB_SHNDX; @@ -6890,10 +7132,12 @@ swap_out_syms (bfd *abfd, 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; + symstrtab[0].sym = sym; + symstrtab[0].dest_index = outbound_syms_index; + symstrtab[0].destshndx_index = outbound_shndx_index; + outbound_syms_index++; if (outbound_shndx != NULL) - outbound_shndx += sizeof (Elf_External_Sym_Shndx); + outbound_shndx_index++; } name_local_sections @@ -6901,7 +7145,7 @@ swap_out_syms (bfd *abfd, && bed->elf_backend_name_local_section_symbols (abfd)); syms = bfd_get_outsymbols (abfd); - for (idx = 0; idx < symcount; idx++) + for (idx = 0; idx < symcount;) { Elf_Internal_Sym sym; bfd_vma value = syms[idx]->value; @@ -6913,18 +7157,17 @@ swap_out_syms (bfd *abfd, && (flags & (BSF_SECTION_SYM | BSF_GLOBAL)) == BSF_SECTION_SYM) { /* Local section symbols have no name. */ - sym.st_name = 0; + sym.st_name = (unsigned long) -1; } else { - sym.st_name = (unsigned long) _bfd_stringtab_add (stt, - syms[idx]->name, - TRUE, FALSE); + /* Call _bfd_elf_strtab_offset after _bfd_elf_strtab_finalize + to get the final offset for st_name. */ + sym.st_name + = (unsigned long) _bfd_elf_strtab_add (stt, syms[idx]->name, + FALSE); if (sym.st_name == (unsigned long) -1) - { - _bfd_stringtab_free (stt); - return FALSE; - } + goto error_return; } type_ptr = elf_symbol_from (abfd, syms[idx]); @@ -7014,8 +7257,7 @@ Unable to find equivalent output section for symbol '%s' from section '%s'"), syms[idx]->name ? syms[idx]->name : "", sec->name); bfd_set_error (bfd_error_invalid_operation); - _bfd_stringtab_free (stt); - return FALSE; + goto error_return; } shndx = _bfd_elf_section_from_bfd_section (abfd, sec2); @@ -7101,14 +7343,40 @@ Unable to find equivalent output section for symbol '%s' from section '%s'"), sym.st_target_internal = 0; } - bed->s->swap_symbol_out (abfd, &sym, outbound_syms, outbound_shndx); - outbound_syms += bed->s->sizeof_sym; + idx++; + symstrtab[idx].sym = sym; + symstrtab[idx].dest_index = outbound_syms_index; + symstrtab[idx].destshndx_index = outbound_shndx_index; + + outbound_syms_index++; if (outbound_shndx != NULL) - outbound_shndx += sizeof (Elf_External_Sym_Shndx); + outbound_shndx_index++; } + /* Finalize the .strtab section. */ + _bfd_elf_strtab_finalize (stt); + + /* Swap out the .strtab section. */ + for (idx = 0; idx <= symcount; idx++) + { + struct elf_sym_strtab *elfsym = &symstrtab[idx]; + if (elfsym->sym.st_name == (unsigned long) -1) + elfsym->sym.st_name = 0; + else + elfsym->sym.st_name = _bfd_elf_strtab_offset (stt, + elfsym->sym.st_name); + bed->s->swap_symbol_out (abfd, &elfsym->sym, + (outbound_syms + + (elfsym->dest_index + * bed->s->sizeof_sym)), + (outbound_shndx + + (elfsym->destshndx_index + * sizeof (Elf_External_Sym_Shndx)))); + } + free (symstrtab); + *sttp = stt; - symstrtab_hdr->sh_size = _bfd_stringtab_size (stt); + symstrtab_hdr->sh_size = _bfd_elf_strtab_size (stt); symstrtab_hdr->sh_type = SHT_STRTAB; symstrtab_hdr->sh_flags = 0; @@ -7681,6 +7949,47 @@ _bfd_elf_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, if (name[0] == '_' && name[1] == '.' && name[2] == 'L' && name[3] == '_') return TRUE; + /* Treat assembler generated fake symbols, dollar local labels and + forward-backward labels (aka local labels) as locals. + These labels have the form: + + L0^A.* (fake symbols) + + [.]?L[0123456789]+{^A|^B}[0123456789]* (local labels) + + Versions which start with .L will have already been matched above, + so we only need to match the rest. */ + if (name[0] == 'L' && ISDIGIT (name[1])) + { + bfd_boolean ret = FALSE; + const char * p; + char c; + + for (p = name + 2; (c = *p); p++) + { + if (c == 1 || c == 2) + { + if (c == 1 && p == name + 2) + /* A fake symbol. */ + return TRUE; + + /* FIXME: We are being paranoid here and treating symbols like + L0^Bfoo as if there were non-local, on the grounds that the + assembler will never generate them. But can any symbol + containing an ASCII value in the range 1-31 ever be anything + other than some kind of local ? */ + ret = TRUE; + } + + if (! ISDIGIT (c)) + { + ret = FALSE; + break; + } + } + return ret; + } + return FALSE; } @@ -7831,7 +8140,21 @@ _bfd_elf_set_section_contents (bfd *abfd, && ! _bfd_elf_compute_section_file_positions (abfd, NULL)) return FALSE; + if (!count) + return TRUE; + hdr = &elf_section_data (section)->this_hdr; + if (hdr->sh_offset == (file_ptr) -1) + { + /* We must compress this section. Write output to the buffer. */ + unsigned char *contents = hdr->contents; + if ((offset + count) > hdr->sh_size + || (section->flags & SEC_ELF_COMPRESS) == 0 + || contents == NULL) + abort (); + memcpy (contents + offset, location, count); + return TRUE; + } pos = hdr->sh_offset + offset; if (bfd_seek (abfd, pos, SEEK_SET) != 0 || bfd_bwrite (location, count, abfd) != count) @@ -8251,6 +8574,18 @@ elfcore_grok_s390_tdb (bfd *abfd, Elf_Internal_Note *note) } static bfd_boolean +elfcore_grok_s390_vxrs_low (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-vxrs-low", note); +} + +static bfd_boolean +elfcore_grok_s390_vxrs_high (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-s390-vxrs-high", note); +} + +static bfd_boolean elfcore_grok_arm_vfp (bfd *abfd, Elf_Internal_Note *note) { return elfcore_make_note_pseudosection (abfd, ".reg-arm-vfp", note); @@ -8634,6 +8969,9 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note) if (note->namesz == 6 && strcmp (note->namedata, "LINUX") == 0) return elfcore_grok_xstatereg (abfd, note); + else if (note->namesz == 8 + && strcmp (note->namedata, "FreeBSD") == 0) + return elfcore_grok_xstatereg (abfd, note); else return TRUE; @@ -8714,6 +9052,20 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note) else return TRUE; + case NT_S390_VXRS_LOW: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_vxrs_low (abfd, note); + else + return TRUE; + + case NT_S390_VXRS_HIGH: + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_s390_vxrs_high (abfd, note); + else + return TRUE; + case NT_ARM_VFP: if (note->namesz == 6 && strcmp (note->namedata, "LINUX") == 0) @@ -8780,18 +9132,18 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note) static bfd_boolean elfobj_grok_gnu_build_id (bfd *abfd, Elf_Internal_Note *note) { - struct elf_obj_tdata *t; + struct bfd_build_id* build_id; if (note->descsz == 0) return FALSE; - t = elf_tdata (abfd); - t->build_id = bfd_alloc (abfd, sizeof (*t->build_id) - 1 + note->descsz); - if (t->build_id == NULL) + build_id = bfd_alloc (abfd, sizeof (struct bfd_build_id) - 1 + note->descsz); + if (build_id == NULL) return FALSE; - t->build_id->size = note->descsz; - memcpy (t->build_id->data, note->descdata, note->descsz); + build_id->size = note->descsz; + memcpy (build_id->data, note->descdata, note->descsz); + abfd->build_id = build_id; return TRUE; } @@ -9439,7 +9791,11 @@ char * elfcore_write_xstatereg (bfd *abfd, char *buf, int *bufsiz, const void *xfpregs, int size) { - char *note_name = "LINUX"; + char *note_name; + if (get_elf_backend_data (abfd)->elf_osabi == ELFOSABI_FREEBSD) + note_name = "FreeBSD"; + else + note_name = "LINUX"; return elfcore_write_note (abfd, buf, bufsiz, note_name, NT_X86_XSTATE, xfpregs, size); } @@ -9580,6 +9936,31 @@ elfcore_write_s390_tdb (bfd *abfd, } char * +elfcore_write_s390_vxrs_low (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_vxrs_low, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_VXRS_LOW, s390_vxrs_low, size); +} + +char * +elfcore_write_s390_vxrs_high (bfd *abfd, + char *buf, + int *bufsiz, + const void *s390_vxrs_high, + int size) +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_S390_VXRS_HIGH, + s390_vxrs_high, size); +} + +char * elfcore_write_arm_vfp (bfd *abfd, char *buf, int *bufsiz, @@ -9663,6 +10044,10 @@ elfcore_write_register_note (bfd *abfd, return elfcore_write_s390_system_call (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-s390-tdb") == 0) return elfcore_write_s390_tdb (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-vxrs-low") == 0) + return elfcore_write_s390_vxrs_low (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-s390-vxrs-high") == 0) + return elfcore_write_s390_vxrs_high (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-arm-vfp") == 0) return elfcore_write_arm_vfp (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-aarch-tls") == 0) diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c index 15116ca..07af56b 100644 --- a/bfd/elf32-arc.c +++ b/bfd/elf32-arc.c @@ -58,8 +58,8 @@ static reloc_howto_type elf_arc_howto_table[] = /* This reloc does nothing. */ HOWTO (R_ARC_NONE, /* Type. */ 0, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 32, /* Bitsize. */ + 3, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ FALSE, /* PC_relative. */ 0, /* Bitpos. */ complain_overflow_bitfield, /* Complain_on_overflow. */ @@ -174,7 +174,7 @@ arc_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_ARC_max) { - _bfd_error_handler (_("%A: invalid ARC reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid ARC reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_arc_howto_table[r_type]; diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 75ea1d4..919df17 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -79,7 +79,7 @@ static reloc_howto_type elf32_arm_howto_table_1[] = /* No relocation. */ HOWTO (R_ARM_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -1606,7 +1606,7 @@ static reloc_howto_type elf32_arm_howto_table_1[] = FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield,/* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + NULL, /* special_function */ "R_ARM_TLS_LE32", /* name */ TRUE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -8234,18 +8234,6 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto, if (r_type != howto->type) howto = elf32_arm_howto_from_type (r_type); - /* If the start address has been set, then set the EF_ARM_HASENTRY - flag. Setting this more than once is redundant, but the cost is - not too high, and it keeps the code simple. - - The test is done here, rather than somewhere else, because the - start address is only set just before the final link commences. - - Note - if the user deliberately sets a start address of 0, the - flag will not be set. */ - if (bfd_get_start_address (output_bfd) != 0) - elf_elfheader (output_bfd)->e_flags |= EF_ARM_HASENTRY; - eh = (struct elf32_arm_link_hash_entry *) h; sgot = globals->root.sgot; local_got_offsets = elf_local_got_offsets (input_bfd); @@ -8416,6 +8404,21 @@ elf32_arm_final_link_relocate (reloc_howto_type * howto, Elf_Internal_Rela outrel; bfd_boolean skip, relocate; + if ((r_type == R_ARM_REL32 || r_type == R_ARM_REL32_NOI) + && !h->def_regular) + { + char *v = _("shared object"); + + if (info->executable) + v = _("PIE executable"); + + (*_bfd_error_handler) + (_("%B: relocation %s against external or undefined symbol `%s'" + " can not be used when making a %s; recompile with -fPIC"), input_bfd, + elf32_arm_howto_table_1[r_type].name, h->root.root.string, v); + return bfd_reloc_notsupported; + } + *unresolved_reloc_p = FALSE; if (sreloc == NULL && globals->root.dynamic_sections_created) @@ -11957,7 +11960,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd) /* 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. */ + Tag_FP_arch is zero. */ #define VFP_VERSION_COUNT 9 static const struct @@ -11999,7 +12002,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd) } /* Both the input and the output have nonzero Tag_FP_arch. - So Tag_ABI_HardFP_use is (SP & DP) when it's zero. */ + So Tag_ABI_HardFP_use is implied by Tag_FP_arch when it's zero. */ /* If both the input and the output have zero Tag_ABI_HardFP_use, do nothing. */ @@ -12007,10 +12010,10 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd) && 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). */ + the combination of them is 0 (implied by Tag_FP_arch). */ else if (in_attr[Tag_ABI_HardFP_use].i != out_attr[Tag_ABI_HardFP_use].i) - out_attr[Tag_ABI_HardFP_use].i = 3; + out_attr[Tag_ABI_HardFP_use].i = 0; /* Now we can handle Tag_FP_arch. */ @@ -12379,10 +12382,7 @@ elf32_arm_print_private_bfd_data (bfd *abfd, void * ptr) if (flags & EF_ARM_RELEXEC) fprintf (file, _(" [relocatable executable]")); - if (flags & EF_ARM_HASENTRY) - fprintf (file, _(" [has entry point]")); - - flags &= ~ (EF_ARM_RELEXEC | EF_ARM_HASENTRY); + flags &= ~EF_ARM_RELEXEC; if (flags) fprintf (file, _("")); @@ -14223,12 +14223,16 @@ elf32_arm_finish_dynamic_symbol (bfd * output_bfd, if (!h->def_regular) { /* Mark the symbol as undefined, rather than as defined in - the .plt section. Leave the value alone. */ + the .plt section. */ sym->st_shndx = SHN_UNDEF; - /* If the symbol is weak, we do need to clear the value. + /* If the symbol is weak we need to clear the value. Otherwise, the PLT entry would provide a definition for the symbol even if the symbol wasn't defined anywhere, - and so the symbol would never be NULL. */ + and so the symbol would never be NULL. Leave the value if + there were any relocations where pointer equality matters + (this is a clue for the dynamic linker, to make function + pointer comparisons work between an application and shared + library). */ if (!h->ref_regular_nonweak || !h->pointer_equality_needed) sym->st_value = 0; } diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c index adcf1a3..8651f49 100644 --- a/bfd/elf32-avr.c +++ b/bfd/elf32-avr.c @@ -25,6 +25,7 @@ #include "elf-bfd.h" #include "elf/avr.h" #include "elf32-avr.h" +#include "bfd_stdint.h" /* Enable debugging printout at stdout with this variable. */ static bfd_boolean debug_relax = FALSE; @@ -121,11 +122,11 @@ static reloc_howto_type elf_avr_howto_table[] = { HOWTO (R_AVR_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_AVR_NONE", /* name */ FALSE, /* partial_inplace */ @@ -706,6 +707,83 @@ static bfd_vma avr_pc_wrap_around = 0x10000000; instruction. This option could be switched off by a linker switch. */ static int avr_replace_call_ret_sequences = 1; + +/* Per-section relaxation related information for avr. */ + +struct avr_relax_info +{ + /* Track the avr property records that apply to this section. */ + + struct + { + /* Number of records in the list. */ + unsigned count; + + /* How many records worth of space have we allocated. */ + unsigned allocated; + + /* The records, only COUNT records are initialised. */ + struct avr_property_record *items; + } records; +}; + +/* Per section data, specialised for avr. */ + +struct elf_avr_section_data +{ + /* The standard data must appear first. */ + struct bfd_elf_section_data elf; + + /* Relaxation related information. */ + struct avr_relax_info relax_info; +}; + +/* Possibly initialise avr specific data for new section SEC from ABFD. */ + +static bfd_boolean +elf_avr_new_section_hook (bfd *abfd, asection *sec) +{ + if (!sec->used_by_bfd) + { + struct elf_avr_section_data *sdata; + bfd_size_type amt = sizeof (*sdata); + + sdata = bfd_zalloc (abfd, amt); + if (sdata == NULL) + return FALSE; + sec->used_by_bfd = sdata; + } + + return _bfd_elf_new_section_hook (abfd, sec); +} + +/* Return a pointer to the relaxation information for SEC. */ + +static struct avr_relax_info * +get_avr_relax_info (asection *sec) +{ + struct elf_avr_section_data *section_data; + + /* No info available if no section or if it is an output section. */ + if (!sec || sec == sec->output_section) + return NULL; + + section_data = (struct elf_avr_section_data *) elf_section_data (sec); + return §ion_data->relax_info; +} + +/* Initialise the per section relaxation information for SEC. */ + +static void +init_avr_relax_info (asection *sec) +{ + struct avr_relax_info *relax_info = get_avr_relax_info (sec); + + relax_info->records.count = 0; + relax_info->records.allocated = 0; + relax_info->records.items = NULL; +} + /* Initialize an entry in the stub hash table. */ static struct bfd_hash_entry * @@ -861,7 +939,7 @@ avr_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_AVR_max) { - _bfd_error_handler (_("%A: invalid AVR reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid AVR reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_avr_howto_table[r_type]; @@ -1736,13 +1814,38 @@ elf32_avr_relax_delete_bytes (bfd *abfd, struct elf_link_hash_entry **sym_hashes; struct elf_link_hash_entry **end_hashes; unsigned int symcount; + struct avr_relax_info *relax_info; + struct avr_property_record *prop_record = NULL; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); contents = elf_section_data (sec)->this_hdr.contents; + relax_info = get_avr_relax_info (sec); toaddr = sec->size; + if (relax_info->records.count > 0) + { + /* There should be no property record within the range of deleted + bytes, however, there might be a property record for ADDR, this is + how we handle alignment directives. + Find the next (if any) property record after the deleted bytes. */ + unsigned int i; + + for (i = 0; i < relax_info->records.count; ++i) + { + bfd_vma offset = relax_info->records.items [i].offset; + + BFD_ASSERT (offset <= addr || offset >= (addr + count)); + if (offset >= (addr + count)) + { + prop_record = &relax_info->records.items [i]; + toaddr = offset; + break; + } + } + } + irel = elf_section_data (sec)->relocs; irelend = irel + sec->reloc_count; @@ -1750,7 +1853,32 @@ elf32_avr_relax_delete_bytes (bfd *abfd, if (toaddr - addr - count > 0) memmove (contents + addr, contents + addr + count, (size_t) (toaddr - addr - count)); - sec->size -= count; + if (prop_record == NULL) + sec->size -= count; + else + { + /* Use the property record to fill in the bytes we've opened up. */ + int fill = 0; + switch (prop_record->type) + { + case RECORD_ORG_AND_FILL: + fill = prop_record->data.org.fill; + /* Fall through. */ + case RECORD_ORG: + break; + case RECORD_ALIGN_AND_FILL: + fill = prop_record->data.align.fill; + /* Fall through. */ + case RECORD_ALIGN: + prop_record->data.align.preceding_deleted += count; + break; + }; + memset (contents + toaddr - count, fill, count); + + /* Adjust the TOADDR to avoid moving symbols located at the address + of the property record, which has not moved. */ + toaddr -= count; + } /* Adjust all the reloc addresses. */ for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++) @@ -1935,6 +2063,239 @@ elf32_avr_relax_delete_bytes (bfd *abfd, return TRUE; } +static Elf_Internal_Sym * +retrieve_local_syms (bfd *input_bfd) +{ + Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Sym *isymbuf; + size_t locsymcount; + + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + locsymcount = symtab_hdr->sh_info; + + isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents; + if (isymbuf == NULL && locsymcount != 0) + isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0, + NULL, NULL, NULL); + + /* Save the symbols for this input file so they won't be read again. */ + if (isymbuf && isymbuf != (Elf_Internal_Sym *) symtab_hdr->contents) + symtab_hdr->contents = (unsigned char *) isymbuf; + + return isymbuf; +} + +/* Get the input section for a given symbol index. + If the symbol is: + . a section symbol, return the section; + . a common symbol, return the common section; + . an undefined symbol, return the undefined section; + . an indirect symbol, follow the links; + . an absolute value, return the absolute section. */ + +static asection * +get_elf_r_symndx_section (bfd *abfd, unsigned long r_symndx) +{ + Elf_Internal_Shdr *symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + asection *target_sec = NULL; + if (r_symndx < symtab_hdr->sh_info) + { + Elf_Internal_Sym *isymbuf; + unsigned int section_index; + + isymbuf = retrieve_local_syms (abfd); + section_index = isymbuf[r_symndx].st_shndx; + + if (section_index == SHN_UNDEF) + target_sec = bfd_und_section_ptr; + else if (section_index == SHN_ABS) + target_sec = bfd_abs_section_ptr; + else if (section_index == SHN_COMMON) + target_sec = bfd_com_section_ptr; + else + target_sec = bfd_section_from_elf_index (abfd, section_index); + } + else + { + unsigned long indx = r_symndx - symtab_hdr->sh_info; + struct elf_link_hash_entry *h = elf_sym_hashes (abfd)[indx]; + + 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 (h->root.type) + { + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + target_sec = h->root.u.def.section; + break; + case bfd_link_hash_common: + target_sec = bfd_com_section_ptr; + break; + case bfd_link_hash_undefined: + case bfd_link_hash_undefweak: + target_sec = bfd_und_section_ptr; + break; + default: /* New indirect warning. */ + target_sec = bfd_und_section_ptr; + break; + } + } + return target_sec; +} + +/* Get the section-relative offset for a symbol number. */ + +static bfd_vma +get_elf_r_symndx_offset (bfd *abfd, unsigned long r_symndx) +{ + Elf_Internal_Shdr *symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + bfd_vma offset = 0; + + if (r_symndx < symtab_hdr->sh_info) + { + Elf_Internal_Sym *isymbuf; + isymbuf = retrieve_local_syms (abfd); + offset = isymbuf[r_symndx].st_value; + } + else + { + unsigned long indx = r_symndx - symtab_hdr->sh_info; + struct elf_link_hash_entry *h = + elf_sym_hashes (abfd)[indx]; + + 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 (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + offset = h->root.u.def.value; + } + return offset; +} + +/* Iterate over the property records in R_LIST, and copy each record into + the list of records within the relaxation information for the section to + which the record applies. */ + +static void +avr_elf32_assign_records_to_sections (struct avr_property_record_list *r_list) +{ + unsigned int i; + + for (i = 0; i < r_list->record_count; ++i) + { + struct avr_relax_info *relax_info; + + relax_info = get_avr_relax_info (r_list->records [i].section); + BFD_ASSERT (relax_info != NULL); + + if (relax_info->records.count + == relax_info->records.allocated) + { + /* Allocate more space. */ + bfd_size_type size; + + relax_info->records.allocated += 10; + size = (sizeof (struct avr_property_record) + * relax_info->records.allocated); + relax_info->records.items + = bfd_realloc (relax_info->records.items, size); + } + + memcpy (&relax_info->records.items [relax_info->records.count], + &r_list->records [i], + sizeof (struct avr_property_record)); + relax_info->records.count++; + } +} + +/* Compare two STRUCT AVR_PROPERTY_RECORD in AP and BP, used as the + ordering callback from QSORT. */ + +static int +avr_property_record_compare (const void *ap, const void *bp) +{ + const struct avr_property_record *a + = (struct avr_property_record *) ap; + const struct avr_property_record *b + = (struct avr_property_record *) bp; + + if (a->offset != b->offset) + return (a->offset - b->offset); + + if (a->section != b->section) + return (bfd_get_section_vma (a->section->owner, a->section) + - bfd_get_section_vma (b->section->owner, b->section)); + + return (a->type - b->type); +} + +/* Load all of the avr property sections from all of the bfd objects + referenced from LINK_INFO. All of the records within each property + section are assigned to the STRUCT AVR_RELAX_INFO within the section + specific data of the appropriate section. */ + +static void +avr_load_all_property_sections (struct bfd_link_info *link_info) +{ + bfd *abfd; + asection *sec; + + /* Initialize the per-section relaxation info. */ + for (abfd = link_info->input_bfds; abfd != NULL; abfd = abfd->link.next) + for (sec = abfd->sections; sec != NULL; sec = sec->next) + { + init_avr_relax_info (sec); + } + + /* Load the descriptor tables from .avr.prop sections. */ + for (abfd = link_info->input_bfds; abfd != NULL; abfd = abfd->link.next) + { + struct avr_property_record_list *r_list; + + r_list = avr_elf32_load_property_records (abfd); + if (r_list != NULL) + avr_elf32_assign_records_to_sections (r_list); + + free (r_list); + } + + /* Now, for every section, ensure that the descriptor list in the + relaxation data is sorted by ascending offset within the section. */ + for (abfd = link_info->input_bfds; abfd != NULL; abfd = abfd->link.next) + for (sec = abfd->sections; sec != NULL; sec = sec->next) + { + struct avr_relax_info *relax_info = get_avr_relax_info (sec); + if (relax_info && relax_info->records.count > 0) + { + unsigned int i; + + qsort (relax_info->records.items, + relax_info->records.count, + sizeof (struct avr_property_record), + avr_property_record_compare); + + /* For debug purposes, list all the descriptors. */ + for (i = 0; i < relax_info->records.count; ++i) + { + switch (relax_info->records.items [i].type) + { + case RECORD_ORG: + break; + case RECORD_ORG_AND_FILL: + break; + case RECORD_ALIGN: + break; + case RECORD_ALIGN_AND_FILL: + break; + }; + } + } + } +} + /* This function handles relaxing for the avr. Many important relaxing opportunities within functions are already realized by the compiler itself. @@ -1978,6 +2339,15 @@ elf32_avr_relax_section (bfd *abfd, bfd_byte *contents = NULL; Elf_Internal_Sym *isymbuf = NULL; struct elf32_avr_link_hash_table *htab; + static bfd_boolean relaxation_initialised = FALSE; + + if (!relaxation_initialised) + { + relaxation_initialised = TRUE; + + /* Load entries from the .avr.prop sections. */ + avr_load_all_property_sections (link_info); + } /* If 'shrinkable' is FALSE, do not shrink by deleting bytes while relaxing. Such shrinking can cause issues for the sections such @@ -2581,6 +2951,67 @@ elf32_avr_relax_section (bfd *abfd, } } + if (!*again) + { + /* Look through all the property records in this section to see if + there's any alignment records that can be moved. */ + struct avr_relax_info *relax_info; + + relax_info = get_avr_relax_info (sec); + if (relax_info->records.count > 0) + { + unsigned int i; + + for (i = 0; i < relax_info->records.count; ++i) + { + switch (relax_info->records.items [i].type) + { + case RECORD_ORG: + case RECORD_ORG_AND_FILL: + break; + case RECORD_ALIGN: + case RECORD_ALIGN_AND_FILL: + { + struct avr_property_record *record; + unsigned long bytes_to_align; + int count = 0; + + /* Look for alignment directives that have had enough + bytes deleted before them, such that the directive + can be moved backwards and still maintain the + required alignment. */ + record = &relax_info->records.items [i]; + bytes_to_align + = (unsigned long) (1 << record->data.align.bytes); + while (record->data.align.preceding_deleted >= + bytes_to_align) + { + record->data.align.preceding_deleted + -= bytes_to_align; + count += bytes_to_align; + } + + if (count > 0) + { + bfd_vma addr = record->offset; + + /* We can delete COUNT bytes and this alignment + directive will still be correctly aligned. + First move the alignment directive, then delete + the bytes. */ + record->offset -= count; + elf32_avr_relax_delete_bytes (abfd, sec, + addr - count, + count); + *again = TRUE; + } + } + break; + } + } + } + } + if (contents != NULL && elf_section_data (sec)->this_hdr.contents != contents) { @@ -3347,6 +3778,332 @@ elf32_avr_build_stubs (struct bfd_link_info *info) return TRUE; } +/* Callback used by QSORT to order relocations AP and BP. */ + +static int +internal_reloc_compare (const void *ap, const void *bp) +{ + const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap; + const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp; + + if (a->r_offset != b->r_offset) + return (a->r_offset - b->r_offset); + + /* We don't need to sort on these criteria for correctness, + but enforcing a more strict ordering prevents unstable qsort + from behaving differently with different implementations. + Without the code below we get correct but different results + on Solaris 2.7 and 2.8. We would like to always produce the + same results no matter the host. */ + + if (a->r_info != b->r_info) + return (a->r_info - b->r_info); + + return (a->r_addend - b->r_addend); +} + +/* Return true if ADDRESS is within the vma range of SECTION from ABFD. */ + +static bfd_boolean +avr_is_section_for_address (bfd *abfd, asection *section, bfd_vma address) +{ + bfd_vma vma; + bfd_size_type size; + + vma = bfd_get_section_vma (abfd, section); + if (address < vma) + return FALSE; + + size = section->size; + if (address >= vma + size) + return FALSE; + + return TRUE; +} + +/* Data structure used by AVR_FIND_SECTION_FOR_ADDRESS. */ + +struct avr_find_section_data +{ + /* The address we're looking for. */ + bfd_vma address; + + /* The section we've found. */ + asection *section; +}; + +/* Helper function to locate the section holding a certain virtual memory + address. This is called via bfd_map_over_sections. The DATA is an + instance of STRUCT AVR_FIND_SECTION_DATA, the address field of which + has been set to the address to search for, and the section field has + been set to NULL. If SECTION from ABFD contains ADDRESS then the + section field in DATA will be set to SECTION. As an optimisation, if + the section field is already non-null then this function does not + perform any checks, and just returns. */ + +static void +avr_find_section_for_address (bfd *abfd, + asection *section, void *data) +{ + struct avr_find_section_data *fs_data + = (struct avr_find_section_data *) data; + + /* Return if already found. */ + if (fs_data->section != NULL) + return; + + /* If this section isn't part of the addressable code content, skip it. */ + if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0 + && (bfd_get_section_flags (abfd, section) & SEC_CODE) == 0) + return; + + if (avr_is_section_for_address (abfd, section, fs_data->address)) + fs_data->section = section; +} + +/* Load all of the property records from SEC, a section from ABFD. Return + a STRUCT AVR_PROPERTY_RECORD_LIST containing all the records. The + memory for the returned structure, and all of the records pointed too by + the structure are allocated with a single call to malloc, so, only the + pointer returned needs to be free'd. */ + +static struct avr_property_record_list * +avr_elf32_load_records_from_section (bfd *abfd, asection *sec) +{ + char *contents = NULL, *ptr; + bfd_size_type size, mem_size; + bfd_byte version, flags; + uint16_t record_count, i; + struct avr_property_record_list *r_list = NULL; + Elf_Internal_Rela *internal_relocs = NULL, *rel, *rel_end; + struct avr_find_section_data fs_data; + + fs_data.section = NULL; + + size = bfd_get_section_size (sec); + contents = bfd_malloc (size); + bfd_get_section_contents (abfd, sec, contents, 0, size); + ptr = contents; + + /* Load the relocations for the '.avr.prop' section if there are any, and + sort them. */ + internal_relocs = (_bfd_elf_link_read_relocs + (abfd, sec, NULL, NULL, FALSE)); + if (internal_relocs) + qsort (internal_relocs, sec->reloc_count, + sizeof (Elf_Internal_Rela), internal_reloc_compare); + + /* There is a header at the start of the property record section SEC, the + format of this header is: + uint8_t : version number + uint8_t : flags + uint16_t : record counter + */ + + /* Check we have at least got a headers worth of bytes. */ + if (size < AVR_PROPERTY_SECTION_HEADER_SIZE) + goto load_failed; + + version = *((bfd_byte *) ptr); + ptr++; + flags = *((bfd_byte *) ptr); + ptr++; + record_count = *((uint16_t *) ptr); + ptr+=2; + BFD_ASSERT (ptr - contents == AVR_PROPERTY_SECTION_HEADER_SIZE); + + /* Now allocate space for the list structure, and all of the list + elements in a single block. */ + mem_size = sizeof (struct avr_property_record_list) + + sizeof (struct avr_property_record) * record_count; + r_list = bfd_malloc (mem_size); + if (r_list == NULL) + goto load_failed; + + r_list->version = version; + r_list->flags = flags; + r_list->section = sec; + r_list->record_count = record_count; + r_list->records = (struct avr_property_record *) (&r_list [1]); + size -= AVR_PROPERTY_SECTION_HEADER_SIZE; + + /* Check that we understand the version number. There is only one + version number right now, anything else is an error. */ + if (r_list->version != AVR_PROPERTY_RECORDS_VERSION) + goto load_failed; + + rel = internal_relocs; + rel_end = rel + sec->reloc_count; + for (i = 0; i < record_count; ++i) + { + bfd_vma address; + + /* Each entry is a 32-bit address, followed by a single byte type. + After that is the type specific data. We must take care to + ensure that we don't read beyond the end of the section data. */ + if (size < 5) + goto load_failed; + + r_list->records [i].section = NULL; + r_list->records [i].offset = 0; + + if (rel) + { + /* The offset of the address within the .avr.prop section. */ + size_t offset = ptr - contents; + + while (rel < rel_end && rel->r_offset < offset) + ++rel; + + if (rel == rel_end) + rel = NULL; + else if (rel->r_offset == offset) + { + /* Find section and section offset. */ + unsigned long r_symndx; + + asection * rel_sec; + bfd_vma sec_offset; + + r_symndx = ELF32_R_SYM (rel->r_info); + rel_sec = get_elf_r_symndx_section (abfd, r_symndx); + sec_offset = get_elf_r_symndx_offset (abfd, r_symndx) + + rel->r_addend; + + r_list->records [i].section = rel_sec; + r_list->records [i].offset = sec_offset; + } + } + + address = *((uint32_t *) ptr); + ptr += 4; + size -= 4; + + if (r_list->records [i].section == NULL) + { + /* Try to find section and offset from address. */ + if (fs_data.section != NULL + && !avr_is_section_for_address (abfd, fs_data.section, + address)) + fs_data.section = NULL; + + if (fs_data.section == NULL) + { + fs_data.address = address; + bfd_map_over_sections (abfd, avr_find_section_for_address, + &fs_data); + } + + if (fs_data.section == NULL) + { + fprintf (stderr, "Failed to find matching section.\n"); + goto load_failed; + } + + r_list->records [i].section = fs_data.section; + r_list->records [i].offset + = address - bfd_get_section_vma (abfd, fs_data.section); + } + + r_list->records [i].type = *((bfd_byte *) ptr); + ptr += 1; + size -= 1; + + switch (r_list->records [i].type) + { + case RECORD_ORG: + /* Nothing else to load. */ + break; + case RECORD_ORG_AND_FILL: + /* Just a 4-byte fill to load. */ + if (size < 4) + goto load_failed; + r_list->records [i].data.org.fill = *((uint32_t *) ptr); + ptr += 4; + size -= 4; + break; + case RECORD_ALIGN: + /* Just a 4-byte alignment to load. */ + if (size < 4) + goto load_failed; + r_list->records [i].data.align.bytes = *((uint32_t *) ptr); + ptr += 4; + size -= 4; + /* Just initialise PRECEDING_DELETED field, this field is + used during linker relaxation. */ + r_list->records [i].data.align.preceding_deleted = 0; + break; + case RECORD_ALIGN_AND_FILL: + /* A 4-byte alignment, and a 4-byte fill to load. */ + if (size < 8) + goto load_failed; + r_list->records [i].data.align.bytes = *((uint32_t *) ptr); + ptr += 4; + r_list->records [i].data.align.fill = *((uint32_t *) ptr); + ptr += 4; + size -= 8; + /* Just initialise PRECEDING_DELETED field, this field is + used during linker relaxation. */ + r_list->records [i].data.align.preceding_deleted = 0; + break; + default: + goto load_failed; + } + } + + free (contents); + free (internal_relocs); + return r_list; + + load_failed: + free (internal_relocs); + free (contents); + free (r_list); + return NULL; +} + +/* Load all of the property records from ABFD. See + AVR_ELF32_LOAD_RECORDS_FROM_SECTION for details of the return value. */ + +struct avr_property_record_list * +avr_elf32_load_property_records (bfd *abfd) +{ + asection *sec; + + /* Find the '.avr.prop' section and load the contents into memory. */ + sec = bfd_get_section_by_name (abfd, AVR_PROPERTY_RECORD_SECTION_NAME); + if (sec == NULL) + return NULL; + return avr_elf32_load_records_from_section (abfd, sec); +} + +const char * +avr_elf32_property_record_name (struct avr_property_record *rec) +{ + const char *str; + + switch (rec->type) + { + case RECORD_ORG: + str = "ORG"; + break; + case RECORD_ORG_AND_FILL: + str = "ORG+FILL"; + break; + case RECORD_ALIGN: + str = "ALIGN"; + break; + case RECORD_ALIGN_AND_FILL: + str = "ALIGN+FILL"; + break; + default: + str = "unknown"; + } + + return str; +} + + #define ELF_ARCH bfd_arch_avr #define ELF_TARGET_ID AVR_ELF_DATA #define ELF_MACHINE_CODE EM_AVR @@ -3370,5 +4127,6 @@ elf32_avr_build_stubs (struct bfd_link_info *info) #define bfd_elf32_bfd_relax_section elf32_avr_relax_section #define bfd_elf32_bfd_get_relocated_section_contents \ elf32_avr_get_relocated_section_contents +#define bfd_elf32_new_section_hook elf_avr_new_section_hook #include "elf32-target.h" diff --git a/bfd/elf32-avr.h b/bfd/elf32-avr.h index 6eb3154..0ddb562 100644 --- a/bfd/elf32-avr.h +++ b/bfd/elf32-avr.h @@ -36,3 +36,87 @@ elf32_avr_size_stubs (bfd *, struct bfd_link_info *, bfd_boolean); extern bfd_boolean elf32_avr_build_stubs (struct bfd_link_info *); + +/* The name of the section into which the property records are stored. */ +#define AVR_PROPERTY_RECORD_SECTION_NAME ".avr.prop" + +/* The current version number for the format of the property records. */ +#define AVR_PROPERTY_RECORDS_VERSION 1 + +/* The size of the header that is written to the property record section + before the property records are written out. */ +#define AVR_PROPERTY_SECTION_HEADER_SIZE 4 + +/* This holds a single property record in memory, the structure of this + data when written out to the ELF section is more compressed. */ + +struct avr_property_record +{ + /* The section and offset for this record. */ + asection *section; + bfd_vma offset; + + /* The type of this record. */ + enum { + RECORD_ORG = 0, + RECORD_ORG_AND_FILL = 1, + RECORD_ALIGN = 2, + RECORD_ALIGN_AND_FILL = 3 + } type; + + /* Type specific data. */ + union + { + /* RECORD_ORG and RECORD_ORG_AND_FILL. */ + struct + { + unsigned long fill; + } org; + + /* RECORD_ALIGN and RECORD_ALIGN_AND_FILL. */ + struct + { + unsigned long bytes; + unsigned long fill; + + /* This field is used during linker relaxation to track the number of + bytes that have been opened up before this alignment directive. + When we have enough bytes available it is possible to move the + re-align this directive backwards while still maintaining the + alignment requirement. */ + unsigned long preceding_deleted; + } align; + } data; +}; + +struct avr_property_record_list +{ + /* The version number tells us the structure of the property record data + within the section. See AVR_PROPERTY_RECORDS_VERSION. */ + bfd_byte version; + + /* The flags field is currently unused. This should be set to 0. */ + bfd_byte flags; + + /* The number of property records. This is stored as a 2-byte value in + the section contents. */ + unsigned long record_count; + + /* The section from which the property records were loaded. This is the + actual section containing the records, not the section(s) to which the + records apply. */ + asection *section; + + /* The actual property records. */ + struct avr_property_record *records; +}; + +/* Load the property records from ABFD, return NULL if there are non + found, otherwise return pointer to dynamically allocated memory. The + memory for the header and all of the records are allocated in a single + block, as such only the header needs to be freed. */ + +extern struct avr_property_record_list *avr_elf32_load_property_records (bfd *abfd); + +/* Return a string that is the name of the property record pointed to by REC. */ +extern const char *avr_elf32_property_record_name (struct avr_property_record *rec); diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c index 0792483..80d20ca 100644 --- a/bfd/elf32-bfin.c +++ b/bfd/elf32-bfin.c @@ -423,11 +423,11 @@ static reloc_howto_type bfin_howto_table [] = /* This reloc does nothing. . */ HOWTO (R_BFIN_UNUSED0, /* type. */ 0, /* rightshift. */ - 2, /* size (0 = byte, 1 = short, 2 = long). */ - 32, /* bitsize. */ + 3, /* size (0 = byte, 1 = short, 2 = long). */ + 0, /* bitsize. */ FALSE, /* pc_relative. */ 0, /* bitpos. */ - complain_overflow_bitfield, /* complain_on_overflow. */ + complain_overflow_dont, /* complain_on_overflow. */ bfd_elf_generic_reloc, /* special_function. */ "R_BFIN_UNUSED0", /* name. */ FALSE, /* partial_inplace. */ @@ -451,11 +451,11 @@ static reloc_howto_type bfin_howto_table [] = HOWTO (R_BFIN_UNUSED1, /* type. */ 0, /* rightshift. */ - 2, /* size (0 = byte, 1 = short, 2 = long). */ - 32, /* bitsize. */ + 3, /* size (0 = byte, 1 = short, 2 = long). */ + 0, /* bitsize. */ FALSE, /* pc_relative. */ 0, /* bitpos. */ - complain_overflow_bitfield, /* complain_on_overflow. */ + complain_overflow_dont, /* complain_on_overflow. */ bfd_elf_generic_reloc, /* special_function. */ "R_BFIN_UNUSED1", /* name. */ FALSE, /* partial_inplace. */ @@ -581,8 +581,8 @@ static reloc_howto_type bfin_howto_table [] = HOWTO (R_BFIN_UNUSEDB, /* type. */ 0, /* rightshift. */ - 2, /* size (0 = byte, 1 = short, 2 = long). */ - 32, /* bitsize. */ + 3, /* size (0 = byte, 1 = short, 2 = long). */ + 0, /* bitsize. */ FALSE, /* pc_relative. */ 0, /* bitpos. */ complain_overflow_dont, /* complain_on_overflow. */ @@ -595,8 +595,8 @@ static reloc_howto_type bfin_howto_table [] = HOWTO (R_BFIN_UNUSEDC, /* type. */ 0, /* rightshift. */ - 2, /* size (0 = byte, 1 = short, 2 = long). */ - 32, /* bitsize. */ + 3, /* size (0 = byte, 1 = short, 2 = long). */ + 0, /* bitsize. */ FALSE, /* pc_relative. */ 0, /* bitpos. */ complain_overflow_dont, /* complain_on_overflow. */ @@ -1065,13 +1065,13 @@ bfin_bfd_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, bfd_reloc_code_real_type code) { unsigned int i; - unsigned int r_type = BFIN_RELOC_MIN; + unsigned int r_type = (unsigned int) -1; - for (i = sizeof (bfin_reloc_map) / sizeof (bfin_reloc_map[0]); --i;) + for (i = sizeof (bfin_reloc_map) / sizeof (bfin_reloc_map[0]); i--;) if (bfin_reloc_map[i].bfd_reloc_val == code) r_type = bfin_reloc_map[i].bfin_reloc_val; - if (r_type <= BFIN_RELOC_MAX && r_type > BFIN_RELOC_MIN) + if (r_type <= BFIN_RELOC_MAX) return &bfin_howto_table [r_type]; else if (r_type >= BFIN_GNUEXT_RELOC_MIN && r_type <= BFIN_GNUEXT_RELOC_MAX) diff --git a/bfd/elf32-cr16.c b/bfd/elf32-cr16.c index dafbc08..047d720 100644 --- a/bfd/elf32-cr16.c +++ b/bfd/elf32-cr16.c @@ -115,8 +115,8 @@ static reloc_howto_type cr16_elf_howto_table[] = { HOWTO (R_CR16_NONE, /* type */ 0, /* rightshift */ - 2, /* size */ - 32, /* bitsize */ + 3, /* size */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -673,7 +673,13 @@ elf_cr16_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, { unsigned int r_type = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r_type < (unsigned int) R_CR16_MAX); + if (r_type >= R_CR16_MAX) + { + (*_bfd_error_handler) (_("%B: unrecognised CR16 reloc number: %d"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_CR16_NONE; + } cache_ptr->howto = cr16_elf_howto_table + r_type; } diff --git a/bfd/elf32-cr16c.c b/bfd/elf32-cr16c.c index db908f0..6547ec1 100644 --- a/bfd/elf32-cr16c.c +++ b/bfd/elf32-cr16c.c @@ -182,7 +182,7 @@ elf_cr16c_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, if (r_type >= RINDEX_16C_MAX) { - _bfd_error_handler (_("%A; invalid CR16C reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid CR16C reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_howto_table[r_type]; diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c index d9a3178..d5670ac 100644 --- a/bfd/elf32-cris.c +++ b/bfd/elf32-cris.c @@ -40,11 +40,11 @@ static reloc_howto_type cris_elf_howto_table [] = /* This reloc does nothing. */ HOWTO (R_CRIS_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_CRIS_NONE", /* name */ FALSE, /* partial_inplace */ @@ -463,7 +463,7 @@ cris_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= R_CRIS_max) { - _bfd_error_handler (_("%A: invalid CRIS reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid CRIS reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & cris_elf_howto_table [r_type]; diff --git a/bfd/elf32-crx.c b/bfd/elf32-crx.c index 90948bc..0f9069c 100644 --- a/bfd/elf32-crx.c +++ b/bfd/elf32-crx.c @@ -82,8 +82,8 @@ static reloc_howto_type crx_elf_howto_table[] = { HOWTO (R_CRX_NONE, /* type */ 0, /* rightshift */ - 2, /* size */ - 32, /* bitsize */ + 3, /* size */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ @@ -423,7 +423,13 @@ elf_crx_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, Elf_Internal_Rela *dst) { unsigned int r_type = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r_type < (unsigned int) R_CRX_MAX); + if (r_type >= R_CRX_MAX) + { + (*_bfd_error_handler) (_("%B: unrecognised CRX reloc number: %d"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_CRX_NONE; + } cache_ptr->howto = &crx_elf_howto_table[r_type]; } diff --git a/bfd/elf32-d10v.c b/bfd/elf32-d10v.c index df9bb89..a7d30c9 100644 --- a/bfd/elf32-d10v.c +++ b/bfd/elf32-d10v.c @@ -33,8 +33,8 @@ static reloc_howto_type elf_d10v_howto_table[] = /* This reloc does nothing. */ HOWTO (R_D10V_NONE, /* Type. */ 0, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 32, /* Bitsize. */ + 3, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ FALSE, /* PC_relative. */ 0, /* Bitpos. */ complain_overflow_dont,/* Complain_on_overflow. */ @@ -230,7 +230,7 @@ d10v_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_D10V_max) { - _bfd_error_handler (_("%A: invalid D10V reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid D10V reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_d10v_howto_table[r_type]; diff --git a/bfd/elf32-d30v.c b/bfd/elf32-d30v.c index 36e2bc4..3976206 100644 --- a/bfd/elf32-d30v.c +++ b/bfd/elf32-d30v.c @@ -254,11 +254,11 @@ static reloc_howto_type elf_d30v_howto_table[] = /* This reloc does nothing. */ HOWTO (R_D30V_NONE, /* Type. */ 0, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 32, /* Bitsize. */ + 3, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ FALSE, /* PC_relative. */ 0, /* Bitpos. */ - complain_overflow_bitfield, /* Complain_on_overflow. */ + complain_overflow_dont, /* Complain_on_overflow. */ bfd_elf_generic_reloc, /* Special_function. */ "R_D30V_NONE", /* Name. */ FALSE, /* Partial_inplace. */ @@ -518,7 +518,7 @@ d30v_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_D30V_max) { - _bfd_error_handler (_("%A: invalid D30V reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid D30V reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_d30v_howto_table[r_type]; @@ -536,7 +536,7 @@ d30v_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_D30V_max) { - _bfd_error_handler (_("%A: invalid D30V reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid D30V reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_d30v_howto_table[r_type]; diff --git a/bfd/elf32-dlx.c b/bfd/elf32-dlx.c index 917a8b3..b8b73ab 100644 --- a/bfd/elf32-dlx.c +++ b/bfd/elf32-dlx.c @@ -237,7 +237,7 @@ static reloc_howto_type dlx_elf_howto_table[]= /* No relocation. */ HOWTO (R_DLX_NONE, /* Type. */ 0, /* Rightshift. */ - 0, /* size (0 = byte, 1 = short, 2 = long). */ + 3, /* size (0 = byte, 1 = short, 2 = long). */ 0, /* Bitsize. */ FALSE, /* PC_relative. */ 0, /* Bitpos. */ diff --git a/bfd/elf32-epiphany.c b/bfd/elf32-epiphany.c index d3461b7..6c57683 100644 --- a/bfd/elf32-epiphany.c +++ b/bfd/elf32-epiphany.c @@ -63,7 +63,7 @@ static reloc_howto_type epiphany_elf_howto_table [] = pr) /* pcrel_offset */ /* This reloc does nothing. */ - AHOW (R_EPIPHANY_NONE, 0, 0,32, FALSE, 0, complain_overflow_dont, "R_EPIPHANY_NONE", 0, 0), + AHOW (R_EPIPHANY_NONE, 0, 3,0, FALSE, 0, complain_overflow_dont, "R_EPIPHANY_NONE", 0, 0), /* 8 bit absolute (not likely) */ AHOW (R_EPIPHANY_8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, "R_EPIPHANY_8", 0x000000ff, 0x000000ff), @@ -372,7 +372,7 @@ epiphany_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_EPIPHANY_max) { - _bfd_error_handler (_("%A: invalid Epiphany reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid Epiphany reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & epiphany_elf_howto_table [r_type]; diff --git a/bfd/elf32-fr30.c b/bfd/elf32-fr30.c index 620a43f..13f6f19 100644 --- a/bfd/elf32-fr30.c +++ b/bfd/elf32-fr30.c @@ -37,11 +37,11 @@ static reloc_howto_type fr30_elf_howto_table [] = /* This reloc does nothing. */ HOWTO (R_FR30_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_FR30_NONE", /* name */ FALSE, /* partial_inplace */ @@ -343,7 +343,7 @@ fr30_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, unsigned int i; for (i = sizeof (fr30_reloc_map) / sizeof (fr30_reloc_map[0]); - --i;) + i--;) if (fr30_reloc_map [i].bfd_reloc_val == code) return & fr30_elf_howto_table [fr30_reloc_map[i].fr30_reloc_val]; @@ -377,7 +377,7 @@ fr30_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_FR30_max) { - _bfd_error_handler (_("%A: invalid FR30 reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid FR30 reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & fr30_elf_howto_table [r_type]; diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c index ca0f78d..f374df0 100644 --- a/bfd/elf32-frv.c +++ b/bfd/elf32-frv.c @@ -34,11 +34,11 @@ static reloc_howto_type elf32_frv_howto_table [] = /* This reloc does nothing. */ HOWTO (R_FRV_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_FRV_NONE", /* name */ FALSE, /* partial_inplace */ @@ -2559,7 +2559,7 @@ frv_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, default: if (r_type >= (unsigned int) R_FRV_max) { - _bfd_error_handler (_("%A: invalid FRV reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid FRV reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & elf32_frv_howto_table [r_type]; diff --git a/bfd/elf32-ft32.c b/bfd/elf32-ft32.c new file mode 100644 index 0000000..ea73d97 --- /dev/null +++ b/bfd/elf32-ft32.c @@ -0,0 +1,380 @@ +/* ft32-specific support for 32-bit ELF. + Copyright (C) 2013-2015 Free Software Foundation, Inc. + + Copied from elf32-moxie.c which is.. + Copyright (C) 2009-2015 Free Software Foundation, Inc. + 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" +#include "elf-bfd.h" +#include "elf/ft32.h" + +/* Forward declarations. */ + +static reloc_howto_type ft32_elf_howto_table [] = +{ + /* This reloc does nothing. */ + HOWTO (R_FT32_NONE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FT32_NONE", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* A 32 bit absolute relocation. */ + + HOWTO (R_FT32_32, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FT32_32", /* name */ + FALSE, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_FT32_16, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FT32_16", /* name */ + FALSE, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_FT32_8, /* type */ + 0, /* rightshift */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 8, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FT32_8", /* name */ + FALSE, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x000000ff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_FT32_10, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 10, /* bitsize */ + FALSE, /* pc_relative */ + 4, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FT32_10", /* name */ + FALSE, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x00003ff0, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_FT32_20, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 20, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FT32_20", /* name */ + FALSE, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x000fffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_FT32_17, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 17, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FT32_17", /* name */ + FALSE, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x0001ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_FT32_18, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 18, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_FT32_18", /* name */ + FALSE, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x0003ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + +}; + +/* Map BFD reloc types to FT32 ELF reloc types. */ + +struct ft32_reloc_map +{ + bfd_reloc_code_real_type bfd_reloc_val; + unsigned int ft32_reloc_val; +}; + +static const struct ft32_reloc_map ft32_reloc_map [] = +{ + { BFD_RELOC_NONE, R_FT32_NONE }, + { BFD_RELOC_32, R_FT32_20 }, + { BFD_RELOC_16, R_FT32_16 }, + { BFD_RELOC_8, R_FT32_8 }, + { BFD_RELOC_FT32_10, R_FT32_10 }, + { BFD_RELOC_FT32_20, R_FT32_20 }, + { BFD_RELOC_FT32_17, R_FT32_17 }, + { BFD_RELOC_FT32_18, R_FT32_18 }, +}; + +static reloc_howto_type * +ft32_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, + bfd_reloc_code_real_type code) +{ + unsigned int i; + + for (i = sizeof (ft32_reloc_map) / sizeof (ft32_reloc_map[0]); + --i;) + if (ft32_reloc_map [i].bfd_reloc_val == code) + return & ft32_elf_howto_table [ft32_reloc_map[i].ft32_reloc_val]; + + return NULL; +} + +static reloc_howto_type * +ft32_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, const char *r_name) +{ + unsigned int i; + + for (i = 0; + i < sizeof (ft32_elf_howto_table) / sizeof (ft32_elf_howto_table[0]); + i++) + if (ft32_elf_howto_table[i].name != NULL + && strcasecmp (ft32_elf_howto_table[i].name, r_name) == 0) + return &ft32_elf_howto_table[i]; + + return NULL; +} + +/* Set the howto pointer for an FT32 ELF reloc. */ + +static void +ft32_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_FT32_max); + cache_ptr->howto = & ft32_elf_howto_table [r_type]; +} + +/* Relocate an FT32 ELF section. + + 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 +ft32_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; + int r_type; + + r_type = ELF32_R_TYPE (rel->r_info); + r_symndx = ELF32_R_SYM (rel->r_info); + howto = ft32_elf_howto_table + r_type; + h = NULL; + sym = NULL; + sec = NULL; + + if (r_symndx < symtab_hdr->sh_info) + { + sym = local_syms + r_symndx; + sec = local_sections [r_symndx]; + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); + + name = bfd_elf_string_from_elf_section + (input_bfd, symtab_hdr->sh_link, sym->st_name); + name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name; + } + else + { + bfd_boolean unresolved_reloc, warned, ignored; + + RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, + r_symndx, symtab_hdr, sym_hashes, + h, sec, relocation, + unresolved_reloc, warned, ignored); + + name = h->root.root.string; + } + + if (sec != NULL && discarded_section (sec)) + RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, + rel, 1, relend, howto, 0, contents); + + if (info->relocatable) + continue; + + r = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, + relocation, rel->r_addend); + + if (r != bfd_reloc_ok) + { + const char * msg = NULL; + + switch (r) + { + case bfd_reloc_overflow: + 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_outofrange: + msg = _("internal error: out of range error"); + break; + + case bfd_reloc_notsupported: + msg = _("internal error: unsupported relocation error"); + break; + + case bfd_reloc_dangerous: + msg = _("internal error: dangerous relocation"); + break; + + default: + msg = _("internal error: unknown error"); + break; + } + + if (msg) + r = info->callbacks->warning + (info, msg, name, input_bfd, input_section, rel->r_offset); + + if (! r) + return FALSE; + } + } + + return TRUE; +} + +#define ELF_ARCH bfd_arch_ft32 +#define ELF_MACHINE_CODE EM_FT32 +#define ELF_MAXPAGESIZE 0x1 + +#define TARGET_LITTLE_SYM ft32_elf32_vec +#define TARGET_LITTLE_NAME "elf32-ft32" + +#define elf_info_to_howto_rel NULL +#define elf_info_to_howto ft32_info_to_howto_rela +#define elf_backend_relocate_section ft32_elf_relocate_section + +#define elf_backend_can_gc_sections 1 +#define elf_backend_rela_normal 1 + +#define bfd_elf32_bfd_reloc_type_lookup ft32_reloc_type_lookup +#define bfd_elf32_bfd_reloc_name_lookup ft32_reloc_name_lookup + +#include "elf32-target.h" diff --git a/bfd/elf32-h8300.c b/bfd/elf32-h8300.c index d6d315d..3598c34 100644 --- a/bfd/elf32-h8300.c +++ b/bfd/elf32-h8300.c @@ -61,7 +61,7 @@ static reloc_howto_type h8_elf_howto_table[] = #define R_H8_NONE_X 0 HOWTO (R_H8_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -1744,3 +1744,12 @@ elf32_h8_get_relocated_section_contents (bfd *output_bfd, #define elf_symbol_leading_char '_' #include "elf32-target.h" + +#undef TARGET_BIG_SYM +#define TARGET_BIG_SYM h8300_elf32_linux_vec +#undef TARGET_BIG_NAME +#define TARGET_BIG_NAME "elf32-h8300-linux" +#undef elf_symbol_leading_char +#define elf32_bed elf32_h8300_linux_bed + +#include "elf32-target.h" diff --git a/bfd/elf32-i370.c b/bfd/elf32-i370.c index d4ff515..6e6c8e8 100644 --- a/bfd/elf32-i370.c +++ b/bfd/elf32-i370.c @@ -40,11 +40,11 @@ static reloc_howto_type i370_elf_howto_raw[] = /* This reloc does nothing. */ HOWTO (R_I370_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_I370_NONE", /* name */ FALSE, /* partial_inplace */ @@ -294,12 +294,21 @@ i370_elf_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, Elf_Internal_Rela *dst) { + unsigned int r_type; + if (!i370_elf_howto_table[ R_I370_ADDR31 ]) /* Initialize howto table. */ i370_elf_howto_init (); - BFD_ASSERT (ELF32_R_TYPE (dst->r_info) < (unsigned int) R_I370_max); - cache_ptr->howto = i370_elf_howto_table[ELF32_R_TYPE (dst->r_info)]; + r_type = ELF32_R_TYPE (dst->r_info); + if (r_type >= R_I370_max) + { + (*_bfd_error_handler) (_("%B: unrecognised I370 reloc number: %d"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_I370_NONE; + } + cache_ptr->howto = i370_elf_howto_table[r_type]; } /* Hack alert -- the following several routines look generic to me ... diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index a6c8faa..92e7f72 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -37,7 +37,7 @@ static reloc_howto_type elf_howto_table[]= { - HOWTO(R_386_NONE, 0, 0, 0, FALSE, 0, complain_overflow_bitfield, + HOWTO(R_386_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont, bfd_elf_generic_reloc, "R_386_NONE", TRUE, 0x00000000, 0x00000000, FALSE), HOWTO(R_386_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, @@ -756,6 +756,9 @@ struct elf_i386_link_hash_entry (GOT_TLS_GD_P (type) || GOT_TLS_GDESC_P (type)) unsigned char tls_type; + /* Symbol is referenced by R_386_GOTOFF relocation. */ + unsigned int gotoff_ref : 1; + /* Information about the GOT PLT entry. Filled when there are both GOT and PLT relocations against the same function. */ union gotplt_union plt_got; @@ -879,6 +882,7 @@ elf_i386_link_hash_newfunc (struct bfd_hash_entry *entry, eh = (struct elf_i386_link_hash_entry *) entry; eh->dyn_relocs = NULL; eh->tls_type = GOT_UNKNOWN; + eh->gotoff_ref = 0; eh->plt_got.offset = (bfd_vma) -1; eh->tlsdesc_got = (bfd_vma) -1; } @@ -1022,13 +1026,28 @@ elf_i386_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info) return FALSE; htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss"); - if (!info->shared) - htab->srelbss = bfd_get_linker_section (dynobj, ".rel.bss"); - - if (!htab->sdynbss - || (!info->shared && !htab->srelbss)) + if (!htab->sdynbss) abort (); + if (info->executable) + { + /* Always allow copy relocs for building executables. */ + asection *s = bfd_get_linker_section (dynobj, ".rel.bss"); + if (s == NULL) + { + const struct elf_backend_data *bed = get_elf_backend_data (dynobj); + s = bfd_make_section_anyway_with_flags (dynobj, + ".rel.bss", + (bed->dynamic_sec_flags + | SEC_READONLY)); + if (s == NULL + || ! bfd_set_section_alignment (dynobj, s, + bed->s->log_file_align)) + return FALSE; + } + htab->srelbss = s; + } + if (get_elf_i386_backend_data (dynobj)->is_vxworks && !elf_vxworks_create_dynamic_sections (dynobj, info, &htab->srelplt2)) @@ -1101,6 +1120,10 @@ elf_i386_copy_indirect_symbol (struct bfd_link_info *info, eind->tls_type = GOT_UNKNOWN; } + /* Copy gotoff_ref so that elf_i386_adjust_dynamic_symbol will + generate a R_386_COPY reloc. */ + edir->gotoff_ref |= eind->gotoff_ref; + if (ELIMINATE_COPY_RELOCS && ind->root.type != bfd_link_hash_indirect && dir->dynamic_adjusted) @@ -1429,6 +1452,10 @@ elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd, return TRUE; } +/* Rename some of the generic section flags to better document how they + are used here. */ +#define need_convert_mov_to_lea sec_flg0 + /* 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. */ @@ -1471,6 +1498,7 @@ elf_i386_check_relocs (bfd *abfd, unsigned int r_type; unsigned long r_symndx; struct elf_link_hash_entry *h; + struct elf_i386_link_hash_entry *eh; Elf_Internal_Sym *isym; const char *name; bfd_boolean size_reloc; @@ -1520,6 +1548,7 @@ elf_i386_check_relocs (bfd *abfd, h = (struct elf_link_hash_entry *) h->root.u.i.link; } + eh = (struct elf_i386_link_hash_entry *) h; if (h != NULL) { /* Create the ifunc sections for static executables. If we @@ -1531,11 +1560,12 @@ elf_i386_check_relocs (bfd *abfd, default: break; + case R_386_GOTOFF: + eh->gotoff_ref = 1; case R_386_32: case R_386_PC32: case R_386_PLT32: case R_386_GOT32: - case R_386_GOTOFF: if (htab->elf.dynobj == NULL) htab->elf.dynobj = abfd; if (!_bfd_elf_create_ifunc_sections (htab->elf.dynobj, info)) @@ -1787,7 +1817,7 @@ do_size: relocations we need for this symbol. */ if (h != NULL) { - head = &((struct elf_i386_link_hash_entry *) h)->dyn_relocs; + head = &eh->dyn_relocs; } else { @@ -1855,7 +1885,8 @@ do_size: if (use_plt_got && h != NULL && h->plt.refcount > 0 - && h->got.refcount > 0 + && (((info->flags & DF_BIND_NOW) && !h->pointer_equality_needed) + || h->got.refcount > 0) && htab->plt_got == NULL) { /* Create the GOT procedure linkage table. */ @@ -1884,6 +1915,10 @@ do_size: plt_got_align)) return FALSE; } + + if (r_type == R_386_GOT32 + && (h == NULL || h->type != STT_GNU_IFUNC)) + sec->need_convert_mov_to_lea = 1; } return TRUE; @@ -2167,12 +2202,14 @@ elf_i386_adjust_dynamic_symbol (struct bfd_link_info *info, 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) + if (!info->executable) 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) + GOT nor R_386_GOTOFF relocation, we don't need to generate a copy + reloc. */ + eh = (struct elf_i386_link_hash_entry *) h; + if (!h->non_got_ref && !eh->gotoff_ref) return TRUE; /* If -z nocopyreloc was given, we won't generate them either. */ @@ -2186,14 +2223,15 @@ elf_i386_adjust_dynamic_symbol (struct bfd_link_info *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 - doesn't work on VxWorks, where we can not have dynamic relocations - (other than copy and jump slot relocations) in an executable. */ + /* If there aren't any dynamic relocs in read-only sections nor + R_386_GOTOFF relocation, then we can keep the dynamic relocs and + avoid the copy reloc. This doesn't work on VxWorks, where we can + not have dynamic relocations (other than copy and jump slot + relocations) in an executable. */ if (ELIMINATE_COPY_RELOCS + && !eh->gotoff_ref && !get_elf_i386_backend_data (info->output_bfd)->is_vxworks) { - eh = (struct elf_i386_link_hash_entry *) h; for (p = eh->dyn_relocs; p != NULL; p = p->next) { s = p->sec->output_section; @@ -2284,7 +2322,19 @@ elf_i386_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) else if (htab->elf.dynamic_sections_created && (h->plt.refcount > 0 || eh->plt_got.refcount > 0)) { - bfd_boolean use_plt_got = eh->plt_got.refcount > 0; + bfd_boolean use_plt_got; + + if ((info->flags & DF_BIND_NOW) && !h->pointer_equality_needed) + { + /* Don't use the regular PLT for DF_BIND_NOW. */ + h->plt.offset = (bfd_vma) -1; + + /* Use the GOT PLT. */ + h->got.refcount = 1; + eh->plt_got.refcount = 1; + } + + use_plt_got = eh->plt_got.refcount > 0; /* Make sure this symbol is output as a dynamic symbol. Undefined weak syms won't yet be marked as dynamic. */ @@ -2302,7 +2352,8 @@ elf_i386_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) asection *got_s = htab->plt_got; /* If this is the first .plt entry, make room for the special - first entry. */ + first entry. The .plt section is used by prelink to undo + prelinking for dynamic relocations. */ if (s->size == 0) s->size = plt_entry_size; @@ -2600,8 +2651,9 @@ elf_i386_readonly_dynrelocs (struct elf_link_hash_entry *h, void *inf) info->flags |= DF_TEXTREL; - if (info->warn_shared_textrel && info->shared) - info->callbacks->einfo (_("%P: %B: warning: relocation against `%s' in readonly section `%A'.\n"), + if ((info->warn_shared_textrel && info->shared) + || info->error_textrel) + info->callbacks->einfo (_("%P: %B: warning: relocation against `%s' in readonly section `%A'\n"), p->sec->owner, h->root.root.string, p->sec); @@ -2635,9 +2687,9 @@ elf_i386_convert_mov_to_lea (bfd *abfd, asection *sec, if (!is_elf_hash_table (link_info->hash)) return FALSE; - /* Nothing to do if there are no codes, no relocations or no output. */ + /* Nothing to do if there is no need or no output. */ if ((sec->flags & (SEC_CODE | SEC_RELOC)) != (SEC_CODE | SEC_RELOC) - || sec->reloc_count == 0 + || sec->need_convert_mov_to_lea == 0 || bfd_is_abs_section (sec->output_section)) return TRUE; @@ -2686,11 +2738,9 @@ elf_i386_convert_mov_to_lea (bfd *abfd, asection *sec, /* STT_GNU_IFUNC must keep R_386_GOT32 relocation. */ if (ELF_ST_TYPE (isym->st_info) != STT_GNU_IFUNC && irel->r_offset >= 2 - && bfd_get_8 (input_bfd, - contents + irel->r_offset - 2) == 0x8b) + && bfd_get_8 (abfd, contents + irel->r_offset - 2) == 0x8b) { - bfd_put_8 (output_bfd, 0x8d, - contents + irel->r_offset - 2); + bfd_put_8 (abfd, 0x8d, contents + irel->r_offset - 2); irel->r_info = ELF32_R_INFO (r_symndx, R_386_GOTOFF); if (local_got_refcounts != NULL && local_got_refcounts[r_symndx] > 0) @@ -2716,11 +2766,9 @@ elf_i386_convert_mov_to_lea (bfd *abfd, asection *sec, && h != htab->elf.hdynamic && SYMBOL_REFERENCES_LOCAL (link_info, h) && irel->r_offset >= 2 - && bfd_get_8 (input_bfd, - contents + irel->r_offset - 2) == 0x8b) + && bfd_get_8 (abfd, contents + irel->r_offset - 2) == 0x8b) { - bfd_put_8 (output_bfd, 0x8d, - contents + irel->r_offset - 2); + bfd_put_8 (abfd, 0x8d, contents + irel->r_offset - 2); irel->r_info = ELF32_R_INFO (r_symndx, R_386_GOTOFF); if (h->got.refcount > 0) h->got.refcount -= 1; @@ -2842,8 +2890,9 @@ elf_i386_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info) && (info->flags & DF_TEXTREL) == 0) { info->flags |= DF_TEXTREL; - if (info->warn_shared_textrel && info->shared) - info->callbacks->einfo (_("%P: %B: warning: relocation in readonly section `%A'.\n"), + if ((info->warn_shared_textrel && info->shared) + || info->error_textrel) + info->callbacks->einfo (_("%P: %B: warning: relocation in readonly section `%A'\n"), p->sec->owner, p->sec); } } @@ -3070,11 +3119,18 @@ elf_i386_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info) 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_REL) - || !add_dynamic_entry (DT_JMPREL, 0)) + /* DT_PLTGOT is used by prelink even if there is no PLT + relocation. */ + if (!add_dynamic_entry (DT_PLTGOT, 0)) return FALSE; + + if (htab->elf.srelplt->size != 0) + { + if (!add_dynamic_entry (DT_PLTRELSZ, 0) + || !add_dynamic_entry (DT_PLTREL, DT_REL) + || !add_dynamic_entry (DT_JMPREL, 0)) + return FALSE; + } } if (relocs) @@ -3141,6 +3197,7 @@ elf_i386_always_size_sections (bfd *output_bfd, tlsbase = (struct elf_link_hash_entry *)bh; tlsbase->def_regular = 1; tlsbase->other = STV_HIDDEN; + tlsbase->root.linker_def = 1; (*bed->elf_backend_hide_symbol) (info, tlsbase, TRUE); } } @@ -3703,11 +3760,11 @@ elf_i386_relocate_section (bfd *output_bfd, /* Relocation is relative to the start of the global offset table. */ - /* Check to make sure it isn't a protected function symbol - for shared library since it may not be local when used - as function address. We also need to make sure that a - symbol is defined locally. */ - if (info->shared && h) + /* Check to make sure it isn't a protected function or data + symbol for shared library since it may not be local when + used as function address or with copy relocation. We also + need to make sure that a symbol is referenced locally. */ + if (!info->executable && h) { if (!h->def_regular) { @@ -3735,14 +3792,16 @@ elf_i386_relocate_section (bfd *output_bfd, bfd_set_error (bfd_error_bad_value); return FALSE; } - else if (!info->executable - && !SYMBOLIC_BIND (info, h) - && h->type == STT_FUNC + else if (!SYMBOL_REFERENCES_LOCAL (info, h) + && (h->type == STT_FUNC + || h->type == STT_OBJECT) && ELF_ST_VISIBILITY (h->other) == STV_PROTECTED) { (*_bfd_error_handler) - (_("%B: relocation R_386_GOTOFF against protected function `%s' can not be used when making a shared object"), - input_bfd, h->root.root.string); + (_("%B: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"), + input_bfd, + h->type == STT_FUNC ? "function" : "data", + h->root.root.string); bfd_set_error (bfd_error_bad_value); return FALSE; } @@ -5185,7 +5244,7 @@ bad_return: if (plt_sym_val == NULL) goto bad_return; - for (i = 0; i < count; i++, p++) + for (i = 0; i < count; i++) plt_sym_val[i] = -1; plt_offset = bed->plt->plt_entry_size; @@ -5209,6 +5268,11 @@ bad_return: abort (); plt_sym_val[reloc_index] = plt->vma + plt_offset; plt_offset += bed->plt->plt_entry_size; + + /* PR binutils/18437: Skip extra relocations in the .rel.plt + section. */ + if (plt_offset >= plt->size) + break; } free (plt_contents); @@ -5281,6 +5345,7 @@ elf_i386_add_symbol_hook (bfd * abfd, #define elf_backend_want_plt_sym 0 #define elf_backend_got_header_size 12 #define elf_backend_plt_alignment 4 +#define elf_backend_extern_protected_data 1 /* Support RELA for objdump of prelink objects. */ #define elf_info_to_howto elf_i386_info_to_howto_rel @@ -5360,6 +5425,8 @@ elf_i386_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) #undef TARGET_LITTLE_NAME #define TARGET_LITTLE_NAME "elf32-i386-sol2" +#undef elf_backend_post_process_headers + /* Restore default: we cannot use ELFOSABI_SOLARIS, otherwise ELFOSABI_NONE objects won't be recognized. */ #undef ELF_OSABI @@ -5381,6 +5448,47 @@ elf_i386_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info) #include "elf32-target.h" +/* Intel MCU support. */ + +static bfd_boolean +elf32_iamcu_elf_object_p (bfd *abfd) +{ + /* Set the right machine number for an IAMCU elf32 file. */ + bfd_default_set_arch_mach (abfd, bfd_arch_iamcu, bfd_mach_i386_iamcu); + return TRUE; +} + +#undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM iamcu_elf32_vec +#undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf32-iamcu" +#undef ELF_ARCH +#define ELF_ARCH bfd_arch_iamcu + +#undef ELF_MACHINE_CODE +#define ELF_MACHINE_CODE EM_IAMCU + +#undef ELF_OSABI + +#undef elf32_bed +#define elf32_bed elf32_iamcu_bed + +#undef elf_backend_object_p +#define elf_backend_object_p elf32_iamcu_elf_object_p + +#undef elf_backend_static_tls_alignment + +#undef elf_backend_want_plt_sym +#define elf_backend_want_plt_sym 0 + +#include "elf32-target.h" + +/* Restore defaults. */ +#undef ELF_ARCH +#define ELF_ARCH bfd_arch_i386 +#undef ELF_MACHINE_CODE +#define ELF_MACHINE_CODE EM_386 + /* Native Client support. */ #undef TARGET_LITTLE_SYM diff --git a/bfd/elf32-i860.c b/bfd/elf32-i860.c index 505c1c0..c3dcf53 100644 --- a/bfd/elf32-i860.c +++ b/bfd/elf32-i860.c @@ -264,11 +264,11 @@ static reloc_howto_type elf32_i860_howto_table [] = /* This relocation does nothing. */ HOWTO (R_860_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_860_NONE", /* name */ FALSE, /* partial_inplace */ diff --git a/bfd/elf32-i960.c b/bfd/elf32-i960.c index 0fd00e0..ff51bcd 100644 --- a/bfd/elf32-i960.c +++ b/bfd/elf32-i960.c @@ -83,7 +83,7 @@ elf32_i960_relocate (bfd *abfd ATTRIBUTE_UNUSED, static reloc_howto_type elf_howto_table[]= { - HOWTO (R_960_NONE, 0, 0, 0, FALSE, 0, complain_overflow_bitfield, + HOWTO (R_960_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont, elf32_i960_relocate, "R_960_NONE", TRUE, 0x00000000, 0x00000000, FALSE), EMPTY_HOWTO (1), @@ -136,7 +136,7 @@ elf32_i960_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, /* PR 17521: file: 9609b8d6. */ if (type >= R_960_max) { - _bfd_error_handler (_("%A; invalid i960 reloc number: %d"), abfd, type); + _bfd_error_handler (_("%B: invalid i960 reloc number: %d"), abfd, type); type = 0; } diff --git a/bfd/elf32-ip2k.c b/bfd/elf32-ip2k.c index 755da57..1379446 100644 --- a/bfd/elf32-ip2k.c +++ b/bfd/elf32-ip2k.c @@ -141,7 +141,7 @@ static reloc_howto_type ip2k_elf_howto_table [] = pr) /* pcrel_offset */ /* This reloc does nothing. */ - IP2K_HOWTO (R_IP2K_NONE, 0,2,32, FALSE, 0, "R_IP2K_NONE", 0, 0), + IP2K_HOWTO (R_IP2K_NONE, 0,3,0, FALSE, 0, "R_IP2K_NONE", 0, 0), /* A 16 bit absolute relocation. */ IP2K_HOWTO (R_IP2K_16, 0,1,16, FALSE, 0, "R_IP2K_16", 0, 0xffff), /* A 32 bit absolute relocation. */ @@ -1241,7 +1241,7 @@ ip2k_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_IP2K_max) { - _bfd_error_handler (_("%A: invalid IP2K reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid IP2K reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & ip2k_elf_howto_table [r_type]; diff --git a/bfd/elf32-iq2000.c b/bfd/elf32-iq2000.c index aae9af5..ef43595 100644 --- a/bfd/elf32-iq2000.c +++ b/bfd/elf32-iq2000.c @@ -34,11 +34,11 @@ static reloc_howto_type iq2000_elf_howto_table [] = HOWTO (R_IQ2000_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_IQ2000_NONE", /* name */ FALSE, /* partial_inplace */ @@ -437,7 +437,7 @@ iq2000_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, default: if (r_type >= (unsigned int) R_IQ2000_max) { - _bfd_error_handler (_("%A: invalid IQ2000 reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid IQ2000 reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & iq2000_elf_howto_table [r_type]; diff --git a/bfd/elf32-lm32.c b/bfd/elf32-lm32.c index 9acebe0..0c01e08 100644 --- a/bfd/elf32-lm32.c +++ b/bfd/elf32-lm32.c @@ -262,11 +262,11 @@ static reloc_howto_type lm32_elf_howto_table [] = /* This reloc does nothing. */ HOWTO (R_LM32_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield,/* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_LM32_NONE", /* name */ FALSE, /* partial_inplace */ @@ -590,7 +590,7 @@ lm32_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_LM32_max) { - _bfd_error_handler (_("%A: invalid LM32 reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid LM32 reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &lm32_elf_howto_table[r_type]; diff --git a/bfd/elf32-m32c.c b/bfd/elf32-m32c.c index 3ddab6e..70e9174 100644 --- a/bfd/elf32-m32c.c +++ b/bfd/elf32-m32c.c @@ -40,6 +40,8 @@ void dump_symtab (bfd *, void *, void *); #endif static bfd_boolean m32c_elf_relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info, bfd_boolean *again); +static bfd_reloc_status_type m32c_apply_reloc_24 + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); static reloc_howto_type m32c_elf_howto_table [] = @@ -47,11 +49,11 @@ static reloc_howto_type m32c_elf_howto_table [] = /* This reloc does nothing. */ HOWTO (R_M32C_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_M32C_NONE", /* name */ FALSE, /* partial_inplace */ @@ -83,7 +85,7 @@ static reloc_howto_type m32c_elf_howto_table [] = FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + m32c_apply_reloc_24, /* special_function */ "R_M32C_24", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ @@ -264,7 +266,7 @@ m32c_reloc_type_lookup { unsigned int i; - for (i = ARRAY_SIZE (m32c_reloc_map); --i;) + for (i = ARRAY_SIZE (m32c_reloc_map); i--;) if (m32c_reloc_map [i].bfd_reloc_val == code) return & m32c_elf_howto_table [m32c_reloc_map[i].m32c_reloc_val]; @@ -299,7 +301,7 @@ m32c_info_to_howto_rela r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_M32C_max) { - _bfd_error_handler (_("%A: invalid M32C reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid M32C reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & m32c_elf_howto_table [r_type]; @@ -307,6 +309,48 @@ m32c_info_to_howto_rela +/* Apply R_M32C_24 relocations. We have to do this because it's not a + power-of-two size, and the generic code may think it overruns the + section if it's right at the end. + + Must return something other than bfd_reloc_continue to avoid the + above problem. Typical return values include bfd_reloc_ok or + bfd_reloc_overflow. +*/ + +static bfd_reloc_status_type m32c_apply_reloc_24 (bfd *abfd ATTRIBUTE_UNUSED, + arelent *reloc_entry, + asymbol *symbol, + void *vdata_start ATTRIBUTE_UNUSED, + asection *input_section, + bfd *ibfd ATTRIBUTE_UNUSED, + char **error_msg ATTRIBUTE_UNUSED) +{ + bfd_vma relocation; + bfd_reloc_status_type s; + + s = bfd_elf_generic_reloc (abfd, reloc_entry, symbol, + vdata_start, + input_section, ibfd, error_msg); + if (s != bfd_reloc_continue) + return s; + + /* Get symbol value. (Common symbols are special.) */ + if (bfd_is_com_section (symbol->section)) + relocation = 0; + else + relocation = symbol->value; + + relocation += symbol->section->output_offset; + + /* Add in supplied addend. */ + relocation += reloc_entry->addend; + + reloc_entry->addend = relocation; + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; +} + /* Relocate an M32C 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], @@ -535,9 +579,32 @@ m32c_elf_relocate_section printf ("\n"); } #endif - r = _bfd_final_link_relocate (howto, input_bfd, input_section, - contents, rel->r_offset, relocation, - rel->r_addend); + switch (ELF32_R_TYPE(rel->r_info)) + { + case R_M32C_24: + /* Like m32c_apply_reloc_24, we must handle this one separately. */ + relocation += rel->r_addend; + + /* Sanity check the address. */ + if (rel->r_offset + 3 + > bfd_get_section_limit_octets (input_bfd, input_section)) + r = bfd_reloc_outofrange; + else + { + bfd_put_8 (input_bfd, relocation & 0xff, contents + rel->r_offset); + bfd_put_8 (input_bfd, (relocation >> 8) & 0xff, contents + rel->r_offset + 1); + bfd_put_8 (input_bfd, (relocation >> 16) & 0xff, contents + rel->r_offset + 2); + r = bfd_reloc_ok; + } + + break; + + default: + r = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, relocation, + rel->r_addend); + break; + } if (r != bfd_reloc_ok) { diff --git a/bfd/elf32-m32r.c b/bfd/elf32-m32r.c index 9d74699..85949b1 100644 --- a/bfd/elf32-m32r.c +++ b/bfd/elf32-m32r.c @@ -474,11 +474,11 @@ static reloc_howto_type m32r_elf_howto_table[] = /* This reloc does nothing. */ HOWTO (R_M32R_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_M32R_NONE", /* name */ FALSE, /* partial_inplace */ @@ -1282,7 +1282,7 @@ m32r_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type > (unsigned int) R_M32R_GNU_VTENTRY) { - _bfd_error_handler (_("%A: invalid M32R reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid M32R reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &m32r_elf_howto_table[r_type]; diff --git a/bfd/elf32-m68hc11.c b/bfd/elf32-m68hc11.c index 5cda8f7..b7a728f 100644 --- a/bfd/elf32-m68hc11.c +++ b/bfd/elf32-m68hc11.c @@ -65,8 +65,8 @@ static reloc_howto_type elf_m68hc11_howto_table[] = { /* This reloc does nothing. */ HOWTO (R_M68HC11_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ @@ -386,7 +386,7 @@ m68hc11_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_M68HC11_max) { - _bfd_error_handler (_("%A: invalid M68HC11 reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid M68HC11 reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_m68hc11_howto_table[r_type]; diff --git a/bfd/elf32-m68hc12.c b/bfd/elf32-m68hc12.c index 38e0e30..74361d3 100644 --- a/bfd/elf32-m68hc12.c +++ b/bfd/elf32-m68hc12.c @@ -107,8 +107,8 @@ static reloc_howto_type elf_m68hc11_howto_table[] = { /* This reloc does nothing. */ HOWTO (R_M68HC11_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ @@ -506,7 +506,7 @@ m68hc11_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_M68HC11_max) { - _bfd_error_handler (_("%A: invalid M68HC12 reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid M68HC12 reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_m68hc11_howto_table[r_type]; diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c index 0d04b4e..fad3ec6 100644 --- a/bfd/elf32-m68k.c +++ b/bfd/elf32-m68k.c @@ -31,7 +31,7 @@ elf_m68k_discard_copies (struct elf_link_hash_entry *, void *); static reloc_howto_type howto_table[] = { - HOWTO(R_68K_NONE, 0, 0, 0, FALSE,0, complain_overflow_dont, bfd_elf_generic_reloc, "R_68K_NONE", FALSE, 0, 0x00000000,FALSE), + HOWTO(R_68K_NONE, 0, 3, 0, FALSE,0, complain_overflow_dont, bfd_elf_generic_reloc, "R_68K_NONE", FALSE, 0, 0x00000000,FALSE), HOWTO(R_68K_32, 0, 2,32, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_32", FALSE, 0, 0xffffffff,FALSE), HOWTO(R_68K_16, 0, 1,16, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_16", FALSE, 0, 0x0000ffff,FALSE), HOWTO(R_68K_8, 0, 0, 8, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_8", FALSE, 0, 0x000000ff,FALSE), diff --git a/bfd/elf32-mcore.c b/bfd/elf32-mcore.c index 01b136a..2e6a33b 100644 --- a/bfd/elf32-mcore.c +++ b/bfd/elf32-mcore.c @@ -110,11 +110,11 @@ static reloc_howto_type mcore_elf_howto_raw[] = /* This reloc does nothing. */ HOWTO (R_MCORE_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ NULL, /* special_function */ "R_MCORE_NONE", /* name */ FALSE, /* partial_inplace */ @@ -340,13 +340,22 @@ mcore_elf_info_to_howto (bfd * abfd ATTRIBUTE_UNUSED, arelent * cache_ptr, Elf_Internal_Rela * dst) { + unsigned int r_type; + if (! mcore_elf_howto_table [R_MCORE_PCRELIMM8BY4]) /* Initialize howto table if needed. */ mcore_elf_howto_init (); - BFD_ASSERT (ELF32_R_TYPE (dst->r_info) < (unsigned int) R_MCORE_max); + r_type = ELF32_R_TYPE (dst->r_info); + if (r_type >= R_MCORE_max) + { + (*_bfd_error_handler) (_("%B: unrecognised MCore reloc number: %d"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_MCORE_NONE; + } - cache_ptr->howto = mcore_elf_howto_table [ELF32_R_TYPE (dst->r_info)]; + cache_ptr->howto = mcore_elf_howto_table [r_type]; } /* The RELOCATE_SECTION function is called by the ELF backend linker diff --git a/bfd/elf32-mep.c b/bfd/elf32-mep.c index e3d1bc0..c791884 100644 --- a/bfd/elf32-mep.c +++ b/bfd/elf32-mep.c @@ -30,19 +30,16 @@ /* Private relocation functions. */ #define MEPREL(type, size, bits, right, left, pcrel, overflow, mask) \ - {(unsigned)type, right, size, bits, pcrel, left, overflow, mep_reloc, #type, FALSE, 0, mask, 0 } + {(unsigned)type, right, size, bits, pcrel, left, overflow, bfd_elf_generic_reloc, #type, FALSE, 0, mask, 0 } #define N complain_overflow_dont #define S complain_overflow_signed #define U complain_overflow_unsigned -static bfd_reloc_status_type mep_reloc (bfd *, arelent *, struct bfd_symbol *, - void *, asection *, bfd *, char **); - static reloc_howto_type mep_elf_howto_table [] = { /* type, size, bits, leftshift, rightshift, pcrel, OD/OS/OU, mask. */ - MEPREL (R_MEP_NONE, 0, 0, 0, 0, 0, N, 0), + MEPREL (R_MEP_NONE, 3, 0, 0, 0, 0, N, 0), MEPREL (R_RELC, 0, 0, 0, 0, 0, N, 0), /* MEPRELOC:HOWTO */ /* This section generated from bfd/mep-relocs.pl from include/elf/mep.h. */ @@ -75,20 +72,6 @@ static reloc_howto_type mep_elf_howto_table [] = #undef N #undef S #undef U - -static bfd_reloc_status_type -mep_reloc - (bfd * abfd ATTRIBUTE_UNUSED, - arelent * reloc_entry ATTRIBUTE_UNUSED, - struct bfd_symbol * symbol ATTRIBUTE_UNUSED, - void * data ATTRIBUTE_UNUSED, - asection * input_section ATTRIBUTE_UNUSED, - bfd * output_bfd ATTRIBUTE_UNUSED, - char ** error_message ATTRIBUTE_UNUSED) -{ - return bfd_reloc_ok; -} - #define BFD_RELOC_MEP_NONE BFD_RELOC_NONE @@ -402,7 +385,7 @@ mep_info_to_howto_rela r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= R_MEP_max) { - _bfd_error_handler (_("%A: invalid MEP reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid MEP reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & mep_elf_howto_table [r_type]; diff --git a/bfd/elf32-metag.c b/bfd/elf32-metag.c index dab6bf3..7114747 100644 --- a/bfd/elf32-metag.c +++ b/bfd/elf32-metag.c @@ -142,7 +142,7 @@ static reloc_howto_type elf_metag_howto_table[] = /* No relocation. */ HOWTO (R_METAG_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -898,7 +898,7 @@ metag_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_METAG_MAX) { - _bfd_error_handler (_("%A: invalid METAG reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid METAG reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & elf_metag_howto_table [r_type]; diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c index ab102b3..e84b1b9 100644 --- a/bfd/elf32-microblaze.c +++ b/bfd/elf32-microblaze.c @@ -44,11 +44,11 @@ static reloc_howto_type microblaze_elf_howto_raw[] = /* This reloc does nothing. */ HOWTO (R_MICROBLAZE_NONE, /* Type. */ 0, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 32, /* Bitsize. */ + 3, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ FALSE, /* PC_relative. */ 0, /* Bitpos. */ - complain_overflow_bitfield, /* Complain on overflow. */ + complain_overflow_dont, /* Complain on overflow. */ NULL, /* Special Function. */ "R_MICROBLAZE_NONE", /* Name. */ FALSE, /* Partial Inplace. */ @@ -179,11 +179,11 @@ static reloc_howto_type microblaze_elf_howto_raw[] = /* This reloc does nothing. Used for relaxation. */ HOWTO (R_MICROBLAZE_64_NONE, /* Type. */ 0, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 32, /* Bitsize. */ + 3, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ TRUE, /* PC_relative. */ 0, /* Bitpos. */ - complain_overflow_bitfield, /* Complain on overflow. */ + complain_overflow_dont, /* Complain on overflow. */ NULL, /* Special Function. */ "R_MICROBLAZE_64_NONE",/* Name. */ FALSE, /* Partial Inplace. */ @@ -643,13 +643,22 @@ microblaze_elf_info_to_howto (bfd * abfd ATTRIBUTE_UNUSED, arelent * cache_ptr, Elf_Internal_Rela * dst) { + unsigned int r_type; + if (!microblaze_elf_howto_table [R_MICROBLAZE_32]) /* Initialize howto table if needed. */ microblaze_elf_howto_init (); - BFD_ASSERT (ELF32_R_TYPE (dst->r_info) < (unsigned int) R_MICROBLAZE_max); + r_type = ELF32_R_TYPE (dst->r_info); + if (r_type >= R_MICROBLAZE_max) + { + (*_bfd_error_handler) (_("%B: unrecognised MicroBlaze reloc number: %d"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_MICROBLAZE_NONE; + } - cache_ptr->howto = microblaze_elf_howto_table [ELF32_R_TYPE (dst->r_info)]; + cache_ptr->howto = microblaze_elf_howto_table [r_type]; } /* Microblaze ELF local labels start with 'L.' or '$L', not '.L'. */ diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index 201c41a..fff08e5 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -107,7 +107,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = /* No relocation. */ HOWTO (R_MIPS_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -2204,7 +2204,12 @@ mips_elf32_rtype_to_howto (unsigned int r_type, return &elf_micromips_howto_table_rel[r_type - R_MICROMIPS_min]; if (r_type >= R_MIPS16_min && r_type < R_MIPS16_max) return &elf_mips16_howto_table_rel[r_type - R_MIPS16_min]; - BFD_ASSERT (r_type < (unsigned int) R_MIPS_max); + if (r_type >= (unsigned int) R_MIPS_max) + { + (*_bfd_error_handler) (_("Unrecognised MIPS reloc number: %d"), r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_MIPS_NONE; + } return &elf_mips_howto_table_rel[r_type]; } } diff --git a/bfd/elf32-moxie.c b/bfd/elf32-moxie.c index 51b0cfc..6b4a5ab 100644 --- a/bfd/elf32-moxie.c +++ b/bfd/elf32-moxie.c @@ -34,11 +34,11 @@ static reloc_howto_type moxie_elf_howto_table [] = /* This reloc does nothing. */ HOWTO (R_MOXIE_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MOXIE_NONE", /* name */ FALSE, /* partial_inplace */ @@ -99,7 +99,7 @@ moxie_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, unsigned int i; for (i = sizeof (moxie_reloc_map) / sizeof (moxie_reloc_map[0]); - --i;) + i--;) if (moxie_reloc_map [i].bfd_reloc_val == code) return & moxie_elf_howto_table [moxie_reloc_map[i].moxie_reloc_val]; @@ -133,7 +133,7 @@ moxie_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_MOXIE_max) { - _bfd_error_handler (_("%A: invalid Moxie reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid Moxie reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & moxie_elf_howto_table [r_type]; diff --git a/bfd/elf32-msp430.c b/bfd/elf32-msp430.c index 2157eb0..9e69791 100644 --- a/bfd/elf32-msp430.c +++ b/bfd/elf32-msp430.c @@ -26,15 +26,40 @@ #include "elf-bfd.h" #include "elf/msp430.h" +static bfd_reloc_status_type +rl78_sym_diff_handler (bfd * abfd, + arelent * reloc, + asymbol * sym ATTRIBUTE_UNUSED, + void * addr ATTRIBUTE_UNUSED, + asection * input_sec, + bfd * out_bfd ATTRIBUTE_UNUSED, + char ** error_message ATTRIBUTE_UNUSED) +{ + bfd_size_type octets; + octets = reloc->address * bfd_octets_per_byte (abfd); + + /* Catch the case where bfd_install_relocation would return + bfd_reloc_outofrange because the SYM_DIFF reloc is being used in a very + small section. It does not actually matter if this happens because all + that SYM_DIFF does is compute a (4-byte) value. A second reloc then uses + this value, and it is that reloc that must fit into the section. + + This happens in eg, gcc/testsuite/gcc.c-torture/compile/labels-3.c. */ + if ((octets + bfd_get_reloc_size (reloc->howto)) + > bfd_get_section_limit_octets (abfd, input_sec)) + return bfd_reloc_ok; + return bfd_reloc_continue; +} + static reloc_howto_type elf_msp430_howto_table[] = { HOWTO (R_MSP430_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield,/* complain_on_overflow */ + complain_overflow_dont,/* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MSP430_NONE", /* name */ FALSE, /* partial_inplace */ @@ -185,7 +210,7 @@ static reloc_howto_type elf_msp430_howto_table[] = FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ - NULL, /* special handler. */ + rl78_sym_diff_handler, /* special handler. */ "R_MSP430_SYM_DIFF", /* name */ FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -197,11 +222,11 @@ static reloc_howto_type elf_msp430x_howto_table[] = { HOWTO (R_MSP430_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield,/* complain_on_overflow */ + complain_overflow_dont,/* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MSP430_NONE", /* name */ FALSE, /* partial_inplace */ @@ -488,7 +513,7 @@ static reloc_howto_type elf_msp430x_howto_table[] = FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ - NULL, /* special handler. */ + rl78_sym_diff_handler, /* special handler. */ "R_MSP430X_SYM_DIFF", /* name */ FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -619,7 +644,7 @@ msp430_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, { if (r_type >= (unsigned int) R_MSP430x_max) { - _bfd_error_handler (_("%A: invalid MSP430X reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid MSP430X reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = elf_msp430x_howto_table + r_type; @@ -628,7 +653,7 @@ msp430_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, if (r_type >= (unsigned int) R_MSP430_max) { - _bfd_error_handler (_("%A: invalid MSP430 reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid MSP430 reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_msp430_howto_table[r_type]; @@ -820,14 +845,14 @@ msp430_final_link_relocate (reloc_howto_type * howto, break; case R_MSP430X_PCR20_EXT_ODST: - /* [0,4]+[48,16] = ---F ---- FFFF */ + /* [0,4]+[48,16] = ---F ---- ---- FFFF */ contents += rel->r_offset; srel = (bfd_signed_vma) relocation; if (is_rel_reloc) { bfd_vma addend; addend = (bfd_get_16 (input_bfd, contents) & 0xf) << 16; - addend |= bfd_get_16 (input_bfd, contents+4); + addend |= bfd_get_16 (input_bfd, contents + 6); srel += addend; } @@ -843,14 +868,14 @@ msp430_final_link_relocate (reloc_howto_type * howto, break; case R_MSP430X_ABS20_EXT_SRC: - /* [7,4]+[32,16] = -78- FFFF */ + /* [7,4]+[32,16] = -78- ---- FFFF */ contents += rel->r_offset; srel = (bfd_signed_vma) relocation; if (is_rel_reloc) { bfd_vma addend; addend = (bfd_get_16 (input_bfd, contents) & 0x0780) << 9; - addend |= bfd_get_16 (input_bfd, contents+2); + addend |= bfd_get_16 (input_bfd, contents + 4); srel += addend; } else @@ -879,14 +904,14 @@ msp430_final_link_relocate (reloc_howto_type * howto, break; case R_MSP430X_PCR20_EXT_DST: - /* [0,4]+[32,16] = ---F FFFF */ + /* [0,4]+[32,16] = ---F ---- FFFF */ contents += rel->r_offset; srel = (bfd_signed_vma) relocation; if (is_rel_reloc) { bfd_vma addend; addend = (bfd_get_16 (input_bfd, contents) & 0xf) << 16; - addend |= bfd_get_16 (input_bfd, contents+2); + addend |= bfd_get_16 (input_bfd, contents + 4); srel += addend; } else @@ -902,14 +927,14 @@ msp430_final_link_relocate (reloc_howto_type * howto, break; case R_MSP430X_PCR20_EXT_SRC: - /* [7,4]+32,16] = -78- FFFF */ + /* [7,4]+[32,16] = -78- ---- FFFF */ contents += rel->r_offset; srel = (bfd_signed_vma) relocation; if (is_rel_reloc) { bfd_vma addend; addend = ((bfd_get_16 (input_bfd, contents) & 0x0780) << 9); - addend |= bfd_get_16 (input_bfd, contents+2); + addend |= bfd_get_16 (input_bfd, contents + 4); srel += addend;; } else @@ -936,10 +961,16 @@ msp430_final_link_relocate (reloc_howto_type * howto, break; case R_MSP430X_ABS20_EXT_DST: + /* [0,4]+[32,16] = ---F ---- FFFF */ contents += rel->r_offset; srel = (bfd_signed_vma) relocation; if (is_rel_reloc) - srel += bfd_get_16 (input_bfd, contents) & 0xf; + { + bfd_vma addend; + addend = (bfd_get_16 (input_bfd, contents) & 0xf) << 16; + addend |= bfd_get_16 (input_bfd, contents + 4); + srel += addend; + } else srel += rel->r_addend; bfd_put_16 (input_bfd, (srel & 0xffff), contents + 4); @@ -950,14 +981,14 @@ msp430_final_link_relocate (reloc_howto_type * howto, break; case R_MSP430X_ABS20_EXT_ODST: - /* [0,4]+[48,16] = ---F ---- FFFF */ + /* [0,4]+[48,16] = ---F ---- ---- FFFF */ contents += rel->r_offset; srel = (bfd_signed_vma) relocation; if (is_rel_reloc) { bfd_vma addend; addend = (bfd_get_16 (input_bfd, contents) & 0xf) << 16; - addend |= bfd_get_16 (input_bfd, contents+4); + addend |= bfd_get_16 (input_bfd, contents + 6); srel += addend; } else @@ -970,7 +1001,7 @@ msp430_final_link_relocate (reloc_howto_type * howto, break; case R_MSP430X_ABS20_ADR_SRC: - /* [8,4]+[32,16] = -F-- FFFF */ + /* [8,4]+[16,16] = -F-- FFFF */ contents += rel->r_offset; srel = (bfd_signed_vma) relocation; if (is_rel_reloc) @@ -978,7 +1009,7 @@ msp430_final_link_relocate (reloc_howto_type * howto, bfd_vma addend; addend = ((bfd_get_16 (input_bfd, contents) & 0xf00) << 8); - addend |= bfd_get_16 (input_bfd, contents+2); + addend |= bfd_get_16 (input_bfd, contents + 2); srel += addend; } else @@ -991,14 +1022,14 @@ msp430_final_link_relocate (reloc_howto_type * howto, break; case R_MSP430X_ABS20_ADR_DST: - /* [0,4]+[32,16] = ---F FFFF */ + /* [0,4]+[16,16] = ---F FFFF */ contents += rel->r_offset; srel = (bfd_signed_vma) relocation; if (is_rel_reloc) { bfd_vma addend; addend = ((bfd_get_16 (input_bfd, contents) & 0xf) << 16); - addend |= bfd_get_16 (input_bfd, contents+2); + addend |= bfd_get_16 (input_bfd, contents + 2); srel += addend; } else @@ -1033,14 +1064,14 @@ msp430_final_link_relocate (reloc_howto_type * howto, break; case R_MSP430X_PCR20_CALL: - /* [0,4]+[32,16] = ---F FFFF*/ + /* [0,4]+[16,16] = ---F FFFF*/ contents += rel->r_offset; srel = (bfd_signed_vma) relocation; if (is_rel_reloc) { bfd_vma addend; addend = (bfd_get_16 (input_bfd, contents) & 0xf) << 16; - addend |= bfd_get_16 (input_bfd, contents+2); + addend |= bfd_get_16 (input_bfd, contents + 2); srel += addend; } else @@ -1596,7 +1627,7 @@ msp430_elf_relax_adjust_locals (bfd * abfd, asection * sec, bfd_vma addr, unsigned int sidx = ELF32_R_SYM(irel->r_info); Elf_Internal_Sym *lsym = isym + sidx; - /* Adjust symbols referenced by .sec+0xXX */ + /* Adjust symbols referenced by .sec+0xXX. */ if (irel->r_addend > addr && irel->r_addend < toaddr && sidx < symtab_hdr->sh_info && lsym->st_shndx == sec_shndx) @@ -1656,9 +1687,38 @@ msp430_elf_relax_delete_bytes (bfd * abfd, asection * sec, bfd_vma addr, symtab_hdr = & elf_tdata (abfd)->symtab_hdr; isym = (Elf_Internal_Sym *) symtab_hdr->contents; for (isymend = isym + symtab_hdr->sh_info; isym < isymend; isym++) - if (isym->st_shndx == sec_shndx - && isym->st_value > addr && isym->st_value < toaddr) - isym->st_value -= count; + { + const char * name; + + name = bfd_elf_string_from_elf_section + (abfd, symtab_hdr->sh_link, isym->st_name); + name = (name == NULL || * name == 0) ? bfd_section_name (abfd, sec) : name; + + if (isym->st_shndx != sec_shndx) + continue; + + if (isym->st_value > addr + && (isym->st_value < toaddr + /* We also adjust a symbol at the end of the section if its name is + on the list below. These symbols are used for debug info + generation and they refer to the end of the current section, not + the start of the next section. */ + || (isym->st_value == toaddr + && name != NULL + && (CONST_STRNEQ (name, ".Letext") + || CONST_STRNEQ (name, ".LFE"))))) + { + if (isym->st_value < addr + count) + isym->st_value = addr; + else + isym->st_value -= count; + } + /* Adjust the function symbol's size as well. */ + else if (ELF_ST_TYPE (isym->st_info) == STT_FUNC + && 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) @@ -1674,7 +1734,19 @@ msp430_elf_relax_delete_bytes (bfd * abfd, asection * sec, bfd_vma addr, && sym_hash->root.u.def.section == sec && sym_hash->root.u.def.value > addr && sym_hash->root.u.def.value < toaddr) - sym_hash->root.u.def.value -= count; + { + if (sym_hash->root.u.def.value < addr + count) + sym_hash->root.u.def.value = addr; + else + sym_hash->root.u.def.value -= count; + } + /* Adjust the function symbol's size as well. */ + else if (sym_hash->root.type == bfd_link_hash_defined + && sym_hash->root.u.def.section == sec + && sym_hash->type == STT_FUNC + && 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; @@ -1921,7 +1993,7 @@ msp430_elf_relax_section (bfd * abfd, asection * sec, default: /* Not a conditional branch instruction. */ /* fprintf (stderr, "unrecog: %x\n", opcode); */ - goto error_return; + continue; } /* Note that we've changed the relocs, section contents, etc. */ @@ -2162,6 +2234,7 @@ msp430_elf_relax_section (bfd * abfd, asection * sec, { bfd_vma value = symval; + value -= (sec->output_section->vma + sec->output_offset); value -= irel->r_offset; value += irel->r_addend; diff --git a/bfd/elf32-mt.c b/bfd/elf32-mt.c index 5c9970c..7bfa18e 100644 --- a/bfd/elf32-mt.c +++ b/bfd/elf32-mt.c @@ -48,8 +48,8 @@ static reloc_howto_type mt_elf_howto_table [] = /* This reloc does nothing. */ HOWTO (R_MT_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -238,7 +238,7 @@ mt_info_to_howto_rela r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_MT_max) { - _bfd_error_handler (_("%A: invalid MT reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid MT reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & mt_elf_howto_table [r_type]; diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c index 7f53191..ed4383d 100644 --- a/bfd/elf32-nds32.c +++ b/bfd/elf32-nds32.c @@ -108,10 +108,11 @@ static Elf_Internal_Rela *find_relocs_at_address (Elf_Internal_Rela *, Elf_Internal_Rela *, Elf_Internal_Rela *, enum elf_nds32_reloc_type); static bfd_vma calculate_memory_address - (bfd *, Elf_Internal_Rela *, Elf_Internal_Sym *, Elf_Internal_Shdr *); -static int nds32_get_section_contents (bfd *, asection *, bfd_byte **); +(bfd *, Elf_Internal_Rela *, Elf_Internal_Sym *, Elf_Internal_Shdr *); +static int nds32_get_section_contents (bfd *, asection *, + bfd_byte **, bfd_boolean); static bfd_boolean nds32_elf_ex9_build_hash_table - (bfd *, asection *, struct bfd_link_info *); +(bfd *, asection *, struct bfd_link_info *); static bfd_boolean nds32_elf_ex9_itb_base (struct bfd_link_info *); static void nds32_elf_ex9_import_table (struct bfd_link_info *); static void nds32_elf_ex9_finish (struct bfd_link_info *); @@ -321,11 +322,11 @@ static reloc_howto_type nds32_elf_howto_table[] = /* This reloc does nothing. */ HOWTO (R_NDS32_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_NDS32_NONE", /* name */ FALSE, /* partial_inplace */ @@ -2967,7 +2968,7 @@ nds32_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, r_type = ELF32_R_TYPE (dst->r_info); if (r_type > R_NDS32_GNU_VTENTRY) { - _bfd_error_handler (_("%A: invalid NDS32 reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid NDS32 reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = bfd_elf32_bfd_reloc_type_table_lookup (r_type); @@ -4186,11 +4187,10 @@ nds32_relocate_contents (reloc_howto_type *howto, bfd *input_bfd, switch (size) { default: - case 0: - case 1: - case 8: abort (); break; + case 0: + return bfd_reloc_ok; case 2: x = bfd_getb16 (location); break; @@ -4513,6 +4513,17 @@ nds32_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED, return FALSE; } + if (is_ITB_BASE_set == 0) + { + /* Set the _ITB_BASE_. */ + if (!nds32_elf_ex9_itb_base (info)) + { + (*_bfd_error_handler) (_("%B: error: Cannot set _ITB_BASE_"), + output_bfd); + bfd_set_error (bfd_error_bad_value); + } + } + if (table->target_optimize & NDS32_RELAX_JUMP_IFC_ON) if (!nds32_elf_ifc_reloc ()) (*_bfd_error_handler) (_("error: IFC relocation error.")); @@ -4563,10 +4574,11 @@ nds32_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED, || (r_type >= R_NDS32_INSN16 && r_type <= R_NDS32_25_FIXED_RELA) || r_type == R_NDS32_DATA || r_type == R_NDS32_TRAN - || (r_type >= R_NDS32_LONGCALL4 && r_type <= R_NDS32_LONGJUMP6)) + || (r_type >= R_NDS32_LONGCALL4 && r_type <= R_NDS32_LONGJUMP7)) continue; - /* If we enter the fp-as-gp region. Resolve the address of best fp-base. */ + /* If we enter the fp-as-gp region. Resolve the address + of best fp-base. */ if (ELF32_R_TYPE (rel->r_info) == R_NDS32_RELAX_REGION_BEGIN && (rel->r_addend & R_NDS32_RELAX_REGION_OMIT_FP_FLAG)) { @@ -5947,7 +5959,7 @@ nds32_check_vec_size (bfd *ibfd) /* Get vec_size in file. */ unsigned int flag_t; - nds32_get_section_contents (ibfd, sec_t, &contents); + nds32_get_section_contents (ibfd, sec_t, &contents, TRUE); flag_t = bfd_get_32 (ibfd, contents); /* The value could only be 4 or 16. */ @@ -8141,7 +8153,7 @@ is_convert_32_to_16 (bfd *abfd, asection *sec, offset = reloc->r_offset; - if (!nds32_get_section_contents (abfd, sec, &contents)) + if (!nds32_get_section_contents (abfd, sec, &contents, TRUE)) return FALSE; insn = bfd_getb32 (contents + offset); @@ -8654,7 +8666,7 @@ nds32_elf_relax_delete_blanks (bfd *abfd, asection *sec, if (!(sect->flags & SEC_RELOC)) continue; - nds32_get_section_contents (abfd, sect, &contents); + nds32_get_section_contents (abfd, sect, &contents, TRUE); for (irel = internal_relocs; irel < irelend; irel++) { @@ -8902,7 +8914,8 @@ done_adjust_diff: /* Get the contents of a section. */ static int -nds32_get_section_contents (bfd *abfd, asection *sec, bfd_byte **contents_p) +nds32_get_section_contents (bfd *abfd, asection *sec, + bfd_byte **contents_p, bfd_boolean cache) { /* Get the section contents. */ if (elf_section_data (sec)->this_hdr.contents != NULL) @@ -8911,7 +8924,8 @@ nds32_get_section_contents (bfd *abfd, asection *sec, bfd_byte **contents_p) { if (!bfd_malloc_and_get_section (abfd, sec, contents_p)) return FALSE; - elf_section_data (sec)->this_hdr.contents = *contents_p; + if (cache) + elf_section_data (sec)->this_hdr.contents = *contents_p; } return TRUE; @@ -11816,7 +11830,8 @@ nds32_elf_pick_relax (bfd_boolean init, asection *sec, bfd_boolean *again, struct elf_nds32_link_hash_table *table, struct bfd_link_info *link_info) { - static asection *final_sec; + static asection *final_sec, *first_sec = NULL; + static bfd_boolean normal_again = FALSE; static bfd_boolean set = FALSE; static bfd_boolean first = TRUE; int round_table[] = { @@ -11828,6 +11843,13 @@ nds32_elf_pick_relax (bfd_boolean init, asection *sec, bfd_boolean *again, static int pass = 0; static int relax_round; + /* The new round. */ + if (init && first_sec == sec) + { + set = TRUE; + normal_again = FALSE; + } + if (first) { /* Run an empty run to get the final section. */ @@ -11836,27 +11858,29 @@ nds32_elf_pick_relax (bfd_boolean init, asection *sec, bfd_boolean *again, /* It has to enter relax again because we can not make sure what the final turn is. */ *again = TRUE; + first = FALSE; + first_sec = sec; } - if (!set && *again) + if (!set) { - /* It is reentered when again is FALSE. */ + /* Not reenter yet. */ final_sec = sec; return relax_round; } - /* The second round begins. */ - set = TRUE; - relax_round = round_table[pass]; + if (!init && relax_round == NDS32_RELAX_NORMAL_ROUND && *again) + normal_again = TRUE; + if (!init && final_sec == sec) { switch (relax_round) { case NDS32_RELAX_NORMAL_ROUND: - if (!*again) + if (!normal_again) { /* Normal relaxation done. */ if (table->target_optimize & NDS32_RELAX_JUMP_IFC_ON) @@ -12033,7 +12057,10 @@ nds32_elf_relax_section (bfd *abfd, asection *sec, if (ELF32_R_TYPE (irel->r_info) == R_NDS32_RELAX_ENTRY) { if (irel->r_addend & R_NDS32_RELAX_ENTRY_DISABLE_RELAX_FLAG) - return TRUE; + { + nds32_elf_pick_relax (FALSE, sec, again, table, link_info); + return TRUE; + } if (irel->r_addend & R_NDS32_RELAX_ENTRY_OPTIMIZE_FLAG) optimize = 1; @@ -12045,7 +12072,7 @@ nds32_elf_relax_section (bfd *abfd, asection *sec, load_store_relax = table->load_store_relax; /* Get symbol table and section content. */ - if (!nds32_get_section_contents (abfd, sec, &contents) + if (!nds32_get_section_contents (abfd, sec, &contents, TRUE) || !nds32_get_local_syms (abfd, sec, &isymbuf)) goto error_return; @@ -12731,7 +12758,7 @@ nds32_relax_fp_as_gp (struct bfd_link_info *link_info, symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - if (!nds32_get_section_contents (abfd, sec, &contents) + if (!nds32_get_section_contents (abfd, sec, &contents, TRUE) || !nds32_get_local_syms (abfd, sec, &isymbuf)) return FALSE; @@ -12868,7 +12895,7 @@ nds32_fag_remove_unused_fpbase (bfd *abfd, asection *sec, */ symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - nds32_get_section_contents (abfd, sec, &contents); + nds32_get_section_contents (abfd, sec, &contents, TRUE); for (irel = internal_relocs; irel < irelend; irel++) { @@ -12970,7 +12997,7 @@ nds32_elf_get_relocated_section_contents (bfd *abfd, return NULL; /* Read in the section. */ - if (!nds32_get_section_contents (input_bfd, input_section, &data)) + if (!nds32_get_section_contents (input_bfd, input_section, &data, FALSE)) return NULL; if (reloc_size == 0) @@ -13221,7 +13248,7 @@ nds32_elf_ifc_calc (struct bfd_link_info *info, && !(irel->r_addend & R_NDS32_RELAX_ENTRY_IFC_FLAG))) return TRUE; - if (!nds32_get_section_contents (abfd, sec, &contents)) + if (!nds32_get_section_contents (abfd, sec, &contents, TRUE)) return FALSE; table = nds32_elf_hash_table (info); @@ -13463,7 +13490,7 @@ nds32_elf_ifc_replace (struct bfd_link_info *info) irelend = internal_relocs + ptr->sec->reloc_count; if (!nds32_get_section_contents (ptr->sec->owner, ptr->sec, - &contents)) + &contents, TRUE)) return FALSE; while (irel_ptr) @@ -13520,8 +13547,9 @@ nds32_elf_ifc_replace (struct bfd_link_info *info) (irel_ptr->sec->owner, irel_ptr->sec, NULL, NULL, TRUE /* keep_memory */); irelend = internal_relocs + irel_ptr->sec->reloc_count; - if (!nds32_get_section_contents - (irel_ptr->sec->owner, irel_ptr->sec, &contents)) + if (!nds32_get_section_contents (irel_ptr->sec->owner, + irel_ptr->sec, &contents, + TRUE)) return FALSE; irel = irel_ptr->irel; @@ -13607,7 +13635,8 @@ nds32_elf_ifc_reloc (void) if (ptr->h == NULL) { /* Local symbol. */ - if (!nds32_get_section_contents (ptr->sec->owner, ptr->sec, &contents)) + if (!nds32_get_section_contents (ptr->sec->owner, ptr->sec, + &contents, TRUE)) return FALSE; while (irel_ptr) @@ -13705,7 +13734,7 @@ nds32_elf_ifc_reloc (void) return FALSE; } if (!nds32_get_section_contents - (irel_ptr->sec->owner, irel_ptr->sec, &contents)) + (irel_ptr->sec->owner, irel_ptr->sec, &contents, TRUE)) return FALSE; insn16 = INSN_IFCALL9 | (relocation >> 1); bfd_putb16 (insn16, contents + irel_ptr->irel->r_offset); @@ -14160,7 +14189,7 @@ nds32_elf_ex9_build_itable (struct bfd_link_info *link_info) table_sec = bfd_get_section_by_name (it_abfd, ".ex9.itable"); if (table_sec != NULL) { - if (!nds32_get_section_contents (it_abfd, table_sec, &contents)) + if (!nds32_get_section_contents (it_abfd, table_sec, &contents, TRUE)) return; for (ptr = ex9_insn_head; ptr !=NULL ; ptr = ptr->next) @@ -14506,7 +14535,7 @@ nds32_elf_ex9_replace_instruction (struct bfd_link_info *info, bfd *abfd, asecti /* Load section instructions, relocations, and symbol table. */ - if (!nds32_get_section_contents (abfd, sec, &contents) + if (!nds32_get_section_contents (abfd, sec, &contents, TRUE) || !nds32_get_local_syms (abfd, sec, &isym)) return FALSE; internal_relocs = @@ -15098,7 +15127,7 @@ nds32_elf_ex9_reloc_jmp (struct bfd_link_info *link_info) if (table_sec->size == 0) return; - if (!nds32_get_section_contents (it_abfd, table_sec, &contents)) + if (!nds32_get_section_contents (it_abfd, table_sec, &contents, TRUE)) return; } } @@ -15237,7 +15266,7 @@ nds32_elf_ex9_reloc_jmp (struct bfd_link_info *link_info) { if (!nds32_get_section_contents (fix_ptr->sec->owner, fix_ptr->sec, - &source_contents)) + &source_contents, TRUE)) (*_bfd_error_handler) (_("Linker: error cannot fixed ex9 relocation \n")); if (temp_ptr->order < 32) @@ -15319,7 +15348,7 @@ nds32_elf_ex9_build_hash_table (bfd *abfd, asection *sec, sym_hashes = elf_sym_hashes (abfd); /* Load section instructions, relocations, and symbol table. */ - if (!nds32_get_section_contents (abfd, sec, &contents)) + if (!nds32_get_section_contents (abfd, sec, &contents, TRUE)) return FALSE; internal_relocs = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL, diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c index 5877d8f..e5b7763 100644 --- a/bfd/elf32-nios2.c +++ b/bfd/elf32-nios2.c @@ -75,8 +75,662 @@ extern const bfd_target nios2_elf32_be_vec; #define TP_OFFSET 0x7000 #define DTP_OFFSET 0x8000 -/* The relocation table used for SHT_REL sections. */ -static reloc_howto_type elf_nios2_howto_table_rel[] = { +/* The relocation tables used for SHT_REL sections. There are separate + tables for R1 and R2 encodings. */ +static reloc_howto_type elf_nios2_r1_howto_table_rel[] = { + /* No relocation. */ + HOWTO (R_NIOS2_NONE, /* type */ + 0, /* rightshift */ + 3, /* 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_NIOS2_NONE", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* 16-bit signed immediate relocation. */ + HOWTO (R_NIOS2_S16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 6, /* bitpos */ + complain_overflow_signed, /* complain on overflow */ + bfd_elf_generic_reloc, /* special function */ + "R_NIOS2_S16", /* name */ + FALSE, /* partial_inplace */ + 0x003fffc0, /* src_mask */ + 0x003fffc0, /* dest_mask */ + FALSE), /* pcrel_offset */ + + /* 16-bit unsigned immediate relocation. */ + HOWTO (R_NIOS2_U16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 6, /* bitpos */ + complain_overflow_unsigned, /* complain on overflow */ + bfd_elf_generic_reloc, /* special function */ + "R_NIOS2_U16", /* name */ + FALSE, /* partial_inplace */ + 0x003fffc0, /* src_mask */ + 0x003fffc0, /* dest_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_NIOS2_PCREL16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + TRUE, /* pc_relative */ + 6, /* bitpos */ + complain_overflow_signed, /* complain on overflow */ + nios2_elf32_pcrel16_relocate, /* special function */ + "R_NIOS2_PCREL16", /* name */ + FALSE, /* partial_inplace */ + 0x003fffc0, /* src_mask */ + 0x003fffc0, /* dest_mask */ + TRUE), /* pcrel_offset */ + + HOWTO (R_NIOS2_CALL26, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 26, /* bitsize */ + FALSE, /* pc_relative */ + 6, /* bitpos */ + complain_overflow_dont, /* complain on overflow */ + nios2_elf32_call26_relocate, /* special function */ + "R_NIOS2_CALL26", /* name */ + FALSE, /* partial_inplace */ + 0xffffffc0, /* src_mask */ + 0xffffffc0, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_NIOS2_IMM5, + 0, + 2, + 5, + FALSE, + 6, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_IMM5", + FALSE, + 0x000007c0, + 0x000007c0, + FALSE), + + HOWTO (R_NIOS2_CACHE_OPX, + 0, + 2, + 5, + FALSE, + 22, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_CACHE_OPX", + FALSE, + 0x07c00000, + 0x07c00000, + FALSE), + + HOWTO (R_NIOS2_IMM6, + 0, + 2, + 6, + FALSE, + 6, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_IMM6", + FALSE, + 0x00000fc0, + 0x00000fc0, + FALSE), + + HOWTO (R_NIOS2_IMM8, + 0, + 2, + 8, + FALSE, + 6, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_IMM8", + FALSE, + 0x00003fc0, + 0x00003fc0, + FALSE), + + HOWTO (R_NIOS2_HI16, + 0, + 2, + 32, + FALSE, + 6, + complain_overflow_dont, + nios2_elf32_hi16_relocate, + "R_NIOS2_HI16", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_LO16, + 0, + 2, + 32, + FALSE, + 6, + complain_overflow_dont, + nios2_elf32_lo16_relocate, + "R_NIOS2_LO16", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_HIADJ16, + 0, + 2, + 32, + FALSE, + 6, + complain_overflow_dont, + nios2_elf32_hiadj16_relocate, + "R_NIOS2_HIADJ16", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_BFD_RELOC_32, + 0, + 2, /* long */ + 32, + FALSE, + 0, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_BFD_RELOC32", + FALSE, + 0xffffffff, + 0xffffffff, + FALSE), + + HOWTO (R_NIOS2_BFD_RELOC_16, + 0, + 1, /* short */ + 16, + FALSE, + 0, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_BFD_RELOC16", + FALSE, + 0x0000ffff, + 0x0000ffff, + FALSE), + + HOWTO (R_NIOS2_BFD_RELOC_8, + 0, + 0, /* byte */ + 8, + FALSE, + 0, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_BFD_RELOC8", + FALSE, + 0x000000ff, + 0x000000ff, + FALSE), + + HOWTO (R_NIOS2_GPREL, + 0, + 2, + 32, + FALSE, + 6, + complain_overflow_dont, + nios2_elf32_gprel_relocate, + "R_NIOS2_GPREL", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_GNU_VTINHERIT, + 0, + 2, /* short */ + 0, + FALSE, + 0, + complain_overflow_dont, + NULL, + "R_NIOS2_GNU_VTINHERIT", + FALSE, + 0, + 0, + FALSE), + + HOWTO (R_NIOS2_GNU_VTENTRY, + 0, + 2, /* byte */ + 0, + FALSE, + 0, + complain_overflow_dont, + _bfd_elf_rel_vtable_reloc_fn, + "R_NIOS2_GNU_VTENTRY", + FALSE, + 0, + 0, + FALSE), + + HOWTO (R_NIOS2_UJMP, + 0, + 2, + 32, + FALSE, + 6, + complain_overflow_dont, + nios2_elf32_ujmp_relocate, + "R_NIOS2_UJMP", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_CJMP, + 0, + 2, + 32, + FALSE, + 6, + complain_overflow_dont, + nios2_elf32_cjmp_relocate, + "R_NIOS2_CJMP", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_CALLR, + 0, + 2, + 32, + FALSE, + 6, + complain_overflow_dont, + nios2_elf32_callr_relocate, + "R_NIOS2_CALLR", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_ALIGN, + 0, + 2, + 0, + FALSE, + 0, + complain_overflow_dont, + nios2_elf32_ignore_reloc, + "R_NIOS2_ALIGN", + FALSE, + 0, + 0, + TRUE), + + + HOWTO (R_NIOS2_GOT16, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_GOT16", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_CALL16, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_CALL16", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_GOTOFF_LO, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_GOTOFF_LO", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_GOTOFF_HA, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_GOTOFF_HA", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_PCREL_LO, + 0, + 2, + 16, + TRUE, + 6, + complain_overflow_dont, + nios2_elf32_pcrel_lo16_relocate, + "R_NIOS2_PCREL_LO", + FALSE, + 0x003fffc0, + 0x003fffc0, + TRUE), + + HOWTO (R_NIOS2_PCREL_HA, + 0, + 2, + 16, + FALSE, /* This is a PC-relative relocation, but we need to subtract + PC ourselves before the HIADJ. */ + 6, + complain_overflow_dont, + nios2_elf32_pcrel_hiadj16_relocate, + "R_NIOS2_PCREL_HA", + FALSE, + 0x003fffc0, + 0x003fffc0, + TRUE), + + HOWTO (R_NIOS2_TLS_GD16, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_TLS_GD16", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_TLS_LDM16, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_TLS_LDM16", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_TLS_LDO16, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_TLS_LDO16", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_TLS_IE16, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_TLS_IE16", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_TLS_LE16, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_bitfield, + bfd_elf_generic_reloc, + "R_NIOS2_TLS_LE16", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_TLS_DTPMOD, + 0, + 2, + 32, + FALSE, + 0, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_TLS_DTPMOD", + FALSE, + 0xffffffff, + 0xffffffff, + FALSE), + + HOWTO (R_NIOS2_TLS_DTPREL, + 0, + 2, + 32, + FALSE, + 0, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_TLS_DTPREL", + FALSE, + 0xffffffff, + 0xffffffff, + FALSE), + + HOWTO (R_NIOS2_TLS_TPREL, + 0, + 2, + 32, + FALSE, + 0, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_TLS_TPREL", + FALSE, + 0xffffffff, + 0xffffffff, + FALSE), + + HOWTO (R_NIOS2_COPY, + 0, + 2, + 32, + FALSE, + 0, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_COPY", + FALSE, + 0, + 0, + FALSE), + + HOWTO (R_NIOS2_GLOB_DAT, + 0, + 2, + 32, + FALSE, + 0, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_GLOB_DAT", + FALSE, + 0xffffffff, + 0xffffffff, + FALSE), + + HOWTO (R_NIOS2_JUMP_SLOT, + 0, + 2, + 32, + FALSE, + 0, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_JUMP_SLOT", + FALSE, + 0xffffffff, + 0xffffffff, + FALSE), + + HOWTO (R_NIOS2_RELATIVE, + 0, + 2, + 32, + FALSE, + 0, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_RELATIVE", + FALSE, + 0xffffffff, + 0xffffffff, + FALSE), + + HOWTO (R_NIOS2_GOTOFF, + 0, + 2, + 32, + FALSE, + 0, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_GOTOFF", + FALSE, + 0xffffffff, + 0xffffffff, + FALSE), + + HOWTO (R_NIOS2_CALL26_NOAT, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 26, /* bitsize */ + FALSE, /* pc_relative */ + 6, /* bitpos */ + complain_overflow_dont, /* complain on overflow */ + nios2_elf32_call26_relocate, /* special function */ + "R_NIOS2_CALL26_NOAT", /* name */ + FALSE, /* partial_inplace */ + 0xffffffc0, /* src_mask */ + 0xffffffc0, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_NIOS2_GOT_LO, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_GOT_LO", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_GOT_HA, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_GOT_HA", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_CALL_LO, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_CALL_LO", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + + HOWTO (R_NIOS2_CALL_HA, + 0, + 2, + 16, + FALSE, + 6, + complain_overflow_dont, + bfd_elf_generic_reloc, + "R_NIOS2_CALL_HA", + FALSE, + 0x003fffc0, + 0x003fffc0, + FALSE), + +/* Add other relocations here. */ +}; + +static reloc_howto_type elf_nios2_r2_howto_table_rel[] = { /* No relocation. */ HOWTO (R_NIOS2_NONE, /* type */ 0, /* rightshift */ @@ -98,13 +752,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ FALSE, /* pc_relative */ - 6, /* bitpos */ + 16, /* bitpos */ complain_overflow_signed, /* complain on overflow */ bfd_elf_generic_reloc, /* special function */ "R_NIOS2_S16", /* name */ FALSE, /* partial_inplace */ - 0x003fffc0, /* src_mask */ - 0x003fffc0, /* dest_mask */ + 0xffff0000, /* src_mask */ + 0xffff0000, /* dest_mask */ FALSE), /* pcrel_offset */ /* 16-bit unsigned immediate relocation. */ @@ -113,13 +767,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ FALSE, /* pc_relative */ - 6, /* bitpos */ + 16, /* bitpos */ complain_overflow_unsigned, /* complain on overflow */ bfd_elf_generic_reloc, /* special function */ "R_NIOS2_U16", /* name */ FALSE, /* partial_inplace */ - 0x003fffc0, /* src_mask */ - 0x003fffc0, /* dest_mask */ + 0xffff0000, /* src_mask */ + 0xffff0000, /* dest_mask */ FALSE), /* pcrel_offset */ HOWTO (R_NIOS2_PCREL16, /* type */ @@ -127,13 +781,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ TRUE, /* pc_relative */ - 6, /* bitpos */ + 16, /* bitpos */ complain_overflow_signed, /* complain on overflow */ nios2_elf32_pcrel16_relocate, /* special function */ "R_NIOS2_PCREL16", /* name */ FALSE, /* partial_inplace */ - 0x003fffc0, /* src_mask */ - 0x003fffc0, /* dest_mask */ + 0xffff0000, /* src_mask */ + 0xffff0000, /* dest_mask */ TRUE), /* pcrel_offset */ HOWTO (R_NIOS2_CALL26, /* type */ @@ -155,13 +809,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 5, FALSE, - 6, + 21, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_IMM5", FALSE, - 0x000007c0, - 0x000007c0, + 0x03e00000, + 0x03e00000, FALSE), HOWTO (R_NIOS2_CACHE_OPX, @@ -169,13 +823,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 5, FALSE, - 22, + 11, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_CACHE_OPX", FALSE, - 0x07c00000, - 0x07c00000, + 0x0000f800, + 0x0000f800, FALSE), HOWTO (R_NIOS2_IMM6, @@ -183,13 +837,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 6, FALSE, - 6, + 26, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_IMM6", FALSE, - 0x00000fc0, - 0x00000fc0, + 0xfc000000, + 0xfc000000, FALSE), HOWTO (R_NIOS2_IMM8, @@ -197,13 +851,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 8, FALSE, - 6, + 24, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_IMM8", FALSE, - 0x00003fc0, - 0x00003fc0, + 0xff000000, + 0xff000000, FALSE), HOWTO (R_NIOS2_HI16, @@ -211,13 +865,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 32, FALSE, - 6, + 16, complain_overflow_dont, nios2_elf32_hi16_relocate, "R_NIOS2_HI16", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_LO16, @@ -225,13 +879,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 32, FALSE, - 6, + 16, complain_overflow_dont, nios2_elf32_lo16_relocate, "R_NIOS2_LO16", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_HIADJ16, @@ -239,13 +893,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 32, FALSE, - 6, + 16, complain_overflow_dont, nios2_elf32_hiadj16_relocate, "R_NIOS2_HIADJ16", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_BFD_RELOC_32, @@ -295,13 +949,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 32, FALSE, - 6, + 16, complain_overflow_dont, nios2_elf32_gprel_relocate, "R_NIOS2_GPREL", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_GNU_VTINHERIT, @@ -337,13 +991,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 32, FALSE, - 6, + 16, complain_overflow_dont, nios2_elf32_ujmp_relocate, "R_NIOS2_UJMP", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_CJMP, @@ -351,13 +1005,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 32, FALSE, - 6, + 16, complain_overflow_dont, nios2_elf32_cjmp_relocate, "R_NIOS2_CJMP", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_CALLR, @@ -365,13 +1019,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 32, FALSE, - 6, + 16, complain_overflow_dont, nios2_elf32_callr_relocate, "R_NIOS2_CALLR", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_ALIGN, @@ -388,19 +1042,18 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 0, TRUE), - HOWTO (R_NIOS2_GOT16, 0, 2, 16, FALSE, - 6, + 16, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_GOT16", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_CALL16, @@ -408,13 +1061,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_CALL16", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_GOTOFF_LO, @@ -422,13 +1075,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_dont, bfd_elf_generic_reloc, "R_NIOS2_GOTOFF_LO", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_GOTOFF_HA, @@ -436,13 +1089,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_dont, bfd_elf_generic_reloc, "R_NIOS2_GOTOFF_HA", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_PCREL_LO, @@ -450,13 +1103,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, TRUE, - 6, + 16, complain_overflow_dont, nios2_elf32_pcrel_lo16_relocate, "R_NIOS2_PCREL_LO", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, TRUE), HOWTO (R_NIOS2_PCREL_HA, @@ -465,13 +1118,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 16, FALSE, /* This is a PC-relative relocation, but we need to subtract PC ourselves before the HIADJ. */ - 6, + 16, complain_overflow_dont, nios2_elf32_pcrel_hiadj16_relocate, "R_NIOS2_PCREL_HA", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, TRUE), HOWTO (R_NIOS2_TLS_GD16, @@ -479,13 +1132,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_TLS_GD16", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_TLS_LDM16, @@ -493,13 +1146,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_TLS_LDM16", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_TLS_LDO16, @@ -507,13 +1160,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_TLS_LDO16", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_TLS_IE16, @@ -521,13 +1174,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_TLS_IE16", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_TLS_LE16, @@ -535,13 +1188,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_NIOS2_TLS_LE16", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_TLS_DTPMOD, @@ -675,13 +1328,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_dont, bfd_elf_generic_reloc, "R_NIOS2_GOT_LO", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_GOT_HA, @@ -689,13 +1342,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_dont, bfd_elf_generic_reloc, "R_NIOS2_GOT_HA", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_CALL_LO, @@ -703,13 +1356,13 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_dont, bfd_elf_generic_reloc, "R_NIOS2_CALL_LO", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, FALSE), HOWTO (R_NIOS2_CALL_HA, @@ -717,43 +1370,247 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = { 2, 16, FALSE, - 6, + 16, complain_overflow_dont, bfd_elf_generic_reloc, "R_NIOS2_CALL_HA", FALSE, - 0x003fffc0, - 0x003fffc0, + 0xffff0000, + 0xffff0000, + FALSE), + + HOWTO (R_NIOS2_R2_S12, + 0, + 2, + 12, + FALSE, + 16, + complain_overflow_signed, + bfd_elf_generic_reloc, + "R_NIOS2_R2_S12", + FALSE, + 0x0fff0000, + 0x0fff0000, + FALSE), + + HOWTO (R_NIOS2_R2_I10_1_PCREL, + 1, + 1, + 10, + TRUE, + 6, + complain_overflow_signed, + bfd_elf_generic_reloc, /* FIXME? */ + "R_NIOS2_R2_I10_1_PCREL", + FALSE, + 0xffc0, + 0xffc0, + TRUE), + + HOWTO (R_NIOS2_R2_T1I7_1_PCREL, + 1, + 1, + 7, + TRUE, + 9, + complain_overflow_signed, + bfd_elf_generic_reloc, /* FIXME? */ + "R_NIOS2_R2_T1I7_1_PCREL", + FALSE, + 0xfe00, + 0xfe00, + TRUE), + + HOWTO (R_NIOS2_R2_T1I7_2, + 2, + 1, + 7, + FALSE, + 9, + complain_overflow_unsigned, + bfd_elf_generic_reloc, + "R_NIOS2_R2_T1I7_2", + FALSE, + 0xfe00, + 0xfe00, + FALSE), + + HOWTO (R_NIOS2_R2_T2I4, + 0, + 1, + 4, + FALSE, + 12, + complain_overflow_unsigned, + bfd_elf_generic_reloc, + "R_NIOS2_R2_T2I4", + FALSE, + 0xf000, + 0xf000, + FALSE), + + HOWTO (R_NIOS2_R2_T2I4_1, + 1, + 1, + 4, + FALSE, + 12, + complain_overflow_unsigned, + bfd_elf_generic_reloc, + "R_NIOS2_R2_T2I4_1", + FALSE, + 0xf000, + 0xf000, + FALSE), + + HOWTO (R_NIOS2_R2_T2I4_2, + 2, + 1, + 4, + FALSE, + 12, + complain_overflow_unsigned, + bfd_elf_generic_reloc, + "R_NIOS2_R2_T2I4_2", + FALSE, + 0xf000, + 0xf000, + FALSE), + + HOWTO (R_NIOS2_R2_X1I7_2, + 2, + 1, + 7, + FALSE, + 6, + complain_overflow_unsigned, + bfd_elf_generic_reloc, + "R_NIOS2_R2_X1I7_2", + FALSE, + 0x1fc0, + 0x1fc0, + FALSE), + + HOWTO (R_NIOS2_R2_X2L5, + 0, + 1, + 5, + FALSE, + 6, + complain_overflow_unsigned, + bfd_elf_generic_reloc, + "R_NIOS2_R2_X2L5", + FALSE, + 0x07c0, + 0x07c0, + FALSE), + + HOWTO (R_NIOS2_R2_F1I5_2, + 2, + 1, + 5, + FALSE, + 6, + complain_overflow_unsigned, + bfd_elf_generic_reloc, + "R_NIOS2_R2_F1L5_2", + FALSE, + 0x07c0, + 0x07c0, + FALSE), + + HOWTO (R_NIOS2_R2_L5I4X1, + 2, + 1, + 4, + FALSE, + 6, + complain_overflow_unsigned, + bfd_elf_generic_reloc, + "R_NIOS2_R2_L5I4X1", + FALSE, + 0x03c0, + 0x03c0, FALSE), + HOWTO (R_NIOS2_R2_T1X1I6, + 0, + 1, + 6, + FALSE, + 9, + complain_overflow_unsigned, + bfd_elf_generic_reloc, + "R_NIOS2_R2_T1X1I6", + FALSE, + 0x7e00, + 0x7e00, + FALSE), + + HOWTO (R_NIOS2_R2_T1X1I6_2, + 2, + 2, + 6, + FALSE, + 9, + complain_overflow_unsigned, + bfd_elf_generic_reloc, + "R_NIOS2_R2_T1I1X6_2", + FALSE, + 0x7e00, + 0x7e00, + FALSE), + /* Add other relocations here. */ }; static unsigned char elf_code_to_howto_index[R_NIOS2_ILLEGAL + 1]; + +/* Return true if producing output for a R2 BFD. */ +#define BFD_IS_R2(abfd) (bfd_get_mach (abfd) == bfd_mach_nios2r2) + /* Return the howto for relocation RTYPE. */ static reloc_howto_type * -lookup_howto (unsigned int rtype) +lookup_howto (unsigned int rtype, bfd *abfd) { static int initialized = 0; int i; - int howto_tbl_size = (int) (sizeof (elf_nios2_howto_table_rel) - / sizeof (elf_nios2_howto_table_rel[0])); + /* R2 relocations are a superset of R1, so use that for the lookup + table. */ + int r1_howto_tbl_size = (int) (sizeof (elf_nios2_r1_howto_table_rel) + / sizeof (elf_nios2_r1_howto_table_rel[0])); + int r2_howto_tbl_size = (int) (sizeof (elf_nios2_r2_howto_table_rel) + / sizeof (elf_nios2_r2_howto_table_rel[0])); if (!initialized) { initialized = 1; memset (elf_code_to_howto_index, 0xff, sizeof (elf_code_to_howto_index)); - for (i = 0; i < howto_tbl_size; i++) - elf_code_to_howto_index[elf_nios2_howto_table_rel[i].type] = i; + for (i = 0; i < r2_howto_tbl_size; i++) + { + elf_code_to_howto_index[elf_nios2_r2_howto_table_rel[i].type] = i; + if (i < r1_howto_tbl_size) + BFD_ASSERT (elf_nios2_r2_howto_table_rel[i].type + == elf_nios2_r1_howto_table_rel[i].type); + } } BFD_ASSERT (rtype <= R_NIOS2_ILLEGAL); i = elf_code_to_howto_index[rtype]; - if (i >= howto_tbl_size) - return 0; - return elf_nios2_howto_table_rel + i; + if (BFD_IS_R2 (abfd)) + { + if (i >= r2_howto_tbl_size) + return 0; + return elf_nios2_r2_howto_table_rel + i; + } + else + { + if (i >= r1_howto_tbl_size) + return 0; + return elf_nios2_r1_howto_table_rel + i; + } } /* Map for converting BFD reloc types to Nios II reloc types. */ @@ -764,6 +1621,7 @@ struct elf_reloc_map }; static const struct elf_reloc_map nios2_reloc_map[] = { + {BFD_RELOC_NONE, R_NIOS2_NONE}, {BFD_RELOC_NIOS2_S16, R_NIOS2_S16}, {BFD_RELOC_NIOS2_U16, R_NIOS2_U16}, {BFD_RELOC_16_PCREL, R_NIOS2_PCREL16}, @@ -809,6 +1667,19 @@ static const struct elf_reloc_map nios2_reloc_map[] = { {BFD_RELOC_NIOS2_GOT_HA, R_NIOS2_GOT_HA}, {BFD_RELOC_NIOS2_CALL_LO, R_NIOS2_CALL_LO}, {BFD_RELOC_NIOS2_CALL_HA, R_NIOS2_CALL_HA}, + {BFD_RELOC_NIOS2_R2_S12, R_NIOS2_R2_S12}, + {BFD_RELOC_NIOS2_R2_I10_1_PCREL, R_NIOS2_R2_I10_1_PCREL}, + {BFD_RELOC_NIOS2_R2_T1I7_1_PCREL, R_NIOS2_R2_T1I7_1_PCREL}, + {BFD_RELOC_NIOS2_R2_T1I7_2, R_NIOS2_R2_T1I7_2}, + {BFD_RELOC_NIOS2_R2_T2I4, R_NIOS2_R2_T2I4}, + {BFD_RELOC_NIOS2_R2_T2I4_1, R_NIOS2_R2_T2I4_1}, + {BFD_RELOC_NIOS2_R2_T2I4_2, R_NIOS2_R2_T2I4_2}, + {BFD_RELOC_NIOS2_R2_X1I7_2, R_NIOS2_R2_X1I7_2}, + {BFD_RELOC_NIOS2_R2_X2L5, R_NIOS2_R2_X2L5}, + {BFD_RELOC_NIOS2_R2_F1I5_2, R_NIOS2_R2_F1I5_2}, + {BFD_RELOC_NIOS2_R2_L5I4X1, R_NIOS2_R2_L5I4X1}, + {BFD_RELOC_NIOS2_R2_T1X1I6, R_NIOS2_R2_T1X1I6}, + {BFD_RELOC_NIOS2_R2_T1X1I6_2, R_NIOS2_R2_T1X1I6_2}, }; enum elf32_nios2_stub_type @@ -2037,50 +2908,127 @@ nios2_elf32_build_stubs (struct bfd_link_info *info) } +#define is_nios2_elf(bfd) \ + (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ + && elf_object_id (bfd) == NIOS2_ELF_DATA) + +/* Merge backend specific data from an object file to the output + object file when linking. */ + +static bfd_boolean +nios2_elf32_merge_private_bfd_data (bfd *ibfd, bfd *obfd) +{ + flagword old_flags; + flagword new_flags; + + if (!is_nios2_elf (ibfd) || !is_nios2_elf (obfd)) + return TRUE; + + /* Check if we have the same endianness. */ + if (! _bfd_generic_verify_endian_match (ibfd, obfd)) + return 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; + + switch (new_flags) + { + default: + case EF_NIOS2_ARCH_R1: + bfd_default_set_arch_mach (obfd, bfd_arch_nios2, bfd_mach_nios2r1); + break; + case EF_NIOS2_ARCH_R2: + if (bfd_big_endian (ibfd)) + { + (*_bfd_error_handler) + (_("error: %B: Big-endian R2 is not supported."), ibfd); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + bfd_default_set_arch_mach (obfd, bfd_arch_nios2, bfd_mach_nios2r2); + break; + } + } + + /* Incompatible flags. */ + else if (new_flags != old_flags) + { + /* So far, the only incompatible flags denote incompatible + architectures. */ + (*_bfd_error_handler) + (_("error: %B: Conflicting CPU architectures %d/%d"), + ibfd, new_flags, old_flags); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + + /* Merge Tag_compatibility attributes and any common GNU ones. */ + _bfd_elf_merge_object_attributes (ibfd, obfd); + + return TRUE; +} + + /* Implement bfd_elf32_bfd_reloc_type_lookup: Given a BFD reloc type, return a howto structure. */ static reloc_howto_type * -nios2_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, +nios2_elf32_bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code) { int i; + for (i = 0; i < (int) (sizeof (nios2_reloc_map) / sizeof (struct elf_reloc_map)); ++i) if (nios2_reloc_map[i].bfd_val == code) - return &elf_nios2_howto_table_rel[(int) nios2_reloc_map[i].elf_val]; + return lookup_howto (nios2_reloc_map[i].elf_val, abfd); return NULL; } /* Implement bfd_elf32_bfd_reloc_name_lookup: Given a reloc name, return a howto structure. */ static reloc_howto_type * -nios2_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, +nios2_elf32_bfd_reloc_name_lookup (bfd *abfd, const char *r_name) { - unsigned int i; - for (i = 0; - i < (sizeof (elf_nios2_howto_table_rel) - / sizeof (elf_nios2_howto_table_rel[0])); - i++) - if (elf_nios2_howto_table_rel[i].name - && strcasecmp (elf_nios2_howto_table_rel[i].name, r_name) == 0) - return &elf_nios2_howto_table_rel[i]; + int i; + reloc_howto_type *howto_tbl; + int howto_tbl_size; + if (BFD_IS_R2 (abfd)) + { + howto_tbl = elf_nios2_r2_howto_table_rel; + howto_tbl_size = (int) (sizeof (elf_nios2_r2_howto_table_rel) + / sizeof (elf_nios2_r2_howto_table_rel[0])); + } + else + { + howto_tbl = elf_nios2_r1_howto_table_rel; + howto_tbl_size = (int) (sizeof (elf_nios2_r1_howto_table_rel) + / sizeof (elf_nios2_r1_howto_table_rel[0])); + } + + for (i = 0; i < howto_tbl_size; i++) + if (howto_tbl[i].name && strcasecmp (howto_tbl[i].name, r_name) == 0) + return howto_tbl + i; return NULL; } /* Implement elf_info_to_howto: Given a ELF32 relocation, fill in a arelent structure. */ static void -nios2_elf32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, +nios2_elf32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst) { unsigned int r_type; r_type = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r_type < R_NIOS2_ILLEGAL); - cache_ptr->howto = &elf_nios2_howto_table_rel[r_type]; + cache_ptr->howto = lookup_howto (r_type, abfd); } /* Return the base VMA address which should be subtracted from real addresses @@ -2297,6 +3245,11 @@ nios2_elf32_do_call26_relocate (bfd *abfd, reloc_howto_type *howto, + offset)) return bfd_reloc_overflow; + /* Check that the target address is correctly aligned on a 4-byte + boundary. */ + if ((symbol_value + addend) & 0x3) + return bfd_reloc_overflow; + return _bfd_final_link_relocate (howto, abfd, input_section, data, offset, symbol_value, addend); } @@ -2780,7 +3733,7 @@ nios2_elf32_relocate_section (bfd *output_bfd, r_type = ELF32_R_TYPE (rel->r_info); r_symndx = ELF32_R_SYM (rel->r_info); - howto = lookup_howto ((unsigned) ELF32_R_TYPE (rel->r_info)); + howto = lookup_howto ((unsigned) ELF32_R_TYPE (rel->r_info), output_bfd); h = NULL; sym = NULL; sec = NULL; @@ -3706,6 +4659,29 @@ nios2_elf32_copy_indirect_symbol (struct bfd_link_info *info, _bfd_elf_link_hash_copy_indirect (info, dir, ind); } +/* Set the right machine number for a NIOS2 ELF file. */ + +static bfd_boolean +nios2_elf32_object_p (bfd *abfd) +{ + unsigned long mach; + + mach = elf_elfheader (abfd)->e_flags; + + switch (mach) + { + default: + case EF_NIOS2_ARCH_R1: + bfd_default_set_arch_mach (abfd, bfd_arch_nios2, bfd_mach_nios2r1); + break; + case EF_NIOS2_ARCH_R2: + bfd_default_set_arch_mach (abfd, bfd_arch_nios2, bfd_mach_nios2r2); + break; + } + + return TRUE; +} + /* Implement elf_backend_check_relocs: Look through the relocs for a section during the first phase. */ static bfd_boolean @@ -5255,6 +6231,9 @@ const struct bfd_elf_special_section elf32_nios2_special_sections[] = #define bfd_elf32_bfd_link_hash_table_create \ nios2_elf32_link_hash_table_create +#define bfd_elf32_bfd_merge_private_bfd_data \ + nios2_elf32_merge_private_bfd_data + /* Relocation table lookup macros. */ #define bfd_elf32_bfd_reloc_type_lookup nios2_elf32_bfd_reloc_type_lookup @@ -5291,6 +6270,7 @@ const struct bfd_elf_special_section elf32_nios2_special_sections[] = #define elf_backend_size_dynamic_sections nios2_elf32_size_dynamic_sections #define elf_backend_add_symbol_hook nios2_elf_add_symbol_hook #define elf_backend_copy_indirect_symbol nios2_elf32_copy_indirect_symbol +#define elf_backend_object_p nios2_elf32_object_p #define elf_backend_grok_prstatus nios2_grok_prstatus #define elf_backend_grok_psinfo nios2_grok_psinfo @@ -5307,5 +6287,6 @@ const struct bfd_elf_special_section elf32_nios2_special_sections[] = #define TARGET_BIG_NAME "elf32-bignios2" #define elf_backend_got_header_size 12 +#define elf_backend_default_execstack 0 #include "elf32-target.h" diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c index e80a2d9..efcefea 100644 --- a/bfd/elf32-or1k.c +++ b/bfd/elf32-or1k.c @@ -60,8 +60,8 @@ static reloc_howto_type or1k_elf_howto_table[] = /* This reloc does nothing. */ HOWTO (R_OR1K_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -704,7 +704,7 @@ or1k_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, { unsigned int i; - for (i = ARRAY_SIZE (or1k_reloc_map); --i;) + for (i = ARRAY_SIZE (or1k_reloc_map); i--;) if (or1k_reloc_map[i].bfd_reloc_val == code) return & or1k_elf_howto_table[or1k_reloc_map[i].or1k_reloc_val]; @@ -740,7 +740,7 @@ or1k_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_OR1K_max) { - _bfd_error_handler (_("%A: invalid OR1K reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid OR1K reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = & or1k_elf_howto_table[r_type]; diff --git a/bfd/elf32-pj.c b/bfd/elf32-pj.c index 2d041e5..5a509f1 100644 --- a/bfd/elf32-pj.c +++ b/bfd/elf32-pj.c @@ -113,7 +113,7 @@ static reloc_howto_type pj_elf_howto_table[] = /* No relocation. */ HOWTO (R_PJ_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -319,7 +319,13 @@ pj_elf_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, r = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r < (unsigned int) R_PJ_max); + if (r >= R_PJ_max) + { + (*_bfd_error_handler) (_("%B: unrecognised PicoJava reloc number: %d"), + abfd, r); + bfd_set_error (bfd_error_bad_value); + r = R_PJ_NONE; + } cache_ptr->howto = &pj_elf_howto_table[r]; } diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index a17ff12..f1fbc66 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -187,8 +187,8 @@ static reloc_howto_type ppc_elf_howto_raw[] = { /* This reloc does nothing. */ HOWTO (R_PPC_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -2019,19 +2019,28 @@ ppc_elf_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, Elf_Internal_Rela *dst) { + unsigned int r_type; + /* Initialize howto table if not already done. */ if (!ppc_elf_howto_table[R_PPC_ADDR32]) ppc_elf_howto_init (); - BFD_ASSERT (ELF32_R_TYPE (dst->r_info) < (unsigned int) R_PPC_max); - cache_ptr->howto = ppc_elf_howto_table[ELF32_R_TYPE (dst->r_info)]; + r_type = ELF32_R_TYPE (dst->r_info); + if (r_type >= R_PPC_max) + { + (*_bfd_error_handler) (_("%B: unrecognised PPC reloc number: %d"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_PPC_NONE; + } + cache_ptr->howto = ppc_elf_howto_table[r_type]; /* Just because the above assert didn't trigger doesn't mean that ELF32_R_TYPE (dst->r_info) is necessarily a valid relocation. */ if (!cache_ptr->howto) { (*_bfd_error_handler) (_("%B: invalid relocation type %d"), - abfd, ELF32_R_TYPE (dst->r_info)); + abfd, r_type); bfd_set_error (bfd_error_bad_value); cache_ptr->howto = ppc_elf_howto_table[R_PPC_NONE]; @@ -2057,9 +2066,6 @@ ppc_elf_addr16_ha_reloc (bfd *abfd ATTRIBUTE_UNUSED, return bfd_reloc_ok; } - if (reloc_entry->address > bfd_get_section_limit (abfd, input_section)) - return bfd_reloc_outofrange; - if (bfd_is_com_section (symbol->section)) relocation = 0; else @@ -2919,7 +2925,6 @@ ppc_elf_get_synthetic_symtab (bfd *abfd, long symcount, asymbol **syms, } count = relplt->size / sizeof (Elf32_External_Rela); - stub_vma = glink_vma - (bfd_vma) count * 16; /* If the stubs are those for -shared/-pie then we might have multiple stubs for each plt entry. If that is the case then there is no way to associate stubs with their plt entries short @@ -2950,9 +2955,10 @@ ppc_elf_get_synthetic_symtab (bfd *abfd, long symcount, asymbol **syms, if (s == NULL) return -1; + stub_vma = glink_vma; names = (char *) (s + count + 1 + (resolv_vma != 0)); - p = relplt->relocation; - for (i = 0; i < count; i++, p++) + p = relplt->relocation + count - 1; + for (i = 0; i < count; i++) { size_t len; @@ -2963,6 +2969,9 @@ ppc_elf_get_synthetic_symtab (bfd *abfd, long symcount, asymbol **syms, s->flags |= BSF_GLOBAL; s->flags |= BSF_SYNTHETIC; s->section = glink; + stub_vma -= 16; + if (strcmp ((*p->sym_ptr_ptr)->name, "__tls_get_addr_opt") == 0) + stub_vma -= 32; s->value = stub_vma - glink->vma; s->name = names; s->udata.p = NULL; @@ -2979,7 +2988,7 @@ ppc_elf_get_synthetic_symtab (bfd *abfd, long symcount, asymbol **syms, memcpy (names, "@plt", sizeof ("@plt")); names += sizeof ("@plt"); ++s; - stub_vma += 16; + --p; } /* Add a symbol at the start of the glink branch table. */ @@ -3126,7 +3135,11 @@ struct ppc_elf_link_hash_entry /* Nonzero if we have seen a small data relocation referring to this symbol. */ - unsigned char has_sda_refs; + unsigned char has_sda_refs : 1; + + /* Flag use of given relocations. */ + unsigned char has_addr16_ha : 1; + unsigned char has_addr16_lo : 1; }; #define ppc_elf_hash_entry(ent) ((struct ppc_elf_link_hash_entry *) (ent)) @@ -3250,7 +3263,7 @@ static struct bfd_link_hash_table * ppc_elf_link_hash_table_create (bfd *abfd) { struct ppc_elf_link_hash_table *ret; - static struct ppc_elf_params default_params = { PLT_OLD, 0, 1, 0, 0, 12 }; + static struct ppc_elf_params default_params = { PLT_OLD, 0, 1, 0, 0, 12, 0 }; ret = bfd_zmalloc (sizeof (struct ppc_elf_link_hash_table)); if (ret == NULL) @@ -4367,6 +4380,10 @@ ppc_elf_check_relocs (bfd *abfd, /* We may need a copy reloc too. */ h->non_got_ref = 1; h->pointer_equality_needed = 1; + if (r_type == R_PPC_ADDR16_HA) + ppc_elf_hash_entry (h)->has_addr16_ha = 1; + if (r_type == R_PPC_ADDR16_LO) + ppc_elf_hash_entry (h)->has_addr16_lo = 1; } goto dodyn; @@ -5087,6 +5104,9 @@ ppc_elf_tls_setup (bfd *obfd, struct bfd_link_info *info) htab = ppc_elf_hash_table (info); htab->tls_get_addr = elf_link_hash_lookup (&htab->elf, "__tls_get_addr", FALSE, FALSE, TRUE); + if (htab->plt_type != PLT_NEW) + htab->params->no_tls_get_addr_opt = TRUE; + if (!htab->params->no_tls_get_addr_opt) { struct elf_link_hash_entry *opt, *tga; @@ -5542,6 +5562,7 @@ ppc_elf_adjust_dynamic_symbol (struct bfd_link_info *info, && !readonly_dynrelocs (h)) h->non_got_ref = 0; } + h->protected_def = 0; return TRUE; } else @@ -5569,12 +5590,41 @@ ppc_elf_adjust_dynamic_symbol (struct bfd_link_info *info, For such cases we need not do anything here; the relocations will be handled correctly by relocate_section. */ if (info->shared) - return TRUE; + { + h->protected_def = 0; + 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; + { + h->protected_def = 0; + return TRUE; + } + + /* Protected variables do not work with .dynbss. The copy in + .dynbss won't be used by the shared library with the protected + definition for the variable. Editing to PIC, or text relocations + are preferable to an incorrect program. */ + if (h->protected_def) + { + if (ELIMINATE_COPY_RELOCS + && ppc_elf_hash_entry (h)->has_addr16_ha + && ppc_elf_hash_entry (h)->has_addr16_lo + && htab->params->pic_fixup == 0 + && info->disable_target_specific_optimizations <= 1) + htab->params->pic_fixup = 1; + h->non_got_ref = 0; + return TRUE; + } + + /* If -z nocopyreloc was given, we won't generate them either. */ + if (info->nocopyreloc) + { + h->non_got_ref = 0; + return TRUE; + } /* If we didn't find any dynamic relocs in read-only sections, then we'll be keeping the dynamic relocs and avoiding the copy reloc. @@ -5679,6 +5729,7 @@ add_stub_sym (struct plt_entry *ent, sh->ref_regular_nonweak = 1; sh->forced_local = 1; sh->non_elf = 0; + sh->root.linker_def = 1; } return TRUE; } @@ -5899,7 +5950,13 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) } eh = (struct ppc_elf_link_hash_entry *) h; - if (eh->elf.got.refcount > 0) + if (eh->elf.got.refcount > 0 + || (ELIMINATE_COPY_RELOCS + && !eh->elf.def_regular + && eh->elf.protected_def + && eh->has_addr16_ha + && eh->has_addr16_lo + && htab->params->pic_fixup > 0)) { bfd_boolean dyn; unsigned int need; @@ -6042,7 +6099,11 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) dynamic. */ if (!h->non_got_ref - && !h->def_regular) + && !h->def_regular + && !(h->protected_def + && eh->has_addr16_ha + && eh->has_addr16_lo + && htab->params->pic_fixup > 0)) { /* Make sure this symbol is output as a dynamic symbol. Undefined weak syms won't yet be marked as dynamic. */ @@ -6360,6 +6421,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd, sh->ref_regular_nonweak = 1; sh->forced_local = 1; sh->non_elf = 0; + sh->root.linker_def = 1; } sh = elf_link_hash_lookup (&htab->elf, "__glink_PLTresolve", TRUE, FALSE, FALSE); @@ -6375,6 +6437,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd, sh->ref_regular_nonweak = 1; sh->forced_local = 1; sh->non_elf = 0; + sh->root.linker_def = 1; } } } @@ -6681,6 +6744,7 @@ static const int stub_entry[] = struct ppc_elf_relax_info { unsigned int workaround_size; + unsigned int picfixup_size; }; /* This function implements long branch trampolines, and the ppc476 @@ -6694,9 +6758,9 @@ ppc_elf_relax_section (bfd *abfd, struct bfd_link_info *link_info, bfd_boolean *again) { - struct one_fixup + struct one_branch_fixup { - struct one_fixup *next; + struct one_branch_fixup *next; asection *tsec; /* Final link, can use the symbol offset. For a relocatable link we use the symbol's index. */ @@ -6709,12 +6773,12 @@ ppc_elf_relax_section (bfd *abfd, Elf_Internal_Sym *isymbuf = NULL; Elf_Internal_Rela *internal_relocs = NULL; Elf_Internal_Rela *irel, *irelend = NULL; - struct one_fixup *fixups = NULL; + struct one_branch_fixup *branch_fixups = NULL; struct ppc_elf_relax_info *relax_info = NULL; unsigned changes = 0; bfd_boolean workaround_change; struct ppc_elf_link_hash_table *htab; - bfd_size_type trampbase, trampoff, newsize; + bfd_size_type trampbase, trampoff, newsize, picfixup_size; asection *got2; bfd_boolean maybe_pasted; @@ -6746,7 +6810,8 @@ ppc_elf_relax_section (bfd *abfd, || isec->sec_info_type == SEC_INFO_TYPE_TARGET); isec->sec_info_type = SEC_INFO_TYPE_TARGET; - if (htab->params->ppc476_workaround) + if (htab->params->ppc476_workaround + || htab->params->pic_fixup > 0) { if (elf_section_data (isec)->sec_info == NULL) { @@ -6767,8 +6832,9 @@ ppc_elf_relax_section (bfd *abfd, trampoff += 4; symtab_hdr = &elf_symtab_hdr (abfd); - - if (htab->params->branch_trampolines) + picfixup_size = 0; + if (htab->params->branch_trampolines + || htab->params->pic_fixup > 0) { /* Get a copy of the native relocations. */ if (isec->reloc_count != 0) @@ -6787,9 +6853,9 @@ ppc_elf_relax_section (bfd *abfd, unsigned long r_type = ELF32_R_TYPE (irel->r_info); bfd_vma toff, roff; asection *tsec; - struct one_fixup *f; + struct one_branch_fixup *f; size_t insn_offset = 0; - bfd_vma max_branch_offset, val; + bfd_vma max_branch_offset = 0, val; bfd_byte *hit_addr; unsigned long t0; struct elf_link_hash_entry *h; @@ -6810,6 +6876,11 @@ ppc_elf_relax_section (bfd *abfd, max_branch_offset = 1 << 15; break; + case R_PPC_ADDR16_HA: + if (htab->params->pic_fixup > 0) + break; + continue; + default: continue; } @@ -6931,6 +7002,17 @@ ppc_elf_relax_section (bfd *abfd, sym_type = h->type; } + if (r_type == R_PPC_ADDR16_HA) + { + if (h != NULL + && !h->def_regular + && h->protected_def + && ppc_elf_hash_entry (h)->has_addr16_ha + && ppc_elf_hash_entry (h)->has_addr16_lo) + picfixup_size += 12; + continue; + } + /* The condition here under which we call find_plt_ent must match that in relocate_section. If we call find_plt_ent here but not in relocate_section, or vice versa, then the branch @@ -7048,7 +7130,7 @@ ppc_elf_relax_section (bfd *abfd, } /* Look for an existing fixup to this address. */ - for (f = fixups; f ; f = f->next) + for (f = branch_fixups; f ; f = f->next) if (f->tsec == tsec && f->toff == toff) break; @@ -7093,11 +7175,11 @@ ppc_elf_relax_section (bfd *abfd, /* Record the fixup so we don't do it again this section. */ f = bfd_malloc (sizeof (*f)); - f->next = fixups; + f->next = branch_fixups; f->tsec = tsec; f->toff = toff; f->trampoff = trampoff; - fixups = f; + branch_fixups = f; trampoff += size; changes++; @@ -7147,10 +7229,10 @@ ppc_elf_relax_section (bfd *abfd, } } - while (fixups != NULL) + while (branch_fixups != NULL) { - struct one_fixup *f = fixups; - fixups = fixups->next; + struct one_branch_fixup *f = branch_fixups; + branch_fixups = branch_fixups->next; free (f); } } @@ -7187,7 +7269,15 @@ ppc_elf_relax_section (bfd *abfd, newsize = trampoff + relax_info->workaround_size; } - if (changes || workaround_change) + if (htab->params->pic_fixup > 0) + { + picfixup_size -= relax_info->picfixup_size; + if (picfixup_size != 0) + relax_info->picfixup_size += picfixup_size; + newsize += relax_info->picfixup_size; + } + + if (changes != 0 || picfixup_size != 0 || workaround_change) isec->size = newsize; if (isymbuf != NULL @@ -7214,6 +7304,7 @@ ppc_elf_relax_section (bfd *abfd, } } + changes += picfixup_size; if (changes != 0) { /* Append sufficient NOP relocs so we can write out relocation @@ -7248,10 +7339,10 @@ ppc_elf_relax_section (bfd *abfd, return TRUE; error_return: - while (fixups != NULL) + while (branch_fixups != NULL) { - struct one_fixup *f = fixups; - fixups = fixups->next; + struct one_branch_fixup *f = branch_fixups; + branch_fixups = branch_fixups->next; free (f); } if (isymbuf != NULL && (unsigned char *) isymbuf != symtab_hdr->contents) @@ -7567,6 +7658,8 @@ ppc_elf_relocate_section (bfd *output_bfd, bfd_boolean ret = TRUE; bfd_vma d_offset = (bfd_big_endian (output_bfd) ? 2 : 0); bfd_boolean is_vxworks_tls; + unsigned int picfixup_size = 0; + struct ppc_elf_relax_info *relax_info = NULL; #ifdef DEBUG _bfd_error_handler ("ppc_elf_relocate_section called for %B section %A, " @@ -7591,6 +7684,8 @@ ppc_elf_relocate_section (bfd *output_bfd, is_vxworks_tls = (htab->is_vxworks && info->shared && !strcmp (input_section->output_section->name, ".tls_vars")); + if (input_section->sec_info_type == SEC_INFO_TYPE_TARGET) + relax_info = elf_section_data (input_section)->sec_info; rel = relocs; relend = relocs + input_section->reloc_count; for (; rel < relend; rel++) @@ -7754,8 +7849,8 @@ ppc_elf_relocate_section (bfd *output_bfd, + R_PPC_GOT_TPREL16); 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_PPC_NONE; } rel->r_info = ELF32_R_INFO (r_symndx, r_type); @@ -7788,12 +7883,16 @@ ppc_elf_relocate_section (bfd *output_bfd, && branch_reloc_hash_match (input_bfd, rel + 1, htab->tls_get_addr)) offset = rel[1].r_offset; + /* We read the low GOT_TLS insn because we need to keep + the destination reg. It may be something other than + the usual r3, and moved to r3 before the call by + intervening code. */ + insn1 = bfd_get_32 (output_bfd, + contents + rel->r_offset - d_offset); if ((tls_mask & tls_gd) != 0) { /* IE */ - insn1 = bfd_get_32 (output_bfd, - contents + rel->r_offset - d_offset); - insn1 &= (1 << 26) - 1; + insn1 &= (0x1f << 21) | (0x1f << 16); insn1 |= 32 << 26; /* lwz */ if (offset != (bfd_vma) -1) { @@ -7808,7 +7907,8 @@ ppc_elf_relocate_section (bfd *output_bfd, else { /* LE */ - insn1 = 0x3c620000; /* addis 3,2,0 */ + insn1 &= 0x1f << 21; + insn1 |= 0x3c020000; /* addis r,2,0 */ if (tls_gd == 0) { /* Was an LD reloc. */ @@ -7943,6 +8043,114 @@ ppc_elf_relocate_section (bfd *output_bfd, } } + if (ELIMINATE_COPY_RELOCS + && h != NULL + && !h->def_regular + && h->protected_def + && ppc_elf_hash_entry (h)->has_addr16_ha + && ppc_elf_hash_entry (h)->has_addr16_lo + && htab->params->pic_fixup > 0) + { + /* Convert lis;addi or lis;load/store accessing a protected + variable defined in a shared library to PIC. */ + unsigned int insn; + + if (r_type == R_PPC_ADDR16_HA) + { + insn = bfd_get_32 (output_bfd, + contents + rel->r_offset - d_offset); + if ((insn & (0x3f << 26)) == (15u << 26) + && (insn & (0x1f << 16)) == 0 /* lis */) + { + bfd_byte *p; + bfd_vma off; + bfd_vma got_addr; + + p = (contents + input_section->size + - relax_info->workaround_size + - relax_info->picfixup_size + + picfixup_size); + off = (p - contents) - (rel->r_offset - d_offset); + if (off > 0x1fffffc || (off & 3) != 0) + info->callbacks->einfo + (_("%P: %H: fixup branch overflow\n"), + input_bfd, input_section, rel->r_offset); + + bfd_put_32 (output_bfd, B | off, + contents + rel->r_offset - d_offset); + got_addr = (htab->got->output_section->vma + + htab->got->output_offset + + (h->got.offset & ~1)); + rel->r_info = ELF32_R_INFO (0, R_PPC_ADDR16_HA); + rel->r_addend = got_addr; + rel->r_offset = (p - contents) + d_offset; + insn &= ~0xffff; + insn |= ((unsigned int )(got_addr + 0x8000) >> 16) & 0xffff; + bfd_put_32 (output_bfd, insn, p); + + /* Convert lis to lwz, loading address from GOT. */ + insn &= ~0xffff; + insn ^= (32u ^ 15u) << 26; + insn |= (insn & (0x1f << 21)) >> 5; + insn |= got_addr & 0xffff; + bfd_put_32 (output_bfd, insn, p + 4); + + bfd_put_32 (output_bfd, B | ((-4 - off) & 0x3ffffff), p + 8); + picfixup_size += 12; + + /* Use one of the spare relocs, so --emit-relocs + output is reasonable. */ + memmove (rel + 1, rel, (relend - rel - 1) * sizeof (*rel)); + rel++; + rel->r_info = ELF32_R_INFO (0, R_PPC_ADDR16_LO); + rel->r_offset += 4; + + /* Continue on as if we had a got reloc, to output + dynamic reloc. */ + r_type = R_PPC_GOT16_LO; + } + else + info->callbacks->einfo + (_("%P: %H: error: %s with unexpected instruction %x\n"), + input_bfd, input_section, rel->r_offset, + "R_PPC_ADDR16_HA", insn); + } + else if (r_type == R_PPC_ADDR16_LO) + { + insn = bfd_get_32 (output_bfd, + contents + rel->r_offset - d_offset); + 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))) + { + /* Arrange to apply the reloc addend, if any. */ + relocation = 0; + unresolved_reloc = FALSE; + rel->r_info = ELF32_R_INFO (0, r_type); + } + else + info->callbacks->einfo + (_("%P: %H: error: %s with unexpected instruction %x\n"), + input_bfd, input_section, rel->r_offset, + "R_PPC_ADDR16_LO", insn); + } + } + ifunc = NULL; if (!htab->is_vxworks) { @@ -8210,7 +8418,12 @@ ppc_elf_relocate_section (bfd *output_bfd, { outrel.r_addend += relocation; if (tls_ty & (TLS_GD | TLS_DTPREL | TLS_TPREL)) - outrel.r_addend -= htab->elf.tls_sec->vma; + { + if (htab->elf.tls_sec == NULL) + outrel.r_addend = 0; + else + outrel.r_addend -= htab->elf.tls_sec->vma; + } } loc = rsec->contents; loc += (rsec->reloc_count++ @@ -8228,9 +8441,14 @@ ppc_elf_relocate_section (bfd *output_bfd, value = 1; else if (tls_ty != 0) { - value -= htab->elf.tls_sec->vma + DTP_OFFSET; - if (tls_ty == (TLS_TLS | TLS_TPREL)) - value += DTP_OFFSET - TP_OFFSET; + if (htab->elf.tls_sec == NULL) + value = 0; + else + { + value -= htab->elf.tls_sec->vma + DTP_OFFSET; + if (tls_ty == (TLS_TLS | TLS_TPREL)) + value += DTP_OFFSET - TP_OFFSET; + } if (tls_ty == (TLS_TLS | TLS_GD)) { @@ -8277,6 +8495,10 @@ ppc_elf_relocate_section (bfd *output_bfd, } } + /* If here for a picfixup, we're done. */ + if (r_type != ELF32_R_TYPE (rel->r_info)) + continue; + relocation = (htab->got->output_section->vma + htab->got->output_offset + off @@ -8316,7 +8538,8 @@ ppc_elf_relocate_section (bfd *output_bfd, case R_PPC_DTPREL16_LO: case R_PPC_DTPREL16_HI: case R_PPC_DTPREL16_HA: - addend -= htab->elf.tls_sec->vma + DTP_OFFSET; + if (htab->elf.tls_sec != NULL) + addend -= htab->elf.tls_sec->vma + DTP_OFFSET; break; /* Relocations that may need to be propagated if this is a shared @@ -8340,18 +8563,21 @@ ppc_elf_relocate_section (bfd *output_bfd, bfd_put_32 (output_bfd, insn, p); break; } - addend -= htab->elf.tls_sec->vma + TP_OFFSET; + if (htab->elf.tls_sec != NULL) + addend -= htab->elf.tls_sec->vma + TP_OFFSET; /* The TPREL16 relocs shouldn't really be used in shared libs as they will result in DT_TEXTREL being set, but support them anyway. */ goto dodyn; case R_PPC_TPREL32: - addend -= htab->elf.tls_sec->vma + TP_OFFSET; + if (htab->elf.tls_sec != NULL) + addend -= htab->elf.tls_sec->vma + TP_OFFSET; goto dodyn; case R_PPC_DTPREL32: - addend -= htab->elf.tls_sec->vma + DTP_OFFSET; + if (htab->elf.tls_sec != NULL) + addend -= htab->elf.tls_sec->vma + DTP_OFFSET; goto dodyn; case R_PPC_DTPMOD32: @@ -8420,7 +8646,11 @@ ppc_elf_relocate_section (bfd *output_bfd, && h != NULL && h->dynindx != -1 && !h->non_got_ref - && !h->def_regular)) + && !h->def_regular + && !(h->protected_def + && ppc_elf_hash_entry (h)->has_addr16_ha + && ppc_elf_hash_entry (h)->has_addr16_lo + && htab->params->pic_fixup > 0))) { int skip; bfd_byte *loc; @@ -9199,30 +9429,20 @@ ppc_elf_relocate_section (bfd *output_bfd, if (r == bfd_reloc_overflow) { overflow: - if (warned) - continue; - if (h != NULL - && h->root.type == bfd_link_hash_undefweak - && howto->pc_relative) + /* On code like "if (foo) foo();" don't report overflow + on a branch to zero when foo is undefined. */ + if (!warned + && !(h != NULL + && (h->root.type == bfd_link_hash_undefweak + || h->root.type == bfd_link_hash_undefined) + && is_branch_reloc (r_type))) { - /* Assume this is a call protected by other code that - detect the symbol is undefined. If this is the case, - we can safely ignore the overflow. If not, the - program is hosed anyway, and a little warning isn't - going to help. */ - - continue; + if (!((*info->callbacks->reloc_overflow) + (info, (h ? &h->root : NULL), sym_name, + howto->name, rel->r_addend, + input_bfd, input_section, rel->r_offset))) + return FALSE; } - - if (! (*info->callbacks->reloc_overflow) (info, - (h ? &h->root : NULL), - sym_name, - howto->name, - rel->r_addend, - input_bfd, - input_section, - rel->r_offset)) - return FALSE; } else { @@ -9255,11 +9475,9 @@ ppc_elf_relocate_section (bfd *output_bfd, || (input_section->output_section->alignment_power >= htab->params->pagesize_p2))) { - struct ppc_elf_relax_info *relax_info; bfd_vma start_addr, end_addr, addr; bfd_vma pagesize = (bfd_vma) 1 << htab->params->pagesize_p2; - relax_info = elf_section_data (input_section)->sec_info; if (relax_info->workaround_size != 0) { bfd_byte *p; @@ -9390,6 +9608,8 @@ ppc_elf_relocate_section (bfd *output_bfd, && rel->r_offset >= offset && rel->r_offset < offset + 4) { + asection *sreloc; + /* If the insn we are patching had a reloc, adjust the reloc r_offset so that the reloc applies to the moved location. This matters for -r and --emit-relocs. */ @@ -9402,6 +9622,57 @@ ppc_elf_relocate_section (bfd *output_bfd, relend[-1] = tmp; } relend[-1].r_offset += patch_off - offset; + + /* Adjust REL16 addends too. */ + switch (ELF32_R_TYPE (relend[-1].r_info)) + { + case R_PPC_REL16: + case R_PPC_REL16_LO: + case R_PPC_REL16_HI: + case R_PPC_REL16_HA: + relend[-1].r_addend += patch_off - offset; + break; + default: + break; + } + + /* If we are building a PIE or shared library with + non-PIC objects, perhaps we had a dynamic reloc too? + If so, the dynamic reloc must move with the insn. */ + sreloc = elf_section_data (input_section)->sreloc; + if (sreloc != NULL) + { + Elf32_External_Rela *slo, *shi, *srelend; + bfd_vma soffset; + + slo = (Elf32_External_Rela *) sreloc->contents; + shi = srelend = slo + sreloc->reloc_count; + soffset = (offset + input_section->output_section->vma + + input_section->output_offset); + while (slo < shi) + { + Elf32_External_Rela *srel = slo + (shi - slo) / 2; + bfd_elf32_swap_reloca_in (output_bfd, (bfd_byte *) srel, + &outrel); + if (outrel.r_offset < soffset) + slo = srel + 1; + else if (outrel.r_offset > soffset + 3) + shi = srel; + else + { + if (srel + 1 != srelend) + { + memmove (srel, srel + 1, + (srelend - (srel + 1)) * sizeof (*srel)); + srel = srelend - 1; + } + outrel.r_offset += patch_off - offset; + bfd_elf32_swap_reloca_out (output_bfd, &outrel, + (bfd_byte *) srel); + break; + } + } + } } else rel = NULL; diff --git a/bfd/elf32-ppc.h b/bfd/elf32-ppc.h index 2feeec9..8eb8fcb 100644 --- a/bfd/elf32-ppc.h +++ b/bfd/elf32-ppc.h @@ -44,6 +44,10 @@ struct ppc_elf_params /* Avoid execution falling into new page. */ int ppc476_workaround; unsigned int pagesize_p2; + + /* The bfd backend detected a non-PIC reference to a protected symbol + defined in a shared library. */ + int pic_fixup; }; void ppc_elf_link_params (struct bfd_link_info *, struct ppc_elf_params *); diff --git a/bfd/elf32-rl78.c b/bfd/elf32-rl78.c index 795a281..add3336 100644 --- a/bfd/elf32-rl78.c +++ b/bfd/elf32-rl78.c @@ -31,13 +31,21 @@ HOWTO (R_RL78_##n, shift, sz, bit, pcrel, 0, complain_overflow_ ## complain, \ bfd_elf_generic_reloc, "R_RL78_" #n, FALSE, 0, ~0, FALSE) +static bfd_reloc_status_type rl78_special_reloc (bfd *, arelent *, asymbol *, void *, + asection *, bfd *, char **); + +/* FIXME: We could omit the SHIFT parameter, it is always zero. */ +#define RL78_OP_REL(n,sz,bit,shift,complain,pcrel) \ + HOWTO (R_RL78_##n, shift, sz, bit, pcrel, 0, complain_overflow_ ## complain, \ + rl78_special_reloc, "R_RL78_" #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 rl78_elf_howto_table [] = { - RL78REL (NONE, 0, 0, 0, dont, FALSE), + RL78REL (NONE, 3, 0, 0, dont, FALSE), RL78REL (DIR32, 2, 32, 0, signed, FALSE), RL78REL (DIR24S, 2, 24, 0, signed, FALSE), RL78REL (DIR16, 1, 16, 0, dont, FALSE), @@ -87,7 +95,7 @@ static reloc_howto_type rl78_elf_howto_table [] = RL78REL (RH_RELAX, 0, 0, 0, dont, FALSE), EMPTY_HOWTO (0x2e), - EMPTY_HOWTO (0x2f), + RL78REL (RH_SADDR, 0, 0, 0, dont, FALSE), EMPTY_HOWTO (0x30), EMPTY_HOWTO (0x31), EMPTY_HOWTO (0x32), @@ -106,23 +114,23 @@ static reloc_howto_type rl78_elf_howto_table [] = EMPTY_HOWTO (0x3f), EMPTY_HOWTO (0x40), - RL78REL (ABS32, 2, 32, 0, dont, FALSE), - RL78REL (ABS24S, 2, 24, 0, signed, FALSE), - RL78REL (ABS16, 1, 16, 0, dont, FALSE), - RL78REL (ABS16U, 1, 16, 0, unsigned, FALSE), - RL78REL (ABS16S, 1, 16, 0, signed, FALSE), - RL78REL (ABS8, 0, 8, 0, dont, FALSE), - RL78REL (ABS8U, 0, 8, 0, unsigned, FALSE), - RL78REL (ABS8S, 0, 8, 0, signed, FALSE), - RL78REL (ABS24S_PCREL, 2, 24, 0, signed, TRUE), - RL78REL (ABS16S_PCREL, 1, 16, 0, signed, TRUE), - RL78REL (ABS8S_PCREL, 0, 8, 0, signed, TRUE), - RL78REL (ABS16UL, 1, 16, 0, unsigned, FALSE), - RL78REL (ABS16UW, 1, 16, 0, unsigned, FALSE), - RL78REL (ABS8UL, 0, 8, 0, unsigned, FALSE), - RL78REL (ABS8UW, 0, 8, 0, unsigned, FALSE), - RL78REL (ABS32_REV, 2, 32, 0, dont, FALSE), - RL78REL (ABS16_REV, 1, 16, 0, dont, FALSE), + RL78_OP_REL (ABS32, 2, 32, 0, dont, FALSE), + RL78_OP_REL (ABS24S, 2, 24, 0, signed, FALSE), + RL78_OP_REL (ABS16, 1, 16, 0, dont, FALSE), + RL78_OP_REL (ABS16U, 1, 16, 0, unsigned, FALSE), + RL78_OP_REL (ABS16S, 1, 16, 0, signed, FALSE), + RL78_OP_REL (ABS8, 0, 8, 0, dont, FALSE), + RL78_OP_REL (ABS8U, 0, 8, 0, unsigned, FALSE), + RL78_OP_REL (ABS8S, 0, 8, 0, signed, FALSE), + RL78_OP_REL (ABS24S_PCREL, 2, 24, 0, signed, TRUE), + RL78_OP_REL (ABS16S_PCREL, 1, 16, 0, signed, TRUE), + RL78_OP_REL (ABS8S_PCREL, 0, 8, 0, signed, TRUE), + RL78_OP_REL (ABS16UL, 1, 16, 0, unsigned, FALSE), + RL78_OP_REL (ABS16UW, 1, 16, 0, unsigned, FALSE), + RL78_OP_REL (ABS8UL, 0, 8, 0, unsigned, FALSE), + RL78_OP_REL (ABS8UW, 0, 8, 0, unsigned, FALSE), + RL78_OP_REL (ABS32_REV, 2, 32, 0, dont, FALSE), + RL78_OP_REL (ABS16_REV, 1, 16, 0, dont, FALSE), #define STACK_REL_P(x) ((x) <= R_RL78_ABS16_REV && (x) >= R_RL78_ABS32) @@ -174,29 +182,29 @@ static reloc_howto_type rl78_elf_howto_table [] = EMPTY_HOWTO (0x7e), EMPTY_HOWTO (0x7f), - RL78REL (SYM, 2, 32, 0, dont, FALSE), - RL78REL (OPneg, 2, 32, 0, dont, FALSE), - RL78REL (OPadd, 2, 32, 0, dont, FALSE), - RL78REL (OPsub, 2, 32, 0, dont, FALSE), - RL78REL (OPmul, 2, 32, 0, dont, FALSE), - RL78REL (OPdiv, 2, 32, 0, dont, FALSE), - RL78REL (OPshla, 2, 32, 0, dont, FALSE), - RL78REL (OPshra, 2, 32, 0, dont, FALSE), - RL78REL (OPsctsize, 2, 32, 0, dont, FALSE), + RL78_OP_REL (SYM, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPneg, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPadd, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPsub, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPmul, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPdiv, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPshla, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPshra, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPsctsize, 2, 32, 0, dont, FALSE), EMPTY_HOWTO (0x89), EMPTY_HOWTO (0x8a), EMPTY_HOWTO (0x8b), EMPTY_HOWTO (0x8c), - RL78REL (OPscttop, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPscttop, 2, 32, 0, dont, FALSE), EMPTY_HOWTO (0x8e), EMPTY_HOWTO (0x8f), - RL78REL (OPand, 2, 32, 0, dont, FALSE), - RL78REL (OPor, 2, 32, 0, dont, FALSE), - RL78REL (OPxor, 2, 32, 0, dont, FALSE), - RL78REL (OPnot, 2, 32, 0, dont, FALSE), - RL78REL (OPmod, 2, 32, 0, dont, FALSE), - RL78REL (OPromtop, 2, 32, 0, dont, FALSE), - RL78REL (OPramtop, 2, 32, 0, dont, FALSE) + RL78_OP_REL (OPand, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPor, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPxor, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPnot, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPmod, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPromtop, 2, 32, 0, dont, FALSE), + RL78_OP_REL (OPramtop, 2, 32, 0, dont, FALSE) }; /* Map BFD reloc types to RL78 ELF reloc types. */ @@ -234,6 +242,7 @@ static const struct rl78_reloc_map rl78_reloc_map [] = { BFD_RELOC_RL78_ABS16UL, R_RL78_ABS16UL }, { BFD_RELOC_RL78_ABS16UW, R_RL78_ABS16UW }, { BFD_RELOC_RL78_ABS16U, R_RL78_ABS16U }, + { BFD_RELOC_RL78_SADDR, R_RL78_RH_SADDR }, { BFD_RELOC_RL78_RELAX, R_RL78_RH_RELAX } }; @@ -246,7 +255,7 @@ rl78_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, if (code == BFD_RELOC_RL78_32_OP) return rl78_elf_howto_table + R_RL78_DIR32; - for (i = ARRAY_SIZE (rl78_reloc_map); --i;) + for (i = ARRAY_SIZE (rl78_reloc_map); i--;) if (rl78_reloc_map [i].bfd_reloc_val == code) return rl78_elf_howto_table + rl78_reloc_map[i].rl78_reloc_val; @@ -278,7 +287,7 @@ rl78_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_RL78_max) { - _bfd_error_handler (_("%A: invalid RL78 reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid RL78 reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = rl78_elf_howto_table + r_type; @@ -292,22 +301,29 @@ get_symbol_value (const char * name, asection * input_section, int offset) { - bfd_vma value = 0; struct bfd_link_hash_entry * h; + if (info == NULL) + return 0; + 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); + { + bfd_reloc_status_type res; + + res = info->callbacks->undefined_symbol + (info, name, input_bfd, input_section, offset, TRUE); + if (status) + * status = res; + return 0; + } - return value; + return (h->u.def.value + + h->u.def.section->output_section->vma + + h->u.def.section->output_offset); } static bfd_vma @@ -319,12 +335,15 @@ get_romstart (bfd_reloc_status_type * status, { static bfd_boolean cached = FALSE; static bfd_vma cached_value = 0; + static bfd_reloc_status_type cached_status; if (!cached) { - cached_value = get_symbol_value ("_start", status, info, abfd, sec, offset); + cached_value = get_symbol_value ("_start", & cached_status, info, abfd, sec, offset); cached = TRUE; } + if (status) + * status = cached_status; return cached_value; } @@ -337,12 +356,15 @@ get_ramstart (bfd_reloc_status_type * status, { static bfd_boolean cached = FALSE; static bfd_vma cached_value = 0; + static bfd_reloc_status_type cached_status; if (!cached) { - cached_value = get_symbol_value ("__datastart", status, info, abfd, sec, offset); + cached_value = get_symbol_value ("__datastart", & cached_status, info, abfd, sec, offset); cached = TRUE; } + if (status) + * status = cached_status; return cached_value; } @@ -356,7 +378,7 @@ static unsigned int rl78_stack_top; if (rl78_stack_top < NUM_STACK_ENTRIES) \ rl78_stack [rl78_stack_top ++] = (val); \ else \ - r = bfd_reloc_dangerous; \ + _bfd_error_handler (_("Internal Error: RL78 reloc stack overflow")); \ } \ while (0) @@ -364,12 +386,269 @@ static unsigned int rl78_stack_top; do \ { \ if (rl78_stack_top > 0) \ - (dest) = rl78_stack [-- rl78_stack_top]; \ + (dest) = rl78_stack [-- rl78_stack_top];\ else \ - (dest) = 0, r = bfd_reloc_dangerous; \ + { \ + _bfd_error_handler (_("Internal Error: RL78 reloc stack underflow")); \ + (dest) = 0; \ + } \ } \ while (0) +/* Special handling for RL78 complex relocs. Returns the + value of the reloc, or 0 for relocs which do not generate + a result. SYMVAL is the value of the symbol for relocs + which use a symbolic argument. */ + +static bfd_vma +rl78_compute_complex_reloc (unsigned long r_type, + bfd_vma symval, + asection * input_section) +{ + int32_t tmp1, tmp2; + bfd_vma relocation; + + switch (r_type) + { + default: + return 0; + + case R_RL78_ABS24S_PCREL: + case R_RL78_ABS16S_PCREL: + case R_RL78_ABS8S_PCREL: + RL78_STACK_POP (relocation); + relocation -= input_section->output_section->vma + input_section->output_offset; + return relocation; + + case R_RL78_ABS32: + case R_RL78_ABS32_REV: + case R_RL78_ABS16: + case R_RL78_ABS16_REV: + case R_RL78_ABS16S: + case R_RL78_ABS16U: + case R_RL78_ABS8: + case R_RL78_ABS8U: + case R_RL78_ABS8S: + RL78_STACK_POP (relocation); + return relocation; + + case R_RL78_ABS16UL: + case R_RL78_ABS8UL: + RL78_STACK_POP (relocation); + return relocation >> 2; + + case R_RL78_ABS16UW: + case R_RL78_ABS8UW: + RL78_STACK_POP (relocation); + return relocation >> 1; + + /* The rest of the relocs compute values and then push them onto the stack. */ + case R_RL78_OPramtop: + case R_RL78_OPromtop: + case R_RL78_SYM: + RL78_STACK_PUSH (symval); + return 0; + + case R_RL78_OPneg: + RL78_STACK_POP (tmp1); + tmp1 = - tmp1; + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPadd: + RL78_STACK_POP (tmp2); + RL78_STACK_POP (tmp1); + tmp1 += tmp2; + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPsub: + /* For the expression "A - B", the assembler pushes A, + then B, then OPSUB. So the first op we pop is B, not A. */ + RL78_STACK_POP (tmp2); /* B */ + RL78_STACK_POP (tmp1); /* A */ + tmp1 -= tmp2; /* A - B */ + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPmul: + RL78_STACK_POP (tmp2); + RL78_STACK_POP (tmp1); + tmp1 *= tmp2; + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPdiv: + RL78_STACK_POP (tmp2); + RL78_STACK_POP (tmp1); + tmp1 /= tmp2; + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPshla: + RL78_STACK_POP (tmp2); + RL78_STACK_POP (tmp1); + tmp1 <<= tmp2; + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPshra: + RL78_STACK_POP (tmp2); + RL78_STACK_POP (tmp1); + tmp1 >>= tmp2; + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPsctsize: + RL78_STACK_PUSH (input_section->size); + return 0; + + case R_RL78_OPscttop: + RL78_STACK_PUSH (input_section->output_section->vma); + return 0; + + case R_RL78_OPand: + RL78_STACK_POP (tmp2); + RL78_STACK_POP (tmp1); + tmp1 &= tmp2; + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPor: + RL78_STACK_POP (tmp2); + RL78_STACK_POP (tmp1); + tmp1 |= tmp2; + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPxor: + RL78_STACK_POP (tmp2); + RL78_STACK_POP (tmp1); + tmp1 ^= tmp2; + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPnot: + RL78_STACK_POP (tmp1); + tmp1 = ~ tmp1; + RL78_STACK_PUSH (tmp1); + return 0; + + case R_RL78_OPmod: + RL78_STACK_POP (tmp2); + RL78_STACK_POP (tmp1); + tmp1 %= tmp2; + RL78_STACK_PUSH (tmp1); + return 0; + } +} + +#undef RL78_STACK_PUSH +#undef RL78_STACK_POP + +#define OP(i) (contents[reloc->address + (i)]) + +static bfd_reloc_status_type +rl78_special_reloc (bfd * input_bfd, + arelent * reloc, + asymbol * symbol, + void * data, + asection * input_section, + bfd * output_bfd ATTRIBUTE_UNUSED, + char ** error_message ATTRIBUTE_UNUSED) +{ + bfd_reloc_status_type r = bfd_reloc_ok; + bfd_vma relocation = 0; + unsigned long r_type = reloc->howto->type; + bfd_byte * contents = data; + + /* If necessary, compute the symbolic value of the relocation. */ + switch (r_type) + { + case R_RL78_SYM: + relocation = (symbol->value + + symbol->section->output_section->vma + + symbol->section->output_offset + + reloc->addend); + break; + + case R_RL78_OPromtop: + relocation = get_romstart (&r, NULL, input_bfd, input_section, + reloc->address); + break; + + case R_RL78_OPramtop: + relocation = get_ramstart (&r, NULL, input_bfd, input_section, + reloc->address); + break; + } + + /* Get the value of the relocation. */ + relocation = rl78_compute_complex_reloc (r_type, relocation, input_section); + + /* If the relocation alters the contents of the section then apply it now. + Note - since this function is called from + bfd_generic_get_relocated_section_contents via bfd_perform_relocation, + and not from the linker, we do not perform any range checking. The + clients who are calling us are only interested in some relocated section + contents, and not any linkage problems that might occur later. */ + switch (r_type) + { + case R_RL78_ABS32: + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + OP (3) = relocation >> 24; + break; + + case R_RL78_ABS32_REV: + OP (3) = relocation; + OP (2) = relocation >> 8; + OP (1) = relocation >> 16; + OP (0) = relocation >> 24; + break; + + case R_RL78_ABS24S_PCREL: + case R_RL78_ABS24S: + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + break; + + case R_RL78_ABS16_REV: + OP (1) = relocation; + OP (0) = relocation >> 8; + break; + + case R_RL78_ABS16S_PCREL: + case R_RL78_ABS16: + case R_RL78_ABS16S: + case R_RL78_ABS16U: + case R_RL78_ABS16UL: + case R_RL78_ABS16UW: + OP (0) = relocation; + OP (1) = relocation >> 8; + break; + + case R_RL78_ABS8S_PCREL: + case R_RL78_ABS8: + case R_RL78_ABS8U: + case R_RL78_ABS8UL: + case R_RL78_ABS8UW: + case R_RL78_ABS8S: + OP (0) = relocation; + break; + + default: + break; + } + + return r; +} + +#undef OP +#define OP(i) (contents[rel->r_offset + (i)]) + /* Relocate an RL78 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], @@ -559,8 +838,6 @@ rl78_elf_relocate_section 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)]) /* Opcode relocs are always big endian. Data relocs are bi-endian. */ switch (r_type) @@ -663,279 +940,141 @@ rl78_elf_relocate_section break; /* Complex reloc handling: */ - case R_RL78_ABS32: - RL78_STACK_POP (relocation); - OP (0) = relocation; - OP (1) = relocation >> 8; - OP (2) = relocation >> 16; - OP (3) = relocation >> 24; - break; - case R_RL78_ABS32_REV: - RL78_STACK_POP (relocation); - OP (3) = relocation; - OP (2) = relocation >> 8; - OP (1) = relocation >> 16; - OP (0) = relocation >> 24; - break; - case R_RL78_ABS24S_PCREL: case R_RL78_ABS24S: - RL78_STACK_POP (relocation); - RANGE (-0x800000, 0x7fffff); - OP (0) = relocation; - OP (1) = relocation >> 8; - OP (2) = relocation >> 16; - break; - case R_RL78_ABS16: - RL78_STACK_POP (relocation); - RANGE (-32768, 65535); - OP (0) = relocation; - OP (1) = relocation >> 8; - break; - case R_RL78_ABS16_REV: - RL78_STACK_POP (relocation); - RANGE (-32768, 65535); - OP (1) = relocation; - OP (0) = relocation >> 8; - break; - case R_RL78_ABS16S_PCREL: case R_RL78_ABS16S: - RL78_STACK_POP (relocation); - RANGE (-32768, 32767); - OP (0) = relocation; - OP (1) = relocation >> 8; - break; - case R_RL78_ABS16U: - RL78_STACK_POP (relocation); - RANGE (0, 65536); - OP (0) = relocation; - OP (1) = relocation >> 8; - break; - case R_RL78_ABS16UL: - RL78_STACK_POP (relocation); - relocation >>= 2; - RANGE (0, 65536); - OP (0) = relocation; - OP (1) = relocation >> 8; - break; - case R_RL78_ABS16UW: - RL78_STACK_POP (relocation); - relocation >>= 1; - RANGE (0, 65536); - OP (0) = relocation; - OP (1) = relocation >> 8; - break; - case R_RL78_ABS8: - RL78_STACK_POP (relocation); - RANGE (-128, 255); - OP (0) = relocation; - break; - case R_RL78_ABS8U: - RL78_STACK_POP (relocation); - RANGE (0, 255); - OP (0) = relocation; - break; - case R_RL78_ABS8UL: - RL78_STACK_POP (relocation); - relocation >>= 2; - RANGE (0, 255); - OP (0) = relocation; - break; - case R_RL78_ABS8UW: - RL78_STACK_POP (relocation); - relocation >>= 1; - RANGE (0, 255); - OP (0) = relocation; - break; - case R_RL78_ABS8S_PCREL: case R_RL78_ABS8S: - RL78_STACK_POP (relocation); - RANGE (-128, 127); - OP (0) = relocation; - break; - - case R_RL78_SYM: - if (r_symndx < symtab_hdr->sh_info) - RL78_STACK_PUSH (sec->output_section->vma - + sec->output_offset - + sym->st_value - + rel->r_addend); - else - { - if (h != NULL - && (h->root.type == bfd_link_hash_defined - || h->root.type == bfd_link_hash_defweak)) - RL78_STACK_PUSH (h->root.u.def.value - + sec->output_section->vma - + sec->output_offset - + rel->r_addend); - else if (h->root.type == bfd_link_hash_undefweak) - RL78_STACK_PUSH (0); - else - _bfd_error_handler (_("Warning: RL78_SYM reloc with an unknown symbol")); - } - break; - case R_RL78_OPneg: - { - int32_t tmp; - - RL78_STACK_POP (tmp); - tmp = - tmp; - RL78_STACK_PUSH (tmp); - } - break; - case R_RL78_OPadd: - { - int32_t tmp1, tmp2; - - RL78_STACK_POP (tmp2); - RL78_STACK_POP (tmp1); - tmp1 += tmp2; - RL78_STACK_PUSH (tmp1); - } - break; - case R_RL78_OPsub: - { - int32_t tmp1, tmp2; - - /* For the expression "A - B", the assembler pushes A, - then B, then OPSUB. So the first op we pop is B, not - A. */ - RL78_STACK_POP (tmp2); /* B */ - RL78_STACK_POP (tmp1); /* A */ - tmp1 -= tmp2; /* A - B */ - RL78_STACK_PUSH (tmp1); - } - break; - case R_RL78_OPmul: - { - int32_t tmp1, tmp2; - - RL78_STACK_POP (tmp2); - RL78_STACK_POP (tmp1); - tmp1 *= tmp2; - RL78_STACK_PUSH (tmp1); - } - break; - case R_RL78_OPdiv: - { - int32_t tmp1, tmp2; - - RL78_STACK_POP (tmp2); - RL78_STACK_POP (tmp1); - tmp1 /= tmp2; - RL78_STACK_PUSH (tmp1); - } - break; - case R_RL78_OPshla: - { - int32_t tmp1, tmp2; - - RL78_STACK_POP (tmp2); - RL78_STACK_POP (tmp1); - tmp1 <<= tmp2; - RL78_STACK_PUSH (tmp1); - } - break; - case R_RL78_OPshra: - { - int32_t tmp1, tmp2; - - RL78_STACK_POP (tmp2); - RL78_STACK_POP (tmp1); - tmp1 >>= tmp2; - RL78_STACK_PUSH (tmp1); - } - break; - case R_RL78_OPsctsize: - RL78_STACK_PUSH (input_section->size); - break; - case R_RL78_OPscttop: - RL78_STACK_PUSH (input_section->output_section->vma); - break; - case R_RL78_OPand: - { - int32_t tmp1, tmp2; + case R_RL78_OPor: + case R_RL78_OPxor: + case R_RL78_OPnot: + case R_RL78_OPmod: + relocation = rl78_compute_complex_reloc (r_type, 0, input_section); - RL78_STACK_POP (tmp2); - RL78_STACK_POP (tmp1); - tmp1 &= tmp2; - RL78_STACK_PUSH (tmp1); - } - break; + switch (r_type) + { + case R_RL78_ABS32: + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + OP (3) = relocation >> 24; + break; - case R_RL78_OPor: - { - int32_t tmp1, tmp2; + case R_RL78_ABS32_REV: + OP (3) = relocation; + OP (2) = relocation >> 8; + OP (1) = relocation >> 16; + OP (0) = relocation >> 24; + break; - RL78_STACK_POP (tmp2); - RL78_STACK_POP (tmp1); - tmp1 |= tmp2; - RL78_STACK_PUSH (tmp1); - } - break; + case R_RL78_ABS24S_PCREL: + case R_RL78_ABS24S: + RANGE (-0x800000, 0x7fffff); + OP (0) = relocation; + OP (1) = relocation >> 8; + OP (2) = relocation >> 16; + break; - case R_RL78_OPxor: - { - int32_t tmp1, tmp2; + case R_RL78_ABS16: + RANGE (-32768, 65535); + OP (0) = relocation; + OP (1) = relocation >> 8; + break; - RL78_STACK_POP (tmp2); - RL78_STACK_POP (tmp1); - tmp1 ^= tmp2; - RL78_STACK_PUSH (tmp1); - } - break; + case R_RL78_ABS16_REV: + RANGE (-32768, 65535); + OP (1) = relocation; + OP (0) = relocation >> 8; + break; - case R_RL78_OPnot: - { - int32_t tmp; + case R_RL78_ABS16S_PCREL: + case R_RL78_ABS16S: + RANGE (-32768, 32767); + OP (0) = relocation; + OP (1) = relocation >> 8; + break; - RL78_STACK_POP (tmp); - tmp = ~ tmp; - RL78_STACK_PUSH (tmp); - } - break; + case R_RL78_ABS16U: + case R_RL78_ABS16UL: + case R_RL78_ABS16UW: + RANGE (0, 65536); + OP (0) = relocation; + OP (1) = relocation >> 8; + break; - case R_RL78_OPmod: - { - int32_t tmp1, tmp2; + case R_RL78_ABS8: + RANGE (-128, 255); + OP (0) = relocation; + break; - RL78_STACK_POP (tmp2); - RL78_STACK_POP (tmp1); - tmp1 %= tmp2; - RL78_STACK_PUSH (tmp1); - } + case R_RL78_ABS8U: + case R_RL78_ABS8UL: + case R_RL78_ABS8UW: + RANGE (0, 255); + OP (0) = relocation; + break; + + case R_RL78_ABS8S_PCREL: + case R_RL78_ABS8S: + RANGE (-128, 127); + OP (0) = relocation; + break; + + default: + break; + } + break; + + case R_RL78_SYM: + if (r_symndx < symtab_hdr->sh_info) + relocation = sec->output_section->vma + sec->output_offset + + sym->st_value + rel->r_addend; + else if (h != NULL + && (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak)) + relocation = h->root.u.def.value + + sec->output_section->vma + + sec->output_offset + + rel->r_addend; + else + { + relocation = 0; + if (h->root.type != bfd_link_hash_undefweak) + _bfd_error_handler (_("Warning: RL78_SYM reloc with an unknown symbol")); + } + (void) rl78_compute_complex_reloc (r_type, relocation, input_section); break; case R_RL78_OPromtop: - RL78_STACK_PUSH (get_romstart (&r, info, input_bfd, input_section, rel->r_offset)); + relocation = get_romstart (&r, info, input_bfd, input_section, rel->r_offset); + (void) rl78_compute_complex_reloc (r_type, relocation, input_section); break; case R_RL78_OPramtop: - RL78_STACK_PUSH (get_ramstart (&r, info, input_bfd, input_section, rel->r_offset)); + relocation = get_ramstart (&r, info, input_bfd, input_section, rel->r_offset); + (void) rl78_compute_complex_reloc (r_type, relocation, input_section); break; default: @@ -1018,6 +1157,18 @@ bfd_elf32_rl78_set_target_flags (bfd_boolean user_no_warn_mismatch) no_warn_mismatch = user_no_warn_mismatch; } +static const char * +rl78_cpu_name (flagword flags) +{ + switch (flags & E_FLAG_RL78_CPU_MASK) + { + default: return ""; + case E_FLAG_RL78_G10: return "G10"; + case E_FLAG_RL78_G13: return "G13"; + case E_FLAG_RL78_G14: return "G14"; + } +} + /* Merge backend specific data from an object file to the output object file when linking. */ @@ -1041,17 +1192,44 @@ rl78_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd) { flagword changed_flags = old_flags ^ new_flags; - if (changed_flags & E_FLAG_RL78_G10) + if (changed_flags & E_FLAG_RL78_CPU_MASK) { - (*_bfd_error_handler) - (_("RL78/G10 ABI conflict: cannot link G10 and non-G10 objects together")); + flagword out_cpu = old_flags & E_FLAG_RL78_CPU_MASK; + flagword in_cpu = new_flags & E_FLAG_RL78_CPU_MASK; - if (old_flags & E_FLAG_RL78_G10) - (*_bfd_error_handler) (_("- %s is G10, %s is not"), - bfd_get_filename (obfd), bfd_get_filename (ibfd)); + if (in_cpu == E_FLAG_RL78_ANY_CPU || in_cpu == out_cpu) + /* It does not matter what new_cpu may have. */; + else if (out_cpu == E_FLAG_RL78_ANY_CPU) + { + if (in_cpu == E_FLAG_RL78_G10) + { + /* G10 files can only be linked with other G10 files. + If the output is set to "any" this means that it is + a G14 file that does not use hardware multiply/divide, + but that is still incompatible with the G10 ABI. */ + error = TRUE; + + (*_bfd_error_handler) + (_("RL78 ABI conflict: G10 file %s cannot be linked with %s file %s"), + bfd_get_filename (ibfd), + rl78_cpu_name (out_cpu), bfd_get_filename (obfd)); + } + else + { + old_flags &= ~ E_FLAG_RL78_CPU_MASK; + old_flags |= in_cpu; + elf_elfheader (obfd)->e_flags = old_flags; + } + } else - (*_bfd_error_handler) (_("- %s is G10, %s is not"), - bfd_get_filename (ibfd), bfd_get_filename (obfd)); + { + error = TRUE; + + (*_bfd_error_handler) + (_("RL78 ABI conflict: cannot link %s file %s with %s file %s"), + rl78_cpu_name (in_cpu), bfd_get_filename (ibfd), + rl78_cpu_name (out_cpu), bfd_get_filename (obfd)); + } } if (changed_flags & E_FLAG_RL78_64BIT_DOUBLES) @@ -1065,6 +1243,7 @@ rl78_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd) else (*_bfd_error_handler) (_("- %s is 64-bit, %s is not"), bfd_get_filename (ibfd), bfd_get_filename (obfd)); + error = TRUE; } } @@ -1085,8 +1264,8 @@ rl78_elf_print_private_bfd_data (bfd * abfd, void * ptr) flags = elf_elfheader (abfd)->e_flags; fprintf (file, _("private flags = 0x%lx:"), (long) flags); - if (flags & E_FLAG_RL78_G10) - fprintf (file, _(" [G10]")); + if (flags & E_FLAG_RL78_CPU_MASK) + fprintf (file, " [%s]", rl78_cpu_name (flags)); if (flags & E_FLAG_RL78_64BIT_DOUBLES) fprintf (file, _(" [64-bit doubles]")); @@ -1098,12 +1277,9 @@ rl78_elf_print_private_bfd_data (bfd * abfd, void * ptr) /* Return the MACH for an e_flags value. */ static int -elf32_rl78_machine (bfd * abfd) +elf32_rl78_machine (bfd * abfd ATTRIBUTE_UNUSED) { - if ((elf_elfheader (abfd)->e_flags & EF_RL78_CPU_MASK) == EF_RL78_CPU_RL78) - return bfd_mach_rl78; - - return 0; + return bfd_mach_rl78; } static bfd_boolean @@ -1240,7 +1416,7 @@ rl78_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED, this check if we're relaxing. Unfortunately, check_relocs is called before relaxation. */ - if (info->relax_trip > 0) + if (info->relax_trip > 0) return TRUE; if ((dynobj = elf_hash_table (info)->dynobj) != NULL @@ -1473,7 +1649,7 @@ rl78_elf_relax_plt_section (bfd *dynobj, static bfd_boolean elf32_rl78_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count, - Elf_Internal_Rela *alignment_rel, int force_snip) + Elf_Internal_Rela *alignment_rel, int force_snip) { Elf_Internal_Shdr * symtab_hdr; unsigned int sec_shndx; @@ -1651,22 +1827,21 @@ reloc_bubblesort (Elf_Internal_Rela * r, int count) #define OFFSET_FOR_RELOC(rel, lrel, scale) \ rl78_offset_for_reloc (abfd, rel + 1, symtab_hdr, shndx_buf, intsyms, \ - lrel, abfd, sec, link_info, scale) + lrel, abfd, sec, link_info, scale) static bfd_vma rl78_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) + 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; @@ -1675,7 +1850,7 @@ rl78_offset_for_reloc (bfd * abfd, gets a pointer to the last relocation used. */ while (1) { - int32_t tmp1, tmp2; + unsigned long r_type; /* Get the value of the symbol referred to by the reloc. */ if (ELF32_R_SYM (rel->r_info) < symtab_hdr->sh_info) @@ -1749,135 +1924,57 @@ rl78_offset_for_reloc (bfd * abfd, symval += rel->r_addend; } - switch (ELF32_R_TYPE (rel->r_info)) + r_type = ELF32_R_TYPE (rel->r_info); + switch (r_type) { case R_RL78_SYM: - RL78_STACK_PUSH (symval); + (void) rl78_compute_complex_reloc (r_type, symval, input_section); break; - case R_RL78_OPneg: - RL78_STACK_POP (tmp1); - tmp1 = - tmp1; - RL78_STACK_PUSH (tmp1); + case R_RL78_OPromtop: + symval = get_romstart (NULL, info, input_bfd, input_section, rel->r_offset); + (void) rl78_compute_complex_reloc (r_type, symval, input_section); break; - case R_RL78_OPadd: - RL78_STACK_POP (tmp1); - RL78_STACK_POP (tmp2); - tmp1 += tmp2; - RL78_STACK_PUSH (tmp1); + case R_RL78_OPramtop: + symval = get_ramstart (NULL, info, input_bfd, input_section, rel->r_offset); + (void) rl78_compute_complex_reloc (r_type, symval, input_section); break; + case R_RL78_OPneg: + case R_RL78_OPadd: case R_RL78_OPsub: - RL78_STACK_POP (tmp1); - RL78_STACK_POP (tmp2); - tmp2 -= tmp1; - RL78_STACK_PUSH (tmp2); - break; - case R_RL78_OPmul: - RL78_STACK_POP (tmp1); - RL78_STACK_POP (tmp2); - tmp1 *= tmp2; - RL78_STACK_PUSH (tmp1); - break; - case R_RL78_OPdiv: - RL78_STACK_POP (tmp1); - RL78_STACK_POP (tmp2); - tmp1 /= tmp2; - RL78_STACK_PUSH (tmp1); - break; - case R_RL78_OPshla: - RL78_STACK_POP (tmp1); - RL78_STACK_POP (tmp2); - tmp1 <<= tmp2; - RL78_STACK_PUSH (tmp1); - break; - case R_RL78_OPshra: - RL78_STACK_POP (tmp1); - RL78_STACK_POP (tmp2); - tmp1 >>= tmp2; - RL78_STACK_PUSH (tmp1); - break; - case R_RL78_OPsctsize: - RL78_STACK_PUSH (input_section->size); - break; - case R_RL78_OPscttop: - RL78_STACK_PUSH (input_section->output_section->vma); - break; - case R_RL78_OPand: - RL78_STACK_POP (tmp1); - RL78_STACK_POP (tmp2); - tmp1 &= tmp2; - RL78_STACK_PUSH (tmp1); - break; - case R_RL78_OPor: - RL78_STACK_POP (tmp1); - RL78_STACK_POP (tmp2); - tmp1 |= tmp2; - RL78_STACK_PUSH (tmp1); - break; - case R_RL78_OPxor: - RL78_STACK_POP (tmp1); - RL78_STACK_POP (tmp2); - tmp1 ^= tmp2; - RL78_STACK_PUSH (tmp1); - break; - case R_RL78_OPnot: - RL78_STACK_POP (tmp1); - tmp1 = ~ tmp1; - RL78_STACK_PUSH (tmp1); - break; - case R_RL78_OPmod: - RL78_STACK_POP (tmp1); - RL78_STACK_POP (tmp2); - tmp1 %= tmp2; - RL78_STACK_PUSH (tmp1); - break; - - case R_RL78_OPromtop: - RL78_STACK_PUSH (get_romstart (&r, info, input_bfd, input_section, rel->r_offset)); - break; - - case R_RL78_OPramtop: - RL78_STACK_PUSH (get_ramstart (&r, info, input_bfd, input_section, rel->r_offset)); + (void) rl78_compute_complex_reloc (r_type, 0, input_section); break; case R_RL78_DIR16UL: case R_RL78_DIR8UL: case R_RL78_ABS16UL: case R_RL78_ABS8UL: - if (rl78_stack_top) - RL78_STACK_POP (symval); - if (lrel) - *lrel = rel; *scale = 4; - return symval; + goto reloc_computes_value; case R_RL78_DIR16UW: case R_RL78_DIR8UW: case R_RL78_ABS16UW: case R_RL78_ABS8UW: - if (rl78_stack_top) - RL78_STACK_POP (symval); - if (lrel) - *lrel = rel; *scale = 2; - return symval; - + goto reloc_computes_value; + default: - if (rl78_stack_top) - RL78_STACK_POP (symval); + reloc_computes_value: + symval = rl78_compute_complex_reloc (r_type, 0, input_section); if (lrel) *lrel = rel; return symval; @@ -2129,8 +2226,8 @@ rl78_elf_relax_section nbytes /= alignment; nbytes *= alignment; - elf32_rl78_relax_delete_bytes (abfd, sec, erel->r_offset-nbytes, nbytes, next_alignment, - erel->r_offset == sec->size); + elf32_rl78_relax_delete_bytes (abfd, sec, erel->r_offset - nbytes, nbytes, + next_alignment, erel->r_offset == sec->size); *again = TRUE; continue; @@ -2163,16 +2260,17 @@ rl78_elf_relax_section pc = sec->output_section->vma + sec->output_offset + srel->r_offset; -#define GET_RELOC \ - BFD_ASSERT (nrelocs > 0); \ - symval = OFFSET_FOR_RELOC (srel, &srel, &scale); \ - pcrel = symval - pc + srel->r_addend; \ +#define GET_RELOC \ + BFD_ASSERT (nrelocs > 0); \ + symval = OFFSET_FOR_RELOC (srel, &srel, &scale); \ + pcrel = symval - pc + srel->r_addend; \ nrelocs --; #define SNIPNR(offset, nbytes) \ elf32_rl78_relax_delete_bytes (abfd, sec, (insn - contents) + offset, nbytes, next_alignment, 0); -#define SNIP(offset, nbytes, newtype) \ - SNIPNR (offset, nbytes); \ + +#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 @@ -2335,10 +2433,10 @@ rl78_elf_relax_section } break; } - } - if ((irel->r_addend & RL78_RELAXA_MASK) == RL78_RELAXA_ADDR16) + if ((irel->r_addend & RL78_RELAXA_MASK) == RL78_RELAXA_ADDR16 + && nrelocs > 0) { /*----------------------------------------------------------------------*/ /* Some insns have both a 16-bit address operand and an 8-bit @@ -2401,13 +2499,10 @@ rl78_elf_relax_section insn[poff] = relax_addr16[idx].insn_for_saddr; SNIP (poff+2, 1, R_RL78_RH_SADDR); } - } } } - /*----------------------------------------------------------------------*/ - } return TRUE; diff --git a/bfd/elf32-rx.c b/bfd/elf32-rx.c index 1bbaeba..8d71628 100644 --- a/bfd/elf32-rx.c +++ b/bfd/elf32-rx.c @@ -49,7 +49,7 @@ void rx_dump_symtab (bfd *, void *, void *); static reloc_howto_type rx_elf_howto_table [] = { - RXREL (NONE, 0, 0, 0, dont, FALSE), + RXREL (NONE, 3, 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), @@ -277,7 +277,7 @@ rx_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, if (code == BFD_RELOC_RX_32_OP) return rx_elf_howto_table + R_RX_DIR32; - for (i = ARRAY_SIZE (rx_reloc_map); --i;) + 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; @@ -309,7 +309,7 @@ rx_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_RX_max) { - _bfd_error_handler (_("%A: invalid RX reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid RX reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = rx_elf_howto_table + r_type; @@ -1561,6 +1561,18 @@ elf32_rx_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count, irel = elf_section_data (sec)->relocs; irelend = irel + sec->reloc_count; + if (irel == NULL && sec->reloc_count > 0) + { + /* If the relocs have not been kept in the section data + structure (because -no-keep-memory was used) then + reread them now. */ + irel = (_bfd_elf_link_read_relocs + (abfd, sec, NULL, (Elf_Internal_Rela *) NULL, FALSE)); + if (irel == NULL) + /* FIXME: Return FALSE instead ? */ + irelend = irel; + } + /* Actually delete the bytes. */ memmove (contents + addr, contents + addr + count, (size_t) (toaddr - addr - count)); @@ -1574,7 +1586,7 @@ elf32_rx_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count, memset (contents + toaddr - count, 0x03, count); /* Adjust all the relocs. */ - for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++) + for (; irel < irelend; irel++) { /* Get the new reloc address. */ if (irel->r_offset > addr @@ -3074,6 +3086,9 @@ describe_flags (flagword flags) else strcat (buf, ", GCC ABI"); + if (flags & E_FLAG_RX_SINSNS_SET) + strcat (buf, flags & E_FLAG_RX_SINSNS_YES ? ", uses String instructions" : ", bans String instructions"); + return buf; } @@ -3100,8 +3115,22 @@ rx_elf_merge_private_bfd_data (bfd * ibfd, bfd * obfd) { flagword known_flags; + if (old_flags & E_FLAG_RX_SINSNS_SET) + { + if ((new_flags & E_FLAG_RX_SINSNS_SET) == 0) + { + new_flags &= ~ E_FLAG_RX_SINSNS_MASK; + new_flags |= (old_flags & E_FLAG_RX_SINSNS_MASK); + } + } + else if (new_flags & E_FLAG_RX_SINSNS_SET) + { + old_flags &= ~ E_FLAG_RX_SINSNS_MASK; + old_flags |= (new_flags & E_FLAG_RX_SINSNS_MASK); + } + known_flags = E_FLAG_RX_ABI | E_FLAG_RX_64BIT_DOUBLES - | E_FLAG_RX_DSP | E_FLAG_RX_PID; + | E_FLAG_RX_DSP | E_FLAG_RX_PID | E_FLAG_RX_SINSNS_MASK; if ((old_flags ^ new_flags) & known_flags) { diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c index ff89b34..19ba044 100644 --- a/bfd/elf32-s390.c +++ b/bfd/elf32-s390.c @@ -39,7 +39,7 @@ static reloc_howto_type elf_howto_table[] = { HOWTO (R_390_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = 2 byte, 2 = 4 byte) */ + 3, /* size (0 = byte, 1 = 2 byte, 2 = 4 byte) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -3980,9 +3980,18 @@ elf_s390_plt_sym_val (bfd_vma i, const asection *plt, return plt->vma + PLT_FIRST_ENTRY_SIZE + i * PLT_ENTRY_SIZE; } +/* Merge backend specific data from an object file to the output + object file when linking. */ + static bfd_boolean elf32_s390_merge_private_bfd_data (bfd *ibfd, bfd *obfd) { + if (!is_s390_elf (ibfd) || !is_s390_elf (obfd)) + return TRUE; + + if (!elf_s390_merge_obj_attributes (ibfd, obfd)) + return FALSE; + elf_elfheader (obfd)->e_flags |= elf_elfheader (ibfd)->e_flags; return TRUE; } @@ -4028,6 +4037,7 @@ elf32_s390_merge_private_bfd_data (bfd *ibfd, bfd *obfd) #define elf_backend_grok_prstatus elf_s390_grok_prstatus #define elf_backend_plt_sym_val elf_s390_plt_sym_val #define elf_backend_add_symbol_hook elf_s390_add_symbol_hook +#define elf_backend_sort_relocs_p elf_s390_elf_sort_relocs_p #define bfd_elf32_mkobject elf_s390_mkobject #define elf_backend_object_p elf_s390_object_p diff --git a/bfd/elf32-score.c b/bfd/elf32-score.c index 1ecc9ff..710e6b6 100644 --- a/bfd/elf32-score.c +++ b/bfd/elf32-score.c @@ -645,7 +645,7 @@ static reloc_howto_type elf32_score_howto_table[] = /* No relocation. */ HOWTO (R_SCORE_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ diff --git a/bfd/elf32-score7.c b/bfd/elf32-score7.c index 8c4b69f..e23f67d 100644 --- a/bfd/elf32-score7.c +++ b/bfd/elf32-score7.c @@ -546,7 +546,7 @@ static reloc_howto_type elf32_score_howto_table[] = /* No relocation. */ HOWTO (R_SCORE_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ diff --git a/bfd/elf32-sh-relocs.h b/bfd/elf32-sh-relocs.h index 8f1db0f..bea900c 100644 --- a/bfd/elf32-sh-relocs.h +++ b/bfd/elf32-sh-relocs.h @@ -20,7 +20,7 @@ /* No relocation. */ HOWTO (R_SH_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c index 04e588d..567ef24 100644 --- a/bfd/elf32-sh.c +++ b/bfd/elf32-sh.c @@ -255,6 +255,11 @@ sh_elf_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol_in, && bfd_is_und_section (symbol_in->section)) return bfd_reloc_undefined; + /* PR 17512: file: 9891ca98. */ + if (addr * bfd_octets_per_byte (abfd) + bfd_get_reloc_size (reloc_entry->howto) + > bfd_get_section_limit_octets (abfd, input_section)) + return bfd_reloc_outofrange; + if (bfd_is_com_section (symbol_in->section)) sym_value = 0; else @@ -474,13 +479,19 @@ sh_elf_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst) r = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r < (unsigned int) R_SH_max); - BFD_ASSERT (r < R_SH_FIRST_INVALID_RELOC || r > R_SH_LAST_INVALID_RELOC); - BFD_ASSERT (r < R_SH_FIRST_INVALID_RELOC_2 || r > R_SH_LAST_INVALID_RELOC_2); - 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); + if (r >= R_SH_max + || (r >= R_SH_FIRST_INVALID_RELOC && r <= R_SH_LAST_INVALID_RELOC) + || (r >= R_SH_FIRST_INVALID_RELOC_2 && r <= R_SH_LAST_INVALID_RELOC_2) + || (r >= R_SH_FIRST_INVALID_RELOC_3 && r <= R_SH_LAST_INVALID_RELOC_3) + || (r >= R_SH_FIRST_INVALID_RELOC_4 && r <= R_SH_LAST_INVALID_RELOC_4) + || (r >= R_SH_FIRST_INVALID_RELOC_5 && r <= R_SH_LAST_INVALID_RELOC_5) + || (r >= R_SH_FIRST_INVALID_RELOC_6 && r <= R_SH_LAST_INVALID_RELOC_6)) + { + (*_bfd_error_handler) (_("%B: unrecognised SH reloc number: %d"), + abfd, r); + bfd_set_error (bfd_error_bad_value); + r = R_SH_NONE; + } cache_ptr->howto = get_howto_table (abfd) + r; } diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c index ace7c29..4472b3a 100644 --- a/bfd/elf32-spu.c +++ b/bfd/elf32-spu.c @@ -37,7 +37,7 @@ static bfd_reloc_status_type spu_elf_rel9 (bfd *, arelent *, asymbol *, array, so it must be declared in the order of that type. */ static reloc_howto_type elf_howto_table[] = { - HOWTO (R_SPU_NONE, 0, 0, 0, FALSE, 0, complain_overflow_dont, + HOWTO (R_SPU_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont, bfd_elf_generic_reloc, "SPU_NONE", FALSE, 0, 0x00000000, FALSE), HOWTO (R_SPU_ADDR10, 4, 2, 10, FALSE, 14, complain_overflow_bitfield, @@ -105,6 +105,8 @@ spu_elf_bfd_to_reloc_type (bfd_reloc_code_real_type code) switch (code) { default: + return (enum elf_spu_reloc_type) -1; + case BFD_RELOC_NONE: return R_SPU_NONE; case BFD_RELOC_SPU_IMM10W: return R_SPU_ADDR10; @@ -151,7 +153,14 @@ spu_elf_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, enum elf_spu_reloc_type r_type; r_type = (enum elf_spu_reloc_type) ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r_type < R_SPU_max); + /* PR 17512: file: 90c2a92e. */ + if (r_type >= R_SPU_max) + { + (*_bfd_error_handler) (_("%B: unrecognised SPU reloc number: %d"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_SPU_NONE; + } cache_ptr->howto = &elf_howto_table[(int) r_type]; } @@ -161,7 +170,7 @@ spu_elf_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, { enum elf_spu_reloc_type r_type = spu_elf_bfd_to_reloc_type (code); - if (r_type == R_SPU_NONE) + if (r_type == (enum elf_spu_reloc_type) -1) return NULL; return elf_howto_table + r_type; diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c index f29a06d..8bfad84 100644 --- a/bfd/elf32-tic6x.c +++ b/bfd/elf32-tic6x.c @@ -152,7 +152,7 @@ static reloc_howto_type elf32_tic6x_howto_table[] = { HOWTO (R_C6000_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -820,7 +820,7 @@ static reloc_howto_type elf32_tic6x_howto_table_rel[] = { HOWTO (R_C6000_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ diff --git a/bfd/elf32-tilepro.c b/bfd/elf32-tilepro.c index 3d2bbde..f573978 100644 --- a/bfd/elf32-tilepro.c +++ b/bfd/elf32-tilepro.c @@ -34,11 +34,11 @@ static reloc_howto_type tilepro_elf_howto_table [] = /* This reloc does nothing. */ HOWTO (R_TILEPRO_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_TILEPRO_NONE", /* name */ FALSE, /* partial_inplace */ @@ -774,7 +774,7 @@ tilepro_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, { unsigned int i; - for (i = ARRAY_SIZE (tilepro_reloc_map); --i;) + for (i = ARRAY_SIZE (tilepro_reloc_map); i--;) { const reloc_map * entry; diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c index 31cbcc9..ae96ec2 100644 --- a/bfd/elf32-v850.c +++ b/bfd/elf32-v850.c @@ -494,7 +494,7 @@ v850_elf_perform_relocation (bfd *abfd, { default: #ifdef DEBUG - fprintf (stderr, "reloc number %d not recognised\n", r_type); + fprintf (stderr, "%B: reloc number %d not recognised\n", abfd, r_type); #endif return bfd_reloc_notsupported; @@ -895,11 +895,11 @@ static reloc_howto_type v850_elf_howto_table[] = /* This reloc does nothing. */ HOWTO (R_V850_NONE, /* Type. */ 0, /* Rightshift. */ - 2, /* Size (0 = byte, 1 = short, 2 = long). */ - 32, /* Bitsize. */ + 3, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ FALSE, /* PC_relative. */ 0, /* Bitpos. */ - complain_overflow_bitfield, /* Complain_on_overflow. */ + complain_overflow_dont, /* Complain_on_overflow. */ bfd_elf_generic_reloc, /* Special_function. */ "R_V850_NONE", /* Name. */ FALSE, /* Partial_inplace. */ @@ -1898,7 +1898,7 @@ v850_elf_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_V850_max) { - _bfd_error_handler (_("%A: invalid V850 reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid V850 reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &v850_elf_howto_table[r_type]; @@ -1914,7 +1914,11 @@ v850_elf_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, unsigned int r_type; r_type = ELF32_R_TYPE (dst->r_info); - BFD_ASSERT (r_type < (unsigned int) R_V850_max); + if (r_type >= (unsigned int) R_V850_max) + { + _bfd_error_handler (_("%B: invalid V850 reloc number: %d"), abfd, r_type); + r_type = 0; + } cache_ptr->howto = &v850_elf_howto_table[r_type]; } @@ -2143,7 +2147,7 @@ v850_elf_final_link_relocate (reloc_howto_type *howto, default: #ifdef DEBUG - fprintf (stderr, "reloc number %d not recognised\n", r_type); + fprintf (stderr, "%B: reloc number %d not recognised\n", input_bfd, r_type); #endif return bfd_reloc_notsupported; } @@ -2340,6 +2344,327 @@ v850_elf_gc_mark_hook (asection *sec, return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym); } +static void +v850_set_note (bfd * abfd, asection * s, enum v850_notes note, unsigned int val) +{ + bfd_byte * data = s->contents + ((note - 1) * SIZEOF_V850_NOTE); + + bfd_put_32 (abfd, 4, data + 0); + bfd_put_32 (abfd, 4, data + 4); + bfd_put_32 (abfd, note, data + 8); + memcpy (data + 12, V850_NOTE_NAME, 4); + bfd_put_32 (abfd, val, data + 16); +} + +/* Create the note section if not already present. This is done early so + that the linker maps the sections to the right place in the output. */ + +static asection * +v850_elf_make_note_section (bfd * abfd) +{ + asection *s; + bfd_byte *data; + flagword flags; + enum v850_notes id; + + /* Make the note section. */ + flags = SEC_READONLY | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_MERGE; + + s = bfd_make_section_anyway_with_flags (abfd, V850_NOTE_SECNAME, flags); + if (s == NULL) + return NULL; + + if (!bfd_set_section_alignment (abfd, s, 2)) + return NULL; + + /* Allocate space for all known notes. */ + if (!bfd_set_section_size (abfd, s, NUM_V850_NOTES * SIZEOF_V850_NOTE)) + return NULL; + + data = bfd_zalloc (abfd, NUM_V850_NOTES * SIZEOF_V850_NOTE); + if (data == NULL) + return NULL; + + s->contents = data; + + /* Provide default (= uninitilaised) values for all of the notes. */ + for (id = V850_NOTE_ALIGNMENT; id <= NUM_V850_NOTES; id++) + v850_set_note (abfd, s, id, 0); + + return s; +} + +/* Create the note section if not already present. This is done early so + that the linker maps the sections to the right place in the output. */ + +bfd_boolean +v850_elf_create_sections (struct bfd_link_info * info) +{ + bfd * ibfd; + + /* If we already have a note section, do not make another. */ + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next) + if (bfd_get_section_by_name (ibfd, V850_NOTE_SECNAME) != NULL) + return TRUE; + + return v850_elf_make_note_section (info->input_bfds) != NULL; +} + +bfd_boolean +v850_elf_set_note (bfd * abfd, enum v850_notes note, unsigned int val) +{ + asection * notes = bfd_get_section_by_name (abfd, V850_NOTE_SECNAME); + + if (val > 2) + /* At the moment, no known note has a value over 2. */ + return FALSE; + + if (notes == NULL) + notes = v850_elf_make_note_section (abfd); + if (notes == NULL) + return FALSE; + + v850_set_note (abfd, notes, note, val); + return TRUE; +} + +/* Copy backend specific data from one object module to another. */ + +static bfd_boolean +v850_elf_copy_private_bfd_data (bfd * ibfd, bfd * obfd) +{ + asection * onotes; + asection * inotes; + + /* If the output bfd does not have a note section, then + skip the merge. The normal input to output section + copying will take care of everythng for us. */ + if ((onotes = bfd_get_section_by_name (obfd, V850_NOTE_SECNAME)) == NULL) + return TRUE; + + if ((inotes = bfd_get_section_by_name (ibfd, V850_NOTE_SECNAME)) != NULL) + { + bfd_byte * icont; + bfd_byte * ocont; + + BFD_ASSERT (bfd_section_size (ibfd, inotes) == bfd_section_size (obfd, onotes)); + + if ((icont = elf_section_data (inotes)->this_hdr.contents) == NULL) + BFD_ASSERT (bfd_malloc_and_get_section (ibfd, inotes, & icont)); + + if ((ocont = elf_section_data (onotes)->this_hdr.contents) == NULL) + BFD_ASSERT (bfd_malloc_and_get_section (obfd, onotes, & ocont)); + + /* Copy/overwrite notes from the input to the output. */ + memcpy (ocont, icont, bfd_section_size (obfd, onotes)); + } + + return TRUE; +} +#define bfd_elf32_bfd_copy_private_bfd_data v850_elf_copy_private_bfd_data + +static bfd_boolean +v850_elf_merge_notes (bfd * ibfd, bfd *obfd) +{ + asection * onotes; + asection * inotes; + bfd_boolean result = TRUE; + + /* If the output bfd does not have a note section, then + skip the merge. The normal input to output section + copying will take care of everythng for us. */ + if ((onotes = bfd_get_section_by_name (obfd, V850_NOTE_SECNAME)) == NULL) + return TRUE; + + if ((inotes = bfd_get_section_by_name (ibfd, V850_NOTE_SECNAME)) != NULL) + { + enum v850_notes id; + bfd_byte * icont; + bfd_byte * ocont; + + BFD_ASSERT (bfd_section_size (ibfd, inotes) == bfd_section_size (obfd, onotes)); + + if ((icont = elf_section_data (inotes)->this_hdr.contents) == NULL) + BFD_ASSERT (bfd_malloc_and_get_section (ibfd, inotes, & icont)); + + if ((ocont = elf_section_data (onotes)->this_hdr.contents) == NULL) + BFD_ASSERT (bfd_malloc_and_get_section (obfd, onotes, & ocont)); + + for (id = V850_NOTE_ALIGNMENT; id <= NUM_V850_NOTES; id++) + { + unsigned int ival; + unsigned int oval; + bfd_byte * idata = icont + ((id - 1) * SIZEOF_V850_NOTE) + 16; + bfd_byte * odata = ocont + ((id - 1) * SIZEOF_V850_NOTE) + 16; + + ival = bfd_get_32 (ibfd, idata); + oval = bfd_get_32 (obfd, odata); + + if (ival == 0 || ival == oval) + continue; + + if (oval == 0) + { + bfd_put_32 (obfd, ival, odata); + v850_set_note (obfd, onotes, id, ival); + continue; + } + + /* We have a mismatch. The ABI defines how to handle + this siutation on a per note type basis. */ + switch (id) + { + case V850_NOTE_ALIGNMENT: + if (oval == EF_RH850_DATA_ALIGN4) + { + _bfd_error_handler + (_("error: %B needs 8-byte aligment but %B is set for 4-byte alignment"), + ibfd, obfd); + result = FALSE; + } + else + /* ibfd uses 4-byte alignment, obfd uses 8-byte alignment. + Leave the obfd alignment as it is. */ + BFD_ASSERT (oval == EF_RH850_DATA_ALIGN8); + + break; + + case V850_NOTE_DATA_SIZE: + if (oval == EF_RH850_DOUBLE32) + { + _bfd_error_handler (_("error: %B uses 64-bit doubles but %B uses 32-bit doubles"), + ibfd, obfd); + result = FALSE; + } + else + /* ibfd uses 32-bit doubles, obfd uses 64-bit doubles. + This is acceptable. Honest, that is what the ABI says. */ + BFD_ASSERT (oval == EF_RH850_DOUBLE64); + break; + + case V850_NOTE_FPU_INFO: + if (oval == EF_RH850_FPU20) + { + _bfd_error_handler (_("error: %B uses FPU-3.0 but %B only supports FPU-2.0"), + ibfd, obfd); + result = FALSE; + } + else + /* ibfd uses FPU-2.0, obfd uses FPU-3.0. Leave obfd as it is. */ + BFD_ASSERT (oval == EF_RH850_FPU30); + + break; + + default: + /* None of the other conflicts matter. + Stick with the current output values. */ + break; + } + } + + /* FIXME: We should also check for conflicts between the notes + and the EF flags in the ELF header. */ + } + + return result; +} + +static void +print_v850_note (bfd * abfd, FILE * file, bfd_byte * data, enum v850_notes id) +{ + unsigned int value = bfd_get_32 (abfd, data + ((id - 1) * SIZEOF_V850_NOTE) + 16); + + switch (id) + { + case V850_NOTE_ALIGNMENT: + fprintf (file, _(" alignment of 8-byte entities: ")); + switch (value) + { + case EF_RH850_DATA_ALIGN4: fprintf (file, _("4-byte")); break; + case EF_RH850_DATA_ALIGN8: fprintf (file, _("8-byte")); break; + case 0: fprintf (file, _("not set")); break; + default: fprintf (file, _("unknown: %x"), value); break; + } + fputc ('\n', file); + break; + + case V850_NOTE_DATA_SIZE: + fprintf (file, _(" size of doubles: ")); + switch (value) + { + case EF_RH850_DOUBLE32: fprintf (file, _("4-bytes")); break; + case EF_RH850_DOUBLE64: fprintf (file, _("8-bytes")); break; + case 0: fprintf (file, _("not set")); break; + default: fprintf (file, _("unknown: %x"), value); break; + } + fputc ('\n', file); + break; + + case V850_NOTE_FPU_INFO: + fprintf (file, _(" FPU support required: ")); + switch (value) + { + case EF_RH850_FPU20: fprintf (file, _("FPU-2.0")); break; + case EF_RH850_FPU30: fprintf (file, _("FPU-3.0")); break; + case 0: fprintf (file, _("none")); break; + default: fprintf (file, _("unknown: %x"), value); break; + } + fputc ('\n', file); + break; + + case V850_NOTE_SIMD_INFO: + fprintf (file, _("SIMD use: ")); + switch (value) + { + case EF_RH850_SIMD: fprintf (file, _("yes")); break; + case 0: fprintf (file, _("no")); break; + default: fprintf (file, _("unknown: %x"), value); break; + } + fputc ('\n', file); + break; + + case V850_NOTE_CACHE_INFO: + fprintf (file, _("CACHE use: ")); + switch (value) + { + case EF_RH850_CACHE: fprintf (file, _("yes")); break; + case 0: fprintf (file, _("no")); break; + default: fprintf (file, _("unknown: %x"), value); break; + } + fputc ('\n', file); + break; + + case V850_NOTE_MMU_INFO: + fprintf (file, _("MMU use: ")); + switch (value) + { + case EF_RH850_MMU: fprintf (file, _("yes")); break; + case 0: fprintf (file, _("no")); break; + default: fprintf (file, _("unknown: %x"), value); break; + } + fputc ('\n', file); + break; + + default: + BFD_ASSERT (0); + } +} + +static void +v850_elf_print_notes (bfd * abfd, FILE * file) +{ + asection * notes = bfd_get_section_by_name (abfd, V850_NOTE_SECNAME); + enum v850_notes id; + + if (notes == NULL || notes->contents == NULL) + return; + + BFD_ASSERT (bfd_section_size (abfd, notes) == NUM_V850_NOTES * SIZEOF_V850_NOTE); + + for (id = V850_NOTE_ALIGNMENT; id <= NUM_V850_NOTES; id++) + print_v850_note (abfd, file, notes->contents, id); +} + /* Set the right machine number and architecture. */ static bfd_boolean @@ -2435,11 +2760,14 @@ v850_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) { flagword out_flags; flagword in_flags; + bfd_boolean result = TRUE; if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour || bfd_get_flavour (obfd) != bfd_target_elf_flavour) return TRUE; + result &= v850_elf_merge_notes (ibfd, obfd); + in_flags = elf_elfheader (ibfd)->e_flags; out_flags = elf_elfheader (obfd)->e_flags; @@ -2459,14 +2787,14 @@ v850_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) 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)); + result &= bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), bfd_get_mach (ibfd)); - return TRUE; + return result; } /* Check flag compatibility. */ if (in_flags == out_flags) - return TRUE; + return result; if (bfd_get_arch (obfd) == bfd_arch_v850_rh850) { @@ -2477,14 +2805,7 @@ v850_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) elf_elfheader (obfd)->e_flags |= EF_V800_850E3; } - if ((in_flags & EF_RH850_DATA_ALIGN8) != (out_flags & EF_RH850_DATA_ALIGN8)) - { - _bfd_error_handler (_("%B: Alignment mismatch with previous modules"), - ibfd); - elf_elfheader (obfd)->e_flags |= EF_RH850_DATA_ALIGN8; - } - - return TRUE; + return result; } if ((in_flags & EF_V850_ARCH) != (out_flags & EF_V850_ARCH) @@ -2495,14 +2816,14 @@ v850_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) which we set to v850e. */ if ( (in_flags & EF_V850_ARCH) == E_V850E1_ARCH && (out_flags & EF_V850_ARCH) == E_V850E_ARCH) - return TRUE; + return result; 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; + return result; } if (( (in_flags & EF_V850_ARCH) == E_V850_ARCH @@ -2511,7 +2832,7 @@ v850_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) { elf_elfheader (obfd)->e_flags = ((out_flags & ~ EF_V850_ARCH) | E_V850E2_ARCH); - return TRUE; + return result; } if (( (in_flags & EF_V850_ARCH) == E_V850_ARCH @@ -2521,7 +2842,7 @@ v850_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) { elf_elfheader (obfd)->e_flags = ((out_flags & ~ EF_V850_ARCH) | E_V850E2V3_ARCH); - return TRUE; + return result; } if (( (in_flags & EF_V850_ARCH) == E_V850_ARCH @@ -2532,14 +2853,14 @@ v850_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd) { elf_elfheader (obfd)->e_flags = ((out_flags & ~ EF_V850_ARCH) | E_V850E3V5_ARCH); - return TRUE; + return result; } _bfd_error_handler (_("%B: Architecture mismatch with previous modules"), ibfd); } - return TRUE; + return result; } /* Display the flags field. */ @@ -2564,9 +2885,6 @@ v850_elf_print_private_bfd_data (bfd *abfd, void * ptr) fprintf (file, _("v850 E3 architecture")); else fprintf (file, _("v850 architecture")); - - if (elf_elfheader (abfd)->e_flags & EF_RH850_DATA_ALIGN8) - fprintf (file, _(", 8-byte data alignment")); } else { @@ -2584,6 +2902,8 @@ v850_elf_print_private_bfd_data (bfd *abfd, void * ptr) fputc ('\n', file); + v850_elf_print_notes (abfd, file); + return TRUE; } @@ -2856,6 +3176,12 @@ v850_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED, hdr->sh_type = SHT_V850_TCOMMON; else if (strcmp (name, ".zcommon") == 0) hdr->sh_type = SHT_V850_ZCOMMON; + /* Tweak the section type of .note.renesas. */ + else if (strcmp (name, V850_NOTE_SECNAME) == 0) + { + hdr->sh_type = SHT_RENESAS_INFO; + hdr->sh_entsize = SIZEOF_V850_NOTE; + } return TRUE; } @@ -3797,8 +4123,8 @@ static const struct bfd_elf_special_section v850_elf_special_sections[] = #define elf_backend_gc_mark_hook v850_elf_gc_mark_hook #define elf_backend_special_sections v850_elf_special_sections -#define elf_backend_can_gc_sections 1 -#define elf_backend_rela_normal 1 +#define elf_backend_can_gc_sections 1 +#define elf_backend_rela_normal 1 #define bfd_elf32_bfd_is_local_label_name v850_elf_is_local_label_name #define bfd_elf32_bfd_is_target_special_symbol v850_elf_is_target_special_symbol @@ -3907,7 +4233,6 @@ v800_elf_info_to_howto (bfd * abfd, cache_ptr->howto = v800_elf_howto_table + r_type; } - #undef TARGET_LITTLE_SYM #define TARGET_LITTLE_SYM v800_elf32_vec #undef TARGET_LITTLE_NAME diff --git a/bfd/elf32-vax.c b/bfd/elf32-vax.c index cae0bb2..85fe5f4 100644 --- a/bfd/elf32-vax.c +++ b/bfd/elf32-vax.c @@ -56,7 +56,7 @@ static bfd_boolean elf32_vax_print_private_bfd_data (bfd *, void *); static reloc_howto_type howto_table[] = { HOWTO (R_VAX_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -280,11 +280,19 @@ static reloc_howto_type howto_table[] = { }; static void -rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, - Elf_Internal_Rela *dst) +rtype_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst) { - BFD_ASSERT (ELF32_R_TYPE(dst->r_info) < (unsigned int) R_VAX_max); - cache_ptr->howto = &howto_table[ELF32_R_TYPE(dst->r_info)]; + unsigned int r_type; + + r_type = ELF32_R_TYPE (dst->r_info); + if (r_type >= R_VAX_max) + { + (*_bfd_error_handler) (_("%B: unrecognised VAX reloc number: %d"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_VAX_NONE; + } + cache_ptr->howto = &howto_table[r_type]; } #define elf_info_to_howto rtype_to_howto diff --git a/bfd/elf32-visium.c b/bfd/elf32-visium.c index 5e30467..d6256f6 100644 --- a/bfd/elf32-visium.c +++ b/bfd/elf32-visium.c @@ -33,11 +33,11 @@ static reloc_howto_type visium_elf_howto_table[] = { /* This reloc does nothing. */ HOWTO (R_VISIUM_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_VISIUM_NONE", /* name */ FALSE, /* partial_inplace */ @@ -503,7 +503,7 @@ visium_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, default: if (r_type >= (unsigned int) R_VISIUM_max) { - _bfd_error_handler (_("%A: invalid Visium reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid Visium reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &visium_elf_howto_table[r_type]; diff --git a/bfd/elf32-xc16x.c b/bfd/elf32-xc16x.c index dcce941..33fafe3 100644 --- a/bfd/elf32-xc16x.c +++ b/bfd/elf32-xc16x.c @@ -32,11 +32,11 @@ static reloc_howto_type xc16x_elf_howto_table [] = /* This reloc does nothing. */ HOWTO (R_XC16X_NONE, /* type */ 0, /* rightshift */ - 1, /* size (0 = byte, 1 = short, 2 = long) */ - 16, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_XC16X_NONE", /* name */ FALSE, /* partial_inplace */ diff --git a/bfd/elf32-xgate.c b/bfd/elf32-xgate.c index 59b0197..4c416b3 100644 --- a/bfd/elf32-xgate.c +++ b/bfd/elf32-xgate.c @@ -52,8 +52,8 @@ static reloc_howto_type elf_xgate_howto_table[] = /* This reloc does nothing. */ HOWTO (R_XGATE_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ @@ -424,7 +424,7 @@ xgate_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF32_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_XGATE_max) { - _bfd_error_handler (_("%A: invalid XGate reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid XGate reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_xgate_howto_table[r_type]; diff --git a/bfd/elf32-xstormy16.c b/bfd/elf32-xstormy16.c index 7eae51c..6bf277c 100644 --- a/bfd/elf32-xstormy16.c +++ b/bfd/elf32-xstormy16.c @@ -73,11 +73,11 @@ static reloc_howto_type xstormy16_elf_howto_table [] = /* This reloc does nothing. */ HOWTO (R_XSTORMY16_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_XSTORMY16_NONE", /* name */ FALSE, /* partial_inplace */ @@ -334,7 +334,7 @@ xstormy16_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, { unsigned int i; - for (i = ARRAY_SIZE (xstormy16_reloc_map); --i;) + for (i = ARRAY_SIZE (xstormy16_reloc_map); i--;) { const reloc_map * entry; diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c index 59a1c09..2523670 100644 --- a/bfd/elf32-xtensa.c +++ b/bfd/elf32-xtensa.c @@ -28,6 +28,7 @@ #include "libbfd.h" #include "elf-bfd.h" #include "elf/xtensa.h" +#include "splay-tree.h" #include "xtensa-isa.h" #include "xtensa-config.h" @@ -161,7 +162,7 @@ int elf32xtensa_no_literal_movement = 1; static reloc_howto_type elf_howto_table[] = { - HOWTO (R_XTENSA_NONE, 0, 0, 0, FALSE, 0, complain_overflow_dont, + HOWTO (R_XTENSA_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont, bfd_elf_xtensa_reloc, "R_XTENSA_NONE", FALSE, 0, 0, FALSE), HOWTO (R_XTENSA_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, @@ -481,7 +482,7 @@ elf_xtensa_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, if (r_type >= (unsigned int) R_XTENSA_max) { - _bfd_error_handler (_("%A: invalid XTENSA reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid XTENSA reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_howto_table[r_type]; @@ -1359,10 +1360,14 @@ elf_xtensa_gc_sweep_hook (bfd *abfd, { if (is_plt) { + /* If the symbol has been localized its plt.refcount got moved + to got.refcount. Handle it as GOT. */ if (h->plt.refcount > 0) h->plt.refcount--; + else + is_got = TRUE; } - else if (is_got) + if (is_got) { if (h->got.refcount > 0) h->got.refcount--; @@ -5416,35 +5421,49 @@ struct text_action_struct bfd_vma virtual_offset; /* Zero except for adding literals. */ int removed_bytes; literal_value value; /* Only valid when adding literals. */ +}; + +struct removal_by_action_entry_struct +{ + bfd_vma offset; + int removed; + int eq_removed; + int eq_removed_before_fill; +}; +typedef struct removal_by_action_entry_struct removal_by_action_entry; - text_action *next; +struct removal_by_action_map_struct +{ + unsigned n_entries; + removal_by_action_entry *entry; }; +typedef struct removal_by_action_map_struct removal_by_action_map; /* List of all of the actions taken on a text section. */ struct text_action_list_struct { - text_action *head; + unsigned count; + splay_tree tree; + removal_by_action_map map; }; static text_action * find_fill_action (text_action_list *l, asection *sec, bfd_vma offset) { - text_action **m_p; + text_action a; /* It is not necessary to fill at the end of a section. */ if (sec->size == offset) return NULL; - for (m_p = &l->head; *m_p && (*m_p)->offset <= offset; m_p = &(*m_p)->next) - { - text_action *t = *m_p; - /* When the action is another fill at the same address, - just increase the size. */ - if (t->offset == offset && t->action == ta_fill) - return t; - } + a.offset = offset; + a.action = ta_fill; + + splay_tree_node node = splay_tree_lookup (l->tree, (splay_tree_key)&a); + if (node) + return (text_action *)node->value; return NULL; } @@ -5492,6 +5511,49 @@ adjust_fill_action (text_action *ta, int fill_diff) } +static int +text_action_compare (splay_tree_key a, splay_tree_key b) +{ + text_action *pa = (text_action *)a; + text_action *pb = (text_action *)b; + static const int action_priority[] = + { + [ta_fill] = 0, + [ta_none] = 1, + [ta_convert_longcall] = 2, + [ta_narrow_insn] = 3, + [ta_remove_insn] = 4, + [ta_remove_longcall] = 5, + [ta_remove_literal] = 6, + [ta_widen_insn] = 7, + [ta_add_literal] = 8, + }; + + if (pa->offset == pb->offset) + { + if (pa->action == pb->action) + return 0; + return action_priority[pa->action] - action_priority[pb->action]; + } + else + return pa->offset < pb->offset ? -1 : 1; +} + +static text_action * +action_first (text_action_list *action_list) +{ + splay_tree_node node = splay_tree_min (action_list->tree); + return node ? (text_action *)node->value : NULL; +} + +static text_action * +action_next (text_action_list *action_list, text_action *action) +{ + splay_tree_node node = splay_tree_successor (action_list->tree, + (splay_tree_key)action); + return node ? (text_action *)node->value : NULL; +} + /* Add a modification action to the text. For the case of adding or removing space, modify any current fill and assume that "unreachable_space" bytes can be freely contracted. Note that a @@ -5504,8 +5566,8 @@ text_action_add (text_action_list *l, bfd_vma offset, int removed) { - text_action **m_p; text_action *ta; + text_action a; /* It is not necessary to fill at the end of a section. */ if (action == ta_fill && sec->size == offset) @@ -5515,34 +5577,30 @@ text_action_add (text_action_list *l, if (action == ta_fill && removed == 0) return; - for (m_p = &l->head; *m_p && (*m_p)->offset <= offset; m_p = &(*m_p)->next) + a.action = action; + a.offset = offset; + + if (action == ta_fill) { - text_action *t = *m_p; + splay_tree_node node = splay_tree_lookup (l->tree, (splay_tree_key)&a); - if (action == ta_fill) + if (node) { - /* When the action is another fill at the same address, - just increase the size. */ - if (t->offset == offset && t->action == ta_fill) - { - t->removed_bytes += removed; - return; - } - /* Fills need to happen before widens so that we don't - insert fill bytes into the instruction stream. */ - if (t->offset == offset && t->action == ta_widen_insn) - break; + ta = (text_action *)node->value; + ta->removed_bytes += removed; + return; } } + else + BFD_ASSERT (splay_tree_lookup (l->tree, (splay_tree_key)&a) == NULL); - /* Create a new record and fill it up. */ ta = (text_action *) bfd_zmalloc (sizeof (text_action)); ta->action = action; ta->sec = sec; ta->offset = offset; ta->removed_bytes = removed; - ta->next = (*m_p); - *m_p = ta; + splay_tree_insert (l->tree, (splay_tree_key)ta, (splay_tree_value)ta); + ++l->count; } @@ -5553,7 +5611,6 @@ text_action_add_literal (text_action_list *l, const literal_value *value, int removed) { - text_action **m_p; text_action *ta; asection *sec = r_reloc_get_section (loc); bfd_vma offset = loc->target_offset; @@ -5561,14 +5618,6 @@ text_action_add_literal (text_action_list *l, BFD_ASSERT (action == ta_add_literal); - for (m_p = &l->head; *m_p != NULL; m_p = &(*m_p)->next) - { - if ((*m_p)->offset > offset - && ((*m_p)->offset != offset - || (*m_p)->virtual_offset > virtual_offset)) - break; - } - /* Create a new record and fill it up. */ ta = (text_action *) bfd_zmalloc (sizeof (text_action)); ta->action = action; @@ -5577,8 +5626,10 @@ text_action_add_literal (text_action_list *l, ta->virtual_offset = virtual_offset; ta->value = *value; ta->removed_bytes = removed; - ta->next = (*m_p); - *m_p = ta; + + BFD_ASSERT (splay_tree_lookup (l->tree, (splay_tree_key)ta) == NULL); + splay_tree_insert (l->tree, (splay_tree_key)ta, (splay_tree_value)ta); + ++l->count; } @@ -5589,7 +5640,8 @@ text_action_add_literal (text_action_list *l, so that each search may begin where the previous one left off. */ static int -removed_by_actions (text_action **p_start_action, +removed_by_actions (text_action_list *action_list, + text_action **p_start_action, bfd_vma offset, bfd_boolean before_fill) { @@ -5597,6 +5649,13 @@ removed_by_actions (text_action **p_start_action, int removed = 0; r = *p_start_action; + if (r) + { + splay_tree_node node = splay_tree_lookup (action_list->tree, + (splay_tree_key)r); + BFD_ASSERT (node != NULL && r == (text_action *)node->value); + } + while (r) { if (r->offset > offset) @@ -5608,7 +5667,7 @@ removed_by_actions (text_action **p_start_action, removed += r->removed_bytes; - r = r->next; + r = action_next (action_list, r); } *p_start_action = r; @@ -5619,21 +5678,122 @@ removed_by_actions (text_action **p_start_action, static bfd_vma offset_with_removed_text (text_action_list *action_list, bfd_vma offset) { - text_action *r = action_list->head; - return offset - removed_by_actions (&r, offset, FALSE); + text_action *r = action_first (action_list); + + return offset - removed_by_actions (action_list, &r, offset, FALSE); } static unsigned action_list_count (text_action_list *action_list) { - text_action *r = action_list->head; - unsigned count = 0; - for (r = action_list->head; r != NULL; r = r->next) + return action_list->count; +} + +typedef struct map_action_fn_context_struct map_action_fn_context; +struct map_action_fn_context_struct +{ + int removed; + removal_by_action_map map; + bfd_boolean eq_complete; +}; + +static int +map_action_fn (splay_tree_node node, void *p) +{ + map_action_fn_context *ctx = p; + text_action *r = (text_action *)node->value; + removal_by_action_entry *ientry = ctx->map.entry + ctx->map.n_entries; + + if (ctx->map.n_entries && (ientry - 1)->offset == r->offset) + { + --ientry; + } + else + { + ++ctx->map.n_entries; + ctx->eq_complete = FALSE; + ientry->offset = r->offset; + ientry->eq_removed_before_fill = ctx->removed; + } + + if (!ctx->eq_complete) { - count++; + if (r->action != ta_fill || r->removed_bytes >= 0) + { + ientry->eq_removed = ctx->removed; + ctx->eq_complete = TRUE; + } + else + ientry->eq_removed = ctx->removed + r->removed_bytes; } - return count; + + ctx->removed += r->removed_bytes; + ientry->removed = ctx->removed; + return 0; +} + +static void +map_removal_by_action (text_action_list *action_list) +{ + map_action_fn_context ctx; + + ctx.removed = 0; + ctx.map.n_entries = 0; + ctx.map.entry = bfd_malloc (action_list_count (action_list) * + sizeof (removal_by_action_entry)); + ctx.eq_complete = FALSE; + + splay_tree_foreach (action_list->tree, map_action_fn, &ctx); + action_list->map = ctx.map; +} + +static int +removed_by_actions_map (text_action_list *action_list, bfd_vma offset, + bfd_boolean before_fill) +{ + unsigned a, b; + + if (!action_list->map.entry) + map_removal_by_action (action_list); + + if (!action_list->map.n_entries) + return 0; + + a = 0; + b = action_list->map.n_entries; + + while (b - a > 1) + { + unsigned c = (a + b) / 2; + + if (action_list->map.entry[c].offset <= offset) + a = c; + else + b = c; + } + + if (action_list->map.entry[a].offset < offset) + { + return action_list->map.entry[a].removed; + } + else if (action_list->map.entry[a].offset == offset) + { + return before_fill ? + action_list->map.entry[a].eq_removed_before_fill : + action_list->map.entry[a].eq_removed; + } + else + { + return 0; + } +} + +static bfd_vma +offset_with_removed_text_map (text_action_list *action_list, bfd_vma offset) +{ + int removed = removed_by_actions_map (action_list, offset, FALSE); + return offset - removed; } @@ -5642,28 +5802,26 @@ action_list_count (text_action_list *action_list) static text_action * find_insn_action (text_action_list *action_list, bfd_vma offset) { - text_action *t; - for (t = action_list->head; t; t = t->next) + static const text_action_t action[] = { - if (t->offset == offset) - { - switch (t->action) - { - case ta_none: - case ta_fill: - break; - case ta_remove_insn: - case ta_remove_longcall: - case ta_convert_longcall: - case ta_narrow_insn: - case ta_widen_insn: - return t; - case ta_remove_literal: - case ta_add_literal: - BFD_ASSERT (0); - break; - } - } + ta_convert_longcall, + ta_remove_longcall, + ta_widen_insn, + ta_narrow_insn, + ta_remove_insn, + }; + text_action a; + unsigned i; + + a.offset = offset; + for (i = 0; i < sizeof (action) / sizeof (*action); ++i) + { + splay_tree_node node; + + a.action = action[i]; + node = splay_tree_lookup (action_list->tree, (splay_tree_key)&a); + if (node) + return (text_action *)node->value; } return NULL; } @@ -5672,40 +5830,50 @@ find_insn_action (text_action_list *action_list, bfd_vma offset) #if DEBUG static void -print_action_list (FILE *fp, text_action_list *action_list) +print_action (FILE *fp, text_action *r) +{ + const char *t = "unknown"; + switch (r->action) + { + case ta_remove_insn: + t = "remove_insn"; break; + case ta_remove_longcall: + t = "remove_longcall"; break; + case ta_convert_longcall: + t = "convert_longcall"; break; + case ta_narrow_insn: + t = "narrow_insn"; break; + case ta_widen_insn: + t = "widen_insn"; break; + case ta_fill: + t = "fill"; break; + case ta_none: + t = "none"; break; + case ta_remove_literal: + t = "remove_literal"; break; + case ta_add_literal: + t = "add_literal"; break; + } + + fprintf (fp, "%s: %s[0x%lx] \"%s\" %d\n", + r->sec->owner->filename, + r->sec->name, (unsigned long) r->offset, t, r->removed_bytes); +} + +static int +print_action_list_fn (splay_tree_node node, void *p) { - text_action *r; + text_action *r = (text_action *)node->value; - fprintf (fp, "Text Action\n"); - for (r = action_list->head; r != NULL; r = r->next) - { - const char *t = "unknown"; - switch (r->action) - { - case ta_remove_insn: - t = "remove_insn"; break; - case ta_remove_longcall: - t = "remove_longcall"; break; - case ta_convert_longcall: - t = "convert_longcall"; break; - case ta_narrow_insn: - t = "narrow_insn"; break; - case ta_widen_insn: - t = "widen_insn"; break; - case ta_fill: - t = "fill"; break; - case ta_none: - t = "none"; break; - case ta_remove_literal: - t = "remove_literal"; break; - case ta_add_literal: - t = "add_literal"; break; - } + print_action (p, r); + return 0; +} - fprintf (fp, "%s: %s[0x%lx] \"%s\" %d\n", - r->sec->owner->filename, - r->sec->name, (unsigned long) r->offset, t, r->removed_bytes); - } +static void +print_action_list (FILE *fp, text_action_list *action_list) +{ + fprintf (fp, "Text Action\n"); + splay_tree_foreach (action_list->tree, print_action_list_fn, fp); } #endif /* DEBUG */ @@ -5720,6 +5888,7 @@ print_action_list (FILE *fp, text_action_list *action_list) by the "from" offset field. */ typedef struct removed_literal_struct removed_literal; +typedef struct removed_literal_map_entry_struct removed_literal_map_entry; typedef struct removed_literal_list_struct removed_literal_list; struct removed_literal_struct @@ -5729,10 +5898,19 @@ struct removed_literal_struct removed_literal *next; }; +struct removed_literal_map_entry_struct +{ + bfd_vma addr; + removed_literal *literal; +}; + struct removed_literal_list_struct { removed_literal *head; removed_literal *tail; + + unsigned n_map; + removed_literal_map_entry *map; }; @@ -5781,6 +5959,39 @@ add_removed_literal (removed_literal_list *removed_list, } } +static void +map_removed_literal (removed_literal_list *removed_list) +{ + unsigned n_map = 0; + unsigned i; + removed_literal_map_entry *map = NULL; + removed_literal *r = removed_list->head; + + for (i = 0; r; ++i, r = r->next) + { + if (i == n_map) + { + n_map = (n_map * 2) + 2; + map = bfd_realloc (map, n_map * sizeof (*map)); + } + map[i].addr = r->from.target_offset; + map[i].literal = r; + } + removed_list->map = map; + removed_list->n_map = i; +} + +static int +removed_literal_compare (const void *a, const void *b) +{ + const removed_literal_map_entry *pa = a; + const removed_literal_map_entry *pb = b; + + if (pa->addr == pb->addr) + return 0; + else + return pa->addr < pb->addr ? -1 : 1; +} /* Check if the list of removed literals contains an entry for the given address. Return the entry if found. */ @@ -5788,12 +5999,21 @@ add_removed_literal (removed_literal_list *removed_list, static removed_literal * find_removed_literal (removed_literal_list *removed_list, bfd_vma addr) { - removed_literal *r = removed_list->head; - while (r && r->from.target_offset < addr) - r = r->next; - if (r && r->from.target_offset == addr) - return r; - return NULL; + removed_literal_map_entry *p; + removed_literal *r = NULL; + + if (removed_list->map == NULL) + map_removed_literal (removed_list); + + p = bsearch (&addr, removed_list->map, removed_list->n_map, + sizeof (*removed_list->map), removed_literal_compare); + if (p) + { + while (p != removed_list->map && (p - 1)->addr == addr) + --p; + r = p->literal; + } + return r; } @@ -5907,7 +6127,10 @@ init_xtensa_relax_info (asection *sec) relax_info->removed_list.head = NULL; relax_info->removed_list.tail = NULL; - relax_info->action_list.head = NULL; + relax_info->action_list.tree = splay_tree_new (text_action_compare, + NULL, NULL); + relax_info->action_list.map.n_entries = 0; + relax_info->action_list.map.entry = NULL; relax_info->fix_list = NULL; relax_info->fix_array = NULL; @@ -6619,8 +6842,10 @@ static bfd_boolean compute_text_actions (bfd *, asection *, struct bfd_link_info *); static bfd_boolean compute_ebb_proposed_actions (ebb_constraint *); static bfd_boolean compute_ebb_actions (ebb_constraint *); +typedef struct reloc_range_list_struct reloc_range_list; static bfd_boolean check_section_ebb_pcrels_fit - (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, const ebb_constraint *, + (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, + reloc_range_list *, const ebb_constraint *, const xtensa_opcode *); static bfd_boolean check_section_ebb_reduces (const ebb_constraint *); static void text_action_add_proposed @@ -7219,6 +7444,221 @@ build_reloc_opcodes (bfd *abfd, return reloc_opcodes; } +struct reloc_range_struct +{ + bfd_vma addr; + bfd_boolean add; /* TRUE if start of a range, FALSE otherwise. */ + /* Original irel index in the array of relocations for a section. */ + unsigned irel_index; +}; +typedef struct reloc_range_struct reloc_range; + +typedef struct reloc_range_list_entry_struct reloc_range_list_entry; +struct reloc_range_list_entry_struct +{ + reloc_range_list_entry *next; + reloc_range_list_entry *prev; + Elf_Internal_Rela *irel; + xtensa_opcode opcode; + int opnum; +}; + +struct reloc_range_list_struct +{ + /* The rest of the structure is only meaningful when ok is TRUE. */ + bfd_boolean ok; + + unsigned n_range; /* Number of range markers. */ + reloc_range *range; /* Sorted range markers. */ + + unsigned first; /* Index of a first range element in the list. */ + unsigned last; /* One past index of a last range element in the list. */ + + unsigned n_list; /* Number of list elements. */ + reloc_range_list_entry *reloc; /* */ + reloc_range_list_entry list_root; +}; + +static int +reloc_range_compare (const void *a, const void *b) +{ + const reloc_range *ra = a; + const reloc_range *rb = b; + + if (ra->addr != rb->addr) + return ra->addr < rb->addr ? -1 : 1; + if (ra->add != rb->add) + return ra->add ? -1 : 1; + return 0; +} + +static void +build_reloc_ranges (bfd *abfd, asection *sec, + bfd_byte *contents, + Elf_Internal_Rela *internal_relocs, + xtensa_opcode *reloc_opcodes, + reloc_range_list *list) +{ + unsigned i; + size_t n = 0; + size_t max_n = 0; + reloc_range *ranges = NULL; + reloc_range_list_entry *reloc = + bfd_malloc (sec->reloc_count * sizeof (*reloc)); + + memset (list, 0, sizeof (*list)); + list->ok = TRUE; + + for (i = 0; i < sec->reloc_count; i++) + { + Elf_Internal_Rela *irel = &internal_relocs[i]; + int r_type = ELF32_R_TYPE (irel->r_info); + reloc_howto_type *howto = &elf_howto_table[r_type]; + r_reloc r_rel; + + if (r_type == R_XTENSA_ASM_SIMPLIFY + || r_type == R_XTENSA_32_PCREL + || !howto->pc_relative) + continue; + + r_reloc_init (&r_rel, abfd, irel, contents, + bfd_get_section_limit (abfd, sec)); + + if (r_reloc_get_section (&r_rel) != sec) + continue; + + if (n + 2 > max_n) + { + max_n = (max_n + 2) * 2; + ranges = bfd_realloc (ranges, max_n * sizeof (*ranges)); + } + + ranges[n].addr = irel->r_offset; + ranges[n + 1].addr = r_rel.target_offset; + + ranges[n].add = ranges[n].addr < ranges[n + 1].addr; + ranges[n + 1].add = !ranges[n].add; + + ranges[n].irel_index = i; + ranges[n + 1].irel_index = i; + + n += 2; + + reloc[i].irel = irel; + + /* Every relocation won't possibly be checked in the optimized version of + check_section_ebb_pcrels_fit, so this needs to be done here. */ + if (is_alt_relocation (ELF32_R_TYPE (irel->r_info))) + { + /* None of the current alternate relocs are PC-relative, + and only PC-relative relocs matter here. */ + } + else + { + xtensa_opcode opcode; + int opnum; + + if (reloc_opcodes) + opcode = reloc_opcodes[i]; + else + opcode = get_relocation_opcode (abfd, sec, contents, irel); + + if (opcode == XTENSA_UNDEFINED) + { + list->ok = FALSE; + break; + } + + opnum = get_relocation_opnd (opcode, ELF32_R_TYPE (irel->r_info)); + if (opnum == XTENSA_UNDEFINED) + { + list->ok = FALSE; + break; + } + + /* Record relocation opcode and opnum as we've calculated them + anyway and they won't change. */ + reloc[i].opcode = opcode; + reloc[i].opnum = opnum; + } + } + + if (list->ok) + { + ranges = bfd_realloc (ranges, n * sizeof (*ranges)); + qsort (ranges, n, sizeof (*ranges), reloc_range_compare); + + list->n_range = n; + list->range = ranges; + list->reloc = reloc; + list->list_root.prev = &list->list_root; + list->list_root.next = &list->list_root; + } + else + { + free (ranges); + free (reloc); + } +} + +static void reloc_range_list_append (reloc_range_list *list, + unsigned irel_index) +{ + reloc_range_list_entry *entry = list->reloc + irel_index; + + entry->prev = list->list_root.prev; + entry->next = &list->list_root; + entry->prev->next = entry; + entry->next->prev = entry; + ++list->n_list; +} + +static void reloc_range_list_remove (reloc_range_list *list, + unsigned irel_index) +{ + reloc_range_list_entry *entry = list->reloc + irel_index; + + entry->next->prev = entry->prev; + entry->prev->next = entry->next; + --list->n_list; +} + +/* Update relocation list object so that it lists all relocations that cross + [first; last] range. Range bounds should not decrease with successive + invocations. */ +static void reloc_range_list_update_range (reloc_range_list *list, + bfd_vma first, bfd_vma last) +{ + /* This should not happen: EBBs are iterated from lower addresses to higher. + But even if that happens there's no need to break: just flush current list + and start from scratch. */ + if ((list->last > 0 && list->range[list->last - 1].addr > last) || + (list->first > 0 && list->range[list->first - 1].addr >= first)) + { + list->first = 0; + list->last = 0; + list->n_list = 0; + list->list_root.next = &list->list_root; + list->list_root.prev = &list->list_root; + fprintf (stderr, "%s: move backwards requested\n", __func__); + } + + for (; list->last < list->n_range && + list->range[list->last].addr <= last; ++list->last) + if (list->range[list->last].add) + reloc_range_list_append (list, list->range[list->last].irel_index); + + for (; list->first < list->n_range && + list->range[list->first].addr < first; ++list->first) + if (!list->range[list->first].add) + reloc_range_list_remove (list, list->range[list->first].irel_index); +} + +static void free_reloc_range_list (reloc_range_list *list) +{ + free (list->range); + free (list->reloc); +} /* The compute_text_actions function will build a list of potential transformation actions for code in the extended basic block of each @@ -7245,6 +7685,7 @@ compute_text_actions (bfd *abfd, property_table_entry *prop_table = 0; int ptblsize = 0; bfd_size_type sec_size; + reloc_range_list relevant_relocs; relax_info = get_xtensa_relax_info (sec); BFD_ASSERT (relax_info); @@ -7277,6 +7718,12 @@ compute_text_actions (bfd *abfd, goto error_return; } + /* Precompute the opcode for each relocation. */ + reloc_opcodes = build_reloc_opcodes (abfd, sec, contents, internal_relocs); + + build_reloc_ranges (abfd, sec, contents, internal_relocs, reloc_opcodes, + &relevant_relocs); + for (i = 0; i < sec->reloc_count; i++) { Elf_Internal_Rela *irel = &internal_relocs[i]; @@ -7340,17 +7787,13 @@ compute_text_actions (bfd *abfd, ebb->start_reloc_idx = i; ebb->end_reloc_idx = i; - /* Precompute the opcode for each relocation. */ - if (reloc_opcodes == NULL) - reloc_opcodes = build_reloc_opcodes (abfd, sec, contents, - internal_relocs); - if (!extend_ebb_bounds (ebb) || !compute_ebb_proposed_actions (&ebb_table) || !compute_ebb_actions (&ebb_table) || !check_section_ebb_pcrels_fit (abfd, sec, contents, - internal_relocs, &ebb_table, - reloc_opcodes) + internal_relocs, + &relevant_relocs, + &ebb_table, reloc_opcodes) || !check_section_ebb_reduces (&ebb_table)) { /* If anything goes wrong or we get unlucky and something does @@ -7372,8 +7815,10 @@ compute_text_actions (bfd *abfd, free_ebb_constraint (&ebb_table); } + free_reloc_range_list (&relevant_relocs); + #if DEBUG - if (relax_info->action_list.head) + if (action_list_count (&relax_info->action_list)) print_action_list (stderr, &relax_info->action_list); #endif @@ -7874,6 +8319,54 @@ xlate_offset_with_removed_text (const xlate_map_t *map, return e->new_address - e->orig_address + offset; } +typedef struct xlate_map_context_struct xlate_map_context; +struct xlate_map_context_struct +{ + xlate_map_t *map; + xlate_map_entry_t *current_entry; + int removed; +}; + +static int +xlate_map_fn (splay_tree_node node, void *p) +{ + text_action *r = (text_action *)node->value; + xlate_map_context *ctx = p; + unsigned orig_size = 0; + + switch (r->action) + { + case ta_none: + case ta_remove_insn: + case ta_convert_longcall: + case ta_remove_literal: + case ta_add_literal: + break; + case ta_remove_longcall: + orig_size = 6; + break; + case ta_narrow_insn: + orig_size = 3; + break; + case ta_widen_insn: + orig_size = 2; + break; + case ta_fill: + break; + } + ctx->current_entry->size = + r->offset + orig_size - ctx->current_entry->orig_address; + if (ctx->current_entry->size != 0) + { + ctx->current_entry++; + ctx->map->entry_count++; + } + ctx->current_entry->orig_address = r->offset + orig_size; + ctx->removed += r->removed_bytes; + ctx->current_entry->new_address = r->offset + orig_size - ctx->removed; + ctx->current_entry->size = 0; + return 0; +} /* Build a binary searchable offset translation map from a section's action list. */ @@ -7881,75 +8374,40 @@ xlate_offset_with_removed_text (const xlate_map_t *map, static xlate_map_t * build_xlate_map (asection *sec, xtensa_relax_info *relax_info) { - xlate_map_t *map = (xlate_map_t *) bfd_malloc (sizeof (xlate_map_t)); text_action_list *action_list = &relax_info->action_list; unsigned num_actions = 0; - text_action *r; - int removed; - xlate_map_entry_t *current_entry; + xlate_map_context ctx; - if (map == NULL) + ctx.map = (xlate_map_t *) bfd_malloc (sizeof (xlate_map_t)); + + if (ctx.map == NULL) return NULL; num_actions = action_list_count (action_list); - map->entry = (xlate_map_entry_t *) + ctx.map->entry = (xlate_map_entry_t *) bfd_malloc (sizeof (xlate_map_entry_t) * (num_actions + 1)); - if (map->entry == NULL) + if (ctx.map->entry == NULL) { - free (map); + free (ctx.map); return NULL; } - map->entry_count = 0; + ctx.map->entry_count = 0; - removed = 0; - current_entry = &map->entry[0]; + ctx.removed = 0; + ctx.current_entry = &ctx.map->entry[0]; - current_entry->orig_address = 0; - current_entry->new_address = 0; - current_entry->size = 0; + ctx.current_entry->orig_address = 0; + ctx.current_entry->new_address = 0; + ctx.current_entry->size = 0; - for (r = action_list->head; r != NULL; r = r->next) - { - unsigned orig_size = 0; - switch (r->action) - { - case ta_none: - case ta_remove_insn: - case ta_convert_longcall: - case ta_remove_literal: - case ta_add_literal: - break; - case ta_remove_longcall: - orig_size = 6; - break; - case ta_narrow_insn: - orig_size = 3; - break; - case ta_widen_insn: - orig_size = 2; - break; - case ta_fill: - break; - } - current_entry->size = - r->offset + orig_size - current_entry->orig_address; - if (current_entry->size != 0) - { - current_entry++; - map->entry_count++; - } - current_entry->orig_address = r->offset + orig_size; - removed += r->removed_bytes; - current_entry->new_address = r->offset + orig_size - removed; - current_entry->size = 0; - } + splay_tree_foreach (action_list->tree, xlate_map_fn, &ctx); - current_entry->size = (bfd_get_section_limit (sec->owner, sec) - - current_entry->orig_address); - if (current_entry->size != 0) - map->entry_count++; + ctx.current_entry->size = (bfd_get_section_limit (sec->owner, sec) + - ctx.current_entry->orig_address); + if (ctx.current_entry->size != 0) + ctx.map->entry_count++; - return map; + return ctx.map; } @@ -7974,14 +8432,17 @@ check_section_ebb_pcrels_fit (bfd *abfd, asection *sec, bfd_byte *contents, Elf_Internal_Rela *internal_relocs, + reloc_range_list *relevant_relocs, const ebb_constraint *constraint, const xtensa_opcode *reloc_opcodes) { unsigned i, j; + unsigned n = sec->reloc_count; Elf_Internal_Rela *irel; xlate_map_t *xmap = NULL; bfd_boolean ok = TRUE; xtensa_relax_info *relax_info; + reloc_range_list_entry *entry = NULL; relax_info = get_xtensa_relax_info (sec); @@ -7992,7 +8453,40 @@ check_section_ebb_pcrels_fit (bfd *abfd, can still be used. */ } - for (i = 0; i < sec->reloc_count; i++) + if (relevant_relocs && constraint->action_count) + { + if (!relevant_relocs->ok) + { + ok = FALSE; + n = 0; + } + else + { + bfd_vma min_offset, max_offset; + min_offset = max_offset = constraint->actions[0].offset; + + for (i = 1; i < constraint->action_count; ++i) + { + proposed_action *action = &constraint->actions[i]; + bfd_vma offset = action->offset; + + if (offset < min_offset) + min_offset = offset; + if (offset > max_offset) + max_offset = offset; + } + reloc_range_list_update_range (relevant_relocs, min_offset, + max_offset); + n = relevant_relocs->n_list; + entry = &relevant_relocs->list_root; + } + } + else + { + relevant_relocs = NULL; + } + + for (i = 0; i < n; i++) { r_reloc r_rel; bfd_vma orig_self_offset, orig_target_offset; @@ -8001,7 +8495,15 @@ check_section_ebb_pcrels_fit (bfd *abfd, reloc_howto_type *howto; int self_removed_bytes, target_removed_bytes; - irel = &internal_relocs[i]; + if (relevant_relocs) + { + entry = entry->next; + irel = entry->irel; + } + else + { + irel = internal_relocs + i; + } r_type = ELF32_R_TYPE (irel->r_info); howto = &elf_howto_table[r_type]; @@ -8067,21 +8569,30 @@ check_section_ebb_pcrels_fit (bfd *abfd, xtensa_opcode opcode; int opnum; - if (reloc_opcodes) - opcode = reloc_opcodes[i]; - else - opcode = get_relocation_opcode (abfd, sec, contents, irel); - if (opcode == XTENSA_UNDEFINED) + if (relevant_relocs) { - ok = FALSE; - break; + opcode = entry->opcode; + opnum = entry->opnum; } - - opnum = get_relocation_opnd (opcode, ELF32_R_TYPE (irel->r_info)); - if (opnum == XTENSA_UNDEFINED) + else { - ok = FALSE; - break; + if (reloc_opcodes) + opcode = reloc_opcodes[relevant_relocs ? + (unsigned)(entry - relevant_relocs->reloc) : i]; + else + opcode = get_relocation_opcode (abfd, sec, contents, irel); + if (opcode == XTENSA_UNDEFINED) + { + ok = FALSE; + break; + } + + opnum = get_relocation_opnd (opcode, ELF32_R_TYPE (irel->r_info)); + if (opnum == XTENSA_UNDEFINED) + { + ok = FALSE; + break; + } } if (!pcrel_reloc_fits (opcode, opnum, self_offset, target_offset)) @@ -8778,7 +9289,7 @@ move_shared_literal (asection *sec, /* Check all of the PC-relative relocations to make sure they still fit. */ relocs_fit = check_section_ebb_pcrels_fit (target_sec->owner, target_sec, target_sec_cache->contents, - target_sec_cache->relocs, + target_sec_cache->relocs, NULL, &ebb_table, NULL); if (!relocs_fit) @@ -8860,6 +9371,16 @@ move_shared_literal (asection *sec, /* Second relaxation pass. */ +static int +action_remove_bytes_fn (splay_tree_node node, void *p) +{ + bfd_size_type *final_size = p; + text_action *action = (text_action *)node->value; + + *final_size -= action->removed_bytes; + return 0; +} + /* Modify all of the relocations to point to the right spot, and if this is a relaxable section, delete the unwanted literals and fix the section size. */ @@ -8892,7 +9413,7 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) internal_relocs = retrieve_internal_relocs (abfd, sec, link_info->keep_memory); - if (!internal_relocs && !relax_info->action_list.head) + if (!internal_relocs && !action_list_count (&relax_info->action_list)) return TRUE; contents = retrieve_contents (abfd, sec, link_info->keep_memory); @@ -8943,7 +9464,7 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) if (elf_hash_table (link_info)->dynamic_sections_created) shrink_dynamic_reloc_sections (link_info, abfd, sec, irel); irel->r_info = ELF32_R_INFO (0, R_XTENSA_NONE); - irel->r_offset = offset_with_removed_text + irel->r_offset = offset_with_removed_text_map (&relax_info->action_list, irel->r_offset); continue; } @@ -8970,6 +9491,12 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) } /* Update the action so that the code that moves the contents will do the right thing. */ + /* ta_remove_longcall and ta_remove_insn actions are + grouped together in the tree as well as + ta_convert_longcall and ta_none, so that changes below + can be done w/o removing and reinserting action into + the tree. */ + if (action->action == ta_remove_longcall) action->action = ta_remove_insn; else @@ -8980,7 +9507,7 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) } } - source_offset = offset_with_removed_text + source_offset = offset_with_removed_text_map (&relax_info->action_list, irel->r_offset); irel->r_offset = source_offset; } @@ -9077,7 +9604,7 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) break; } - new_end_offset = offset_with_removed_text + new_end_offset = offset_with_removed_text_map (&target_relax_info->action_list, r_rel.target_offset + diff_value); diff_value = new_end_offset - new_reloc.target_offset; @@ -9142,13 +9669,12 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) if ((relax_info->is_relaxable_literal_section || relax_info->is_relaxable_asm_section) - && relax_info->action_list.head) + && action_list_count (&relax_info->action_list)) { /* Walk through the planned actions and build up a table of move, copy and fill records. Use the move, copy and fill records to perform the actions once. */ - int removed = 0; bfd_size_type final_size, copy_size, orig_insn_size; bfd_byte *scratch = NULL; bfd_byte *dup_contents = NULL; @@ -9159,15 +9685,12 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) bfd_vma orig_dot_vo = 0; /* Virtual offset from orig_dot. */ bfd_vma dup_dot = 0; - text_action *action = relax_info->action_list.head; + text_action *action; final_size = sec->size; - for (action = relax_info->action_list.head; action; - action = action->next) - { - final_size -= action->removed_bytes; - } + splay_tree_foreach (relax_info->action_list.tree, + action_remove_bytes_fn, &final_size); scratch = (bfd_byte *) bfd_zmalloc (final_size); dup_contents = (bfd_byte *) bfd_zmalloc (final_size); @@ -9176,8 +9699,8 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) print_action_list (stderr, &relax_info->action_list); #endif - for (action = relax_info->action_list.head; action; - action = action->next) + for (action = action_first (&relax_info->action_list); action; + action = action_next (&relax_info->action_list, action)) { virtual_action = FALSE; if (action->offset > orig_dot) @@ -9306,7 +9829,6 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) break; } - removed += action->removed_bytes; BFD_ASSERT (dup_dot <= final_size); BFD_ASSERT (orig_dot <= orig_size); } @@ -9475,7 +9997,6 @@ translate_reloc (const r_reloc *orig_rel, r_reloc *new_rel, asection *sec) xtensa_relax_info *relax_info; removed_literal *removed; bfd_vma target_offset, base_offset; - text_action *act; *new_rel = *orig_rel; @@ -9528,19 +10049,26 @@ translate_reloc (const r_reloc *orig_rel, r_reloc *new_rel, asection *sec) offset. */ base_offset = r_reloc_get_target_offset (new_rel) - new_rel->rela.r_addend; - act = relax_info->action_list.head; if (base_offset <= target_offset) { - int base_removed = removed_by_actions (&act, base_offset, FALSE); - int addend_removed = removed_by_actions (&act, target_offset, FALSE); + int base_removed = removed_by_actions_map (&relax_info->action_list, + base_offset, FALSE); + int addend_removed = removed_by_actions_map (&relax_info->action_list, + target_offset, FALSE) - + base_removed; + new_rel->target_offset = target_offset - base_removed - addend_removed; new_rel->rela.r_addend -= addend_removed; } else { /* Handle a negative addend. The base offset comes first. */ - int tgt_removed = removed_by_actions (&act, target_offset, FALSE); - int addend_removed = removed_by_actions (&act, base_offset, FALSE); + int tgt_removed = removed_by_actions_map (&relax_info->action_list, + target_offset, FALSE); + int addend_removed = removed_by_actions_map (&relax_info->action_list, + base_offset, FALSE) - + tgt_removed; + new_rel->target_offset = target_offset - tgt_removed; new_rel->rela.r_addend += addend_removed; } @@ -9863,9 +10391,10 @@ relax_property_section (bfd *abfd, bfd_vma old_offset = val.r_rel.target_offset; bfd_vma new_offset; long old_size, new_size; - text_action *act = target_relax_info->action_list.head; - new_offset = old_offset - - removed_by_actions (&act, old_offset, FALSE); + int removed_by_old_offset = + removed_by_actions_map (&target_relax_info->action_list, + old_offset, FALSE); + new_offset = old_offset - removed_by_old_offset; /* Assert that we are not out of bounds. */ old_size = bfd_get_32 (abfd, size_p); @@ -9889,9 +10418,10 @@ relax_property_section (bfd *abfd, /* Recompute the new_offset, but this time don't include any fill inserted by relaxation. */ - act = target_relax_info->action_list.head; - new_offset = old_offset - - removed_by_actions (&act, old_offset, TRUE); + removed_by_old_offset = + removed_by_actions_map (&target_relax_info->action_list, + old_offset, TRUE); + new_offset = old_offset - removed_by_old_offset; /* If it is not unreachable and we have not yet seen an unreachable at this address, place it @@ -9907,8 +10437,12 @@ relax_property_section (bfd *abfd, } } else - new_size -= - removed_by_actions (&act, old_offset + old_size, TRUE); + { + int removed_by_old_offset_size = + removed_by_actions_map (&target_relax_info->action_list, + old_offset + old_size, TRUE); + new_size -= removed_by_old_offset_size - removed_by_old_offset; + } if (new_size != old_size) { @@ -10166,14 +10700,16 @@ relax_section_symbols (bfd *abfd, asection *sec) if (isym->st_shndx == sec_shndx) { - text_action *act = relax_info->action_list.head; bfd_vma orig_addr = isym->st_value; + int removed = removed_by_actions_map (&relax_info->action_list, + orig_addr, FALSE); - isym->st_value -= removed_by_actions (&act, orig_addr, FALSE); - + isym->st_value -= removed; if (ELF32_ST_TYPE (isym->st_info) == STT_FUNC) isym->st_size -= - removed_by_actions (&act, orig_addr + isym->st_size, FALSE); + removed_by_actions_map (&relax_info->action_list, + orig_addr + isym->st_size, FALSE) - + removed; } } @@ -10191,15 +10727,17 @@ relax_section_symbols (bfd *abfd, asection *sec) || sym_hash->root.type == bfd_link_hash_defweak) && sym_hash->root.u.def.section == sec) { - text_action *act = relax_info->action_list.head; bfd_vma orig_addr = sym_hash->root.u.def.value; + int removed = removed_by_actions_map (&relax_info->action_list, + orig_addr, FALSE); - sym_hash->root.u.def.value -= - removed_by_actions (&act, orig_addr, FALSE); + sym_hash->root.u.def.value -= removed; if (sym_hash->type == STT_FUNC) sym_hash->size -= - removed_by_actions (&act, orig_addr + sym_hash->size, FALSE); + removed_by_actions_map (&relax_info->action_list, + orig_addr + sym_hash->size, FALSE) - + removed; } } diff --git a/bfd/elf64-alpha.c b/bfd/elf64-alpha.c index 0ffe3fa..cfd328a 100644 --- a/bfd/elf64-alpha.c +++ b/bfd/elf64-alpha.c @@ -486,8 +486,8 @@ static reloc_howto_type elf64_alpha_howto_table[] = { HOWTO (R_ALPHA_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ - 8, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -1105,7 +1105,14 @@ elf64_alpha_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr, Elf_Internal_Rela *dst) { unsigned r_type = ELF64_R_TYPE(dst->r_info); - BFD_ASSERT (r_type < (unsigned int) R_ALPHA_max); + + if (r_type >= R_ALPHA_max) + { + (*_bfd_error_handler) (_("%B: unrecognised Alpha reloc number: %d"), + abfd, r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_ALPHA_NONE; + } cache_ptr->howto = &elf64_alpha_howto_table[r_type]; } diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c index 017efac..b00e462 100644 --- a/bfd/elf64-mips.c +++ b/bfd/elf64-mips.c @@ -145,7 +145,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] = /* No relocation. */ HOWTO (R_MIPS_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -908,7 +908,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = /* No relocation. */ HOWTO (R_MIPS_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -3585,7 +3585,12 @@ mips_elf64_rtype_to_howto (unsigned int r_type, bfd_boolean rela_p) else return &mips16_elf64_howto_table_rel[r_type - R_MIPS16_min]; } - BFD_ASSERT (r_type < (unsigned int) R_MIPS_max); + if (r_type >= R_MIPS_max) + { + (*_bfd_error_handler) (_("unrecognised MIPS reloc number: %d"), r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_MIPS_NONE; + } if (rela_p) return &mips_elf64_howto_table_rela[r_type]; else diff --git a/bfd/elf64-mmix.c b/bfd/elf64-mmix.c index 244f90a..38d07b3 100644 --- a/bfd/elf64-mmix.c +++ b/bfd/elf64-mmix.c @@ -192,11 +192,11 @@ static reloc_howto_type elf_mmix_howto_table[] = /* This reloc does nothing. */ HOWTO (R_MMIX_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MMIX_NONE", /* name */ FALSE, /* partial_inplace */ @@ -1261,7 +1261,7 @@ mmix_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED, r_type = ELF64_R_TYPE (dst->r_info); if (r_type >= (unsigned int) R_MMIX_max) { - _bfd_error_handler (_("%A: invalid MMIX reloc number: %d"), abfd, r_type); + _bfd_error_handler (_("%B: invalid MMIX reloc number: %d"), abfd, r_type); r_type = 0; } cache_ptr->howto = &elf_mmix_howto_table[r_type]; diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 1101e3d..468e8bf 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -138,6 +138,8 @@ static bfd_vma opd_entry_value /* TOC base pointers offset from start of TOC. */ #define TOC_BASE_OFF 0x8000 +/* TOC base alignment. */ +#define TOC_BASE_ALIGN 256 /* Offset of tp and dtp pointers from start of TLS block. */ #define TP_OFFSET 0x7000 @@ -258,8 +260,8 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { /* This reloc does nothing. */ HOWTO (R_PPC64_NONE, /* type */ 0, /* rightshift */ - 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -3146,7 +3148,8 @@ section_covers_vma (bfd *abfd ATTRIBUTE_UNUSED, asection *section, void *ptr) } /* Create synthetic symbols, effectively restoring "dot-symbol" function - entry syms. Also generate @plt symbols for the glink branch table. */ + entry syms. Also generate @plt symbols for the glink branch table. + Returns count of synthetic symbols in RET or -1 on error. */ static long ppc64_elf_get_synthetic_symtab (bfd *abfd, @@ -3289,6 +3292,8 @@ ppc64_elf_get_synthetic_symtab (bfd *abfd, } } + if (size == 0) + goto done; s = *ret = bfd_malloc (size); if (s == NULL) { @@ -3349,10 +3354,11 @@ ppc64_elf_get_synthetic_symtab (bfd *abfd, if (opd != NULL && !bfd_malloc_and_get_section (abfd, opd, &contents)) { + free_contents_and_exit_err: + count = -1; free_contents_and_exit: if (contents) free (contents); - count = -1; goto done; } @@ -3383,7 +3389,7 @@ ppc64_elf_get_synthetic_symtab (bfd *abfd, void (*swap_dyn_in) (bfd *, const void *, Elf_Internal_Dyn *); if (!bfd_malloc_and_get_section (abfd, dynamic, &dynbuf)) - goto free_contents_and_exit; + goto free_contents_and_exit_err; extdynsize = get_elf_backend_data (abfd)->s->sizeof_dyn; swap_dyn_in = get_elf_backend_data (abfd)->s->swap_dyn_in; @@ -3445,7 +3451,7 @@ ppc64_elf_get_synthetic_symtab (bfd *abfd, { slurp_relocs = get_elf_backend_data (abfd)->s->slurp_reloc_table; if (! (*slurp_relocs) (abfd, relplt, dyn_syms, TRUE)) - goto free_contents_and_exit; + goto free_contents_and_exit_err; plt_count = relplt->size / sizeof (Elf64_External_Rela); size += plt_count * sizeof (asymbol); @@ -3460,9 +3466,11 @@ ppc64_elf_get_synthetic_symtab (bfd *abfd, } } + if (size == 0) + goto free_contents_and_exit; s = *ret = bfd_malloc (size); if (s == NULL) - goto free_contents_and_exit; + goto free_contents_and_exit_err; names = (char *) (s + count + plt_count + (resolv_vma != 0)); @@ -4836,6 +4844,14 @@ ppc64_elf_add_symbol_hook (bfd *ibfd, isym->st_shndx = SHN_UNDEF; } } + else if (*sec != NULL + && strcmp ((*sec)->name, ".toc") == 0 + && ELF_ST_TYPE (isym->st_info) == STT_OBJECT) + { + struct ppc_link_hash_table *htab = ppc_hash_table (info); + if (htab != NULL) + htab->params->object_in_toc = 1; + } if ((STO_PPC64_LOCAL_MASK & isym->st_other) != 0) { @@ -5943,6 +5959,10 @@ opd_entry_value (asection *opd_sec, ppc64_elf_tdata (opd_bfd)->opd.contents = contents; } + /* PR 17512: file: 64b9dfbb. */ + if (offset + 7 >= opd_sec->size || offset + 7 < offset) + return (bfd_vma) -1; + val = bfd_get_64 (opd_bfd, contents + offset); if (code_sec != NULL) { @@ -5978,10 +5998,12 @@ opd_entry_value (asection *opd_sec, relocs = ppc64_elf_tdata (opd_bfd)->opd.relocs; if (relocs == NULL) relocs = _bfd_elf_link_read_relocs (opd_bfd, opd_sec, NULL, NULL, TRUE); + /* PR 17512: file: df8e1fd6. */ + if (relocs == NULL) + return (bfd_vma) -1; /* Go find the opd reloc at the sym address. */ lo = relocs; - BFD_ASSERT (lo != NULL); hi = lo + opd_sec->reloc_count - 1; /* ignore last reloc */ val = (bfd_vma) -1; while (lo < hi) @@ -6232,7 +6254,7 @@ ppc64_elf_gc_mark_dynamic_ref (struct elf_link_hash_entry *h, void *inf) if ((eh->elf.root.type == bfd_link_hash_defined || eh->elf.root.type == bfd_link_hash_defweak) && (eh->elf.ref_dynamic - || (eh->elf.def_regular + || ((eh->elf.def_regular || ELF_COMMON_DEF_P (&eh->elf)) && ELF_ST_VISIBILITY (eh->elf.other) != STV_INTERNAL && ELF_ST_VISIBILITY (eh->elf.other) != STV_HIDDEN && (!info->executable @@ -7075,6 +7097,13 @@ ppc64_elf_adjust_dynamic_symbol (struct bfd_link_info *info, if (!h->def_dynamic || !h->ref_regular || h->def_regular) return TRUE; + /* If -z nocopyreloc was given, don't generate them either. */ + if (info->nocopyreloc) + { + h->non_got_ref = 0; + return TRUE; + } + /* If we didn't find any dynamic relocs in read-only sections, then we'll be keeping the dynamic relocs and avoiding the copy reloc. */ if (ELIMINATE_COPY_RELOCS && !readonly_dynrelocs (h)) @@ -7083,6 +7112,16 @@ ppc64_elf_adjust_dynamic_symbol (struct bfd_link_info *info, return TRUE; } + /* Protected variables do not work with .dynbss. The copy in + .dynbss won't be used by the shared library with the protected + definition for the variable. Text relocations are preferable + to an incorrect program. */ + if (h->protected_def) + { + h->non_got_ref = 0; + return TRUE; + } + if (h->plt.plist != NULL) { /* We should never get here, but unfortunately there are versions @@ -10189,7 +10228,10 @@ plt_stub_size (struct ppc_link_hash_table *htab, size += 4; if (htab->params->plt_static_chain) size += 4; - if (htab->params->plt_thread_safe) + if (htab->params->plt_thread_safe + && htab->elf.dynamic_sections_created + && stub_entry->h != NULL + && stub_entry->h->elf.dynindx != -1) size += 8; if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain) != PPC_HA (off)) size += 4; @@ -10229,16 +10271,18 @@ build_plt_stub (struct ppc_link_hash_table *htab, bfd *obfd = htab->params->stub_bfd; bfd_boolean plt_load_toc = htab->opd_abi; bfd_boolean plt_static_chain = htab->params->plt_static_chain; - bfd_boolean plt_thread_safe = htab->params->plt_thread_safe; + bfd_boolean plt_thread_safe = (htab->params->plt_thread_safe + && htab->elf.dynamic_sections_created + && stub_entry->h != NULL + && stub_entry->h->elf.dynindx != -1); bfd_boolean use_fake_dep = plt_thread_safe; bfd_vma cmp_branch_off = 0; if (!ALWAYS_USE_FAKE_DEP && plt_load_toc && plt_thread_safe - && !(stub_entry->h != NULL - && (stub_entry->h == htab->tls_get_addr_fd - || stub_entry->h == htab->tls_get_addr) + && !((stub_entry->h == htab->tls_get_addr_fd + || stub_entry->h == htab->tls_get_addr) && !htab->params->no_tls_get_addr_opt)) { bfd_vma pltoff = stub_entry->plt_ent->plt.offset & ~1; @@ -10431,8 +10475,8 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab, p = build_plt_stub (htab, stub_entry, p, offset, r); bfd_put_32 (obfd, BCTRL, p - 4); - bfd_put_32 (obfd, LD_R11_0R1 + STK_LINKER (htab), p), p += 4; bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p), p += 4; + bfd_put_32 (obfd, LD_R11_0R1 + STK_LINKER (htab), p), p += 4; bfd_put_32 (obfd, MTLR_R11, p), p += 4; bfd_put_32 (obfd, BLR, p), p += 4; @@ -10936,6 +10980,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) h->ref_regular_nonweak = 1; h->forced_local = 1; h->non_elf = 0; + h->root.linker_def = 1; } } @@ -11214,6 +11259,7 @@ ppc64_elf_next_toc_section (struct bfd_link_info *info, asection *isec) addr = (htab->toc_first_sec->output_offset + htab->toc_first_sec->output_section->vma); htab->toc_curr = addr; + htab->toc_curr &= -TOC_BASE_ALIGN; } /* toc_curr is the base address of this toc group. Set elf_gp @@ -11594,7 +11640,7 @@ toc_adjusting_stub_needed (struct bfd_link_info *info, asection *isec) { long adjust; - adjust = opd->adjust[OPD_NDX (sym->st_value)]; + adjust = opd->adjust[OPD_NDX (sym_value)]; if (adjust == -1) /* Assume deleted functions won't ever be called. */ continue; @@ -12492,7 +12538,7 @@ bfd_vma ppc64_elf_set_toc (struct bfd_link_info *info, bfd *obfd) { asection *s; - bfd_vma TOCstart; + bfd_vma TOCstart, adjust; /* The TOC consists of sections .got, .toc, .tocbss, .plt in that order. The TOC starts where the first of these sections starts. */ @@ -12540,6 +12586,9 @@ ppc64_elf_set_toc (struct bfd_link_info *info, bfd *obfd) if (s != NULL) TOCstart = s->output_section->vma + s->output_offset; + /* Force alignment. */ + adjust = TOCstart & (TOC_BASE_ALIGN - 1); + TOCstart -= adjust; _bfd_set_gp_value (obfd, TOCstart); if (info != NULL && s != NULL) @@ -12550,7 +12599,7 @@ ppc64_elf_set_toc (struct bfd_link_info *info, bfd *obfd) { if (htab->elf.hgot != NULL) { - htab->elf.hgot->root.u.def.value = TOC_BASE_OFF; + htab->elf.hgot->root.u.def.value = TOC_BASE_OFF - adjust; htab->elf.hgot->root.u.def.section = s; } } @@ -12558,8 +12607,8 @@ ppc64_elf_set_toc (struct bfd_link_info *info, bfd *obfd) { struct bfd_link_hash_entry *bh = NULL; _bfd_generic_link_add_one_symbol (info, obfd, ".TOC.", BSF_GLOBAL, - s, TOC_BASE_OFF, NULL, FALSE, - FALSE, &bh); + s, TOC_BASE_OFF - adjust, + NULL, FALSE, FALSE, &bh); } } return TOCstart; @@ -12639,6 +12688,7 @@ build_global_entry_stubs (struct elf_link_hash_entry *h, void *inf) h->ref_regular_nonweak = 1; h->forced_local = 1; h->non_elf = 0; + h->root.linker_def = 1; } } @@ -12712,6 +12762,7 @@ ppc64_elf_build_stubs (struct bfd_link_info *info, h->ref_regular_nonweak = 1; h->forced_local = 1; h->non_elf = 0; + h->root.linker_def = 1; } } plt0 = (htab->elf.splt->output_section->vma @@ -13406,12 +13457,16 @@ ppc64_elf_relocate_section (bfd *output_bfd, htab->tls_get_addr, htab->tls_get_addr_fd)) offset = rel[1].r_offset; + /* We read the low GOT_TLS (or TOC16) insn because we + need to keep the destination reg. It may be + something other than the usual r3, and moved to r3 + before the call by intervening code. */ + insn1 = bfd_get_32 (output_bfd, + contents + rel->r_offset - d_offset); if ((tls_mask & tls_gd) != 0) { /* IE */ - insn1 = bfd_get_32 (output_bfd, - contents + rel->r_offset - d_offset); - insn1 &= (1 << 26) - (1 << 2); + insn1 &= (0x1f << 21) | (0x1f << 16); insn1 |= 58 << 26; /* ld */ insn2 = 0x7c636a14; /* add 3,3,13 */ if (offset != (bfd_vma) -1) @@ -13426,7 +13481,8 @@ ppc64_elf_relocate_section (bfd *output_bfd, else { /* LE */ - insn1 = 0x3c6d0000; /* addis 3,13,0 */ + insn1 &= 0x1f << 21; + insn1 |= 0x3c0d0000; /* addis r,13,0 */ insn2 = 0x38630000; /* addi 3,3,0 */ if (tls_gd == 0) { @@ -14105,7 +14161,12 @@ ppc64_elf_relocate_section (bfd *output_bfd, { outrel.r_addend += relocation; if (tls_type & (TLS_GD | TLS_DTPREL | TLS_TPREL)) - outrel.r_addend -= htab->elf.tls_sec->vma; + { + if (htab->elf.tls_sec == NULL) + outrel.r_addend = 0; + else + outrel.r_addend -= htab->elf.tls_sec->vma; + } } loc = relgot->contents; loc += (relgot->reloc_count++ @@ -14122,9 +14183,14 @@ ppc64_elf_relocate_section (bfd *output_bfd, relocation = 1; else if (tls_type != 0) { - relocation -= htab->elf.tls_sec->vma + DTP_OFFSET; - if (tls_type == (TLS_TLS | TLS_TPREL)) - relocation += DTP_OFFSET - TP_OFFSET; + if (htab->elf.tls_sec == NULL) + relocation = 0; + else + { + relocation -= htab->elf.tls_sec->vma + DTP_OFFSET; + if (tls_type == (TLS_TLS | TLS_TPREL)) + relocation += DTP_OFFSET - TP_OFFSET; + } if (tls_type == (TLS_TLS | TLS_GD)) { @@ -14257,7 +14323,8 @@ ppc64_elf_relocate_section (bfd *output_bfd, bfd_put_32 (output_bfd, insn, p); break; } - addend -= htab->elf.tls_sec->vma + TP_OFFSET; + if (htab->elf.tls_sec != NULL) + addend -= htab->elf.tls_sec->vma + TP_OFFSET; if (info->shared) /* The TPREL16 relocs shouldn't really be used in shared libs as they will result in DT_TEXTREL being set, but @@ -14277,7 +14344,8 @@ ppc64_elf_relocate_section (bfd *output_bfd, case R_PPC64_DTPREL16_HIGHERA: case R_PPC64_DTPREL16_HIGHEST: case R_PPC64_DTPREL16_HIGHESTA: - addend -= htab->elf.tls_sec->vma + DTP_OFFSET; + if (htab->elf.tls_sec != NULL) + addend -= htab->elf.tls_sec->vma + DTP_OFFSET; break; case R_PPC64_ADDR64_LOCAL: @@ -14292,11 +14360,13 @@ ppc64_elf_relocate_section (bfd *output_bfd, goto dodyn; case R_PPC64_TPREL64: - addend -= htab->elf.tls_sec->vma + TP_OFFSET; + if (htab->elf.tls_sec != NULL) + addend -= htab->elf.tls_sec->vma + TP_OFFSET; goto dodyn; case R_PPC64_DTPREL64: - addend -= htab->elf.tls_sec->vma + DTP_OFFSET; + if (htab->elf.tls_sec != NULL) + addend -= htab->elf.tls_sec->vma + DTP_OFFSET; /* Fall thru */ /* Relocations that may need to be propagated if this is a @@ -14773,26 +14843,21 @@ ppc64_elf_relocate_section (bfd *output_bfd, if (r == bfd_reloc_overflow) { - if (warned) - continue; - if (h != NULL - && h->elf.root.type == bfd_link_hash_undefweak - && howto->pc_relative) + /* On code like "if (foo) foo();" don't report overflow + on a branch to zero when foo is undefined. */ + if (!warned + && (reloc_dest == DEST_STUB + || !(h != NULL + && (h->elf.root.type == bfd_link_hash_undefweak + || h->elf.root.type == bfd_link_hash_undefined) + && is_branch_reloc (r_type)))) { - /* Assume this is a call protected by other code that - detects the symbol is undefined. If this is the case, - we can safely ignore the overflow. If not, the - program is hosed anyway, and a little warning isn't - going to help. */ - - continue; + if (!((*info->callbacks->reloc_overflow) + (info, &h->elf.root, sym_name, + reloc_name, orig_rel.r_addend, + input_bfd, input_section, rel->r_offset))) + return FALSE; } - - if (!((*info->callbacks->reloc_overflow) - (info, &h->elf.root, sym_name, - reloc_name, orig_rel.r_addend, - input_bfd, input_section, rel->r_offset))) - return FALSE; } else { diff --git a/bfd/elf64-ppc.h b/bfd/elf64-ppc.h index 8c627a4..19f72b5 100644 --- a/bfd/elf64-ppc.h +++ b/bfd/elf64-ppc.h @@ -57,6 +57,9 @@ struct ppc64_elf_params /* Whether to generate out-of-line register save/restore for gcc -Os code. */ int save_restore_funcs; + + /* Set when a potential variable is detected in .toc. */ + int object_in_toc; }; bfd_boolean ppc64_elf_init_stub_bfd diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c index cdbe6ca..c9db954 100644 --- a/bfd/elf64-s390.c +++ b/bfd/elf64-s390.c @@ -42,7 +42,7 @@ static reloc_howto_type elf_howto_table[] = { HOWTO (R_390_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = 2 byte, 2 = 4 byte) */ + 3, /* size (0 = byte, 1 = 2 byte, 2 = 4 byte) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -3766,6 +3766,21 @@ elf_s390_plt_sym_val (bfd_vma i, const asection *plt, return plt->vma + PLT_FIRST_ENTRY_SIZE + i * PLT_ENTRY_SIZE; } +/* Merge backend specific data from an object file to the output + object file when linking. */ + +static bfd_boolean +elf64_s390_merge_private_bfd_data (bfd *ibfd, bfd *obfd) +{ + if (!is_s390_elf (ibfd) || !is_s390_elf (obfd)) + return TRUE; + + if (!elf_s390_merge_obj_attributes (ibfd, obfd)) + return FALSE; + + return TRUE; +} + /* Why was the hash table entry size definition changed from ARCH_SIZE/8 to 4? This breaks the 64 bit dynamic linker and this is the only reason for the s390_elf64_size_info structure. */ @@ -3824,7 +3839,8 @@ const struct elf_size_info s390_elf64_size_info = #define bfd_elf64_bfd_is_local_label_name elf_s390_is_local_label_name #define bfd_elf64_bfd_link_hash_table_create elf_s390_link_hash_table_create #define bfd_elf64_bfd_reloc_type_lookup elf_s390_reloc_type_lookup -#define bfd_elf64_bfd_reloc_name_lookup elf_s390_reloc_name_lookup +#define bfd_elf64_bfd_reloc_name_lookup elf_s390_reloc_name_lookup +#define bfd_elf64_bfd_merge_private_bfd_data elf64_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 @@ -3840,6 +3856,7 @@ const struct elf_size_info s390_elf64_size_info = #define elf_backend_init_index_section _bfd_elf_init_1_index_section #define elf_backend_plt_sym_val elf_s390_plt_sym_val #define elf_backend_add_symbol_hook elf_s390_add_symbol_hook +#define elf_backend_sort_relocs_p elf_s390_elf_sort_relocs_p #define bfd_elf64_mkobject elf_s390_mkobject #define elf_backend_object_p elf_s390_object_p diff --git a/bfd/elf64-sh64.c b/bfd/elf64-sh64.c index bc48b0e..7be08a9 100644 --- a/bfd/elf64-sh64.c +++ b/bfd/elf64-sh64.c @@ -105,7 +105,7 @@ static reloc_howto_type sh_elf64_howto_table[] = { /* No relocation. */ HOWTO (R_SH_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 6b7d3c9..a4dfdc8 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -54,7 +54,7 @@ special_function, name, partial_inplace, src_mask, dst_mask, pcrel_offset. */ static reloc_howto_type x86_64_elf_howto_table[] = { - HOWTO(R_X86_64_NONE, 0, 0, 0, FALSE, 0, complain_overflow_dont, + HOWTO(R_X86_64_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont, bfd_elf_generic_reloc, "R_X86_64_NONE", FALSE, 0x00000000, 0x00000000, FALSE), HOWTO(R_X86_64_64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield, @@ -1529,6 +1529,10 @@ elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd, return TRUE; } +/* Rename some of the generic section flags to better document how they + are used here. */ +#define need_convert_mov_to_lea sec_flg0 + /* 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. */ @@ -2076,7 +2080,8 @@ do_size: if (use_plt_got && h != NULL && h->plt.refcount > 0 - && h->got.refcount > 0 + && (((info->flags & DF_BIND_NOW) && !h->pointer_equality_needed) + || h->got.refcount > 0) && htab->plt_got == NULL) { /* Create the GOT procedure linkage table. */ @@ -2105,6 +2110,10 @@ do_size: plt_got_align)) return FALSE; } + + if (r_type == R_X86_64_GOTPCREL + && (h == NULL || h->type != STT_GNU_IFUNC)) + sec->need_convert_mov_to_lea = 1; } return TRUE; @@ -2532,7 +2541,19 @@ elf_x86_64_allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) else if (htab->elf.dynamic_sections_created && (h->plt.refcount > 0 || eh->plt_got.refcount > 0)) { - bfd_boolean use_plt_got = eh->plt_got.refcount > 0; + bfd_boolean use_plt_got; + + if ((info->flags & DF_BIND_NOW) && !h->pointer_equality_needed) + { + /* Don't use the regular PLT for DF_BIND_NOW. */ + h->plt.offset = (bfd_vma) -1; + + /* Use the GOT PLT. */ + h->got.refcount = 1; + eh->plt_got.refcount = 1; + } + + use_plt_got = eh->plt_got.refcount > 0; /* Make sure this symbol is output as a dynamic symbol. Undefined weak syms won't yet be marked as dynamic. */ @@ -2551,7 +2572,8 @@ elf_x86_64_allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) asection *got_s = htab->plt_got; /* If this is the first .plt entry, make room for the special - first entry. */ + first entry. The .plt section is used by prelink to undo + prelinking for dynamic relocations. */ if (s->size == 0) s->size = plt_entry_size; @@ -2850,8 +2872,9 @@ elf_x86_64_readonly_dynrelocs (struct elf_link_hash_entry *h, info->flags |= DF_TEXTREL; - if (info->warn_shared_textrel && info->shared) - info->callbacks->einfo (_("%P: %B: warning: relocation against `%s' in readonly section `%A'.\n"), + if ((info->warn_shared_textrel && info->shared) + || info->error_textrel) + info->callbacks->einfo (_("%P: %B: warning: relocation against `%s' in readonly section `%A'\n"), p->sec->owner, h->root.root.string, p->sec); @@ -2880,14 +2903,15 @@ elf_x86_64_convert_mov_to_lea (bfd *abfd, asection *sec, bfd_boolean changed_contents; bfd_boolean changed_relocs; bfd_signed_vma *local_got_refcounts; + bfd_vma maxpagesize; /* Don't even try to convert non-ELF outputs. */ if (!is_elf_hash_table (link_info->hash)) return FALSE; - /* Nothing to do if there are no codes, no relocations or no output. */ + /* Nothing to do if there is no need or no output. */ if ((sec->flags & (SEC_CODE | SEC_RELOC)) != (SEC_CODE | SEC_RELOC) - || sec->reloc_count == 0 + || sec->need_convert_mov_to_lea == 0 || bfd_is_abs_section (sec->output_section)) return TRUE; @@ -2904,6 +2928,7 @@ elf_x86_64_convert_mov_to_lea (bfd *abfd, asection *sec, changed_contents = FALSE; changed_relocs = FALSE; local_got_refcounts = elf_local_got_refcounts (abfd); + maxpagesize = get_elf_backend_data (abfd)->maxpagesize; /* Get the section contents. */ if (elf_section_data (sec)->this_hdr.contents != NULL) @@ -2921,62 +2946,177 @@ elf_x86_64_convert_mov_to_lea (bfd *abfd, asection *sec, unsigned int r_symndx = htab->r_sym (irel->r_info); unsigned int indx; struct elf_link_hash_entry *h; + asection *tsec; + char symtype; + bfd_vma toff, roff; + enum { + none, local, global + } convert_mov_to_lea; + unsigned int opcode; if (r_type != R_X86_64_GOTPCREL) continue; + roff = irel->r_offset; + + if (roff < 2) + continue; + + opcode = bfd_get_8 (abfd, contents + roff - 2); + + /* PR ld/18591: Don't convert R_X86_64_GOTPCREL relocation if it + isn't for mov instruction. */ + if (opcode != 0x8b) + continue; + + tsec = NULL; + convert_mov_to_lea = none; + /* Get the symbol referred to by the reloc. */ if (r_symndx < symtab_hdr->sh_info) { Elf_Internal_Sym *isym; + /* Silence older GCC warning. */ + h = NULL; + isym = bfd_sym_from_r_symndx (&htab->sym_cache, abfd, r_symndx); - /* STT_GNU_IFUNC must keep R_X86_64_GOTPCREL relocation. */ - if (ELF_ST_TYPE (isym->st_info) != STT_GNU_IFUNC - && irel->r_offset >= 2 - && bfd_get_8 (input_bfd, - contents + irel->r_offset - 2) == 0x8b) + symtype = ELF_ST_TYPE (isym->st_info); + + /* STT_GNU_IFUNC must keep R_X86_64_GOTPCREL relocation and + skip relocation against undefined symbols. */ + if (symtype != STT_GNU_IFUNC && isym->st_shndx != SHN_UNDEF) { - bfd_put_8 (output_bfd, 0x8d, - contents + irel->r_offset - 2); - irel->r_info = htab->r_info (r_symndx, R_X86_64_PC32); - if (local_got_refcounts != NULL - && local_got_refcounts[r_symndx] > 0) - local_got_refcounts[r_symndx] -= 1; - changed_contents = TRUE; - changed_relocs = TRUE; + if (isym->st_shndx == SHN_ABS) + tsec = bfd_abs_section_ptr; + else if (isym->st_shndx == SHN_COMMON) + tsec = bfd_com_section_ptr; + else if (isym->st_shndx == SHN_X86_64_LCOMMON) + tsec = &_bfd_elf_large_com_section; + else + tsec = bfd_section_from_elf_index (abfd, isym->st_shndx); + + toff = isym->st_value; + convert_mov_to_lea = local; + } + } + else + { + indx = r_symndx - symtab_hdr->sh_info; + h = elf_sym_hashes (abfd)[indx]; + BFD_ASSERT (h != NULL); + + 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; + + /* STT_GNU_IFUNC must keep R_X86_64_GOTPCREL relocation. We also + avoid optimizing _DYNAMIC since ld.so may use its link-time + address. */ + if (h->def_regular + && h->type != STT_GNU_IFUNC + && h != htab->elf.hdynamic + && SYMBOL_REFERENCES_LOCAL (link_info, h)) + { + tsec = h->root.u.def.section; + toff = h->root.u.def.value; + symtype = h->type; + convert_mov_to_lea = global; } - continue; } - indx = r_symndx - symtab_hdr->sh_info; - h = elf_sym_hashes (abfd)[indx]; - BFD_ASSERT (h != NULL); + if (convert_mov_to_lea == none) + continue; - 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 (tsec->sec_info_type == SEC_INFO_TYPE_MERGE) + { + /* At this stage in linking, no SEC_MERGE symbol has been + adjusted, so all references to such symbols need to be + passed through _bfd_merged_section_offset. (Later, in + relocate_section, all SEC_MERGE symbols *except* for + section symbols have been adjusted.) + + gas may reduce relocations against symbols in SEC_MERGE + sections to a relocation against the section symbol when + the original addend was zero. When the reloc is against + a section symbol we should include the addend in the + offset passed to _bfd_merged_section_offset, since the + location of interest is the original symbol. On the + other hand, an access to "sym+addend" where "sym" is not + a section symbol should not include the addend; Such an + access is presumed to be an offset from "sym"; The + location of interest is just "sym". */ + if (symtype == STT_SECTION) + toff += irel->r_addend; + + toff = _bfd_merged_section_offset (abfd, &tsec, + elf_section_data (tsec)->sec_info, + toff); + + if (symtype != STT_SECTION) + toff += irel->r_addend; + } + else + toff += irel->r_addend; - /* STT_GNU_IFUNC must keep R_X86_64_GOTPCREL relocation. We also - avoid optimizing _DYNAMIC since ld.so may use its link-time - address. */ - if (h->def_regular - && h->type != STT_GNU_IFUNC - && h != htab->elf.hdynamic - && SYMBOL_REFERENCES_LOCAL (link_info, h) - && irel->r_offset >= 2 - && bfd_get_8 (input_bfd, - contents + irel->r_offset - 2) == 0x8b) + /* Don't convert if R_X86_64_PC32 relocation overflows. */ + if (tsec->output_section == sec->output_section) + { + if ((toff - roff + 0x80000000) > 0xffffffff) + continue; + } + else + { + asection *asect; + bfd_size_type size; + + /* At this point, we don't know the load addresses of TSEC + section nor SEC section. We estimate the distrance between + SEC and TSEC. */ + size = 0; + for (asect = sec->output_section; + asect != NULL && asect != tsec->output_section; + asect = asect->next) + { + asection *i; + for (i = asect->output_section->map_head.s; + i != NULL; + i = i->map_head.s) + { + size = align_power (size, i->alignment_power); + size += i->size; + } + } + + /* Don't convert R_X86_64_GOTPCREL if TSEC isn't placed after + SEC. */ + if (asect == NULL) + continue; + + /* Take PT_GNU_RELRO segment into account by adding + maxpagesize. */ + if ((toff + size + maxpagesize - roff + 0x80000000) + > 0xffffffff) + continue; + } + + bfd_put_8 (abfd, 0x8d, contents + roff - 2); + irel->r_info = htab->r_info (r_symndx, R_X86_64_PC32); + changed_contents = TRUE; + changed_relocs = TRUE; + + if (convert_mov_to_lea == local) + { + if (local_got_refcounts != NULL + && local_got_refcounts[r_symndx] > 0) + local_got_refcounts[r_symndx] -= 1; + } + else { - bfd_put_8 (output_bfd, 0x8d, - contents + irel->r_offset - 2); - irel->r_info = htab->r_info (r_symndx, R_X86_64_PC32); if (h->got.refcount > 0) h->got.refcount -= 1; - changed_contents = TRUE; - changed_relocs = TRUE; } } @@ -3090,8 +3230,9 @@ elf_x86_64_size_dynamic_sections (bfd *output_bfd, && (info->flags & DF_TEXTREL) == 0) { info->flags |= DF_TEXTREL; - if (info->warn_shared_textrel && info->shared) - info->callbacks->einfo (_("%P: %B: warning: relocation in readonly section `%A'.\n"), + if ((info->warn_shared_textrel && info->shared) + || info->error_textrel) + info->callbacks->einfo (_("%P: %B: warning: relocation in readonly section `%A'\n"), p->sec->owner, p->sec); } } @@ -3333,12 +3474,19 @@ elf_x86_64_size_dynamic_sections (bfd *output_bfd, 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)) + /* DT_PLTGOT is used by prelink even if there is no PLT + relocation. */ + if (!add_dynamic_entry (DT_PLTGOT, 0)) return FALSE; + if (htab->elf.srelplt->size != 0) + { + if (!add_dynamic_entry (DT_PLTRELSZ, 0) + || !add_dynamic_entry (DT_PLTREL, DT_RELA) + || !add_dynamic_entry (DT_JMPREL, 0)) + return FALSE; + } + if (htab->tlsdesc_plt && (!add_dynamic_entry (DT_TLSDESC_PLT, 0) || !add_dynamic_entry (DT_TLSDESC_GOT, 0))) @@ -3407,6 +3555,7 @@ elf_x86_64_always_size_sections (bfd *output_bfd, tlsbase = (struct elf_link_hash_entry *)bh; tlsbase->def_regular = 1; tlsbase->other = STV_HIDDEN; + tlsbase->root.linker_def = 1; (*bed->elf_backend_hide_symbol) (info, tlsbase, TRUE); } } @@ -3944,21 +4093,52 @@ elf_x86_64_relocate_section (bfd *output_bfd, /* Relocation is relative to the start of the global offset table. */ - /* Check to make sure it isn't a protected function symbol - for shared library since it may not be local when used - as function address. */ - if (!info->executable - && h - && !SYMBOLIC_BIND (info, h) - && h->def_regular - && h->type == STT_FUNC - && ELF_ST_VISIBILITY (h->other) == STV_PROTECTED) + /* Check to make sure it isn't a protected function or data + symbol for shared library since it may not be local when + used as function address or with copy relocation. We also + need to make sure that a symbol is referenced locally. */ + if (info->shared && h) { - (*_bfd_error_handler) - (_("%B: relocation R_X86_64_GOTOFF64 against protected function `%s' can not be used when making a shared object"), - input_bfd, h->root.root.string); - bfd_set_error (bfd_error_bad_value); + if (!h->def_regular) + { + const char *v; + + switch (ELF_ST_VISIBILITY (h->other)) + { + case STV_HIDDEN: + v = _("hidden symbol"); + break; + case STV_INTERNAL: + v = _("internal symbol"); + break; + case STV_PROTECTED: + v = _("protected symbol"); + break; + default: + v = _("symbol"); + break; + } + + (*_bfd_error_handler) + (_("%B: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object"), + input_bfd, v, h->root.root.string); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } + else if (!info->executable + && !SYMBOL_REFERENCES_LOCAL (info, h) + && (h->type == STT_FUNC + || h->type == STT_OBJECT) + && ELF_ST_VISIBILITY (h->other) == STV_PROTECTED) + { + (*_bfd_error_handler) + (_("%B: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object"), + input_bfd, + h->type == STT_FUNC ? "function" : "data", + h->root.root.string); + bfd_set_error (bfd_error_bad_value); return FALSE; + } } /* Note that sgot is not involved in this @@ -4063,10 +4243,14 @@ elf_x86_64_relocate_section (bfd *output_bfd, case R_X86_64_PC16: case R_X86_64_PC32: case R_X86_64_PC32_BND: + /* Don't complain about -fPIC if the symbol is undefined when + building executable. */ if (info->shared && (input_section->flags & SEC_ALLOC) != 0 && (input_section->flags & SEC_READONLY) != 0 - && h != NULL) + && h != NULL + && !(info->executable + && h->root.type == bfd_link_hash_undefined)) { bfd_boolean fail = FALSE; bfd_boolean branch @@ -4140,11 +4324,14 @@ direct: break; /* Don't copy a pc-relative relocation into the output file - if the symbol needs copy reloc. */ + if the symbol needs copy reloc or the symbol is undefined + when building executable. */ if ((info->shared && !(info->executable && h != NULL - && (h->needs_copy || eh->needs_copy) + && (h->needs_copy + || eh->needs_copy + || h->root.type == bfd_link_hash_undefined) && IS_X86_64_PCREL_TYPE (r_type)) && (h == NULL || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT @@ -5560,7 +5747,7 @@ bad_return: if (plt_sym_val == NULL) goto bad_return; - for (i = 0; i < count; i++, p++) + for (i = 0; i < count; i++) plt_sym_val[i] = -1; plt_offset = bed->plt_entry_size; @@ -5593,6 +5780,11 @@ bad_return: else plt_sym_val[reloc_index] = plt->vma + plt_offset; plt_offset += bed->plt_entry_size; + + /* PR binutils/18437: Skip extra relocations in the .rela.plt + section. */ + if (plt_offset >= plt->size) + break; } free (plt_contents); @@ -5850,6 +6042,7 @@ static const struct bfd_elf_special_section #define elf_backend_got_header_size (GOT_ENTRY_SIZE*3) #define elf_backend_rela_normal 1 #define elf_backend_plt_alignment 4 +#define elf_backend_extern_protected_data 1 #define elf_info_to_howto elf_x86_64_info_to_howto @@ -5908,6 +6101,21 @@ static const struct bfd_elf_special_section #include "elf64-target.h" +/* CloudABI support. */ + +#undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM x86_64_elf64_cloudabi_vec +#undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf64-x86-64-cloudabi" + +#undef ELF_OSABI +#define ELF_OSABI ELFOSABI_CLOUDABI + +#undef elf64_bed +#define elf64_bed elf64_x86_64_cloudabi_bed + +#include "elf64-target.h" + /* FreeBSD support. */ #undef TARGET_LITTLE_SYM diff --git a/bfd/elfcode.h b/bfd/elfcode.h index 1a9d304..7e309cf 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -712,7 +712,7 @@ elf_object_p (bfd *abfd) switch (ebd->elf_machine_code) { case EM_386: - case EM_486: + case EM_IAMCU: case EM_X86_64: case EM_OLD_SPARCV9: case EM_SPARC32PLUS: diff --git a/bfd/elflink.c b/bfd/elflink.c index 73d2360..1c0861b 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -54,6 +54,47 @@ struct elf_find_verdep_info static bfd_boolean _bfd_elf_fix_symbol_flags (struct elf_link_hash_entry *, struct elf_info_failed *); +asection * +_bfd_elf_section_for_symbol (struct elf_reloc_cookie *cookie, + unsigned long r_symndx, + bfd_boolean discard) +{ + if (r_symndx >= cookie->locsymcount + || ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL) + { + struct elf_link_hash_entry *h; + + h = cookie->sym_hashes[r_symndx - cookie->extsymoff]; + + 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 ((h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + && discarded_section (h->root.u.def.section)) + return h->root.u.def.section; + else + return NULL; + } + else + { + /* It's not a relocation against a global symbol, + but it could be a relocation against a local + symbol for a discarded section. */ + asection *isec; + Elf_Internal_Sym *isym; + + /* Need to: get the symbol; get the section. */ + isym = &cookie->locsyms[r_symndx]; + isec = bfd_section_from_elf_index (cookie->abfd, isym->st_shndx); + if (isec != NULL + && discard ? discarded_section (isec) : 1) + return isec; + } + return NULL; +} + /* Define a symbol in a dynamic linkage section. */ struct elf_link_hash_entry * @@ -77,9 +118,9 @@ _bfd_elf_define_linkage_sym (bfd *abfd, } bh = &h->root; + bed = get_elf_backend_data (abfd); if (!_bfd_generic_link_add_one_symbol (info, abfd, name, BSF_GLOBAL, - sec, 0, NULL, FALSE, - get_elf_backend_data (abfd)->collect, + sec, 0, NULL, FALSE, bed->collect, &bh)) return NULL; h = (struct elf_link_hash_entry *) bh; @@ -90,7 +131,6 @@ _bfd_elf_define_linkage_sym (bfd *abfd, if (ELF_ST_VISIBILITY (h->other) != STV_INTERNAL) h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN; - bed = get_elf_backend_data (abfd); (*bed->elf_backend_hide_symbol) (info, h, TRUE); return h; } @@ -762,6 +802,7 @@ _bfd_elf_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED, asection *p) { struct elf_link_hash_table *htab; + asection *ip; switch (elf_section_data (p)->this_hdr.sh_type) { @@ -777,18 +818,9 @@ _bfd_elf_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED, if (htab->text_index_section != NULL) return p != htab->text_index_section && p != htab->data_index_section; - if (strcmp (p->name, ".got") == 0 - || strcmp (p->name, ".got.plt") == 0 - || strcmp (p->name, ".plt") == 0) - { - asection *ip; - - if (htab->dynobj != NULL + return (htab->dynobj != NULL && (ip = bfd_get_linker_section (htab->dynobj, p->name)) != NULL - && ip->output_section == p) - return TRUE; - } - return FALSE; + && ip->output_section == p); /* There shouldn't be section relative relocations against any other section. */ @@ -853,7 +885,7 @@ _bfd_elf_link_renumber_dynsyms (bfd *output_bfd, static void elf_merge_st_other (bfd *abfd, struct elf_link_hash_entry *h, - const Elf_Internal_Sym *isym, + const Elf_Internal_Sym *isym, asection *sec, bfd_boolean definition, bfd_boolean dynamic) { const struct elf_backend_data *bed = get_elf_backend_data (abfd); @@ -874,7 +906,9 @@ elf_merge_st_other (bfd *abfd, struct elf_link_hash_entry *h, if (symvis - 1 < hvis - 1) h->other = symvis | (h->other & ~ELF_ST_VISIBILITY (-1)); } - else if (definition && ELF_ST_VISIBILITY (isym->st_other) != STV_DEFAULT) + else if (definition + && ELF_ST_VISIBILITY (isym->st_other) != STV_DEFAULT + && (sec->flags & SEC_READONLY) == 0) h->protected_def = 1; } @@ -1426,7 +1460,7 @@ _bfd_elf_merge_symbol (bfd *abfd, /* Merge st_other. If the symbol already has a dynamic index, but visibility says it should not be visible, turn it into a local symbol. */ - elf_merge_st_other (abfd, h, sym, newdef, newdyn); + elf_merge_st_other (abfd, h, sym, sec, newdef, newdyn); if (h->dynindx != -1) switch (ELF_ST_VISIBILITY (h->other)) { @@ -2289,8 +2323,8 @@ _bfd_elf_link_size_reloc_section (bfd *abfd, { struct elf_link_hash_entry **p; - p = (struct elf_link_hash_entry **) - bfd_zmalloc (reldata->count * sizeof (struct elf_link_hash_entry *)); + p = ((struct elf_link_hash_entry **) + bfd_zmalloc (reldata->count * sizeof (*p))); if (p == NULL) return FALSE; @@ -2680,14 +2714,14 @@ _bfd_elf_adjust_dynamic_copy (struct bfd_link_info *info, /* Increment the size of DYNBSS to make room for the symbol. */ dynbss->size += h->size; - if (h->protected_def) - { - info->callbacks->einfo - (_("%P: copy reloc against protected `%T' is invalid\n"), - h->root.root.string); - bfd_set_error (bfd_error_bad_value); - return FALSE; - } + /* No error if extern_protected_data is true. */ + if (h->protected_def + && (!info->extern_protected_data + || (info->extern_protected_data < 0 + && !get_elf_backend_data (dynbss->owner)->extern_protected_data))) + info->callbacks->einfo + (_("%P: copy reloc against protected `%T' is dangerous\n"), + h->root.root.string); return TRUE; } @@ -2844,8 +2878,12 @@ _bfd_elf_symbol_refs_local_p (struct elf_link_hash_entry *h, bed = get_elf_backend_data (hash_table->dynobj); - /* STV_PROTECTED non-function symbols are local. */ - if (!bed->is_function_type (h->type)) + /* If extern_protected_data is false, STV_PROTECTED non-function + symbols are local. */ + if ((!info->extern_protected_data + || (info->extern_protected_data < 0 + && !bed->extern_protected_data)) + && !bed->is_function_type (h->type)) return TRUE; /* Function pointer equality tests may require that STV_PROTECTED @@ -2944,6 +2982,10 @@ elf_link_is_defined_archive_symbol (bfd * abfd, carsym * symdef) if (abfd == NULL) return FALSE; + /* Return FALSE if the object has been claimed by plugin. */ + if (abfd->plugin_format == bfd_plugin_yes) + return FALSE; + if (! bfd_check_format (abfd, bfd_object)) return FALSE; @@ -4093,8 +4135,7 @@ error_free_dyn: requested we not re-export it, then mark it as hidden. */ if (definition && !dynamic - && (abfd->no_export - || (abfd->my_archive && abfd->my_archive->no_export)) + && abfd->no_export && ELF_ST_VISIBILITY (isym->st_other) != STV_INTERNAL) isym->st_other = (STV_HIDDEN | (isym->st_other & ~ELF_ST_VISIBILITY (-1))); @@ -4365,7 +4406,7 @@ error_free_dyn: } /* Merge st_other field. */ - elf_merge_st_other (abfd, h, isym, definition, dynamic); + elf_merge_st_other (abfd, h, isym, sec, definition, dynamic); /* We don't want to make debug symbol dynamic. */ if (definition && (sec->flags & SEC_DEBUGGING) && !info->relocatable) @@ -4392,8 +4433,8 @@ error_free_dyn: { amt = ((isymend - isym + 1) * sizeof (struct elf_link_hash_entry *)); - nondeflt_vers = - (struct elf_link_hash_entry **) bfd_malloc (amt); + nondeflt_vers + = (struct elf_link_hash_entry **) bfd_malloc (amt); if (!nondeflt_vers) goto error_free_vers; } @@ -4459,7 +4500,7 @@ error_free_dyn: } elf_dyn_lib_class (abfd) = (enum dynamic_lib_link_class) - (elf_dyn_lib_class (abfd) & ~DYN_AS_NEEDED); + (elf_dyn_lib_class (abfd) & ~DYN_AS_NEEDED); add_needed = TRUE; ret = elf_add_dt_needed_tag (abfd, info, soname, add_needed); @@ -4868,8 +4909,7 @@ error_free_dyn: /* Add this bfd to the loaded list. */ struct elf_link_loaded_list *n; - n = (struct elf_link_loaded_list *) - bfd_alloc (abfd, sizeof (struct elf_link_loaded_list)); + n = (struct elf_link_loaded_list *) bfd_alloc (abfd, sizeof (*n)); if (n == NULL) goto error_return; n->abfd = abfd; @@ -5430,7 +5470,7 @@ compute_bucket_count (struct bfd_link_info *info ATTRIBUTE_UNUSED, { best_chlen = max; best_size = i; - no_improvement_count = 0; + no_improvement_count = 0; } /* PR 11843: Avoid futile long searches for the best bucket size when there are a large number of symbols. */ @@ -6724,7 +6764,7 @@ _bfd_elf_link_hash_newfunc (struct bfd_hash_entry *entry, if (entry == NULL) { entry = (struct bfd_hash_entry *) - bfd_hash_allocate (table, sizeof (struct elf_link_hash_entry)); + bfd_hash_allocate (table, sizeof (struct elf_link_hash_entry)); if (entry == NULL) return entry; } @@ -7275,10 +7315,10 @@ bfd_elf_match_symbols_in_sections (asection *sec1, asection *sec2, if (count1 == 0 || count2 == 0 || count1 != count2) goto done; - symtable1 = (struct elf_symbol *) - bfd_malloc (count1 * sizeof (struct elf_symbol)); - symtable2 = (struct elf_symbol *) - bfd_malloc (count2 * sizeof (struct elf_symbol)); + symtable1 + = (struct elf_symbol *) bfd_malloc (count1 * sizeof (*symtable1)); + symtable2 + = (struct elf_symbol *) bfd_malloc (count2 * sizeof (*symtable2)); if (symtable1 == NULL || symtable2 == NULL) goto done; @@ -7404,7 +7444,7 @@ struct elf_final_link_info /* Output BFD. */ bfd *output_bfd; /* Symbol string table. */ - struct bfd_strtab_hash *symstrtab; + struct elf_strtab_hash *symstrtab; /* .dynsym section. */ asection *dynsym_sec; /* .hash section. */ @@ -7431,16 +7471,8 @@ struct elf_final_link_info /* Array large enough to hold a section pointer for each local symbol of any input BFD. */ asection **sections; - /* Buffer to hold swapped out symbols. */ - bfd_byte *symbuf; - /* And one for symbol section indices. */ + /* Buffer for SHT_SYMTAB_SHNDX section. */ Elf_External_Sym_Shndx *symshndxbuf; - /* Number of swapped out symbols in buffer. */ - size_t symbuf_count; - /* Number of symbols which fit in symbuf. */ - size_t symbuf_size; - /* And same for symshndxbuf. */ - size_t shndxbuf_size; /* Number of STT_FILE syms seen. */ size_t filesym_count; }; @@ -7451,8 +7483,6 @@ struct elf_outext_info { bfd_boolean failed; bfd_boolean localsyms; - bfd_boolean need_second_pass; - bfd_boolean second_pass; bfd_boolean file_sym_done; struct elf_final_link_info *flinfo; }; @@ -7803,28 +7833,34 @@ put_value (bfd_vma size, { location += (size - chunksz); - for (; size; size -= chunksz, location -= chunksz, x >>= (chunksz * 8)) + for (; size; size -= chunksz, location -= chunksz) { switch (chunksz) { - default: - case 0: - abort (); case 1: bfd_put_8 (input_bfd, x, location); + x >>= 8; break; case 2: bfd_put_16 (input_bfd, x, location); + x >>= 16; break; case 4: bfd_put_32 (input_bfd, x, location); + /* Computed this way because x >>= 32 is undefined if x is a 32-bit value. */ + x >>= 16; + x >>= 16; break; - case 8: #ifdef BFD64 + case 8: bfd_put_64 (input_bfd, x, location); -#else - abort (); + /* Computed this way because x >>= 64 is undefined if x is a 64-bit value. */ + x >>= 32; + x >>= 32; + break; #endif + default: + abort (); break; } } @@ -8526,47 +8562,23 @@ elf_link_sort_relocs (bfd *abfd, struct bfd_link_info *info, asection **psec) return ret; } -/* Flush the output symbols to the file. */ - -static bfd_boolean -elf_link_flush_output_syms (struct elf_final_link_info *flinfo, - const struct elf_backend_data *bed) -{ - if (flinfo->symbuf_count > 0) - { - Elf_Internal_Shdr *hdr; - file_ptr pos; - bfd_size_type amt; - - hdr = &elf_tdata (flinfo->output_bfd)->symtab_hdr; - pos = hdr->sh_offset + hdr->sh_size; - amt = flinfo->symbuf_count * bed->s->sizeof_sym; - if (bfd_seek (flinfo->output_bfd, pos, SEEK_SET) != 0 - || bfd_bwrite (flinfo->symbuf, amt, flinfo->output_bfd) != amt) - return FALSE; - - hdr->sh_size += amt; - flinfo->symbuf_count = 0; - } - - return TRUE; -} - -/* Add a symbol to the output symbol table. */ +/* Add a symbol to the output symbol string table. */ static int -elf_link_output_sym (struct elf_final_link_info *flinfo, - const char *name, - Elf_Internal_Sym *elfsym, - asection *input_sec, - struct elf_link_hash_entry *h) -{ - bfd_byte *dest; - Elf_External_Sym_Shndx *destshndx; +elf_link_output_symstrtab (struct elf_final_link_info *flinfo, + const char *name, + Elf_Internal_Sym *elfsym, + asection *input_sec, + struct elf_link_hash_entry *h) +{ int (*output_symbol_hook) (struct bfd_link_info *, const char *, Elf_Internal_Sym *, asection *, struct elf_link_hash_entry *); + struct elf_link_hash_table *hash_table; const struct elf_backend_data *bed; + bfd_size_type strtabsize; + + BFD_ASSERT (elf_onesymtab (flinfo->output_bfd)); bed = get_elf_backend_data (flinfo->output_bfd); output_symbol_hook = bed->elf_backend_link_output_symbol_hook; @@ -8577,49 +8589,119 @@ elf_link_output_sym (struct elf_final_link_info *flinfo, return ret; } - if (name == NULL || *name == '\0') - elfsym->st_name = 0; - else if (input_sec->flags & SEC_EXCLUDE) - elfsym->st_name = 0; + if (name == NULL + || *name == '\0' + || (input_sec->flags & SEC_EXCLUDE)) + elfsym->st_name = (unsigned long) -1; else { - elfsym->st_name = (unsigned long) _bfd_stringtab_add (flinfo->symstrtab, - name, TRUE, FALSE); + /* Call _bfd_elf_strtab_offset after _bfd_elf_strtab_finalize + to get the final offset for st_name. */ + elfsym->st_name + = (unsigned long) _bfd_elf_strtab_add (flinfo->symstrtab, + name, FALSE); if (elfsym->st_name == (unsigned long) -1) return 0; } - if (flinfo->symbuf_count >= flinfo->symbuf_size) + hash_table = elf_hash_table (flinfo->info); + strtabsize = hash_table->strtabsize; + if (strtabsize <= hash_table->strtabcount) { - if (! elf_link_flush_output_syms (flinfo, bed)) + strtabsize += strtabsize; + hash_table->strtabsize = strtabsize; + strtabsize *= sizeof (*hash_table->strtab); + hash_table->strtab + = (struct elf_sym_strtab *) bfd_realloc (hash_table->strtab, + strtabsize); + if (hash_table->strtab == NULL) return 0; } + hash_table->strtab[hash_table->strtabcount].sym = *elfsym; + hash_table->strtab[hash_table->strtabcount].dest_index + = hash_table->strtabcount; + hash_table->strtab[hash_table->strtabcount].destshndx_index + = flinfo->symshndxbuf ? bfd_get_symcount (flinfo->output_bfd) : 0; + + bfd_get_symcount (flinfo->output_bfd) += 1; + hash_table->strtabcount += 1; + + return 1; +} - dest = flinfo->symbuf + flinfo->symbuf_count * bed->s->sizeof_sym; - destshndx = flinfo->symshndxbuf; - if (destshndx != NULL) +/* Swap symbols out to the symbol table and flush the output symbols to + the file. */ + +static bfd_boolean +elf_link_swap_symbols_out (struct elf_final_link_info *flinfo) +{ + struct elf_link_hash_table *hash_table = elf_hash_table (flinfo->info); + bfd_size_type amt, i; + const struct elf_backend_data *bed; + bfd_byte *symbuf; + Elf_Internal_Shdr *hdr; + file_ptr pos; + bfd_boolean ret; + + if (!hash_table->strtabcount) + return TRUE; + + BFD_ASSERT (elf_onesymtab (flinfo->output_bfd)); + + bed = get_elf_backend_data (flinfo->output_bfd); + + amt = bed->s->sizeof_sym * hash_table->strtabcount; + symbuf = (bfd_byte *) bfd_malloc (amt); + if (symbuf == NULL) + return FALSE; + + if (flinfo->symshndxbuf) { - if (bfd_get_symcount (flinfo->output_bfd) >= flinfo->shndxbuf_size) + amt = (sizeof (Elf_External_Sym_Shndx) + * (bfd_get_symcount (flinfo->output_bfd))); + flinfo->symshndxbuf = (Elf_External_Sym_Shndx *) bfd_zmalloc (amt); + if (flinfo->symshndxbuf == NULL) { - bfd_size_type amt; - - amt = flinfo->shndxbuf_size * sizeof (Elf_External_Sym_Shndx); - destshndx = (Elf_External_Sym_Shndx *) bfd_realloc (destshndx, - amt * 2); - if (destshndx == NULL) - return 0; - flinfo->symshndxbuf = destshndx; - memset ((char *) destshndx + amt, 0, amt); - flinfo->shndxbuf_size *= 2; + free (symbuf); + return FALSE; } - destshndx += bfd_get_symcount (flinfo->output_bfd); } - bed->s->swap_symbol_out (flinfo->output_bfd, elfsym, dest, destshndx); - flinfo->symbuf_count += 1; - bfd_get_symcount (flinfo->output_bfd) += 1; + for (i = 0; i < hash_table->strtabcount; i++) + { + struct elf_sym_strtab *elfsym = &hash_table->strtab[i]; + if (elfsym->sym.st_name == (unsigned long) -1) + elfsym->sym.st_name = 0; + else + elfsym->sym.st_name + = (unsigned long) _bfd_elf_strtab_offset (flinfo->symstrtab, + elfsym->sym.st_name); + bed->s->swap_symbol_out (flinfo->output_bfd, &elfsym->sym, + ((bfd_byte *) symbuf + + (elfsym->dest_index + * bed->s->sizeof_sym)), + (flinfo->symshndxbuf + + elfsym->destshndx_index)); + } + + hdr = &elf_tdata (flinfo->output_bfd)->symtab_hdr; + pos = hdr->sh_offset + hdr->sh_size; + amt = hash_table->strtabcount * bed->s->sizeof_sym; + if (bfd_seek (flinfo->output_bfd, pos, SEEK_SET) == 0 + && bfd_bwrite (symbuf, amt, flinfo->output_bfd) == amt) + { + hdr->sh_size += amt; + ret = TRUE; + } + else + ret = FALSE; - return 1; + free (symbuf); + + free (hash_table->strtab); + hash_table->strtab = NULL; + + return ret; } /* Return TRUE if the dynamic symbol SYM in ABFD is supported. */ @@ -8829,27 +8911,6 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data) { if (!h->forced_local) return TRUE; - if (eoinfo->second_pass - && !((h->root.type == bfd_link_hash_defined - || h->root.type == bfd_link_hash_defweak) - && h->root.u.def.section->output_section != NULL)) - return TRUE; - - if (!eoinfo->file_sym_done - && (eoinfo->second_pass ? eoinfo->flinfo->filesym_count == 1 - : eoinfo->flinfo->filesym_count > 1)) - { - /* Output a FILE symbol so that following locals are not associated - with the wrong input file. */ - memset (&sym, 0, sizeof (sym)); - sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FILE); - sym.st_shndx = SHN_ABS; - if (!elf_link_output_sym (eoinfo->flinfo, NULL, &sym, - bfd_und_section_ptr, NULL)) - return FALSE; - - eoinfo->file_sym_done = TRUE; - } } else { @@ -8933,8 +8994,9 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data) a regular file, or that we have been told to strip. However, if h->indx is set to -2, the symbol is used by a reloc and we must output it. */ + strip = FALSE; if (h->indx == -2) - strip = FALSE; + ; else if ((h->def_dynamic || h->ref_dynamic || h->root.type == bfd_link_hash_new) @@ -8951,7 +9013,8 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data) || h->root.type == bfd_link_hash_defweak) && ((flinfo->info->strip_discarded && discarded_section (h->root.u.def.section)) - || (h->root.u.def.section->owner != NULL + || ((h->root.u.def.section->flags & SEC_LINKER_CREATED) == 0 + && h->root.u.def.section->owner != NULL && (h->root.u.def.section->owner->flags & BFD_PLUGIN) != 0))) strip = TRUE; else if ((h->root.type == bfd_link_hash_undefined @@ -8959,12 +9022,11 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data) && h->root.u.undef.abfd != NULL && (h->root.u.undef.abfd->flags & BFD_PLUGIN) != 0) strip = TRUE; - else - 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 or a - STT_GNU_IFUNC symbol. */ + nothing else to do. However, if it is a forced local symbol or + an ifunc symbol we need to give the backend finish_dynamic_symbol + function a chance to make it dynamic. */ if (strip && h->dynindx == -1 && h->type != STT_GNU_IFUNC @@ -9010,19 +9072,6 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data) input_sec = h->root.u.def.section; if (input_sec->output_section != NULL) { - if (eoinfo->localsyms && flinfo->filesym_count == 1) - { - bfd_boolean second_pass_sym - = (input_sec->owner == flinfo->output_bfd - || input_sec->owner == NULL - || (input_sec->flags & SEC_LINKER_CREATED) != 0 - || (input_sec->owner->flags & BFD_LINKER_CREATED) != 0); - - eoinfo->need_second_pass |= second_pass_sym; - if (eoinfo->second_pass != second_pass_sym) - return TRUE; - } - sym.st_shndx = _bfd_elf_section_from_bfd_section (flinfo->output_bfd, input_sec->output_section); @@ -9048,12 +9097,6 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data) asection *tls_sec = elf_hash_table (flinfo->info)->tls_sec; if (tls_sec != NULL) sym.st_value -= tls_sec->vma; - else - { - /* The TLS section may have been garbage collected. */ - BFD_ASSERT (flinfo->info->gc_sections - && !input_sec->gc_mark); - } } } } @@ -9254,13 +9297,46 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data) } } - /* If we're stripping it, then it was just a dynamic symbol, and - there's nothing else to do. */ - if (strip || (input_sec->flags & SEC_EXCLUDE) != 0) + /* If the symbol is undefined, and we didn't output it to .dynsym, + strip it from .symtab too. Obviously we can't do this for + relocatable output or when needed for --emit-relocs. */ + else if (input_sec == bfd_und_section_ptr + && h->indx != -2 + && !flinfo->info->relocatable) return TRUE; + /* Also strip others that we couldn't earlier due to dynamic symbol + processing. */ + if (strip) + return TRUE; + if ((input_sec->flags & SEC_EXCLUDE) != 0) + return TRUE; + + /* Output a FILE symbol so that following locals are not associated + with the wrong input file. We need one for forced local symbols + if we've seen more than one FILE symbol or when we have exactly + one FILE symbol but global symbols are present in a file other + than the one with the FILE symbol. We also need one if linker + defined symbols are present. In practice these conditions are + always met, so just emit the FILE symbol unconditionally. */ + if (eoinfo->localsyms + && !eoinfo->file_sym_done + && eoinfo->flinfo->filesym_count != 0) + { + Elf_Internal_Sym fsym; + + memset (&fsym, 0, sizeof (fsym)); + fsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FILE); + fsym.st_shndx = SHN_ABS; + if (!elf_link_output_symstrtab (eoinfo->flinfo, NULL, &fsym, + bfd_und_section_ptr, NULL)) + return FALSE; + + eoinfo->file_sym_done = TRUE; + } indx = bfd_get_symcount (flinfo->output_bfd); - ret = elf_link_output_sym (flinfo, h->root.root.string, &sym, input_sec, h); + ret = elf_link_output_symstrtab (flinfo, h->root.root.string, &sym, + input_sec, h); if (ret == 0) { eoinfo->failed = TRUE; @@ -9286,6 +9362,7 @@ elf_section_ignore_discarded_relocs (asection *sec) { case SEC_INFO_TYPE_STABS: case SEC_INFO_TYPE_EH_FRAME: + case SEC_INFO_TYPE_EH_FRAME_ENTRY: return TRUE; default: break; @@ -9481,8 +9558,9 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) *ppsection = isec; - /* Don't output the first, undefined, symbol. */ - if (ppsection == flinfo->sections) + /* Don't output the first, undefined, symbol. In fact, don't + output any undefined local symbol. */ + if (isec == bfd_und_section_ptr) continue; if (ELF_ST_TYPE (isym->st_info) == STT_SECTION) @@ -9532,6 +9610,10 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) if (ELF_ST_TYPE (isym->st_info) == STT_FILE) { + if (input_bfd->lto_output) + /* -flto puts a temp file name here. This means builds + are not reproducible. Discard the symbol. */ + continue; have_file_sym = TRUE; flinfo->filesym_count += 1; } @@ -9548,8 +9630,11 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) memset (&osym, 0, sizeof (osym)); osym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FILE); osym.st_shndx = SHN_ABS; - if (!elf_link_output_sym (flinfo, input_bfd->filename, &osym, - bfd_abs_section_ptr, NULL)) + if (!elf_link_output_symstrtab (flinfo, + (input_bfd->lto_output ? NULL + : input_bfd->filename), + &osym, bfd_abs_section_ptr, + NULL)) return FALSE; } @@ -9581,7 +9666,7 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) } indx = bfd_get_symcount (output_bfd); - ret = elf_link_output_sym (flinfo, name, &osym, isec, NULL); + ret = elf_link_output_symstrtab (flinfo, name, &osym, isec, NULL); if (ret == 0) return FALSE; else if (ret == 1) @@ -9664,7 +9749,8 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) sym.st_value += o->output_offset; indx = bfd_get_symcount (output_bfd); - ret = elf_link_output_sym (flinfo, name, &sym, o, NULL); + ret = elf_link_output_symstrtab (flinfo, name, &sym, o, + NULL); if (ret == 0) return FALSE; else if (ret == 1) @@ -9799,6 +9885,24 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) s_type = h->type; + /* If a plugin symbol is referenced from a non-IR file, + mark the symbol as undefined. Note that the + linker may attach linker created dynamic sections + to the plugin bfd. Symbols defined in linker + created sections are not plugin symbols. */ + if (h->root.non_ir_ref + && (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + && (h->root.u.def.section->flags + & SEC_LINKER_CREATED) == 0 + && h->root.u.def.section->owner != NULL + && (h->root.u.def.section->owner->flags + & BFD_PLUGIN) != 0) + { + h->root.type = bfd_link_hash_undefined; + h->root.u.undef.abfd = h->root.u.def.section->owner; + } + ps = NULL; if (h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) @@ -10121,8 +10225,9 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) } indx = bfd_get_symcount (output_bfd); - ret = elf_link_output_sym (flinfo, name, &sym, sec, - NULL); + ret = elf_link_output_symstrtab (flinfo, name, + &sym, sec, + NULL); if (ret == 0) return FALSE; else if (ret == 1) @@ -10192,6 +10297,14 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) return FALSE; } break; + case SEC_INFO_TYPE_EH_FRAME_ENTRY: + { + if (! _bfd_elf_write_section_eh_frame_entry (output_bfd, + flinfo->info, + o, contents)) + return FALSE; + } + break; default: { /* FIXME: octets_per_byte. */ @@ -10335,7 +10448,7 @@ elf_reloc_link_order (bfd *output_bfd, size = (bfd_size_type) bfd_get_reloc_size (howto); buf = (bfd_byte *) bfd_zmalloc (size); - if (buf == NULL) + if (buf == NULL && size != 0) return FALSE; rstat = _bfd_relocate_contents (howto, output_bfd, addend, buf); switch (rstat) @@ -10561,7 +10674,7 @@ elf_final_link_free (bfd *obfd, struct elf_final_link_info *flinfo) asection *o; if (flinfo->symstrtab != NULL) - _bfd_stringtab_free (flinfo->symstrtab); + _bfd_elf_strtab_free (flinfo->symstrtab); if (flinfo->contents != NULL) free (flinfo->contents); if (flinfo->external_relocs != NULL) @@ -10578,8 +10691,6 @@ elf_final_link_free (bfd *obfd, struct elf_final_link_info *flinfo) free (flinfo->indices); if (flinfo->sections != NULL) free (flinfo->sections); - if (flinfo->symbuf != NULL) - free (flinfo->symbuf); if (flinfo->symshndxbuf != NULL) free (flinfo->symshndxbuf); for (o = obfd->sections; o != NULL; o = o->next) @@ -10609,7 +10720,6 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) bfd_size_type max_internal_reloc_count; bfd_size_type max_sym_count; bfd_size_type max_sym_shndx_count; - file_ptr off; Elf_Internal_Sym elfsym; unsigned int i; Elf_Internal_Shdr *symtab_hdr; @@ -10638,7 +10748,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) flinfo.info = info; flinfo.output_bfd = abfd; - flinfo.symstrtab = _bfd_elf_stringtab_init (); + flinfo.symstrtab = _bfd_elf_strtab_init (); if (flinfo.symstrtab == NULL) return FALSE; @@ -10665,10 +10775,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) flinfo.internal_syms = NULL; flinfo.indices = NULL; flinfo.sections = NULL; - flinfo.symbuf = NULL; flinfo.symshndxbuf = NULL; - flinfo.symbuf_count = 0; - flinfo.shndxbuf_size = 0; flinfo.filesym_count = 0; /* The object attributes have been merged. Remove the input @@ -10844,7 +10951,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) /* Figure out the file positions for everything but the symbol table and the relocs. We set symcount to force assign_section_numbers to create a symbol table. */ - bfd_get_symcount (abfd) = info->strip == strip_all ? 0 : 1; + bfd_get_symcount (abfd) = info->strip != strip_all || emit_relocs; BFD_ASSERT (! abfd->output_has_begun); if (! _bfd_elf_compute_section_file_positions (abfd, info)) goto error_return; @@ -10868,6 +10975,21 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) to count upwards while actually outputting the relocations. */ esdo->rel.count = 0; esdo->rela.count = 0; + + if (esdo->this_hdr.sh_offset == (file_ptr) -1) + { + /* Cache the section contents so that they can be compressed + later. Use bfd_malloc since it will be freed by + bfd_compress_section_contents. */ + unsigned char *contents = esdo->this_hdr.contents; + if ((o->flags & SEC_ELF_COMPRESS) == 0 || contents != NULL) + abort (); + contents + = (unsigned char *) bfd_malloc (esdo->this_hdr.sh_size); + if (contents == NULL) + goto error_return; + esdo->this_hdr.contents = contents; + } } /* We have now assigned file positions for all the sections except @@ -10885,59 +11007,47 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) /* sh_offset is set just below. */ symtab_hdr->sh_addralign = (bfd_vma) 1 << bed->s->log_file_align; - off = elf_next_file_pos (abfd); - off = _bfd_elf_assign_file_position_for_section (symtab_hdr, off, TRUE); - - /* Note that at this point elf_next_file_pos (abfd) is - incorrect. We do not yet know the size of the .symtab section. - We correct next_file_pos below, after we do know the size. */ - - /* Allocate a buffer to hold swapped out symbols. This is to avoid - continuously seeking to the right position in the file. */ - if (! info->keep_memory || max_sym_count < 20) - flinfo.symbuf_size = 20; - else - flinfo.symbuf_size = max_sym_count; - amt = flinfo.symbuf_size; - amt *= bed->s->sizeof_sym; - flinfo.symbuf = (bfd_byte *) bfd_malloc (amt); - if (flinfo.symbuf == NULL) + if (max_sym_count < 20) + max_sym_count = 20; + elf_hash_table (info)->strtabsize = max_sym_count; + amt = max_sym_count * sizeof (struct elf_sym_strtab); + elf_hash_table (info)->strtab + = (struct elf_sym_strtab *) bfd_malloc (amt); + if (elf_hash_table (info)->strtab == NULL) goto error_return; - if (elf_numsections (abfd) > (SHN_LORESERVE & 0xFFFF)) - { - /* Wild guess at number of output symbols. realloc'd as needed. */ - amt = 2 * max_sym_count + elf_numsections (abfd) + 1000; - flinfo.shndxbuf_size = amt; - amt *= sizeof (Elf_External_Sym_Shndx); - flinfo.symshndxbuf = (Elf_External_Sym_Shndx *) bfd_zmalloc (amt); - if (flinfo.symshndxbuf == NULL) - goto error_return; - } + /* The real buffer will be allocated in elf_link_swap_symbols_out. */ + flinfo.symshndxbuf + = (elf_numsections (abfd) > (SHN_LORESERVE & 0xFFFF) + ? (Elf_External_Sym_Shndx *) -1 : NULL); - /* Start writing out the symbol table. The first symbol is always a - dummy symbol. */ - if (info->strip != strip_all - || emit_relocs) + if (info->strip != strip_all || emit_relocs) { + file_ptr off = elf_next_file_pos (abfd); + + _bfd_elf_assign_file_position_for_section (symtab_hdr, off, TRUE); + + /* Note that at this point elf_next_file_pos (abfd) is + incorrect. We do not yet know the size of the .symtab section. + We correct next_file_pos below, after we do know the size. */ + + /* Start writing out the symbol table. The first symbol is always a + dummy symbol. */ elfsym.st_value = 0; elfsym.st_size = 0; elfsym.st_info = 0; elfsym.st_other = 0; elfsym.st_shndx = SHN_UNDEF; elfsym.st_target_internal = 0; - if (elf_link_output_sym (&flinfo, NULL, &elfsym, bfd_und_section_ptr, - NULL) != 1) + if (elf_link_output_symstrtab (&flinfo, NULL, &elfsym, + bfd_und_section_ptr, NULL) != 1) goto error_return; - } - /* Output a symbol for each section. We output these even if we are - discarding local symbols, since they are used for relocs. These - symbols have no names. We store the index of each one in the - index field of the section, so that we can find it again when - outputting relocs. */ - if (info->strip != strip_all - || emit_relocs) - { + /* Output a symbol for each section. We output these even if we are + discarding local symbols, since they are used for relocs. These + symbols have no names. We store the index of each one in the + index field of the section, so that we can find it again when + outputting relocs. */ + elfsym.st_size = 0; elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION); elfsym.st_other = 0; @@ -10952,7 +11062,8 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) elfsym.st_shndx = i; if (!info->relocatable) elfsym.st_value = o->vma; - if (elf_link_output_sym (&flinfo, NULL, &elfsym, o, NULL) != 1) + if (elf_link_output_symstrtab (&flinfo, NULL, &elfsym, o, + NULL) != 1) goto error_return; } } @@ -11051,6 +11162,9 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) return FALSE; } + if (!_bfd_elf_fixup_eh_frame_hdr (info)) + return FALSE; + /* Since ELF permits relocations to be against local symbols, we must have the local symbols available when we do the relocations. Since we would rather only read the local symbols once, and we @@ -11151,31 +11265,23 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) eoinfo.failed = FALSE; eoinfo.flinfo = &flinfo; eoinfo.localsyms = TRUE; - eoinfo.need_second_pass = FALSE; - eoinfo.second_pass = FALSE; eoinfo.file_sym_done = FALSE; bfd_hash_traverse (&info->hash->table, elf_link_output_extsym, &eoinfo); if (eoinfo.failed) return FALSE; - if (eoinfo.need_second_pass) - { - eoinfo.second_pass = TRUE; - bfd_hash_traverse (&info->hash->table, elf_link_output_extsym, &eoinfo); - if (eoinfo.failed) - return FALSE; - } - /* If backend needs to output some local symbols not present in the hash table, do it now. */ - if (bed->elf_backend_output_arch_local_syms) + if (bed->elf_backend_output_arch_local_syms + && (info->strip != strip_all || emit_relocs)) { typedef int (*out_sym_func) (void *, const char *, Elf_Internal_Sym *, asection *, struct elf_link_hash_entry *); if (! ((*bed->elf_backend_output_arch_local_syms) - (abfd, info, &flinfo, (out_sym_func) elf_link_output_sym))) + (abfd, info, &flinfo, + (out_sym_func) elf_link_output_symstrtab))) return FALSE; } @@ -11278,54 +11384,57 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) /* If backend needs to output some symbols not present in the hash table, do it now. */ - if (bed->elf_backend_output_arch_syms) + if (bed->elf_backend_output_arch_syms + && (info->strip != strip_all || emit_relocs)) { typedef int (*out_sym_func) (void *, const char *, Elf_Internal_Sym *, asection *, struct elf_link_hash_entry *); if (! ((*bed->elf_backend_output_arch_syms) - (abfd, info, &flinfo, (out_sym_func) elf_link_output_sym))) + (abfd, info, &flinfo, + (out_sym_func) elf_link_output_symstrtab))) return FALSE; } - /* Flush all symbols to the file. */ - if (! elf_link_flush_output_syms (&flinfo, bed)) + /* Finalize the .strtab section. */ + _bfd_elf_strtab_finalize (flinfo.symstrtab); + + /* Swap out the .strtab section. */ + if (!elf_link_swap_symbols_out (&flinfo)) return FALSE; /* Now we know the size of the symtab section. */ - off += symtab_hdr->sh_size; - - symtab_shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; - if (symtab_shndx_hdr->sh_name != 0) - { - symtab_shndx_hdr->sh_type = SHT_SYMTAB_SHNDX; - symtab_shndx_hdr->sh_entsize = sizeof (Elf_External_Sym_Shndx); - symtab_shndx_hdr->sh_addralign = sizeof (Elf_External_Sym_Shndx); - amt = bfd_get_symcount (abfd) * sizeof (Elf_External_Sym_Shndx); - symtab_shndx_hdr->sh_size = amt; - - off = _bfd_elf_assign_file_position_for_section (symtab_shndx_hdr, - off, TRUE); - - if (bfd_seek (abfd, symtab_shndx_hdr->sh_offset, SEEK_SET) != 0 - || (bfd_bwrite (flinfo.symshndxbuf, amt, abfd) != amt)) - return FALSE; - } - - if (bfd_get_symcount (abfd) > 0) { /* Finish up and write out the symbol string table (.strtab) section. */ Elf_Internal_Shdr *symstrtab_hdr; + file_ptr off = symtab_hdr->sh_offset + symtab_hdr->sh_size; + + symtab_shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + if (symtab_shndx_hdr->sh_name != 0) + { + symtab_shndx_hdr->sh_type = SHT_SYMTAB_SHNDX; + symtab_shndx_hdr->sh_entsize = sizeof (Elf_External_Sym_Shndx); + symtab_shndx_hdr->sh_addralign = sizeof (Elf_External_Sym_Shndx); + amt = bfd_get_symcount (abfd) * sizeof (Elf_External_Sym_Shndx); + symtab_shndx_hdr->sh_size = amt; + + off = _bfd_elf_assign_file_position_for_section (symtab_shndx_hdr, + off, TRUE); + + if (bfd_seek (abfd, symtab_shndx_hdr->sh_offset, SEEK_SET) != 0 + || (bfd_bwrite (flinfo.symshndxbuf, amt, abfd) != amt)) + return FALSE; + } symstrtab_hdr = &elf_tdata (abfd)->strtab_hdr; /* sh_name was set in prep_headers. */ symstrtab_hdr->sh_type = SHT_STRTAB; symstrtab_hdr->sh_flags = 0; symstrtab_hdr->sh_addr = 0; - symstrtab_hdr->sh_size = _bfd_stringtab_size (flinfo.symstrtab); + symstrtab_hdr->sh_size = _bfd_elf_strtab_size (flinfo.symstrtab); symstrtab_hdr->sh_entsize = 0; symstrtab_hdr->sh_link = 0; symstrtab_hdr->sh_info = 0; @@ -11337,7 +11446,7 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) elf_next_file_pos (abfd) = off; if (bfd_seek (abfd, symstrtab_hdr->sh_offset, SEEK_SET) != 0 - || ! _bfd_stringtab_emit (abfd, flinfo.symstrtab)) + || ! _bfd_elf_strtab_emit (abfd, flinfo.symstrtab)) return FALSE; } @@ -11600,6 +11709,8 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) { /* The contents of the .dynstr section are actually in a stringtab. */ + file_ptr off; + off = elf_section_data (o->output_section)->this_hdr.sh_offset; if (bfd_seek (abfd, off, SEEK_SET) != 0 || ! _bfd_elf_strtab_emit (abfd, @@ -11968,6 +12079,11 @@ _bfd_elf_gc_mark (struct bfd_link_info *info, } } + eh_frame = elf_section_eh_frame_entry (sec); + if (ret && eh_frame && !eh_frame->gc_mark) + if (!_bfd_elf_gc_mark (info, eh_frame, gc_mark_hook)) + ret = FALSE; + return ret; } @@ -12098,7 +12214,6 @@ _bfd_elf_gc_mark_extra_sections (struct bfd_link_info *info, isec->name, ilen) == 0) { dsec->gc_mark = 0; - break; } } } @@ -12121,7 +12236,7 @@ elf_gc_sweep_symbol (struct elf_link_hash_entry *h, void *data) if (!h->mark && (((h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) - && !(h->def_regular + && !((h->def_regular || ELF_COMMON_DEF_P (h)) && h->root.u.def.section->gc_mark)) || h->root.type == bfd_link_hash_undefined || h->root.type == bfd_link_hash_undefweak)) @@ -12156,7 +12271,8 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info) { asection *o; - if (bfd_get_flavour (sub) != bfd_target_elf_flavour) + if (bfd_get_flavour (sub) != bfd_target_elf_flavour + || !(*bed->relocs_compatible) (sub->xvec, abfd->xvec)) continue; for (o = sub->sections; o != NULL; o = o->next) @@ -12344,7 +12460,7 @@ bfd_elf_gc_mark_dynamic_ref_symbol (struct elf_link_hash_entry *h, void *inf) if ((h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) && (h->ref_dynamic - || (h->def_regular + || ((h->def_regular || ELF_COMMON_DEF_P (h)) && ELF_ST_VISIBILITY (h->other) != STV_INTERNAL && ELF_ST_VISIBILITY (h->other) != STV_HIDDEN && (!info->executable @@ -12383,6 +12499,36 @@ _bfd_elf_gc_keep (struct bfd_link_info *info) } } +bfd_boolean +bfd_elf_parse_eh_frame_entries (bfd *abfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info) +{ + bfd *ibfd = info->input_bfds; + + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next) + { + asection *sec; + struct elf_reloc_cookie cookie; + + if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour) + continue; + + if (!init_reloc_cookie (&cookie, info, ibfd)) + return FALSE; + + for (sec = ibfd->sections; sec; sec = sec->next) + { + if (CONST_STRNEQ (bfd_section_name (ibfd, sec), ".eh_frame_entry") + && init_reloc_cookie_rels (&cookie, info, ibfd, sec)) + { + _bfd_elf_parse_eh_frame_entry (info, sec, &cookie); + fini_reloc_cookie_rels (&cookie, sec); + } + } + } + return TRUE; +} + /* Do mark and sweep of unused sections. */ bfd_boolean @@ -12406,7 +12552,9 @@ bfd_elf_gc_sections (bfd *abfd, struct bfd_link_info *info) /* Try to parse each bfd's .eh_frame section. Point elf_eh_frame_section at the .eh_frame section if we can mark the FDEs individually. */ - for (sub = info->input_bfds; sub != NULL; sub = sub->link.next) + for (sub = info->input_bfds; + info->eh_frame_hdr_type != COMPACT_EH_HDR && sub != NULL; + sub = sub->link.next) { asection *sec; struct elf_reloc_cookie cookie; @@ -12443,7 +12591,8 @@ bfd_elf_gc_sections (bfd *abfd, struct bfd_link_info *info) { asection *o; - if (bfd_get_flavour (sub) != bfd_target_elf_flavour) + if (bfd_get_flavour (sub) != bfd_target_elf_flavour + || !(*bed->relocs_compatible) (sub->xvec, abfd->xvec)) continue; /* Start at sections marked with SEC_KEEP (ref _bfd_elf_gc_keep). @@ -12511,8 +12660,8 @@ bfd_elf_gc_record_vtinherit (bfd *abfd, win: if (!child->vtable) { - child->vtable = (struct elf_link_virtual_table_entry *) - bfd_zalloc (abfd, sizeof (*child->vtable)); + child->vtable = ((struct elf_link_virtual_table_entry *) + bfd_zalloc (abfd, sizeof (*child->vtable))); if (!child->vtable) return FALSE; } @@ -12544,8 +12693,8 @@ bfd_elf_gc_record_vtentry (bfd *abfd ATTRIBUTE_UNUSED, if (!h->vtable) { - h->vtable = (struct elf_link_virtual_table_entry *) - bfd_zalloc (abfd, sizeof (*h->vtable)); + h->vtable = ((struct elf_link_virtual_table_entry *) + bfd_zalloc (abfd, sizeof (*h->vtable))); if (!h->vtable) return FALSE; } @@ -12909,7 +13058,9 @@ bfd_elf_discard_info (bfd *output_bfd, struct bfd_link_info *info) } } - o = bfd_get_section_by_name (output_bfd, ".eh_frame"); + o = NULL; + if (info->eh_frame_hdr_type != COMPACT_EH_HDR) + o = bfd_get_section_by_name (output_bfd, ".eh_frame"); if (o != NULL) { asection *i; @@ -12957,7 +13108,10 @@ bfd_elf_discard_info (bfd *output_bfd, struct bfd_link_info *info) } } - if (info->eh_frame_hdr + if (info->eh_frame_hdr_type == COMPACT_EH_HDR) + _bfd_elf_end_eh_frame_parsing (info); + + if (info->eh_frame_hdr_type && !info->relocatable && _bfd_elf_discard_section_eh_frame_hdr (output_bfd, info)) changed = 1; @@ -13203,11 +13357,11 @@ _bfd_elf_get_dynamic_reloc_section (bfd * abfd, string table associated with ABFD. */ asection * -_bfd_elf_make_dynamic_reloc_section (asection * sec, - bfd * dynobj, - unsigned int alignment, - bfd * abfd, - bfd_boolean is_rela) +_bfd_elf_make_dynamic_reloc_section (asection *sec, + bfd *dynobj, + unsigned int alignment, + bfd *abfd, + bfd_boolean is_rela) { asection * reloc_sec = elf_section_data (sec)->sreloc; @@ -13263,7 +13417,7 @@ _bfd_elf_copy_link_hash_symbol_type (bfd *abfd, ehdest->target_internal = ehsrc->target_internal; isym.st_other = ehsrc->other; - elf_merge_st_other (abfd, ehdest, &isym, TRUE, FALSE); + elf_merge_st_other (abfd, ehdest, &isym, NULL, TRUE, FALSE); } /* Append a RELA relocation REL to section S in BFD. */ diff --git a/bfd/elfn32-mips.c b/bfd/elfn32-mips.c index 08fbd48..504c3f3 100644 --- a/bfd/elfn32-mips.c +++ b/bfd/elfn32-mips.c @@ -108,7 +108,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = /* No relocation. */ HOWTO (R_MIPS_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -3403,7 +3403,12 @@ mips_elf_n32_rtype_to_howto (unsigned int r_type, bfd_boolean rela_p) else return &elf_mips16_howto_table_rel[r_type - R_MIPS16_min]; } - BFD_ASSERT (r_type < (unsigned int) R_MIPS_max); + if (r_type >= R_MIPS_max) + { + (*_bfd_error_handler) (_("unrecognised MIPS reloc number: %d"), r_type); + bfd_set_error (bfd_error_bad_value); + r_type = R_MIPS_NONE; + } if (rela_p) return &elf_mips_howto_table_rela[r_type]; else diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 3554a87..b13f5db 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -166,6 +166,7 @@ #define IS_AARCH64_TLS_RELOC(R_TYPE) \ ((R_TYPE) == BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21 \ + || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_ADR_PREL21 \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1 \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC \ @@ -188,8 +189,8 @@ #define IS_AARCH64_TLSDESC_RELOC(R_TYPE) \ ((R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LD_PREL19 \ - || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21 \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21 \ + || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21 \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_ADD_LO12_NC \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LD64_LO12_NC \ || (R_TYPE) == BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC \ @@ -296,7 +297,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = #if ARCH_SIZE == 64 HOWTO (R_AARCH64_NULL, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -310,7 +311,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = #else HOWTO (R_AARCH64_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -847,6 +848,53 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = 0xffc, /* dst_mask */ FALSE), /* pcrel_offset */ + /* LD64: GOT offset for the symbol. */ + HOWTO64 (AARCH64_R (LD64_GOTOFF_LO15), /* type */ + 3, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_unsigned, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + AARCH64_R_STR (LD64_GOTOFF_LO15), /* name */ + FALSE, /* partial_inplace */ + 0x7ff8, /* src_mask */ + 0x7ff8, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* LD32: GOT offset to the page address of GOT table. + (G(S) - PAGE (_GLOBAL_OFFSET_TABLE_)) & 0x5ffc. */ + HOWTO32 (AARCH64_R (LD32_GOTPAGE_LO14), /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_unsigned, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + AARCH64_R_STR (LD32_GOTPAGE_LO14), /* name */ + FALSE, /* partial_inplace */ + 0x5ffc, /* src_mask */ + 0x5ffc, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* LD64: GOT offset to the page address of GOT table. + (G(S) - PAGE (_GLOBAL_OFFSET_TABLE_)) & 0x7ff8. */ + HOWTO64 (AARCH64_R (LD64_GOTPAGE_LO15), /* type */ + 3, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 12, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_unsigned, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + AARCH64_R_STR (LD64_GOTPAGE_LO15), /* name */ + FALSE, /* partial_inplace */ + 0x7ff8, /* src_mask */ + 0x7ff8, /* dst_mask */ + FALSE), /* pcrel_offset */ + /* Get to the page for the GOT entry for the symbol (G(S) - P) using an ADRP instruction. */ HOWTO (AARCH64_R (TLSGD_ADR_PAGE21), /* type */ @@ -863,6 +911,20 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = 0x1fffff, /* dst_mask */ TRUE), /* pcrel_offset */ + HOWTO (AARCH64_R (TLSGD_ADR_PREL21), /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 21, /* bitsize */ + TRUE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + AARCH64_R_STR (TLSGD_ADR_PREL21), /* name */ + FALSE, /* partial_inplace */ + 0x1fffff, /* src_mask */ + 0x1fffff, /* dst_mask */ + TRUE), /* pcrel_offset */ + /* ADD: GOT offset G(S) & 0xff8 [no overflow check] */ HOWTO (AARCH64_R (TLSGD_ADD_LO12_NC), /* type */ 0, /* rightshift */ @@ -895,7 +957,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = HOWTO64 (AARCH64_R (TLSIE_MOVW_GOTTPREL_G0_NC), /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 32, /* bitsize */ + 16, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -951,7 +1013,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = HOWTO (AARCH64_R (TLSIE_LD_GOTTPREL_PREL19), /* type */ 2, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 21, /* bitsize */ + 19, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -965,10 +1027,10 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = HOWTO64 (AARCH64_R (TLSLE_MOVW_TPREL_G2), /* type */ 32, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 12, /* bitsize */ + 16, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ + complain_overflow_unsigned, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ AARCH64_R_STR (TLSLE_MOVW_TPREL_G2), /* name */ FALSE, /* partial_inplace */ @@ -979,7 +1041,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = HOWTO (AARCH64_R (TLSLE_MOVW_TPREL_G1), /* type */ 16, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 12, /* bitsize */ + 16, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -993,7 +1055,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = HOWTO64 (AARCH64_R (TLSLE_MOVW_TPREL_G1_NC), /* type */ 16, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 12, /* bitsize */ + 16, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -1007,7 +1069,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = HOWTO (AARCH64_R (TLSLE_MOVW_TPREL_G0), /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 12, /* bitsize */ + 16, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -1021,7 +1083,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = HOWTO (AARCH64_R (TLSLE_MOVW_TPREL_G0_NC), /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 12, /* bitsize */ + 16, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -1038,7 +1100,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = 12, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ + complain_overflow_unsigned, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ AARCH64_R_STR (TLSLE_ADD_TPREL_HI12), /* name */ FALSE, /* partial_inplace */ @@ -1052,7 +1114,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = 12, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ - complain_overflow_dont, /* complain_on_overflow */ + complain_overflow_unsigned, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ AARCH64_R_STR (TLSLE_ADD_TPREL_LO12), /* name */ FALSE, /* partial_inplace */ @@ -1077,15 +1139,15 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = HOWTO (AARCH64_R (TLSDESC_LD_PREL19), /* type */ 2, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 21, /* bitsize */ + 19, /* bitsize */ TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ AARCH64_R_STR (TLSDESC_LD_PREL19), /* name */ FALSE, /* partial_inplace */ - 0x1ffffc, /* src_mask */ - 0x1ffffc, /* dst_mask */ + 0x0ffffe0, /* src_mask */ + 0x0ffffe0, /* dst_mask */ TRUE), /* pcrel_offset */ HOWTO (AARCH64_R (TLSDESC_ADR_PREL21), /* type */ @@ -1222,7 +1284,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = HOWTO (AARCH64_R (TLSDESC_CALL), /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 12, /* bitsize */ + 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -1377,7 +1439,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] = static reloc_howto_type elfNN_aarch64_howto_none = HOWTO (R_AARCH64_NONE, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ + 3, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ FALSE, /* pc_relative */ 0, /* bitpos */ @@ -1625,6 +1687,12 @@ static const uint32_t aarch64_erratum_835769_stub[] = 0x14000000, /* b