Re: [PATCH] GNU/kFreeBSD systems running on MIPS
Hi! 2011/7/26 Rainer Orth : > Robert, > >> 2011/7/25 Richard Sandiford : >>> Robert Millan writes: >>>> This patch adds support for GNU/kFreeBSD systems running on MIPS. >>> >>> Looks good. However, Rainer's in the middle of moving things from gcc/ >>> to libgcc/ -- where they belong -- and committing a new port now would >>> interfere with that. If it's OK, I'd like to hold off applying this >>> until Rainer's finished his changes. > I'm in the middle of moving shlib support (another day), need to rebase > crtstuff and libgcc1, and finish libgcc2. My patch still applies cleanly to current HEAD, has this migration happened already? If not, what's the current ETA? I'll have almost no spare time after this week, I'd like to sort this out before/during the weekend if possible. Thanks! -- Robert Millan
Re: [PATCH] GNU/kFreeBSD systems running on MIPS
Hi there, 2011/8/17 Rainer Orth : > Hi Robert, > >> My patch still applies cleanly to current HEAD, has this migration >> happened already? If not, what's the current ETA? I'll have almost >> no spare time after this week, I'd like to sort this out before/during >> the weekend if possible. > > all the relevant patches have been posted by now. One needs a bit work, > the others are awaiting review. Is there any news about this? -- Robert Millan
[PATCH] small build fix
This small patch fixes a build regression on GNU/kFreeBSD. -- Robert Millan 2011-12-19 Robert Millan Fix build regression on GNU/kFreeBSD. * config/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKERX32): New macro. --- a/src/gcc/config/kfreebsd-gnu.h~ 2011-07-21 17:31:44.0 +0200 +++ b/src/gcc/config/kfreebsd-gnu.h 2011-12-19 20:20:26.961301396 +0100 @@ -33,3 +33,4 @@ #define GNU_USER_DYNAMIC_LINKERGLIBC_DYNAMIC_LINKER #define GNU_USER_DYNAMIC_LINKER32 GLIBC_DYNAMIC_LINKER32 #define GNU_USER_DYNAMIC_LINKER64 GLIBC_DYNAMIC_LINKER64 +#define GNU_USER_DYNAMIC_LINKERX32 GLIBC_DYNAMIC_LINKERX32
PING: Re: [PATCH] small build fix
El 19 de desembre de 2011 21:04, Robert Millan ha escrit: > This small patch fixes a build regression on GNU/kFreeBSD. Ping! -- Robert Millan
Re: PING: Re: [PATCH] small build fix
El 27 de desembre de 2011 12:25, Robert Millan ha escrit: > El 19 de desembre de 2011 21:04, Robert Millan ha escrit: >> This small patch fixes a build regression on GNU/kFreeBSD. > > Ping! Ping again. Please note that Gerald Pfeifer has volunteered to commit the patch once it is approved. -- Robert Millan 2011-12-19 Robert Millan Fix build regression on GNU/kFreeBSD. * config/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKERX32): New macro. --- a/src/gcc/config/kfreebsd-gnu.h~2011-07-21 17:31:44.0 +0200 +++ b/src/gcc/config/kfreebsd-gnu.h 2011-12-19 20:20:26.961301396 +0100 @@ -33,3 +33,4 @@ #define GNU_USER_DYNAMIC_LINKERGLIBC_DYNAMIC_LINKER #define GNU_USER_DYNAMIC_LINKER32 GLIBC_DYNAMIC_LINKER32 #define GNU_USER_DYNAMIC_LINKER64 GLIBC_DYNAMIC_LINKER64 +#define GNU_USER_DYNAMIC_LINKERX32 GLIBC_DYNAMIC_LINKERX32
Re: PING: Re: [PATCH] small build fix
El 21 de gener de 2012 20:36, Gerald Pfeifer ha escrit: > On Mon, 16 Jan 2012, Jakub Jelinek wrote: >> Ok. > > I also updated the copyright year and whitespace for a different > #define and applied the patch below to trunk. > > Thanks for the review (and patch)! Thanks to you! Best regards -- Robert Millan
[PATCH] disable __size_t macro on GNU/kFreeBSD
Hi, Please consider this patch to stddef.h. GNU/kFreeBSD has the same problem with __size_t as FreeBSD does, since it inherits many kernel headers from FreeBSD. -- Robert Millan 2012-01-29 Robert Millan * ginclude/stddef.h [__FreeBSD_kernel__] (__size_t): Do not define. Index: ginclude/stddef.h === --- ginclude/stddef.h (revision 183670) +++ ginclude/stddef.h (working copy) @@ -200,7 +200,7 @@ #define ___int_size_t_h #define _GCC_SIZE_T #define _SIZET_ -#if defined (__FreeBSD__) && (__FreeBSD__ >= 5) +#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) || defined(__FreeBSD_kernel__) /* __size_t is a typedef on FreeBSD 5!, must not trash it. */ #else #define __size_t
Re: [PATCH] disable __size_t macro on GNU/kFreeBSD
El 1 de febrer de 2012 1:06, Mike Stump ha escrit: > On Jan 31, 2012, at 2:29 PM, Gerald Pfeifer wrote: >> On Sun, 29 Jan 2012, Robert Millan wrote: >>> Please consider this patch to stddef.h. GNU/kFreeBSD has the same >>> problem with __size_t as FreeBSD does, since it inherits many kernel >>> headers from FreeBSD. >> >> The patch looks obvious to me, and I'll be happy to apply for >> Robert if approved. Any taker? > > Looks obvious to me as well. I'd say let's put it in... Is this patch approved, then? -- Robert Millan
Re: [PATCH] disable __size_t macro on GNU/kFreeBSD
El 6 de febrer de 2012 19:31, Mike Stump ha escrit: >>> Looks obvious to me as well. I'd say let's put it in... >> >> Is this patch approved, then? > > I've not seen anyone approve it yet. I'm not a maintainer for that area, so, > I cannot. Who can approve it? Looking at the maintainers file it's not clear to me which area does this belong to. -- Robert Millan
Re: [PATCH] disable __size_t macro on GNU/kFreeBSD
El 12 de febrer de 2012 1:09, Gerald Pfeifer ha escrit: > Given that both Mike and me considered this patch on the obvious > side, I now committed the following variation thereof on trunk. Thanks! -- Robert Millan
PING^2 [PATCH] Support for AMD64 targets running GNU/kFreeBSD
Please can this patch be considered? It's several months old (sent in Jan 2011), and it is critical to use of GCC on GNU/kFreeBSD. 2011/1/26 Robert Millan : > Ping! > > 2011/1/18 Robert Millan : >> 2011/1/14 Robert Millan : >>> 2011/1/12 Robert Millan : >>>>> * The headers config/kfreebsd-gnu.h etc. override >>>>> GLIBC_DYNAMIC_LINKER. But the 64-bit configurations >>>>> x86_64-*-kfreebsd*-gnu and x86_64-*-knetbsd*-gnu do not appear to >>>>> use any header that would override GLIBC_DYNAMIC_LINKER32 and >>>>> GLIBC_DYNAMIC_LINKER64, which are what LINK_SPEC in linux64.h >>>>> actually uses. Thus those configurations would use Linux-specific >>>>> dynamic linker settings, which seems unlikely to be as intended. >>>> >>>> It's not as intended. On amd64 we use /lib/ld.so.1 and >>>> /lib/ld-kfreebsd-x86-64.so.1. >>> >>> It seems x86_64-kfreebsd-gnu has been broken for a while. I >>> just realized that I wrote a patch to fix this in 2006 [1], but >>> somehow it was never merged in GCC (actually I'm not even >>> sure I submitted it). >>> >>> In the meantime Debian GNU/kFreeBSD has been using this >>> patch to build GCC on their "kfreebsd-amd64" port. >>> >>> I can prepare an updated version of this patch (relative to >>> trunk + your linux.h overhaul [2]). >> >> Here is it. >> >> -- >> Robert Millan >> > > > > -- > Robert Millan > -- Robert Millan 2011-01-18 Robert Millan Support for AMD64 targets running GNU/kFreeBSD. * config.gcc (tm_file): Include `i386/kfreebsd-gnu.h' on x86_64-*-kfreebsd*-gnu. * config/i386/kfreebsd-gnu.h (GLIBC_DYNAMIC_LINKER32): If defined, redefine to "/lib/ld.so.1". (GLIBC_DYNAMIC_LINKER64): If defined, redefine to "/lib/ld-kfreebsd-x86-64.so.1". * config/i386/linux.h (LINK_EMULATION): Redefine this macro to a noop filter, which can be overriden by other headers. * config/i386/linux64.h (LINK_SPEC): Process emulation names through LINK_EMULATION(). * config/kfreebsd-gnu.h (LINK_EMULATION): Redefine to append a "_fbsd" suffix. * config/i386/kfreebsd-gnu.h (LINK_EMULATION): Remove macro (superceded by the definition in config/kfreebsd-gnu.h). Index: gcc/config.gcc === --- gcc/config.gcc (revision 168952) +++ gcc/config.gcc (working copy) @@ -1267,7 +1267,7 @@ case ${target} in x86_64-*-linux*) default_gnu_indirect_function=glibc-2011 ;; - x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;; + x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;; x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;; esac tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules" Index: gcc/config/i386/linux.h === --- gcc/config/i386/linux.h (revision 168952) +++ gcc/config/i386/linux.h (working copy) @@ -91,7 +91,7 @@ done. */ /* These macros may be overridden in k*bsd-gnu.h and i386/k*bsd-gnu.h. */ -#define LINK_EMULATION "elf_i386" +#define LINK_EMULATION(em) em #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" #undef ASM_SPEC @@ -100,7 +100,7 @@ #undef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS \ - { "link_emulation", LINK_EMULATION },\ + { "link_emulation", LINK_EMULATION("elf_i386") },\ { "dynamic_linker", LINUX_DYNAMIC_LINKER } #undef LINK_SPEC Index: gcc/config/i386/kfreebsd-gnu.h === --- gcc/config/i386/kfreebsd-gnu.h (revision 168952) +++ gcc/config/i386/kfreebsd-gnu.h (working copy) @@ -19,7 +19,15 @@ along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ -#undef LINK_EMULATION -#define LINK_EMULATION "elf_i386_fbsd" +#ifdef GLIBC_DYNAMIC_LINKER32 +#undef GLIBC_DYNAMIC_LINKER32 +#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1" +#endif + +#ifdef GLIBC_DYNAMIC_LINKER64 +#undef GLIBC_DYNAMIC_LINKER64 +#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" +#endif + #undef REG_NAME #define REG_NAME(reg) sc_ ## reg Index: gcc/config/i386/linux64.h === --- gcc/config/i386/linux64.h (revision 168952) +++ gcc/config/i386/linux64.h (working copy) @@
Re: PING^2 [PATCH] Support for AMD64 targets running GNU/kFreeBSD
Hi, 2011/5/21 Joseph S. Myers : > Please send a patch against *current trunk* and CC *relevant target > architecture maintainers*. linux*.h headers are no longer used on > non-Linux targets (since my 2011-04-28 patch - on which I CC:ed you) so > this patch version is no longer appropriate. I think you'll want to make > gnu-user64.h use GNU_USER_LINK_EMULATION32 and GNU_USER_LINK_EMULATION64 > similarly to how gnu-user.h uses GNU_USER_LINK_EMULATION. Thanks for the tip. Here's an update to current trunk. -- Robert Millan 2011-06-02 Robert Millan * config/i386/kfreebsd-gnu.h: Resync with `config/i386/linux.h'. * config/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKER): Resync with `config/linux.h'. * config/i386/kfreebsd-gnu64.h: New file. * config.gcc (x86_64-*-kfreebsd*-gnu): Replace `i386/kfreebsd-gnu.h' with `i386/kfreebsd-gnu64.h'. * config/i386/linux64.h (GNU_USER_LINK_EMULATION32) (GNU_USER_LINK_EMULATION64): New macros. * config/i386/gnu-user64.h (LINK_SPEC): Rely on `GNU_USER_LINK_EMULATION32' and `GNU_USER_LINK_EMULATION64' instead of hardcoding `elf_i386' and `elf_x86_64'. Index: gcc/config/i386/kfreebsd-gnu64.h === --- gcc/config/i386/kfreebsd-gnu64.h(revision 0) +++ gcc/config/i386/kfreebsd-gnu64.h(revision 0) @@ -0,0 +1,26 @@ +/* Definitions for AMD x86-64 running kFreeBSD-based GNU systems with ELF format + Copyright (C) 2011 + Free Software Foundation, Inc. + Contributed by Robert Millan. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#define GNU_USER_LINK_EMULATION32 "elf_i386_fbsd" +#define GNU_USER_LINK_EMULATION64 "elf_x86_64_fbsd" + +#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1" +#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-kfreebsd-x86-64.so.1" Index: gcc/config/i386/kfreebsd-gnu.h === --- gcc/config/i386/kfreebsd-gnu.h (revision 174566) +++ gcc/config/i386/kfreebsd-gnu.h (working copy) @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format - Copyright (C) 2004, 2007, 2011 + Copyright (C) 2011 Free Software Foundation, Inc. Contributed by Robert Millan. @@ -19,11 +19,5 @@ along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ -#undef GNU_USER_LINK_EMULATION #define GNU_USER_LINK_EMULATION "elf_i386_fbsd" - -#undef GNU_USER_DYNAMIC_LINKER32 -#define GNU_USER_DYNAMIC_LINKER32 "/lib/ld.so.1" - -#undef GNU_USER_DYNAMIC_LINKER64 -#define GNU_USER_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" +#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" Index: gcc/config/i386/linux64.h === --- gcc/config/i386/linux64.h (revision 174566) +++ gcc/config/i386/linux64.h (working copy) @@ -24,6 +24,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. */ +#define GNU_USER_LINK_EMULATION32 "elf_i386" +#define GNU_USER_LINK_EMULATION64 "elf_x86_64" + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" Index: gcc/config/i386/gnu-user64.h === --- gcc/config/i386/gnu-user64.h(revision 174566) +++ gcc/config/i386/gnu-user64.h(working copy) @@ -69,7 +69,8 @@ %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" #undef LINK_SPEC -#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ +#define LINK_SPEC "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ %{shared:-shared} \ %{!shared: \ %{!static: \ Index: gcc/config/kfreebsd-gnu.h === --- gcc/config/kfreebsd-gnu.h (revision 174566) +++ gcc/config/kfreebsd-gnu.h (working copy) @@ -19,7 +19,6 @@ along with GCC; see the f
Re: PING^2 [PATCH] Support for AMD64 targets running GNU/kFreeBSD
Actually, please consider this patch instead. It's the same but fixes a mistake in ld.so pathname. 2011/6/2 Robert Millan : > Hi, > > 2011/5/21 Joseph S. Myers : >> Please send a patch against *current trunk* and CC *relevant target >> architecture maintainers*. linux*.h headers are no longer used on >> non-Linux targets (since my 2011-04-28 patch - on which I CC:ed you) so >> this patch version is no longer appropriate. I think you'll want to make >> gnu-user64.h use GNU_USER_LINK_EMULATION32 and GNU_USER_LINK_EMULATION64 >> similarly to how gnu-user.h uses GNU_USER_LINK_EMULATION. > > Thanks for the tip. Here's an update to current trunk. > > -- > Robert Millan > -- Robert Millan 2011-06-02 Robert Millan * config/i386/kfreebsd-gnu.h: Resync with `config/i386/linux.h'. * config/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKER): Resync with `config/linux.h'. * config/i386/kfreebsd-gnu64.h: New file. * config.gcc (x86_64-*-kfreebsd*-gnu): Replace `i386/kfreebsd-gnu.h' with `i386/kfreebsd-gnu64.h'. * config/i386/linux64.h (GNU_USER_LINK_EMULATION32) (GNU_USER_LINK_EMULATION64): New macros. * config/i386/gnu-user64.h (LINK_SPEC): Rely on `GNU_USER_LINK_EMULATION32' and `GNU_USER_LINK_EMULATION64' instead of hardcoding `elf_i386' and `elf_x86_64'. Index: gcc/config/i386/kfreebsd-gnu64.h === --- gcc/config/i386/kfreebsd-gnu64.h(revision 0) +++ gcc/config/i386/kfreebsd-gnu64.h(revision 0) @@ -0,0 +1,26 @@ +/* Definitions for AMD x86-64 running kFreeBSD-based GNU systems with ELF format + Copyright (C) 2011 + Free Software Foundation, Inc. + Contributed by Robert Millan. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#define GNU_USER_LINK_EMULATION32 "elf_i386_fbsd" +#define GNU_USER_LINK_EMULATION64 "elf_x86_64_fbsd" + +#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1" +#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" Index: gcc/config/i386/kfreebsd-gnu.h === --- gcc/config/i386/kfreebsd-gnu.h (revision 174566) +++ gcc/config/i386/kfreebsd-gnu.h (working copy) @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format - Copyright (C) 2004, 2007, 2011 + Copyright (C) 2011 Free Software Foundation, Inc. Contributed by Robert Millan. @@ -19,11 +19,5 @@ along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ -#undef GNU_USER_LINK_EMULATION #define GNU_USER_LINK_EMULATION "elf_i386_fbsd" - -#undef GNU_USER_DYNAMIC_LINKER32 -#define GNU_USER_DYNAMIC_LINKER32 "/lib/ld.so.1" - -#undef GNU_USER_DYNAMIC_LINKER64 -#define GNU_USER_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" +#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" Index: gcc/config/i386/linux64.h === --- gcc/config/i386/linux64.h (revision 174566) +++ gcc/config/i386/linux64.h (working copy) @@ -24,6 +24,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. */ +#define GNU_USER_LINK_EMULATION32 "elf_i386" +#define GNU_USER_LINK_EMULATION64 "elf_x86_64" + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" Index: gcc/config/i386/gnu-user64.h === --- gcc/config/i386/gnu-user64.h(revision 174566) +++ gcc/config/i386/gnu-user64.h(working copy) @@ -69,7 +69,8 @@ %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" #undef LINK_SPEC -#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ +#define LINK_SPEC "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ %{shared:-shared} \ %{!shared: \ %{!static: \ Index: gcc/config/kfreebsd-g
PING^3 [PATCH] Support for AMD64 targets running GNU/kFreeBSD
Please someone look at this if you have time. The patch is very small now. 2011/6/3 Robert Millan : > Actually, please consider this patch instead. It's the same but fixes a > mistake in ld.so pathname. > > 2011/6/2 Robert Millan : >> Hi, >> >> 2011/5/21 Joseph S. Myers : >>> Please send a patch against *current trunk* and CC *relevant target >>> architecture maintainers*. linux*.h headers are no longer used on >>> non-Linux targets (since my 2011-04-28 patch - on which I CC:ed you) so >>> this patch version is no longer appropriate. I think you'll want to make >>> gnu-user64.h use GNU_USER_LINK_EMULATION32 and GNU_USER_LINK_EMULATION64 >>> similarly to how gnu-user.h uses GNU_USER_LINK_EMULATION. >> >> Thanks for the tip. Here's an update to current trunk. >> >> -- >> Robert Millan >> > > > > -- > Robert Millan > -- Robert Millan 2011-06-02 Robert Millan * config/i386/kfreebsd-gnu.h: Resync with `config/i386/linux.h'. * config/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKER): Resync with `config/linux.h'. * config/i386/kfreebsd-gnu64.h: New file. * config.gcc (x86_64-*-kfreebsd*-gnu): Replace `i386/kfreebsd-gnu.h' with `i386/kfreebsd-gnu64.h'. * config/i386/linux64.h (GNU_USER_LINK_EMULATION32) (GNU_USER_LINK_EMULATION64): New macros. * config/i386/gnu-user64.h (LINK_SPEC): Rely on `GNU_USER_LINK_EMULATION32' and `GNU_USER_LINK_EMULATION64' instead of hardcoding `elf_i386' and `elf_x86_64'. Index: gcc/config/i386/kfreebsd-gnu64.h === --- gcc/config/i386/kfreebsd-gnu64.h(revision 0) +++ gcc/config/i386/kfreebsd-gnu64.h (revision 0) @@ -0,0 +1,26 @@ +/* Definitions for AMD x86-64 running kFreeBSD-based GNU systems with ELF format + Copyright (C) 2011 + Free Software Foundation, Inc. + Contributed by Robert Millan. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#define GNU_USER_LINK_EMULATION32 "elf_i386_fbsd" +#define GNU_USER_LINK_EMULATION64 "elf_x86_64_fbsd" + +#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1" +#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" Index: gcc/config/i386/kfreebsd-gnu.h === --- gcc/config/i386/kfreebsd-gnu.h (revision 174566) +++ gcc/config/i386/kfreebsd-gnu.h (working copy) @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format - Copyright (C) 2004, 2007, 2011 + Copyright (C) 2011 Free Software Foundation, Inc. Contributed by Robert Millan. @@ -19,11 +19,5 @@ along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ -#undef GNU_USER_LINK_EMULATION #define GNU_USER_LINK_EMULATION "elf_i386_fbsd" - -#undef GNU_USER_DYNAMIC_LINKER32 -#define GNU_USER_DYNAMIC_LINKER32 "/lib/ld.so.1" - -#undef GNU_USER_DYNAMIC_LINKER64 -#define GNU_USER_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" +#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" Index: gcc/config/i386/linux64.h === --- gcc/config/i386/linux64.h (revision 174566) +++ gcc/config/i386/linux64.h (working copy) @@ -24,6 +24,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. */ +#define GNU_USER_LINK_EMULATION32 "elf_i386" +#define GNU_USER_LINK_EMULATION64 "elf_x86_64" + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" Index: gcc/config/i386/gnu-user64.h === --- gcc/config/i386/gnu-user64.h(revision 174566) +++ gcc/config/i386/gnu-user64.h(working copy) @@ -69,7 +69,8 @@ %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" #undef LINK_SPEC -#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ +#define LINK_SPEC "%{" SPEC_64 "
Re: PING^3 [PATCH] Support for AMD64 targets running GNU/kFreeBSD
2011/6/10 Richard Henderson : > On 06/10/2011 01:59 PM, Robert Millan wrote: >> 2011-06-02 Robert Millan >> >> * config/i386/kfreebsd-gnu.h: Resync with `config/i386/linux.h'. >> * config/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKER): Resync with >> `config/linux.h'. >> >> * config/i386/kfreebsd-gnu64.h: New file. >> * config.gcc (x86_64-*-kfreebsd*-gnu): Replace `i386/kfreebsd-gnu.h' >> with `i386/kfreebsd-gnu64.h'. >> >> * config/i386/linux64.h (GNU_USER_LINK_EMULATION32) >> (GNU_USER_LINK_EMULATION64): New macros. >> * config/i386/gnu-user64.h (LINK_SPEC): Rely on >> `GNU_USER_LINK_EMULATION32' and `GNU_USER_LINK_EMULATION64' instead >> of hardcoding `elf_i386' and `elf_x86_64'. > > Ok. Thanks. Please could you commit? I don't have write-after-approval perms. -- Robert Millan
PING^4 APPROVED patch for AMD64 targets running GNU/kFreeBSD, anyone?
This patch for AMD64 targets running GNU/kFreeBSD has been approved already, would anyone be so kind to commit it? I'm afraid I don't have write perms currently. See: http://gcc.gnu.org/ml/gcc-patches/2011-06/msg00884.html Thank you very much :-) 2011/6/10 Richard Henderson : > On 06/10/2011 01:59 PM, Robert Millan wrote: >> 2011-06-02 Robert Millan >> >> * config/i386/kfreebsd-gnu.h: Resync with `config/i386/linux.h'. >> * config/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKER): Resync with >> `config/linux.h'. >> >> * config/i386/kfreebsd-gnu64.h: New file. >> * config.gcc (x86_64-*-kfreebsd*-gnu): Replace `i386/kfreebsd-gnu.h' >> with `i386/kfreebsd-gnu64.h'. >> >> * config/i386/linux64.h (GNU_USER_LINK_EMULATION32) >> (GNU_USER_LINK_EMULATION64): New macros. >> * config/i386/gnu-user64.h (LINK_SPEC): Rely on >> `GNU_USER_LINK_EMULATION32' and `GNU_USER_LINK_EMULATION64' instead >> of hardcoding `elf_i386' and `elf_x86_64'. > > Ok. > > > r~ > -- Robert Millan 2011-06-02 Robert Millan * config/i386/kfreebsd-gnu.h: Resync with `config/i386/linux.h'. * config/kfreebsd-gnu.h (GNU_USER_DYNAMIC_LINKER): Resync with `config/linux.h'. * config/i386/kfreebsd-gnu64.h: New file. * config.gcc (x86_64-*-kfreebsd*-gnu): Replace `i386/kfreebsd-gnu.h' with `i386/kfreebsd-gnu64.h'. * config/i386/linux64.h (GNU_USER_LINK_EMULATION32) (GNU_USER_LINK_EMULATION64): New macros. * config/i386/gnu-user64.h (LINK_SPEC): Rely on `GNU_USER_LINK_EMULATION32' and `GNU_USER_LINK_EMULATION64' instead of hardcoding `elf_i386' and `elf_x86_64'. Index: gcc/config/i386/kfreebsd-gnu64.h === --- gcc/config/i386/kfreebsd-gnu64.h(revision 0) +++ gcc/config/i386/kfreebsd-gnu64.h(revision 0) @@ -0,0 +1,26 @@ +/* Definitions for AMD x86-64 running kFreeBSD-based GNU systems with ELF format + Copyright (C) 2011 + Free Software Foundation, Inc. + Contributed by Robert Millan. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#define GNU_USER_LINK_EMULATION32 "elf_i386_fbsd" +#define GNU_USER_LINK_EMULATION64 "elf_x86_64_fbsd" + +#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1" +#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" Index: gcc/config/i386/kfreebsd-gnu.h === --- gcc/config/i386/kfreebsd-gnu.h (revision 174566) +++ gcc/config/i386/kfreebsd-gnu.h (working copy) @@ -1,5 +1,5 @@ /* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format - Copyright (C) 2004, 2007, 2011 + Copyright (C) 2011 Free Software Foundation, Inc. Contributed by Robert Millan. @@ -19,11 +19,5 @@ along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ -#undef GNU_USER_LINK_EMULATION #define GNU_USER_LINK_EMULATION "elf_i386_fbsd" - -#undef GNU_USER_DYNAMIC_LINKER32 -#define GNU_USER_DYNAMIC_LINKER32 "/lib/ld.so.1" - -#undef GNU_USER_DYNAMIC_LINKER64 -#define GNU_USER_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" +#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" Index: gcc/config/i386/linux64.h === --- gcc/config/i386/linux64.h (revision 174566) +++ gcc/config/i386/linux64.h (working copy) @@ -24,6 +24,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>. */ +#define GNU_USER_LINK_EMULATION32 "elf_i386" +#define GNU_USER_LINK_EMULATION64 "elf_x86_64" + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" Index: gcc/config/i386/gnu-user64.h === --- gcc/config/i386/gnu-user64.h(revision 174566) +++ gcc/config/i386/gnu-user64.h(working copy) @@ -69,7 +69,8 @@ %{!mno-sse2avx:%{mavx:-msse2avx}} %{mss
[PATCH] split mips/gnu-user.h from mips/linux.h
Hi! This patch splits those bits from: config/mips/linux.h config/mips/linux64.h which are applicable to GNU userland, into: config/mips/gnu-user.h config/mips/gnu-user64 respectively. It is analogous to the split that was performed for config/i386/* by Joseph Myers in r172271. I've verified that my patch doesn't cause any regression (resulting gcc/xgcc is identical both for mips-*-linux and mips64*-linux). -- Robert Millan 2011-07-19 Robert Millan * config/mips/gnu-user.h: Copy from linux.h. Update comments. (GLIBC_DYNAMIC_LINKER): Remove. * config/mips/gnu-user64.h: Copy from linux64.h. Update comments. (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64) (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32) (BIONIC_DYNAMIC_LINKERN32, GNU_USER_DYNAMIC_LINKERN32): Remove. (LINK_SPEC): Use GNU_USER_DYNAMIC_LINKER32, GNU_USER_DYNAMIC_LINKER64 and GNU_USER_LINK_EMULATIONN32. * config/mips/linux.h: Remove everything except for ... (GLIBC_DYNAMIC_LINKER): ... this macro. * config/mips/linux64.h: Remove everything except for ... (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64) (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32) (BIONIC_DYNAMIC_LINKERN32): ... these macros. (GNU_USER_LINK_EMULATION32, GNU_USER_LINK_EMULATION64) (GNU_USER_LINK_EMULATIONN32): New macros. * config.gcc (mips64*-*-linux* | mipsisa64*-*-linux* | mips-*-linux*): Use the new headers. Index: gcc/config.gcc === --- gcc/config.gcc (revision 176425) +++ gcc/config.gcc (working copy) @@ -1820,7 +1820,7 @@ extra_options="${extra_options} netbsd.opt netbsd-elf.opt" ;; mips64*-*-linux* | mipsisa64*-*-linux*) - tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/linux.h mips/linux64.h" + tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h" tmake_file="${tmake_file} mips/t-linux64 mips/t-libgcc-mips16" tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32" case ${target} in @@ -1842,7 +1842,7 @@ test x$with_llsc != x || with_llsc=yes ;; mips*-*-linux*)# Linux MIPS, either endian. -tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/linux.h" +tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h" tmake_file="${tmake_file} mips/t-libgcc-mips16" if test x$enable_targets = xall; then tm_file="${tm_file} mips/linux64.h" Index: gcc/config/mips/linux.h === --- gcc/config/mips/linux.h (revision 176425) +++ gcc/config/mips/linux.h (working copy) @@ -1,6 +1,5 @@ /* Definitions for MIPS running Linux-based GNU systems with ELF format. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2008, 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -18,125 +17,4 @@ along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ -#undef WCHAR_TYPE -#define WCHAR_TYPE "int" - -#undef WCHAR_TYPE_SIZE -#define WCHAR_TYPE_SIZE 32 - -#undef ASM_DECLARE_OBJECT_NAME -#define ASM_DECLARE_OBJECT_NAME mips_declare_object_name - -/* If we don't set MASK_ABICALLS, we can't default to PIC. */ -#undef TARGET_DEFAULT -#define TARGET_DEFAULT MASK_ABICALLS - -#define TARGET_OS_CPP_BUILTINS()\ - do {\ -GNU_USER_TARGET_OS_CPP_BUILTINS();\ -/* The GNU C++ standard library requires this. */ \ -if (c_dialect_cxx ()) \ - builtin_define ("_GNU_SOURCE");\ - } while (0) - -#undef SUBTARGET_CPP_SPEC -#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" - -/* A standard GNU/Linux mapping. On most targets, it is included in - CC1_SPEC itself by config/linux.h, but mips.h overrides CC1_SPEC - and provides this hook instead. */ -#undef SUBTARGET_CC1_SPEC -#define SUBTARGET_CC1_SPEC "%{profile:-p}" - -/* From iris5.h */ -/* -G is incompatible with -KPIC which is the default, so only allow objects - in the small data section if the user explicitly asks for it. */ -#undef MIPS_DEFAULT_GVALUE -#define MIPS_DEFAULT_GVALUE 0 - #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" - -/* Borrowed from sparc/linux.h */ -#undef LINK_SPEC -#define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ - %{!shared: \ -%{!static: \ - %{rdynamic:-export-dynamic} \ - -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ - %{static:-static}}" - -#undef SUBTARGET_ASM_SPEC -#define SUBTARGET_ASM_SPEC \ - "%{!mno-abicalls:%{mplt:-call_nonpic;:-KPIC}}" - -/* The MIPS assembler has different syntax for .set. We set it to - .dummy to trap any erro
Re: [PATCH] split mips/gnu-user.h from mips/linux.h
Hi Richard, Thanks for committing! Just one small note: 2011/7/19 Richard Sandiford : > needs to deal with linux64.h as well. I also kept the copyright notice > the same on linux.h (even though it's only a one-liner now). > > Applied with those changes, thanks. It's probably harmless, but with this change if --enable-targets=all is used, then mips/gnu-user.h is included twice. The second one can be removed. -- Robert Millan
[PATCH] GNU/kFreeBSD systems running on MIPS
This patch adds support for GNU/kFreeBSD systems running on MIPS. -- Robert Millan 2011-07-22 Robert Millan Support for GNU/kFreeBSD systems running on MIPS. * config.gcc: Detect mips*-*-kfreebsd*-gnu. * config.host: Likewise. * config/mips/kfreebsd-gnu.h: New file. * config/mips/kfreebsd-gnu64.h: New file. * config/mips/gnu-user.h: Restrict `-march=native' support to GNU/Linux. Index: libgcc/config.host === --- libgcc/config.host (revision 176595) +++ libgcc/config.host (working copy) @@ -478,6 +478,14 @@ tmake_file="{$tmake_file} t-crtfm" md_unwind_header=mips/linux-unwind.h ;; +mips64*-*-kfreebsd*-gnu) + extra_parts="$extra_parts crtfastmath.o" + tmake_file="{$tmake_file} t-crtfm" + ;; +mips*-*-kfreebsd*-gnu) # GNU/kFreeBSD MIPS, either endian. + extra_parts="$extra_parts crtfastmath.o" + tmake_file="{$tmake_file} t-crtfm" + ;; mips*-*-openbsd*) ;; mipsisa32-*-elf* | mipsisa32el-*-elf*) Index: gcc/config.gcc === --- gcc/config.gcc (revision 176595) +++ gcc/config.gcc (working copy) @@ -1819,20 +1819,28 @@ tm_file="elfos.h ${tm_file} mips/elf.h netbsd.h netbsd-elf.h mips/netbsd.h" extra_options="${extra_options} netbsd.opt netbsd-elf.opt" ;; -mips64*-*-linux* | mipsisa64*-*-linux*) - tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h" +mips64*-*-linux* | mipsisa64*-*-linux* | mips64*-*-kfreebsd*-gnu | mipsisa64*-*-kfreebsd*-gnu) + tm_file="dbxelf.h elfos.h gnu-user.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h" tmake_file="${tmake_file} mips/t-linux64 mips/t-libgcc-mips16" tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32" + case ${target_os} in + linux*) + tm_file="${tm_file} linux.h mips/linux64.h" + ;; + kfreebsd*-gnu) + tm_file="${tm_file} kfreebsd-gnu.h mips/kfreebsd-gnu64.h" + ;; + esac case ${target} in - mips64el-st-linux-gnu) + mips64el-st-*) tm_file="${tm_file} mips/st.h" tmake_file="${tmake_file} mips/t-st" ;; - mips64octeon*-*-linux*) + mips64octeon*-*-*) tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\"" target_cpu_default=MASK_SOFT_FLOAT_ABI ;; - mipsisa64r2*-*-linux*) + mipsisa64r2*-*-*) tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65" ;; esac @@ -1841,11 +1849,27 @@ gas=yes test x$with_llsc != x || with_llsc=yes ;; -mips*-*-linux*)# Linux MIPS, either endian. -tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h" +mips*-*-linux* | mips*-*-kfreebsd*-gnu) # GNU/* MIPS, either endian. +tm_file="dbxelf.h elfos.h gnu-user.h glibc-stdint.h ${tm_file} mips/gnu-user.h" tmake_file="${tmake_file} mips/t-libgcc-mips16" + case ${target_os} in + linux*) + tm_file="${tm_file} linux.h mips/linux.h" + ;; + kfreebsd*-gnu) + tm_file="${tm_file} kfreebsd-gnu.h mips/kfreebsd-gnu.h" + ;; + esac if test x$enable_targets = xall; then - tm_file="${tm_file} mips/gnu-user64.h mips/linux64.h" + tm_file="${tm_file} mips/gnu-user64.h" + case ${target_os} in + linux*) +tm_file="${tm_file} mips/linux64.h" +;; + kfreebsd*-gnu) +tm_file="${tm_file} mips/kfreebsd-gnu64.h" +;; + esac tmake_file="${tmake_file} mips/t-linux64" tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32" fi Index: gcc/config/mips/gnu-user.h === --- gcc/config/mips/gnu-user.h (revision 176595) +++ gcc/config/mips/gnu-user.h (working copy) @@ -106,8 +106,8 @@ #endif /* -march=native handling only makes sense with compiler running on - a MIPS chip. */ -#if defined(__mips__) + a MIPS chip. Also, for now only Linux targets are supported. */ +#if defined(__mips__) && defined(__linux__) extern const char *host_detect_local_cpu (int argc, const char **argv); # define EXTRA_SPEC_FUNCTIONS \ { "local_cpu_detect", host_detect_local_cpu }, Index: gcc/config/mips/kfreebsd-gnu64.h =========== --- gcc/config/mips/kfreebsd-gnu64.h (revision 0) +++ gcc/config/mips/kfreebsd-gnu64.h (revision 0) @@ -0,0 +1,31 @@ +/* Definitions for MIPS running kFreeBSD-based GNU systems with ELF format + using n32/64 abi. + Copyright (C) 2011 + Free Software Foundation, Inc. + Contributed by Robert Millan. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either versio
Re: [PATCH] GNU/kFreeBSD systems running on MIPS
2011/7/25 Richard Sandiford : > Robert Millan writes: >> This patch adds support for GNU/kFreeBSD systems running on MIPS. > > Looks good. However, Rainer's in the middle of moving things from gcc/ > to libgcc/ -- where they belong -- and committing a new port now would > interfere with that. If it's OK, I'd like to hold off applying this > until Rainer's finished his changes. It's ok. Could you give a rough estimate? (few days / weeks / months) -- Robert Millan
Re: [PATCH] GNU/kFreeBSD systems running on MIPS
2011/7/26 Rainer Orth : > I'm in the middle of moving shlib support (another day), need to rebase > crtstuff and libgcc1, and finish libgcc2. > > I hope to be ready within two or three weeks. Ok then. I'd appreciate if you can send me a reminder via private mail when you've finished. Best regards -- Robert Millan
Re: PING^2 [PATCH] Support for AMD64 targets running GNU/kFreeBSD
Ping^2 2011/1/26 Robert Millan : > Ping! > > 2011/1/18 Robert Millan : >> 2011/1/14 Robert Millan : >>> 2011/1/12 Robert Millan : >>>>> * The headers config/kfreebsd-gnu.h etc. override >>>>> GLIBC_DYNAMIC_LINKER. But the 64-bit configurations >>>>> x86_64-*-kfreebsd*-gnu and x86_64-*-knetbsd*-gnu do not appear to >>>>> use any header that would override GLIBC_DYNAMIC_LINKER32 and >>>>> GLIBC_DYNAMIC_LINKER64, which are what LINK_SPEC in linux64.h >>>>> actually uses. Thus those configurations would use Linux-specific >>>>> dynamic linker settings, which seems unlikely to be as intended. >>>> >>>> It's not as intended. On amd64 we use /lib/ld.so.1 and >>>> /lib/ld-kfreebsd-x86-64.so.1. >>> >>> It seems x86_64-kfreebsd-gnu has been broken for a while. I >>> just realized that I wrote a patch to fix this in 2006 [1], but >>> somehow it was never merged in GCC (actually I'm not even >>> sure I submitted it). >>> >>> In the meantime Debian GNU/kFreeBSD has been using this >>> patch to build GCC on their "kfreebsd-amd64" port. >>> >>> I can prepare an updated version of this patch (relative to >>> trunk + your linux.h overhaul [2]). >> >> Here is it. >> >> -- >> Robert Millan >> > > > > -- > Robert Millan > -- Robert Millan 2011-01-18 Robert Millan Support for AMD64 targets running GNU/kFreeBSD. * config.gcc (tm_file): Include `i386/kfreebsd-gnu.h' on x86_64-*-kfreebsd*-gnu. * config/i386/kfreebsd-gnu.h (GLIBC_DYNAMIC_LINKER32): If defined, redefine to "/lib/ld.so.1". (GLIBC_DYNAMIC_LINKER64): If defined, redefine to "/lib/ld-kfreebsd-x86-64.so.1". * config/i386/linux.h (LINK_EMULATION): Redefine this macro to a noop filter, which can be overriden by other headers. * config/i386/linux64.h (LINK_SPEC): Process emulation names through LINK_EMULATION(). * config/kfreebsd-gnu.h (LINK_EMULATION): Redefine to append a "_fbsd" suffix. * config/i386/kfreebsd-gnu.h (LINK_EMULATION): Remove macro (superceded by the definition in config/kfreebsd-gnu.h). Index: gcc/config.gcc === --- gcc/config.gcc (revision 168952) +++ gcc/config.gcc (working copy) @@ -1267,7 +1267,7 @@ case ${target} in x86_64-*-linux*) default_gnu_indirect_function=glibc-2011 ;; - x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;; + x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;; x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;; esac tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules" Index: gcc/config/i386/linux.h === --- gcc/config/i386/linux.h (revision 168952) +++ gcc/config/i386/linux.h (working copy) @@ -91,7 +91,7 @@ done. */ /* These macros may be overridden in k*bsd-gnu.h and i386/k*bsd-gnu.h. */ -#define LINK_EMULATION "elf_i386" +#define LINK_EMULATION(em) em #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" #undef ASM_SPEC @@ -100,7 +100,7 @@ #undef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS \ - { "link_emulation", LINK_EMULATION },\ + { "link_emulation", LINK_EMULATION("elf_i386") },\ { "dynamic_linker", LINUX_DYNAMIC_LINKER } #undef LINK_SPEC Index: gcc/config/i386/kfreebsd-gnu.h === --- gcc/config/i386/kfreebsd-gnu.h (revision 168952) +++ gcc/config/i386/kfreebsd-gnu.h (working copy) @@ -19,7 +19,15 @@ along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ -#undef LINK_EMULATION -#define LINK_EMULATION "elf_i386_fbsd" +#ifdef GLIBC_DYNAMIC_LINKER32 +#undef GLIBC_DYNAMIC_LINKER32 +#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1" +#endif + +#ifdef GLIBC_DYNAMIC_LINKER64 +#undef GLIBC_DYNAMIC_LINKER64 +#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" +#endif + #undef REG_NAME #define REG_NAME(reg) sc_ ## reg Index: gcc/config/i386/linux64.h === --- gcc/config/i386/linux64.h (revision 168952) +++ gcc/config/i386/linux64.h (working copy) @@ -75,7 +75,8 @@ %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" #undef LINK_SPEC -#define LINK_SPEC "%{&