summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2006-10-08 21:12:36 +0000
committermiod <miod@openbsd.org>2006-10-08 21:12:36 +0000
commitfabff02b3960f31d645173714f19eba73b8be846 (patch)
tree16e7708e4eaecd02cb4d1c0b95350544b317d95f
parentAdd status register bits string for pretty %b printf. (diff)
downloadwireguard-openbsd-fabff02b3960f31d645173714f19eba73b8be846.tar.xz
wireguard-openbsd-fabff02b3960f31d645173714f19eba73b8be846.zip
Define superH obsd-specific emulations for ld, and use it by default.
-rw-r--r--gnu/usr.bin/binutils/bfd/config.bfd6
-rw-r--r--gnu/usr.bin/binutils/bfd/configure6
-rw-r--r--gnu/usr.bin/binutils/bfd/configure.in6
-rw-r--r--gnu/usr.bin/binutils/bfd/elf32-sh.c19
-rw-r--r--gnu/usr.bin/binutils/bfd/targets.c4
-rw-r--r--gnu/usr.bin/binutils/gas/config/tc-sh.h2
-rw-r--r--gnu/usr.bin/binutils/gas/configure2
-rw-r--r--gnu/usr.bin/binutils/gas/configure.in2
-rw-r--r--gnu/usr.bin/binutils/ld/Makefile.am13
-rw-r--r--gnu/usr.bin/binutils/ld/Makefile.in13
-rw-r--r--gnu/usr.bin/binutils/ld/configure.tgt6
-rw-r--r--gnu/usr.bin/binutils/ld/emulparams/shelf_obsd.sh16
-rw-r--r--gnu/usr.bin/binutils/ld/emulparams/shlelf_obsd.sh3
-rw-r--r--gnu/usr.bin/gcc/gcc/config/sh/openbsd.h11
-rw-r--r--gnu/usr.bin/gcc/gcc/config/sh/t-openbsd2
15 files changed, 102 insertions, 9 deletions
diff --git a/gnu/usr.bin/binutils/bfd/config.bfd b/gnu/usr.bin/binutils/bfd/config.bfd
index e5edb3d7705..9e4ddf6b3e0 100644
--- a/gnu/usr.bin/binutils/bfd/config.bfd
+++ b/gnu/usr.bin/binutils/bfd/config.bfd
@@ -1080,7 +1080,7 @@ case "${targ}" in
;;
#endif
- sh*-*-openbsd* | sh*l*-*-netbsdelf*)
+ sh*l*-*-netbsdelf*)
targ_defvec=bfd_elf32_shlnbsd_vec
targ_selvecs="bfd_elf32_shnbsd_vec shcoff_vec shlcoff_vec"
#ifdef BFD64
@@ -1098,6 +1098,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"
+ ;;
shl*-*-elf* | sh[1234]l*-*-elf* | sh3el*-*-elf* | shl*-*-kaos*)
targ_defvec=bfd_elf32_shl_vec
targ_selvecs="bfd_elf32_sh_vec shlcoff_vec shcoff_vec shlcoff_small_vec shcoff_small_vec"
diff --git a/gnu/usr.bin/binutils/bfd/configure b/gnu/usr.bin/binutils/bfd/configure
index 35d60abbf5e..79345c064e7 100644
--- a/gnu/usr.bin/binutils/bfd/configure
+++ b/gnu/usr.bin/binutils/bfd/configure
@@ -5464,7 +5464,9 @@ rm -f conftest*
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
;;
@@ -6354,7 +6356,9 @@ do
bfd_elf32_shl_vec) tb="$tb elf32-sh.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 elf32.lo $elf" ;;
bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
diff --git a/gnu/usr.bin/binutils/bfd/configure.in b/gnu/usr.bin/binutils/bfd/configure.in
index 0155aa2d386..88986613e1d 100644
--- a/gnu/usr.bin/binutils/bfd/configure.in
+++ b/gnu/usr.bin/binutils/bfd/configure.in
@@ -372,7 +372,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
;;
@@ -663,7 +665,9 @@ do
bfd_elf32_shl_vec) tb="$tb elf32-sh.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 elf32.lo $elf" ;;
bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
diff --git a/gnu/usr.bin/binutils/bfd/elf32-sh.c b/gnu/usr.bin/binutils/bfd/elf32-sh.c
index a3b13145099..542a7cb347b 100644
--- a/gnu/usr.bin/binutils/bfd/elf32-sh.c
+++ b/gnu/usr.bin/binutils/bfd/elf32-sh.c
@@ -7574,4 +7574,23 @@ elf32_shlin_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
#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 /* INCLUDE_SHMEDIA */
diff --git a/gnu/usr.bin/binutils/bfd/targets.c b/gnu/usr.bin/binutils/bfd/targets.c
index d17fca2d959..58042d51b31 100644
--- a/gnu/usr.bin/binutils/bfd/targets.c
+++ b/gnu/usr.bin/binutils/bfd/targets.c
@@ -577,7 +577,9 @@ extern const bfd_target bfd_elf32_shblin_vec;
extern const bfd_target bfd_elf32_shl_vec;
extern const bfd_target bfd_elf32_shlin_vec;
extern const bfd_target bfd_elf32_shlnbsd_vec;
+extern const bfd_target bfd_elf32_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_tradbigmips_vec;
extern const bfd_target bfd_elf32_tradlittlemips_vec;
@@ -867,7 +869,9 @@ static const bfd_target * const _bfd_target_vector[] = {
&bfd_elf32_shl_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/gas/config/tc-sh.h b/gnu/usr.bin/binutils/gas/config/tc-sh.h
index 9931847b01c..6e2e829af8c 100644
--- a/gnu/usr.bin/binutils/gas/config/tc-sh.h
+++ b/gnu/usr.bin/binutils/gas/config/tc-sh.h
@@ -189,6 +189,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")
#else
#define TARGET_FORMAT (!target_big_endian ? "elf32-shl" : "elf32-sh")
#endif
diff --git a/gnu/usr.bin/binutils/gas/configure b/gnu/usr.bin/binutils/gas/configure
index 58a39d85960..e0c382c881a 100644
--- a/gnu/usr.bin/binutils/gas/configure
+++ b/gnu/usr.bin/binutils/gas/configure
@@ -4510,7 +4510,7 @@ echo "$as_me: error: Solaris must be configured little endian" >&2;}
sh5*-*-netbsd*) fmt=elf em=nbsd ;;
sh64*-*-netbsd*) fmt=elf em=nbsd ;;
sh*-*-netbsdelf*) fmt=elf em=nbsd ;;
- sh*-*-openbsd*) fmt=elf em=nbsd endian=little ;;
+ sh*-*-openbsd*) fmt=elf em=obsd endian=little ;;
sh-*-elf*) fmt=elf ;;
sh-*-coff*) fmt=coff ;;
sh-*-nto*) fmt=elf ;;
diff --git a/gnu/usr.bin/binutils/gas/configure.in b/gnu/usr.bin/binutils/gas/configure.in
index 60a0369904a..9b2c724b6bf 100644
--- a/gnu/usr.bin/binutils/gas/configure.in
+++ b/gnu/usr.bin/binutils/gas/configure.in
@@ -465,7 +465,7 @@ changequote([,])dnl
sh5*-*-netbsd*) fmt=elf em=nbsd ;;
sh64*-*-netbsd*) fmt=elf em=nbsd ;;
sh*-*-netbsdelf*) fmt=elf em=nbsd ;;
- sh*-*-openbsd*) fmt=elf em=nbsd endian=little ;;
+ sh*-*-openbsd*) fmt=elf em=obsd endian=little ;;
sh-*-elf*) fmt=elf ;;
sh-*-coff*) fmt=coff ;;
sh-*-nto*) fmt=elf ;;
diff --git a/gnu/usr.bin/binutils/ld/Makefile.am b/gnu/usr.bin/binutils/ld/Makefile.am
index 29cfe400b30..53572dea70a 100644
--- a/gnu/usr.bin/binutils/ld/Makefile.am
+++ b/gnu/usr.bin/binutils/ld/Makefile.am
@@ -337,6 +337,8 @@ ALL_EMULATIONS = \
eshlelf_nbsd.o \
eshelf_nto.o \
eshlelf_nto.o \
+ eshelf_obsd.o \
+ eshlelf_obsd.o \
eshl.o \
eshlelf.o \
eshpe.o \
@@ -1394,6 +1396,17 @@ 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)"
+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_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}
diff --git a/gnu/usr.bin/binutils/ld/Makefile.in b/gnu/usr.bin/binutils/ld/Makefile.in
index 7a80545d940..ad99274b2ff 100644
--- a/gnu/usr.bin/binutils/ld/Makefile.in
+++ b/gnu/usr.bin/binutils/ld/Makefile.in
@@ -451,6 +451,8 @@ ALL_EMULATIONS = \
eshlelf_nbsd.o \
eshelf_nto.o \
eshlelf_nto.o \
+ eshelf_obsd.o \
+ eshlelf_obsd.o \
eshl.o \
eshlelf.o \
eshpe.o \
@@ -2120,6 +2122,17 @@ 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)"
+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_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}
diff --git a/gnu/usr.bin/binutils/ld/configure.tgt b/gnu/usr.bin/binutils/ld/configure.tgt
index 6692e3e26ee..f6aca64deac 100644
--- a/gnu/usr.bin/binutils/ld/configure.tgt
+++ b/gnu/usr.bin/binutils/ld/configure.tgt
@@ -334,7 +334,7 @@ sh64-*-netbsd*)
targ_emul=shelf64_nbsd
targ_extra_emuls="shlelf64_nbsd shelf32_nbsd shlelf32_nbsd shelf_nbsd shlelf_nbsd"
;;
-sh*l*-*-netbsdelf*|sh*-*-openbsd*)
+sh*l*-*-netbsdelf*)
targ_emul=shlelf_nbsd
targ_extra_emuls=shelf_nbsd
;;
@@ -342,6 +342,10 @@ sh*-*-netbsdelf*)
targ_emul=shelf_nbsd
targ_extra_emuls=shlelf_nbsd
;;
+sh*-*-openbsd*)
+ targ_emul=shlelf_obsd
+ targ_extra_emuls=shelf_obsd
+ ;;
shle*-*-elf* | sh[1234]*le*-*-elf | shle*-*-kaos*)
targ_emul=shlelf
targ_extra_emuls="shelf shl sh"
diff --git a/gnu/usr.bin/binutils/ld/emulparams/shelf_obsd.sh b/gnu/usr.bin/binutils/ld/emulparams/shelf_obsd.sh
new file mode 100644
index 00000000000..03883ef4ab6
--- /dev/null
+++ b/gnu/usr.bin/binutils/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/ld/emulparams/shlelf_obsd.sh b/gnu/usr.bin/binutils/ld/emulparams/shlelf_obsd.sh
new file mode 100644
index 00000000000..dfab67a2ca1
--- /dev/null
+++ b/gnu/usr.bin/binutils/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/gcc/gcc/config/sh/openbsd.h b/gnu/usr.bin/gcc/gcc/config/sh/openbsd.h
index 4b133319fed..e5ccff542e0 100644
--- a/gnu/usr.bin/gcc/gcc/config/sh/openbsd.h
+++ b/gnu/usr.bin/gcc/gcc/config/sh/openbsd.h
@@ -49,10 +49,17 @@ Boston, MA 02111-1307, USA. */
#define LINK_DEFAULT_CPU_EMUL ""
#undef SUBTARGET_LINK_EMUL_SUFFIX
-#define SUBTARGET_LINK_EMUL_SUFFIX "_nbsd"
+#define SUBTARGET_LINK_EMUL_SUFFIX "_obsd"
#undef SUBTARGET_LINK_SPEC
-#define SUBTARGET_LINK_SPEC LINK_SPEC
+#ifdef OBSD_NO_DYNAMIC_LIBRARIES
+#define SUBTARGET_LINK_SPEC \
+ "%{g:%{!nostdlib:-L/usr/lib/debug}} %{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{assert*}"
+#else
+#define SUBTARGET_LINK_SPEC \
+ "%{g:%{!nostdlib:-L/usr/lib/debug}} %{!shared:%{!nostdlib:%{!r*:%{!e*:-e start}}}} %{shared:-Bshareable -x} -dc -dp %{R*} %{static:-Bstatic} %{assert*}"
+#endif
+
#undef LINK_SPEC
#define LINK_SPEC SH_LINK_SPEC
diff --git a/gnu/usr.bin/gcc/gcc/config/sh/t-openbsd b/gnu/usr.bin/gcc/gcc/config/sh/t-openbsd
index 408530f7ec7..f0ab26e0ce3 100644
--- a/gnu/usr.bin/gcc/gcc/config/sh/t-openbsd
+++ b/gnu/usr.bin/gcc/gcc/config/sh/t-openbsd
@@ -13,7 +13,7 @@ EXTRA_MULTILIB_PARTS=
FPBIT =
DPBIT =
-MULTILIB_OPTIONS += m3e/m4
+MULTILIB_OPTIONS = $(MULTILIB_ENDIAN) m3e/m4
MULTILIB_DIRNAMES=
MULTILIB_MATCHES =
MULTILIB_EXCEPTIONS=