summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2011-04-24 20:19:23 +0000
committermiod <miod@openbsd.org>2011-04-24 20:19:23 +0000
commitd2386abe6d72afba906e28bc7357d44f31adee3f (patch)
tree6a53fe2e6a07cc666c314b9f683a34e1ba0f52fe
parentHere comes the easter bunnytils 2.17 (the last version released against a (diff)
downloadwireguard-openbsd-d2386abe6d72afba906e28bc7357d44f31adee3f.tar.xz
wireguard-openbsd-d2386abe6d72afba906e28bc7357d44f31adee3f.zip
A first attempt at merging our local changes and fixes into the 2.17 codebase.
ld(1) needs a lot more work, as the upstream code evolved significantly since 2.15, mostly due to changes in PIE binaries layout, and we had already diverged significantly to implement W^X.
-rw-r--r--gnu/usr.bin/binutils-2.17/Makefile.bsd-wrapper160
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/Makefile.am7
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/Makefile.in11
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/config.bfd27
-rwxr-xr-xgnu/usr.bin/binutils-2.17/bfd/configure10
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/configure.in10
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/doc/Makefile.am2
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/doc/Makefile.in2
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/doc/bfd.texinfo2
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/elf.c78
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/elf32-sh.c19
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/elfxx-mips.c15
-rw-r--r--gnu/usr.bin/binutils-2.17/bfd/targets.c4
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/Makefile.am16
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/Makefile.in25
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/ar.c2
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/bucomm.c27
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/bucomm.h2
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/dlltool.c4
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/dllwrap.c21
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/doc/Makefile.in10
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/objcopy.c32
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/rddbg.c2
-rw-r--r--gnu/usr.bin/binutils-2.17/binutils/resrc.c11
-rwxr-xr-xgnu/usr.bin/binutils-2.17/configure6
-rw-r--r--gnu/usr.bin/binutils-2.17/configure.in6
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/Makefile.am8
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/Makefile.in10
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/as.h1
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-alpha.c2
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-arm.c4
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-hppa.h2
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-i386.c7
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-i386.h11
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-i960.c8
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-m68k.h2
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-mips.c80
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-sh.h2
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-sparc.c4
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/tc-vax.h2
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/config/te-obsd.h24
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/configure.tgt25
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/doc/Makefile.in49
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/doc/c-mips.texi8
-rw-r--r--gnu/usr.bin/binutils-2.17/gas/read.c2
-rw-r--r--gnu/usr.bin/binutils-2.17/gprof/Makefile.am4
-rw-r--r--gnu/usr.bin/binutils-2.17/gprof/Makefile.in4
-rw-r--r--gnu/usr.bin/binutils-2.17/include/elf/common.h11
-rw-r--r--gnu/usr.bin/binutils-2.17/include/opcode/i386.h15
-rw-r--r--gnu/usr.bin/binutils-2.17/include/opcode/mips.h4
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/Makefile.am93
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/Makefile.in97
-rwxr-xr-xgnu/usr.bin/binutils-2.17/ld/configure2
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/configure.in2
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/configure.tgt44
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/armelf_obsd.sh8
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/armelfb_obsd.sh3
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/elf32_sparc_obsd.sh4
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/elf32ppc_obsd.sh2
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/elf64_sparc_obsd.sh2
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/elf64alpha_obsd.sh2
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/elf64btsmip_obsd.sh7
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/elf64ltsmip_obsd.sh7
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/elf_i386_obsd.sh24
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/elf_obsd.sh8
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/elf_x86_64_obsd.sh2
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/hppaobsd.sh21
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/i386obsd.sh8
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/m68kobsd.sh9
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/shelf_obsd.sh16
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/shlelf_obsd.sh3
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emulparams/sparcobsd.sh7
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/emultempl/elf32.em331
-rwxr-xr-xgnu/usr.bin/binutils-2.17/ld/genscripts.sh31
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/ld.h4
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/ld.texinfo5
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/ldmain.c1
-rw-r--r--gnu/usr.bin/binutils-2.17/ld/lexsup.c6
-rw-r--r--gnu/usr.bin/binutils-2.17/opcodes/Makefile.am6
-rw-r--r--gnu/usr.bin/binutils-2.17/opcodes/Makefile.in6
-rw-r--r--gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c575
-rw-r--r--gnu/usr.bin/binutils-2.17/opcodes/mips-opc.c4
82 files changed, 1887 insertions, 253 deletions
diff --git a/gnu/usr.bin/binutils-2.17/Makefile.bsd-wrapper b/gnu/usr.bin/binutils-2.17/Makefile.bsd-wrapper
new file mode 100644
index 00000000000..36559e520a3
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/Makefile.bsd-wrapper
@@ -0,0 +1,160 @@
+# $OpenBSD: Makefile.bsd-wrapper,v 1.1 2011/04/24 20:19:23 miod Exp $
+
+NEW_BINUTILS=alpha amd64 arm hppa hppa64 i386 mips64 powerpc sh sparc sparc64
+
+.for _arch in ${MACHINE_CPU}
+. if !empty(NEW_BINUTILS:M${_arch})
+USING_NEW_BINUTILS?=yes
+.else
+USING_NEW_BINUTILS?=no
+. endif
+.endfor
+
+SUBDIRS= opcodes bfd
+CONF_SUBDIRS= opcodes bfd
+
+# This allows moving the whole binutils installation around for
+# testing purposes
+PREFIX=/usr
+.if ${PREFIX} != "/usr"
+MANDIR=${PREFIX}/share/man/cat
+.endif
+
+MAN= binutils/doc/objdump.1 c++filt.1
+
+#### cross-compilation
+###.if !defined(TARGET_ARCH)
+###CONF_SUBDIRS+= gdb
+###SUBDIRS+= gdb
+###INST_SUBDIRS+= gdb
+###MAN+= gdb/gdb.1
+###.endif
+
+.if ${USING_NEW_BINUTILS:L} == "yes"
+SUBDIRS+= binutils ld gas
+CONF_SUBDIRS+= binutils ld gas
+INST_SUBDIRS+= binutils ld gas
+MAN+= binutils/doc/addr2line.1 binutils/doc/ar.1 \
+ binutils/doc/objcopy.1 binutils/doc/ranlib.1 \
+ binutils/doc/readelf.1 binutils/doc/strings.1 \
+ binutils/doc/strip.1 \
+ gas/doc/as.1 ld/ld.1
+. else
+CONF_SUBDIRS=${SUBDIRS}
+CONF_SUBDIRS+= binutils
+.endif
+
+# Used by the GNU Makefile
+ALL_MODULES=${SUBDIRS:S/^/all-/g}
+CONFIGURE_MODULES=${CONF_SUBDIRS:S/^/configure-/g}
+CONFIGURE_HOST_MODULES=${CONF_SUBDIRS:S/^/configure-/g}
+ALL_HOST_MODULES=${SUBDIRS:S/^/all-/g}
+INSTALL_MODULES=${INST_SUBDIRS:S/^/install-/g}
+INFO_HOST_MODULES=${SUBDIRS:S/^/info-/g}
+INSTALL_INFO_HOST_MODULES=${INST_SUBDIRS:S/^/install-info-/g}
+
+# cross-compilation
+.if defined(TARGET_ARCH)
+CONFIGTARGET=--target=${TARGET_ARCH}-unknown-openbsd${OSREV}
+.else
+CONFIGTARGET=
+.endif
+
+all: config.status
+ SUBDIRS='${SUBDIRS}' \
+ CONFIGURE_HOST_MODULES='${CONFIGURE_HOST_MODULES}' \
+ ${MAKE} CC="${CC}" \
+ CFLAGS="${CFLAGS} ${COPTS}" LDFLAGS=${LDSTATIC} \
+ scriptdir=${PREFIX}/libdata \
+ tooldir=${PREFIX} \
+ MAKEINFO='makeinfo --no-split' \
+ MAKEINFOFLAGS='' \
+ BSDSRCDIR=${BSDSRCDIR} \
+ ALL_MODULES="${ALL_MODULES}" \
+ ALL_HOST_MODULES='${ALL_HOST_MODULES}' \
+ INFO_HOST_MODULES='${INFO_HOST_MODULES}' all info
+.if ${USING_NEW_BINUTILS:L} != "yes"
+ cd ${.OBJDIR}/binutils && \
+ ${MAKE} CC="${CC}" CFLAGS="${CFLAGS} ${COPTS}" \
+ LDFLAGS=${LDSTATIC} objdump
+.endif
+
+.include <bsd.own.mk>
+
+.ifdef GLOBAL_AUTOCONF_CACHE
+CF= --cache-file=${GLOBAL_AUTOCONF_CACHE}
+.else
+CF=
+.endif
+
+do-config: .USE
+ PATH="/bin:/usr/bin:/sbin:/usr/sbin" \
+ MAKEINFO='makeinfo --no-split' \
+ sh ${.CURDIR}/configure --prefix=${PREFIX} \
+ --infodir='$${prefix}/share/info' \
+ --disable-nls --disable-gdbtk --disable-install-libbfd ${CF} \
+ ${CONFIGTARGET}
+ cd ${.OBJDIR} && \
+ sed -e 's,SUBDIRS *=,SUBDIRS ?=,' <Makefile >Makefile.tmp && \
+ mv -f Makefile.tmp Makefile
+ cd ${.OBJDIR} && \
+ ${MAKE} ${CONFIGURE_MODULES}
+.if ${USING_NEW_BINUTILS:L} == "yes"
+ # We need to generate as.1 and ld.1 immediately after config.status
+ # for the manpage machinery to work properly.
+ cd ${.OBJDIR}/gas/doc && ${MAKE} as.1
+ cd ${.OBJDIR}/ld && ${MAKE} ld.1
+.endif
+
+config: do-config
+.ifndef GLOBAL_AUTOCONF_CACHE
+ -rm -f config.cache
+.endif
+
+config.status: do-config
+
+# Need to pass SUBDIRS because of install-info
+install: maninstall
+ SUBDIRS='${INST_SUBDIRS}' ${MAKE} DESTDIR='${DESTDIR}' \
+ INSTALL_MAN= \
+ scriptdir=${PREFIX}/libdata \
+ tooldir=${PREFIX} \
+ BSDSRCDIR=${BSDSRCDIR} \
+ INSTALL_MODULES='${INSTALL_MODULES}' \
+ INSTALL_PROGRAM='install -c -S' \
+ INSTALL_INFO_HOST_MODULES='${INSTALL_INFO_HOST_MODULES}' \
+ install install-info
+.if ${USING_NEW_BINUTILS:L} != "yes"
+ cd ${.OBJDIR}/binutils && \
+ ${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} -o ${BINOWN} \
+ -g ${BINGRP} -m ${BINMODE} objdump ${DESTDIR}${PREFIX}/bin
+.endif
+
+clean cleandir:
+ -@if [ -e Makefile ]; then ${MAKE} distclean; fi
+
+c++filt.1: binutils/cxxfilt.man
+ sed -e 's,@PROGRAM@,c++filt,' <${.CURDIR}/binutils/cxxfilt.man >$@
+
+depend:
+ # Nothing here so far...
+
+lint:
+ # Nothing here so far...
+
+tags:
+ # Nothing here so far...
+
+BEFOREMAN=config.status
+
+.PHONY: config
+
+.include <bsd.obj.mk>
+.include <bsd.subdir.mk>
+
+.ifdef NOMAN
+maninstall:
+ @echo NOMAN is set
+.else
+.include <bsd.man.mk>
+.endif
diff --git a/gnu/usr.bin/binutils-2.17/bfd/Makefile.am b/gnu/usr.bin/binutils-2.17/bfd/Makefile.am
index d00bf9827a5..790a880fada 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/Makefile.am
+++ b/gnu/usr.bin/binutils-2.17/bfd/Makefile.am
@@ -804,17 +804,12 @@ uninstall-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@uninstall_libbfd
.PHONY: install_libbfd uninstall_libbfd
install_libbfd: $(bfdlib_LTLIBRARIES) $(BFD_H)
$(mkinstalldirs) $(DESTDIR)$(bfdlibdir)
- $(mkinstalldirs) $(DESTDIR)$(bfdincludedir)
@list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p"; \
$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p; \
else :; fi; \
done
- $(INSTALL_DATA) $(BFD_H) $(DESTDIR)$(bfdincludedir)/bfd.h
- $(INSTALL_DATA) $(INCDIR)/ansidecl.h $(DESTDIR)$(bfdincludedir)/ansidecl.h
- $(INSTALL_DATA) $(INCDIR)/symcat.h $(DESTDIR)$(bfdincludedir)/symcat.h
- $(INSTALL_DATA) $(INCDIR)/bfdlink.h $(DESTDIR)$(bfdincludedir)/bfdlink.h
uninstall_libbfd:
list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \
@@ -871,7 +866,7 @@ host-aout.lo: Makefile
aout-params.h: gen-aout
./gen-aout host > aout-params.h
gen-aout: $(srcdir)/gen-aout.c Makefile
- $(CC) -o gen-aout $(CFLAGS) $(LFLAGS) $(srcdir)/gen-aout.c
+ $(CC) -o gen-aout $(CSEARCH) $(CFLAGS) $(LFLAGS) $(srcdir)/gen-aout.c
$(BFD_H): stmp-bfd-h ; @true
diff --git a/gnu/usr.bin/binutils-2.17/bfd/Makefile.in b/gnu/usr.bin/binutils-2.17/bfd/Makefile.in
index d73b9e70e34..04cb955e0c6 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/Makefile.in
+++ b/gnu/usr.bin/binutils-2.17/bfd/Makefile.in
@@ -1374,7 +1374,7 @@ $(BFD32_LIBS) \
$(ALL_MACHINES) \
$(BFD32_BACKENDS) \
$(BFD64_BACKENDS) \
- $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
+ $(OPTIONAL_BACKENDS) @COREFILE@: $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
install-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@install_libbfd
@$(NORMAL_INSTALL)
@@ -1385,17 +1385,12 @@ uninstall-bfdlibLTLIBRARIES: @INSTALL_LIBBFD_TRUE@uninstall_libbfd
.PHONY: install_libbfd uninstall_libbfd
install_libbfd: $(bfdlib_LTLIBRARIES) $(BFD_H)
$(mkinstalldirs) $(DESTDIR)$(bfdlibdir)
- $(mkinstalldirs) $(DESTDIR)$(bfdincludedir)
@list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p"; \
$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(bfdlibdir)/$$p; \
else :; fi; \
done
- $(INSTALL_DATA) $(BFD_H) $(DESTDIR)$(bfdincludedir)/bfd.h
- $(INSTALL_DATA) $(INCDIR)/ansidecl.h $(DESTDIR)$(bfdincludedir)/ansidecl.h
- $(INSTALL_DATA) $(INCDIR)/symcat.h $(DESTDIR)$(bfdincludedir)/symcat.h
- $(INSTALL_DATA) $(INCDIR)/bfdlink.h $(DESTDIR)$(bfdincludedir)/bfdlink.h
uninstall_libbfd:
list='$(bfdlib_LTLIBRARIES)'; for p in $$list; do \
@@ -1452,7 +1447,7 @@ host-aout.lo: Makefile
aout-params.h: gen-aout
./gen-aout host > aout-params.h
gen-aout: $(srcdir)/gen-aout.c Makefile
- $(CC) -o gen-aout $(CFLAGS) $(LFLAGS) $(srcdir)/gen-aout.c
+ $(CC) -o gen-aout $(CSEARCH) $(CFLAGS) $(LFLAGS) $(srcdir)/gen-aout.c
$(BFD_H): stmp-bfd-h ; @true
@@ -2402,6 +2397,8 @@ peigen.lo: peigen.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
pepigen.lo: pepigen.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/ia64.h $(INCDIR)/coff/external.h \
$(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h libpei.h
+netbsd-core.lo: netbsd-core.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/gnu/usr.bin/binutils-2.17/bfd/config.bfd b/gnu/usr.bin/binutils-2.17/bfd/config.bfd
index 4fd72c1c152..cb88842900a 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/config.bfd
+++ b/gnu/usr.bin/binutils-2.17/bfd/config.bfd
@@ -242,7 +242,7 @@ case "${targ}" in
targ_defvec=bfd_elf32_littlearm_vec
targ_selvecs=bfd_elf32_bigarm_vec
;;
- armeb-*-elf | arm*b-*-linux-*)
+ armeb-*-elf | arm*b-*-linux-* | armeb-*-openbsd*)
targ_defvec=bfd_elf32_bigarm_vec
targ_selvecs=bfd_elf32_littlearm_vec
;;
@@ -251,7 +251,7 @@ case "${targ}" in
targ_selvecs=bfd_elf32_bigarm_vec
;;
arm-*-elf | arm-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \
- arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \
+ arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-openbsd* | \
arm*-*-eabi* )
targ_defvec=bfd_elf32_littlearm_vec
targ_selvecs=bfd_elf32_bigarm_vec
@@ -409,6 +409,10 @@ case "${targ}" in
targ_selvecs=bfd_elf64_hppa_linux_vec
targ_cflags=-DHPUX_LARGE_AR_IDS
;;
+ hppa*64*-*-openbsd*)
+ targ_defvec=bfd_elf64_hppa_vec
+ targ_selvecs=bfd_elf64_hppa_linux_vec
+ ;;
#endif
hppa*-*-linux-*)
@@ -529,7 +533,8 @@ case "${targ}" in
;;
i[3-7]86-*-openbsd*)
targ_defvec=bfd_elf32_i386_vec
- targ_selvecs=i386netbsd_vec
+ targ_selvecs="i386netbsd_vec bfd_efi_app_ia32_vec"
+ targ64_selvecs=bfd_elf64_x86_64_vec
;;
i[3-7]86-*-netware*)
targ_defvec=bfd_elf32_i386_vec
@@ -554,10 +559,14 @@ case "${targ}" in
targ_defvec=bfd_elf64_x86_64_vec
targ_selvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec"
;;
- x86_64-*-netbsd* | x86_64-*-openbsd*)
+ x86_64-*-netbsd*)
targ_defvec=bfd_elf64_x86_64_vec
targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
;;
+ x86_64-*-openbsd*)
+ targ_defvec=bfd_elf64_x86_64_vec
+ targ_selvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec"
+ ;;
x86_64-*-linux-*)
targ_defvec=bfd_elf64_x86_64_vec
targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
@@ -892,9 +901,13 @@ case "${targ}" in
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
;;
#ifdef BFD64
+ mips64*el-*-openbsd*)
+ targ_defvec=bfd_elf64_tradlittlemips_vec
+ targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradbigmips_vec ecoff_big_vec ecoff_little_vec"
+ ;;
mips64*-*-openbsd*)
targ_defvec=bfd_elf64_tradbigmips_vec
- targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec"
+ targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec ecoff_big_vec ecoff_little_vec"
;;
#endif
mips*el-*-openbsd*)
@@ -1180,6 +1193,10 @@ case "${targ}" in
targ_defvec=bfd_elf32_shnbsd_vec
targ_selvecs="bfd_elf32_shlnbsd_vec shcoff_vec shlcoff_vec"
;;
+ sh*-*-openbsd*)
+ targ_defvec=bfd_elf32_shlobsd_vec
+ targ_selvecs="bfd_elf32_shobsd_vec"
+ ;;
sh*-*-symbianelf*)
targ_defvec=bfd_elf32_shl_symbian_vec
targ_selvecs="shlcoff_vec shlcoff_small_vec"
diff --git a/gnu/usr.bin/binutils-2.17/bfd/configure b/gnu/usr.bin/binutils-2.17/bfd/configure
index af6c22b5a66..2801f64dbb0 100755
--- a/gnu/usr.bin/binutils-2.17/bfd/configure
+++ b/gnu/usr.bin/binutils-2.17/bfd/configure
@@ -11467,7 +11467,9 @@ if test "${target}" = "${host}"; then
alpha*-*-*) COREFILE=osf-core.lo ;;
arm-*-freebsd* | arm-*-kfreebsd*-gnu)
COREFILE='' ;;
- arm-*-netbsd*) COREFILE=netbsd-core.lo ;;
+ arm-*-netbsd* | arm-*-openbsd*)
+ COREFILE=netbsd-core.lo
+ ;;
arm-*-riscix) COREFILE=trad-core.lo ;;
hppa*-*-hpux*) COREFILE=hpux-core.lo ;;
hppa*-*-hiux*) COREFILE=hpux-core.lo ;;
@@ -11674,7 +11676,9 @@ rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
powerpc-*-netbsd*) COREFILE=netbsd-core.lo ;;
powerpc-*-*bsd*) COREFILE=netbsd-core.lo ;;
s390*-*-*) COREFILE=trad-core.lo ;;
- sh*-*-netbsd*) COREFILE=netbsd-core.lo ;;
+ sh*-*-netbsd* | sh*-*-openbsd*)
+ COREFILE=netbsd-core.lo
+ ;;
sparc-*-netbsd* | sparc*-*-openbsd*)
COREFILE=netbsd-core.lo
;;
@@ -13158,7 +13162,9 @@ do
bfd_elf32_shl_symbian_vec) tb="$tb elf32-sh-symbian.lo elf32-sh64-com.lo elf32.lo $elf coff-sh.lo" ;;
bfd_elf32_shlin_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
bfd_elf32_shlnbsd_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shlobsd_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
bfd_elf32_shnbsd_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shobsd_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
bfd_elf32_sparc_vxworks_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
diff --git a/gnu/usr.bin/binutils-2.17/bfd/configure.in b/gnu/usr.bin/binutils-2.17/bfd/configure.in
index 212f96142fd..97059a5d5c6 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/configure.in
+++ b/gnu/usr.bin/binutils-2.17/bfd/configure.in
@@ -178,7 +178,9 @@ if test "${target}" = "${host}"; then
alpha*-*-*) COREFILE=osf-core.lo ;;
arm-*-freebsd* | arm-*-kfreebsd*-gnu)
COREFILE='' ;;
- arm-*-netbsd*) COREFILE=netbsd-core.lo ;;
+ arm-*-netbsd* | arm-*-openbsd*)
+ COREFILE=netbsd-core.lo
+ ;;
arm-*-riscix) COREFILE=trad-core.lo ;;
hppa*-*-hpux*) COREFILE=hpux-core.lo ;;
hppa*-*-hiux*) COREFILE=hpux-core.lo ;;
@@ -361,7 +363,9 @@ changequote([,])dnl
powerpc-*-netbsd*) COREFILE=netbsd-core.lo ;;
powerpc-*-*bsd*) COREFILE=netbsd-core.lo ;;
s390*-*-*) COREFILE=trad-core.lo ;;
- sh*-*-netbsd*) COREFILE=netbsd-core.lo ;;
+ sh*-*-netbsd* | sh*-*-openbsd*)
+ COREFILE=netbsd-core.lo
+ ;;
sparc-*-netbsd* | sparc*-*-openbsd*)
COREFILE=netbsd-core.lo
;;
@@ -671,7 +675,9 @@ do
bfd_elf32_shl_symbian_vec) tb="$tb elf32-sh-symbian.lo elf32-sh64-com.lo elf32.lo $elf coff-sh.lo" ;;
bfd_elf32_shlin_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
bfd_elf32_shlnbsd_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shlobsd_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
bfd_elf32_shnbsd_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shobsd_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
bfd_elf32_sparc_vxworks_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
diff --git a/gnu/usr.bin/binutils-2.17/bfd/doc/Makefile.am b/gnu/usr.bin/binutils-2.17/bfd/doc/Makefile.am
index 6d221faad4a..f520f0d5906 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/doc/Makefile.am
+++ b/gnu/usr.bin/binutils-2.17/bfd/doc/Makefile.am
@@ -286,7 +286,7 @@ MAINTAINERCLEANFILES = $(DOCFILES)
# We want install to imply install-info as per GNU standards, despite the
# cygnus option.
-install: install-info
+install: @INSTALL_LIBBFD_TRUE@install-info
html__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
diff --git a/gnu/usr.bin/binutils-2.17/bfd/doc/Makefile.in b/gnu/usr.bin/binutils-2.17/bfd/doc/Makefile.in
index ad81061ec7b..7f1bdb6a77f 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/doc/Makefile.in
+++ b/gnu/usr.bin/binutils-2.17/bfd/doc/Makefile.in
@@ -764,7 +764,7 @@ bfd.h: $(BFD_H_DEP)
# We want install to imply install-info as per GNU standards, despite the
# cygnus option.
-install: install-info
+install: @INSTALL_LIBBFD_TRUE@install-info
install-html: install-html-am
diff --git a/gnu/usr.bin/binutils-2.17/bfd/doc/bfd.texinfo b/gnu/usr.bin/binutils-2.17/bfd/doc/bfd.texinfo
index 432e0526449..b3921b94a6d 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/doc/bfd.texinfo
+++ b/gnu/usr.bin/binutils-2.17/bfd/doc/bfd.texinfo
@@ -144,7 +144,7 @@ To use the library, include @file{bfd.h} and link with @file{libbfd.a}.
BFD provides a common interface to the parts of an object file
for a calling application.
-When an application sucessfully opens a target file (object, archive, or
+When an application successfully opens a target file (object, archive, or
whatever), a pointer to an internal structure is returned. This pointer
points to a structure called @code{bfd}, described in
@file{bfd.h}. Our convention is to call this pointer a BFD, and
diff --git a/gnu/usr.bin/binutils-2.17/bfd/elf.c b/gnu/usr.bin/binutils-2.17/bfd/elf.c
index 9e48f66e90f..46edeb00b46 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/elf.c
+++ b/gnu/usr.bin/binutils-2.17/bfd/elf.c
@@ -4627,9 +4627,12 @@ get_program_header_size (bfd *abfd)
return elf_tdata (abfd)->program_header_size;
}
- /* Assume we will need exactly two PT_LOAD segments: one for text
- and one for data. */
- segs = 2;
+ /* We used to assume that two PT_LOAD segments would be enough,
+ code and data, with the change to pad the PLT and GOT, this is no
+ longer true. Now there can be several PT_LOAD sections. 7 seems
+ to be enough with BSS_PLT and .rodata-X, where we have text, data,
+ GOT, dynamic, PLT, bss */
+ segs = 7;
s = bfd_get_section_by_name (abfd, ".interp");
if (s != NULL && (s->flags & SEC_LOAD) != 0)
@@ -7852,6 +7855,70 @@ elfcore_grok_netbsd_note (bfd *abfd, Elf_Internal_Note *note)
}
static bfd_boolean
+elfcore_grok_openbsd_procinfo (bfd *abfd, Elf_Internal_Note *note)
+{
+ /* Signal number at offset 0x08. */
+ elf_tdata (abfd)->core_signal
+ = bfd_h_get_32 (abfd, (bfd_byte *) note->descdata + 0x08);
+
+ /* Process ID at offset 0x20. */
+ elf_tdata (abfd)->core_pid
+ = bfd_h_get_32 (abfd, (bfd_byte *) note->descdata + 0x20);
+
+ /* Command name at 0x48 (max 32 bytes, including nul). */
+ elf_tdata (abfd)->core_command
+ = _bfd_elfcore_strndup (abfd, note->descdata + 0x48, 31);
+
+ return TRUE;
+}
+
+static bfd_boolean
+elfcore_grok_openbsd_note (bfd *abfd, Elf_Internal_Note *note)
+{
+ if (note->type == NT_OPENBSD_PROCINFO)
+ return elfcore_grok_openbsd_procinfo (abfd, note);
+
+ if (note->type == NT_OPENBSD_REGS)
+ return elfcore_make_note_pseudosection (abfd, ".reg", note);
+
+ if (note->type == NT_OPENBSD_FPREGS)
+ return elfcore_make_note_pseudosection (abfd, ".reg2", note);
+
+ if (note->type == NT_OPENBSD_XFPREGS)
+ return elfcore_make_note_pseudosection (abfd, ".reg-xfp", note);
+
+ if (note->type == NT_OPENBSD_AUXV)
+ {
+ asection *sect = bfd_make_section_anyway (abfd, ".auxv");
+
+ if (sect == NULL)
+ return FALSE;
+ sect->_raw_size = note->descsz;
+ sect->filepos = note->descpos;
+ sect->flags = SEC_HAS_CONTENTS;
+ sect->alignment_power = 1 + bfd_get_arch_size (abfd) / 32;
+
+ return TRUE;
+ }
+
+ if (note->type == NT_OPENBSD_WCOOKIE)
+ {
+ asection *sect = bfd_make_section_anyway (abfd, ".wcookie");
+
+ if (sect == NULL)
+ return FALSE;
+ sect->_raw_size = note->descsz;
+ sect->filepos = note->descpos;
+ sect->flags = SEC_HAS_CONTENTS;
+ sect->alignment_power = 1 + bfd_get_arch_size (abfd) / 32;
+
+ return TRUE;
+ }
+
+ return TRUE;
+}
+
+static bfd_boolean
elfcore_grok_nto_status (bfd *abfd, Elf_Internal_Note *note, pid_t *tid)
{
void *ddata = note->descdata;
@@ -8194,6 +8261,11 @@ elfcore_read_notes (bfd *abfd, file_ptr offset, bfd_size_type size)
if (! elfcore_grok_netbsd_note (abfd, &in))
goto error;
}
+ else if (strncmp (in.namedata, "OpenBSD", 7) == 0)
+ {
+ if (! elfcore_grok_openbsd_note (abfd, &in))
+ goto error;
+ }
else if (strncmp (in.namedata, "QNX", 3) == 0)
{
if (! elfcore_grok_nto_note (abfd, &in))
diff --git a/gnu/usr.bin/binutils-2.17/bfd/elf32-sh.c b/gnu/usr.bin/binutils-2.17/bfd/elf32-sh.c
index 118690d9a58..d9e0a20ccd8 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/elf32-sh.c
+++ b/gnu/usr.bin/binutils-2.17/bfd/elf32-sh.c
@@ -7398,4 +7398,23 @@ sh_elf_plt_sym_val (bfd_vma i, const asection *plt,
#include "elf32-target.h"
+/* OpenBSD support. */
+#undef TARGET_BIG_SYM
+#define TARGET_BIG_SYM bfd_elf32_shobsd_vec
+#undef TARGET_BIG_NAME
+#define TARGET_BIG_NAME "elf32-sh-obsd"
+#undef TARGET_LITTLE_SYM
+#define TARGET_LITTLE_SYM bfd_elf32_shlobsd_vec
+#undef TARGET_LITTLE_NAME
+#define TARGET_LITTLE_NAME "elf32-shl-obsd"
+#undef ELF_MAXPAGESIZE
+#define ELF_MAXPAGESIZE 0x10000
+#undef elf_symbol_leading_char
+#define elf_symbol_leading_char 0
+#undef elf32_bed
+#define elf32_bed elf32_sh_obsd_bed
+
+#include "elf32-target.h"
+
+
#endif /* neither INCLUDE_SHMEDIA nor SH_TARGET_ALREADY_DEFINED */
diff --git a/gnu/usr.bin/binutils-2.17/bfd/elfxx-mips.c b/gnu/usr.bin/binutils-2.17/bfd/elfxx-mips.c
index 39420a63ae7..47cf31cfee8 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/elfxx-mips.c
+++ b/gnu/usr.bin/binutils-2.17/bfd/elfxx-mips.c
@@ -8862,11 +8862,16 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
decided not to make. This is for the n64 irix rld,
which doesn't seem to apply any relocations if there
are trailing null entries. */
- s = mips_elf_rel_dyn_section (info, FALSE);
- dyn.d_un.d_val = (s->reloc_count
- * (ABI_64_P (output_bfd)
- ? sizeof (Elf64_Mips_External_Rel)
- : sizeof (Elf32_External_Rel)));
+ if (SGI_COMPAT (output_bfd))
+ {
+ s = mips_elf_rel_dyn_section (info, FALSE);
+ dyn.d_un.d_val = (s->reloc_count
+ * (ABI_64_P (output_bfd)
+ ? sizeof (Elf64_Mips_External_Rel)
+ : sizeof (Elf32_External_Rel)));
+ }
+ else
+ swap_out_p = FALSE;
break;
default:
diff --git a/gnu/usr.bin/binutils-2.17/bfd/targets.c b/gnu/usr.bin/binutils-2.17/bfd/targets.c
index 849eb944fbe..a06872bc5a8 100644
--- a/gnu/usr.bin/binutils-2.17/bfd/targets.c
+++ b/gnu/usr.bin/binutils-2.17/bfd/targets.c
@@ -632,7 +632,9 @@ extern const bfd_target bfd_elf32_shl_vec;
extern const bfd_target bfd_elf32_shl_symbian_vec;
extern const bfd_target bfd_elf32_shlin_vec;
extern const bfd_target bfd_elf32_shlnbsd_vec;
+extern const bfd_target bfd_elf32_shlobsd_vec;
extern const bfd_target bfd_elf32_shnbsd_vec;
+extern const bfd_target bfd_elf32_shobsd_vec;
extern const bfd_target bfd_elf32_sparc_vec;
extern const bfd_target bfd_elf32_sparc_vxworks_vec;
extern const bfd_target bfd_elf32_tradbigmips_vec;
@@ -939,7 +941,9 @@ static const bfd_target * const _bfd_target_vector[] = {
&bfd_elf32_shl_symbian_vec,
&bfd_elf32_shlin_vec,
&bfd_elf32_shlnbsd_vec,
+ &bfd_elf32_shlobsd_vec,
&bfd_elf32_shnbsd_vec,
+ &bfd_elf32_shobsd_vec,
#ifdef BFD64
&bfd_elf32_sh64_vec,
&bfd_elf32_sh64l_vec,
diff --git a/gnu/usr.bin/binutils-2.17/binutils/Makefile.am b/gnu/usr.bin/binutils-2.17/binutils/Makefile.am
index 1b4e85adb8a..7513b981609 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/Makefile.am
+++ b/gnu/usr.bin/binutils-2.17/binutils/Makefile.am
@@ -42,7 +42,7 @@ OBJDUMP_PROG=objdump
# This is the demangler, as a standalone program.
# Note: This one is used as the installed name too, unlike the above.
-DEMANGLER_PROG=cxxfilt
+#DEMANGLER_PROG=cxxfilt
ADDR2LINE_PROG=addr2line
@@ -53,18 +53,18 @@ DLLWRAP_PROG=dllwrap
SRCONV_PROG=srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT)
-PROGS = $(SIZE_PROG) $(OBJDUMP_PROG) $(NM_PROG) $(AR_PROG) $(STRINGS_PROG) $(STRIP_PROG) $(RANLIB_PROG) $(DEMANGLER_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@
+PROGS = $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(STRIP_PROG) $(RANLIB_PROG) $(DEMANGLER_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@
-bin_PROGRAMS = $(SIZE_PROG) $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(RANLIB_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@
+bin_PROGRAMS = $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(RANLIB_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@
## We need a special rule to install the programs which are built with
## -new, and to rename cxxfilt to c++filt.
-noinst_PROGRAMS = $(NM_PROG) $(STRIP_PROG) $(DEMANGLER_PROG)
+noinst_PROGRAMS = $(STRIP_PROG)
EXTRA_PROGRAMS = $(NLMCONV_PROG) srconv sysdump coffdump $(DLLTOOL_PROG) $(WINDRES_PROG) $(DLLWRAP_PROG)
# Stuff that goes in tooldir/ if appropriate.
-TOOL_PROGS = nm-new strip-new ar ranlib dlltool objdump
+TOOL_PROGS = strip-new ar ranlib dlltool objdump
BASEDIR = $(srcdir)/..
BFDDIR = $(BASEDIR)/bfd
@@ -113,7 +113,7 @@ BFDLIB = ../bfd/libbfd.la
OPCODES = ../opcodes/libopcodes.la
-LIBIBERTY = ../libiberty/libiberty.a
+LIBIBERTY = -liberty
.PHONY: install-html install-html-am install-html-recursive
@@ -203,7 +203,7 @@ objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(INTLLIBS)
objdump.o:objdump.c
$(COMPILE) -c $(OBJDUMP_DEFS) $(srcdir)/objdump.c
-cxxfilt_SOURCES = cxxfilt.c $(BULIBS)
+#cxxfilt_SOURCES = cxxfilt.c $(BULIBS)
ar_SOURCES = arparse.y arlex.l ar.c not-ranlib.c arsup.c rename.c binemul.c \
emul_$(EMULATION).c $(BULIBS)
@@ -382,7 +382,7 @@ CLEANFILES = dep.sed DEP DEPA DEP1 DEP2
install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS)
@list='$(noinst_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
diff --git a/gnu/usr.bin/binutils-2.17/binutils/Makefile.in b/gnu/usr.bin/binutils-2.17/binutils/Makefile.in
index 8b5ab820548..49f1e732a95 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/Makefile.in
+++ b/gnu/usr.bin/binutils-2.17/binutils/Makefile.in
@@ -37,11 +37,11 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
-bin_PROGRAMS = $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \
+bin_PROGRAMS = $(am__EXEEXT_6) $(am__EXEEXT_7) \
$(am__EXEEXT_8) $(am__EXEEXT_9) $(am__EXEEXT_10) \
@BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ \
$(am__EXEEXT_11) $(am__EXEEXT_12) @BUILD_DLLWRAP@ @BUILD_MISC@
-noinst_PROGRAMS = $(am__EXEEXT_13) $(am__EXEEXT_14) $(am__EXEEXT_15)
+noinst_PROGRAMS = $(am__EXEEXT_14) $(am__EXEEXT_15)
EXTRA_PROGRAMS = $(am__EXEEXT_1) srconv$(EXEEXT) sysdump$(EXEEXT) \
coffdump$(EXEEXT) $(am__EXEEXT_2) $(am__EXEEXT_3) \
$(am__EXEEXT_4)
@@ -92,7 +92,7 @@ am_addr2line_OBJECTS = addr2line.$(OBJEXT) budemang.$(OBJEXT) \
addr2line_OBJECTS = $(am_addr2line_OBJECTS)
addr2line_LDADD = $(LDADD)
am__DEPENDENCIES_1 = ../bfd/libbfd.la
-am__DEPENDENCIES_2 = ../libiberty/libiberty.a
+am__DEPENDENCIES_2 =
am__DEPENDENCIES_3 =
addr2line_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_3)
@@ -210,7 +210,7 @@ YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
LTYACCCOMPILE = $(LIBTOOL) --mode=compile $(YACC) $(YFLAGS) \
$(AM_YFLAGS)
SOURCES = $(addr2line_SOURCES) $(ar_SOURCES) $(coffdump_SOURCES) \
- $(cxxfilt_SOURCES) $(dlltool_SOURCES) $(dllwrap_SOURCES) \
+ $(dlltool_SOURCES) $(dllwrap_SOURCES) \
$(nlmconv_SOURCES) $(nm_new_SOURCES) $(objcopy_SOURCES) \
$(objdump_SOURCES) $(ranlib_SOURCES) $(readelf_SOURCES) \
$(size_SOURCES) $(srconv_SOURCES) $(strings_SOURCES) \
@@ -253,7 +253,7 @@ CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DATADIRNAME = @DATADIRNAME@
DEFS = @DEFS@
-DEMANGLER_NAME = @DEMANGLER_NAME@
+#DEMANGLER_NAME = @DEMANGLER_NAME@
DEPDIR = @DEPDIR@
DLLTOOL_DEFS = @DLLTOOL_DEFS@
ECHO_C = @ECHO_C@
@@ -385,17 +385,17 @@ OBJDUMP_PROG = objdump
# This is the demangler, as a standalone program.
# Note: This one is used as the installed name too, unlike the above.
-DEMANGLER_PROG = cxxfilt
+#DEMANGLER_PROG = cxxfilt
ADDR2LINE_PROG = addr2line
NLMCONV_PROG = nlmconv
DLLTOOL_PROG = dlltool
WINDRES_PROG = windres
DLLWRAP_PROG = dllwrap
SRCONV_PROG = srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT)
-PROGS = $(SIZE_PROG) $(OBJDUMP_PROG) $(NM_PROG) $(AR_PROG) $(STRINGS_PROG) $(STRIP_PROG) $(RANLIB_PROG) $(DEMANGLER_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@
+PROGS = $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(STRIP_PROG) $(RANLIB_PROG) $(DEMANGLER_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@
# Stuff that goes in tooldir/ if appropriate.
-TOOL_PROGS = nm-new strip-new ar ranlib dlltool objdump
+TOOL_PROGS = strip-new ar ranlib dlltool objdump
BASEDIR = $(srcdir)/..
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include
@@ -437,7 +437,7 @@ WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c
BULIBS = bucomm.c version.c filemode.c
BFDLIB = ../bfd/libbfd.la
OPCODES = ../opcodes/libopcodes.la
-LIBIBERTY = ../libiberty/libiberty.a
+LIBIBERTY = -liberty
POTFILES = $(CFILES) $(DEBUG_SRCS) $(HFILES)
EXPECT = expect
RUNTEST = runtest
@@ -466,7 +466,7 @@ strip_new_SOURCES = objcopy.c is-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS)
nm_new_SOURCES = nm.c budemang.c $(BULIBS)
objdump_SOURCES = objdump.c dwarf.c budemang.c prdbg.c $(DEBUG_SRCS) $(BULIBS)
objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(INTLLIBS)
-cxxfilt_SOURCES = cxxfilt.c $(BULIBS)
+#cxxfilt_SOURCES = cxxfilt.c $(BULIBS)
ar_SOURCES = arparse.y arlex.l ar.c not-ranlib.c arsup.c rename.c binemul.c \
emul_$(EMULATION).c $(BULIBS)
@@ -599,9 +599,6 @@ ar$(EXEEXT): $(ar_OBJECTS) $(ar_DEPENDENCIES)
coffdump$(EXEEXT): $(coffdump_OBJECTS) $(coffdump_DEPENDENCIES)
@rm -f coffdump$(EXEEXT)
$(LINK) $(coffdump_LDFLAGS) $(coffdump_OBJECTS) $(coffdump_LDADD) $(LIBS)
-cxxfilt$(EXEEXT): $(cxxfilt_OBJECTS) $(cxxfilt_DEPENDENCIES)
- @rm -f cxxfilt$(EXEEXT)
- $(LINK) $(cxxfilt_LDFLAGS) $(cxxfilt_OBJECTS) $(cxxfilt_LDADD) $(LIBS)
dlltool$(EXEEXT): $(dlltool_OBJECTS) $(dlltool_DEPENDENCIES)
@rm -f dlltool$(EXEEXT)
$(LINK) $(dlltool_LDFLAGS) $(dlltool_OBJECTS) $(dlltool_LDADD) $(LIBS)
@@ -1135,7 +1132,7 @@ mostlyclean-local:
install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS)
@list='$(noinst_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
diff --git a/gnu/usr.bin/binutils-2.17/binutils/ar.c b/gnu/usr.bin/binutils-2.17/binutils/ar.c
index fe1c6402222..f50696f629d 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/ar.c
+++ b/gnu/usr.bin/binutils-2.17/binutils/ar.c
@@ -922,7 +922,7 @@ write_archive (bfd *iarch)
old_name = xmalloc (strlen (bfd_get_filename (iarch)) + 1);
strcpy (old_name, bfd_get_filename (iarch));
- new_name = make_tempname (old_name);
+ new_name = make_tempname (old_name, 0);
output_filename = new_name;
diff --git a/gnu/usr.bin/binutils-2.17/binutils/bucomm.c b/gnu/usr.bin/binutils-2.17/binutils/bucomm.c
index 03a4d2873e2..5c8f33f2e38 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/bucomm.c
+++ b/gnu/usr.bin/binutils-2.17/binutils/bucomm.c
@@ -389,11 +389,12 @@ print_arelt_descr (FILE *file, bfd *abfd, bfd_boolean verbose)
/* Return the name of a temporary file in the same directory as FILENAME. */
char *
-make_tempname (char *filename)
+make_tempname (char *filename, int isdir)
{
static char template[] = "stXXXXXX";
char *tmpname;
char *slash = strrchr (filename, '/');
+ char c;
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
{
@@ -408,8 +409,6 @@ make_tempname (char *filename)
if (slash != (char *) NULL)
{
- char c;
-
c = *slash;
*slash = 0;
tmpname = xmalloc (strlen (filename) + sizeof (template) + 2);
@@ -423,15 +422,31 @@ make_tempname (char *filename)
#endif
strcat (tmpname, "/");
strcat (tmpname, template);
- mktemp (tmpname);
- *slash = c;
}
else
{
tmpname = xmalloc (sizeof (template));
strcpy (tmpname, template);
- mktemp (tmpname);
}
+
+ if (isdir)
+ {
+ if (mkdtemp (tmpname) == (char *) NULL)
+ tmpname = NULL;
+ }
+ else
+ {
+ int fd;
+
+ fd = mkstemp (tmpname);
+ if (fd == -1)
+ tmpname = NULL;
+ else
+ close (fd);
+ }
+ if (slash != (char *) NULL)
+ *slash = c;
+
return tmpname;
}
diff --git a/gnu/usr.bin/binutils-2.17/binutils/bucomm.h b/gnu/usr.bin/binutils-2.17/binutils/bucomm.h
index 9f914adeb58..0eadbba755b 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/bucomm.h
+++ b/gnu/usr.bin/binutils-2.17/binutils/bucomm.h
@@ -199,7 +199,7 @@ int display_info (void);
void print_arelt_descr (FILE *, bfd *, bfd_boolean);
-char *make_tempname (char *);
+char *make_tempname (char *, int);
bfd_vma parse_vma (const char *, const char *);
diff --git a/gnu/usr.bin/binutils-2.17/binutils/dlltool.c b/gnu/usr.bin/binutils-2.17/binutils/dlltool.c
index 6c231f69a44..6f7efff41c1 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/dlltool.c
+++ b/gnu/usr.bin/binutils-2.17/binutils/dlltool.c
@@ -1139,7 +1139,11 @@ run (const char *what, char *args)
int i;
const char **argv;
char *errmsg_fmt, *errmsg_arg;
+#if defined(__MSDOS__) && !defined(__GO32__)
char *temp_base = choose_temp_base ();
+#else
+ char *temp_base = NULL;
+#endif
inform ("run: %s %s", what, args);
diff --git a/gnu/usr.bin/binutils-2.17/binutils/dllwrap.c b/gnu/usr.bin/binutils-2.17/binutils/dllwrap.c
index f93c75d6fb3..ff8012e1081 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/dllwrap.c
+++ b/gnu/usr.bin/binutils-2.17/binutils/dllwrap.c
@@ -349,7 +349,11 @@ run (const char *what, char *args)
int i;
const char **argv;
char *errmsg_fmt, *errmsg_arg;
+#if defined(__MSDOS__) && !defined(__GO32__)
char *temp_base = choose_temp_base ();
+#else
+ char *temp_base = NULL;
+#endif
int in_quote;
char sep;
@@ -800,12 +804,9 @@ main (int argc, char **argv)
if (! def_file_seen)
{
- char *fileprefix = choose_temp_base ();
-
- def_file_name = (char *) xmalloc (strlen (fileprefix) + 5);
- sprintf (def_file_name, "%s.def",
- (dontdeltemps) ? mybasename (fileprefix) : fileprefix);
- delete_def_file = 1;
+ def_file_name = make_temp_file (".def");
+ if (dontdeltemps)
+ def_file_name = mybasename (def_file_name);
free (fileprefix);
delete_def_file = 1;
warn (_("no export definition file provided.\n\
@@ -983,12 +984,10 @@ Creating one, but that may not be what you want"));
if (! base_file_name)
{
- char *fileprefix = choose_temp_base ();
- base_file_name = (char *) xmalloc (strlen (fileprefix) + 6);
- sprintf (base_file_name, "%s.base",
- (dontdeltemps) ? mybasename (fileprefix) : fileprefix);
+ base_file_name = make_temp_file (".base");
+ if (dontdeltemps)
+ base_file_name = mybasename (base_file_name);
delete_base_file = 1;
- free (fileprefix);
}
{
diff --git a/gnu/usr.bin/binutils-2.17/binutils/doc/Makefile.in b/gnu/usr.bin/binutils-2.17/binutils/doc/Makefile.in
index ef28ceff8df..077a3fb3dc3 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/doc/Makefile.in
+++ b/gnu/usr.bin/binutils-2.17/binutils/doc/Makefile.in
@@ -66,7 +66,7 @@ MAKEINFOHTML = $(MAKEINFO) --html
AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
DVIPS = dvips
man1dir = $(mandir)/man1
-am__installdirs = "$(DESTDIR)$(man1dir)"
+am__installdirs =
NROFF = nroff
MANS = $(man_MANS)
ACLOCAL = @ACLOCAL@
@@ -205,7 +205,7 @@ target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
-AUTOMAKE_OPTIONS = cygnus
+AUTOMAKE_OPTIONS = cygnus no-installman
# What version of the manual you want; "all" includes everything
CONFIG = all
@@ -443,7 +443,7 @@ CTAGS:
check-am:
check: check-am
-all-am: Makefile $(MANS)
+all-am: Makefile
installdirs:
for dir in "$(DESTDIR)$(man1dir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
@@ -494,7 +494,7 @@ info: info-am
info-am: $(INFO_DEPS) info-local
-install-data-am: install-data-local install-man
+install-data-am: install-data-local
install-exec-am:
@@ -552,7 +552,7 @@ ps: ps-am
ps-am: $(PSS)
-uninstall-am: uninstall-man
+uninstall-am:
uninstall-man: uninstall-man1
diff --git a/gnu/usr.bin/binutils-2.17/binutils/objcopy.c b/gnu/usr.bin/binutils-2.17/binutils/objcopy.c
index 0e0cfaaccf5..63ac20d99ae 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/objcopy.c
+++ b/gnu/usr.bin/binutils-2.17/binutils/objcopy.c
@@ -1686,13 +1686,6 @@ copy_object (bfd *ibfd, bfd *obfd)
return TRUE;
}
-#undef MKDIR
-#if defined (_WIN32) && !defined (__CYGWIN32__)
-#define MKDIR(DIR, MODE) mkdir (DIR)
-#else
-#define MKDIR(DIR, MODE) mkdir (DIR, MODE)
-#endif
-
/* Read each archive element in turn from IBFD, copy the
contents to temp file, and keep the temp file handle. */
@@ -1707,12 +1700,12 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target)
} *list, *l;
bfd **ptr = &obfd->archive_head;
bfd *this_element;
- char *dir = make_tempname (bfd_get_filename (obfd));
+ char *dir = make_tempname (bfd_get_filename (obfd), 1);
/* Make a temp directory to hold the contents. */
- if (MKDIR (dir, 0700) != 0)
- fatal (_("cannot mkdir %s for archive copying (error: %s)"),
- dir, strerror (errno));
+ if (dir == (char *) NULL)
+ fatal (_("cannot make temp directory for archive copying (error: %s)"),
+ strerror (errno));
obfd->has_armap = ibfd->has_armap;
@@ -1739,10 +1732,10 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target)
/* If the file already exists, make another temp dir. */
if (stat (output_name, &buf) >= 0)
{
- output_name = make_tempname (output_name);
- if (MKDIR (output_name, 0700) != 0)
- fatal (_("cannot mkdir %s for archive copying (error: %s)"),
- output_name, strerror (errno));
+ output_name = make_tempname (output_name, 1);
+ if (output_name == (char *) NULL)
+ fatal (_("cannot make temp directory for archive copying (error: %s)"),
+ strerror (errno));
l = xmalloc (sizeof (struct name_list));
l->name = output_name;
@@ -2586,7 +2579,10 @@ strip_main (int argc, char *argv[])
char *tmpname;
if (get_file_size (argv[i]) < 1)
- continue;
+ {
+ status = 1;
+ continue;
+ }
if (preserve_dates)
/* No need to check the return value of stat().
@@ -2596,7 +2592,7 @@ strip_main (int argc, char *argv[])
if (output_file != NULL)
tmpname = output_file;
else
- tmpname = make_tempname (argv[i]);
+ tmpname = make_tempname (argv[i], 0);
status = 0;
copy_file (argv[i], tmpname, input_target, output_target);
@@ -3189,7 +3185,7 @@ copy_main (int argc, char *argv[])
are the same, then create a temp and rename the result into the input. */
if (output_filename == NULL || strcmp (input_filename, output_filename) == 0)
{
- char *tmpname = make_tempname (input_filename);
+ char *tmpname = make_tempname (input_filename, 0);
copy_file (input_filename, tmpname, input_target, output_target);
if (status == 0)
diff --git a/gnu/usr.bin/binutils-2.17/binutils/rddbg.c b/gnu/usr.bin/binutils-2.17/binutils/rddbg.c
index e977d8b5ef1..43bb7ed533e 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/rddbg.c
+++ b/gnu/usr.bin/binutils-2.17/binutils/rddbg.c
@@ -196,7 +196,7 @@ read_section_stabs_debugging_info (bfd *abfd, asymbol **syms, long symcount,
s = (char *) strings + stroff + strx;
- while (s[strlen (s) - 1] == '\\'
+ while (*s != '\0' && s[strlen (s) - 1] == '\\'
&& stab + 12 < stabs + stabsize)
{
char *p;
diff --git a/gnu/usr.bin/binutils-2.17/binutils/resrc.c b/gnu/usr.bin/binutils-2.17/binutils/resrc.c
index 73b482cd04a..7c0fe01fa4d 100644
--- a/gnu/usr.bin/binutils-2.17/binutils/resrc.c
+++ b/gnu/usr.bin/binutils-2.17/binutils/resrc.c
@@ -183,7 +183,11 @@ run_cmd (char *cmd, const char *redir)
int i;
const char **argv;
char *errmsg_fmt, *errmsg_arg;
+#if defined(__MSDOS__) && !defined(__GO32__)
char *temp_base = choose_temp_base ();
+#else
+ char *temp_base = NULL;
+#endif
int in_quote;
char sep;
int redir_handle = -1;
@@ -294,12 +298,7 @@ open_input_stream (char *cmd)
{
if (istream_type == ISTREAM_FILE)
{
- char *fileprefix;
-
- fileprefix = choose_temp_base ();
- cpp_temp_file = (char *) xmalloc (strlen (fileprefix) + 5);
- sprintf (cpp_temp_file, "%s.irc", fileprefix);
- free (fileprefix);
+ cpp_temp_file = make_temp_file (".irc");
if (run_cmd (cmd, cpp_temp_file))
fatal (_("can't execute `%s': %s"), cmd, strerror (errno));
diff --git a/gnu/usr.bin/binutils-2.17/configure b/gnu/usr.bin/binutils-2.17/configure
index dbcbdfef7d3..ee6baef152c 100755
--- a/gnu/usr.bin/binutils-2.17/configure
+++ b/gnu/usr.bin/binutils-2.17/configure
@@ -1240,6 +1240,10 @@ case "${target}" in
*-*-netware*)
noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
;;
+ *-*-openbsd*)
+ # Skip some stuff on all OpenBSD configurations.
+ noconfigdirs="$noconfigdirs gdb target-libiberty"
+ ;;
*-*-rtems*)
noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
;;
@@ -3179,6 +3183,8 @@ for item in ${target_configdirs} ; do
olditem=${item}
done
serialization_dependencies=serdep.tmp
+# override on OpenBSD
+serialization_dependencies=/dev/null
# Base args. Strip norecursion, cache-file, srcdir, host, build,
diff --git a/gnu/usr.bin/binutils-2.17/configure.in b/gnu/usr.bin/binutils-2.17/configure.in
index 76daff9729a..f1eeeb33709 100644
--- a/gnu/usr.bin/binutils-2.17/configure.in
+++ b/gnu/usr.bin/binutils-2.17/configure.in
@@ -432,6 +432,10 @@ case "${target}" in
*-*-netware*)
noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
;;
+ *-*-openbsd*)
+ # Skip some stuff on all OpenBSD configurations.
+ noconfigdirs="$noconfigdirs gdb target-libiberty"
+ ;;
*-*-rtems*)
noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
;;
@@ -1952,6 +1956,8 @@ for item in ${target_configdirs} ; do
olditem=${item}
done
serialization_dependencies=serdep.tmp
+# override on OpenBSD
+serialization_dependencies=/dev/null
AC_SUBST_FILE(serialization_dependencies)
# Base args. Strip norecursion, cache-file, srcdir, host, build,
diff --git a/gnu/usr.bin/binutils-2.17/gas/Makefile.am b/gnu/usr.bin/binutils-2.17/gas/Makefile.am
index 08b9842fc6b..a43e0268fc5 100644
--- a/gnu/usr.bin/binutils-2.17/gas/Makefile.am
+++ b/gnu/usr.bin/binutils-2.17/gas/Makefile.am
@@ -373,6 +373,7 @@ TARG_ENV_HFILES = \
config/te-nbsd.h \
config/te-nbsd532.h \
config/te-netware.h \
+ config/te-obsd.h \
config/te-pc532mach.h \
config/te-pe.h \
config/te-psos.h \
@@ -478,7 +479,8 @@ DEP_FLAGS = -DOBJ_MAYBE_ELF \
# How to link with both our special library facilities
# and the system's installed libraries.
-GASLIBS = @OPCODES_LIB@ @BFDLIB@ ../libiberty/libiberty.a
+GASLIBS = @OPCODES_LIB@ @BFDLIB@ -liberty
+GASLIBSDEP = @OPCODES_LIB@ @BFDLIB@
# Files to be copied away after each stage in building.
STAGESTUFF = *.o $(noinst_PROGRAMS)
@@ -491,7 +493,7 @@ as_new_SOURCES = $(GAS_CFILES)
as_new_LDADD = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
$(extra_objects) $(GASLIBS) $(INTLLIBS) $(LIBM)
as_new_DEPENDENCIES = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
- $(extra_objects) $(GASLIBS) $(INTLDEPS)
+ $(extra_objects) $(GASLIBSDEP) $(INTLDEPS)
# Stuff that every object file depends upon. If anything is removed
# from this list, remove it from dep-in.sed as well.
@@ -710,7 +712,7 @@ install-exec-bindir: $(noinst_PROGRAMS)
$(mkinstalldirs) $(DESTDIR)$(bindir)
@list='$(noinst_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
diff --git a/gnu/usr.bin/binutils-2.17/gas/Makefile.in b/gnu/usr.bin/binutils-2.17/gas/Makefile.in
index 4cc485f9683..9e41c01b668 100644
--- a/gnu/usr.bin/binutils-2.17/gas/Makefile.in
+++ b/gnu/usr.bin/binutils-2.17/gas/Makefile.in
@@ -602,6 +602,7 @@ TARG_ENV_HFILES = \
config/te-nbsd.h \
config/te-nbsd532.h \
config/te-netware.h \
+ config/te-obsd.h \
config/te-pc532mach.h \
config/te-pe.h \
config/te-psos.h \
@@ -694,7 +695,8 @@ DEP_FLAGS = -DOBJ_MAYBE_ELF \
# How to link with both our special library facilities
# and the system's installed libraries.
-GASLIBS = @OPCODES_LIB@ @BFDLIB@ ../libiberty/libiberty.a
+GASLIBS = @OPCODES_LIB@ @BFDLIB@ -liberty
+GASLIBSDEP = @OPCODES_LIB@ @BFDLIB@
# Files to be copied away after each stage in building.
STAGESTUFF = *.o $(noinst_PROGRAMS)
@@ -703,7 +705,7 @@ as_new_LDADD = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
$(extra_objects) $(GASLIBS) $(INTLLIBS) $(LIBM)
as_new_DEPENDENCIES = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
- $(extra_objects) $(GASLIBS) $(INTLDEPS)
+ $(extra_objects) $(GASLIBSDEP) $(INTLDEPS)
EXPECT = expect
RUNTEST = runtest
@@ -2805,6 +2807,8 @@ install-data-am:
install-exec-am: install-exec-local
+install-info-am:
+
install-info: install-info-recursive
install-man:
@@ -3049,7 +3053,7 @@ install-exec-bindir: $(noinst_PROGRAMS)
$(mkinstalldirs) $(DESTDIR)$(bindir)
@list='$(noinst_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
diff --git a/gnu/usr.bin/binutils-2.17/gas/as.h b/gnu/usr.bin/binutils-2.17/gas/as.h
index 2f92c2ed774..1c19e0df082 100644
--- a/gnu/usr.bin/binutils-2.17/gas/as.h
+++ b/gnu/usr.bin/binutils-2.17/gas/as.h
@@ -567,7 +567,6 @@ segT subseg_get (const char *, int);
struct expressionS;
struct fix;
typedef struct symbol symbolS;
-struct relax_type;
typedef struct frag fragS;
/* literal.c */
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-alpha.c b/gnu/usr.bin/binutils-2.17/gas/config/tc-alpha.c
index 3765b08c73a..9873c900ad5 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-alpha.c
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-alpha.c
@@ -1829,7 +1829,7 @@ insert_operand (unsigned insn,
insn = (*operand->insert) (insn, val, &errmsg);
if (errmsg)
- as_warn (errmsg);
+ as_warn ("%s", errmsg);
}
else
insn |= ((val & ((1 << operand->bits) - 1)) << operand->shift);
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-arm.c b/gnu/usr.bin/binutils-2.17/gas/config/tc-arm.c
index ae420b35347..485fad2e53c 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-arm.c
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-arm.c
@@ -111,7 +111,7 @@ enum arm_float_abi
#ifndef FPU_DEFAULT
# ifdef TE_LINUX
# define FPU_DEFAULT FPU_ARCH_FPA
-# elif defined (TE_NetBSD)
+# elif defined (TE_NetBSD) || defined (TE_OpenBSD)
# ifdef OBJ_ELF
# define FPU_DEFAULT FPU_ARCH_VFP /* Soft-float, but VFP order. */
# else
@@ -12880,7 +12880,7 @@ md_begin (void)
}
else if (!mfpu_opt)
{
-#if !(defined (TE_LINUX) || defined (TE_NetBSD) || defined (TE_VXWORKS))
+#if !(defined (TE_LINUX) || defined (TE_NetBSD) || defined (TE_OpenBSD) || defined (TE_VXWORKS))
/* Some environments specify a default FPU. If they don't, infer it
from the processor. */
if (mcpu_fpu_opt)
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-hppa.h b/gnu/usr.bin/binutils-2.17/gas/config/tc-hppa.h
index 9b3edc1878f..6c30372d45a 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-hppa.h
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-hppa.h
@@ -72,7 +72,7 @@
#define TARGET_FORMAT "som"
#endif
-#if defined(TE_LINUX) || defined(TE_NetBSD)
+#if defined(TE_LINUX) || defined(TE_NetBSD) || defined(TE_OpenBSD)
/* Define to compile in an extra assembler option, -c, which enables a
warning (once per file) when a comment is encountered.
The hppa comment char is a `;' which tends to occur in random C asm
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-i386.c b/gnu/usr.bin/binutils-2.17/gas/config/tc-i386.c
index be384bc99a7..3c5551e038c 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-i386.c
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-i386.c
@@ -202,7 +202,8 @@ const char extra_symbol_chars[] = "*%-(["
&& !defined (TE_LINUX) \
&& !defined (TE_NETWARE) \
&& !defined (TE_FreeBSD) \
- && !defined (TE_NetBSD)))
+ && !defined (TE_NetBSD) \
+ && !defined (TE_OpenBSD)))
/* This array holds the chars that always start a comment. If the
pre-processor is disabled, these aren't very useful. The option
--divide will remove '/' from this list. */
@@ -3491,7 +3492,7 @@ output_insn ()
/* All opcodes on i386 have either 1 or 2 bytes. Merom New
Instructions have 3 bytes. We may use one more higher byte
to specify a prefix the instruction requires. */
- if ((i.tm.cpu_flags & CpuMNI) != 0)
+ if ((i.tm.cpu_flags & (CpuMNI|CpuAES|CpuPCLMUL)) != 0)
{
if (i.tm.base_opcode & 0xff000000)
{
@@ -3532,7 +3533,7 @@ check_prefix:
}
else
{
- if ((i.tm.cpu_flags & CpuMNI) != 0)
+ if ((i.tm.cpu_flags & (CpuMNI|CpuAES|CpuPCLMUL)) != 0)
{
p = frag_more (3);
*p++ = (i.tm.base_opcode >> 16) & 0xff;
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-i386.h b/gnu/usr.bin/binutils-2.17/gas/config/tc-i386.h
index 98517041dad..a54724e7ba5 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-i386.h
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-i386.h
@@ -34,7 +34,7 @@ extern unsigned long i386_mach (void);
#ifdef TE_FreeBSD
#define AOUT_TARGET_FORMAT "a.out-i386-freebsd"
#endif
-#ifdef TE_NetBSD
+#if defined(TE_NetBSD) || defined(TE_OpenBSD)
#define AOUT_TARGET_FORMAT "a.out-i386-netbsd"
#endif
#ifdef TE_386BSD
@@ -185,6 +185,8 @@ typedef struct
#define CpuSVME 0x80000 /* AMD Secure Virtual Machine Ext-s required */
#define CpuVMX 0x100000 /* VMX Instructions required */
#define CpuMNI 0x200000 /* Merom New Instructions required */
+#define CpuAES 0x400000 /* Intel AES extensions required */
+#define CpuPCLMUL 0x800000 /* Intel Carry-less Multiplication extensions */
/* These flags are set by gas depending on the flag_code. */
#define Cpu64 0x4000000 /* 64bit support required */
@@ -193,7 +195,8 @@ typedef struct
/* The default value for unknown CPUs - enable all features to avoid problems. */
#define CpuUnknownFlags (Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686 \
|CpuP4|CpuSledgehammer|CpuMMX|CpuMMX2|CpuSSE|CpuSSE2|CpuPNI|CpuVMX \
- |Cpu3dnow|Cpu3dnowA|CpuK6|CpuAthlon|CpuPadLock|CpuSVME|CpuMNI)
+ |Cpu3dnow|Cpu3dnowA|CpuK6|CpuAthlon|CpuPadLock|CpuSVME|CpuMNI|CpuAES \
+ |CpuPCLMUL)
/* the bits in opcode_modifier are used to generate the final opcode from
the base_opcode. These bits also are used to detect alternate forms of
@@ -388,7 +391,11 @@ arch_entry;
/* The name of the global offset table generated by the compiler. Allow
this to be overridden if need be. */
#ifndef GLOBAL_OFFSET_TABLE_NAME
+#ifdef OBJ_ELF
#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
+#else
+#define GLOBAL_OFFSET_TABLE_NAME "__GLOBAL_OFFSET_TABLE_"
+#endif
#endif
#if (defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && !defined (LEX_AT)
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-i960.c b/gnu/usr.bin/binutils-2.17/gas/config/tc-i960.c
index a3206bbf2d0..5c7cc4a1327 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-i960.c
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-i960.c
@@ -1669,14 +1669,14 @@ md_assemble (char *textP)
break;
case REG:
if (branch_predict)
- as_warn (bp_error_msg);
+ as_warn ("%s", bp_error_msg);
reg_fmt (args, oP);
break;
case MEM1:
if (args[0][0] == 'c' && args[0][1] == 'a')
{
if (branch_predict)
- as_warn (bp_error_msg);
+ as_warn ("%s", bp_error_msg);
mem_fmt (args, oP, 1);
break;
}
@@ -1686,12 +1686,12 @@ md_assemble (char *textP)
case MEM12:
case MEM16:
if (branch_predict)
- as_warn (bp_error_msg);
+ as_warn ("%s", bp_error_msg);
mem_fmt (args, oP, 0);
break;
case CALLJ:
if (branch_predict)
- as_warn (bp_error_msg);
+ as_warn ("%s", bp_error_msg);
/* Output opcode & set up "fixup" (relocation); flag
relocation as 'callj' type. */
know (oP->num_ops == 1);
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-m68k.h b/gnu/usr.bin/binutils-2.17/gas/config/tc-m68k.h
index fc05a9264e6..1942de0000a 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-m68k.h
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-m68k.h
@@ -30,7 +30,7 @@ struct fix;
#ifdef TE_SUN3
#define TARGET_FORMAT "a.out-sunos-big"
#endif
-#ifdef TE_NetBSD
+#if defined(TE_NetBSD) || defined(TE_OpenBSD)
#define TARGET_FORMAT "a.out-m68k-netbsd"
#endif
#ifdef TE_LINUX
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-mips.c b/gnu/usr.bin/binutils-2.17/gas/config/tc-mips.c
index c885205dad4..df153aef884 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-mips.c
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-mips.c
@@ -692,6 +692,8 @@ static int mips_fix_vr4130;
efficient expansion. */
static int mips_relax_branch;
+
+static int mips_fix_loongson2f_btb;
/* The expansion of many macros depends on the type of symbol that
they refer to. For example, when generating position-dependent code,
@@ -964,6 +966,7 @@ static void mips_no_prev_insn (void);
static void mips16_macro_build
(expressionS *, const char *, const char *, va_list);
static void load_register (int, expressionS *, int);
+static void macro_build (expressionS *, const char *, const char *, ...);
static void macro_start (void);
static void macro_end (void);
static void macro (struct mips_cl_insn * ip);
@@ -2971,6 +2974,41 @@ macro_read_relocs (va_list *args, bfd_reloc_code_real_type *r)
r[i] = (bfd_reloc_code_real_type) va_arg (*args, int);
}
+/* Fix jump through register issue on loongson2f processor for kernel code:
+ force a BTB clear before the jump to prevent it from being incorrectly
+ prefetched by the branch prediction engine. */
+
+static void
+macro_build_jrpatch (expressionS *ep, unsigned int sreg)
+{
+ if (!mips_fix_loongson2f_btb)
+ return;
+
+ if (sreg == ZERO || sreg == KT0 || sreg == KT1 || sreg == AT)
+ return;
+
+ if (mips_opts.noat)
+ {
+ as_warn (_("unable to apply loongson2f BTB workaround when .set noat"));
+ return;
+ }
+
+ /* li $at, COP_0_BTB_CLEAR | COP_0_RAS_DISABLE */
+ ep->X_op = O_constant;
+ ep->X_add_number = 3;
+ macro_build (ep, "ori", "t,r,i", AT, ZERO, BFD_RELOC_LO16);
+
+ /* dmtc0 $at, COP_0_DIAG */
+ macro_build (NULL, "dmtc0", "t,G", AT, 22);
+
+ /* Hide these two instructions to avoid getting a ``macro expanded into
+ multiple instructions'' warning. */
+ if (mips_relax.sequence != 2)
+ mips_macro_warning.sizes[0] -= 2 * 4;
+ if (mips_relax.sequence != 1)
+ mips_macro_warning.sizes[1] -= 2 * 4;
+}
+
/* Build an instruction created by a macro expansion. This is passed
a pointer to the count of instructions created so far, an
expression, the name of the instruction to build, an operand format
@@ -3361,6 +3399,7 @@ macro_build_jalr (expressionS *ep)
frag_grow (8);
f = frag_more (0);
}
+ macro_build_jrpatch (ep, PIC_CALL_REG);
macro_build (NULL, "jalr", "d,s", RA, PIC_CALL_REG);
if (HAVE_NEWABI)
fix_new_exp (frag_now, f - frag_now->fr_literal,
@@ -5490,6 +5529,26 @@ macro (struct mips_cl_insn *ip)
macro_build (NULL, ADDRESS_ADD_INSN, "d,v,t", treg, tempreg, breg);
break;
+ case M_JR_S:
+ macro_build_jrpatch (&expr1, sreg);
+ macro_build (NULL, "jr", "s", sreg);
+ return; /* didn't modify $at */
+
+ case M_J_S:
+ macro_build_jrpatch (&expr1, sreg);
+ macro_build (NULL, "j", "s", sreg);
+ return; /* didn't modify $at */
+
+ case M_JALR_S:
+ macro_build_jrpatch (&expr1, sreg);
+ macro_build (NULL, "jalr", "s", sreg);
+ return; /* didn't modify $at */
+
+ case M_JALR_DS:
+ macro_build_jrpatch (&expr1, sreg);
+ macro_build (NULL, "jalr", "d,s", dreg, sreg);
+ return; /* didn't modify $at */
+
case M_J_A:
/* The j instruction may not be used in PIC code, since it
requires an absolute address. We convert it to a b
@@ -5508,12 +5567,16 @@ macro (struct mips_cl_insn *ip)
/* Fall through. */
case M_JAL_2:
if (mips_pic == NO_PIC)
- macro_build (NULL, "jalr", "d,s", dreg, sreg);
+ {
+ macro_build_jrpatch (&expr1, sreg);
+ macro_build (NULL, "jalr", "d,s", dreg, sreg);
+ }
else
{
if (sreg != PIC_CALL_REG)
as_warn (_("MIPS PIC call to register other than $25"));
+ macro_build_jrpatch (&expr1, sreg);
macro_build (NULL, "jalr", "d,s", dreg, sreg);
if (mips_pic == SVR4_PIC && !HAVE_NEWABI)
{
@@ -10592,9 +10655,13 @@ struct option md_longopts[] =
#define OPTION_NO_FIX_VR4130 (OPTION_FIX_BASE + 5)
{"mfix-vr4130", no_argument, NULL, OPTION_FIX_VR4130},
{"mno-fix-vr4130", no_argument, NULL, OPTION_NO_FIX_VR4130},
+#define OPTION_FIX_LOONGSON2F_BTB (OPTION_FIX_BASE + 6)
+#define OPTION_NO_FIX_LOONGSON2F_BTB (OPTION_FIX_BASE + 7)
+ {"mfix-loongson2f-btb", no_argument, NULL, OPTION_FIX_LOONGSON2F_BTB},
+ {"mno-fix-loongson2f-btb", no_argument, NULL, OPTION_NO_FIX_LOONGSON2F_BTB},
/* Miscellaneous options. */
-#define OPTION_MISC_BASE (OPTION_FIX_BASE + 6)
+#define OPTION_MISC_BASE (OPTION_FIX_BASE + 8)
#define OPTION_TRAP (OPTION_MISC_BASE + 0)
{"trap", no_argument, NULL, OPTION_TRAP},
{"no-break", no_argument, NULL, OPTION_TRAP},
@@ -10863,6 +10930,14 @@ md_parse_option (int c, char *arg)
mips_fix_vr4130 = 0;
break;
+ case OPTION_FIX_LOONGSON2F_BTB:
+ mips_fix_loongson2f_btb = 1;
+ break;
+
+ case OPTION_NO_FIX_LOONGSON2F_BTB:
+ mips_fix_loongson2f_btb = 0;
+ break;
+
case OPTION_RELAX_BRANCH:
mips_relax_branch = 1;
break;
@@ -14515,6 +14590,7 @@ MIPS options:\n\
fprintf (stream, _("\
-mfix-vr4120 work around certain VR4120 errata\n\
-mfix-vr4130 work around VR4130 mflo/mfhi errata\n\
+-mfix-loongson2f-btb work around Loongson2F BTB errata\n\
-mgp32 use 32-bit GPRs, regardless of the chosen ISA\n\
-mfp32 use 32-bit FPRs, regardless of the chosen ISA\n\
-mno-shared optimize output for executables\n\
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-sh.h b/gnu/usr.bin/binutils-2.17/gas/config/tc-sh.h
index a812036fcd5..a83b8be7bf2 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-sh.h
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-sh.h
@@ -147,6 +147,8 @@ extern int target_big_endian;
#define TARGET_FORMAT (!target_big_endian ? "elf32-sh-linux" : "elf32-shbig-linux")
#elif defined(TE_NetBSD)
#define TARGET_FORMAT (!target_big_endian ? "elf32-shl-nbsd" : "elf32-sh-nbsd")
+#elif defined(TE_OpenBSD)
+#define TARGET_FORMAT (!target_big_endian ? "elf32-shl-obsd" : "elf32-sh-obsd")
#elif defined TARGET_SYMBIAN
#define TARGET_FORMAT (!target_big_endian ? "elf32-shl-symbian" : "elf32-sh-symbian")
#else
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-sparc.c b/gnu/usr.bin/binutils-2.17/gas/config/tc-sparc.c
index 10a1411b526..98381de3e31 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-sparc.c
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-sparc.c
@@ -306,7 +306,7 @@ sparc_target_format ()
init_default_arch ();
#ifdef OBJ_AOUT
-#ifdef TE_NetBSD
+#if defined(TE_NetBSD) || defined(TE_OpenBSD)
return "a.out-sparc-netbsd";
#else
#ifdef TE_SPARCAOUT
@@ -2197,12 +2197,14 @@ sparc_ip (str, pinsn)
{
if (SPARC_OPCODE_ARCH_V9_P (max_architecture))
{
+#if !defined(TE_OpenBSD)
if (*args == 'e' || *args == 'f' || *args == 'g')
{
error_message
= _(": There are only 32 single precision f registers; [0-31]");
goto error;
}
+#endif
v9_arg_p = 1;
mask -= 31; /* wrap high bit */
}
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/tc-vax.h b/gnu/usr.bin/binutils-2.17/gas/config/tc-vax.h
index 715d54a812f..1c46114fe28 100644
--- a/gnu/usr.bin/binutils-2.17/gas/config/tc-vax.h
+++ b/gnu/usr.bin/binutils-2.17/gas/config/tc-vax.h
@@ -24,7 +24,7 @@
#define TARGET_BYTES_BIG_ENDIAN 0
#ifdef OBJ_AOUT
-#ifdef TE_NetBSD
+#if defined(TE_NetBSD) || defined(TE_OpenBSD)
#define TARGET_FORMAT "a.out-vax-netbsd"
#endif
#ifndef TARGET_FORMAT
diff --git a/gnu/usr.bin/binutils-2.17/gas/config/te-obsd.h b/gnu/usr.bin/binutils-2.17/gas/config/te-obsd.h
new file mode 100644
index 00000000000..1f3770e3120
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/gas/config/te-obsd.h
@@ -0,0 +1,24 @@
+/* te-obsd.h -- OpenBSD target environment declarations.
+ Copyright 2003
+ Free Software Foundation, Inc.
+
+ This file is part of GAS, the GNU Assembler.
+
+ GAS is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ GAS is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GAS; see the file COPYING. If not, write to the Free
+ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#define TE_OpenBSD 1
+#define LOCAL_LABELS_FB 1
+#include "obj-format.h"
diff --git a/gnu/usr.bin/binutils-2.17/gas/configure.tgt b/gnu/usr.bin/binutils-2.17/gas/configure.tgt
index 696daaa128f..5b0aa4c541d 100644
--- a/gnu/usr.bin/binutils-2.17/gas/configure.tgt
+++ b/gnu/usr.bin/binutils-2.17/gas/configure.tgt
@@ -111,7 +111,8 @@ case ${generic_target} in
arm-*-linux-*) fmt=elf em=linux ;;
arm-*-uclinux*) fmt=elf em=linux ;;
arm-*-netbsdelf*) fmt=elf em=nbsd ;;
- arm-*-*n*bsd*) fmt=aout em=nbsd ;;
+ arm-*-netbsd*) fmt=aout em=nbsd ;;
+ arm-*-openbsd*) fmt=elf em=obsd ;;
arm-*-nto*) fmt=elf ;;
arm-epoc-pe | thumb-epoc-pe) fmt=coff em=epoc-pe ;;
arm-wince-pe | arm-*-wince) fmt=coff em=wince-pe ;;
@@ -144,7 +145,11 @@ case ${generic_target} in
hppa-*-*elf*) fmt=elf em=hppa ;;
hppa-*-lites*) fmt=elf em=hppa ;;
hppa-*-netbsd*) fmt=elf em=nbsd ;;
- hppa-*-openbsd*) fmt=elf em=hppa ;;
+ hppa-*-openbsd*)
+ case ${cpu} in
+ hppa*64*) fmt=elf em=obsdhppa64 ;;
+ hppa*) fmt=elf em=obsd ;;
+ esac ;;
hppa-*-osf*) fmt=som em=hppa ;;
hppa-*-hpux11*)
case ${cpu} in
@@ -179,8 +184,8 @@ case ${generic_target} in
*) fmt=aout em=nbsd ;;
esac ;;
i386-*-openbsd[0-2].* | \
- i386-*-openbsd3.[0-2]) fmt=aout em=nbsd ;;
- i386-*-openbsd*) fmt=elf em=nbsd ;;
+ i386-*-openbsd3.[0-2]) fmt=aout em=obsd ;;
+ i386-*-openbsd*) fmt=elf em=obsd ;;
i386-*-linux*aout*) fmt=aout em=linux ;;
i386-*-linux*oldld) fmt=aout em=linux ;;
i386-*-linux*coff*) fmt=coff em=linux ;;
@@ -245,7 +250,7 @@ case ${generic_target} in
m68k-*-gnu*) fmt=elf ;;
m68k-*-netbsdelf*) fmt=elf em=nbsd ;;
m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
- m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
+ m68k-*-openbsd*) fmt=aout em=obsd bfd_gas=yes ;;
m68k-*-psos*) fmt=elf em=psos;;
maxq-*-coff) fmt=coff bfd_gas=yes ;;
@@ -301,7 +306,8 @@ case ${generic_target} in
ppc-*-aix5.*) fmt=coff em=aix5 ;;
ppc-*-aix*) fmt=coff ;;
ppc-*-beos*) fmt=coff ;;
- ppc-*-*n*bsd* | ppc-*-elf*) fmt=elf ;;
+ ppc-*-netbsd* | ppc-*-elf*) fmt=elf ;;
+ ppc-*-openbsd*) fmt=elf em=obsd ;;
ppc-*-eabi* | ppc-*-sysv4*) fmt=elf ;;
ppc-*-linux-*) fmt=elf em=linux ;;
ppc-*-solaris*) fmt=elf ;;
@@ -322,6 +328,7 @@ case ${generic_target} in
sh5*-*-netbsd*) fmt=elf em=nbsd ;;
sh64*-*-netbsd*) fmt=elf em=nbsd ;;
sh*-*-netbsdelf*) fmt=elf em=nbsd ;;
+ sh*-*-openbsd*) fmt=elf em=obsd endian=little ;;
sh*-*-symbianelf*) fmt=elf endian=little ;;
sh-*-elf*) fmt=elf ;;
sh-*-coff*) fmt=coff ;;
@@ -352,10 +359,10 @@ case ${generic_target} in
sparc-*-openbsd[0-2].* | \
sparc-*-openbsd3.[0-1])
case ${cpu} in
- sparc64) fmt=elf em=nbsd ;;
- *) fmt=aout em=nbsd ;;
+ sparc64) fmt=elf em=obsd ;;
+ *) fmt=aout em=obsd ;;
esac ;;
- sparc-*-openbsd*) fmt=elf em=nbsd ;;
+ sparc-*-openbsd*) fmt=elf em=obsd ;;
tic30-*-*aout*) fmt=aout bfd_gas=yes ;;
tic30-*-*coff*) fmt=coff bfd_gas=yes ;;
diff --git a/gnu/usr.bin/binutils-2.17/gas/doc/Makefile.in b/gnu/usr.bin/binutils-2.17/gas/doc/Makefile.in
index cd9dad2baaf..2e01cc5fcd2 100644
--- a/gnu/usr.bin/binutils-2.17/gas/doc/Makefile.in
+++ b/gnu/usr.bin/binutils-2.17/gas/doc/Makefile.in
@@ -50,7 +50,7 @@ CONFIG_CLEAN_FILES =
depcomp =
am__depfiles_maybe =
SOURCES =
-INFO_DEPS = $(srcdir)/as.info
+INFO_DEPS = as.info
TEXINFO_TEX = $(top_srcdir)/../texinfo/texinfo.tex
am__TEXINFO_TEX_DIR = $(top_srcdir)/../texinfo
DVIS = as.dvi
@@ -303,7 +303,7 @@ distclean-libtool:
.texinfo.info:
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
- am__cwd=`pwd` && cd $(srcdir) && \
+ am__cwd=`pwd` && \
rm -rf $$backupdir && mkdir $$backupdir && \
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
@@ -315,10 +315,8 @@ distclean-libtool:
-o $@ $<; \
then \
rc=0; \
- cd $(srcdir); \
else \
rc=$$?; \
- cd $(srcdir) && \
$$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
fi; \
rm -rf $$backupdir; exit $$rc
@@ -346,7 +344,7 @@ distclean-libtool:
rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
exit 1; \
fi
-$(srcdir)/as.info: as.texinfo
+as.info: as.texinfo
as.dvi: as.texinfo
as.pdf: as.texinfo
as.html: as.texinfo
@@ -405,49 +403,8 @@ maintainer-clean-aminfo:
clean-info: mostlyclean-aminfo
install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
- test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
- else file=$$i; fi; \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 1*) ;; \
- *) ext='1' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
- done
uninstall-man1:
@$(NORMAL_UNINSTALL)
- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 1*) ;; \
- *) ext='1' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
- rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
- done
tags: TAGS
TAGS:
diff --git a/gnu/usr.bin/binutils-2.17/gas/doc/c-mips.texi b/gnu/usr.bin/binutils-2.17/gas/doc/c-mips.texi
index 3c70ff29bc0..b3665634460 100644
--- a/gnu/usr.bin/binutils-2.17/gas/doc/c-mips.texi
+++ b/gnu/usr.bin/binutils-2.17/gas/doc/c-mips.texi
@@ -145,6 +145,14 @@ all problems in hand-written assembler code.
@itemx -no-mfix-vr4130
Insert nops to work around the VR4130 @samp{mflo}/@samp{mfhi} errata.
+@item -mfix-loongson2f-btb
+@itemx -mno-fix-loongson2f-btb
+Clear the Branch Target Buffer before any jump through a register. This
+option is intended to be used on kernel code for the Loongson 2F processor
+only; userland code compiled with this option will fault, and kernel code
+compiled with this option run on another processor than Loongson 2E and 2F
+will yield unpredictable results.
+
@item -m4010
@itemx -no-m4010
Generate code for the LSI @sc{r4010} chip. This tells the assembler to
diff --git a/gnu/usr.bin/binutils-2.17/gas/read.c b/gnu/usr.bin/binutils-2.17/gas/read.c
index 0485d72dec6..6972f79add2 100644
--- a/gnu/usr.bin/binutils-2.17/gas/read.c
+++ b/gnu/usr.bin/binutils-2.17/gas/read.c
@@ -4823,7 +4823,7 @@ next_char_of_string (void)
int i;
for (i = 0, number = 0;
- ISDIGIT (c) && i < 3;
+ i < 3 && ISDIGIT (c);
c = *input_line_pointer++, i++)
{
number = number * 8 + c - '0';
diff --git a/gnu/usr.bin/binutils-2.17/gprof/Makefile.am b/gnu/usr.bin/binutils-2.17/gprof/Makefile.am
index 1b862675353..3869fca38ad 100644
--- a/gnu/usr.bin/binutils-2.17/gprof/Makefile.am
+++ b/gnu/usr.bin/binutils-2.17/gprof/Makefile.am
@@ -26,8 +26,8 @@ sources = basic_blocks.c call_graph.c cg_arcs.c cg_dfn.c \
search_list.c symtab.c sym_ids.c utils.c \
i386.c alpha.c vax.c tahoe.c sparc.c mips.c
gprof_SOURCES = $(sources) flat_bl.c bsd_callg_bl.c fsf_callg_bl.c
-gprof_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a $(INTLDEPS)
-gprof_LDADD = ../bfd/libbfd.la ../libiberty/libiberty.a $(INTLLIBS)
+gprof_DEPENDENCIES = ../bfd/libbfd.la $(INTLDEPS)
+gprof_LDADD = ../bfd/libbfd.la -liberty $(INTLLIBS)
noinst_HEADERS = \
basic_blocks.h call_graph.h cg_arcs.h cg_dfn.h cg_print.h \
diff --git a/gnu/usr.bin/binutils-2.17/gprof/Makefile.in b/gnu/usr.bin/binutils-2.17/gprof/Makefile.in
index 328a3da48d7..ea5b9c65efe 100644
--- a/gnu/usr.bin/binutils-2.17/gprof/Makefile.in
+++ b/gnu/usr.bin/binutils-2.17/gprof/Makefile.in
@@ -247,8 +247,8 @@ sources = basic_blocks.c call_graph.c cg_arcs.c cg_dfn.c \
i386.c alpha.c vax.c tahoe.c sparc.c mips.c
gprof_SOURCES = $(sources) flat_bl.c bsd_callg_bl.c fsf_callg_bl.c
-gprof_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a $(INTLDEPS)
-gprof_LDADD = ../bfd/libbfd.la ../libiberty/libiberty.a $(INTLLIBS)
+gprof_DEPENDENCIES = ../bfd/libbfd.la $(INTLDEPS)
+gprof_LDADD = ../bfd/libbfd.la -liberty $(INTLLIBS)
noinst_HEADERS = \
basic_blocks.h call_graph.h cg_arcs.h cg_dfn.h cg_print.h \
corefile.h gmon.h gmon_io.h gmon_out.h gprof.h hertz.h hist.h \
diff --git a/gnu/usr.bin/binutils-2.17/include/elf/common.h b/gnu/usr.bin/binutils-2.17/include/elf/common.h
index b11171b56b4..2e43fcebd79 100644
--- a/gnu/usr.bin/binutils-2.17/include/elf/common.h
+++ b/gnu/usr.bin/binutils-2.17/include/elf/common.h
@@ -401,6 +401,17 @@
#define NT_NETBSDCORE_FIRSTMACH 32 /* start of machdep note types */
+/* Note segments for core files on OpenBSD systems. Note name is
+ "OpenBSD". */
+
+#define NT_OPENBSD_PROCINFO 10
+#define NT_OPENBSD_AUXV 11
+#define NT_OPENBSD_REGS 20
+#define NT_OPENBSD_FPREGS 21
+#define NT_OPENBSD_XFPREGS 22
+#define NT_OPENBSD_WCOOKIE 23
+
+
/* Values of note segment descriptor types for object files. */
#define NT_VERSION 1 /* Contains a version string. */
diff --git a/gnu/usr.bin/binutils-2.17/include/opcode/i386.h b/gnu/usr.bin/binutils-2.17/include/opcode/i386.h
index 2b2c1e0f979..27c34599c8c 100644
--- a/gnu/usr.bin/binutils-2.17/include/opcode/i386.h
+++ b/gnu/usr.bin/binutils-2.17/include/opcode/i386.h
@@ -1486,6 +1486,21 @@ static const template i386_optab[] =
/* Alias for xstore-rng. */
{"xstore", 0, 0x000fa7, 0xc0, Cpu686|CpuPadLock, NoSuf|IsString|ImmExt, { 0, 0, 0} },
+/* Intel AES extensions */
+{"aesdec", 2, 0x660f38de, X, CpuAES, FP|Modrm|IgnoreSize|NoSuf, { RegXMM|LLongMem, RegXMM } },
+{"aesdeclast", 2, 0x660f38df, X, CpuAES, FP|Modrm|IgnoreSize|NoSuf, { RegXMM|LLongMem, RegXMM } },
+{"aesenc", 2, 0x660f38dc, X, CpuAES, FP|Modrm|IgnoreSize|NoSuf, { RegXMM|LLongMem, RegXMM } },
+{"aesenclast", 2, 0x660f38dd, X, CpuAES, FP|Modrm|IgnoreSize|NoSuf, { RegXMM|LLongMem, RegXMM } },
+{"aesimc", 2, 0x660f38db, X, CpuAES, FP|Modrm|IgnoreSize|NoSuf, { RegXMM|LLongMem, RegXMM } },
+{"aeskeygenassist", 3, 0x660f3adf, X, CpuAES, FP|Modrm|IgnoreSize|NoSuf, { Imm8, RegXMM|LLongMem, RegXMM } },
+
+/* Intel Carry-less Multiplication extensions */
+{"pclmulqdq", 3, 0x660f3a44, X, CpuPCLMUL, FP|Modrm|IgnoreSize|NoSuf, { Imm8, RegXMM|LLongMem, RegXMM } },
+{"pclmullqlqdq", 2, 0x660f3a44, 0x0, CpuPCLMUL, FP|Modrm|IgnoreSize|NoSuf|ImmExt, { RegXMM|LLongMem, RegXMM } },
+{"pclmulhqlqdq", 2, 0x660f3a44, 0x1, CpuPCLMUL, FP|Modrm|IgnoreSize|NoSuf|ImmExt, { RegXMM|LLongMem, RegXMM } },
+{"pclmullqhqdq", 2, 0x660f3a44, 0x10, CpuPCLMUL, FP|Modrm|IgnoreSize|NoSuf|ImmExt, { RegXMM|LLongMem, RegXMM } },
+{"pclmulhqhqdq", 2, 0x660f3a44, 0x11, CpuPCLMUL, FP|Modrm|IgnoreSize|NoSuf|ImmExt, { RegXMM|LLongMem, RegXMM } },
+
/* sentinel */
{NULL, 0, 0, 0, 0, 0, { 0, 0, 0} }
};
diff --git a/gnu/usr.bin/binutils-2.17/include/opcode/mips.h b/gnu/usr.bin/binutils-2.17/include/opcode/mips.h
index 4bec5edcc8c..001d55a05ce 100644
--- a/gnu/usr.bin/binutils-2.17/include/opcode/mips.h
+++ b/gnu/usr.bin/binutils-2.17/include/opcode/mips.h
@@ -653,7 +653,11 @@ enum
M_DSUB_I,
M_DSUBU_I,
M_DSUBU_I_2,
+ M_JR_S,
+ M_J_S,
M_J_A,
+ M_JALR_S,
+ M_JALR_DS,
M_JAL_1,
M_JAL_2,
M_JAL_A,
diff --git a/gnu/usr.bin/binutils-2.17/ld/Makefile.am b/gnu/usr.bin/binutils-2.17/ld/Makefile.am
index 3f5d1a6e710..cb633bdc981 100644
--- a/gnu/usr.bin/binutils-2.17/ld/Makefile.am
+++ b/gnu/usr.bin/binutils-2.17/ld/Makefile.am
@@ -103,7 +103,7 @@ TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) -I$(top_srcdir)/../intl -I../intl $(HDEFINES) $(CFLAGS) -DLOCALEDIR="\"$(datadir)/locale\""
BFDLIB = ../bfd/libbfd.la
-LIBIBERTY = ../libiberty/libiberty.a
+LIBIBERTY = =liberty
ALL_EMULATIONS = \
eaixppc.o \
@@ -123,6 +123,8 @@ ALL_EMULATIONS = \
earmelfb_linux_eabi.o \
earmelf_nbsd.o \
earmelfb_nbsd.o \
+ earmelf_obsd.o \
+ earmelfb_obsd.o \
earmelf_vxworks.o \
earmnto.o \
earmnbsd.o \
@@ -147,6 +149,7 @@ ALL_EMULATIONS = \
eelf32_i960.o \
eelf32_i860.o \
eelf32_sparc.o \
+ eelf32_sparc_obsd.o \
eelf32_sparc_vxworks.o \
eelf32b4300.o \
eelf32bfin.o \
@@ -181,6 +184,7 @@ ALL_EMULATIONS = \
eelf32openrisc.o \
eelf32ppc.o \
eelf32ppc_fbsd.o \
+ eelf32ppc_obsd.o \
eelf32ppclinux.o \
eelf32ppcnto.o \
eelf32ppcsim.o \
@@ -197,6 +201,7 @@ ALL_EMULATIONS = \
eelf_i386_chaos.o \
eelf_i386_fbsd.o \
eelf_i386_ldso.o \
+ eelf_i386_obsd.o \
eelf_i386_vxworks.o \
eelf_s390.o \
egld960.o \
@@ -239,6 +244,7 @@ ALL_EMULATIONS = \
ei386nbsd.o \
ei386nto.o \
ei386nw.o \
+ ei386obsd.o \
ei386pe.o \
ei386pe_posix.o \
elnk960.o \
@@ -258,6 +264,7 @@ ALL_EMULATIONS = \
em68kelfnbsd.o \
em68klinux.o \
em68knbsd.o \
+ em68kobsd.o \
em68kpsos.o \
em88kbcs.o \
emaxqcoff.o \
@@ -355,6 +362,8 @@ ALL_EMULATIONS = \
eshlelf_nbsd.o \
eshelf_nto.o \
eshlelf_nto.o \
+ eshelf_obsd.o \
+ eshlelf_obsd.o \
eshl.o \
eshlelf.o \
eshlsymbian.o \
@@ -362,6 +371,7 @@ ALL_EMULATIONS = \
esparcaout.o \
esparclinux.o \
esparcnbsd.o \
+ esparcobsd.o \
est2000.o \
esun3.o \
esun4.o \
@@ -392,15 +402,20 @@ ALL_64_EMULATIONS = \
eshlelf64_nbsd.o \
eelf_x86_64.o \
eelf_x86_64_fbsd.o \
+ eelf_x86_64_obsd.o \
eelf64_s390.o \
eelf64_sparc.o \
eelf64_sparc_fbsd.o \
+ eelf64_sparc_obsd.o \
eelf64alpha.o \
eelf64alpha_fbsd.o \
eelf64alpha_nbsd.o \
+ eelf64alpha_obsd.o \
eelf64bmip.o \
eelf64btsmip.o \
+ eelf64btsmip_obsd.o \
eelf64ltsmip.o \
+ eelf64ltsmip_obsd.o \
eelf64hppa.o \
eelf64mmix.o \
emmo.o \
@@ -542,6 +557,17 @@ earmelfb_nbsd.c: $(srcdir)/emulparams/armelfb_nbsd.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelfb_nbsd "$(tdir_armelfb_nbsd)"
+earmelf_obsd.c: $(srcdir)/emulparams/armelf_obsd.sh \
+ $(srcdir)/emulparams/armelf.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} armelf_obsd "$(tdir_armelf_obsd)"
+earmelfb_obsd.c: $(srcdir)/emulparams/armelfb_obsd.sh \
+ $(srcdir)/emulparams/armelf_obsd.sh \
+ $(srcdir)/emulparams/armelf.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} armelfb_obsd "$(tdir_armelfb_obsd)"
earmelf_vxworks.c: $(srcdir)/emulparams/armelf_vxworks.sh \
$(srcdir)/emulparams/vxworks.sh $(srcdir)/emulparams/armelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/vxworks.em \
@@ -688,6 +714,9 @@ em32rlelf_linux.c: $(srcdir)/emulparams/m32rlelf_linux.sh \
eelf32_sparc.c: $(srcdir)/emulparams/elf32_sparc.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32_sparc "$(tdir_elf32_sparc)"
+eelf32_sparc_obsd.c: $(srcdir)/emulparams/elf32_sparc_obsd.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32_sparc_obsd "$(tdir_elf32_sparc_obsd)"
eelf32_sparc_vxworks.c: $(srcdir)/emulparams/elf32_sparc_vxworks.sh \
$(srcdir)/emulparams/vxworks.sh $(srcdir)/emulparams/elf32_sparc.sh \
$(srcdir)/emultempl/vxworks.em $(srcdir)/emultempl/elf32.em \
@@ -811,6 +840,11 @@ eelf32ppc_fbsd.c: $(srcdir)/emulparams/elf32ppc_fbsd.sh \
$(srcdir)/emultempl/ppc32elf.em $(srcdir)/emultempl/elf32.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32ppc_fbsd "$(tdir_elf32ppc_fbsd)"
+eelf32ppc_obsd.c: $(srcdir)/emulparams/elf32ppc_obsd.sh \
+ $(srcdir)/emulparams/elf32ppc.sh $(srcdir)/emulparams/elf32ppccommon.sh \
+ $(srcdir)/emultempl/ppc32elf.em $(srcdir)/emultempl/elf32.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32ppc_obsd "$(tdir_elf32ppc_obsd)"
eelf32ppcsim.c: $(srcdir)/emulparams/elf32ppcsim.sh \
$(srcdir)/emulparams/elf32ppc.sh $(srcdir)/emulparams/elf32ppccommon.sh \
$(srcdir)/emultempl/ppc32elf.em $(srcdir)/emultempl/elf32.em \
@@ -854,9 +888,14 @@ eelf64alpha_nbsd.c: $(srcdir)/emulparams/elf64alpha_nbsd.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/alphaelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64alpha_nbsd "$(tdir_elf64alpha_nbsd)"
+eelf64alpha_obsd.c: $(srcdir)/emulparams/elf64alpha_obsd.sh \
+ $(srcdir)/emulparams/elf64alpha.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64alpha_obsd "$(tdir_elf64alpha_obsd)"
eelf64hppa.c: $(srcdir)/emulparams/elf64hppa.sh \
$(srcdir)/emulparams/hppa64linux.sh \
- $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/alphaelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64hppa "$(tdir_elf64hppa)"
eelf64_aix.c: $(srcdir)/emulparams/elf64_aix.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -882,6 +921,10 @@ eelf64_sparc_fbsd.c: $(srcdir)/emulparams/elf64_sparc_fbsd.sh \
$(srcdir)/emulparams/elf64_sparc.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64_sparc_fbsd "$(tdir_elf64_sparc_fbsd)"
+eelf64_sparc_obsd.c: $(srcdir)/emulparams/elf64_sparc_obsd.sh \
+ $(srcdir)/emulparams/elf64_sparc.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64_sparc_obsd "$(tdir_elf64_sparc_obsd)"
eelf64bmip.c: $(srcdir)/emulparams/elf64bmip.sh \
$(srcdir)/emulparams/elf32bmipn32.sh $(srcdir)/emultempl/irix.em \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -898,10 +941,18 @@ eelf64btsmip.c: $(srcdir)/emulparams/elf64btsmip.sh \
$(srcdir)/emulparams/elf32bmipn32.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64btsmip "$(tdir_elf64btsmip)"
+eelf64btsmip_obsd.c: $(srcdir)/emulparams/elf64btsmip_obsd.sh \
+ $(srcdir)/emulparams/elf32bmipn32.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64btsmip_obsd "$(tdir_elf64btsmip_obsd)"
eelf64ltsmip.c: $(srcdir)/emulparams/elf64ltsmip.sh \
$(srcdir)/emulparams/elf64btsmip.sh $(srcdir)/emulparams/elf32bmipn32.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64ltsmip "$(tdir_elf64ltsmip)"
+eelf64ltsmip_obsd.c: $(srcdir)/emulparams/elf64ltsmip_obsd.sh \
+ $(srcdir)/emulparams/elf32bmipn32.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64ltsmip_obsd "$(tdir_elf64ltsmip_obsd)"
eelf_i386.c: $(srcdir)/emulparams/elf_i386.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_i386 "$(tdir_elf_i386)"
@@ -912,6 +963,10 @@ eelf_x86_64_fbsd.c: $(srcdir)/emulparams/elf_x86_64_fbsd.sh \
$(srcdir)/emulparams/elf_x86_64.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_x86_64_fbsd "$(tdir_elf_x86_64_fbsd)"
+eelf_x86_64_obsd.c: $(srcdir)/emulparams/elf_x86_64_obsd.sh \
+ $(srcdir)/emulparams/elf_x86_64.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_x86_64_obsd "$(tdir_elf_x86_64_obsd)"
eelf_i386_be.c: $(srcdir)/emulparams/elf_i386_be.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_i386_be "$(tdir_elf_i386_be)"
@@ -925,6 +980,10 @@ eelf_i386_fbsd.c: $(srcdir)/emulparams/elf_i386_fbsd.sh \
eelf_i386_ldso.c: $(srcdir)/emulparams/elf_i386_ldso.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_i386_ldso "$(tdir_elf_i386_ldso)"
+eelf_i386_obsd.c: $(srcdir)/emulparams/elf_i386_obsd.sh \
+ $(srcdir)/emulparams/elf_i386.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_i386_obsd "$(tdir_elf_i386_obsd)"
eelf_i386_vxworks.c: $(srcdir)/emulparams/elf_i386_vxworks.sh \
$(srcdir)/emulparams/vxworks.sh $(srcdir)/emultempl/vxworks.em \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -1066,6 +1125,9 @@ ei386nto.c: $(srcdir)/emulparams/i386nto.sh \
ei386nw.c: $(srcdir)/emulparams/i386nw.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/nw.sc ${GEN_DEPENDS}
${GENSCRIPTS} i386nw "$(tdir_i386nw)"
+ei386obsd.c: $(srcdir)/emulparams/i386obsd.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} i386obsd "$(tdir_i386obsd)"
ei386pe.c: $(srcdir)/emulparams/i386pe.sh \
$(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS}
${GENSCRIPTS} i386pe "$(tdir_i386pe)"
@@ -1118,6 +1180,9 @@ em68klinux.c: $(srcdir)/emulparams/m68klinux.sh \
em68knbsd.c: $(srcdir)/emulparams/m68knbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68knbsd "$(tdir_m68knbsd)"
+em68kobsd.c: $(srcdir)/emulparams/m68kobsd.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68kobsd "$(tdir_m68kobsd)"
em68kpsos.c: $(srcdir)/emulparams/m68kpsos.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/psos.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68kpsos "$(tdir_m68kpsos)"
@@ -1480,6 +1545,11 @@ eshelf_nbsd.c: $(srcdir)/emulparams/shelf_nbsd.sh \
eshelf_nto.c: $(srcdir)/emulparams/shelf_nto.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} shelf_nto "$(tdir_shelf_nto)"
+eshelf_obsd.c: $(srcdir)/emulparams/shelf_obsd.sh \
+ $(srcdir)/emulparams/shelf.sh \
+ $(srcdir)/emulparams/elf_obsd.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} shelf_obsd "$(tdir_shelf_obsd)"
eshlelf_nbsd.c: $(srcdir)/emulparams/shlelf_nbsd.sh \
$(srcdir)/emulparams/shelf_nbsd.sh \
$(srcdir)/emulparams/shelf.sh \
@@ -1488,6 +1558,12 @@ eshlelf_nbsd.c: $(srcdir)/emulparams/shlelf_nbsd.sh \
eshlelf_nto.c: $(srcdir)/emulparams/shlelf_nto.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} shlelf_nto "$(tdir_shlelf_nto)"
+eshlelf_obsd.c: $(srcdir)/emulparams/shlelf_obsd.sh \
+ $(srcdir)/emulparams/shelf_obsd.sh \
+ $(srcdir)/emulparams/shelf.sh \
+ $(srcdir)/emulparams/elf_obsd.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} shlelf_obsd "$(tdir_shlelf_obsd)"
eshlelf.c: $(srcdir)/emulparams/shlelf.sh \
$(srcdir)/emulparams/shelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -1538,6 +1614,9 @@ esparclinux.c: $(srcdir)/emulparams/sparclinux.sh \
esparcnbsd.c: $(srcdir)/emulparams/sparcnbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} sparcnbsd "$(tdir_sparcnbsd)"
+esparcobsd.c: $(srcdir)/emulparams/sparcobsd.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} sparcobsd "$(tdir_sparcobsd)"
est2000.c: $(srcdir)/emulparams/st2000.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/st2000.sc ${GEN_DEPENDS}
${GENSCRIPTS} st2000 "$(tdir_st2000)"
@@ -1613,7 +1692,7 @@ EXTRA_ld_new_SOURCES = deffilep.y
ld_new_SOURCES = ldgram.y ldlex.l lexsup.c ldlang.c mri.c ldctor.c ldmain.c \
ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c
-ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(INTLDEPS)
+ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(INTLDEPS)
ld_new_LDADD = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(INTLLIBS)
# The generated emulation files mostly have the same dependencies.
@@ -1789,7 +1868,7 @@ install-exec-local: ld-new$(EXEEXT)
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin
@list='$(noinst_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
@@ -1854,17 +1933,17 @@ dep.sed: dep-in.sed config.status
dep: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < Makefile > tmp-Makefile
cat DEP >> tmp-Makefile
- $(srcdir)/../move-if-change tmp-Makefile Makefile
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile Makefile
dep-in: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.in > tmp-Makefile.in
cat DEP >> tmp-Makefile.in
- $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in
dep-am: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.am > tmp-Makefile.am
cat DEP >> tmp-Makefile.am
- $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am
.PHONY: dep dep-in dep-am
diff --git a/gnu/usr.bin/binutils-2.17/ld/Makefile.in b/gnu/usr.bin/binutils-2.17/ld/Makefile.in
index 2b917b11137..ad56bf3b81c 100644
--- a/gnu/usr.bin/binutils-2.17/ld/Makefile.in
+++ b/gnu/usr.bin/binutils-2.17/ld/Makefile.in
@@ -328,7 +328,7 @@ AM_MAKEINFOFLAGS = -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
TEXI2DVI = texi2dvi -I $(srcdir) -I $(BFDDIR)/doc -I $(top_srcdir)/../libiberty
INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) -I$(top_srcdir)/../intl -I../intl $(HDEFINES) $(CFLAGS) -DLOCALEDIR="\"$(datadir)/locale\""
BFDLIB = ../bfd/libbfd.la
-LIBIBERTY = ../libiberty/libiberty.a
+LIBIBERTY = -liberty
ALL_EMULATIONS = \
eaixppc.o \
eaixrs6.o \
@@ -347,6 +347,8 @@ ALL_EMULATIONS = \
earmelfb_linux_eabi.o \
earmelf_nbsd.o \
earmelfb_nbsd.o \
+ earmelf_obsd.o \
+ earmelfb_obsd.o \
earmelf_vxworks.o \
earmnto.o \
earmnbsd.o \
@@ -371,6 +373,7 @@ ALL_EMULATIONS = \
eelf32_i960.o \
eelf32_i860.o \
eelf32_sparc.o \
+ eelf32_sparc_obsd.o \
eelf32_sparc_vxworks.o \
eelf32b4300.o \
eelf32bfin.o \
@@ -405,6 +408,7 @@ ALL_EMULATIONS = \
eelf32openrisc.o \
eelf32ppc.o \
eelf32ppc_fbsd.o \
+ eelf32ppc_obsd.o \
eelf32ppclinux.o \
eelf32ppcnto.o \
eelf32ppcsim.o \
@@ -421,6 +425,7 @@ ALL_EMULATIONS = \
eelf_i386_chaos.o \
eelf_i386_fbsd.o \
eelf_i386_ldso.o \
+ eelf_i386_obsd.o \
eelf_i386_vxworks.o \
eelf_s390.o \
egld960.o \
@@ -463,6 +468,7 @@ ALL_EMULATIONS = \
ei386nbsd.o \
ei386nto.o \
ei386nw.o \
+ ei386obsd.o \
ei386pe.o \
ei386pe_posix.o \
elnk960.o \
@@ -482,6 +488,7 @@ ALL_EMULATIONS = \
em68kelfnbsd.o \
em68klinux.o \
em68knbsd.o \
+ em68kobsd.o \
em68kpsos.o \
em88kbcs.o \
emaxqcoff.o \
@@ -579,6 +586,8 @@ ALL_EMULATIONS = \
eshlelf_nbsd.o \
eshelf_nto.o \
eshlelf_nto.o \
+ eshelf_obsd.o \
+ eshlelf_obsd.o \
eshl.o \
eshlelf.o \
eshlsymbian.o \
@@ -586,6 +595,7 @@ ALL_EMULATIONS = \
esparcaout.o \
esparclinux.o \
esparcnbsd.o \
+ esparcobsd.o \
est2000.o \
esun3.o \
esun4.o \
@@ -616,15 +626,20 @@ ALL_64_EMULATIONS = \
eshlelf64_nbsd.o \
eelf_x86_64.o \
eelf_x86_64_fbsd.o \
+ eelf_x86_64_obsd.o \
eelf64_s390.o \
eelf64_sparc.o \
eelf64_sparc_fbsd.o \
+ eelf64_sparc_obsd.o \
eelf64alpha.o \
eelf64alpha_fbsd.o \
eelf64alpha_nbsd.o \
+ eelf64alpha_obsd.o \
eelf64bmip.o \
eelf64btsmip.o \
+ eelf64btsmip_obsd.o \
eelf64ltsmip.o \
+ eelf64ltsmip_obsd.o \
eelf64hppa.o \
eelf64mmix.o \
emmo.o \
@@ -666,7 +681,7 @@ EXTRA_ld_new_SOURCES = deffilep.y
ld_new_SOURCES = ldgram.y ldlex.l lexsup.c ldlang.c mri.c ldctor.c ldmain.c \
ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c
-ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(INTLDEPS)
+ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(INTLDEPS)
ld_new_LDADD = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(INTLLIBS)
MAINTAINERCLEANFILES = ldver.texi configdoc.texi
@@ -1201,7 +1216,7 @@ install-info-am: $(INFO_DEPS)
install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
done; \
else : ; fi
-install-man: install-man1
+install-man:
installcheck-am:
@@ -1229,7 +1244,7 @@ uninstall-am: uninstall-man
uninstall-info: uninstall-info-recursive
-uninstall-man: uninstall-man1
+uninstall-man:
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
check-DEJAGNU check-am clean clean-generic clean-info \
@@ -1353,6 +1368,17 @@ earmelfb_nbsd.c: $(srcdir)/emulparams/armelfb_nbsd.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelfb_nbsd "$(tdir_armelfb_nbsd)"
+earmelf_obsd.c: $(srcdir)/emulparams/armelf_obsd.sh \
+ $(srcdir)/emulparams/armelf.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} armelf_obsd "$(tdir_armelf_obsd)"
+earmelfb_obsd.c: $(srcdir)/emulparams/armelfb_obsd.sh \
+ $(srcdir)/emulparams/armelf_obsd.sh \
+ $(srcdir)/emulparams/armelf.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} armelfb_obsd "$(tdir_armelfb_obsd)"
earmelf_vxworks.c: $(srcdir)/emulparams/armelf_vxworks.sh \
$(srcdir)/emulparams/vxworks.sh $(srcdir)/emulparams/armelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/vxworks.em \
@@ -1499,6 +1525,9 @@ em32rlelf_linux.c: $(srcdir)/emulparams/m32rlelf_linux.sh \
eelf32_sparc.c: $(srcdir)/emulparams/elf32_sparc.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32_sparc "$(tdir_elf32_sparc)"
+eelf32_sparc_obsd.c: $(srcdir)/emulparams/elf32_sparc_obsd.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32_sparc_obsd "$(tdir_elf32_sparc_obsd)"
eelf32_sparc_vxworks.c: $(srcdir)/emulparams/elf32_sparc_vxworks.sh \
$(srcdir)/emulparams/vxworks.sh $(srcdir)/emulparams/elf32_sparc.sh \
$(srcdir)/emultempl/vxworks.em $(srcdir)/emultempl/elf32.em \
@@ -1622,6 +1651,11 @@ eelf32ppc_fbsd.c: $(srcdir)/emulparams/elf32ppc_fbsd.sh \
$(srcdir)/emultempl/ppc32elf.em $(srcdir)/emultempl/elf32.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32ppc_fbsd "$(tdir_elf32ppc_fbsd)"
+eelf32ppc_obsd.c: $(srcdir)/emulparams/elf32ppc_obsd.sh \
+ $(srcdir)/emulparams/elf32ppc.sh $(srcdir)/emulparams/elf32ppccommon.sh \
+ $(srcdir)/emultempl/ppc32elf.em $(srcdir)/emultempl/elf32.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32ppc_obsd "$(tdir_elf32ppc_obsd)"
eelf32ppcsim.c: $(srcdir)/emulparams/elf32ppcsim.sh \
$(srcdir)/emulparams/elf32ppc.sh $(srcdir)/emulparams/elf32ppccommon.sh \
$(srcdir)/emultempl/ppc32elf.em $(srcdir)/emultempl/elf32.em \
@@ -1665,9 +1699,14 @@ eelf64alpha_nbsd.c: $(srcdir)/emulparams/elf64alpha_nbsd.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/alphaelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64alpha_nbsd "$(tdir_elf64alpha_nbsd)"
+eelf64alpha_obsd.c: $(srcdir)/emulparams/elf64alpha_obsd.sh \
+ $(srcdir)/emulparams/elf64alpha.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64alpha_obsd "$(tdir_elf64alpha_obsd)"
eelf64hppa.c: $(srcdir)/emulparams/elf64hppa.sh \
$(srcdir)/emulparams/hppa64linux.sh \
- $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/alphaelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64hppa "$(tdir_elf64hppa)"
eelf64_aix.c: $(srcdir)/emulparams/elf64_aix.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -1693,6 +1732,10 @@ eelf64_sparc_fbsd.c: $(srcdir)/emulparams/elf64_sparc_fbsd.sh \
$(srcdir)/emulparams/elf64_sparc.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64_sparc_fbsd "$(tdir_elf64_sparc_fbsd)"
+eelf64_sparc_obsd.c: $(srcdir)/emulparams/elf64_sparc_obsd.sh \
+ $(srcdir)/emulparams/elf64_sparc.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64_sparc_obsd "$(tdir_elf64_sparc_obsd)"
eelf64bmip.c: $(srcdir)/emulparams/elf64bmip.sh \
$(srcdir)/emulparams/elf32bmipn32.sh $(srcdir)/emultempl/irix.em \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -1709,10 +1752,18 @@ eelf64btsmip.c: $(srcdir)/emulparams/elf64btsmip.sh \
$(srcdir)/emulparams/elf32bmipn32.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64btsmip "$(tdir_elf64btsmip)"
+eelf64btsmip_obsd.c: $(srcdir)/emulparams/elf64btsmip_obsd.sh \
+ $(srcdir)/emulparams/elf32bmipn32.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64btsmip_obsd "$(tdir_elf64btsmip_obsd)"
eelf64ltsmip.c: $(srcdir)/emulparams/elf64ltsmip.sh \
$(srcdir)/emulparams/elf64btsmip.sh $(srcdir)/emulparams/elf32bmipn32.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64ltsmip "$(tdir_elf64ltsmip)"
+eelf64ltsmip_obsd.c: $(srcdir)/emulparams/elf64ltsmip_obsd.sh \
+ $(srcdir)/emulparams/elf32bmipn32.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64ltsmip_obsd "$(tdir_elf64ltsmip_obsd)"
eelf_i386.c: $(srcdir)/emulparams/elf_i386.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_i386 "$(tdir_elf_i386)"
@@ -1723,6 +1774,10 @@ eelf_x86_64_fbsd.c: $(srcdir)/emulparams/elf_x86_64_fbsd.sh \
$(srcdir)/emulparams/elf_x86_64.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_x86_64_fbsd "$(tdir_elf_x86_64_fbsd)"
+eelf_x86_64_obsd.c: $(srcdir)/emulparams/elf_x86_64_obsd.sh \
+ $(srcdir)/emulparams/elf_x86_64.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_x86_64_obsd "$(tdir_elf_x86_64_obsd)"
eelf_i386_be.c: $(srcdir)/emulparams/elf_i386_be.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_i386_be "$(tdir_elf_i386_be)"
@@ -1736,6 +1791,10 @@ eelf_i386_fbsd.c: $(srcdir)/emulparams/elf_i386_fbsd.sh \
eelf_i386_ldso.c: $(srcdir)/emulparams/elf_i386_ldso.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_i386_ldso "$(tdir_elf_i386_ldso)"
+eelf_i386_obsd.c: $(srcdir)/emulparams/elf_i386_obsd.sh \
+ $(srcdir)/emulparams/elf_i386.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_i386_obsd "$(tdir_elf_i386_obsd)"
eelf_i386_vxworks.c: $(srcdir)/emulparams/elf_i386_vxworks.sh \
$(srcdir)/emulparams/vxworks.sh $(srcdir)/emultempl/vxworks.em \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -1877,6 +1936,9 @@ ei386nto.c: $(srcdir)/emulparams/i386nto.sh \
ei386nw.c: $(srcdir)/emulparams/i386nw.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/nw.sc ${GEN_DEPENDS}
${GENSCRIPTS} i386nw "$(tdir_i386nw)"
+ei386obsd.c: $(srcdir)/emulparams/i386obsd.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} i386obsd "$(tdir_i386obsd)"
ei386pe.c: $(srcdir)/emulparams/i386pe.sh \
$(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS}
${GENSCRIPTS} i386pe "$(tdir_i386pe)"
@@ -1929,6 +1991,9 @@ em68klinux.c: $(srcdir)/emulparams/m68klinux.sh \
em68knbsd.c: $(srcdir)/emulparams/m68knbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68knbsd "$(tdir_m68knbsd)"
+em68kobsd.c: $(srcdir)/emulparams/m68kobsd.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68kobsd "$(tdir_m68kobsd)"
em68kpsos.c: $(srcdir)/emulparams/m68kpsos.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/psos.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68kpsos "$(tdir_m68kpsos)"
@@ -2291,6 +2356,11 @@ eshelf_nbsd.c: $(srcdir)/emulparams/shelf_nbsd.sh \
eshelf_nto.c: $(srcdir)/emulparams/shelf_nto.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} shelf_nto "$(tdir_shelf_nto)"
+eshelf_obsd.c: $(srcdir)/emulparams/shelf_obsd.sh \
+ $(srcdir)/emulparams/shelf.sh \
+ $(srcdir)/emulparams/elf_obsd.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} shelf_obsd "$(tdir_shelf_obsd)"
eshlelf_nbsd.c: $(srcdir)/emulparams/shlelf_nbsd.sh \
$(srcdir)/emulparams/shelf_nbsd.sh \
$(srcdir)/emulparams/shelf.sh \
@@ -2299,6 +2369,12 @@ eshlelf_nbsd.c: $(srcdir)/emulparams/shlelf_nbsd.sh \
eshlelf_nto.c: $(srcdir)/emulparams/shlelf_nto.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} shlelf_nto "$(tdir_shlelf_nto)"
+eshlelf_obsd.c: $(srcdir)/emulparams/shlelf_obsd.sh \
+ $(srcdir)/emulparams/shelf_obsd.sh \
+ $(srcdir)/emulparams/shelf.sh \
+ $(srcdir)/emulparams/elf_obsd.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} shlelf_obsd "$(tdir_shlelf_obsd)"
eshlelf.c: $(srcdir)/emulparams/shlelf.sh \
$(srcdir)/emulparams/shelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
@@ -2349,6 +2425,9 @@ esparclinux.c: $(srcdir)/emulparams/sparclinux.sh \
esparcnbsd.c: $(srcdir)/emulparams/sparcnbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} sparcnbsd "$(tdir_sparcnbsd)"
+esparcobsd.c: $(srcdir)/emulparams/sparcobsd.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} sparcobsd "$(tdir_sparcobsd)"
est2000.c: $(srcdir)/emulparams/st2000.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/st2000.sc ${GEN_DEPENDS}
${GENSCRIPTS} st2000 "$(tdir_st2000)"
@@ -2576,7 +2655,7 @@ install-exec-local: ld-new$(EXEEXT)
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin
@list='$(noinst_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
- echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/$(EXEEXT)$$//' -e 's/-new//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
@@ -2635,17 +2714,17 @@ dep.sed: dep-in.sed config.status
dep: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < Makefile > tmp-Makefile
cat DEP >> tmp-Makefile
- $(srcdir)/../move-if-change tmp-Makefile Makefile
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile Makefile
dep-in: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.in > tmp-Makefile.in
cat DEP >> tmp-Makefile.in
- $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in
dep-am: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.am > tmp-Makefile.am
cat DEP >> tmp-Makefile.am
- $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am
.PHONY: dep dep-in dep-am
diff --git a/gnu/usr.bin/binutils-2.17/ld/configure b/gnu/usr.bin/binutils-2.17/ld/configure
index 0cd6f5c99d1..d779ba18761 100755
--- a/gnu/usr.bin/binutils-2.17/ld/configure
+++ b/gnu/usr.bin/binutils-2.17/ld/configure
@@ -9700,7 +9700,7 @@ do
all_targets=true
else
# Canonicalize the secondary target names.
- result=`$ac_config_sub $targ_alias 2>/dev/null`
+ result=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $targ_alias 2>/dev/null`
if test -n "$result"; then
targ=$result
else
diff --git a/gnu/usr.bin/binutils-2.17/ld/configure.in b/gnu/usr.bin/binutils-2.17/ld/configure.in
index e020288c00c..da2fc05c85a 100644
--- a/gnu/usr.bin/binutils-2.17/ld/configure.in
+++ b/gnu/usr.bin/binutils-2.17/ld/configure.in
@@ -156,7 +156,7 @@ do
all_targets=true
else
# Canonicalize the secondary target names.
- result=`$ac_config_sub $targ_alias 2>/dev/null`
+ result=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $targ_alias 2>/dev/null`
if test -n "$result"; then
targ=$result
else
diff --git a/gnu/usr.bin/binutils-2.17/ld/configure.tgt b/gnu/usr.bin/binutils-2.17/ld/configure.tgt
index d324e4ece25..a133f07fa67 100644
--- a/gnu/usr.bin/binutils-2.17/ld/configure.tgt
+++ b/gnu/usr.bin/binutils-2.17/ld/configure.tgt
@@ -32,8 +32,7 @@ alpha*-*-osf*) targ_emul=alpha ;;
alpha*-*-gnu*) targ_emul=elf64alpha ;;
alpha*-*-netware*) targ_emul=alpha ;;
alpha*-*-netbsd*) targ_emul=elf64alpha_nbsd ;;
-alpha*-*-openbsd*) targ_emul=elf64alpha
- ;;
+alpha*-*-openbsd*) targ_emul=elf64alpha_obsd ;;
arc-*-elf*) targ_emul=arcelf
;;
arm-epoc-pe) targ_emul=arm_epoc_pe ; targ_extra_ofiles="deffilep.o pe-dll.o" ;;
@@ -52,7 +51,10 @@ arm-*-netbsdelf*) targ_emul=armelf_nbsd;
arm-*-netbsd*) targ_emul=armnbsd;
targ_extra_emuls="armelf armelf_nbsd armelfb_nbsd" ;;
arm-*-nto*) targ_emul=armnto ;;
-arm-*-openbsd*) targ_emul=armnbsd ;;
+armeb-*-openbsd*) targ_emul=armelfb_obsd
+ targ_extra_emuls="armelf_obsd" ;;
+arm-*-openbsd*) targ_emul=armelf_obsd
+ targ_extra_emuls="armelfb_obsd" ;;
arm-*-rtems*) targ_emul=armelf ;;
armeb-*-elf) targ_emul=armelfb ;;
arm-*-elf | arm*-*-eabi*)
@@ -125,8 +127,7 @@ hppa*-*-linux-*) targ_emul=hppalinux ;;
hppa*-*-*elf*) targ_emul=hppaelf ;;
hppa*-*-lites*) targ_emul=hppaelf ;;
hppa*-*-netbsd*) targ_emul=hppanbsd ;;
-hppa*-*-openbsd*) targ_emul=hppaobsd
- ;;
+hppa*-*-openbsd*) targ_emul=hppaobsd ;;
i370-*-elf* | i370-*-linux-*) targ_emul=elf32i370
;;
i[3-7]86-*-nto-qnx*) targ_emul=i386nto ;;
@@ -187,6 +188,14 @@ x86_64-*-netbsd*) targ_emul=elf_x86_64
sed -e 's/netbsd/netbsdelf/'`;;
esac ;;
i[3-7]86-*-netware) targ_emul=i386nw ;;
+i[3-7]86-*-openbsd[0-2]* | i[3-7]86-*-openbsd3.[0-2])
+ targ_emul=i386obsd ;;
+i[3-7]86-*-openbsd*) targ_emul=elf_i386_obsd ;;
+x86_64-*-openbsd*) targ_emul=elf_x86_64_obsd
+ targ_extra_emuls="elf_i386_obsd elf_i386"
+ tdir_elf_i386_obsd=`echo ${targ_alias} | \
+ sed -e 's/x86_64/i386/'`
+ ;;
i[3-7]86-*-elf*) targ_emul=elf_i386 ;;
x86_64-*-elf*) targ_emul=elf_x86_64
targ_extra_emuls=elf_i386
@@ -285,6 +294,7 @@ m68*-*-netbsdelf*) targ_emul=m68kelfnbsd
m68*-*-netbsdaout* | m68*-*-netbsd*)
targ_emul=m68knbsd
targ_extra_emuls="m68kelfnbsd m68k4knbsd" ;;
+m68*-*-openbsd*) targ_emul=m68kobsd ;;
m68*-*-psos*) targ_emul=m68kpsos ;;
m68*-*-rtemscoff*) targ_emul=m68kcoff ;;
m68*-*-rtems*) targ_emul=m68kelf
@@ -314,6 +324,14 @@ mips*el-*-netbsd*) targ_emul=elf32ltsmip
mips*-*-netbsd*) targ_emul=elf32btsmip
targ_extra_emuls="elf32ltsmip elf64btsmip elf64ltsmip"
;;
+mips64*el-*-openbsd*) targ_emul=elf64ltsmip_obsd
+ targ_extra_emuls="elf32ltsmipn32 elf32btsmipn32 elf32ltsmip elf32btsmip elf64btsmip"
+ ;;
+mips64*-*-openbsd*) targ_emul=elf64btsmip_obsd
+ targ_extra_emuls="elf32btsmipn32 elf32ltsmipn32 elf32btsmip elf32ltsmip elf64ltsmip"
+ ;;
+mips*el-*-openbsd*) targ_emul=elf32ltsmip ;;
+mips*-*-openbsd*) targ_emul=elf32btsmip ;;
mips*-*-bsd*) targ_emul=mipsbig ;;
mips*vr4300el-*-elf*) targ_emul=elf32l4300 ;;
mips*vr4300-*-elf*) targ_emul=elf32b4300 ;;
@@ -400,7 +418,7 @@ powerpc*le-*-elf* | powerpc*le-*-eabi* | powerpc*le-*-solaris* \
targ_extra_emuls="elf32ppcsim" ;;
esac ;;
powerpc*-*-elf* | powerpc*-*-eabi* | powerpc*-*-sysv* \
- | powerpc*-*-netbsd* | powerpc-*-openbsd* | powerpc*-*-kaos*)
+ | powerpc*-*-netbsd* | powerpc*-*-kaos*)
case "${targ}" in
*64*) targ_emul=elf64ppc
targ_extra_emuls="elf32ppc elf32ppclinux elf32ppcsim"
@@ -411,6 +429,11 @@ powerpc*-*-elf* | powerpc*-*-eabi* | powerpc*-*-sysv* \
*) targ_emul=elf32ppc
targ_extra_emuls="elf32ppclinux elf32ppcsim" ;;
esac ;;
+powerpc-*-openbsd*) case "${targ}" in
+ *64*) targ_emul=elf64ppc_obsd
+ targ_extra_emuls="elf32ppc_obsd" ;;
+ *) targ_emul=elf32ppc_obsd ;;
+ esac ;;
powerpc-*-vxworks*)
targ_emul=elf32ppcvxworks
targ_extra_emuls="elf32ppc elf32ppclinux elf32ppcsim" ;;
@@ -465,6 +488,8 @@ sh*l*-*-netbsdelf*) targ_emul=shlelf_nbsd
targ_extra_emuls=shelf_nbsd ;;
sh*-*-netbsdelf*) targ_emul=shelf_nbsd
targ_extra_emuls=shlelf_nbsd ;;
+sh*-*-openbsd*) targ_emul=shlelf_obsd
+ targ_extra_emuls=shelf_obsd ;;
sh*-*-symbianelf*) targ_emul=shlsymbian ;;
shle*-*-elf* | sh[1234]*le*-*-elf | shle*-*-kaos*)
targ_emul=shlelf
@@ -516,11 +541,14 @@ sparc*-*-linux-*) targ_emul=elf32_sparc
tdir_sparclinux=${targ_alias}aout
tdir_elf64_sparc=`echo ${targ_alias} | sed -e 's/32//'`
tdir_sun4=sparc-sun-sunos4 ;;
-sparc64-*-netbsd* | sparc64-*-openbsd*)
- targ_emul=elf64_sparc
+sparc64-*-netbsd*) targ_emul=elf64_sparc
targ_extra_emuls="elf32_sparc" ;;
+sparc64-*-openbsd*) targ_emul=elf64_sparc_obsd ;;
sparc*-*-netbsd*elf*) targ_emul=elf32_sparc ;;
sparc*-*-netbsd*) targ_emul=sparcnbsd ;;
+sparc-*-openbsd[0-2].* | sparc-*-openbsd3.[0-1])
+ targ_emul=sparcobsd ;;
+sparc-*-openbsd*) targ_emul=elf32_sparc_obsd ;;
sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*)
targ_emul=elf32_sparc ;;
sparc-*-solaris2*) targ_emul=elf32_sparc
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/armelf_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/armelf_obsd.sh
new file mode 100644
index 00000000000..a2f193b7546
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/armelf_obsd.sh
@@ -0,0 +1,8 @@
+. ${srcdir}/emulparams/armelf.sh
+. ${srcdir}/emulparams/elf_obsd.sh
+
+MAXPAGESIZE=0x8000
+TEXT_START_ADDR=0x00008000
+TARGET2_TYPE=got-rel
+
+unset EMBEDDED
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/armelfb_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/armelfb_obsd.sh
new file mode 100644
index 00000000000..8c35c13c276
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/armelfb_obsd.sh
@@ -0,0 +1,3 @@
+. ${srcdir}/emulparams/armelf_obsd.sh
+
+OUTPUT_FORMAT="elf32-bigarm"
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/elf32_sparc_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf32_sparc_obsd.sh
new file mode 100644
index 00000000000..3f36d6954ec
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf32_sparc_obsd.sh
@@ -0,0 +1,4 @@
+. ${srcdir}/emulparams/elf32_sparc.sh
+#override MAXPAGESIZE to avoid cache aliasing.
+MAXPAGESIZE=0x100000
+. ${srcdir}/emulparams/elf_obsd.sh
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/elf32ppc_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf32ppc_obsd.sh
new file mode 100644
index 00000000000..63d838343a6
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf32ppc_obsd.sh
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf32ppc.sh
+. ${srcdir}/emulparams/elf_obsd.sh
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64_sparc_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64_sparc_obsd.sh
new file mode 100644
index 00000000000..465f473ad99
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64_sparc_obsd.sh
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf64_sparc.sh
+. ${srcdir}/emulparams/elf_obsd.sh
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64alpha_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64alpha_obsd.sh
new file mode 100644
index 00000000000..d41f5e7814a
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64alpha_obsd.sh
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf64alpha.sh
+. ${srcdir}/emulparams/elf_obsd.sh
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64btsmip_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64btsmip_obsd.sh
new file mode 100644
index 00000000000..f4cde708f64
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64btsmip_obsd.sh
@@ -0,0 +1,7 @@
+. ${srcdir}/emulparams/elf64btsmip.sh
+MAXPAGESIZE=0x10000
+TEXT_START_ADDR="0x10000000"
+. ${srcdir}/emulparams/elf_obsd.sh
+# XXX causes GOT oflows
+NO_PAD_CDTOR=y
+DATA_START_SYMBOLS='_fdata = . ; __data_start = . ;'
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64ltsmip_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64ltsmip_obsd.sh
new file mode 100644
index 00000000000..bec35d17e7d
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf64ltsmip_obsd.sh
@@ -0,0 +1,7 @@
+. ${srcdir}/emulparams/elf64ltsmip.sh
+MAXPAGESIZE=0x10000
+TEXT_START_ADDR="0x10000000"
+. ${srcdir}/emulparams/elf_obsd.sh
+# XXX causes GOT oflows
+NO_PAD_CDTOR=y
+DATA_START_SYMBOLS='_fdata = . ; __data_start = . ;'
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/elf_i386_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf_i386_obsd.sh
new file mode 100644
index 00000000000..ae7ba0e3d29
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf_i386_obsd.sh
@@ -0,0 +1,24 @@
+. ${srcdir}/emulparams/elf_i386.sh
+. ${srcdir}/emulparams/elf_obsd.sh
+
+if test "${LD_FLAG#"${LD_FLAG%pie}"}" = "pie"; then
+ TEXT_START_ADDR=0x0
+ if test "${LD_FLAG%%(cpie|pie)}" = "Z"; then
+ RODATA_PADSIZE=${MAXPAGESIZE}
+ else
+ RODATA_PADSIZE=0x20000000
+ fi
+else
+ if test "${LD_FLAG%%(cpie|pie)}" = "Z"; then
+ TEXT_START_ADDR=0x08048000
+ RODATA_PADSIZE=${MAXPAGESIZE}
+ else
+ TEXT_START_ADDR=0x1C000000
+ RODATA_PADSIZE=0x20000000
+ fi
+fi
+
+RODATA_ALIGN=". = ALIGN(${RODATA_PADSIZE})"
+RODATA_ALIGN_ADD="${TEXT_START_ADDR}"
+
+unset PAD_PLT
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/elf_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf_obsd.sh
new file mode 100644
index 00000000000..37e0d51e8f5
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf_obsd.sh
@@ -0,0 +1,8 @@
+LIB_PATH=/usr/lib
+
+PAD_RO=
+RODATA_PADSIZE=${MAXPAGESIZE}
+RODATA_ALIGN=". = ALIGN(${RODATA_PADSIZE}) + (. & (${RODATA_PADSIZE} - 1))"
+PAD_GOT=
+PAD_PLT=
+DATA_START_SYMBOLS='__data_start = . ;'
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/elf_x86_64_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf_x86_64_obsd.sh
new file mode 100644
index 00000000000..3689dad903f
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/elf_x86_64_obsd.sh
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf_x86_64.sh
+. ${srcdir}/emulparams/elf_obsd.sh
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/hppaobsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/hppaobsd.sh
index 0227dc5c335..45e5c4e3ba4 100644
--- a/gnu/usr.bin/binutils-2.17/ld/emulparams/hppaobsd.sh
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/hppaobsd.sh
@@ -1,6 +1,19 @@
-. ${srcdir}/emulparams/hppanbsd.sh
-
+. ${srcdir}/emulparams/hppaelf.sh
+
+#override hppaelf.sh
+SCRIPT_NAME=elf
+ELFSIZE=32
OUTPUT_FORMAT="elf32-hppa"
-TEXT_START_ADDR=0x1000
-TARGET_PAGE_SIZE=0x1000
+
+# other necessary defines, similar but not the same as linux.
MAXPAGESIZE=0x1000
+ENTRY="__start"
+MACHINE=hppa1.1 # We use 1.1 specific features.
+OTHER_READONLY_SECTIONS=".PARISC.unwind ${RELOCATING-0} : { *(.PARISC.unwind) }"
+DATA_NONEXEC_PLT=
+GENERATE_SHLIB_SCRIPT=yes
+
+. ${srcdir}/emulparams/elf_obsd.sh
+
+#override elf_obsd.sh
+DATA_START_SYMBOLS='PROVIDE ($global$ = .); __data_start = . ;'
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/i386obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/i386obsd.sh
new file mode 100644
index 00000000000..88afe6b851d
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/i386obsd.sh
@@ -0,0 +1,8 @@
+SCRIPT_NAME=aout
+TEXT_START_ADDR=0x1020
+OUTPUT_FORMAT="a.out-i386-netbsd"
+TARGET_PAGE_SIZE=0x1000
+ARCH=i386
+EXECUTABLE_SYMBOLS='__DYNAMIC = 0;'
+
+LIB_PATH=/usr/lib
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/m68kobsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/m68kobsd.sh
new file mode 100644
index 00000000000..55f5b2d8c8c
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/m68kobsd.sh
@@ -0,0 +1,9 @@
+SCRIPT_NAME=aout
+TEXT_START_ADDR=0x2020
+NONPAGED_TEXT_START_ADDR=0x2000
+OUTPUT_FORMAT="a.out-m68k-netbsd"
+TARGET_PAGE_SIZE=0x2000
+ARCH=m68k
+EXECUTABLE_SYMBOLS='__DYNAMIC = 0;'
+
+LIB_PATH=/usr/lib
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/shelf_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/shelf_obsd.sh
new file mode 100644
index 00000000000..03883ef4ab6
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/shelf_obsd.sh
@@ -0,0 +1,16 @@
+# If you change this file, please alsolook at files which source this one:
+# shlelf_obsd.sh
+
+. ${srcdir}/emulparams/shelf.sh
+. ${srcdir}/emulparams/elf_obsd.sh
+
+OUTPUT_FORMAT="elf32-sh-obsd"
+TEXT_START_ADDR=0x400000
+MAXPAGESIZE=0x10000
+
+DATA_START_SYMBOLS='__data_start = . ;';
+
+ENTRY=_start
+
+unset EMBEDDED
+unset OTHER_SECTIONS
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/shlelf_obsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/shlelf_obsd.sh
new file mode 100644
index 00000000000..dfab67a2ca1
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/shlelf_obsd.sh
@@ -0,0 +1,3 @@
+. ${srcdir}/emulparams/shelf_obsd.sh
+
+OUTPUT_FORMAT="elf32-shl-obsd"
diff --git a/gnu/usr.bin/binutils-2.17/ld/emulparams/sparcobsd.sh b/gnu/usr.bin/binutils-2.17/ld/emulparams/sparcobsd.sh
new file mode 100644
index 00000000000..a45fadc51b1
--- /dev/null
+++ b/gnu/usr.bin/binutils-2.17/ld/emulparams/sparcobsd.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=aout
+TEXT_START_ADDR=0x1020
+OUTPUT_FORMAT="a.out-sparc-netbsd"
+TARGET_PAGE_SIZE=0x1000
+ARCH=sparc
+
+LIB_PATH=/usr/lib
diff --git a/gnu/usr.bin/binutils-2.17/ld/emultempl/elf32.em b/gnu/usr.bin/binutils-2.17/ld/emultempl/elf32.em
index 19259796053..f4fb443af93 100644
--- a/gnu/usr.bin/binutils-2.17/ld/emultempl/elf32.em
+++ b/gnu/usr.bin/binutils-2.17/ld/emultempl/elf32.em
@@ -77,6 +77,237 @@ EOF
esac
fi
+case ${target} in
+ *-*-openbsd*)
+ cat >>e${EMULATION_NAME}.c <<EOF
+#include <sys/types.h>
+#include <dirent.h>
+
+/* Search a directory for a .so file. */
+
+static char * gld${EMULATION_NAME}_search_dir_needed (const char *dirlist, const char *filename);
+
+static char * gld${EMULATION_NAME}_search_dir (const char *dirname,
+ const char *filename, int req_maj, int req_min);
+
+static char * gld${EMULATION_NAME}_split_lib_name (char *name, int *pmaj,
+ int *pmin);
+
+/* THIS FUNCTION MODIFIES THE name ARGUMENT string */
+static char *
+gld${EMULATION_NAME}_split_lib_name (name, pmaj, pmin)
+ char *name;
+ int *pmaj, *pmin;
+{
+ char*eptr, *lib = name;
+ char *s;
+ int found_so = 0;
+
+ *pmaj = -1;
+ *pmin = -1;
+
+ if (strncmp(lib, "lib", 3) == 0)
+ lib += 3;
+
+ s = lib;
+ while (found_so == 0)
+ {
+ s = strstr(s, ".so");
+
+ /* if .so not found, return not found, invalid lib name */
+ if (s == NULL)
+ {
+ return NULL;
+ }
+
+ /* if .so is at end of string, fine return with pmaj/pmin -1 */
+ if (s[3] == '\0')
+ {
+ *s = '\0';
+ return lib;
+ }
+
+ if (s[3] == '.')
+ {
+ *s = '\0';
+ found_so = 1;
+ }
+ /* skip over the ".so" */
+ s += 3;
+ }
+
+
+ /* lib[name].so.[M].[N] */
+ /* s ^ */
+ s += 1;
+
+ /* lib[name].so.[M].[N] */
+ /* s ^ */
+ *pmaj = strtoul (s, &eptr, 10);
+
+ /* lib[name].so.[M]X... */
+ /* eptr ^ */
+ if (*eptr != '.' || s == eptr)
+ return NULL; /* invalid, must have minor */
+
+ s = eptr+1;
+
+ /* lib[name].so.[M].[N] */
+ /* s ^ */
+ *pmin = strtoul (s, &eptr, 10);
+
+ /* lib[name].so.[M].[N] */
+ /* eptr ^ */
+ if (*eptr != '\0' || s == eptr)
+ return NULL; /* minor must be last field of library */
+
+ return lib;
+}
+
+static char *
+gld${EMULATION_NAME}_search_dir_needed (dirlist, filename)
+ const char *dirlist;
+ const char *filename;
+{
+ char *dlist, *dlist_alloc, *dir;
+ char *fnam, *fnam_alloc, *lib;
+ char *found = NULL;
+ int maj = -1, min = -1;
+
+ dlist_alloc = dlist = xstrdup(dirlist);
+ fnam_alloc = fnam = xstrdup(filename);
+
+ lib = gld${EMULATION_NAME}_split_lib_name(fnam, &maj, &min);
+
+ while (lib != NULL && found == NULL)
+ {
+ dir = strsep(&dlist, ":");
+ if (dir == NULL)
+ break;
+ if (*dir == '\0')
+ continue; /* skip dirlist of ...::... */
+ found = gld${EMULATION_NAME}_search_dir(dir, lib, maj, min);
+ }
+
+ free(dlist_alloc);
+ free(fnam_alloc);
+ return found;
+}
+
+
+static char *
+gld${EMULATION_NAME}_search_dir (dirname, filename, req_maj, req_min)
+ const char *dirname;
+ const char *filename;
+ int req_maj, req_min;
+{
+ const char *dot;
+ unsigned int len;
+ char *found;
+ int max_maj, max_min;
+ DIR *dir;
+ struct dirent *entry;
+ unsigned int dirnamelen;
+ char *full_path;
+ int statval;
+ struct stat st;
+
+ dot = strchr (filename, '.');
+ len = strlen (filename);
+ found = NULL;
+ max_maj = max_min = 0;
+
+ dir = opendir (dirname);
+ if (dir == NULL)
+ return NULL;
+ dirnamelen = strlen (dirname);
+
+ while ((entry = readdir (dir)) != NULL)
+ {
+ const char *s;
+ char *eptr, *eptr1;
+ int found_maj, found_min;
+
+ if (strncmp (entry->d_name, "lib", 3) != 0
+ || strncmp (entry->d_name + 3, filename, len) != 0)
+ continue;
+
+ /* We accept libfoo.so without a version number, even though the
+ native linker does not. This is more convenient for packages
+ which just generate .so files for shared libraries, as on ELF
+ systems. */
+ if (strncmp (entry->d_name + 3 + len, ".so", 3) != 0)
+ continue;
+
+ if (entry->d_name[6 + len] == '\0')
+ ;
+ else if (entry->d_name[6 + len] == '.'
+ && ISDIGIT ((unsigned char) entry->d_name[7 + len]))
+ ;
+ else
+ continue;
+
+ for (s = entry->d_name + 6 + len; *s != '\0'; s++)
+ if (*s != '.' && ! ISDIGIT ((unsigned char) *s))
+ break;
+ if (*s != '\0')
+ continue;
+
+ /* We've found a .so file. Work out the major and minor
+ version numbers. */
+ found_maj = -1;
+ found_min = -1;
+
+ /* do allow libN.so */
+ if (entry->d_name[6 + len] == '.') {
+ found_maj = strtoul (entry->d_name + 7 + len, &eptr, 10);
+
+ /* do not support libN.so. or libN.so.X */
+ if (*eptr != '.' || ((entry->d_name + 3 + len) == eptr))
+ continue;
+
+ found_min = strtoul (eptr+1, &eptr1, 10);
+
+ /* do not support libN.so.X. or libN.so.X.Y.[anything] */
+ if (*eptr1 != '\0' || (eptr+1 == eptr1))
+ continue;
+ }
+
+ /* Make sure the file really exists (ignore broken symlinks). */
+ full_path = xmalloc (dirnamelen + 1 + strlen (entry->d_name) + 1);
+ sprintf (full_path, "%s/%s", dirname, entry->d_name);
+ statval = stat (full_path, &st);
+ free (full_path);
+ if (statval != 0)
+ continue;
+
+ /* We've found a match for the name we are searching for. See
+ if this is the version we should use. */
+ if (((req_maj == -1) && (found == NULL
+ || (found_maj > max_maj)
+ || (found_maj == max_maj && (found_min > max_min))))
+ || ((found_maj == req_maj) && (found_min >= req_min)
+ && (found_min > max_min)))
+ {
+ if (found != NULL)
+ free (found);
+ found = (char *) xmalloc (dirnamelen + strlen (entry->d_name) + 2);
+ sprintf (found, "%s/%s", dirname, entry->d_name);
+ max_maj = found_maj;
+ max_min = found_min;
+ }
+ }
+
+ closedir (dir);
+
+ return found;
+}
+
+EOF
+ ;;
+esac
+cat >>e${EMULATION_NAME}.c <<EOF
+EOF
# Import any needed special functions and/or overrides.
#
if test -n "$EXTRA_EM_FILE" ; then
@@ -301,7 +532,7 @@ gld${EMULATION_NAME}_try_needed (struct dt_needed *needed,
{
bfd *abfd;
const char *name = needed->name;
- const char *soname;
+ char *soname;
int class;
abfd = bfd_openr (name, bfd_get_target (output_bfd));
@@ -395,7 +626,7 @@ cat >>e${EMULATION_NAME}.c <<EOF
einfo ("%F%P:%B: bfd_stat failed: %E\n", abfd);
/* First strip off everything before the last '/'. */
- soname = lbasename (abfd->filename);
+ soname = xstrdup (lbasename (abfd->filename));
if (trace_file_tries)
info_msg (_("found %s at %s\n"), soname, name);
@@ -406,6 +637,7 @@ cat >>e${EMULATION_NAME}.c <<EOF
{
/* Return TRUE to indicate that we found the file, even though
we aren't going to do anything with it. */
+ free (soname);
return TRUE;
}
@@ -452,6 +684,25 @@ gld${EMULATION_NAME}_search_needed (const char *path,
return FALSE;
needed.by = n->by;
+EOF
+case ${target} in
+ *-*-openbsd*)
+ cat >>e${EMULATION_NAME}.c <<EOF
+
+ {
+ char *found;
+ if ((found = gld${EMULATION_NAME}_search_dir_needed(path, name)) != NULL) {
+ needed.name = found;
+ if (gld${EMULATION_NAME}_try_needed (&needed, force)) {
+ return TRUE;
+ }
+ free(found);
+ }
+ }
+
+EOF
+esac
+cat >>e${EMULATION_NAME}.c <<EOF
needed.name = n->name;
len = strlen (name);
@@ -930,7 +1181,7 @@ gld${EMULATION_NAME}_after_open (void)
rpath_link, rpath, then the environment variable
LD_LIBRARY_PATH (native only), then the DT_RPATH/DT_RUNPATH
entries (native only), then the linker script LIB_SEARCH_DIRS.
- We do not search using the -L arguments.
+ We look at the -L arguments to build the search path.
We search twice. The first time, we skip objects which may
introduce version mismatches. The second time, we force
@@ -942,7 +1193,7 @@ gld${EMULATION_NAME}_after_open (void)
EOF
if [ "x${NATIVE}" = xyes ] ; then
cat >>e${EMULATION_NAME}.c <<EOF
- const char *lib_path;
+ char *lib_path;
EOF
fi
if [ "x${USE_LIBPATH}" = xyes ] ; then
@@ -966,15 +1217,37 @@ EOF
fi
if [ "x${NATIVE}" = xyes ] ; then
cat >>e${EMULATION_NAME}.c <<EOF
- if (command_line.rpath_link == NULL
+ if (getenv ("LD_RUN_PATH") != NULL
+ && command_line.rpath_link == NULL
&& command_line.rpath == NULL)
{
- lib_path = (const char *) getenv ("LD_RUN_PATH");
- if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- force))
+ lib_path = getenv ("LD_RUN_PATH");
+ if (gld${EMULATION_NAME}_search_needed (lib_path, &n, force))
break;
}
- lib_path = (const char *) getenv ("LD_LIBRARY_PATH");
+
+ len = strlen(search_head->name);
+ lib_path = xstrdup(search_head->name);
+ for (search = search_head->next; search != NULL;
+ search = search->next)
+ {
+ size_t nlen;
+
+ nlen = strlen(search->name);
+ lib_path = xrealloc(lib_path, len + nlen + 2);
+ lib_path[len] = ':';
+ strcpy(lib_path + len + 1, search->name);
+ len += nlen + 1;
+ }
+
+ if (gld${EMULATION_NAME}_search_needed (lib_path, &n, force))
+ {
+ free (lib_path);
+ break;
+ }
+ free (lib_path);
+
+ lib_path = getenv ("LD_LIBRARY_PATH");
if (gld${EMULATION_NAME}_search_needed (lib_path, &n, force))
break;
EOF
@@ -1180,10 +1453,8 @@ ${ELF_INTERPRETER_SET_DEFAULT}
{
asection *s;
bfd_size_type sz;
- bfd_size_type prefix_len;
char *msg;
bfd_boolean ret;
- const char * gnu_warning_prefix = _("warning: ");
if (is->just_syms_flag)
continue;
@@ -1193,14 +1464,11 @@ ${ELF_INTERPRETER_SET_DEFAULT}
continue;
sz = s->size;
- prefix_len = strlen (gnu_warning_prefix);
- msg = xmalloc ((size_t) (prefix_len + sz + 1));
- strcpy (msg, gnu_warning_prefix);
- if (! bfd_get_section_contents (is->the_bfd, s, msg + prefix_len,
- (file_ptr) 0, sz))
+ msg = xmalloc ((size_t) (sz + 1));
+ if (! bfd_get_section_contents (is->the_bfd, s, msg, (file_ptr) 0, sz))
einfo ("%F%B: Can't read contents of section .gnu.warning: %E\n",
is->the_bfd);
- msg[prefix_len + sz] = '\0';
+ msg[sz] = '\0';
ret = link_info.callbacks->warning (&link_info, msg,
(const char *) NULL,
is->the_bfd, (asection *) NULL,
@@ -1246,6 +1514,17 @@ gld${EMULATION_NAME}_open_dynamic_archive
filename = entry->filename;
+EOF
+case ${target} in
+ *-*-openbsd*)
+ cat >>e${EMULATION_NAME}.c <<EOF
+ string = gld${EMULATION_NAME}_search_dir(search->name, filename, -1, -1);
+ if (string == NULL)
+ return FALSE;
+EOF
+ ;;
+ *)
+ cat >>e${EMULATION_NAME}.c <<EOF
/* This allocates a few bytes too many when EXTRA_SHLIB_EXTENSION
is defined, but it does not seem worth the headache to optimize
away those two bytes of space. */
@@ -1259,6 +1538,10 @@ gld${EMULATION_NAME}_open_dynamic_archive
sprintf (string, "%s/lib%s%s.so", search->name, filename, arch);
+EOF
+ ;;
+esac
+cat >>e${EMULATION_NAME}.c <<EOF
#ifdef EXTRA_SHLIB_EXTENSION
/* Try the .so extension first. If that fails build a new filename
using EXTRA_SHLIB_EXTENSION. */
@@ -1621,9 +1904,13 @@ echo ' ; else if (link_info.pie && link_info.combreloc' >> e${EMULATION_NAME}.c
echo ' && link_info.relro' >> e${EMULATION_NAME}.c
echo ' && (link_info.flags & DT_BIND_NOW)) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xdw >> e${EMULATION_NAME}.c
+echo ' ; else if (link_info.pie && link_info.combreloc && config.data_bss_contig == TRUE) return' >> e${EMULATION_NAME}.c
+sed $sc ldscripts/${EMULATION_NAME}.xdcz >> e${EMULATION_NAME}.c
echo ' ; else if (link_info.pie && link_info.combreloc) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xdc >> e${EMULATION_NAME}.c
fi
+echo ' ; else if (link_info.pie && config.data_bss_contig == TRUE) return' >> e${EMULATION_NAME}.c
+sed $sc ldscripts/${EMULATION_NAME}.xdz >> e${EMULATION_NAME}.c
echo ' ; else if (link_info.pie) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xd >> e${EMULATION_NAME}.c
fi
@@ -1639,6 +1926,8 @@ fi
echo ' ; else if (link_info.shared) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xs >> e${EMULATION_NAME}.c
fi
+echo ' ; else if (config.data_bss_contig == TRUE) return' >> e${EMULATION_NAME}.c
+sed $sc ldscripts/${EMULATION_NAME}.xz >> e${EMULATION_NAME}.c
if test -n "$GENERATE_COMBRELOC_SCRIPT" ; then
echo ' ; else if (link_info.combreloc && link_info.relro' >> e${EMULATION_NAME}.c
echo ' && (link_info.flags & DT_BIND_NOW)) return' >> e${EMULATION_NAME}.c
@@ -1677,11 +1966,15 @@ cat >>e${EMULATION_NAME}.c <<EOF
else if (link_info.pie && link_info.combreloc
&& link_info.relro && (link_info.flags & DT_BIND_NOW))
return "ldscripts/${EMULATION_NAME}.xdw";
+ else if (link_info.pie && link_info.combreloc && config.data_bss_contig == TRUE)
+ return "ldscripts/${EMULATION_NAME}.xdcz";
else if (link_info.pie && link_info.combreloc)
return "ldscripts/${EMULATION_NAME}.xdc";
EOF
fi
cat >>e${EMULATION_NAME}.c <<EOF
+ else if (link_info.pie && config.data_bss_contig == TRUE)
+ return "ldscripts/${EMULATION_NAME}.xdz";
else if (link_info.pie)
return "ldscripts/${EMULATION_NAME}.xd";
EOF
@@ -1701,6 +1994,10 @@ cat >>e${EMULATION_NAME}.c <<EOF
return "ldscripts/${EMULATION_NAME}.xs";
EOF
fi
+cat >>e${EMULATION_NAME}.c <<EOF
+ else if (config.data_bss_contig == TRUE)
+ return "ldscripts/${EMULATION_NAME}.xz";
+EOF
if test -n "$GENERATE_COMBRELOC_SCRIPT" ; then
cat >>e${EMULATION_NAME}.c <<EOF
else if (link_info.combreloc && link_info.relro
diff --git a/gnu/usr.bin/binutils-2.17/ld/genscripts.sh b/gnu/usr.bin/binutils-2.17/ld/genscripts.sh
index e9d4f153a7a..534916c1be1 100755
--- a/gnu/usr.bin/binutils-2.17/ld/genscripts.sh
+++ b/gnu/usr.bin/binutils-2.17/ld/genscripts.sh
@@ -181,16 +181,6 @@ if [ "x${LIB_PATH}" = "x" ] && [ "x${USE_LIBPATH}" = xyes ] ; then
esac
fi
-# Always search $(tooldir)/lib, aka /usr/local/TARGET/lib, except for
-# sysrooted configurations and when LIBPATH=":".
-if [ "x${use_sysroot}" != "xyes" ] ; then
- case :${LIB_PATH}: in
- ::: | *:${tool_lib}:*) ;;
- ::) LIB_PATH=${tool_lib} ;;
- *) LIB_PATH=${tool_lib}:${LIB_PATH} ;;
- esac
-fi
-
LIB_SEARCH_DIRS=`echo ${LIB_PATH} | sed -e 's/:/ /g' -e 's/\([^ ][^ ]*\)/SEARCH_DIR(\\"\1\\");/g'`
# We need it for testsuite.
@@ -357,12 +347,33 @@ if test -n "$GENERATE_PIE_SCRIPT"; then
. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xdw
rm -f ${COMBRELOC}
+ LD_FLAG=Zcpie
+ ( echo "/* Script for -pie -z combreloc, -Z: position independent executable, combine & sort relocs, no PLT/GOT padding */"
+ . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
+ . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
+ ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xdcz
+ rm -f ${COMBRELOC}
COMBRELOC=
unset RELRO_NOW
fi
+ LD_FLAG=Zpie
+ DATA_ALIGNMENT=${DATA_ALIGNMENT_sc-${DATA_ALIGNMENT}}
+ (
+ echo "/* Script for ld -pie -Z: link position independent executable, no PLT/GOT padding */"
+ . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
+ . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
+ ) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xdz
unset CREATE_PIE
fi
+LD_FLAG=Z
+DATA_ALIGNMENT=${DATA_ALIGNMENT_}
+RELOCATING=" "
+( echo "/* Script for -Z: traditional binaries with no PLT/GOT padding */"
+ . ${srcdir}/emulparams/${EMULATION_NAME}.sh
+ . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
+) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xz
+
case " $EMULATION_LIBPATH " in
*" ${EMULATION_NAME} "*) COMPILE_IN=true;;
esac
diff --git a/gnu/usr.bin/binutils-2.17/ld/ld.h b/gnu/usr.bin/binutils-2.17/ld/ld.h
index e1aa62cc6cf..bf4e50351a5 100644
--- a/gnu/usr.bin/binutils-2.17/ld/ld.h
+++ b/gnu/usr.bin/binutils-2.17/ld/ld.h
@@ -252,6 +252,10 @@ typedef struct {
bfd_boolean text_read_only;
+ /* Classic ELF executable which has data and bss next to each
+ other with no padding for GOT/PLT. */
+ bfd_boolean data_bss_contig;
+
char *map_filename;
FILE *map_file;
diff --git a/gnu/usr.bin/binutils-2.17/ld/ld.texinfo b/gnu/usr.bin/binutils-2.17/ld/ld.texinfo
index 07bb0c3d93a..6d94f6cb33b 100644
--- a/gnu/usr.bin/binutils-2.17/ld/ld.texinfo
+++ b/gnu/usr.bin/binutils-2.17/ld/ld.texinfo
@@ -1011,6 +1011,11 @@ Create an ELF @code{PT_GNU_RELRO} segment header in the object.
Other keywords are ignored for Solaris compatibility.
+@kindex -Z
+@item -Z
+Produce 'Standard' executables, disables Writable XOR Executable features
+in resulting binaries.
+
@kindex -(
@cindex groups of archives
@item -( @var{archives} -)
diff --git a/gnu/usr.bin/binutils-2.17/ld/ldmain.c b/gnu/usr.bin/binutils-2.17/ld/ldmain.c
index db87a40b6aa..e948d8b4560 100644
--- a/gnu/usr.bin/binutils-2.17/ld/ldmain.c
+++ b/gnu/usr.bin/binutils-2.17/ld/ldmain.c
@@ -323,6 +323,7 @@ main (int argc, char **argv)
force_make_executable = FALSE;
config.magic_demand_paged = TRUE;
config.text_read_only = TRUE;
+ config.data_bss_contig = FALSE;
emulation = get_emulation (argc, argv);
ldemul_choose_mode (emulation);
diff --git a/gnu/usr.bin/binutils-2.17/ld/lexsup.c b/gnu/usr.bin/binutils-2.17/ld/lexsup.c
index c2bef1dd482..77c68667ebb 100644
--- a/gnu/usr.bin/binutils-2.17/ld/lexsup.c
+++ b/gnu/usr.bin/binutils-2.17/ld/lexsup.c
@@ -299,6 +299,9 @@ static const struct ld_option ld_options[] =
{ {NULL, required_argument, NULL, '\0'},
'Y', N_("PATH"), N_("Default search path for Solaris compatibility"),
ONE_DASH },
+ { {"Zmagic", no_argument, NULL, 'Z'},
+ 'Z', NULL, N_("Do not page align got/plt, old style executable"),
+ EXACTLY_TWO_DASHES },
{ {"start-group", no_argument, NULL, '('},
'(', NULL, N_("Start a group"), TWO_DASHES },
{ {"end-group", no_argument, NULL, ')'},
@@ -1280,6 +1283,9 @@ parse_args (unsigned argc, char **argv)
case 'y':
add_ysym (optarg);
break;
+ case 'Z':
+ config.data_bss_contig = TRUE;
+ break;
case OPTION_SPARE_DYNAMIC_TAGS:
link_info.spare_dynamic_tags = strtoul (optarg, NULL, 0);
break;
diff --git a/gnu/usr.bin/binutils-2.17/opcodes/Makefile.am b/gnu/usr.bin/binutils-2.17/opcodes/Makefile.am
index 57bdb4a716a..5b3e8edc713 100644
--- a/gnu/usr.bin/binutils-2.17/opcodes/Makefile.am
+++ b/gnu/usr.bin/binutils-2.17/opcodes/Makefile.am
@@ -582,17 +582,17 @@ dep.sed: dep-in.sed config.status
dep: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < Makefile > tmp-Makefile
cat DEP >> tmp-Makefile
- $(srcdir)/../move-if-change tmp-Makefile Makefile
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile Makefile
dep-in: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.in > tmp-Makefile.in
cat DEP >> tmp-Makefile.in
- $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in
dep-am: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.am > tmp-Makefile.am
cat DEP >> tmp-Makefile.am
- $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am
.PHONY: dep dep-in dep-am
diff --git a/gnu/usr.bin/binutils-2.17/opcodes/Makefile.in b/gnu/usr.bin/binutils-2.17/opcodes/Makefile.in
index 78faab920ae..081433a2330 100644
--- a/gnu/usr.bin/binutils-2.17/opcodes/Makefile.in
+++ b/gnu/usr.bin/binutils-2.17/opcodes/Makefile.in
@@ -1124,17 +1124,17 @@ dep.sed: dep-in.sed config.status
dep: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < Makefile > tmp-Makefile
cat DEP >> tmp-Makefile
- $(srcdir)/../move-if-change tmp-Makefile Makefile
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile Makefile
dep-in: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.in > tmp-Makefile.in
cat DEP >> tmp-Makefile.in
- $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.in $(srcdir)/Makefile.in
dep-am: DEP
sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.am > tmp-Makefile.am
cat DEP >> tmp-Makefile.am
- $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am
+ $(SHELL) $(srcdir)/../move-if-change tmp-Makefile.am $(srcdir)/Makefile.am
.PHONY: dep dep-in dep-am
diff --git a/gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c b/gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c
index f73e883e779..ce8cc2e6894 100644
--- a/gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c
+++ b/gnu/usr.bin/binutils-2.17/opcodes/i386-dis.c
@@ -102,6 +102,7 @@ static void BadOp (void);
static void SEG_Fixup (int, int);
static void VMX_Fixup (int, int);
static void REP_Fixup (int, int);
+static void OP_0f3a (int, int);
struct dis_private {
/* Points to first byte not fetched. */
@@ -314,6 +315,7 @@ fetch_data (struct disassemble_info *info, bfd_byte *addr)
#define VM OP_VMX, q_mode
#define OPSUF OP_3DNowSuffix, 0
#define OPSIMD OP_SIMD_Suffix, 0
+#define OP0F3A OP_0f3a, 0
/* Used handle "rep" prefix for string instructions. */
#define Xbr REP_Fixup, eSI_reg
@@ -1762,9 +1764,10 @@ static const struct dis386 x86_64_table[][2] = {
},
};
-static const struct dis386 three_byte_table[][32] = {
+static const struct dis386 three_byte_table[][256] = {
/* THREE_BYTE_0 */
{
+ /* 00 */
{ "pshufb", MX, EM, XX },
{ "phaddw", MX, EM, XX },
{ "phaddd", MX, EM, XX },
@@ -1781,6 +1784,7 @@ static const struct dis386 three_byte_table[][32] = {
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
+ /* 10 */
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
@@ -1796,10 +1800,249 @@ static const struct dis386 three_byte_table[][32] = {
{ "pabsb", MX, EM, XX },
{ "pabsw", MX, EM, XX },
{ "pabsd", MX, EM, XX },
+ { "(bad)", XX, XX, XX },
+ /* 20 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 30 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 40 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 50 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 60 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 70 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 80 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 90 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* a0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* b0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* c0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* d0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "aesimc", XM, XM, XX },
+ { "aesenc", XM, XM, XX },
+ { "aesdec", XM, XM, XX },
+ { "aesenclast", XM, XM, XX },
+ { "aesdeclast", XM, XM, XX },
+ /* e0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* f0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX }
},
/* THREE_BYTE_1 */
{
+ /* 00 */
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
@@ -1816,6 +2059,245 @@ static const struct dis386 three_byte_table[][32] = {
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
{ "palignr", MX, EM, Ib },
+ /* 10 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 20 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 30 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 40 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "", OP0F3A, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 50 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 60 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 70 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 80 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 90 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* a0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* b0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* c0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* d0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "", OP0F3A, XX, XX },
+ /* e0 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* f0 */
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
@@ -4859,3 +5341,94 @@ REP_Fixup (int bytemode, int sizeflag)
break;
}
}
+
+#define XMM_DST(rex, modrm) \
+ (((((rex) & ~0x40) & 0x4) ? 8 : 0) | (((modrm) & ~0xc0) >> 3))
+#define XMM_SRC(rex, modrm) \
+ (((((rex) & ~0x40) & 0x1) ? 8 : 0) | (((modrm) & ~0xc0) & 7))
+
+static struct {
+ unsigned char opc;
+ char *name;
+} pclmul[] = {
+ { 0x00, "pclmullqlqdq" },
+ { 0x01, "pclmulhqlqdq" },
+ { 0x10, "pclmullqhqdq" },
+ { 0x11, "pclmulhqhqdq" },
+};
+
+static void
+OP_0f3a (bytemode, sizeflag)
+ int bytemode ATTRIBUTE_UNUSED;
+ int sizeflag ATTRIBUTE_UNUSED;
+{
+ const char *mnemonic = NULL;
+ unsigned int i, xmms;
+ unsigned char op, imm;
+
+ FETCH_DATA (the_info, codep + 1);
+ obufp = obuf + strlen (obuf);
+
+ op = *codep;
+ codep++;
+
+ FETCH_DATA (the_info, codep + 1);
+
+ /* save xmm pair */
+ xmms = XMM_DST (rex, *codep) << 8;
+ xmms |= XMM_SRC (rex, *codep);
+ codep++;
+
+ /* save immediate field */
+ FETCH_DATA (the_info, codep + 2);
+ imm = *codep;
+ codep++;
+
+ if (op != 0x44 && op != 0xdf)
+ {
+ BadOp();
+ return;
+ }
+
+ switch (op)
+ {
+ case 0x44:
+ for (i = 0; i < sizeof(pclmul) / sizeof(pclmul[0]); i++)
+ if (pclmul[i].opc == imm)
+ mnemonic = pclmul[i].name;
+
+ if (!mnemonic)
+ {
+ oappend ("pclmulqdq");
+ sprintf (scratchbuf, " $%#x,", imm);
+ oappend (scratchbuf);
+ }
+ else
+ {
+ oappend (mnemonic);
+ oappend (" ");
+ }
+ break;
+ case 0xdf:
+ oappend ("aeskeygenassist ");
+ sprintf (scratchbuf, " $%#x,", imm);
+ oappend (scratchbuf);
+ break;
+ }
+
+ sprintf (scratchbuf, "%%xmm%d,", xmms & 0xff);
+ oappend (scratchbuf);
+ sprintf (scratchbuf, "%%xmm%d", xmms >> 8);
+ oappend (scratchbuf);
+
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ USED_REX(rex);
+}
+
+static void
+BadOp (void)
+{
+ /* Throw away prefixes and 1st. opcode byte. */
+ codep = insn_codep + 1;
+ oappend ("(bad)");
+}
diff --git a/gnu/usr.bin/binutils-2.17/opcodes/mips-opc.c b/gnu/usr.bin/binutils-2.17/opcodes/mips-opc.c
index cd92a9fe217..7bfc5824141 100644
--- a/gnu/usr.bin/binutils-2.17/opcodes/mips-opc.c
+++ b/gnu/usr.bin/binutils-2.17/opcodes/mips-opc.c
@@ -647,8 +647,10 @@ const struct mips_opcode mips_builtin_opcodes[] =
{"flushid", "", 0xbc030000, 0xffffffff, 0, 0, L1 },
{"hibernate","", 0x42000023, 0xffffffff, 0, 0, V1 },
{"ins", "t,r,+A,+B", 0x7c000004, 0xfc00003f, WR_t|RD_s, 0, I33 },
+{"jr", "s", 0, (int) M_JR_S, INSN_MACRO, I1 },
{"jr", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, 0, I1 },
{"jr.hb", "s", 0x00000408, 0xfc1fffff, UBD|RD_s, 0, I33 },
+{"j", "s", 0, (int) M_J_S, INSN_MACRO, I1 },
{"j", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, 0, I1 }, /* jr */
/* SVR4 PIC code requires special handling for j, so it must be a
macro. */
@@ -657,7 +659,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
assembler, but will never match user input (because the line above
will match first). */
{"j", "a", 0x08000000, 0xfc000000, UBD, 0, I1 },
+{"jalr", "s", 0, (int) M_JALR_S, INSN_MACRO, I1 },
{"jalr", "s", 0x0000f809, 0xfc1fffff, UBD|RD_s|WR_d, 0, I1 },
+{"jalr", "d,s", 0, (int) M_JALR_DS, INSN_MACRO, I1 },
{"jalr", "d,s", 0x00000009, 0xfc1f07ff, UBD|RD_s|WR_d, 0, I1 },
{"jalr.hb", "s", 0x0000fc09, 0xfc1fffff, UBD|RD_s|WR_d, 0, I33 },
{"jalr.hb", "d,s", 0x00000409, 0xfc1f07ff, UBD|RD_s|WR_d, 0, I33 },