re PR target/24837 (move dynamic linker names out of LINK_SPEC and into new DYNAMIC_LINKER)

PR target/24837
	* config.gcc: Define UCLIBC_DEFAULT to 0 or 1.
	* opth-gen.awk: Handle Var and InverseMask together.
	* config/linux.opt (muclibc, mglibc): Use Var(linux_uclibc).
	* config/linux.h: Use #if not #ifdef for testing UCLIBC_DEFAULT.
	(TARGET_C99_FUNCTIONS): Test OPTION_GLIBC not TARGET_GLIBC.
	(CHOOSE_DYNAMIC_LINKER): Give an error for -mglibc and -muclibc
	used together.
	(UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64,
	LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
	* config/alpha/linux-elf.h (GLIBC_DYNAMIC_LINKER,
	UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER): Define.
	(ELF_DYNAMIC_LINKER): Define to LINUX_DYNAMIC_LINKER.
	* config/alpha/linux.h (TARGET_C99_FUNCTIONS): Define to
	TARGET_GLIBC.
	* config/cris/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(CRIS_LINK_SUBTARGET_SPEC): Pass a -dynamic-linker option.
	* config/frv/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	(TARGET_C99_FUNCTIONS): Don't define.
	* config/i386/linux.h (DYNAMIC_LINKER): Rename to
	GLIBC_DYNAMIC_LINKER.
	(SUBTARGET_EXTRA_SPECS): Use LINUX_DYNAMIC_LINKER.
	* config/i386/linux64.h (GLIBC_DYNAMIC_LINKER32,
	GLIBC_DYNAMIC_LINKER64): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and
	LINUX_DYNAMIC_LINKER64.
	* config/ia64/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/m32r/linux.h (GLIBC_DYNAMIC_LINKE): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/m68k/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/mips/linux64.h (GLIBC_DYNAMIC_LINKER32,
	GLIBC_DYNAMIC_LINKER64, GLIBC_DYNAMIC_LINKERN32,
	UCLIBC_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKERN32): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKER64
	and LINUX_DYNAMIC_LINKER32.
	* config/mn10300/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/pa/pa-linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/rs6000/linux.h (TARGET_C99_FUNCTIONS): Define to
	TARGET_GLIBC.
	* config/rs6000/linux64.h (TARGET_C99_FUNCTIONS): Likewise.
	(GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64,
	UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64,
	CHOOSE_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
	(LINK_OS_LINUX_SPEC32): Use LINUX_DYNAMIC_LINKER32.
	(LINK_OS_LINUX_SPEC64): Use LINUX_DYNAMIC_LINKER64.
	* config/rs6000/sysv4.h (GLIBC_DYNAMIC_LINKER,
	UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER): Define.
	(LINK_OS_LINUX_SPEC): Use LINUX_DYNAMIC_LINKE.
	* config/s390/linux.h (GLIBC_DYNAMIC_LINKER32,
	GLIBC_DYNAMIC_LINKER64): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and
	LINUX_DYNAMIC_LINKER64.
	* config/sh/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(SUBTARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* config/sparc/linux.h (GLIBC_DYNAMIC_LINKER,
	UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	(TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC.
	* config/sparc/linux64.h (GLIBC_DYNAMIC_LINKER32,
	GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER32,
	UCLIBC_DYNAMIC_LINKER64, CHOOSE_DYNAMIC_LINKER,
	LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
	(LINK_ARCH32_SPEC): Use LINUX_DYNAMIC_LINKER32.
	(LINK_ARCH64_SPEC, LINK_SPEC): Use LINUX_DYNAMIC_LINKER64.
	(TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC.
	* config/xtensa/linux.h (GLIBC_DYNAMIC_LINKER): Define.
	(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
	* doc/invoke.texi (-muclibc): Remove caveat about supported
	targets.

testsuite:
	* gcc.dg/glibc-uclibc-1.c, gcc.dg/glibc-uclibc-2.c: New tests.

From-SVN: r111235
This commit is contained in:
Joseph Myers 2006-02-18 11:12:51 +00:00 committed by Joseph Myers
parent be8ac3e243
commit 7bd85ce0da
29 changed files with 276 additions and 80 deletions

View File

@ -1,3 +1,84 @@
2006-02-18 Joseph S. Myers <joseph@codesourcery.com>
PR target/24837
* config.gcc: Define UCLIBC_DEFAULT to 0 or 1.
* opth-gen.awk: Handle Var and InverseMask together.
* config/linux.opt (muclibc, mglibc): Use Var(linux_uclibc).
* config/linux.h: Use #if not #ifdef for testing UCLIBC_DEFAULT.
(TARGET_C99_FUNCTIONS): Test OPTION_GLIBC not TARGET_GLIBC.
(CHOOSE_DYNAMIC_LINKER): Give an error for -mglibc and -muclibc
used together.
(UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64,
LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
* config/alpha/linux-elf.h (GLIBC_DYNAMIC_LINKER,
UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
LINUX_DYNAMIC_LINKER): Define.
(ELF_DYNAMIC_LINKER): Define to LINUX_DYNAMIC_LINKER.
* config/alpha/linux.h (TARGET_C99_FUNCTIONS): Define to
TARGET_GLIBC.
* config/cris/linux.h (GLIBC_DYNAMIC_LINKER): Define.
(CRIS_LINK_SUBTARGET_SPEC): Pass a -dynamic-linker option.
* config/frv/linux.h (GLIBC_DYNAMIC_LINKER): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
(TARGET_C99_FUNCTIONS): Don't define.
* config/i386/linux.h (DYNAMIC_LINKER): Rename to
GLIBC_DYNAMIC_LINKER.
(SUBTARGET_EXTRA_SPECS): Use LINUX_DYNAMIC_LINKER.
* config/i386/linux64.h (GLIBC_DYNAMIC_LINKER32,
GLIBC_DYNAMIC_LINKER64): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and
LINUX_DYNAMIC_LINKER64.
* config/ia64/linux.h (GLIBC_DYNAMIC_LINKER): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
* config/m32r/linux.h (GLIBC_DYNAMIC_LINKE): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
* config/m68k/linux.h (GLIBC_DYNAMIC_LINKER): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
* config/mips/linux64.h (GLIBC_DYNAMIC_LINKER32,
GLIBC_DYNAMIC_LINKER64, GLIBC_DYNAMIC_LINKERN32,
UCLIBC_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKERN32): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKER64
and LINUX_DYNAMIC_LINKER32.
* config/mn10300/linux.h (GLIBC_DYNAMIC_LINKER): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
* config/pa/pa-linux.h (GLIBC_DYNAMIC_LINKER): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
* config/rs6000/linux.h (TARGET_C99_FUNCTIONS): Define to
TARGET_GLIBC.
* config/rs6000/linux64.h (TARGET_C99_FUNCTIONS): Likewise.
(GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64,
UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64,
CHOOSE_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
(LINK_OS_LINUX_SPEC32): Use LINUX_DYNAMIC_LINKER32.
(LINK_OS_LINUX_SPEC64): Use LINUX_DYNAMIC_LINKER64.
* config/rs6000/sysv4.h (GLIBC_DYNAMIC_LINKER,
UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
LINUX_DYNAMIC_LINKER): Define.
(LINK_OS_LINUX_SPEC): Use LINUX_DYNAMIC_LINKE.
* config/s390/linux.h (GLIBC_DYNAMIC_LINKER32,
GLIBC_DYNAMIC_LINKER64): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and
LINUX_DYNAMIC_LINKER64.
* config/sh/linux.h (GLIBC_DYNAMIC_LINKER): Define.
(SUBTARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
* config/sparc/linux.h (GLIBC_DYNAMIC_LINKER,
UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
LINUX_DYNAMIC_LINKER): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
(TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC.
* config/sparc/linux64.h (GLIBC_DYNAMIC_LINKER32,
GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER32,
UCLIBC_DYNAMIC_LINKER64, CHOOSE_DYNAMIC_LINKER,
LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
(LINK_ARCH32_SPEC): Use LINUX_DYNAMIC_LINKER32.
(LINK_ARCH64_SPEC, LINK_SPEC): Use LINUX_DYNAMIC_LINKER64.
(TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC.
* config/xtensa/linux.h (GLIBC_DYNAMIC_LINKER): Define.
(LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
* doc/invoke.texi (-muclibc): Remove caveat about supported
targets.
2006-02-17 Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
* doc/cpp.texi (__TIMESTAMP__): Document.

View File

@ -455,7 +455,10 @@ case ${target} in
tmake_file="t-slibgcc-elf-ver t-linux"
case ${target} in
*-*-*uclibc*)
tm_defines="${tm_defines} UCLIBC_DEFAULT"
tm_defines="${tm_defines} UCLIBC_DEFAULT=1"
;;
*)
tm_defines="${tm_defines} UCLIBC_DEFAULT=0"
;;
esac
;;

View File

@ -1,6 +1,7 @@
/* Definitions of target machine for GNU compiler
for Alpha Linux-based GNU systems using ELF.
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2006
Free Software Foundation, Inc.
Contributed by Richard Henderson.
This file is part of GCC.
@ -27,7 +28,17 @@ Boston, MA 02110-1301, USA. */
#define SUBTARGET_EXTRA_SPECS \
{ "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
#if UCLIBC_DEFAULT
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}"
#else
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}"
#endif
#define LINUX_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
#define ELF_DYNAMIC_LINKER LINUX_DYNAMIC_LINKER
#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
%{O*:-O3} %{!O*:-O1} \

View File

@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler,
for Alpha Linux-based GNU systems.
Copyright (C) 1996, 1997, 1998, 2002, 2003, 2004, 2005
Copyright (C) 1996, 1997, 1998, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
Contributed by Richard Henderson.
@ -64,7 +64,7 @@ Boston, MA 02110-1301, USA. */
/* Determine whether the entire c99 runtime is present in the
runtime library. */
#define TARGET_C99_FUNCTIONS 1
#define TARGET_C99_FUNCTIONS (OPTION_GLIBC)
#define TARGET_POSIX_IO

View File

@ -1,5 +1,5 @@
/* Definitions for GCC. Part of the machine description for CRIS.
Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
Contributed by Axis Communications. Written by Hans-Peter Nilsson.
This file is part of GCC.
@ -76,6 +76,8 @@ Boston, MA 02110-1301, USA. */
#undef CRIS_SUBTARGET_VERSION
#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu"
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
/* We need an -rpath-link to ld.so.1, and presumably to each directory
specified with -B. */
#undef CRIS_LINK_SUBTARGET_SPEC
@ -84,7 +86,9 @@ Boston, MA 02110-1301, USA. */
-rpath-link include/asm/../..%s\
%{shared} %{static}\
%{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\
%{!shared:%{!static:%{rdynamic:-export-dynamic}}}\
%{!shared:%{!static:\
%{rdynamic:-export-dynamic}\
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}\
%{!r:%{O2|O3: --gc-sections}}"

View File

@ -1,5 +1,5 @@
/* Target macros for the FRV Linux port of GCC.
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2006
Free Software Foundation, Inc.
Contributed by Red Hat Inc.
@ -36,12 +36,14 @@
#define ENDFILE_SPEC \
"%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#undef LINK_SPEC
#define LINK_SPEC "\
%{mfdpic: -m elf32frvfd -z text} %{shared} %{pie} \
%{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
%{static}}"
/* Support for compile-time default CPU. */
@ -71,19 +73,4 @@ asm (TEXT_SECTION_ASM_OP);
#undef Twrite
#define Twrite __write
/* uClibc doesn't support many of the C90-reserved C99-defined math
functions. Make sure we don't implicitly generate them unless C99
support is explicitly requested. This will affect both frv-linux
and frv-uclinux. Even though the glibc, the primary library for
frv-linux, would enable better code to be generated with
TARGET_C99_FUNCTIONS defined to 1, uClinux can be used as the
library for frv-linux as well, and we'd better have that work
correctly. Maybe we move this to a uclibc.h header in the future,
and use that for frv-uclinux and frv-linux-uclibc? Define it here
for now, such that we can still get exactly the same code out of
both frv-linux-gcc and frv-uclinux-gcc, when feeding them the same
preprocessed sources. */
#undef TARGET_C99_FUNCTIONS
#define TARGET_C99_FUNCTIONS 0
#endif /* __FRV_LINUX_H__ */

View File

@ -1,6 +1,6 @@
/* Definitions for Intel 386 running Linux-based GNU systems with ELF format.
Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2004
Free Software Foundation, Inc.
Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2004, 2005,
2006 Free Software Foundation, Inc.
Contributed by Eric Youngdale.
Modified for stabs-in-ELF by H.J. Lu.
@ -100,12 +100,12 @@ Boston, MA 02110-1301, USA. */
/* If ELF is the default format, we should not use /lib/elf. */
#define LINK_EMULATION "elf_i386"
#define DYNAMIC_LINKER "/lib/ld-linux.so.2"
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
{ "link_emulation", LINK_EMULATION },\
{ "dynamic_linker", DYNAMIC_LINKER }
{ "dynamic_linker", LINUX_DYNAMIC_LINKER }
#undef LINK_SPEC
#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \

View File

@ -1,5 +1,5 @@
/* Definitions for AMD x86-64 running Linux-based GNU systems with ELF format.
Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
Contributed by Jan Hubicka <jh@suse.cz>, based on linux.h.
This file is part of GCC.
@ -49,14 +49,17 @@ Boston, MA 02110-1301, USA. */
When the -shared link option is used a final link is not being
done. */
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
#undef LINK_SPEC
#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
%{shared:-shared} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
%{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
%{m32:%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}} \
%{!m32:%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}} \
%{static:-static}}"
/* Similar to standard Linux, but adding -ffast-math support. */

View File

@ -37,13 +37,15 @@ do { \
/* Define this for shared library support because it isn't in the main
linux.h file. */
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
#undef LINK_SPEC
#define LINK_SPEC "\
%{shared:-shared} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
%{static:-static}}"

View File

@ -102,21 +102,28 @@ Boston, MA 02110-1301, USA. */
/* Determine which dynamic linker to use depending on whether GLIBC or
uClibc is the default C library and whether -muclibc or -mglibc has
been passed to change the default. */
#ifdef UCLIBC_DEFAULT
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
#if UCLIBC_DEFAULT
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}"
#else
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}"
#endif
/* For most targets with a single dynamic linker the following
definitions suffice; GLIBC_DYNAMIC_LINKER must be defined for each
target using them. */
/* For most targets the following definitions suffice;
GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
supporting both 32-bit and 64-bit compilation. */
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
#define LINUX_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
#define LINUX_DYNAMIC_LINKER32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
#define LINUX_DYNAMIC_LINKER64 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
/* Determine whether the entire c99 runtime
is present in the runtime library. */
#define TARGET_C99_FUNCTIONS (TARGET_GLIBC)
#define TARGET_C99_FUNCTIONS (OPTION_GLIBC)
#define TARGET_POSIX_IO

View File

@ -21,9 +21,9 @@
; 02110-1301, USA.
muclibc
Target RejectNegative Report Mask(UCLIBC)
Target RejectNegative Report Mask(UCLIBC) Var(linux_uclibc) Init(UCLIBC_DEFAULT ? OPTION_MASK_UCLIBC : 0)
Use uClibc instead of GNU libc
mglibc
Target RejectNegative Report InverseMask(UCLIBC, GLIBC)
Target RejectNegative Report InverseMask(UCLIBC, GLIBC) Var(linux_uclibc) VarExists
Use GNU libc instead of uClibc

View File

@ -1,5 +1,5 @@
/* Definitions for Renesas M32R running Linux-based GNU systems using ELF.
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
This file is part of GCC.
@ -59,6 +59,8 @@
/* If ELF is the default format, we should not use /lib/elf. */
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
#undef LINK_SPEC
#if TARGET_LITTLE_ENDIAN
#define LINK_SPEC "%(link_cpu) -m m32rlelf_linux %{shared:-shared} \
@ -66,7 +68,7 @@
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
%{static:-static}}}"
#else
#define LINK_SPEC "%(link_cpu) -m m32relf_linux %{shared:-shared} \
@ -74,7 +76,7 @@
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
%{static:-static}}}"
#endif

View File

@ -123,12 +123,14 @@ Boston, MA 02110-1301, USA. */
/* If ELF is the default format, we should not use /lib/elf. */
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#undef LINK_SPEC
#define LINK_SPEC "-m m68kelf %{shared} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
%{!dynamic-linker*:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
%{static}}"
/* For compatibility with linux/a.out */

View File

@ -1,6 +1,6 @@
/* Definitions for MIPS running Linux-based GNU systems with ELF format
using n32/64 abi.
Copyright 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
Copyright 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GCC.
@ -36,6 +36,13 @@ Boston, MA 02110-1301, USA. */
%{!shared: %{pthread:-lpthread} \
%{profile:-lc_p} %{!profile: -lc}}"
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld.so.1"
#define GLIBC_DYNAMIC_LINKERN32 "/lib32/ld.so.1"
#define UCLIBC_DYNAMIC_LINKERN32 "/lib32/ld-uClibc.so.0"
#define LINUX_DYNAMIC_LINKERN32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32)
#undef LINK_SPEC
#define LINK_SPEC "\
%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
@ -47,9 +54,9 @@ Boston, MA 02110-1301, USA. */
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker: \
%{mabi=n32: -dynamic-linker /lib32/ld.so.1} \
%{mabi=64: -dynamic-linker /lib64/ld.so.1} \
%{mabi=32: -dynamic-linker /lib/ld.so.1}}} \
%{mabi=n32: -dynamic-linker " LINUX_DYNAMIC_LINKERN32 "} \
%{mabi=64: -dynamic-linker " LINUX_DYNAMIC_LINKER64 "} \
%{mabi=32: -dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}} \
%{static:-static}}} \
%{mabi=n32:-melf32%{EB:b}%{EL:l}tsmipn32} \
%{mabi=64:-melf64%{EB:b}%{EL:l}tsmip} \

View File

@ -1,6 +1,6 @@
/* Definitions of taret machine for GNU compiler.
Matsushita AM33/2.0
Copyright 2001, 2002, 2005 Free Software Foundation, Inc.
Copyright 2001, 2002, 2005, 2006 Free Software Foundation, Inc.
Contributed by Alexandre Oliva <aoliva@redhat.com>
This file is part of GCC.
@ -33,11 +33,13 @@
#undef ASM_SPEC
#define ASM_SPEC "%{Wa,*:%*}"
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#undef LINK_SPEC
#define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
%{static:-static}"
#undef PROCESSOR_DEFAULT

View File

@ -1,5 +1,6 @@
/* Definitions for PA_RISC with ELF format
Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
This file is part of GCC.
@ -44,13 +45,15 @@ Boston, MA 02110-1301, USA. */
/* Define this for shared library support because it isn't in the main
linux.h file. */
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#undef LINK_SPEC
#define LINK_SPEC "\
%{shared:-shared} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
%{static:-static}}"
/* glibc's profiling functions don't need gcc to allocate counters. */

