as sent here http://gcc.gnu.org/ml/gcc-patches/2005-11/msg00795.html some linux/freebsd elf targets already do this such as alpha, i386, and ppc. this patch fixes up a bunch of other linux elf targets to move the path of the dynamic linker out of the LINK_SPEC define and into its own DYNAMIC_LINKER define. this is pretty useful when dealing with adding support for other libcs (like uClibc) where all the other linux/elf settings are OK but we just want to change the dynamic linker path to point to our own. this affects x86_64, ia64, m68k, mips, parisc, s390, sh, sparc, and sparc64
Confirmed.
My uClibc support patch <http://gcc.gnu.org/ml/gcc-patches/2006-02/msg00843.html> addresses this issue for MIPS; the other targets still need similar changes (not yet done) to support uClibc within the framework of my patch.
Subject: Bug 24837 Author: jsm28 Date: Thu Feb 16 23:29:10 2006 New Revision: 111160 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=111160 Log: gcc: PR target/20353 PR target/24578 PR target/24837 * config/linux.opt: New file. * config/linux.h (CHOOSE_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, LINUX_DYNAMIC_LINKER): Define. (TARGET_C99_FUNCTIONS): Define depending on TARGET_GLIBC. * config.gcc (*-*-linux*): Define extra_options. (*-*-*uclibc*): Define UCLIBC_DEFAULT. (arm*-*-linux-gnueabi): Change to arm*-*-linux-*eabi. * config/arm/linux-eabi.h (LINUX_TARGET_INTERPRETER): Change to GLIBC_DYNAMIC_LINKER. * config/arm/linux-elf.h (LINUX_TARGET_INTERPRETER): Likewise. (LINUX_TARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * config/mips/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * doc/invoke.texi (GNU/Linux Options): New section. gcc/testsuite: * gcc.dg/builtins-config.h (HAVE_C99_RUNTIME): Don't define if __UCLIBC__ is defined. libstdc++-v3: PR libstdc++/14939 * config/os/uclibc/ctype_base.h, config/os/uclibc/ctype_inline.h, config/os/uclibc/ctype_noninline.h, config/os/uclibc/os_defines.h: New. * acinclude.m4 (GLIBCXX_CONFIGURE): Test whether using uClibc. * configure.host: Use os/uclibc for uClibc. * crossconfig.m4 (*-linux*): Use link tests. Don't hardcode presence of math functions. * configure: Regenerate. Added: trunk/gcc/config/linux.opt trunk/libstdc++-v3/config/os/uclibc/ trunk/libstdc++-v3/config/os/uclibc/ctype_base.h trunk/libstdc++-v3/config/os/uclibc/ctype_inline.h trunk/libstdc++-v3/config/os/uclibc/ctype_noninline.h trunk/libstdc++-v3/config/os/uclibc/os_defines.h Modified: trunk/gcc/ChangeLog trunk/gcc/config.gcc trunk/gcc/config/arm/linux-eabi.h trunk/gcc/config/arm/linux-elf.h trunk/gcc/config/linux.h trunk/gcc/config/mips/linux.h trunk/gcc/doc/invoke.texi trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/builtins-config.h trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/acinclude.m4 trunk/libstdc++-v3/configure trunk/libstdc++-v3/configure.host trunk/libstdc++-v3/crossconfig.m4
Subject: Bug 24837 Author: jsm28 Date: Thu Feb 16 23:38:44 2006 New Revision: 111161 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=111161 Log: PR libstdc++/14939 PR target/20353 PR target/24578 PR target/24837 * gcc/config/linux.opt: New file. * gcc/config/linux.h (CHOOSE_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, LINUX_DYNAMIC_LINKER): Define. (TARGET_C99_FUNCTIONS): Define depending on TARGET_GLIBC. * gcc/config.gcc (*-*-linux*): Define extra_options. (*-*-*uclibc*): Define UCLIBC_DEFAULT. (arm*-*-linux-gnueabi): Change to arm*-*-linux-*eabi. * gcc/config/arm/linux-eabi.h (LINUX_TARGET_INTERPRETER): Change to GLIBC_DYNAMIC_LINKER. * gcc/config/arm/linux-elf.h (LINUX_TARGET_INTERPRETER): Likewise. (LINUX_TARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * gcc/config/mips/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * gcc/doc/invoke.texi (GNU/Linux Options): New section. * gcc/testsuite/gcc.dg/builtins-config.h (HAVE_C99_RUNTIME): Don't define if __UCLIBC__ is defined. * libstdc++-v3/config/os/uclibc/ctype_base.h, libstdc++-v3/config/os/uclibc/ctype_inline.h, libstdc++-v3/config/os/uclibc/ctype_noninline.h, libstdc++-v3/config/os/uclibc/os_defines.h: New. * libstdc++-v3/acinclude.m4 (GLIBCXX_CONFIGURE): Test whether using uClibc. * libstdc++-v3/configure.host: Use os/uclibc for uClibc. * libstdc++-v3/crossconfig.m4 (*-linux*): Use link tests. Don't hardcode presence of math functions. * libstdc++-v3/configure: Regenerate. Added: branches/csl/sourcerygxx-4_1/gcc/config/linux.opt branches/csl/sourcerygxx-4_1/libstdc++-v3/config/os/uclibc/ branches/csl/sourcerygxx-4_1/libstdc++-v3/config/os/uclibc/ctype_base.h branches/csl/sourcerygxx-4_1/libstdc++-v3/config/os/uclibc/ctype_inline.h branches/csl/sourcerygxx-4_1/libstdc++-v3/config/os/uclibc/ctype_noninline.h branches/csl/sourcerygxx-4_1/libstdc++-v3/config/os/uclibc/os_defines.h Modified: branches/csl/sourcerygxx-4_1/ChangeLog.csl branches/csl/sourcerygxx-4_1/gcc/config.gcc branches/csl/sourcerygxx-4_1/gcc/config/arm/linux-eabi.h branches/csl/sourcerygxx-4_1/gcc/config/arm/linux-elf.h branches/csl/sourcerygxx-4_1/gcc/config/linux.h branches/csl/sourcerygxx-4_1/gcc/config/mips/linux.h branches/csl/sourcerygxx-4_1/gcc/doc/invoke.texi branches/csl/sourcerygxx-4_1/gcc/testsuite/gcc.dg/builtins-config.h branches/csl/sourcerygxx-4_1/libstdc++-v3/acinclude.m4 branches/csl/sourcerygxx-4_1/libstdc++-v3/configure branches/csl/sourcerygxx-4_1/libstdc++-v3/configure.host branches/csl/sourcerygxx-4_1/libstdc++-v3/crossconfig.m4
Subject: Bug 24837 Author: jsm28 Date: Sat Feb 18 11:12:51 2006 New Revision: 111235 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=111235 Log: 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. Added: trunk/gcc/testsuite/gcc.dg/glibc-uclibc-1.c trunk/gcc/testsuite/gcc.dg/glibc-uclibc-2.c Modified: trunk/gcc/ChangeLog trunk/gcc/config.gcc trunk/gcc/config/alpha/linux-elf.h trunk/gcc/config/alpha/linux.h trunk/gcc/config/cris/linux.h trunk/gcc/config/frv/linux.h trunk/gcc/config/i386/linux.h trunk/gcc/config/i386/linux64.h trunk/gcc/config/ia64/linux.h trunk/gcc/config/linux.h trunk/gcc/config/linux.opt trunk/gcc/config/m32r/linux.h trunk/gcc/config/m68k/linux.h trunk/gcc/config/mips/linux64.h trunk/gcc/config/mn10300/linux.h trunk/gcc/config/pa/pa-linux.h trunk/gcc/config/rs6000/linux.h trunk/gcc/config/rs6000/linux64.h trunk/gcc/config/rs6000/sysv4.h trunk/gcc/config/s390/linux.h trunk/gcc/config/sh/linux.h trunk/gcc/config/sparc/linux.h trunk/gcc/config/sparc/linux64.h trunk/gcc/config/xtensa/linux.h trunk/gcc/doc/invoke.texi trunk/gcc/opth-gen.awk trunk/gcc/testsuite/ChangeLog
Subject: Bug 24837 Author: jsm28 Date: Sat Feb 18 11:17:08 2006 New Revision: 111236 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=111236 Log: PR target/24837 * gcc/config.gcc: Define UCLIBC_DEFAULT to 0 or 1. * gcc/opth-gen.awk: Handle Var and InverseMask together. * gcc/config/linux.opt (muclibc, mglibc): Use Var(linux_uclibc). * gcc/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. * gcc/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. * gcc/config/alpha/linux.h (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC. * gcc/config/cris/linux.h (GLIBC_DYNAMIC_LINKER): Define. (CRIS_LINK_SUBTARGET_SPEC): Pass a -dynamic-linker option. * gcc/config/frv/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. (TARGET_C99_FUNCTIONS): Don't define. * gcc/config/i386/linux.h (DYNAMIC_LINKER): Rename to GLIBC_DYNAMIC_LINKER. (SUBTARGET_EXTRA_SPECS): Use LINUX_DYNAMIC_LINKER. * gcc/config/i386/linux64.h (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and LINUX_DYNAMIC_LINKER64. * gcc/config/ia64/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * gcc/config/m32r/linux.h (GLIBC_DYNAMIC_LINKE): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * gcc/config/m68k/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * gcc/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. * gcc/config/mn10300/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * gcc/config/pa/pa-linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * gcc/config/rs6000/linux.h (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC. * gcc/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. * gcc/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. * gcc/config/s390/linux.h (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and LINUX_DYNAMIC_LINKER64. * gcc/config/sh/linux.h (GLIBC_DYNAMIC_LINKER): Define. (SUBTARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * gcc/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. * gcc/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. * gcc/config/xtensa/linux.h (GLIBC_DYNAMIC_LINKER): Define. (LINK_SPEC): Use LINUX_DYNAMIC_LINKER. * gcc/doc/invoke.texi (-muclibc): Remove caveat about supported targets. * gcc/testsuite/gcc.dg/glibc-uclibc-1.c, gcc/testsuite/gcc.dg/glibc-uclibc-2.c: New tests. Added: branches/csl/sourcerygxx-4_1/gcc/testsuite/gcc.dg/glibc-uclibc-1.c - copied unchanged from r111235, trunk/gcc/testsuite/gcc.dg/glibc-uclibc-1.c branches/csl/sourcerygxx-4_1/gcc/testsuite/gcc.dg/glibc-uclibc-2.c - copied unchanged from r111235, trunk/gcc/testsuite/gcc.dg/glibc-uclibc-2.c Modified: branches/csl/sourcerygxx-4_1/ChangeLog.csl branches/csl/sourcerygxx-4_1/gcc/config.gcc branches/csl/sourcerygxx-4_1/gcc/config/alpha/linux-elf.h branches/csl/sourcerygxx-4_1/gcc/config/alpha/linux.h branches/csl/sourcerygxx-4_1/gcc/config/cris/linux.h branches/csl/sourcerygxx-4_1/gcc/config/frv/linux.h branches/csl/sourcerygxx-4_1/gcc/config/i386/linux.h branches/csl/sourcerygxx-4_1/gcc/config/i386/linux64.h branches/csl/sourcerygxx-4_1/gcc/config/ia64/linux.h branches/csl/sourcerygxx-4_1/gcc/config/linux.h branches/csl/sourcerygxx-4_1/gcc/config/linux.opt branches/csl/sourcerygxx-4_1/gcc/config/m32r/linux.h branches/csl/sourcerygxx-4_1/gcc/config/m68k/linux.h branches/csl/sourcerygxx-4_1/gcc/config/mips/linux64.h branches/csl/sourcerygxx-4_1/gcc/config/mn10300/linux.h branches/csl/sourcerygxx-4_1/gcc/config/pa/pa-linux.h branches/csl/sourcerygxx-4_1/gcc/config/rs6000/linux.h branches/csl/sourcerygxx-4_1/gcc/config/rs6000/linux64.h branches/csl/sourcerygxx-4_1/gcc/config/rs6000/sysv4.h branches/csl/sourcerygxx-4_1/gcc/config/s390/linux.h branches/csl/sourcerygxx-4_1/gcc/config/sh/linux.h branches/csl/sourcerygxx-4_1/gcc/config/sparc/linux.h branches/csl/sourcerygxx-4_1/gcc/config/sparc/linux64.h branches/csl/sourcerygxx-4_1/gcc/config/xtensa/linux.h branches/csl/sourcerygxx-4_1/gcc/doc/invoke.texi branches/csl/sourcerygxx-4_1/gcc/opth-gen.awk
Fixed for 4.2.