public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH #1] mips*-kfreebsd-gnu support in BFD
@ 2010-12-13 18:20 Robert Millan
  2010-12-14 15:43 ` Robert Millan
  0 siblings, 1 reply; 11+ messages in thread
From: Robert Millan @ 2010-12-13 18:20 UTC (permalink / raw)
  To: binutils

[-- Attachment #1: Type: text/plain, Size: 179 bytes --]


Hi,

This patch adds mips*-kfreebsd-gnu support (MIPS architectures running 
the GNU system with kernel of FreeBSD) to BFD.

ChangeLog entry included with patch header.


[-- Attachment #2: bfd_mips-kfreebsd-gnu.diff --]
[-- Type: text/x-patch, Size: 14105 bytes --]

2010-12-08  Robert Millan  <rmh@gnu.org>

	* bfd/config.bfd: Recognize mips-kfreebsd-gnu.
	* bfd/configure.host: Likewise.
	* bfd/configure.in: Support for `bfd_elf32_ntradbigmips_freebsd_vec',
	`bfd_elf32_ntradlittlemips_freebsd_vec',
	`bfd_elf32_tradbigmips_freebsd_vec',
	`bfd_elf32_tradlittlemips_freebsd_vec',
	`bfd_elf64_tradbigmips_freebsd_vec' and
	`bfd_elf64_tradlittlemips_freebsd_vec'.
	* bfd/configure: Regenerate.
	* bfd/elf32-mips.c: New target for FreeBSD support
	(same as traditional MIPS but overrides ELF_OSABI
	with ELFOSABI_FREEBSD).
	* bfd/elf64-mips.c: Likewise.
	* bfd/elfn32-mips.c: Likewise.
	* bfd/targets.c (_bfd_target_vector): Add
	`bfd_elf32_ntradbigmips_freebsd_vec',
	`bfd_elf32_ntradlittlemips_freebsd_vec',
	`bfd_elf32_tradbigmips_freebsd_vec',
	`bfd_elf32_tradlittlemips_freebsd_vec',
	`bfd_elf64_tradbigmips_freebsd_vec' and
	`bfd_elf64_tradlittlemips_freebsd_vec'.

Index: bfd/config.bfd
===================================================================
RCS file: /cvs/src/src/bfd/config.bfd,v
retrieving revision 1.271
diff -u -p -r1.271 config.bfd
--- bfd/config.bfd	30 Nov 2010 01:14:07 -0000	1.271
+++ bfd/config.bfd	8 Dec 2010 20:24:03 -0000
@@ -1015,6 +1015,16 @@ case "${targ}" in
     targ_selvecs="bfd_elf32_tradlittlemips_vec ecoff_big_vec ecoff_little_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec"
     want64=true
     ;;
+  mips*el-*-kfreebsd*-gnu)
+    targ_defvec=bfd_elf32_tradlittlemips_freebsd_vec
+    targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradbigmips_freebsd_vec bfd_elf32_tradlittlemips_freebsd_vec bfd_elf32_tradbigmips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec"
+    want64=true
+    ;;
+  mips*-*-kfreebsd*-gnu)
+    targ_defvec=bfd_elf32_tradbigmips_freebsd_vec
+    targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradlittlemips_freebsd_vec bfd_elf32_tradlittlemips_freebsd_vec bfd_elf32_tradbigmips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec"
+    want64=true
+    ;;
 #ifdef BFD64
   mmix-*-*)
     targ_defvec=bfd_elf64_mmix_vec
Index: bfd/configure.host
===================================================================
RCS file: /cvs/src/src/bfd/configure.host,v
retrieving revision 1.18
diff -u -p -r1.18 configure.host
--- bfd/configure.host	15 Feb 2010 19:25:47 -0000	1.18
+++ bfd/configure.host	8 Dec 2010 20:24:09 -0000
@@ -50,6 +50,7 @@ mips*-sgi-irix3*)	HDEFINES="-G 4" ;;
 mips*-sgi-irix4*)	HDEFINES="-G 4" ;;
 mips*-sgi-irix6*)	host64=true;;
 mips64*-*-linux*)	host64=true;;
+mips64*-*-kfreebsd*-gnu) host64=true;;
 mips*-*-sysv4*)		;;
 mips*-*-sysv*)		HDEFINES="-G 4" ;;
 mips*-*-riscos*)	HDEFINES="-G 4" ;;
Index: bfd/configure.in
===================================================================
RCS file: /cvs/src/src/bfd/configure.in,v
retrieving revision 1.288
diff -u -p -r1.288 configure.in
--- bfd/configure.in	5 Nov 2010 08:58:20 -0000	1.288
+++ bfd/configure.in	8 Dec 2010 20:24:12 -0000
@@ -748,8 +748,10 @@ do
     bfd_elf32_msp430_vec)	tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
     bfd_elf32_nbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf32_nlittlemips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_ntradbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_ntradbigmips_vec | bfd_elf32_ntradbigmips_freebsd_vec)
+				tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_ntradlittlemips_vec | bfd_elf32_ntradlittlemips_freebsd_vec)
+				tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf32_openrisc_vec)	tb="$tb elf32-openrisc.lo elf32.lo $elf" ;;
     bfd_elf32_or32_big_vec)	tb="$tb elf32-or32.lo elf32.lo $elf" ;;
     bfd_elf32_pj_vec)           tb="$tb elf32-pj.lo elf32.lo $elf";;
@@ -788,8 +790,10 @@ do
     bfd_elf32_spu_vec)		tb="$tb elf32-spu.lo elf32.lo $elf" ;;
     bfd_elf32_tic6x_be_vec)	tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     bfd_elf32_tic6x_le_vec)	tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
-    bfd_elf32_tradbigmips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_tradbigmips_vec | bfd_elf32_tradbigmips_freebsd_vec)
+				tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_tradlittlemips_vec | bfd_elf32_tradlittlemips_freebsd_vec)
+				tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
     bfd_elf32_us_cris_vec)	tb="$tb elf32-cris.lo elf32.lo $elf" ;;
     bfd_elf32_v850_vec)		tb="$tb elf32-v850.lo elf32.lo $elf" ;;
     bfd_elf32_vax_vec)		tb="$tb elf32-vax.lo elf32.lo $elf" ;;
@@ -822,8 +826,10 @@ do
     bfd_elf64_sparc_vec)	tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_sparc_freebsd_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_sparc_sol2_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_tradbigmips_vec)	tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_tradbigmips_vec | bfd_elf64_tradbigmips_freebsd_vec)
+				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_tradlittlemips_vec | bfd_elf64_tradlittlemips_freebsd_vec)
+				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_x86_64_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_x86_64_sol2_vec)  tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
Index: bfd/elf32-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-mips.c,v
retrieving revision 1.209
diff -u -p -r1.209 elf32-mips.c
--- bfd/elf32-mips.c	25 Aug 2010 14:53:42 -0000	1.209
+++ bfd/elf32-mips.c	8 Dec 2010 20:24:12 -0000
@@ -1725,6 +1725,37 @@ static const struct ecoff_debug_swap mip
 /* Include the target file again for this target.  */
 #include "elf32-target.h"
 
+/* FreeBSD support.  */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+#undef TARGET_BIG_SYM
+#undef TARGET_BIG_NAME
+
+#define	TARGET_LITTLE_SYM		bfd_elf32_tradlittlemips_freebsd_vec
+#define	TARGET_LITTLE_NAME		"elf32-tradlittlemips-freebsd"
+#define	TARGET_BIG_SYM			bfd_elf32_tradbigmips_freebsd_vec
+#define	TARGET_BIG_NAME			"elf32-tradbigmips-freebsd"
+
+#undef	ELF_OSABI
+#define	ELF_OSABI			ELFOSABI_FREEBSD
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void
+elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
+{
+  _bfd_elf_set_osabi (abfd, info);
+}
+
+#undef	elf_backend_post_process_headers
+#define	elf_backend_post_process_headers	elf_fbsd_post_process_headers
+#undef	elf32_bed
+#define elf32_bed				elf32_fbsd_tradbed
+
+#include "elf32-target.h"
 /* Implement elf_backend_final_write_processing for VxWorks.  */
 
 static void
Index: bfd/elf64-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-mips.c,v
retrieving revision 1.98
diff -u -p -r1.98 elf64-mips.c
--- bfd/elf64-mips.c	4 Oct 2010 14:13:09 -0000	1.98
+++ bfd/elf64-mips.c	8 Dec 2010 20:24:12 -0000
@@ -3354,3 +3354,36 @@ extern bfd_boolean bfd_elf64_archive_wri
 
 /* Include the target file again for this target.  */
 #include "elf64-target.h"
+
+
+/* FreeBSD support.  */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+#undef TARGET_BIG_SYM
+#undef TARGET_BIG_NAME
+
+#define	TARGET_LITTLE_SYM		bfd_elf64_tradlittlemips_freebsd_vec
+#define	TARGET_LITTLE_NAME		"elf64-tradlittlemips-freebsd"
+#define	TARGET_BIG_SYM			bfd_elf64_tradbigmips_freebsd_vec
+#define	TARGET_BIG_NAME			"elf64-tradbigmips-freebsd"
+
+#undef	ELF_OSABI
+#define	ELF_OSABI			ELFOSABI_FREEBSD
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void
+elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
+{
+  _bfd_elf_set_osabi (abfd, info);
+}
+
+#undef	elf_backend_post_process_headers
+#define	elf_backend_post_process_headers	elf_fbsd_post_process_headers
+#undef	elf64_bed
+#define elf64_bed				elf64_fbsd_tradbed
+
+#include "elf64-target.h"
Index: bfd/elfn32-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elfn32-mips.c,v
retrieving revision 1.50
diff -u -p -r1.50 elfn32-mips.c
--- bfd/elfn32-mips.c	25 Aug 2010 14:53:45 -0000	1.50
+++ bfd/elfn32-mips.c	8 Dec 2010 20:24:12 -0000
@@ -2547,3 +2547,36 @@ static const struct ecoff_debug_swap mip
 
 /* Include the target file again for this target.  */
 #include "elf32-target.h"
+
+
+/* FreeBSD support.  */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+#undef TARGET_BIG_SYM
+#undef TARGET_BIG_NAME
+
+#define	TARGET_LITTLE_SYM		bfd_elf32_ntradlittlemips_freebsd_vec
+#define	TARGET_LITTLE_NAME		"elf32-ntradlittlemips-freebsd"
+#define	TARGET_BIG_SYM			bfd_elf32_ntradbigmips_freebsd_vec
+#define	TARGET_BIG_NAME			"elf32-ntradbigmips-freebsd"
+
+#undef	ELF_OSABI
+#define	ELF_OSABI			ELFOSABI_FREEBSD
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void
+elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
+{
+  _bfd_elf_set_osabi (abfd, info);
+}
+
+#undef	elf_backend_post_process_headers
+#define	elf_backend_post_process_headers	elf_fbsd_post_process_headers
+#undef	elf32_bed
+#define elf32_bed				elf32_fbsd_tradbed
+
+#include "elf32-target.h"
Index: bfd/targets.c
===================================================================
RCS file: /cvs/src/src/bfd/targets.c,v
retrieving revision 1.196
diff -u -p -r1.196 targets.c
--- bfd/targets.c	22 Oct 2010 12:08:28 -0000	1.196
+++ bfd/targets.c	8 Dec 2010 20:24:13 -0000
@@ -646,6 +646,8 @@ extern const bfd_target bfd_elf32_nbigmi
 extern const bfd_target bfd_elf32_nlittlemips_vec;
 extern const bfd_target bfd_elf32_ntradbigmips_vec;
 extern const bfd_target bfd_elf32_ntradlittlemips_vec;
+extern const bfd_target bfd_elf32_ntradbigmips_freebsd_vec;
+extern const bfd_target bfd_elf32_ntradlittlemips_freebsd_vec;
 extern const bfd_target bfd_elf32_openrisc_vec;
 extern const bfd_target bfd_elf32_or32_big_vec;
 extern const bfd_target bfd_elf32_pj_vec;
@@ -683,6 +685,8 @@ extern const bfd_target bfd_elf32_tic6x_
 extern const bfd_target bfd_elf32_tic6x_le_vec;
 extern const bfd_target bfd_elf32_tradbigmips_vec;
 extern const bfd_target bfd_elf32_tradlittlemips_vec;
+extern const bfd_target bfd_elf32_tradbigmips_freebsd_vec;
+extern const bfd_target bfd_elf32_tradlittlemips_freebsd_vec;
 extern const bfd_target bfd_elf32_us_cris_vec;
 extern const bfd_target bfd_elf32_v850_vec;
 extern const bfd_target bfd_elf32_vax_vec;
@@ -717,6 +721,8 @@ extern const bfd_target bfd_elf64_sparc_
 extern const bfd_target bfd_elf64_sparc_sol2_vec;
 extern const bfd_target bfd_elf64_tradbigmips_vec;
 extern const bfd_target bfd_elf64_tradlittlemips_vec;
+extern const bfd_target bfd_elf64_tradbigmips_freebsd_vec;
+extern const bfd_target bfd_elf64_tradlittlemips_freebsd_vec;
 extern const bfd_target bfd_elf64_x86_64_freebsd_vec;
 extern const bfd_target bfd_elf64_x86_64_sol2_vec;
 extern const bfd_target bfd_elf64_x86_64_vec;
@@ -992,6 +998,8 @@ static const bfd_target * const _bfd_tar
 	&bfd_elf32_nlittlemips_vec,
 	&bfd_elf32_ntradbigmips_vec,
 	&bfd_elf32_ntradlittlemips_vec,
+	&bfd_elf32_ntradbigmips_freebsd_vec,
+	&bfd_elf32_ntradlittlemips_freebsd_vec,
 #endif
 	&bfd_elf32_openrisc_vec,
 	&bfd_elf32_or32_big_vec,
@@ -1034,6 +1042,8 @@ static const bfd_target * const _bfd_tar
 	&bfd_elf32_tic6x_le_vec,
 	&bfd_elf32_tradbigmips_vec,
 	&bfd_elf32_tradlittlemips_vec,
+	&bfd_elf32_tradbigmips_freebsd_vec,
+	&bfd_elf32_tradlittlemips_freebsd_vec,
 	&bfd_elf32_us_cris_vec,
 	&bfd_elf32_v850_vec,
 	&bfd_elf32_vax_vec,
@@ -1069,6 +1079,8 @@ static const bfd_target * const _bfd_tar
 	&bfd_elf64_sparc_sol2_vec,
 	&bfd_elf64_tradbigmips_vec,
 	&bfd_elf64_tradlittlemips_vec,
+	&bfd_elf64_tradbigmips_freebsd_vec,
+	&bfd_elf64_tradlittlemips_freebsd_vec,
 	&bfd_elf64_x86_64_freebsd_vec,
 	&bfd_elf64_x86_64_sol2_vec,
 	&bfd_elf64_x86_64_vec,


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH #1] mips*-kfreebsd-gnu support in BFD
  2010-12-13 18:20 [PATCH #1] mips*-kfreebsd-gnu support in BFD Robert Millan
@ 2010-12-14 15:43 ` Robert Millan
  2010-12-14 15:47   ` Robert Millan
                     ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Robert Millan @ 2010-12-14 15:43 UTC (permalink / raw)
  To: binutils

[-- Attachment #1: Type: text/plain, Size: 80 bytes --]


Please consider this new version which also includes support
for FreeBSD.


[-- Attachment #2: bfd_mips-kfreebsd-gnu.diff --]
[-- Type: text/x-patch, Size: 14183 bytes --]

2010-12-14  Robert Millan  <rmh@gnu.org>

	* bfd/config.bfd: Recognize mips-freebsd and mips-kfreebsd-gnu.
	* bfd/configure.host: Likewise.
	* bfd/configure.in: Support for `bfd_elf32_ntradbigmips_freebsd_vec',
	`bfd_elf32_ntradlittlemips_freebsd_vec',
	`bfd_elf32_tradbigmips_freebsd_vec',
	`bfd_elf32_tradlittlemips_freebsd_vec',
	`bfd_elf64_tradbigmips_freebsd_vec' and
	`bfd_elf64_tradlittlemips_freebsd_vec'.
	* bfd/configure: Regenerate.
	* bfd/elf32-mips.c: New target for FreeBSD support
	(same as traditional MIPS but overrides ELF_OSABI
	with ELFOSABI_FREEBSD).
	* bfd/elf64-mips.c: Likewise.
	* bfd/elfn32-mips.c: Likewise.
	* bfd/targets.c (_bfd_target_vector): Add
	`bfd_elf32_ntradbigmips_freebsd_vec',
	`bfd_elf32_ntradlittlemips_freebsd_vec',
	`bfd_elf32_tradbigmips_freebsd_vec',
	`bfd_elf32_tradlittlemips_freebsd_vec',
	`bfd_elf64_tradbigmips_freebsd_vec' and
	`bfd_elf64_tradlittlemips_freebsd_vec'.

Index: bfd/config.bfd
===================================================================
RCS file: /cvs/src/src/bfd/config.bfd,v
retrieving revision 1.271
diff -u -p -r1.271 config.bfd
--- bfd/config.bfd	30 Nov 2010 01:14:07 -0000	1.271
+++ bfd/config.bfd	8 Dec 2010 20:24:03 -0000
@@ -1015,6 +1015,16 @@ case "${targ}" in
     targ_selvecs="bfd_elf32_tradlittlemips_vec ecoff_big_vec ecoff_little_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec"
     want64=true
     ;;
+  mips*el-*-freebsd* | mips*el-*-kfreebsd*-gnu)
+    targ_defvec=bfd_elf32_tradlittlemips_freebsd_vec
+    targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradbigmips_freebsd_vec bfd_elf32_tradlittlemips_freebsd_vec bfd_elf32_tradbigmips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec"
+    want64=true
+    ;;
+  mips*-*-freebsd* | mips*-*-kfreebsd*-gnu)
+    targ_defvec=bfd_elf32_tradbigmips_freebsd_vec
+    targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradlittlemips_freebsd_vec bfd_elf32_tradlittlemips_freebsd_vec bfd_elf32_tradbigmips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec"
+    want64=true
+    ;;
 #ifdef BFD64
   mmix-*-*)
     targ_defvec=bfd_elf64_mmix_vec
Index: bfd/configure.host
===================================================================
RCS file: /cvs/src/src/bfd/configure.host,v
retrieving revision 1.18
diff -u -p -r1.18 configure.host
--- bfd/configure.host	15 Feb 2010 19:25:47 -0000	1.18
+++ bfd/configure.host	8 Dec 2010 20:24:09 -0000
@@ -50,6 +50,7 @@ mips*-sgi-irix3*)	HDEFINES="-G 4" ;;
 mips*-sgi-irix4*)	HDEFINES="-G 4" ;;
 mips*-sgi-irix6*)	host64=true;;
 mips64*-*-linux*)	host64=true;;
+mips64*-*-freebsd* | mips64*-*-kfreebsd*-gnu) host64=true;;
 mips*-*-sysv4*)		;;
 mips*-*-sysv*)		HDEFINES="-G 4" ;;
 mips*-*-riscos*)	HDEFINES="-G 4" ;;
Index: bfd/configure.in
===================================================================
RCS file: /cvs/src/src/bfd/configure.in,v
retrieving revision 1.288
diff -u -p -r1.288 configure.in
--- bfd/configure.in	5 Nov 2010 08:58:20 -0000	1.288
+++ bfd/configure.in	8 Dec 2010 20:24:12 -0000
@@ -748,8 +748,10 @@ do
     bfd_elf32_msp430_vec)	tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
     bfd_elf32_nbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf32_nlittlemips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_ntradbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_ntradbigmips_vec | bfd_elf32_ntradbigmips_freebsd_vec)
+				tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_ntradlittlemips_vec | bfd_elf32_ntradlittlemips_freebsd_vec)
+				tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf32_openrisc_vec)	tb="$tb elf32-openrisc.lo elf32.lo $elf" ;;
     bfd_elf32_or32_big_vec)	tb="$tb elf32-or32.lo elf32.lo $elf" ;;
     bfd_elf32_pj_vec)           tb="$tb elf32-pj.lo elf32.lo $elf";;
@@ -788,8 +790,10 @@ do
     bfd_elf32_spu_vec)		tb="$tb elf32-spu.lo elf32.lo $elf" ;;
     bfd_elf32_tic6x_be_vec)	tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     bfd_elf32_tic6x_le_vec)	tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
-    bfd_elf32_tradbigmips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_tradbigmips_vec | bfd_elf32_tradbigmips_freebsd_vec)
+				tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_tradlittlemips_vec | bfd_elf32_tradlittlemips_freebsd_vec)
+				tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
     bfd_elf32_us_cris_vec)	tb="$tb elf32-cris.lo elf32.lo $elf" ;;
     bfd_elf32_v850_vec)		tb="$tb elf32-v850.lo elf32.lo $elf" ;;
     bfd_elf32_vax_vec)		tb="$tb elf32-vax.lo elf32.lo $elf" ;;
@@ -822,8 +826,10 @@ do
     bfd_elf64_sparc_vec)	tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_sparc_freebsd_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_sparc_sol2_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_tradbigmips_vec)	tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_tradbigmips_vec | bfd_elf64_tradbigmips_freebsd_vec)
+				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_tradlittlemips_vec | bfd_elf64_tradlittlemips_freebsd_vec)
+				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_x86_64_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_x86_64_sol2_vec)  tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
Index: bfd/elf32-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-mips.c,v
retrieving revision 1.209
diff -u -p -r1.209 elf32-mips.c
--- bfd/elf32-mips.c	25 Aug 2010 14:53:42 -0000	1.209
+++ bfd/elf32-mips.c	8 Dec 2010 20:24:12 -0000
@@ -1725,6 +1725,37 @@ static const struct ecoff_debug_swap mip
 /* Include the target file again for this target.  */
 #include "elf32-target.h"
 
+/* FreeBSD support.  */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+#undef TARGET_BIG_SYM
+#undef TARGET_BIG_NAME
+
+#define	TARGET_LITTLE_SYM		bfd_elf32_tradlittlemips_freebsd_vec
+#define	TARGET_LITTLE_NAME		"elf32-tradlittlemips-freebsd"
+#define	TARGET_BIG_SYM			bfd_elf32_tradbigmips_freebsd_vec
+#define	TARGET_BIG_NAME			"elf32-tradbigmips-freebsd"
+
+#undef	ELF_OSABI
+#define	ELF_OSABI			ELFOSABI_FREEBSD
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void
+elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
+{
+  _bfd_elf_set_osabi (abfd, info);
+}
+
+#undef	elf_backend_post_process_headers
+#define	elf_backend_post_process_headers	elf_fbsd_post_process_headers
+#undef	elf32_bed
+#define elf32_bed				elf32_fbsd_tradbed
+
+#include "elf32-target.h"
 /* Implement elf_backend_final_write_processing for VxWorks.  */
 
 static void
Index: bfd/elf64-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-mips.c,v
retrieving revision 1.98
diff -u -p -r1.98 elf64-mips.c
--- bfd/elf64-mips.c	4 Oct 2010 14:13:09 -0000	1.98
+++ bfd/elf64-mips.c	8 Dec 2010 20:24:12 -0000
@@ -3354,3 +3354,36 @@ extern bfd_boolean bfd_elf64_archive_wri
 
 /* Include the target file again for this target.  */
 #include "elf64-target.h"
+
+
+/* FreeBSD support.  */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+#undef TARGET_BIG_SYM
+#undef TARGET_BIG_NAME
+
+#define	TARGET_LITTLE_SYM		bfd_elf64_tradlittlemips_freebsd_vec
+#define	TARGET_LITTLE_NAME		"elf64-tradlittlemips-freebsd"
+#define	TARGET_BIG_SYM			bfd_elf64_tradbigmips_freebsd_vec
+#define	TARGET_BIG_NAME			"elf64-tradbigmips-freebsd"
+
+#undef	ELF_OSABI
+#define	ELF_OSABI			ELFOSABI_FREEBSD
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void
+elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
+{
+  _bfd_elf_set_osabi (abfd, info);
+}
+
+#undef	elf_backend_post_process_headers
+#define	elf_backend_post_process_headers	elf_fbsd_post_process_headers
+#undef	elf64_bed
+#define elf64_bed				elf64_fbsd_tradbed
+
+#include "elf64-target.h"
Index: bfd/elfn32-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elfn32-mips.c,v
retrieving revision 1.50
diff -u -p -r1.50 elfn32-mips.c
--- bfd/elfn32-mips.c	25 Aug 2010 14:53:45 -0000	1.50
+++ bfd/elfn32-mips.c	8 Dec 2010 20:24:12 -0000
@@ -2547,3 +2547,36 @@ static const struct ecoff_debug_swap mip
 
 /* Include the target file again for this target.  */
 #include "elf32-target.h"
+
+
+/* FreeBSD support.  */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+#undef TARGET_BIG_SYM
+#undef TARGET_BIG_NAME
+
+#define	TARGET_LITTLE_SYM		bfd_elf32_ntradlittlemips_freebsd_vec
+#define	TARGET_LITTLE_NAME		"elf32-ntradlittlemips-freebsd"
+#define	TARGET_BIG_SYM			bfd_elf32_ntradbigmips_freebsd_vec
+#define	TARGET_BIG_NAME			"elf32-ntradbigmips-freebsd"
+
+#undef	ELF_OSABI
+#define	ELF_OSABI			ELFOSABI_FREEBSD
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void
+elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
+{
+  _bfd_elf_set_osabi (abfd, info);
+}
+
+#undef	elf_backend_post_process_headers
+#define	elf_backend_post_process_headers	elf_fbsd_post_process_headers
+#undef	elf32_bed
+#define elf32_bed				elf32_fbsd_tradbed
+
+#include "elf32-target.h"
Index: bfd/targets.c
===================================================================
RCS file: /cvs/src/src/bfd/targets.c,v
retrieving revision 1.196
diff -u -p -r1.196 targets.c
--- bfd/targets.c	22 Oct 2010 12:08:28 -0000	1.196
+++ bfd/targets.c	8 Dec 2010 20:24:13 -0000
@@ -646,6 +646,8 @@ extern const bfd_target bfd_elf32_nbigmi
 extern const bfd_target bfd_elf32_nlittlemips_vec;
 extern const bfd_target bfd_elf32_ntradbigmips_vec;
 extern const bfd_target bfd_elf32_ntradlittlemips_vec;
+extern const bfd_target bfd_elf32_ntradbigmips_freebsd_vec;
+extern const bfd_target bfd_elf32_ntradlittlemips_freebsd_vec;
 extern const bfd_target bfd_elf32_openrisc_vec;
 extern const bfd_target bfd_elf32_or32_big_vec;
 extern const bfd_target bfd_elf32_pj_vec;
@@ -683,6 +685,8 @@ extern const bfd_target bfd_elf32_tic6x_
 extern const bfd_target bfd_elf32_tic6x_le_vec;
 extern const bfd_target bfd_elf32_tradbigmips_vec;
 extern const bfd_target bfd_elf32_tradlittlemips_vec;
+extern const bfd_target bfd_elf32_tradbigmips_freebsd_vec;
+extern const bfd_target bfd_elf32_tradlittlemips_freebsd_vec;
 extern const bfd_target bfd_elf32_us_cris_vec;
 extern const bfd_target bfd_elf32_v850_vec;
 extern const bfd_target bfd_elf32_vax_vec;
@@ -717,6 +721,8 @@ extern const bfd_target bfd_elf64_sparc_
 extern const bfd_target bfd_elf64_sparc_sol2_vec;
 extern const bfd_target bfd_elf64_tradbigmips_vec;
 extern const bfd_target bfd_elf64_tradlittlemips_vec;
+extern const bfd_target bfd_elf64_tradbigmips_freebsd_vec;
+extern const bfd_target bfd_elf64_tradlittlemips_freebsd_vec;
 extern const bfd_target bfd_elf64_x86_64_freebsd_vec;
 extern const bfd_target bfd_elf64_x86_64_sol2_vec;
 extern const bfd_target bfd_elf64_x86_64_vec;
@@ -992,6 +998,8 @@ static const bfd_target * const _bfd_tar
 	&bfd_elf32_nlittlemips_vec,
 	&bfd_elf32_ntradbigmips_vec,
 	&bfd_elf32_ntradlittlemips_vec,
+	&bfd_elf32_ntradbigmips_freebsd_vec,
+	&bfd_elf32_ntradlittlemips_freebsd_vec,
 #endif
 	&bfd_elf32_openrisc_vec,
 	&bfd_elf32_or32_big_vec,
@@ -1034,6 +1042,8 @@ static const bfd_target * const _bfd_tar
 	&bfd_elf32_tic6x_le_vec,
 	&bfd_elf32_tradbigmips_vec,
 	&bfd_elf32_tradlittlemips_vec,
+	&bfd_elf32_tradbigmips_freebsd_vec,
+	&bfd_elf32_tradlittlemips_freebsd_vec,
 	&bfd_elf32_us_cris_vec,
 	&bfd_elf32_v850_vec,
 	&bfd_elf32_vax_vec,
@@ -1069,6 +1079,8 @@ static const bfd_target * const _bfd_tar
 	&bfd_elf64_sparc_sol2_vec,
 	&bfd_elf64_tradbigmips_vec,
 	&bfd_elf64_tradlittlemips_vec,
+	&bfd_elf64_tradbigmips_freebsd_vec,
+	&bfd_elf64_tradlittlemips_freebsd_vec,
 	&bfd_elf64_x86_64_freebsd_vec,
 	&bfd_elf64_x86_64_sol2_vec,
 	&bfd_elf64_x86_64_vec,


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH #1] mips*-kfreebsd-gnu support in BFD
  2010-12-14 15:43 ` Robert Millan