View File

@ -33,7 +33,7 @@
/* glibc has float and long double forms of math functions. */
#undef TARGET_C99_FUNCTIONS
#define TARGET_C99_FUNCTIONS 1
#define TARGET_C99_FUNCTIONS (OPTION_GLIBC)
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \

View File

@ -283,7 +283,7 @@ extern int dot_symbols;
/* glibc has float and long double forms of math functions. */
#undef TARGET_C99_FUNCTIONS
#define TARGET_C99_FUNCTIONS 1
#define TARGET_C99_FUNCTIONS (OPTION_GLIBC)
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
@ -336,13 +336,28 @@ extern int dot_symbols;
#undef LINK_OS_DEFAULT_SPEC
#define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1"
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
#if UCLIBC_DEFAULT
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}"
#else
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}"
#endif
#define LINUX_DYNAMIC_LINKER32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
#define LINUX_DYNAMIC_LINKER64 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}}"
#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}"
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}}"
#undef TOC_SECTION_ASM_OP
#define TOC_SECTION_ASM_OP \

View File

@ -909,9 +909,19 @@ extern int fixuplabelno;
#define LINK_START_LINUX_SPEC ""
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
#if UCLIBC_DEFAULT
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}"
#else
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}"
#endif
#define LINUX_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}"
#if defined(HAVE_LD_EH_FRAME_HDR)
# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "

