source:
clfs-embedded/patches/gcc-4.1.2-uclibc-1.patch@
4b17097
Last change on this file since 4b17097 was 0602db2, checked in by , 18 years ago | |
---|---|
|
|
File size: 138.4 KB |
-
boehm-gc/configure
Submitted By: Jim Gifford (patches at jg555 dot com) Date: 2007-02-13 Initial Package Version: 4.1.1 Origin: uClibc and Buildroot Upstream Status: uClibc Specific Description: Makes GCC uClibc Friendly diff -Naur gcc-4.1.2.orig/boehm-gc/configure gcc-4.1.2/boehm-gc/configure
old new 4320 4320 lt_cv_deplibs_check_method=pass_all 4321 4321 ;; 4322 4322 4323 linux-uclibc*) 4324 lt_cv_deplibs_check_method=pass_all 4325 lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` 4326 ;; 4327 4323 4328 netbsd* | knetbsd*-gnu) 4324 4329 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then 4325 4330 lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -
boehm-gc/include/gc.h
diff -Naur gcc-4.1.2.orig/boehm-gc/include/gc.h gcc-4.1.2/boehm-gc/include/gc.h
old new 500 500 #ifdef __linux__ 501 501 # include <features.h> 502 502 # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ 503 && !defined(__ia64__) 503 && !defined(__ia64__) && !defined(__UCLIBC__) 504 504 # ifndef GC_HAVE_BUILTIN_BACKTRACE 505 505 # define GC_HAVE_BUILTIN_BACKTRACE 506 506 # endif -
configure
diff -Naur gcc-4.1.2.orig/configure gcc-4.1.2/configure
old new 1133 1133 ;; 1134 1134 "") 1135 1135 case "${target}" in 1136 *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu )1136 *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) 1137 1137 # Enable libmudflap by default in GNU and friends. 1138 1138 ;; 1139 1139 *-*-freebsd*) -
configure.in
diff -Naur gcc-4.1.2.orig/configure.in gcc-4.1.2/configure.in
old new 341 341 ;; 342 342 "") 343 343 case "${target}" in 344 *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu )344 *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) 345 345 # Enable libmudflap by default in GNU and friends. 346 346 ;; 347 347 *-*-freebsd*) -
contrib/regression/objs-gcc.sh
diff -Naur gcc-4.1.2.orig/contrib/regression/objs-gcc.sh gcc-4.1.2/contrib/regression/objs-gcc.sh
old new 105 105 then 106 106 make all-gdb all-dejagnu all-ld || exit 1 107 107 make install-gdb install-dejagnu install-ld || exit 1 108 elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] 109 then 110 make all-gdb all-dejagnu all-ld || exit 1 111 make install-gdb install-dejagnu install-ld || exit 1 108 112 elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then 109 113 make bootstrap || exit 1 110 114 make install || exit 1 -
gcc/config/alpha/linux-elf.h
diff -Naur gcc-4.1.2.orig/gcc/config/alpha/linux-elf.h gcc-4.1.2/gcc/config/alpha/linux-elf.h
old new 27 27 #define SUBTARGET_EXTRA_SPECS \ 28 28 { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, 29 29 30 #if defined USE_UCLIBC 31 #define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" 32 #else 30 33 #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" 34 #endif 31 35 32 36 #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ 33 37 %{O*:-O3} %{!O*:-O1} \ -
gcc/config/arm/linux-eabi.h
diff -Naur gcc-4.1.2.orig/gcc/config/arm/linux-eabi.h gcc-4.1.2/gcc/config/arm/linux-eabi.h
old new 53 53 /* Use ld-linux.so.3 so that it will be possible to run "classic" 54 54 GNU/Linux binaries on an EABI system. */ 55 55 #undef LINUX_TARGET_INTERPRETER 56 #ifdef USE_UCLIBC 57 #define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0" 58 #else 56 59 #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3" 60 #endif 57 61 58 62 /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to 59 63 use the GNU/Linux version, not the generic BPABI version. */ -
gcc/config/arm/linux-elf.h
diff -Naur gcc-4.1.2.orig/gcc/config/arm/linux-elf.h gcc-4.1.2/gcc/config/arm/linux-elf.h
old new 28 28 #undef TARGET_VERSION 29 29 #define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr); 30 30 31 /* 32 * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-* 33 * (big endian) configurations. 34 */ 35 #if TARGET_BIG_ENDIAN_DEFAULT 36 #define TARGET_ENDIAN_DEFAULT MASK_BIG_END 37 #define TARGET_ENDIAN_OPTION "mbig-endian" 38 #define TARGET_LINKER_EMULATION "armelfb_linux" 39 #else 40 #define TARGET_ENDIAN_DEFAULT 0 41 #define TARGET_ENDIAN_OPTION "mlittle-endian" 42 #define TARGET_LINKER_EMULATION "armelf_linux" 43 #endif 44 31 45 #undef TARGET_DEFAULT_FLOAT_ABI 32 46 #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD 33 47 34 48 #undef TARGET_DEFAULT 35 #define TARGET_DEFAULT ( 0)49 #define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT) 36 50 37 51 #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 38 52 39 #define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux-p"53 #define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" 40 54 41 55 #undef MULTILIB_DEFAULTS 42 56 #define MULTILIB_DEFAULTS \ 43 { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }57 { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" } 44 58 45 59 /* Now we define the strings used to build the spec file. */ 46 60 #undef LIB_SPEC … … 51 65 52 66 #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" 53 67 68 #ifdef USE_UCLIBC 69 #define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0" 70 #else 54 71 #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2" 72 #endif 55 73 56 74 #define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \ 57 75 %{b} \ … … 61 79 %{rdynamic:-export-dynamic} \ 62 80 %{!dynamic-linker:-dynamic-linker " LINUX_TARGET_INTERPRETER "} \ 63 81 -X \ 64 %{mbig-endian:-EB} " \82 %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ 65 83 SUBTARGET_EXTRA_LINK_SPEC 66 84 67 85 #undef LINK_SPEC -
gcc/config/cris/linux.h
diff -Naur gcc-4.1.2.orig/gcc/config/cris/linux.h gcc-4.1.2/gcc/config/cris/linux.h
old new 73 73 #undef CRIS_DEFAULT_CPU_VERSION 74 74 #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG 75 75 76 #ifdef USE_UCLIBC 77 78 #undef CRIS_SUBTARGET_VERSION 79 #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" 80 81 #undef CRIS_LINK_SUBTARGET_SPEC 82 #define CRIS_LINK_SUBTARGET_SPEC \ 83 "-mcrislinux\ 84 -rpath-link include/asm/../..%s\ 85 %{shared} %{static}\ 86 %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ 87 %{!shared: \ 88 %{!static: \ 89 %{rdynamic:-export-dynamic} \ 90 %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ 91 %{!r:%{O2|O3: --gc-sections}}" 92 93 #else /* USE_UCLIBC */ 94 76 95 #undef CRIS_SUBTARGET_VERSION 77 96 #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" 78 97 … … 87 106 %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ 88 107 %{!r:%{O2|O3: --gc-sections}}" 89 108 109 #endif /* USE_UCLIBC */ 110 90 111 91 112 /* Node: Run-time Target */ 92 113 -
gcc/config/i386/linux.h
diff -Naur gcc-4.1.2.orig/gcc/config/i386/linux.h gcc-4.1.2/gcc/config/i386/linux.h
old new 107 107 #define LINK_EMULATION "elf_i386" 108 108 #define DYNAMIC_LINKER "/lib/ld-linux.so.2" 109 109 110 #if defined USE_UCLIBC 111 #undef DYNAMIC_LINKER 112 #define DYNAMIC_LINKER "/lib/ld-uClibc.so.0" 113 #endif 114 110 115 #undef SUBTARGET_EXTRA_SPECS 111 116 #define SUBTARGET_EXTRA_SPECS \ 112 117 { "link_emulation", LINK_EMULATION },\ -
gcc/config/i386/linux64.h
diff -Naur gcc-4.1.2.orig/gcc/config/i386/linux64.h gcc-4.1.2/gcc/config/i386/linux64.h
old new 54 54 When the -shared link option is used a final link is not being 55 55 done. */ 56 56 57 #ifdef USE_UCLIBC 58 #define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" 59 #define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" 60 #else 61 #define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2" 62 #define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2" 63 #endif 57 64 #undef LINK_SPEC 58 65 #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ 59 66 %{shared:-shared} \ 60 67 %{!shared: \ 61 68 %{!static: \ 62 69 %{rdynamic:-export-dynamic} \ 63 %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \64 %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \70 %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \ 71 %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \ 65 72 %{static:-static}}" 66 73 67 74 /* Similar to standard Linux, but adding -ffast-math support. */ -
gcc/config/ia64/linux.h
diff -Naur gcc-4.1.2.orig/gcc/config/ia64/linux.h gcc-4.1.2/gcc/config/ia64/linux.h
old new 37 37 /* Define this for shared library support because it isn't in the main 38 38 linux.h file. */ 39 39 40 #ifdef USE_UCLIBC 41 #define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" 42 #else 43 #define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" 44 #endif 40 45 #undef LINK_SPEC 41 46 #define LINK_SPEC "\ 42 47 %{shared:-shared} \ 43 48 %{!shared: \ 44 49 %{!static: \ 45 50 %{rdynamic:-export-dynamic} \ 46 %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \51 %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ 47 52 %{static:-static}}" 48 53 49 54 #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" -
gcc/config/m68k/linux.h
diff -Naur gcc-4.1.2.orig/gcc/config/m68k/linux.h gcc-4.1.2/gcc/config/m68k/linux.h
old new 123 123 124 124 /* If ELF is the default format, we should not use /lib/elf. */ 125 125 126 #ifdef USE_UCLIBC 127 #define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" 128 #else 129 #define ELF_DYNAMIC_LINKER "/lib/ld.so.1" 130 #endif 126 131 #undef LINK_SPEC 127 132 #define LINK_SPEC "-m m68kelf %{shared} \ 128 133 %{!shared: \ 129 134 %{!static: \ 130 135 %{rdynamic:-export-dynamic} \ 131 %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \136 %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ 132 137 %{static}}" 133 138 134 139 /* For compatibility with linux/a.out */ -
gcc/config/mips/linux.h
diff -Naur gcc-4.1.2.orig/gcc/config/mips/linux.h gcc-4.1.2/gcc/config/mips/linux.h
old new 105 105 106 106 /* Borrowed from sparc/linux.h */ 107 107 #undef LINK_SPEC 108 #ifdef USE_UCLIBC 109 #define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" 110 #else 111 #define ELF_DYNAMIC_LINKER "/lib/ld.so.1" 112 #endif 108 113 #define LINK_SPEC \ 109 114 "%(endian_spec) \ 110 115 %{shared:-shared} \ … … 112 117 %{!ibcs: \ 113 118 %{!static: \ 114 119 %{rdynamic:-export-dynamic} \ 115 %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \120 %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ 116 121 %{static:-static}}}" 117 122 118 123 #undef SUBTARGET_ASM_SPEC -
gcc/config/pa/pa-linux.h
diff -Naur gcc-4.1.2.orig/gcc/config/pa/pa-linux.h gcc-4.1.2/gcc/config/pa/pa-linux.h
old new 49 49 /* Define this for shared library support because it isn't in the main 50 50 linux.h file. */ 51 51 52 #ifdef USE_UCLIBC 53 #define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" 54 #else 55 #define ELF_DYNAMIC_LINKER "/lib/ld.so.1" 56 #endif 52 57 #undef LINK_SPEC 53 58 #define LINK_SPEC "\ 54 59 %{shared:-shared} \ 55 60 %{!shared: \ 56 61 %{!static: \ 57 62 %{rdynamic:-export-dynamic} \ 58 %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \63 %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ 59 64 %{static:-static}}" 60 65 61 66 /* glibc's profiling functions don't need gcc to allocate counters. */ -
gcc/config/rs6000/linux.h
diff -Naur gcc-4.1.2.orig/gcc/config/rs6000/linux.h gcc-4.1.2/gcc/config/rs6000/linux.h
old new 72 72 #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" 73 73 74 74 #undef LINK_OS_DEFAULT_SPEC 75 #ifdef USE_UCLIBC 76 #define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" 77 #else 75 78 #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" 79 #endif 76 80 77 81 #define LINK_GCC_C_SEQUENCE_SPEC \ 78 82 "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" -
gcc/config/rs6000/sysv4.h
diff -Naur gcc-4.1.2.orig/gcc/config/rs6000/sysv4.h gcc-4.1.2/gcc/config/rs6000/sysv4.h
old new 866 866 mcall-linux : %(link_os_linux) ; \ 867 867 mcall-gnu : %(link_os_gnu) ; \ 868 868 mcall-netbsd : %(link_os_netbsd) ; \ 869 mcall-linux-uclibc : %(link_os_linux_uclibc); \ 869 870 mcall-openbsd: %(link_os_openbsd) ; \ 870 871 : %(link_os_default) }" 871 872 … … 1043 1044 %{rdynamic:-export-dynamic} \ 1044 1045 %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" 1045 1046 1047 #define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ 1048 %{rdynamic:-export-dynamic} \ 1049 %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" 1050 1046 1051 #if defined(HAVE_LD_EH_FRAME_HDR) 1047 1052 # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " 1048 1053 #endif … … 1209 1214 { "link_os_sim", LINK_OS_SIM_SPEC }, \ 1210 1215 { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ 1211 1216 { "link_os_linux", LINK_OS_LINUX_SPEC }, \ 1217 { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ 1212 1218 { "link_os_gnu", LINK_OS_GNU_SPEC }, \ 1213 1219 { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ 1214 1220 { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ -
gcc/config/s390/linux.h
diff -Naur gcc-4.1.2.orig/gcc/config/s390/linux.h gcc-4.1.2/gcc/config/s390/linux.h
old new 77 77 #define MULTILIB_DEFAULTS { "m31" } 78 78 #endif 79 79 80 #ifdef USE_UCLIBC 81 #define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" 82 #define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" 83 #else 84 #define ELF31_DYNAMIC_LINKER "/lib/ld.so.1" 85 #define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1" 86 #endif 80 87 #undef LINK_SPEC 81 88 #define LINK_SPEC \ 82 89 "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ … … 86 93 %{!static: \ 87 94 %{rdynamic:-export-dynamic} \ 88 95 %{!dynamic-linker: \ 89 %{m31:-dynamic-linker /lib/ld.so.1} \90 %{m64:-dynamic-linker /lib/ld64.so.1}}}}"96 %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \ 97 %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}" 91 98 92 99 #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" 93 100 -
gcc/config/sh/linux.h
diff -Naur gcc-4.1.2.orig/gcc/config/sh/linux.h gcc-4.1.2/gcc/config/sh/linux.h
old new 56 56 #undef SUBTARGET_LINK_EMUL_SUFFIX 57 57 #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" 58 58 #undef SUBTARGET_LINK_SPEC 59 #ifdef USE_UCLIBC 60 #define SUBTARGET_LINK_SPEC \ 61 "%{shared:-shared} \ 62 %{!static: \ 63 %{rdynamic:-export-dynamic} \ 64 %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ 65 %{static:-static}" 66 #else 59 67 #define SUBTARGET_LINK_SPEC \ 60 68 "%{shared:-shared} \ 61 69 %{!static: \ 62 70 %{rdynamic:-export-dynamic} \ 63 71 %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ 64 72 %{static:-static}" 73 #endif 65 74 66 75 /* Output assembler code to STREAM to call the profiler. */ 67 76 -
gcc/config/sparc/linux.h
diff -Naur gcc-4.1.2.orig/gcc/config/sparc/linux.h gcc-4.1.2/gcc/config/sparc/linux.h
old new 125 125 126 126 /* If ELF is the default format, we should not use /lib/elf. */ 127 127 128 #ifdef USE_UCLIBC 129 #define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" 130 #else 131 #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" 132 #endif 128 133 #undef LINK_SPEC 129 134 #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ 130 135 %{!mno-relax:%{!r:-relax}} \ … … 132 137 %{!ibcs: \ 133 138 %{!static: \ 134 139 %{rdynamic:-export-dynamic} \ 135 %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \140 %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ 136 141 %{static:-static}}}" 137 142 138 143 /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). -
gcc/config/sparc/linux64.h
diff -Naur gcc-4.1.2.orig/gcc/config/sparc/linux64.h gcc-4.1.2/gcc/config/sparc/linux64.h
old new 162 162 { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ 163 163 { "link_arch", LINK_ARCH_SPEC }, 164 164 165 #ifdef USE_UCLIBC 166 #define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" 167 #else 168 #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" 169 #endif 165 170 #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ 166 171 %{!shared: \ 167 172 %{!ibcs: \ 168 173 %{!static: \ 169 174 %{rdynamic:-export-dynamic} \ 170 %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \175 %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ 171 176 %{static:-static}}} \ 172 177 " 173 178 -
gcc/config/t-linux-uclibc
diff -Naur gcc-4.1.2.orig/gcc/config/t-linux-uclibc gcc-4.1.2/gcc/config/t-linux-uclibc
old new 1 # Remove glibc specific files added in t-linux 2 SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES)) 3 4 # Use unwind-dw2-fde instead of unwind-dw2-fde-glibc 5 LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH)) -
gcc/config.gcc
diff -Naur gcc-4.1.2.orig/gcc/config.gcc gcc-4.1.2/gcc/config.gcc
old new 672 672 ;; 673 673 arm*-*-linux*) # ARM GNU/Linux with ELF 674 674 tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" 675 case $target in 676 arm*b-*) 677 tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" 678 ;; 679 esac 675 680 tmake_file="${tmake_file} t-linux arm/t-arm" 676 681 case ${target} in 677 arm*-*-linux-gnueabi )682 arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) 678 683 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h" 679 684 tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi" 680 685 # The BPABI long long divmod functions return a 128-bit value in … … 1884 1889 ;; 1885 1890 sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \ 1886 1891 sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ 1887 sh -*-linux* | sh[346lbe]*-*-linux* | \1892 sh*-*-linux* | sh[346lbe]*-*-linux* | \ 1888 1893 sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ 1889 1894 sh64-*-netbsd* | sh64l*-*-netbsd*) 1890 1895 tmake_file="${tmake_file} sh/t-sh sh/t-elf" … … 2338 2343 ;; 2339 2344 esac 2340 2345 2346 # Rather than hook into each target, just do it after all the linux 2347 # targets have been processed 2348 case ${target} in 2349 *-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc" 2350 esac 2351 2341 2352 case ${target} in 2342 2353 i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1) 2343 2354 tmake_file="${tmake_file} i386/t-gmm_malloc" -
gcc/configure
diff -Naur gcc-4.1.2.orig/gcc/configure gcc-4.1.2/gcc/configure
old new 14762 14762 tls_first_minor=14 14763 14763 tls_as_opt="-m64 -Aesame --fatal-warnings" 14764 14764 ;; 14765 sh-*-* | sh[34] -*-*)14765 sh-*-* | sh[34]*-*-*) 14766 14766 conftest_s=' 14767 14767 .section ".tdata","awT",@progbits 14768 14768 foo: .long 25 -
gcc/configure.ac
diff -Naur gcc-4.1.2.orig/gcc/configure.ac gcc-4.1.2/gcc/configure.ac
old new 2435 2435 tls_first_minor=14 2436 2436 tls_as_opt="-m64 -Aesame --fatal-warnings" 2437 2437 ;; 2438 sh-*-* | sh[34] -*-*)2438 sh-*-* | sh[34]*-*-*) 2439 2439 conftest_s=' 2440 2440 .section ".tdata","awT",@progbits 2441 2441 foo: .long 25 -
libffi/configure
diff -Naur gcc-4.1.2.orig/libffi/configure gcc-4.1.2/libffi/configure
old new 3457 3457 lt_cv_deplibs_check_method=pass_all 3458 3458 ;; 3459 3459 3460 linux-uclibc*) 3461 lt_cv_deplibs_check_method=pass_all 3462 lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` 3463 ;; 3464 3460 3465 netbsd* | knetbsd*-gnu) 3461 3466 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then 3462 3467 lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -
libgfortran/configure
diff -Naur gcc-4.1.2.orig/libgfortran/configure gcc-4.1.2/libgfortran/configure
old new 3699 3699 lt_cv_deplibs_check_method=pass_all 3700 3700 ;; 3701 3701 3702 linux-uclibc*) 3703 lt_cv_deplibs_check_method=pass_all 3704 lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` 3705 ;; 3706 3702 3707 netbsd* | knetbsd*-gnu) 3703 3708 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then 3704 3709 lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -
libjava/configure
diff -Naur gcc-4.1.2.orig/libjava/configure gcc-4.1.2/libjava/configure
old new 5137 5137 lt_cv_deplibs_check_method=pass_all 5138 5138 ;; 5139 5139 5140 linux-uclibc*) 5141 lt_cv_deplibs_check_method=pass_all 5142 lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` 5143 ;; 5144 5140 5145 netbsd* | knetbsd*-gnu) 5141 5146 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then 5142 5147 lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -
libmudflap/configure
diff -Naur gcc-4.1.2.orig/libmudflap/configure gcc-4.1.2/libmudflap/configure
old new 5382 5382 lt_cv_deplibs_check_method=pass_all 5383 5383 ;; 5384 5384 5385 linux-uclibc*) 5386 lt_cv_deplibs_check_method=pass_all 5387 lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` 5388 ;; 5389 5385 5390 netbsd* | knetbsd*-gnu) 5386 5391 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then 5387 5392 lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -
libobjc/configure
diff -Naur gcc-4.1.2.orig/libobjc/configure gcc-4.1.2/libobjc/configure
old new 3312 3312 lt_cv_deplibs_check_method=pass_all 3313 3313 ;; 3314 3314 3315 linux-uclibc*) 3316 lt_cv_deplibs_check_method=pass_all 3317 lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` 3318 ;; 3319 3315 3320 netbsd* | knetbsd*-gnu) 3316 3321 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then 3317 3322 lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -
libstdc++-v3/acinclude.m4
diff -Naur gcc-4.1.2.orig/libstdc++-v3/acinclude.m4 gcc-4.1.2/libstdc++-v3/acinclude.m4
old new 1003 1003 AC_MSG_CHECKING([for C locale to use]) 1004 1004 GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], 1005 1005 [use MODEL for target locale package], 1006 [permit generic|gnu|ieee_1003.1-2001| yes|no|auto])1006 [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) 1007 1007 1008 1008 # If they didn't use this option switch, or if they specified --enable 1009 1009 # with no specific model, we'll have to look for one. If they … … 1019 1019 # Default to "generic". 1020 1020 if test $enable_clocale_flag = auto; then 1021 1021 case ${target_os} in 1022 *-uclibc*) 1023 enable_clocale_flag=uclibc 1024 ;; 1022 1025 linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) 1023 1026 AC_EGREP_CPP([_GLIBCXX_ok], [ 1024 1027 #include <features.h> … … 1162 1165 CTIME_CC=config/locale/generic/time_members.cc 1163 1166 CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h 1164 1167 ;; 1168 uclibc) 1169 AC_MSG_RESULT(uclibc) 1170 1171 # Declare intention to use gettext, and add support for specific 1172 # languages. 1173 # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT 1174 ALL_LINGUAS="de fr" 1175 1176 # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. 1177 AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) 1178 if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then 1179 USE_NLS=yes 1180 fi 1181 # Export the build objects. 1182 for ling in $ALL_LINGUAS; do \ 1183 glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ 1184 glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ 1185 done 1186 AC_SUBST(glibcxx_MOFILES) 1187 AC_SUBST(glibcxx_POFILES) 1188 1189 CLOCALE_H=config/locale/uclibc/c_locale.h 1190 CLOCALE_CC=config/locale/uclibc/c_locale.cc 1191 CCODECVT_CC=config/locale/uclibc/codecvt_members.cc 1192 CCOLLATE_CC=config/locale/uclibc/collate_members.cc 1193 CCTYPE_CC=config/locale/uclibc/ctype_members.cc 1194 CMESSAGES_H=config/locale/uclibc/messages_members.h 1195 CMESSAGES_CC=config/locale/uclibc/messages_members.cc 1196 CMONEY_CC=config/locale/uclibc/monetary_members.cc 1197 CNUMERIC_CC=config/locale/uclibc/numeric_members.cc 1198 CTIME_H=config/locale/uclibc/time_members.h 1199 CTIME_CC=config/locale/uclibc/time_members.cc 1200 CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h 1201 ;; 1165 1202 esac 1166 1203 1167 1204 # This is where the testsuite looks for locale catalogs, using the -
libstdc++-v3/config/locale/uclibc/c++locale_internal.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.1.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
old new 1 // Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- 2 3 // Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // Written by Jakub Jelinek <jakub@redhat.com> 31 32 #include <bits/c++config.h> 33 #include <clocale> 34 35 #ifdef __UCLIBC_MJN3_ONLY__ 36 #warning clean this up 37 #endif 38 39 #ifdef __UCLIBC_HAS_XLOCALE__ 40 41 extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; 42 extern "C" __typeof(strcoll_l) __strcoll_l; 43 extern "C" __typeof(strftime_l) __strftime_l; 44 extern "C" __typeof(strtod_l) __strtod_l; 45 extern "C" __typeof(strtof_l) __strtof_l; 46 extern "C" __typeof(strtold_l) __strtold_l; 47 extern "C" __typeof(strxfrm_l) __strxfrm_l; 48 extern "C" __typeof(newlocale) __newlocale; 49 extern "C" __typeof(freelocale) __freelocale; 50 extern "C" __typeof(duplocale) __duplocale; 51 extern "C" __typeof(uselocale) __uselocale; 52 53 #ifdef _GLIBCXX_USE_WCHAR_T 54 extern "C" __typeof(iswctype_l) __iswctype_l; 55 extern "C" __typeof(towlower_l) __towlower_l; 56 extern "C" __typeof(towupper_l) __towupper_l; 57 extern "C" __typeof(wcscoll_l) __wcscoll_l; 58 extern "C" __typeof(wcsftime_l) __wcsftime_l; 59 extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; 60 extern "C" __typeof(wctype_l) __wctype_l; 61 #endif 62 63 #endif // GLIBC 2.3 and later -
libstdc++-v3/config/locale/uclibc/c_locale.cc
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.1.2/libstdc++-v3/config/locale/uclibc/c_locale.cc
old new 1 // Wrapper for underlying C-language localization -*- C++ -*- 2 3 // Copyright (C) 2001, 2002, 2003, 2004, 2005 4 // Free Software Foundation, Inc. 5 // 6 // This file is part of the GNU ISO C++ Library. This library is free 7 // software; you can redistribute it and/or modify it under the 8 // terms of the GNU General Public License as published by the 9 // Free Software Foundation; either version 2, or (at your option) 10 // any later version. 11 12 // This library is distributed in the hope that it will be useful, 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 // GNU General Public License for more details. 16 17 // You should have received a copy of the GNU General Public License along 18 // with this library; see the file COPYING. If not, write to the Free 19 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 20 // USA. 21 22 // As a special exception, you may use this file as part of a free software 23 // library without restriction. Specifically, if other files instantiate 24 // templates or use macros or inline functions from this file, or you compile 25 // this file and link it with other files to produce an executable, this 26 // file does not by itself cause the resulting executable to be covered by 27 // the GNU General Public License. This exception does not however 28 // invalidate any other reasons why the executable file might be covered by 29 // the GNU General Public License. 30 31 // 32 // ISO C++ 14882: 22.8 Standard locale categories. 33 // 34 35 // Written by Benjamin Kosnik <bkoz@redhat.com> 36 37 #include <cerrno> // For errno 38 #include <locale> 39 #include <stdexcept> 40 #include <langinfo.h> 41 #include <bits/c++locale_internal.h> 42 43 #ifndef __UCLIBC_HAS_XLOCALE__ 44 #define __strtol_l(S, E, B, L) strtol((S), (E), (B)) 45 #define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) 46 #define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) 47 #define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) 48 #define __strtof_l(S, E, L) strtof((S), (E)) 49 #define __strtod_l(S, E, L) strtod((S), (E)) 50 #define __strtold_l(S, E, L) strtold((S), (E)) 51 #warning should dummy __newlocale check for C|POSIX ? 52 #define __newlocale(a, b, c) NULL 53 #define __freelocale(a) ((void)0) 54 #define __duplocale(a) __c_locale() 55 #endif 56 57 namespace std 58 { 59 template<> 60 void 61 __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, 62 const __c_locale& __cloc) 63 { 64 char* __sanity; 65 errno = 0; 66 float __f = __strtof_l(__s, &__sanity, __cloc); 67 if (__sanity != __s && errno != ERANGE) 68 __v = __f; 69 else 70 __err |= ios_base::failbit; 71 } 72 73 template<> 74 void 75 __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, 76 const __c_locale& __cloc) 77 { 78 char* __sanity; 79 errno = 0; 80 double __d = __strtod_l(__s, &__sanity, __cloc); 81 if (__sanity != __s && errno != ERANGE) 82 __v = __d; 83 else 84 __err |= ios_base::failbit; 85 } 86 87 template<> 88 void 89 __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, 90 const __c_locale& __cloc) 91 { 92 char* __sanity; 93 errno = 0; 94 long double __ld = __strtold_l(__s, &__sanity, __cloc); 95 if (__sanity != __s && errno != ERANGE) 96 __v = __ld; 97 else 98 __err |= ios_base::failbit; 99 } 100 101 void 102 locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, 103 __c_locale __old) 104 { 105 __cloc = __newlocale(1 << LC_ALL, __s, __old); 106 #ifdef __UCLIBC_HAS_XLOCALE__ 107 if (!__cloc) 108 { 109 // This named locale is not supported by the underlying OS. 110 __throw_runtime_error(__N("locale::facet::_S_create_c_locale " 111 "name not valid")); 112 } 113 #endif 114 } 115 116 void 117 locale::facet::_S_destroy_c_locale(__c_locale& __cloc) 118 { 119 if (__cloc && _S_get_c_locale() != __cloc) 120 __freelocale(__cloc); 121 } 122 123 __c_locale 124 locale::facet::_S_clone_c_locale(__c_locale& __cloc) 125 { return __duplocale(__cloc); } 126 } // namespace std 127 128 namespace __gnu_cxx 129 { 130 const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = 131 { 132 "LC_CTYPE", 133 "LC_NUMERIC", 134 "LC_TIME", 135 "LC_COLLATE", 136 "LC_MONETARY", 137 "LC_MESSAGES", 138 #if _GLIBCXX_NUM_CATEGORIES != 0 139 "LC_PAPER", 140 "LC_NAME", 141 "LC_ADDRESS", 142 "LC_TELEPHONE", 143 "LC_MEASUREMENT", 144 "LC_IDENTIFICATION" 145 #endif 146 }; 147 } 148 149 namespace std 150 { 151 const char* const* const locale::_S_categories = __gnu_cxx::category_names; 152 } // namespace std -
libstdc++-v3/config/locale/uclibc/c_locale.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.1.2/libstdc++-v3/config/locale/uclibc/c_locale.h
old new 1 // Wrapper for underlying C-language localization -*- C++ -*- 2 3 // Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.8 Standard locale categories. 32 // 33 34 // Written by Benjamin Kosnik <bkoz@redhat.com> 35 36 #ifndef _C_LOCALE_H 37 #define _C_LOCALE_H 1 38 39 #pragma GCC system_header 40 41 #include <cstring> // get std::strlen 42 #include <cstdio> // get std::snprintf or std::sprintf 43 #include <clocale> 44 #include <langinfo.h> // For codecvt 45 #ifdef __UCLIBC_MJN3_ONLY__ 46 #warning fix this 47 #endif 48 #ifdef __UCLIBC_HAS_LOCALE__ 49 #include <iconv.h> // For codecvt using iconv, iconv_t 50 #endif 51 #ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ 52 #include <libintl.h> // For messages 53 #endif 54 55 #ifdef __UCLIBC_MJN3_ONLY__ 56 #warning what is _GLIBCXX_C_LOCALE_GNU for 57 #endif 58 #define _GLIBCXX_C_LOCALE_GNU 1 59 60 #ifdef __UCLIBC_MJN3_ONLY__ 61 #warning fix categories 62 #endif 63 // #define _GLIBCXX_NUM_CATEGORIES 6 64 #define _GLIBCXX_NUM_CATEGORIES 0 65 66 #ifdef __UCLIBC_HAS_XLOCALE__ 67 namespace __gnu_cxx 68 { 69 extern "C" __typeof(uselocale) __uselocale; 70 } 71 #endif 72 73 namespace std 74 { 75 #ifdef __UCLIBC_HAS_XLOCALE__ 76 typedef __locale_t __c_locale; 77 #else 78 typedef int* __c_locale; 79 #endif 80 81 // Convert numeric value of type _Tv to string and return length of 82 // string. If snprintf is available use it, otherwise fall back to 83 // the unsafe sprintf which, in general, can be dangerous and should 84 // be avoided. 85 template<typename _Tv> 86 int 87 __convert_from_v(char* __out, 88 const int __size __attribute__ ((__unused__)), 89 const char* __fmt, 90 #ifdef __UCLIBC_HAS_XLOCALE__ 91 _Tv __v, const __c_locale& __cloc, int __prec) 92 { 93 __c_locale __old = __gnu_cxx::__uselocale(__cloc); 94 #else 95 _Tv __v, const __c_locale&, int __prec) 96 { 97 # ifdef __UCLIBC_HAS_LOCALE__ 98 char* __old = std::setlocale(LC_ALL, NULL); 99 char* __sav = new char[std::strlen(__old) + 1]; 100 std::strcpy(__sav, __old); 101 std::setlocale(LC_ALL, "C"); 102 # endif 103 #endif 104 105 const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); 106 107 #ifdef __UCLIBC_HAS_XLOCALE__ 108 __gnu_cxx::__uselocale(__old); 109 #elif defined __UCLIBC_HAS_LOCALE__ 110 std::setlocale(LC_ALL, __sav); 111 delete [] __sav; 112 #endif 113 return __ret; 114 } 115 } 116 117 #endif -
libstdc++-v3/config/locale/uclibc/codecvt_members.cc
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.1.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
old new 1 // std::codecvt implementation details, GNU version -*- C++ -*- 2 3 // Copyright (C) 2002, 2003 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.2.1.5 - Template class codecvt 32 // 33 34 // Written by Benjamin Kosnik <bkoz@redhat.com> 35 36 #include <locale> 37 #include <bits/c++locale_internal.h> 38 39 namespace std 40 { 41 // Specializations. 42 #ifdef _GLIBCXX_USE_WCHAR_T 43 codecvt_base::result 44 codecvt<wchar_t, char, mbstate_t>:: 45 do_out(state_type& __state, const intern_type* __from, 46 const intern_type* __from_end, const intern_type*& __from_next, 47 extern_type* __to, extern_type* __to_end, 48 extern_type*& __to_next) const 49 { 50 result __ret = ok; 51 state_type __tmp_state(__state); 52 53 #ifdef __UCLIBC_HAS_XLOCALE__ 54 __c_locale __old = __uselocale(_M_c_locale_codecvt); 55 #endif 56 57 // wcsnrtombs is *very* fast but stops if encounters NUL characters: 58 // in case we fall back to wcrtomb and then continue, in a loop. 59 // NB: wcsnrtombs is a GNU extension 60 for (__from_next = __from, __to_next = __to; 61 __from_next < __from_end && __to_next < __to_end 62 && __ret == ok;) 63 { 64 const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', 65 __from_end - __from_next); 66 if (!__from_chunk_end) 67 __from_chunk_end = __from_end; 68 69 __from = __from_next; 70 const size_t __conv = wcsnrtombs(__to_next, &__from_next, 71 __from_chunk_end - __from_next, 72 __to_end - __to_next, &__state); 73 if (__conv == static_cast<size_t>(-1)) 74 { 75 // In case of error, in order to stop at the exact place we 76 // have to start again from the beginning with a series of 77 // wcrtomb. 78 for (; __from < __from_next; ++__from) 79 __to_next += wcrtomb(__to_next, *__from, &__tmp_state); 80 __state = __tmp_state; 81 __ret = error; 82 } 83 else if (__from_next && __from_next < __from_chunk_end) 84 { 85 __to_next += __conv; 86 __ret = partial; 87 } 88 else 89 { 90 __from_next = __from_chunk_end; 91 __to_next += __conv; 92 } 93 94 if (__from_next < __from_end && __ret == ok) 95 { 96 extern_type __buf[MB_LEN_MAX]; 97 __tmp_state = __state; 98 const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); 99 if (__conv > static_cast<size_t>(__to_end - __to_next)) 100 __ret = partial; 101 else 102 { 103 memcpy(__to_next, __buf, __conv); 104 __state = __tmp_state; 105 __to_next += __conv; 106 ++__from_next; 107 } 108 } 109 } 110 111 #ifdef __UCLIBC_HAS_XLOCALE__ 112 __uselocale(__old); 113 #endif 114 115 return __ret; 116 } 117 118 codecvt_base::result 119 codecvt<wchar_t, char, mbstate_t>:: 120 do_in(state_type& __state, const extern_type* __from, 121 const extern_type* __from_end, const extern_type*& __from_next, 122 intern_type* __to, intern_type* __to_end, 123 intern_type*& __to_next) const 124 { 125 result __ret = ok; 126 state_type __tmp_state(__state); 127 128 #ifdef __UCLIBC_HAS_XLOCALE__ 129 __c_locale __old = __uselocale(_M_c_locale_codecvt); 130 #endif 131 132 // mbsnrtowcs is *very* fast but stops if encounters NUL characters: 133 // in case we store a L'\0' and then continue, in a loop. 134 // NB: mbsnrtowcs is a GNU extension 135 for (__from_next = __from, __to_next = __to; 136 __from_next < __from_end && __to_next < __to_end 137 && __ret == ok;) 138 { 139 const extern_type* __from_chunk_end; 140 __from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0', 141 __from_end 142 - __from_next)); 143 if (!__from_chunk_end) 144 __from_chunk_end = __from_end; 145 146 __from = __from_next; 147 size_t __conv = mbsnrtowcs(__to_next, &__from_next, 148 __from_chunk_end - __from_next, 149 __to_end - __to_next, &__state); 150 if (__conv == static_cast<size_t>(-1)) 151 { 152 // In case of error, in order to stop at the exact place we 153 // have to start again from the beginning with a series of 154 // mbrtowc. 155 for (;; ++__to_next, __from += __conv) 156 { 157 __conv = mbrtowc(__to_next, __from, __from_end - __from, 158 &__tmp_state); 159 if (__conv == static_cast<size_t>(-1) 160 || __conv == static_cast<size_t>(-2)) 161 break; 162 } 163 __from_next = __from; 164 __state = __tmp_state; 165 __ret = error; 166 } 167 else if (__from_next && __from_next < __from_chunk_end) 168 { 169 // It is unclear what to return in this case (see DR 382). 170 __to_next += __conv; 171 __ret = partial; 172 } 173 else 174 { 175 __from_next = __from_chunk_end; 176 __to_next += __conv; 177 } 178 179 if (__from_next < __from_end && __ret == ok) 180 { 181 if (__to_next < __to_end) 182 { 183 // XXX Probably wrong for stateful encodings 184 __tmp_state = __state; 185 ++__from_next; 186 *__to_next++ = L'\0'; 187 } 188 else 189 __ret = partial; 190 } 191 } 192 193 #ifdef __UCLIBC_HAS_XLOCALE__ 194 __uselocale(__old); 195 #endif 196 197 return __ret; 198 } 199 200 int 201 codecvt<wchar_t, char, mbstate_t>:: 202 do_encoding() const throw() 203 { 204 // XXX This implementation assumes that the encoding is 205 // stateless and is either single-byte or variable-width. 206 int __ret = 0; 207 #ifdef __UCLIBC_HAS_XLOCALE__ 208 __c_locale __old = __uselocale(_M_c_locale_codecvt); 209 #endif 210 if (MB_CUR_MAX == 1) 211 __ret = 1; 212 #ifdef __UCLIBC_HAS_XLOCALE__ 213 __uselocale(__old); 214 #endif 215 return __ret; 216 } 217 218 int 219 codecvt<wchar_t, char, mbstate_t>:: 220 do_max_length() const throw() 221 { 222 #ifdef __UCLIBC_HAS_XLOCALE__ 223 __c_locale __old = __uselocale(_M_c_locale_codecvt); 224 #endif 225 // XXX Probably wrong for stateful encodings. 226 int __ret = MB_CUR_MAX; 227 #ifdef __UCLIBC_HAS_XLOCALE__ 228 __uselocale(__old); 229 #endif 230 return __ret; 231 } 232 233 int 234 codecvt<wchar_t, char, mbstate_t>:: 235 do_length(state_type& __state, const extern_type* __from, 236 const extern_type* __end, size_t __max) const 237 { 238 int __ret = 0; 239 state_type __tmp_state(__state); 240 241 #ifdef __UCLIBC_HAS_XLOCALE__ 242 __c_locale __old = __uselocale(_M_c_locale_codecvt); 243 #endif 244 245 // mbsnrtowcs is *very* fast but stops if encounters NUL characters: 246 // in case we advance past it and then continue, in a loop. 247 // NB: mbsnrtowcs is a GNU extension 248 249 // A dummy internal buffer is needed in order for mbsnrtocws to consider 250 // its fourth parameter (it wouldn't with NULL as first parameter). 251 wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t) 252 * __max)); 253 while (__from < __end && __max) 254 { 255 const extern_type* __from_chunk_end; 256 __from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0', 257 __end 258 - __from)); 259 if (!__from_chunk_end) 260 __from_chunk_end = __end; 261 262 const extern_type* __tmp_from = __from; 263 size_t __conv = mbsnrtowcs(__to, &__from, 264 __from_chunk_end - __from, 265 __max, &__state); 266 if (__conv == static_cast<size_t>(-1)) 267 { 268 // In case of error, in order to stop at the exact place we 269 // have to start again from the beginning with a series of 270 // mbrtowc. 271 for (__from = __tmp_from;; __from += __conv) 272 { 273 __conv = mbrtowc(NULL, __from, __end - __from, 274 &__tmp_state); 275 if (__conv == static_cast<size_t>(-1) 276 || __conv == static_cast<size_t>(-2)) 277 break; 278 } 279 __state = __tmp_state; 280 __ret += __from - __tmp_from; 281 break; 282 } 283 if (!__from) 284 __from = __from_chunk_end; 285 286 __ret += __from - __tmp_from; 287 __max -= __conv; 288 289 if (__from < __end && __max) 290 { 291 // XXX Probably wrong for stateful encodings 292 __tmp_state = __state; 293 ++__from; 294 ++__ret; 295 --__max; 296 } 297 } 298 299 #ifdef __UCLIBC_HAS_XLOCALE__ 300 __uselocale(__old); 301 #endif 302 303 return __ret; 304 } 305 #endif 306 } -
libstdc++-v3/config/locale/uclibc/collate_members.cc
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.1.2/libstdc++-v3/config/locale/uclibc/collate_members.cc
old new 1 // std::collate implementation details, GNU version -*- C++ -*- 2 3 // Copyright (C) 2001, 2002 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.2.4.1.2 collate virtual functions 32 // 33 34 // Written by Benjamin Kosnik <bkoz@redhat.com> 35 36 #include <locale> 37 #include <bits/c++locale_internal.h> 38 39 #ifndef __UCLIBC_HAS_XLOCALE__ 40 #define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) 41 #define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) 42 #define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) 43 #define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) 44 #endif 45 46 namespace std 47 { 48 // These are basically extensions to char_traits, and perhaps should 49 // be put there instead of here. 50 template<> 51 int 52 collate<char>::_M_compare(const char* __one, const char* __two) const 53 { 54 int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); 55 return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); 56 } 57 58 template<> 59 size_t 60 collate<char>::_M_transform(char* __to, const char* __from, 61 size_t __n) const 62 { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } 63 64 #ifdef _GLIBCXX_USE_WCHAR_T 65 template<> 66 int 67 collate<wchar_t>::_M_compare(const wchar_t* __one, 68 const wchar_t* __two) const 69 { 70 int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); 71 return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); 72 } 73 74 template<> 75 size_t 76 collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from, 77 size_t __n) const 78 { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } 79 #endif 80 } -
libstdc++-v3/config/locale/uclibc/ctype_members.cc
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.1.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc
old new 1 // std::ctype implementation details, GNU version -*- C++ -*- 2 3 // Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. 32 // 33 34 // Written by Benjamin Kosnik <bkoz@redhat.com> 35 36 #define _LIBC 37 #include <locale> 38 #undef _LIBC 39 #include <bits/c++locale_internal.h> 40 41 #ifndef __UCLIBC_HAS_XLOCALE__ 42 #define __wctype_l(S, L) wctype((S)) 43 #define __towupper_l(C, L) towupper((C)) 44 #define __towlower_l(C, L) towlower((C)) 45 #define __iswctype_l(C, M, L) iswctype((C), (M)) 46 #endif 47 48 namespace std 49 { 50 // NB: The other ctype<char> specializations are in src/locale.cc and 51 // various /config/os/* files. 52 template<> 53 ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) 54 : ctype<char>(0, false, __refs) 55 { 56 if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) 57 { 58 this->_S_destroy_c_locale(this->_M_c_locale_ctype); 59 this->_S_create_c_locale(this->_M_c_locale_ctype, __s); 60 #ifdef __UCLIBC_HAS_XLOCALE__ 61 this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; 62 this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; 63 this->_M_table = this->_M_c_locale_ctype->__ctype_b; 64 #endif 65 } 66 } 67 68 #ifdef _GLIBCXX_USE_WCHAR_T 69 ctype<wchar_t>::__wmask_type 70 ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const 71 { 72 __wmask_type __ret; 73 switch (__m) 74 { 75 case space: 76 __ret = __wctype_l("space", _M_c_locale_ctype); 77 break; 78 case print: 79 __ret = __wctype_l("print", _M_c_locale_ctype); 80 break; 81 case cntrl: 82 __ret = __wctype_l("cntrl", _M_c_locale_ctype); 83 break; 84 case upper: 85 __ret = __wctype_l("upper", _M_c_locale_ctype); 86 break; 87 case lower: 88 __ret = __wctype_l("lower", _M_c_locale_ctype); 89 break; 90 case alpha: 91 __ret = __wctype_l("alpha", _M_c_locale_ctype); 92 break; 93 case digit: 94 __ret = __wctype_l("digit", _M_c_locale_ctype); 95 break; 96 case punct: 97 __ret = __wctype_l("punct", _M_c_locale_ctype); 98 break; 99 case xdigit: 100 __ret = __wctype_l("xdigit", _M_c_locale_ctype); 101 break; 102 case alnum: 103 __ret = __wctype_l("alnum", _M_c_locale_ctype); 104 break; 105 case graph: 106 __ret = __wctype_l("graph", _M_c_locale_ctype); 107 break; 108 default: 109 __ret = __wmask_type(); 110 } 111 return __ret; 112 } 113 114 wchar_t 115 ctype<wchar_t>::do_toupper(wchar_t __c) const 116 { return __towupper_l(__c, _M_c_locale_ctype); } 117 118 const wchar_t* 119 ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const 120 { 121 while (__lo < __hi) 122 { 123 *__lo = __towupper_l(*__lo, _M_c_locale_ctype); 124 ++__lo; 125 } 126 return __hi; 127 } 128 129 wchar_t 130 ctype<wchar_t>::do_tolower(wchar_t __c) const 131 { return __towlower_l(__c, _M_c_locale_ctype); } 132 133 const wchar_t* 134 ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const 135 { 136 while (__lo < __hi) 137 { 138 *__lo = __towlower_l(*__lo, _M_c_locale_ctype); 139 ++__lo; 140 } 141 return __hi; 142 } 143 144 bool 145 ctype<wchar_t>:: 146 do_is(mask __m, wchar_t __c) const 147 { 148 // The case of __m == ctype_base::space is particularly important, 149 // due to its use in many istream functions. Therefore we deal with 150 // it first, exploiting the knowledge that on GNU systems _M_bit[5] 151 // is the mask corresponding to ctype_base::space. NB: an encoding 152 // change would not affect correctness! 153 bool __ret = false; 154 if (__m == _M_bit[5]) 155 __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype); 156 else 157 { 158 // Highest bitmask in ctype_base == 10, but extra in "C" 159 // library for blank. 160 const size_t __bitmasksize = 11; 161 for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) 162 if (__m & _M_bit[__bitcur]) 163 { 164 if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) 165 { 166 __ret = true; 167 break; 168 } 169 else if (__m == _M_bit[__bitcur]) 170 break; 171 } 172 } 173 return __ret; 174 } 175 176 const wchar_t* 177 ctype<wchar_t>:: 178 do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const 179 { 180 for (; __lo < __hi; ++__vec, ++__lo) 181 { 182 // Highest bitmask in ctype_base == 10, but extra in "C" 183 // library for blank. 184 const size_t __bitmasksize = 11; 185 mask __m = 0; 186 for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) 187 if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) 188 __m |= _M_bit[__bitcur]; 189 *__vec = __m; 190 } 191 return __hi; 192 } 193 194 const wchar_t* 195 ctype<wchar_t>:: 196 do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const 197 { 198 while (__lo < __hi && !this->do_is(__m, *__lo)) 199 ++__lo; 200 return __lo; 201 } 202 203 const wchar_t* 204 ctype<wchar_t>:: 205 do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const 206 { 207 while (__lo < __hi && this->do_is(__m, *__lo) != 0) 208 ++__lo; 209 return __lo; 210 } 211 212 wchar_t 213 ctype<wchar_t>:: 214 do_widen(char __c) const 215 { return _M_widen[static_cast<unsigned char>(__c)]; } 216 217 const char* 218 ctype<wchar_t>:: 219 do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const 220 { 221 while (__lo < __hi) 222 { 223 *__dest = _M_widen[static_cast<unsigned char>(*__lo)]; 224 ++__lo; 225 ++__dest; 226 } 227 return __hi; 228 } 229 230 char 231 ctype<wchar_t>:: 232 do_narrow(wchar_t __wc, char __dfault) const 233 { 234 if (__wc >= 0 && __wc < 128 && _M_narrow_ok) 235 return _M_narrow[__wc]; 236 #ifdef __UCLIBC_HAS_XLOCALE__ 237 __c_locale __old = __uselocale(_M_c_locale_ctype); 238 #endif 239 const int __c = wctob(__wc); 240 #ifdef __UCLIBC_HAS_XLOCALE__ 241 __uselocale(__old); 242 #endif 243 return (__c == EOF ? __dfault : static_cast<char>(__c)); 244 } 245 246 const wchar_t* 247 ctype<wchar_t>:: 248 do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, 249 char* __dest) const 250 { 251 #ifdef __UCLIBC_HAS_XLOCALE__ 252 __c_locale __old = __uselocale(_M_c_locale_ctype); 253 #endif 254 if (_M_narrow_ok) 255 while (__lo < __hi) 256 { 257 if (*__lo >= 0 && *__lo < 128) 258 *__dest = _M_narrow[*__lo]; 259 else 260 { 261 const int __c = wctob(*__lo); 262 *__dest = (__c == EOF ? __dfault : static_cast<char>(__c)); 263 } 264 ++__lo; 265 ++__dest; 266 } 267 else 268 while (__lo < __hi) 269 { 270 const int __c = wctob(*__lo); 271 *__dest = (__c == EOF ? __dfault : static_cast<char>(__c)); 272 ++__lo; 273 ++__dest; 274 } 275 #ifdef __UCLIBC_HAS_XLOCALE__ 276 __uselocale(__old); 277 #endif 278 return __hi; 279 } 280 281 void 282 ctype<wchar_t>::_M_initialize_ctype() 283 { 284 #ifdef __UCLIBC_HAS_XLOCALE__ 285 __c_locale __old = __uselocale(_M_c_locale_ctype); 286 #endif 287 wint_t __i; 288 for (__i = 0; __i < 128; ++__i) 289 { 290 const int __c = wctob(__i); 291 if (__c == EOF) 292 break; 293 else 294 _M_narrow[__i] = static_cast<char>(__c); 295 } 296 if (__i == 128) 297 _M_narrow_ok = true; 298 else 299 _M_narrow_ok = false; 300 for (size_t __j = 0; 301 __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) 302 _M_widen[__j] = btowc(__j); 303 304 for (size_t __k = 0; __k <= 11; ++__k) 305 { 306 _M_bit[__k] = static_cast<mask>(_ISbit(__k)); 307 _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); 308 } 309 #ifdef __UCLIBC_HAS_XLOCALE__ 310 __uselocale(__old); 311 #endif 312 } 313 #endif // _GLIBCXX_USE_WCHAR_T 314 } -
libstdc++-v3/config/locale/uclibc/messages_members.cc
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.1.2/libstdc++-v3/config/locale/uclibc/messages_members.cc
old new 1 // std::messages implementation details, GNU version -*- C++ -*- 2 3 // Copyright (C) 2001, 2002 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.2.7.1.2 messages virtual functions 32 // 33 34 // Written by Benjamin Kosnik <bkoz@redhat.com> 35 36 #include <locale> 37 #include <bits/c++locale_internal.h> 38 39 #ifdef __UCLIBC_MJN3_ONLY__ 40 #warning fix gettext stuff 41 #endif 42 #ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ 43 extern "C" char *__dcgettext(const char *domainname, 44 const char *msgid, int category); 45 #undef gettext 46 #define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) 47 #else 48 #undef gettext 49 #define gettext(msgid) (msgid) 50 #endif 51 52 namespace std 53 { 54 // Specializations. 55 template<> 56 string 57 messages<char>::do_get(catalog, int, int, const string& __dfault) const 58 { 59 #ifdef __UCLIBC_HAS_XLOCALE__ 60 __c_locale __old = __uselocale(_M_c_locale_messages); 61 const char* __msg = const_cast<const char*>(gettext(__dfault.c_str())); 62 __uselocale(__old); 63 return string(__msg); 64 #elif defined __UCLIBC_HAS_LOCALE__ 65 char* __old = strdup(setlocale(LC_ALL, NULL)); 66 setlocale(LC_ALL, _M_name_messages); 67 const char* __msg = gettext(__dfault.c_str()); 68 setlocale(LC_ALL, __old); 69 free(__old); 70 return string(__msg); 71 #else 72 const char* __msg = gettext(__dfault.c_str()); 73 return string(__msg); 74 #endif 75 } 76 77 #ifdef _GLIBCXX_USE_WCHAR_T 78 template<> 79 wstring 80 messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const 81 { 82 # ifdef __UCLIBC_HAS_XLOCALE__ 83 __c_locale __old = __uselocale(_M_c_locale_messages); 84 char* __msg = gettext(_M_convert_to_char(__dfault)); 85 __uselocale(__old); 86 return _M_convert_from_char(__msg); 87 # elif defined __UCLIBC_HAS_LOCALE__ 88 char* __old = strdup(setlocale(LC_ALL, NULL)); 89 setlocale(LC_ALL, _M_name_messages); 90 char* __msg = gettext(_M_convert_to_char(__dfault)); 91 setlocale(LC_ALL, __old); 92 free(__old); 93 return _M_convert_from_char(__msg); 94 # else 95 char* __msg = gettext(_M_convert_to_char(__dfault)); 96 return _M_convert_from_char(__msg); 97 # endif 98 } 99 #endif 100 } -
libstdc++-v3/config/locale/uclibc/messages_members.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.1.2/libstdc++-v3/config/locale/uclibc/messages_members.h
old new 1 // std::messages implementation details, GNU version -*- C++ -*- 2 3 // Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.2.7.1.2 messages functions 32 // 33 34 // Written by Benjamin Kosnik <bkoz@redhat.com> 35 36 #ifdef __UCLIBC_MJN3_ONLY__ 37 #warning fix prototypes for *textdomain funcs 38 #endif 39 #ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ 40 extern "C" char *__textdomain(const char *domainname); 41 extern "C" char *__bindtextdomain(const char *domainname, 42 const char *dirname); 43 #else 44 #undef __textdomain 45 #undef __bindtextdomain 46 #define __textdomain(D) ((void)0) 47 #define __bindtextdomain(D,P) ((void)0) 48 #endif 49 50 // Non-virtual member functions. 51 template<typename _CharT> 52 messages<_CharT>::messages(size_t __refs) 53 : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), 54 _M_name_messages(_S_get_c_name()) 55 { } 56 57 template<typename _CharT> 58 messages<_CharT>::messages(__c_locale __cloc, const char* __s, 59 size_t __refs) 60 : facet(__refs), _M_c_locale_messages(NULL), _M_name_messages(NULL) 61 { 62 const size_t __len = std::strlen(__s) + 1; 63 char* __tmp = new char[__len]; 64 std::memcpy(__tmp, __s, __len); 65 _M_name_messages = __tmp; 66 67 // Last to avoid leaking memory if new throws. 68 _M_c_locale_messages = _S_clone_c_locale(__cloc); 69 } 70 71 template<typename _CharT> 72 typename messages<_CharT>::catalog 73 messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, 74 const char* __dir) const 75 { 76 __bindtextdomain(__s.c_str(), __dir); 77 return this->do_open(__s, __loc); 78 } 79 80 // Virtual member functions. 81 template<typename _CharT> 82 messages<_CharT>::~messages() 83 { 84 if (_M_name_messages != _S_get_c_name()) 85 delete [] _M_name_messages; 86 _S_destroy_c_locale(_M_c_locale_messages); 87 } 88 89 template<typename _CharT> 90 typename messages<_CharT>::catalog 91 messages<_CharT>::do_open(const basic_string<char>& __s, 92 const locale&) const 93 { 94 // No error checking is done, assume the catalog exists and can 95 // be used. 96 __textdomain(__s.c_str()); 97 return 0; 98 } 99 100 template<typename _CharT> 101 void 102 messages<_CharT>::do_close(catalog) const 103 { } 104 105 // messages_byname 106 template<typename _CharT> 107 messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) 108 : messages<_CharT>(__refs) 109 { 110 if (this->_M_name_messages != locale::facet::_S_get_c_name()) 111 delete [] this->_M_name_messages; 112 char* __tmp = new char[std::strlen(__s) + 1]; 113 std::strcpy(__tmp, __s); 114 this->_M_name_messages = __tmp; 115 116 if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) 117 { 118 this->_S_destroy_c_locale(this->_M_c_locale_messages); 119 this->_S_create_c_locale(this->_M_c_locale_messages, __s); 120 } 121 } -
libstdc++-v3/config/locale/uclibc/monetary_members.cc
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.1.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc
old new 1 // std::moneypunct implementation details, GNU version -*- C++ -*- 2 3 // Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions 32 // 33 34 // Written by Benjamin Kosnik <bkoz@redhat.com> 35 36 #define _LIBC 37 #include <locale> 38 #undef _LIBC 39 #include <bits/c++locale_internal.h> 40 41 #ifdef __UCLIBC_MJN3_ONLY__ 42 #warning optimize this for uclibc 43 #warning tailor for stub locale support 44 #endif 45 46 #ifndef __UCLIBC_HAS_XLOCALE__ 47 #define __nl_langinfo_l(N, L) nl_langinfo((N)) 48 #endif 49 50 namespace std 51 { 52 // Construct and return valid pattern consisting of some combination of: 53 // space none symbol sign value 54 money_base::pattern 55 money_base::_S_construct_pattern(char __precedes, char __space, char __posn) 56 { 57 pattern __ret; 58 59 // This insanely complicated routine attempts to construct a valid 60 // pattern for use with monyepunct. A couple of invariants: 61 62 // if (__precedes) symbol -> value 63 // else value -> symbol 64 65 // if (__space) space 66 // else none 67 68 // none == never first 69 // space never first or last 70 71 // Any elegant implementations of this are welcome. 72 switch (__posn) 73 { 74 case 0: 75 case 1: 76 // 1 The sign precedes the value and symbol. 77 __ret.field[0] = sign; 78 if (__space) 79 { 80 // Pattern starts with sign. 81 if (__precedes) 82 { 83 __ret.field[1] = symbol; 84 __ret.field[3] = value; 85 } 86 else 87 { 88 __ret.field[1] = value; 89 __ret.field[3] = symbol; 90 } 91 __ret.field[2] = space; 92 } 93 else 94 { 95 // Pattern starts with sign and ends with none. 96 if (__precedes) 97 { 98 __ret.field[1] = symbol; 99 __ret.field[2] = value; 100 } 101 else 102 { 103 __ret.field[1] = value; 104 __ret.field[2] = symbol; 105 } 106 __ret.field[3] = none; 107 } 108 break; 109 case 2: 110 // 2 The sign follows the value and symbol. 111 if (__space) 112 { 113 // Pattern either ends with sign. 114 if (__precedes) 115 { 116 __ret.field[0] = symbol; 117 __ret.field[2] = value; 118 } 119 else 120 { 121 __ret.field[0] = value; 122 __ret.field[2] = symbol; 123 } 124 __ret.field[1] = space; 125 __ret.field[3] = sign; 126 } 127 else 128 { 129 // Pattern ends with sign then none. 130 if (__precedes) 131 { 132 __ret.field[0] = symbol; 133 __ret.field[1] = value; 134 } 135 else 136 { 137 __ret.field[0] = value; 138 __ret.field[1] = symbol; 139 } 140 __ret.field[2] = sign; 141 __ret.field[3] = none; 142 } 143 break; 144 case 3: 145 // 3 The sign immediately precedes the symbol. 146 if (__precedes) 147 { 148 __ret.field[0] = sign; 149 __ret.field[1] = symbol; 150 if (__space) 151 { 152 __ret.field[2] = space; 153 __ret.field[3] = value; 154 } 155 else 156 { 157 __ret.field[2] = value; 158 __ret.field[3] = none; 159 } 160 } 161 else 162 { 163 __ret.field[0] = value; 164 if (__space) 165 { 166 __ret.field[1] = space; 167 __ret.field[2] = sign; 168 __ret.field[3] = symbol; 169 } 170 else 171 { 172 __ret.field[1] = sign; 173 __ret.field[2] = symbol; 174 __ret.field[3] = none; 175 } 176 } 177 break; 178 case 4: 179 // 4 The sign immediately follows the symbol. 180 if (__precedes) 181 { 182 __ret.field[0] = symbol; 183 __ret.field[1] = sign; 184 if (__space) 185 { 186 __ret.field[2] = space; 187 __ret.field[3] = value; 188 } 189 else 190 { 191 __ret.field[2] = value; 192 __ret.field[3] = none; 193 } 194 } 195 else 196 { 197 __ret.field[0] = value; 198 if (__space) 199 { 200 __ret.field[1] = space; 201 __ret.field[2] = symbol; 202 __ret.field[3] = sign; 203 } 204 else 205 { 206 __ret.field[1] = symbol; 207 __ret.field[2] = sign; 208 __ret.field[3] = none; 209 } 210 } 211 break; 212 default: 213 __ret = pattern(); 214 } 215 return __ret; 216 } 217 218 template<> 219 void 220 moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc, 221 const char*) 222 { 223 if (!_M_data) 224 _M_data = new __moneypunct_cache<char, true>; 225 226 if (!__cloc) 227 { 228 // "C" locale 229 _M_data->_M_decimal_point = '.'; 230 _M_data->_M_thousands_sep = ','; 231 _M_data->_M_grouping = ""; 232 _M_data->_M_grouping_size = 0; 233 _M_data->_M_curr_symbol = ""; 234 _M_data->_M_curr_symbol_size = 0; 235 _M_data->_M_positive_sign = ""; 236 _M_data->_M_positive_sign_size = 0; 237 _M_data->_M_negative_sign = ""; 238 _M_data->_M_negative_sign_size = 0; 239 _M_data->_M_frac_digits = 0; 240 _M_data->_M_pos_format = money_base::_S_default_pattern; 241 _M_data->_M_neg_format = money_base::_S_default_pattern; 242 243 for (size_t __i = 0; __i < money_base::_S_end; ++__i) 244 _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; 245 } 246 else 247 { 248 // Named locale. 249 _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 250 __cloc)); 251 _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 252 __cloc)); 253 _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); 254 _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); 255 _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); 256 _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); 257 258 char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); 259 if (!__nposn) 260 _M_data->_M_negative_sign = "()"; 261 else 262 _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, 263 __cloc); 264 _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); 265 266 // _Intl == true 267 _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); 268 _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); 269 _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 270 __cloc)); 271 char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); 272 char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); 273 char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); 274 _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 275 __pposn); 276 char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); 277 char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); 278 _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 279 __nposn); 280 } 281 } 282 283 template<> 284 void 285 moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc, 286 const char*) 287 { 288 if (!_M_data) 289 _M_data = new __moneypunct_cache<char, false>; 290 291 if (!__cloc) 292 { 293 // "C" locale 294 _M_data->_M_decimal_point = '.'; 295 _M_data->_M_thousands_sep = ','; 296 _M_data->_M_grouping = ""; 297 _M_data->_M_grouping_size = 0; 298 _M_data->_M_curr_symbol = ""; 299 _M_data->_M_curr_symbol_size = 0; 300 _M_data->_M_positive_sign = ""; 301 _M_data->_M_positive_sign_size = 0; 302 _M_data->_M_negative_sign = ""; 303 _M_data->_M_negative_sign_size = 0; 304 _M_data->_M_frac_digits = 0; 305 _M_data->_M_pos_format = money_base::_S_default_pattern; 306 _M_data->_M_neg_format = money_base::_S_default_pattern; 307 308 for (size_t __i = 0; __i < money_base::_S_end; ++__i) 309 _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; 310 } 311 else 312 { 313 // Named locale. 314 _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 315 __cloc)); 316 _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 317 __cloc)); 318 _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); 319 _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); 320 _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); 321 _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); 322 323 char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); 324 if (!__nposn) 325 _M_data->_M_negative_sign = "()"; 326 else 327 _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, 328 __cloc); 329 _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); 330 331 // _Intl == false 332 _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); 333 _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); 334 _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); 335 char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); 336 char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); 337 char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); 338 _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 339 __pposn); 340 char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); 341 char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); 342 _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 343 __nposn); 344 } 345 } 346 347 template<> 348 moneypunct<char, true>::~moneypunct() 349 { delete _M_data; } 350 351 template<> 352 moneypunct<char, false>::~moneypunct() 353 { delete _M_data; } 354 355 #ifdef _GLIBCXX_USE_WCHAR_T 356 template<> 357 void 358 moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc, 359 #ifdef __UCLIBC_HAS_XLOCALE__ 360 const char*) 361 #else 362 const char* __name) 363 #endif 364 { 365 if (!_M_data) 366 _M_data = new __moneypunct_cache<wchar_t, true>; 367 368 if (!__cloc) 369 { 370 // "C" locale 371 _M_data->_M_decimal_point = L'.'; 372 _M_data->_M_thousands_sep = L','; 373 _M_data->_M_grouping = ""; 374 _M_data->_M_grouping_size = 0; 375 _M_data->_M_curr_symbol = L""; 376 _M_data->_M_curr_symbol_size = 0; 377 _M_data->_M_positive_sign = L""; 378 _M_data->_M_positive_sign_size = 0; 379 _M_data->_M_negative_sign = L""; 380 _M_data->_M_negative_sign_size = 0; 381 _M_data->_M_frac_digits = 0; 382 _M_data->_M_pos_format = money_base::_S_default_pattern; 383 _M_data->_M_neg_format = money_base::_S_default_pattern; 384 385 // Use ctype::widen code without the facet... 386 for (size_t __i = 0; __i < money_base::_S_end; ++__i) 387 _M_data->_M_atoms[__i] = 388 static_cast<wchar_t>(money_base::_S_atoms[__i]); 389 } 390 else 391 { 392 // Named locale. 393 #ifdef __UCLIBC_HAS_XLOCALE__ 394 __c_locale __old = __uselocale(__cloc); 395 #else 396 // Switch to named locale so that mbsrtowcs will work. 397 char* __old = strdup(setlocale(LC_ALL, NULL)); 398 setlocale(LC_ALL, __name); 399 #endif 400 401 #ifdef __UCLIBC_MJN3_ONLY__ 402 #warning fix this... should be monetary 403 #endif 404 #ifdef __UCLIBC__ 405 # ifdef __UCLIBC_HAS_XLOCALE__ 406 _M_data->_M_decimal_point = __cloc->decimal_point_wc; 407 _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; 408 # elif defined __UCLIBC_HAS_LOCALE__ 409 _M_data->_M_decimal_point = __global_locale->decimal_point_wc; 410 _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; 411 # endif 412 #else 413 union { char *__s; wchar_t __w; } __u; 414 __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); 415 _M_data->_M_decimal_point = __u.__w; 416 417 __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); 418 _M_data->_M_thousands_sep = __u.__w; 419 #endif 420 _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); 421 _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); 422 423 const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); 424 const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); 425 const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); 426 427 wchar_t* __wcs_ps = 0; 428 wchar_t* __wcs_ns = 0; 429 const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); 430 try 431 { 432 mbstate_t __state; 433 size_t __len = strlen(__cpossign); 434 if (__len) 435 { 436 ++__len; 437 memset(&__state, 0, sizeof(mbstate_t)); 438 __wcs_ps = new wchar_t[__len]; 439 mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); 440 _M_data->_M_positive_sign = __wcs_ps; 441 } 442 else 443 _M_data->_M_positive_sign = L""; 444 _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); 445 446 __len = strlen(__cnegsign); 447 if (!__nposn) 448 _M_data->_M_negative_sign = L"()"; 449 else if (__len) 450 { 451 ++__len; 452 memset(&__state, 0, sizeof(mbstate_t)); 453 __wcs_ns = new wchar_t[__len]; 454 mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); 455 _M_data->_M_negative_sign = __wcs_ns; 456 } 457 else 458 _M_data->_M_negative_sign = L""; 459 _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); 460 461 // _Intl == true. 462 __len = strlen(__ccurr); 463 if (__len) 464 { 465 ++__len; 466 memset(&__state, 0, sizeof(mbstate_t)); 467 wchar_t* __wcs = new wchar_t[__len]; 468 mbsrtowcs(__wcs, &__ccurr, __len, &__state); 469 _M_data->_M_curr_symbol = __wcs; 470 } 471 else 472 _M_data->_M_curr_symbol = L""; 473 _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); 474 } 475 catch (...) 476 { 477 delete _M_data; 478 _M_data = 0; 479 delete __wcs_ps; 480 delete __wcs_ns; 481 #ifdef __UCLIBC_HAS_XLOCALE__ 482 __uselocale(__old); 483 #else 484 setlocale(LC_ALL, __old); 485 free(__old); 486 #endif 487 __throw_exception_again; 488 } 489 490 _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 491 __cloc)); 492 char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); 493 char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); 494 char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); 495 _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 496 __pposn); 497 char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); 498 char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); 499 _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 500 __nposn); 501 502 #ifdef __UCLIBC_HAS_XLOCALE__ 503 __uselocale(__old); 504 #else 505 setlocale(LC_ALL, __old); 506 free(__old); 507 #endif 508 } 509 } 510 511 template<> 512 void 513 moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc, 514 #ifdef __UCLIBC_HAS_XLOCALE__ 515 const char*) 516 #else 517 const char* __name) 518 #endif 519 { 520 if (!_M_data) 521 _M_data = new __moneypunct_cache<wchar_t, false>; 522 523 if (!__cloc) 524 { 525 // "C" locale 526 _M_data->_M_decimal_point = L'.'; 527 _M_data->_M_thousands_sep = L','; 528 _M_data->_M_grouping = ""; 529 _M_data->_M_grouping_size = 0; 530 _M_data->_M_curr_symbol = L""; 531 _M_data->_M_curr_symbol_size = 0; 532 _M_data->_M_positive_sign = L""; 533 _M_data->_M_positive_sign_size = 0; 534 _M_data->_M_negative_sign = L""; 535 _M_data->_M_negative_sign_size = 0; 536 _M_data->_M_frac_digits = 0; 537 _M_data->_M_pos_format = money_base::_S_default_pattern; 538 _M_data->_M_neg_format = money_base::_S_default_pattern; 539 540 // Use ctype::widen code without the facet... 541 for (size_t __i = 0; __i < money_base::_S_end; ++__i) 542 _M_data->_M_atoms[__i] = 543 static_cast<wchar_t>(money_base::_S_atoms[__i]); 544 } 545 else 546 { 547 // Named locale. 548 #ifdef __UCLIBC_HAS_XLOCALE__ 549 __c_locale __old = __uselocale(__cloc); 550 #else 551 // Switch to named locale so that mbsrtowcs will work. 552 char* __old = strdup(setlocale(LC_ALL, NULL)); 553 setlocale(LC_ALL, __name); 554 #endif 555 556 #ifdef __UCLIBC_MJN3_ONLY__ 557 #warning fix this... should be monetary 558 #endif 559 #ifdef __UCLIBC__ 560 # ifdef __UCLIBC_HAS_XLOCALE__ 561 _M_data->_M_decimal_point = __cloc->decimal_point_wc; 562 _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; 563 # elif defined __UCLIBC_HAS_LOCALE__ 564 _M_data->_M_decimal_point = __global_locale->decimal_point_wc; 565 _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; 566 # endif 567 #else 568 union { char *__s; wchar_t __w; } __u; 569 __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); 570 _M_data->_M_decimal_point = __u.__w; 571 572 __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); 573 _M_data->_M_thousands_sep = __u.__w; 574 #endif 575 _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); 576 _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); 577 578 const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); 579 const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); 580 const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); 581 582 wchar_t* __wcs_ps = 0; 583 wchar_t* __wcs_ns = 0; 584 const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); 585 try 586 { 587 mbstate_t __state; 588 size_t __len; 589 __len = strlen(__cpossign); 590 if (__len) 591 { 592 ++__len; 593 memset(&__state, 0, sizeof(mbstate_t)); 594 __wcs_ps = new wchar_t[__len]; 595 mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); 596 _M_data->_M_positive_sign = __wcs_ps; 597 } 598 else 599 _M_data->_M_positive_sign = L""; 600 _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); 601 602 __len = strlen(__cnegsign); 603 if (!__nposn) 604 _M_data->_M_negative_sign = L"()"; 605 else if (__len) 606 { 607 ++__len; 608 memset(&__state, 0, sizeof(mbstate_t)); 609 __wcs_ns = new wchar_t[__len]; 610 mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); 611 _M_data->_M_negative_sign = __wcs_ns; 612 } 613 else 614 _M_data->_M_negative_sign = L""; 615 _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); 616 617 // _Intl == true. 618 __len = strlen(__ccurr); 619 if (__len) 620 { 621 ++__len; 622 memset(&__state, 0, sizeof(mbstate_t)); 623 wchar_t* __wcs = new wchar_t[__len]; 624 mbsrtowcs(__wcs, &__ccurr, __len, &__state); 625 _M_data->_M_curr_symbol = __wcs; 626 } 627 else 628 _M_data->_M_curr_symbol = L""; 629 _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); 630 } 631 catch (...) 632 { 633 delete _M_data; 634 _M_data = 0; 635 delete __wcs_ps; 636 delete __wcs_ns; 637 #ifdef __UCLIBC_HAS_XLOCALE__ 638 __uselocale(__old); 639 #else 640 setlocale(LC_ALL, __old); 641 free(__old); 642 #endif 643 __throw_exception_again; 644 } 645 646 _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); 647 char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); 648 char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); 649 char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); 650 _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 651 __pposn); 652 char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); 653 char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); 654 _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 655 __nposn); 656 657 #ifdef __UCLIBC_HAS_XLOCALE__ 658 __uselocale(__old); 659 #else 660 setlocale(LC_ALL, __old); 661 free(__old); 662 #endif 663 } 664 } 665 666 template<> 667 moneypunct<wchar_t, true>::~moneypunct() 668 { 669 if (_M_data->_M_positive_sign_size) 670 delete [] _M_data->_M_positive_sign; 671 if (_M_data->_M_negative_sign_size 672 && wcscmp(_M_data->_M_negative_sign, L"()") != 0) 673 delete [] _M_data->_M_negative_sign; 674 if (_M_data->_M_curr_symbol_size) 675 delete [] _M_data->_M_curr_symbol; 676 delete _M_data; 677 } 678 679 template<> 680 moneypunct<wchar_t, false>::~moneypunct() 681 { 682 if (_M_data->_M_positive_sign_size) 683 delete [] _M_data->_M_positive_sign; 684 if (_M_data->_M_negative_sign_size 685 && wcscmp(_M_data->_M_negative_sign, L"()") != 0) 686 delete [] _M_data->_M_negative_sign; 687 if (_M_data->_M_curr_symbol_size) 688 delete [] _M_data->_M_curr_symbol; 689 delete _M_data; 690 } 691 #endif 692 } -
libstdc++-v3/config/locale/uclibc/numeric_members.cc
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.1.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc
old new 1 // std::numpunct implementation details, GNU version -*- C++ -*- 2 3 // Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions 32 // 33 34 // Written by Benjamin Kosnik <bkoz@redhat.com> 35 36 #define _LIBC 37 #include <locale> 38 #undef _LIBC 39 #include <bits/c++locale_internal.h> 40 41 #ifdef __UCLIBC_MJN3_ONLY__ 42 #warning tailor for stub locale support 43 #endif 44 #ifndef __UCLIBC_HAS_XLOCALE__ 45 #define __nl_langinfo_l(N, L) nl_langinfo((N)) 46 #endif 47 48 namespace std 49 { 50 template<> 51 void 52 numpunct<char>::_M_initialize_numpunct(__c_locale __cloc) 53 { 54 if (!_M_data) 55 _M_data = new __numpunct_cache<char>; 56 57 if (!__cloc) 58 { 59 // "C" locale 60 _M_data->_M_grouping = ""; 61 _M_data->_M_grouping_size = 0; 62 _M_data->_M_use_grouping = false; 63 64 _M_data->_M_decimal_point = '.'; 65 _M_data->_M_thousands_sep = ','; 66 67 for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) 68 _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; 69 70 for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) 71 _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; 72 } 73 else 74 { 75 // Named locale. 76 _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, 77 __cloc)); 78 _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, 79 __cloc)); 80 81 // Check for NULL, which implies no grouping. 82 if (_M_data->_M_thousands_sep == '\0') 83 _M_data->_M_grouping = ""; 84 else 85 _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); 86 _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); 87 } 88 89 // NB: There is no way to extact this info from posix locales. 90 // _M_truename = __nl_langinfo_l(YESSTR, __cloc); 91 _M_data->_M_truename = "true"; 92 _M_data->_M_truename_size = 4; 93 // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); 94 _M_data->_M_falsename = "false"; 95 _M_data->_M_falsename_size = 5; 96 } 97 98 template<> 99 numpunct<char>::~numpunct() 100 { delete _M_data; } 101 102 #ifdef _GLIBCXX_USE_WCHAR_T 103 template<> 104 void 105 numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc) 106 { 107 if (!_M_data) 108 _M_data = new __numpunct_cache<wchar_t>; 109 110 if (!__cloc) 111 { 112 // "C" locale 113 _M_data->_M_grouping = ""; 114 _M_data->_M_grouping_size = 0; 115 _M_data->_M_use_grouping = false; 116 117 _M_data->_M_decimal_point = L'.'; 118 _M_data->_M_thousands_sep = L','; 119 120 // Use ctype::widen code without the facet... 121 for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) 122 _M_data->_M_atoms_out[__i] = 123 static_cast<wchar_t>(__num_base::_S_atoms_out[__i]); 124 125 for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) 126 _M_data->_M_atoms_in[__j] = 127 static_cast<wchar_t>(__num_base::_S_atoms_in[__j]); 128 } 129 else 130 { 131 // Named locale. 132 // NB: In the GNU model wchar_t is always 32 bit wide. 133 #ifdef __UCLIBC_MJN3_ONLY__ 134 #warning fix this 135 #endif 136 #ifdef __UCLIBC__ 137 # ifdef __UCLIBC_HAS_XLOCALE__ 138 _M_data->_M_decimal_point = __cloc->decimal_point_wc; 139 _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; 140 # elif defined __UCLIBC_HAS_LOCALE__ 141 _M_data->_M_decimal_point = __global_locale->decimal_point_wc; 142 _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; 143 # endif 144 #else 145 union { char *__s; wchar_t __w; } __u; 146 __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); 147 _M_data->_M_decimal_point = __u.__w; 148 149 __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); 150 _M_data->_M_thousands_sep = __u.__w; 151 #endif 152 153 if (_M_data->_M_thousands_sep == L'\0') 154 _M_data->_M_grouping = ""; 155 else 156 _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); 157 _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); 158 } 159 160 // NB: There is no way to extact this info from posix locales. 161 // _M_truename = __nl_langinfo_l(YESSTR, __cloc); 162 _M_data->_M_truename = L"true"; 163 _M_data->_M_truename_size = 4; 164 // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); 165 _M_data->_M_falsename = L"false"; 166 _M_data->_M_falsename_size = 5; 167 } 168 169 template<> 170 numpunct<wchar_t>::~numpunct() 171 { delete _M_data; } 172 #endif 173 } -
libstdc++-v3/config/locale/uclibc/time_members.cc
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.1.2/libstdc++-v3/config/locale/uclibc/time_members.cc
old new 1 // std::time_get, std::time_put implementation, GNU version -*- C++ -*- 2 3 // Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions 32 // ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions 33 // 34 35 // Written by Benjamin Kosnik <bkoz@redhat.com> 36 37 #include <locale> 38 #include <bits/c++locale_internal.h> 39 40 #ifdef __UCLIBC_MJN3_ONLY__ 41 #warning tailor for stub locale support 42 #endif 43 #ifndef __UCLIBC_HAS_XLOCALE__ 44 #define __nl_langinfo_l(N, L) nl_langinfo((N)) 45 #endif 46 47 namespace std 48 { 49 template<> 50 void 51 __timepunct<char>:: 52 _M_put(char* __s, size_t __maxlen, const char* __format, 53 const tm* __tm) const 54 { 55 #ifdef __UCLIBC_HAS_XLOCALE__ 56 const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, 57 _M_c_locale_timepunct); 58 #else 59 char* __old = strdup(setlocale(LC_ALL, NULL)); 60 setlocale(LC_ALL, _M_name_timepunct); 61 const size_t __len = strftime(__s, __maxlen, __format, __tm); 62 setlocale(LC_ALL, __old); 63 free(__old); 64 #endif 65 // Make sure __s is null terminated. 66 if (__len == 0) 67 __s[0] = '\0'; 68 } 69 70 template<> 71 void 72 __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc) 73 { 74 if (!_M_data) 75 _M_data = new __timepunct_cache<char>; 76 77 if (!__cloc) 78 { 79 // "C" locale 80 _M_c_locale_timepunct = _S_get_c_locale(); 81 82 _M_data->_M_date_format = "%m/%d/%y"; 83 _M_data->_M_date_era_format = "%m/%d/%y"; 84 _M_data->_M_time_format = "%H:%M:%S"; 85 _M_data->_M_time_era_format = "%H:%M:%S"; 86 _M_data->_M_date_time_format = ""; 87 _M_data->_M_date_time_era_format = ""; 88 _M_data->_M_am = "AM"; 89 _M_data->_M_pm = "PM"; 90 _M_data->_M_am_pm_format = ""; 91 92 // Day names, starting with "C"'s Sunday. 93 _M_data->_M_day1 = "Sunday"; 94 _M_data->_M_day2 = "Monday"; 95 _M_data->_M_day3 = "Tuesday"; 96 _M_data->_M_day4 = "Wednesday"; 97 _M_data->_M_day5 = "Thursday"; 98 _M_data->_M_day6 = "Friday"; 99 _M_data->_M_day7 = "Saturday"; 100 101 // Abbreviated day names, starting with "C"'s Sun. 102 _M_data->_M_aday1 = "Sun"; 103 _M_data->_M_aday2 = "Mon"; 104 _M_data->_M_aday3 = "Tue"; 105 _M_data->_M_aday4 = "Wed"; 106 _M_data->_M_aday5 = "Thu"; 107 _M_data->_M_aday6 = "Fri"; 108 _M_data->_M_aday7 = "Sat"; 109 110 // Month names, starting with "C"'s January. 111 _M_data->_M_month01 = "January"; 112 _M_data->_M_month02 = "February"; 113 _M_data->_M_month03 = "March"; 114 _M_data->_M_month04 = "April"; 115 _M_data->_M_month05 = "May"; 116 _M_data->_M_month06 = "June"; 117 _M_data->_M_month07 = "July"; 118 _M_data->_M_month08 = "August"; 119 _M_data->_M_month09 = "September"; 120 _M_data->_M_month10 = "October"; 121 _M_data->_M_month11 = "November"; 122 _M_data->_M_month12 = "December"; 123 124 // Abbreviated month names, starting with "C"'s Jan. 125 _M_data->_M_amonth01 = "Jan"; 126 _M_data->_M_amonth02 = "Feb"; 127 _M_data->_M_amonth03 = "Mar"; 128 _M_data->_M_amonth04 = "Apr"; 129 _M_data->_M_amonth05 = "May"; 130 _M_data->_M_amonth06 = "Jun"; 131 _M_data->_M_amonth07 = "Jul"; 132 _M_data->_M_amonth08 = "Aug"; 133 _M_data->_M_amonth09 = "Sep"; 134 _M_data->_M_amonth10 = "Oct"; 135 _M_data->_M_amonth11 = "Nov"; 136 _M_data->_M_amonth12 = "Dec"; 137 } 138 else 139 { 140 _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 141 142 _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); 143 _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); 144 _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); 145 _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); 146 _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); 147 _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, 148 __cloc); 149 _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); 150 _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); 151 _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); 152 153 // Day names, starting with "C"'s Sunday. 154 _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); 155 _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); 156 _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); 157 _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); 158 _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); 159 _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); 160 _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); 161 162 // Abbreviated day names, starting with "C"'s Sun. 163 _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); 164 _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); 165 _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); 166 _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); 167 _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); 168 _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); 169 _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); 170 171 // Month names, starting with "C"'s January. 172 _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); 173 _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); 174 _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); 175 _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); 176 _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); 177 _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); 178 _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); 179 _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); 180 _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); 181 _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); 182 _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); 183 _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); 184 185 // Abbreviated month names, starting with "C"'s Jan. 186 _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); 187 _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); 188 _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); 189 _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); 190 _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); 191 _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); 192 _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); 193 _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); 194 _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); 195 _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); 196 _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); 197 _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); 198 } 199 } 200 201 #ifdef _GLIBCXX_USE_WCHAR_T 202 template<> 203 void 204 __timepunct<wchar_t>:: 205 _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 206 const tm* __tm) const 207 { 208 #ifdef __UCLIBC_HAS_XLOCALE__ 209 __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); 210 const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, 211 _M_c_locale_timepunct); 212 #else 213 char* __old = strdup(setlocale(LC_ALL, NULL)); 214 setlocale(LC_ALL, _M_name_timepunct); 215 const size_t __len = wcsftime(__s, __maxlen, __format, __tm); 216 setlocale(LC_ALL, __old); 217 free(__old); 218 #endif 219 // Make sure __s is null terminated. 220 if (__len == 0) 221 __s[0] = L'\0'; 222 } 223 224 template<> 225 void 226 __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc) 227 { 228 if (!_M_data) 229 _M_data = new __timepunct_cache<wchar_t>; 230 231 #warning wide time stuff 232 // if (!__cloc) 233 { 234 // "C" locale 235 _M_c_locale_timepunct = _S_get_c_locale(); 236 237 _M_data->_M_date_format = L"%m/%d/%y"; 238 _M_data->_M_date_era_format = L"%m/%d/%y"; 239 _M_data->_M_time_format = L"%H:%M:%S"; 240 _M_data->_M_time_era_format = L"%H:%M:%S"; 241 _M_data->_M_date_time_format = L""; 242 _M_data->_M_date_time_era_format = L""; 243 _M_data->_M_am = L"AM"; 244 _M_data->_M_pm = L"PM"; 245 _M_data->_M_am_pm_format = L""; 246 247 // Day names, starting with "C"'s Sunday. 248 _M_data->_M_day1 = L"Sunday"; 249 _M_data->_M_day2 = L"Monday"; 250 _M_data->_M_day3 = L"Tuesday"; 251 _M_data->_M_day4 = L"Wednesday"; 252 _M_data->_M_day5 = L"Thursday"; 253 _M_data->_M_day6 = L"Friday"; 254 _M_data->_M_day7 = L"Saturday"; 255 256 // Abbreviated day names, starting with "C"'s Sun. 257 _M_data->_M_aday1 = L"Sun"; 258 _M_data->_M_aday2 = L"Mon"; 259 _M_data->_M_aday3 = L"Tue"; 260 _M_data->_M_aday4 = L"Wed"; 261 _M_data->_M_aday5 = L"Thu"; 262 _M_data->_M_aday6 = L"Fri"; 263 _M_data->_M_aday7 = L"Sat"; 264 265 // Month names, starting with "C"'s January. 266 _M_data->_M_month01 = L"January"; 267 _M_data->_M_month02 = L"February"; 268 _M_data->_M_month03 = L"March"; 269 _M_data->_M_month04 = L"April"; 270 _M_data->_M_month05 = L"May"; 271 _M_data->_M_month06 = L"June"; 272 _M_data->_M_month07 = L"July"; 273 _M_data->_M_month08 = L"August"; 274 _M_data->_M_month09 = L"September"; 275 _M_data->_M_month10 = L"October"; 276 _M_data->_M_month11 = L"November"; 277 _M_data->_M_month12 = L"December"; 278 279 // Abbreviated month names, starting with "C"'s Jan. 280 _M_data->_M_amonth01 = L"Jan"; 281 _M_data->_M_amonth02 = L"Feb"; 282 _M_data->_M_amonth03 = L"Mar"; 283 _M_data->_M_amonth04 = L"Apr"; 284 _M_data->_M_amonth05 = L"May"; 285 _M_data->_M_amonth06 = L"Jun"; 286 _M_data->_M_amonth07 = L"Jul"; 287 _M_data->_M_amonth08 = L"Aug"; 288 _M_data->_M_amonth09 = L"Sep"; 289 _M_data->_M_amonth10 = L"Oct"; 290 _M_data->_M_amonth11 = L"Nov"; 291 _M_data->_M_amonth12 = L"Dec"; 292 } 293 #if 0 294 else 295 { 296 _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 297 298 union { char *__s; wchar_t *__w; } __u; 299 300 __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc); 301 _M_data->_M_date_format = __u.__w; 302 __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc); 303 _M_data->_M_date_era_format = __u.__w; 304 __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc); 305 _M_data->_M_time_format = __u.__w; 306 __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc); 307 _M_data->_M_time_era_format = __u.__w; 308 __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc); 309 _M_data->_M_date_time_format = __u.__w; 310 __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc); 311 _M_data->_M_date_time_era_format = __u.__w; 312 __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc); 313 _M_data->_M_am = __u.__w; 314 __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc); 315 _M_data->_M_pm = __u.__w; 316 __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc); 317 _M_data->_M_am_pm_format = __u.__w; 318 319 // Day names, starting with "C"'s Sunday. 320 __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc); 321 _M_data->_M_day1 = __u.__w; 322 __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc); 323 _M_data->_M_day2 = __u.__w; 324 __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc); 325 _M_data->_M_day3 = __u.__w; 326 __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc); 327 _M_data->_M_day4 = __u.__w; 328 __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc); 329 _M_data->_M_day5 = __u.__w; 330 __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc); 331 _M_data->_M_day6 = __u.__w; 332 __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc); 333 _M_data->_M_day7 = __u.__w; 334 335 // Abbreviated day names, starting with "C"'s Sun. 336 __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc); 337 _M_data->_M_aday1 = __u.__w; 338 __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc); 339 _M_data->_M_aday2 = __u.__w; 340 __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc); 341 _M_data->_M_aday3 = __u.__w; 342 __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc); 343 _M_data->_M_aday4 = __u.__w; 344 __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc); 345 _M_data->_M_aday5 = __u.__w; 346 __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc); 347 _M_data->_M_aday6 = __u.__w; 348 __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc); 349 _M_data->_M_aday7 = __u.__w; 350 351 // Month names, starting with "C"'s January. 352 __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc); 353 _M_data->_M_month01 = __u.__w; 354 __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc); 355 _M_data->_M_month02 = __u.__w; 356 __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc); 357 _M_data->_M_month03 = __u.__w; 358 __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc); 359 _M_data->_M_month04 = __u.__w; 360 __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc); 361 _M_data->_M_month05 = __u.__w; 362 __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc); 363 _M_data->_M_month06 = __u.__w; 364 __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc); 365 _M_data->_M_month07 = __u.__w; 366 __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc); 367 _M_data->_M_month08 = __u.__w; 368 __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc); 369 _M_data->_M_month09 = __u.__w; 370 __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc); 371 _M_data->_M_month10 = __u.__w; 372 __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc); 373 _M_data->_M_month11 = __u.__w; 374 __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc); 375 _M_data->_M_month12 = __u.__w; 376 377 // Abbreviated month names, starting with "C"'s Jan. 378 __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc); 379 _M_data->_M_amonth01 = __u.__w; 380 __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc); 381 _M_data->_M_amonth02 = __u.__w; 382 __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc); 383 _M_data->_M_amonth03 = __u.__w; 384 __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc); 385 _M_data->_M_amonth04 = __u.__w; 386 __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc); 387 _M_data->_M_amonth05 = __u.__w; 388 __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc); 389 _M_data->_M_amonth06 = __u.__w; 390 __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc); 391 _M_data->_M_amonth07 = __u.__w; 392 __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc); 393 _M_data->_M_amonth08 = __u.__w; 394 __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc); 395 _M_data->_M_amonth09 = __u.__w; 396 __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc); 397 _M_data->_M_amonth10 = __u.__w; 398 __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc); 399 _M_data->_M_amonth11 = __u.__w; 400 __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc); 401 _M_data->_M_amonth12 = __u.__w; 402 } 403 #endif // 0 404 } 405 #endif 406 } -
libstdc++-v3/config/locale/uclibc/time_members.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.1.2/libstdc++-v3/config/locale/uclibc/time_members.h
old new 1 // std::time_get, std::time_put implementation, GNU version -*- C++ -*- 2 3 // Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.2.5.1.2 - time_get functions 32 // ISO C++ 14882: 22.2.5.3.2 - time_put functions 33 // 34 35 // Written by Benjamin Kosnik <bkoz@redhat.com> 36 37 template<typename _CharT> 38 __timepunct<_CharT>::__timepunct(size_t __refs) 39 : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 40 _M_name_timepunct(_S_get_c_name()) 41 { _M_initialize_timepunct(); } 42 43 template<typename _CharT> 44 __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 45 : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), 46 _M_name_timepunct(_S_get_c_name()) 47 { _M_initialize_timepunct(); } 48 49 template<typename _CharT> 50 __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, 51 size_t __refs) 52 : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 53 _M_name_timepunct(NULL) 54 { 55 const size_t __len = std::strlen(__s) + 1; 56 char* __tmp = new char[__len]; 57 std::memcpy(__tmp, __s, __len); 58 _M_name_timepunct = __tmp; 59 60 try 61 { _M_initialize_timepunct(__cloc); } 62 catch(...) 63 { 64 delete [] _M_name_timepunct; 65 __throw_exception_again; 66 } 67 } 68 69 template<typename _CharT> 70 __timepunct<_CharT>::~__timepunct() 71 { 72 if (_M_name_timepunct != _S_get_c_name()) 73 delete [] _M_name_timepunct; 74 delete _M_data; 75 _S_destroy_c_locale(_M_c_locale_timepunct); 76 } -
libstdc++-v3/config/os/uclibc/ctype_base.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.1.2/libstdc++-v3/config/os/uclibc/ctype_base.h
old new 1 // Locale support -*- C++ -*- 2 3 // Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004 4 // Free Software Foundation, Inc. 5 // 6 // This file is part of the GNU ISO C++ Library. This library is free 7 // software; you can redistribute it and/or modify it under the 8 // terms of the GNU General Public License as published by the 9 // Free Software Foundation; either version 2, or (at your option) 10 // any later version. 11 12 // This library is distributed in the hope that it will be useful, 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 // GNU General Public License for more details. 16 17 // You should have received a copy of the GNU General Public License along 18 // with this library; see the file COPYING. If not, write to the Free 19 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20 // USA. 21 22 // As a special exception, you may use this file as part of a free software 23 // library without restriction. Specifically, if other files instantiate 24 // templates or use macros or inline functions from this file, or you compile 25 // this file and link it with other files to produce an executable, this 26 // file does not by itself cause the resulting executable to be covered by 27 // the GNU General Public License. This exception does not however 28 // invalidate any other reasons why the executable file might be covered by 29 // the GNU General Public License. 30 31 // 32 // ISO C++ 14882: 22.1 Locales 33 // 34 35 /** @file ctype_base.h 36 * This is an internal header file, included by other library headers. 37 * You should not attempt to use it directly. 38 */ 39 40 // Information as gleaned from /usr/include/ctype.h 41 42 /// @brief Base class for ctype. 43 struct ctype_base 44 { 45 // Note: In uClibc, the following two types depend on configuration. 46 47 // Non-standard typedefs. 48 typedef const __ctype_touplow_t* __to_type; 49 50 // NB: Offsets into ctype<char>::_M_table force a particular size 51 // on the mask type. Because of this, we don't use an enum. 52 typedef __ctype_mask_t mask; 53 static const mask upper = _ISupper; 54 static const mask lower = _ISlower; 55 static const mask alpha = _ISalpha; 56 static const mask digit = _ISdigit; 57 static const mask xdigit = _ISxdigit; 58 static const mask space = _ISspace; 59 static const mask print = _ISprint; 60 static const mask graph = _ISalpha | _ISdigit | _ISpunct; 61 static const mask cntrl = _IScntrl; 62 static const mask punct = _ISpunct; 63 static const mask alnum = _ISalpha | _ISdigit; 64 }; -
libstdc++-v3/config/os/uclibc/ctype_inline.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.1.2/libstdc++-v3/config/os/uclibc/ctype_inline.h
old new 1 // Locale support -*- C++ -*- 2 3 // Copyright (C) 2000, 2002 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 // 31 // ISO C++ 14882: 22.1 Locales 32 // 33 34 // ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) 35 // functions go in ctype.cc 36 37 bool 38 ctype<char>:: 39 is(mask __m, char __c) const 40 { return _M_table[static_cast<unsigned char>(__c)] & __m; } 41 42 const char* 43 ctype<char>:: 44 is(const char* __low, const char* __high, mask* __vec) const 45 { 46 while (__low < __high) 47 *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; 48 return __high; 49 } 50 51 const char* 52 ctype<char>:: 53 scan_is(mask __m, const char* __low, const char* __high) const 54 { 55 while (__low < __high 56 && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) 57 ++__low; 58 return __low; 59 } 60 61 const char* 62 ctype<char>:: 63 scan_not(mask __m, const char* __low, const char* __high) const 64 { 65 while (__low < __high 66 && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0) 67 ++__low; 68 return __low; 69 } -
libstdc++-v3/config/os/uclibc/ctype_noninline.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.1.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h
old new 1 // Locale support -*- C++ -*- 2 3 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 4 // Free Software Foundation, Inc. 5 // 6 // This file is part of the GNU ISO C++ Library. This library is free 7 // software; you can redistribute it and/or modify it under the 8 // terms of the GNU General Public License as published by the 9 // Free Software Foundation; either version 2, or (at your option) 10 // any later version. 11 12 // This library is distributed in the hope that it will be useful, 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 // GNU General Public License for more details. 16 17 // You should have received a copy of the GNU General Public License along 18 // with this library; see the file COPYING. If not, write to the Free 19 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20 // USA. 21 22 // As a special exception, you may use this file as part of a free software 23 // library without restriction. Specifically, if other files instantiate 24 // templates or use macros or inline functions from this file, or you compile 25 // this file and link it with other files to produce an executable, this 26 // file does not by itself cause the resulting executable to be covered by 27 // the GNU General Public License. This exception does not however 28 // invalidate any other reasons why the executable file might be covered by 29 // the GNU General Public License. 30 31 // 32 // ISO C++ 14882: 22.1 Locales 33 // 34 35 // Information as gleaned from /usr/include/ctype.h 36 37 const ctype_base::mask* 38 ctype<char>::classic_table() throw() 39 { return __C_ctype_b; } 40 41 ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 42 size_t __refs) 43 : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 44 _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) 45 { 46 _M_toupper = __C_ctype_toupper; 47 _M_tolower = __C_ctype_tolower; 48 _M_table = __table ? __table : __C_ctype_b; 49 memset(_M_widen, 0, sizeof(_M_widen)); 50 memset(_M_narrow, 0, sizeof(_M_narrow)); 51 } 52 53 ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) 54 : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 55 _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) 56 { 57 _M_toupper = __C_ctype_toupper; 58 _M_tolower = __C_ctype_tolower; 59 _M_table = __table ? __table : __C_ctype_b; 60 memset(_M_widen, 0, sizeof(_M_widen)); 61 memset(_M_narrow, 0, sizeof(_M_narrow)); 62 } 63 64 char 65 ctype<char>::do_toupper(char __c) const 66 { return _M_toupper[static_cast<unsigned char>(__c)]; } 67 68 const char* 69 ctype<char>::do_toupper(char* __low, const char* __high) const 70 { 71 while (__low < __high) 72 { 73 *__low = _M_toupper[static_cast<unsigned char>(*__low)]; 74 ++__low; 75 } 76 return __high; 77 } 78 79 char 80 ctype<char>::do_tolower(char __c) const 81 { return _M_tolower[static_cast<unsigned char>(__c)]; } 82 83 const char* 84 ctype<char>::do_tolower(char* __low, const char* __high) const 85 { 86 while (__low < __high) 87 { 88 *__low = _M_tolower[static_cast<unsigned char>(*__low)]; 89 ++__low; 90 } 91 return __high; 92 } -
libstdc++-v3/config/os/uclibc/os_defines.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.1.2/libstdc++-v3/config/os/uclibc/os_defines.h
old new 1 // Specific definitions for GNU/Linux -*- C++ -*- 2 3 // Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 2, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // You should have received a copy of the GNU General Public License along 17 // with this library; see the file COPYING. If not, write to the Free 18 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 19 // USA. 20 21 // As a special exception, you may use this file as part of a free software 22 // library without restriction. Specifically, if other files instantiate 23 // templates or use macros or inline functions from this file, or you compile 24 // this file and link it with other files to produce an executable, this 25 // file does not by itself cause the resulting executable to be covered by 26 // the GNU General Public License. This exception does not however 27 // invalidate any other reasons why the executable file might be covered by 28 // the GNU General Public License. 29 30 #ifndef _GLIBCXX_OS_DEFINES 31 #define _GLIBCXX_OS_DEFINES 1 32 33 // System-specific #define, typedefs, corrections, etc, go here. This 34 // file will come before all others. 35 36 // This keeps isanum, et al from being propagated as macros. 37 #define __NO_CTYPE 1 38 39 #include <features.h> 40 41 // We must not see the optimized string functions GNU libc defines. 42 #define __NO_STRING_INLINES 43 44 #endif -
libstdc++-v3/configure
diff -Naur gcc-4.1.2.orig/libstdc++-v3/configure gcc-4.1.2/libstdc++-v3/configure
old new 4005 4005 lt_cv_deplibs_check_method=pass_all 4006 4006 ;; 4007 4007 4008 linux-uclibc*) 4009 lt_cv_deplibs_check_method=pass_all 4010 lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` 4011 ;; 4012 4008 4013 netbsd* | knetbsd*-gnu) 4009 4014 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then 4010 4015 lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' … … 5740 5745 enableval="$enable_clocale" 5741 5746 5742 5747 case "$enableval" in 5743 generic|gnu|ieee_1003.1-2001| yes|no|auto) ;;5748 generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;; 5744 5749 *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5 5745 5750 echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;} 5746 5751 { (exit 1); exit 1; }; } ;; … … 5765 5770 # Default to "generic". 5766 5771 if test $enable_clocale_flag = auto; then 5767 5772 case ${target_os} in 5773 linux-uclibc*) 5774 enable_clocale_flag=uclibc 5775 ;; 5768 5776 linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) 5769 5777 cat >conftest.$ac_ext <<_ACEOF 5770 5778 /* confdefs.h. */ … … 5995 6003 CTIME_CC=config/locale/generic/time_members.cc 5996 6004 CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h 5997 6005 ;; 6006 uclibc) 6007 echo "$as_me:$LINENO: result: uclibc" >&5 6008 echo "${ECHO_T}uclibc" >&6 6009 6010 # Declare intention to use gettext, and add support for specific 6011 # languages. 6012 # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT 6013 ALL_LINGUAS="de fr" 6014 6015 # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. 6016 # Extract the first word of "msgfmt", so it can be a program name with args. 6017 set dummy msgfmt; ac_word=$2 6018 echo "$as_me:$LINENO: checking for $ac_word" >&5 6019 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 6020 if test "${ac_cv_prog_check_msgfmt+set}" = set; then 6021 echo $ECHO_N "(cached) $ECHO_C" >&6 6022 else 6023 if test -n "$check_msgfmt"; then 6024 ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. 6025 else 6026 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 6027 for as_dir in $PATH 6028 do 6029 IFS=$as_save_IFS 6030 test -z "$as_dir" && as_dir=. 6031 for ac_exec_ext in '' $ac_executable_extensions; do 6032 if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 6033 ac_cv_prog_check_msgfmt="yes" 6034 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 6035 break 2 6036 fi 6037 done 6038 done 6039 6040 test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" 6041 fi 6042 fi 6043 check_msgfmt=$ac_cv_prog_check_msgfmt 6044 if test -n "$check_msgfmt"; then 6045 echo "$as_me:$LINENO: result: $check_msgfmt" >&5 6046 echo "${ECHO_T}$check_msgfmt" >&6 6047 else 6048 echo "$as_me:$LINENO: result: no" >&5 6049 echo "${ECHO_T}no" >&6 6050 fi 6051 6052 if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then 6053 USE_NLS=yes 6054 fi 6055 # Export the build objects. 6056 for ling in $ALL_LINGUAS; do \ 6057 glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ 6058 glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ 6059 done 6060 6061 6062 6063 CLOCALE_H=config/locale/uclibc/c_locale.h 6064 CLOCALE_CC=config/locale/uclibc/c_locale.cc 6065 CCODECVT_CC=config/locale/uclibc/codecvt_members.cc 6066 CCOLLATE_CC=config/locale/uclibc/collate_members.cc 6067 CCTYPE_CC=config/locale/uclibc/ctype_members.cc 6068 CMESSAGES_H=config/locale/uclibc/messages_members.h 6069 CMESSAGES_CC=config/locale/uclibc/messages_members.cc 6070 CMONEY_CC=config/locale/uclibc/monetary_members.cc 6071 CNUMERIC_CC=config/locale/uclibc/numeric_members.cc 6072 CTIME_H=config/locale/uclibc/time_members.h 6073 CTIME_CC=config/locale/uclibc/time_members.cc 6074 CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h 6075 ;; 5998 6076 esac 5999 6077 6000 6078 # This is where the testsuite looks for locale catalogs, using the … … 7246 7324 cat >>conftest.$ac_ext <<_ACEOF 7247 7325 /* end confdefs.h. */ 7248 7326 #include <complex.h> 7327 #ifdef __UCLIBC__ 7328 #error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs 7329 #endif 7249 7330 int 7250 7331 main () 7251 7332 { -
libstdc++-v3/configure.host
diff -Naur gcc-4.1.2.orig/libstdc++-v3/configure.host gcc-4.1.2/libstdc++-v3/configure.host
old new 270 270 ;; 271 271 esac 272 272 273 # Override for uClibc since linux-uclibc gets mishandled above. 274 case "${host_os}" in 275 *-uclibc*) 276 os_include_dir="os/uclibc" 277 ;; 278 esac 273 279 274 280 # Set any OS-dependent and CPU-dependent bits. 275 281 # THIS TABLE IS SORTED. KEEP IT THAT WAY. -
libstdc++-v3/crossconfig.m4
diff -Naur gcc-4.1.2.orig/libstdc++-v3/crossconfig.m4 gcc-4.1.2/libstdc++-v3/crossconfig.m4
old new 143 143 ;; 144 144 esac 145 145 ;; 146 *-uclibc*) 147 # Temporary hack until we implement the float versions of the libm funcs 148 AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ 149 machine/endian.h machine/param.h sys/machine.h sys/types.h \ 150 fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) 151 SECTION_FLAGS='-ffunction-sections -fdata-sections' 152 AC_SUBST(SECTION_FLAGS) 153 GLIBCXX_CHECK_LINKER_FEATURES 154 GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT 155 GLIBCXX_CHECK_WCHAR_T_SUPPORT 156 157 # For LFS. 158 AC_DEFINE(HAVE_INT64_T) 159 case "$target" in 160 *-uclinux*) 161 # Don't enable LFS with uClinux 162 ;; 163 *) 164 AC_DEFINE(_GLIBCXX_USE_LFS) 165 esac 166 167 # For showmanyc_helper(). 168 AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) 169 GLIBCXX_CHECK_POLL 170 GLIBCXX_CHECK_S_ISREG_OR_S_IFREG 171 172 # For xsputn_2(). 173 AC_CHECK_HEADERS(sys/uio.h) 174 GLIBCXX_CHECK_WRITEV 175 176 # AC_DEFINE(HAVE_ACOSF) 177 # AC_DEFINE(HAVE_ASINF) 178 # AC_DEFINE(HAVE_ATANF) 179 # AC_DEFINE(HAVE_ATAN2F) 180 AC_DEFINE(HAVE_CEILF) 181 AC_DEFINE(HAVE_COPYSIGN) 182 # AC_DEFINE(HAVE_COPYSIGNF) 183 # AC_DEFINE(HAVE_COSF) 184 # AC_DEFINE(HAVE_COSHF) 185 # AC_DEFINE(HAVE_EXPF) 186 # AC_DEFINE(HAVE_FABSF) 187 AC_DEFINE(HAVE_FINITE) 188 AC_DEFINE(HAVE_FINITEF) 189 AC_DEFINE(HAVE_FLOORF) 190 # AC_DEFINE(HAVE_FMODF) 191 # AC_DEFINE(HAVE_FREXPF) 192 AC_DEFINE(HAVE_HYPOT) 193 # AC_DEFINE(HAVE_HYPOTF) 194 AC_DEFINE(HAVE_ISINF) 195 AC_DEFINE(HAVE_ISINFF) 196 AC_DEFINE(HAVE_ISNAN) 197 AC_DEFINE(HAVE_ISNANF) 198 # AC_DEFINE(HAVE_LOGF) 199 # AC_DEFINE(HAVE_LOG10F) 200 # AC_DEFINE(HAVE_MODFF) 201 # AC_DEFINE(HAVE_SINF) 202 # AC_DEFINE(HAVE_SINHF) 203 # AC_DEFINE(HAVE_SINCOS) 204 # AC_DEFINE(HAVE_SINCOSF) 205 AC_DEFINE(HAVE_SQRTF) 206 # AC_DEFINE(HAVE_TANF) 207 # AC_DEFINE(HAVE_TANHF) 208 if test x"long_double_math_on_this_cpu" = x"yes"; then 209 AC_MSG_ERROR([long_double_math_on_this_cpu is yes!]) 210 # AC_DEFINE(HAVE_ACOSL) 211 # AC_DEFINE(HAVE_ASINL) 212 # AC_DEFINE(HAVE_ATANL) 213 # AC_DEFINE(HAVE_ATAN2L) 214 # AC_DEFINE(HAVE_CEILL) 215 # AC_DEFINE(HAVE_COPYSIGNL) 216 # AC_DEFINE(HAVE_COSL) 217 # AC_DEFINE(HAVE_COSHL) 218 # AC_DEFINE(HAVE_EXPL) 219 # AC_DEFINE(HAVE_FABSL) 220 # AC_DEFINE(HAVE_FINITEL) 221 # AC_DEFINE(HAVE_FLOORL) 222 # AC_DEFINE(HAVE_FMODL) 223 # AC_DEFINE(HAVE_FREXPL) 224 # AC_DEFINE(HAVE_HYPOTL) 225 # AC_DEFINE(HAVE_ISINFL) 226 # AC_DEFINE(HAVE_ISNANL) 227 # AC_DEFINE(HAVE_LOGL) 228 # AC_DEFINE(HAVE_LOG10L) 229 # AC_DEFINE(HAVE_MODFL) 230 # AC_DEFINE(HAVE_POWL) 231 # AC_DEFINE(HAVE_SINL) 232 # AC_DEFINE(HAVE_SINHL) 233 # AC_DEFINE(HAVE_SINCOSL) 234 # AC_DEFINE(HAVE_SQRTL) 235 # AC_DEFINE(HAVE_TANL) 236 # AC_DEFINE(HAVE_TANHL) 237 fi 238 ;; 146 239 *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) 147 240 AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ 148 241 machine/endian.h machine/param.h sys/machine.h sys/types.h \ … … 157 250 AC_DEFINE(HAVE_INT64_T) 158 251 case "$target" in 159 252 *-uclinux*) 160 # Don't enable LFS with uCli bc253 # Don't enable LFS with uClinux 161 254 ;; 162 255 *) 163 256 AC_DEFINE(_GLIBCXX_USE_LFS) -
libstdc++-v3/include/c_compatibility/wchar.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.1.2/libstdc++-v3/include/c_compatibility/wchar.h
old new 101 101 using std::wmemcpy; 102 102 using std::wmemmove; 103 103 using std::wmemset; 104 #if _GLIBCXX_HAVE_WCSFTIME 104 105 using std::wcsftime; 106 #endif 105 107 106 108 #if _GLIBCXX_USE_C99 107 109 using std::wcstold; -
libstdc++-v3/include/c_std/std_cstdio.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/include/c_std/std_cstdio.h gcc-4.1.2/libstdc++-v3/include/c_std/std_cstdio.h
old new 143 143 using ::vsprintf; 144 144 } 145 145 146 #if _GLIBCXX_USE_C99 146 #if _GLIBCXX_USE_C99 || defined(__UCLIBC__) 147 147 148 148 #undef snprintf 149 149 #undef vfscanf -
libstdc++-v3/include/c_std/std_cwchar.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.1.2/libstdc++-v3/include/c_std/std_cwchar.h
old new 180 180 using ::wcscoll; 181 181 using ::wcscpy; 182 182 using ::wcscspn; 183 #if _GLIBCXX_HAVE_WCSFTIME 183 184 using ::wcsftime; 185 #endif 184 186 using ::wcslen; 185 187 using ::wcsncat; 186 188 using ::wcsncmp; -
libstdc++-v3/include/ext/rope
diff -Naur gcc-4.1.2.orig/libstdc++-v3/include/ext/rope gcc-4.1.2/libstdc++-v3/include/ext/rope
old new 57 57 #include <bits/allocator.h> 58 58 #include <ext/hash_fun.h> 59 59 60 /* cope w/ index defined as macro, SuSv3 proposal */ 61 #undef index 62 60 63 # ifdef __GC 61 64 # define __GC_CONST const 62 65 # else -
libstdc++-v3/include/ext/ropeimpl.h
diff -Naur gcc-4.1.2.orig/libstdc++-v3/include/ext/ropeimpl.h gcc-4.1.2/libstdc++-v3/include/ext/ropeimpl.h
old new 53 53 #include <ext/memory> // For uninitialized_copy_n 54 54 #include <ext/numeric> // For power 55 55 56 /* cope w/ index defined as macro, SuSv3 proposal */ 57 #undef index 58 56 59 namespace __gnu_cxx 57 60 { 58 61 using std::size_t; -
libstdc++-v3/src/Makefile.am
diff -Naur gcc-4.1.2.orig/libstdc++-v3/src/Makefile.am gcc-4.1.2/libstdc++-v3/src/Makefile.am
old new 234 234 $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ 235 235 236 236 237 install-exec-local: 238 ifeq ($(enable_shared),yes) 239 $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o 240 $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) 241 endif 242 237 243 # Added bits to build debug library. 238 244 if GLIBCXX_BUILD_DEBUG 239 245 all-local: build_debug -
libstdc++-v3/src/Makefile.in
diff -Naur gcc-4.1.2.orig/libstdc++-v3/src/Makefile.in gcc-4.1.2/libstdc++-v3/src/Makefile.in
old new 627 627 628 628 install-data-am: install-data-local 629 629 630 install-exec-am: install-toolexeclibLTLIBRARIES 630 install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local 631 631 632 632 install-info: install-info-am 633 633 … … 660 660 distclean-libtool distclean-tags distdir dvi dvi-am html \ 661 661 html-am info info-am install install-am install-data \ 662 662 install-data-am install-data-local install-exec \ 663 install-exec-local \ 663 664 install-exec-am install-info install-info-am install-man \ 664 665 install-strip install-toolexeclibLTLIBRARIES installcheck \ 665 666 installcheck-am installdirs maintainer-clean \ … … 760 761 install_debug: 761 762 (cd ${debugdir} && $(MAKE) \ 762 763 toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) 764 765 install-exec-local: 766 ifeq ($(enable_shared),yes) 767 $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o 768 $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) 769 endif 770 763 771 # Tell versions [3.59,3.63) of GNU make to not export all variables. 764 772 # Otherwise a system limit (for SysV at least) may be exceeded. 765 773 .NOEXPORT: -
libtool.m4
diff -Naur gcc-4.1.2.orig/libtool.m4 gcc-4.1.2/libtool.m4
old new 743 743 lt_cv_deplibs_check_method=pass_all 744 744 ;; 745 745 746 linux-uclibc*) 747 lt_cv_deplibs_check_method=pass_all 748 lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` 749 ;; 750 746 751 netbsd* | knetbsd*-gnu) 747 752 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then 748 753 [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] -
ltconfig
diff -Naur gcc-4.1.2.orig/ltconfig gcc-4.1.2/ltconfig
old new 603 603 604 604 # Transform linux* to *-*-linux-gnu*, to support old configure scripts. 605 605 case $host_os in 606 linux-uclibc*) ;; 606 607 linux-gnu*) ;; 607 608 linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` 608 609 esac … … 1274 1275 dynamic_linker='GNU/Linux ld.so' 1275 1276 ;; 1276 1277 1278 linux-uclibc*) 1279 version_type=linux 1280 need_lib_prefix=no 1281 need_version=no 1282 library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' 1283 soname_spec='${libname}${release}.so$major' 1284 finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' 1285 shlibpath_var=LD_LIBRARY_PATH 1286 shlibpath_overrides_runpath=no 1287 # This implies no fast_install, which is unacceptable. 1288 # Some rework will be needed to allow for fast_install 1289 # before this can be enabled. 1290 hardcode_into_libs=yes 1291 # Assume using the uClibc dynamic linker. 1292 dynamic_linker="uClibc ld.so" 1293 ;; 1294 1277 1295 netbsd*) 1278 1296 need_lib_prefix=no 1279 1297 need_version=no -
zlib/configure
diff -Naur gcc-4.1.2.orig/zlib/configure gcc-4.1.2/zlib/configure
old new 3426 3426 lt_cv_deplibs_check_method=pass_all 3427 3427 ;; 3428 3428 3429 linux-uclibc*) 3430 lt_cv_deplibs_check_method=pass_all 3431 lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` 3432 ;; 3433 3429 3434 netbsd* | knetbsd*-gnu) 3430 3435 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then 3431 3436 lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Note:
See TracBrowser
for help on using the repository browser.