@ 2010-12-14 15:47   ` Robert Millan
  2010-12-18 10:27   ` Richard Sandiford
  2010-12-23 12:10   ` Richard Sandiford
  2 siblings, 0 replies; 11+ messages in thread
From: Robert Millan @ 2010-12-14 15:47 UTC (permalink / raw)
  To: binutils

2010/12/14 Robert Millan <rmh@gnu.org>:
>
> Please consider this new version which also includes support
> for FreeBSD.

Btw, note this is written from scratch.  FreeBSD has its own
port of binutils to FreeBSD/mips, but I didn't use that code
(or even read it).

-- 
Robert Millan

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH #1] mips*-kfreebsd-gnu support in BFD
  2010-12-14 15:43 ` Robert Millan
  2010-12-14 15:47   ` Robert Millan
@ 2010-12-18 10:27   ` Richard Sandiford
  2010-12-18 20:47     ` Robert Millan
  2010-12-23 12:10   ` Richard Sandiford
  2 siblings, 1 reply; 11+ messages in thread
From: Richard Sandiford @ 2010-12-18 10:27 UTC (permalink / raw)
  To: Robert Millan; +Cc: binutils

Robert Millan <rmh@gnu.org> writes:
> Please consider this new version which also includes support
> for FreeBSD.

OK to apply, thanks.  It's a very minor detail, but for the record...

