xref: /minix3/external/gpl3/binutils/patches/0001-minix.patch (revision c9ea9e7af84fcba485b32ccd2c85edb945b1f323)
1diff -rNU3 dist.nbsd/bfd/config.bfd dist/bfd/config.bfd
2--- dist.nbsd/bfd/config.bfd	2014-02-17 14:34:49.407022105 +0100
3+++ dist/bfd/config.bfd	2014-02-17 16:13:26.634958919 +0100
4@@ -316,7 +316,7 @@
5     ;;
6   arm-*-elf | arm-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \
7   arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \
8-  arm*-*-eabi* )
9+  arm*-*-eabi* | arm*-*-minix*)
10     targ_defvec=bfd_elf32_littlearm_vec
11     targ_selvecs=bfd_elf32_bigarm_vec
12     ;;
13@@ -711,6 +711,9 @@
14   i[3-7]86-none-*)
15     targ_defvec=i386coff_vec
16     ;;
17+  i[3-7]86-*-minix)
18+    targ_defvec=bfd_elf32_i386_minix_vec
19+    ;;
20   i[3-7]86-*-aout* | i[3-7]86*-*-vsta*)
21     targ_defvec=i386aout_vec
22     ;;
23diff -rNU3 dist.nbsd/bfd/configure dist/bfd/configure
24--- dist.nbsd/bfd/configure	2014-02-17 14:34:49.413688892 +0100
25+++ dist/bfd/configure	2014-02-17 16:13:26.638292303 +0100
26@@ -15232,6 +15232,7 @@
27     bfd_elf32_i370_vec)		tb="$tb elf32-i370.lo elf32.lo $elf" ;;
28     bfd_elf32_i386_sol2_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
29     bfd_elf32_i386_freebsd_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
30+    bfd_elf32_i386_minix_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
31     bfd_elf32_i386_nacl_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
32     bfd_elf32_i386_vxworks_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
33     bfd_elf32_i386_vec)		tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
34diff -rNU3 dist.nbsd/bfd/configure.in dist/bfd/configure.in
35--- dist.nbsd/bfd/configure.in	2014-02-17 14:34:49.393688529 +0100
36+++ dist/bfd/configure.in	2014-02-17 16:13:26.638292303 +0100
37@@ -724,6 +724,7 @@
38     bfd_elf32_i370_vec)		tb="$tb elf32-i370.lo elf32.lo $elf" ;;
39     bfd_elf32_i386_sol2_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
40     bfd_elf32_i386_freebsd_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
41+    bfd_elf32_i386_minix_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
42     bfd_elf32_i386_nacl_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
43     bfd_elf32_i386_vxworks_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
44     bfd_elf32_i386_vec)		tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
45diff -rNU3 dist.nbsd/bfd/elf32-i386.c dist/bfd/elf32-i386.c
46--- dist.nbsd/bfd/elf32-i386.c	2014-02-17 14:34:49.393688529 +0100
47+++ dist/bfd/elf32-i386.c	2014-02-17 16:13:26.644959071 +0100
48@@ -4979,6 +4979,18 @@
49
50 #include "elf32-target.h"
51
52+/* MINIX3 support.  */
53+
54+#undef	TARGET_LITTLE_SYM
55+#define	TARGET_LITTLE_SYM		bfd_elf32_i386_minix_vec
56+#undef	TARGET_LITTLE_NAME
57+#define	TARGET_LITTLE_NAME		"elf32-i386-minix"
58+
59+#undef	elf32_bed
60+#define	elf32_bed				elf32_i386_minix_bed
61+
62+#include "elf32-target.h"
63+
64 /* FreeBSD support.  */
65
66 #undef	TARGET_LITTLE_SYM
67diff -rNU3 dist.nbsd/bfd/targets.c dist/bfd/targets.c
68--- dist.nbsd/bfd/targets.c	2014-02-17 14:34:49.417022286 +0100
69+++ dist/bfd/targets.c	2014-02-17 16:13:26.644959071 +0100
70@@ -624,6 +624,7 @@
71 extern const bfd_target bfd_elf32_hppa_vec;
72 extern const bfd_target bfd_elf32_i370_vec;
73 extern const bfd_target bfd_elf32_i386_freebsd_vec;
74+extern const bfd_target bfd_elf32_i386_minix_vec;
75 extern const bfd_target bfd_elf32_i386_nacl_vec;
76 extern const bfd_target bfd_elf32_i386_sol2_vec;
77 extern const bfd_target bfd_elf32_i386_vxworks_vec;
78diff -rNU3 dist.nbsd/config.guess dist/config.guess
79--- dist.nbsd/config.guess	2014-02-17 14:34:49.417022286 +0100
80+++ dist/config.guess	2014-02-17 16:13:26.644959071 +0100
81@@ -872,8 +872,8 @@
82 	# other systems with GNU libc and userland
83 	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
84 	exit ;;
85-    i*86:Minix:*:*)
86-	echo ${UNAME_MACHINE}-pc-minix
87+    *:Minix:*:*)
88+        echo ${UNAME_MACHINE}-elf32-minix
89 	exit ;;
90     alpha:Linux:*:*)
91 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
92diff -rNU3 dist.nbsd/configure dist/configure
93--- dist.nbsd/configure	2014-02-17 14:34:49.430355862 +0100
94+++ dist/configure	2014-02-17 16:13:26.648292455 +0100
95@@ -2869,7 +2869,7 @@
96       *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \
97       | *-*-linux* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \
98       | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* \
99-      | *-*-solaris2* | *-*-nto* | *-*-nacl*)
100+      | *-*-solaris2* | *-*-nto* | *-*-nacl* | *-*-minix*)
101         case "${target}" in
102           *-*-linux*aout* | *-*-linux*oldld*)
103             ;;
104diff -rNU3 dist.nbsd/gas/config/tc-i386.h dist/gas/config/tc-i386.h
105--- dist.nbsd/gas/config/tc-i386.h	2014-02-17 14:34:48.917013206 +0100
106+++ dist/gas/config/tc-i386.h	2014-02-17 16:13:26.648292455 +0100
107@@ -72,6 +72,10 @@
108 #define ELF_TARGET_FORMAT64	"elf64-x86-64-sol2"
109 #endif
110
111+#ifdef TE_MINIX
112+#define ELF_TARGET_FORMAT      "elf32-i386-minix"
113+#endif
114+
115 #ifndef ELF_TARGET_FORMAT
116 #define ELF_TARGET_FORMAT	"elf32-i386"
117 #endif
118diff -rNU3 dist.nbsd/gas/config/te-minix.h dist/gas/config/te-minix.h
119--- dist.nbsd/gas/config/te-minix.h	1970-01-01 01:00:00.000000000 +0100
120+++ dist/gas/config/te-minix.h	2014-02-17 16:13:26.648292455 +0100
121@@ -0,0 +1,9 @@
122+#define TE_MINIX 1
123+
124+/* Added these, because if we don't know what we're targeting we may
125+   need an assembler version of libgcc, and that will use local
126+   labels.  */
127+#define LOCAL_LABELS_DOLLAR 1
128+#define LOCAL_LABELS_FB 1
129+
130+#include "obj-format.h"
131diff -rNU3 dist.nbsd/gas/configure dist/gas/configure
132--- dist.nbsd/gas/configure	2014-02-17 14:34:48.930346782 +0100
133+++ dist/gas/configure	2014-02-17 16:13:26.651625840 +0100
134@@ -6127,6 +6127,10 @@
135   fi
136   ;;
137
138+minix*)
139+  lt_cv_deplibs_check_method=pass_all
140+  ;;
141+
142 gnu*)
143   lt_cv_deplibs_check_method=pass_all
144   ;;
145diff -rNU3 dist.nbsd/gas/configure.tgt dist/gas/configure.tgt
146--- dist.nbsd/gas/configure.tgt	2014-02-17 14:34:48.930346782 +0100
147+++ dist/gas/configure.tgt	2014-02-17 16:13:26.651625840 +0100
148@@ -448,6 +448,8 @@
149   *-*-elf | *-*-sysv4*)			fmt=elf ;;
150   *-*-solaris*)				fmt=elf em=solaris ;;
151   *-*-aros*)				fmt=elf em=linux ;;
152+  i*-*-minix*)                       fmt=elf em=minix ;;
153+  arm*-*-minix*)                       fmt=elf em=armeabi ;;
154   *-*-vxworks* | *-*-windiss)		fmt=elf em=vxworks ;;
155   *-*-netware)				fmt=elf em=netware ;;
156 esac
157diff -rNU3 dist.nbsd/ld/configure.tgt dist/ld/configure.tgt
158--- dist.nbsd/ld/configure.tgt	2014-02-17 14:34:49.170351140 +0100
159+++ dist/ld/configure.tgt	2014-02-17 16:13:26.651625840 +0100
160@@ -82,6 +82,8 @@
161 armeb-*-elf)		targ_emul=armelfb ;;
162 arm-*-elf | arm*-*-eabi*)
163 	  		targ_emul=armelf ;;
164+arm*-*-minix*)	targ_emul=armelf_minix
165+			targ_extra_emuls="armelf" ;;
166 arm*-*-symbianelf*)     targ_emul=armsymbian;;
167 arm-*-kaos*)		targ_emul=armelf ;;
168 arm9e-*-elf)		targ_emul=armelf ;;
169@@ -208,6 +210,8 @@
170 i[3-7]86-*-bsd386)	targ_emul=i386bsd ;;
171 i[3-7]86-*-bsdi*)	targ_emul=i386bsd ;;
172 i[3-7]86-*-aout)	targ_emul=i386aout ;;
173+i[3-7]86-*-minix)	targ_emul=elf_i386_minix
174+			targ_extra_emuls="elf_i386" ;;
175 i[3-7]86-*-linux*aout*)	targ_emul=i386linux
176 			targ_extra_emuls=elf_i386
177 			tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'` ;;
178diff -rNU3 dist.nbsd/ld/emulparams/armelf_minix.sh dist/ld/emulparams/armelf_minix.sh
179--- dist.nbsd/ld/emulparams/armelf_minix.sh	1970-01-01 01:00:00.000000000 +0100
180+++ dist/ld/emulparams/armelf_minix.sh	2014-02-17 16:13:26.651625840 +0100
181@@ -0,0 +1,15 @@
182+. ${srcdir}/emulparams/armelf.sh
183+. ${srcdir}/emulparams/elf_minix.sh
184+OUTPUT_FORMAT="elf32-littlearm"
185+MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
186+COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
187+
188+DATA_START_SYMBOLS='PROVIDE (__data_start = .);';
189+
190+# Dynamic libraries support
191+GENERATE_SHLIB_SCRIPT=yes
192+TARGET2_TYPE=got-rel
193+
194+GENERATE_PIE_SCRIPT=yes
195+
196+unset EMBEDDED
197diff -rNU3 dist.nbsd/ld/emulparams/elf_i386_minix.sh dist/ld/emulparams/elf_i386_minix.sh
198--- dist.nbsd/ld/emulparams/elf_i386_minix.sh	1970-01-01 01:00:00.000000000 +0100
199+++ dist/ld/emulparams/elf_i386_minix.sh	2014-02-17 16:13:26.651625840 +0100
200@@ -0,0 +1,3 @@
201+. ${srcdir}/emulparams/elf_i386.sh
202+. ${srcdir}/emulparams/elf_minix.sh
203+OUTPUT_FORMAT="elf32-i386-minix"
204diff -rNU3 dist.nbsd/ld/emulparams/elf_minix.sh dist/ld/emulparams/elf_minix.sh
205--- dist.nbsd/ld/emulparams/elf_minix.sh	1970-01-01 01:00:00.000000000 +0100
206+++ dist/ld/emulparams/elf_minix.sh	2014-02-17 16:13:26.651625840 +0100
207@@ -0,0 +1 @@
208+ELF_INTERPRETER_NAME=\"/libexec/ld-elf.so.1\"
209diff -rNU3 dist.nbsd/ld/Makefile.in dist/ld/Makefile.in
210--- dist.nbsd/ld/Makefile.in	2014-02-17 14:34:49.163684353 +0100
211+++ dist/ld/Makefile.in	2014-02-17 16:13:26.651625840 +0100
212@@ -450,6 +450,7 @@
213 	earmelf_fbsd.c \
214 	earmelf_linux.c \
215 	earmelf_linux_eabi.c \
216+	earmelf_minix.c \
217 	earmelf_nacl.c \
218 	earmelf_nbsd.c \
219 	earmelf_nbsd_eabi.c \
220@@ -574,6 +575,7 @@
221 	eelf_i386_chaos.c \
222 	eelf_i386_fbsd.c \
223 	eelf_i386_ldso.c \
224+	eelf_i386_minix.c \
225 	eelf_i386_nacl.c \
226 	eelf_i386_sol2.c \
227 	eelf_i386_vxworks.c \
228@@ -2195,6 +2197,10 @@
229   $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
230   $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
231 	${GENSCRIPTS} armelf_linux_eabi "$(tdir_armelf_linux_abi)"
232+earmelf_minix.c: $(srcdir)/emulparams/armelf_minix.sh \
233+  $(srcdir)/emulparams/armelf.sh \
234+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
235+	${GENSCRIPTS} armelf_minix "$(tdir_armelf_minix)"
236 earmelf_nacl.c: $(srcdir)/emulparams/armelf_nacl.sh \
237   $(srcdir)/emulparams/armelf_linux_eabi.sh \
238   $(srcdir)/emulparams/armelf_linux.sh \
239@@ -2715,6 +2721,10 @@
240 eelf_i386_ldso.c: $(srcdir)/emulparams/elf_i386_ldso.sh \
241   $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
242 	${GENSCRIPTS} elf_i386_ldso "$(tdir_elf_i386_ldso)"
243+eelf_i386_minix.c: $(srcdir)/emulparams/elf_i386_minix.sh \
244+  $(srcdir)/emulparams/elf_i386.sh \
245+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
246+	${GENSCRIPTS} elf_i386_minix "$(tdir_elf_i386_minix)"
247 eelf_i386_nacl.c: $(srcdir)/emulparams/elf_i386_nacl.sh \
248   $(srcdir)/emulparams/elf_i386.sh \
249   $(srcdir)/emulparams/elf_nacl.sh \
250