diff options
Diffstat (limited to 'toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99494.patch')
-rw-r--r-- | toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99494.patch | 1272 |
1 files changed, 0 insertions, 1272 deletions
diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99494.patch b/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99494.patch deleted file mode 100644 index 56897e984b..0000000000 --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99494.patch +++ /dev/null @@ -1,1272 +0,0 @@ -2011-04-09 Andrew Stubbs <ams@codesourcery.com> - - Backport from mainline: - - Maxim Kuvyrkov <maxim@codesourcery.com> - - * config.sub: Recognize *-linux-android*. - - 2010-05-27 Maxim Kuvyrkov <maxim@codesourcery.com> - - Add support for Bionic C library - gcc/ - * config.gcc (LIBC_GLIBC, LIBC_BIONIC, LIBC_UCLIBC): New tm_define - macro. - (DEFAULT_LIBC): New tm_define macro set to one of LIBC_*. - (bfin*-uclinux, moxie-*-uclinux*, m68k-*-uclinux*): Update. - - * config/linux.h (OPTION_GLIBC, OPTION_UCLIBC, OPTION_BIONIC): Define. - (LINUX_TARGET_OS_CPP_BUILTINS): Define __gnu_linux__ only for GLIBC. - (CHOOSE_DYNAMIC_LINKER1, CHOOSE_DYNAMIC_LINKER): Make it easier - to support multiple C libraries. Handle Bionic. - (BIONIC_DYNAMIC_LINKER, BIONIC_DYNAMIC_LINKER32,) - (BIONIC_DYNAMIC_LINKER64): Define. - (LINUX_DYNAMIC_LINKER, LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): - Update. - (TARGET_HAS_SINCOS): Enable for Bionic. - - * config/linux.opt: Rewrite to handle more than 2 C libraries. Make - the last option specified on command line take effect. - (linux_uclibc): Rename to linux_libc, initialize using DEFAULT_LIBC. - (mbionic): New. - (mglibc, muclibc): Update. - - * config/alpha/linux-elf.h, config/rs6000/linux64.h, - * config/rs6000/sysv4.h (CHOOSE_DYNAMIC_LINKER): Update to use - DEFAULT_LIBC. - - * doc/invoke.texi (-mglibc, -muclibc): Update. - (-mbionic): Document. - - gcc/testsuite/ - * gcc.dg/glibc-uclibc-1.c, gcc.dg/glibc-uclibc-2.c: Remove, no longer - necessary. - - 2010-05-27 Maxim Kuvyrkov <maxim@codesourcery.com> - - Support compilation for Android platform. Reimplement -mandroid. - gcc/ - * config.gcc (*linux*): Include linux-android.h and linux-android.opt. - (*android*): Set ANDROID_DEFAULT. - (arm*-*-linux*): Include linux-android.h. - (arm*-*-eabi*): Don't include previous -mandroid implementation. - * config/arm/eabi.h: Remove, move Android-specific parts ... - * config/linux-android.h: ... here. New file. - * config/arm/eabi.opt: Rename to ... - * config/linux-android.opt: ... this. - (mandroid): Allow -mno-android option. Initialize based on - ANDROID_DEFAULT. - * config/linux.h (STARTFILE_SPEC, ENDFILE_SPEC, CC1_SPEC, LIB_SPEC): - Move logic to corresponding LINUX_TARGET_* macros. - (TARGET_OS_CPP_BUILTINS): Define __ANDROID__, when appropriate. - * config/linux-eabi.h (LINK_SPEC, CC1_SPEC, CC1PLUS_SPEC, LIB_SPEC,) - (STARTFILE_SPEC, ENDFILE_SPEC): Define to choose between Linux and - Android definitions. - (LINUX_TARGET_OS_CPP_BUILTINS): Define __ANDROID__ if TARGET_ANDROID. - * doc/invoke.texi (-mandroid, -tno-android-cc, -tno-android-ld): - Document. - - 2010-06-01 Maxim Kuvyrkov <maxim@codesourcery.com> - - gcc/ - * config/arm/t-linux-androideabi: New. - * config.gcc (arm*-*-linux-androideabi): Include multilib configuration. - - 2010-05-27 Maxim Kuvyrkov <maxim@codesourcery.com> - - gcc/ - * gthr-posix.h (pthread_cancel): Don't declare if compiling against - Bionic C library. - (__gthread_active_p): Check for pthread_create if compiling against - Bionic C library. - - 2010-06-01 Maxim Kuvyrkov <maxim@codesourcery.com> - - libstdc++-v3/ - * acinclude.m4: Support Bionic C library. - Explicitly specify -fexceptions for exception check. - * configure.host: Support Bionic C library. - * configure: Regenerate. - * config/os/bionic/ctype_base.h, config/os/bionic/ctype_inline.h, - * config/os/bionic/ctype_noincline.h, config/os/bionic/os_defines.h: - New files, based on config/os/newlib/*. - -=== modified file 'config.sub' -Index: gcc-4.5.3/config.sub -=================================================================== ---- gcc-4.5.3.orig/config.sub -+++ gcc-4.5.3/config.sub -@@ -4,7 +4,7 @@ - # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 - # Free Software Foundation, Inc. - --timestamp='2010-03-22' -+timestamp='2010-04-23' - - # This file is (in principle) common to ALL GNU software. - # The presence of a machine in this file suggests that SOME GNU software -@@ -124,8 +124,9 @@ esac - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in -- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ -- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ -+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ -+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ -+ knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os -@@ -1307,7 +1308,8 @@ case $os in - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ -+ | -mingw32* | -linux-gnu* | -linux-android* \ -+ | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -Index: gcc-4.5.3/gcc/config.gcc -=================================================================== ---- gcc-4.5.3.orig/gcc/config.gcc -+++ gcc-4.5.3/gcc/config.gcc -@@ -513,26 +513,48 @@ case ${target} in - *-*-gnu*) - tmake_file="$tmake_file t-gnu";; - esac -- # glibc / uclibc switch. uclibc isn't usable for GNU/Hurd and neither for -- # GNU/k*BSD. -+ # Common C libraries. -+ tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3" -+ # glibc / uclibc / bionic switch. -+ # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD. - case $target in - *linux*) - extra_options="$extra_options linux.opt";; - *) - tm_defines="$tm_defines OPTION_GLIBC=1";; - esac -- case ${target} in -+ case $target in -+ *-*-*android*) -+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC" -+ ;; - *-*-*uclibc*) -- tm_defines="${tm_defines} UCLIBC_DEFAULT=1" -+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" - ;; - *) -- tm_defines="${tm_defines} UCLIBC_DEFAULT=0" -+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" - ;; - esac -- # Assume that glibc or uClibc are being used and so __cxa_atexit is provided. -+ # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit -+ # is provided. - default_use_cxa_atexit=yes - use_gcc_tgmath=no - use_gcc_stdint=wrap -+ # Add Android userspace support to Linux targets. -+ case $target in -+ *linux*) -+ tm_file="$tm_file linux-android.h" -+ extra_options="$extra_options linux-android.opt" -+ ;; -+ esac -+ # Enable compilation for Android by default for *android* targets. -+ case $target in -+ *-*-*android*) -+ tm_defines="$tm_defines ANDROID_DEFAULT=1" -+ ;; -+ *) -+ tm_defines="$tm_defines ANDROID_DEFAULT=0" -+ ;; -+ esac - ;; - *-*-netbsd*) - tmake_file="t-slibgcc-elf-ver t-libc-ok t-netbsd t-libgcc-pic" -@@ -728,7 +750,7 @@ arm*-*-netbsd*) - use_collect2=yes - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF -- tm_file="dbxelf.h elfos.h linux.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" -+ tm_file="dbxelf.h elfos.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" - case $target in - arm*b-*) - tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" -@@ -739,6 +761,12 @@ arm*-*-linux*) # ARM GNU/Linux with EL - arm*-*-linux-*eabi) - tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h" - tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc" -+ # Define multilib configuration for arm-linux-androideabi. -+ case ${target} in -+ *-androideabi) -+ tmake_file="$tmake_file arm/t-linux-androideabi" -+ ;; -+ esac - # The BPABI long long divmod functions return a 128-bit value in - # registers r0-r3. Correctly modeling that requires the use of - # TImode. -@@ -785,9 +813,8 @@ arm*-*-eabi* | arm*-*-symbianelf* ) - tmake_file="arm/t-arm arm/t-arm-elf" - case ${target} in - arm*-*-eabi*) -- tm_file="$tm_file arm/eabi.h newlib-stdint.h" -+ tm_file="$tm_file newlib-stdint.h" - tmake_file="${tmake_file} arm/t-bpabi" -- extra_options="${extra_options} arm/eabi.opt" - use_gcc_stdint=wrap - ;; - arm*-*-symbianelf*) -@@ -843,7 +870,7 @@ bfin*-elf*) - bfin*-uclinux*) - tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h linux.h glibc-stdint.h bfin/uclinux.h" - tmake_file=bfin/t-bfin-uclinux -- tm_defines="${tm_defines} UCLIBC_DEFAULT=1" -+ tm_defines="${tm_defines} DEFAULT_LIBC=LIBC_UCLIBC" - extra_options="${extra_options} linux.opt" - use_collect2=no - ;; -@@ -924,7 +951,7 @@ moxie-*-uclinux*) - tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h glibc-stdint.h moxie/uclinux.h" - extra_parts="crti.o crtn.o crtbegin.o crtend.o" - tmake_file="${tmake_file} moxie/t-moxie moxie/t-moxie-softfp soft-fp/t-softfp" -- tm_defines="${tm_defines} UCLIBC_DEFAULT=1" -+ tm_defines="${tm_defines} DEFAULT_LIBC=LIBC_UCLIBC" - extra_options="${extra_options} linux.opt" - ;; - h8300-*-rtems*) -@@ -1644,7 +1671,7 @@ m68k-*-uclinux*) # Motorola m68k/ColdFi - default_m68k_cpu=68020 - default_cf_cpu=5206 - tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h flat.h m68k/linux.h m68k/uclinux.h ./sysroot-suffix.h" -- tm_defines="${tm_defines} MOTOROLA=1 UCLIBC_DEFAULT=1" -+ tm_defines="${tm_defines} MOTOROLA=1 DEFAULT_LIBC=LIBC_UCLIBC" - extra_options="${extra_options} linux.opt" - tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs" - ;; -Index: gcc-4.5.3/gcc/config/alpha/linux-elf.h -=================================================================== ---- gcc-4.5.3.orig/gcc/config/alpha/linux-elf.h -+++ gcc-4.5.3/gcc/config/alpha/linux-elf.h -@@ -29,10 +29,12 @@ along with GCC; see the file COPYING3. - - #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 "}" -+#if DEFAULT_LIBC == LIBC_UCLIBC -+#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" -+#elif DEFAULT_LIBC == LIBC_GLIBC -+#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}" - #else --#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}" -+#error "Unsupported DEFAULT_LIBC" - #endif - #define LINUX_DYNAMIC_LINKER \ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) -Index: gcc-4.5.3/gcc/config/arm/eabi.h -=================================================================== ---- gcc-4.5.3.orig/gcc/config/arm/eabi.h -+++ /dev/null -@@ -1,125 +0,0 @@ --/* Configuration file for ARM EABI targets. -- Copyright (C) 2008 -- Free Software Foundation, Inc. -- Contributed by Doug Kwan (dougkwan@google.com) -- -- 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/>. */ -- --/* This file contains macro overrides for EABI targets. */ -- --#undef TARGET_OS_CPP_BUILTINS --#define TARGET_OS_CPP_BUILTINS() \ -- do \ -- { \ -- TARGET_BPABI_CPP_BUILTINS (); \ -- if (TARGET_ANDROID) \ -- builtin_define ("__ANDROID__"); \ -- } \ -- while (false) -- --#undef SUBSUBTARGET_EXTRA_SPECS --#define SUBSUBTARGET_EXTRA_SPECS \ -- { "link_android", ANDROID_LINK_SPEC }, \ -- { "link_default", BPABI_LINK_SPEC }, \ -- { "cc1_android", ANDROID_CC1_SPEC }, \ -- { "cc1_default", CC1_DEFAULT_SPEC }, \ -- { "cc1plus_android", ANDROID_CC1PLUS_SPEC }, \ -- { "cc1plus_default", CC1PLUS_DEFAULT_SPEC }, \ -- { "lib_android", ANDROID_LIB_SPEC }, \ -- { "lib_default", LIB_DEFAULT_SPEC }, \ -- { "startfile_android", ANDROID_STARTFILE_SPEC }, \ -- { "startfile_default", UNKNOWN_ELF_STARTFILE_SPEC }, \ -- { "endfile_android", ANDROID_ENDFILE_SPEC }, \ -- { "endfile_default", UNKNOWN_ELF_ENDFILE_SPEC }, \ -- --#undef ANDROID_LINK_SPEC --#define ANDROID_LINK_SPEC \ --"%{mbig-endian:-EB} %{mlittle-endian:-EL} " \ --"%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} " \ --"%{!static:" \ -- "%{shared: -Bsymbolic} " \ -- "%{!shared:" \ -- "%{rdynamic:-export-dynamic} " \ -- "%{!dynamic-linker:-dynamic-linker /system/bin/linker}}} " \ --"-X" SUBTARGET_EXTRA_LINK_SPEC -- --/* Override LINK_SPEC in bpabi.h. */ --#undef LINK_SPEC --#define LINK_SPEC \ --"%{mandroid: %(link_android) ;" \ --" : %(link_default)}" -- --/* Android uses -fno-exceptions by default. */ --#undef ANDROID_CC1_SPEC --#define ANDROID_CC1_SPEC "%{!fexceptions:-fno-exceptions}" -- --/* Default CC1_SPEC as in arm.h. */ --#undef CC1_DEFAULT_SPEC --#define CC1_DEFAULT_SPEC "" -- --#undef CC1_SPEC --#define CC1_SPEC \ --"%{mandroid: %(cc1_android) ;" \ --" : %(cc1_default)}" -- --/* Android uses -fno-rtti by default. */ --#undef ANDROID_CC1PLUS_SPEC --#define ANDROID_CC1PLUS_SPEC "%{!frtti:-fno-rtti}" -- --/* Default CC1PLUS_SPEC as in gcc.c. */ --#undef CC1PLUS_DEFAULT_SPEC --#define CC1PLUS_DEFAULT_SPEC "" -- --#undef CC1PLUS_SPEC --#define CC1PLUS_SPEC \ --"%{mandroid: %(cc1plus_android) ;" \ --" : %(cc1plus_default)}" -- --#undef ANDROID_LIB_SPEC --#define ANDROID_LIB_SPEC "-lc %{!static:-ldl}" -- --/* Default LIB_SPEC as in gcc.c. */ --#undef LIB_DEFAULT_SPEC --#define LIB_DEFAULT_SPEC \ --"%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}" -- --#undef LIB_SPEC --#define LIB_SPEC \ --"%{mandroid: %(lib_android) ;" \ --" : %(lib_default)}" -- --#undef ANDROID_STARTFILE_SPEC --#define ANDROID_STARTFILE_SPEC \ --"%{!shared:" \ -- "%{static: crtbegin_static%O%s ;" \ -- " : crtbegin_dynamic%O%s}}" -- --/* Override STARTFILE_SPEC in unknown-elf.h. */ --#undef STARTFILE_SPEC --#define STARTFILE_SPEC \ --"%{mandroid: %(startfile_android) ;" \ --" : %(startfile_default)}" -- --#undef ANDROID_ENDFILE_SPEC --#define ANDROID_ENDFILE_SPEC "%{!shared:crtend_android%O%s}" -- --/* Override ENDFILE_SPEC in unknown-elf.h. */ --#undef ENDFILE_SPEC --#define ENDFILE_SPEC \ --"%{mandroid: %(endfile_android) ;" \ --" : %(endfile_default)}" -- -Index: gcc-4.5.3/gcc/config/arm/eabi.opt -=================================================================== ---- gcc-4.5.3.orig/gcc/config/arm/eabi.opt -+++ /dev/null -@@ -1,23 +0,0 @@ --; EABI specific options for ARM port of the compiler. -- --; Copyright (C) 2008 Free Software Foundation, Inc. --; --; 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/>. -- --mandroid --Target Report RejectNegative Mask(ANDROID) --Generate code for the Android operating system. -Index: gcc-4.5.3/gcc/config/arm/linux-eabi.h -=================================================================== ---- gcc-4.5.3.orig/gcc/config/arm/linux-eabi.h -+++ gcc-4.5.3/gcc/config/arm/linux-eabi.h -@@ -70,7 +70,30 @@ - /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to - use the GNU/Linux version, not the generic BPABI version. */ - #undef LINK_SPEC --#define LINK_SPEC LINUX_TARGET_LINK_SPEC BE8_LINK_SPEC TARGET_FIX_V4BX_SPEC -+#define LINK_SPEC BE8_LINK_SPEC TARGET_FIX_V4BX_SPEC \ -+ LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \ -+ LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC) -+ -+#undef CC1_SPEC -+#define CC1_SPEC \ -+ LINUX_OR_ANDROID_CC (LINUX_TARGET_CC1_SPEC, \ -+ LINUX_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC) -+ -+#define CC1PLUS_SPEC \ -+ LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC) -+ -+#undef LIB_SPEC -+#define LIB_SPEC \ -+ LINUX_OR_ANDROID_LD (LINUX_TARGET_LIB_SPEC, \ -+ LINUX_TARGET_LIB_SPEC " " ANDROID_LIB_SPEC) -+ -+#undef STARTFILE_SPEC -+#define STARTFILE_SPEC \ -+ LINUX_OR_ANDROID_LD (LINUX_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC) -+ -+#undef ENDFILE_SPEC -+#define ENDFILE_SPEC \ -+ LINUX_OR_ANDROID_LD (LINUX_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC) - - /* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we - do not use -lfloat. */ -Index: gcc-4.5.3/gcc/config/arm/t-linux-androideabi -=================================================================== ---- /dev/null -+++ gcc-4.5.3/gcc/config/arm/t-linux-androideabi -@@ -0,0 +1,10 @@ -+MULTILIB_OPTIONS = march=armv7-a mthumb -+MULTILIB_DIRNAMES = armv7-a thumb -+MULTILIB_EXCEPTIONS = -+MULTILIB_MATCHES = -+MULTILIB_OSDIRNAMES = -+ -+# The "special" multilib can be used to build native applications for Android, -+# as opposed to native shared libraries that are then called via JNI. -+#MULTILIB_OPTIONS += tno-android-cc -+#MULTILIB_DIRNAMES += special -Index: gcc-4.5.3/gcc/config/linux-android.h -=================================================================== ---- /dev/null -+++ gcc-4.5.3/gcc/config/linux-android.h -@@ -0,0 +1,53 @@ -+/* Configuration file for Linux Android targets. -+ Copyright (C) 2010 -+ Free Software Foundation, Inc. -+ Contributed by CodeSourcery, Inc. -+ -+ 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/>. */ -+ -+#if ANDROID_DEFAULT -+# define NOANDROID "mno-android" -+#else -+# define NOANDROID "!mandroid" -+#endif -+ -+#define LINUX_OR_ANDROID_CC(LINUX_SPEC, ANDROID_SPEC) \ -+ "%{" NOANDROID "|tno-android-cc:" LINUX_SPEC ";:" ANDROID_SPEC "}" -+ -+#define LINUX_OR_ANDROID_LD(LINUX_SPEC, ANDROID_SPEC) \ -+ "%{" NOANDROID "|tno-android-ld:" LINUX_SPEC ";:" ANDROID_SPEC "}" -+ -+#define ANDROID_LINK_SPEC \ -+ "%{shared: -Bsymbolic}" -+ -+#define ANDROID_CC1_SPEC \ -+ "%{!mglibc:%{!muclibc:%{!mbionic: -mbionic}}} " \ -+ "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC}}}}" -+ -+#define ANDROID_CC1PLUS_SPEC \ -+ "%{!fexceptions:%{!fno-exceptions: -fno-exceptions}} " \ -+ "%{!frtti:%{!fno-rtti: -fno-rtti}}" -+ -+#define ANDROID_LIB_SPEC \ -+ "%{!static: -ldl}" -+ -+#define ANDROID_STARTFILE_SPEC \ -+ "%{!shared:" \ -+ " %{static: crtbegin_static%O%s;: crtbegin_dynamic%O%s}}" -+ -+#define ANDROID_ENDFILE_SPEC \ -+ "%{!shared: crtend_android%O%s}" -Index: gcc-4.5.3/gcc/config/linux-android.opt -=================================================================== ---- /dev/null -+++ gcc-4.5.3/gcc/config/linux-android.opt -@@ -0,0 +1,23 @@ -+; Android specific options. -+ -+; Copyright (C) 2010 Free Software Foundation, Inc. -+; -+; 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/>. -+ -+mandroid -+Target Report Mask(ANDROID) Var(flag_android) Init(ANDROID_DEFAULT ? OPTION_MASK_ANDROID : 0) -+Generate code for the Android platform. -Index: gcc-4.5.3/gcc/config/linux.h -=================================================================== ---- gcc-4.5.3.orig/gcc/config/linux.h -+++ gcc-4.5.3/gcc/config/linux.h -@@ -1,6 +1,6 @@ - /* Definitions for Linux-based GNU systems with ELF format - Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2003, 2004, 2005, 2006, -- 2007, 2009 Free Software Foundation, Inc. -+ 2007, 2009, 2010 Free Software Foundation, Inc. - Contributed by Eric Youngdale. - Modified for stabs-in-ELF by H.J. Lu (hjl@lucon.org). - -@@ -42,16 +42,17 @@ see the files COPYING3 and COPYING.RUNTI - provides part of the support for getting C++ file-scope static - object constructed before entering `main'. */ - --#undef STARTFILE_SPEC - #if defined HAVE_LD_PIE --#define STARTFILE_SPEC \ -+#define LINUX_TARGET_STARTFILE_SPEC \ - "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ - crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" - #else --#define STARTFILE_SPEC \ -+#define LINUX_TARGET_STARTFILE_SPEC \ - "%{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}} \ - crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" - #endif -+#undef STARTFILE_SPEC -+#define STARTFILE_SPEC LINUX_TARGET_STARTFILE_SPEC - - /* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on - the GNU/Linux magical crtend.o file (see crtstuff.c) which -@@ -59,33 +60,44 @@ see the files COPYING3 and COPYING.RUNTI - object constructed before entering `main', followed by a normal - GNU/Linux "finalizer" file, `crtn.o'. */ - --#undef ENDFILE_SPEC --#define ENDFILE_SPEC \ -+#define LINUX_TARGET_ENDFILE_SPEC \ - "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s" -+#undef ENDFILE_SPEC -+#define ENDFILE_SPEC LINUX_TARGET_ENDFILE_SPEC - - /* This is for -profile to use -lc_p instead of -lc. */ -+#define LINUX_TARGET_CC1_SPEC "%{profile:-p}" - #ifndef CC1_SPEC --#define CC1_SPEC "%{profile:-p}" -+#define CC1_SPEC LINUX_TARGET_CC1_SPEC - #endif - - /* The GNU C++ standard library requires that these macros be defined. */ - #undef CPLUSPLUS_CPP_SPEC - #define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" - --#undef LIB_SPEC --#define LIB_SPEC \ -+#define LINUX_TARGET_LIB_SPEC \ - "%{pthread:-lpthread} \ - %{shared:-lc} \ - %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}" -+#undef LIB_SPEC -+#define LIB_SPEC LINUX_TARGET_LIB_SPEC -+ -+/* C libraries supported on Linux. */ -+#define OPTION_GLIBC (linux_libc == LIBC_GLIBC) -+#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC) -+#define OPTION_BIONIC (linux_libc == LIBC_BIONIC) - - #define LINUX_TARGET_OS_CPP_BUILTINS() \ - do { \ -- builtin_define ("__gnu_linux__"); \ -+ if (OPTION_GLIBC) \ -+ builtin_define ("__gnu_linux__"); \ - builtin_define_std ("linux"); \ - builtin_define_std ("unix"); \ - builtin_assert ("system=linux"); \ - builtin_assert ("system=unix"); \ - builtin_assert ("system=posix"); \ -+ if (OPTION_ANDROID) \ -+ builtin_define ("__ANDROID__"); \ - } while (0) - - #if defined(HAVE_LD_EH_FRAME_HDR) -@@ -105,13 +117,24 @@ see the files COPYING3 and COPYING.RUNTI - #endif - - /* 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. */ --#if UCLIBC_DEFAULT --#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:%{muclibc:%e-mglibc and -muclibc used together}" G ";:" U "}" -+ uClibc or Bionic is the default C library and whether -+ -muclibc or -mglibc or -mbionic has been passed to change the default. */ -+ -+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \ -+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}" -+ -+#if DEFAULT_LIBC == LIBC_GLIBC -+#define CHOOSE_DYNAMIC_LINKER(G, U, B) \ -+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B) -+#elif DEFAULT_LIBC == LIBC_UCLIBC -+#define CHOOSE_DYNAMIC_LINKER(G, U, B) \ -+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B) -+#elif DEFAULT_LIBC == LIBC_BIONIC -+#define CHOOSE_DYNAMIC_LINKER(G, U, B) \ -+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U) - #else --#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}" --#endif -+#error "Unsupported DEFAULT_LIBC" -+#endif /* DEFAULT_LIBC */ - - /* For most targets the following definitions suffice; - GLIBC_DYNAMIC_LINKER must be defined for each target using them, or -@@ -120,18 +143,25 @@ see the files COPYING3 and COPYING.RUNTI - #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) -+#define BIONIC_DYNAMIC_LINKER "/system/bin/linker" -+#define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker" -+#define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64" -+ -+#define LINUX_DYNAMIC_LINKER \ -+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \ -+ BIONIC_DYNAMIC_LINKER) -+#define LINUX_DYNAMIC_LINKER32 \ -+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \ -+ BIONIC_DYNAMIC_LINKER32) -+#define LINUX_DYNAMIC_LINKER64 \ -+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \ -+ BIONIC_DYNAMIC_LINKER64) - - /* Determine whether the entire c99 runtime - is present in the runtime library. */ - #define TARGET_C99_FUNCTIONS (OPTION_GLIBC) - - /* Whether we have sincos that follows the GNU extension. */ --#define TARGET_HAS_SINCOS (OPTION_GLIBC) -+#define TARGET_HAS_SINCOS (OPTION_GLIBC | OPTION_BIONIC) - - #define TARGET_POSIX_IO -Index: gcc-4.5.3/gcc/config/linux.opt -=================================================================== ---- gcc-4.5.3.orig/gcc/config/linux.opt -+++ gcc-4.5.3/gcc/config/linux.opt -@@ -1,6 +1,6 @@ - ; Processor-independent options for GNU/Linux. - ; --; Copyright (C) 2006, 2007, 2009 Free Software Foundation, Inc. -+; Copyright (C) 2006, 2007, 2009, 2010 Free Software Foundation, Inc. - ; Contributed by CodeSourcery. - ; - ; This file is part of GCC. -@@ -19,10 +19,14 @@ - ; along with GCC; see the file COPYING3. If not see - ; <http://www.gnu.org/licenses/>. - -+mbionic -+Target Report RejectNegative Var(linux_libc,LIBC_BIONIC) Init(DEFAULT_LIBC) Negative(mglibc) -+Use Bionic C library -+ - mglibc --Target RejectNegative Report InverseMask(UCLIBC, GLIBC) Var(linux_uclibc) Init(UCLIBC_DEFAULT ? OPTION_MASK_UCLIBC : 0) --Use GNU libc instead of uClibc -+Target Report RejectNegative Var(linux_libc,LIBC_GLIBC) VarExists Negative(muclibc) -+Use GNU C library - - muclibc --Target RejectNegative Report Mask(UCLIBC) Var(linux_uclibc) VarExists --Use uClibc instead of GNU libc -+Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) VarExists Negative(mbionic) -+Use uClibc C library -Index: gcc-4.5.3/gcc/config/rs6000/linux64.h -=================================================================== ---- gcc-4.5.3.orig/gcc/config/rs6000/linux64.h -+++ gcc-4.5.3/gcc/config/rs6000/linux64.h -@@ -344,10 +344,12 @@ extern int dot_symbols; - #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 "}" -+#if DEFAULT_LIBC == LIBC_UCLIBC -+#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" -+#elif DEFAULT_LIBC == LIBC_GLIBC -+#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}" - #else --#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}" -+#error "Unsupported DEFAULT_LIBC" - #endif - #define LINUX_DYNAMIC_LINKER32 \ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32) -Index: gcc-4.5.3/gcc/config/rs6000/sysv4.h -=================================================================== ---- gcc-4.5.3.orig/gcc/config/rs6000/sysv4.h -+++ gcc-4.5.3/gcc/config/rs6000/sysv4.h -@@ -901,10 +901,12 @@ SVR4_ASM_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 "}" -+#if DEFAULT_LIBC == LIBC_UCLIBC -+#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" -+#elif DEFAULT_LIBC == LIBC_GLIBC -+#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}" - #else --#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:%{mglibc:%e-mglibc and -muclibc used together}" U ";:" G "}" -+#error "Unsupported DEFAULT_LIBC" - #endif - #define LINUX_DYNAMIC_LINKER \ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) -Index: gcc-4.5.3/gcc/doc/invoke.texi -=================================================================== ---- gcc-4.5.3.orig/gcc/doc/invoke.texi -+++ gcc-4.5.3/gcc/doc/invoke.texi -@@ -565,7 +565,8 @@ Objective-C and Objective-C++ Dialects}. - -mcpu=@var{cpu}} - - @emph{GNU/Linux Options} --@gccoptlist{-muclibc} -+@gccoptlist{-mglibc -muclibc -mbionic -mandroid @gol -+-tno-android-cc -tno-android-ld} - - @emph{H8/300 Options} - @gccoptlist{-mrelax -mh -ms -mn -mint32 -malign-300} -@@ -11469,13 +11470,41 @@ These @samp{-m} options are defined for - @table @gcctabopt - @item -mglibc - @opindex mglibc --Use the GNU C library instead of uClibc. This is the default except --on @samp{*-*-linux-*uclibc*} targets. -+Use the GNU C library. This is the default except -+on @samp{*-*-linux-*uclibc*} and @samp{*-*-linux-*android*} targets. - - @item -muclibc - @opindex muclibc --Use uClibc instead of the GNU C library. This is the default on -+Use uClibc C library. This is the default on - @samp{*-*-linux-*uclibc*} targets. -+ -+@item -mbionic -+@opindex mbionic -+Use Bionic C library. This is the default on -+@samp{*-*-linux-*android*} targets. -+ -+@item -mandroid -+@opindex mandroid -+Compile code compatible with Android platform. This is the default on -+@samp{*-*-linux-*android*} targets. -+ -+When compiling, this option enables @option{-mbionic}, @option{-fPIC}, -+@option{-fno-exceptions} and @option{-fno-rtti} by default. When linking, -+this option makes the GCC driver pass Android-specific options to the linker. -+Finally, this option causes the preprocessor macro @code{__ANDROID__} -+to be defined. -+ -+@item -tno-android-cc -+@opindex tno-android-cc -+Disable compilation effects of @option{-mandroid}, i.e., do not enable -+@option{-mbionic}, @option{-fPIC}, @option{-fno-exceptions} and -+@option{-fno-rtti} by default. -+ -+@item -tno-android-ld -+@opindex tno-android-ld -+Disable linking effects of @option{-mandroid}, i.e., pass standard Linux -+linking options to the linker. -+ - @end table - - @node H8/300 Options -Index: gcc-4.5.3/gcc/gthr-posix.h -=================================================================== ---- gcc-4.5.3.orig/gcc/gthr-posix.h -+++ gcc-4.5.3/gcc/gthr-posix.h -@@ -124,7 +124,9 @@ __gthrw(pthread_join) - __gthrw(pthread_equal) - __gthrw(pthread_self) - __gthrw(pthread_detach) -+#ifndef __BIONIC__ - __gthrw(pthread_cancel) -+#endif - __gthrw(sched_yield) - - __gthrw(pthread_mutex_lock) -@@ -238,7 +240,15 @@ static inline int - __gthread_active_p (void) - { - static void *const __gthread_active_ptr -- = __extension__ (void *) &__gthrw_(pthread_cancel); -+ = __extension__ (void *) &__gthrw_( -+/* Android's C library does not provide pthread_cancel, check for -+ `pthread_create' instead. */ -+#ifndef __BIONIC__ -+ pthread_cancel -+#else -+ pthread_create -+#endif -+ ); - return __gthread_active_ptr != 0; - } - -Index: gcc-4.5.3/gcc/testsuite/gcc.dg/glibc-uclibc-1.c -=================================================================== ---- gcc-4.5.3.orig/gcc/testsuite/gcc.dg/glibc-uclibc-1.c -+++ /dev/null -@@ -1,6 +0,0 @@ --/* Test -mglibc and -muclibc not allowed together. */ --/* Origin: Joseph Myers <joseph@codesourcery.com> */ --/* { dg-do link { target *-*-linux* } } */ --/* { dg-options "-mglibc -muclibc" } */ -- --/* { dg-message "-mglibc and -muclibc used together" "" { target *-*-* } 0 } */ -Index: gcc-4.5.3/gcc/testsuite/gcc.dg/glibc-uclibc-2.c -=================================================================== ---- gcc-4.5.3.orig/gcc/testsuite/gcc.dg/glibc-uclibc-2.c -+++ /dev/null -@@ -1,6 +0,0 @@ --/* Test -mglibc and -muclibc not allowed together. */ --/* Origin: Joseph Myers <joseph@codesourcery.com> */ --/* { dg-do link { target *-*-linux* } } */ --/* { dg-options "-muclibc -mglibc" } */ -- --/* { dg-message "-mglibc and -muclibc used together" "" { target *-*-* } 0 } */ -Index: gcc-4.5.3/libstdc++-v3/acinclude.m4 -=================================================================== ---- gcc-4.5.3.orig/libstdc++-v3/acinclude.m4 -+++ gcc-4.5.3/libstdc++-v3/acinclude.m4 -@@ -95,7 +95,7 @@ AC_DEFUN([GLIBCXX_CONFIGURE], [ - ## (Right now, this only matters for enable_wchar_t, but nothing prevents - ## other macros from doing the same. This should be automated.) -pme - -- # Check for uClibc since Linux platforms use different configuration -+ # Check for C library flavor since Linux platforms use different configuration - # directories depending on the C library in use. - AC_EGREP_CPP([_using_uclibc], [ - #include <stdio.h> -@@ -104,6 +104,13 @@ AC_DEFUN([GLIBCXX_CONFIGURE], [ - #endif - ], uclibc=yes, uclibc=no) - -+ AC_EGREP_CPP([_using_bionic], [ -+ #include <stdio.h> -+ #if __BIONIC__ -+ _using_bionic -+ #endif -+ ], bionic=yes, bionic=no) -+ - # Find platform-specific directories containing configuration info. - # Also possibly modify flags used elsewhere, as needed by the platform. - GLIBCXX_CHECK_HOST -@@ -2722,7 +2729,7 @@ void foo() - } - EOF - old_CXXFLAGS="$CXXFLAGS" -- CXXFLAGS=-S -+ CXXFLAGS="-S -fexceptions" - if AC_TRY_EVAL(ac_compile); then - if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then - enable_sjlj_exceptions=yes -Index: gcc-4.5.3/libstdc++-v3/config/os/bionic/ctype_base.h -=================================================================== ---- /dev/null -+++ gcc-4.5.3/libstdc++-v3/config/os/bionic/ctype_base.h -@@ -0,0 +1,57 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2010 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library 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. -+ -+// This library 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. -+ -+// Under Section 7 of GPL version 3, you are granted additional -+// permissions described in the GCC Runtime Library Exception, version -+// 3.1, as published by the Free Software Foundation. -+ -+// You should have received a copy of the GNU General Public License and -+// a copy of the GCC Runtime Library Exception along with this program; -+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -+// <http://www.gnu.org/licenses/>. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1 -+ -+// Support for Solaris 2.5.1 -+ -+_GLIBCXX_BEGIN_NAMESPACE(std) -+ -+ /// @brief Base class for ctype. -+ struct ctype_base -+ { -+ // Non-standard typedefs. -+ typedef const int* __to_type; -+ -+ // NB: Offsets into ctype<char>::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef char mask; -+ static const mask upper = _U; -+ static const mask lower = _L; -+ static const mask alpha = _U | _L; -+ static const mask digit = _N; -+ static const mask xdigit = _X | _N; -+ static const mask space = _S; -+ static const mask print = _P | _U | _L | _N | _B; -+ static const mask graph = _P | _U | _L | _N; -+ static const mask cntrl = _C; -+ static const mask punct = _P; -+ static const mask alnum = _U | _L | _N; -+ }; -+ -+_GLIBCXX_END_NAMESPACE -Index: gcc-4.5.3/libstdc++-v3/config/os/bionic/ctype_inline.h -=================================================================== ---- /dev/null -+++ gcc-4.5.3/libstdc++-v3/config/os/bionic/ctype_inline.h -@@ -0,0 +1,71 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2010 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library 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. -+ -+// This library 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. -+ -+// Under Section 7 of GPL version 3, you are granted additional -+// permissions described in the GCC Runtime Library Exception, version -+// 3.1, as published by the Free Software Foundation. -+ -+// You should have received a copy of the GNU General Public License and -+// a copy of the GCC Runtime Library Exception along with this program; -+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -+// <http://www.gnu.org/licenses/>. -+ -+/** @file ctype_inline.h -+ * This is an internal header file, included by other library headers. -+ * You should not attempt to use it directly. -+ */ -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+_GLIBCXX_BEGIN_NAMESPACE(std) -+ -+ bool -+ ctype<char>:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast<unsigned char>(__c)] & __m; } -+ -+ const char* -+ ctype<char>:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype<char>:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high && !this->is(__m, *__low)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype<char>:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high && this->is(__m, *__low) != 0) -+ ++__low; -+ return __low; -+ } -+ -+_GLIBCXX_END_NAMESPACE -Index: gcc-4.5.3/libstdc++-v3/config/os/bionic/ctype_noninline.h -=================================================================== ---- /dev/null -+++ gcc-4.5.3/libstdc++-v3/config/os/bionic/ctype_noninline.h -@@ -0,0 +1,98 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2010 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library 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. -+ -+// This library 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. -+ -+// Under Section 7 of GPL version 3, you are granted additional -+// permissions described in the GCC Runtime Library Exception, version -+// 3.1, as published by the Free Software Foundation. -+ -+// You should have received a copy of the GNU General Public License and -+// a copy of the GCC Runtime Library Exception along with this program; -+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -+// <http://www.gnu.org/licenses/>. -+ -+/** @file ctype_noninline.h -+ * This is an internal header file, included by other library headers. -+ * You should not attempt to use it directly. -+ */ -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype<char>::classic_table() throw() -+ { return _ctype_ + 1; } -+ -+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : facet(__refs), _M_del(__table != 0 && __del), -+ _M_toupper(NULL), _M_tolower(NULL), -+ _M_table(__table ? __table : classic_table()) -+ { -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ _M_widen_ok = 0; -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ _M_narrow_ok = 0; -+ } -+ -+ ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) -+ : facet(__refs), _M_del(__table != 0 && __del), -+ _M_toupper(NULL), _M_tolower(NULL), -+ _M_table(__table ? __table : classic_table()) -+ { -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ _M_widen_ok = 0; -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ _M_narrow_ok = 0; -+ } -+ -+ char -+ ctype<char>::do_toupper(char __c) const -+ { -+ int __x = __c; -+ return (this->is(ctype_base::lower, __c) ? (__x - 'a' + 'A') : __x); -+ } -+ -+ const char* -+ ctype<char>::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = this->do_toupper(*__low); -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype<char>::do_tolower(char __c) const -+ { -+ int __x = __c; -+ return (this->is(ctype_base::upper, __c) ? (__x - 'A' + 'a') : __x); -+ } -+ -+ const char* -+ ctype<char>::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = this->do_tolower(*__low); -+ ++__low; -+ } -+ return __high; -+ } -+ -Index: gcc-4.5.3/libstdc++-v3/config/os/bionic/os_defines.h -=================================================================== ---- /dev/null -+++ gcc-4.5.3/libstdc++-v3/config/os/bionic/os_defines.h -@@ -0,0 +1,36 @@ -+// Specific definitions for Bionic -*- C++ -*- -+ -+// Copyright (C) 2010 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library 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. -+ -+// This library 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. -+ -+// Under Section 7 of GPL version 3, you are granted additional -+// permissions described in the GCC Runtime Library Exception, version -+// 3.1, as published by the Free Software Foundation. -+ -+// You should have received a copy of the GNU General Public License and -+// a copy of the GCC Runtime Library Exception along with this program; -+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -+// <http://www.gnu.org/licenses/>. -+ -+/** @file os_defines.h -+ * This is an internal header file, included by other library headers. -+ * You should not attempt to use it directly. -+ */ -+ -+#ifndef _GLIBCXX_OS_DEFINES -+#define _GLIBCXX_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+#endif -Index: gcc-4.5.3/libstdc++-v3/configure -=================================================================== ---- gcc-4.5.3.orig/libstdc++-v3/configure -+++ gcc-4.5.3/libstdc++-v3/configure -@@ -5185,7 +5185,7 @@ fi - ## (Right now, this only matters for enable_wchar_t, but nothing prevents - ## other macros from doing the same. This should be automated.) -pme - -- # Check for uClibc since Linux platforms use different configuration -+ # Check for C library flavor since Linux platforms use different configuration - # directories depending on the C library in use. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -@@ -5205,6 +5205,24 @@ fi - rm -f conftest* - - -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+ #include <stdio.h> -+ #if __BIONIC__ -+ _using_bionic -+ #endif -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "_using_bionic" >/dev/null 2>&1; then : -+ bionic=yes -+else -+ bionic=no -+fi -+rm -f conftest* -+ -+ - # Find platform-specific directories containing configuration info. - # Also possibly modify flags used elsewhere, as needed by the platform. - -@@ -14897,7 +14915,7 @@ void foo() - } - EOF - old_CXXFLAGS="$CXXFLAGS" -- CXXFLAGS=-S -+ CXXFLAGS="-S -fexceptions" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? -Index: gcc-4.5.3/libstdc++-v3/configure.host -=================================================================== ---- gcc-4.5.3.orig/libstdc++-v3/configure.host -+++ gcc-4.5.3/libstdc++-v3/configure.host -@@ -238,6 +238,8 @@ case "${host_os}" in - gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) - if [ "$uclibc" = "yes" ]; then - os_include_dir="os/uclibc" -+ elif [ "$bionic" = "yes" ]; then -+ os_include_dir="os/bionic" - else - os_include_dir="os/gnu-linux" - fi |