> Index: bfd/configure.host
> ===================================================================
> RCS file: /cvs/src/src/bfd/configure.host,v
> retrieving revision 1.18
> diff -u -p -r1.18 configure.host
> --- bfd/configure.host	15 Feb 2010 19:25:47 -0000	1.18
> +++ bfd/configure.host	8 Dec 2010 20:24:09 -0000
> @@ -50,6 +50,7 @@ mips*-sgi-irix3*)	HDEFINES="-G 4" ;;
>  mips*-sgi-irix4*)	HDEFINES="-G 4" ;;
>  mips*-sgi-irix6*)	host64=true;;
>  mips64*-*-linux*)	host64=true;;
> +mips64*-*-freebsd* | mips64*-*-kfreebsd*-gnu) host64=true;;
>  mips*-*-sysv4*)		;;
>  mips*-*-sysv*)		HDEFINES="-G 4" ;;
>  mips*-*-riscos*)	HDEFINES="-G 4" ;;

...it looks like the prevailing idiom is to have one case per line,
so I wondered about asking you to change that.  However...

> Index: bfd/configure.in
> ===================================================================
> RCS file: /cvs/src/src/bfd/configure.in,v
> retrieving revision 1.288
> diff -u -p -r1.288 configure.in
> --- bfd/configure.in	5 Nov 2010 08:58:20 -0000	1.288
> +++ bfd/configure.in	8 Dec 2010 20:24:12 -0000
> @@ -748,8 +748,10 @@ do
>      bfd_elf32_msp430_vec)	tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
>      bfd_elf32_nbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
>      bfd_elf32_nlittlemips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
> -    bfd_elf32_ntradbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
> -    bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
> +    bfd_elf32_ntradbigmips_vec | bfd_elf32_ntradbigmips_freebsd_vec)
> +				tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
> +    bfd_elf32_ntradlittlemips_vec | bfd_elf32_ntradlittlemips_freebsd_vec)
> +				tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;

