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 +. */ + +#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 . */ -#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 . */ +#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 file COPYING3. If not see . */ -#undef GNU_USER_TARGET_OS_CPP_BUILTINS #define GNU_USER_TARGET_OS_CPP_BUILTINS() \ do \ { \ @@ -31,5 +30,6 @@ } \ while (0) -#undef GNU_USER_DYNAMIC_LINKER -#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1" +#define GNU_USER_DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER +#define GNU_USER_DYNAMIC_LINKER32 GLIBC_DYNAMIC_LINKER32 +#define GNU_USER_DYNAMIC_LINKER64 GLIBC_DYNAMIC_LINKER64 Index: gcc/config.gcc =================================================================== --- gcc/config.gcc (revision 174566) +++ gcc/config.gcc (working copy) @@ -1268,7 +1268,7 @@ x86_64-*-linux*) tm_file="${tm_file} linux.h i386/linux64.h" default_gnu_indirect_function=glibc-2011 ;; - x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;; + x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.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"