aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim <kolmax94@gmail.com>2011-04-24 21:14:24 +0400
committerMaxim <kolmax94@gmail.com>2011-04-24 21:14:24 +0400
commitde02a6791bbf36360f5b68dfa7db8b328c4f30d9 (patch)
tree401bed752863df536cecea6dc7ce113f1553911f
parentAdd profiles/ (diff)
downloadgentoo-openbsd-de02a6791bbf36360f5b68dfa7db8b328c4f30d9.tar.gz
gentoo-openbsd-de02a6791bbf36360f5b68dfa7db8b328c4f30d9.tar.bz2
gentoo-openbsd-de02a6791bbf36360f5b68dfa7db8b328c4f30d9.zip
Add sys-devel/binutils
-rw-r--r--sys-devel/binutils/Manifest5
-rw-r--r--sys-devel/binutils/binutils-2.21.ebuild20
-rw-r--r--sys-devel/binutils/files/binutils-2.21-makefiles.patch309
-rw-r--r--sys-devel/binutils/files/binutils-2.21-obsd.patch1241
4 files changed, 1575 insertions, 0 deletions
diff --git a/sys-devel/binutils/Manifest b/sys-devel/binutils/Manifest
new file mode 100644
index 0000000..b784c71
--- /dev/null
+++ b/sys-devel/binutils/Manifest
@@ -0,0 +1,5 @@
+AUX binutils-2.21-makefiles.patch 13779 RMD160 d4c462e03eda0f017bdbd6a9836c6825b8a44408 SHA1 2ddff3d21c0558cd8c32d91468e5232ff6f12dfb SHA256 056a9645687c86bbc3ad19e65d85a00f8498717178983c1e2000d8497d679e12
+AUX binutils-2.21-obsd.patch 40351 RMD160 e80787591e38b910c4a75fcc898c6347eecc30e1 SHA1 244e28202e90c87b4c5cf66665100f6ace72ecb7 SHA256 ccc50e824eabe52bd0407bb2434148c2d37f86f7f00ae68ffbbbd9c13e9bc5f0
+DIST binutils-2.21-patches-1.0.tar.bz2 8577 RMD160 78de2941174c9b9abf97e3bd19bd4c2fc3d7f73e SHA1 1f65e478b1bf20a2e107fefa72d0d2555ed38552 SHA256 5c6bcdd3e3faf8336c83cdbfd50999dc035b87d8101a6dad572718d6bc341c97
+DIST binutils-2.21.tar.bz2 18742991 RMD160 8d2ebab3287a6283267879074b808d20fe9112b0 SHA1 ef93235588eb443e4c4a77f229a8d131bccaecc6 SHA256 60abec5bf448eb930a5a15acb8712612377dc8bcfb13dfd5131228f70561d0c7
+EBUILD binutils-2.21.ebuild 625 RMD160 1c412eeab986c5a640db7676ce48e54a7e953d2a SHA1 54b55ae16f0cd5d739fa192cfa6c5c75a6b808e3 SHA256 cf2bd9234ed58fbeff1bfc7c46e819047e9d576c4ca272275f5746bda02b96a5
diff --git a/sys-devel/binutils/binutils-2.21.ebuild b/sys-devel/binutils/binutils-2.21.ebuild
new file mode 100644
index 0000000..5aa8051
--- /dev/null
+++ b/sys-devel/binutils/binutils-2.21.ebuild
@@ -0,0 +1,20 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils/binutils-2.21.ebuild,v 1.2 2011/03/11 06:52:40 vapier Exp $
+
+PATCHVER="1.0"
+ELF2FLT_VER=""
+inherit toolchain-binutils autotools eutils
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd"
+
+src_unpack(){
+ toolchain-binutils_src_unpack
+ epatch "${FILESDIR}"/${P}-obsd.patch
+# TODO: Workaround autoconf version crap
+ for dir in gprof gas binutils ld bfd; do
+ cd "${S}"/$dir
+ eautoreconf
+ cd "${S}"
+ done
+}
diff --git a/sys-devel/binutils/files/binutils-2.21-makefiles.patch b/sys-devel/binutils/files/binutils-2.21-makefiles.patch
new file mode 100644
index 0000000..6ae0a24
--- /dev/null
+++ b/sys-devel/binutils/files/binutils-2.21-makefiles.patch
@@ -0,0 +1,309 @@
+diff --git a/bfd/Makefile.in b/bfd/Makefile.in
+index b591ca6..957b090 100644
+--- a/bfd/Makefile.in
++++ b/bfd/Makefile.in
+@@ -1930,7 +1930,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/binutils/Makefile.in b/binutils/Makefile.in
+index fddc931..0414ee3 100644
+--- a/binutils/Makefile.in
++++ b/binutils/Makefile.in
+@@ -36,11 +36,11 @@ build_triplet = @build@
+ host_triplet = @host@
+ target_triplet = @target@
+ bin_PROGRAMS = $(am__EXEEXT_6) $(am__EXEEXT_7) $(am__EXEEXT_8) \
+- $(am__EXEEXT_9) $(am__EXEEXT_10) $(am__EXEEXT_11) \
+- @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ \
+- @BUILD_WINDMC@ $(am__EXEEXT_12) $(am__EXEEXT_13) \
+- $(am__EXEEXT_14) @BUILD_DLLWRAP@ @BUILD_INSTALL_MISC@
+-noinst_PROGRAMS = $(am__EXEEXT_18) @BUILD_MISC@
++ $(am__EXEEXT_9) $(am__EXEEXT_10) @BUILD_NLMCONV@ \
++ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ @BUILD_WINDMC@ \
++ $(am__EXEEXT_11) $(am__EXEEXT_12) $(am__EXEEXT_13) \
++ @BUILD_DLLWRAP@ @BUILD_INSTALL_MISC@ $(am__empty)
++noinst_PROGRAMS = $(am__EXEEXT_14) @BUILD_MISC@
+ EXTRA_PROGRAMS = $(am__EXEEXT_1) srconv$(EXEEXT) sysdump$(EXEEXT) \
+ coffdump$(EXEEXT) $(am__EXEEXT_2) $(am__EXEEXT_3) \
+ $(am__EXEEXT_4) $(am__EXEEXT_5)
+@@ -85,20 +85,16 @@ am__EXEEXT_2 = dlltool$(EXEEXT)
+ am__EXEEXT_3 = windres$(EXEEXT)
+ am__EXEEXT_4 = windmc$(EXEEXT)
+ am__EXEEXT_5 = dllwrap$(EXEEXT)
+-am__EXEEXT_6 = size$(EXEEXT)
+-am__EXEEXT_7 = objdump$(EXEEXT)
+-am__EXEEXT_8 = ar$(EXEEXT)
+-am__EXEEXT_9 = strings$(EXEEXT)
+-am__EXEEXT_10 = ranlib$(EXEEXT)
+-am__EXEEXT_11 = objcopy$(EXEEXT)
+-am__EXEEXT_12 = addr2line$(EXEEXT)
+-am__EXEEXT_13 = readelf$(EXEEXT)
+-am__EXEEXT_14 = elfedit$(EXEEXT)
++am__EXEEXT_6 = objdump$(EXEEXT)
++am__EXEEXT_7 = ar$(EXEEXT)
++am__EXEEXT_8 = strings$(EXEEXT)
++am__EXEEXT_9 = ranlib$(EXEEXT)
++am__EXEEXT_10 = objcopy$(EXEEXT)
++am__EXEEXT_11 = addr2line$(EXEEXT)
++am__EXEEXT_12 = readelf$(EXEEXT)
++am__EXEEXT_13 = elfedit$(EXEEXT)
+ am__installdirs = "$(DESTDIR)$(bindir)"
+-am__EXEEXT_15 = nm-new$(EXEEXT)
+-am__EXEEXT_16 = strip-new$(EXEEXT)
+-am__EXEEXT_17 = cxxfilt$(EXEEXT)
+-am__EXEEXT_18 = $(am__EXEEXT_15) $(am__EXEEXT_16) $(am__EXEEXT_17)
++am__EXEEXT_14 =
+ PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+ am__objects_1 = bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT)
+ am_addr2line_OBJECTS = addr2line.$(OBJEXT) $(am__objects_1)
+@@ -113,9 +109,6 @@ am_coffdump_OBJECTS = coffdump.$(OBJEXT) coffgrok.$(OBJEXT) \
+ $(am__objects_1)
+ coffdump_OBJECTS = $(am_coffdump_OBJECTS)
+ coffdump_LDADD = $(LDADD)
+-am_cxxfilt_OBJECTS = cxxfilt.$(OBJEXT) $(am__objects_1)
+-cxxfilt_OBJECTS = $(am_cxxfilt_OBJECTS)
+-cxxfilt_LDADD = $(LDADD)
+ am_dlltool_OBJECTS = dlltool.$(OBJEXT) defparse.$(OBJEXT) \
+ deflex.$(OBJEXT) $(am__objects_1)
+ dlltool_OBJECTS = $(am_dlltool_OBJECTS)
+@@ -127,9 +120,6 @@ am_nlmconv_OBJECTS = nlmconv.$(OBJEXT) nlmheader.$(OBJEXT) \
+ $(am__objects_1)
+ nlmconv_OBJECTS = $(am_nlmconv_OBJECTS)
+ nlmconv_LDADD = $(LDADD)
+-am_nm_new_OBJECTS = nm.$(OBJEXT) $(am__objects_1)
+-nm_new_OBJECTS = $(am_nm_new_OBJECTS)
+-nm_new_LDADD = $(LDADD)
+ am__objects_2 = rddbg.$(OBJEXT) debug.$(OBJEXT) stabs.$(OBJEXT) \
+ ieee.$(OBJEXT) rdcoff.$(OBJEXT)
+ am__objects_3 = $(am__objects_2) wrstabs.$(OBJEXT)
+@@ -147,9 +137,6 @@ ranlib_OBJECTS = $(am_ranlib_OBJECTS)
+ am_readelf_OBJECTS = readelf.$(OBJEXT) version.$(OBJEXT) \
+ unwind-ia64.$(OBJEXT) dwarf.$(OBJEXT)
+ readelf_OBJECTS = $(am_readelf_OBJECTS)
+-am_size_OBJECTS = size.$(OBJEXT) $(am__objects_1)
+-size_OBJECTS = $(am_size_OBJECTS)
+-size_LDADD = $(LDADD)
+ am_srconv_OBJECTS = srconv.$(OBJEXT) coffgrok.$(OBJEXT) \
+ $(am__objects_1)
+ srconv_OBJECTS = $(am_srconv_OBJECTS)
+@@ -157,10 +144,6 @@ srconv_LDADD = $(LDADD)
+ am_strings_OBJECTS = strings.$(OBJEXT) $(am__objects_1)
+ strings_OBJECTS = $(am_strings_OBJECTS)
+ strings_LDADD = $(LDADD)
+-am_strip_new_OBJECTS = objcopy.$(OBJEXT) is-strip.$(OBJEXT) \
+- rename.$(OBJEXT) $(am__objects_3) $(am__objects_1)
+-strip_new_OBJECTS = $(am_strip_new_OBJECTS)
+-strip_new_LDADD = $(LDADD)
+ am_sysdump_OBJECTS = sysdump.$(OBJEXT) $(am__objects_1)
+ sysdump_OBJECTS = $(am_sysdump_OBJECTS)
+ sysdump_LDADD = $(LDADD)
+@@ -195,12 +178,11 @@ YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
+ LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS)
+ SOURCES = $(addr2line_SOURCES) $(ar_SOURCES) $(EXTRA_ar_SOURCES) \
+- $(coffdump_SOURCES) $(cxxfilt_SOURCES) $(dlltool_SOURCES) \
+- $(dllwrap_SOURCES) $(elfedit_SOURCES) $(nlmconv_SOURCES) \
+- $(nm_new_SOURCES) $(objcopy_SOURCES) $(objdump_SOURCES) \
+- $(ranlib_SOURCES) $(readelf_SOURCES) $(size_SOURCES) \
+- $(srconv_SOURCES) $(strings_SOURCES) $(strip_new_SOURCES) \
+- $(sysdump_SOURCES) $(windmc_SOURCES) $(windres_SOURCES)
++ $(coffdump_SOURCES) $(dlltool_SOURCES) $(dllwrap_SOURCES) \
++ $(elfedit_SOURCES) $(nlmconv_SOURCES) $(objcopy_SOURCES) \
++ $(objdump_SOURCES) $(ranlib_SOURCES) $(readelf_SOURCES) \
++ $(srconv_SOURCES) $(strings_SOURCES) $(sysdump_SOURCES) \
++ $(windmc_SOURCES) $(windres_SOURCES)
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+@@ -403,7 +385,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
+ NLMCONV_PROG = nlmconv
+ DLLTOOL_PROG = dlltool
+@@ -411,10 +393,12 @@ WINDRES_PROG = windres
+ WINDMC_PROG = windmc
+ DLLWRAP_PROG = dllwrap
+ SRCONV_PROG = srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT)
+-RENAMED_PROGS = $(NM_PROG) $(STRIP_PROG) $(DEMANGLER_PROG)
++
++#RENAMED_PROGS = $(NM_PROG) $(STRIP_PROG) $(DEMANGLER_PROG)
++RENAMED_PROGS = $(STRIP_PROGS)
+
+ # Stuff that goes in tooldir/ if appropriate.
+-TOOL_PROGS = nm-new strip-new ar ranlib dlltool objdump objcopy
++TOOL_PROGS = strip-new ar ranlib dlltool objdump objcopy
+ BASEDIR = $(srcdir)/..
+ BFDDIR = $(BASEDIR)/bfd
+ INCDIR = $(BASEDIR)/include
+@@ -513,7 +497,8 @@ strip_new_SOURCES = objcopy.c is-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS)
+ nm_new_SOURCES = nm.c $(BULIBS)
+ objdump_SOURCES = objdump.c dwarf.c prdbg.c $(DEBUG_SRCS) $(BULIBS)
+ objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
+-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)
+
+@@ -676,9 +661,6 @@ ar$(EXEEXT): $(ar_OBJECTS) $(ar_DEPENDENCIES)
+ coffdump$(EXEEXT): $(coffdump_OBJECTS) $(coffdump_DEPENDENCIES)
+ @rm -f coffdump$(EXEEXT)
+ $(LINK) $(coffdump_OBJECTS) $(coffdump_LDADD) $(LIBS)
+-cxxfilt$(EXEEXT): $(cxxfilt_OBJECTS) $(cxxfilt_DEPENDENCIES)
+- @rm -f cxxfilt$(EXEEXT)
+- $(LINK) $(cxxfilt_OBJECTS) $(cxxfilt_LDADD) $(LIBS)
+ defparse.h: defparse.c
+ @if test ! -f $@; then \
+ rm -f defparse.c; \
+@@ -701,9 +683,6 @@ nlmheader.h: nlmheader.c
+ nlmconv$(EXEEXT): $(nlmconv_OBJECTS) $(nlmconv_DEPENDENCIES)
+ @rm -f nlmconv$(EXEEXT)
+ $(LINK) $(nlmconv_OBJECTS) $(nlmconv_LDADD) $(LIBS)
+-nm-new$(EXEEXT): $(nm_new_OBJECTS) $(nm_new_DEPENDENCIES)
+- @rm -f nm-new$(EXEEXT)
+- $(LINK) $(nm_new_OBJECTS) $(nm_new_LDADD) $(LIBS)
+ objcopy$(EXEEXT): $(objcopy_OBJECTS) $(objcopy_DEPENDENCIES)
+ @rm -f objcopy$(EXEEXT)
+ $(LINK) $(objcopy_OBJECTS) $(objcopy_LDADD) $(LIBS)
+@@ -716,18 +695,12 @@ ranlib$(EXEEXT): $(ranlib_OBJECTS) $(ranlib_DEPENDENCIES)
+ readelf$(EXEEXT): $(readelf_OBJECTS) $(readelf_DEPENDENCIES)
+ @rm -f readelf$(EXEEXT)
+ $(LINK) $(readelf_OBJECTS) $(readelf_LDADD) $(LIBS)
+-size$(EXEEXT): $(size_OBJECTS) $(size_DEPENDENCIES)
+- @rm -f size$(EXEEXT)
+- $(LINK) $(size_OBJECTS) $(size_LDADD) $(LIBS)
+ srconv$(EXEEXT): $(srconv_OBJECTS) $(srconv_DEPENDENCIES)
+ @rm -f srconv$(EXEEXT)
+ $(LINK) $(srconv_OBJECTS) $(srconv_LDADD) $(LIBS)
+ strings$(EXEEXT): $(strings_OBJECTS) $(strings_DEPENDENCIES)
+ @rm -f strings$(EXEEXT)
+ $(LINK) $(strings_OBJECTS) $(strings_LDADD) $(LIBS)
+-strip-new$(EXEEXT): $(strip_new_OBJECTS) $(strip_new_DEPENDENCIES)
+- @rm -f strip-new$(EXEEXT)
+- $(LINK) $(strip_new_OBJECTS) $(strip_new_LDADD) $(LIBS)
+ sysdump$(EXEEXT): $(sysdump_OBJECTS) $(sysdump_DEPENDENCIES)
+ @rm -f sysdump$(EXEEXT)
+ $(LINK) $(sysdump_OBJECTS) $(sysdump_LDADD) $(LIBS)
+diff --git a/gas/Makefile.in b/gas/Makefile.in
+index 1aa9bb4..f73f7d2 100644
+--- a/gas/Makefile.in
++++ b/gas/Makefile.in
+@@ -549,6 +549,7 @@ TARG_ENV_HFILES = \
+ config/te-macos.h \
+ config/te-nbsd.h \
+ config/te-nbsd532.h \
++ config/te-obsd.h \
+ config/te-netware.h \
+ config/te-pc532mach.h \
+ config/te-pe.h \
+@@ -612,6 +613,7 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I../bfd -I$(srcdir)/config \
+ # How to link with both our special library facilities
+ # and the system's installed libraries.
+ GASLIBS = @OPCODES_LIB@ ../bfd/libbfd.la ../libiberty/libiberty.a
++GASLIBSDEPS = @OPCODES_LIB@ ../bfd/libbfd.la
+
+ # Files to be copied away after each stage in building.
+ STAGESTUFF = *.@OBJEXT@ $(noinst_PROGRAMS)
+@@ -620,7 +622,7 @@ as_new_LDADD = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
+ $(extra_objects) $(GASLIBS) $(LIBINTL) $(LIBM)
+
+ as_new_DEPENDENCIES = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
+- $(extra_objects) $(GASLIBS) $(LIBINTL_DEP)
++ $(extra_objects) $(GASLIBSDEPS) $(LIBINTL_DEP)
+
+
+ # The m68k operand parser.
+diff --git a/ld/Makefile.in b/ld/Makefile.in
+index dac81b3..1230342 100644
+--- a/ld/Makefile.in
++++ b/ld/Makefile.in
+@@ -537,6 +537,7 @@ ALL_EMULATION_SOURCES = \
+ eelf_i386_be.c \
+ eelf_i386_chaos.c \
+ eelf_i386_fbsd.c \
++ eelf_i386_obsd.c \
+ eelf_i386_ldso.c \
+ eelf_i386_sol2.c \
+ eelf_i386_vxworks.c \
+@@ -581,6 +582,7 @@ ALL_EMULATION_SOURCES = \
+ ei386nbsd.c \
+ ei386nto.c \
+ ei386nw.c \
++ ei386obsd.c \
+ ei386pe.c \
+ ei386pe_posix.c \
+ ei386pep.c \
+@@ -742,6 +744,7 @@ ALL_64_EMULATION_SOURCES = \
+ eshlelf64_nbsd.c \
+ eelf_x86_64.c \
+ eelf_x86_64_fbsd.c \
++ eelf_x86_64_obsd.c \
+ eelf_x86_64_sol2.c \
+ eelf_l1om.c \
+ eelf_l1om_fbsd.c \
+@@ -1131,6 +1134,7 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_chaos.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_fbsd.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_ldso.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_obsd.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_sol2.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_vxworks.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_l1om.Po@am__quote@
+@@ -1138,6 +1142,7 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_s390.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_fbsd.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_obsd.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_sol2.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/egld960.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/egld960coff.Po@am__quote@
+@@ -1180,6 +1185,7 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386nbsd.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386nto.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386nw.Po@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386obsd.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386pe.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386pe_posix.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ei386pep.Po@am__quote@
+@@ -2606,6 +2612,10 @@ eelf_l1om_fbsd.c: $(srcdir)/emulparams/elf_l1om_fbsd.sh \
+ $(srcdir)/emulparams/elf_l1om.sh \
+ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_l1om_fbsd "$(tdir_elf_l1om_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 \
+ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_i386_be "$(tdir_elf_i386_be)"
+@@ -2616,6 +2626,10 @@ eelf_i386_fbsd.c: $(srcdir)/emulparams/elf_i386_fbsd.sh \
+ $(srcdir)/emulparams/elf_i386.sh \
+ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_i386_fbsd "$(tdir_elf_i386_fbsd)"
++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_ldso.c: $(srcdir)/emulparams/elf_i386_ldso.sh \
+ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_i386_ldso "$(tdir_elf_i386_ldso)"
+@@ -2765,6 +2779,9 @@ ei386nto.c: $(srcdir)/emulparams/i386nto.sh \
+ ei386nw.c: $(srcdir)/emulparams/i386nw.sh \
+ $(ELF_DEPS) $(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)"
diff --git a/sys-devel/binutils/files/binutils-2.21-obsd.patch b/sys-devel/binutils/files/binutils-2.21-obsd.patch
new file mode 100644
index 0000000..59e9137
--- /dev/null
+++ b/sys-devel/binutils/files/binutils-2.21-obsd.patch
@@ -0,0 +1,1241 @@
+From a2105dfa9d60aa65e72b39d676031f5ebfe07ea3 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 01/27] Port bfd/config.bfd patch
+---
+
+ bfd/config.bfd | 26 +++++++++++++++++++++-----
+ 1 files changed, 21 insertions(+), 5 deletions(-)
+
+
+diff --git a/bfd/config.bfd b/bfd/config.bfd
+index 9b719d8..2916bf0 100644
+--- a/bfd/config.bfd
++++ b/bfd/config.bfd
+@@ -271,7 +271,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
+ ;;
+@@ -281,7 +281,7 @@ case "${targ}" in
+ ;;
+ arm-*-elf | arm-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \
+ arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \
+- arm*-*-eabi* )
++ arm*-*-eabi* | arm-*-openbsd* )
+ targ_defvec=bfd_elf32_littlearm_vec
+ targ_selvecs=bfd_elf32_bigarm_vec
+ ;;
+@@ -443,6 +443,10 @@ case "${targ}" in
+ ;;
+
+ #ifdef BFD64
++ hppa64*-*-openbsd*)
++ targ_defvec=bfd_elf64_hppa_vec
++ targ_selfvecs=bfd_elf64_hppa_linux_vec
++ ;;
+ hppa*64*-*-linux-*)
+ targ_defvec=bfd_elf64_hppa_linux_vec
+ targ_selvecs=bfd_elf64_hppa_vec
+@@ -530,6 +534,10 @@ case "${targ}" in
+ targ_defvec=go32coff_vec
+ targ_selvecs="go32stubbedcoff_vec i386aout_vec"
+ ;;
++ hppa64*-*-openbsd*)
++ targ_defvec=bfd_elf64_hppa_vec
++ targ_selfvecs=bfd_elf64_hppa_linux_vec
++ ;;
+ i[3-7]86-*-sysv* | i[3-7]86-*-isc* | i[3-7]86-*-sco* | i[3-7]86-*-coff | \
+ i[3-7]86-*-aix*)
+ targ_defvec=i386coff_vec
+@@ -622,11 +630,16 @@ case "${targ}" in
+ targ_selvecs="bfd_elf32_i386_freebsd_vec i386coff_vec i386pei_vec x86_64pei_vec bfd_elf32_i386_vec bfd_elf64_x86_64_vec bfd_elf64_l1om_vec bfd_elf64_l1om_freebsd_vec"
+ want64=true
+ ;;
+- 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 i386pei_vec x86_64pei_vec bfd_elf64_l1om_vec"
+ want64=true
+ ;;
++ x86_64-*-openbsd*)
++ targ_defvec=bfd_elf64_x86_64_vec
++ targ_selfvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec"
++ want64=true
++ ;;
+ x86_64-*-linux-*)
+ targ_defvec=bfd_elf64_x86_64_vec
+ targ_selvecs="bfd_elf32_i386_vec i386linux_vec i386pei_vec x86_64pei_vec bfd_elf64_l1om_vec"
+@@ -1043,7 +1056,7 @@ case "${targ}" in
+ targ_defvec=pc532machaout_vec
+ targ_underscore=yes
+ ;;
+- ns32k-*-netbsd* | ns32k-*-lites* | ns32k-*-openbsd*)
++ ns32k-*-netbsd* | ns32k-*-lites*)
+ targ_defvec=pc532netbsd_vec
+ targ_underscore=yes
+ ;;
+@@ -1300,7 +1313,10 @@ case "${targ}" in
+ targ_selvecs="shlcoff_vec shlcoff_small_vec"
+ targ_underscore=yes
+ ;;
+-
++ sh*-*-openbsd*)
++ targ_defvec=bfd_elf32_shlobsd_vec
++ targ_selvecs="bfd_elf32_shobsd_vec"
++ ;;
+ #ifdef BFD64
+ shl*-*-elf* | sh[1234]l*-*-elf* | sh3el*-*-elf* | shl*-*-kaos*)
+ targ_defvec=bfd_elf32_shl_vec
+From c5b873b76f42263fc8cdadfa4e75ed2f15ef2c28 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 01/26] Port bfd/configure.in patch
+---
+
+ bfd/configure.in | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+
+diff --git a/bfd/configure.in b/bfd/configure.in
+index fce1dd7..e57d832 100644
+--- a/bfd/configure.in
++++ b/bfd/configure.in
+@@ -779,8 +779,10 @@ do
+ bfd_elf32_shl_symbian_vec) tb="$tb elf32-sh-symbian.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
+ bfd_elf32_shlin_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shlnbsd_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
++ bfd_elf32_shlobsd_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shlvxworks_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
+ bfd_elf32_shnbsd_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
++ bfd_elf32_shobsd_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shvxworks_vec) tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
+ bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
+ bfd_elf32_sparc_sol2_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
+From bf789c2ba2a436c7e8dc0a8ff4e34bc28af15e2b Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 09/26] Port bfd/dlltool.c and bfd/dllwrap.c patch
+---
+
+ binutils/dlltool.c | 4 ++++
+ binutils/dllwrap.c | 22 ++++++++++------------
+ 2 files changed, 14 insertions(+), 12 deletions(-)
+
+
+diff --git a/binutils/dlltool.c b/binutils/dlltool.c
+index 8c72647..1d266ed 100644
+--- a/binutils/dlltool.c
++++ b/binutils/dlltool.c
+@@ -1297,7 +1297,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/binutils/dllwrap.c b/binutils/dllwrap.c
+index 4e48f3e..f121d51 100644
+--- a/binutils/dllwrap.c
++++ b/binutils/dllwrap.c
+@@ -358,7 +358,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;
+
+@@ -823,13 +827,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;
+- free (fileprefix);
++ def_file_name = make_temp_file (".def");
++ if (dontdeltemps)
++ def_file_name = mybasename (def_file_name);
+ delete_def_file = 1;
+ warn (_("no export definition file provided.\n\
+ Creating one, but that may not be what you want"));
+@@ -1036,12 +1036,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);
+ }
+
+ {
+From 9ec7febe77cbd6b0420d976de07b96eadd9345d1 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 02/26] Port bfd/elf32-sh.c patch
+---
+
+ bfd/elf32-sh.c | 18 ++++++++++++++++++
+ 1 files changed, 18 insertions(+), 0 deletions(-)
+
+
+diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c
+index e15f51c..23c9457 100644
+--- a/bfd/elf32-sh.c
++++ b/bfd/elf32-sh.c
+@@ -7629,6 +7629,24 @@ sh_elf_encode_eh_address (bfd *abfd,
+
+ #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"
++
+ /* NetBSD support. */
+ #undef TARGET_BIG_SYM
+ #define TARGET_BIG_SYM bfd_elf32_shnbsd_vec
+From 3cc9fdc96ec097a5dfab1224ca054cf7fd551257 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 03/26] Port bfd/elf.c patch
+---
+
+ bfd/elf.c | 9 ++++++---
+ 1 files changed, 6 insertions(+), 3 deletions(-)
+
+
+diff --git a/bfd/elf.c b/bfd/elf.c
+index 4f326a7..d7afa6c 100644
+--- a/bfd/elf.c
++++ b/bfd/elf.c
+@@ -3489,9 +3489,12 @@ get_program_header_size (bfd *abfd, struct bfd_link_info *info)
+ asection *s;
+ const struct elf_backend_data *bed;
+
+- /* 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)
+From 0b42b2ac300a254c01e270d44817de9c08ee6552 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 05/26] Port bfd/elfxx-mips.c patch
+---
+
+ bfd/elfxx-mips.c | 9 +++++++--
+ 1 files changed, 7 insertions(+), 2 deletions(-)
+
+
+diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
+index 4718dd4..0b3c591 100644
+--- a/bfd/elfxx-mips.c
++++ b/bfd/elfxx-mips.c
+@@ -10374,11 +10374,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
++ if (SGI_COMPAT (output_bfd))
++ {
++ s = mips_elf_rel_dyn_section (dynobj, 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;
+ /* Adjust the section size too. Tools like the prelinker
+ can reasonably expect the values to the same. */
+ elf_section_data (s->output_section)->this_hdr.sh_size
+From 95b0858781c6c371f3d53a4b0303c3a6dd45efe0 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 06/26] Port bfd/m68kopenbsd.c patch
+---
+
+ bfd/m68kopenbsd.c | 33 +++++++++++++++++++++++++++++++++
+ 1 files changed, 33 insertions(+), 0 deletions(-)
+ create mode 100644 bfd/m68kopenbsd.c
+
+
+diff --git a/bfd/m68kopenbsd.c b/bfd/m68kopenbsd.c
+new file mode 100644
+index 0000000..459d3b2
+--- /dev/null
++++ b/bfd/m68kopenbsd.c
+@@ -0,0 +1,33 @@
++/* BFD back-end for OpenBSD/m88k a.out binaries.
++ Copyright 2004 Free Software Foundation, Inc.
++
++This file is part of BFD, the Binary File Descriptor library.
++
++This program is free software; you can redistribute it and/or modify
++it under the terms of the GNU General Public License as published by
++the Free Software Foundation; either version 2 of the License, or
++(at your option) any later version.
++
++This program is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++GNU General Public License for more details.
++
++You should have received a copy of the GNU General Public License
++along with this program; if not, write to the Free Software
++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
++
++#define TARGET_IS_BIG_ENDIAN_P
++
++#define TARGET_PAGE_SIZE 4096
++
++#define DEFAULT_ARCH bfd_arch_m88k
++#define DEFAULT_MID M_88K_OPENBSD
++
++/* Do not "beautify" the CONCAT* macro args. Traditional C will not
++ remove whitespace added here, and thus will fail to concatenate
++ the tokens. */
++#define MY(OP) CONCAT2 (m88kopenbsd_,OP)
++#define TARGETNAME "a.out-m88k-openbsd"
++
++#include "netbsd.h"
+From 08d9089d8293e875a0f292a5c98d50a862c7d335 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 07/26] Port bfd/Makefile.am patch
+---
+
+ bfd/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+
+diff --git a/bfd/Makefile.am b/bfd/Makefile.am
+index bf5dea4..39fcd8a 100644
+--- a/bfd/Makefile.am
++++ b/bfd/Makefile.am
+@@ -884,7 +884,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
+
+From 4601313fe3212de5027223467cff767eefd45073 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 08/26] Port bfd/targets.c patch
+---
+
+ bfd/targets.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+
+diff --git a/bfd/targets.c b/bfd/targets.c
+index 3e99754..8ee779b 100644
+--- a/bfd/targets.c
++++ b/bfd/targets.c
+@@ -672,8 +672,10 @@ 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_shlvxworks_vec;
+ extern const bfd_target bfd_elf32_shnbsd_vec;
++extern const bfd_target bfd_elf32_shobsd_vec;
+ extern const bfd_target bfd_elf32_shvxworks_vec;
+ extern const bfd_target bfd_elf32_sparc_vec;
+ extern const bfd_target bfd_elf32_sparc_sol2_vec;
+@@ -1015,8 +1017,10 @@ 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_shlvxworks_vec,
+ &bfd_elf32_shnbsd_vec,
++ &bfd_elf32_shobsd_vec,
+ &bfd_elf32_shvxworks_vec,
+ #ifdef BFD64
+ &bfd_elf32_sh64_vec,
+From 049390e058a46a6b4052ec37dc3a9b927ef39382 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 10/26] Port bfd/dlltool.c and binutils/Makefile.am patch
+---
+
+ binutils/Makefile.am | 11 ++++++-----
+ 1 files changed, 6 insertions(+), 5 deletions(-)
+
+
+diff --git a/binutils/Makefile.am b/binutils/Makefile.am
+index 0978538..d3c7ec6 100644
+--- a/binutils/Makefile.am
++++ b/binutils/Makefile.am
+@@ -48,7 +48,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
+
+@@ -60,17 +60,18 @@ DLLWRAP_PROG=dllwrap
+
+ SRCONV_PROG=srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT)
+
+-bin_PROGRAMS = $(SIZE_PROG) $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(RANLIB_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ @BUILD_WINDMC@ $(ADDR2LINE_PROG) $(READELF_PROG) $(ELFEDIT_PROG) @BUILD_DLLWRAP@ @BUILD_INSTALL_MISC@
++bin_PROGRAMS = $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(RANLIB_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ @BUILD_WINDMC@ $(ADDR2LINE_PROG) $(READELF_PROG) $(ELFEDIT_PROG) @BUILD_DLLWRAP@ @BUILD_INSTALL_MISC@
+
+ ## We need a special rule to install the programs which are built with
+ ## -new, and to rename cxxfilt to c++filt.
+-RENAMED_PROGS = $(NM_PROG) $(STRIP_PROG) $(DEMANGLER_PROG)
++#RENAMED_PROGS = $(NM_PROG) $(STRIP_PROG) $(DEMANGLER_PROG)
++RENAMED_PROGS = $(STRIP_PROGS)
+ noinst_PROGRAMS = $(RENAMED_PROGS) @BUILD_MISC@
+
+ EXTRA_PROGRAMS = $(NLMCONV_PROG) srconv sysdump coffdump $(DLLTOOL_PROG) $(WINDRES_PROG) $(WINDMC_PROG) $(DLLWRAP_PROG)
+
+ # Stuff that goes in tooldir/ if appropriate.
+-TOOL_PROGS = nm-new strip-new ar ranlib dlltool objdump objcopy
++TOOL_PROGS = strip-new ar ranlib dlltool objdump objcopy
+
+ BASEDIR = $(srcdir)/..
+ BFDDIR = $(BASEDIR)/bfd
+@@ -217,7 +218,7 @@ endif
+ $(COMPILE) -c $(OBJDUMP_DEFS) $(srcdir)/objdump.c
+ endif
+
+-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)
+From 70447029f77c30e293997db95f6cc622d4182e45 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 11/26] Port bfd/dlltool.c and binutils/rdbg.c patch
+---
+
+ binutils/rddbg.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+
+diff --git a/binutils/rddbg.c b/binutils/rddbg.c
+index 27abd66..c91ead7 100644
+--- a/binutils/rddbg.c
++++ b/binutils/rddbg.c
+@@ -199,7 +199,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;
+From 5f87ad14c028aad0539f20f42bf2264b7c84a6b4 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 12/26] Port bfd/dlltool.c and binutils/stabs.c patch
+---
+
+ binutils/resrc.c | 11 +-
+ binutils/stabs.c | 350 ------------------------------------------------------
+ 2 files changed, 8 insertions(+), 353 deletions(-)
+
+
+diff --git a/binutils/resrc.c b/binutils/resrc.c
+index a72a23f..ff99c65 100644
+--- a/binutils/resrc.c
++++ b/binutils/resrc.c
+@@ -207,7 +207,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;
+@@ -318,12 +322,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/binutils/stabs.c b/binutils/stabs.c
+index f8fb48c..293dbfc 100644
+--- a/binutils/stabs.c
++++ b/binutils/stabs.c
+@@ -199,13 +199,13 @@ static debug_type stab_find_tagged_type
+ (void *, struct stab_handle *, const char *, int, enum debug_type_kind);
+ static debug_type *stab_demangle_argtypes
+ (void *, struct stab_handle *, const char *, bfd_boolean *, unsigned int);
+-static debug_type *stab_demangle_v3_argtypes
++/*static debug_type *stab_demangle_v3_argtypes
+ (void *, struct stab_handle *, const char *, bfd_boolean *);
+ static debug_type *stab_demangle_v3_arglist
+ (void *, struct stab_handle *, struct demangle_component *, bfd_boolean *);
+ static debug_type stab_demangle_v3_arg
+ (void *, struct stab_handle *, struct demangle_component *, debug_type,
+- bfd_boolean *);
++ bfd_boolean *);*/
+
+ /* Save a string in memory. */
+
+@@ -2829,7 +2829,6 @@ parse_stab_argtypes (void *dhandle, struct stab_handle *info,
+ bfd_boolean is_full_physname_constructor;
+ bfd_boolean is_constructor;
+ bfd_boolean is_destructor;
+- bfd_boolean is_v3;
+ debug_type *args;
+ bfd_boolean varargs;
+ unsigned int physname_len = 0;
+@@ -2849,9 +2848,8 @@ parse_stab_argtypes (void *dhandle, struct stab_handle *info,
+ && (argtypes[1] == '$' || argtypes[1] == '.')
+ && argtypes[2] == '_')
+ || CONST_STRNEQ (argtypes, "__dt"));
+- is_v3 = argtypes[0] == '_' && argtypes[1] == 'Z';
+
+- if (is_destructor || is_full_physname_constructor || is_v3)
++ if (is_destructor || is_full_physname_constructor)
+ *pphysname = argtypes;
+ else
+ {
+@@ -3714,10 +3712,6 @@ stab_demangle_argtypes (void *dhandle, struct stab_handle *info,
+ {
+ struct stab_demangle_info minfo;
+
+- /* Check for the g++ V3 ABI. */
+- if (physname[0] == '_' && physname[1] == 'Z')
+- return stab_demangle_v3_argtypes (dhandle, info, physname, pvarargs);
+-
+ minfo.dhandle = dhandle;
+ minfo.info = info;
+ minfo.args = NULL;
+@@ -5060,341 +5054,3 @@ stab_demangle_remember_type (struct stab_demangle_info *minfo,
+
+ return TRUE;
+ }
+-
+-/* Demangle names encoded using the g++ V3 ABI. The newer versions of
+- g++ which use this ABI do not encode ordinary method argument types
+- in a mangled name; they simply output the argument types. However,
+- for a static method, g++ simply outputs the return type and the
+- physical name. So in that case we need to demangle the name here.
+- Here PHYSNAME is the physical name of the function, and we set the
+- variable pointed at by PVARARGS to indicate whether this function
+- is varargs. This returns NULL, or a NULL terminated array of
+- argument types. */
+-
+-static debug_type *
+-stab_demangle_v3_argtypes (void *dhandle, struct stab_handle *info,
+- const char *physname, bfd_boolean *pvarargs)
+-{
+- struct demangle_component *dc;
+- void *mem;
+- debug_type *pargs;
+-
+- dc = cplus_demangle_v3_components (physname, DMGL_PARAMS | DMGL_ANSI, &mem);
+- if (dc == NULL)
+- {
+- stab_bad_demangle (physname);
+- return NULL;
+- }
+-
+- /* We expect to see TYPED_NAME, and the right subtree describes the
+- function type. */
+- if (dc->type != DEMANGLE_COMPONENT_TYPED_NAME
+- || dc->u.s_binary.right->type != DEMANGLE_COMPONENT_FUNCTION_TYPE)
+- {
+- fprintf (stderr, _("Demangled name is not a function\n"));
+- free (mem);
+- return NULL;
+- }
+-
+- pargs = stab_demangle_v3_arglist (dhandle, info,
+- dc->u.s_binary.right->u.s_binary.right,
+- pvarargs);
+-
+- free (mem);
+-
+- return pargs;
+-}
+-
+-/* Demangle an argument list in a struct demangle_component tree.
+- Returns a DEBUG_TYPE_NULL terminated array of argument types, and
+- sets *PVARARGS to indicate whether this is a varargs function. */
+-
+-static debug_type *
+-stab_demangle_v3_arglist (void *dhandle, struct stab_handle *info,
+- struct demangle_component *arglist,
+- bfd_boolean *pvarargs)
+-{
+- struct demangle_component *dc;
+- unsigned int alloc, count;
+- debug_type *pargs;
+-
+- alloc = 10;
+- pargs = (debug_type *) xmalloc (alloc * sizeof *pargs);
+- *pvarargs = FALSE;
+-
+- count = 0;
+-
+- for (dc = arglist;
+- dc != NULL;
+- dc = dc->u.s_binary.right)
+- {
+- debug_type arg;
+- bfd_boolean varargs;
+-
+- if (dc->type != DEMANGLE_COMPONENT_ARGLIST)
+- {
+- fprintf (stderr, _("Unexpected type in v3 arglist demangling\n"));
+- free (pargs);
+- return NULL;
+- }
+-
+- arg = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left,
+- NULL, &varargs);
+- if (arg == NULL)
+- {
+- if (varargs)
+- {
+- *pvarargs = TRUE;
+- continue;
+- }
+- free (pargs);
+- return NULL;
+- }
+-
+- if (count + 1 >= alloc)
+- {
+- alloc += 10;
+- pargs = (debug_type *) xrealloc (pargs, alloc * sizeof *pargs);
+- }
+-
+- pargs[count] = arg;
+- ++count;
+- }
+-
+- pargs[count] = DEBUG_TYPE_NULL;
+-
+- return pargs;
+-}
+-
+-/* Convert a struct demangle_component tree describing an argument
+- type into a debug_type. */
+-
+-static debug_type
+-stab_demangle_v3_arg (void *dhandle, struct stab_handle *info,
+- struct demangle_component *dc, debug_type context,
+- bfd_boolean *pvarargs)
+-{
+- debug_type dt;
+-
+- if (pvarargs != NULL)
+- *pvarargs = FALSE;
+-
+- switch (dc->type)
+- {
+- /* FIXME: These are demangle component types which we probably
+- need to handle one way or another. */
+- case DEMANGLE_COMPONENT_LOCAL_NAME:
+- case DEMANGLE_COMPONENT_TYPED_NAME:
+- case DEMANGLE_COMPONENT_TEMPLATE_PARAM:
+- case DEMANGLE_COMPONENT_CTOR:
+- case DEMANGLE_COMPONENT_DTOR:
+- case DEMANGLE_COMPONENT_JAVA_CLASS:
+- case DEMANGLE_COMPONENT_RESTRICT_THIS:
+- case DEMANGLE_COMPONENT_VOLATILE_THIS:
+- case DEMANGLE_COMPONENT_CONST_THIS:
+- case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
+- case DEMANGLE_COMPONENT_COMPLEX:
+- case DEMANGLE_COMPONENT_IMAGINARY:
+- case DEMANGLE_COMPONENT_VENDOR_TYPE:
+- case DEMANGLE_COMPONENT_ARRAY_TYPE:
+- case DEMANGLE_COMPONENT_PTRMEM_TYPE:
+- case DEMANGLE_COMPONENT_ARGLIST:
+- default:
+- fprintf (stderr, _("Unrecognized demangle component %d\n"),
+- (int) dc->type);
+- return NULL;
+-
+- case DEMANGLE_COMPONENT_NAME:
+- if (context != NULL)
+- {
+- const debug_field *fields;
+-
+- fields = debug_get_fields (dhandle, context);
+- if (fields != NULL)
+- {
+- /* Try to find this type by looking through the context
+- class. */
+- for (; *fields != DEBUG_FIELD_NULL; fields++)
+- {
+- debug_type ft;
+- const char *dn;
+-
+- ft = debug_get_field_type (dhandle, *fields);
+- if (ft == NULL)
+- return NULL;
+- dn = debug_get_type_name (dhandle, ft);
+- if (dn != NULL
+- && (int) strlen (dn) == dc->u.s_name.len
+- && strncmp (dn, dc->u.s_name.s, dc->u.s_name.len) == 0)
+- return ft;
+- }
+- }
+- }
+- return stab_find_tagged_type (dhandle, info, dc->u.s_name.s,
+- dc->u.s_name.len, DEBUG_KIND_ILLEGAL);
+-
+- case DEMANGLE_COMPONENT_QUAL_NAME:
+- context = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left,
+- context, NULL);
+- if (context == NULL)
+- return NULL;
+- return stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.right,
+- context, NULL);
+-
+- case DEMANGLE_COMPONENT_TEMPLATE:
+- {
+- char *p;
+- size_t alc;
+-
+- /* We print this component to get a class name which we can
+- use. FIXME: This probably won't work if the template uses
+- template parameters which refer to an outer template. */
+- p = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, dc, 20, &alc);
+- if (p == NULL)
+- {
+- fprintf (stderr, _("Failed to print demangled template\n"));
+- return NULL;
+- }
+- dt = stab_find_tagged_type (dhandle, info, p, strlen (p),
+- DEBUG_KIND_CLASS);
+- free (p);
+- return dt;
+- }
+-
+- case DEMANGLE_COMPONENT_SUB_STD:
+- return stab_find_tagged_type (dhandle, info, dc->u.s_string.string,
+- dc->u.s_string.len, DEBUG_KIND_ILLEGAL);
+-
+- case DEMANGLE_COMPONENT_RESTRICT:
+- case DEMANGLE_COMPONENT_VOLATILE:
+- case DEMANGLE_COMPONENT_CONST:
+- case DEMANGLE_COMPONENT_POINTER:
+- case DEMANGLE_COMPONENT_REFERENCE:
+- dt = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left, NULL,
+- NULL);
+- if (dt == NULL)
+- return NULL;
+-
+- switch (dc->type)
+- {
+- default:
+- abort ();
+- case DEMANGLE_COMPONENT_RESTRICT:
+- /* FIXME: We have no way to represent restrict. */
+- return dt;
+- case DEMANGLE_COMPONENT_VOLATILE:
+- return debug_make_volatile_type (dhandle, dt);
+- case DEMANGLE_COMPONENT_CONST:
+- return debug_make_const_type (dhandle, dt);
+- case DEMANGLE_COMPONENT_POINTER:
+- return debug_make_pointer_type (dhandle, dt);
+- case DEMANGLE_COMPONENT_REFERENCE:
+- return debug_make_reference_type (dhandle, dt);
+- }
+-
+- case DEMANGLE_COMPONENT_FUNCTION_TYPE:
+- {
+- debug_type *pargs;
+- bfd_boolean varargs;
+-
+- if (dc->u.s_binary.left == NULL)
+- {
+- /* In this case the return type is actually unknown.
+- However, I'm not sure this will ever arise in practice;
+- normally an unknown return type would only appear at
+- the top level, which is handled above. */
+- dt = debug_make_void_type (dhandle);
+- }
+- else
+- dt = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left, NULL,
+- NULL);
+- if (dt == NULL)
+- return NULL;
+-
+- pargs = stab_demangle_v3_arglist (dhandle, info,
+- dc->u.s_binary.right,
+- &varargs);
+- if (pargs == NULL)
+- return NULL;
+-
+- return debug_make_function_type (dhandle, dt, pargs, varargs);
+- }
+-
+- case DEMANGLE_COMPONENT_BUILTIN_TYPE:
+- {
+- char *p;
+- size_t alc;
+- debug_type ret;
+-
+- /* We print this component in order to find out the type name.
+- FIXME: Should we instead expose the
+- demangle_builtin_type_info structure? */
+- p = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, dc, 20, &alc);
+- if (p == NULL)
+- {
+- fprintf (stderr, _("Couldn't get demangled builtin type\n"));
+- return NULL;
+- }
+-
+- /* The mangling is based on the type, but does not itself
+- indicate what the sizes are. So we have to guess. */
+- if (strcmp (p, "signed char") == 0)
+- ret = debug_make_int_type (dhandle, 1, FALSE);
+- else if (strcmp (p, "bool") == 0)
+- ret = debug_make_bool_type (dhandle, 1);
+- else if (strcmp (p, "char") == 0)
+- ret = debug_make_int_type (dhandle, 1, FALSE);
+- else if (strcmp (p, "double") == 0)
+- ret = debug_make_float_type (dhandle, 8);
+- else if (strcmp (p, "long double") == 0)
+- ret = debug_make_float_type (dhandle, 8);
+- else if (strcmp (p, "float") == 0)
+- ret = debug_make_float_type (dhandle, 4);
+- else if (strcmp (p, "__float128") == 0)
+- ret = debug_make_float_type (dhandle, 16);
+- else if (strcmp (p, "unsigned char") == 0)
+- ret = debug_make_int_type (dhandle, 1, TRUE);
+- else if (strcmp (p, "int") == 0)
+- ret = debug_make_int_type (dhandle, 4, FALSE);
+- else if (strcmp (p, "unsigned int") == 0)
+- ret = debug_make_int_type (dhandle, 4, TRUE);
+- else if (strcmp (p, "long") == 0)
+- ret = debug_make_int_type (dhandle, 4, FALSE);
+- else if (strcmp (p, "unsigned long") == 0)
+- ret = debug_make_int_type (dhandle, 4, TRUE);
+- else if (strcmp (p, "__int128") == 0)
+- ret = debug_make_int_type (dhandle, 16, FALSE);
+- else if (strcmp (p, "unsigned __int128") == 0)
+- ret = debug_make_int_type (dhandle, 16, TRUE);
+- else if (strcmp (p, "short") == 0)
+- ret = debug_make_int_type (dhandle, 2, FALSE);
+- else if (strcmp (p, "unsigned short") == 0)
+- ret = debug_make_int_type (dhandle, 2, TRUE);
+- else if (strcmp (p, "void") == 0)
+- ret = debug_make_void_type (dhandle);
+- else if (strcmp (p, "wchar_t") == 0)
+- ret = debug_make_int_type (dhandle, 4, TRUE);
+- else if (strcmp (p, "long long") == 0)
+- ret = debug_make_int_type (dhandle, 8, FALSE);
+- else if (strcmp (p, "unsigned long long") == 0)
+- ret = debug_make_int_type (dhandle, 8, TRUE);
+- else if (strcmp (p, "...") == 0)
+- {
+- if (pvarargs == NULL)
+- fprintf (stderr, _("Unexpected demangled varargs\n"));
+- else
+- *pvarargs = TRUE;
+- ret = NULL;
+- }
+- else
+- {
+- fprintf (stderr, _("Unrecognized demangled builtin type\n"));
+- ret = NULL;
+- }
+-
+- free (p);
+-
+- return ret;
+- }
+- }
+-}
+From 99bb30f56b48efed145d359ecfb119814d00e309 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 22/27] Port emulparams scripts
+---
+
+ ld/emulparams/elf_i386_obsd.sh | 24 ++++++++++++++++++++++++
+ ld/emulparams/elf_obsd.sh | 8 ++++++++
+ ld/emulparams/elf_x86_64_obsd.sh | 2 ++
+ 3 files changed, 34 insertions(+), 0 deletions(-)
+ create mode 100644 ld/emulparams/elf_i386_obsd.sh
+ create mode 100644 ld/emulparams/elf_obsd.sh
+ create mode 100644 ld/emulparams/elf_x86_64_obsd.sh
+
+
+diff --git a/ld/emulparams/elf_i386_obsd.sh b/ld/emulparams/elf_i386_obsd.sh
+new file mode 100644
+index 0000000..ae7ba0e
+--- /dev/null
++++ b/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/ld/emulparams/elf_obsd.sh b/ld/emulparams/elf_obsd.sh
+new file mode 100644
+index 0000000..37e0d51
+--- /dev/null
++++ b/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/ld/emulparams/elf_x86_64_obsd.sh b/ld/emulparams/elf_x86_64_obsd.sh
+new file mode 100644
+index 0000000..3689dad
+--- /dev/null
++++ b/ld/emulparams/elf_x86_64_obsd.sh
+@@ -0,0 +1,2 @@
++. ${srcdir}/emulparams/elf_x86_64.sh
++. ${srcdir}/emulparams/elf_obsd.sh
+From f8fc67d17104aaf6e331259439a5c8a520ac1684 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 13/26] Port gas cofig patches
+---
+
+ gas/config/tc-arm.c | 4 ++--
+ gas/config/tc-i386.c | 3 ++-
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+
+diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
+index f4ebdc4..8acf362 100644
+--- a/gas/config/tc-arm.c
++++ b/gas/config/tc-arm.c
+@@ -108,7 +108,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
+@@ -22052,7 +22052,7 @@ md_begin (void)
+ else if (!mfpu_opt)
+ {
+ #if !(defined (EABI_DEFAULT) || defined (TE_LINUX) \
+- || defined (TE_NetBSD) || defined (TE_VXWORKS))
++ || defined (TE_NetBSD) || defined (TE_VXWORKS) || defined(TE_OpenBSD))
+ /* Some environments specify a default FPU. If they don't, infer it
+ from the processor. */
+ if (mcpu_fpu_opt)
+diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
+index 9c33cf9..f59694f 100644
+--- a/gas/config/tc-i386.c
++++ b/gas/config/tc-i386.c
+@@ -303,7 +303,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. */
+From 9a9948f66a8bd7806d93903b7c35eaa60be967d7 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 14/26] Port gas/Makefile.am patch
+---
+
+ gas/Makefile.am | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+
+diff --git a/gas/Makefile.am b/gas/Makefile.am
+index 7b897f3..9fc7afd 100644
+--- a/gas/Makefile.am
++++ b/gas/Makefile.am
+@@ -282,6 +282,7 @@ TARG_ENV_HFILES = \
+ config/te-macos.h \
+ config/te-nbsd.h \
+ config/te-nbsd532.h \
++ config/te-obsd.h \
+ config/te-netware.h \
+ config/te-pc532mach.h \
+ config/te-pe.h \
+@@ -355,6 +356,7 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I../bfd -I$(srcdir)/config \
+ # and the system's installed libraries.
+
+ GASLIBS = @OPCODES_LIB@ ../bfd/libbfd.la ../libiberty/libiberty.a
++GASLIBSDEPS = @OPCODES_LIB@ ../bfd/libbfd.la
+
+ # Files to be copied away after each stage in building.
+ STAGESTUFF = *.@OBJEXT@ $(noinst_PROGRAMS)
+@@ -363,7 +365,7 @@ as_new_SOURCES = $(GAS_CFILES)
+ as_new_LDADD = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
+ $(extra_objects) $(GASLIBS) $(LIBINTL) $(LIBM)
+ as_new_DEPENDENCIES = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
+- $(extra_objects) $(GASLIBS) $(LIBINTL_DEP)
++ $(extra_objects) $(GASLIBSDEPS) $(LIBINTL_DEP)
+ EXTRA_as_new_SOURCES = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \
+ $(TARGET_CPU_HFILES) $(OBJ_FORMAT_CFILES) $(OBJ_FORMAT_HFILES) \
+ $(TARG_ENV_CFILES) $(CONFIG_ATOF_CFILES) $(MULTI_CFILES)
+From 0f2df696592793712a16cae18bd5dac4c2d3a58e Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 15/26] Port gas/read.c patch
+---
+
+ gas/read.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+
+diff --git a/gas/read.c b/gas/read.c
+index bd3fa58..a2f37bb 100644
+--- a/gas/read.c
++++ b/gas/read.c
+@@ -5336,7 +5336,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';
+From 1f312c52f16e177676ac82816412b336f8cd0bd7 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 17/26] Port ld/configure.tgt patch
+---
+
+ ld/configure.tgt | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+
+diff --git a/ld/configure.tgt b/ld/configure.tgt
+index 4e90739..bff4c20 100644
+--- a/ld/configure.tgt
++++ b/ld/configure.tgt
+@@ -259,6 +259,14 @@ x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
+ | sed -e 's/x86_64/i386/'`
+ tdir_elf_i386=`echo ${targ_alias} \
+ | sed -e 's/x86_64/i386/'` ;;
++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-*-sysv*) targ_emul=i386coff ;;
+ i[3-7]86-*-ptx*) targ_emul=i386coff ;;
+ i[3-7]86-*-mach*) targ_emul=i386mach ;;
+From b05d9772b29631845d033f12b09aacfc5edd8f73 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 21/27] Port ld/Makefile.am patch
+---
+
+ ld/Makefile.am | 14 ++++++++++++++
+ 1 files changed, 14 insertions(+), 0 deletions(-)
+
+
+diff --git a/ld/Makefile.am b/ld/Makefile.am
+index b4364be..46dbba6 100644
+--- a/ld/Makefile.am
++++ b/ld/Makefile.am
+@@ -237,6 +237,7 @@ ALL_EMULATION_SOURCES = \
+ eelf_i386_be.c \
+ eelf_i386_chaos.c \
+ eelf_i386_fbsd.c \
++ eelf_i386_obsd.c \
+ eelf_i386_ldso.c \
+ eelf_i386_sol2.c \
+ eelf_i386_vxworks.c \
+@@ -281,6 +282,7 @@ ALL_EMULATION_SOURCES = \
+ ei386nbsd.c \
+ ei386nto.c \
+ ei386nw.c \
++ ei386obsd.c \
+ ei386pe.c \
+ ei386pe_posix.c \
+ ei386pep.c \
+@@ -443,6 +445,7 @@ ALL_64_EMULATION_SOURCES = \
+ eshlelf64_nbsd.c \
+ eelf_x86_64.c \
+ eelf_x86_64_fbsd.c \
++ eelf_x86_64_obsd.c \
+ eelf_x86_64_sol2.c \
+ eelf_l1om.c \
+ eelf_l1om_fbsd.c \
+@@ -1183,6 +1186,10 @@ eelf_l1om_fbsd.c: $(srcdir)/emulparams/elf_l1om_fbsd.sh \
+ $(srcdir)/emulparams/elf_l1om.sh \
+ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_l1om_fbsd "$(tdir_elf_l1om_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 \
+ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_i386_be "$(tdir_elf_i386_be)"
+@@ -1193,6 +1200,10 @@ eelf_i386_fbsd.c: $(srcdir)/emulparams/elf_i386_fbsd.sh \
+ $(srcdir)/emulparams/elf_i386.sh \
+ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_i386_fbsd "$(tdir_elf_i386_fbsd)"
++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_ldso.c: $(srcdir)/emulparams/elf_i386_ldso.sh \
+ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_i386_ldso "$(tdir_elf_i386_ldso)"
+@@ -1342,6 +1353,9 @@ ei386nto.c: $(srcdir)/emulparams/i386nto.sh \
+ ei386nw.c: $(srcdir)/emulparams/i386nw.sh \
+ $(ELF_DEPS) $(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)"
+From fe7580454be658f3838f631c33b46c7f612c8371 Mon Sep 17 00:00:00 2001
+
+From: Maxim <kolmax94@gmail.com>
+
+Subject: [PATCH 27/27] Fix sentinels
+---
+
+ ld/plugin.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+
+diff --git a/ld/plugin.c b/ld/plugin.c
+index 79b39e8..6107dbe 100644
+--- a/ld/plugin.c
++++ b/ld/plugin.c
+@@ -268,7 +268,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
+
+ asym->the_bfd = abfd;
+ asym->name = ldsym->version
+- ? concat (ldsym->name, "@", ldsym->version, NULL)
++ ? concat (ldsym->name, "@", ldsym->version, (char *) NULL)
+ : ldsym->name;
+ asym->value = 0;
+ switch (ldsym->def)
+@@ -563,7 +563,7 @@ message (int level, const char *format, ...)
+ default:
+ {
+ char *newfmt = ACONCAT ((level == LDPL_FATAL ? "%F" : "%X",
+- format, NULL));
++ format, (char *) NULL));
+ vfinfo (stderr, newfmt, args, TRUE);
+ }
+ break;