...the same is really true here, and it's led to horrible cut-&-paste.
With all these duplicated lists, it's pain to update when you add a new
object dependency.  So, I agree what you've done here is the right thing,
and so we might as well do the same in configure.host.

Richard

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH #1] mips*-kfreebsd-gnu support in BFD
  2010-12-18 10:27   ` Richard Sandiford
@ 2010-12-18 20:47     ` Robert Millan
  2010-12-19  9:53       ` Richard Sandiford
  0 siblings, 1 reply; 11+ messages in thread
From: Robert Millan @ 2010-12-18 20:47 UTC (permalink / raw)
  To: binutils, rdsandiford

Hi Richard,

2010/12/18 Richard Sandiford <rdsandiford@googlemail.com>:
> ...the same is really true here, and it's led to horrible cut-&-paste.
> With all these duplicated lists, it's pain to update when you add a new
> object dependency.  So, I agree what you've done here is the right thing,
> and so we might as well do the same in configure.host.

You mean unify them with "mips64*-*-linux*" ?

-- 
Robert Millan

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH #1] mips*-kfreebsd-gnu support in BFD
  2010-12-18 20:47     ` Robert Millan
@ 2010-12-19  9:53       ` Richard Sandiford
  0 siblings, 0 replies; 11+ messages in thread
From: Richard Sandiford @ 2010-12-19  9:53 UTC (permalink / raw)
  To: Robert Millan; +Cc: binutils

Robert Millan <rmh@gnu.org> writes:
> Hi Richard,
> 2010/12/18 Richard Sandiford <rdsandiford@googlemail.com>:
>> ...the same is really true here, and it's led to horrible cut-&-paste.
>> With all these duplicated lists, it's pain to update when you add a new
>> object dependency.  So, I agree what you've done here is the right thing,
>> and so we might as well do the same in configure.host.
>
> You mean unify them with "mips64*-*-linux*" ?

I meant that the patch had:

   mips64*-*-freebsd* | mips64*-*-kfreebsd*-gnu) ... ;;

in configure.host, whereas the prevailing style seemed to be:

   mips64*-*-freebsd*) ... ;;
   mips64*-*-kfreebsd*-gnu) ... ;;

Same for bfd_elf32_ntradlittlemips_vec and
bfd_elf32_ntradlittlemips_freebsd_vec in configure.in.  But like I say,
I think the patch does the right thing.  I was just trying to say that
I'd thought about the style issues, in case someone thought I wasn't
paying attention. :-)

I'll apply the three patches once the new GAS one's ready.

Richard

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH #1] mips*-kfreebsd-gnu support in BFD
  2010-12-14 15:43 ` Robert Millan
  2010-12-14 15:47   ` Robert Millan
  2010-12-18 10:27   ` Richard Sandiford
@ 2010-12-23 12:10   ` Richard Sandiford
  2010-12-23 19:55     ` Robert Millan
  2 siblings, 1 reply; 11+ messages in thread
From: Richard Sandiford @ 2010-12-23 12:10 UTC (permalink / raw)
  To: Robert Millan; +Cc: binutils

Hi Robert,

I was in the process of applying your patches, and noticed that the
config.bfd entry doesn't look quite right.

Robert Millan <rmh@gnu.org> writes:
> @@ -1015,6 +1015,16 @@ case "${targ}" in
>      targ_selvecs="bfd_elf32_tradlittlemips_vec ecoff_big_vec ecoff_little_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec"
>      want64=true
>      ;;
> +  mips*el-*-freebsd* | mips*el-*-kfreebsd*-gnu)
> +    targ_defvec=bfd_elf32_tradlittlemips_freebsd_vec
> +    targ_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradbigmips_freebsd_vec bfd_elf32_tradlittlemips_freebsd_vec bfd_elf32_tradbigmips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec"
> +    want64=true