View File

@ -1,5 +1,6 @@
/* Definitions for Linux for S/390.
Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2006
Free Software Foundation, Inc.
Contributed by Hartmut Penner (hpenner@de.ibm.com) and
Ulrich Weigand (uweigand@de.ibm.com).
@ -72,6 +73,9 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
#define MULTILIB_DEFAULTS { "m31" }
#endif
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
#undef LINK_SPEC
#define LINK_SPEC \
"%{m31:-m elf_s390}%{m64:-m elf64_s390} \
@ -81,8 +85,8 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker: \
%{m31:-dynamic-linker /lib/ld.so.1} \
%{m64:-dynamic-linker /lib/ld64.so.1}}}}"
%{m31:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "} \
%{m64:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}}}"
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack

View File

@ -1,5 +1,5 @@
/* Definitions for SH running Linux-based GNU systems using ELF
Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005
Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
Contributed by Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
@ -48,6 +48,8 @@ Boston, MA 02110-1301, USA. */
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
#undef SUBTARGET_LINK_EMUL_SUFFIX
#define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
#undef SUBTARGET_LINK_SPEC
@ -55,7 +57,7 @@ Boston, MA 02110-1301, USA. */
"%{shared:-shared} \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
%{static:-static}"
/* Output assembler code to STREAM to call the profiler. */

