From b2f192faabe412adce79534e22efe9fb69ee40e2 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 21 Jul 2006 10:10:31 +0000 Subject: Rename /openembedded/ -> /meta/ git-svn-id: https://svn.o-hand.com/repos/poky/trunk@530 311d38ba-8fff-0310-9ca6-ca027cbcb966 --- .../packages/gcc/gcc-3.3.4/arm-gotoff.dpatch | 135 - .../packages/gcc/gcc-3.3.4/arm-ldm-peephole.patch | 91 - openembedded/packages/gcc/gcc-3.3.4/arm-ldm.dpatch | 148 - openembedded/packages/gcc/gcc-3.3.4/arm-tune.patch | 9 - openembedded/packages/gcc/gcc-3.3.4/bash3.patch | 20 - .../gcc/gcc-3.3.4/gcc-uclibc-3.3-100-conf.patch | 1593 ---------- .../gcc/gcc-3.3.4/gcc-uclibc-3.3-110-conf.patch | 55 - .../gcc-3.3.4/gcc-uclibc-3.3-120-softfloat.patch | 14 - .../gcc/gcc-3.3.4/gcc-uclibc-3.3-200-code.patch | 3021 ------------------ .../packages/gcc/gcc-3.3.4/gcc34-15089.patch | 19 - .../gcc/gcc-3.3.4/libibery-crosstool.patch | 683 ---- .../packages/gcc/gcc-3.3.4/reverse-compare.patch | 31 - .../gcc/gcc-3.3.4/sdk-libstdc++-includes.patch | 48 - openembedded/packages/gcc/gcc-3.4.3/15342.patch | 22 - .../gcc/gcc-3.4.3/GCC3.4.0VisibilityPatch.diff | 1100 ------- .../packages/gcc/gcc-3.4.3/always-fixincperm.patch | 32 - .../gcc-3.4.3/gcc-3.4.0-arm-bigendian-uclibc.patch | 30 - .../gcc/gcc-3.4.3/gcc-3.4.0-arm-bigendian.patch | 70 - .../gcc/gcc-3.4.3/gcc-3.4.0-arm-lib1asm.patch | 24 - .../gcc/gcc-3.4.3/gcc-3.4.0-arm-nolibfloat.patch | 24 - .../gcc/gcc-3.4.3/gcc-3.4.0-arm-softfloat.patch | 256 -- .../gcc/gcc-3.4.3/gcc-3.4.1-uclibc-100-conf.patch | 442 --- .../gcc-3.4.3/gcc-3.4.1-uclibc-200-locale.patch | 3246 -------------------- .../gcc-3.4.3/gcc-uclibc-3.4.0-120-softfloat.patch | 14 - .../gcc/gcc-3.4.3/gcc34-arm-ldm-peephole.patch | 79 - .../packages/gcc/gcc-3.4.3/gcc34-arm-ldm.patch | 119 - .../packages/gcc/gcc-3.4.3/gcc34-arm-tune.patch | 9 - .../gcc/gcc-3.4.3/gcc34-reverse-compare.patch | 32 - .../gcc/gcc-3.4.3/sdk-libstdc++-includes.patch | 22 - openembedded/packages/gcc/gcc-3.4.4/15342.patch | 22 - .../gcc/gcc-3.4.4/GCC3.4.0VisibilityPatch.diff | 1100 ------- .../packages/gcc/gcc-3.4.4/always-fixincperm.patch | 32 - .../gcc-3.4.4/gcc-3.4.0-arm-bigendian-uclibc.patch | 30 - .../gcc/gcc-3.4.4/gcc-3.4.0-arm-bigendian.patch | 70 - .../gcc/gcc-3.4.4/gcc-3.4.0-arm-lib1asm.patch | 24 - .../gcc/gcc-3.4.4/gcc-3.4.0-arm-nolibfloat.patch | 24 - .../gcc/gcc-3.4.4/gcc-3.4.0-arm-softfloat.patch | 256 -- .../gcc/gcc-3.4.4/gcc-3.4.1-uclibc-100-conf.patch | 442 --- .../gcc-3.4.4/gcc-3.4.1-uclibc-200-locale.patch | 3246 -------------------- .../gcc-3.4.4/gcc-uclibc-3.4.0-120-softfloat.patch | 14 - .../gcc/gcc-3.4.4/gcc34-arm-ldm-peephole.patch | 79 - .../packages/gcc/gcc-3.4.4/gcc34-arm-ldm.patch | 119 - .../packages/gcc/gcc-3.4.4/gcc34-arm-tune.patch | 9 - .../gcc/gcc-3.4.4/gcc34-configure.in.patch | 22 - .../gcc/gcc-3.4.4/gcc34-reverse-compare.patch | 32 - .../gcc/gcc-3.4.4/gcc34-thumb-support.patch | 156 - .../gcc/gcc-3.4.4/sdk-libstdc++-includes.patch | 22 - .../packages/gcc/gcc-4.0.2/100-uclibc-conf.patch | 556 ---- .../packages/gcc/gcc-4.0.2/200-uclibc-locale.patch | 3240 ------------------- .../gcc/gcc-4.0.2/301-missing-execinfo_h.patch | 14 - .../packages/gcc/gcc-4.0.2/302-c99-snprintf.patch | 14 - .../gcc/gcc-4.0.2/303-c99-complex-ugly-hack.patch | 15 - .../packages/gcc/gcc-4.0.2/800-arm-bigendian.patch | 70 - .../packages/gcc/gcc-4.0.2/arm-nolibfloat.patch | 24 - .../packages/gcc/gcc-4.0.2/arm-softfloat.patch | 16 - openembedded/packages/gcc/gcc-4.0.2/ldflags.patch | 22 - .../gcc/gcc-4.0.2/zecke-host-cpp-ac-hack.patch | 140 - .../packages/gcc/gcc-cross-initial_3.3.4.bb | 28 - .../packages/gcc/gcc-cross-initial_3.4.3.bb | 28 - .../packages/gcc/gcc-cross-initial_3.4.4.bb | 28 - .../packages/gcc/gcc-cross-initial_4.0.2.bb | 29 - .../gcc/gcc-cross-initial_csl-arm-2005q3.bb | 28 - openembedded/packages/gcc/gcc-cross_3.3.4.bb | 13 - openembedded/packages/gcc/gcc-cross_3.4.3.bb | 16 - openembedded/packages/gcc/gcc-cross_3.4.4.bb | 16 - openembedded/packages/gcc/gcc-cross_4.0.2.bb | 16 - .../packages/gcc/gcc-cross_csl-arm-2005q3.bb | 15 - openembedded/packages/gcc/gcc-csl-arm/15342.patch | 22 - .../gcc/gcc-csl-arm/gcc-3.4.0-arm-lib1asm.patch | 24 - .../packages/gcc/gcc-csl-arm/gcc34-arm-tune.patch | 9 - .../packages/gcc/gcc-csl-arm/gcc_optab_arm.patch | 95 - .../packages/gcc/gcc-csl-arm/no-libfloat.patch | 11 - .../packages/gcc/gcc-csl-arm/pic-without-sl.patch | 303 -- openembedded/packages/gcc/gcc-package-cross.inc | 77 - openembedded/packages/gcc/gcc-package.inc | 111 - openembedded/packages/gcc/gcc-paths-cross.inc | 7 - openembedded/packages/gcc/gcc3-build-cross.inc | 47 - openembedded/packages/gcc/gcc3-build.inc | 95 - openembedded/packages/gcc/gcc4-build.inc | 6 - openembedded/packages/gcc/gcc_3.3.4.bb | 176 -- openembedded/packages/gcc/gcc_3.4.3.bb | 27 - openembedded/packages/gcc/gcc_3.4.4.bb | 30 - openembedded/packages/gcc/gcc_4.0.2.bb | 28 - openembedded/packages/gcc/gcc_csl-arm-2005q3.bb | 27 - 84 files changed, 22510 deletions(-) delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/arm-gotoff.dpatch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/arm-ldm-peephole.patch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/arm-ldm.dpatch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/arm-tune.patch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/bash3.patch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-100-conf.patch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-110-conf.patch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-120-softfloat.patch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-200-code.patch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/gcc34-15089.patch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/libibery-crosstool.patch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/reverse-compare.patch delete mode 100644 openembedded/packages/gcc/gcc-3.3.4/sdk-libstdc++-includes.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/15342.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/GCC3.4.0VisibilityPatch.diff delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/always-fixincperm.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-bigendian-uclibc.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-bigendian.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-lib1asm.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-nolibfloat.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-softfloat.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.1-uclibc-100-conf.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.1-uclibc-200-locale.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc-uclibc-3.4.0-120-softfloat.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-ldm-peephole.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-ldm.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-tune.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/gcc34-reverse-compare.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.3/sdk-libstdc++-includes.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/15342.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/GCC3.4.0VisibilityPatch.diff delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/always-fixincperm.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-bigendian-uclibc.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-bigendian.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-lib1asm.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-nolibfloat.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-softfloat.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.1-uclibc-100-conf.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.1-uclibc-200-locale.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc-uclibc-3.4.0-120-softfloat.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-ldm-peephole.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-ldm.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-tune.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc34-configure.in.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc34-reverse-compare.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/gcc34-thumb-support.patch delete mode 100644 openembedded/packages/gcc/gcc-3.4.4/sdk-libstdc++-includes.patch delete mode 100644 openembedded/packages/gcc/gcc-4.0.2/100-uclibc-conf.patch delete mode 100644 openembedded/packages/gcc/gcc-4.0.2/200-uclibc-locale.patch delete mode 100644 openembedded/packages/gcc/gcc-4.0.2/301-missing-execinfo_h.patch delete mode 100644 openembedded/packages/gcc/gcc-4.0.2/302-c99-snprintf.patch delete mode 100644 openembedded/packages/gcc/gcc-4.0.2/303-c99-complex-ugly-hack.patch delete mode 100644 openembedded/packages/gcc/gcc-4.0.2/800-arm-bigendian.patch delete mode 100644 openembedded/packages/gcc/gcc-4.0.2/arm-nolibfloat.patch delete mode 100644 openembedded/packages/gcc/gcc-4.0.2/arm-softfloat.patch delete mode 100644 openembedded/packages/gcc/gcc-4.0.2/ldflags.patch delete mode 100644 openembedded/packages/gcc/gcc-4.0.2/zecke-host-cpp-ac-hack.patch delete mode 100644 openembedded/packages/gcc/gcc-cross-initial_3.3.4.bb delete mode 100644 openembedded/packages/gcc/gcc-cross-initial_3.4.3.bb delete mode 100644 openembedded/packages/gcc/gcc-cross-initial_3.4.4.bb delete mode 100644 openembedded/packages/gcc/gcc-cross-initial_4.0.2.bb delete mode 100644 openembedded/packages/gcc/gcc-cross-initial_csl-arm-2005q3.bb delete mode 100644 openembedded/packages/gcc/gcc-cross_3.3.4.bb delete mode 100644 openembedded/packages/gcc/gcc-cross_3.4.3.bb delete mode 100644 openembedded/packages/gcc/gcc-cross_3.4.4.bb delete mode 100644 openembedded/packages/gcc/gcc-cross_4.0.2.bb delete mode 100644 openembedded/packages/gcc/gcc-cross_csl-arm-2005q3.bb delete mode 100644 openembedded/packages/gcc/gcc-csl-arm/15342.patch delete mode 100644 openembedded/packages/gcc/gcc-csl-arm/gcc-3.4.0-arm-lib1asm.patch delete mode 100644 openembedded/packages/gcc/gcc-csl-arm/gcc34-arm-tune.patch delete mode 100644 openembedded/packages/gcc/gcc-csl-arm/gcc_optab_arm.patch delete mode 100644 openembedded/packages/gcc/gcc-csl-arm/no-libfloat.patch delete mode 100644 openembedded/packages/gcc/gcc-csl-arm/pic-without-sl.patch delete mode 100644 openembedded/packages/gcc/gcc-package-cross.inc delete mode 100644 openembedded/packages/gcc/gcc-package.inc delete mode 100644 openembedded/packages/gcc/gcc-paths-cross.inc delete mode 100644 openembedded/packages/gcc/gcc3-build-cross.inc delete mode 100644 openembedded/packages/gcc/gcc3-build.inc delete mode 100644 openembedded/packages/gcc/gcc4-build.inc delete mode 100644 openembedded/packages/gcc/gcc_3.3.4.bb delete mode 100644 openembedded/packages/gcc/gcc_3.4.3.bb delete mode 100644 openembedded/packages/gcc/gcc_3.4.4.bb delete mode 100644 openembedded/packages/gcc/gcc_4.0.2.bb delete mode 100644 openembedded/packages/gcc/gcc_csl-arm-2005q3.bb (limited to 'openembedded/packages/gcc') diff --git a/openembedded/packages/gcc/gcc-3.3.4/arm-gotoff.dpatch b/openembedded/packages/gcc/gcc-3.3.4/arm-gotoff.dpatch deleted file mode 100644 index 610f9430e..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/arm-gotoff.dpatch +++ /dev/null @@ -1,135 +0,0 @@ -#! /bin/sh -e - -src=gcc -if [ $# -eq 3 -a "$2" = '-d' ]; then - pdir="-d $3" - src=$3/gcc -elif [ $# -ne 1 ]; then - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -fi -case "$1" in - -patch) - patch $pdir -f --no-backup-if-mismatch -p0 --fuzz 10 < $0 - ;; - -unpatch) - patch $pdir -f --no-backup-if-mismatch -R -p0 --fuzz 10 < $0 - ;; - *) - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -esac -exit 0 - -# DP: use GOTOFF not GOT relocs for .LCn and other local symbols; -# DP: don't use gotoff for non-static functions, even if defined locally - ---- gcc/config/arm/arm.c 2003-06-14 15:20:53.000000000 +0100 -+++ gcc/config/arm/arm.c 2004-03-06 15:15:32.000000000 +0000 -@@ -2364,6 +2394,40 @@ - return 1; - } - -+/* Return true if OP is a symbolic operand that resolves locally. */ -+ -+static int -+local_symbolic_operand (op, mode) -+ rtx op; -+ enum machine_mode mode ATTRIBUTE_UNUSED; -+{ -+ if (GET_CODE (op) == CONST -+ && GET_CODE (XEXP (op, 0)) == PLUS -+ && GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT) -+ op = XEXP (XEXP (op, 0), 0); -+ -+ if (GET_CODE (op) == LABEL_REF) -+ return 1; -+ -+ if (GET_CODE (op) != SYMBOL_REF) -+ return 0; -+ -+ /* These we've been told are local by varasm and encode_section_info -+ respectively. */ -+ if (CONSTANT_POOL_ADDRESS_P (op) || ENCODED_LOCAL_BINDING_ATTR_P (XSTR (op, 0))) -+ return 1; -+ -+ /* There is, however, a not insubstantial body of code in the rest of -+ the compiler that assumes it can just stick the results of -+ ASM_GENERATE_INTERNAL_LABEL in a symbol_ref and have done. */ -+ /* ??? This is a hack. Should update the body of the compiler to -+ always create a DECL an invoke targetm.encode_section_info. */ -+ if (strncmp (arm_strip_name_encoding (XSTR (op, 0)), ".L", 2) == 0) -+ return 1; -+ -+ return 0; -+} -+ - rtx - legitimize_pic_address (orig, mode, reg) - rtx orig; -@@ -2404,10 +2468,7 @@ - else - emit_insn (gen_pic_load_addr_thumb (address, orig)); - -- if ((GET_CODE (orig) == LABEL_REF -- || (GET_CODE (orig) == SYMBOL_REF && -- ENCODED_SHORT_CALL_ATTR_P (XSTR (orig, 0)))) -- && NEED_GOT_RELOC) -+ if (local_symbolic_operand (orig, Pmode) && NEED_GOT_RELOC) - pic_ref = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, address); - else - { -@@ -8804,11 +8911,7 @@ - if (NEED_GOT_RELOC && flag_pic && making_const_table && - (GET_CODE (x) == SYMBOL_REF || GET_CODE (x) == LABEL_REF)) - { -- if (GET_CODE (x) == SYMBOL_REF -- && (CONSTANT_POOL_ADDRESS_P (x) -- || ENCODED_SHORT_CALL_ATTR_P (XSTR (x, 0)))) -- fputs ("(GOTOFF)", asm_out_file); -- else if (GET_CODE (x) == LABEL_REF) -+ if (local_symbolic_operand (x, Pmode)) - fputs ("(GOTOFF)", asm_out_file); - else - fputs ("(GOT)", asm_out_file); -@@ -11335,6 +11418,11 @@ - else if (! TREE_PUBLIC (decl)) - arm_encode_call_attribute (decl, SHORT_CALL_FLAG_CHAR); - } -+ -+ if (TREE_CODE_CLASS (TREE_CODE (decl)) == 'd' -+ && flag_pic -+ && (*targetm.binds_local_p) (decl)) -+ arm_encode_call_attribute (decl, LOCAL_BINDING_FLAG_CHAR); - } - #endif /* !ARM_PE */ - - ---- gcc/config/arm/arm.h Fri Mar 5 18:49:44 2004 -+++ gcc/config/arm/arm.h Fri Mar 5 15:04:31 2004 -@@ -1870,6 +1870,7 @@ - Note, '@' and '*' have already been taken. */ - #define SHORT_CALL_FLAG_CHAR '^' - #define LONG_CALL_FLAG_CHAR '#' -+#define LOCAL_BINDING_FLAG_CHAR '%' - - #define ENCODED_SHORT_CALL_ATTR_P(SYMBOL_NAME) \ - (*(SYMBOL_NAME) == SHORT_CALL_FLAG_CHAR) -@@ -1877,6 +1878,9 @@ - #define ENCODED_LONG_CALL_ATTR_P(SYMBOL_NAME) \ - (*(SYMBOL_NAME) == LONG_CALL_FLAG_CHAR) - -+#define ENCODED_LOCAL_BINDING_ATTR_P(SYMBOL_NAME) \ -+ (*(SYMBOL_NAME) == LOCAL_BINDING_FLAG_CHAR) -+ - #ifndef SUBTARGET_NAME_ENCODING_LENGTHS - #define SUBTARGET_NAME_ENCODING_LENGTHS - #endif -@@ -1888,6 +1892,7 @@ - #define ARM_NAME_ENCODING_LENGTHS \ - case SHORT_CALL_FLAG_CHAR: return 1; \ - case LONG_CALL_FLAG_CHAR: return 1; \ -+ case LOCAL_BINDING_FLAG_CHAR: return 1; \ - case '*': return 1; \ - SUBTARGET_NAME_ENCODING_LENGTHS - diff --git a/openembedded/packages/gcc/gcc-3.3.4/arm-ldm-peephole.patch b/openembedded/packages/gcc/gcc-3.3.4/arm-ldm-peephole.patch deleted file mode 100644 index 83b07e034..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/arm-ldm-peephole.patch +++ /dev/null @@ -1,91 +0,0 @@ -2004-03-19 Philip Blundell - - * config/arm/arm.c (adjacent_mem_locations): Reject location pairs - where both offsets are nonzero if target is Harvard architecture. - (load_multiple_sequence, store_multiple_sequence): Avoid two-word - LDM/STM on XScale unless -Os. - * config/arm/arm.md (arith_adjacentmem): Inhibit if tuning for - XScale and not -Os. - * genpeep.c: Have generated code include flags.h. - ---- gcc/genpeep.c~ 2001-12-02 00:04:19.000000000 +0000 -+++ gcc/genpeep.c 2004-03-19 11:17:18.000000000 +0000 -@@ -402,6 +402,7 @@ - printf ("#include \"recog.h\"\n"); - printf ("#include \"except.h\"\n\n"); - printf ("#include \"function.h\"\n\n"); -+ printf ("#include \"flags.h\"\n\n"); - - printf ("#ifdef HAVE_peephole\n"); - printf ("extern rtx peep_operand[];\n\n"); - ---- gcc/config/arm/arm.md~ 2004-03-11 15:28:01.000000000 +0000 -+++ gcc/config/arm/arm.md 2004-03-19 13:00:03.000000000 +0000 -@@ -7958,13 +7958,16 @@ - (set_attr "length" "4,8,8")] - ) - -+; Try to convert LDR+LDR+arith into [add+]LDM+arith -+; On XScale, LDM is always slower than two LDRs, so only do this if -+; optimising for size. - (define_insn "*arith_adjacentmem" - [(set (match_operand:SI 0 "s_register_operand" "=r") - (match_operator:SI 1 "shiftable_operator" - [(match_operand:SI 2 "memory_operand" "m") - (match_operand:SI 3 "memory_operand" "m")])) - (clobber (match_scratch:SI 4 "=r"))] -- "TARGET_ARM && adjacent_mem_locations (operands[2], operands[3])" -+ "TARGET_ARM && (!arm_tune_xscale || optimize_size) && adjacent_mem_locations (operands[2], operands[3])" - "* - { - rtx ldm[3]; -@@ -7999,7 +8002,9 @@ - } - if (val1 && val2) - { -+ /* This would be a loss on a Harvard core, but adjacent_mem_locations() -+ will prevent it from happening. */ - rtx ops[3]; - ldm[0] = ops[0] = operands[4]; - ops[1] = XEXP (XEXP (operands[2], 0), 0); - ---- gcc/config/arm/arm.c~ 2004-03-11 15:28:01.000000000 +0000 -+++ gcc/config/arm/arm.c 2004-03-19 15:36:03.000000000 +0000 -@@ -3818,8 +3818,11 @@ - sequence. */ - if (!const_ok_for_op (PLUS, val0) || !const_ok_for_op (PLUS, val1)) - return 0; -- -- return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4); -+ -+ /* For Harvard cores, only accept pairs where one offset is zero. -+ See comment in load_multiple_sequence. */ -+ return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4) -+ && (!arm_ld_sched || val0 == 0 || val1 == 0); - } - return 0; - } -@@ -4075,6 +4078,11 @@ - *load_offset = unsorted_offsets[order[0]]; - } - -+ /* For XScale a two-word LDM is a performance loss, so only do this if -+ size is more important. See comments in arm_gen_load_multiple. */ -+ if (nops == 2 && arm_tune_xscale && !optimize_size) -+ return 0; -+ - if (unsorted_offsets[order[0]] == 0) - return 1; /* ldmia */ - -@@ -4307,6 +4315,11 @@ - *load_offset = unsorted_offsets[order[0]]; - } - -+ /* For XScale a two-word LDM is a performance loss, so only do this if -+ size is more important. See comments in arm_gen_load_multiple. */ -+ if (nops == 2 && arm_tune_xscale && !optimize_size) -+ return 0; -+ - if (unsorted_offsets[order[0]] == 0) - return 1; /* stmia */ - diff --git a/openembedded/packages/gcc/gcc-3.3.4/arm-ldm.dpatch b/openembedded/packages/gcc/gcc-3.3.4/arm-ldm.dpatch deleted file mode 100644 index 561624f39..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/arm-ldm.dpatch +++ /dev/null @@ -1,148 +0,0 @@ -#! /bin/sh -e - -src=gcc -if [ $# -eq 3 -a "$2" = '-d' ]; then - pdir="-d $3" - src=$3/gcc -elif [ $# -ne 1 ]; then - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -fi -case "$1" in - -patch) - patch $pdir -f --no-backup-if-mismatch -p0 --fuzz 10 < $0 - ;; - -unpatch) - patch $pdir -f --no-backup-if-mismatch -R -p0 --fuzz 10 < $0 - ;; - *) - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -esac -exit 0 - -# DP: try harder to avoid ldm in function epilogues - ---- gcc/config/arm/arm.c Fri Mar 5 18:49:42 2004 -+++ gcc/config/arm/arm.c Fri Mar 5 16:00:21 2004 -@@ -7598,6 +7629,26 @@ - return_used_this_function = 0; - } - -+/* Return the number (counting from 0) of -+ the least significant set bit in MASK. */ -+ -+#ifdef __GNUC__ -+inline -+#endif -+static int -+number_of_first_bit_set (mask) -+ int mask; -+{ -+ int bit; -+ -+ for (bit = 0; -+ (mask & (1 << bit)) == 0; -+ ++bit) -+ continue; -+ -+ return bit; -+} -+ - const char * - arm_output_epilogue (really_return) - int really_return; -@@ -7788,27 +7839,47 @@ - saved_regs_mask |= (1 << PC_REGNUM); - } - -- /* Load the registers off the stack. If we only have one register -- to load use the LDR instruction - it is faster. */ -- if (saved_regs_mask == (1 << LR_REGNUM)) -- { -- /* The exception handler ignores the LR, so we do -- not really need to load it off the stack. */ -- if (eh_ofs) -- asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM); -- else -- asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM); -- } -- else if (saved_regs_mask) -+ if (saved_regs_mask) - { -- if (saved_regs_mask & (1 << SP_REGNUM)) -- /* Note - write back to the stack register is not enabled -- (ie "ldmfd sp!..."). We know that the stack pointer is -- in the list of registers and if we add writeback the -- instruction becomes UNPREDICTABLE. */ -- print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask); -+ /* Load the registers off the stack. If we only have one register -+ to load use the LDR instruction - it is faster. */ -+ if (bit_count (saved_regs_mask) == 1) -+ { -+ int reg = number_of_first_bit_set (saved_regs_mask); -+ -+ switch (reg) -+ { -+ case SP_REGNUM: -+ /* Mustn't use base writeback when loading SP. */ -+ asm_fprintf (f, "\tldr\t%r, [%r]\n", SP_REGNUM, SP_REGNUM); -+ break; -+ -+ case LR_REGNUM: -+ if (eh_ofs) -+ { -+ /* The exception handler ignores the LR, so we do -+ not really need to load it off the stack. */ -+ asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM); -+ break; -+ } -+ /* else fall through */ -+ -+ default: -+ asm_fprintf (f, "\tldr\t%r, [%r], #4\n", reg, SP_REGNUM); -+ break; -+ } -+ } - else -- print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask); -+ { -+ if (saved_regs_mask & (1 << SP_REGNUM)) -+ /* Note - write back to the stack register is not enabled -+ (ie "ldmfd sp!..."). We know that the stack pointer is -+ in the list of registers and if we add writeback the -+ instruction becomes UNPREDICTABLE. */ -+ print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask); -+ else -+ print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask); -+ } - } - - if (current_function_pretend_args_size) -@@ -9610,26 +9677,6 @@ - } - } - --/* Return the number (counting from 0) of -- the least significant set bit in MASK. */ -- --#ifdef __GNUC__ --inline --#endif --static int --number_of_first_bit_set (mask) -- int mask; --{ -- int bit; -- -- for (bit = 0; -- (mask & (1 << bit)) == 0; -- ++bit) -- continue; -- -- return bit; --} -- - /* Generate code to return from a thumb function. - If 'reg_containing_return_addr' is -1, then the return address is - actually on the stack, at the stack pointer. */ diff --git a/openembedded/packages/gcc/gcc-3.3.4/arm-tune.patch b/openembedded/packages/gcc/gcc-3.3.4/arm-tune.patch deleted file mode 100644 index 701c99b87..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/arm-tune.patch +++ /dev/null @@ -1,9 +0,0 @@ ---- gcc/config/arm/linux-elf.h.orig 2004-03-11 14:46:33.000000000 +0000 -+++ gcc/config/arm/linux-elf.h 2004-03-11 14:48:23.000000000 +0000 -@@ -128,3 +128,6 @@ - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" -+ -+/* Tune for XScale. */ -+#define TARGET_TUNE_DEFAULT TARGET_CPU_xscale diff --git a/openembedded/packages/gcc/gcc-3.3.4/bash3.patch b/openembedded/packages/gcc/gcc-3.3.4/bash3.patch deleted file mode 100644 index 614ba50ee..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/bash3.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- gcc-3.3.4/configure.orig 2002-09-29 18:11:24.000000000 +0200 -+++ gcc-3.3.4/configure 2005-01-28 12:26:40.000000000 +0100 -@@ -697,7 +697,7 @@ - if test -f skip-this-dir; then - # Perform the same cleanup as the trap handler, minus the "exit 1" of course, - # and reset the trap handler. -- trap 0 -+ trap '' 0 - rm -rf Makefile* ${tmpdir} - # Execute the final clean-up actions - ${config_shell} skip-this-dir -@@ -1596,7 +1596,7 @@ - # Perform the same cleanup as the trap handler, minus the "exit 1" of course, - # and reset the trap handler. - rm -rf ${tmpdir} --trap 0 -+trap '' 0 - - exit 0 - diff --git a/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-100-conf.patch b/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-100-conf.patch deleted file mode 100644 index 213b4fbbd..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-100-conf.patch +++ /dev/null @@ -1,1593 +0,0 @@ -diff -urN gcc-3.3.3/boehm-gc/config.sub gcc-3.3.3-new/boehm-gc/config.sub ---- gcc-3.3.3/boehm-gc/config.sub 2002-02-11 22:37:53.000000000 -0600 -+++ gcc-3.3.3-new/boehm-gc/config.sub 2004-02-16 21:12:16.000000000 -0600 -@@ -118,7 +118,7 @@ - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in -- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) -+ nto-qnx* | linux-gnu* | linux-uclibc* | storm-chaos* | os2-emx* | windows32-*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; -@@ -1089,7 +1089,8 @@ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ -+ | -mingw32* | -linux-gnu* | -linux-uclibc* \ -+ | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -diff -urN gcc-3.3.3/config.sub gcc-3.3.3-new/config.sub ---- gcc-3.3.3/config.sub 2003-01-30 17:25:36.000000000 -0600 -+++ gcc-3.3.3-new/config.sub 2004-02-16 21:12:16.000000000 -0600 -@@ -118,7 +118,7 @@ - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in -- nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) -+ nto-qnx* | linux-gnu* | linux-uclibc* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; -@@ -1112,7 +1112,8 @@ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ -+ | -mingw32* | -linux-gnu* | -linux-uclibc* \ -+ | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -diff -urN gcc-3.3.3/gcc/config/arm/linux-elf.h gcc-3.3.3-new/gcc/config/arm/linux-elf.h ---- gcc-3.3.3/gcc/config/arm/linux-elf.h 2003-09-16 10:39:23.000000000 -0500 -+++ gcc-3.3.3-new/gcc/config/arm/linux-elf.h 2004-02-16 21:12:16.000000000 -0600 -@@ -78,6 +78,18 @@ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC "%{h*} %{version:-v} \ -+ %{b} %{Wl,*:%*} \ -+ %{static:-Bstatic} \ -+ %{shared:-shared} \ -+ %{symbolic:-Bsymbolic} \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \ -+ -X \ -+ %{mbig-endian:-EB}" \ -+ SUBTARGET_EXTRA_LINK_SPEC -+#else - #define LINK_SPEC "%{h*} %{version:-v} \ - %{b} %{Wl,*:%*} \ - %{static:-Bstatic} \ -@@ -88,6 +100,7 @@ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC -+#endif - - #define TARGET_OS_CPP_BUILTINS() \ - do { \ -diff -urN gcc-3.3.3/gcc/config/cris/linux.h gcc-3.3.3-new/gcc/config/cris/linux.h ---- gcc-3.3.3/gcc/config/cris/linux.h 2003-03-10 21:01:35.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/cris/linux.h 2004-02-16 21:12:16.000000000 -0600 -@@ -81,6 +81,25 @@ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -95,6 +114,8 @@ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - -diff -urN gcc-3.3.3/gcc/config/cris/t-linux-uclibc gcc-3.3.3-new/gcc/config/cris/t-linux-uclibc ---- gcc-3.3.3/gcc/config/cris/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/cris/t-linux-uclibc 2004-02-16 21:12:16.000000000 -0600 -@@ -0,0 +1,3 @@ -+T_CFLAGS = -DUSE_UCLIBC -+TARGET_LIBGCC2_CFLAGS += -fPIC -+CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS) -diff -urN gcc-3.3.3/gcc/config/i386/linux.h gcc-3.3.3-new/gcc/config/i386/linux.h ---- gcc-3.3.3/gcc/config/i386/linux.h 2003-11-14 00:46:12.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/i386/linux.h 2004-02-16 21:12:16.000000000 -0600 -@@ -136,6 +136,15 @@ - %{static:-static}}}" - #endif - #else -+#if defined USE_UCLIBC -+#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC "-m elf_i386 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ -@@ -144,6 +153,7 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}}}" - #endif -+#endif - - /* A C statement (sans semicolon) to output to the stdio stream - FILE the assembler definition of uninitialized global DECL named -diff -urN gcc-3.3.3/gcc/config/mips/linux.h gcc-3.3.3-new/gcc/config/mips/linux.h ---- gcc-3.3.3/gcc/config/mips/linux.h 2003-12-23 02:58:00.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/mips/linux.h 2004-02-16 21:12:16.000000000 -0600 -@@ -175,6 +175,17 @@ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC \ -+ "%(endian_spec) \ -+ %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ -@@ -184,6 +195,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ - %{static:-static}}}" -+#endif - - #undef SUBTARGET_ASM_SPEC - #define SUBTARGET_ASM_SPEC "\ -diff -urN gcc-3.3.3/gcc/config/sh/linux.h gcc-3.3.3-new/gcc/config/sh/linux.h ---- gcc-3.3.3/gcc/config/sh/linux.h 2003-11-06 17:13:33.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/sh/linux.h 2004-02-16 21:12:16.000000000 -0600 -@@ -44,12 +44,21 @@ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define SUBTARGET_LINK_SPEC \ -+ "%{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}" -+#else - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}" -+#endif - - /* The GNU C++ standard library requires that these macros be defined. */ - #undef CPLUSPLUS_CPP_SPEC -diff -urN gcc-3.3.3/gcc/config/sh/t-linux-uclibc gcc-3.3.3-new/gcc/config/sh/t-linux-uclibc ---- gcc-3.3.3/gcc/config/sh/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/sh/t-linux-uclibc 2004-02-16 21:12:16.000000000 -0600 -@@ -0,0 +1,16 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+# Don't run fixproto -+STMP_FIXPROTO = -+ -+TARGET_LIBGCC2_CFLAGS = -fpic -+LIB1ASMFUNCS_CACHE = _ic_invalidate -+ -+LIB2FUNCS_EXTRA= -+ -+MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) m3e/m4 -+MULTILIB_DIRNAMES= -+MULTILIB_MATCHES = -+MULTILIB_EXCEPTIONS= -+ -+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o -diff -urN gcc-3.3.3/gcc/config/sh/t-sh64-uclibc gcc-3.3.3-new/gcc/config/sh/t-sh64-uclibc ---- gcc-3.3.3/gcc/config/sh/t-sh64-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/sh/t-sh64-uclibc 2004-02-16 21:12:16.000000000 -0600 -@@ -0,0 +1,13 @@ -+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o -+ -+LIB1ASMFUNCS = \ -+ _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ -+ _shcompact_call_trampoline _shcompact_return_trampoline \ -+ _shcompact_incoming_args _ic_invalidate _nested_trampoline \ -+ _push_pop_shmedia_regs \ -+ _udivdi3 _divdi3 _umoddi3 _moddi3 -+ -+MULTILIB_OPTIONS = $(MULTILIB_ENDIAN) m5-32media-nofpu/m5-compact/m5-compact-nofpu/m5-64media/m5-64media-nofpu -+MULTILIB_DIRNAMES= $(MULTILIB_ENDIAN) nofpu compact nofpu/compact media64 nofpu/media64 -+MULTILIB_MATCHES= -+MULTILIB_EXCEPTIONS= -diff -urN gcc-3.3.3/gcc/config/t-linux-uclibc gcc-3.3.3-new/gcc/config/t-linux-uclibc ---- gcc-3.3.3/gcc/config/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/t-linux-uclibc 2004-02-16 21:12:16.000000000 -0600 -@@ -0,0 +1,23 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+# Don't run fixproto -+STMP_FIXPROTO = -+ -+# Compile crtbeginS.o and crtendS.o with pic. -+CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC -+# Compile libgcc2.a with pic. -+TARGET_LIBGCC2_CFLAGS = -fPIC -+ -+# Override t-slibgcc-elf-ver to export some libgcc symbols with -+# the symbol versions that glibc used. -+SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver -+ -+# Use unwind-dw2-fde-glibc -+#LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \ -+# $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c -+#LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c -+ -+# Use unwind-dw2-fde -+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \ -+ $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c -+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h -diff -urN gcc-3.3.3/gcc/config.gcc gcc-3.3.3-new/gcc/config.gcc ---- gcc-3.3.3/gcc/config.gcc 2004-01-21 00:06:00.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config.gcc 2004-02-16 21:12:16.000000000 -0600 -@@ -697,6 +697,17 @@ - extra_parts="" - use_collect2=yes - ;; -+arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc -+ tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/linux-gas.h arm/linux-elf.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux" -+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+ gnu_ld=yes -+ case x${enable_threads} in -+ x | xyes | xpthreads | xposix) -+ thread_file='posix' -+ ;; -+ esac -+ ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/linux-gas.h arm/linux-elf.h" - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" -@@ -772,6 +783,10 @@ - tmake_file="cris/t-cris cris/t-elfmulti" - gas=yes - ;; -+cris-*-linux-uclibc*) -+ tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" -+ tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux-uclibc" -+ ;; - cris-*-linux*) - tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" - tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux" -@@ -1173,6 +1188,11 @@ - thread_file='single' - fi - ;; -+i[34567]86-*-linux*uclibc*) # Intel 80386's running GNU/Linux -+ # with ELF format using uClibc -+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc i386/t-crtstuff" -+ ;; - i[34567]86-*-linux*) # Intel 80386's running GNU/Linux - # with ELF format using glibc 2 - # aka GNU/Linux C library 6 -@@ -1883,6 +1903,16 @@ - tm_file="elfos.h ${tm_file} mips/netbsd.h" - tmake_file="${tmake_file} mips/t-netbsd" - ;; -+mips*-*-linux-uclibc*) # Linux MIPS, either endian. uClibc -+ tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" -+ case $machine in -+ mipsisa32*-*) -+ target_cpu_default="MASK_SOFT_FLOAT" -+ tm_defines="MIPS_ISA_DEFAULT=32" -+ ;; -+ esac -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc mips/t-linux" -+ ;; - mips*-*-linux*) # Linux MIPS, either endian. - tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" - case $machine in -@@ -2129,6 +2159,11 @@ - out_file=rs6000/rs6000.c - tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm" - ;; -+powerpc-*-linux-uclibc*) -+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" -+ out_file=rs6000/rs6000.c -+ tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux-uclibc rs6000/t-ppccomm" -+ ;; - powerpc-*-linux*) - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" - out_file=rs6000/rs6000.c -@@ -2313,10 +2348,18 @@ - tmake_file="${tmake_file} sh/t-le" - ;; - esac -- tmake_file="${tmake_file} sh/t-linux" -+ case $machine in -+ *-*-linux-uclibc*) tmake_file="${tmake_file} sh/t-linux-uclibc" ;; -+ *) tmake_file="${tmake_file} sh/t-linux" ;; -+ esac - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h" - gas=yes gnu_ld=yes - case $machine in -+ sh64*-*-linux-uclibc*) -+ tmake_file="${tmake_file} sh/t-sh64-uclibc" -+ tm_file="${tm_file} sh/sh64.h" -+ extra_headers="shmedia.h ushmedia.h sshmedia.h" -+ ;; - sh64*) - tmake_file="${tmake_file} sh/t-sh64" - tm_file="${tm_file} sh/sh64.h" -diff -urN gcc-3.3.3/libstdc++-v3/aclocal.m4 gcc-3.3.3-new/libstdc++-v3/aclocal.m4 ---- gcc-3.3.3/libstdc++-v3/aclocal.m4 2004-01-12 10:18:44.000000000 -0600 -+++ gcc-3.3.3-new/libstdc++-v3/aclocal.m4 2004-02-16 21:12:16.000000000 -0600 -@@ -1216,6 +1216,9 @@ - dnl Default to "generic" - if test x$enable_clocale_flag = xno; then - case x${target_os} in -+ xlinux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu*) - AC_EGREP_CPP([_GLIBCPP_ok], [ - #include -@@ -1339,6 +1342,41 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ xuclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcpp_MOFILES="$glibcpp_MOFILES $ling.mo"; \ -+ glibcpp_POFILES="$glibcpp_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcpp_MOFILES) -+ AC_SUBST(glibcpp_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/uclibc/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - *) - echo "$enable_clocale is an unknown locale package" 1>&2 - exit 1 -diff -urN gcc-3.3.3/libstdc++-v3/configure gcc-3.3.3-new/libstdc++-v3/configure ---- gcc-3.3.3/libstdc++-v3/configure 2004-01-12 10:18:45.000000000 -0600 -+++ gcc-3.3.3-new/libstdc++-v3/configure 2004-02-17 00:21:12.000000000 -0600 -@@ -2996,6 +2996,9 @@ - - if test x$enable_clocale_flag = xno; then - case x${target_os} in -+ xlinux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu*) - cat > conftest.$ac_ext <&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; ac_word=$2 -+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -+echo "configure:3117: checking for $ac_word" >&5 -+if eval "test \"`echo '$''{'ac_cv_prog_check_msgfmt'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. -+else -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" -+ ac_dummy="$PATH" -+ for ac_dir in $ac_dummy; do -+ test -z "$ac_dir" && ac_dir=. -+ if test -f $ac_dir/$ac_word; then -+ ac_cv_prog_check_msgfmt="yes" -+ break -+ fi -+ done -+ IFS="$ac_save_ifs" -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt="$ac_cv_prog_check_msgfmt" -+if test -n "$check_msgfmt"; then -+ echo "$ac_t""$check_msgfmt" 1>&6 -+else -+ echo "$ac_t""no" 1>&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcpp_MOFILES="$glibcpp_MOFILES $ling.mo"; \ -+ glibcpp_POFILES="$glibcpp_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/uclibc/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - *) - echo "$enable_clocale is an unknown locale package" 1>&2 - exit 1 -@@ -4212,6 +4279,968 @@ - # GLIBCPP_CHECK_MATH_SUPPORT - - case "$target" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ for ac_hdr in nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h locale.h float.h inttypes.h -+do -+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -+echo "configure:4224: checking for $ac_hdr" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+EOF -+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+{ (eval echo configure:4234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` -+ cat >> confdefs.h <&6 -+fi -+done -+ -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ -+ -+ # If we're not using GNU ld, then there's no point in even trying these -+ # tests. Check for that first. We should have already tested for gld -+ # by now (in libtool), but require it now just to be safe... -+ test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' -+ test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' -+ -+ -+ # The name set by libtool depends on the version of libtool. Shame on us -+ # for depending on an impl detail, but c'est la vie. Older versions used -+ # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on -+ # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually -+ # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't -+ # set (hence we're using an older libtool), then set it. -+ if test x${with_gnu_ld+set} != xset; then -+ if test x${ac_cv_prog_gnu_ld+set} != xset; then -+ # We got through "ac_require(ac_prog_ld)" and still not set? Huh? -+ with_gnu_ld=no -+ else -+ with_gnu_ld=$ac_cv_prog_gnu_ld -+ fi -+ fi -+ -+ # Start by getting the version number. I think the libtool test already -+ # does some of this, but throws away the result. -+ -+ ldver=`$LD --version 2>/dev/null | head -1 | \ -+ sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'` -+ -+ glibcpp_gnu_ld_version=`echo $ldver | \ -+ $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'` -+ -+ # Set --gc-sections. -+ if test "$with_gnu_ld" = "notbroken"; then -+ # GNU ld it is! Joy and bunny rabbits! -+ -+ # All these tests are for C++; save the language and the compiler flags. -+ # Need to do this so that g++ won't try to link in libstdc++ -+ ac_test_CFLAGS="${CFLAGS+set}" -+ ac_save_CFLAGS="$CFLAGS" -+ CFLAGS='-x c++ -Wl,--gc-sections' -+ -+ # Check for -Wl,--gc-sections -+ # XXX This test is broken at the moment, as symbols required for -+ # linking are now in libsupc++ (not built yet.....). In addition, -+ # this test has cored on solaris in the past. In addition, -+ # --gc-sections doesn't really work at the moment (keeps on discarding -+ # used sections, first .eh_frame and now some of the glibc sections for -+ # iconv). Bzzzzt. Thanks for playing, maybe next time. -+ echo $ac_n "checking for ld that supports -Wl,--gc-sections""... $ac_c" 1>&6 -+echo "configure:4312: checking for ld that supports -Wl,--gc-sections" >&5 -+ if test "$cross_compiling" = yes; then -+ ac_sectionLDflags=yes -+else -+ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -+then -+ ac_sectionLDflags=yes -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -fr conftest* -+ ac_sectionLDflags=no -+fi -+rm -fr conftest* -+fi -+ -+ if test "$ac_test_CFLAGS" = set; then -+ CFLAGS="$ac_save_CFLAGS" -+ else -+ # this is the suspicious part -+ CFLAGS='' -+ fi -+ if test "$ac_sectionLDflags" = "yes"; then -+ SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" -+ fi -+ echo "$ac_t""$ac_sectionLDflags" 1>&6 -+ fi -+ -+ # Set linker optimization flags. -+ if test x"$with_gnu_ld" = x"yes"; then -+ OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS" -+ fi -+ -+ -+ -+ -+ -+ echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -+echo "configure:4362: checking for main in -lm" >&5 -+ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-lm $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_lib=HAVE_LIB`echo m | sed -e 's/[^a-zA-Z0-9_]/_/g' \ -+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` -+ cat >> confdefs.h <&6 -+fi -+ -+ for ac_func in nan copysignf -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4407: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo" -+fi -+done -+ -+ -+ for ac_func in __signbit -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4464: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+LIBMATHOBJS="$LIBMATHOBJS signbit.lo" -+fi -+done -+ -+ for ac_func in __signbitf -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4520: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+LIBMATHOBJS="$LIBMATHOBJS signbitf.lo" -+fi -+done -+ -+ -+ if test x$ac_cv_func_copysignl = x"yes"; then -+ for ac_func in __signbitl -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4578: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+LIBMATHOBJS="$LIBMATHOBJS signbitl.lo" -+fi -+done -+ -+ fi -+ -+ if test -n "$LIBMATHOBJS"; then -+ need_libmath=yes -+ fi -+ -+ -+ -+if test "$need_libmath" = yes; then -+ GLIBCPP_BUILD_LIBMATH_TRUE= -+ GLIBCPP_BUILD_LIBMATH_FALSE='#' -+else -+ GLIBCPP_BUILD_LIBMATH_TRUE='#' -+ GLIBCPP_BUILD_LIBMATH_FALSE= -+fi -+ -+ -+ enable_wchar_t=no -+ -+ echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6 -+echo "configure:4651: checking for mbstate_t" >&5 -+ cat > conftest.$ac_ext < -+int main() { -+mbstate_t teststate; -+; return 0; } -+EOF -+if { (eval echo configure:4660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+ rm -rf conftest* -+ have_mbstate_t=yes -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ have_mbstate_t=no -+fi -+rm -f conftest* -+ echo "$ac_t""$have_mbstate_t" 1>&6 -+ if test x"$have_mbstate_t" = xyes; then -+ cat >> confdefs.h <<\EOF -+#define HAVE_MBSTATE_T 1 -+EOF -+ -+ fi -+ -+ for ac_hdr in wchar.h -+do -+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -+echo "configure:4682: checking for $ac_hdr" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+EOF -+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+{ (eval echo configure:4692: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` -+ cat >> confdefs.h <&6 -+ac_has_wchar_h=no -+fi -+done -+ -+ for ac_hdr in wctype.h -+do -+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -+echo "configure:4723: checking for $ac_hdr" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+EOF -+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+{ (eval echo configure:4733: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` -+ cat >> confdefs.h <&6 -+ac_has_wctype_h=no -+fi -+done -+ -+ -+ if test x"$ac_has_wchar_h" = xyes && -+ test x"$ac_has_wctype_h" = xyes && -+ test x"$enable_c_mbchar" != xno; then -+ -+ echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6 -+echo "configure:4766: checking for WCHAR_MIN and WCHAR_MAX" >&5 -+ cat > conftest.$ac_ext < -+int main() { -+int i = WCHAR_MIN; int j = WCHAR_MAX; -+; return 0; } -+EOF -+if { (eval echo configure:4775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+ rm -rf conftest* -+ has_wchar_minmax=yes -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ has_wchar_minmax=no -+fi -+rm -f conftest* -+ echo "$ac_t""$has_wchar_minmax" 1>&6 -+ -+ echo $ac_n "checking for WEOF""... $ac_c" 1>&6 -+echo "configure:4788: checking for WEOF" >&5 -+ cat > conftest.$ac_ext < -+ #include -+int main() { -+wint_t i = WEOF; -+; return 0; } -+EOF -+if { (eval echo configure:4799: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+ rm -rf conftest* -+ has_weof=yes -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ has_weof=no -+fi -+rm -f conftest* -+ echo "$ac_t""$has_weof" 1>&6 -+ -+ ac_wfuncs=yes -+ for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4815: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+\ -+ ac_wfuncs=no -+fi -+done -+ -+ -+ for ac_func in btowc wctob fgetwc fgetws fputwc fputws fwide \ -+ fwprintf fwscanf swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf \ -+ vwprintf vwscanf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \ -+ mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstof wcstol \ -+ wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \ -+ wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4878: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+\ -+ ac_wfuncs=no -+fi -+done -+ -+ -+ echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6 -+echo "configure:4934: checking for ISO C99 wchar_t support" >&5 -+ if test x"$has_weof" = xyes && -+ test x"$has_wchar_minmax" = xyes && -+ test x"$ac_wfuncs" = xyes; then -+ ac_isoC99_wchar_t=yes -+ else -+ ac_isoC99_wchar_t=no -+ fi -+ echo "$ac_t""$ac_isoC99_wchar_t" 1>&6 -+ -+ ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for iconv.h""... $ac_c" 1>&6 -+echo "configure:4946: checking for iconv.h" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+EOF -+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+{ (eval echo configure:4956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_has_iconv_h=yes -+else -+ echo "$ac_t""no" 1>&6 -+ac_has_iconv_h=no -+fi -+ -+ ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -+echo "configure:4980: checking for langinfo.h" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+EOF -+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+{ (eval echo configure:4990: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_has_langinfo_h=yes -+else -+ echo "$ac_t""no" 1>&6 -+ac_has_langinfo_h=no -+fi -+ -+ -+ echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6 -+echo "configure:5014: checking for iconv in -liconv" >&5 -+ac_lib_var=`echo iconv'_'iconv | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-liconv $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ libiconv="-liconv" -+else -+ echo "$ac_t""no" 1>&6 -+fi -+ -+ ac_save_LIBS="$LIBS" -+ LIBS="$LIBS $libiconv" -+ -+ for ac_func in iconv_open iconv_close iconv nl_langinfo -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:5059: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:5087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+ac_XPG2funcs=no -+fi -+done -+ -+ -+ LIBS="$ac_save_LIBS" -+ -+ echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6 -+echo "configure:5117: checking for XPG2 wchar_t support" >&5 -+ if test x"$ac_has_iconv_h" = xyes && -+ test x"$ac_has_langinfo_h" = xyes && -+ test x"$ac_XPG2funcs" = xyes; then -+ ac_XPG2_wchar_t=yes -+ else -+ ac_XPG2_wchar_t=no -+ fi -+ echo "$ac_t""$ac_XPG2_wchar_t" 1>&6 -+ -+ if test x"$ac_isoC99_wchar_t" = xyes && -+ test x"$ac_XPG2_wchar_t" = xyes; then -+ cat >> confdefs.h <<\EOF -+#define _GLIBCPP_USE_WCHAR_T 1 -+EOF -+ -+ enable_wchar_t=yes -+ fi -+ fi -+ echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6 -+echo "configure:5137: checking for enabled wchar_t specializations" >&5 -+ echo "$ac_t""$enable_wchar_t" 1>&6 -+ -+ -+if test "$enable_wchar_t" = yes; then -+ GLIBCPP_TEST_WCHAR_T_TRUE= -+ GLIBCPP_TEST_WCHAR_T_FALSE='#' -+else -+ GLIBCPP_TEST_WCHAR_T_TRUE='#' -+ GLIBCPP_TEST_WCHAR_T_FALSE= -+fi -+ -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_COPYSIGN 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_FINITE 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_FINITEF 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_ISINF 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_ISINFF 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_ISNAN 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_ISNANF 1 -+EOF -+ ;; - *-linux*) - os_include_dir="os/gnu-linux" - for ac_hdr in nan.h ieeefp.h endian.h sys/isa_defs.h \ -diff -urN gcc-3.3.3/libstdc++-v3/configure.in gcc-3.3.3-new/libstdc++-v3/configure.in ---- gcc-3.3.3/libstdc++-v3/configure.in 2004-01-12 10:19:22.000000000 -0600 -+++ gcc-3.3.3-new/libstdc++-v3/configure.in 2004-02-16 23:13:45.000000000 -0600 -@@ -117,6 +117,36 @@ - # GLIBCPP_CHECK_MATH_SUPPORT - - case "$target" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h locale.h float.h inttypes.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCPP_CHECK_LINKER_FEATURES -+ GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCPP_CHECK_WCHAR_T_SUPPORT -+ -+ AC_DEFINE(HAVE_COPYSIGN) -+ #AC_DEFINE(HAVE_COPYSIGNF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ #AC_DEFINE(HAVE_FREXPF) -+ #AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+ #AC_DEFINE(HAVE_SINCOS) -+ #AC_DEFINE(HAVE_SINCOSF) -+ #if test x"long_double_math_on_this_cpu" = x"yes"; then -+ #AC_DEFINE(HAVE_FINITEL) -+ #AC_DEFINE(HAVE_HYPOTL) -+ #AC_DEFINE(HAVE_ISINFL) -+ #AC_DEFINE(HAVE_ISNANL) -+ #fi -+ ;; - *-linux*) - os_include_dir="os/gnu-linux" - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -diff -urN gcc-3.3.3/libstdc++-v3/configure.target gcc-3.3.3-new/libstdc++-v3/configure.target ---- gcc-3.3.3/libstdc++-v3/configure.target 2003-10-01 14:07:07.000000000 -0500 -+++ gcc-3.3.3-new/libstdc++-v3/configure.target 2004-02-16 21:12:16.000000000 -0600 -@@ -133,6 +133,9 @@ - freebsd*) - os_include_dir="os/bsd/freebsd" - ;; -+ linux-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; - gnu* | linux*) - os_include_dir="os/gnu-linux" - ;; -diff -urN gcc-3.3.3/libstdc++-v3/include/c_std/std_cstdlib.h gcc-3.3.3-new/libstdc++-v3/include/c_std/std_cstdlib.h ---- gcc-3.3.3/libstdc++-v3/include/c_std/std_cstdlib.h 2003-04-18 05:08:05.000000000 -0500 -+++ gcc-3.3.3-new/libstdc++-v3/include/c_std/std_cstdlib.h 2004-02-16 21:12:16.000000000 -0600 -@@ -101,9 +101,11 @@ - using ::labs; - using ::ldiv; - using ::malloc; -+#if _GLIBCPP_USE_WCHAR_T - using ::mblen; - using ::mbstowcs; - using ::mbtowc; -+#endif - using ::qsort; - using ::rand; - using ::realloc; -@@ -112,8 +114,10 @@ - using ::strtol; - using ::strtoul; - using ::system; -+#if _GLIBCPP_USE_WCHAR_T - using ::wcstombs; - using ::wctomb; -+#endif - - inline long - abs(long __i) { return labs(__i); } -diff -urN gcc-3.3.3/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.3.3-new/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-3.3.3/libstdc++-v3/include/c_std/std_cwchar.h 2003-04-18 05:08:05.000000000 -0500 -+++ gcc-3.3.3-new/libstdc++-v3/include/c_std/std_cwchar.h 2004-02-16 21:12:16.000000000 -0600 -@@ -165,7 +165,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#ifdef HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; -diff -urN gcc-3.3.3/ltconfig gcc-3.3.3-new/ltconfig ---- gcc-3.3.3/ltconfig 2003-02-19 20:10:02.000000000 -0600 -+++ gcc-3.3.3-new/ltconfig 2004-02-16 21:12:16.000000000 -0600 -@@ -603,6 +603,7 @@ - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in - linux-gnu*) ;; -+linux-uclibc*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac - -@@ -1247,6 +1248,24 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ # Note: copied from linux-gnu, and may not be appropriate. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no diff --git a/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-110-conf.patch b/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-110-conf.patch deleted file mode 100644 index f297c3283..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-110-conf.patch +++ /dev/null @@ -1,55 +0,0 @@ -Use the patch by Carl Miller for powerpc, with -some minor modifications. Changed *os_uclibc to *os_linux_uclibc since -at some point we might support other platforms. Also updated to 3.3.3. -diff -urN gcc-3.3.3/gcc/config/rs6000/linux.h gcc-3.3.3-new/gcc/config/rs6000/linux.h ---- gcc-3.3.3/gcc/config/rs6000/linux.h 2003-11-14 00:46:10.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/rs6000/linux.h 2004-02-16 21:13:40.000000000 -0600 -@@ -64,7 +64,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #undef TARGET_VERSION - #define TARGET_VERSION fprintf (stderr, " (PowerPC GNU/Linux)"); -diff -urN gcc-3.3.3/gcc/config/rs6000/sysv4.h gcc-3.3.3-new/gcc/config/rs6000/sysv4.h ---- gcc-3.3.3/gcc/config/rs6000/sysv4.h 2003-10-28 13:55:41.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/rs6000/sysv4.h 2004-02-16 21:13:40.000000000 -0600 -@@ -968,9 +968,11 @@ - %{mcall-linux: %(link_os_linux) } \ - %{mcall-gnu: %(link_os_gnu) } \ - %{mcall-netbsd: %(link_os_netbsd) } \ -+%{mcall-uclibc: %(link_os_linux_uclibc) } \ - %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ - %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ -- %{!mcall-netbsd: %(link_os_default) }}}}}}}}}" -+ %{!mcall-netbsd: %{!mcall-uclibc: \ -+ %(link_os_default) }}}}}}}}}}" - - #define LINK_OS_DEFAULT_SPEC "" - -@@ -1307,6 +1309,12 @@ - - #define LINK_OS_WINDISS_SPEC "" - -+/* uClibc support for Linux. */ -+ -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - /* Define any extra SPECS that the compiler needs to generate. */ - /* Override rs6000.h definition. */ - #undef SUBTARGET_EXTRA_SPECS -@@ -1372,6 +1380,7 @@ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_vxworks", LINK_OS_VXWORKS_SPEC }, \ - { "link_os_windiss", LINK_OS_WINDISS_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ - { "cc1_endian_big", CC1_ENDIAN_BIG_SPEC }, \ - { "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \ diff --git a/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-120-softfloat.patch b/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-120-softfloat.patch deleted file mode 100644 index f2431896c..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-120-softfloat.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- gcc-3.3.2-old/configure.in 2003-08-09 01:57:21.000000000 -0500 -+++ gcc-3.3.2/configure.in 2004-01-15 12:46:29.000000000 -0600 -@@ -1418,6 +1418,11 @@ - fi - - FLAGS_FOR_TARGET= -+case " $targargs " in -+ *" --nfp "* | *" --without-float "*) -+ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -msoft-float' -+ ;; -+esac - case " $target_configdirs " in - *" newlib "*) - case " $targargs " in diff --git a/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-200-code.patch b/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-200-code.patch deleted file mode 100644 index 5880d834b..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/gcc-uclibc-3.3-200-code.patch +++ /dev/null @@ -1,3021 +0,0 @@ -Warning! This patch is not finished. The wide char time-related stuff -is broken or non-functional. But it serves as a starting point to get -things building while I continue to work on the uClibc locale internals. -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2004-01-09 07:55:02.000000000 -0600 -@@ -0,0 +1,63 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek -+ -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strtol_l) __strtol_l; -+extern "C" __typeof(strtoll_l) __strtoll_l; -+extern "C" __typeof(strtoul_l) __strtoul_l; -+extern "C" __typeof(strtoull_l) __strtoull_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#endif // GLIBC 2.3 and later -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c_locale.cc 2004-01-09 08:37:55.000000000 -0600 -@@ -0,0 +1,231 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, long& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc, int __base) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long __l = __strtol_l(__s, &__sanity, __base, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __l; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, unsigned long& __v, -+ ios_base::iostate& __err, const __c_locale& __cloc, -+ int __base) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ unsigned long __ul = __strtoul_l(__s, &__sanity, __base, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __ul; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+#ifdef _GLIBCPP_USE_LONG_LONG -+ template<> -+ void -+ __convert_to_v(const char* __s, long long& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc, int __base) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long long __ll = __strtoll_l(__s, &__sanity, __base, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __ll; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, unsigned long long& __v, -+ ios_base::iostate& __err, const __c_locale& __cloc, -+ int __base) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ unsigned long long __ull = __strtoull_l(__s, &__sanity, __base, -+ __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __ull; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+#endif -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc, int) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc, int) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc, int) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error("attempt to create locale from unknown name"); -+ } -+#else -+ __cloc = NULL; -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (_S_c_locale != __cloc) -+ __freelocale(__cloc); -+#else -+ __cloc = NULL; -+#endif -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ { return __duplocale(__cloc); } -+#else -+ { return __c_locale(); } -+#endif -+ -+ const char* locale::_S_categories[_S_categories_size -+ + _S_extra_categories_size] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES" -+#if _GLIBCPP_NUM_CATEGORIES != 0 -+ , -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} // namespace std -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c_locale.h 2004-01-09 07:51:06.000000000 -0600 -@@ -0,0 +1,118 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifndef _CPP_BITS_C_LOCALE_H -+#define _CPP_BITS_C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include -+#include // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCPP_C_LOCALE_GNU for -+#endif -+#define _GLIBCPP_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCPP_NUM_CATEGORIES 6 -+#define _GLIBCPP_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template -+ int -+ __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec = -1) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec = -1) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = setlocale(LC_ALL, NULL); -+ char* __sav = static_cast(malloc(strlen(__old) + 1)); -+ if (__sav) -+ strcpy(__sav, __old); -+ setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ int __ret; -+ if (__prec >= 0) -+ __ret = snprintf(__out, __size, __fmt, __prec, __v); -+ else -+ __ret = snprintf(__out, __size, __fmt, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ setlocale(LC_ALL, __sav); -+ free(__sav); -+#endif -+ return __ret; -+ } -+} -+ -+#endif -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2004-01-09 04:04:34.000000000 -0600 -@@ -0,0 +1,113 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCPP_USE_WCHAR_T -+ codecvt_base::result -+ codecvt:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = error; -+ size_t __len = min(__from_end - __from, __to_end - __to); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_S_c_locale); -+#endif -+ size_t __conv = wcsrtombs(__to, &__from, __len, &__state); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ if (__conv == __len) -+ { -+ __from_next = __from; -+ __to_next = __to + __conv; -+ __ret = ok; -+ } -+ else if (__conv > 0 && __conv < __len) -+ { -+ __from_next = __from; -+ __to_next = __to + __conv; -+ __ret = partial; -+ } -+ else -+ __ret = error; -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = error; -+ size_t __len = min(__from_end - __from, __to_end - __to); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_S_c_locale); -+#endif -+ size_t __conv = mbsrtowcs(__to, &__from, __len, &__state); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ if (__conv == __len) -+ { -+ __from_next = __from; -+ __to_next = __to + __conv; -+ __ret = ok; -+ } -+ else if (__conv > 0 && __conv < __len) -+ { -+ __from_next = __from; -+ __to_next = __to + __conv; -+ __ret = partial; -+ } -+ else -+ __ret = error; -+ -+ return __ret; -+ } -+#endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/codecvt_specializations.h gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/codecvt_specializations.h ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/codecvt_specializations.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/codecvt_specializations.h 2004-01-09 01:53:51.000000000 -0600 -@@ -0,0 +1,461 @@ -+// Locale support (codecvt) -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 Template class codecvt -+// -+ -+// Warning: this file is not meant for user inclusion. Use . -+ -+// Written by Benjamin Kosnik -+ -+ // XXX -+ // Define this here to codecvt.cc can have _S_max_size definition. -+#define _GLIBCPP_USE___ENC_TRAITS 1 -+ -+ // Extension to use icov for dealing with character encodings, -+ // including conversions and comparisons between various character -+ // sets. This object encapsulates data that may need to be shared between -+ // char_traits, codecvt and ctype. -+ class __enc_traits -+ { -+ public: -+ // Types: -+ // NB: A conversion descriptor subsumes and enhances the -+ // functionality of a simple state type such as mbstate_t. -+ typedef iconv_t __desc_type; -+ -+ protected: -+ // Data Members: -+ // Max size of charset encoding name -+ static const int _S_max_size = 32; -+ // Name of internal character set encoding. -+ char _M_int_enc[_S_max_size]; -+ // Name of external character set encoding. -+ char _M_ext_enc[_S_max_size]; -+ -+ // Conversion descriptor between external encoding to internal encoding. -+ __desc_type _M_in_desc; -+ // Conversion descriptor between internal encoding to external encoding. -+ __desc_type _M_out_desc; -+ -+ // Details the byte-order marker for the external encoding, if necessary. -+ int _M_ext_bom; -+ -+ // Details the byte-order marker for the internal encoding, if necessary. -+ int _M_int_bom; -+ -+ public: -+ explicit __enc_traits() -+ : _M_in_desc(0), _M_out_desc(0), _M_ext_bom(0), _M_int_bom(0) -+ { -+ memset(_M_int_enc, 0, _S_max_size); -+ memset(_M_ext_enc, 0, _S_max_size); -+ } -+ -+ explicit __enc_traits(const char* __int, const char* __ext, -+ int __ibom = 0, int __ebom = 0) -+ : _M_in_desc(0), _M_out_desc(0), _M_ext_bom(0), _M_int_bom(0) -+ { -+ strncpy(_M_int_enc, __int, _S_max_size); -+ strncpy(_M_ext_enc, __ext, _S_max_size); -+ } -+ -+ // 21.1.2 traits typedefs -+ // p4 -+ // typedef STATE_T state_type -+ // requires: state_type shall meet the requirements of -+ // CopyConstructible types (20.1.3) -+ __enc_traits(const __enc_traits& __obj): _M_in_desc(0), _M_out_desc(0) -+ { -+ strncpy(_M_int_enc, __obj._M_int_enc, _S_max_size); -+ strncpy(_M_ext_enc, __obj._M_ext_enc, _S_max_size); -+ _M_ext_bom = __obj._M_ext_bom; -+ _M_int_bom = __obj._M_int_bom; -+ } -+ -+ // Need assignment operator as well. -+ __enc_traits& -+ operator=(const __enc_traits& __obj) -+ { -+ strncpy(_M_int_enc, __obj._M_int_enc, _S_max_size); -+ strncpy(_M_ext_enc, __obj._M_ext_enc, _S_max_size); -+ _M_in_desc = 0; -+ _M_out_desc = 0; -+ _M_ext_bom = __obj._M_ext_bom; -+ _M_int_bom = __obj._M_int_bom; -+ return *this; -+ } -+ -+ ~__enc_traits() -+ { -+ __desc_type __err = reinterpret_cast(-1); -+ if (_M_in_desc && _M_in_desc != __err) -+ iconv_close(_M_in_desc); -+ if (_M_out_desc && _M_out_desc != __err) -+ iconv_close(_M_out_desc); -+ } -+ -+ void -+ _M_init() -+ { -+ const __desc_type __err = reinterpret_cast(-1); -+ if (!_M_in_desc) -+ { -+ _M_in_desc = iconv_open(_M_int_enc, _M_ext_enc); -+ if (_M_in_desc == __err) -+ __throw_runtime_error("creating iconv input descriptor failed."); -+ } -+ if (!_M_out_desc) -+ { -+ _M_out_desc = iconv_open(_M_ext_enc, _M_int_enc); -+ if (_M_out_desc == __err) -+ __throw_runtime_error("creating iconv output descriptor failed."); -+ } -+ } -+ -+ bool -+ _M_good() -+ { -+ const __desc_type __err = reinterpret_cast(-1); -+ bool __test = _M_in_desc && _M_in_desc != __err; -+ __test &= _M_out_desc && _M_out_desc != __err; -+ return __test; -+ } -+ -+ const __desc_type* -+ _M_get_in_descriptor() -+ { return &_M_in_desc; } -+ -+ const __desc_type* -+ _M_get_out_descriptor() -+ { return &_M_out_desc; } -+ -+ int -+ _M_get_external_bom() -+ { return _M_ext_bom; } -+ -+ int -+ _M_get_internal_bom() -+ { return _M_int_bom; } -+ -+ const char* -+ _M_get_internal_enc() -+ { return _M_int_enc; } -+ -+ const char* -+ _M_get_external_enc() -+ { return _M_ext_enc; } -+ }; -+ -+ // Partial specialization -+ // This specialization takes advantage of iconv to provide code -+ // conversions between a large number of character encodings. -+ template -+ class codecvt<_InternT, _ExternT, __enc_traits> -+ : public __codecvt_abstract_base<_InternT, _ExternT, __enc_traits> -+ { -+ public: -+ // Types: -+ typedef codecvt_base::result result; -+ typedef _InternT intern_type; -+ typedef _ExternT extern_type; -+ typedef __enc_traits state_type; -+ typedef __enc_traits::__desc_type __desc_type; -+ typedef __enc_traits __enc_type; -+ -+ // Data Members: -+ static locale::id id; -+ -+ explicit -+ codecvt(size_t __refs = 0) -+ : __codecvt_abstract_base(__refs) -+ { } -+ -+ explicit -+ codecvt(__enc_type* __enc, size_t __refs = 0) -+ : __codecvt_abstract_base(__refs) -+ { } -+ -+ protected: -+ virtual -+ ~codecvt() { } -+ -+ virtual result -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const; -+ -+ virtual result -+ do_unshift(state_type& __state, extern_type* __to, -+ extern_type* __to_end, extern_type*& __to_next) const; -+ -+ virtual result -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const; -+ -+ virtual int -+ do_encoding() const throw(); -+ -+ virtual bool -+ do_always_noconv() const throw(); -+ -+ virtual int -+ do_length(const state_type&, const extern_type* __from, -+ const extern_type* __end, size_t __max) const; -+ -+ virtual int -+ do_max_length() const throw(); -+ }; -+ -+ template -+ locale::id -+ codecvt<_InternT, _ExternT, __enc_traits>::id; -+ -+ // This adaptor works around the signature problems of the second -+ // argument to iconv(): SUSv2 and others use 'const char**', but glibc 2.2 -+ // uses 'char**', which matches the POSIX 1003.1-2001 standard. -+ // Using this adaptor, g++ will do the work for us. -+ template -+ inline size_t -+ __iconv_adaptor(size_t(*__func)(iconv_t, _T, size_t*, char**, size_t*), -+ iconv_t __cd, char** __inbuf, size_t* __inbytes, -+ char** __outbuf, size_t* __outbytes) -+ { return __func(__cd, (_T)__inbuf, __inbytes, __outbuf, __outbytes); } -+ -+ template -+ codecvt_base::result -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = codecvt_base::error; -+ if (__state._M_good()) -+ { -+ typedef state_type::__desc_type __desc_type; -+ const __desc_type* __desc = __state._M_get_out_descriptor(); -+ const size_t __fmultiple = sizeof(intern_type); -+ size_t __fbytes = __fmultiple * (__from_end - __from); -+ const size_t __tmultiple = sizeof(extern_type); -+ size_t __tbytes = __tmultiple * (__to_end - __to); -+ -+ // Argument list for iconv specifies a byte sequence. Thus, -+ // all to/from arrays must be brutally casted to char*. -+ char* __cto = reinterpret_cast(__to); -+ char* __cfrom; -+ size_t __conv; -+ -+ // Some encodings need a byte order marker as the first item -+ // in the byte stream, to designate endian-ness. The default -+ // value for the byte order marker is NULL, so if this is -+ // the case, it's not necessary and we can just go on our -+ // merry way. -+ int __int_bom = __state._M_get_internal_bom(); -+ if (__int_bom) -+ { -+ size_t __size = __from_end - __from; -+ intern_type* __cfixed = static_cast(__builtin_alloca(sizeof(intern_type) * (__size + 1))); -+ __cfixed[0] = static_cast(__int_bom); -+ char_traits::copy(__cfixed + 1, __from, __size); -+ __cfrom = reinterpret_cast(__cfixed); -+ __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+ &__fbytes, &__cto, &__tbytes); -+ } -+ else -+ { -+ intern_type* __cfixed = const_cast(__from); -+ __cfrom = reinterpret_cast(__cfixed); -+ __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, &__fbytes, -+ &__cto, &__tbytes); -+ } -+ -+ if (__conv != size_t(-1)) -+ { -+ __from_next = reinterpret_cast(__cfrom); -+ __to_next = reinterpret_cast(__cto); -+ __ret = codecvt_base::ok; -+ } -+ else -+ { -+ if (__fbytes < __fmultiple * (__from_end - __from)) -+ { -+ __from_next = reinterpret_cast(__cfrom); -+ __to_next = reinterpret_cast(__cto); -+ __ret = codecvt_base::partial; -+ } -+ else -+ __ret = codecvt_base::error; -+ } -+ } -+ return __ret; -+ } -+ -+ template -+ codecvt_base::result -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_unshift(state_type& __state, extern_type* __to, -+ extern_type* __to_end, extern_type*& __to_next) const -+ { -+ result __ret = codecvt_base::error; -+ if (__state._M_good()) -+ { -+ typedef state_type::__desc_type __desc_type; -+ const __desc_type* __desc = __state._M_get_in_descriptor(); -+ const size_t __tmultiple = sizeof(intern_type); -+ size_t __tlen = __tmultiple * (__to_end - __to); -+ -+ // Argument list for iconv specifies a byte sequence. Thus, -+ // all to/from arrays must be brutally casted to char*. -+ char* __cto = reinterpret_cast(__to); -+ size_t __conv = __iconv_adaptor(iconv,*__desc, NULL, NULL, -+ &__cto, &__tlen); -+ -+ if (__conv != size_t(-1)) -+ { -+ __to_next = reinterpret_cast(__cto); -+ if (__tlen == __tmultiple * (__to_end - __to)) -+ __ret = codecvt_base::noconv; -+ else if (__tlen == 0) -+ __ret = codecvt_base::ok; -+ else -+ __ret = codecvt_base::partial; -+ } -+ else -+ __ret = codecvt_base::error; -+ } -+ return __ret; -+ } -+ -+ template -+ codecvt_base::result -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = codecvt_base::error; -+ if (__state._M_good()) -+ { -+ typedef state_type::__desc_type __desc_type; -+ const __desc_type* __desc = __state._M_get_in_descriptor(); -+ const size_t __fmultiple = sizeof(extern_type); -+ size_t __flen = __fmultiple * (__from_end - __from); -+ const size_t __tmultiple = sizeof(intern_type); -+ size_t __tlen = __tmultiple * (__to_end - __to); -+ -+ // Argument list for iconv specifies a byte sequence. Thus, -+ // all to/from arrays must be brutally casted to char*. -+ char* __cto = reinterpret_cast(__to); -+ char* __cfrom; -+ size_t __conv; -+ -+ // Some encodings need a byte order marker as the first item -+ // in the byte stream, to designate endian-ness. The default -+ // value for the byte order marker is NULL, so if this is -+ // the case, it's not necessary and we can just go on our -+ // merry way. -+ int __ext_bom = __state._M_get_external_bom(); -+ if (__ext_bom) -+ { -+ size_t __size = __from_end - __from; -+ extern_type* __cfixed = static_cast(__builtin_alloca(sizeof(extern_type) * (__size + 1))); -+ __cfixed[0] = static_cast(__ext_bom); -+ char_traits::copy(__cfixed + 1, __from, __size); -+ __cfrom = reinterpret_cast(__cfixed); -+ __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+ &__flen, &__cto, &__tlen); -+ } -+ else -+ { -+ extern_type* __cfixed = const_cast(__from); -+ __cfrom = reinterpret_cast(__cfixed); -+ __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+ &__flen, &__cto, &__tlen); -+ } -+ -+ -+ if (__conv != size_t(-1)) -+ { -+ __from_next = reinterpret_cast(__cfrom); -+ __to_next = reinterpret_cast(__cto); -+ __ret = codecvt_base::ok; -+ } -+ else -+ { -+ if (__flen < static_cast(__from_end - __from)) -+ { -+ __from_next = reinterpret_cast(__cfrom); -+ __to_next = reinterpret_cast(__cto); -+ __ret = codecvt_base::partial; -+ } -+ else -+ __ret = codecvt_base::error; -+ } -+ } -+ return __ret; -+ } -+ -+ template -+ int -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_encoding() const throw() -+ { -+ int __ret = 0; -+ if (sizeof(_ExternT) <= sizeof(_InternT)) -+ __ret = sizeof(_InternT)/sizeof(_ExternT); -+ return __ret; -+ } -+ -+ template -+ bool -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_always_noconv() const throw() -+ { return false; } -+ -+ template -+ int -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_length(const state_type&, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { return min(__max, static_cast(__end - __from)); } -+ -+#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS -+// 74. Garbled text for codecvt::do_max_length -+ template -+ int -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_max_length() const throw() -+ { return 1; } -+#endif -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/collate_members.cc 2004-01-09 08:06:24.000000000 -0600 -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ int -+ collate::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2004-01-09 08:15:41.000000000 -0600 -@@ -0,0 +1,274 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname::ctype_byname(const char* __s, size_t __refs) -+ : ctype(0, false, __refs) -+ { -+ _S_destroy_c_locale(_M_c_locale_ctype); -+ _S_create_c_locale(_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_toupper = _M_c_locale_ctype->__ctype_toupper; -+ _M_tolower = _M_c_locale_ctype->__ctype_tolower; -+ _M_table = _M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ ctype::__wmask_type -+ ctype::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = 0; -+ } -+ return __ret; -+ }; -+ -+ wchar_t -+ ctype::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ bool __ret = false; -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ { -+ const mask __bit = static_cast(_ISbit(__bitcur)); -+ if (__m & __bit) -+ __ret |= __iswctype_l(__c, _M_convert_to_wmask(__bit), -+ _M_c_locale_ctype); -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (;__lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ { -+ const mask __bit = static_cast(_ISbit(__bitcur)); -+ if (__iswctype_l(*__lo, _M_convert_to_wmask(__bit), -+ _M_c_locale_ctype)) -+ __m |= __bit; -+ } -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype:: -+ do_widen(char __c) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wchar_t __ret = btowc(__c); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ const char* -+ ctype:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ mbstate_t __state; -+ memset(static_cast(&__state), 0, sizeof(mbstate_t)); -+ mbsrtowcs(__dest, &__lo, __hi - __lo, &__state); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ char -+ ctype:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ size_t __offset = 0; -+ while (true) -+ { -+ const wchar_t* __start = __lo + __offset; -+ size_t __len = __hi - __start; -+ -+ mbstate_t __state; -+ memset(static_cast(&__state), 0, sizeof(mbstate_t)); -+ size_t __con = wcsrtombs(__dest + __offset, &__start, __len, &__state); -+ if (__con != __len && __start != 0) -+ { -+ __offset = __start - __lo; -+ __dest[__offset++] = __dfault; -+ } -+ else -+ break; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+#endif // _GLIBCPP_USE_WCHAR_T -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/messages_members.cc 2004-01-09 08:46:16.000000000 -0600 -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/messages_members.h 2004-01-09 08:52:48.000000000 -0600 -@@ -0,0 +1,122 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template -+ messages<_CharT>::messages(size_t __refs) -+ : locale::facet(__refs) -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ _M_name_messages = _S_c_name; -+#endif -+ _M_c_locale_messages = _S_c_locale; -+ } -+ -+ template -+ messages<_CharT>::messages(__c_locale __cloc, -+ const char* __s, size_t __refs) -+ : locale::facet(__refs) -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ _M_name_messages = new char[strlen(__s) + 1]; -+ strcpy(_M_name_messages, __s); -+#endif -+ _M_c_locale_messages = _S_clone_c_locale(__cloc); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template -+ messages<_CharT>::~messages() -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ if (_S_c_name != _M_name_messages) -+ delete [] _M_name_messages; -+#endif -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ if (_S_c_name != _M_name_messages) -+ delete [] _M_name_messages; -+ _M_name_messages = new char[strlen(__s) + 1]; -+ strcpy(_M_name_messages, __s); -+#endif -+ _S_destroy_c_locale(_M_c_locale_messages); -+ _S_create_c_locale(_M_c_locale_messages, __s); -+ } -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2004-01-09 18:20:23.000000000 -0600 -@@ -0,0 +1,578 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = space; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[0] = sign; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[0] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = space; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__space) -+ { -+ // Have space. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ } -+ else -+ { -+ // Have none. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__space) -+ { -+ // Have space. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ } -+ else -+ { -+ // Have none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ default: -+ ; -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = '.'; -+ _M_thousands_sep = ','; -+ _M_grouping = ""; -+ _M_curr_symbol = ""; -+ _M_positive_sign = ""; -+ _M_negative_sign = ""; -+ _M_frac_digits = 0; -+ _M_pos_format = money_base::_S_default_pattern; -+ _M_neg_format = money_base::_S_default_pattern; -+ } -+ else -+ { -+ // Named locale. -+ _M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, __cloc)); -+ _M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, __cloc)); -+ _M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_negative_sign = "()"; -+ else -+ _M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ -+ // _Intl == true -+ _M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_pos_format = _S_construct_pattern(__pprecedes, __pspace, __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = '.'; -+ _M_thousands_sep = ','; -+ _M_grouping = ""; -+ _M_curr_symbol = ""; -+ _M_positive_sign = ""; -+ _M_negative_sign = ""; -+ _M_frac_digits = 0; -+ _M_pos_format = money_base::_S_default_pattern; -+ _M_neg_format = money_base::_S_default_pattern; -+ } -+ else -+ { -+ // Named locale. -+ _M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, __cloc)); -+ _M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, __cloc)); -+ _M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_negative_sign = "()"; -+ else -+ _M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ -+ // _Intl == false -+ _M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_pos_format = _S_construct_pattern(__pprecedes, __pspace, __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = L'.'; -+ _M_thousands_sep = L','; -+ _M_grouping = ""; -+ _M_curr_symbol = L""; -+ _M_positive_sign = L""; -+ _M_negative_sign = L""; -+ _M_frac_digits = 0; -+ _M_pos_format = money_base::_S_default_pattern; -+ _M_neg_format = money_base::_S_default_pattern; -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_decimal_point = __cloc->decimal_point_wc; -+ _M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_decimal_point = __global_locale->decimal_point_wc; -+ _M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ _M_decimal_point = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+ -+ _M_thousands_sep = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w); -+#endif -+ _M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__cpossign, __len, &__state); -+ _M_positive_sign = __wcs; -+ } -+ else -+ _M_positive_sign = L""; -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__cnegsign, __len, &__state); -+ _M_negative_sign = __wcs; -+ } -+ else -+ _M_negative_sign = L""; -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_curr_symbol = __wcs; -+ } -+ else -+ _M_curr_symbol = L""; -+ -+ _M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_pos_format = _S_construct_pattern(__pprecedes, __pspace, __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = L'.'; -+ _M_thousands_sep = L','; -+ _M_grouping = ""; -+ _M_curr_symbol = L""; -+ _M_positive_sign = L""; -+ _M_negative_sign = L""; -+ _M_frac_digits = 0; -+ _M_pos_format = money_base::_S_default_pattern; -+ _M_neg_format = money_base::_S_default_pattern; -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_decimal_point = __cloc->decimal_point_wc; -+ _M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_decimal_point = __global_locale->decimal_point_wc; -+ _M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ _M_decimal_point = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+ _M_thousands_sep = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w); -+#endif -+ _M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__cpossign, __len, &__state); -+ _M_positive_sign = __wcs; -+ } -+ else -+ _M_positive_sign = L""; -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__cnegsign, __len, &__state); -+ _M_negative_sign = __wcs; -+ } -+ else -+ _M_negative_sign = L""; -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_curr_symbol = __wcs; -+ } -+ else -+ _M_curr_symbol = L""; -+ -+ _M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_pos_format = _S_construct_pattern(__pprecedes, __pspace, __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (wcslen(_M_positive_sign)) -+ delete [] _M_positive_sign; -+ if (wcslen(_M_negative_sign) && (wcscmp(_M_negative_sign, L"()") != 0)) -+ delete [] _M_negative_sign; -+ if (wcslen(_M_curr_symbol)) -+ delete [] _M_curr_symbol; -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (wcslen(_M_positive_sign)) -+ delete [] _M_positive_sign; -+ if (wcslen(_M_negative_sign) && (wcscmp(_M_negative_sign, L"()") != 0)) -+ delete [] _M_negative_sign; -+ if (wcslen(_M_curr_symbol)) -+ delete [] _M_curr_symbol; -+ } -+#endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2004-01-09 18:20:59.000000000 -0600 -@@ -0,0 +1,129 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = '.'; -+ _M_thousands_sep = ','; -+ _M_grouping = ""; -+ } -+ else -+ { -+ // Named locale. -+ _M_decimal_point = *(__nl_langinfo_l(RADIXCHAR, __cloc)); -+ _M_thousands_sep = *(__nl_langinfo_l(THOUSEP, __cloc)); -+ // Check for NUL, which implies no grouping. -+ if (_M_thousands_sep == '\0') -+ _M_grouping = ""; -+ else -+ _M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ } -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_truename = "true"; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_falsename = "false"; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = L'.'; -+ _M_thousands_sep = L','; -+ _M_grouping = ""; -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_decimal_point = __cloc->decimal_point_wc; -+ _M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_decimal_point = __global_locale->decimal_point_wc; -+ _M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ _M_decimal_point = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+ _M_thousands_sep = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w); -+#endif -+ if (_M_thousands_sep == L'\0') -+ _M_grouping = ""; -+ else -+ _M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ } -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_truename = L"true"; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_falsename = L"false"; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { } -+ #endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/time_members.cc 2004-01-09 08:25:03.000000000 -0600 -@@ -0,0 +1,341 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __strftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_c_locale; -+ -+ _M_date_format = "%m/%d/%y"; -+ _M_date_era_format = "%m/%d/%y"; -+ _M_time_format = "%H:%M:%S"; -+ _M_time_era_format = "%H:%M:%S"; -+ _M_date_time_format = ""; -+ _M_date_time_era_format = ""; -+ _M_am = "AM"; -+ _M_pm = "PM"; -+ _M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_day1 = "Sunday"; -+ _M_day2 = "Monday"; -+ _M_day3 = "Tuesday"; -+ _M_day4 = "Wednesday"; -+ _M_day5 = "Thursday"; -+ _M_day6 = "Friday"; -+ _M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_day_a1 = "Sun"; -+ _M_day_a2 = "Mon"; -+ _M_day_a3 = "Tue"; -+ _M_day_a4 = "Wed"; -+ _M_day_a5 = "Thu"; -+ _M_day_a6 = "Fri"; -+ _M_day_a7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_month01 = "January"; -+ _M_month02 = "February"; -+ _M_month03 = "March"; -+ _M_month04 = "April"; -+ _M_month05 = "May"; -+ _M_month06 = "June"; -+ _M_month07 = "July"; -+ _M_month08 = "August"; -+ _M_month09 = "September"; -+ _M_month10 = "October"; -+ _M_month11 = "November"; -+ _M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_month_a01 = "Jan"; -+ _M_month_a02 = "Feb"; -+ _M_month_a03 = "Mar"; -+ _M_month_a04 = "Apr"; -+ _M_month_a05 = "May"; -+ _M_month_a06 = "Jun"; -+ _M_month_a07 = "July"; -+ _M_month_a08 = "Aug"; -+ _M_month_a09 = "Sep"; -+ _M_month_a10 = "Oct"; -+ _M_month_a11 = "Nov"; -+ _M_month_a12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc); -+ _M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_day_a1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_day_a2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_day_a3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_day_a4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_day_a5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_day_a6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_day_a7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_month_a01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_month_a02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_month_a03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_month_a04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_month_a05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_month_a06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_month_a07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_month_a08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_month_a09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_month_a10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_month_a11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_month_a12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ void -+ __timepunct:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_c_locale; -+ -+ _M_date_format = L"%m/%d/%y"; -+ _M_date_era_format = L"%m/%d/%y"; -+ _M_time_format = L"%H:%M:%S"; -+ _M_time_era_format = L"%H:%M:%S"; -+ _M_date_time_format = L""; -+ _M_date_time_era_format = L""; -+ _M_am = L"AM"; -+ _M_pm = L"PM"; -+ _M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_day1 = L"Sunday"; -+ _M_day2 = L"Monday"; -+ _M_day3 = L"Tuesday"; -+ _M_day4 = L"Wednesday"; -+ _M_day5 = L"Thursday"; -+ _M_day6 = L"Friday"; -+ _M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_day_a1 = L"Sun"; -+ _M_day_a2 = L"Mon"; -+ _M_day_a3 = L"Tue"; -+ _M_day_a4 = L"Wed"; -+ _M_day_a5 = L"Thu"; -+ _M_day_a6 = L"Fri"; -+ _M_day_a7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_month01 = L"January"; -+ _M_month02 = L"February"; -+ _M_month03 = L"March"; -+ _M_month04 = L"April"; -+ _M_month05 = L"May"; -+ _M_month06 = L"June"; -+ _M_month07 = L"July"; -+ _M_month08 = L"August"; -+ _M_month09 = L"September"; -+ _M_month10 = L"October"; -+ _M_month11 = L"November"; -+ _M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_month_a01 = L"Jan"; -+ _M_month_a02 = L"Feb"; -+ _M_month_a03 = L"Mar"; -+ _M_month_a04 = L"Apr"; -+ _M_month_a05 = L"May"; -+ _M_month_a06 = L"Jun"; -+ _M_month_a07 = L"July"; -+ _M_month_a08 = L"Aug"; -+ _M_month_a09 = L"Sep"; -+ _M_month_a10 = L"Oct"; -+ _M_month_a11 = L"Nov"; -+ _M_month_a12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_date_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+ _M_date_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+ _M_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+ _M_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+ _M_date_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+ _M_date_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+ _M_am = reinterpret_cast(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+ _M_pm = reinterpret_cast(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+ _M_am_pm_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_day1 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+ _M_day2 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+ _M_day3 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+ _M_day4 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+ _M_day5 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+ _M_day6 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+ _M_day7 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_day_a1 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+ _M_day_a2 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+ _M_day_a3 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+ _M_day_a4 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+ _M_day_a5 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+ _M_day_a6 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+ _M_day_a7 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+ // Month names, starting with "C"'s January. -+ _M_month01 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+ _M_month02 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+ _M_month03 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+ _M_month04 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+ _M_month05 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+ _M_month06 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+ _M_month07 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+ _M_month08 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+ _M_month09 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+ _M_month10 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+ _M_month11 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+ _M_month12 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_month_a01 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+ _M_month_a02 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+ _M_month_a03 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+ _M_month_a04 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+ _M_month_a05 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+ _M_month_a06 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+ _M_month_a07 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+ _M_month_a08 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+ _M_month_a09 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+ _M_month_a10 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+ _M_month_a11 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+ _M_month_a12 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_12, __cloc)); -+ } -+#endif // 0 -+ } -+#endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/time_members.h 2004-01-09 04:26:21.000000000 -0600 -@@ -0,0 +1,68 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik -+ -+ template -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : locale::facet(__refs) -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ _M_name_timepunct = _S_c_name; -+#endif -+ _M_initialize_timepunct(); -+ } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, -+ const char* __s, -+ size_t __refs) -+ : locale::facet(__refs) -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ _M_name_timepunct = new char[strlen(__s) + 1]; -+ strcpy(_M_name_timepunct, __s); -+#endif -+ _M_initialize_timepunct(__cloc); -+ } -+ -+ template -+ __timepunct<_CharT>::~__timepunct() -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ if (_S_c_name != _M_name_timepunct) -+ delete [] _M_name_timepunct; -+#endif -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } -diff -urN gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_base.h 2004-01-09 02:54:54.000000000 -0600 -@@ -0,0 +1,57 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ // NB: Offsets into ctype::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISgraph; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalnum; -+ }; -diff -urN gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_inline.h 2002-06-24 00:49:19.000000000 -0500 -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast(__c)] & __m; } -+ -+ const char* -+ ctype:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } -diff -urN gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2004-01-09 03:34:53.000000000 -0600 -@@ -0,0 +1,90 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype::classic_table() throw() -+ { -+ return __C_ctype_b; -+ } -+ -+ ctype::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : __ctype_abstract_base(__refs), _M_del(__table != 0 && __del) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ _M_c_locale_ctype = _S_c_locale; -+ } -+ -+ ctype::ctype(const mask* __table, bool __del, size_t __refs) : -+ __ctype_abstract_base(__refs), _M_del(__table != 0 && __del) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ _M_c_locale_ctype = _S_c_locale; -+ } -+ -+ char -+ ctype::do_toupper(char __c) const -+ { return _M_toupper[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype::do_tolower(char __c) const -+ { return _M_tolower[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -diff -urN gcc-3.3.2/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-3.3.2/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/os_defines.h 2004-01-09 04:56:13.000000000 -0600 -@@ -0,0 +1,56 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCPP_OS_DEFINES -+#define _GLIBCPP_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include -+ -+// These systems have declarations mismatching those in libio.h by -+// omitting throw qualifiers. Cleanest way out is to not provide -+// throw-qualifiers at all. Defining it as empty here will make libio.h -+// not define it. -+#undef __THROW -+#define __THROW -+ -+// Tell Glibc not to try to provide its own inline versions of -+// some math functions. Those cause assembly-time clashes with -+// our definitions. -+#define __NO_MATH_INLINES -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif diff --git a/openembedded/packages/gcc/gcc-3.3.4/gcc34-15089.patch b/openembedded/packages/gcc/gcc-3.3.4/gcc34-15089.patch deleted file mode 100644 index 3b7a056e6..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/gcc34-15089.patch +++ /dev/null @@ -1,19 +0,0 @@ -2004-04-29 Philip Blundell - - * loop.c (scan_loop): Don't delete SET of a hard register. - -Index: loop.c -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/loop.c,v -retrieving revision 1.488.2.3 -diff -u -r1.488.2.3 loop.c ---- gcc/gcc/loop.c 14 Feb 2004 14:46:03 -0000 1.488.2.3 -+++ gcc/gcc/loop.c 28 Apr 2004 22:02:53 -0000 -@@ -929,6 +929,7 @@ - || (! (GET_CODE (SET_SRC (set)) == REG - && (REGNO (SET_SRC (set)) - < FIRST_PSEUDO_REGISTER)))) -+ && regno >= FIRST_PSEUDO_REGISTER - /* This test is not redundant; SET_SRC (set) might be - a call-clobbered register and the life of REGNO - might span a call. */ diff --git a/openembedded/packages/gcc/gcc-3.3.4/libibery-crosstool.patch b/openembedded/packages/gcc/gcc-3.3.4/libibery-crosstool.patch deleted file mode 100644 index 2898cf18f..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/libibery-crosstool.patch +++ /dev/null @@ -1,683 +0,0 @@ -diff -urN gcc-3.3.3.orig/libiberty/configure gcc-3.3.3/libiberty/configure ---- gcc-3.3.3.orig/libiberty/configure 2003-11-12 12:32:29.000000000 -0500 -+++ gcc-3.3.3/libiberty/configure 2004-04-09 23:04:23.000000000 -0400 -@@ -1000,13 +1000,60 @@ - fi - - -+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -+echo "configure:1005: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 -+ -+ac_ext=c -+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -+cross_compiling=$ac_cv_prog_cc_cross -+ -+cat > conftest.$ac_ext << EOF -+ -+#line 1016 "configure" -+#include "confdefs.h" -+ -+main(){return(0);} -+EOF -+if { (eval echo configure:1021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ ac_cv_prog_cc_works=yes -+ # If we can't run a trivial program, we are probably using a cross compiler. -+ if (./conftest; exit) 2>/dev/null; then -+ ac_cv_prog_cc_cross=no -+ else -+ ac_cv_prog_cc_cross=yes -+ fi -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ ac_cv_prog_cc_works=no -+fi -+rm -fr conftest* -+ac_ext=c -+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -+cross_compiling=$ac_cv_prog_cc_cross -+ -+echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -+if test $ac_cv_prog_cc_works = no; then -+ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -+fi -+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -+echo "configure:1047: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -+echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -+cross_compiling=$ac_cv_prog_cc_cross -+ - - if test "x$CC" != xcc; then - echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6 --echo "configure:1007: checking whether $CC and cc understand -c and -o together" >&5 -+echo "configure:1054: checking whether $CC and cc understand -c and -o together" >&5 - else - echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6 --echo "configure:1010: checking whether cc understands -c and -o together" >&5 -+echo "configure:1057: checking whether cc understands -c and -o together" >&5 - fi - set dummy $CC; ac_cc="`echo $2 | - sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" -@@ -1018,16 +1065,16 @@ - # We do the test twice because some compilers refuse to overwrite an - # existing .o file with -o, though they will create one. - ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5' --if { (eval echo configure:1022: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && -- test -f conftest.o && { (eval echo configure:1023: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; -+if { (eval echo configure:1069: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && -+ test -f conftest.o && { (eval echo configure:1070: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; - then - eval ac_cv_prog_cc_${ac_cc}_c_o=yes - if test "x$CC" != xcc; then - # Test first that cc exists at all. -- if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1028: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then -+ if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then - ac_try='cc -c conftest.c -o conftest.o 1>&5' -- if { (eval echo configure:1030: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && -- test -f conftest.o && { (eval echo configure:1031: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; -+ if { (eval echo configure:1077: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && -+ test -f conftest.o && { (eval echo configure:1078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; - then - # cc works too. - : -@@ -1063,7 +1110,7 @@ - - - echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 --echo "configure:1067: checking for POSIXized ISC" >&5 -+echo "configure:1114: checking for POSIXized ISC" >&5 - if test -d /etc/conf/kconfig.d && - grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 - then -@@ -1084,12 +1131,12 @@ - fi - - echo $ac_n "checking for working const""... $ac_c" 1>&6 --echo "configure:1088: checking for working const" >&5 -+echo "configure:1135: checking for working const" >&5 - if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:1189: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_const=yes - else -@@ -1159,21 +1206,21 @@ - fi - - echo $ac_n "checking for inline""... $ac_c" 1>&6 --echo "configure:1163: checking for inline" >&5 -+echo "configure:1210: checking for inline" >&5 - if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - ac_cv_c_inline=no - for ac_kw in inline __inline__ __inline; do - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:1224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_inline=$ac_kw; break - else -@@ -1216,7 +1263,7 @@ - # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" - # ./install, which can be erroneously created by make from ./install.sh. - echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 --echo "configure:1220: checking for a BSD compatible install" >&5 -+echo "configure:1267: checking for a BSD compatible install" >&5 - if test -z "$INSTALL"; then - if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -@@ -1277,7 +1324,7 @@ - # able to link anything, it had better be able to at least compile - # something. - echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 --echo "configure:1281: checking how to run the C preprocessor" >&5 -+echo "configure:1328: checking how to run the C preprocessor" >&5 - # On Suns, sometimes $CPP names a directory. - if test -n "$CPP" && test -d "$CPP"; then - CPP= -@@ -1292,13 +1339,13 @@ - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < - Syntax Error - EOF - ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" --{ (eval echo configure:1302: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:1349: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } - ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` - if test -z "$ac_err"; then - : -@@ -1309,13 +1356,13 @@ - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < - Syntax Error - EOF - ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" --{ (eval echo configure:1319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:1366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } - ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` - if test -z "$ac_err"; then - : -@@ -1326,13 +1373,13 @@ - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < - Syntax Error - EOF - ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" --{ (eval echo configure:1336: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:1383: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } - ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` - if test -z "$ac_err"; then - : -@@ -1360,17 +1407,17 @@ - do - ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` - echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 --echo "configure:1364: checking for $ac_hdr" >&5 -+echo "configure:1411: checking for $ac_hdr" >&5 - if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - EOF - ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" --{ (eval echo configure:1374: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:1421: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } - ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` - if test -z "$ac_err"; then - rm -rf conftest* -@@ -1397,12 +1444,12 @@ - done - - echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 --echo "configure:1401: checking for sys/wait.h that is POSIX.1 compatible" >&5 -+echo "configure:1448: checking for sys/wait.h that is POSIX.1 compatible" >&5 - if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - #include -@@ -1418,7 +1465,7 @@ - s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; - ; return 0; } - EOF --if { (eval echo configure:1422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:1469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_header_sys_wait_h=yes - else -@@ -1439,12 +1486,12 @@ - fi - - echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 --echo "configure:1443: checking whether time.h and sys/time.h may both be included" >&5 -+echo "configure:1490: checking whether time.h and sys/time.h may both be included" >&5 - if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - #include -@@ -1453,7 +1500,7 @@ - struct tm *tp; - ; return 0; } - EOF --if { (eval echo configure:1457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:1504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_header_time=yes - else -@@ -1475,19 +1522,19 @@ - - - echo $ac_n "checking whether errno must be declared""... $ac_c" 1>&6 --echo "configure:1479: checking whether errno must be declared" >&5 -+echo "configure:1526: checking whether errno must be declared" >&5 - if eval "test \"`echo '$''{'libiberty_cv_declare_errno'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - int main() { - int x = errno; - ; return 0; } - EOF --if { (eval echo configure:1491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:1538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - libiberty_cv_declare_errno=no - else -@@ -1509,12 +1556,12 @@ - - - echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 --echo "configure:1513: checking for ANSI C header files" >&5 -+echo "configure:1560: checking for ANSI C header files" >&5 - if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - #include -@@ -1522,7 +1569,7 @@ - #include - EOF - ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" --{ (eval echo configure:1526: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:1573: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } - ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` - if test -z "$ac_err"; then - rm -rf conftest* -@@ -1539,7 +1586,7 @@ - if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat > conftest.$ac_ext < - EOF -@@ -1557,7 +1604,7 @@ - if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat > conftest.$ac_ext < - EOF -@@ -1578,7 +1625,7 @@ - : - else - cat > conftest.$ac_ext < - #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -@@ -1589,7 +1636,7 @@ - exit (0); } - - EOF --if { (eval echo configure:1593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -+if { (eval echo configure:1640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null - then - : - else -@@ -1613,12 +1660,12 @@ - fi - - echo $ac_n "checking for uintptr_t""... $ac_c" 1>&6 --echo "configure:1617: checking for uintptr_t" >&5 -+echo "configure:1664: checking for uintptr_t" >&5 - if eval "test \"`echo '$''{'ac_cv_type_uintptr_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - #if STDC_HEADERS -@@ -1654,12 +1701,12 @@ - - - echo $ac_n "checking for pid_t""... $ac_c" 1>&6 --echo "configure:1658: checking for pid_t" >&5 -+echo "configure:1705: checking for pid_t" >&5 - if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - #if STDC_HEADERS -@@ -1746,12 +1793,12 @@ - for ac_func in asprintf atexit basename bcmp bcopy bsearch bzero calloc clock - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 --echo "configure:1750: checking for $ac_func" >&5 -+echo "configure:1797: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:1825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -1801,12 +1848,12 @@ - for ac_func in getcwd getpagesize index insque mkstemps memchr memcmp memcpy - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 --echo "configure:1805: checking for $ac_func" >&5 -+echo "configure:1852: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:1880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -1856,12 +1903,12 @@ - for ac_func in memmove memset putenv random rename rindex sigsetmask - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 --echo "configure:1860: checking for $ac_func" >&5 -+echo "configure:1907: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:1935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -1911,12 +1958,12 @@ - for ac_func in strcasecmp setenv strchr strdup strncasecmp strrchr strstr - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 --echo "configure:1915: checking for $ac_func" >&5 -+echo "configure:1962: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:1990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -1966,12 +2013,12 @@ - for ac_func in strtod strtol strtoul tmpnam vasprintf vfprintf vprintf - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 --echo "configure:1970: checking for $ac_func" >&5 -+echo "configure:2017: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:2045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -2021,12 +2068,12 @@ - for ac_func in vsprintf waitpid getrusage on_exit psignal strerror strsignal - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 --echo "configure:2025: checking for $ac_func" >&5 -+echo "configure:2072: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:2100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -2076,12 +2123,12 @@ - for ac_func in sysconf times sbrk gettimeofday ffs - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 --echo "configure:2080: checking for $ac_func" >&5 -+echo "configure:2127: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:2155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -2131,12 +2178,12 @@ - for ac_func in realpath canonicalize_file_name - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 --echo "configure:2135: checking for $ac_func" >&5 -+echo "configure:2182: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:2210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -2186,12 +2233,12 @@ - for ac_func in pstat_getstatic pstat_getdynamic sysmp getsysinfo table sysctl - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 --echo "configure:2190: checking for $ac_func" >&5 -+echo "configure:2237: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:2265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -2443,53 +2490,6 @@ - - # We haven't set the list of objects yet. Use the standard autoconf - # tests. This will only work if the compiler works. -- echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 --echo "configure:2448: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 -- --ac_ext=c --# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. --ac_cpp='$CPP $CPPFLAGS' --ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' --ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' --cross_compiling=$ac_cv_prog_cc_cross -- --cat > conftest.$ac_ext << EOF -- --#line 2459 "configure" --#include "confdefs.h" -- --main(){return(0);} --EOF --if { (eval echo configure:2464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -- ac_cv_prog_cc_works=yes -- # If we can't run a trivial program, we are probably using a cross compiler. -- if (./conftest; exit) 2>/dev/null; then -- ac_cv_prog_cc_cross=no -- else -- ac_cv_prog_cc_cross=yes -- fi --else -- echo "configure: failed program was:" >&5 -- cat conftest.$ac_ext >&5 -- ac_cv_prog_cc_works=no --fi --rm -fr conftest* --ac_ext=c --# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. --ac_cpp='$CPP $CPPFLAGS' --ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' --ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' --cross_compiling=$ac_cv_prog_cc_cross -- --echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 --if test $ac_cv_prog_cc_works = no; then -- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } --fi --echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 --echo "configure:2490: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 --echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 --cross_compiling=$ac_cv_prog_cc_cross -- - for ac_func in $funcs - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -diff -urN gcc-3.3.3.orig/libiberty/configure.in gcc-3.3.3/libiberty/configure.in ---- gcc-3.3.3.orig/libiberty/configure.in 2003-11-12 12:32:30.000000000 -0500 -+++ gcc-3.3.3/libiberty/configure.in 2004-04-09 23:04:05.000000000 -0400 -@@ -100,6 +100,7 @@ - AC_CHECK_TOOL(RANLIB, ranlib, :) - - LIB_AC_PROG_CC -+AC_PROG_CC_WORKS - - AC_PROG_CC_C_O - # autoconf is lame and doesn't give us any substitution variable for this. -@@ -396,7 +397,6 @@ - - # We haven't set the list of objects yet. Use the standard autoconf - # tests. This will only work if the compiler works. -- AC_PROG_CC_WORKS - AC_REPLACE_FUNCS($funcs) - libiberty_AC_FUNC_C_ALLOCA - AC_FUNC_VFORK diff --git a/openembedded/packages/gcc/gcc-3.3.4/reverse-compare.patch b/openembedded/packages/gcc/gcc-3.3.4/reverse-compare.patch deleted file mode 100644 index 7b6c1b642..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/reverse-compare.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- gcc-3.3.3/gcc/flow.c~ 2003-07-30 01:57:24.000000000 +0100 -+++ gcc-3.3.3/gcc/flow.c 2004-04-23 19:23:43.000000000 +0100 -@@ -1904,6 +1904,7 @@ - regset diff = INITIALIZE_REG_SET (diff_head); - basic_block bb_true, bb_false; - rtx cond_true, cond_false, set_src; -+ enum rtx_code reversed_code; - int i; - - /* Identify the successor blocks. */ -@@ -1934,7 +1935,11 @@ - /* Extract the condition from the branch. */ - set_src = SET_SRC (pc_set (bb->end)); - cond_true = XEXP (set_src, 0); -- cond_false = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), -+ reversed_code = reverse_condition (GET_CODE (cond_true)); -+ if (reversed_code == UNKNOWN) -+ goto skip; -+ -+ cond_false = gen_rtx_fmt_ee (reversed_code, - GET_MODE (cond_true), XEXP (cond_true, 0), - XEXP (cond_true, 1)); - if (GET_CODE (XEXP (set_src, 1)) == PC) -@@ -1980,6 +1985,7 @@ - }); - } - -+ skip: - FREE_REG_SET (diff); - } - #endif diff --git a/openembedded/packages/gcc/gcc-3.3.4/sdk-libstdc++-includes.patch b/openembedded/packages/gcc/gcc-3.3.4/sdk-libstdc++-includes.patch deleted file mode 100644 index 9eb7d01fc..000000000 --- a/openembedded/packages/gcc/gcc-3.3.4/sdk-libstdc++-includes.patch +++ /dev/null @@ -1,48 +0,0 @@ ---- gcc-3.3.4/libstdc++-v3/testsuite/Makefile.am~ 2003-12-10 21:53:55.000000000 +0000 -+++ gcc-3.3.4/libstdc++-v3/testsuite/Makefile.am 2004-08-22 11:43:54.676189984 +0100 -@@ -53,7 +53,8 @@ - - INCLUDES = \ - -nostdinc++ \ -- @GLIBCPP_INCLUDES@ @LIBSUPCXX_INCLUDES@ @TOPLEVEL_INCLUDES@ -+ @GLIBCPP_INCLUDES@ @LIBSUPCXX_INCLUDES@ @TOPLEVEL_INCLUDES@ \ -+ -I$(toplevel_srcdir)/include - - ## Build support library. - noinst_LIBRARIES = libv3test.a ---- gcc-3.3.4/libstdc++-v3/src/Makefile.am~ 2004-01-12 23:00:30.000000000 +0000 -+++ gcc-3.3.4/libstdc++-v3/src/Makefile.am 2004-08-22 11:12:34.838968680 +0100 -@@ -191,7 +191,8 @@ - $(LIBSUPCXX_CXXFLAGS) \ - $(WARN_CXXFLAGS) \ - $(OPTIMIZE_CXXFLAGS) \ -- $(CONFIG_CXXFLAGS) -+ $(CONFIG_CXXFLAGS) \ -+ -I$(toplevel_srcdir)/include - - - # libstdc++ libtool notes ---- gcc-3.3.4/libstdc++-v3/testsuite/Makefile.in~ 2003-12-10 21:53:55.000000000 +0000 -+++ gcc-3.3.4/libstdc++-v3/testsuite/Makefile.in 2004-08-22 11:44:09.634915912 +0100 -@@ -175,7 +175,8 @@ - - INCLUDES = \ - -nostdinc++ \ -- @GLIBCPP_INCLUDES@ @LIBSUPCXX_INCLUDES@ @TOPLEVEL_INCLUDES@ -+ @GLIBCPP_INCLUDES@ @LIBSUPCXX_INCLUDES@ @TOPLEVEL_INCLUDES@ \ -+ -I$(toplevel_srcdir)/include - - - noinst_LIBRARIES = libv3test.a ---- gcc-3.3.4/libstdc++-v3/src/Makefile.in~ 2004-01-12 23:00:29.000000000 +0000 -+++ gcc-3.3.4/libstdc++-v3/src/Makefile.in 2004-08-22 11:27:29.380977624 +0100 -@@ -263,7 +263,8 @@ - $(LIBSUPCXX_CXXFLAGS) \ - $(WARN_CXXFLAGS) \ - $(OPTIMIZE_CXXFLAGS) \ -- $(CONFIG_CXXFLAGS) -+ $(CONFIG_CXXFLAGS) \ -+ -I$(toplevel_srcdir)/include - - - # libstdc++ libtool notes diff --git a/openembedded/packages/gcc/gcc-3.4.3/15342.patch b/openembedded/packages/gcc/gcc-3.4.3/15342.patch deleted file mode 100644 index d0f3e72d4..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/15342.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- gcc/gcc/regrename.c~ 2004-01-14 17:55:20.000000000 +0000 -+++ gcc/gcc/regrename.c 2005-02-28 07:24:25.893015200 +0000 -@@ -671,7 +671,8 @@ - - case SET: - scan_rtx (insn, &SET_SRC (x), class, action, OP_IN, 0); -- scan_rtx (insn, &SET_DEST (x), class, action, OP_OUT, 0); -+ scan_rtx (insn, &SET_DEST (x), class, action, -+ GET_CODE (PATTERN (insn)) == COND_EXEC ? OP_INOUT : OP_OUT, 0); - return; - - case STRICT_LOW_PART: -@@ -696,7 +697,8 @@ - abort (); - - case CLOBBER: -- scan_rtx (insn, &SET_DEST (x), class, action, OP_OUT, 1); -+ scan_rtx (insn, &SET_DEST (x), class, action, -+ GET_CODE (PATTERN (insn)) == COND_EXEC ? OP_INOUT : OP_OUT, 0); - return; - - case EXPR_LIST: diff --git a/openembedded/packages/gcc/gcc-3.4.3/GCC3.4.0VisibilityPatch.diff b/openembedded/packages/gcc/gcc-3.4.3/GCC3.4.0VisibilityPatch.diff deleted file mode 100644 index d51da7157..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/GCC3.4.0VisibilityPatch.diff +++ /dev/null @@ -1,1100 +0,0 @@ - -diff -aur gcc-3.4.0orig/gcc/c-common.c gcc-3.4.0/gcc/c-common.c ---- gcc-3.4.0orig/gcc/c-common.c 2004-03-19 01:32:59.000000000 +0000 -+++ gcc-3.4.0/gcc/c-common.c 2004-05-10 21:05:33.000000000 +0100 -@@ -833,7 +833,7 @@ - handle_deprecated_attribute }, - { "vector_size", 1, 1, false, true, false, - handle_vector_size_attribute }, -- { "visibility", 1, 1, true, false, false, -+ { "visibility", 1, 1, false, false, false, - handle_visibility_attribute }, - { "tls_model", 1, 1, true, false, false, - handle_tls_model_attribute }, -@@ -4886,7 +4886,16 @@ - - *no_add_attrs = true; - -- if (decl_function_context (decl) != 0 || ! TREE_PUBLIC (decl)) -+ if (TYPE_P (*node)) -+ { -+ if (TREE_CODE (*node) != RECORD_TYPE && TREE_CODE (*node) != UNION_TYPE) -+ { -+ warning ("`%s' attribute ignored on non-class types", -+ IDENTIFIER_POINTER (name)); -+ return NULL_TREE; -+ } -+ } -+ else if (decl_function_context (decl) != 0 || ! TREE_PUBLIC (decl)) - { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); - return NULL_TREE; -@@ -4897,6 +4906,14 @@ - error ("visibility arg not a string"); - return NULL_TREE; - } -+ -+ /* If this is a type, set the visibility on the type decl. */ -+ if (TYPE_P (decl)) -+ { -+ decl = TYPE_NAME (decl); -+ if (! decl) -+ return NULL_TREE; -+ } - - if (strcmp (TREE_STRING_POINTER (id), "default") == 0) - DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; -@@ -4908,6 +4925,14 @@ - DECL_VISIBILITY (decl) = VISIBILITY_PROTECTED; - else - error ("visibility arg must be one of \"default\", \"hidden\", \"protected\" or \"internal\""); -+ DECL_VISIBILITYSPECIFIED (decl) = 1; -+ -+ /* For decls only, go ahead and attach the attribute to the node as well. -+ This is needed so we can determine whether we have VISIBILITY_DEFAULT -+ because the visibility was not specified, or because it was explicitly -+ overridden from the class visibility. */ -+ if (DECL_P (*node)) -+ *no_add_attrs = false; - - return NULL_TREE; - } - -diff -aur gcc-3.4.0orig/gcc/c-decl.c gcc-3.4.0/gcc/c-decl.c ---- gcc-3.4.0orig/gcc/c-decl.c 2004-03-22 17:58:18.000000000 +0000 -+++ gcc-3.4.0/gcc/c-decl.c 2004-05-10 15:16:27.000000000 +0100 -@@ -1164,9 +1164,8 @@ - } - - /* warnings */ -- /* All decls must agree on a non-default visibility. */ -- if (DECL_VISIBILITY (newdecl) != VISIBILITY_DEFAULT -- && DECL_VISIBILITY (olddecl) != VISIBILITY_DEFAULT -+ /* All decls must agree on a visibility. */ -+ if (DECL_VISIBILITYSPECIFIED (newdecl) && DECL_VISIBILITYSPECIFIED (olddecl) - && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl)) - { - warning ("%Jredeclaration of '%D' with different visibility " -@@ -1361,9 +1360,12 @@ - Currently, it can only be defined in the prototype. */ - COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl); - -- /* If either declaration has a nondefault visibility, use it. */ -- if (DECL_VISIBILITY (olddecl) != VISIBILITY_DEFAULT) -- DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl); -+ /* Use visibility of whichever declaration had it specified */ -+ if (DECL_VISIBILITYSPECIFIED (olddecl)) -+ { -+ DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl); -+ DECL_VISIBILITYSPECIFIED (newdecl) = 1; -+ } - - if (TREE_CODE (newdecl) == FUNCTION_DECL) - { - -diff -aur gcc-3.4.0orig/gcc/common.opt gcc-3.4.0/gcc/common.opt ---- gcc-3.4.0orig/gcc/common.opt 2004-02-18 00:09:04.000000000 +0000 -+++ gcc-3.4.0/gcc/common.opt 2004-05-09 08:10:50.000000000 +0100 -@@ -718,6 +718,11 @@ - Common - Add extra commentary to assembler output - -+fvisibility= -+Common Joined RejectNegative -+-fvisibility=[default|internal|hidden|protected] Set the default symbol visibility -+ -+ - fvpt - Common - Use expression value profiles in optimizations - -diff -aur gcc-3.4.0orig/gcc/c.opt gcc-3.4.0/gcc/c.opt ---- gcc-3.4.0orig/gcc/c.opt 2004-02-18 00:09:03.000000000 +0000 -+++ gcc-3.4.0/gcc/c.opt 2004-05-09 08:10:50.000000000 +0100 -@@ -656,6 +656,10 @@ - C++ ObjC++ - Use __cxa_atexit to register destructors - -+fvisibility-inlines-hidden -+C++ -+Marks all inlined methods as having hidden visibility -+ - fvtable-gc - C++ ObjC++ - Discard unused virtual functions -diff -aur gcc-3.4.0orig/gcc/c-opts.c gcc-3.4.0/gcc/c-opts.c ---- gcc-3.4.0orig/gcc/c-opts.c 2004-02-18 00:09:03.000000000 +0000 -+++ gcc-3.4.0/gcc/c-opts.c 2004-05-09 08:10:50.000000000 +0100 -@@ -912,6 +912,10 @@ - case OPT_fuse_cxa_atexit: - flag_use_cxa_atexit = value; - break; -+ -+ case OPT_fvisibility_inlines_hidden: -+ visibility_options.inlineshidden = value; -+ break; - - case OPT_fweak: - flag_weak = value; - -diff -aur gcc-3.4.0orig/gcc/cp/class.c gcc-3.4.0/gcc/cp/class.c ---- gcc-3.4.0orig/gcc/cp/class.c 2004-03-09 07:27:23.000000000 +0000 -+++ gcc-3.4.0/gcc/cp/class.c 2004-05-10 21:06:50.000000000 +0100 -@@ -524,6 +524,10 @@ - DECL_ALIGN (decl) = MAX (TYPE_ALIGN (double_type_node), - DECL_ALIGN (decl)); - -+ /* The vtable's visibility is the class visibility. There is no way -+ to override the visibility for just the vtable. */ -+ DECL_VISIBILITY (decl) = CLASSTYPE_VISIBILITY (class_type); -+ DECL_VISIBILITYSPECIFIED (decl) = CLASSTYPE_VISIBILITYSPECIFIED (class_type); - import_export_vtable (decl, class_type, 0); - - return decl; -@@ -2971,7 +2975,25 @@ - continue; - - if (TREE_CODE (x) == CONST_DECL || TREE_CODE (x) == VAR_DECL) -- continue; -+ { -+ /* Apply the class's visibility attribute to static members -+ which do not have a visibility attribute. */ -+ if (! lookup_attribute ("visibility", DECL_ATTRIBUTES (x))) -+ { -+ if (visibility_options.inlineshidden && DECL_INLINE (x)) -+ { -+ DECL_VISIBILITY (x) = VISIBILITY_HIDDEN; -+ DECL_VISIBILITYSPECIFIED (x) = 1; -+ } -+ else -+ { -+ DECL_VISIBILITY (x) = CLASSTYPE_VISIBILITY (current_class_type); -+ DECL_VISIBILITYSPECIFIED (x) = CLASSTYPE_VISIBILITYSPECIFIED (current_class_type); -+ } -+ } -+ -+ continue; -+ } - - /* Now it can only be a FIELD_DECL. */ - -@@ -3708,6 +3730,22 @@ - check_for_override (x, t); - if (DECL_PURE_VIRTUAL_P (x) && ! DECL_VINDEX (x)) - cp_error_at ("initializer specified for non-virtual method `%D'", x); -+ -+ /* Apply the class's visibility attribute to methods which do -+ not have a visibility attribute. */ -+ if (! lookup_attribute ("visibility", DECL_ATTRIBUTES (x))) -+ { -+ if (visibility_options.inlineshidden && DECL_INLINE (x)) -+ { -+ DECL_VISIBILITY (x) = VISIBILITY_HIDDEN; -+ DECL_VISIBILITYSPECIFIED (x) = 1; -+ } -+ else -+ { -+ DECL_VISIBILITY (x) = CLASSTYPE_VISIBILITY (current_class_type); -+ DECL_VISIBILITYSPECIFIED (x) = CLASSTYPE_VISIBILITYSPECIFIED (current_class_type); -+ } -+ } - - /* The name of the field is the original field name - Save this in auxiliary field for later overloading. */ -@@ -7830,3 +7868,4 @@ - *vid->last_init = build_tree_list (NULL_TREE, init); - vid->last_init = &TREE_CHAIN (*vid->last_init); - } -+ - -diff -aur gcc-3.4.0orig/gcc/cp/cp-tree.h gcc-3.4.0/gcc/cp/cp-tree.h ---- gcc-3.4.0orig/gcc/cp/cp-tree.h 2004-03-20 00:13:08.000000000 +0000 -+++ gcc-3.4.0/gcc/cp/cp-tree.h 2004-05-10 20:56:56.000000000 +0100 -@@ -1008,7 +1008,12 @@ - #define PUBLICLY_UNIQUELY_DERIVED_P(PARENT, TYPE) \ - (lookup_base ((TYPE), (PARENT), ba_not_special | ba_quiet, NULL) \ - != NULL_TREE) -- -+ -+/* Gives the visibility specification for a class type. */ -+#define CLASSTYPE_VISIBILITY(TYPE) DECL_VISIBILITY (TYPE_NAME (TYPE)) -+#define CLASSTYPE_VISIBILITYSPECIFIED(TYPE) DECL_VISIBILITYSPECIFIED (TYPE_NAME (TYPE)) -+ -+ - /* This is a few header flags for 'struct lang_type'. Actually, - all but the first are used only for lang_type_class; they - are put in this structure to save space. */ - -diff -aur gcc-3.4.0orig/gcc/cp/decl.c gcc-3.4.0/gcc/cp/decl.c ---- gcc-3.4.0orig/gcc/cp/decl.c 2004-04-01 21:47:21.000000000 +0100 -+++ gcc-3.4.0/gcc/cp/decl.c 2004-05-28 21:16:11.000000000 +0100 -@@ -1869,17 +1869,34 @@ - DECL_COMMON (newdecl) = DECL_COMMON (olddecl); - COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl); - -- /* If either declaration has a nondefault visibility, use it. */ -- if (DECL_VISIBILITY (olddecl) != VISIBILITY_DEFAULT) -+ /* Warn about conflicting visibility specifications. */ -+ if (DECL_VISIBILITYSPECIFIED (olddecl) && DECL_VISIBILITYSPECIFIED (newdecl) -+ && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl)) -+ { -+ warning ("%J'%D': visibility attribute ignored because it", -+ newdecl, newdecl); -+ warning ("%Jconflicts with previous declaration here", olddecl); -+ } -+ /* Choose the declaration which specified visibility. */ -+ if (DECL_VISIBILITYSPECIFIED (olddecl)) - { -- if (DECL_VISIBILITY (newdecl) != VISIBILITY_DEFAULT -- && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl)) -- { -- warning ("%J'%D': visibility attribute ignored because it", -- newdecl, newdecl); -- warning ("%Jconflicts with previous declaration here", olddecl); -- } - DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl); -+ DECL_VISIBILITYSPECIFIED (newdecl) = 1; -+ } -+ /* If it's a definition of a global operator new or operator -+ delete, it must be default visibility. */ -+ if (NEW_DELETE_OPNAME_P (DECL_NAME (newdecl)) && DECL_INITIAL (newdecl) != NULL_TREE) -+ { -+ if (!DECL_FUNCTION_MEMBER_P (newdecl) && VISIBILITY_DEFAULT != DECL_VISIBILITY (newdecl)) -+ { -+ warning ("%J`%D': ignoring non-default symbol", -+ newdecl, newdecl); -+ warning ("%Jvisibility on global operator new or delete", newdecl); -+ DECL_VISIBILITY (olddecl) = VISIBILITY_DEFAULT; -+ DECL_VISIBILITYSPECIFIED (olddecl) = 1; -+ DECL_VISIBILITY (newdecl) = VISIBILITY_DEFAULT; -+ DECL_VISIBILITYSPECIFIED (newdecl) = 1; -+ } - } - - if (TREE_CODE (newdecl) == FUNCTION_DECL) - -diff -aur gcc-3.4.0orig/gcc/cp/method.c gcc-3.4.0/gcc/cp/method.c ---- gcc-3.4.0orig/gcc/cp/method.c 2004-04-08 23:15:58.000000000 +0100 -+++ gcc-3.4.0/gcc/cp/method.c 2004-05-09 08:10:52.000000000 +0100 -@@ -394,6 +394,7 @@ - rewrite. */ - TREE_PUBLIC (thunk_fndecl) = TREE_PUBLIC (function); - DECL_VISIBILITY (thunk_fndecl) = DECL_VISIBILITY (function); -+ DECL_VISIBILITYSPECIFIED (thunk_fndecl) = DECL_VISIBILITYSPECIFIED (function); - - if (flag_syntax_only) - { - -diff -aur gcc-3.4.0orig/gcc/cp/optimize.c gcc-3.4.0/gcc/cp/optimize.c ---- gcc-3.4.0orig/gcc/cp/optimize.c 2004-02-08 01:52:50.000000000 +0000 -+++ gcc-3.4.0/gcc/cp/optimize.c 2004-05-09 08:10:52.000000000 +0100 -@@ -155,6 +155,7 @@ - DECL_NOT_REALLY_EXTERN (clone) = DECL_NOT_REALLY_EXTERN (fn); - TREE_PUBLIC (clone) = TREE_PUBLIC (fn); - DECL_VISIBILITY (clone) = DECL_VISIBILITY (fn); -+ DECL_VISIBILITYSPECIFIED (clone) = DECL_VISIBILITYSPECIFIED (fn); - - /* Adjust the parameter names and locations. */ - parm = DECL_ARGUMENTS (fn); - -diff -aur gcc-3.4.0orig/gcc/cp/rtti.c gcc-3.4.0/gcc/cp/rtti.c ---- gcc-3.4.0orig/gcc/cp/rtti.c 2004-03-08 23:00:26.000000000 +0000 -+++ gcc-3.4.0/gcc/cp/rtti.c 2004-05-10 21:09:21.000000000 +0100 -@@ -361,7 +361,11 @@ - pushdecl_top_level_and_finish (d, NULL_TREE); - - if (CLASS_TYPE_P (type)) -- CLASSTYPE_TYPEINFO_VAR (TYPE_MAIN_VARIANT (type)) = d; -+ { -+ CLASSTYPE_TYPEINFO_VAR (TYPE_MAIN_VARIANT (type)) = d; -+ DECL_VISIBILITY (d) = CLASSTYPE_VISIBILITY (type); -+ DECL_VISIBILITYSPECIFIED (d) = CLASSTYPE_VISIBILITYSPECIFIED (type); -+ } - - /* Remember the type it is for. */ - TREE_TYPE (name) = type; -@@ -759,6 +763,11 @@ - TREE_STATIC (name_decl) = 1; - DECL_EXTERNAL (name_decl) = 0; - TREE_PUBLIC (name_decl) = 1; -+ if (CLASS_TYPE_P (target)) -+ { -+ DECL_VISIBILITY (name_decl) = CLASSTYPE_VISIBILITY (target); -+ DECL_VISIBILITYSPECIFIED (name_decl) = CLASSTYPE_VISIBILITYSPECIFIED (target); -+ } - import_export_tinfo (name_decl, target, typeinfo_in_lib_p (target)); - /* External name of the string containing the type's name has a - special name. */ - -diff -aur gcc-3.4.0orig/gcc/c-pragma.c gcc-3.4.0/gcc/c-pragma.c ---- gcc-3.4.0orig/gcc/c-pragma.c 2004-01-23 23:35:53.000000000 +0000 -+++ gcc-3.4.0/gcc/c-pragma.c 2004-05-09 08:10:52.000000000 +0100 -@@ -480,6 +480,86 @@ - return asmname; - } - -+ -+#ifdef HANDLE_PRAGMA_VISIBILITY -+static void handle_pragma_visibility (cpp_reader *); -+ -+/* Sets the default visibility for symbols to something other than that -+ specified on the command line. */ -+static void -+handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED) -+{ /* Form is #pragma GCC visibility push(hidden)|pop */ -+ static int visstack [16], visidx; -+ tree x; -+ enum cpp_ttype token; -+ enum { bad, push, pop } action = bad; -+ -+ token = c_lex (&x); -+ if (token == CPP_NAME) -+ { -+ const char *op = IDENTIFIER_POINTER (x); -+ if (!strcmp (op, "push")) -+ action = push; -+ else if (!strcmp (op, "pop")) -+ action = pop; -+ } -+ if (bad == action) -+ GCC_BAD ("#pragma GCC visibility must be followed by push or pop"); -+ else -+ { -+ if (pop == action) -+ { -+ if (!visidx) -+ { -+ GCC_BAD ("No matching push for '#pragma GCC visibility pop'"); -+ } -+ else -+ { -+ default_visibility = visstack[--visidx]; -+ visibility_options.inpragma = (visidx>0); -+ } -+ } -+ else -+ { -+ if (c_lex (&x) != CPP_OPEN_PAREN) -+ GCC_BAD ("missing '(' after '#pragma GCC visibility push' - ignored"); -+ token = c_lex (&x); -+ if (token != CPP_NAME) -+ { -+ GCC_BAD ("malformed #pragma GCC visibility push"); -+ } -+ else if (visidx >= 16) -+ { -+ GCC_BAD ("No more than sixteen #pragma GCC visibility pushes allowed at once"); -+ } -+ else -+ { -+ const char *str = IDENTIFIER_POINTER (x); -+ visstack[visidx++] = default_visibility; -+ if (!strcmp (str, "default")) -+ default_visibility = VISIBILITY_DEFAULT; -+ else if (!strcmp (str, "internal")) -+ default_visibility = VISIBILITY_INTERNAL; -+ else if (!strcmp (str, "hidden")) -+ default_visibility = VISIBILITY_HIDDEN; -+ else if (!strcmp (str, "protected")) -+ default_visibility = VISIBILITY_PROTECTED; -+ else -+ { -+ GCC_BAD ("#pragma GCC visibility push() must specify default, internal, hidden or protected"); -+ } -+ visibility_options.inpragma = 1; -+ } -+ if (c_lex (&x) != CPP_CLOSE_PAREN) -+ GCC_BAD ("missing '(' after '#pragma GCC visibility push' - ignored"); -+ } -+ } -+ if (c_lex (&x) != CPP_EOF) -+ warning ("junk at end of '#pragma GCC visibility'"); -+} -+ -+#endif -+ - /* Front-end wrapper for pragma registration to avoid dragging - cpplib.h in almost everywhere. */ - void -@@ -505,6 +585,9 @@ - #ifdef HANDLE_PRAGMA_EXTERN_PREFIX - c_register_pragma (0, "extern_prefix", handle_pragma_extern_prefix); - #endif -+#ifdef HANDLE_PRAGMA_VISIBILITY -+ c_register_pragma ("GCC", "visibility", handle_pragma_visibility); -+#endif - - #ifdef REGISTER_TARGET_PRAGMAS - REGISTER_TARGET_PRAGMAS (); -diff -aur gcc-3.4.0orig/gcc/c-pragma.h gcc-3.4.0/gcc/c-pragma.h ---- gcc-3.4.0orig/gcc/c-pragma.h 2004-01-31 06:18:05.000000000 +0000 -+++ gcc-3.4.0/gcc/c-pragma.h 2004-05-09 08:10:53.000000000 +0100 -@@ -44,6 +44,11 @@ - #define HANDLE_PRAGMA_PACK 1 - #endif /* HANDLE_PRAGMA_PACK_PUSH_POP */ - -+/* It's safe to always leave visibility pragma enabled as if -+ visibility is not supported on the host OS platform the -+ statements are ignored. */ -+#define HANDLE_PRAGMA_VISIBILITY 1 -+ - extern void init_pragma (void); - - /* Front-end wrapper for pragma registration to avoid dragging - - -diff -aur gcc-3.4.0orig/gcc/doc/invoke.texi gcc-3.4.0/gcc/doc/invoke.texi ---- gcc-3.4.0orig/gcc/doc/invoke.texi 2004-04-19 00:05:36.000000000 +0100 -+++ gcc-3.4.0/gcc/doc/invoke.texi 2004-05-28 21:29:36.000000000 +0100 -@@ -183,7 +183,8 @@ - -fno-optional-diags -fpermissive @gol - -frepo -fno-rtti -fstats -ftemplate-depth-@var{n} @gol - -fuse-cxa-atexit -fno-weak -nostdinc++ @gol ---fno-default-inline -Wabi -Wctor-dtor-privacy @gol -+-fno-default-inline -fvisibility-inlines-hidden @gol -+-Wabi -Wctor-dtor-privacy @gol - -Wnon-virtual-dtor -Wreorder @gol - -Weffc++ -Wno-deprecated @gol - -Wno-non-template-friend -Wold-style-cast @gol -@@ -674,7 +675,8 @@ - -fargument-alias -fargument-noalias @gol - -fargument-noalias-global -fleading-underscore @gol - -ftls-model=@var{model} @gol ---ftrapv -fwrapv -fbounds-check} -+-ftrapv -fwrapv -fbounds-check @gol -+-fvisibility} - @end table - - @menu -@@ -1433,6 +1435,20 @@ - destructors, but will only work if your C library supports - @code{__cxa_atexit}. - -+@item -fvisibility-inlines-hidden -+@opindex fvisibility-inlines-hidden -+Causes all inlined methods to be marked with -+@code{__attribute__ ((visibility ("hidden")))} so that they do not -+appear in the export table of a DSO and do not require a PLT indirection -+when used within the DSO. Enabling this option can have a dramatic effect -+on load and link times of a DSO as it massively reduces the size of the -+dynamic export table when the library makes heavy use of templates. While -+it can cause bloating through duplication of code within each DSO where -+it is used, often the wastage is less than the considerable space occupied -+by a long symbol name in the export table which is typical when using -+templates and namespaces. For even more savings, combine with the -+@code{-fvisibility=hidden} switch. -+ - @item -fno-weak - @opindex fno-weak - Do not use weak symbol support, even if it is provided by the linker. -@@ -11198,6 +11214,54 @@ - - The default without @option{-fpic} is @code{initial-exec}; with - @option{-fpic} the default is @code{global-dynamic}. -+ -+@item -fvisibility=@var{default|internal|hidden|protected} -+@opindex fvisibility -+Set the default ELF image symbol visibility to the specified option - all -+symbols will be marked with this unless overrided within the code. -+Using this feature can very substantially improve linking and -+load times of shared object libraries, produce more optimised -+code, provide near-perfect API export and prevent symbol clashes. -+It is @strong{strongly} recommended that you use this in any shared objects -+you distribute. -+ -+Despite the nomenclature, @code{default} always means public ie; -+available to be linked against from outside the shared object. -+@code{protected} and @code{internal} are pretty useless in real-world -+usage so the only other commonly used option will be @code{hidden}. -+The default if -fvisibility isn't specified is @code{default} ie; make every -+symbol public - this causes the same behaviour as previous versions of -+GCC. -+ -+A good explanation of the benefits offered by ensuring ELF -+symbols have the correct visibility is given by ``How To Write -+Shared Libraries'' by Ulrich Drepper (which can be found at -+@w{@uref{http://people.redhat.com/~drepper/}}) - however a superior -+solution made possible by this option to marking things hidden when -+the default is public is to make the default hidden and mark things -+public. This is the norm with DLL's on Windows and with @option{-fvisibility=hidden} -+and @code{__attribute__ ((visibility("default")))} instead of -+@code{__declspec(dllexport)} you get almost identical semantics with -+identical syntax. This is a great boon to those working with -+cross-platform projects. -+ -+For those adding visibility support to existing code, you may find -+@samp{#pragma GCC visibility} of use. This works by you enclosing -+the declarations you wish to set visibility for with (for example) -+@samp{#pragma GCC visibility push(hidden)} and -+@samp{#pragma GCC visibility pop}. These can be nested up to sixteen -+times. Bear in mind that symbol visibility should be viewed @strong{as -+part of the API interface contract} and thus all new code should -+always specify visibility when it is not the default ie; declarations -+only for use within the local DSO should @strong{always} be marked explicitly -+as hidden as so to avoid PLT indirection overheads - making this -+abundantly clear also aids readability and self-documentation of the code. -+Note that due to ISO C++ specification requirements, operator new and -+operator delete must always be of default visibility. -+ -+An overview of these techniques, their benefits and how to use them -+is at @w{@uref{http://www.nedprod.com/programs/gccvisibility.html}}. -+ - @end table - - @c man end - -diff -aur gcc-3.4.0orig/gcc/flags.h gcc-3.4.0/gcc/flags.h ---- gcc-3.4.0orig/gcc/flags.h 2004-02-18 00:09:04.000000000 +0000 -+++ gcc-3.4.0/gcc/flags.h 2004-05-09 08:10:53.000000000 +0100 -@@ -60,6 +60,30 @@ - /* Nonzero means emit debugging information only for symbols which are used. */ - extern int flag_debug_only_used_symbols; - -+/* Enumerate visibility settings. */ -+#ifndef SYMBOL_VISIBILITY_DEFINED -+#define SYMBOL_VISIBILITY_DEFINED -+enum symbol_visibility -+{ -+ VISIBILITY_DEFAULT, -+ VISIBILITY_INTERNAL, -+ VISIBILITY_HIDDEN, -+ VISIBILITY_PROTECTED -+}; -+#endif -+ -+/* The default visibility for all symbols (unless overridden). */ -+extern enum symbol_visibility default_visibility; -+ -+struct visibility_flags -+{ -+ unsigned inpragma : 1; /* True when in #pragma GCC visibility. */ -+ unsigned inlineshidden : 1; /* True when -finlineshidden in effect. */ -+}; -+ -+/* Global visibility options. */ -+extern struct visibility_flags visibility_options; -+ - /* Nonzero means do optimizations. -opt. */ - - extern int optimize; - -diff -aur gcc-3.4.0orig/gcc/opts.c gcc-3.4.0/gcc/opts.c ---- gcc-3.4.0orig/gcc/opts.c 2004-02-18 00:09:04.000000000 +0000 -+++ gcc-3.4.0/gcc/opts.c 2004-05-09 08:10:53.000000000 +0100 -@@ -142,6 +142,12 @@ - write_symbols is set to DBX_DEBUG, XCOFF_DEBUG, or DWARF_DEBUG. */ - bool use_gnu_debug_info_extensions; - -+/* The default visibility for all symbols (unless overridden) */ -+enum symbol_visibility default_visibility = VISIBILITY_DEFAULT; -+ -+/* Global visibility options. */ -+struct visibility_flags visibility_options; -+ - /* Columns of --help display. */ - static unsigned int columns = 80; - -@@ -1440,6 +1446,21 @@ - flag_verbose_asm = value; - break; - -+ case OPT_fvisibility_: -+ { -+ if(!strcmp(arg, "default")) -+ default_visibility=VISIBILITY_DEFAULT; -+ else if(!strcmp(arg, "internal")) -+ default_visibility=VISIBILITY_INTERNAL; -+ else if(!strcmp(arg, "hidden")) -+ default_visibility=VISIBILITY_HIDDEN; -+ else if(!strcmp(arg, "protected")) -+ default_visibility=VISIBILITY_PROTECTED; -+ else -+ error("unrecognised visibility value \"%s\"", arg); -+ } -+ break; -+ - case OPT_fweb: - flag_web = value; - break; - -diff -aur gcc-3.4.0orig/gcc/tree.c gcc-3.4.0/gcc/tree.c ---- gcc-3.4.0orig/gcc/tree.c 2004-02-05 22:01:35.000000000 +0000 -+++ gcc-3.4.0/gcc/tree.c 2004-05-10 15:22:52.000000000 +0100 -@@ -2563,6 +2563,11 @@ - layout_decl (t, 0); - else if (code == FUNCTION_DECL) - DECL_MODE (t) = FUNCTION_MODE; -+ -+ /* Set default visibility to whatever the user supplied with -+ visibility_specified depending on #pragma GCC visibility. */ -+ DECL_VISIBILITY (t) = default_visibility; -+ DECL_VISIBILITYSPECIFIED (t) = visibility_options.inpragma; - - return t; - } - -diff -aur gcc-3.4.0orig/gcc/tree.h gcc-3.4.0/gcc/tree.h ---- gcc-3.4.0orig/gcc/tree.h 2004-02-08 01:52:43.000000000 +0000 -+++ gcc-3.4.0/gcc/tree.h 2004-05-09 08:10:54.000000000 +0100 -@@ -1499,6 +1499,10 @@ - /* Value of the decls's visibility attribute */ - #define DECL_VISIBILITY(NODE) (DECL_CHECK (NODE)->decl.visibility) - -+/* Nonzero means that the decl had its visibility specified rather than -+ being inferred. */ -+#define DECL_VISIBILITYSPECIFIED(NODE) (DECL_CHECK (NODE)->decl.visibility_specified) -+ - /* In a FUNCTION_DECL, nonzero if the function cannot be inlined. */ - #define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl.uninlinable) - -@@ -1633,7 +1637,8 @@ - || TREE_CODE (DECL_CONTEXT (EXP)) == TRANSLATION_UNIT_DECL) - - /* Enumerate visibility settings. */ -- -+#ifndef SYMBOL_VISIBILITY_DEFINED -+#define SYMBOL_VISIBILITY_DEFINED - enum symbol_visibility - { - VISIBILITY_DEFAULT, -@@ -1641,6 +1646,7 @@ - VISIBILITY_HIDDEN, - VISIBILITY_PROTECTED - }; -+#endif - - struct function; - -@@ -1684,8 +1690,7 @@ - unsigned thread_local_flag : 1; - unsigned declared_inline_flag : 1; - ENUM_BITFIELD(symbol_visibility) visibility : 2; -- unsigned unused : 1; -- /* one unused bit. */ -+ unsigned visibility_specified : 1; - - unsigned lang_flag_0 : 1; - unsigned lang_flag_1 : 1; - -diff -aur gcc-3.4.0orig/gcc/varasm.c gcc-3.4.0/gcc/varasm.c ---- gcc-3.4.0orig/gcc/varasm.c 2004-04-14 22:14:08.000000000 +0100 -+++ gcc-3.4.0/gcc/varasm.c 2004-05-09 08:10:54.000000000 +0100 -@@ -5150,8 +5150,8 @@ - /* Static variables are always local. */ - else if (! TREE_PUBLIC (exp)) - local_p = true; -- /* A variable is local if the user tells us so. */ -- else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT) -+ /* A variable is local if the user explicitly tells us so. */ -+ else if (DECL_VISIBILITYSPECIFIED (exp) && DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT) - local_p = true; - /* Otherwise, variables defined outside this object may not be local. */ - else if (DECL_EXTERNAL (exp)) -@@ -5159,6 +5159,9 @@ - /* Linkonce and weak data are never local. */ - else if (DECL_ONE_ONLY (exp) || DECL_WEAK (exp)) - local_p = false; -+ /* If none of the above and visibility is not default, make local. */ -+ else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT) -+ local_p = true; - /* If PIC, then assume that any global name can be overridden by - symbols resolved from other modules. */ - else if (shlib) - -diff -Naur gcc-3.4.0orig/gcc/testsuite/gcc.dg/visibility-9.c gcc-3.4.0/gcc/testsuite/gcc.dg/visibility-9.c ---- gcc-3.4.0orig/gcc/testsuite/gcc.dg/visibility-9.c 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/gcc.dg/visibility-9.c 2004-05-09 12:40:39.000000000 +0100 -@@ -0,0 +1,9 @@ -+/* Test that -fvisibility works. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fvisibility=hidden" } */ -+/* { dg-final { scan-assembler "\\.hidden.*foo" } } */ -+ -+void foo(); -+ -+void foo() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/gcc.dg/visibility-a.c gcc-3.4.0/gcc/testsuite/gcc.dg/visibility-a.c ---- gcc-3.4.0orig/gcc/testsuite/gcc.dg/visibility-a.c 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/gcc.dg/visibility-a.c 2004-05-09 12:55:04.000000000 +0100 -@@ -0,0 +1,10 @@ -+/* Test that #pragma GCC visibility works. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.hidden.*foo" } } */ -+ -+#pragma GCC visibility push(hidden) -+void foo(); -+#pragma GCC visibility pop -+ -+void foo() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C 2004-05-09 19:17:13.000000000 +0100 -@@ -0,0 +1,12 @@ -+/* Test that -fvisibility affects class members. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fvisibility=hidden" } */ -+/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ -+ -+class Foo -+{ -+ void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C 2004-05-09 19:17:59.000000000 +0100 -@@ -0,0 +1,18 @@ -+/* Test that -fvisibility-inlines-hidden affects class members. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fvisibility-inlines-hidden" } */ -+/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ -+ -+class Foo -+{ -+public: -+ void method() { } -+}; -+ -+int main(void) -+{ -+ Foo f; -+ f.method(); -+ return 0; -+} -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override1.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override1.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override1.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override1.C 2004-05-09 19:18:06.000000000 +0100 -@@ -0,0 +1,12 @@ -+/* Test that -fvisibility does not override class member specific settings. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fvisibility=hidden" } */ -+/* { dg-final { scan-assembler "\\.internal.*Foo.methodEv" } } */ -+ -+class __attribute__ ((visibility ("internal"))) Foo -+{ -+ void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override2.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override2.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override2.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override2.C 2004-05-09 19:18:12.000000000 +0100 -@@ -0,0 +1,12 @@ -+/* Test that -fvisibility does not override class member specific settings. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fvisibility=hidden" } */ -+/* { dg-final { scan-assembler "\\.internal.*Foo.methodEv" } } */ -+ -+class Foo -+{ -+ __attribute__ ((visibility ("internal"))) void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C 2004-05-09 19:18:19.000000000 +0100 -@@ -0,0 +1,11 @@ -+/* Test that setting visibility for class member functions works. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ -+ -+class __attribute__ ((visibility ("hidden"))) Foo -+{ -+ void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/noPLT.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/noPLT.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/noPLT.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/noPLT.C 2004-05-09 19:21:49.000000000 +0100 -@@ -0,0 +1,20 @@ -+/* Test that -fvisibility=hidden prevents PLT. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fPIC -fvisibility=hidden" } */ -+/* { dg-final { scan-assembler-not "methodEv@PLT" } } */ -+ -+class Foo -+{ -+public: -+ void method(); -+}; -+ -+void Foo::method() { } -+ -+int main(void) -+{ -+ Foo f; -+ f.method(); -+ return 0; -+} -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma.C 2004-05-09 19:18:30.000000000 +0100 -@@ -0,0 +1,13 @@ -+/* Test that #pragma GCC visibility affects class members. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ -+ -+#pragma GCC visibility push(hidden) -+class Foo -+{ -+ void method(); -+}; -+#pragma GCC visibility pop -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C 2004-05-09 19:18:36.000000000 +0100 -@@ -0,0 +1,13 @@ -+/* Test that #pragma GCC visibility does not override class member specific settings. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.internal.*Foo.methodEv" } } */ -+ -+#pragma GCC visibility push(hidden) -+class __attribute__ ((visibility ("internal"))) Foo -+{ -+ void method(); -+}; -+#pragma GCC visibility pop -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C 2004-05-09 19:18:44.000000000 +0100 -@@ -0,0 +1,13 @@ -+/* Test that #pragma GCC visibility does not override class member specific settings. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.internal.*Foo.methodEv" } } */ -+ -+#pragma GCC visibility push(hidden) -+class Foo -+{ -+ __attribute__ ((visibility ("internal"))) void method(); -+}; -+#pragma GCC visibility pop -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C 2004-05-09 19:18:50.000000000 +0100 -@@ -0,0 +1,11 @@ -+/* Test that setting visibility for static class member functions works. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ -+ -+class __attribute__ ((visibility ("hidden"))) Foo -+{ -+ static void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/virtual.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/virtual.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/virtual.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/virtual.C 2004-05-09 13:24:06.000000000 +0100 -@@ -0,0 +1,11 @@ -+/* Test that setting visibility for class affects virtual table. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.hidden.*ZTV3Foo" } } */ -+ -+class __attribute__ ((visibility ("hidden"))) Foo -+{ -+ virtual void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C 2003-12-10 06:34:44.000000000 +0000 -@@ -0,0 +1,8 @@ -+/* Test visibility attribute on function definition. */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -+ -+void -+__attribute__((visibility ("hidden"))) -+foo() -+{ } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C 2003-12-10 06:34:44.000000000 +0000 -@@ -0,0 +1,7 @@ -+/* Test that visibility attribute on declaration extends to definition. */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -+ -+void __attribute__((visibility ("hidden"))) foo(); -+ -+void foo() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C 2003-12-10 06:34:45.000000000 +0000 -@@ -0,0 +1,7 @@ -+/* Test visibility attribute on forward declaration of global variable */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -+ -+int -+__attribute__((visibility ("hidden"))) -+xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C 2003-12-10 06:34:45.000000000 +0000 -@@ -0,0 +1,8 @@ -+/* Test visibility attribute on forward declaration of global variable */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -+ -+extern int __attribute__ ((visibility ("hidden"))) -+xyzzy; -+ -+int xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C 2003-12-10 06:34:45.000000000 +0000 -@@ -0,0 +1,11 @@ -+/* Test visibility attribute on definition of a function that has -+ already had a forward declaration. */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -+ -+void foo(); -+ -+void -+ __attribute__((visibility ("hidden"))) -+foo() -+{ } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C 2003-12-10 06:34:45.000000000 +0000 -@@ -0,0 +1,10 @@ -+/* Test visibility attribute on definition of global variable that has -+ already had a forward declaration. */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -+ -+extern int xyzzy; -+ -+int -+__attribute__((visibility ("hidden"))) -+xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C 2003-12-10 06:34:45.000000000 +0000 -@@ -0,0 +1,11 @@ -+/* Test warning from conflicting visibility specifications. */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -+ -+extern int -+__attribute__((visibility ("hidden"))) -+xyzzy; /* { dg-warning "previous declaration here" "" } */ -+ -+int -+__attribute__((visibility ("protected"))) -+xyzzy = 5; /* { dg-warning "visibility attribute ignored" "" } */ -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-1.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-1.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-1.C 2003-12-10 06:34:44.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-1.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --/* Test visibility attribute on function definition. */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -- --void --__attribute__((visibility ("hidden"))) --foo() --{ } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-2.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-2.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-2.C 2003-12-10 06:34:44.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-2.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,7 +0,0 @@ --/* Test that visibility attribute on declaration extends to definition. */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -- --void __attribute__((visibility ("hidden"))) foo(); -- --void foo() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-3.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-3.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-3.C 2003-12-10 06:34:45.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-3.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,7 +0,0 @@ --/* Test visibility attribute on forward declaration of global variable */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -- --int --__attribute__((visibility ("hidden"))) --xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-4.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-4.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-4.C 2003-12-10 06:34:45.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-4.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --/* Test visibility attribute on forward declaration of global variable */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -- --extern int __attribute__ ((visibility ("hidden"))) --xyzzy; -- --int xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-5.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-5.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-5.C 2003-12-10 06:34:45.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-5.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,11 +0,0 @@ --/* Test visibility attribute on definition of a function that has -- already had a forward declaration. */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -- --void foo(); -- --void -- __attribute__((visibility ("hidden"))) --foo() --{ } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-6.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-6.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-6.C 2003-12-10 06:34:45.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-6.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,10 +0,0 @@ --/* Test visibility attribute on definition of global variable that has -- already had a forward declaration. */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -- --extern int xyzzy; -- --int --__attribute__((visibility ("hidden"))) --xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-7.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-7.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-7.C 2003-12-10 06:34:45.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-7.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,11 +0,0 @@ --/* Test warning from conflicting visibility specifications. */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -- --extern int --__attribute__((visibility ("hidden"))) --xyzzy; /* { dg-warning "previous declaration here" "" } */ -- --int --__attribute__((visibility ("protected"))) --xyzzy = 5; /* { dg-warning "visibility attribute ignored" "" } */ diff --git a/openembedded/packages/gcc/gcc-3.4.3/always-fixincperm.patch b/openembedded/packages/gcc/gcc-3.4.3/always-fixincperm.patch deleted file mode 100644 index 59e5e2ede..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/always-fixincperm.patch +++ /dev/null @@ -1,32 +0,0 @@ -Index: gcc-3.4.3/gcc/configure -=================================================================== ---- gcc-3.4.3.orig/gcc/configure 2004-11-04 23:14:05.000000000 -0500 -+++ gcc-3.4.3/gcc/configure 2005-03-11 14:41:06.373910320 -0500 -@@ -9916,11 +9916,6 @@ - BUILD_PREFIX=build- - BUILD_PREFIX_1=build- - BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)' -- -- if test "x$TARGET_SYSTEM_ROOT" = x; then -- STMP_FIXINC= -- STMP_FIXPROTO= -- fi - fi - - # Expand extra_headers to include complete path. -Index: gcc-3.4.3/gcc/configure.ac -=================================================================== ---- gcc-3.4.3.orig/gcc/configure.ac 2004-09-23 20:43:53.000000000 -0400 -+++ gcc-3.4.3/gcc/configure.ac 2005-03-11 14:40:55.256600408 -0500 -@@ -1524,11 +1524,6 @@ - BUILD_PREFIX=build- - BUILD_PREFIX_1=build- - BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)' -- -- if test "x$TARGET_SYSTEM_ROOT" = x; then -- STMP_FIXINC= -- STMP_FIXPROTO= -- fi - fi - - # Expand extra_headers to include complete path. diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-bigendian-uclibc.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-bigendian-uclibc.patch deleted file mode 100644 index 8fa9af880..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-bigendian-uclibc.patch +++ /dev/null @@ -1,30 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- gcc-3.4.1/gcc/config.gcc~gcc-3.4.0-arm-bigendian-uclibc -+++ gcc-3.4.1/gcc/config.gcc -@@ -666,6 +666,11 @@ - ;; - arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $target in -+ arm*b-*) -+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" -+ ;; -+ esac - tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes ---- gcc-3.4.1/gcc/config/arm/linux-elf.h~gcc-3.4.0-arm-bigendian-uclibc -+++ gcc-3.4.1/gcc/config/arm/linux-elf.h -@@ -120,7 +120,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - #endif - diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-bigendian.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-bigendian.patch deleted file mode 100644 index c9288c6c1..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-bigendian.patch +++ /dev/null @@ -1,70 +0,0 @@ -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -See http://gcc.gnu.org/PR16350 - -diff -urN gcc-3.4.0.orig/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h ---- gcc-3.4.0.orig/gcc/config/arm/linux-elf.h 2004-01-31 07:18:11.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-07-02 14:46:29.225443757 +0200 -@@ -30,17 +30,34 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - -+/* -+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-* -+ * (big endian) configurations. -+ */ -+#if TARGET_BIG_ENDIAN_DEFAULT -+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END -+#define TARGET_ENDIAN_OPTION "mbig-endian" -+#define TARGET_LINKER_EMULATION "armelfb_linux" -+#else -+#define TARGET_ENDIAN_DEFAULT 0 -+#define TARGET_ENDIAN_OPTION "mlittle-endian" -+#define TARGET_LINKER_EMULATION "armelf_linux" -+#endif -+ - /* Default is to use APCS-32 mode. */ - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_APCS_32 | \ -+ ARM_FLAG_MMU_TRAPS | \ -+ TARGET_ENDIAN_DEFAULT ) - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - --#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" -+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" } - - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" - -@@ -89,7 +106,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - - #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS() -diff -urN gcc-3.4.0.orig/gcc/config.gcc gcc-3.4.0/gcc/config.gcc ---- gcc-3.4.0.orig/gcc/config.gcc 2004-04-17 04:28:24.000000000 +0200 -+++ gcc-3.4.0/gcc/config.gcc 2004-07-02 14:44:40.045822542 +0200 -@@ -666,6 +666,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $target in -+ arm*b-*) -+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" -+ ;; -+ esac - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-lib1asm.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-lib1asm.patch deleted file mode 100644 index ca42bfbc0..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-lib1asm.patch +++ /dev/null @@ -1,24 +0,0 @@ -# Fixes errors like the following when building glibc (or any other executable -# or shared library) when using gcc 3.4.0 for ARM with softfloat: -# -# .../libc_pic.os(.text+0x15834): In function `__modf': undefined reference to `__subdf3' -# .../libc_pic.os(.text+0x158b8): In function `__modf': undefined reference to `__subdf3' -# .../libc_pic.os(.text+0x1590c): In function `scalbn': undefined reference to `__muldf3' -# .../libc_pic.os(.text+0x15e94): In function `__ldexpf': undefined reference to `__eqsf2' -# .../libc_pic.os(.text+0xcee4c): In function `monstartup': undefined reference to `__fixsfsi' - -diff -urNd gcc-3.4.0-orig/gcc/config/arm/t-linux gcc-3.4.0/gcc/config/arm/t-linux ---- gcc-3.4.0-orig/gcc/config/arm/t-linux 2003-09-20 23:09:07.000000000 +0200 -+++ gcc-3.4.0/gcc/config/arm/t-linux 2004-05-01 20:31:59.102846400 +0200 -@@ -4,7 +4,10 @@ - LIBGCC2_DEBUG_CFLAGS = -g0 - - LIB1ASMSRC = arm/lib1funcs.asm --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _fixsfsi _fixunssfsi - - # MULTILIB_OPTIONS = mhard-float/msoft-float - # MULTILIB_DIRNAMES = hard-float soft-float diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-nolibfloat.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-nolibfloat.patch deleted file mode 100644 index 43eed3ef2..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-nolibfloat.patch +++ /dev/null @@ -1,24 +0,0 @@ -# Dimitry Andric , 2004-05-01 -# -# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed -# anymore. (The required functions are now in libgcc.) -# -# Fixes errors like -# arm-softfloat-linux-gnu/3.4.0/../../../../arm-softfloat-linux-gnu/bin/ld: cannot find -lfloat -# collect2: ld returned 1 exit status -# make[2]: *** [arm-softfloat-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/iconvdata/ISO8859-1.so] Error 1 -# when building glibc-2.3.3 with gcc-3.4.0 for arm-softfloat - -diff -urNd gcc-3.4.0-orig/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/linux-elf.h 2004-01-31 07:18:11.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-05-01 19:19:06.935979200 +0200 -@@ -55,7 +73,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which - diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-softfloat.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-softfloat.patch deleted file mode 100644 index f53d64b37..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.0-arm-softfloat.patch +++ /dev/null @@ -1,256 +0,0 @@ -# -# Submitted: -# -# Dimitry Andric , 2004-05-01 -# -# Description: -# -# Nicholas Pitre released this patch for gcc soft-float support here: -# http://lists.arm.linux.org.uk/pipermail/linux-arm/2003-October/006436.html -# -# This version has been adapted to work with gcc 3.4.0. -# -# The original patch doesn't distinguish between softfpa and softvfp modes -# in the way Nicholas Pitre probably meant. His description is: -# -# "Default is to use APCS-32 mode with soft-vfp. The old Linux default for -# floats can be achieved with -mhard-float or with the configure -# --with-float=hard option. If -msoft-float or --with-float=soft is used then -# software float support will be used just like the default but with the legacy -# big endian word ordering for double float representation instead." -# -# Which means the following: -# -# * If you compile without -mhard-float or -msoft-float, you should get -# software floating point, using the VFP format. The produced object file -# should have these flags in its header: -# -# private flags = 600: [APCS-32] [VFP float format] [software FP] -# -# * If you compile with -mhard-float, you should get hardware floating point, -# which always uses the FPA format. Object file header flags should be: -# -# private flags = 0: [APCS-32] [FPA float format] -# -# * If you compile with -msoft-float, you should get software floating point, -# using the FPA format. This is done for compatibility reasons with many -# existing distributions. Object file header flags should be: -# -# private flags = 200: [APCS-32] [FPA float format] [software FP] -# -# The original patch from Nicholas Pitre contained the following constructs: -# -# #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -# %{mhard-float:-mfpu=fpa} \ -# %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}" -# -# However, gcc doesn't accept this ";:" notation, used in the 3rd line. This -# is probably the reason Robert Schwebel modified it to: -# -# #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -# %{mhard-float:-mfpu=fpa} \ -# %{!mhard-float: %{msoft-float:-mfpu=softfpa -mfpu=softvfp}}" -# -# But this causes the following behaviour: -# -# * If you compile without -mhard-float or -msoft-float, the compiler generates -# software floating point instructions, but *nothing* is passed to the -# assembler, which results in an object file which has flags: -# -# private flags = 0: [APCS-32] [FPA float format] -# -# This is not correct! -# -# * If you compile with -mhard-float, the compiler generates hardware floating -# point instructions, and passes "-mfpu=fpa" to the assembler, which results -# in an object file which has the same flags as in the previous item, but now -# those *are* correct. -# -# * If you compile with -msoft-float, the compiler generates software floating -# point instructions, and passes "-mfpu=softfpa -mfpu=softvfp" (in that -# order) to the assembler, which results in an object file with flags: -# -# private flags = 600: [APCS-32] [VFP float format] [software FP] -# -# This is not correct, because the last "-mfpu=" option on the assembler -# command line determines the actual FPU convention used (which should be FPA -# in this case). -# -# Therefore, I modified this patch to get the desired behaviour. Every -# instance of the notation: -# -# %{msoft-float:-mfpu=softfpa -mfpu=softvfp} -# -# was changed to: -# -# %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp} -# -# I also did the following: -# -# * Modified all TARGET_DEFAULT macros I could find to include ARM_FLAG_VFP, to -# be consistent with Nicholas' original patch. -# * Removed any "msoft-float" or "mhard-float" from all MULTILIB_DEFAULTS -# macros I could find. I think that if you compile without any options, you -# would like to get the defaults. :) -# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed -# anymore. (The required functions are now in libgcc.) - -diff -urNd gcc-3.4.0-orig/gcc/config/arm/coff.h gcc-3.4.0/gcc/config/arm/coff.h ---- gcc-3.4.0-orig/gcc/config/arm/coff.h 2004-02-24 15:25:22.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/coff.h 2004-05-01 19:07:06.059409600 +0200 -@@ -31,11 +31,16 @@ - #define TARGET_VERSION fputs (" (ARM/coff)", stderr) - - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" } - #endif - - /* This is COFF, but prefer stabs. */ -diff -urNd gcc-3.4.0-orig/gcc/config/arm/elf.h gcc-3.4.0/gcc/config/arm/elf.h ---- gcc-3.4.0-orig/gcc/config/arm/elf.h 2004-02-24 15:25:22.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/elf.h 2004-05-01 19:12:16.976486400 +0200 -@@ -46,7 +46,9 @@ - - #ifndef SUBTARGET_ASM_FLOAT_SPEC - #define SUBTARGET_ASM_FLOAT_SPEC "\ --%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}" -+%{mapcs-float:-mfloat} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - #endif - - #ifndef ASM_SPEC -@@ -106,12 +108,17 @@ - #endif - - #ifndef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - #endif - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } - #endif - - #define TARGET_ASM_FILE_START_APP_OFF true -diff -urNd gcc-3.4.0-orig/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/linux-elf.h 2004-01-31 07:18:11.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-05-01 19:19:06.935979200 +0200 -@@ -30,9 +30,27 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - --/* Default is to use APCS-32 mode. */ -+/* -+ * Default is to use APCS-32 mode with soft-vfp. -+ * The old Linux default for floats can be achieved with -mhard-float -+ * or with the configure --with-float=hard option. -+ * If -msoft-float or --with-float=soft is used then software float -+ * support will be used just like the default but with the legacy -+ * big endian word ordering for double float representation instead. -+ */ -+ - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_MMU_TRAPS ) -+ -+#undef SUBTARGET_EXTRA_ASM_SPEC -+#define SUBTARGET_EXTRA_ASM_SPEC "\ -+%{!mcpu=*:-mcpu=xscale} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - -@@ -40,7 +58,7 @@ - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" } - - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" - -@@ -55,7 +73,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which -diff -urNd gcc-3.4.0-orig/gcc/config/arm/t-linux gcc-3.4.0/gcc/config/arm/t-linux ---- gcc-3.4.0-orig/gcc/config/arm/t-linux 2003-09-20 23:09:07.000000000 +0200 -+++ gcc-3.4.0/gcc/config/arm/t-linux 2004-05-01 20:31:59.102846400 +0200 -@@ -4,7 +4,10 @@ - LIBGCC2_DEBUG_CFLAGS = -g0 - - LIB1ASMSRC = arm/lib1funcs.asm --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _fixsfsi _fixunssfsi - - # MULTILIB_OPTIONS = mhard-float/msoft-float - # MULTILIB_DIRNAMES = hard-float soft-float -diff -urNd gcc-3.4.0-orig/gcc/config/arm/unknown-elf.h gcc-3.4.0/gcc/config/arm/unknown-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/unknown-elf.h 2004-02-24 15:25:22.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/unknown-elf.h 2004-05-01 19:09:09.016212800 +0200 -@@ -30,7 +30,12 @@ - - /* Default to using APCS-32 and software floating point. */ - #ifndef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - #endif - - /* Now we define the strings used to build the spec file. */ -diff -urNd gcc-3.4.0-orig/gcc/config/arm/xscale-elf.h gcc-3.4.0/gcc/config/arm/xscale-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/xscale-elf.h 2003-07-02 01:26:43.000000000 +0200 -+++ gcc-3.4.0/gcc/config/arm/xscale-elf.h 2004-05-01 20:15:36.620105600 +0200 -@@ -49,11 +49,12 @@ - endian, regardless of the endian-ness of the memory - system. */ - --#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -- %{mhard-float:-mfpu=fpa} \ -- %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}" -+#define SUBTARGET_EXTRA_ASM_SPEC "\ -+%{!mcpu=*:-mcpu=xscale} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" } -+ { "mlittle-endian", "mno-thumb-interwork", "marm" } - #endif diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.1-uclibc-100-conf.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.1-uclibc-100-conf.patch deleted file mode 100644 index 29e4c802e..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.1-uclibc-100-conf.patch +++ /dev/null @@ -1,442 +0,0 @@ -diff -urN gcc-3.4.1-dist/boehm-gc/configure gcc-3.4.1/boehm-gc/configure ---- gcc-3.4.1-dist/boehm-gc/configure 2004-07-01 14:14:03.000000000 -0500 -+++ gcc-3.4.1/boehm-gc/configure 2004-08-12 16:22:57.000000000 -0500 -@@ -1947,6 +1947,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -diff -urN gcc-3.4.1-dist/boehm-gc/ltconfig gcc-3.4.1/boehm-gc/ltconfig ---- gcc-3.4.1-dist/boehm-gc/ltconfig 2002-11-20 09:59:06.000000000 -0600 -+++ gcc-3.4.1/boehm-gc/ltconfig 2004-08-12 15:54:42.000000000 -0500 -@@ -1981,6 +1981,23 @@ - fi - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=`echo /lib/libuClibc-*.so` -+ -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - version_type=sunos - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -diff -urN gcc-3.4.1-dist/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h ---- gcc-3.4.1-dist/gcc/config/arm/linux-elf.h 2004-01-31 00:18:11.000000000 -0600 -+++ gcc-3.4.1/gcc/config/arm/linux-elf.h 2004-08-12 15:54:42.000000000 -0500 -@@ -81,6 +81,18 @@ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC "%{h*} %{version:-v} \ -+ %{b} %{Wl,*:%*} \ -+ %{static:-Bstatic} \ -+ %{shared:-shared} \ -+ %{symbolic:-Bsymbolic} \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \ -+ -X \ -+ %{mbig-endian:-EB}" \ -+ SUBTARGET_EXTRA_LINK_SPEC -+#else - #define LINK_SPEC "%{h*} %{version:-v} \ - %{b} %{Wl,*:%*} \ - %{static:-Bstatic} \ -@@ -91,6 +103,7 @@ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC -+#endif - - #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS() - -diff -urN gcc-3.4.1-dist/gcc/config/cris/linux.h gcc-3.4.1/gcc/config/cris/linux.h ---- gcc-3.4.1-dist/gcc/config/cris/linux.h 2003-11-28 21:08:09.000000000 -0600 -+++ gcc-3.4.1/gcc/config/cris/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -79,6 +79,25 @@ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -93,6 +112,8 @@ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - -diff -urN gcc-3.4.1-dist/gcc/config/cris/t-linux-uclibc gcc-3.4.1/gcc/config/cris/t-linux-uclibc ---- gcc-3.4.1-dist/gcc/config/cris/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/cris/t-linux-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,3 @@ -+T_CFLAGS = -DUSE_UCLIBC -+TARGET_LIBGCC2_CFLAGS += -fPIC -+CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS) -diff -urN gcc-3.4.1-dist/gcc/config/i386/linux.h gcc-3.4.1/gcc/config/i386/linux.h ---- gcc-3.4.1-dist/gcc/config/i386/linux.h 2003-11-28 21:08:10.000000000 -0600 -+++ gcc-3.4.1/gcc/config/i386/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -118,6 +118,15 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \ - %{static:-static}}}" - #else -+#if defined USE_UCLIBC -+#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC "-m elf_i386 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ -@@ -126,6 +135,7 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}}}" - #endif -+#endif - - /* A C statement (sans semicolon) to output to the stdio stream - FILE the assembler definition of uninitialized global DECL named -diff -urN gcc-3.4.1-dist/gcc/config/mips/linux.h gcc-3.4.1/gcc/config/mips/linux.h ---- gcc-3.4.1-dist/gcc/config/mips/linux.h 2004-06-15 20:42:24.000000000 -0500 -+++ gcc-3.4.1/gcc/config/mips/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -109,6 +109,17 @@ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC \ -+ "%(endian_spec) \ -+ %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ -@@ -118,6 +129,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ - %{static:-static}}}" -+#endif - - #undef SUBTARGET_ASM_SPEC - #define SUBTARGET_ASM_SPEC "\ -diff -urN gcc-3.4.1-dist/gcc/config/rs6000/linux.h gcc-3.4.1/gcc/config/rs6000/linux.h ---- gcc-3.4.1-dist/gcc/config/rs6000/linux.h 2004-02-25 09:11:19.000000000 -0600 -+++ gcc-3.4.1/gcc/config/rs6000/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -61,7 +61,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" -diff -urN gcc-3.4.1-dist/gcc/config/rs6000/sysv4.h gcc-3.4.1/gcc/config/rs6000/sysv4.h ---- gcc-3.4.1-dist/gcc/config/rs6000/sysv4.h 2004-06-10 01:39:50.000000000 -0500 -+++ gcc-3.4.1/gcc/config/rs6000/sysv4.h 2004-08-12 15:54:43.000000000 -0500 -@@ -947,6 +947,7 @@ - mcall-linux : %(link_os_linux) ; \ - mcall-gnu : %(link_os_gnu) ; \ - mcall-netbsd : %(link_os_netbsd) ; \ -+ mcall-linux-uclibc : %(link_os_linux_uclibc); \ - mcall-openbsd: %(link_os_openbsd) ; \ - : %(link_os_default) }" - -@@ -1124,6 +1125,10 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " - #endif -@@ -1290,6 +1295,7 @@ - { "link_os_sim", LINK_OS_SIM_SPEC }, \ - { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ - { "link_os_linux", LINK_OS_LINUX_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_gnu", LINK_OS_GNU_SPEC }, \ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ -diff -urN gcc-3.4.1-dist/gcc/config/sh/linux.h gcc-3.4.1/gcc/config/sh/linux.h ---- gcc-3.4.1-dist/gcc/config/sh/linux.h 2004-01-11 20:29:13.000000000 -0600 -+++ gcc-3.4.1/gcc/config/sh/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -73,12 +73,21 @@ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define SUBTARGET_LINK_SPEC \ -+ "%{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}" -+#else - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}" -+#endif - - #undef LIB_SPEC - #define LIB_SPEC \ -diff -urN gcc-3.4.1-dist/gcc/config/sh/t-linux-uclibc gcc-3.4.1/gcc/config/sh/t-linux-uclibc ---- gcc-3.4.1-dist/gcc/config/sh/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/sh/t-linux-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,13 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES -+LIB1ASMFUNCS_CACHE = _ic_invalidate -+ -+LIB2FUNCS_EXTRA= -+ -+MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) m3e/m4 -+MULTILIB_DIRNAMES= -+MULTILIB_MATCHES = -+MULTILIB_EXCEPTIONS= -+ -+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o -diff -urN gcc-3.4.1-dist/gcc/config/sh/t-sh64-uclibc gcc-3.4.1/gcc/config/sh/t-sh64-uclibc ---- gcc-3.4.1-dist/gcc/config/sh/t-sh64-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/sh/t-sh64-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,13 @@ -+EXTRA_MULTILIB_PARTS= crt1.o crti.o crtn.o crtbegin.o crtend.o -+ -+LIB1ASMFUNCS = \ -+ _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ -+ _shcompact_call_trampoline _shcompact_return_trampoline \ -+ _shcompact_incoming_args _ic_invalidate _nested_trampoline \ -+ _push_pop_shmedia_regs \ -+ _udivdi3 _divdi3 _umoddi3 _moddi3 -+ -+MULTILIB_OPTIONS = $(MULTILIB_ENDIAN) m5-32media-nofpu/m5-compact/m5-compact-nofpu/m5-64media/m5-64media-nofpu -+MULTILIB_DIRNAMES= $(MULTILIB_ENDIAN) nofpu compact nofpu/compact media64 nofpu/media64 -+MULTILIB_MATCHES= -+MULTILIB_EXCEPTIONS= -diff -urN gcc-3.4.1-dist/gcc/config/t-linux-uclibc gcc-3.4.1/gcc/config/t-linux-uclibc ---- gcc-3.4.1-dist/gcc/config/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/t-linux-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,15 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+# Compile crtbeginS.o and crtendS.o with pic. -+CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC -+# Compile libgcc2.a with pic. -+TARGET_LIBGCC2_CFLAGS = -fPIC -+ -+# Override t-slibgcc-elf-ver to export some libgcc symbols with -+# the symbol versions that glibc used. -+#SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver -+ -+# Use unwind-dw2-fde -+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \ -+ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c -+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h -diff -urN gcc-3.4.1-dist/gcc/config.gcc gcc-3.4.1/gcc/config.gcc ---- gcc-3.4.1-dist/gcc/config.gcc 2004-04-21 10:12:35.000000000 -0500 -+++ gcc-3.4.1/gcc/config.gcc 2004-08-12 15:59:46.000000000 -0500 -@@ -664,6 +664,12 @@ - extra_parts="" - use_collect2=yes - ;; -+arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc -+ tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux" -+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+ gnu_ld=yes -+ ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" -@@ -725,6 +731,10 @@ - tmake_file="cris/t-cris cris/t-elfmulti" - gas=yes - ;; -+cris-*-linux-uclibc*) -+ tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" -+ tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux-uclibc" -+ ;; - cris-*-linux*) - tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" - tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux" -@@ -988,6 +998,11 @@ - thread_file='single' - fi - ;; -+i[34567]86-*-linux*uclibc*) # Intel 80386's running GNU/Linux -+ # with ELF format using uClibc -+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc i386/t-crtstuff" -+ ;; - i[34567]86-*-linux*) # Intel 80386's running GNU/Linux - # with ELF format using glibc 2 - # aka GNU/Linux C library 6 -@@ -1547,6 +1562,16 @@ - gnu_ld=yes - gas=yes - ;; -+mips*-*-linux-uclibc*) # Linux MIPS, either endian. uClibc -+ tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" -+ case ${target} in -+ mipsisa32*-*) -+ target_cpu_default="MASK_SOFT_FLOAT" -+ tm_defines="MIPS_ISA_DEFAULT=32" -+ ;; -+ esac -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc" -+ ;; - mips*-*-linux*) # Linux MIPS, either endian. - tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" - case ${target} in -@@ -1764,6 +1789,10 @@ - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h" - tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm" - ;; -+powerpc-*-linux-uclibc*) -+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" -+ tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux-uclibc rs6000/t-ppccomm" -+ ;; - powerpc-*-linux*) - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" - tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm" -@@ -1916,7 +1945,7 @@ - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h" - ;; - sh-*-linux* | sh[2346lbe]*-*-linux*) -- tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux" -+ tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver" - case ${target} in - sh*be-*-* | sh*eb-*-*) ;; - *) -@@ -1924,9 +1953,17 @@ - tmake_file="${tmake_file} sh/t-le" - ;; - esac -- tmake_file="${tmake_file} sh/t-linux" -+ case ${target} in -+ *-*-linux-uclibc*) tmake_file="${tmake_file} t-linux-uclibc sh/t-linux-uclibc" ;; -+ *) tmake_file="${tmake_file} t-linux sh/t-linux" ;; -+ esac - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h" - case ${target} in -+ sh64*-*-linux-uclibc*) -+ tmake_file="${tmake_file} sh/t-sh64-uclibc" -+ tm_file="${tm_file} sh/sh64.h" -+ extra_headers="shmedia.h ushmedia.h sshmedia.h" -+ ;; - sh64*) - tmake_file="${tmake_file} sh/t-sh64" - tm_file="${tm_file} sh/sh64.h" -diff -urN gcc-3.4.1-dist/libtool.m4 gcc-3.4.1/libtool.m4 ---- gcc-3.4.1-dist/libtool.m4 2004-05-18 04:08:37.000000000 -0500 -+++ gcc-3.4.1/libtool.m4 2004-08-12 15:54:43.000000000 -0500 -@@ -689,6 +689,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] -diff -urN gcc-3.4.1-dist/ltconfig gcc-3.4.1/ltconfig ---- gcc-3.4.1-dist/ltconfig 2004-03-05 15:05:41.000000000 -0600 -+++ gcc-3.4.1/ltconfig 2004-08-12 15:55:48.000000000 -0500 -@@ -602,6 +602,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in -+linux-uclibc*) ;; - linux-gnu*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac -@@ -1262,6 +1263,24 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ # Note: copied from linux-gnu, and may not be appropriate. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.1-uclibc-200-locale.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.1-uclibc-200-locale.patch deleted file mode 100644 index 3fc4900b0..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc-3.4.1-uclibc-200-locale.patch +++ /dev/null @@ -1,3246 +0,0 @@ -diff -urN gcc-3.4.2-dist/libstdc++-v3/acinclude.m4 gcc-3.4.2/libstdc++-v3/acinclude.m4 ---- gcc-3.4.2-dist/libstdc++-v3/acinclude.m4 2004-07-15 12:42:45.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/acinclude.m4 2004-09-10 10:47:40.000000000 -0500 -@@ -996,7 +996,7 @@ - AC_MSG_CHECKING([for C locale to use]) - GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], - [use MODEL for target locale package], -- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) -+ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) - - # If they didn't use this option switch, or if they specified --enable - # with no specific model, we'll have to look for one. If they -@@ -1012,6 +1012,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ x*-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1138,6 +1141,41 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.2-dist/libstdc++-v3/aclocal.m4 gcc-3.4.2/libstdc++-v3/aclocal.m4 ---- gcc-3.4.2-dist/libstdc++-v3/aclocal.m4 2004-08-13 15:44:03.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/aclocal.m4 2004-09-10 10:47:40.000000000 -0500 -@@ -1025,6 +1025,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ x*-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1151,6 +1154,41 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,59 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek -+ -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#endif // GLIBC 2.3 and later -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,160 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#include // For errno -+#include -+#include -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#warning should dummy __newlocale check for C|POSIX ? -+#define __newlocale(a, b, c) NULL -+#define __freelocale(a) ((void)0) -+#define __duplocale(a) __c_locale() -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " -+ "name not valid")); -+ } -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+ if (_S_get_c_locale() != __cloc) -+ __freelocale(__cloc); -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+ { return __duplocale(__cloc); } -+} // namespace std -+ -+namespace __gnu_cxx -+{ -+ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES", -+#if _GLIBCXX_NUM_CATEGORIES != 0 -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} -+ -+namespace std -+{ -+ const char* const* const locale::_S_categories = __gnu_cxx::category_names; -+} // namespace std -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h 2004-09-10 10:48:08.000000000 -0500 -@@ -0,0 +1,115 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include // get std::strlen -+#include // get std::snprintf or std::sprintf -+#include -+#include // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCXX_C_LOCALE_GNU for -+#endif -+#define _GLIBCXX_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCXX_NUM_CATEGORIES 6 -+#define _GLIBCXX_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template -+ int -+ __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = std::setlocale(LC_ALL, NULL); -+ char* __sav = new char[std::strlen(__old) + 1]; -+ std::strcpy(__sav, __old); -+ std::setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ std::setlocale(LC_ALL, __sav); -+ delete [] __sav; -+#endif -+ return __ret; -+ } -+} -+ -+#endif -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,306 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+ codecvt_base::result -+ codecvt:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // wcsnrtombs is *very* fast but stops if encounters NUL characters: -+ // in case we fall back to wcrtomb and then continue, in a loop. -+ // NB: wcsnrtombs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', -+ __from_end - __from_next); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ const size_t __conv = wcsnrtombs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // wcrtomb. -+ for (; __from < __from_next; ++__from) -+ __to_next += wcrtomb(__to_next, *__from, &__tmp_state); -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ extern_type __buf[MB_LEN_MAX]; -+ __tmp_state = __state; -+ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); -+ if (__conv > static_cast(__to_end - __to_next)) -+ __ret = partial; -+ else -+ { -+ memcpy(__to_next, __buf, __conv); -+ __state = __tmp_state; -+ __to_next += __conv; -+ ++__from_next; -+ } -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we store a L'\0' and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from_next, '\0', -+ __from_end -+ - __from_next)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ size_t __conv = mbsnrtowcs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (;; ++__to_next, __from += __conv) -+ { -+ __conv = mbrtowc(__to_next, __from, __from_end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __from_next = __from; -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ // It is unclear what to return in this case (see DR 382). -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ if (__to_next < __to_end) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from_next; -+ *__to_next++ = L'\0'; -+ } -+ else -+ __ret = partial; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_encoding() const throw() -+ { -+ // XXX This implementation assumes that the encoding is -+ // stateless and is either single-byte or variable-width. -+ int __ret = 0; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ if (MB_CUR_MAX == 1) -+ __ret = 1; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_max_length() const throw() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ // XXX Probably wrong for stateful encodings. -+ int __ret = MB_CUR_MAX; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_length(state_type& __state, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { -+ int __ret = 0; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we advance past it and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ -+ // A dummy internal buffer is needed in order for mbsnrtocws to consider -+ // its fourth parameter (it wouldn't with NULL as first parameter). -+ wchar_t* __to = static_cast(__builtin_alloca(sizeof(wchar_t) -+ * __max)); -+ while (__from < __end && __max) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from, '\0', -+ __end -+ - __from)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __end; -+ -+ const extern_type* __tmp_from = __from; -+ size_t __conv = mbsnrtowcs(__to, &__from, -+ __from_chunk_end - __from, -+ __max, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (__from = __tmp_from;; __from += __conv) -+ { -+ __conv = mbrtowc(NULL, __from, __end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __state = __tmp_state; -+ __ret += __from - __tmp_from; -+ break; -+ } -+ if (!__from) -+ __from = __from_chunk_end; -+ -+ __ret += __from - __tmp_from; -+ __max -= __conv; -+ -+ if (__from < __end && __max) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from; -+ ++__ret; -+ --__max; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ int -+ collate::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,300 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname::ctype_byname(const char* __s, size_t __refs) -+ : ctype(0, false, __refs) -+ { -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_ctype); -+ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; -+ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; -+ this->_M_table = this->_M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ ctype::__wmask_type -+ ctype::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = 0; -+ } -+ return __ret; -+ } -+ -+ wchar_t -+ ctype::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ bool __ret = false; -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__m & _M_bit[__bitcur] -+ && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ { -+ __ret = true; -+ break; -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (; __lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ __m |= _M_bit[__bitcur]; -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype:: -+ do_widen(char __c) const -+ { return _M_widen[static_cast(__c)]; } -+ -+ const char* -+ ctype:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+ while (__lo < __hi) -+ { -+ *__dest = _M_widen[static_cast(*__lo)]; -+ ++__lo; -+ ++__dest; -+ } -+ return __hi; -+ } -+ -+ char -+ ctype:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) -+ return _M_narrow[__wc]; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ const int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ if (_M_narrow_ok) -+ while (__lo < __hi) -+ { -+ if (*__lo >= 0 && *__lo < 128) -+ *__dest = _M_narrow[*__lo]; -+ else -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ ++__lo; -+ ++__dest; -+ } -+ else -+ while (__lo < __hi) -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ ++__lo; -+ ++__dest; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ void -+ ctype::_M_initialize_ctype() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wint_t __i; -+ for (__i = 0; __i < 128; ++__i) -+ { -+ const int __c = wctob(__i); -+ if (__c == EOF) -+ break; -+ else -+ _M_narrow[__i] = static_cast(__c); -+ } -+ if (__i == 128) -+ _M_narrow_ok = true; -+ else -+ _M_narrow_ok = false; -+ for (size_t __j = 0; -+ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) -+ _M_widen[__j] = btowc(__j); -+ -+ for (size_t __k = 0; __k <= 11; ++__k) -+ { -+ _M_bit[__k] = static_cast(_ISbit(__k)); -+ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+#endif // _GLIBCXX_USE_WCHAR_T -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+# elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,118 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template -+ messages<_CharT>::messages(size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), -+ _M_name_messages(_S_get_c_name()) -+ { } -+ -+ template -+ messages<_CharT>::messages(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), -+ _M_name_messages(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_messages = __tmp; -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template -+ messages<_CharT>::~messages() -+ { -+ if (_M_name_messages != _S_get_c_name()) -+ delete [] _M_name_messages; -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+ if (this->_M_name_messages != locale::facet::_S_get_c_name()) -+ delete [] this->_M_name_messages; -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ this->_M_name_messages = __tmp; -+ -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_messages); -+ this->_S_create_c_locale(this->_M_c_locale_messages, __s); -+ } -+ } -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,698 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ __ret.field[0] = sign; -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[2] = space; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[1] = space; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ else -+ { -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ default: -+ ; -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == true -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == false -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ { -+ uc = static_cast(money_base::_S_atoms[__i]); -+ _M_data->_M_atoms[__i] = btowc(uc); -+ } -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ { -+ uc = static_cast(money_base::_S_atoms[__i]); -+ _M_data->_M_atoms[__i] = btowc(uc); -+ } -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,183 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, -+ __cloc)); -+ -+ // Check for NULL, which implies no grouping. -+ if (_M_data->_M_thousands_sep == '\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = "true"; -+ _M_data->_M_truename_size = strlen(_M_data->_M_truename); -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = "false"; -+ _M_data->_M_falsename_size = strlen(_M_data->_M_falsename); -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_S_get_c_locale()); -+#endif -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ { -+ uc = static_cast(__num_base::_S_atoms_out[__i]); -+ _M_data->_M_atoms_out[__i] = btowc(uc); -+ } -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ { -+ uc = static_cast(__num_base::_S_atoms_in[__j]); -+ _M_data->_M_atoms_in[__j] = btowc(uc); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ -+ if (_M_data->_M_thousands_sep == L'\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = L"true"; -+ _M_data->_M_truename_size = wcslen(_M_data->_M_truename); -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = L"false"; -+ _M_data->_M_falsename_size = wcslen(_M_data->_M_falsename); -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ #endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc 2004-09-10 10:48:00.000000000 -0500 -@@ -0,0 +1,356 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = '\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = "%m/%d/%y"; -+ _M_data->_M_date_era_format = "%m/%d/%y"; -+ _M_data->_M_time_format = "%H:%M:%S"; -+ _M_data->_M_time_era_format = "%H:%M:%S"; -+ _M_data->_M_date_time_format = ""; -+ _M_data->_M_date_time_era_format = ""; -+ _M_data->_M_am = "AM"; -+ _M_data->_M_pm = "PM"; -+ _M_data->_M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = "Sunday"; -+ _M_data->_M_day2 = "Monday"; -+ _M_data->_M_day3 = "Tuesday"; -+ _M_data->_M_day4 = "Wednesday"; -+ _M_data->_M_day5 = "Thursday"; -+ _M_data->_M_day6 = "Friday"; -+ _M_data->_M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = "Sun"; -+ _M_data->_M_aday2 = "Mon"; -+ _M_data->_M_aday3 = "Tue"; -+ _M_data->_M_aday4 = "Wed"; -+ _M_data->_M_aday5 = "Thu"; -+ _M_data->_M_aday6 = "Fri"; -+ _M_data->_M_aday7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = "January"; -+ _M_data->_M_month02 = "February"; -+ _M_data->_M_month03 = "March"; -+ _M_data->_M_month04 = "April"; -+ _M_data->_M_month05 = "May"; -+ _M_data->_M_month06 = "June"; -+ _M_data->_M_month07 = "July"; -+ _M_data->_M_month08 = "August"; -+ _M_data->_M_month09 = "September"; -+ _M_data->_M_month10 = "October"; -+ _M_data->_M_month11 = "November"; -+ _M_data->_M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = "Jan"; -+ _M_data->_M_amonth02 = "Feb"; -+ _M_data->_M_amonth03 = "Mar"; -+ _M_data->_M_amonth04 = "Apr"; -+ _M_data->_M_amonth05 = "May"; -+ _M_data->_M_amonth06 = "Jun"; -+ _M_data->_M_amonth07 = "Jul"; -+ _M_data->_M_amonth08 = "Aug"; -+ _M_data->_M_amonth09 = "Sep"; -+ _M_data->_M_amonth10 = "Oct"; -+ _M_data->_M_amonth11 = "Nov"; -+ _M_data->_M_amonth12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc); -+ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ __timepunct:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+ const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = L'\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = L"%m/%d/%y"; -+ _M_data->_M_date_era_format = L"%m/%d/%y"; -+ _M_data->_M_time_format = L"%H:%M:%S"; -+ _M_data->_M_time_era_format = L"%H:%M:%S"; -+ _M_data->_M_date_time_format = L""; -+ _M_data->_M_date_time_era_format = L""; -+ _M_data->_M_am = L"AM"; -+ _M_data->_M_pm = L"PM"; -+ _M_data->_M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = L"Sunday"; -+ _M_data->_M_day2 = L"Monday"; -+ _M_data->_M_day3 = L"Tuesday"; -+ _M_data->_M_day4 = L"Wednesday"; -+ _M_data->_M_day5 = L"Thursday"; -+ _M_data->_M_day6 = L"Friday"; -+ _M_data->_M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = L"Sun"; -+ _M_data->_M_aday2 = L"Mon"; -+ _M_data->_M_aday3 = L"Tue"; -+ _M_data->_M_aday4 = L"Wed"; -+ _M_data->_M_aday5 = L"Thu"; -+ _M_data->_M_aday6 = L"Fri"; -+ _M_data->_M_aday7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = L"January"; -+ _M_data->_M_month02 = L"February"; -+ _M_data->_M_month03 = L"March"; -+ _M_data->_M_month04 = L"April"; -+ _M_data->_M_month05 = L"May"; -+ _M_data->_M_month06 = L"June"; -+ _M_data->_M_month07 = L"July"; -+ _M_data->_M_month08 = L"August"; -+ _M_data->_M_month09 = L"September"; -+ _M_data->_M_month10 = L"October"; -+ _M_data->_M_month11 = L"November"; -+ _M_data->_M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = L"Jan"; -+ _M_data->_M_amonth02 = L"Feb"; -+ _M_data->_M_amonth03 = L"Mar"; -+ _M_data->_M_amonth04 = L"Apr"; -+ _M_data->_M_amonth05 = L"May"; -+ _M_data->_M_amonth06 = L"Jun"; -+ _M_data->_M_amonth07 = L"Jul"; -+ _M_data->_M_amonth08 = L"Aug"; -+ _M_data->_M_amonth09 = L"Sep"; -+ _M_data->_M_amonth10 = L"Oct"; -+ _M_data->_M_amonth11 = L"Nov"; -+ _M_data->_M_amonth12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+ _M_data->_M_date_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+ _M_data->_M_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+ _M_data->_M_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+ _M_data->_M_date_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+ _M_data->_M_date_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+ _M_data->_M_am = reinterpret_cast(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+ _M_data->_M_pm = reinterpret_cast(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+ _M_data->_M_am_pm_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+ _M_data->_M_day2 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+ _M_data->_M_day3 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+ _M_data->_M_day4 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+ _M_data->_M_day5 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+ _M_data->_M_day6 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+ _M_data->_M_day7 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+ _M_data->_M_aday2 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+ _M_data->_M_aday3 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+ _M_data->_M_aday4 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+ _M_data->_M_aday5 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+ _M_data->_M_aday6 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+ _M_data->_M_aday7 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+ _M_data->_M_month02 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+ _M_data->_M_month03 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+ _M_data->_M_month04 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+ _M_data->_M_month05 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+ _M_data->_M_month06 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+ _M_data->_M_month07 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+ _M_data->_M_month08 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+ _M_data->_M_month09 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+ _M_data->_M_month10 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+ _M_data->_M_month11 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+ _M_data->_M_month12 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+ _M_data->_M_amonth02 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+ _M_data->_M_amonth03 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+ _M_data->_M_amonth04 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+ _M_data->_M_amonth05 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+ _M_data->_M_amonth06 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+ _M_data->_M_amonth07 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+ _M_data->_M_amonth08 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+ _M_data->_M_amonth09 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+ _M_data->_M_amonth10 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+ _M_data->_M_amonth11 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+ _M_data->_M_amonth12 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_12, __cloc)); -+ } -+#endif // 0 -+ } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,68 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik -+ -+ template -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) -+ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_timepunct = __tmp; -+ _M_initialize_timepunct(__cloc); -+ } -+ -+ template -+ __timepunct<_CharT>::~__timepunct() -+ { -+ if (_M_name_timepunct != _S_get_c_name()) -+ delete [] _M_name_timepunct; -+ delete _M_data; -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,58 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ -+ // NB: Offsets into ctype::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISalpha | _ISdigit | _ISpunct; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalpha | _ISdigit; -+ }; -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast(__c)] & __m; } -+ -+ const char* -+ ctype:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,92 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype::classic_table() throw() -+ { return __C_ctype_b; } -+ -+ ctype::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ ctype::ctype(const mask* __table, bool __del, size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ char -+ ctype::do_toupper(char __c) const -+ { return _M_toupper[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype::do_tolower(char __c) const -+ { return _M_tolower[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,44 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCXX_OS_DEFINES -+#define _GLIBCXX_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif -diff -urN gcc-3.4.2-dist/libstdc++-v3/configure gcc-3.4.2/libstdc++-v3/configure ---- gcc-3.4.2-dist/libstdc++-v3/configure 2004-08-13 15:44:04.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/configure 2004-09-10 10:47:40.000000000 -0500 -@@ -3878,6 +3878,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -5545,6 +5550,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ xlinux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" -@@ -5759,6 +5767,77 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ echo "$as_me:$LINENO: result: uclibc" >&5 -+echo "${ECHO_T}uclibc" >&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_check_msgfmt+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_check_msgfmt="yes" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt=$ac_cv_prog_check_msgfmt -+if test -n "$check_msgfmt"; then -+ echo "$as_me:$LINENO: result: $check_msgfmt" >&5 -+echo "${ECHO_T}$check_msgfmt" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.2-dist/libstdc++-v3/configure.host gcc-3.4.2/libstdc++-v3/configure.host ---- gcc-3.4.2-dist/libstdc++-v3/configure.host 2004-08-27 14:52:30.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/configure.host 2004-09-10 10:47:40.000000000 -0500 -@@ -217,6 +217,12 @@ - ;; - esac - -+# Override for uClibc since linux-uclibc gets mishandled above. -+case "${host_os}" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; -+esac - - # Set any OS-dependent and CPU-dependent bits. - # THIS TABLE IS SORTED. KEEP IT THAT WAY. -diff -urN gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4 gcc-3.4.2/libstdc++-v3/crossconfig.m4 ---- gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4 2004-07-06 20:23:49.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/crossconfig.m4 2004-09-10 10:47:40.000000000 -0500 -@@ -138,6 +138,99 @@ - ;; - esac - ;; -+ *-uclibc*) -+# Temporary hack until we implement the float versions of the libm funcs -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCXX_CHECK_LINKER_FEATURES -+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCXX_CHECK_WCHAR_T_SUPPORT -+ -+ # For LFS. -+ AC_DEFINE(HAVE_INT64_T) -+ case "$target" in -+ *-uclinux*) -+ # Don't enable LFS with uClinux -+ ;; -+ *) -+ AC_DEFINE(_GLIBCXX_USE_LFS) -+ esac -+ -+ # For showmanyc_helper(). -+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) -+ GLIBCXX_CHECK_POLL -+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG -+ -+ # For xsputn_2(). -+ AC_CHECK_HEADERS(sys/uio.h) -+ GLIBCXX_CHECK_WRITEV -+ -+# AC_DEFINE(HAVE_ACOSF) -+# AC_DEFINE(HAVE_ASINF) -+# AC_DEFINE(HAVE_ATANF) -+# AC_DEFINE(HAVE_ATAN2F) -+ AC_DEFINE(HAVE_CEILF) -+ AC_DEFINE(HAVE_COPYSIGN) -+# AC_DEFINE(HAVE_COPYSIGNF) -+# AC_DEFINE(HAVE_COSF) -+# AC_DEFINE(HAVE_COSHF) -+# AC_DEFINE(HAVE_EXPF) -+# AC_DEFINE(HAVE_FABSF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ AC_DEFINE(HAVE_FLOORF) -+# AC_DEFINE(HAVE_FMODF) -+# AC_DEFINE(HAVE_FREXPF) -+ AC_DEFINE(HAVE_HYPOT) -+# AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+# AC_DEFINE(HAVE_LOGF) -+# AC_DEFINE(HAVE_LOG10F) -+# AC_DEFINE(HAVE_MODFF) -+# AC_DEFINE(HAVE_SINF) -+# AC_DEFINE(HAVE_SINHF) -+# AC_DEFINE(HAVE_SINCOS) -+# AC_DEFINE(HAVE_SINCOSF) -+ AC_DEFINE(HAVE_SQRTF) -+# AC_DEFINE(HAVE_TANF) -+# AC_DEFINE(HAVE_TANHF) -+ if test x"long_double_math_on_this_cpu" = x"yes"; then -+ AC_MSG_ERROR([long_double_math_on_this_cpu is yes!]) -+# AC_DEFINE(HAVE_ACOSL) -+# AC_DEFINE(HAVE_ASINL) -+# AC_DEFINE(HAVE_ATANL) -+# AC_DEFINE(HAVE_ATAN2L) -+# AC_DEFINE(HAVE_CEILL) -+# AC_DEFINE(HAVE_COPYSIGNL) -+# AC_DEFINE(HAVE_COSL) -+# AC_DEFINE(HAVE_COSHL) -+# AC_DEFINE(HAVE_EXPL) -+# AC_DEFINE(HAVE_FABSL) -+# AC_DEFINE(HAVE_FINITEL) -+# AC_DEFINE(HAVE_FLOORL) -+# AC_DEFINE(HAVE_FMODL) -+# AC_DEFINE(HAVE_FREXPL) -+# AC_DEFINE(HAVE_HYPOTL) -+# AC_DEFINE(HAVE_ISINFL) -+# AC_DEFINE(HAVE_ISNANL) -+# AC_DEFINE(HAVE_LOGL) -+# AC_DEFINE(HAVE_LOG10L) -+# AC_DEFINE(HAVE_MODFL) -+# AC_DEFINE(HAVE_POWL) -+# AC_DEFINE(HAVE_SINL) -+# AC_DEFINE(HAVE_SINHL) -+# AC_DEFINE(HAVE_SINCOSL) -+# AC_DEFINE(HAVE_SQRTL) -+# AC_DEFINE(HAVE_TANL) -+# AC_DEFINE(HAVE_TANHL) -+ fi -+ ;; - *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ - machine/endian.h machine/param.h sys/machine.h sys/types.h \ -@@ -152,7 +245,7 @@ - AC_DEFINE(HAVE_INT64_T) - case "$target" in - *-uclinux*) -- # Don't enable LFS with uClibc -+ # Don't enable LFS with uClinux - ;; - *) - AC_DEFINE(_GLIBCXX_USE_LFS) -diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h ---- gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h 2003-12-08 21:51:45.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h 2004-09-10 10:47:40.000000000 -0500 -@@ -101,7 +101,9 @@ - using std::wmemcpy; - using std::wmemmove; - using std::wmemset; -+#if _GLIBCXX_HAVE_WCSFTIME - using std::wcsftime; -+#endif - - #if _GLIBCXX_USE_C99 - using std::wcstold; -diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h 2004-07-20 03:52:12.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h 2004-09-10 10:47:40.000000000 -0500 -@@ -179,7 +179,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#if _GLIBCXX_HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc-uclibc-3.4.0-120-softfloat.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc-uclibc-3.4.0-120-softfloat.patch deleted file mode 100644 index f2431896c..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc-uclibc-3.4.0-120-softfloat.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- gcc-3.3.2-old/configure.in 2003-08-09 01:57:21.000000000 -0500 -+++ gcc-3.3.2/configure.in 2004-01-15 12:46:29.000000000 -0600 -@@ -1418,6 +1418,11 @@ - fi - - FLAGS_FOR_TARGET= -+case " $targargs " in -+ *" --nfp "* | *" --without-float "*) -+ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -msoft-float' -+ ;; -+esac - case " $target_configdirs " in - *" newlib "*) - case " $targargs " in diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-ldm-peephole.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-ldm-peephole.patch deleted file mode 100644 index fb317e153..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-ldm-peephole.patch +++ /dev/null @@ -1,79 +0,0 @@ ---- gcc-3.4.0/gcc/config/arm/arm.md.arm-ldm-peephole 2004-01-13 08:24:37.000000000 -0500 -+++ gcc-3.4.0/gcc/config/arm/arm.md 2004-04-24 18:18:04.000000000 -0400 -@@ -8810,13 +8810,16 @@ - (set_attr "length" "4,8,8")] - ) - -+; Try to convert LDR+LDR+arith into [add+]LDM+arith -+; On XScale, LDM is always slower than two LDRs, so only do this if -+; optimising for size. - (define_insn "*arith_adjacentmem" - [(set (match_operand:SI 0 "s_register_operand" "=r") - (match_operator:SI 1 "shiftable_operator" - [(match_operand:SI 2 "memory_operand" "m") - (match_operand:SI 3 "memory_operand" "m")])) - (clobber (match_scratch:SI 4 "=r"))] -- "TARGET_ARM && adjacent_mem_locations (operands[2], operands[3])" -+ "TARGET_ARM && (!arm_tune_xscale || optimize_size) && adjacent_mem_locations (operands[2], operands[3])" - "* - { - rtx ldm[3]; -@@ -8851,6 +8854,8 @@ - } - if (val1 && val2) - { -+ /* This would be a loss on a Harvard core, but adjacent_mem_locations() -+ will prevent it from happening. */ - rtx ops[3]; - ldm[0] = ops[0] = operands[4]; - ops[1] = XEXP (XEXP (operands[2], 0), 0); ---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm-peephole 2004-04-24 18:16:25.000000000 -0400 -+++ gcc-3.4.0/gcc/config/arm/arm.c 2004-04-24 18:18:04.000000000 -0400 -@@ -4593,8 +4593,11 @@ - arith_adjacentmem pattern to output an overlong sequence. */ - if (!const_ok_for_op (PLUS, val0) || !const_ok_for_op (PLUS, val1)) - return 0; -- -- return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4); -+ -+ /* For Harvard cores, only accept pairs where one offset is zero. -+ See comment in load_multiple_sequence. */ -+ return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4) -+ && (!arm_ld_sched || val0 == 0 || val1 == 0); - } - return 0; - } -@@ -4838,6 +4841,11 @@ - *load_offset = unsorted_offsets[order[0]]; - } - -+ /* For XScale a two-word LDM is a performance loss, so only do this if -+ size is more important. See comments in arm_gen_load_multiple. */ -+ if (nops == 2 && arm_tune_xscale && !optimize_size) -+ return 0; -+ - if (unsorted_offsets[order[0]] == 0) - return 1; /* ldmia */ - -@@ -5064,6 +5072,11 @@ - *load_offset = unsorted_offsets[order[0]]; - } - -+ /* For XScale a two-word LDM is a performance loss, so only do this if -+ size is more important. See comments in arm_gen_load_multiple. */ -+ if (nops == 2 && arm_tune_xscale && !optimize_size) -+ return 0; -+ - if (unsorted_offsets[order[0]] == 0) - return 1; /* stmia */ - ---- gcc-3.4.0/gcc/genpeep.c.arm-ldm-peephole 2003-07-05 01:27:22.000000000 -0400 -+++ gcc-3.4.0/gcc/genpeep.c 2004-04-24 18:18:04.000000000 -0400 -@@ -381,6 +381,7 @@ - printf ("#include \"recog.h\"\n"); - printf ("#include \"except.h\"\n\n"); - printf ("#include \"function.h\"\n\n"); -+ printf ("#include \"flags.h\"\n\n"); - - printf ("#ifdef HAVE_peephole\n"); - printf ("extern rtx peep_operand[];\n\n"); diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-ldm.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-ldm.patch deleted file mode 100644 index 142052fdf..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-ldm.patch +++ /dev/null @@ -1,119 +0,0 @@ ---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm 2004-02-27 09:51:05.000000000 -0500 -+++ gcc-3.4.0/gcc/config/arm/arm.c 2004-04-24 18:16:25.000000000 -0400 -@@ -8520,6 +8520,26 @@ - return_used_this_function = 0; - } - -+/* Return the number (counting from 0) of -+ the least significant set bit in MASK. */ -+ -+#ifdef __GNUC__ -+inline -+#endif -+static int -+number_of_first_bit_set (mask) -+ int mask; -+{ -+ int bit; -+ -+ for (bit = 0; -+ (mask & (1 << bit)) == 0; -+ ++bit) -+ continue; -+ -+ return bit; -+} -+ - const char * - arm_output_epilogue (rtx sibling) - { -@@ -8753,27 +8773,47 @@ - saved_regs_mask |= (1 << PC_REGNUM); - } - -- /* Load the registers off the stack. If we only have one register -- to load use the LDR instruction - it is faster. */ -- if (saved_regs_mask == (1 << LR_REGNUM)) -- { -- /* The exception handler ignores the LR, so we do -- not really need to load it off the stack. */ -- if (eh_ofs) -- asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM); -- else -- asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM); -- } -- else if (saved_regs_mask) -+ if (saved_regs_mask) - { -- if (saved_regs_mask & (1 << SP_REGNUM)) -- /* Note - write back to the stack register is not enabled -- (ie "ldmfd sp!..."). We know that the stack pointer is -- in the list of registers and if we add writeback the -- instruction becomes UNPREDICTABLE. */ -- print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask); -+ /* Load the registers off the stack. If we only have one register -+ to load use the LDR instruction - it is faster. */ -+ if (bit_count (saved_regs_mask) == 1) -+ { -+ int reg = number_of_first_bit_set (saved_regs_mask); -+ -+ switch (reg) -+ { -+ case SP_REGNUM: -+ /* Mustn't use base writeback when loading SP. */ -+ asm_fprintf (f, "\tldr\t%r, [%r]\n", SP_REGNUM, SP_REGNUM); -+ break; -+ -+ case LR_REGNUM: -+ if (eh_ofs) -+ { -+ /* The exception handler ignores the LR, so we do -+ not really need to load it off the stack. */ -+ asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM); -+ break; -+ } -+ /* else fall through */ -+ -+ default: -+ asm_fprintf (f, "\tldr\t%r, [%r], #4\n", reg, SP_REGNUM); -+ break; -+ } -+ } - else -- print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask); -+ { -+ if (saved_regs_mask & (1 << SP_REGNUM)) -+ /* Note - write back to the stack register is not enabled -+ (ie "ldmfd sp!..."). We know that the stack pointer is -+ in the list of registers and if we add writeback the -+ instruction becomes UNPREDICTABLE. */ -+ print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask); -+ else -+ print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask); -+ } - } - - if (current_function_pretend_args_size) -@@ -11401,22 +11441,6 @@ - } - } - --/* Return the number (counting from 0) of -- the least significant set bit in MASK. */ -- --inline static int --number_of_first_bit_set (int mask) --{ -- int bit; -- -- for (bit = 0; -- (mask & (1 << bit)) == 0; -- ++bit) -- continue; -- -- return bit; --} -- - /* Generate code to return from a thumb function. - If 'reg_containing_return_addr' is -1, then the return address is - actually on the stack, at the stack pointer. */ diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-tune.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-tune.patch deleted file mode 100644 index cdb20bef9..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc34-arm-tune.patch +++ /dev/null @@ -1,9 +0,0 @@ ---- gcc-3.4.0/gcc/config/arm/linux-elf.h.arm-tune 2004-01-31 01:18:11.000000000 -0500 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-04-24 18:19:10.000000000 -0400 -@@ -126,3 +126,6 @@ - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" -+ -+/* Tune for XScale. */ -+#define TARGET_TUNE_DEFAULT TARGET_CPU_xscale diff --git a/openembedded/packages/gcc/gcc-3.4.3/gcc34-reverse-compare.patch b/openembedded/packages/gcc/gcc-3.4.3/gcc34-reverse-compare.patch deleted file mode 100644 index c3c40dd18..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/gcc34-reverse-compare.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- gcc-3.4.0/gcc/flow.c.reverse-compare 2004-02-27 22:39:19.000000000 -0500 -+++ gcc-3.4.0/gcc/flow.c 2004-04-24 16:36:00.000000000 -0400 -@@ -1843,6 +1843,7 @@ - regset_head diff_head; - regset diff = INITIALIZE_REG_SET (diff_head); - basic_block bb_true, bb_false; -+ enum rtx_code reversed_code; - int i; - - /* Identify the successor blocks. */ -@@ -1889,8 +1890,11 @@ - if (GET_CODE (reg) == REG - && XEXP (cond_true, 1) == const0_rtx) - { -- rtx cond_false -- = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), -+ rtx cond_false; -+ reversed_code = reverse_condition (GET_CODE (cond_true)); -+ if (reversed_code == UNKNOWN) -+ goto skip; -+ cond_false = gen_rtx_fmt_ee (reversed_code, - GET_MODE (cond_true), XEXP (cond_true, 0), - XEXP (cond_true, 1)); - if (GET_CODE (XEXP (set_src, 1)) == PC) -@@ -1925,6 +1929,7 @@ - } - } - -+ skip: - FREE_REG_SET (diff); - } - #endif diff --git a/openembedded/packages/gcc/gcc-3.4.3/sdk-libstdc++-includes.patch b/openembedded/packages/gcc/gcc-3.4.3/sdk-libstdc++-includes.patch deleted file mode 100644 index 4377c2143..000000000 --- a/openembedded/packages/gcc/gcc-3.4.3/sdk-libstdc++-includes.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- gcc-3.4.1/libstdc++-v3/libmath/Makefile.am~ 2003-08-27 22:29:42.000000000 +0100 -+++ gcc-3.4.1/libstdc++-v3/libmath/Makefile.am 2004-07-22 16:41:45.152130128 +0100 -@@ -32,7 +32,7 @@ - - libmath_la_SOURCES = stubs.c - --AM_CPPFLAGS = $(CANADIAN_INCLUDES) -+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include - - # Only compiling "C" sources in this directory. - LIBTOOL = @LIBTOOL@ --tag CC ---- gcc-3.4.1/libstdc++-v3/fragment.am.old 2004-07-22 18:24:58.024083656 +0100 -+++ gcc-3.4.1/libstdc++-v3/fragment.am 2004-07-22 18:24:59.019932264 +0100 -@@ -18,7 +18,7 @@ - $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once - - # -I/-D flags to pass when compiling. --AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include - - - diff --git a/openembedded/packages/gcc/gcc-3.4.4/15342.patch b/openembedded/packages/gcc/gcc-3.4.4/15342.patch deleted file mode 100644 index d0f3e72d4..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/15342.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- gcc/gcc/regrename.c~ 2004-01-14 17:55:20.000000000 +0000 -+++ gcc/gcc/regrename.c 2005-02-28 07:24:25.893015200 +0000 -@@ -671,7 +671,8 @@ - - case SET: - scan_rtx (insn, &SET_SRC (x), class, action, OP_IN, 0); -- scan_rtx (insn, &SET_DEST (x), class, action, OP_OUT, 0); -+ scan_rtx (insn, &SET_DEST (x), class, action, -+ GET_CODE (PATTERN (insn)) == COND_EXEC ? OP_INOUT : OP_OUT, 0); - return; - - case STRICT_LOW_PART: -@@ -696,7 +697,8 @@ - abort (); - - case CLOBBER: -- scan_rtx (insn, &SET_DEST (x), class, action, OP_OUT, 1); -+ scan_rtx (insn, &SET_DEST (x), class, action, -+ GET_CODE (PATTERN (insn)) == COND_EXEC ? OP_INOUT : OP_OUT, 0); - return; - - case EXPR_LIST: diff --git a/openembedded/packages/gcc/gcc-3.4.4/GCC3.4.0VisibilityPatch.diff b/openembedded/packages/gcc/gcc-3.4.4/GCC3.4.0VisibilityPatch.diff deleted file mode 100644 index d51da7157..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/GCC3.4.0VisibilityPatch.diff +++ /dev/null @@ -1,1100 +0,0 @@ - -diff -aur gcc-3.4.0orig/gcc/c-common.c gcc-3.4.0/gcc/c-common.c ---- gcc-3.4.0orig/gcc/c-common.c 2004-03-19 01:32:59.000000000 +0000 -+++ gcc-3.4.0/gcc/c-common.c 2004-05-10 21:05:33.000000000 +0100 -@@ -833,7 +833,7 @@ - handle_deprecated_attribute }, - { "vector_size", 1, 1, false, true, false, - handle_vector_size_attribute }, -- { "visibility", 1, 1, true, false, false, -+ { "visibility", 1, 1, false, false, false, - handle_visibility_attribute }, - { "tls_model", 1, 1, true, false, false, - handle_tls_model_attribute }, -@@ -4886,7 +4886,16 @@ - - *no_add_attrs = true; - -- if (decl_function_context (decl) != 0 || ! TREE_PUBLIC (decl)) -+ if (TYPE_P (*node)) -+ { -+ if (TREE_CODE (*node) != RECORD_TYPE && TREE_CODE (*node) != UNION_TYPE) -+ { -+ warning ("`%s' attribute ignored on non-class types", -+ IDENTIFIER_POINTER (name)); -+ return NULL_TREE; -+ } -+ } -+ else if (decl_function_context (decl) != 0 || ! TREE_PUBLIC (decl)) - { - warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); - return NULL_TREE; -@@ -4897,6 +4906,14 @@ - error ("visibility arg not a string"); - return NULL_TREE; - } -+ -+ /* If this is a type, set the visibility on the type decl. */ -+ if (TYPE_P (decl)) -+ { -+ decl = TYPE_NAME (decl); -+ if (! decl) -+ return NULL_TREE; -+ } - - if (strcmp (TREE_STRING_POINTER (id), "default") == 0) - DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; -@@ -4908,6 +4925,14 @@ - DECL_VISIBILITY (decl) = VISIBILITY_PROTECTED; - else - error ("visibility arg must be one of \"default\", \"hidden\", \"protected\" or \"internal\""); -+ DECL_VISIBILITYSPECIFIED (decl) = 1; -+ -+ /* For decls only, go ahead and attach the attribute to the node as well. -+ This is needed so we can determine whether we have VISIBILITY_DEFAULT -+ because the visibility was not specified, or because it was explicitly -+ overridden from the class visibility. */ -+ if (DECL_P (*node)) -+ *no_add_attrs = false; - - return NULL_TREE; - } - -diff -aur gcc-3.4.0orig/gcc/c-decl.c gcc-3.4.0/gcc/c-decl.c ---- gcc-3.4.0orig/gcc/c-decl.c 2004-03-22 17:58:18.000000000 +0000 -+++ gcc-3.4.0/gcc/c-decl.c 2004-05-10 15:16:27.000000000 +0100 -@@ -1164,9 +1164,8 @@ - } - - /* warnings */ -- /* All decls must agree on a non-default visibility. */ -- if (DECL_VISIBILITY (newdecl) != VISIBILITY_DEFAULT -- && DECL_VISIBILITY (olddecl) != VISIBILITY_DEFAULT -+ /* All decls must agree on a visibility. */ -+ if (DECL_VISIBILITYSPECIFIED (newdecl) && DECL_VISIBILITYSPECIFIED (olddecl) - && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl)) - { - warning ("%Jredeclaration of '%D' with different visibility " -@@ -1361,9 +1360,12 @@ - Currently, it can only be defined in the prototype. */ - COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl); - -- /* If either declaration has a nondefault visibility, use it. */ -- if (DECL_VISIBILITY (olddecl) != VISIBILITY_DEFAULT) -- DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl); -+ /* Use visibility of whichever declaration had it specified */ -+ if (DECL_VISIBILITYSPECIFIED (olddecl)) -+ { -+ DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl); -+ DECL_VISIBILITYSPECIFIED (newdecl) = 1; -+ } - - if (TREE_CODE (newdecl) == FUNCTION_DECL) - { - -diff -aur gcc-3.4.0orig/gcc/common.opt gcc-3.4.0/gcc/common.opt ---- gcc-3.4.0orig/gcc/common.opt 2004-02-18 00:09:04.000000000 +0000 -+++ gcc-3.4.0/gcc/common.opt 2004-05-09 08:10:50.000000000 +0100 -@@ -718,6 +718,11 @@ - Common - Add extra commentary to assembler output - -+fvisibility= -+Common Joined RejectNegative -+-fvisibility=[default|internal|hidden|protected] Set the default symbol visibility -+ -+ - fvpt - Common - Use expression value profiles in optimizations - -diff -aur gcc-3.4.0orig/gcc/c.opt gcc-3.4.0/gcc/c.opt ---- gcc-3.4.0orig/gcc/c.opt 2004-02-18 00:09:03.000000000 +0000 -+++ gcc-3.4.0/gcc/c.opt 2004-05-09 08:10:50.000000000 +0100 -@@ -656,6 +656,10 @@ - C++ ObjC++ - Use __cxa_atexit to register destructors - -+fvisibility-inlines-hidden -+C++ -+Marks all inlined methods as having hidden visibility -+ - fvtable-gc - C++ ObjC++ - Discard unused virtual functions -diff -aur gcc-3.4.0orig/gcc/c-opts.c gcc-3.4.0/gcc/c-opts.c ---- gcc-3.4.0orig/gcc/c-opts.c 2004-02-18 00:09:03.000000000 +0000 -+++ gcc-3.4.0/gcc/c-opts.c 2004-05-09 08:10:50.000000000 +0100 -@@ -912,6 +912,10 @@ - case OPT_fuse_cxa_atexit: - flag_use_cxa_atexit = value; - break; -+ -+ case OPT_fvisibility_inlines_hidden: -+ visibility_options.inlineshidden = value; -+ break; - - case OPT_fweak: - flag_weak = value; - -diff -aur gcc-3.4.0orig/gcc/cp/class.c gcc-3.4.0/gcc/cp/class.c ---- gcc-3.4.0orig/gcc/cp/class.c 2004-03-09 07:27:23.000000000 +0000 -+++ gcc-3.4.0/gcc/cp/class.c 2004-05-10 21:06:50.000000000 +0100 -@@ -524,6 +524,10 @@ - DECL_ALIGN (decl) = MAX (TYPE_ALIGN (double_type_node), - DECL_ALIGN (decl)); - -+ /* The vtable's visibility is the class visibility. There is no way -+ to override the visibility for just the vtable. */ -+ DECL_VISIBILITY (decl) = CLASSTYPE_VISIBILITY (class_type); -+ DECL_VISIBILITYSPECIFIED (decl) = CLASSTYPE_VISIBILITYSPECIFIED (class_type); - import_export_vtable (decl, class_type, 0); - - return decl; -@@ -2971,7 +2975,25 @@ - continue; - - if (TREE_CODE (x) == CONST_DECL || TREE_CODE (x) == VAR_DECL) -- continue; -+ { -+ /* Apply the class's visibility attribute to static members -+ which do not have a visibility attribute. */ -+ if (! lookup_attribute ("visibility", DECL_ATTRIBUTES (x))) -+ { -+ if (visibility_options.inlineshidden && DECL_INLINE (x)) -+ { -+ DECL_VISIBILITY (x) = VISIBILITY_HIDDEN; -+ DECL_VISIBILITYSPECIFIED (x) = 1; -+ } -+ else -+ { -+ DECL_VISIBILITY (x) = CLASSTYPE_VISIBILITY (current_class_type); -+ DECL_VISIBILITYSPECIFIED (x) = CLASSTYPE_VISIBILITYSPECIFIED (current_class_type); -+ } -+ } -+ -+ continue; -+ } - - /* Now it can only be a FIELD_DECL. */ - -@@ -3708,6 +3730,22 @@ - check_for_override (x, t); - if (DECL_PURE_VIRTUAL_P (x) && ! DECL_VINDEX (x)) - cp_error_at ("initializer specified for non-virtual method `%D'", x); -+ -+ /* Apply the class's visibility attribute to methods which do -+ not have a visibility attribute. */ -+ if (! lookup_attribute ("visibility", DECL_ATTRIBUTES (x))) -+ { -+ if (visibility_options.inlineshidden && DECL_INLINE (x)) -+ { -+ DECL_VISIBILITY (x) = VISIBILITY_HIDDEN; -+ DECL_VISIBILITYSPECIFIED (x) = 1; -+ } -+ else -+ { -+ DECL_VISIBILITY (x) = CLASSTYPE_VISIBILITY (current_class_type); -+ DECL_VISIBILITYSPECIFIED (x) = CLASSTYPE_VISIBILITYSPECIFIED (current_class_type); -+ } -+ } - - /* The name of the field is the original field name - Save this in auxiliary field for later overloading. */ -@@ -7830,3 +7868,4 @@ - *vid->last_init = build_tree_list (NULL_TREE, init); - vid->last_init = &TREE_CHAIN (*vid->last_init); - } -+ - -diff -aur gcc-3.4.0orig/gcc/cp/cp-tree.h gcc-3.4.0/gcc/cp/cp-tree.h ---- gcc-3.4.0orig/gcc/cp/cp-tree.h 2004-03-20 00:13:08.000000000 +0000 -+++ gcc-3.4.0/gcc/cp/cp-tree.h 2004-05-10 20:56:56.000000000 +0100 -@@ -1008,7 +1008,12 @@ - #define PUBLICLY_UNIQUELY_DERIVED_P(PARENT, TYPE) \ - (lookup_base ((TYPE), (PARENT), ba_not_special | ba_quiet, NULL) \ - != NULL_TREE) -- -+ -+/* Gives the visibility specification for a class type. */ -+#define CLASSTYPE_VISIBILITY(TYPE) DECL_VISIBILITY (TYPE_NAME (TYPE)) -+#define CLASSTYPE_VISIBILITYSPECIFIED(TYPE) DECL_VISIBILITYSPECIFIED (TYPE_NAME (TYPE)) -+ -+ - /* This is a few header flags for 'struct lang_type'. Actually, - all but the first are used only for lang_type_class; they - are put in this structure to save space. */ - -diff -aur gcc-3.4.0orig/gcc/cp/decl.c gcc-3.4.0/gcc/cp/decl.c ---- gcc-3.4.0orig/gcc/cp/decl.c 2004-04-01 21:47:21.000000000 +0100 -+++ gcc-3.4.0/gcc/cp/decl.c 2004-05-28 21:16:11.000000000 +0100 -@@ -1869,17 +1869,34 @@ - DECL_COMMON (newdecl) = DECL_COMMON (olddecl); - COPY_DECL_ASSEMBLER_NAME (olddecl, newdecl); - -- /* If either declaration has a nondefault visibility, use it. */ -- if (DECL_VISIBILITY (olddecl) != VISIBILITY_DEFAULT) -+ /* Warn about conflicting visibility specifications. */ -+ if (DECL_VISIBILITYSPECIFIED (olddecl) && DECL_VISIBILITYSPECIFIED (newdecl) -+ && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl)) -+ { -+ warning ("%J'%D': visibility attribute ignored because it", -+ newdecl, newdecl); -+ warning ("%Jconflicts with previous declaration here", olddecl); -+ } -+ /* Choose the declaration which specified visibility. */ -+ if (DECL_VISIBILITYSPECIFIED (olddecl)) - { -- if (DECL_VISIBILITY (newdecl) != VISIBILITY_DEFAULT -- && DECL_VISIBILITY (newdecl) != DECL_VISIBILITY (olddecl)) -- { -- warning ("%J'%D': visibility attribute ignored because it", -- newdecl, newdecl); -- warning ("%Jconflicts with previous declaration here", olddecl); -- } - DECL_VISIBILITY (newdecl) = DECL_VISIBILITY (olddecl); -+ DECL_VISIBILITYSPECIFIED (newdecl) = 1; -+ } -+ /* If it's a definition of a global operator new or operator -+ delete, it must be default visibility. */ -+ if (NEW_DELETE_OPNAME_P (DECL_NAME (newdecl)) && DECL_INITIAL (newdecl) != NULL_TREE) -+ { -+ if (!DECL_FUNCTION_MEMBER_P (newdecl) && VISIBILITY_DEFAULT != DECL_VISIBILITY (newdecl)) -+ { -+ warning ("%J`%D': ignoring non-default symbol", -+ newdecl, newdecl); -+ warning ("%Jvisibility on global operator new or delete", newdecl); -+ DECL_VISIBILITY (olddecl) = VISIBILITY_DEFAULT; -+ DECL_VISIBILITYSPECIFIED (olddecl) = 1; -+ DECL_VISIBILITY (newdecl) = VISIBILITY_DEFAULT; -+ DECL_VISIBILITYSPECIFIED (newdecl) = 1; -+ } - } - - if (TREE_CODE (newdecl) == FUNCTION_DECL) - -diff -aur gcc-3.4.0orig/gcc/cp/method.c gcc-3.4.0/gcc/cp/method.c ---- gcc-3.4.0orig/gcc/cp/method.c 2004-04-08 23:15:58.000000000 +0100 -+++ gcc-3.4.0/gcc/cp/method.c 2004-05-09 08:10:52.000000000 +0100 -@@ -394,6 +394,7 @@ - rewrite. */ - TREE_PUBLIC (thunk_fndecl) = TREE_PUBLIC (function); - DECL_VISIBILITY (thunk_fndecl) = DECL_VISIBILITY (function); -+ DECL_VISIBILITYSPECIFIED (thunk_fndecl) = DECL_VISIBILITYSPECIFIED (function); - - if (flag_syntax_only) - { - -diff -aur gcc-3.4.0orig/gcc/cp/optimize.c gcc-3.4.0/gcc/cp/optimize.c ---- gcc-3.4.0orig/gcc/cp/optimize.c 2004-02-08 01:52:50.000000000 +0000 -+++ gcc-3.4.0/gcc/cp/optimize.c 2004-05-09 08:10:52.000000000 +0100 -@@ -155,6 +155,7 @@ - DECL_NOT_REALLY_EXTERN (clone) = DECL_NOT_REALLY_EXTERN (fn); - TREE_PUBLIC (clone) = TREE_PUBLIC (fn); - DECL_VISIBILITY (clone) = DECL_VISIBILITY (fn); -+ DECL_VISIBILITYSPECIFIED (clone) = DECL_VISIBILITYSPECIFIED (fn); - - /* Adjust the parameter names and locations. */ - parm = DECL_ARGUMENTS (fn); - -diff -aur gcc-3.4.0orig/gcc/cp/rtti.c gcc-3.4.0/gcc/cp/rtti.c ---- gcc-3.4.0orig/gcc/cp/rtti.c 2004-03-08 23:00:26.000000000 +0000 -+++ gcc-3.4.0/gcc/cp/rtti.c 2004-05-10 21:09:21.000000000 +0100 -@@ -361,7 +361,11 @@ - pushdecl_top_level_and_finish (d, NULL_TREE); - - if (CLASS_TYPE_P (type)) -- CLASSTYPE_TYPEINFO_VAR (TYPE_MAIN_VARIANT (type)) = d; -+ { -+ CLASSTYPE_TYPEINFO_VAR (TYPE_MAIN_VARIANT (type)) = d; -+ DECL_VISIBILITY (d) = CLASSTYPE_VISIBILITY (type); -+ DECL_VISIBILITYSPECIFIED (d) = CLASSTYPE_VISIBILITYSPECIFIED (type); -+ } - - /* Remember the type it is for. */ - TREE_TYPE (name) = type; -@@ -759,6 +763,11 @@ - TREE_STATIC (name_decl) = 1; - DECL_EXTERNAL (name_decl) = 0; - TREE_PUBLIC (name_decl) = 1; -+ if (CLASS_TYPE_P (target)) -+ { -+ DECL_VISIBILITY (name_decl) = CLASSTYPE_VISIBILITY (target); -+ DECL_VISIBILITYSPECIFIED (name_decl) = CLASSTYPE_VISIBILITYSPECIFIED (target); -+ } - import_export_tinfo (name_decl, target, typeinfo_in_lib_p (target)); - /* External name of the string containing the type's name has a - special name. */ - -diff -aur gcc-3.4.0orig/gcc/c-pragma.c gcc-3.4.0/gcc/c-pragma.c ---- gcc-3.4.0orig/gcc/c-pragma.c 2004-01-23 23:35:53.000000000 +0000 -+++ gcc-3.4.0/gcc/c-pragma.c 2004-05-09 08:10:52.000000000 +0100 -@@ -480,6 +480,86 @@ - return asmname; - } - -+ -+#ifdef HANDLE_PRAGMA_VISIBILITY -+static void handle_pragma_visibility (cpp_reader *); -+ -+/* Sets the default visibility for symbols to something other than that -+ specified on the command line. */ -+static void -+handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED) -+{ /* Form is #pragma GCC visibility push(hidden)|pop */ -+ static int visstack [16], visidx; -+ tree x; -+ enum cpp_ttype token; -+ enum { bad, push, pop } action = bad; -+ -+ token = c_lex (&x); -+ if (token == CPP_NAME) -+ { -+ const char *op = IDENTIFIER_POINTER (x); -+ if (!strcmp (op, "push")) -+ action = push; -+ else if (!strcmp (op, "pop")) -+ action = pop; -+ } -+ if (bad == action) -+ GCC_BAD ("#pragma GCC visibility must be followed by push or pop"); -+ else -+ { -+ if (pop == action) -+ { -+ if (!visidx) -+ { -+ GCC_BAD ("No matching push for '#pragma GCC visibility pop'"); -+ } -+ else -+ { -+ default_visibility = visstack[--visidx]; -+ visibility_options.inpragma = (visidx>0); -+ } -+ } -+ else -+ { -+ if (c_lex (&x) != CPP_OPEN_PAREN) -+ GCC_BAD ("missing '(' after '#pragma GCC visibility push' - ignored"); -+ token = c_lex (&x); -+ if (token != CPP_NAME) -+ { -+ GCC_BAD ("malformed #pragma GCC visibility push"); -+ } -+ else if (visidx >= 16) -+ { -+ GCC_BAD ("No more than sixteen #pragma GCC visibility pushes allowed at once"); -+ } -+ else -+ { -+ const char *str = IDENTIFIER_POINTER (x); -+ visstack[visidx++] = default_visibility; -+ if (!strcmp (str, "default")) -+ default_visibility = VISIBILITY_DEFAULT; -+ else if (!strcmp (str, "internal")) -+ default_visibility = VISIBILITY_INTERNAL; -+ else if (!strcmp (str, "hidden")) -+ default_visibility = VISIBILITY_HIDDEN; -+ else if (!strcmp (str, "protected")) -+ default_visibility = VISIBILITY_PROTECTED; -+ else -+ { -+ GCC_BAD ("#pragma GCC visibility push() must specify default, internal, hidden or protected"); -+ } -+ visibility_options.inpragma = 1; -+ } -+ if (c_lex (&x) != CPP_CLOSE_PAREN) -+ GCC_BAD ("missing '(' after '#pragma GCC visibility push' - ignored"); -+ } -+ } -+ if (c_lex (&x) != CPP_EOF) -+ warning ("junk at end of '#pragma GCC visibility'"); -+} -+ -+#endif -+ - /* Front-end wrapper for pragma registration to avoid dragging - cpplib.h in almost everywhere. */ - void -@@ -505,6 +585,9 @@ - #ifdef HANDLE_PRAGMA_EXTERN_PREFIX - c_register_pragma (0, "extern_prefix", handle_pragma_extern_prefix); - #endif -+#ifdef HANDLE_PRAGMA_VISIBILITY -+ c_register_pragma ("GCC", "visibility", handle_pragma_visibility); -+#endif - - #ifdef REGISTER_TARGET_PRAGMAS - REGISTER_TARGET_PRAGMAS (); -diff -aur gcc-3.4.0orig/gcc/c-pragma.h gcc-3.4.0/gcc/c-pragma.h ---- gcc-3.4.0orig/gcc/c-pragma.h 2004-01-31 06:18:05.000000000 +0000 -+++ gcc-3.4.0/gcc/c-pragma.h 2004-05-09 08:10:53.000000000 +0100 -@@ -44,6 +44,11 @@ - #define HANDLE_PRAGMA_PACK 1 - #endif /* HANDLE_PRAGMA_PACK_PUSH_POP */ - -+/* It's safe to always leave visibility pragma enabled as if -+ visibility is not supported on the host OS platform the -+ statements are ignored. */ -+#define HANDLE_PRAGMA_VISIBILITY 1 -+ - extern void init_pragma (void); - - /* Front-end wrapper for pragma registration to avoid dragging - - -diff -aur gcc-3.4.0orig/gcc/doc/invoke.texi gcc-3.4.0/gcc/doc/invoke.texi ---- gcc-3.4.0orig/gcc/doc/invoke.texi 2004-04-19 00:05:36.000000000 +0100 -+++ gcc-3.4.0/gcc/doc/invoke.texi 2004-05-28 21:29:36.000000000 +0100 -@@ -183,7 +183,8 @@ - -fno-optional-diags -fpermissive @gol - -frepo -fno-rtti -fstats -ftemplate-depth-@var{n} @gol - -fuse-cxa-atexit -fno-weak -nostdinc++ @gol ---fno-default-inline -Wabi -Wctor-dtor-privacy @gol -+-fno-default-inline -fvisibility-inlines-hidden @gol -+-Wabi -Wctor-dtor-privacy @gol - -Wnon-virtual-dtor -Wreorder @gol - -Weffc++ -Wno-deprecated @gol - -Wno-non-template-friend -Wold-style-cast @gol -@@ -674,7 +675,8 @@ - -fargument-alias -fargument-noalias @gol - -fargument-noalias-global -fleading-underscore @gol - -ftls-model=@var{model} @gol ---ftrapv -fwrapv -fbounds-check} -+-ftrapv -fwrapv -fbounds-check @gol -+-fvisibility} - @end table - - @menu -@@ -1433,6 +1435,20 @@ - destructors, but will only work if your C library supports - @code{__cxa_atexit}. - -+@item -fvisibility-inlines-hidden -+@opindex fvisibility-inlines-hidden -+Causes all inlined methods to be marked with -+@code{__attribute__ ((visibility ("hidden")))} so that they do not -+appear in the export table of a DSO and do not require a PLT indirection -+when used within the DSO. Enabling this option can have a dramatic effect -+on load and link times of a DSO as it massively reduces the size of the -+dynamic export table when the library makes heavy use of templates. While -+it can cause bloating through duplication of code within each DSO where -+it is used, often the wastage is less than the considerable space occupied -+by a long symbol name in the export table which is typical when using -+templates and namespaces. For even more savings, combine with the -+@code{-fvisibility=hidden} switch. -+ - @item -fno-weak - @opindex fno-weak - Do not use weak symbol support, even if it is provided by the linker. -@@ -11198,6 +11214,54 @@ - - The default without @option{-fpic} is @code{initial-exec}; with - @option{-fpic} the default is @code{global-dynamic}. -+ -+@item -fvisibility=@var{default|internal|hidden|protected} -+@opindex fvisibility -+Set the default ELF image symbol visibility to the specified option - all -+symbols will be marked with this unless overrided within the code. -+Using this feature can very substantially improve linking and -+load times of shared object libraries, produce more optimised -+code, provide near-perfect API export and prevent symbol clashes. -+It is @strong{strongly} recommended that you use this in any shared objects -+you distribute. -+ -+Despite the nomenclature, @code{default} always means public ie; -+available to be linked against from outside the shared object. -+@code{protected} and @code{internal} are pretty useless in real-world -+usage so the only other commonly used option will be @code{hidden}. -+The default if -fvisibility isn't specified is @code{default} ie; make every -+symbol public - this causes the same behaviour as previous versions of -+GCC. -+ -+A good explanation of the benefits offered by ensuring ELF -+symbols have the correct visibility is given by ``How To Write -+Shared Libraries'' by Ulrich Drepper (which can be found at -+@w{@uref{http://people.redhat.com/~drepper/}}) - however a superior -+solution made possible by this option to marking things hidden when -+the default is public is to make the default hidden and mark things -+public. This is the norm with DLL's on Windows and with @option{-fvisibility=hidden} -+and @code{__attribute__ ((visibility("default")))} instead of -+@code{__declspec(dllexport)} you get almost identical semantics with -+identical syntax. This is a great boon to those working with -+cross-platform projects. -+ -+For those adding visibility support to existing code, you may find -+@samp{#pragma GCC visibility} of use. This works by you enclosing -+the declarations you wish to set visibility for with (for example) -+@samp{#pragma GCC visibility push(hidden)} and -+@samp{#pragma GCC visibility pop}. These can be nested up to sixteen -+times. Bear in mind that symbol visibility should be viewed @strong{as -+part of the API interface contract} and thus all new code should -+always specify visibility when it is not the default ie; declarations -+only for use within the local DSO should @strong{always} be marked explicitly -+as hidden as so to avoid PLT indirection overheads - making this -+abundantly clear also aids readability and self-documentation of the code. -+Note that due to ISO C++ specification requirements, operator new and -+operator delete must always be of default visibility. -+ -+An overview of these techniques, their benefits and how to use them -+is at @w{@uref{http://www.nedprod.com/programs/gccvisibility.html}}. -+ - @end table - - @c man end - -diff -aur gcc-3.4.0orig/gcc/flags.h gcc-3.4.0/gcc/flags.h ---- gcc-3.4.0orig/gcc/flags.h 2004-02-18 00:09:04.000000000 +0000 -+++ gcc-3.4.0/gcc/flags.h 2004-05-09 08:10:53.000000000 +0100 -@@ -60,6 +60,30 @@ - /* Nonzero means emit debugging information only for symbols which are used. */ - extern int flag_debug_only_used_symbols; - -+/* Enumerate visibility settings. */ -+#ifndef SYMBOL_VISIBILITY_DEFINED -+#define SYMBOL_VISIBILITY_DEFINED -+enum symbol_visibility -+{ -+ VISIBILITY_DEFAULT, -+ VISIBILITY_INTERNAL, -+ VISIBILITY_HIDDEN, -+ VISIBILITY_PROTECTED -+}; -+#endif -+ -+/* The default visibility for all symbols (unless overridden). */ -+extern enum symbol_visibility default_visibility; -+ -+struct visibility_flags -+{ -+ unsigned inpragma : 1; /* True when in #pragma GCC visibility. */ -+ unsigned inlineshidden : 1; /* True when -finlineshidden in effect. */ -+}; -+ -+/* Global visibility options. */ -+extern struct visibility_flags visibility_options; -+ - /* Nonzero means do optimizations. -opt. */ - - extern int optimize; - -diff -aur gcc-3.4.0orig/gcc/opts.c gcc-3.4.0/gcc/opts.c ---- gcc-3.4.0orig/gcc/opts.c 2004-02-18 00:09:04.000000000 +0000 -+++ gcc-3.4.0/gcc/opts.c 2004-05-09 08:10:53.000000000 +0100 -@@ -142,6 +142,12 @@ - write_symbols is set to DBX_DEBUG, XCOFF_DEBUG, or DWARF_DEBUG. */ - bool use_gnu_debug_info_extensions; - -+/* The default visibility for all symbols (unless overridden) */ -+enum symbol_visibility default_visibility = VISIBILITY_DEFAULT; -+ -+/* Global visibility options. */ -+struct visibility_flags visibility_options; -+ - /* Columns of --help display. */ - static unsigned int columns = 80; - -@@ -1440,6 +1446,21 @@ - flag_verbose_asm = value; - break; - -+ case OPT_fvisibility_: -+ { -+ if(!strcmp(arg, "default")) -+ default_visibility=VISIBILITY_DEFAULT; -+ else if(!strcmp(arg, "internal")) -+ default_visibility=VISIBILITY_INTERNAL; -+ else if(!strcmp(arg, "hidden")) -+ default_visibility=VISIBILITY_HIDDEN; -+ else if(!strcmp(arg, "protected")) -+ default_visibility=VISIBILITY_PROTECTED; -+ else -+ error("unrecognised visibility value \"%s\"", arg); -+ } -+ break; -+ - case OPT_fweb: - flag_web = value; - break; - -diff -aur gcc-3.4.0orig/gcc/tree.c gcc-3.4.0/gcc/tree.c ---- gcc-3.4.0orig/gcc/tree.c 2004-02-05 22:01:35.000000000 +0000 -+++ gcc-3.4.0/gcc/tree.c 2004-05-10 15:22:52.000000000 +0100 -@@ -2563,6 +2563,11 @@ - layout_decl (t, 0); - else if (code == FUNCTION_DECL) - DECL_MODE (t) = FUNCTION_MODE; -+ -+ /* Set default visibility to whatever the user supplied with -+ visibility_specified depending on #pragma GCC visibility. */ -+ DECL_VISIBILITY (t) = default_visibility; -+ DECL_VISIBILITYSPECIFIED (t) = visibility_options.inpragma; - - return t; - } - -diff -aur gcc-3.4.0orig/gcc/tree.h gcc-3.4.0/gcc/tree.h ---- gcc-3.4.0orig/gcc/tree.h 2004-02-08 01:52:43.000000000 +0000 -+++ gcc-3.4.0/gcc/tree.h 2004-05-09 08:10:54.000000000 +0100 -@@ -1499,6 +1499,10 @@ - /* Value of the decls's visibility attribute */ - #define DECL_VISIBILITY(NODE) (DECL_CHECK (NODE)->decl.visibility) - -+/* Nonzero means that the decl had its visibility specified rather than -+ being inferred. */ -+#define DECL_VISIBILITYSPECIFIED(NODE) (DECL_CHECK (NODE)->decl.visibility_specified) -+ - /* In a FUNCTION_DECL, nonzero if the function cannot be inlined. */ - #define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl.uninlinable) - -@@ -1633,7 +1637,8 @@ - || TREE_CODE (DECL_CONTEXT (EXP)) == TRANSLATION_UNIT_DECL) - - /* Enumerate visibility settings. */ -- -+#ifndef SYMBOL_VISIBILITY_DEFINED -+#define SYMBOL_VISIBILITY_DEFINED - enum symbol_visibility - { - VISIBILITY_DEFAULT, -@@ -1641,6 +1646,7 @@ - VISIBILITY_HIDDEN, - VISIBILITY_PROTECTED - }; -+#endif - - struct function; - -@@ -1684,8 +1690,7 @@ - unsigned thread_local_flag : 1; - unsigned declared_inline_flag : 1; - ENUM_BITFIELD(symbol_visibility) visibility : 2; -- unsigned unused : 1; -- /* one unused bit. */ -+ unsigned visibility_specified : 1; - - unsigned lang_flag_0 : 1; - unsigned lang_flag_1 : 1; - -diff -aur gcc-3.4.0orig/gcc/varasm.c gcc-3.4.0/gcc/varasm.c ---- gcc-3.4.0orig/gcc/varasm.c 2004-04-14 22:14:08.000000000 +0100 -+++ gcc-3.4.0/gcc/varasm.c 2004-05-09 08:10:54.000000000 +0100 -@@ -5150,8 +5150,8 @@ - /* Static variables are always local. */ - else if (! TREE_PUBLIC (exp)) - local_p = true; -- /* A variable is local if the user tells us so. */ -- else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT) -+ /* A variable is local if the user explicitly tells us so. */ -+ else if (DECL_VISIBILITYSPECIFIED (exp) && DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT) - local_p = true; - /* Otherwise, variables defined outside this object may not be local. */ - else if (DECL_EXTERNAL (exp)) -@@ -5159,6 +5159,9 @@ - /* Linkonce and weak data are never local. */ - else if (DECL_ONE_ONLY (exp) || DECL_WEAK (exp)) - local_p = false; -+ /* If none of the above and visibility is not default, make local. */ -+ else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT) -+ local_p = true; - /* If PIC, then assume that any global name can be overridden by - symbols resolved from other modules. */ - else if (shlib) - -diff -Naur gcc-3.4.0orig/gcc/testsuite/gcc.dg/visibility-9.c gcc-3.4.0/gcc/testsuite/gcc.dg/visibility-9.c ---- gcc-3.4.0orig/gcc/testsuite/gcc.dg/visibility-9.c 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/gcc.dg/visibility-9.c 2004-05-09 12:40:39.000000000 +0100 -@@ -0,0 +1,9 @@ -+/* Test that -fvisibility works. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fvisibility=hidden" } */ -+/* { dg-final { scan-assembler "\\.hidden.*foo" } } */ -+ -+void foo(); -+ -+void foo() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/gcc.dg/visibility-a.c gcc-3.4.0/gcc/testsuite/gcc.dg/visibility-a.c ---- gcc-3.4.0orig/gcc/testsuite/gcc.dg/visibility-a.c 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/gcc.dg/visibility-a.c 2004-05-09 12:55:04.000000000 +0100 -@@ -0,0 +1,10 @@ -+/* Test that #pragma GCC visibility works. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.hidden.*foo" } } */ -+ -+#pragma GCC visibility push(hidden) -+void foo(); -+#pragma GCC visibility pop -+ -+void foo() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility.C 2004-05-09 19:17:13.000000000 +0100 -@@ -0,0 +1,12 @@ -+/* Test that -fvisibility affects class members. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fvisibility=hidden" } */ -+/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ -+ -+class Foo -+{ -+ void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-inlines-hidden.C 2004-05-09 19:17:59.000000000 +0100 -@@ -0,0 +1,18 @@ -+/* Test that -fvisibility-inlines-hidden affects class members. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fvisibility-inlines-hidden" } */ -+/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ -+ -+class Foo -+{ -+public: -+ void method() { } -+}; -+ -+int main(void) -+{ -+ Foo f; -+ f.method(); -+ return 0; -+} -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override1.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override1.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override1.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override1.C 2004-05-09 19:18:06.000000000 +0100 -@@ -0,0 +1,12 @@ -+/* Test that -fvisibility does not override class member specific settings. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fvisibility=hidden" } */ -+/* { dg-final { scan-assembler "\\.internal.*Foo.methodEv" } } */ -+ -+class __attribute__ ((visibility ("internal"))) Foo -+{ -+ void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override2.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override2.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override2.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/fvisibility-override2.C 2004-05-09 19:18:12.000000000 +0100 -@@ -0,0 +1,12 @@ -+/* Test that -fvisibility does not override class member specific settings. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fvisibility=hidden" } */ -+/* { dg-final { scan-assembler "\\.internal.*Foo.methodEv" } } */ -+ -+class Foo -+{ -+ __attribute__ ((visibility ("internal"))) void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/memfuncts.C 2004-05-09 19:18:19.000000000 +0100 -@@ -0,0 +1,11 @@ -+/* Test that setting visibility for class member functions works. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ -+ -+class __attribute__ ((visibility ("hidden"))) Foo -+{ -+ void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/noPLT.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/noPLT.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/noPLT.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/noPLT.C 2004-05-09 19:21:49.000000000 +0100 -@@ -0,0 +1,20 @@ -+/* Test that -fvisibility=hidden prevents PLT. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-options "-fPIC -fvisibility=hidden" } */ -+/* { dg-final { scan-assembler-not "methodEv@PLT" } } */ -+ -+class Foo -+{ -+public: -+ void method(); -+}; -+ -+void Foo::method() { } -+ -+int main(void) -+{ -+ Foo f; -+ f.method(); -+ return 0; -+} -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma.C 2004-05-09 19:18:30.000000000 +0100 -@@ -0,0 +1,13 @@ -+/* Test that #pragma GCC visibility affects class members. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ -+ -+#pragma GCC visibility push(hidden) -+class Foo -+{ -+ void method(); -+}; -+#pragma GCC visibility pop -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C 2004-05-09 19:18:36.000000000 +0100 -@@ -0,0 +1,13 @@ -+/* Test that #pragma GCC visibility does not override class member specific settings. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.internal.*Foo.methodEv" } } */ -+ -+#pragma GCC visibility push(hidden) -+class __attribute__ ((visibility ("internal"))) Foo -+{ -+ void method(); -+}; -+#pragma GCC visibility pop -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C 2004-05-09 19:18:44.000000000 +0100 -@@ -0,0 +1,13 @@ -+/* Test that #pragma GCC visibility does not override class member specific settings. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.internal.*Foo.methodEv" } } */ -+ -+#pragma GCC visibility push(hidden) -+class Foo -+{ -+ __attribute__ ((visibility ("internal"))) void method(); -+}; -+#pragma GCC visibility pop -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/staticmemfuncts.C 2004-05-09 19:18:50.000000000 +0100 -@@ -0,0 +1,11 @@ -+/* Test that setting visibility for static class member functions works. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.hidden.*Foo.methodEv" } } */ -+ -+class __attribute__ ((visibility ("hidden"))) Foo -+{ -+ static void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/virtual.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/virtual.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/virtual.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/virtual.C 2004-05-09 13:24:06.000000000 +0100 -@@ -0,0 +1,11 @@ -+/* Test that setting visibility for class affects virtual table. */ -+/* { dg-do compile } */ -+/* { dg-require-visibility "" } */ -+/* { dg-final { scan-assembler "\\.hidden.*ZTV3Foo" } } */ -+ -+class __attribute__ ((visibility ("hidden"))) Foo -+{ -+ virtual void method(); -+}; -+ -+void Foo::method() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-1.C 2003-12-10 06:34:44.000000000 +0000 -@@ -0,0 +1,8 @@ -+/* Test visibility attribute on function definition. */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -+ -+void -+__attribute__((visibility ("hidden"))) -+foo() -+{ } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-2.C 2003-12-10 06:34:44.000000000 +0000 -@@ -0,0 +1,7 @@ -+/* Test that visibility attribute on declaration extends to definition. */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -+ -+void __attribute__((visibility ("hidden"))) foo(); -+ -+void foo() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-3.C 2003-12-10 06:34:45.000000000 +0000 -@@ -0,0 +1,7 @@ -+/* Test visibility attribute on forward declaration of global variable */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -+ -+int -+__attribute__((visibility ("hidden"))) -+xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-4.C 2003-12-10 06:34:45.000000000 +0000 -@@ -0,0 +1,8 @@ -+/* Test visibility attribute on forward declaration of global variable */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -+ -+extern int __attribute__ ((visibility ("hidden"))) -+xyzzy; -+ -+int xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-5.C 2003-12-10 06:34:45.000000000 +0000 -@@ -0,0 +1,11 @@ -+/* Test visibility attribute on definition of a function that has -+ already had a forward declaration. */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -+ -+void foo(); -+ -+void -+ __attribute__((visibility ("hidden"))) -+foo() -+{ } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-6.C 2003-12-10 06:34:45.000000000 +0000 -@@ -0,0 +1,10 @@ -+/* Test visibility attribute on definition of global variable that has -+ already had a forward declaration. */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -+ -+extern int xyzzy; -+ -+int -+__attribute__((visibility ("hidden"))) -+xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility/visibility-7.C 2003-12-10 06:34:45.000000000 +0000 -@@ -0,0 +1,11 @@ -+/* Test warning from conflicting visibility specifications. */ -+/* { dg-do compile { target *86-*-linux* } } */ -+/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -+ -+extern int -+__attribute__((visibility ("hidden"))) -+xyzzy; /* { dg-warning "previous declaration here" "" } */ -+ -+int -+__attribute__((visibility ("protected"))) -+xyzzy = 5; /* { dg-warning "visibility attribute ignored" "" } */ -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-1.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-1.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-1.C 2003-12-10 06:34:44.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-1.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --/* Test visibility attribute on function definition. */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -- --void --__attribute__((visibility ("hidden"))) --foo() --{ } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-2.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-2.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-2.C 2003-12-10 06:34:44.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-2.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,7 +0,0 @@ --/* Test that visibility attribute on declaration extends to definition. */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -- --void __attribute__((visibility ("hidden"))) foo(); -- --void foo() { } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-3.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-3.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-3.C 2003-12-10 06:34:45.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-3.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,7 +0,0 @@ --/* Test visibility attribute on forward declaration of global variable */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -- --int --__attribute__((visibility ("hidden"))) --xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-4.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-4.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-4.C 2003-12-10 06:34:45.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-4.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --/* Test visibility attribute on forward declaration of global variable */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -- --extern int __attribute__ ((visibility ("hidden"))) --xyzzy; -- --int xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-5.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-5.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-5.C 2003-12-10 06:34:45.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-5.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,11 +0,0 @@ --/* Test visibility attribute on definition of a function that has -- already had a forward declaration. */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*_Z3foov" } } */ -- --void foo(); -- --void -- __attribute__((visibility ("hidden"))) --foo() --{ } -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-6.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-6.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-6.C 2003-12-10 06:34:45.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-6.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,10 +0,0 @@ --/* Test visibility attribute on definition of global variable that has -- already had a forward declaration. */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -- --extern int xyzzy; -- --int --__attribute__((visibility ("hidden"))) --xyzzy = 5; -diff -Naur gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-7.C gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-7.C ---- gcc-3.4.0orig/gcc/testsuite/g++.dg/ext/visibility-7.C 2003-12-10 06:34:45.000000000 +0000 -+++ gcc-3.4.0/gcc/testsuite/g++.dg/ext/visibility-7.C 1970-01-01 01:00:00.000000000 +0100 -@@ -1,11 +0,0 @@ --/* Test warning from conflicting visibility specifications. */ --/* { dg-do compile { target *86-*-linux* } } */ --/* { dg-final { scan-assembler "\\.hidden.*xyzzy" } } */ -- --extern int --__attribute__((visibility ("hidden"))) --xyzzy; /* { dg-warning "previous declaration here" "" } */ -- --int --__attribute__((visibility ("protected"))) --xyzzy = 5; /* { dg-warning "visibility attribute ignored" "" } */ diff --git a/openembedded/packages/gcc/gcc-3.4.4/always-fixincperm.patch b/openembedded/packages/gcc/gcc-3.4.4/always-fixincperm.patch deleted file mode 100644 index 59e5e2ede..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/always-fixincperm.patch +++ /dev/null @@ -1,32 +0,0 @@ -Index: gcc-3.4.3/gcc/configure -=================================================================== ---- gcc-3.4.3.orig/gcc/configure 2004-11-04 23:14:05.000000000 -0500 -+++ gcc-3.4.3/gcc/configure 2005-03-11 14:41:06.373910320 -0500 -@@ -9916,11 +9916,6 @@ - BUILD_PREFIX=build- - BUILD_PREFIX_1=build- - BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)' -- -- if test "x$TARGET_SYSTEM_ROOT" = x; then -- STMP_FIXINC= -- STMP_FIXPROTO= -- fi - fi - - # Expand extra_headers to include complete path. -Index: gcc-3.4.3/gcc/configure.ac -=================================================================== ---- gcc-3.4.3.orig/gcc/configure.ac 2004-09-23 20:43:53.000000000 -0400 -+++ gcc-3.4.3/gcc/configure.ac 2005-03-11 14:40:55.256600408 -0500 -@@ -1524,11 +1524,6 @@ - BUILD_PREFIX=build- - BUILD_PREFIX_1=build- - BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)' -- -- if test "x$TARGET_SYSTEM_ROOT" = x; then -- STMP_FIXINC= -- STMP_FIXPROTO= -- fi - fi - - # Expand extra_headers to include complete path. diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-bigendian-uclibc.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-bigendian-uclibc.patch deleted file mode 100644 index 8fa9af880..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-bigendian-uclibc.patch +++ /dev/null @@ -1,30 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- gcc-3.4.1/gcc/config.gcc~gcc-3.4.0-arm-bigendian-uclibc -+++ gcc-3.4.1/gcc/config.gcc -@@ -666,6 +666,11 @@ - ;; - arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $target in -+ arm*b-*) -+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" -+ ;; -+ esac - tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes ---- gcc-3.4.1/gcc/config/arm/linux-elf.h~gcc-3.4.0-arm-bigendian-uclibc -+++ gcc-3.4.1/gcc/config/arm/linux-elf.h -@@ -120,7 +120,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - #endif - diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-bigendian.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-bigendian.patch deleted file mode 100644 index c9288c6c1..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-bigendian.patch +++ /dev/null @@ -1,70 +0,0 @@ -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -See http://gcc.gnu.org/PR16350 - -diff -urN gcc-3.4.0.orig/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h ---- gcc-3.4.0.orig/gcc/config/arm/linux-elf.h 2004-01-31 07:18:11.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-07-02 14:46:29.225443757 +0200 -@@ -30,17 +30,34 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - -+/* -+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-* -+ * (big endian) configurations. -+ */ -+#if TARGET_BIG_ENDIAN_DEFAULT -+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END -+#define TARGET_ENDIAN_OPTION "mbig-endian" -+#define TARGET_LINKER_EMULATION "armelfb_linux" -+#else -+#define TARGET_ENDIAN_DEFAULT 0 -+#define TARGET_ENDIAN_OPTION "mlittle-endian" -+#define TARGET_LINKER_EMULATION "armelf_linux" -+#endif -+ - /* Default is to use APCS-32 mode. */ - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_APCS_32 | \ -+ ARM_FLAG_MMU_TRAPS | \ -+ TARGET_ENDIAN_DEFAULT ) - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - --#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" -+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" } - - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" - -@@ -89,7 +106,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - - #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS() -diff -urN gcc-3.4.0.orig/gcc/config.gcc gcc-3.4.0/gcc/config.gcc ---- gcc-3.4.0.orig/gcc/config.gcc 2004-04-17 04:28:24.000000000 +0200 -+++ gcc-3.4.0/gcc/config.gcc 2004-07-02 14:44:40.045822542 +0200 -@@ -666,6 +666,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $target in -+ arm*b-*) -+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" -+ ;; -+ esac - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-lib1asm.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-lib1asm.patch deleted file mode 100644 index ca42bfbc0..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-lib1asm.patch +++ /dev/null @@ -1,24 +0,0 @@ -# Fixes errors like the following when building glibc (or any other executable -# or shared library) when using gcc 3.4.0 for ARM with softfloat: -# -# .../libc_pic.os(.text+0x15834): In function `__modf': undefined reference to `__subdf3' -# .../libc_pic.os(.text+0x158b8): In function `__modf': undefined reference to `__subdf3' -# .../libc_pic.os(.text+0x1590c): In function `scalbn': undefined reference to `__muldf3' -# .../libc_pic.os(.text+0x15e94): In function `__ldexpf': undefined reference to `__eqsf2' -# .../libc_pic.os(.text+0xcee4c): In function `monstartup': undefined reference to `__fixsfsi' - -diff -urNd gcc-3.4.0-orig/gcc/config/arm/t-linux gcc-3.4.0/gcc/config/arm/t-linux ---- gcc-3.4.0-orig/gcc/config/arm/t-linux 2003-09-20 23:09:07.000000000 +0200 -+++ gcc-3.4.0/gcc/config/arm/t-linux 2004-05-01 20:31:59.102846400 +0200 -@@ -4,7 +4,10 @@ - LIBGCC2_DEBUG_CFLAGS = -g0 - - LIB1ASMSRC = arm/lib1funcs.asm --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _fixsfsi _fixunssfsi - - # MULTILIB_OPTIONS = mhard-float/msoft-float - # MULTILIB_DIRNAMES = hard-float soft-float diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-nolibfloat.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-nolibfloat.patch deleted file mode 100644 index 43eed3ef2..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-nolibfloat.patch +++ /dev/null @@ -1,24 +0,0 @@ -# Dimitry Andric , 2004-05-01 -# -# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed -# anymore. (The required functions are now in libgcc.) -# -# Fixes errors like -# arm-softfloat-linux-gnu/3.4.0/../../../../arm-softfloat-linux-gnu/bin/ld: cannot find -lfloat -# collect2: ld returned 1 exit status -# make[2]: *** [arm-softfloat-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/iconvdata/ISO8859-1.so] Error 1 -# when building glibc-2.3.3 with gcc-3.4.0 for arm-softfloat - -diff -urNd gcc-3.4.0-orig/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/linux-elf.h 2004-01-31 07:18:11.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-05-01 19:19:06.935979200 +0200 -@@ -55,7 +73,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which - diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-softfloat.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-softfloat.patch deleted file mode 100644 index f53d64b37..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.0-arm-softfloat.patch +++ /dev/null @@ -1,256 +0,0 @@ -# -# Submitted: -# -# Dimitry Andric , 2004-05-01 -# -# Description: -# -# Nicholas Pitre released this patch for gcc soft-float support here: -# http://lists.arm.linux.org.uk/pipermail/linux-arm/2003-October/006436.html -# -# This version has been adapted to work with gcc 3.4.0. -# -# The original patch doesn't distinguish between softfpa and softvfp modes -# in the way Nicholas Pitre probably meant. His description is: -# -# "Default is to use APCS-32 mode with soft-vfp. The old Linux default for -# floats can be achieved with -mhard-float or with the configure -# --with-float=hard option. If -msoft-float or --with-float=soft is used then -# software float support will be used just like the default but with the legacy -# big endian word ordering for double float representation instead." -# -# Which means the following: -# -# * If you compile without -mhard-float or -msoft-float, you should get -# software floating point, using the VFP format. The produced object file -# should have these flags in its header: -# -# private flags = 600: [APCS-32] [VFP float format] [software FP] -# -# * If you compile with -mhard-float, you should get hardware floating point, -# which always uses the FPA format. Object file header flags should be: -# -# private flags = 0: [APCS-32] [FPA float format] -# -# * If you compile with -msoft-float, you should get software floating point, -# using the FPA format. This is done for compatibility reasons with many -# existing distributions. Object file header flags should be: -# -# private flags = 200: [APCS-32] [FPA float format] [software FP] -# -# The original patch from Nicholas Pitre contained the following constructs: -# -# #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -# %{mhard-float:-mfpu=fpa} \ -# %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}" -# -# However, gcc doesn't accept this ";:" notation, used in the 3rd line. This -# is probably the reason Robert Schwebel modified it to: -# -# #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -# %{mhard-float:-mfpu=fpa} \ -# %{!mhard-float: %{msoft-float:-mfpu=softfpa -mfpu=softvfp}}" -# -# But this causes the following behaviour: -# -# * If you compile without -mhard-float or -msoft-float, the compiler generates -# software floating point instructions, but *nothing* is passed to the -# assembler, which results in an object file which has flags: -# -# private flags = 0: [APCS-32] [FPA float format] -# -# This is not correct! -# -# * If you compile with -mhard-float, the compiler generates hardware floating -# point instructions, and passes "-mfpu=fpa" to the assembler, which results -# in an object file which has the same flags as in the previous item, but now -# those *are* correct. -# -# * If you compile with -msoft-float, the compiler generates software floating -# point instructions, and passes "-mfpu=softfpa -mfpu=softvfp" (in that -# order) to the assembler, which results in an object file with flags: -# -# private flags = 600: [APCS-32] [VFP float format] [software FP] -# -# This is not correct, because the last "-mfpu=" option on the assembler -# command line determines the actual FPU convention used (which should be FPA -# in this case). -# -# Therefore, I modified this patch to get the desired behaviour. Every -# instance of the notation: -# -# %{msoft-float:-mfpu=softfpa -mfpu=softvfp} -# -# was changed to: -# -# %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp} -# -# I also did the following: -# -# * Modified all TARGET_DEFAULT macros I could find to include ARM_FLAG_VFP, to -# be consistent with Nicholas' original patch. -# * Removed any "msoft-float" or "mhard-float" from all MULTILIB_DEFAULTS -# macros I could find. I think that if you compile without any options, you -# would like to get the defaults. :) -# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed -# anymore. (The required functions are now in libgcc.) - -diff -urNd gcc-3.4.0-orig/gcc/config/arm/coff.h gcc-3.4.0/gcc/config/arm/coff.h ---- gcc-3.4.0-orig/gcc/config/arm/coff.h 2004-02-24 15:25:22.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/coff.h 2004-05-01 19:07:06.059409600 +0200 -@@ -31,11 +31,16 @@ - #define TARGET_VERSION fputs (" (ARM/coff)", stderr) - - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" } - #endif - - /* This is COFF, but prefer stabs. */ -diff -urNd gcc-3.4.0-orig/gcc/config/arm/elf.h gcc-3.4.0/gcc/config/arm/elf.h ---- gcc-3.4.0-orig/gcc/config/arm/elf.h 2004-02-24 15:25:22.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/elf.h 2004-05-01 19:12:16.976486400 +0200 -@@ -46,7 +46,9 @@ - - #ifndef SUBTARGET_ASM_FLOAT_SPEC - #define SUBTARGET_ASM_FLOAT_SPEC "\ --%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}" -+%{mapcs-float:-mfloat} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - #endif - - #ifndef ASM_SPEC -@@ -106,12 +108,17 @@ - #endif - - #ifndef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - #endif - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } - #endif - - #define TARGET_ASM_FILE_START_APP_OFF true -diff -urNd gcc-3.4.0-orig/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/linux-elf.h 2004-01-31 07:18:11.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-05-01 19:19:06.935979200 +0200 -@@ -30,9 +30,27 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - --/* Default is to use APCS-32 mode. */ -+/* -+ * Default is to use APCS-32 mode with soft-vfp. -+ * The old Linux default for floats can be achieved with -mhard-float -+ * or with the configure --with-float=hard option. -+ * If -msoft-float or --with-float=soft is used then software float -+ * support will be used just like the default but with the legacy -+ * big endian word ordering for double float representation instead. -+ */ -+ - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_MMU_TRAPS ) -+ -+#undef SUBTARGET_EXTRA_ASM_SPEC -+#define SUBTARGET_EXTRA_ASM_SPEC "\ -+%{!mcpu=*:-mcpu=xscale} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - -@@ -40,7 +58,7 @@ - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" } - - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" - -@@ -55,7 +73,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which -diff -urNd gcc-3.4.0-orig/gcc/config/arm/t-linux gcc-3.4.0/gcc/config/arm/t-linux ---- gcc-3.4.0-orig/gcc/config/arm/t-linux 2003-09-20 23:09:07.000000000 +0200 -+++ gcc-3.4.0/gcc/config/arm/t-linux 2004-05-01 20:31:59.102846400 +0200 -@@ -4,7 +4,10 @@ - LIBGCC2_DEBUG_CFLAGS = -g0 - - LIB1ASMSRC = arm/lib1funcs.asm --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _fixsfsi _fixunssfsi - - # MULTILIB_OPTIONS = mhard-float/msoft-float - # MULTILIB_DIRNAMES = hard-float soft-float -diff -urNd gcc-3.4.0-orig/gcc/config/arm/unknown-elf.h gcc-3.4.0/gcc/config/arm/unknown-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/unknown-elf.h 2004-02-24 15:25:22.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/unknown-elf.h 2004-05-01 19:09:09.016212800 +0200 -@@ -30,7 +30,12 @@ - - /* Default to using APCS-32 and software floating point. */ - #ifndef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - #endif - - /* Now we define the strings used to build the spec file. */ -diff -urNd gcc-3.4.0-orig/gcc/config/arm/xscale-elf.h gcc-3.4.0/gcc/config/arm/xscale-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/xscale-elf.h 2003-07-02 01:26:43.000000000 +0200 -+++ gcc-3.4.0/gcc/config/arm/xscale-elf.h 2004-05-01 20:15:36.620105600 +0200 -@@ -49,11 +49,12 @@ - endian, regardless of the endian-ness of the memory - system. */ - --#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -- %{mhard-float:-mfpu=fpa} \ -- %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}" -+#define SUBTARGET_EXTRA_ASM_SPEC "\ -+%{!mcpu=*:-mcpu=xscale} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" } -+ { "mlittle-endian", "mno-thumb-interwork", "marm" } - #endif diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.1-uclibc-100-conf.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.1-uclibc-100-conf.patch deleted file mode 100644 index 29e4c802e..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.1-uclibc-100-conf.patch +++ /dev/null @@ -1,442 +0,0 @@ -diff -urN gcc-3.4.1-dist/boehm-gc/configure gcc-3.4.1/boehm-gc/configure ---- gcc-3.4.1-dist/boehm-gc/configure 2004-07-01 14:14:03.000000000 -0500 -+++ gcc-3.4.1/boehm-gc/configure 2004-08-12 16:22:57.000000000 -0500 -@@ -1947,6 +1947,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -diff -urN gcc-3.4.1-dist/boehm-gc/ltconfig gcc-3.4.1/boehm-gc/ltconfig ---- gcc-3.4.1-dist/boehm-gc/ltconfig 2002-11-20 09:59:06.000000000 -0600 -+++ gcc-3.4.1/boehm-gc/ltconfig 2004-08-12 15:54:42.000000000 -0500 -@@ -1981,6 +1981,23 @@ - fi - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=`echo /lib/libuClibc-*.so` -+ -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - version_type=sunos - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -diff -urN gcc-3.4.1-dist/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h ---- gcc-3.4.1-dist/gcc/config/arm/linux-elf.h 2004-01-31 00:18:11.000000000 -0600 -+++ gcc-3.4.1/gcc/config/arm/linux-elf.h 2004-08-12 15:54:42.000000000 -0500 -@@ -81,6 +81,18 @@ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC "%{h*} %{version:-v} \ -+ %{b} %{Wl,*:%*} \ -+ %{static:-Bstatic} \ -+ %{shared:-shared} \ -+ %{symbolic:-Bsymbolic} \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \ -+ -X \ -+ %{mbig-endian:-EB}" \ -+ SUBTARGET_EXTRA_LINK_SPEC -+#else - #define LINK_SPEC "%{h*} %{version:-v} \ - %{b} %{Wl,*:%*} \ - %{static:-Bstatic} \ -@@ -91,6 +103,7 @@ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC -+#endif - - #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS() - -diff -urN gcc-3.4.1-dist/gcc/config/cris/linux.h gcc-3.4.1/gcc/config/cris/linux.h ---- gcc-3.4.1-dist/gcc/config/cris/linux.h 2003-11-28 21:08:09.000000000 -0600 -+++ gcc-3.4.1/gcc/config/cris/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -79,6 +79,25 @@ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -93,6 +112,8 @@ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - -diff -urN gcc-3.4.1-dist/gcc/config/cris/t-linux-uclibc gcc-3.4.1/gcc/config/cris/t-linux-uclibc ---- gcc-3.4.1-dist/gcc/config/cris/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/cris/t-linux-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,3 @@ -+T_CFLAGS = -DUSE_UCLIBC -+TARGET_LIBGCC2_CFLAGS += -fPIC -+CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS) -diff -urN gcc-3.4.1-dist/gcc/config/i386/linux.h gcc-3.4.1/gcc/config/i386/linux.h ---- gcc-3.4.1-dist/gcc/config/i386/linux.h 2003-11-28 21:08:10.000000000 -0600 -+++ gcc-3.4.1/gcc/config/i386/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -118,6 +118,15 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \ - %{static:-static}}}" - #else -+#if defined USE_UCLIBC -+#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC "-m elf_i386 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ -@@ -126,6 +135,7 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}}}" - #endif -+#endif - - /* A C statement (sans semicolon) to output to the stdio stream - FILE the assembler definition of uninitialized global DECL named -diff -urN gcc-3.4.1-dist/gcc/config/mips/linux.h gcc-3.4.1/gcc/config/mips/linux.h ---- gcc-3.4.1-dist/gcc/config/mips/linux.h 2004-06-15 20:42:24.000000000 -0500 -+++ gcc-3.4.1/gcc/config/mips/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -109,6 +109,17 @@ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC \ -+ "%(endian_spec) \ -+ %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ -@@ -118,6 +129,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ - %{static:-static}}}" -+#endif - - #undef SUBTARGET_ASM_SPEC - #define SUBTARGET_ASM_SPEC "\ -diff -urN gcc-3.4.1-dist/gcc/config/rs6000/linux.h gcc-3.4.1/gcc/config/rs6000/linux.h ---- gcc-3.4.1-dist/gcc/config/rs6000/linux.h 2004-02-25 09:11:19.000000000 -0600 -+++ gcc-3.4.1/gcc/config/rs6000/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -61,7 +61,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" -diff -urN gcc-3.4.1-dist/gcc/config/rs6000/sysv4.h gcc-3.4.1/gcc/config/rs6000/sysv4.h ---- gcc-3.4.1-dist/gcc/config/rs6000/sysv4.h 2004-06-10 01:39:50.000000000 -0500 -+++ gcc-3.4.1/gcc/config/rs6000/sysv4.h 2004-08-12 15:54:43.000000000 -0500 -@@ -947,6 +947,7 @@ - mcall-linux : %(link_os_linux) ; \ - mcall-gnu : %(link_os_gnu) ; \ - mcall-netbsd : %(link_os_netbsd) ; \ -+ mcall-linux-uclibc : %(link_os_linux_uclibc); \ - mcall-openbsd: %(link_os_openbsd) ; \ - : %(link_os_default) }" - -@@ -1124,6 +1125,10 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " - #endif -@@ -1290,6 +1295,7 @@ - { "link_os_sim", LINK_OS_SIM_SPEC }, \ - { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ - { "link_os_linux", LINK_OS_LINUX_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_gnu", LINK_OS_GNU_SPEC }, \ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ -diff -urN gcc-3.4.1-dist/gcc/config/sh/linux.h gcc-3.4.1/gcc/config/sh/linux.h ---- gcc-3.4.1-dist/gcc/config/sh/linux.h 2004-01-11 20:29:13.000000000 -0600 -+++ gcc-3.4.1/gcc/config/sh/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -73,12 +73,21 @@ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define SUBTARGET_LINK_SPEC \ -+ "%{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}" -+#else - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}" -+#endif - - #undef LIB_SPEC - #define LIB_SPEC \ -diff -urN gcc-3.4.1-dist/gcc/config/sh/t-linux-uclibc gcc-3.4.1/gcc/config/sh/t-linux-uclibc ---- gcc-3.4.1-dist/gcc/config/sh/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/sh/t-linux-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,13 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES -+LIB1ASMFUNCS_CACHE = _ic_invalidate -+ -+LIB2FUNCS_EXTRA= -+ -+MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) m3e/m4 -+MULTILIB_DIRNAMES= -+MULTILIB_MATCHES = -+MULTILIB_EXCEPTIONS= -+ -+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o -diff -urN gcc-3.4.1-dist/gcc/config/sh/t-sh64-uclibc gcc-3.4.1/gcc/config/sh/t-sh64-uclibc ---- gcc-3.4.1-dist/gcc/config/sh/t-sh64-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/sh/t-sh64-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,13 @@ -+EXTRA_MULTILIB_PARTS= crt1.o crti.o crtn.o crtbegin.o crtend.o -+ -+LIB1ASMFUNCS = \ -+ _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ -+ _shcompact_call_trampoline _shcompact_return_trampoline \ -+ _shcompact_incoming_args _ic_invalidate _nested_trampoline \ -+ _push_pop_shmedia_regs \ -+ _udivdi3 _divdi3 _umoddi3 _moddi3 -+ -+MULTILIB_OPTIONS = $(MULTILIB_ENDIAN) m5-32media-nofpu/m5-compact/m5-compact-nofpu/m5-64media/m5-64media-nofpu -+MULTILIB_DIRNAMES= $(MULTILIB_ENDIAN) nofpu compact nofpu/compact media64 nofpu/media64 -+MULTILIB_MATCHES= -+MULTILIB_EXCEPTIONS= -diff -urN gcc-3.4.1-dist/gcc/config/t-linux-uclibc gcc-3.4.1/gcc/config/t-linux-uclibc ---- gcc-3.4.1-dist/gcc/config/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/t-linux-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,15 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+# Compile crtbeginS.o and crtendS.o with pic. -+CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC -+# Compile libgcc2.a with pic. -+TARGET_LIBGCC2_CFLAGS = -fPIC -+ -+# Override t-slibgcc-elf-ver to export some libgcc symbols with -+# the symbol versions that glibc used. -+#SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver -+ -+# Use unwind-dw2-fde -+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \ -+ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c -+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h -diff -urN gcc-3.4.1-dist/gcc/config.gcc gcc-3.4.1/gcc/config.gcc ---- gcc-3.4.1-dist/gcc/config.gcc 2004-04-21 10:12:35.000000000 -0500 -+++ gcc-3.4.1/gcc/config.gcc 2004-08-12 15:59:46.000000000 -0500 -@@ -664,6 +664,12 @@ - extra_parts="" - use_collect2=yes - ;; -+arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc -+ tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux" -+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+ gnu_ld=yes -+ ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" -@@ -725,6 +731,10 @@ - tmake_file="cris/t-cris cris/t-elfmulti" - gas=yes - ;; -+cris-*-linux-uclibc*) -+ tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" -+ tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux-uclibc" -+ ;; - cris-*-linux*) - tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" - tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux" -@@ -988,6 +998,11 @@ - thread_file='single' - fi - ;; -+i[34567]86-*-linux*uclibc*) # Intel 80386's running GNU/Linux -+ # with ELF format using uClibc -+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc i386/t-crtstuff" -+ ;; - i[34567]86-*-linux*) # Intel 80386's running GNU/Linux - # with ELF format using glibc 2 - # aka GNU/Linux C library 6 -@@ -1547,6 +1562,16 @@ - gnu_ld=yes - gas=yes - ;; -+mips*-*-linux-uclibc*) # Linux MIPS, either endian. uClibc -+ tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" -+ case ${target} in -+ mipsisa32*-*) -+ target_cpu_default="MASK_SOFT_FLOAT" -+ tm_defines="MIPS_ISA_DEFAULT=32" -+ ;; -+ esac -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc" -+ ;; - mips*-*-linux*) # Linux MIPS, either endian. - tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" - case ${target} in -@@ -1764,6 +1789,10 @@ - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h" - tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm" - ;; -+powerpc-*-linux-uclibc*) -+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" -+ tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux-uclibc rs6000/t-ppccomm" -+ ;; - powerpc-*-linux*) - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" - tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm" -@@ -1916,7 +1945,7 @@ - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h" - ;; - sh-*-linux* | sh[2346lbe]*-*-linux*) -- tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux" -+ tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver" - case ${target} in - sh*be-*-* | sh*eb-*-*) ;; - *) -@@ -1924,9 +1953,17 @@ - tmake_file="${tmake_file} sh/t-le" - ;; - esac -- tmake_file="${tmake_file} sh/t-linux" -+ case ${target} in -+ *-*-linux-uclibc*) tmake_file="${tmake_file} t-linux-uclibc sh/t-linux-uclibc" ;; -+ *) tmake_file="${tmake_file} t-linux sh/t-linux" ;; -+ esac - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h" - case ${target} in -+ sh64*-*-linux-uclibc*) -+ tmake_file="${tmake_file} sh/t-sh64-uclibc" -+ tm_file="${tm_file} sh/sh64.h" -+ extra_headers="shmedia.h ushmedia.h sshmedia.h" -+ ;; - sh64*) - tmake_file="${tmake_file} sh/t-sh64" - tm_file="${tm_file} sh/sh64.h" -diff -urN gcc-3.4.1-dist/libtool.m4 gcc-3.4.1/libtool.m4 ---- gcc-3.4.1-dist/libtool.m4 2004-05-18 04:08:37.000000000 -0500 -+++ gcc-3.4.1/libtool.m4 2004-08-12 15:54:43.000000000 -0500 -@@ -689,6 +689,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] -diff -urN gcc-3.4.1-dist/ltconfig gcc-3.4.1/ltconfig ---- gcc-3.4.1-dist/ltconfig 2004-03-05 15:05:41.000000000 -0600 -+++ gcc-3.4.1/ltconfig 2004-08-12 15:55:48.000000000 -0500 -@@ -602,6 +602,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in -+linux-uclibc*) ;; - linux-gnu*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac -@@ -1262,6 +1263,24 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ # Note: copied from linux-gnu, and may not be appropriate. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.1-uclibc-200-locale.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.1-uclibc-200-locale.patch deleted file mode 100644 index 3fc4900b0..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc-3.4.1-uclibc-200-locale.patch +++ /dev/null @@ -1,3246 +0,0 @@ -diff -urN gcc-3.4.2-dist/libstdc++-v3/acinclude.m4 gcc-3.4.2/libstdc++-v3/acinclude.m4 ---- gcc-3.4.2-dist/libstdc++-v3/acinclude.m4 2004-07-15 12:42:45.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/acinclude.m4 2004-09-10 10:47:40.000000000 -0500 -@@ -996,7 +996,7 @@ - AC_MSG_CHECKING([for C locale to use]) - GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], - [use MODEL for target locale package], -- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) -+ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) - - # If they didn't use this option switch, or if they specified --enable - # with no specific model, we'll have to look for one. If they -@@ -1012,6 +1012,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ x*-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1138,6 +1141,41 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.2-dist/libstdc++-v3/aclocal.m4 gcc-3.4.2/libstdc++-v3/aclocal.m4 ---- gcc-3.4.2-dist/libstdc++-v3/aclocal.m4 2004-08-13 15:44:03.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/aclocal.m4 2004-09-10 10:47:40.000000000 -0500 -@@ -1025,6 +1025,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ x*-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1151,6 +1154,41 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,59 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek -+ -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#endif // GLIBC 2.3 and later -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,160 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#include // For errno -+#include -+#include -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#warning should dummy __newlocale check for C|POSIX ? -+#define __newlocale(a, b, c) NULL -+#define __freelocale(a) ((void)0) -+#define __duplocale(a) __c_locale() -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " -+ "name not valid")); -+ } -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+ if (_S_get_c_locale() != __cloc) -+ __freelocale(__cloc); -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+ { return __duplocale(__cloc); } -+} // namespace std -+ -+namespace __gnu_cxx -+{ -+ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES", -+#if _GLIBCXX_NUM_CATEGORIES != 0 -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} -+ -+namespace std -+{ -+ const char* const* const locale::_S_categories = __gnu_cxx::category_names; -+} // namespace std -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h 2004-09-10 10:48:08.000000000 -0500 -@@ -0,0 +1,115 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include // get std::strlen -+#include // get std::snprintf or std::sprintf -+#include -+#include // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCXX_C_LOCALE_GNU for -+#endif -+#define _GLIBCXX_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCXX_NUM_CATEGORIES 6 -+#define _GLIBCXX_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template -+ int -+ __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = std::setlocale(LC_ALL, NULL); -+ char* __sav = new char[std::strlen(__old) + 1]; -+ std::strcpy(__sav, __old); -+ std::setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ std::setlocale(LC_ALL, __sav); -+ delete [] __sav; -+#endif -+ return __ret; -+ } -+} -+ -+#endif -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,306 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+ codecvt_base::result -+ codecvt:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // wcsnrtombs is *very* fast but stops if encounters NUL characters: -+ // in case we fall back to wcrtomb and then continue, in a loop. -+ // NB: wcsnrtombs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', -+ __from_end - __from_next); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ const size_t __conv = wcsnrtombs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // wcrtomb. -+ for (; __from < __from_next; ++__from) -+ __to_next += wcrtomb(__to_next, *__from, &__tmp_state); -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ extern_type __buf[MB_LEN_MAX]; -+ __tmp_state = __state; -+ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); -+ if (__conv > static_cast(__to_end - __to_next)) -+ __ret = partial; -+ else -+ { -+ memcpy(__to_next, __buf, __conv); -+ __state = __tmp_state; -+ __to_next += __conv; -+ ++__from_next; -+ } -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we store a L'\0' and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from_next, '\0', -+ __from_end -+ - __from_next)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ size_t __conv = mbsnrtowcs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (;; ++__to_next, __from += __conv) -+ { -+ __conv = mbrtowc(__to_next, __from, __from_end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __from_next = __from; -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ // It is unclear what to return in this case (see DR 382). -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ if (__to_next < __to_end) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from_next; -+ *__to_next++ = L'\0'; -+ } -+ else -+ __ret = partial; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_encoding() const throw() -+ { -+ // XXX This implementation assumes that the encoding is -+ // stateless and is either single-byte or variable-width. -+ int __ret = 0; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ if (MB_CUR_MAX == 1) -+ __ret = 1; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_max_length() const throw() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ // XXX Probably wrong for stateful encodings. -+ int __ret = MB_CUR_MAX; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_length(state_type& __state, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { -+ int __ret = 0; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we advance past it and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ -+ // A dummy internal buffer is needed in order for mbsnrtocws to consider -+ // its fourth parameter (it wouldn't with NULL as first parameter). -+ wchar_t* __to = static_cast(__builtin_alloca(sizeof(wchar_t) -+ * __max)); -+ while (__from < __end && __max) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from, '\0', -+ __end -+ - __from)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __end; -+ -+ const extern_type* __tmp_from = __from; -+ size_t __conv = mbsnrtowcs(__to, &__from, -+ __from_chunk_end - __from, -+ __max, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (__from = __tmp_from;; __from += __conv) -+ { -+ __conv = mbrtowc(NULL, __from, __end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __state = __tmp_state; -+ __ret += __from - __tmp_from; -+ break; -+ } -+ if (!__from) -+ __from = __from_chunk_end; -+ -+ __ret += __from - __tmp_from; -+ __max -= __conv; -+ -+ if (__from < __end && __max) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from; -+ ++__ret; -+ --__max; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ int -+ collate::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,300 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname::ctype_byname(const char* __s, size_t __refs) -+ : ctype(0, false, __refs) -+ { -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_ctype); -+ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; -+ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; -+ this->_M_table = this->_M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ ctype::__wmask_type -+ ctype::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = 0; -+ } -+ return __ret; -+ } -+ -+ wchar_t -+ ctype::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ bool __ret = false; -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__m & _M_bit[__bitcur] -+ && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ { -+ __ret = true; -+ break; -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (; __lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ __m |= _M_bit[__bitcur]; -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype:: -+ do_widen(char __c) const -+ { return _M_widen[static_cast(__c)]; } -+ -+ const char* -+ ctype:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+ while (__lo < __hi) -+ { -+ *__dest = _M_widen[static_cast(*__lo)]; -+ ++__lo; -+ ++__dest; -+ } -+ return __hi; -+ } -+ -+ char -+ ctype:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) -+ return _M_narrow[__wc]; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ const int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ if (_M_narrow_ok) -+ while (__lo < __hi) -+ { -+ if (*__lo >= 0 && *__lo < 128) -+ *__dest = _M_narrow[*__lo]; -+ else -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ ++__lo; -+ ++__dest; -+ } -+ else -+ while (__lo < __hi) -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ ++__lo; -+ ++__dest; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ void -+ ctype::_M_initialize_ctype() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wint_t __i; -+ for (__i = 0; __i < 128; ++__i) -+ { -+ const int __c = wctob(__i); -+ if (__c == EOF) -+ break; -+ else -+ _M_narrow[__i] = static_cast(__c); -+ } -+ if (__i == 128) -+ _M_narrow_ok = true; -+ else -+ _M_narrow_ok = false; -+ for (size_t __j = 0; -+ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) -+ _M_widen[__j] = btowc(__j); -+ -+ for (size_t __k = 0; __k <= 11; ++__k) -+ { -+ _M_bit[__k] = static_cast(_ISbit(__k)); -+ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+#endif // _GLIBCXX_USE_WCHAR_T -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+# elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,118 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template -+ messages<_CharT>::messages(size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), -+ _M_name_messages(_S_get_c_name()) -+ { } -+ -+ template -+ messages<_CharT>::messages(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), -+ _M_name_messages(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_messages = __tmp; -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template -+ messages<_CharT>::~messages() -+ { -+ if (_M_name_messages != _S_get_c_name()) -+ delete [] _M_name_messages; -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+ if (this->_M_name_messages != locale::facet::_S_get_c_name()) -+ delete [] this->_M_name_messages; -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ this->_M_name_messages = __tmp; -+ -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_messages); -+ this->_S_create_c_locale(this->_M_c_locale_messages, __s); -+ } -+ } -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,698 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ __ret.field[0] = sign; -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[2] = space; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[1] = space; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ else -+ { -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ default: -+ ; -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == true -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == false -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ { -+ uc = static_cast(money_base::_S_atoms[__i]); -+ _M_data->_M_atoms[__i] = btowc(uc); -+ } -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ { -+ uc = static_cast(money_base::_S_atoms[__i]); -+ _M_data->_M_atoms[__i] = btowc(uc); -+ } -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,183 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, -+ __cloc)); -+ -+ // Check for NULL, which implies no grouping. -+ if (_M_data->_M_thousands_sep == '\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = "true"; -+ _M_data->_M_truename_size = strlen(_M_data->_M_truename); -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = "false"; -+ _M_data->_M_falsename_size = strlen(_M_data->_M_falsename); -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_S_get_c_locale()); -+#endif -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ { -+ uc = static_cast(__num_base::_S_atoms_out[__i]); -+ _M_data->_M_atoms_out[__i] = btowc(uc); -+ } -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ { -+ uc = static_cast(__num_base::_S_atoms_in[__j]); -+ _M_data->_M_atoms_in[__j] = btowc(uc); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ -+ if (_M_data->_M_thousands_sep == L'\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = L"true"; -+ _M_data->_M_truename_size = wcslen(_M_data->_M_truename); -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = L"false"; -+ _M_data->_M_falsename_size = wcslen(_M_data->_M_falsename); -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ #endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc 2004-09-10 10:48:00.000000000 -0500 -@@ -0,0 +1,356 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = '\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = "%m/%d/%y"; -+ _M_data->_M_date_era_format = "%m/%d/%y"; -+ _M_data->_M_time_format = "%H:%M:%S"; -+ _M_data->_M_time_era_format = "%H:%M:%S"; -+ _M_data->_M_date_time_format = ""; -+ _M_data->_M_date_time_era_format = ""; -+ _M_data->_M_am = "AM"; -+ _M_data->_M_pm = "PM"; -+ _M_data->_M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = "Sunday"; -+ _M_data->_M_day2 = "Monday"; -+ _M_data->_M_day3 = "Tuesday"; -+ _M_data->_M_day4 = "Wednesday"; -+ _M_data->_M_day5 = "Thursday"; -+ _M_data->_M_day6 = "Friday"; -+ _M_data->_M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = "Sun"; -+ _M_data->_M_aday2 = "Mon"; -+ _M_data->_M_aday3 = "Tue"; -+ _M_data->_M_aday4 = "Wed"; -+ _M_data->_M_aday5 = "Thu"; -+ _M_data->_M_aday6 = "Fri"; -+ _M_data->_M_aday7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = "January"; -+ _M_data->_M_month02 = "February"; -+ _M_data->_M_month03 = "March"; -+ _M_data->_M_month04 = "April"; -+ _M_data->_M_month05 = "May"; -+ _M_data->_M_month06 = "June"; -+ _M_data->_M_month07 = "July"; -+ _M_data->_M_month08 = "August"; -+ _M_data->_M_month09 = "September"; -+ _M_data->_M_month10 = "October"; -+ _M_data->_M_month11 = "November"; -+ _M_data->_M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = "Jan"; -+ _M_data->_M_amonth02 = "Feb"; -+ _M_data->_M_amonth03 = "Mar"; -+ _M_data->_M_amonth04 = "Apr"; -+ _M_data->_M_amonth05 = "May"; -+ _M_data->_M_amonth06 = "Jun"; -+ _M_data->_M_amonth07 = "Jul"; -+ _M_data->_M_amonth08 = "Aug"; -+ _M_data->_M_amonth09 = "Sep"; -+ _M_data->_M_amonth10 = "Oct"; -+ _M_data->_M_amonth11 = "Nov"; -+ _M_data->_M_amonth12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc); -+ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ __timepunct:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+ const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = L'\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = L"%m/%d/%y"; -+ _M_data->_M_date_era_format = L"%m/%d/%y"; -+ _M_data->_M_time_format = L"%H:%M:%S"; -+ _M_data->_M_time_era_format = L"%H:%M:%S"; -+ _M_data->_M_date_time_format = L""; -+ _M_data->_M_date_time_era_format = L""; -+ _M_data->_M_am = L"AM"; -+ _M_data->_M_pm = L"PM"; -+ _M_data->_M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = L"Sunday"; -+ _M_data->_M_day2 = L"Monday"; -+ _M_data->_M_day3 = L"Tuesday"; -+ _M_data->_M_day4 = L"Wednesday"; -+ _M_data->_M_day5 = L"Thursday"; -+ _M_data->_M_day6 = L"Friday"; -+ _M_data->_M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = L"Sun"; -+ _M_data->_M_aday2 = L"Mon"; -+ _M_data->_M_aday3 = L"Tue"; -+ _M_data->_M_aday4 = L"Wed"; -+ _M_data->_M_aday5 = L"Thu"; -+ _M_data->_M_aday6 = L"Fri"; -+ _M_data->_M_aday7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = L"January"; -+ _M_data->_M_month02 = L"February"; -+ _M_data->_M_month03 = L"March"; -+ _M_data->_M_month04 = L"April"; -+ _M_data->_M_month05 = L"May"; -+ _M_data->_M_month06 = L"June"; -+ _M_data->_M_month07 = L"July"; -+ _M_data->_M_month08 = L"August"; -+ _M_data->_M_month09 = L"September"; -+ _M_data->_M_month10 = L"October"; -+ _M_data->_M_month11 = L"November"; -+ _M_data->_M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = L"Jan"; -+ _M_data->_M_amonth02 = L"Feb"; -+ _M_data->_M_amonth03 = L"Mar"; -+ _M_data->_M_amonth04 = L"Apr"; -+ _M_data->_M_amonth05 = L"May"; -+ _M_data->_M_amonth06 = L"Jun"; -+ _M_data->_M_amonth07 = L"Jul"; -+ _M_data->_M_amonth08 = L"Aug"; -+ _M_data->_M_amonth09 = L"Sep"; -+ _M_data->_M_amonth10 = L"Oct"; -+ _M_data->_M_amonth11 = L"Nov"; -+ _M_data->_M_amonth12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+ _M_data->_M_date_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+ _M_data->_M_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+ _M_data->_M_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+ _M_data->_M_date_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+ _M_data->_M_date_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+ _M_data->_M_am = reinterpret_cast(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+ _M_data->_M_pm = reinterpret_cast(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+ _M_data->_M_am_pm_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+ _M_data->_M_day2 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+ _M_data->_M_day3 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+ _M_data->_M_day4 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+ _M_data->_M_day5 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+ _M_data->_M_day6 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+ _M_data->_M_day7 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+ _M_data->_M_aday2 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+ _M_data->_M_aday3 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+ _M_data->_M_aday4 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+ _M_data->_M_aday5 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+ _M_data->_M_aday6 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+ _M_data->_M_aday7 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+ _M_data->_M_month02 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+ _M_data->_M_month03 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+ _M_data->_M_month04 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+ _M_data->_M_month05 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+ _M_data->_M_month06 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+ _M_data->_M_month07 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+ _M_data->_M_month08 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+ _M_data->_M_month09 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+ _M_data->_M_month10 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+ _M_data->_M_month11 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+ _M_data->_M_month12 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+ _M_data->_M_amonth02 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+ _M_data->_M_amonth03 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+ _M_data->_M_amonth04 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+ _M_data->_M_amonth05 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+ _M_data->_M_amonth06 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+ _M_data->_M_amonth07 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+ _M_data->_M_amonth08 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+ _M_data->_M_amonth09 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+ _M_data->_M_amonth10 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+ _M_data->_M_amonth11 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+ _M_data->_M_amonth12 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_12, __cloc)); -+ } -+#endif // 0 -+ } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,68 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik -+ -+ template -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) -+ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_timepunct = __tmp; -+ _M_initialize_timepunct(__cloc); -+ } -+ -+ template -+ __timepunct<_CharT>::~__timepunct() -+ { -+ if (_M_name_timepunct != _S_get_c_name()) -+ delete [] _M_name_timepunct; -+ delete _M_data; -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,58 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ -+ // NB: Offsets into ctype::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISalpha | _ISdigit | _ISpunct; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalpha | _ISdigit; -+ }; -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast(__c)] & __m; } -+ -+ const char* -+ ctype:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,92 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype::classic_table() throw() -+ { return __C_ctype_b; } -+ -+ ctype::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ ctype::ctype(const mask* __table, bool __del, size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ char -+ ctype::do_toupper(char __c) const -+ { return _M_toupper[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype::do_tolower(char __c) const -+ { return _M_tolower[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h 2004-09-10 10:47:40.000000000 -0500 -@@ -0,0 +1,44 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCXX_OS_DEFINES -+#define _GLIBCXX_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif -diff -urN gcc-3.4.2-dist/libstdc++-v3/configure gcc-3.4.2/libstdc++-v3/configure ---- gcc-3.4.2-dist/libstdc++-v3/configure 2004-08-13 15:44:04.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/configure 2004-09-10 10:47:40.000000000 -0500 -@@ -3878,6 +3878,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -5545,6 +5550,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ xlinux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" -@@ -5759,6 +5767,77 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ echo "$as_me:$LINENO: result: uclibc" >&5 -+echo "${ECHO_T}uclibc" >&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_check_msgfmt+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_check_msgfmt="yes" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt=$ac_cv_prog_check_msgfmt -+if test -n "$check_msgfmt"; then -+ echo "$as_me:$LINENO: result: $check_msgfmt" >&5 -+echo "${ECHO_T}$check_msgfmt" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.2-dist/libstdc++-v3/configure.host gcc-3.4.2/libstdc++-v3/configure.host ---- gcc-3.4.2-dist/libstdc++-v3/configure.host 2004-08-27 14:52:30.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/configure.host 2004-09-10 10:47:40.000000000 -0500 -@@ -217,6 +217,12 @@ - ;; - esac - -+# Override for uClibc since linux-uclibc gets mishandled above. -+case "${host_os}" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; -+esac - - # Set any OS-dependent and CPU-dependent bits. - # THIS TABLE IS SORTED. KEEP IT THAT WAY. -diff -urN gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4 gcc-3.4.2/libstdc++-v3/crossconfig.m4 ---- gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4 2004-07-06 20:23:49.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/crossconfig.m4 2004-09-10 10:47:40.000000000 -0500 -@@ -138,6 +138,99 @@ - ;; - esac - ;; -+ *-uclibc*) -+# Temporary hack until we implement the float versions of the libm funcs -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCXX_CHECK_LINKER_FEATURES -+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCXX_CHECK_WCHAR_T_SUPPORT -+ -+ # For LFS. -+ AC_DEFINE(HAVE_INT64_T) -+ case "$target" in -+ *-uclinux*) -+ # Don't enable LFS with uClinux -+ ;; -+ *) -+ AC_DEFINE(_GLIBCXX_USE_LFS) -+ esac -+ -+ # For showmanyc_helper(). -+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) -+ GLIBCXX_CHECK_POLL -+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG -+ -+ # For xsputn_2(). -+ AC_CHECK_HEADERS(sys/uio.h) -+ GLIBCXX_CHECK_WRITEV -+ -+# AC_DEFINE(HAVE_ACOSF) -+# AC_DEFINE(HAVE_ASINF) -+# AC_DEFINE(HAVE_ATANF) -+# AC_DEFINE(HAVE_ATAN2F) -+ AC_DEFINE(HAVE_CEILF) -+ AC_DEFINE(HAVE_COPYSIGN) -+# AC_DEFINE(HAVE_COPYSIGNF) -+# AC_DEFINE(HAVE_COSF) -+# AC_DEFINE(HAVE_COSHF) -+# AC_DEFINE(HAVE_EXPF) -+# AC_DEFINE(HAVE_FABSF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ AC_DEFINE(HAVE_FLOORF) -+# AC_DEFINE(HAVE_FMODF) -+# AC_DEFINE(HAVE_FREXPF) -+ AC_DEFINE(HAVE_HYPOT) -+# AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+# AC_DEFINE(HAVE_LOGF) -+# AC_DEFINE(HAVE_LOG10F) -+# AC_DEFINE(HAVE_MODFF) -+# AC_DEFINE(HAVE_SINF) -+# AC_DEFINE(HAVE_SINHF) -+# AC_DEFINE(HAVE_SINCOS) -+# AC_DEFINE(HAVE_SINCOSF) -+ AC_DEFINE(HAVE_SQRTF) -+# AC_DEFINE(HAVE_TANF) -+# AC_DEFINE(HAVE_TANHF) -+ if test x"long_double_math_on_this_cpu" = x"yes"; then -+ AC_MSG_ERROR([long_double_math_on_this_cpu is yes!]) -+# AC_DEFINE(HAVE_ACOSL) -+# AC_DEFINE(HAVE_ASINL) -+# AC_DEFINE(HAVE_ATANL) -+# AC_DEFINE(HAVE_ATAN2L) -+# AC_DEFINE(HAVE_CEILL) -+# AC_DEFINE(HAVE_COPYSIGNL) -+# AC_DEFINE(HAVE_COSL) -+# AC_DEFINE(HAVE_COSHL) -+# AC_DEFINE(HAVE_EXPL) -+# AC_DEFINE(HAVE_FABSL) -+# AC_DEFINE(HAVE_FINITEL) -+# AC_DEFINE(HAVE_FLOORL) -+# AC_DEFINE(HAVE_FMODL) -+# AC_DEFINE(HAVE_FREXPL) -+# AC_DEFINE(HAVE_HYPOTL) -+# AC_DEFINE(HAVE_ISINFL) -+# AC_DEFINE(HAVE_ISNANL) -+# AC_DEFINE(HAVE_LOGL) -+# AC_DEFINE(HAVE_LOG10L) -+# AC_DEFINE(HAVE_MODFL) -+# AC_DEFINE(HAVE_POWL) -+# AC_DEFINE(HAVE_SINL) -+# AC_DEFINE(HAVE_SINHL) -+# AC_DEFINE(HAVE_SINCOSL) -+# AC_DEFINE(HAVE_SQRTL) -+# AC_DEFINE(HAVE_TANL) -+# AC_DEFINE(HAVE_TANHL) -+ fi -+ ;; - *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ - machine/endian.h machine/param.h sys/machine.h sys/types.h \ -@@ -152,7 +245,7 @@ - AC_DEFINE(HAVE_INT64_T) - case "$target" in - *-uclinux*) -- # Don't enable LFS with uClibc -+ # Don't enable LFS with uClinux - ;; - *) - AC_DEFINE(_GLIBCXX_USE_LFS) -diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h ---- gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h 2003-12-08 21:51:45.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h 2004-09-10 10:47:40.000000000 -0500 -@@ -101,7 +101,9 @@ - using std::wmemcpy; - using std::wmemmove; - using std::wmemset; -+#if _GLIBCXX_HAVE_WCSFTIME - using std::wcsftime; -+#endif - - #if _GLIBCXX_USE_C99 - using std::wcstold; -diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h 2004-07-20 03:52:12.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h 2004-09-10 10:47:40.000000000 -0500 -@@ -179,7 +179,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#if _GLIBCXX_HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc-uclibc-3.4.0-120-softfloat.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc-uclibc-3.4.0-120-softfloat.patch deleted file mode 100644 index f2431896c..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc-uclibc-3.4.0-120-softfloat.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- gcc-3.3.2-old/configure.in 2003-08-09 01:57:21.000000000 -0500 -+++ gcc-3.3.2/configure.in 2004-01-15 12:46:29.000000000 -0600 -@@ -1418,6 +1418,11 @@ - fi - - FLAGS_FOR_TARGET= -+case " $targargs " in -+ *" --nfp "* | *" --without-float "*) -+ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -msoft-float' -+ ;; -+esac - case " $target_configdirs " in - *" newlib "*) - case " $targargs " in diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-ldm-peephole.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-ldm-peephole.patch deleted file mode 100644 index 92ad25d09..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-ldm-peephole.patch +++ /dev/null @@ -1,79 +0,0 @@ ---- gcc-3.4.0/gcc/config/arm/arm.md.arm-ldm-peephole 2004-01-13 08:24:37.000000000 -0500 -+++ gcc-3.4.0/gcc/config/arm/arm.md 2004-04-24 18:18:04.000000000 -0400 -@@ -8810,13 +8810,16 @@ - (set_attr "length" "4,8,8")] - ) - -+; Try to convert LDR+LDR+arith into [add+]LDM+arith -+; On XScale, LDM is always slower than two LDRs, so only do this if -+; optimising for size. - (define_insn "*arith_adjacentmem" - [(set (match_operand:SI 0 "s_register_operand" "=r") - (match_operator:SI 1 "shiftable_operator" - [(match_operand:SI 2 "memory_operand" "m") - (match_operand:SI 3 "memory_operand" "m")])) - (clobber (match_scratch:SI 4 "=r"))] -- "TARGET_ARM && adjacent_mem_locations (operands[2], operands[3])" -+ "TARGET_ARM && (!arm_tune_xscale || optimize_size) && adjacent_mem_locations (operands[2], operands[3])" - "* - { - rtx ldm[3]; -@@ -8851,6 +8854,8 @@ - } - if (val1 && val2) - { -+ /* This would be a loss on a Harvard core, but adjacent_mem_locations() -+ will prevent it from happening. */ - rtx ops[3]; - ldm[0] = ops[0] = operands[4]; - ops[1] = XEXP (XEXP (operands[2], 0), 0); ---- gcc-3.4.0/gcc/genpeep.c.arm-ldm-peephole 2003-07-05 01:27:22.000000000 -0400 -+++ gcc-3.4.0/gcc/genpeep.c 2004-04-24 18:18:04.000000000 -0400 -@@ -381,6 +381,7 @@ - printf ("#include \"recog.h\"\n"); - printf ("#include \"except.h\"\n\n"); - printf ("#include \"function.h\"\n\n"); -+ printf ("#include \"flags.h\"\n\n"); - - printf ("#ifdef HAVE_peephole\n"); - printf ("extern rtx peep_operand[];\n\n"); ---- gcc/gcc/config/arm/arm.c.orig 2005-06-02 22:40:40.000000000 +0100 -+++ gcc/gcc/config/arm/arm.c 2005-06-02 22:45:45.000000000 +0100 -@@ -4610,9 +4610,12 @@ - if (arm_eliminable_register (reg0)) - return 0; - -+ /* For Harvard cores, only accept pairs where one offset is zero. -+ See comment in load_multiple_sequence. */ - val_diff = val1 - val0; - return ((REGNO (reg0) == REGNO (reg1)) -- && (val_diff == 4 || val_diff == -4)); -+ && (val_diff == 4 || val_diff == -4)) -+ && (!arm_ld_sched || val0 == 0 || val1 == 0); - } - - return 0; -@@ -4857,6 +4860,11 @@ - *load_offset = unsorted_offsets[order[0]]; - } - -+ /* For XScale a two-word LDM is a performance loss, so only do this if -+ size is more important. See comments in arm_gen_load_multiple. */ -+ if (nops == 2 && arm_tune_xscale && !optimize_size) -+ return 0; -+ - if (unsorted_offsets[order[0]] == 0) - return 1; /* ldmia */ - -@@ -5083,6 +5091,11 @@ - *load_offset = unsorted_offsets[order[0]]; - } - -+ /* For XScale a two-word LDM is a performance loss, so only do this if -+ size is more important. See comments in arm_gen_load_multiple. */ -+ if (nops == 2 && arm_tune_xscale && !optimize_size) -+ return 0; -+ - if (unsorted_offsets[order[0]] == 0) - return 1; /* stmia */ - diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-ldm.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-ldm.patch deleted file mode 100644 index 142052fdf..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-ldm.patch +++ /dev/null @@ -1,119 +0,0 @@ ---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm 2004-02-27 09:51:05.000000000 -0500 -+++ gcc-3.4.0/gcc/config/arm/arm.c 2004-04-24 18:16:25.000000000 -0400 -@@ -8520,6 +8520,26 @@ - return_used_this_function = 0; - } - -+/* Return the number (counting from 0) of -+ the least significant set bit in MASK. */ -+ -+#ifdef __GNUC__ -+inline -+#endif -+static int -+number_of_first_bit_set (mask) -+ int mask; -+{ -+ int bit; -+ -+ for (bit = 0; -+ (mask & (1 << bit)) == 0; -+ ++bit) -+ continue; -+ -+ return bit; -+} -+ - const char * - arm_output_epilogue (rtx sibling) - { -@@ -8753,27 +8773,47 @@ - saved_regs_mask |= (1 << PC_REGNUM); - } - -- /* Load the registers off the stack. If we only have one register -- to load use the LDR instruction - it is faster. */ -- if (saved_regs_mask == (1 << LR_REGNUM)) -- { -- /* The exception handler ignores the LR, so we do -- not really need to load it off the stack. */ -- if (eh_ofs) -- asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM); -- else -- asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM); -- } -- else if (saved_regs_mask) -+ if (saved_regs_mask) - { -- if (saved_regs_mask & (1 << SP_REGNUM)) -- /* Note - write back to the stack register is not enabled -- (ie "ldmfd sp!..."). We know that the stack pointer is -- in the list of registers and if we add writeback the -- instruction becomes UNPREDICTABLE. */ -- print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask); -+ /* Load the registers off the stack. If we only have one register -+ to load use the LDR instruction - it is faster. */ -+ if (bit_count (saved_regs_mask) == 1) -+ { -+ int reg = number_of_first_bit_set (saved_regs_mask); -+ -+ switch (reg) -+ { -+ case SP_REGNUM: -+ /* Mustn't use base writeback when loading SP. */ -+ asm_fprintf (f, "\tldr\t%r, [%r]\n", SP_REGNUM, SP_REGNUM); -+ break; -+ -+ case LR_REGNUM: -+ if (eh_ofs) -+ { -+ /* The exception handler ignores the LR, so we do -+ not really need to load it off the stack. */ -+ asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM); -+ break; -+ } -+ /* else fall through */ -+ -+ default: -+ asm_fprintf (f, "\tldr\t%r, [%r], #4\n", reg, SP_REGNUM); -+ break; -+ } -+ } - else -- print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask); -+ { -+ if (saved_regs_mask & (1 << SP_REGNUM)) -+ /* Note - write back to the stack register is not enabled -+ (ie "ldmfd sp!..."). We know that the stack pointer is -+ in the list of registers and if we add writeback the -+ instruction becomes UNPREDICTABLE. */ -+ print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask); -+ else -+ print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask); -+ } - } - - if (current_function_pretend_args_size) -@@ -11401,22 +11441,6 @@ - } - } - --/* Return the number (counting from 0) of -- the least significant set bit in MASK. */ -- --inline static int --number_of_first_bit_set (int mask) --{ -- int bit; -- -- for (bit = 0; -- (mask & (1 << bit)) == 0; -- ++bit) -- continue; -- -- return bit; --} -- - /* Generate code to return from a thumb function. - If 'reg_containing_return_addr' is -1, then the return address is - actually on the stack, at the stack pointer. */ diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-tune.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-tune.patch deleted file mode 100644 index cdb20bef9..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc34-arm-tune.patch +++ /dev/null @@ -1,9 +0,0 @@ ---- gcc-3.4.0/gcc/config/arm/linux-elf.h.arm-tune 2004-01-31 01:18:11.000000000 -0500 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-04-24 18:19:10.000000000 -0400 -@@ -126,3 +126,6 @@ - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" -+ -+/* Tune for XScale. */ -+#define TARGET_TUNE_DEFAULT TARGET_CPU_xscale diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc34-configure.in.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc34-configure.in.patch deleted file mode 100644 index 3d33bcb97..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc34-configure.in.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- gcc-3.4.4/configure.in.orig 2005-08-09 19:57:51.504323183 -0700 -+++ gcc-3.4.4/configure.in 2005-08-09 20:00:12.073168623 -0700 -@@ -1907,7 +1907,7 @@ - *) gxx_include_dir=${with_gxx_include_dir} ;; - esac - --FLAGS_FOR_TARGET= -+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET" - case " $target_configdirs " in - *" newlib "*) - case " $target_configargs " in ---- gcc-3.4.4/configure.orig 2005-08-09 21:02:29.668360660 -0700 -+++ gcc-3.4.4/configure 2005-08-09 21:02:50.157649970 -0700 -@@ -2669,7 +2669,7 @@ - *) gxx_include_dir=${with_gxx_include_dir} ;; - esac - --FLAGS_FOR_TARGET= -+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET" - case " $target_configdirs " in - *" newlib "*) - case " $target_configargs " in diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc34-reverse-compare.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc34-reverse-compare.patch deleted file mode 100644 index c3c40dd18..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc34-reverse-compare.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- gcc-3.4.0/gcc/flow.c.reverse-compare 2004-02-27 22:39:19.000000000 -0500 -+++ gcc-3.4.0/gcc/flow.c 2004-04-24 16:36:00.000000000 -0400 -@@ -1843,6 +1843,7 @@ - regset_head diff_head; - regset diff = INITIALIZE_REG_SET (diff_head); - basic_block bb_true, bb_false; -+ enum rtx_code reversed_code; - int i; - - /* Identify the successor blocks. */ -@@ -1889,8 +1890,11 @@ - if (GET_CODE (reg) == REG - && XEXP (cond_true, 1) == const0_rtx) - { -- rtx cond_false -- = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), -+ rtx cond_false; -+ reversed_code = reverse_condition (GET_CODE (cond_true)); -+ if (reversed_code == UNKNOWN) -+ goto skip; -+ cond_false = gen_rtx_fmt_ee (reversed_code, - GET_MODE (cond_true), XEXP (cond_true, 0), - XEXP (cond_true, 1)); - if (GET_CODE (XEXP (set_src, 1)) == PC) -@@ -1925,6 +1929,7 @@ - } - } - -+ skip: - FREE_REG_SET (diff); - } - #endif diff --git a/openembedded/packages/gcc/gcc-3.4.4/gcc34-thumb-support.patch b/openembedded/packages/gcc/gcc-3.4.4/gcc34-thumb-support.patch deleted file mode 100644 index a4f156f8d..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/gcc34-thumb-support.patch +++ /dev/null @@ -1,156 +0,0 @@ -# This patch contains various fixes for the thumb code handling in GCC 3.4.4 -# -# Most of these are minor fixes to code which is either missing (Linux thumb -# div0, thumb clear instruction cache) or uses the wrong return mechanism -# (libffi) -# -# There is also a significant design problem with the _call_via_rx code - -# it cannot be in a shared library because a call via PLT simply won't -# work (for _call_via_ip) and is very inefficient anyway. -# -# This is fixed in uclibc simply by incorporating the code into crti.S -# (an extra 30 bytes for the 15 functions) even though not all link units -# require all the code - there is so little of it. That doesn't work with -# the crti.asm here because it is linked with libgcc.a which already defines -# these symbols -# ---- gcc-3.4.4/gcc/config/arm/t-linux.orig 2005-08-09 08:55:02.181797492 -0700 -+++ gcc-3.4.4/gcc/config/arm/t-linux 2005-08-09 08:58:22.766419486 -0700 -@@ -7,6 +7,7 @@ - LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ - _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ - _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _call_via_rX \ - _fixsfsi _fixunssfsi - - # MULTILIB_OPTIONS = mhard-float/msoft-float ---- gcc-3.4.4/.pc/gcc34-thumb-support.patch/gcc/config/arm/lib1funcs.asm 2004-01-15 08:56:34.000000000 -0800 -+++ gcc-3.4.4/gcc/config/arm/lib1funcs.asm 2005-09-21 21:32:03.376927755 -0700 -@@ -811,13 +811,18 @@ - - /* Constants taken from and */ - #define SIGFPE 8 -+#if !defined __thumb__ - #define __NR_SYSCALL_BASE 0x900000 -+#else -+#define __NR_SYSCALL_BASE 0 -+#endif - #define __NR_getpid (__NR_SYSCALL_BASE+ 20) - #define __NR_kill (__NR_SYSCALL_BASE+ 37) - - .code 32 - FUNC_START div0 - -+#if ! defined __thumb__ - stmfd sp!, {r1, lr} - swi __NR_getpid - cmn r0, #1000 -@@ -825,6 +830,28 @@ - mov r1, #SIGFPE - swi __NR_kill - RETLDM r1 -+#else -+ push {r1, r7, lr} -+ mov r7, #__NR_getpid -+ swi 0 -+ @ above the compare is with -1000, but the standard syscall -+ @ macro checks for -1..-125 -+ add r0, #125 -+ bcs 90f -+ sub r0, #125 -+ mov r1, #SIGFPE -+ mov r7, #__NR_kill -+ swi 0 -+90: -+#if __ARM_ARCH__ > 4 -+ pop {r1, r7, pc} -+#else -+ @ on 4T that won't work -+ pop {r1, r7} -+ pop {r3} -+ bx r3 -+#endif -+#endif - - FUNC_END div0 - -@@ -845,14 +872,14 @@ - code here switches to the correct mode before executing the function. */ - - .text -- .align 0 -+ .align 1 - .force_thumb - - .macro call_via register - THUMB_FUNC_START _call_via_\register -+ .hidden SYM (_call_via_\register) - - bx \register -- nop - - SIZE (_call_via_\register) - .endm -@@ -903,6 +930,7 @@ - .code 16 - - THUMB_FUNC_START _interwork_call_via_\register -+ .hidden SYM (_interwork_call_via_\register) - - bx pc - nop ---- gcc-3.4.4/.pc/gcc34-thumb-support.patch/gcc/config/arm/linux-gas.h 2003-06-19 14:47:06.000000000 -0700 -+++ gcc-3.4.4/gcc/config/arm/linux-gas.h 2005-09-20 16:09:55.027862200 -0700 -@@ -56,6 +56,7 @@ - - /* Clear the instruction cache from `beg' to `end'. This makes an - inline system call to SYS_cacheflush. */ -+#if !defined(__thumb__) - #define CLEAR_INSN_CACHE(BEG, END) \ - { \ - register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \ -@@ -65,3 +66,18 @@ - : "=r" (_beg) \ - : "0" (_beg), "r" (_end), "r" (_flg)); \ - } -+#else -+#define CLEAR_INSN_CACHE(BEG, END) \ -+{ \ -+ register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \ -+ register unsigned long _end __asm ("a2") = (unsigned long) (END); \ -+ register unsigned long _flg __asm ("a3") = 0; \ -+ register unsigned long _swi __asm ("a4") = 0xf0002; \ -+ __asm __volatile ("push {r7}\n" \ -+ " mov r7,a4\n" \ -+ " swi 0 @ sys_cacheflush\n" \ -+ " pop {r7}\n" \ -+ : "=r" (_beg) \ -+ : "0" (_beg), "r" (_end), "r" (_flg), "r" (_swi)); \ -+} -+#endif ---- gcc-3.4.4/.pc/gcc34-thumb-support.patch/libffi/src/arm/sysv.S 2003-10-21 12:01:55.000000000 -0700 -+++ gcc-3.4.4/libffi/src/arm/sysv.S 2005-09-20 16:09:55.027862200 -0700 -@@ -41,6 +41,14 @@ - #define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): - #endif - -+/* Get the correct return instruction */ -+#if defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_5__) \ -+ || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) -+#define RET bx r -+#else -+#define RET mov pc, -+#endif -+ - .text - - # a1: ffi_prep_args -@@ -66,7 +74,7 @@ - - # And call - mov lr, pc -- mov pc, ip -+ RET ip - - # move first 4 parameters in registers - ldr a1, [sp, #0] diff --git a/openembedded/packages/gcc/gcc-3.4.4/sdk-libstdc++-includes.patch b/openembedded/packages/gcc/gcc-3.4.4/sdk-libstdc++-includes.patch deleted file mode 100644 index 4377c2143..000000000 --- a/openembedded/packages/gcc/gcc-3.4.4/sdk-libstdc++-includes.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- gcc-3.4.1/libstdc++-v3/libmath/Makefile.am~ 2003-08-27 22:29:42.000000000 +0100 -+++ gcc-3.4.1/libstdc++-v3/libmath/Makefile.am 2004-07-22 16:41:45.152130128 +0100 -@@ -32,7 +32,7 @@ - - libmath_la_SOURCES = stubs.c - --AM_CPPFLAGS = $(CANADIAN_INCLUDES) -+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include - - # Only compiling "C" sources in this directory. - LIBTOOL = @LIBTOOL@ --tag CC ---- gcc-3.4.1/libstdc++-v3/fragment.am.old 2004-07-22 18:24:58.024083656 +0100 -+++ gcc-3.4.1/libstdc++-v3/fragment.am 2004-07-22 18:24:59.019932264 +0100 -@@ -18,7 +18,7 @@ - $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once - - # -I/-D flags to pass when compiling. --AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include - - - diff --git a/openembedded/packages/gcc/gcc-4.0.2/100-uclibc-conf.patch b/openembedded/packages/gcc/gcc-4.0.2/100-uclibc-conf.patch deleted file mode 100644 index 35445522f..000000000 --- a/openembedded/packages/gcc/gcc-4.0.2/100-uclibc-conf.patch +++ /dev/null @@ -1,556 +0,0 @@ -From: -http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/*checkout*/trunk/buildroot/toolchain/gcc/4.0.2/100-uclibc-conf.patch?rev=13898 - ---- gcc-4.0.2/gcc/config/t-linux-uclibc -+++ gcc-4.0.2/gcc/config/t-linux-uclibc -@@ -0,0 +1,5 @@ -+# Remove glibc specific files added in t-linux -+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES)) -+ -+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc -+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH)) ---- gcc-4.0.2/gcc/config.gcc -+++ gcc-4.0.2/gcc/config.gcc -@@ -1778,7 +1778,7 @@ - ;; - sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \ - sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ -- sh-*-linux* | sh[346lbe]*-*-linux* | \ -+ sh*-*-linux* | sh[346lbe]*-*-linux* | \ - sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ - sh64-*-netbsd* | sh64l*-*-netbsd*) - tmake_file="${tmake_file} sh/t-sh sh/t-elf" -@@ -2234,10 +2234,16 @@ - *) - echo "*** Configuration ${target} not supported" 1>&2 - exit 1 - ;; - esac -+ -+# Rather than hook into each target, just do it after all the linux -+# targets have been processed -+case ${target} in -+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc" -+esac - - case ${target} in - i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1) - tmake_file="${tmake_file} i386/t-gmm_malloc" - ;; ---- gcc-4.0.2/gcc/config/alpha/linux-elf.h -+++ gcc-4.0.2/gcc/config/alpha/linux-elf.h -@@ -27,7 +27,11 @@ - #define SUBTARGET_EXTRA_SPECS \ - { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else - #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - - #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ ---- gcc-4.0.2/gcc/config/arm/linux-elf.h -+++ gcc-4.0.2/gcc/config/arm/linux-elf.h -@@ -81,14 +81,19 @@ - #define ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "%{h*} %{version:-v} \ - %{b} %{Wl,*:%*} \ - %{static:-Bstatic} \ - %{shared:-shared} \ - %{symbolic:-Bsymbolic} \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC ---- gcc-4.0.2/gcc/config/cris/linux.h -+++ gcc-4.0.2/gcc/config/cris/linux.h -@@ -79,6 +79,25 @@ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -93,6 +112,8 @@ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - ---- gcc-4.0.2/gcc/config/i386/linux.h -+++ gcc-4.0.2/gcc/config/i386/linux.h -@@ -107,6 +107,11 @@ - #define LINK_EMULATION "elf_i386" - #define DYNAMIC_LINKER "/lib/ld-linux.so.2" - -+#ifdef USE_UCLIBC -+#undef DYNAMIC_LINKER -+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#endif -+ - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ - { "link_emulation", LINK_EMULATION },\ ---- gcc-4.0.2/gcc/config/i386/linux64.h -+++ gcc-4.0.2/gcc/config/i386/linux64.h -@@ -54,14 +54,21 @@ - When the -shared link option is used a final link is not being - done. */ - -+#ifdef USE_UCLIBC -+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" -+#else -+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ -+ %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \ -+ %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \ - %{static:-static}}" - - #define MULTILIB_DEFAULTS { "m64" } ---- gcc-4.0.2/gcc/config/ia64/linux.h -+++ gcc-4.0.2/gcc/config/ia64/linux.h -@@ -37,13 +37,18 @@ - /* Define this for shared library support because it isn't in the main - linux.h file. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "\ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}" - - ---- gcc-4.0.2/gcc/config/m68k/linux.h -+++ gcc-4.0.2/gcc/config/m68k/linux.h -@@ -127,12 +127,17 @@ - - /* If ELF is the default format, we should not use /lib/elf. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "-m m68kelf %{shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static}}" - - /* For compatibility with linux/a.out */ ---- gcc-4.0.2/gcc/config/mips/linux.h -+++ gcc-4.0.2/gcc/config/mips/linux.h -@@ -108,14 +108,19 @@ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}}" - - #undef SUBTARGET_ASM_SPEC ---- gcc-4.0.2/gcc/config/pa/pa-linux.h -+++ gcc-4.0.2/gcc/config/pa/pa-linux.h -@@ -82,13 +82,18 @@ - /* Define this for shared library support because it isn't in the main - linux.h file. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "\ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}" - - /* glibc's profiling functions don't need gcc to allocate counters. */ ---- gcc-4.0.2/gcc/config/rs6000/linux.h -+++ gcc-4.0.2/gcc/config/rs6000/linux.h -@@ -69,7 +69,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" ---- gcc-4.0.2/gcc/config/rs6000/sysv4.h -+++ gcc-4.0.2/gcc/config/rs6000/sysv4.h -@@ -949,6 +949,7 @@ - mcall-linux : %(link_os_linux) ; \ - mcall-gnu : %(link_os_gnu) ; \ - mcall-netbsd : %(link_os_netbsd) ; \ -+ mcall-linux-uclibc : %(link_os_linux_uclibc); \ - mcall-openbsd: %(link_os_openbsd) ; \ - : %(link_os_default) }" - -@@ -1127,6 +1128,10 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " - #endif -@@ -1293,6 +1298,7 @@ - { "link_os_sim", LINK_OS_SIM_SPEC }, \ - { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ - { "link_os_linux", LINK_OS_LINUX_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_gnu", LINK_OS_GNU_SPEC }, \ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ ---- gcc-4.0.2/gcc/config/s390/linux.h -+++ gcc-4.0.2/gcc/config/s390/linux.h -@@ -77,6 +77,13 @@ - #define MULTILIB_DEFAULTS { "m31" } - #endif - -+#ifdef USE_UCLIBC -+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" -+#else -+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC \ - "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ -@@ -86,8 +93,8 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{m31:-dynamic-linker /lib/ld.so.1} \ -- %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \ -+ %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}" - - - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack ---- gcc-4.0.2/gcc/config/sh/linux.h -+++ gcc-4.0.2/gcc/config/sh/linux.h -@@ -67,11 +67,16 @@ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}" - - #undef LIB_SPEC ---- gcc-4.0.2/gcc/config/sparc/linux.h -+++ gcc-4.0.2/gcc/config/sparc/linux.h -@@ -130,14 +130,19 @@ - - /* If ELF is the default format, we should not use /lib/elf. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}}" - - /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). ---- gcc-4.0.2/gcc/config/sparc/linux64.h -+++ gcc-4.0.2/gcc/config/sparc/linux64.h -@@ -167,12 +166,17 @@ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}} \ - " - ---- gcc-4.0.2/libtool.m4 -+++ gcc-4.0.2/libtool.m4 -@@ -682,6 +682,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] ---- gcc-4.0.2/ltconfig -+++ gcc-4.0.2/ltconfig -@@ -603,6 +603,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in -+linux-uclibc*) ;; - linux-gnu*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac -@@ -1274,6 +1275,23 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no ---- gcc-4.0.2/libffi/configure -+++ gcc-4.0.2/libffi/configure -@@ -3457,6 +3457,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libgfortran/configure -+++ gcc-4.0.2/libgfortran/configure -@@ -3681,6 +3681,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libjava/configure -+++ gcc-4.0.2/libjava/configure -@@ -4351,6 +4351,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libmudflap/configure -+++ gcc-4.0.2/libmudflap/configure -@@ -5380,6 +5380,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libobjc/configure -+++ gcc-4.0.2/libobjc/configure -@@ -3283,6 +3283,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/boehm-gc/configure -+++ gcc-4.0.2/boehm-gc/configure -@@ -4320,6 +4320,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/configure -+++ gcc-4.0.2/configure -@@ -1141,7 +1141,7 @@ - ;; - "") - case "${target}" in -- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) -+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) ---- gcc-4.0.2/configure.in -+++ gcc-4.0.2/configure.in -@@ -350,7 +350,7 @@ - ;; - "") - case "${target}" in -- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) -+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) ---- gcc-4.0.2/contrib/regression/objs-gcc.sh -+++ gcc-4.0.2/contrib/regression/objs-gcc.sh -@@ -105,6 +105,10 @@ - then - make all-gdb all-dejagnu all-ld || exit 1 - make install-gdb install-dejagnu install-ld || exit 1 -+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] -+ then -+ make all-gdb all-dejagnu all-ld || exit 1 -+ make install-gdb install-dejagnu install-ld || exit 1 - elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then - make bootstrap || exit 1 - make install || exit 1 ---- gcc-4.0.2/zlib/configure -+++ gcc-4.0.2/zlib/configure -@@ -3426,6 +3426,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' diff --git a/openembedded/packages/gcc/gcc-4.0.2/200-uclibc-locale.patch b/openembedded/packages/gcc/gcc-4.0.2/200-uclibc-locale.patch deleted file mode 100644 index 8be03a544..000000000 --- a/openembedded/packages/gcc/gcc-4.0.2/200-uclibc-locale.patch +++ /dev/null @@ -1,3240 +0,0 @@ -From: -http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/*checkout*/trunk/buildroot/toolchain/gcc/4.0.2/200-uclibc-locale.patch?rev=11715 - -diff -urN gcc-4.0.0-100/libstdc++-v3/acinclude.m4 gcc-4.0.0/libstdc++-v3/acinclude.m4 ---- gcc-4.0.0-100/libstdc++-v3/acinclude.m4 2005-04-30 13:06:53.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/acinclude.m4 2005-04-28 20:19:01.000000000 -0500 -@@ -1104,7 +1104,7 @@ - AC_MSG_CHECKING([for C locale to use]) - GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], - [use MODEL for target locale package], -- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) -+ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) - - # If they didn't use this option switch, or if they specified --enable - # with no specific model, we'll have to look for one. If they -@@ -1120,6 +1120,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case ${target_os} in -+ *-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1263,6 +1266,40 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,59 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek -+ -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#endif // GLIBC 2.3 and later -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,160 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#include // For errno -+#include -+#include -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#warning should dummy __newlocale check for C|POSIX ? -+#define __newlocale(a, b, c) NULL -+#define __freelocale(a) ((void)0) -+#define __duplocale(a) __c_locale() -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " -+ "name not valid")); -+ } -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+ if (_S_get_c_locale() != __cloc) -+ __freelocale(__cloc); -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+ { return __duplocale(__cloc); } -+} // namespace std -+ -+namespace __gnu_cxx -+{ -+ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES", -+#if _GLIBCXX_NUM_CATEGORIES != 0 -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} -+ -+namespace std -+{ -+ const char* const* const locale::_S_categories = __gnu_cxx::category_names; -+} // namespace std -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,115 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include // get std::strlen -+#include // get std::snprintf or std::sprintf -+#include -+#include // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCXX_C_LOCALE_GNU for -+#endif -+#define _GLIBCXX_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCXX_NUM_CATEGORIES 6 -+#define _GLIBCXX_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template -+ int -+ __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = std::setlocale(LC_ALL, NULL); -+ char* __sav = new char[std::strlen(__old) + 1]; -+ std::strcpy(__sav, __old); -+ std::setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ std::setlocale(LC_ALL, __sav); -+ delete [] __sav; -+#endif -+ return __ret; -+ } -+} -+ -+#endif -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,306 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+ codecvt_base::result -+ codecvt:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // wcsnrtombs is *very* fast but stops if encounters NUL characters: -+ // in case we fall back to wcrtomb and then continue, in a loop. -+ // NB: wcsnrtombs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', -+ __from_end - __from_next); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ const size_t __conv = wcsnrtombs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // wcrtomb. -+ for (; __from < __from_next; ++__from) -+ __to_next += wcrtomb(__to_next, *__from, &__tmp_state); -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ extern_type __buf[MB_LEN_MAX]; -+ __tmp_state = __state; -+ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); -+ if (__conv > static_cast(__to_end - __to_next)) -+ __ret = partial; -+ else -+ { -+ memcpy(__to_next, __buf, __conv); -+ __state = __tmp_state; -+ __to_next += __conv; -+ ++__from_next; -+ } -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we store a L'\0' and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from_next, '\0', -+ __from_end -+ - __from_next)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ size_t __conv = mbsnrtowcs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (;; ++__to_next, __from += __conv) -+ { -+ __conv = mbrtowc(__to_next, __from, __from_end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __from_next = __from; -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ // It is unclear what to return in this case (see DR 382). -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ if (__to_next < __to_end) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from_next; -+ *__to_next++ = L'\0'; -+ } -+ else -+ __ret = partial; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_encoding() const throw() -+ { -+ // XXX This implementation assumes that the encoding is -+ // stateless and is either single-byte or variable-width. -+ int __ret = 0; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ if (MB_CUR_MAX == 1) -+ __ret = 1; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_max_length() const throw() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ // XXX Probably wrong for stateful encodings. -+ int __ret = MB_CUR_MAX; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_length(state_type& __state, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { -+ int __ret = 0; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we advance past it and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ -+ // A dummy internal buffer is needed in order for mbsnrtocws to consider -+ // its fourth parameter (it wouldn't with NULL as first parameter). -+ wchar_t* __to = static_cast(__builtin_alloca(sizeof(wchar_t) -+ * __max)); -+ while (__from < __end && __max) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from, '\0', -+ __end -+ - __from)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __end; -+ -+ const extern_type* __tmp_from = __from; -+ size_t __conv = mbsnrtowcs(__to, &__from, -+ __from_chunk_end - __from, -+ __max, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (__from = __tmp_from;; __from += __conv) -+ { -+ __conv = mbrtowc(NULL, __from, __end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __state = __tmp_state; -+ __ret += __from - __tmp_from; -+ break; -+ } -+ if (!__from) -+ __from = __from_chunk_end; -+ -+ __ret += __from - __tmp_from; -+ __max -= __conv; -+ -+ if (__from < __end && __max) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from; -+ ++__ret; -+ --__max; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ int -+ collate::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,300 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname::ctype_byname(const char* __s, size_t __refs) -+ : ctype(0, false, __refs) -+ { -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_ctype); -+ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; -+ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; -+ this->_M_table = this->_M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ ctype::__wmask_type -+ ctype::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = __wmask_type(); -+ } -+ return __ret; -+ } -+ -+ wchar_t -+ ctype::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ bool __ret = false; -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__m & _M_bit[__bitcur] -+ && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ { -+ __ret = true; -+ break; -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (; __lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ __m |= _M_bit[__bitcur]; -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype:: -+ do_widen(char __c) const -+ { return _M_widen[static_cast(__c)]; } -+ -+ const char* -+ ctype:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+ while (__lo < __hi) -+ { -+ *__dest = _M_widen[static_cast(*__lo)]; -+ ++__lo; -+ ++__dest; -+ } -+ return __hi; -+ } -+ -+ char -+ ctype:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) -+ return _M_narrow[__wc]; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ const int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ if (_M_narrow_ok) -+ while (__lo < __hi) -+ { -+ if (*__lo >= 0 && *__lo < 128) -+ *__dest = _M_narrow[*__lo]; -+ else -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ ++__lo; -+ ++__dest; -+ } -+ else -+ while (__lo < __hi) -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ ++__lo; -+ ++__dest; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ void -+ ctype::_M_initialize_ctype() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wint_t __i; -+ for (__i = 0; __i < 128; ++__i) -+ { -+ const int __c = wctob(__i); -+ if (__c == EOF) -+ break; -+ else -+ _M_narrow[__i] = static_cast(__c); -+ } -+ if (__i == 128) -+ _M_narrow_ok = true; -+ else -+ _M_narrow_ok = false; -+ for (size_t __j = 0; -+ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) -+ _M_widen[__j] = btowc(__j); -+ -+ for (size_t __k = 0; __k <= 11; ++__k) -+ { -+ _M_bit[__k] = static_cast(_ISbit(__k)); -+ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+#endif // _GLIBCXX_USE_WCHAR_T -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+# elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,118 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template -+ messages<_CharT>::messages(size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), -+ _M_name_messages(_S_get_c_name()) -+ { } -+ -+ template -+ messages<_CharT>::messages(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), -+ _M_name_messages(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_messages = __tmp; -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template -+ messages<_CharT>::~messages() -+ { -+ if (_M_name_messages != _S_get_c_name()) -+ delete [] _M_name_messages; -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+ if (this->_M_name_messages != locale::facet::_S_get_c_name()) -+ delete [] this->_M_name_messages; -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ this->_M_name_messages = __tmp; -+ -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_messages); -+ this->_S_create_c_locale(this->_M_c_locale_messages, __s); -+ } -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2005-04-28 01:23:02.000000000 -0500 -@@ -0,0 +1,692 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ __ret.field[0] = sign; -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[2] = space; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[1] = space; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ else -+ { -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ default: -+ __ret = pattern(); -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == true -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == false -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = -+ static_cast(money_base::_S_atoms[__i]); -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = -+ static_cast(money_base::_S_atoms[__i]); -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2005-04-28 01:20:20.000000000 -0500 -@@ -0,0 +1,173 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, -+ __cloc)); -+ -+ // Check for NULL, which implies no grouping. -+ if (_M_data->_M_thousands_sep == '\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = "true"; -+ _M_data->_M_truename_size = 4; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = "false"; -+ _M_data->_M_falsename_size = 5; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = -+ static_cast(__num_base::_S_atoms_out[__i]); -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = -+ static_cast(__num_base::_S_atoms_in[__j]); -+ } -+ else -+ { -+ // Named locale. -+ // NB: In the GNU model wchar_t is always 32 bit wide. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ -+ if (_M_data->_M_thousands_sep == L'\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = L"true"; -+ _M_data->_M_truename_size = 4; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = L"false"; -+ _M_data->_M_falsename_size = 5; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ #endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,406 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = '\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = "%m/%d/%y"; -+ _M_data->_M_date_era_format = "%m/%d/%y"; -+ _M_data->_M_time_format = "%H:%M:%S"; -+ _M_data->_M_time_era_format = "%H:%M:%S"; -+ _M_data->_M_date_time_format = ""; -+ _M_data->_M_date_time_era_format = ""; -+ _M_data->_M_am = "AM"; -+ _M_data->_M_pm = "PM"; -+ _M_data->_M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = "Sunday"; -+ _M_data->_M_day2 = "Monday"; -+ _M_data->_M_day3 = "Tuesday"; -+ _M_data->_M_day4 = "Wednesday"; -+ _M_data->_M_day5 = "Thursday"; -+ _M_data->_M_day6 = "Friday"; -+ _M_data->_M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = "Sun"; -+ _M_data->_M_aday2 = "Mon"; -+ _M_data->_M_aday3 = "Tue"; -+ _M_data->_M_aday4 = "Wed"; -+ _M_data->_M_aday5 = "Thu"; -+ _M_data->_M_aday6 = "Fri"; -+ _M_data->_M_aday7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = "January"; -+ _M_data->_M_month02 = "February"; -+ _M_data->_M_month03 = "March"; -+ _M_data->_M_month04 = "April"; -+ _M_data->_M_month05 = "May"; -+ _M_data->_M_month06 = "June"; -+ _M_data->_M_month07 = "July"; -+ _M_data->_M_month08 = "August"; -+ _M_data->_M_month09 = "September"; -+ _M_data->_M_month10 = "October"; -+ _M_data->_M_month11 = "November"; -+ _M_data->_M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = "Jan"; -+ _M_data->_M_amonth02 = "Feb"; -+ _M_data->_M_amonth03 = "Mar"; -+ _M_data->_M_amonth04 = "Apr"; -+ _M_data->_M_amonth05 = "May"; -+ _M_data->_M_amonth06 = "Jun"; -+ _M_data->_M_amonth07 = "Jul"; -+ _M_data->_M_amonth08 = "Aug"; -+ _M_data->_M_amonth09 = "Sep"; -+ _M_data->_M_amonth10 = "Oct"; -+ _M_data->_M_amonth11 = "Nov"; -+ _M_data->_M_amonth12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, -+ __cloc); -+ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ __timepunct:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+ const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = L'\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = L"%m/%d/%y"; -+ _M_data->_M_date_era_format = L"%m/%d/%y"; -+ _M_data->_M_time_format = L"%H:%M:%S"; -+ _M_data->_M_time_era_format = L"%H:%M:%S"; -+ _M_data->_M_date_time_format = L""; -+ _M_data->_M_date_time_era_format = L""; -+ _M_data->_M_am = L"AM"; -+ _M_data->_M_pm = L"PM"; -+ _M_data->_M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = L"Sunday"; -+ _M_data->_M_day2 = L"Monday"; -+ _M_data->_M_day3 = L"Tuesday"; -+ _M_data->_M_day4 = L"Wednesday"; -+ _M_data->_M_day5 = L"Thursday"; -+ _M_data->_M_day6 = L"Friday"; -+ _M_data->_M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = L"Sun"; -+ _M_data->_M_aday2 = L"Mon"; -+ _M_data->_M_aday3 = L"Tue"; -+ _M_data->_M_aday4 = L"Wed"; -+ _M_data->_M_aday5 = L"Thu"; -+ _M_data->_M_aday6 = L"Fri"; -+ _M_data->_M_aday7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = L"January"; -+ _M_data->_M_month02 = L"February"; -+ _M_data->_M_month03 = L"March"; -+ _M_data->_M_month04 = L"April"; -+ _M_data->_M_month05 = L"May"; -+ _M_data->_M_month06 = L"June"; -+ _M_data->_M_month07 = L"July"; -+ _M_data->_M_month08 = L"August"; -+ _M_data->_M_month09 = L"September"; -+ _M_data->_M_month10 = L"October"; -+ _M_data->_M_month11 = L"November"; -+ _M_data->_M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = L"Jan"; -+ _M_data->_M_amonth02 = L"Feb"; -+ _M_data->_M_amonth03 = L"Mar"; -+ _M_data->_M_amonth04 = L"Apr"; -+ _M_data->_M_amonth05 = L"May"; -+ _M_data->_M_amonth06 = L"Jun"; -+ _M_data->_M_amonth07 = L"Jul"; -+ _M_data->_M_amonth08 = L"Aug"; -+ _M_data->_M_amonth09 = L"Sep"; -+ _M_data->_M_amonth10 = L"Oct"; -+ _M_data->_M_amonth11 = L"Nov"; -+ _M_data->_M_amonth12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ union { char *__s; wchar_t *__w; } __u; -+ -+ __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc); -+ _M_data->_M_date_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc); -+ _M_data->_M_date_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc); -+ _M_data->_M_time_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc); -+ _M_data->_M_time_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc); -+ _M_data->_M_am = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc); -+ _M_data->_M_pm = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc); -+ _M_data->_M_am_pm_format = __u.__w; -+ -+ // Day names, starting with "C"'s Sunday. -+ __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc); -+ _M_data->_M_day1 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc); -+ _M_data->_M_day2 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc); -+ _M_data->_M_day3 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc); -+ _M_data->_M_day4 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc); -+ _M_data->_M_day5 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc); -+ _M_data->_M_day6 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc); -+ _M_data->_M_day7 = __u.__w; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc); -+ _M_data->_M_aday1 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc); -+ _M_data->_M_aday2 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc); -+ _M_data->_M_aday3 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc); -+ _M_data->_M_aday4 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc); -+ _M_data->_M_aday5 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc); -+ _M_data->_M_aday6 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc); -+ _M_data->_M_aday7 = __u.__w; -+ -+ // Month names, starting with "C"'s January. -+ __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc); -+ _M_data->_M_month01 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc); -+ _M_data->_M_month02 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc); -+ _M_data->_M_month03 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc); -+ _M_data->_M_month04 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc); -+ _M_data->_M_month05 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc); -+ _M_data->_M_month06 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc); -+ _M_data->_M_month07 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc); -+ _M_data->_M_month08 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc); -+ _M_data->_M_month09 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc); -+ _M_data->_M_month10 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc); -+ _M_data->_M_month11 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc); -+ _M_data->_M_month12 = __u.__w; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc); -+ _M_data->_M_amonth01 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc); -+ _M_data->_M_amonth02 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc); -+ _M_data->_M_amonth03 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc); -+ _M_data->_M_amonth04 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc); -+ _M_data->_M_amonth05 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc); -+ _M_data->_M_amonth06 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc); -+ _M_data->_M_amonth07 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc); -+ _M_data->_M_amonth08 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc); -+ _M_data->_M_amonth09 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc); -+ _M_data->_M_amonth10 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc); -+ _M_data->_M_amonth11 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc); -+ _M_data->_M_amonth12 = __u.__w; -+ } -+#endif // 0 -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h 2004-05-22 18:46:31.000000000 -0500 -@@ -0,0 +1,68 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik -+ -+ template -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) -+ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_timepunct = __tmp; -+ _M_initialize_timepunct(__cloc); -+ } -+ -+ template -+ __timepunct<_CharT>::~__timepunct() -+ { -+ if (_M_name_timepunct != _S_get_c_name()) -+ delete [] _M_name_timepunct; -+ delete _M_data; -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,64 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+/** @file ctype_base.h -+ * This is an internal header file, included by other library headers. -+ * You should not attempt to use it directly. -+ */ -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ /// @brief Base class for ctype. -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ -+ // NB: Offsets into ctype::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISalpha | _ISdigit | _ISpunct; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalpha | _ISdigit; -+ }; -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h 2002-06-24 00:49:19.000000000 -0500 -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast(__c)] & __m; } -+ -+ const char* -+ ctype:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,92 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype::classic_table() throw() -+ { return __C_ctype_b; } -+ -+ ctype::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ ctype::ctype(const mask* __table, bool __del, size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ char -+ ctype::do_toupper(char __c) const -+ { return _M_toupper[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype::do_tolower(char __c) const -+ { return _M_tolower[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,44 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCXX_OS_DEFINES -+#define _GLIBCXX_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif -diff -urN gcc-4.0.0-100/libstdc++-v3/configure gcc-4.0.0/libstdc++-v3/configure ---- gcc-4.0.0-100/libstdc++-v3/configure 2005-04-30 13:06:53.683055232 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 12:24:24.000000000 -0500 -@@ -3998,6 +3998,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -5672,7 +5677,7 @@ - enableval="$enable_clocale" - - case "$enableval" in -- generic|gnu|ieee_1003.1-2001|yes|no|auto) ;; -+ generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;; - *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5 - echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;} - { (exit 1); exit 1; }; } ;; -@@ -5697,6 +5702,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case ${target_os} in -+ linux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ -@@ -5927,6 +5935,76 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ echo "$as_me:$LINENO: result: uclibc" >&5 -+echo "${ECHO_T}uclibc" >&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_check_msgfmt+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_check_msgfmt="yes" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt=$ac_cv_prog_check_msgfmt -+if test -n "$check_msgfmt"; then -+ echo "$as_me:$LINENO: result: $check_msgfmt" >&5 -+echo "${ECHO_T}$check_msgfmt" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-4.0.0-100/libstdc++-v3/configure.host gcc-4.0.0/libstdc++-v3/configure.host ---- gcc-4.0.0-100/libstdc++-v3/configure.host 2005-04-30 13:06:53.688054472 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure.host 2005-04-28 20:20:32.000000000 -0500 -@@ -249,6 +249,12 @@ - ;; - esac - -+# Override for uClibc since linux-uclibc gets mishandled above. -+case "${host_os}" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; -+esac - - # Set any OS-dependent and CPU-dependent bits. - # THIS TABLE IS SORTED. KEEP IT THAT WAY. -diff -urN gcc-4.0.0-100/libstdc++-v3/crossconfig.m4 gcc-4.0.0/libstdc++-v3/crossconfig.m4 ---- gcc-4.0.0-100/libstdc++-v3/crossconfig.m4 2005-04-30 13:06:53.689054320 -0500 -+++ gcc-4.0.0/libstdc++-v3/crossconfig.m4 2005-04-28 20:27:15.000000000 -0500 -@@ -142,6 +142,98 @@ - ;; - esac - ;; -+ *-uclibc*) -+# Temporary hack until we implement the float versions of the libm funcs -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCXX_CHECK_LINKER_FEATURES -+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCXX_CHECK_WCHAR_T_SUPPORT -+ -+ # For LFS. -+ AC_DEFINE(HAVE_INT64_T) -+ case "$target" in -+ *-uclinux*) -+ # Don't enable LFS with uClinux -+ ;; -+ *) -+ AC_DEFINE(_GLIBCXX_USE_LFS) -+ esac -+ -+ # For showmanyc_helper(). -+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) -+ GLIBCXX_CHECK_POLL -+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG -+ -+ # For xsputn_2(). -+ AC_CHECK_HEADERS(sys/uio.h) -+ GLIBCXX_CHECK_WRITEV -+ -+# AC_DEFINE(HAVE_ACOSF) -+# AC_DEFINE(HAVE_ASINF) -+# AC_DEFINE(HAVE_ATANF) -+# AC_DEFINE(HAVE_ATAN2F) -+ AC_DEFINE(HAVE_CEILF) -+ AC_DEFINE(HAVE_COPYSIGN) -+# AC_DEFINE(HAVE_COPYSIGNF) -+# AC_DEFINE(HAVE_COSF) -+# AC_DEFINE(HAVE_COSHF) -+# AC_DEFINE(HAVE_EXPF) -+# AC_DEFINE(HAVE_FABSF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ AC_DEFINE(HAVE_FLOORF) -+# AC_DEFINE(HAVE_FMODF) -+# AC_DEFINE(HAVE_FREXPF) -+ AC_DEFINE(HAVE_HYPOT) -+# AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+# AC_DEFINE(HAVE_LOGF) -+# AC_DEFINE(HAVE_LOG10F) -+# AC_DEFINE(HAVE_MODFF) -+# AC_DEFINE(HAVE_SINF) -+# AC_DEFINE(HAVE_SINHF) -+# AC_DEFINE(HAVE_SINCOS) -+# AC_DEFINE(HAVE_SINCOSF) -+ AC_DEFINE(HAVE_SQRTF) -+# AC_DEFINE(HAVE_TANF) -+# AC_DEFINE(HAVE_TANHF) -+ if test x"long_double_math_on_this_cpu" = x"yes"; then -+# AC_DEFINE(HAVE_ACOSL) -+# AC_DEFINE(HAVE_ASINL) -+# AC_DEFINE(HAVE_ATANL) -+# AC_DEFINE(HAVE_ATAN2L) -+# AC_DEFINE(HAVE_CEILL) -+# AC_DEFINE(HAVE_COPYSIGNL) -+# AC_DEFINE(HAVE_COSL) -+# AC_DEFINE(HAVE_COSHL) -+# AC_DEFINE(HAVE_EXPL) -+# AC_DEFINE(HAVE_FABSL) -+# AC_DEFINE(HAVE_FINITEL) -+# AC_DEFINE(HAVE_FLOORL) -+# AC_DEFINE(HAVE_FMODL) -+# AC_DEFINE(HAVE_FREXPL) -+# AC_DEFINE(HAVE_HYPOTL) -+# AC_DEFINE(HAVE_ISINFL) -+# AC_DEFINE(HAVE_ISNANL) -+# AC_DEFINE(HAVE_LOGL) -+# AC_DEFINE(HAVE_LOG10L) -+# AC_DEFINE(HAVE_MODFL) -+# AC_DEFINE(HAVE_POWL) -+# AC_DEFINE(HAVE_SINL) -+# AC_DEFINE(HAVE_SINHL) -+# AC_DEFINE(HAVE_SINCOSL) -+# AC_DEFINE(HAVE_SQRTL) -+# AC_DEFINE(HAVE_TANL) -+# AC_DEFINE(HAVE_TANHL) -+ fi -+ ;; - *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ - machine/endian.h machine/param.h sys/machine.h sys/types.h \ -@@ -156,7 +248,7 @@ - AC_DEFINE(HAVE_INT64_T) - case "$target" in - *-uclinux*) -- # Don't enable LFS with uClibc -+ # Don't enable LFS with uClinux - ;; - *) - AC_DEFINE(_GLIBCXX_USE_LFS) -diff -urN gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h ---- gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h 2005-04-30 13:06:53.690054168 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h 2005-04-28 20:15:56.000000000 -0500 -@@ -101,7 +101,9 @@ - using std::wmemcpy; - using std::wmemmove; - using std::wmemset; -+#if _GLIBCXX_HAVE_WCSFTIME - using std::wcsftime; -+#endif - - #if _GLIBCXX_USE_C99 - using std::wcstold; -diff -urN gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h 2005-04-30 13:06:53.691054016 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h 2005-04-28 20:15:56.000000000 -0500 -@@ -179,7 +179,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#if _GLIBCXX_HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; diff --git a/openembedded/packages/gcc/gcc-4.0.2/301-missing-execinfo_h.patch b/openembedded/packages/gcc/gcc-4.0.2/301-missing-execinfo_h.patch deleted file mode 100644 index 886759381..000000000 --- a/openembedded/packages/gcc/gcc-4.0.2/301-missing-execinfo_h.patch +++ /dev/null @@ -1,14 +0,0 @@ -From: -http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/*checkout*/trunk/buildroot/toolchain/gcc/4.0.2/301-missing-execinfo_h.patch?rev=11715 - ---- gcc-4.0.0/boehm-gc/include/gc.h-orig 2005-04-28 22:28:57.000000000 -0500 -+++ gcc-4.0.0/boehm-gc/include/gc.h 2005-04-28 22:30:38.000000000 -0500 -@@ -500,7 +500,7 @@ - #ifdef __linux__ - # include - # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ -- && !defined(__ia64__) -+ && !defined(__ia64__) && !defined(__UCLIBC__) - # ifndef GC_HAVE_BUILTIN_BACKTRACE - # define GC_HAVE_BUILTIN_BACKTRACE - # endif diff --git a/openembedded/packages/gcc/gcc-4.0.2/302-c99-snprintf.patch b/openembedded/packages/gcc/gcc-4.0.2/302-c99-snprintf.patch deleted file mode 100644 index 5159a52cd..000000000 --- a/openembedded/packages/gcc/gcc-4.0.2/302-c99-snprintf.patch +++ /dev/null @@ -1,14 +0,0 @@ -From: -http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/*checkout*/trunk/buildroot/toolchain/gcc/4.0.2/302-c99-snprintf.patch?rev=11715 - ---- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig 2005-04-29 00:08:41.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h 2005-04-29 00:08:45.000000000 -0500 -@@ -142,7 +142,7 @@ - using ::vsprintf; - } - --#if _GLIBCXX_USE_C99 -+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__) - - #undef snprintf - #undef vfscanf diff --git a/openembedded/packages/gcc/gcc-4.0.2/303-c99-complex-ugly-hack.patch b/openembedded/packages/gcc/gcc-4.0.2/303-c99-complex-ugly-hack.patch deleted file mode 100644 index 0ba0a89b4..000000000 --- a/openembedded/packages/gcc/gcc-4.0.2/303-c99-complex-ugly-hack.patch +++ /dev/null @@ -1,15 +0,0 @@ -From: -http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/*checkout*/trunk/buildroot/toolchain/gcc/4.0.2/303-c99-complex-ugly-hack.patch?rev=11715 - ---- gcc-4.0.0/libstdc++-v3/configure-old 2005-04-30 22:04:48.061603912 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 22:06:13.678588152 -0500 -@@ -7194,6 +7194,9 @@ - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include -+#ifdef __UCLIBC__ -+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs -+#endif - int - main () - { diff --git a/openembedded/packages/gcc/gcc-4.0.2/800-arm-bigendian.patch b/openembedded/packages/gcc/gcc-4.0.2/800-arm-bigendian.patch deleted file mode 100644 index e5fc41348..000000000 --- a/openembedded/packages/gcc/gcc-4.0.2/800-arm-bigendian.patch +++ /dev/null @@ -1,70 +0,0 @@ -From: -http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/trunk/buildroot/toolchain/gcc/4.0.2/800-arm-bigendian.patch?rev=14828&view=markup - -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -See http://gcc.gnu.org/PR16350 - ---- gcc-4.0.3/gcc/config/arm/linux-elf.h -+++ gcc-4.0.3/gcc/config/arm/linux-elf.h -@@ -31,19 +31,33 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - -+/* -+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-* -+ * (big endian) configurations. -+ */ -+#if TARGET_BIG_ENDIAN_DEFAULT -+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END -+#define TARGET_ENDIAN_OPTION "mbig-endian" -+#define TARGET_LINKER_EMULATION "armelfb_linux" -+#else -+#define TARGET_ENDIAN_DEFAULT 0 -+#define TARGET_ENDIAN_OPTION "mlittle-endian" -+#define TARGET_LINKER_EMULATION "armelf_linux" -+#endif -+ - #undef TARGET_DEFAULT_FLOAT_ABI - #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD - - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (0) -+#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT) - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - --#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" -+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" } - - /* The GNU C++ standard library requires that these macros be defined. */ - #undef CPLUSPLUS_CPP_SPEC -@@ -90,7 +104,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - - #define TARGET_OS_CPP_BUILTINS() \ ---- gcc-4.0.3/gcc/config.gcc -+++ gcc-4.0.3/gcc/config.gcc -@@ -672,6 +672,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $target in -+ arm*b-*) -+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" -+ ;; -+ esac - tmake_file="${tmake_file} arm/t-arm arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff --git a/openembedded/packages/gcc/gcc-4.0.2/arm-nolibfloat.patch b/openembedded/packages/gcc/gcc-4.0.2/arm-nolibfloat.patch deleted file mode 100644 index c4897c033..000000000 --- a/openembedded/packages/gcc/gcc-4.0.2/arm-nolibfloat.patch +++ /dev/null @@ -1,24 +0,0 @@ -# Dimitry Andric , 2004-05-01 -# -# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed -# anymore. (The required functions are now in libgcc.) -# -# Fixes errors like -# arm-softfloat-linux-gnu/3.4.0/../../../../arm-softfloat-linux-gnu/bin/ld: cannot find -lfloat -# collect2: ld returned 1 exit status -# make[2]: *** [arm-softfloat-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/iconvdata/ISO8859-1.so] Error 1 -# when building glibc-2.3.3 with gcc-3.4.0 for arm-softfloat - -Index: gcc-4.0.2/gcc/config/arm/linux-elf.h -=================================================================== ---- gcc-4.0.2.orig/gcc/config/arm/linux-elf.h 2005-03-04 16:14:01.000000000 +0000 -+++ gcc-4.0.2/gcc/config/arm/linux-elf.h 2005-11-11 18:02:54.000000000 +0000 -@@ -56,7 +56,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which diff --git a/openembedded/packages/gcc/gcc-4.0.2/arm-softfloat.patch b/openembedded/packages/gcc/gcc-4.0.2/arm-softfloat.patch deleted file mode 100644 index c86c83ed1..000000000 --- a/openembedded/packages/gcc/gcc-4.0.2/arm-softfloat.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: gcc-4.0.2/gcc/config/arm/t-linux -=================================================================== ---- gcc-4.0.2.orig/gcc/config/arm/t-linux 2004-05-15 12:41:35.000000000 +0000 -+++ gcc-4.0.2/gcc/config/arm/t-linux 2005-11-11 16:07:53.000000000 +0000 -@@ -4,7 +4,10 @@ - LIBGCC2_DEBUG_CFLAGS = -g0 - - LIB1ASMSRC = arm/lib1funcs.asm --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _fixsfsi _fixunssfsi _floatdidf _floatdisf - - # MULTILIB_OPTIONS = mhard-float/msoft-float - # MULTILIB_DIRNAMES = hard-float soft-float diff --git a/openembedded/packages/gcc/gcc-4.0.2/ldflags.patch b/openembedded/packages/gcc/gcc-4.0.2/ldflags.patch deleted file mode 100644 index 1196bf0c8..000000000 --- a/openembedded/packages/gcc/gcc-4.0.2/ldflags.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- gcc-4.0.0/Makefile.tpl.old 2005-06-10 13:05:09.000000000 +0100 -+++ gcc-4.0.0/Makefile.tpl 2005-06-10 13:05:10.000000000 +0100 -@@ -339,7 +339,7 @@ - NM = @NM@ - - LD = @LD@ --LDFLAGS = -+LDFLAGS = @LDFLAGS@ - - RANLIB = @RANLIB@ - ---- gcc-4.0.0/Makefile.in.old 2005-06-10 17:13:12.000000000 +0100 -+++ gcc-4.0.0/Makefile.in 2005-06-10 17:13:22.000000000 +0100 -@@ -336,7 +336,7 @@ - NM = @NM@ - - LD = @LD@ --LDFLAGS = -+LDFLAGS = @LDFLAGS@ - - RANLIB = @RANLIB@ - diff --git a/openembedded/packages/gcc/gcc-4.0.2/zecke-host-cpp-ac-hack.patch b/openembedded/packages/gcc/gcc-4.0.2/zecke-host-cpp-ac-hack.patch deleted file mode 100644 index 3f26dce71..000000000 --- a/openembedded/packages/gcc/gcc-4.0.2/zecke-host-cpp-ac-hack.patch +++ /dev/null @@ -1,140 +0,0 @@ -gcc (AC_CHECK_HEADERS) is using $CPP to check if the header pass -the precompiler, if compiling with $CC failed. -Sadly $CC is xgcc of gcc, and $CPP is 'gcc -E'. And as you build -on a glibc machine, precompiling of the headers (execinfo.h and -iconv.h will succeed). As a dirty hack we will handle this case -as failure. -This fixes the libmudflap build for uclibc which lacks execinfo.h -but has HAVE_EXECINFO_H defined - -Index: gcc-4.0.2/libmudflap/configure -=================================================================== ---- gcc-4.0.2.orig/libmudflap/configure 2006-04-30 16:57:47.000000000 +0200 -+++ gcc-4.0.2/libmudflap/configure 2006-04-30 17:00:59.000000000 +0200 -@@ -3719,6 +3719,8 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ # hack, hack, hack -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 - echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -@@ -3731,6 +3733,8 @@ - echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 - echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: Zecke says do not trust the wrong cpp! Ignoring." >&5 -+echo "$as_me: WARNING: $ac_header: Zecke says do not trust the wrong cpp! Ignoring." >&2;} - ( - cat <<\_ASBOX - ## ------------------------------------- ## -Index: gcc-4.0.2/libstdc++-v3/configure -=================================================================== ---- gcc-4.0.2.orig/libstdc++-v3/configure 2006-04-30 16:57:53.000000000 +0200 -+++ gcc-4.0.2/libstdc++-v3/configure 2006-04-30 22:59:00.000000000 +0200 -@@ -30513,6 +30513,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -30525,6 +30526,8 @@ - echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5 - echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: Zecke says do not trust the wrong cpp! Ignoring." >&5 -+echo "$as_me: WARNING: $ac_header: Zecke says do not trust the wrong cpp! Ignoring." >&2;} - ( - cat <<\_ASBOX - ## ----------------------------------------- ## -@@ -53622,6 +53625,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -75885,6 +75889,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -78600,6 +78605,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -80969,6 +80975,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -83214,6 +83221,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -86227,6 +86235,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -88425,6 +88434,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -90672,6 +90682,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -93280,6 +93291,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -94996,6 +95008,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 -@@ -97337,6 +97350,7 @@ - ac_header_preproc=yes - ;; - no:yes:* ) -+ ac_header_preproc=no - { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5 - echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5 diff --git a/openembedded/packages/gcc/gcc-cross-initial_3.3.4.bb b/openembedded/packages/gcc/gcc-cross-initial_3.3.4.bb deleted file mode 100644 index e3b365da1..000000000 --- a/openembedded/packages/gcc/gcc-cross-initial_3.3.4.bb +++ /dev/null @@ -1,28 +0,0 @@ -SECTION = "devel" -include gcc-cross_${PV}.bb - -DEPENDS = "virtual/${TARGET_PREFIX}binutils" -DEPENDS += "${@['virtual/${TARGET_PREFIX}libc-initial',''][bb.data.getVar('TARGET_ARCH', d, 1) in ['arm', 'armeb', 'mips', 'mipsel']]}" -PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial" - -# This is intended to be a -very- basic config -EXTRA_OECONF = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \ - --with-newlib \ - --disable-shared \ - --disable-threads \ - --disable-multilib \ - --disable-__cxa_atexit \ - --enable-languages=c \ - --enable-target-optspace \ - --program-prefix=${TARGET_PREFIX} \ - ${@get_gcc_fpu_setting(bb, d)}" - -do_stage_prepend () { - mkdir -p ${CROSS_DIR}/lib/gcc-lib/${TARGET_SYS}/${PV} - ln -sf libgcc.a ${CROSS_DIR}/lib/gcc-lib/${TARGET_SYS}/${PV}/libgcc_eh.a -} - -# Override the method from gcc-cross so we don't try to install libgcc -do_install () { - oe_runmake 'DESTDIR=${D}' install -} diff --git a/openembedded/packages/gcc/gcc-cross-initial_3.4.3.bb b/openembedded/packages/gcc/gcc-cross-initial_3.4.3.bb deleted file mode 100644 index 48c80864e..000000000 --- a/openembedded/packages/gcc/gcc-cross-initial_3.4.3.bb +++ /dev/null @@ -1,28 +0,0 @@ -include gcc-cross_${PV}.bb - -DEPENDS = "virtual/${TARGET_PREFIX}binutils" -DEPENDS += "${@['virtual/${TARGET_PREFIX}libc-initial',''][bb.data.getVar('TARGET_ARCH', d, 1) in ['arm', 'armeb', 'mips', 'mipsel']]}" -PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial" -PACKAGES = "" - -# This is intended to be a -very- basic config -EXTRA_OECONF = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \ - --with-newlib \ - --disable-shared \ - --disable-threads \ - --disable-multilib \ - --disable-__cxa_atexit \ - --enable-languages=c \ - --enable-target-optspace \ - --program-prefix=${TARGET_PREFIX} \ - ${@get_gcc_fpu_setting(bb, d)}" - -do_stage_prepend () { - mkdir -p ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV} - ln -sf libgcc.a ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/libgcc_eh.a -} - -# Override the method from gcc-cross so we don't try to install libgcc -do_install () { - oe_runmake 'DESTDIR=${D}' install -} diff --git a/openembedded/packages/gcc/gcc-cross-initial_3.4.4.bb b/openembedded/packages/gcc/gcc-cross-initial_3.4.4.bb deleted file mode 100644 index 48c80864e..000000000 --- a/openembedded/packages/gcc/gcc-cross-initial_3.4.4.bb +++ /dev/null @@ -1,28 +0,0 @@ -include gcc-cross_${PV}.bb - -DEPENDS = "virtual/${TARGET_PREFIX}binutils" -DEPENDS += "${@['virtual/${TARGET_PREFIX}libc-initial',''][bb.data.getVar('TARGET_ARCH', d, 1) in ['arm', 'armeb', 'mips', 'mipsel']]}" -PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial" -PACKAGES = "" - -# This is intended to be a -very- basic config -EXTRA_OECONF = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \ - --with-newlib \ - --disable-shared \ - --disable-threads \ - --disable-multilib \ - --disable-__cxa_atexit \ - --enable-languages=c \ - --enable-target-optspace \ - --program-prefix=${TARGET_PREFIX} \ - ${@get_gcc_fpu_setting(bb, d)}" - -do_stage_prepend () { - mkdir -p ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV} - ln -sf libgcc.a ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/libgcc_eh.a -} - -# Override the method from gcc-cross so we don't try to install libgcc -do_install () { - oe_runmake 'DESTDIR=${D}' install -} diff --git a/openembedded/packages/gcc/gcc-cross-initial_4.0.2.bb b/openembedded/packages/gcc/gcc-cross-initial_4.0.2.bb deleted file mode 100644 index 68dafe3f1..000000000 --- a/openembedded/packages/gcc/gcc-cross-initial_4.0.2.bb +++ /dev/null @@ -1,29 +0,0 @@ -include gcc-cross_${PV}.bb - -DEPENDS = "virtual/${TARGET_PREFIX}binutils" -DEPENDS += "${@['virtual/${TARGET_PREFIX}libc-initial',''][bb.data.getVar('TARGET_ARCH', d, 1) in ['arm', 'armeb', 'mips', 'mipsel']]}" -PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial" -PACKAGES = "" - -# This is intended to be a -very- basic config -EXTRA_OECONF = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \ - --with-newlib \ - --disable-shared \ - --disable-threads \ - --disable-multilib \ - --disable-__cxa_atexit \ - --disable-libmudflap \ - --enable-languages=c \ - --enable-target-optspace \ - --program-prefix=${TARGET_PREFIX} \ - ${@get_gcc_fpu_setting(bb, d)}" - -do_stage_prepend () { - mkdir -p ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV} - ln -sf libgcc.a ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/libgcc_eh.a -} - -# Override the method from gcc-cross so we don't try to install libgcc -do_install () { - oe_runmake 'DESTDIR=${D}' install -} diff --git a/openembedded/packages/gcc/gcc-cross-initial_csl-arm-2005q3.bb b/openembedded/packages/gcc/gcc-cross-initial_csl-arm-2005q3.bb deleted file mode 100644 index 48c80864e..000000000 --- a/openembedded/packages/gcc/gcc-cross-initial_csl-arm-2005q3.bb +++ /dev/null @@ -1,28 +0,0 @@ -include gcc-cross_${PV}.bb - -DEPENDS = "virtual/${TARGET_PREFIX}binutils" -DEPENDS += "${@['virtual/${TARGET_PREFIX}libc-initial',''][bb.data.getVar('TARGET_ARCH', d, 1) in ['arm', 'armeb', 'mips', 'mipsel']]}" -PROVIDES = "virtual/${TARGET_PREFIX}gcc-initial" -PACKAGES = "" - -# This is intended to be a -very- basic config -EXTRA_OECONF = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \ - --with-newlib \ - --disable-shared \ - --disable-threads \ - --disable-multilib \ - --disable-__cxa_atexit \ - --enable-languages=c \ - --enable-target-optspace \ - --program-prefix=${TARGET_PREFIX} \ - ${@get_gcc_fpu_setting(bb, d)}" - -do_stage_prepend () { - mkdir -p ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV} - ln -sf libgcc.a ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/libgcc_eh.a -} - -# Override the method from gcc-cross so we don't try to install libgcc -do_install () { - oe_runmake 'DESTDIR=${D}' install -} diff --git a/openembedded/packages/gcc/gcc-cross_3.3.4.bb b/openembedded/packages/gcc/gcc-cross_3.3.4.bb deleted file mode 100644 index 597b47fba..000000000 --- a/openembedded/packages/gcc/gcc-cross_3.3.4.bb +++ /dev/null @@ -1,13 +0,0 @@ -SECTION = "devel" -include gcc_${PV}.bb -include gcc-paths-cross.inc -inherit cross -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}" - -PR="r3" - -DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc" -PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++" - -include gcc3-build-cross.inc -include gcc-package-cross.inc \ No newline at end of file diff --git a/openembedded/packages/gcc/gcc-cross_3.4.3.bb b/openembedded/packages/gcc/gcc-cross_3.4.3.bb deleted file mode 100644 index a5d1bda17..000000000 --- a/openembedded/packages/gcc/gcc-cross_3.4.3.bb +++ /dev/null @@ -1,16 +0,0 @@ -include gcc_${PV}.bb -# path mangling, needed by the cross packaging -include gcc-paths-cross.inc -inherit cross -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}" -# NOTE: split PR. If the main .oe changes something that affects its *build* -# remember to increment this one too. -PR = "r10" - -DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc" -PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++" - -# cross build -include gcc3-build-cross.inc -# cross packaging -include gcc-package-cross.inc diff --git a/openembedded/packages/gcc/gcc-cross_3.4.4.bb b/openembedded/packages/gcc/gcc-cross_3.4.4.bb deleted file mode 100644 index d965e5b39..000000000 --- a/openembedded/packages/gcc/gcc-cross_3.4.4.bb +++ /dev/null @@ -1,16 +0,0 @@ -include gcc_${PV}.bb -# path mangling, needed by the cross packaging -include gcc-paths-cross.inc -inherit cross -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}" -# NOTE: split PR. If the main .oe changes something that affects its *build* -# remember to increment this one too. -PR = "r3" - -DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc" -PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++" - -# cross build -include gcc3-build-cross.inc -# cross packaging -include gcc-package-cross.inc diff --git a/openembedded/packages/gcc/gcc-cross_4.0.2.bb b/openembedded/packages/gcc/gcc-cross_4.0.2.bb deleted file mode 100644 index 6e299e829..000000000 --- a/openembedded/packages/gcc/gcc-cross_4.0.2.bb +++ /dev/null @@ -1,16 +0,0 @@ -include gcc_${PV}.bb -# path mangling, needed by the cross packaging -include gcc-paths-cross.inc -inherit cross -FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}" -# NOTE: split PR. If the main .oe changes something that affects its *build* -# remember to increment this one too. -PR = "r1" - -DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native" -PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++" - -# cross build -include gcc3-build-cross.inc -# cross packaging -include gcc-package-cross.inc diff --git a/openembedded/packages/gcc/gcc-cross_csl-arm-2005q3.bb b/openembedded/packages/gcc/gcc-cross_csl-arm-2005q3.bb deleted file mode 100644 index 93c58aca5..000000000 --- a/openembedded/packages/gcc/gcc-cross_csl-arm-2005q3.bb +++ /dev/null @@ -1,15 +0,0 @@ -include gcc_csl-arm-2005q3.bb -# path mangling, needed by the cross packaging -include gcc-paths-cross.inc -inherit cross -# NOTE: split PR. If the main .oe changes something that affects its *build* -# remember to increment this one too. -PR = "r0" - -DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc" -PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++" - -# cross build -include gcc3-cross-build.inc -# cross packaging -include gcc-package-cross.inc diff --git a/openembedded/packages/gcc/gcc-csl-arm/15342.patch b/openembedded/packages/gcc/gcc-csl-arm/15342.patch deleted file mode 100644 index d0f3e72d4..000000000 --- a/openembedded/packages/gcc/gcc-csl-arm/15342.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- gcc/gcc/regrename.c~ 2004-01-14 17:55:20.000000000 +0000 -+++ gcc/gcc/regrename.c 2005-02-28 07:24:25.893015200 +0000 -@@ -671,7 +671,8 @@ - - case SET: - scan_rtx (insn, &SET_SRC (x), class, action, OP_IN, 0); -- scan_rtx (insn, &SET_DEST (x), class, action, OP_OUT, 0); -+ scan_rtx (insn, &SET_DEST (x), class, action, -+ GET_CODE (PATTERN (insn)) == COND_EXEC ? OP_INOUT : OP_OUT, 0); - return; - - case STRICT_LOW_PART: -@@ -696,7 +697,8 @@ - abort (); - - case CLOBBER: -- scan_rtx (insn, &SET_DEST (x), class, action, OP_OUT, 1); -+ scan_rtx (insn, &SET_DEST (x), class, action, -+ GET_CODE (PATTERN (insn)) == COND_EXEC ? OP_INOUT : OP_OUT, 0); - return; - - case EXPR_LIST: diff --git a/openembedded/packages/gcc/gcc-csl-arm/gcc-3.4.0-arm-lib1asm.patch b/openembedded/packages/gcc/gcc-csl-arm/gcc-3.4.0-arm-lib1asm.patch deleted file mode 100644 index cf17da6a0..000000000 --- a/openembedded/packages/gcc/gcc-csl-arm/gcc-3.4.0-arm-lib1asm.patch +++ /dev/null @@ -1,24 +0,0 @@ -# Fixes errors like the following when building glibc (or any other executable -# or shared library) when using gcc 3.4.0 for ARM with softfloat: -# -# .../libc_pic.os(.text+0x15834): In function `__modf': undefined reference to `__subdf3' -# .../libc_pic.os(.text+0x158b8): In function `__modf': undefined reference to `__subdf3' -# .../libc_pic.os(.text+0x1590c): In function `scalbn': undefined reference to `__muldf3' -# .../libc_pic.os(.text+0x15e94): In function `__ldexpf': undefined reference to `__eqsf2' -# .../libc_pic.os(.text+0xcee4c): In function `monstartup': undefined reference to `__fixsfsi' - -diff -urNd gcc-3.4.0-orig/gcc/config/arm/t-linux gcc-3.4.0/gcc/config/arm/t-linux ---- gcc-3.4.0-orig/gcc/config/arm/t-linux 2003-09-20 23:09:07.000000000 +0200 -+++ gcc-3.4.0/gcc/config/arm/t-linux 2004-05-01 20:31:59.102846400 +0200 -@@ -4,7 +4,10 @@ - LIBGCC2_DEBUG_CFLAGS = -g0 - - LIB1ASMSRC = arm/lib1funcs.asm --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _fixsfsi _fixunssfsi _floatdidf _floatdisf - - # MULTILIB_OPTIONS = mhard-float/msoft-float - # MULTILIB_DIRNAMES = hard-float soft-float diff --git a/openembedded/packages/gcc/gcc-csl-arm/gcc34-arm-tune.patch b/openembedded/packages/gcc/gcc-csl-arm/gcc34-arm-tune.patch deleted file mode 100644 index cdb20bef9..000000000 --- a/openembedded/packages/gcc/gcc-csl-arm/gcc34-arm-tune.patch +++ /dev/null @@ -1,9 +0,0 @@ ---- gcc-3.4.0/gcc/config/arm/linux-elf.h.arm-tune 2004-01-31 01:18:11.000000000 -0500 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-04-24 18:19:10.000000000 -0400 -@@ -126,3 +126,6 @@ - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" -+ -+/* Tune for XScale. */ -+#define TARGET_TUNE_DEFAULT TARGET_CPU_xscale diff --git a/openembedded/packages/gcc/gcc-csl-arm/gcc_optab_arm.patch b/openembedded/packages/gcc/gcc-csl-arm/gcc_optab_arm.patch deleted file mode 100644 index fa21b2655..000000000 --- a/openembedded/packages/gcc/gcc-csl-arm/gcc_optab_arm.patch +++ /dev/null @@ -1,95 +0,0 @@ -ARM is the only architecture that has a helper function that returns -an unbiased result. This fix is trivial enough that we can show it -doesn't effect any of the other arches. Can we consider this a -regression fix since it used to work until the helper was added :} - -Tested with no regressions on x86_64-pc-linux-gnu and arm-none-eabi. - -Cheers, -Carlos. --- -Carlos O'Donell -CodeSourcery -carlos@codesourcery.com -(650) 331-3385 x716 - -gcc/ - -2006-01-27 Carlos O'Donell - - * optabs.c (prepare_cmp_insn): If unbaised and unsigned then bias - the comparison routine return. - -gcc/testsuite/ - -2006-01-27 Carlos O'Donell - - * gcc.dg/unsigned-long-compare.c: New test. - -Index: gcc/optabs.c -=================================================================== ---- 1/gcc/optabs.c (revision 110300) -+++ 2/gcc/optabs.c (working copy) -@@ -3711,18 +3711,24 @@ - result = emit_library_call_value (libfunc, NULL_RTX, LCT_CONST_MAKE_BLOCK, - word_mode, 2, x, mode, y, mode); - -+ /* There are two kinds of comparison routines. Biased routines -+ return 0/1/2, and unbiased routines return -1/0/1. Other parts -+ of gcc expect that the comparison operation is equivalent -+ to the modified comparison. For signed comparisons compare the -+ result against 1 in the unbiased case, and zero in the biased -+ case. For unsigned comparisons always compare against 1 after -+ biasing the unbased result by adding 1. This gives us a way to -+ represent LTU. */ - *px = result; - *pmode = word_mode; -- if (TARGET_LIB_INT_CMP_BIASED) -- /* Integer comparison returns a result that must be compared -- against 1, so that even if we do an unsigned compare -- afterward, there is still a value that can represent the -- result "less than". */ -- *py = const1_rtx; -- else -+ *py = const1_rtx; -+ -+ if (!TARGET_LIB_INT_CMP_BIASED) - { -- *py = const0_rtx; -- *punsignedp = 1; -+ if (*punsignedp) -+ *px = plus_constant (result, 1); -+ else -+ *py = const0_rtx; - } - return; - } -Index: gcc/testsuite/gcc.dg/unsigned-long-compare.c -=================================================================== ---- 1/gcc/testsuite/gcc.dg/unsigned-long-compare.c (revision 0) -+++ 2/gcc/testsuite/gcc.dg/unsigned-long-compare.c (revision 0) -@@ -0,0 +1,24 @@ -+/* Copyright (C) 2006 Free Software Foundation, Inc. */ -+/* Contributed by Carlos O'Donell on 2006-01-27 */ -+ -+/* Test a division corner case where the expression simplifies -+ to a comparison, and the optab expansion is wrong. The optab -+ expansion emits a function whose return is unbiased and needs -+ adjustment. */ -+/* Origin: Carlos O'Donell */ -+/* { dg-do run { target arm-*-*eabi* } } */ -+/* { dg-options "" } */ -+#include -+ -+#define BIG_CONSTANT 0xFFFFFFFF80000000ULL -+ -+int main (void) -+{ -+ unsigned long long OneULL = 1ULL; -+ unsigned long long result; -+ -+ result = OneULL / BIG_CONSTANT; -+ if (result) -+ abort (); -+ exit (0); -+} diff --git a/openembedded/packages/gcc/gcc-csl-arm/no-libfloat.patch b/openembedded/packages/gcc/gcc-csl-arm/no-libfloat.patch deleted file mode 100644 index e5d12cfb4..000000000 --- a/openembedded/packages/gcc/gcc-csl-arm/no-libfloat.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gcc/gcc/config/arm/linux-elf.h.old 2005-04-20 00:46:28.923375320 +0100 -+++ gcc/gcc/config/arm/linux-elf.h 2005-04-20 00:46:34.181575952 +0100 -@@ -56,7 +56,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which diff --git a/openembedded/packages/gcc/gcc-csl-arm/pic-without-sl.patch b/openembedded/packages/gcc/gcc-csl-arm/pic-without-sl.patch deleted file mode 100644 index 9a49794da..000000000 --- a/openembedded/packages/gcc/gcc-csl-arm/pic-without-sl.patch +++ /dev/null @@ -1,303 +0,0 @@ -Index: gcc/config/arm/arm-protos.h -=================================================================== -RCS file: /cvsroot/gcc/gcc/gcc/config/arm/arm-protos.h,v -retrieving revision 1.60.4.20 -diff -u -r1.60.4.20 arm-protos.h ---- gcc/config/arm/arm-protos.h 29 Mar 2005 03:00:11 -0000 1.60.4.20 -+++ gcc/config/arm/arm-protos.h 23 Apr 2005 04:41:06 -0000 -@@ -64,6 +64,7 @@ - extern enum reg_class vfp_secondary_reload_class (enum machine_mode, rtx); - extern int tls_symbolic_operand (rtx, enum machine_mode); - extern bool arm_tls_operand_p (rtx x); -+extern bool arm_pc_pic_operand_p (rtx x); - - /* Predicates. */ - extern int s_register_operand (rtx, enum machine_mode); -Index: gcc/config/arm/arm.c -=================================================================== -RCS file: /cvsroot/gcc/gcc/gcc/config/arm/arm.c,v -retrieving revision 1.303.2.79 -diff -u -r1.303.2.79 arm.c ---- gcc/config/arm/arm.c 12 Apr 2005 06:17:07 -0000 1.303.2.79 -+++ gcc/config/arm/arm.c 23 Apr 2005 04:41:09 -0000 -@@ -1003,7 +1003,7 @@ - - /* If stack checking is disabled, we can use r10 as the PIC register, - which keeps r9 available. */ -- if (flag_pic) -+ if (0 && flag_pic) - arm_pic_register = TARGET_APCS_STACK ? 9 : 10; - - if (TARGET_APCS_FLOAT) -@@ -3120,6 +3120,10 @@ - rtx - legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg) - { -+ if (GET_CODE (orig) == UNSPEC -+ && XINT (orig, 1) == UNSPEC_GOTSLOTPC) -+ abort (); -+ - if (GET_CODE (orig) == SYMBOL_REF - || GET_CODE (orig) == LABEL_REF) - { -@@ -3149,27 +3153,80 @@ - else - address = reg; - -- if (TARGET_ARM) -- emit_insn (gen_pic_load_addr_arm (address, orig)); -- else -- emit_insn (gen_pic_load_addr_thumb (address, orig)); -+ if (arm_pic_register != INVALID_REGNUM) -+ { -+ /* Using GP-based PIC addressing. */ -+ if (TARGET_ARM) -+ emit_insn (gen_pic_load_addr_arm (address, orig)); -+ else -+ emit_insn (gen_pic_load_addr_thumb (address, orig)); -+ -+ if ((GET_CODE (orig) == LABEL_REF -+ || (GET_CODE (orig) == SYMBOL_REF && -+ SYMBOL_REF_LOCAL_P (orig))) -+ && NEED_GOT_RELOC) -+ pic_ref = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, address); -+ else -+ { -+ pic_ref = gen_rtx_MEM (Pmode, -+ gen_rtx_PLUS (Pmode, pic_offset_table_rtx, -+ address)); -+ RTX_UNCHANGING_P (pic_ref) = 1; -+ } - -- if ((GET_CODE (orig) == LABEL_REF -- || (GET_CODE (orig) == SYMBOL_REF && -- SYMBOL_REF_LOCAL_P (orig))) -- && NEED_GOT_RELOC) -- pic_ref = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, address); -+ current_function_uses_pic_offset_table = 1; -+ } - else - { -- pic_ref = gen_rtx_MEM (Pmode, -- gen_rtx_PLUS (Pmode, pic_offset_table_rtx, -- address)); -- RTX_UNCHANGING_P (pic_ref) = 1; -+ /* Using PC-based PIC addressing. */ -+ rtx label, tmp; -+ int offset; -+ -+ label = gen_label_rtx (); -+ offset = TARGET_ARM ? 8 : 4; -+ -+ if (GET_CODE (orig) == LABEL_REF -+ || (GET_CODE (orig) == SYMBOL_REF && SYMBOL_REF_LOCAL_P (orig))) -+ { -+ /* This symbol is defined locally. We don't need a GOT entry. */ -+ tmp = gen_rtx_MINUS (Pmode, gen_rtx_UNSPEC (Pmode, gen_rtvec (1, orig), UNSPEC_PIC_SYM), gen_rtx_PLUS (Pmode, -+ gen_rtx_LABEL_REF (Pmode, label), -+ GEN_INT (offset))); -+ -+ load_tls_operand (tmp, address); -+ -+ if (TARGET_ARM) -+ emit_insn (gen_pic_add_dot_plus_eight (address, label)); -+ else -+ emit_insn (gen_pic_add_dot_plus_four (address, label)); -+ } -+ else -+ { -+ rtx x = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, orig), UNSPEC_GOTSLOTPC); -+ rtx dummy_label; -+ -+ dummy_label = gen_label_rtx (); -+ LABEL_PRESERVE_P (dummy_label) = 1; -+ LABEL_NUSES (dummy_label) = 1; -+ -+ tmp = gen_rtx_MINUS (Pmode, x, gen_rtx_PLUS (Pmode, -+ gen_rtx_LABEL_REF (Pmode, label), -+ GEN_INT (offset))); -+ -+ load_tls_operand (tmp, address); -+ -+ if (TARGET_ARM) -+ emit_insn (gen_tls_load_dot_plus_eight (address, address, label, dummy_label)); -+ else -+ emit_insn (gen_tls_load_dot_plus_four (address, address, label, dummy_label)); -+ } -+ -+ pic_ref = address; - } - - insn = emit_move_insn (reg, pic_ref); - #endif -- current_function_uses_pic_offset_table = 1; -+ - /* Put a REG_EQUAL note on this insn, so that it can be optimized - by loop. */ - REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_EQUAL, orig, -@@ -3179,11 +3236,17 @@ - else if (GET_CODE (orig) == CONST) - { - rtx base, offset; -+ bool minus = FALSE; - - if (GET_CODE (XEXP (orig, 0)) == PLUS - && XEXP (XEXP (orig, 0), 0) == pic_offset_table_rtx) - return orig; - -+ if (GET_CODE (XEXP (orig, 0)) == MINUS -+ && GET_CODE (XEXP (XEXP (orig, 0), 0)) == UNSPEC -+ && XINT (XEXP (XEXP (orig, 0), 0), 1) == UNSPEC_GOTSLOTPC) -+ return orig; -+ - if (GET_CODE (XEXP (orig, 0)) == UNSPEC) - return orig; - -@@ -3201,6 +3264,13 @@ - offset = legitimize_pic_address (XEXP (XEXP (orig, 0), 1), Pmode, - base == reg ? 0 : reg); - } -+ else if (GET_CODE (XEXP (orig, 0)) == MINUS) -+ { -+ minus = TRUE; -+ base = legitimize_pic_address (XEXP (XEXP (orig, 0), 0), Pmode, reg); -+ offset = legitimize_pic_address (XEXP (XEXP (orig, 0), 1), Pmode, -+ base == reg ? 0 : reg); -+ } - else - abort (); - -@@ -3228,7 +3298,7 @@ - return reg; - } - -- return gen_rtx_PLUS (Pmode, base, offset); -+ return minus ? gen_rtx_MINUS (Pmode, base, offset) : gen_rtx_PLUS (Pmode, base, offset); - } - - return orig; -@@ -3267,7 +3337,7 @@ - rtx l1, pic_tmp, pic_tmp2, pic_rtx; - rtx global_offset_table; - -- if (current_function_uses_pic_offset_table == 0 || TARGET_SINGLE_PIC_BASE) -+ if (current_function_uses_pic_offset_table == 0 || TARGET_SINGLE_PIC_BASE || arm_pic_register == INVALID_REGNUM) - return; - - if (!flag_pic) -@@ -3341,8 +3411,11 @@ - static int - pcrel_constant_p (rtx x) - { -+ if (GET_CODE (x) == CONST) -+ return pcrel_constant_p (XEXP (x, 0)); -+ - if (GET_CODE (x) == MINUS) -- return symbol_mentioned_p (XEXP (x, 0)) && label_mentioned_p (XEXP (x, 1)); -+ return (((GET_CODE (XEXP (x, 0)) == UNSPEC && XINT (XEXP (x, 0), 1) == UNSPEC_PIC_SYM)) || symbol_mentioned_p (XEXP (x, 0))) && label_mentioned_p (XEXP (x, 1)); - - if (GET_CODE (x) == UNSPEC - && XINT (x, 1) == UNSPEC_TLS -@@ -3946,12 +4019,32 @@ - return SYMBOL_REF_TLS_MODEL (op); - } - -+bool -+arm_pc_pic_operand_p (rtx op) -+{ -+ if (GET_CODE (op) == CONST -+ && GET_CODE (XEXP (op, 0)) == MINUS -+ && GET_CODE (XEXP (XEXP (op, 0), 0)) == UNSPEC -+ && XINT (XEXP (XEXP (op, 0), 0), 1) == UNSPEC_GOTSLOTPC) -+ return 1; -+ -+ if (GET_CODE (op) == CONST -+ && GET_CODE (XEXP (op, 0)) == MINUS -+ && GET_CODE (XEXP (XEXP (op, 0), 0)) == UNSPEC -+ && XINT (XEXP (XEXP (op, 0), 0), 1) == UNSPEC_PIC_SYM) -+ return 1; -+ -+ return 0; -+} -+ - /* Valid input to a move instruction. */ - int - move_input_operand (rtx op, enum machine_mode mode) - { - if (tls_symbolic_operand (op, mode)) - return 0; -+ if (pcrel_constant_p (op)) -+ return 1; - return general_operand (op, mode); - } - -@@ -15634,11 +15727,34 @@ - return TRUE; - } - -+static bool -+arm_emit_got_decoration (FILE *fp, rtx x) -+{ -+ rtx val; -+ -+ val = XVECEXP (x, 0, 0); -+ -+ fputs ("_gotslotpc_(", fp); -+ -+ output_addr_const (fp, val); -+ -+ fputc (')', fp); -+ -+ return TRUE; -+} -+ - bool - arm_output_addr_const_extra (FILE *fp, rtx x) - { - if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_TLS) - return arm_emit_tls_decoration (fp, x); -+ else if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_GOTSLOTPC) -+ return arm_emit_got_decoration (fp, x); -+ else if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_PIC_SYM) -+ { -+ output_addr_const (fp, XVECEXP (x, 0, 0)); -+ return TRUE; -+ } - else if (GET_CODE (x) == CONST_VECTOR) - return arm_emit_vector_const (fp, x); - -Index: gcc/config/arm/arm.md -=================================================================== -RCS file: /cvsroot/gcc/gcc/gcc/config/arm/arm.md,v -retrieving revision 1.145.2.31 -diff -u -r1.145.2.31 arm.md ---- gcc/config/arm/arm.md 28 Mar 2005 19:04:37 -0000 1.145.2.31 -+++ gcc/config/arm/arm.md 23 Apr 2005 04:41:11 -0000 -@@ -88,6 +88,7 @@ - (UNSPEC_WMADDS 18) ; Used by the intrinsic form of the iWMMXt WMADDS instruction. - (UNSPEC_WMADDU 19) ; Used by the intrinsic form of the iWMMXt WMADDU instruction. - (UNSPEC_TLS 20) ; A symbol that has been treated properly for TLS usage. -+ (UNSPEC_GOTSLOTPC 21) - ] - ) - -@@ -4179,7 +4180,8 @@ - && (CONSTANT_P (operands[1]) - || symbol_mentioned_p (operands[1]) - || label_mentioned_p (operands[1])) -- && ! tls_mentioned_p (operands[1])) -+ && ! tls_mentioned_p (operands[1]) -+ && ! arm_pc_pic_operand_p (operands[1])) - operands[1] = legitimize_pic_address (operands[1], SImode, - (no_new_pseudos ? operands[0] : 0)); - } -@@ -4412,7 +4414,8 @@ - (mem:SI (unspec:SI [(plus:SI (match_dup 0) - (const (plus:SI (pc) (const_int 8))))] - UNSPEC_PIC_BASE))) -- (use (label_ref (match_operand 1 "" "")))])] -+ (use (label_ref (match_operand 1 "" ""))) -+ (use (label_ref (match_operand 1 "" "")))])] - "" - ) - diff --git a/openembedded/packages/gcc/gcc-package-cross.inc b/openembedded/packages/gcc/gcc-package-cross.inc deleted file mode 100644 index 4b1f8f68e..000000000 --- a/openembedded/packages/gcc/gcc-package-cross.inc +++ /dev/null @@ -1,77 +0,0 @@ -# Packages emitted by our gcc-cross builds. -# -INHIBIT_PACKAGE_STRIP ?= "" -HAS_G2C ?= "yes" -HAS_GFORTRAN ?= "no" -OLD_INHIBIT_PACKAGE_STRIP := "${INHIBIT_PACKAGE_STRIP}" -INHIBIT_PACKAGE_STRIP = "1" - -PACKAGES = "libgcc libstdc++ libg2c libg2c-dev libgfortran libgfortran-dev" - -PACKAGE_ARCH_libg2c = "${TARGET_ARCH}" -PACKAGE_ARCH_libg2c-dev = "${TARGET_ARCH}" -PACKAGE_ARCH_libgfortran = "${TARGET_ARCH}" -PACKAGE_ARCH_libgfortran-dev = "${TARGET_ARCH}" - -# Called from within gcc-cross, so libdir is set wrong -FILES_libg2c = "${target_libdir}/libg2c.so.*" -FILES_libg2c-dev = "${target_libdir}/libg2c.so \ - ${target_libdir}/libg2c.a \ - ${target_libdir}/libfrtbegin.a" - -FILES_libgfortran = "${target_libdir}/libgfortran.so.*" -FILES_libgfortran-dev = "${target_libdir}/libgfortran.a \ - ${target_libdir}/libgfortran.so \ - ${target_libdir}/libgfortranbegin.a" - -PACKAGE_ARCH_libgcc = "${TARGET_ARCH}" -FILES_libgcc = "${target_base_libdir}/libgcc_s.so.1" - -PACKAGE_ARCH_libstdc++ = "${TARGET_ARCH}" -PACKAGE_ARCH_libstdc++-dev = "${TARGET_ARCH}" -FILES_libstdc++ = "${target_libdir}/libstdc++.so.*" -FILES_libstdc++-dev = "${target_includedir}/c++/${PV} \ - ${target_libdir}/libstdc++.so \ - ${target_libdir}/libstdc++.la \ - ${target_libdir}/libstdc++.a \ - ${target_libdir}/libsupc++.la \ - ${target_libdir}/libsupc++.a" - -python do_package() { - if bb.data.getVar('DEBIAN_NAMES', d, 1): - bb.data.setVar('PKG_libgcc', 'libgcc1', d) - bb.build.exec_func('package_do_package', d) -} - -do_install () { - oe_runmake 'DESTDIR=${D}' install - - # Move libgcc_s into /lib - mkdir -p ${D}${target_base_libdir} - if [ -f ${D}${target_base_libdir}/libgcc_s.so.? ]; then - # Already in the right location - : - elif [ -f ${D}${prefix}/lib/libgcc_s.so.? ]; then - mv -f ${D}${prefix}/lib/libgcc_s.so.* ${D}${target_base_libdir} - else - mv -f ${D}${prefix}/*/lib/libgcc_s.so.* ${D}${target_base_libdir} - fi - - # Move libstdc++ and libg2c into libdir (resetting our prefix to /usr - mkdir -p ${D}${target_libdir} - mv -f ${D}${prefix}/*/lib/libstdc++.so.* ${D}${target_libdir} - if [ "${HAS_G2C}" = "yes" ]; then - mv -f ${D}${prefix}/*/lib/libg2c.so.* ${D}${target_libdir} - fi - if [ "${HAS_GFORTRAN}" = "yes" ]; then - mv -f ${D}${prefix}/*/lib/libgfortran*.so.* ${D}${target_libdir} - fi - - # Manually run the target stripper since we won't get it run by - # the packaging. - if [ "x${OLD_INHIBIT_PACKAGE_STRIP}" != "x1" ]; then - ${TARGET_PREFIX}strip ${D}${target_libdir}/libstdc++.so.* - ${TARGET_PREFIX}strip ${D}${target_libdir}/libg2c.so.* - ${TARGET_PREFIX}strip ${D}${target_base_libdir}/libgcc_s.so.* - fi -} diff --git a/openembedded/packages/gcc/gcc-package.inc b/openembedded/packages/gcc/gcc-package.inc deleted file mode 100644 index 4dcc72e87..000000000 --- a/openembedded/packages/gcc/gcc-package.inc +++ /dev/null @@ -1,111 +0,0 @@ -gcclibdir ?= "${libdir}/gcc" -BINV ?= "${PV}" - -# libgcc libstdc++ libg2c are listed in our FILES_*, but are actually -# packaged in the respective cross packages. -PACKAGES = "${PN} ${PN}-symlinks \ - g++ g++-symlinks \ - cpp cpp-symlinks \ - g77 g77-symlinks \ - gcov gcov-symlinks \ - libstdc++-dev libg2c-dev \ - ${PN}-doc" - -FILES_${PN} = "${bindir}/${TARGET_PREFIX}gcc \ - ${bindir}/${TARGET_PREFIX}gccbug \ - ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1 \ - ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/collect2 \ - ${gcclibdir}/${TARGET_SYS}/${BINV}/*.o \ - ${gcclibdir}/${TARGET_SYS}/${BINV}/specs \ - ${gcclibdir}/${TARGET_SYS}/${BINV}/lib* \ - ${gcclibdir}/${TARGET_SYS}/${BINV}/include" -FILES_${PN}-symlinks = "${bindir}/cc \ - ${bindir}/gcc \ - ${bindir}/gccbug" - -FILES_g77 = "${bindir}/${TARGET_PREFIX}g77 \ - ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f771" -FILES_g77-symlinks = "${bindir}/g77 \ - ${bindir}/f77" - -FILES_cpp = "${bindir}/${TARGET_PREFIX}cpp \ - ${base_libdir}/cpp" -FILES_cpp-symlinks = "${bindir}/cpp" - -FILES_gcov = "${bindir}/${TARGET_PREFIX}gcov" -FILES_gcov-symlinks = "${bindir}/gcov" - -PACKAGE_ARCH_libg2c-dev = "${TARGET_ARCH}" -# Called from within gcc-cross, so libdir is set wrong -FILES_libg2c-dev = "${libdir}/libg2c.so \ - ${libdir}/libg2c.a \ - ${libdir}/libfrtbegin.a" - -FILES_g++ = "${bindir}/${TARGET_PREFIX}g++ \ - ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1plus" -FILES_g++-symlinks = "${bindir}/c++ \ - ${bindir}/g++" - -PACKAGE_ARCH_libstdc++-dev = "${TARGET_ARCH}" -FILES_libstdc++-dev = "${includedir}/c++/${BINV} \ - ${libdir}/libstdc++.so \ - ${libdir}/libstdc++.la \ - ${libdir}/libstdc++.a \ - ${libdir}/libsupc++.la \ - ${libdir}/libsupc++.a" - -FILES_${PN}-doc = "${infodir} \ - ${mandir} \ - ${gcclibdir}/${TARGET_SYS}/${BINV}/include/README" - - -do_install () { - autotools_do_install - - # Cleanup some of the ${libdir}{,exec}/gcc stuff ... - rm -r ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/install-tools - rm -r ${D}${libexecdir}/gcc/${TARGET_SYS}/${BINV}/install-tools - - # Hack around specs file assumptions - sed -i -e '/^*cross_compile:$/ { n; s/1/0/; }' ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/specs &>/dev/null || true - - # Move libgcc_s into /lib - mkdir -p ${D}${base_libdir} - mv ${D}${libdir}/libgcc_s.so.* ${D}${base_libdir} - rm ${D}${libdir}/libgcc_s.so - ln -sf `echo ${libdir}/gcc/${TARGET_SYS}/${BINV} \ - | tr -s / \ - | sed -e 's,^/,,' -e 's,[^/]*,..,g'`/lib/libgcc_s.so.1 \ - ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/libgcc_s.so - - # We don't need libtool libraries - rm ${D}${libdir}/libg2c.la &>/dev/null || true - - - # Cleanup manpages.. - rm -r ${D}${mandir}/man7 - - # We use libiberty from binutils - rm ${D}${libdir}/libiberty.a - - cd ${D}${bindir} - - # We care about g++ not c++ - rm *c++ - - # We don't care about the gcc- ones for this - rm *gcc-?.?* - - # These sometimes show up, they are strange, we remove them - rm -f ${TARGET_ARCH}-*${TARGET_ARCH}-* - - # Symlinks so we can use these trivially on the target - ln -sf ${TARGET_SYS}-g77 g77 - ln -sf ${TARGET_SYS}-g++ g++ - ln -sf ${TARGET_SYS}-gcc gcc - ln -sf g77 f77 - ln -sf g++ c++ - ln -sf gcc cc - ln -sf ${bindir}/${TARGET_SYS}-cpp ${D}${base_libdir}/cpp - ln -sf ${bindir}/${TARGET_SYS}-cpp ${D}${bindir}/cpp -} diff --git a/openembedded/packages/gcc/gcc-paths-cross.inc b/openembedded/packages/gcc/gcc-paths-cross.inc deleted file mode 100644 index 3c08b1805..000000000 --- a/openembedded/packages/gcc/gcc-paths-cross.inc +++ /dev/null @@ -1,7 +0,0 @@ -# Note that we use := here, and require that this -# is included at the correct point (before inheriting -# cross) to ensure that libdir and includedir are -# target paths, not CROSS_DIR paths. -target_libdir := "${libdir}" -target_includedir := "${includedir}" -target_base_libdir := "${base_libdir}" diff --git a/openembedded/packages/gcc/gcc3-build-cross.inc b/openembedded/packages/gcc/gcc3-build-cross.inc deleted file mode 100644 index 384886c76..000000000 --- a/openembedded/packages/gcc/gcc3-build-cross.inc +++ /dev/null @@ -1,47 +0,0 @@ -USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibc", "no", "", d )}' - -EXTRA_OECONF_PATHS = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \ - --with-gxx-include-dir=${CROSS_DIR}/${TARGET_SYS}/include/c++" - -do_configure_prepend () { - rm -f ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${BINV}/libgcc_eh.a -} - -do_compile_prepend () { - export CC="${BUILD_CC}" - export AR_FOR_TARGET="${TARGET_SYS}-ar" - export RANLIB_FOR_TARGET="${TARGET_SYS}-ranlib" - export LD_FOR_TARGET="${TARGET_SYS}-ld" - export NM_FOR_TARGET="${TARGET_SYS}-nm" - export CC_FOR_TARGET="${CCACHE} ${TARGET_SYS}-gcc ${TARGET_CC_ARCH}" -} - -do_stage_append () { - for d in info man share/doc share/locale ; do - rm -rf ${CROSS_DIR}/$d - done - - # These aren't useful on the cross toolchain - rm -f ${CROSS_DIR}/bin/*gcov - rm -f ${CROSS_DIR}/bin/*gccbug - - # Fix a few include links so cross builds are happier - if [ ! -e ${STAGING_INCDIR}/c++ ]; then - mkdir -p ${STAGING_INCDIR} - ln -sf ${CROSS_DIR}/${TARGET_SYS}/include/c++ \ - ${STAGING_INCDIR}/ - fi - - # We use libiberty from binutils - rm -f ${CROSS_DIR}/lib/libiberty.a - - # We probably don't need these - rmdir ${CROSS_DIR}/include || : - - # We don't really need to keep this around - # rm -rf ${CROSS_DIR}/share but leave java there - for d in share/man share/info; - do - rm -rf ${CROSS_DIR}/$d - done -} diff --git a/openembedded/packages/gcc/gcc3-build.inc b/openembedded/packages/gcc/gcc3-build.inc deleted file mode 100644 index 8048b45fb..000000000 --- a/openembedded/packages/gcc/gcc3-build.inc +++ /dev/null @@ -1,95 +0,0 @@ -MIRRORS_prepend () { -${GNU_MIRROR}/gcc/releases/ ftp://gcc.gnu.org/pub/gcc/releases/ -${GNU_MIRROR}/gcc/ http://mirrors.rcn.net/pub/sourceware/gcc/releases/ -${GNU_MIRROR}/gcc/releases/ http://gcc.get-software.com/releases/ -${GNU_MIRROR}/gcc/ http://gcc.get-software.com/releases/ -} - -gcclibdir ?= "${libdir}/gcc" -S = "${WORKDIR}/gcc-${PV}" -B = "${S}/build.${HOST_SYS}.${TARGET_SYS}" -BINV ?= "${PV}" - -# gcj doesn't work on some architectures -JAVA = ",java" -JAVA_arm = "" -JAVA_armeb = "" -JAVA_mipsel = "" -JAVA_sh3 = "" -# gcc4-build sets this to f95 -FORTRAN ?= "f77" -LANGUAGES ?= "c,c++,${FORTRAN}${JAVA}" - -EXTRA_OECONF = "${@['--enable-clocale=generic', ''][bb.data.getVar('USE_NLS', d, 1) != 'no']} \ - --with-gnu-ld \ - --enable-shared \ - --enable-target-optspace \ - --enable-languages=${LANGUAGES} \ - --enable-threads=posix \ - --enable-multilib \ - --enable-c99 \ - --enable-long-long \ - --enable-symvers=gnu \ - --enable-libstdcxx-pch \ - --program-prefix=${TARGET_PREFIX} \ - ${EXTRA_OECONF_PATHS} \ - ${EXTRA_OECONF_DEP}" - -EXTRA_OECONF_PATHS = " \ - --with-local-prefix=${prefix}/local \ - --with-gxx-include-dir=${includedir}/c++/${BINV}" - -EXTRA_OECONF_DEP = "" -EXTRA_OECONF_uclibc = "--disable-__cxa_atexit" -EXTRA_OECONF_glibc = "--enable-__cxa_atexit" -EXTRA_OECONF += "${@get_gcc_fpu_setting(bb, d)}" -CPPFLAGS = "" - -# Used by configure to define additional values for FLAGS_FOR_TARGET - -# passed to all the compilers. -ARCH_FLAGS_FOR_TARGET = "" -#NOTE: not tested on other platforms, the following is probably correct -# everywhere! -ARCH_FLAGS_FOR_TARGET_slugos = "${TARGET_CC_ARCH}" -ARCH_FLAGS_FOR_TARGET_unslung = "${TARGET_CC_ARCH}" -EXTRA_OEMAKE += "ARCH_FLAGS_FOR_TARGET='${ARCH_FLAGS_FOR_TARGET}'" - -def get_gcc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--with-float=soft" - return "" - -python __anonymous () { - import bb, re - if (re.match('linux-uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None): - bb.data.setVar('EXTRA_OECONF_DEP', '${EXTRA_OECONF_uclibc}', d) - elif (re.match('linux$', bb.data.getVar('TARGET_OS', d, 1)) != None): - bb.data.setVar('EXTRA_OECONF_DEP', '${EXTRA_OECONF_glibc}', d) -} - -do_configure () { - # Setup these vars for cross building only - # ... because foo_FOR_TARGET apparently gets misinterpreted inside the - # gcc build stuff when the build is producing a cross compiler - i.e. - # when the 'current' target is the 'host' system, and the host is not - # the target (because the build is actually making a cross compiler!) - if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then - export CC_FOR_TARGET="${CC}" - export GCC_FOR_TARGET="${CC}" - export CXX_FOR_TARGET="${CXX}" - export AS_FOR_TARGET="${HOST_PREFIX}as" - export LD_FOR_TARGET="${HOST_PREFIX}ld" - export NM_FOR_TARGET="${HOST_PREFIX}nm" - export AR_FOR_TARGET="${HOST_PREFIX}ar" - export RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib" - fi - export CC_FOR_BUILD="${BUILD_CC}" - export CXX_FOR_BUILD="${BUILD_CXX}" - export CFLAGS_FOR_BUILD="${BUILD_CFLAGS}" - export CPPFLAGS_FOR_BUILD="${BUILD_CPPFLAGS}" - export CXXFLAGS_FOR_BUILD="${BUILD_CXXFLAGS}" - export LDFLAGS_FOR_BUILD="${BUILD_LDFLAGS}" - export ARCH_FLAGS_FOR_TARGET="${ARCH_FLAGS_FOR_TARGET}" - (cd ${S} && gnu-configize) || die "failure running gnu-configize" - oe_runconf -} diff --git a/openembedded/packages/gcc/gcc4-build.inc b/openembedded/packages/gcc/gcc4-build.inc deleted file mode 100644 index 8b80f4820..000000000 --- a/openembedded/packages/gcc/gcc4-build.inc +++ /dev/null @@ -1,6 +0,0 @@ -FORTRAN = "f95" -HAS_GFORTRAN = "yes" -HAS_G2C = "no" - -include gcc3-build.inc - diff --git a/openembedded/packages/gcc/gcc_3.3.4.bb b/openembedded/packages/gcc/gcc_3.3.4.bb deleted file mode 100644 index dc3a66cd2..000000000 --- a/openembedded/packages/gcc/gcc_3.3.4.bb +++ /dev/null @@ -1,176 +0,0 @@ -SECTION = "devel" -PR = "r2" -inherit autotools gettext - -DESCRIPTION = "The GNU cc and gcc C compilers." -HOMEPAGE = "http://www.gnu.org/software/gcc/" -LICENSE = "GPL" -MAINTAINER = "Gerald Britton " - -# libgcc libstdc++ libg2c are listed in our FILES_*, but are actually -# packaged in the respective cross packages. -PACKAGES = "${PN} ${PN}-symlinks \ - ${PN}-c++ ${PN}-c++-symlinks \ - ${PN}-f77 ${PN}-f77-symlinks \ - libstdc++-dev libg2c-dev \ - ${PN}-doc" - -FILES_${PN} = "${bindir}/${TARGET_PREFIX}gcc \ - ${bindir}/${TARGET_PREFIX}cpp \ - ${bindir}/${TARGET_PREFIX}gcov \ - ${bindir}/${TARGET_PREFIX}gccbug \ - ${libdir}/gcc-lib/${TARGET_SYS}/${PV}/cc1 \ - ${libdir}/gcc-lib/${TARGET_SYS}/${PV}/collect2 \ - ${libdir}/gcc-lib/${TARGET_SYS}/${PV}/crt* \ - ${libdir}/gcc-lib/${TARGET_SYS}/${PV}/specs \ - ${libdir}/gcc-lib/${TARGET_SYS}/${PV}/lib* \ - ${libdir}/gcc-lib/${TARGET_SYS}/${PV}/include" - -FILES_${PN}-symlinks = "${bindir}/cc \ - ${bindir}/gcc \ - ${bindir}/cpp \ - ${bindir}/gcov \ - ${bindir}/gccbug" - -FILES_${PN}-c++ = "${bindir}/${TARGET_PREFIX}g++ \ - ${libdir}/gcc-lib/${TARGET_SYS}/${PV}/cc1plus" - -FILES_${PN}-c++-symlinks = "${bindir}/c++ \ - ${bindir}/g++" - -PACKAGE_ARCH_libgcc = "${TARGET_ARCH}" -FILES_libgcc = "/lib/libgcc_s.so.*" - -PACKAGE_ARCH_libstdc++ = "${TARGET_ARCH}" -PACKAGE_ARCH_libstdc++-dev = "${TARGET_ARCH}" -# Called from within gcc-cross, so libdir is set wrong -#FILES_libstdc++ = "${libdir}/libstdc++.so.*" -FILES_libstdc++ = "${libdir}/libstdc++.so.*" - -FILES_libstdc++-dev = "${includedir}/c++/${PV} \ - ${libdir}/libstdc++.so \ - ${libdir}/libstdc++.la \ - ${libdir}/libstdc++.a \ - ${libdir}/libsupc++.la \ - ${libdir}/libsupc++.a" - -FILES_${PN}-doc = "${infodir} \ - ${mandir} \ - ${libdir}/gcc-lib/${TARGET_SYS}/${PV}/include/README" - -SRC_URI = "${GNU_MIRROR}/gcc/releases/gcc-${PV}/gcc-${PV}.tar.bz2 \ - file://arm-gotoff.dpatch;patch=1;pnum=0 \ - file://arm-ldm.dpatch;patch=1;pnum=0 \ - file://arm-tune.patch;patch=1;pnum=0 \ - file://arm-ldm-peephole.patch;patch=1;pnum=0 \ - file://libibery-crosstool.patch;patch=1;pnum=1 \ - file://reverse-compare.patch;patch=1 \ - file://gcc34-15089.patch;patch=1 \ - file://gcc-uclibc-3.3-100-conf.patch;patch=1 \ - file://gcc-uclibc-3.3-110-conf.patch;patch=1 \ - file://gcc-uclibc-3.3-120-softfloat.patch;patch=1 \ - file://gcc-uclibc-3.3-200-code.patch;patch=1 \ - file://bash3.patch;patch=1" - -PREMIRRORS_prepend () { -${GNU_MIRROR}/gcc/releases/ ftp://gcc.gnu.org/pub/gcc/releases/ -${GNU_MIRROR}/gcc/releases/ http://gcc.get-software.com/releases/ -} - -S = "${WORKDIR}/gcc-${PV}" -B = "${S}/build.${HOST_SYS}.${TARGET_SYS}" - -EXTRA_OECONF = "${@['--enable-clocale=generic', ''][bb.data.getVar('USE_NLS', d, 1) != 'no']} \ - --with-gnu-ld \ - --enable-shared \ - --enable-multilib \ - --enable-target-optspace \ - --enable-languages=c,c++,f77 \ - --enable-threads=posix \ - --enable-c99 \ - --enable-long-long \ - --enable-symvers=gnu \ - --program-prefix=${TARGET_PREFIX} \ - ${EXTRA_OECONF_PATHS} \ - ${EXTRA_OECONF_DEP}" - -EXTRA_OECONF_PATHS = "--with-local-prefix=${prefix}/local \ - --with-gxx-include-dir=${includedir}/c++/${PV}" - -EXTRA_OECONF_DEP = "" -EXTRA_OECONF_uclibc = "--disable-__cxa_atexit" -EXTRA_OECONF_glibc = "--enable-__cxa_atexit" -EXTRA_OECONF += "${@get_gcc_fpu_setting(bb, d)}" - -def get_gcc_fpu_setting(bb, d): - if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]: - return "--with-float=soft" - return "" - -python __anonymous () { - import bb, re - if (re.match('linux-uclibc$', bb.data.getVar('TARGET_OS', d, 1)) != None): - bb.data.setVar('EXTRA_OECONF_DEP', '${EXTRA_OECONF_uclibc}', d) - elif (re.match('linux$', bb.data.getVar('TARGET_OS', d, 1)) != None): - bb.data.setVar('EXTRA_OECONF_DEP', '${EXTRA_OECONF_glibc}', d) -} - -do_configure () { - # Setup these vars for cross building only - if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then - export CC_FOR_TARGET="${CCACHE} ${HOST_PREFIX}gcc" - export GCC_FOR_TARGET="${CCACHE} ${HOST_PREFIX}gcc" - export CXX_FOR_TARGET="${CCACHE} ${HOST_PREFIX}g++" - export AS_FOR_TARGET="${HOST_PREFIX}as" - export LD_FOR_TARGET="${HOST_PREFIX}ld" - export NM_FOR_TARGET="${HOST_PREFIX}nm" - export AR_FOR_TARGET="${HOST_PREFIX}ar" - export RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib" - fi - (cd ${S} && gnu-configize) || die "failure running gnu-configize" - oe_runconf -} - -do_install () { - autotools_do_install - - # Cleanup some of the gcc-lib stuff - rm -rf ${D}${libdir}/gcc-lib/${TARGET_SYS}/${PV}/install-tools - - # Move libgcc_s into /lib - mkdir -p ${D}${base_libdir} - mv -f ${D}${libdir}/libgcc_s.so.* ${D}${base_libdir} - rm -f ${D}${libdir}/libgcc_s.so - ln -sf `echo ${libdir}/gcc-lib/${TARGET_SYS}/${PV} | tr -s / | - sed -e 's,^/,,' -e 's,[^/]*,..,g'`/lib/libgcc_s.so.? \ - ${D}${libdir}/gcc-lib/${TARGET_SYS}/${PV}/libgcc_s.so - - # Cleanup manpages.. - rm -rf ${D}${mandir}/man7 - mv ${D}${mandir}/man1/cpp.1 \ - ${D}${mandir}/man1/${TARGET_SYS}-cpp.1 - mv ${D}${mandir}/man1/gcov.1 \ - ${D}${mandir}/man1/${TARGET_SYS}-gcov.1 - - # We use libiberty from binutils - rm -f ${D}${libdir}/libiberty.a - - cd ${D}${bindir} - - # We care about g++ not c++ - rm -f *c++ - - # We don't care about the gcc- ones for this - rm -f *gcc-?.?* - - # These sometimes show up, they are strange, we remove them - rm -f ${TARGET_ARCH}-*${TARGET_ARCH}-* - - # Symlinks so we can use these trivially on the target - ln -sf ${TARGET_SYS}-g77 g77 - ln -sf ${TARGET_SYS}-g++ g++ - ln -sf ${TARGET_SYS}-gcc gcc - ln -sf g77 f77 - ln -sf g++ c++ - ln -sf gcc cc -} diff --git a/openembedded/packages/gcc/gcc_3.4.3.bb b/openembedded/packages/gcc/gcc_3.4.3.bb deleted file mode 100644 index c92746be5..000000000 --- a/openembedded/packages/gcc/gcc_3.4.3.bb +++ /dev/null @@ -1,27 +0,0 @@ -PR = "r11" -DESCRIPTION = "The GNU cc and gcc C compilers." -HOMEPAGE = "http://www.gnu.org/software/gcc/" -SECTION = "devel" -LICENSE = "GPL" -MAINTAINER = "Gerald Britton " - -inherit autotools gettext - -include gcc-package.inc - -SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ - file://gcc34-reverse-compare.patch;patch=1 \ - file://gcc34-arm-ldm.patch;patch=1 \ - file://gcc34-arm-ldm-peephole.patch;patch=1 \ - file://gcc34-arm-tune.patch;patch=1 \ - file://gcc-3.4.1-uclibc-100-conf.patch;patch=1 \ - file://gcc-3.4.1-uclibc-200-locale.patch;patch=1 \ - file://gcc-3.4.0-arm-lib1asm.patch;patch=1 \ - file://gcc-3.4.0-arm-nolibfloat.patch;patch=1 \ - file://gcc-3.4.0-arm-bigendian.patch;patch=1 \ - file://gcc-3.4.0-arm-bigendian-uclibc.patch;patch=1 \ - file://GCC3.4.0VisibilityPatch.diff;patch=1 \ - file://15342.patch;patch=1 \ - file://always-fixincperm.patch;patch=1" - -include gcc3-build.inc diff --git a/openembedded/packages/gcc/gcc_3.4.4.bb b/openembedded/packages/gcc/gcc_3.4.4.bb deleted file mode 100644 index 5be603f2c..000000000 --- a/openembedded/packages/gcc/gcc_3.4.4.bb +++ /dev/null @@ -1,30 +0,0 @@ -PR = "r5" -DESCRIPTION = "The GNU cc and gcc C compilers." -HOMEPAGE = "http://www.gnu.org/software/gcc/" -SECTION = "devel" -LICENSE = "GPL" -MAINTAINER = "Gerald Britton " - -inherit autotools gettext - -include gcc-package.inc - -SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ - file://gcc34-reverse-compare.patch;patch=1 \ - file://gcc34-arm-ldm.patch;patch=1 \ - file://gcc34-arm-ldm-peephole.patch;patch=1 \ - file://gcc34-arm-tune.patch;patch=1 \ - file://gcc-3.4.1-uclibc-100-conf.patch;patch=1 \ - file://gcc-3.4.1-uclibc-200-locale.patch;patch=1 \ - file://gcc-3.4.0-arm-lib1asm.patch;patch=1 \ - file://gcc-3.4.0-arm-nolibfloat.patch;patch=1 \ - file://gcc-3.4.0-arm-bigendian.patch;patch=1 \ - file://gcc-3.4.0-arm-bigendian-uclibc.patch;patch=1 \ - file://GCC3.4.0VisibilityPatch.diff;patch=1 \ - file://15342.patch;patch=1 \ - file://always-fixincperm.patch;patch=1" - -SRC_URI += "file://gcc34-configure.in.patch;patch=1" -SRC_URI += "file://gcc34-thumb-support.patch;patch=1" - -include gcc3-build.inc diff --git a/openembedded/packages/gcc/gcc_4.0.2.bb b/openembedded/packages/gcc/gcc_4.0.2.bb deleted file mode 100644 index f4eeb9bde..000000000 --- a/openembedded/packages/gcc/gcc_4.0.2.bb +++ /dev/null @@ -1,28 +0,0 @@ -DESCRIPTION = "The GNU cc and gcc C compilers." -HOMEPAGE = "http://www.gnu.org/software/gcc/" -SECTION = "devel" -LICENSE = "GPL" -MAINTAINER = "Gerald Britton " -DEPENDS = "mpfr gmp" -PR = "r1" - -inherit autotools gettext - -include gcc-package.inc - -SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ - file://arm-nolibfloat.patch;patch=1 \ - file://arm-softfloat.patch;patch=1 \ - file://ldflags.patch;patch=1" - -# uclibc patches below -SRC_URI_append = " file://100-uclibc-conf.patch;patch=1 \ - file://200-uclibc-locale.patch;patch=1 \ - file://301-missing-execinfo_h.patch;patch=1 \ - file://302-c99-snprintf.patch;patch=1 \ - file://303-c99-complex-ugly-hack.patch;patch=1 \ - file://800-arm-bigendian.patch;patch=1 \ - file://zecke-host-cpp-ac-hack.patch;patch=1 " - - -include gcc4-build.inc diff --git a/openembedded/packages/gcc/gcc_csl-arm-2005q3.bb b/openembedded/packages/gcc/gcc_csl-arm-2005q3.bb deleted file mode 100644 index 62bacda14..000000000 --- a/openembedded/packages/gcc/gcc_csl-arm-2005q3.bb +++ /dev/null @@ -1,27 +0,0 @@ -DESCRIPTION = "The GNU cc and gcc C compilers." -HOMEPAGE = "http://www.gnu.org/software/gcc/" -SECTION = "devel" -LICENSE = "GPL" -BINV = "3.4.4" -PV = "3.4.4+csl-arm-2005q3" -PR = "r1" - -FILESDIR = "${FILE_DIRNAME}/gcc-csl-arm" - -inherit autotools gettext - -include gcc-package.inc - -SRC_URI = "http://www.codesourcery.com/public/gnu_toolchain/arm/2005q3-2/arm-2005q3-2-arm-none-linux-gnueabi.src.tar.bz2 \ - file://gcc_optab_arm.patch;patch=1" - -do_unpack2() { - cd ${WORKDIR} - tar -xvjf ./arm-2005q3-2-arm-none-linux-gnueabi/gcc-2005q3-2.tar.bz2 -} - -addtask unpack2 after do_unpack before do_patch - -include gcc3-build.inc - -S = "${WORKDIR}/gcc-2005q3" -- cgit v1.2.3