Here you've got bfd_elf32_ntradlittlemips_vec twice (first and third),
no bfd_elf32_tradlittlemips_vec, and no bfd_elf32_ntradlittlemips_freebsd_vec.
Same sort of problems for the big-endian case.  This leads to a lot of errors
when running the testsuite for mips64-unknown-kfreebsd-gnu

Also, your GAS patch says that N32 is the default for mips64,
but there's no corresponding config.bfd entry that sets
bfd_elf32_ntrad*mips_freebsd_vec to be the default for
mips64*-kfreebsd-gnu.

Sorry for not picking up on this first time round.

Richard

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH #1] mips*-kfreebsd-gnu support in BFD
  2010-12-23 12:10   ` Richard Sandiford
@ 2010-12-23 19:55     ` Robert Millan
  2010-12-28 13:53       ` Robert Millan
  2010-12-31 13:52       ` Richard Sandiford
  0 siblings, 2 replies; 11+ messages in thread
From: Robert Millan @ 2010-12-23 19:55 UTC (permalink / raw)
  To: binutils, rdsandiford

[-- Attachment #1: Type: text/plain, Size: 691 bytes --]

El 23/12/10 12:19:40, en/na Richard Sandiford va escriure:
> Here you've got bfd_elf32_ntradlittlemips_vec twice (first and 
> third),
> no bfd_elf32_tradlittlemips_vec, and no
> bfd_elf32_ntradlittlemips_freebsd_vec.
> Same sort of problems for the big-endian case.  This leads to a lot 
> of
> errors
> when running the testsuite for mips64-unknown-kfreebsd-gnu
> 
> Also, your GAS patch says that N32 is the default for mips64,
> but there's no corresponding config.bfd entry that sets
> bfd_elf32_ntrad*mips_freebsd_vec to be the default for
> mips64*-kfreebsd-gnu.

Here's a new patch.  Sorry for the oversight (it's
difficult to keep track of so many vector names).


[-- Attachment #2: bfd_mips-kfreebsd-gnu.diff --]
[-- Type: text/x-patch, Size: 14251 bytes --]

2010-12-23  Robert Millan  <rmh@gnu.org>

	* bfd/config.bfd: Recognize mips-freebsd and mips-kfreebsd-gnu.
	* bfd/configure.host: Likewise.
	* bfd/configure.in: Support for `bfd_elf32_ntradbigmips_freebsd_vec',
	`bfd_elf32_ntradlittlemips_freebsd_vec',
	`bfd_elf32_tradbigmips_freebsd_vec',
	`bfd_elf32_tradlittlemips_freebsd_vec',
	`bfd_elf64_tradbigmips_freebsd_vec' and
	`bfd_elf64_tradlittlemips_freebsd_vec'.
	* bfd/configure: Regenerate.
	* bfd/elf32-mips.c: New target for FreeBSD support
	(same as traditional MIPS but overrides ELF_OSABI
	with ELFOSABI_FREEBSD).
	* bfd/elf64-mips.c: Likewise.
	* bfd/elfn32-mips.c: Likewise.
	* bfd/targets.c (_bfd_target_vector): Add
	`bfd_elf32_ntradbigmips_freebsd_vec',
	`bfd_elf32_ntradlittlemips_freebsd_vec',
	`bfd_elf32_tradbigmips_freebsd_vec',
	`bfd_elf32_tradlittlemips_freebsd_vec',
	`bfd_elf64_tradbigmips_freebsd_vec' and
	`bfd_elf64_tradlittlemips_freebsd_vec'.

diff -Nur -x configure src.old/bfd/config.bfd src/bfd/config.bfd
--- src.old/bfd/config.bfd	2010-12-10 02:03:13.000000000 +0100
+++ src/bfd/config.bfd	2010-12-23 16:37:39.000000000 +0100
@@ -1016,6 +1016,40 @@
     want64=true
     ;;
 #ifdef BFD64
+  mips64*el-*-freebsd* | mips64*el-*-kfreebsd*-gnu)
+    # FreeBSD vectors
+    targ_defvec=bfd_elf32_ntradlittlemips_freebsd_vec
+    targ_selvecs="bfd_elf32_ntradbigmips_freebsd_vec bfd_elf32_tradlittlemips_freebsd_vec bfd_elf32_tradbigmips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec"
+    # Generic vectors
+    targ_selvecs="${targ_selvecs} bfd_elf32_ntradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec"
+    want64=true
+    ;;
+  mips64*-*-freebsd* | mips64*-*-kfreebsd*-gnu)
+    # FreeBSD vectors
+    targ_defvec=bfd_elf32_ntradbigmips_freebsd_vec
+    targ_selvecs="bfd_elf32_ntradlittlemips_freebsd_vec bfd_elf32_tradbigmips_freebsd_vec bfd_elf32_tradlittlemips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec"
+    # Generic vectors
+    targ_selvecs="${targ_selvecs} bfd_elf32_ntradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec"
+    want64=true
+    ;;
+#endif
+  mips*el-*-freebsd* | mips*el-*-kfreebsd*-gnu)
+    # FreeBSD vectors
+    targ_defvec=bfd_elf32_tradlittlemips_freebsd_vec
+    targ_selvecs="bfd_elf32_tradbigmips_freebsd_vec bfd_elf32_ntradlittlemips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec bfd_elf32_ntradbigmips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec"
+    # Generic vectors
+    targ_selvecs="${targ_selvecs} bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec"
+    want64=true
+    ;;
+  mips*-*-freebsd* | mips*-*-kfreebsd*-gnu)
+    # FreeBSD vectors
+    targ_defvec=bfd_elf32_tradbigmips_freebsd_vec
+    targ_selvecs="bfd_elf32_tradlittlemips_freebsd_vec bfd_elf32_ntradbigmips_freebsd_vec bfd_elf64_tradbigmips_freebsd_vec bfd_elf32_ntradlittlemips_freebsd_vec bfd_elf64_tradlittlemips_freebsd_vec"
+    # Generic vectors
+    targ_selvecs="${targ_selvecs} bfd_elf32_tradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec"
+    want64=true
+    ;;
+#ifdef BFD64
   mmix-*-*)
     targ_defvec=bfd_elf64_mmix_vec
     targ_selvecs=bfd_mmo_vec
diff -Nur -x configure src.old/bfd/configure.host src/bfd/configure.host
--- src.old/bfd/configure.host	2010-02-15 20:25:47.000000000 +0100
+++ src/bfd/configure.host	2010-12-23 16:15:18.000000000 +0100
@@ -50,6 +50,7 @@
 mips*-sgi-irix4*)	HDEFINES="-G 4" ;;
 mips*-sgi-irix6*)	host64=true;;
 mips64*-*-linux*)	host64=true;;
+mips64*-*-freebsd* | mips64*-*-kfreebsd*-gnu) host64=true;;
 mips*-*-sysv4*)		;;
 mips*-*-sysv*)		HDEFINES="-G 4" ;;
 mips*-*-riscos*)	HDEFINES="-G 4" ;;
diff -Nur -x configure src.old/bfd/configure.in src/bfd/configure.in
--- src.old/bfd/configure.in	2010-11-05 09:58:20.000000000 +0100
+++ src/bfd/configure.in	2010-12-23 16:15:18.000000000 +0100
@@ -748,8 +748,10 @@
     bfd_elf32_msp430_vec)	tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
     bfd_elf32_nbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf32_nlittlemips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_ntradbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf32_ntradlittlemips_vec) tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_ntradbigmips_vec | bfd_elf32_ntradbigmips_freebsd_vec)
+				tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf32_ntradlittlemips_vec | bfd_elf32_ntradlittlemips_freebsd_vec)
+				tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf32_openrisc_vec)	tb="$tb elf32-openrisc.lo elf32.lo $elf" ;;
     bfd_elf32_or32_big_vec)	tb="$tb elf32-or32.lo elf32.lo $elf" ;;
     bfd_elf32_pj_vec)           tb="$tb elf32-pj.lo elf32.lo $elf";;
@@ -788,8 +790,10 @@
     bfd_elf32_spu_vec)		tb="$tb elf32-spu.lo elf32.lo $elf" ;;
     bfd_elf32_tic6x_be_vec)	tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
     bfd_elf32_tic6x_le_vec)	tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
-    bfd_elf32_tradbigmips_vec)  tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
-    bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_tradbigmips_vec | bfd_elf32_tradbigmips_freebsd_vec)
+				tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
+    bfd_elf32_tradlittlemips_vec | bfd_elf32_tradlittlemips_freebsd_vec)
+				tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
     bfd_elf32_us_cris_vec)	tb="$tb elf32-cris.lo elf32.lo $elf" ;;
     bfd_elf32_v850_vec)		tb="$tb elf32-v850.lo elf32.lo $elf" ;;
     bfd_elf32_vax_vec)		tb="$tb elf32-vax.lo elf32.lo $elf" ;;
@@ -822,8 +826,10 @@
     bfd_elf64_sparc_vec)	tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_sparc_freebsd_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_sparc_sol2_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
