* [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).