View File

@ -1,5 +1,5 @@
/* Definitions for SPARC running Linux-based GNU systems with ELF.
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
Contributed by Eddie C. Dost (ecd@skynet.be)
@ -121,6 +121,17 @@ Boston, MA 02110-1301, USA. */
/* If ELF is the default format, we should not use /lib/elf. */
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
#if UCLIBC_DEFAULT
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}"
#else
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}"
#endif
#define LINUX_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
#undef LINK_SPEC
#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
%{!mno-relax:%{!r:-relax}} \
@ -128,7 +139,7 @@ Boston, MA 02110-1301, USA. */
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
%{static:-static}}}"
/* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
@ -202,7 +213,7 @@ do { \
/* Determine whether the entire c99 runtime is present in the
runtime library. */
#define TARGET_C99_FUNCTIONS 1
#define TARGET_C99_FUNCTIONS (OPTION_GLIBC)
#define TARGET_POSIX_IO

View File

@ -1,5 +1,5 @@
/* Definitions for 64-bit SPARC running Linux-based GNU systems with ELF.
Copyright 1996, 1997, 1998, 2000, 2002, 2003, 2004, 2005
Copyright 1996, 1997, 1998, 2000, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
Contributed by David S. Miller (davem@caip.rutgers.edu)
@ -143,6 +143,20 @@ Boston, MA 02110-1301, USA. */
/* If ELF is the default format, we should not use /lib/elf. */
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
#if UCLIBC_DEFAULT
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}"
#else
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}"
#endif
#define LINUX_DYNAMIC_LINKER32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
#define LINUX_DYNAMIC_LINKER64 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
#ifdef SPARC_BI_ARCH
#undef SUBTARGET_EXTRA_SPECS
@ -151,13 +165,13 @@ Boston, MA 02110-1301, USA. */
{ "link_arch64", LINK_ARCH64_SPEC }, \
{ "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \
{ "link_arch", LINK_ARCH_SPEC },
#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}} \
%{static:-static}}} \
"
@ -166,7 +180,7 @@ Boston, MA 02110-1301, USA. */
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}} \
%{static:-static}}} \
"
@ -247,7 +261,7 @@ Boston, MA 02110-1301, USA. */
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}} \
%{static:-static}}} \
%{mlittle-endian:-EL} \
%{!mno-relax:%{!r:-relax}} \
@ -330,7 +344,7 @@ do { \
/* Determine whether the entire c99 runtime is present in the
runtime library. */
#define TARGET_C99_FUNCTIONS 1
#define TARGET_C99_FUNCTIONS (OPTION_GLIBC)
#define TARGET_POSIX_IO

View File

@ -1,6 +1,6 @@
/* Xtensa Linux configuration.
Derived from the configuration for GCC for Intel i386 running Linux.
Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
This file is part of GCC.
@ -43,6 +43,8 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
%{mlongcalls:--longcalls} \
%{mno-longcalls:--no-longcalls}"
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#undef LINK_SPEC
#define LINK_SPEC \
"%{shared:-shared} \
@ -50,7 +52,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}} \
%{static:-static}}}"
#undef LOCAL_LABEL_PREFIX

View File

@ -8801,8 +8801,7 @@ on @samp{*-*-linux-*uclibc*} targets.
@item -muclibc
@opindex muclibc
Use uClibc instead of the GNU C library. This is the default on
@samp{*-*-linux-*uclibc*} targets. GCC currently only supports uClibc
on ARM and 32-bit MIPS targets.
@samp{*-*-linux-*uclibc*} targets.
@end table
@node H8/300 Options

View File

@ -1,4 +1,4 @@
# Copyright (C) 2003,2004 Free Software Foundation, Inc.
# Copyright (C) 2003,2004,2005,2006 Free Software Foundation, Inc.
# Contributed by Kelley Cook, June 2004.
# Original code from Neil Booth, May 2003.
#
@ -118,9 +118,18 @@ print ""
for (i = 0; i < n_opts; i++) {
opt = opt_args("InverseMask", flags[i])
if (opt ~ ",")
print "#define TARGET_" nth_arg(1, opt) \
" ((target_flags & MASK_" nth_arg(0, opt) ") == 0)"
if (opt ~ ",") {
vname = var_name(flags[i])
macro = "OPTION_"
mask = "OPTION_MASK_"
if (vname == "") {
vname = "target_flags"
macro = "TARGET_"
mask = "MASK_"
}
print "#define " macro nth_arg(1, opt) \
" ((" vname " & " mask nth_arg(0, opt) ") == 0)"
}
}
print ""

View File

@ -1,3 +1,7 @@
2006-02-18 Joseph S. Myers <joseph@codesourcery.com>
* gcc.dg/glibc-uclibc-1.c, gcc.dg/glibc-uclibc-2.c: New tests.
2006-02-17 Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
* gcc.dg/cpp/undef3.c: New test.

View File

@ -0,0 +1,6 @@
/* Test -mglibc and -muclibc not allowed together. */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* { dg-do link { target *-*-linux* } } */
/* { dg-options "-mglibc -muclibc" } */
/* { dg-error "-mglibc and -muclibc used together" "" { target *-*-* } 0 } */

View File

@ -0,0 +1,6 @@
/* Test -mglibc and -muclibc not allowed together. */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* { dg-do link { target *-*-linux* } } */
/* { dg-options "-muclibc -mglibc" } */
/* { dg-error "-mglibc and -muclibc used together" "" { target *-*-* } 0 } */