-    bfd_elf64_tradbigmips_vec)	tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-    bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_tradbigmips_vec | bfd_elf64_tradbigmips_freebsd_vec)
+				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
+    bfd_elf64_tradlittlemips_vec | bfd_elf64_tradlittlemips_freebsd_vec)
+				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
     bfd_elf64_x86_64_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_x86_64_sol2_vec)  tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
diff -Nur -x configure src.old/bfd/elf32-mips.c src/bfd/elf32-mips.c
--- src.old/bfd/elf32-mips.c	2010-08-25 16:53:42.000000000 +0200
+++ src/bfd/elf32-mips.c	2010-12-23 16:15:18.000000000 +0100
@@ -1725,6 +1725,37 @@
 /* Include the target file again for this target.  */
 #include "elf32-target.h"
 
+/* FreeBSD support.  */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+#undef TARGET_BIG_SYM
+#undef TARGET_BIG_NAME
+
+#define	TARGET_LITTLE_SYM		bfd_elf32_tradlittlemips_freebsd_vec
+#define	TARGET_LITTLE_NAME		"elf32-tradlittlemips-freebsd"
+#define	TARGET_BIG_SYM			bfd_elf32_tradbigmips_freebsd_vec
+#define	TARGET_BIG_NAME			"elf32-tradbigmips-freebsd"
+
+#undef	ELF_OSABI
+#define	ELF_OSABI			ELFOSABI_FREEBSD
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void
+elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
+{
+  _bfd_elf_set_osabi (abfd, info);
+}
+
+#undef	elf_backend_post_process_headers
+#define	elf_backend_post_process_headers	elf_fbsd_post_process_headers
+#undef	elf32_bed
+#define elf32_bed				elf32_fbsd_tradbed
+
+#include "elf32-target.h"
 /* Implement elf_backend_final_write_processing for VxWorks.  */
 
 static void
diff -Nur -x configure src.old/bfd/elf64-mips.c src/bfd/elf64-mips.c
--- src.old/bfd/elf64-mips.c	2010-10-04 16:13:09.000000000 +0200
+++ src/bfd/elf64-mips.c	2010-12-23 16:15:18.000000000 +0100
@@ -3354,3 +3354,36 @@
 
 /* Include the target file again for this target.  */
 #include "elf64-target.h"
+
+
+/* FreeBSD support.  */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+#undef TARGET_BIG_SYM
+#undef TARGET_BIG_NAME
+
+#define	TARGET_LITTLE_SYM		bfd_elf64_tradlittlemips_freebsd_vec
+#define	TARGET_LITTLE_NAME		"elf64-tradlittlemips-freebsd"
+#define	TARGET_BIG_SYM			bfd_elf64_tradbigmips_freebsd_vec
+#define	TARGET_BIG_NAME			"elf64-tradbigmips-freebsd"
+
+#undef	ELF_OSABI
+#define	ELF_OSABI			ELFOSABI_FREEBSD
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void
+elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
+{
+  _bfd_elf_set_osabi (abfd, info);
+}
+
+#undef	elf_backend_post_process_headers
+#define	elf_backend_post_process_headers	elf_fbsd_post_process_headers
+#undef	elf64_bed
+#define elf64_bed				elf64_fbsd_tradbed
+
+#include "elf64-target.h"
diff -Nur -x configure src.old/bfd/elfn32-mips.c src/bfd/elfn32-mips.c
--- src.old/bfd/elfn32-mips.c	2010-08-25 16:53:45.000000000 +0200
+++ src/bfd/elfn32-mips.c	2010-12-23 16:15:18.000000000 +0100
@@ -2547,3 +2547,36 @@
 
 /* Include the target file again for this target.  */
 #include "elf32-target.h"
+
+
+/* FreeBSD support.  */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+#undef TARGET_BIG_SYM
+#undef TARGET_BIG_NAME
+
+#define	TARGET_LITTLE_SYM		bfd_elf32_ntradlittlemips_freebsd_vec
+#define	TARGET_LITTLE_NAME		"elf32-ntradlittlemips-freebsd"
+#define	TARGET_BIG_SYM			bfd_elf32_ntradbigmips_freebsd_vec
+#define	TARGET_BIG_NAME			"elf32-ntradbigmips-freebsd"
+
+#undef	ELF_OSABI
+#define	ELF_OSABI			ELFOSABI_FREEBSD
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void
+elf_fbsd_post_process_headers (bfd *abfd, struct bfd_link_info *info)
+{
+  _bfd_elf_set_osabi (abfd, info);
+}
+
+#undef	elf_backend_post_process_headers
+#define	elf_backend_post_process_headers	elf_fbsd_post_process_headers
+#undef	elf32_bed
+#define elf32_bed				elf32_fbsd_tradbed
+
+#include "elf32-target.h"
diff -Nur -x configure src.old/bfd/targets.c src/bfd/targets.c
--- src.old/bfd/targets.c	2010-10-22 14:08:28.000000000 +0200
+++ src/bfd/targets.c	2010-12-23 16:15:18.000000000 +0100
@@ -646,6 +646,8 @@
 extern const bfd_target bfd_elf32_nlittlemips_vec;
 extern const bfd_target bfd_elf32_ntradbigmips_vec;
 extern const bfd_target bfd_elf32_ntradlittlemips_vec;
+extern const bfd_target bfd_elf32_ntradbigmips_freebsd_vec;
+extern const bfd_target bfd_elf32_ntradlittlemips_freebsd_vec;
 extern const bfd_target bfd_elf32_openrisc_vec;
 extern const bfd_target bfd_elf32_or32_big_vec;
 extern const bfd_target bfd_elf32_pj_vec;
@@ -683,6 +685,8 @@
 extern const bfd_target bfd_elf32_tic6x_le_vec;
 extern const bfd_target bfd_elf32_tradbigmips_vec;
 extern const bfd_target bfd_elf32_tradlittlemips_vec;
+extern const bfd_target bfd_elf32_tradbigmips_freebsd_vec;
+extern const bfd_target bfd_elf32_tradlittlemips_freebsd_vec;
 extern const bfd_target bfd_elf32_us_cris_vec;
 extern const bfd_target bfd_elf32_v850_vec;
 extern const bfd_target bfd_elf32_vax_vec;
@@ -717,6 +721,8 @@
 extern const bfd_target bfd_elf64_sparc_sol2_vec;
 extern const bfd_target bfd_elf64_tradbigmips_vec;
 extern const bfd_target bfd_elf64_tradlittlemips_vec;
+extern const bfd_target bfd_elf64_tradbigmips_freebsd_vec;
+extern const bfd_target bfd_elf64_tradlittlemips_freebsd_vec;
 extern const bfd_target bfd_elf64_x86_64_freebsd_vec;
 extern const bfd_target bfd_elf64_x86_64_sol2_vec;
 extern const bfd_target bfd_elf64_x86_64_vec;
@@ -992,6 +998,8 @@
 	&bfd_elf32_nlittlemips_vec,
 	&bfd_elf32_ntradbigmips_vec,
 	&bfd_elf32_ntradlittlemips_vec,
+	&bfd_elf32_ntradbigmips_freebsd_vec,
+	&bfd_elf32_ntradlittlemips_freebsd_vec,
 #endif
 	&bfd_elf32_openrisc_vec,
 	&bfd_elf32_or32_big_vec,
@@ -1034,6 +1042,8 @@
 	&bfd_elf32_tic6x_le_vec,
 	&bfd_elf32_tradbigmips_vec,
 	&bfd_elf32_tradlittlemips_vec,
+	&bfd_elf32_tradbigmips_freebsd_vec,
+	&bfd_elf32_tradlittlemips_freebsd_vec,
 	&bfd_elf32_us_cris_vec,
 	&bfd_elf32_v850_vec,
 	&bfd_elf32_vax_vec,
@@ -1069,6 +1079,8 @@
 	&bfd_elf64_sparc_sol2_vec,
 	&bfd_elf64_tradbigmips_vec,
 	&bfd_elf64_tradlittlemips_vec,
+	&bfd_elf64_tradbigmips_freebsd_vec,
+	&bfd_elf64_tradlittlemips_freebsd_vec,
 	&bfd_elf64_x86_64_freebsd_vec,
 	&bfd_elf64_x86_64_sol2_vec,
 	&bfd_elf64_x86_64_vec,


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH #1] mips*-kfreebsd-gnu support in BFD
  2010-12-23 19:55     ` Robert Millan
@ 2010-12-28 13:53       ` Robert Millan
  2010-12-31 13:52       ` Richard Sandiford
  1 sibling, 0 replies; 11+ messages in thread
From: Robert Millan @ 2010-12-28 13:53 UTC (permalink / raw)
  To: binutils, rdsandiford

Hi Richard,

Is it good now?

2010/12/23 Robert Millan <rmh@gnu.org>:
> El 23/12/10 12:19:40, en/na Richard Sandiford va escriure:
>> Here you've got bfd_elf32_ntradlittlemips_vec twice (first and
>> third),
>> no bfd_elf32_tradlittlemips_vec, and no
>> bfd_elf32_ntradlittlemips_freebsd_vec.
>> Same sort of problems for the big-endian case.  This leads to a lot
>> of
>> errors
>> when running the testsuite for mips64-unknown-kfreebsd-gnu
>>
>> Also, your GAS patch says that N32 is the default for mips64,
>> but there's no corresponding config.bfd entry that sets
>> bfd_elf32_ntrad*mips_freebsd_vec to be the default for
>> mips64*-kfreebsd-gnu.
>
> Here's a new patch.  Sorry for the oversight (it's
> difficult to keep track of so many vector names).
>
>



-- 
Robert Millan

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH #1] mips*-kfreebsd-gnu support in BFD
  2010-12-23 19:55     ` Robert Millan
  2010-12-28 13:53       ` Robert Millan
@ 2010-12-31 13:52       ` Richard Sandiford
  2010-12-31 16:51         ` Robert Millan
  1 sibling, 1 reply; 11+ messages in thread
From: Richard Sandiford @ 2010-12-31 13:52 UTC (permalink / raw)
  To: Robert Millan; +Cc: binutils

Robert Millan <rmh@gnu.org> writes:
> Here's a new patch.  Sorry for the oversight (it's
> difficult to keep track of so many vector names).

Thanks, the new patch looks good.  A similar change was needed in
ld/configure.tgt, so I added:

mips64*el-*-freebsd-* | mips64*el-*-kfreebsd*-gnu)
			targ_emul=elf32ltsmipn32_fbsd
			targ_extra_emuls="elf32ltsmip elf32btsmip elf32ltsmipn32 elf32btsmipn32 elf64ltsmip elf64btsmip elf32ltsmip_fbsd elf32btsmip_fbsd elf32btsmipn32_fbsd elf64ltsmip_fbsd elf64btsmip_fbsd"
			targ_extra_libpath=$targ_extra_emuls ;;
mips64*-*-freebsd-* | mips64*-*-kfreebsd*-gnu)
			targ_emul=elf32btsmipn32_fbsd
			targ_extra_emuls="elf32ltsmip elf32btsmip elf32ltsmipn32 elf32btsmipn32 elf64ltsmip elf64btsmip elf32ltsmip_fbsd elf32btsmip_fbsd elf32ltsmipn32_fbsd elf64ltsmip_fbsd elf64btsmip_fbsd"
			targ_extra_libpath=$targ_extra_emuls ;;

All three patches applied with that change.  I also applied the patch
below to get the testsuite into reasonable shape.

Please check that the committed version works on a real system.

Richard


binutils/testsuite/
	* binutils-all/readelf.exp: Handle MIPS FreeBSD targets.

gas/testsuite/
	* gas/mips/e32el-rel2.d: Accept any file format.
	* gas/mips/elf-rel.d: Likewise.
	* gas/mips/elf-rel2.d: Likewise.
	* gas/mips/elf-rel3.d: Likewise.
	* gas/mips/elfel-rel.d: Likewise.
	* gas/mips/elfel-rel2.d: Likewise.
	* gas/mips/elfel-rel3.d: Likewise.
	* gas/mips/ldstla-32-mips3-shared.d: Likewise.
	* gas/mips/ldstla-32-mips3.d: Likewise.
	* gas/mips/ldstla-32-shared.d: Likewise.
	* gas/mips/ldstla-32.d: Likewise.
	* gas/mips/ldstla-n64-shared.d: Likewise.
	* gas/mips/ldstla-n64.d: Likewise.
	* gas/mips/noat-1.d: Likewise.
	* gas/mips/set-arch.d: Likewise.
	* gas/mips/tls-o32.d: Likewise.

ld/testsuite/
	* ld-mips-elf/mips-elf-flags.exp: Handle FreeBSD targets.
	* ld-mips-elf/mips-elf.exp: Likewise.
	* ld-mips-elf/mips16-call-global.d: Accept any file format.
	* ld-mips-elf/mips16-intermix.d: Likewise.

Index: binutils/testsuite/binutils-all/readelf.exp
===================================================================
--- binutils/testsuite/binutils-all/readelf.exp	2010-12-31 10:52:04.000000000 +0000
+++ binutils/testsuite/binutils-all/readelf.exp	2010-12-31 10:52:18.000000000 +0000
@@ -101,7 +101,9 @@ proc readelf_test { options binary_file
 
     set target_machine ""
     if [istarget "mips*-*-*"] then {
-	if { [istarget "mips*-*-*linux*"] || [istarget "mips*-sde-elf*"] } then {
+	if { [istarget "mips*-*-*linux*"]
+	     || [istarget "mips*-sde-elf*"]
+	     || [istarget "mips*-*freebsd*"] } then {
 	    set target_machine tmips
 	} else {
 	    set target_machine mips
Index: gas/testsuite/gas/mips/e32el-rel2.d
===================================================================
--- gas/testsuite/gas/mips/e32el-rel2.d	2010-12-31 10:42:49.000000000 +0000
+++ gas/testsuite/gas/mips/e32el-rel2.d	2010-12-31 10:42:58.000000000 +0000
@@ -7,7 +7,7 @@
 # FIXME: really this should check that the contents of .sdata, .lit4,
 # and .lit8 are correct too.
 
-.*:     file format elf.*mips
+.*:     file format .*
 
 RELOCATION RECORDS FOR \[\.text\]:
 OFFSET [ ]+ TYPE              VALUE 
Index: gas/testsuite/gas/mips/elf-rel.d
===================================================================
--- gas/testsuite/gas/mips/elf-rel.d	2010-12-31 10:43:47.000000000 +0000
+++ gas/testsuite/gas/mips/elf-rel.d	2010-12-31 10:44:04.000000000 +0000
@@ -4,7 +4,7 @@
 
 # Test the HI16/LO16 generation.
 
-.*:     file format elf.*mips
+.*:     file format .*
 
 RELOCATION RECORDS FOR \[\.text\]:
 OFFSET [ ]+ TYPE              VALUE 
Index: gas/testsuite/gas/mips/elf-rel2.d
===================================================================
--- gas/testsuite/gas/mips/elf-rel2.d	2010-12-31 10:43:46.000000000 +0000
+++ gas/testsuite/gas/mips/elf-rel2.d	2010-12-31 10:43:52.000000000 +0000
@@ -6,7 +6,7 @@
 # FIXME: really this should check that the contents of .sdata, .lit4,
 # and .lit8 are correct too.
 
-.*:     file format elf.*mips
+.*:     file format .*
 
 RELOCATION RECORDS FOR \[\.text\]:
 OFFSET [ ]+ TYPE              VALUE 
Index: gas/testsuite/gas/mips/elf-rel3.d
===================================================================
--- gas/testsuite/gas/mips/elf-rel3.d	2010-12-31 10:43:46.000000000 +0000
+++ gas/testsuite/gas/mips/elf-rel3.d	2010-12-31 10:43:56.000000000 +0000
@@ -2,7 +2,7 @@
 #name: MIPS ELF reloc 3
 #as: -32
 
-.*:     file format elf.*mips
+.*:     file format .*
 
 RELOCATION RECORDS FOR \[\.data\]:
 OFFSET [ ]+ TYPE              VALUE 
Index: gas/testsuite/gas/mips/elfel-rel.d
===================================================================
--- gas/testsuite/gas/mips/elfel-rel.d	2010-12-31 10:43:28.000000000 +0000
+++ gas/testsuite/gas/mips/elfel-rel.d	2010-12-31 10:43:39.000000000 +0000
@@ -5,7 +5,7 @@
 
 # Test the HI16/LO16 generation.
 
-.*:     file format elf.*mips
+.*:     file format .*
 
 RELOCATION RECORDS FOR \[\.text\]:
 OFFSET [ ]+ TYPE              VALUE 
Index: gas/testsuite/gas/mips/elfel-rel2.d
===================================================================
--- gas/testsuite/gas/mips/elfel-rel2.d	2010-12-31 10:43:28.000000000 +0000
+++ gas/testsuite/gas/mips/elfel-rel2.d	2010-12-31 10:43:32.000000000 +0000
@@ -7,7 +7,7 @@
 # FIXME: really this should check that the contents of .sdata, .lit4,
 # and .lit8 are correct too.
 
-.*:     file format elf.*mips
+.*:     file format .*
 
 RELOCATION RECORDS FOR \[\.text\]:
 OFFSET [ ]+ TYPE              VALUE 
Index: gas/testsuite/gas/mips/elfel-rel3.d
===================================================================
--- gas/testsuite/gas/mips/elfel-rel3.d	2010-12-31 10:43:28.000000000 +0000
+++ gas/testsuite/gas/mips/elfel-rel3.d	2010-12-31 10:43:36.000000000 +0000
@@ -3,7 +3,7 @@
 #source: elf-rel3.s
 #as: -32
 
-.*:     file format elf.*mips
+.*:     file format .*
 
 RELOCATION RECORDS FOR \[\.data\]:
 OFFSET [ ]+ TYPE              VALUE 
Index: gas/testsuite/gas/mips/ldstla-32-mips3-shared.d
===================================================================
--- gas/testsuite/gas/mips/ldstla-32-mips3-shared.d	2010-12-31 10:41:14.000000000 +0000
+++ gas/testsuite/gas/mips/ldstla-32-mips3-shared.d	2010-12-31 10:41:31.000000000 +0000
@@ -3,7 +3,7 @@
 #name: MIPS ld-st-la constants (ABI o32, mips3, shared)
 #source: ldstla-32-mips3.s
 
-.*: +file format elf32-.*mips
+.*: +file format .*
 
 Disassembly of section \.text:
 
Index: gas/testsuite/gas/mips/ldstla-32-mips3.d
===================================================================
--- gas/testsuite/gas/mips/ldstla-32-mips3.d	2010-12-31 10:41:14.000000000 +0000
+++ gas/testsuite/gas/mips/ldstla-32-mips3.d	2010-12-31 10:41:26.000000000 +0000
@@ -3,7 +3,7 @@
 #name: MIPS ld-st-la constants (ABI o32, mips3)
 #source: ldstla-32-mips3.s
 
-.*: +file format elf32-.*mips
+.*: +file format .*
 
 Disassembly of section \.text:
 
Index: gas/testsuite/gas/mips/ldstla-32-shared.d
===================================================================
--- gas/testsuite/gas/mips/ldstla-32-shared.d	2010-12-31 10:41:14.000000000 +0000
+++ gas/testsuite/gas/mips/ldstla-32-shared.d	2010-12-31 10:41:37.000000000 +0000
@@ -3,7 +3,7 @@
 #name: MIPS ld-st-la constants (ABI o32, shared)
 #source: ldstla-32.s
 
-.*: +file format elf32-.*mips
+.*: +file format .*
 
 Disassembly of section \.text:
 
Index: gas/testsuite/gas/mips/ldstla-32.d
===================================================================
--- gas/testsuite/gas/mips/ldstla-32.d	2010-12-31 10:41:14.000000000 +0000
+++ gas/testsuite/gas/mips/ldstla-32.d	2010-12-31 10:41:21.000000000 +0000
@@ -3,7 +3,7 @@
 #name: MIPS ld-st-la constants (ABI o32)
 #source: ldstla-32.s
 
-.*: +file format elf32-.*mips
+.*: +file format .*
 
 Disassembly of section \.text:
 
Index: gas/testsuite/gas/mips/ldstla-n64-shared.d
===================================================================
--- gas/testsuite/gas/mips/ldstla-n64-shared.d	2010-12-31 10:41:15.000000000 +0000
+++ gas/testsuite/gas/mips/ldstla-n64-shared.d	2010-12-31 10:41:49.000000000 +0000
@@ -3,7 +3,7 @@
 #name: MIPS ld-st-la constants (ABI n64, shared)
 #source: ldstla-n64.s
 
-.*: +file format elf64-.*mips
+.*: +file format .*
 
 Disassembly of section \.text:
 
Index: gas/testsuite/gas/mips/ldstla-n64.d
===================================================================
--- gas/testsuite/gas/mips/ldstla-n64.d	2010-12-31 10:41:15.000000000 +0000
+++ gas/testsuite/gas/mips/ldstla-n64.d	2010-12-31 10:41:43.000000000 +0000
@@ -3,7 +3,7 @@
 #name: MIPS ld-st-la constants (ABI n64)
 #source: ldstla-n64.s
 
-.*: +file format elf64-.*mips
+.*: +file format .*
 
 Disassembly of section \.text:
 
Index: gas/testsuite/gas/mips/noat-1.d
===================================================================
--- gas/testsuite/gas/mips/noat-1.d	2010-12-31 10:44:11.000000000 +0000
+++ gas/testsuite/gas/mips/noat-1.d	2010-12-31 10:44:16.000000000 +0000
@@ -1,7 +1,7 @@
 #as: -32 -mips1
 #objdump: -dr
 
-.*: +file format .*mips
+.*: +file format .*
 
 Disassembly of section \.text:
 
Index: gas/testsuite/gas/mips/set-arch.d
===================================================================
--- gas/testsuite/gas/mips/set-arch.d	2010-12-31 10:42:03.000000000 +0000
+++ gas/testsuite/gas/mips/set-arch.d	2010-12-31 10:42:07.000000000 +0000
@@ -2,7 +2,7 @@
 #name: .set arch=FOO
 #stderr: set-arch.l
 
-dump\.o:     file format .*mips
+dump\.o:     file format .*
 
 Disassembly of section \.text:
 00000000 <[^>]*> bc010000 	cache	0x1,0\(zero\)
Index: gas/testsuite/gas/mips/tls-o32.d
===================================================================
--- gas/testsuite/gas/mips/tls-o32.d	2010-12-31 10:42:17.000000000 +0000
+++ gas/testsuite/gas/mips/tls-o32.d	2010-12-31 10:42:23.000000000 +0000
@@ -2,7 +2,7 @@
 #objdump: -dr
 #name: MIPS ELF TLS o32
 
-dump.o:     file format elf32-.*bigmips
+dump.o:     file format .*
 
 Disassembly of section .text:
 
Index: ld/testsuite/ld-mips-elf/mips-elf-flags.exp
===================================================================
--- ld/testsuite/ld-mips-elf/mips-elf-flags.exp	2010-12-31 10:31:43.000000000 +0000
+++ ld/testsuite/ld-mips-elf/mips-elf-flags.exp	2010-12-31 10:35:37.000000000 +0000
@@ -28,6 +28,10 @@ if {[istarget mips*-*-irix6*]} {
     set ldemul "-melf32ltsmip"
 } elseif {[istarget mips*-*-linux*]} {
     set ldemul "-melf32btsmip"
+} elseif {[istarget mips*el-*-*freebsd*]} {
+    set ldemul "-melf32ltsmip_fbsd"
+} elseif {[istarget mips*-*-*freebsd*]} {
+    set ldemul "-melf32btsmip_fbsd"
 } else {
     set ldemul ""
 }
Index: ld/testsuite/ld-mips-elf/mips-elf.exp
===================================================================
--- ld/testsuite/ld-mips-elf/mips-elf.exp	2010-12-31 10:37:19.000000000 +0000
+++ ld/testsuite/ld-mips-elf/mips-elf.exp	2010-12-31 10:37:44.000000000 +0000
@@ -109,6 +109,9 @@ if { $linux_gnu } {
 if { [istarget mips64*-linux-gnu] } {
     set o32_as_flags "-32 -EB"
     set o32_ld_flags "-melf32btsmip"
+} elseif { [istarget mips64*-*freebsd*] } {
+    set o32_as_flags "-32 -EB"
+    set o32_ld_flags "-melf32btsmip_fbsd"
 } else {
     set o32_as_flags ""
     set o32_ld_flags ""
Index: ld/testsuite/ld-mips-elf/mips16-call-global.d
===================================================================
--- ld/testsuite/ld-mips-elf/mips16-call-global.d	2010-12-31 10:38:45.000000000 +0000
+++ ld/testsuite/ld-mips-elf/mips16-call-global.d	2010-12-31 10:39:02.000000000 +0000
@@ -1,5 +1,5 @@
 
-.*:     file format elf.*mips
+.*:     file format .*
 
 Disassembly of section .text:
 
Index: ld/testsuite/ld-mips-elf/mips16-intermix.d
===================================================================
--- ld/testsuite/ld-mips-elf/mips16-intermix.d	2010-12-31 10:38:26.000000000 +0000
+++ ld/testsuite/ld-mips-elf/mips16-intermix.d	2010-12-31 10:39:05.000000000 +0000
@@ -1,5 +1,5 @@
 
-.*: +file format elf.*mips
+.*: +file format .*
 
 SYMBOL TABLE:
 #...

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH #1] mips*-kfreebsd-gnu support in BFD
  2010-12-31 13:52       ` Richard Sandiford
@ 2010-12-31 16:51         ` Robert Millan
  0 siblings, 0 replies; 11+ messages in thread
From: Robert Millan @ 2010-12-31 16:51 UTC (permalink / raw)
  To: Robert Millan, binutils, rdsandiford

2010/12/31 Richard Sandiford <rdsandiford@googlemail.com>:
> All three patches applied with that change.  I also applied the patch
> below to get the testsuite into reasonable shape.
>
> Please check that the committed version works on a real system.

Thank you.  It works fine for a cross mipsel-kfreebsd-gnu target.
I'll ask freebsd-mips community to test it for mips*-freebsd as well.

Btw, I did not dare submit a patch, because I have no way to test
it, but I suspect the following kludge in gas/config/tc-mips.c:

#ifdef TE_VXWORKS
      if (!HAVE_64BIT_OBJECTS && !HAVE_NEWABI)
        return (target_big_endian
                ? "elf32-bigmips-vxworks"
                : "elf32-littlemips-vxworks");
#endif

was added to solve the same problem we had with
TE_FreeBSD, and that your solution (ELF_TARGET macro)
can also be used for TE_VXWORKS case.

Best regards

-- 
Robert Millan

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2010-12-31 15:00 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-13 18:20 [PATCH #1] mips*-kfreebsd-gnu support in BFD Robert Millan
2010-12-14 15:43 ` Robert Millan
2010-12-14 15:47   ` Robert Millan
2010-12-18 10:27   ` Richard Sandiford
2010-12-18 20:47     ` Robert Millan
2010-12-19  9:53       ` Richard Sandiford
2010-12-23 12:10   ` Richard Sandiford
2010-12-23 19:55     ` Robert Millan
2010-12-28 13:53       ` Robert Millan
2010-12-31 13:52       ` Richard Sandiford
2010-12-31 16:51         ` Robert Millan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).